Yatopia/patches/server/0001-Yatopia-Server-Fixes.patch
Ivan Pekov 86c42a4fe1
Updated Upstream and Sidestream(s) (Tuinity/EMC/Origami/Purpur)
Upstream/An Sidestream has released updates that appears to apply and compile correctly
This update has NOT been tested by YatopiaMC and as with ANY update, please do your own testing.

Tuinity Changes:
53d9870 Updated Upstream (Paper)

EMC Changes:
541b7328 Updated Paper

Origami Changes:
14a141e Update Paper

Purpur Changes:
17e9e39 Fix short enderman height - EntityTypes now loads before configs
8bfb9f5 Updated Upstream (Paper)
885092f Updated Upstream (Paper)
e126e38 Fix villager boat exploit
2021-01-13 08:17:16 +02:00

959 lines
51 KiB
Diff

From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: YatopiaMC <yatopiamc@gmail.com>
Date: Sun, 25 Oct 2020 12:23:35 -0500
Subject: [PATCH] Yatopia-Server-Fixes
diff --git a/src/main/java/de/minebench/origami/OrigamiConfig.java b/src/main/java/de/minebench/origami/OrigamiConfig.java
index fe7330fabe386966c2d203a190a00a785ea21be0..537456a7427cddd6783f5b5d8ee2d655668c4c53 100644
--- a/src/main/java/de/minebench/origami/OrigamiConfig.java
+++ b/src/main/java/de/minebench/origami/OrigamiConfig.java
@@ -16,7 +16,7 @@ public final class OrigamiConfig {
private static final Object[] EMPTY = new Object[0];
private static File configFile;
- private static YamlConfiguration config;
+ public static YamlConfiguration config; // Yatopia
private static int configVersion;
public static void init(final File file) {
@@ -112,6 +112,28 @@ public final class OrigamiConfig {
config.addDefault("worlds.default." + path, Double.valueOf(dfl));
return config.getDouble("worlds." + worldName + "." + path, config.getDouble("worlds.default." + path, dfl));
}
+
+ public boolean tickEmptyHoppers = false;
+ public int fullHopperCooldown = 128;
+ private void hopperOptimizations() {
+ tickEmptyHoppers = getBoolean("tick-empty-hoppers", tickEmptyHoppers);
+ fullHopperCooldown = getInt("ticks-per.full-hopper-cooldown", fullHopperCooldown);
+ }
+
+ public boolean fastFeatureSearchDontLoad = false;
+ private void fastFeatureSearchDontLoad() {
+ fastFeatureSearchDontLoad = getBoolean("fast-feature-search-dont-load", false);
+ }
+
+ public boolean pigmenDontTargetUnlessHit = false;
+ private void pigmenDontTargetUnlessHit() {
+ pigmenDontTargetUnlessHit = getBoolean("pigmen.dont-target-unless-hit", pigmenDontTargetUnlessHit);
+ }
+
+ public boolean disableObserverClocks = false;
+ private void observerClock() {
+ disableObserverClocks = getBoolean("disable-observer-clocks", disableObserverClocks);
+ }
}
}
\ No newline at end of file
diff --git a/src/main/java/de/minebench/origami/OrigamiConfig.java.rej b/src/main/java/de/minebench/origami/OrigamiConfig.java.rej
deleted file mode 100644
index 02f5ccf54210776770d3215afb7c8e82f750d57e..0000000000000000000000000000000000000000
--- a/src/main/java/de/minebench/origami/OrigamiConfig.java.rej
+++ /dev/null
@@ -1,12 +0,0 @@
-diff a/src/main/java/de/minebench/origami/OrigamiConfig.java b/src/main/java/de/minebench/origami/OrigamiConfig.java (rejected hunks)
-@@ -153,6 +153,10 @@ public final class OrigamiConfig {
- public int getTickRate(String type, String typeName, String entityType, int def) {
- return tickRates.getOrDefault(type + "." + entityType + "." + typeName, tickRates.getOrDefault(type + "." + typeName, def));
- }
-+ public boolean pigmenDontTargetUnlessHit = false;
-+ private void pigmenDontTargetUnlessHit() {
-+ pigmenDontTargetUnlessHit = getBoolean("pigmen.dont-target-unless-hit", pigmenDontTargetUnlessHit);
-+ }
- public int pigmenPortalSpawn = 2000;
- public double pigmenPortalBoost = 0.0;
- public boolean pigmenFarmsWaterAi = false;
diff --git a/src/main/java/net/minecraft/server/BaseBlockPosition.java b/src/main/java/net/minecraft/server/BaseBlockPosition.java
index e811295b4d6afcd920f60e0ce5440e43300d9085..d1064bd1c76eb23ce12e4a0703ce9f2622952897 100644
--- a/src/main/java/net/minecraft/server/BaseBlockPosition.java
+++ b/src/main/java/net/minecraft/server/BaseBlockPosition.java
@@ -111,6 +111,7 @@ public class BaseBlockPosition implements Comparable<BaseBlockPosition> {
return this.distanceSquared((double) baseblockposition.getX(), (double) baseblockposition.getY(), (double) baseblockposition.getZ(), false) < d0 * d0;
}
+ public final boolean distanceSquared(IPosition pos, double dist) { return a(pos, dist); } // Yatopia - OBFHELPER
public boolean a(IPosition iposition, double d0) {
return this.distanceSquared(iposition.getX(), iposition.getY(), iposition.getZ(), true) < d0 * d0;
}
diff --git a/src/main/java/net/minecraft/server/Behavior.java b/src/main/java/net/minecraft/server/Behavior.java
index fb4a5ca220c9ef0916ecd4249a0ec7d1d8024ef1..899ca7bf676ccd874e317ba7e19b733fbf444baa 100644
--- a/src/main/java/net/minecraft/server/Behavior.java
+++ b/src/main/java/net/minecraft/server/Behavior.java
@@ -11,6 +11,7 @@ public abstract class Behavior<E extends EntityLiving> {
private long c;
private final int d;
private final int e;
+ co.aikar.timings.Timing timing; // Origami - behavior timing
public Behavior(Map<MemoryModuleType<?>, MemoryStatus> map) {
this(map, 60);
@@ -25,6 +26,9 @@ public abstract class Behavior<E extends EntityLiving> {
this.d = i;
this.e = j;
this.a = map;
+ // Origami start - behavior timing
+ timing = co.aikar.timings.WorldTimingsHandler.getBehaviorTimings(getClass().getSimpleName());
+ // Origami end
}
public Behavior.Status a() {
diff --git a/src/main/java/net/minecraft/server/Behavior.java.rej b/src/main/java/net/minecraft/server/Behavior.java.rej
deleted file mode 100644
index c3d129452b4f6ff2069bc066e594b1c632ceb0d4..0000000000000000000000000000000000000000
--- a/src/main/java/net/minecraft/server/Behavior.java.rej
+++ /dev/null
@@ -1,19 +0,0 @@
-diff a/src/main/java/net/minecraft/server/Behavior.java b/src/main/java/net/minecraft/server/Behavior.java (rejected hunks)
-@@ -15,6 +15,7 @@ public abstract class Behavior<E extends EntityLiving> {
- private final String configKey;
- private static final String RATE_TYPE = "behavior";
- // Origami end
-+ co.aikar.timings.Timing timing; // Origami - behavior timing
-
- public Behavior(Map<MemoryModuleType<?>, MemoryStatus> map) {
- this(map, 60);
-@@ -37,6 +38,9 @@ public abstract class Behavior<E extends EntityLiving> {
- }
- this.configKey = key;
- // Origami end
-+ // Origami start - behavior timing
-+ timing = co.aikar.timings.WorldTimingsHandler.getBehaviorTimings(key);
-+ // Origami end
- }
-
- public Behavior.Status a() {
diff --git a/src/main/java/net/minecraft/server/BlockPosition.java b/src/main/java/net/minecraft/server/BlockPosition.java
index 2291135eaef64c403183724cb6e413cd7e472672..6fcc7ed7c129e6a33386d65b37cbba4a44e96f0f 100644
--- a/src/main/java/net/minecraft/server/BlockPosition.java
+++ b/src/main/java/net/minecraft/server/BlockPosition.java
@@ -56,6 +56,12 @@ public class BlockPosition extends BaseBlockPosition {
this(baseblockposition.getX(), baseblockposition.getY(), baseblockposition.getZ());
}
+ // Yatopia start - helper method
+ public BlockPosition(Entity entity) {
+ this(entity.locX(), entity.locY(), entity.locZ());
+ }
+ // Yatopia end
+
public static long getAdjacent(int baseX, int baseY, int baseZ, EnumDirection enumdirection) { return asLong(baseX + enumdirection.getAdjacentX(), baseY + enumdirection.getAdjacentY(), baseZ + enumdirection.getAdjacentZ()); } // Paper
public static long a(long i, EnumDirection enumdirection) {
return a(i, enumdirection.getAdjacentX(), enumdirection.getAdjacentY(), enumdirection.getAdjacentZ());
diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java
index 781d74cf7e3669d71727cce781a8f8ce088c5547..7a25349d59d454c43453726f6f44b16a3e90e681 100644
--- a/src/main/java/net/minecraft/server/Chunk.java
+++ b/src/main/java/net/minecraft/server/Chunk.java
@@ -53,6 +53,17 @@ public class Chunk implements IChunkAccess {
private final ChunkCoordIntPair loc; public final long coordinateKey; public final int locX; public final int locZ; // Paper - cache coordinate key
private volatile boolean x;
+ // AirplaneL start - instead of using a random every time the chunk is ticked, define when lightning strikes preemptively
+ private int lightningTick = -1;
+ public boolean shouldDoLightning() {
+ boolean doTick = this.lightningTick == 0;
+ if (this.lightningTick-- <= 0) {
+ this.lightningTick = this.world.random.nextInt(100000) << 1;
+ }
+ return doTick;
+ }
+ // AirplaneL end
+
public Chunk(World world, ChunkCoordIntPair chunkcoordintpair, BiomeStorage biomestorage) {
this(world, chunkcoordintpair, biomestorage, ChunkConverter.a, TickListEmpty.b(), TickListEmpty.b(), 0L, (ChunkSection[]) null, (Consumer) null);
}
diff --git a/src/main/java/net/minecraft/server/Chunk.java.rej b/src/main/java/net/minecraft/server/Chunk.java.rej
deleted file mode 100644
index 6a63cbff4fcd1ebcc23910a8ae4f400df0e51351..0000000000000000000000000000000000000000
--- a/src/main/java/net/minecraft/server/Chunk.java.rej
+++ /dev/null
@@ -1,19 +0,0 @@
-diff a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java (rejected hunks)
-@@ -53,6 +53,17 @@ public class Chunk implements IChunkAccess {
- private final ChunkCoordIntPair loc; public final long coordinateKey; // Paper - cache coordinate key
- private volatile boolean x;
-
-+ // AirplaneL start - instead of using a random every time the chunk is ticked, define when lightning strikes preemptively
-+ private int lightningTick = -1;
-+ public boolean shouldDoLightning() {
-+ boolean doTick = this.lightningTick == 0;
-+ if (this.lightningTick-- <= 0) {
-+ this.lightningTick = this.world.random.nextInt(100000) << 1;
-+ }
-+ return doTick;
-+ }
-+ // AirplaneL end
-+
- public Chunk(World world, ChunkCoordIntPair chunkcoordintpair, BiomeStorage biomestorage) {
- this(world, chunkcoordintpair, biomestorage, ChunkConverter.a, TickListEmpty.b(), TickListEmpty.b(), 0L, (ChunkSection[]) null, (Consumer) null);
- }
diff --git a/src/main/java/net/minecraft/server/CommandDispatcher.java b/src/main/java/net/minecraft/server/CommandDispatcher.java
index 17753c8a997aa286460be5d8eb6508e2eaed18ce..56d5cebd155f2b5ee24c1d8b75903316e59688d1 100644
--- a/src/main/java/net/minecraft/server/CommandDispatcher.java
+++ b/src/main/java/net/minecraft/server/CommandDispatcher.java
@@ -107,6 +107,7 @@ public class CommandDispatcher {
CommandIdleTimeout.a(this.b);
CommandStop.a(this.b);
CommandWhitelist.a(this.b);
+ net.pl3x.purpur.command.TPSBarCommand.register(getDispatcher()); // Purpur
}
if (commanddispatcher_servertype.d) {
@@ -338,6 +339,7 @@ public class CommandDispatcher {
}
+ public static LiteralArgumentBuilder<CommandListenerWrapper> literal(String s) { return a(s); } // Purpur - OBFHELPER
public static LiteralArgumentBuilder<CommandListenerWrapper> a(String s) {
return LiteralArgumentBuilder.literal(s);
}
@@ -357,6 +359,7 @@ public class CommandDispatcher {
};
}
+ public com.mojang.brigadier.CommandDispatcher<CommandListenerWrapper> getDispatcher() { return a(); } // Purpur - OBFHELPER
public com.mojang.brigadier.CommandDispatcher<CommandListenerWrapper> a() {
return this.b;
}
diff --git a/src/main/java/net/minecraft/server/CommandDispatcher.java.rej b/src/main/java/net/minecraft/server/CommandDispatcher.java.rej
deleted file mode 100644
index 7c1db96ec8692728e204a7d8490d74cf53b096a5..0000000000000000000000000000000000000000
--- a/src/main/java/net/minecraft/server/CommandDispatcher.java.rej
+++ /dev/null
@@ -1,9 +0,0 @@
-diff a/src/main/java/net/minecraft/server/CommandDispatcher.java b/src/main/java/net/minecraft/server/CommandDispatcher.java (rejected hunks)
-@@ -109,6 +109,7 @@ public class CommandDispatcher {
- CommandWhitelist.a(this.b);
- net.pl3x.purpur.command.DemoCommand.register(getDispatcher()); // Purpur
- net.pl3x.purpur.command.PingCommand.register(getDispatcher()); // Purpur
-+ net.pl3x.purpur.command.TPSBarCommand.register(getDispatcher()); // Purpur
- }
-
- if (commanddispatcher_servertype.d) {
diff --git a/src/main/java/net/minecraft/server/CommandListenerWrapper.java b/src/main/java/net/minecraft/server/CommandListenerWrapper.java
index 86f1cfe454ea0a989775b49a6b88375c766ef647..da53af61d1171db3c167c6e007adf95355771653 100644
--- a/src/main/java/net/minecraft/server/CommandListenerWrapper.java
+++ b/src/main/java/net/minecraft/server/CommandListenerWrapper.java
@@ -189,6 +189,7 @@ public class CommandListenerWrapper implements ICompletionProvider, com.destroys
}
}
+ public EntityPlayer getPlayerOrException() throws CommandSyntaxException { return h(); } // Purpur - OBFHELPER
public EntityPlayer h() throws CommandSyntaxException {
if (!(this.k instanceof EntityPlayer)) {
throw CommandListenerWrapper.a.create();
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
index 59caf8aff5e4735b59d6b826a364f77889f9ce06..e809f24a62bd554bda93b8fc1fa79a6f28307364 100644
--- a/src/main/java/net/minecraft/server/Entity.java
+++ b/src/main/java/net/minecraft/server/Entity.java
@@ -434,7 +434,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
public void setPosition(double d0, double d1, double d2) {
this.setPositionRaw(d0, d1, d2);
//this.a(this.size.a(d0, d1, d2)); // Paper - move into setPositionRaw
- if (valid) ((WorldServer) world).chunkCheck(this); // CraftBukkit
+ if (valid && !dead) ((WorldServer) world).chunkCheck(this); // CraftBukkit // Purpur
}
protected void af() {
diff --git a/src/main/java/net/minecraft/server/EntityVillager.java b/src/main/java/net/minecraft/server/EntityVillager.java
index 171e8553a339eb3c995369f274de86b824183ca6..4103f3c39e2ed7466824e8fecbb8d21b515b5f01 100644
--- a/src/main/java/net/minecraft/server/EntityVillager.java
+++ b/src/main/java/net/minecraft/server/EntityVillager.java
@@ -92,6 +92,13 @@ public class EntityVillager extends EntityVillagerAbstract implements Reputation
return behaviorcontroller;
}
+ // Purpur start
+ @Override
+ public boolean a(EntityHuman entityhuman) {
+ return world.purpurConfig.villagerCanBeLeashed && !this.isLeashed();
+ }
+ // Purpur end
+
public void c(WorldServer worldserver) {
BehaviorController<EntityVillager> behaviorcontroller = this.getBehaviorController();
diff --git a/src/main/java/net/minecraft/server/EntityVillager.java.rej b/src/main/java/net/minecraft/server/EntityVillager.java.rej
deleted file mode 100644
index 538b2c92e050176a1ac0bb4c2315f5b22c7f8eac..0000000000000000000000000000000000000000
--- a/src/main/java/net/minecraft/server/EntityVillager.java.rej
+++ /dev/null
@@ -1,13 +0,0 @@
-diff a/src/main/java/net/minecraft/server/EntityVillager.java b/src/main/java/net/minecraft/server/EntityVillager.java (rejected hunks)
-@@ -79,6 +79,11 @@ public class EntityVillager extends EntityVillagerAbstract implements Reputation
- protected void initPathfinder() {
- if (world.purpurConfig.villagerFollowEmeraldBlock) this.goalSelector.a(3, new PathfinderGoalTempt(this, 1.0D, false, TEMPT_ITEMS));
- }
-+
-+ @Override
-+ public boolean a(EntityHuman entityhuman) {
-+ return world.purpurConfig.villagerCanBeLeashed && !this.isLeashed();
-+ }
- // Purpur end
-
- @Override
diff --git a/src/main/java/net/minecraft/server/IProjectile.java b/src/main/java/net/minecraft/server/IProjectile.java
index 9f5ce64a60fe7c312399ee416b11b84213dd3bee..64c08d830c358247186cf4e5fcf2010ed43f0f02 100644
--- a/src/main/java/net/minecraft/server/IProjectile.java
+++ b/src/main/java/net/minecraft/server/IProjectile.java
@@ -13,6 +13,7 @@ public abstract class IProjectile extends Entity {
private UUID shooter;
private int c;
private boolean d;
+ public int despawnCounter; // Purpur - moved from EntityArrow
IProjectile(EntityTypes<? extends IProjectile> entitytypes, World world) {
super(entitytypes, world);
@@ -27,6 +28,19 @@ public abstract class IProjectile extends Entity {
}
+ // Purpur start
+ protected final void tickDespawnCounter() {
+ if (this.getPurpurDespawnRate() != -1) {
+ ++this.despawnCounter;
+ if (this.despawnCounter >= this.getPurpurDespawnRate()) {
+ this.die();
+ }
+ }
+ }
+
+ protected abstract int getPurpurDespawnRate();
+ // Purpur end
+
@Nullable
public Entity getShooter() {
// Paper start - MC-50319 - shooter might be in another world (arrows through portals)
@@ -72,6 +86,12 @@ public abstract class IProjectile extends Entity {
}
super.tick();
+
+ // Purpur start
+ if (!(this instanceof EntityArrow)) {
+ this.tickDespawnCounter();
+ }
+ // Purpur end
}
private boolean h() {
diff --git a/src/main/java/net/minecraft/server/IProjectile.java.rej b/src/main/java/net/minecraft/server/IProjectile.java.rej
deleted file mode 100644
index f9080f6f15f51ac6ce521f062010d4485fb97524..0000000000000000000000000000000000000000
--- a/src/main/java/net/minecraft/server/IProjectile.java.rej
+++ /dev/null
@@ -1,40 +0,0 @@
-diff a/src/main/java/net/minecraft/server/IProjectile.java b/src/main/java/net/minecraft/server/IProjectile.java (rejected hunks)
-@@ -13,11 +13,25 @@ public abstract class IProjectile extends Entity {
- private UUID shooter;
- private int c;
- private boolean d; public boolean leftOwner() { return d; } public void setLeftOwner(boolean leftOwner) { this.d = leftOwner; } // Purpur - OBFHELPER
-+ public int despawnCounter; // Purpur - moved from EntityArrow
-
- IProjectile(EntityTypes<? extends IProjectile> entitytypes, World world) {
- super(entitytypes, world);
- }
-
-+ // Purpur start
-+ protected final void tickDespawnCounter() {
-+ if (this.getPurpurDespawnRate() != -1) {
-+ ++this.despawnCounter;
-+ if (this.despawnCounter >= this.getPurpurDespawnRate()) {
-+ this.die();
-+ }
-+ }
-+ }
-+
-+ protected abstract int getPurpurDespawnRate();
-+ // Purpur end
-+
- public void setShooter(@Nullable Entity entity) {
- if (entity != null) {
- this.shooter = entity.getUniqueID();
-@@ -72,6 +86,12 @@ public abstract class IProjectile extends Entity {
- }
-
- super.tick();
-+
-+ // Purpur start
-+ if (!(this instanceof EntityArrow)) { // EntityArrow handles its own despawn counter
-+ this.tickDespawnCounter();
-+ }
-+ // Purpur end
- }
-
- public boolean checkIfLeftOwner() { return this.h(); } // Purpur - OBFHELPER
diff --git a/src/main/java/net/minecraft/server/StructureGenerator.java b/src/main/java/net/minecraft/server/StructureGenerator.java
index a62c87bceab2c9700a7b3925f208b0ffa2b9b393..1a6c593f5f20fb3a8e87ccb70cd3de7f0dcb0327 100644
--- a/src/main/java/net/minecraft/server/StructureGenerator.java
+++ b/src/main/java/net/minecraft/server/StructureGenerator.java
@@ -151,6 +151,11 @@ public abstract class StructureGenerator<C extends WorldGenFeatureConfiguration>
}
}
// Paper end
+ // Origami start - seed based feature search doesn't load
+ if (iworldreader instanceof World && ((World) iworldreader).origamiConfig.fastFeatureSearchDontLoad) {
+ return chunkcoordintpair.l();
+ }
+ // Origami end
IChunkAccess ichunkaccess = iworldreader.getChunkAt(chunkcoordintpair.x, chunkcoordintpair.z, ChunkStatus.STRUCTURE_STARTS);
StructureStart<?> structurestart = structuremanager.a(SectionPosition.a(ichunkaccess.getPos(), 0), this, ichunkaccess);
diff --git a/src/main/java/net/minecraft/server/StructureGenerator.java.rej b/src/main/java/net/minecraft/server/StructureGenerator.java.rej
deleted file mode 100644
index dd52a8fe4fd46e57a5d1af49ba1965a483cf4fcc..0000000000000000000000000000000000000000
--- a/src/main/java/net/minecraft/server/StructureGenerator.java.rej
+++ /dev/null
@@ -1,13 +0,0 @@
-diff a/src/main/java/net/minecraft/server/StructureGenerator.java b/src/main/java/net/minecraft/server/StructureGenerator.java (rejected hunks)
-@@ -151,6 +151,11 @@ public abstract class StructureGenerator<C extends WorldGenFeatureConfiguration>
- }
- }
- // Paper end
-+ // Origami start - seed based feature search doesn't load
-+ if (iworldreader instanceof World && ((World) iworldreader).origamiConfig.fastFeatureSearchDontLoad) {
-+ return chunkcoordintpair.l();
-+ }
-+ // Origami end
- // Origami start - option to only find generated features to not generate new chunks
- IChunkAccess ichunkaccess = iworldreader.getChunkAt(chunkcoordintpair.x, chunkcoordintpair.z, ChunkStatus.STRUCTURE_STARTS, !(iworldreader instanceof World) || !((World) iworldreader).origamiConfig.onlyFindGeneratedFeatures);
- if (ichunkaccess == null) {
diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java
index d0924d78a33f397b9c334f363e6f239c5e5f85a0..2cdfcec68ee66915ea72cccded5f1a2d50c04c30 100644
--- a/src/main/java/net/minecraft/server/World.java
+++ b/src/main/java/net/minecraft/server/World.java
@@ -96,6 +96,7 @@ public abstract class World implements GeneratorAccess, AutoCloseable {
public final com.tuinity.tuinity.config.TuinityConfig.WorldConfig tuinityConfig; // Tuinity - Server Config
public final net.pl3x.purpur.PurpurWorldConfig purpurConfig; // Purpur
+ public final de.minebench.origami.OrigamiConfig.WorldConfig origamiConfig; // Origami - World config
public final co.aikar.timings.WorldTimingsHandler timings; // Paper
public static BlockPosition lastPhysicsProblem; // Spigot
@@ -157,6 +158,7 @@ public abstract class World implements GeneratorAccess, AutoCloseable {
this.paperConfig = new com.destroystokyo.paper.PaperWorldConfig(((WorldDataServer) worlddatamutable).getName(), this.spigotConfig); // Paper
this.tuinityConfig = new com.tuinity.tuinity.config.TuinityConfig.WorldConfig(((WorldDataServer)worlddatamutable).getName()); // Tuinity - Server Config
this.purpurConfig = new net.pl3x.purpur.PurpurWorldConfig((((WorldDataServer)worlddatamutable).getName())); // Purpur
+ this.origamiConfig = new de.minebench.origami.OrigamiConfig.WorldConfig(((WorldDataServer)worlddatamutable).getName()); // Origami
this.chunkPacketBlockController = this.paperConfig.antiXray ? new ChunkPacketBlockControllerAntiXray(this, executor) : ChunkPacketBlockController.NO_OPERATION_INSTANCE; // Paper - Anti-Xray
this.generator = gen;
this.world = new CraftWorld((WorldServer) this, gen, env);
diff --git a/src/main/java/net/minecraft/server/World.java.rej b/src/main/java/net/minecraft/server/World.java.rej
deleted file mode 100644
index f4e9c5a0136d3a0ed813efec7fe8a0e7f256cf40..0000000000000000000000000000000000000000
--- a/src/main/java/net/minecraft/server/World.java.rej
+++ /dev/null
@@ -1,18 +0,0 @@
-diff a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java (rejected hunks)
-@@ -94,6 +94,8 @@ public abstract class World implements GeneratorAccess, AutoCloseable {
- public final com.destroystokyo.paper.PaperWorldConfig paperConfig; // Paper
- public final ChunkPacketBlockController chunkPacketBlockController; // Paper - Anti-Xray
-
-+ public final de.minebench.origami.OrigamiConfig.WorldConfig origamiConfig; // Origami - World Config
-+
- public final co.aikar.timings.WorldTimingsHandler timings; // Paper
- public static BlockPosition lastPhysicsProblem; // Spigot
- private org.spigotmc.TickLimiter entityLimiter;
-@@ -124,6 +126,7 @@ public abstract class World implements GeneratorAccess, AutoCloseable {
- protected World(WorldDataMutable worlddatamutable, ResourceKey<World> resourcekey, final DimensionManager dimensionmanager, Supplier<GameProfilerFiller> supplier, boolean flag, boolean flag1, long i, org.bukkit.generator.ChunkGenerator gen, org.bukkit.World.Environment env, java.util.concurrent.Executor executor) { // Paper
- this.spigotConfig = new org.spigotmc.SpigotWorldConfig(((WorldDataServer) worlddatamutable).getName()); // Spigot
- this.paperConfig = new com.destroystokyo.paper.PaperWorldConfig(((WorldDataServer) worlddatamutable).getName(), this.spigotConfig); // Paper
-+ this.origamiConfig = new de.minebench.origami.OrigamiConfig.WorldConfig(((WorldDataServer)worlddatamutable).getName()); // Origami - World Config
- this.chunkPacketBlockController = this.paperConfig.antiXray ? new ChunkPacketBlockControllerAntiXray(this, executor) : ChunkPacketBlockController.NO_OPERATION_INSTANCE; // Paper - Anti-Xray
- this.generator = gen;
- this.world = new CraftWorld((WorldServer) this, gen, env);
diff --git a/src/main/java/net/minecraft/server/WorldNBTStorage.java b/src/main/java/net/minecraft/server/WorldNBTStorage.java
index b5cf60495b85c6ae6c32ee8a1c65d80e59fdce3d..1f77b251d7e7b0f023793cbf0876fc067caa75c1 100644
--- a/src/main/java/net/minecraft/server/WorldNBTStorage.java
+++ b/src/main/java/net/minecraft/server/WorldNBTStorage.java
@@ -49,7 +49,8 @@ public class WorldNBTStorage {
File file = new File(this.playerDir, entityhuman.getUniqueIDString() + ".dat");
// Spigot Start
boolean usingWrongFile = false;
- if ( org.bukkit.Bukkit.getOnlineMode() && !file.exists() ) // Paper - Check online mode first
+ boolean normalFile = file.exists() && file.isFile(); // Akarin - ensures normal file
+ if ( org.bukkit.Bukkit.getOnlineMode() && !normalFile ) // Paper - Check online mode first // Akarin - ensures normal file
{
file = new File( this.playerDir, java.util.UUID.nameUUIDFromBytes( ( "OfflinePlayer:" + entityhuman.getName() ).getBytes( "UTF-8" ) ).toString() + ".dat");
if ( file.exists() )
@@ -60,7 +61,7 @@ public class WorldNBTStorage {
}
// Spigot End
- if (file.exists() && file.isFile()) {
+ if (normalFile) { // Akarin - avoid double I/O operation
nbttagcompound = NBTCompressedStreamTools.a(file);
}
// Spigot Start
diff --git a/src/main/java/net/minecraft/server/WorldNBTStorage.java.rej b/src/main/java/net/minecraft/server/WorldNBTStorage.java.rej
deleted file mode 100644
index 39dce006ebf2bd81a9d6c62c25eb9bd55d24199e..0000000000000000000000000000000000000000
--- a/src/main/java/net/minecraft/server/WorldNBTStorage.java.rej
+++ /dev/null
@@ -1,20 +0,0 @@
-diff a/src/main/java/net/minecraft/server/WorldNBTStorage.java b/src/main/java/net/minecraft/server/WorldNBTStorage.java (rejected hunks)
-@@ -165,7 +165,8 @@ public class WorldNBTStorage implements IPlayerFileData {
- File file = new File(this.playerDir, entityhuman.getUniqueIDString() + ".dat");
- // Spigot Start
- boolean usingWrongFile = false;
-- if ( org.bukkit.Bukkit.getOnlineMode() && !file.exists() ) // Paper - Check online mode first
-+ boolean normalFile = file.exists() && file.isFile(); // Akarin - ensures normal file
-+ if ( org.bukkit.Bukkit.getOnlineMode() && !normalFile ) // Paper - Check online mode first // Akarin - ensures normal file
- {
- file = new File( this.playerDir, UUID.nameUUIDFromBytes( ( "OfflinePlayer:" + entityhuman.getName() ).getBytes( "UTF-8" ) ).toString() + ".dat");
- if ( file.exists() )
-@@ -176,7 +177,7 @@ public class WorldNBTStorage implements IPlayerFileData {
- }
- // Spigot End
-
-- if (file.exists() && file.isFile()) {
-+ if (normalFile) { // Akarin - avoid double I/O operation
- nbttagcompound = NBTCompressedStreamTools.a((InputStream) (new FileInputStream(file)));
- }
- // Spigot Start
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
index 15ea85f42fbda6e2d25bd15009156b21571fa513..14f206d1bae202e26fd9c5ea0b9e3ff2a686c12e 100644
--- a/src/main/java/net/minecraft/server/WorldServer.java
+++ b/src/main/java/net/minecraft/server/WorldServer.java
@@ -181,6 +181,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
};
public final com.destroystokyo.paper.io.chunk.ChunkTaskManager asyncChunkTaskManager;
// Paper end
+ private int currentIceAndSnowTick = 0; protected void resetIceAndSnowTick() { this.currentIceAndSnowTick = this.randomTickRandom.nextInt(16); } // AirplaneL
// Paper start
@Override
public boolean isChunkLoaded(int x, int z) {
diff --git a/src/main/java/net/minecraft/server/WorldServer.java.rej b/src/main/java/net/minecraft/server/WorldServer.java.rej
deleted file mode 100644
index 06b971640f16a99b41eb07b1d0bb43f3ad300c84..0000000000000000000000000000000000000000
--- a/src/main/java/net/minecraft/server/WorldServer.java.rej
+++ /dev/null
@@ -1,10 +0,0 @@
-diff a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java (rejected hunks)
-@@ -978,6 +978,8 @@ public class WorldServer extends World implements GeneratorAccessSeed {
- private final com.destroystokyo.paper.util.math.ThreadUnsafeRandom randomTickRandom = new com.destroystokyo.paper.util.math.ThreadUnsafeRandom();
- // Paper end
-
-+ private int currentIceAndSnowTick = 0; protected void resetIceAndSnowTick() { this.currentIceAndSnowTick = this.randomTickRandom.nextInt(16); } // AirplaneL
-+
- // AirplaneL start - create version of chunk tick that returns a bool for updating lighting
- public void a(Chunk chunk, int i) { this.abool(chunk, i); }
- public boolean abool(Chunk chunk, int i) { final int randomTickSpeed = i; // Paper
diff --git a/src/main/java/net/pl3x/purpur/PurpurConfig.java b/src/main/java/net/pl3x/purpur/PurpurConfig.java
index 750637ecdd44dacac2b7c83a1701d795309d5583..081dc7a2a4a5d80da868b1080b212ddce2bb0bc7 100644
--- a/src/main/java/net/pl3x/purpur/PurpurConfig.java
+++ b/src/main/java/net/pl3x/purpur/PurpurConfig.java
@@ -1,5 +1,7 @@
package net.pl3x.purpur;
+import co.aikar.timings.TimingsManager;
+import com.destroystokyo.paper.PaperConfig;
import com.google.common.base.Throwables;
import net.minecraft.server.MinecraftServer;
import net.pl3x.purpur.command.PurpurCommand;
@@ -129,9 +131,7 @@ public class PurpurConfig {
return config.getString(path, config.getString(path));
}
- public static String timingsUrl = "https://timings.pl3x.net";
private static void timingsSettings() {
- timingsUrl = getString("settings.timings.url", timingsUrl);
if (!TimingsManager.hiddenConfigs.contains("server-ip")) TimingsManager.hiddenConfigs.add("server-ip");
}
@@ -163,4 +163,35 @@ public class PurpurConfig {
InventoryType.ENDER_CHEST.setDefaultSize(enderChestSixRows ? 54 : 27);
enderChestPermissionRows = getBoolean("settings.blocks.ender_chest.use-permissions-for-rows", enderChestPermissionRows);
}
+
+ public static boolean dontSendUselessEntityPackets = false;
+ private static void dontSendUselessEntityPackets() {
+ dontSendUselessEntityPackets = getBoolean("settings.dont-send-useless-entity-packets", dontSendUselessEntityPackets);
+ }
+
+ public static boolean allowInfinityMending = false;
+ private static void enchantmentSettings() {
+ if (version < 5) {
+ boolean oldValue = getBoolean("settings.enchantment.allow-infinite-and-mending-together", false);
+ set("settings.enchantment.allow-infinity-and-mending-together", oldValue);
+ set("settings.enchantment.allow-infinite-and-mending-together", null);
+ }
+ allowInfinityMending = getBoolean("settings.enchantment.allow-infinity-and-mending-together", allowInfinityMending);
+ }
+
+ public static boolean useHexColorsInConsole = true;
+ private static void loggerSettings() {
+ useHexColorsInConsole = getBoolean("settings.logger.hex-color-support-in-console", useHexColorsInConsole);
+ }
+
+ private static void migrateDisableProjectileSaving() {
+ if (PurpurConfig.version < 6) {
+ final boolean saveProjectilesToDisk = getBoolean("world-settings.default.gameplay-mechanics.save-projectiles-to-disk", true);
+ set("world-settings.default.gameplay-mechanics.save-projectiles-to-disk", null);
+ if (!saveProjectilesToDisk) {
+ PaperConfig.config.set("world-settings.default.projectile-load-save-per-chunk-limit", 0);
+ PaperConfig.saveConfig();
+ }
+ }
+ }
}
diff --git a/src/main/java/net/pl3x/purpur/PurpurConfig.java.rej b/src/main/java/net/pl3x/purpur/PurpurConfig.java.rej
deleted file mode 100644
index 0635030ba4c1cea7961238bb0c0be39d8c5a7d50..0000000000000000000000000000000000000000
--- a/src/main/java/net/pl3x/purpur/PurpurConfig.java.rej
+++ /dev/null
@@ -1,27 +0,0 @@
-diff a/src/main/java/net/pl3x/purpur/PurpurConfig.java b/src/main/java/net/pl3x/purpur/PurpurConfig.java (rejected hunks)
-@@ -1,6 +1,7 @@
- package net.pl3x.purpur;
-
- import co.aikar.timings.TimingsManager;
-+import com.destroystokyo.paper.PaperConfig;
- import com.google.common.base.Throwables;
- import net.minecraft.server.EntitySize;
- import net.minecraft.server.EntityTypes;
-@@ -132,6 +133,17 @@ public class PurpurConfig {
- return config.getString(path, config.getString(path));
- }
-
-+ private static void migrateDisableProjectileSaving() {
-+ if (PurpurConfig.version < 6) {
-+ final boolean saveProjectilesToDisk = getBoolean("world-settings.default.gameplay-mechanics.save-projectiles-to-disk", true);
-+ set("world-settings.default.gameplay-mechanics.save-projectiles-to-disk", null);
-+ if (!saveProjectilesToDisk) {
-+ PaperConfig.config.set("world-settings.default.projectile-load-save-per-chunk-limit", 0);
-+ PaperConfig.saveConfig();
-+ }
-+ }
-+ }
-+
- public static String afkBroadcastAway = "§e§o%s is now AFK";
- public static String afkBroadcastBack = "§e§o%s is no longer AFK";
- public static String afkTabListPrefix = "[AFK] ";
diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
index 361f7857e461578e90cb71e15027dadaf794cb69..5f0491a7cd6bb7e94cc5652be24d9bc111bb8035 100644
--- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
+++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
@@ -1,7 +1,15 @@
package net.pl3x.purpur;
+import com.destroystokyo.paper.PaperConfig;
+import java.util.ArrayList;
+import java.util.HashSet;
import org.bukkit.configuration.ConfigurationSection;
import java.util.List;
+import java.util.Set;
+import net.minecraft.server.Block;
+import net.minecraft.server.IRegistry;
+import net.minecraft.server.MinecraftKey;
+
import static net.pl3x.purpur.PurpurConfig.log;
public class PurpurWorldConfig {
@@ -56,4 +64,167 @@ public class PurpurWorldConfig {
PurpurConfig.config.addDefault("world-settings.default." + path, def);
return PurpurConfig.config.getString("world-settings." + worldName + "." + path, PurpurConfig.config.getString("world-settings.default." + path));
}
+
+ public int villagerBrainTicks = 1;
+ public boolean villagerUseBrainTicksOnlyWhenLagging = true;
+ public boolean villagerCanBeLeashed = false;
+ private void villagerSettings() {
+ villagerBrainTicks = getInt("mobs.villager.brain-ticks", villagerBrainTicks);
+ villagerUseBrainTicksOnlyWhenLagging = getBoolean("mobs.villager.use-brain-ticks-only-when-lagging", villagerUseBrainTicksOnlyWhenLagging);
+ villagerCanBeLeashed = getBoolean("mobs.villager.can-be-leashed", villagerCanBeLeashed);
+ }
+
+ public boolean villagerTraderCanBeLeashed = false;
+ private void villagerTraderSettings() {
+ villagerTraderCanBeLeashed = getBoolean("mobs.wandering_trader.can-be-leashed", villagerTraderCanBeLeashed);
+ }
+
+ public boolean milkCuresBadOmen = true;
+ public boolean persistentTileEntityDisplayNames = false;
+ private void miscGameplayMechanicsSettings() {
+ milkCuresBadOmen = getBoolean("gameplay-mechanics.milk-cures-bad-omen", milkCuresBadOmen);
+ persistentTileEntityDisplayNames = getBoolean("gameplay-mechanics.persistent-tileentity-display-names-and-lore", persistentTileEntityDisplayNames);
+ }
+
+ public boolean anvilAllowColors = false;
+ private void anvilSettings() {
+ anvilAllowColors = getBoolean("blocks.anvil.allow-colors", anvilAllowColors);
+ }
+
+ public int cowFeedMushrooms = 0;
+ private void cowSettings() {
+ cowFeedMushrooms = getInt("mobs.cow.feed-mushrooms-for-mooshroom", cowFeedMushrooms);
+ }
+
+ public boolean snowGolemDropsPumpkin = false;
+ public boolean snowGolemPutPumpkinBack = false;
+ private void snowGolemSettings() {
+ snowGolemDropsPumpkin = getBoolean("mobs.snow_golem.drop-pumpkin-when-sheared", snowGolemDropsPumpkin);
+ snowGolemPutPumpkinBack = getBoolean("mobs.snow_golem.pumpkin-can-be-added-back", snowGolemPutPumpkinBack);
+ }
+
+ public boolean farmlandGetsMoistFromBelow = false;
+ private void farmlandSettings() {
+ farmlandGetsMoistFromBelow = getBoolean("blocks.farmland.gets-moist-from-below", farmlandGetsMoistFromBelow);
+ }
+
+ public int entityLifeSpan = 0;
+ private void entitySettings() {
+ entityLifeSpan = getInt("gameplay-mechanics.entity-lifespan", entityLifeSpan);
+ }
+
+ public boolean squidImmuneToEAR = true;
+ public double squidOffsetWaterCheck = 0.0D;
+ private void squidSettings() {
+ squidImmuneToEAR = getBoolean("mobs.squid.immune-to-EAR", squidImmuneToEAR);
+ squidOffsetWaterCheck = getDouble("mobs.squid.water-offset-check", squidOffsetWaterCheck);
+ }
+
+ public Set<Block> noTickBlocks = new HashSet<>();
+ private void noTickBlocks() {
+ getList("blocks.no-tick", new ArrayList<>()).forEach(key -> {
+ Block block = IRegistry.BLOCK.get(new MinecraftKey(key.toString()));
+ if (!block.getBlockData().isAir()) {
+ noTickBlocks.add(block);
+ }
+ });
+ }
+
+ public boolean dolphinDisableTreasureSearching = false;
+ private void dolphinSettings() {
+ dolphinDisableTreasureSearching = getBoolean("mobs.dolphin.disable-treasure-searching", dolphinDisableTreasureSearching);
+ }
+
+ public boolean turtleEggsBreakFromExpOrbs = true;
+ public boolean turtleEggsBreakFromItems = true;
+ public boolean turtleEggsBreakFromMinecarts = true;
+ private void turtleEggSettings() {
+ turtleEggsBreakFromExpOrbs = getBoolean("blocks.turtle_egg.break-from-exp-orbs", turtleEggsBreakFromExpOrbs);
+ turtleEggsBreakFromItems = getBoolean("blocks.turtle_egg.break-from-items", turtleEggsBreakFromItems);
+ turtleEggsBreakFromMinecarts = getBoolean("blocks.turtle_egg.break-from-minecarts", turtleEggsBreakFromMinecarts);
+ }
+
+ public int dragonFireballDespawnRate = -1;
+ public int eggDespawnRate = -1;
+ public int enderPearlDespawnRate = -1;
+ public int expBottleDespawnRate = -1;
+ public int fireworkDespawnRate = -1;
+ public int fishingHookDespawnRate = -1;
+ public int largeFireballDespawnRate = -1;
+ public int llamaSpitDespawnRate = -1;
+ public int potionDespawnRate = -1;
+ public int shulkerBulletDespawnRate = -1;
+ public int smallFireballDespawnRate = -1;
+ public int snowballDespawnRate = -1;
+ public int witherSkullDespawnRate = -1;
+ private void projectileDespawnRateSettings() {
+ dragonFireballDespawnRate = getInt("gameplay-mechanics.projectile-despawn-rates.dragon_fireball", dragonFireballDespawnRate);
+ eggDespawnRate = getInt("gameplay-mechanics.projectile-despawn-rates.egg", eggDespawnRate);
+ enderPearlDespawnRate = getInt("gameplay-mechanics.projectile-despawn-rates.ender_pearl", enderPearlDespawnRate);
+ expBottleDespawnRate = getInt("gameplay-mechanics.projectile-despawn-rates.experience_bottle", expBottleDespawnRate);
+ fireworkDespawnRate = getInt("gameplay-mechanics.projectile-despawn-rates.firework_rocket", fireworkDespawnRate);
+ fishingHookDespawnRate = getInt("gameplay-mechanics.projectile-despawn-rates.fishing_bobber", fishingHookDespawnRate);
+ largeFireballDespawnRate = getInt("gameplay-mechanics.projectile-despawn-rates.fireball", largeFireballDespawnRate);
+ llamaSpitDespawnRate = getInt("gameplay-mechanics.projectile-despawn-rates.llama_spit", llamaSpitDespawnRate);
+ potionDespawnRate = getInt("gameplay-mechanics.projectile-despawn-rates.potion", potionDespawnRate);
+ shulkerBulletDespawnRate = getInt("gameplay-mechanics.projectile-despawn-rates.shulker_bullet", shulkerBulletDespawnRate);
+ smallFireballDespawnRate = getInt("gameplay-mechanics.projectile-despawn-rates.small_fireball", smallFireballDespawnRate);
+ snowballDespawnRate = getInt("gameplay-mechanics.projectile-despawn-rates.snowball", snowballDespawnRate);
+ witherSkullDespawnRate = getInt("gameplay-mechanics.projectile-despawn-rates.wither_skull", witherSkullDespawnRate);
+ }
+
+ public boolean infinityWorksWithNormalArrows = true;
+ public boolean infinityWorksWithSpectralArrows = false;
+ public boolean infinityWorksWithTippedArrows = false;
+ private void infinityArrowsSettings() {
+ infinityWorksWithNormalArrows = getBoolean("gameplay-mechanics.infinity-bow.normal-arrows", infinityWorksWithNormalArrows);
+ infinityWorksWithSpectralArrows = getBoolean("gameplay-mechanics.infinity-bow.spectral-arrows", infinityWorksWithSpectralArrows);
+ infinityWorksWithTippedArrows = getBoolean("gameplay-mechanics.infinity-bow.tipped-arrows", infinityWorksWithTippedArrows);
+ }
+
+ public boolean signAllowColors = false;
+ public boolean signRightClickEdit = false;
+ private void signSettings() {
+ signAllowColors = getBoolean("blocks.sign.allow-colors", signAllowColors);
+ signRightClickEdit = getBoolean("blocks.sign.right-click-edit", signRightClickEdit);
+ }
+
+ private void migrateDisableProjectileSaving() {
+ if (PurpurConfig.version < 6) {
+ final boolean saveProjectilesToDisk = PurpurConfig.config.getBoolean("world-settings." + worldName + ".gameplay-mechanics.save-projectiles-to-disk", true);
+ set("gameplay-mechanics.save-projectiles-to-disk", null);
+ if (!saveProjectilesToDisk) {
+ PaperConfig.config.set("world-settings." + worldName + ".projectile-load-save-per-chunk-limit", 0);
+ PaperConfig.saveConfig();
+ }
+ }
+ }
+
+ public int bambooMaxHeight = 16;
+ public int bambooSmallHeight = 10;
+ private void bambooSettings() {
+ bambooMaxHeight = getInt("blocks.bamboo.max-height", bambooMaxHeight);
+ bambooSmallHeight = getInt("blocks.bamboo.small-height", bambooSmallHeight);
+ }
+
+ public double twistingVinesGrowthModifier = 0.10D;
+ private void twistingVinesSettings() {
+ twistingVinesGrowthModifier = getDouble("blocks.twisting_vines.growth-modifier", twistingVinesGrowthModifier);
+ }
+
+ public double weepingVinesGrowthModifier = 0.10D;
+ private void weepingVinesSettings() {
+ weepingVinesGrowthModifier = getDouble("blocks.weeping_vines.growth-modifier", weepingVinesGrowthModifier);
+ }
+
+ public int lavaSpeedNether = 10;
+ public int lavaSpeedNotNether = 30;
+ public boolean lavaInfinite = false;
+ public int lavaInfiniteRequiredSources = 2;
+ private void lavaSettings() {
+ lavaSpeedNether = getInt("blocks.lava.speed.nether", lavaSpeedNether);
+ lavaSpeedNotNether = getInt("blocks.lava.speed.not-nether", lavaSpeedNotNether);
+ lavaInfinite = getBoolean("blocks.lava.infinite-source", lavaInfinite);
+ lavaInfiniteRequiredSources = getInt("blocks.lava.infinite-required-sources", lavaInfiniteRequiredSources);
+ }
}
diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java.rej b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java.rej
deleted file mode 100644
index ad57dcdf457379d3282e710874808a6cebd3c17f..0000000000000000000000000000000000000000
--- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java.rej
+++ /dev/null
@@ -1,26 +0,0 @@
-diff a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java (rejected hunks)
-@@ -1,5 +1,6 @@
- package net.pl3x.purpur;
-
-+import com.destroystokyo.paper.PaperConfig;
- import net.minecraft.server.Block;
- import net.minecraft.server.Blocks;
- import net.minecraft.server.EnumDifficulty;
-@@ -84,6 +85,17 @@ public class PurpurWorldConfig {
- return PurpurConfig.config.getString("world-settings." + worldName + "." + path, PurpurConfig.config.getString("world-settings.default." + path));
- }
-
-+ private void migrateDisableProjectileSaving() {
-+ if (PurpurConfig.version < 6) {
-+ final boolean saveProjectilesToDisk = PurpurConfig.config.getBoolean("world-settings." + worldName + ".gameplay-mechanics.save-projectiles-to-disk", true);
-+ PurpurConfig.config.set("world-settings." + worldName + ".gameplay-mechanics.save-projectiles-to-disk", null);
-+ if (!saveProjectilesToDisk) {
-+ PaperConfig.config.set("world-settings." + worldName + ".projectile-load-save-per-chunk-limit", 0);
-+ PaperConfig.saveConfig();
-+ }
-+ }
-+ }
-+
- public boolean armorstandSetNameVisible = false;
- public boolean armorstandFixNametags = false;
- public float armorstandStepHeight = 0.0F;
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
index 00e6b6f29e042fb48c2fc8009659c57e9a930abc..fcf2bf8962cf6bc33d4213c1101debae4afa7114 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -863,6 +863,7 @@ public final class CraftServer implements Server {
com.destroystokyo.paper.PaperConfig.init((File) console.options.valueOf("paper-settings")); // Paper
com.tuinity.tuinity.config.TuinityConfig.init((File) console.options.valueOf("tuinity-settings")); // Tuinity - Server Config
net.pl3x.purpur.PurpurConfig.init((File) console.options.valueOf("purpur-settings")); // Purpur
+ de.minebench.origami.OrigamiConfig.init((File) console.options.valueOf("origami-settings")); // Origami
for (WorldServer world : console.getWorlds()) {
world.worldDataServer.setDifficulty(config.difficulty);
world.setSpawnFlags(config.spawnMonsters, config.spawnAnimals);
@@ -899,6 +900,7 @@ public final class CraftServer implements Server {
world.paperConfig.init(); // Paper
world.tuinityConfig.init(); // Tuinity - Server Config
world.purpurConfig.init(); // Purpur
+ world.origamiConfig.init(); // Origami
}
Plugin[] pluginClone = pluginManager.getPlugins().clone(); // Paper
@@ -2309,6 +2311,13 @@ public final class CraftServer implements Server {
}
// Purpur end
+ // Origami start
+ @Override
+ public YamlConfiguration getOrigamiConfig() {
+ return de.minebench.origami.OrigamiConfig.config;
+ }
+ // Origami end
+
@Override
public void restart() {
org.spigotmc.RestartCommand.restart();
@@ -2446,4 +2455,11 @@ public final class CraftServer implements Server {
return mobGoals;
}
// Paper end
+
+ // Purpur start
+ @Override
+ public boolean isLagging() {
+ return getServer().lagging;
+ }
+ // Purpur end
}
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java.rej b/src/main/java/org/bukkit/craftbukkit/CraftServer.java.rej
deleted file mode 100644
index b9dbdd5416862e325200e62b7d5821a73c230ec1..0000000000000000000000000000000000000000
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java.rej
+++ /dev/null
@@ -1,12 +0,0 @@
-diff a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java (rejected hunks)
-@@ -2451,5 +2451,10 @@ public final class CraftServer implements Server {
- public String getServerName() {
- return getProperties().serverName;
- }
-+
-+ @Override
-+ public boolean isLagging() {
-+ return getServer().lagging;
-+ }
- // Purpur end
- }
diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java
index 25501197b33441fa0d319082bd8d8b72110373af..dbc934b374ff1b9eb4b66d2365e89c39c951763b 100644
--- a/src/main/java/org/bukkit/craftbukkit/Main.java
+++ b/src/main/java/org/bukkit/craftbukkit/Main.java
@@ -154,6 +154,14 @@ public class Main {
.describedAs("Yml file");
// Purpur end
+ // Origami start
+ acceptsAll(asList("origami", "origami-settings"), "File for origami settings")
+ .withRequiredArg()
+ .ofType(File.class)
+ .defaultsTo(new File("origami.yml"))
+ .describedAs("Yml file");
+ // Origami end
+
// Paper start
acceptsAll(asList("server-name"), "Name of the server")
.withRequiredArg()
diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java.rej b/src/main/java/org/bukkit/craftbukkit/Main.java.rej
deleted file mode 100644
index 27a6c3279b77f24edcea24f3a01559145d2f4da1..0000000000000000000000000000000000000000
--- a/src/main/java/org/bukkit/craftbukkit/Main.java.rej
+++ /dev/null
@@ -1,16 +0,0 @@
-diff a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java (rejected hunks)
-@@ -139,6 +139,14 @@ public class Main {
- .describedAs("Yml file");
- // Paper end
-
-+ // Origami Start - Server Config
-+ acceptsAll(asList("origami", "origami-settings"), "File for origami settings")
-+ .withRequiredArg()
-+ .ofType(File.class)
-+ .defaultsTo(new File("origami.yml"))
-+ .describedAs("Yml file");
-+ // Origami end - Server Config
-+
- // Paper start
- acceptsAll(asList("server-name"), "Name of the server")
- .withRequiredArg()