mirror of
https://github.com/PurpurMC/Purpur.git
synced 2026-02-18 17:07:43 +01:00
Upstream has released updates that appears to apply and compile correctly Paper Changes: 979b53a7 Do not allow bee's to load chunks for beehives 13cb8373 Remote Connections shouldn't hold up shutdown 7dac5467 Fix bug in double register fix 87829d83 Remove incorrect IO flush for save-all that doesn't have flush parameter 31e751cb Fix unregistering entities from unloading chunks bc351f6e Ensure Entity is never double registered 2ec0274b Fix many issues with dupe uuid resolve patch 756da10d (Actually) Don't duplicate velocity entry into hidden-configs 9b3679fb Don't duplicate velocity entry into hidden-configs 28cf6540 Pillager patrol spawn settings and per player options (#2924) 6bf04cd5 Reduce entity tracker updates on move
180 lines
8.6 KiB
Diff
180 lines
8.6 KiB
Diff
From ad09f029fe71871eeed9c1464aac4ec5b8e6ae1c 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 | 2 +-
|
|
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(+), 1 deletion(-)
|
|
|
|
diff --git a/src/main/java/net/minecraft/server/ChunkRegionLoader.java b/src/main/java/net/minecraft/server/ChunkRegionLoader.java
|
|
index 4349d22cc..eeff76ff4 100644
|
|
--- a/src/main/java/net/minecraft/server/ChunkRegionLoader.java
|
|
+++ b/src/main/java/net/minecraft/server/ChunkRegionLoader.java
|
|
@@ -1,6 +1,5 @@
|
|
package net.minecraft.server;
|
|
|
|
-import co.aikar.timings.Timings;
|
|
import com.google.common.collect.Maps;
|
|
import it.unimi.dsi.fastutil.longs.LongOpenHashSet;
|
|
import it.unimi.dsi.fastutil.longs.LongSet;
|
|
@@ -437,6 +436,7 @@ public class ChunkRegionLoader {
|
|
|
|
while (iterator1.hasNext()) {
|
|
Entity entity = (Entity) iterator1.next();
|
|
+ if (!entity.canSaveToDisk()) continue; // Purpur
|
|
NBTTagCompound nbttagcompound4 = new NBTTagCompound();
|
|
// Paper start
|
|
if ((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 d0ff043ea..4f9a780b8 100644
|
|
--- a/src/main/java/net/minecraft/server/Entity.java
|
|
+++ b/src/main/java/net/minecraft/server/Entity.java
|
|
@@ -1531,6 +1531,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 9c97edf9c..48da1e662 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 7ebd7da1c..74f8257ec 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 5c3731f68..ce3168e5d 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 b7a92e100..b95ee50a4 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 f5c8074dc..674f2ccc7 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 dff7cf169..4dbe5c077 100644
|
|
--- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
|
+++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
|
@@ -173,6 +173,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() {
|
|
armorstandStepHeight = (float) getDouble("gameplay-mechanics.armorstand.step-height", armorstandStepHeight);
|
|
boatEjectPlayersOnLand = getBoolean("gameplay-mechanics.boat.eject-players-on-land", boatEjectPlayersOnLand);
|
|
@@ -201,6 +202,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.24.0
|
|
|