mirror of
https://github.com/PurpurMC/Purpur.git
synced 2026-02-17 08:27:43 +01:00
Upstream has released updates that appears to apply and compile correctly Paper Changes: f65f95ce3 Do not let the server load chunks from newer versions 1799ef140 Apply 1.16's light optimizations to 1.15.2 too 5a28de666 Further optimize chunk light prioritization 4e364423e Fix deadlock issue with watchdog stopping 82e048ebc Remove ability to disable async chunks unless single core cpu b317f0dc4 [1.15] Fix off by one error for scheduling block ticks (#4013) 51741a180 [1.15] Tighten logic for handling target tick times in tick scheduler (#4011) 5657364b4 Fix Light Prioritization Issues 013374629 Fix AdvancementDataPlayer leak due from quitting early in login 74231d422 [1.15] Move range check for block placing up (#3918) 48ea17fa1 Optimize the advancement data player iteration to be O(N) rather than O(N^2) be4d74d93 Fix Explosion location - Fixes #3574 31e5f6688 [1.15] Optimize NetworkManager exception handling (#3820) 2248fffcd Clean up duplicated GameProfile Properties 49491f32d Fix Player Profile textures being duplicated - Fixes #3667 3fc989992 [1.15] Fix MobGoals#getAllGoals not actually returning all goals (#3671) 1d1c0561f Manually inline PooledBlockPosition#d(int, int, int) 5fc45f4db Revert recent changes around player skulls using user cache Tuinity Changes: 5794d12 Fix up lock handling for UserCache
173 lines
8.4 KiB
Diff
173 lines
8.4 KiB
Diff
From 8412b4e673a06d55ebac75b7868b8784515a52c6 Mon Sep 17 00:00:00 2001
|
|
From: William Blake Galbreath <Blake.Galbreath@GMail.com>
|
|
Date: Tue, 18 Feb 2020 20:07:08 -0600
|
|
Subject: [PATCH] Add option to disable saving projectiles to disk
|
|
|
|
---
|
|
.../net/minecraft/server/ChunkRegionLoader.java | 1 +
|
|
src/main/java/net/minecraft/server/Entity.java | 6 ++++++
|
|
.../java/net/minecraft/server/EntityArrow.java | 7 +++++++
|
|
.../net/minecraft/server/EntityEnderSignal.java | 7 +++++++
|
|
.../net/minecraft/server/EntityFireworks.java | 7 +++++++
|
|
.../net/minecraft/server/EntityLlamaSpit.java | 7 +++++++
|
|
.../net/minecraft/server/EntityProjectile.java | 7 +++++++
|
|
.../java/net/pl3x/purpur/PurpurWorldConfig.java | 16 ++++++++++++++++
|
|
8 files changed, 58 insertions(+)
|
|
|
|
diff --git a/src/main/java/net/minecraft/server/ChunkRegionLoader.java b/src/main/java/net/minecraft/server/ChunkRegionLoader.java
|
|
index c848ae0683..35651a62c6 100644
|
|
--- a/src/main/java/net/minecraft/server/ChunkRegionLoader.java
|
|
+++ b/src/main/java/net/minecraft/server/ChunkRegionLoader.java
|
|
@@ -490,6 +490,7 @@ public class ChunkRegionLoader {
|
|
|
|
while (iterator1.hasNext()) {
|
|
Entity entity = (Entity) iterator1.next();
|
|
+ if (!entity.canSaveToDisk()) continue; // Purpur
|
|
NBTTagCompound nbttagcompound4 = new NBTTagCompound();
|
|
// Paper start
|
|
if (asyncsavedata == null && !entity.dead && (int) Math.floor(entity.locX()) >> 4 != chunk.getPos().x || (int) Math.floor(entity.locZ()) >> 4 != chunk.getPos().z) {
|
|
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
|
|
index 92b77ce34a..4fb6a3fd71 100644
|
|
--- a/src/main/java/net/minecraft/server/Entity.java
|
|
+++ b/src/main/java/net/minecraft/server/Entity.java
|
|
@@ -1775,6 +1775,12 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
|
|
|
|
}
|
|
|
|
+ // Purpur start
|
|
+ public boolean canSaveToDisk() {
|
|
+ return true;
|
|
+ }
|
|
+ // Purpur end
|
|
+
|
|
public boolean c(NBTTagCompound nbttagcompound) {
|
|
String s = this.getSaveID();
|
|
|
|
diff --git a/src/main/java/net/minecraft/server/EntityArrow.java b/src/main/java/net/minecraft/server/EntityArrow.java
|
|
index e66f6b3006..ae44f878ff 100644
|
|
--- a/src/main/java/net/minecraft/server/EntityArrow.java
|
|
+++ b/src/main/java/net/minecraft/server/EntityArrow.java
|
|
@@ -68,6 +68,13 @@ public abstract class EntityArrow extends Entity implements IProjectile {
|
|
|
|
}
|
|
|
|
+ // Purpur start
|
|
+ @Override
|
|
+ public boolean canSaveToDisk() {
|
|
+ return world != null && world.purpurConfig.saveProjectilesToDisk;
|
|
+ }
|
|
+ // Purpur end
|
|
+
|
|
public void a(SoundEffect soundeffect) {
|
|
this.av = soundeffect;
|
|
}
|
|
diff --git a/src/main/java/net/minecraft/server/EntityEnderSignal.java b/src/main/java/net/minecraft/server/EntityEnderSignal.java
|
|
index 7ebd7da1c5..74f8257ecd 100644
|
|
--- a/src/main/java/net/minecraft/server/EntityEnderSignal.java
|
|
+++ b/src/main/java/net/minecraft/server/EntityEnderSignal.java
|
|
@@ -19,6 +19,13 @@ public class EntityEnderSignal extends Entity {
|
|
this.setPosition(d0, d1, d2);
|
|
}
|
|
|
|
+ // Purpur start
|
|
+ @Override
|
|
+ public boolean canSaveToDisk() {
|
|
+ return world != null && world.purpurConfig.saveProjectilesToDisk;
|
|
+ }
|
|
+ // Purpur end
|
|
+
|
|
public void b(ItemStack itemstack) {
|
|
if (itemstack.getItem() != Items.ENDER_EYE || itemstack.hasTag()) {
|
|
this.getDataWatcher().set(EntityEnderSignal.b, SystemUtils.a(itemstack.cloneItemStack(), (itemstack1) -> { // Purpur - decompile error
|
|
diff --git a/src/main/java/net/minecraft/server/EntityFireworks.java b/src/main/java/net/minecraft/server/EntityFireworks.java
|
|
index 5c3731f68a..ce3168e5de 100644
|
|
--- a/src/main/java/net/minecraft/server/EntityFireworks.java
|
|
+++ b/src/main/java/net/minecraft/server/EntityFireworks.java
|
|
@@ -21,6 +21,13 @@ public class EntityFireworks extends Entity implements IProjectile {
|
|
super(entitytypes, world);
|
|
}
|
|
|
|
+ // Purpur start
|
|
+ @Override
|
|
+ public boolean canSaveToDisk() {
|
|
+ return world != null && world.purpurConfig.saveProjectilesToDisk;
|
|
+ }
|
|
+ // Purpur end
|
|
+
|
|
// Spigot Start - copied from tick
|
|
@Override
|
|
public void inactiveTick() {
|
|
diff --git a/src/main/java/net/minecraft/server/EntityLlamaSpit.java b/src/main/java/net/minecraft/server/EntityLlamaSpit.java
|
|
index b7a92e1002..b95ee50a4e 100644
|
|
--- a/src/main/java/net/minecraft/server/EntityLlamaSpit.java
|
|
+++ b/src/main/java/net/minecraft/server/EntityLlamaSpit.java
|
|
@@ -19,6 +19,13 @@ public class EntityLlamaSpit extends Entity implements IProjectile {
|
|
this.setPosition(entityllama.locX() - (double) (entityllama.getWidth() + 1.0F) * 0.5D * (double) MathHelper.sin(entityllama.aI * 0.017453292F), entityllama.getHeadY() - 0.10000000149011612D, entityllama.locZ() + (double) (entityllama.getWidth() + 1.0F) * 0.5D * (double) MathHelper.cos(entityllama.aI * 0.017453292F));
|
|
}
|
|
|
|
+ // Purpur start
|
|
+ @Override
|
|
+ public boolean canSaveToDisk() {
|
|
+ return world != null && world.purpurConfig.saveProjectilesToDisk;
|
|
+ }
|
|
+ // Purpur end
|
|
+
|
|
@Override
|
|
public void tick() {
|
|
super.tick();
|
|
diff --git a/src/main/java/net/minecraft/server/EntityProjectile.java b/src/main/java/net/minecraft/server/EntityProjectile.java
|
|
index f5c8074dcf..674f2ccc7f 100644
|
|
--- a/src/main/java/net/minecraft/server/EntityProjectile.java
|
|
+++ b/src/main/java/net/minecraft/server/EntityProjectile.java
|
|
@@ -35,6 +35,13 @@ public abstract class EntityProjectile extends Entity implements IProjectile {
|
|
this.projectileSource = (org.bukkit.entity.LivingEntity) entityliving.getBukkitEntity(); // CraftBukkit
|
|
}
|
|
|
|
+ // Purpur start
|
|
+ @Override
|
|
+ public boolean canSaveToDisk() {
|
|
+ return world != null && world.purpurConfig.saveProjectilesToDisk;
|
|
+ }
|
|
+ // Purpur end
|
|
+
|
|
public void a(Entity entity, float f, float f1, float f2, float f3, float f4) {
|
|
float f5 = -MathHelper.sin(f1 * 0.017453292F) * MathHelper.cos(f * 0.017453292F);
|
|
float f6 = -MathHelper.sin((f + f2) * 0.017453292F);
|
|
diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
|
index d4b4dfdd3b..51585a7d80 100644
|
|
--- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
|
+++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
|
@@ -164,6 +164,7 @@ public class PurpurWorldConfig {
|
|
public boolean playerSleepOnlyWithCondition = false;
|
|
public String playerSleepCondition = "time >= 12541 && time <= 23458";
|
|
public boolean useBetterMending = false;
|
|
+ public boolean saveProjectilesToDisk = true;
|
|
private void gameplayMechanicsSettings() {
|
|
boatEjectPlayersOnLand = getBoolean("gameplay-mechanics.boat.eject-players-on-land", boatEjectPlayersOnLand);
|
|
armorstandStepHeight = (float) getDouble("gameplay-mechanics.armorstand.step-height", armorstandStepHeight);
|
|
@@ -192,6 +193,21 @@ public class PurpurWorldConfig {
|
|
playerSleepOnlyWithCondition = getBoolean("gameplay-mechanics.player.sleep.only-with-condition", playerSleepOnlyWithCondition);
|
|
playerSleepCondition = getString("gameplay-mechanics.player.sleep.condition", playerSleepCondition);
|
|
useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending);
|
|
+ if (PurpurConfig.version < 4) {
|
|
+ Object oldVal = PurpurConfig.config.get("world-settings.default.gameplay-mechanics.saveProjectilesToDisk");
|
|
+ if (oldVal instanceof Boolean) {
|
|
+ PurpurConfig.config.addDefault("world-settings.default.gameplay-mechanics.save-projectiles-to-disk", oldVal);
|
|
+ PurpurConfig.config.set("world-settings.default.gameplay-mechanics.save-projectiles-to-disk", oldVal);
|
|
+ saveProjectilesToDisk = (boolean) oldVal;
|
|
+ }
|
|
+ oldVal = PurpurConfig.config.get("world-settings." + worldName + ".gameplay-mechanics.saveProjectilesToDisk");
|
|
+ if (oldVal instanceof Boolean) {
|
|
+ PurpurConfig.config.set("world-settings." + worldName + ".gameplay-mechanics.save-projectiles-to-disk", oldVal);
|
|
+ saveProjectilesToDisk = (boolean) oldVal;
|
|
+ }
|
|
+ set("gameplay-mechanics.saveProjectilesToDisk", null);
|
|
+ }
|
|
+ saveProjectilesToDisk = getBoolean("gameplay-mechanics.save-projectiles-to-disk", saveProjectilesToDisk);
|
|
}
|
|
|
|
public int elytraDamagePerSecond = 1;
|
|
--
|
|
2.26.2
|
|
|