diff --git a/patches/server/0021-Entity-Configuration.patch b/patches/server/0021-Entity-Configuration.patch new file mode 100644 index 0000000..2aa4105 --- /dev/null +++ b/patches/server/0021-Entity-Configuration.patch @@ -0,0 +1,32 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: AlphaKR93 +Date: Sat, 25 Mar 2023 20:38:21 +0900 +Subject: [PATCH] Entity Configuration + + +diff --git a/src/main/java/org/plazmamc/plazma/configurations/LevelConfigurations.java b/src/main/java/org/plazmamc/plazma/configurations/LevelConfigurations.java +index 85daae0d6eb70379471239da41b75e179b341a55..fa9d4df7039f03790b06a9d43101ee351ea6700b 100644 +--- a/src/main/java/org/plazmamc/plazma/configurations/LevelConfigurations.java ++++ b/src/main/java/org/plazmamc/plazma/configurations/LevelConfigurations.java +@@ -89,4 +89,21 @@ public class LevelConfigurations extends ConfigurationPart { + public boolean reduceCreateRandomInstance = !Boolean.getBoolean("Plazma.disableConfigOptimization"); + + } ++ ++ public Entity entity; ++ public class Entity extends ConfigurationPart { ++ ++ public Monster monster; ++ public class Monster extends ConfigurationPart { ++ ++ public Phantom phantom; ++ public class Phantom extends ConfigurationPart { ++ ++ ++ ++ } ++ ++ } ++ ++ } + } diff --git a/patches/server/0022-Various-Optimizations.patch b/patches/server/0022-Various-Optimizations.patch new file mode 100644 index 0000000..76b161f --- /dev/null +++ b/patches/server/0022-Various-Optimizations.patch @@ -0,0 +1,107 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: AlphaKR93 +Date: Sat, 25 Mar 2023 20:42:23 +0900 +Subject: [PATCH] Various Optimizations + +[ORIGINAL PATCHES] +0007 - Avoid double I/O operation on load player file (Akarin) +0008 - Don't trigger Lootable Refresh for non player interaction + (Akarin) +0011 - Swaps the predicate order of collision (Akarin) + +diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java +index b2ee73a2ef6042694ca84c27d592e5fb13b4a0fe..d6e20ebb1e07da767f6571bbaf0dc882cdf4503f 100644 +--- a/src/main/java/net/minecraft/world/entity/Entity.java ++++ b/src/main/java/net/minecraft/world/entity/Entity.java +@@ -1991,8 +1991,9 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { + public void playerTouch(Player player) {} + + public void push(Entity entity) { ++ if (entity.noPhysics && this.noPhysics) return; // Plazma + if (!this.isPassengerOfSameVehicle(entity)) { +- if (!entity.noPhysics && !this.noPhysics) { ++ //if (!entity.noPhysics && !this.noPhysics) { // Plazma + if (this.level.paperConfig().collisions.onlyPlayersCollide && !(entity instanceof ServerPlayer || this instanceof ServerPlayer)) return; // Paper + double d0 = entity.getX() - this.getX(); + double d1 = entity.getZ() - this.getZ(); +@@ -2021,7 +2022,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { + } + } + +- } ++ //} // Plazma + } + } + +diff --git a/src/main/java/net/minecraft/world/level/block/entity/RandomizableContainerBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/RandomizableContainerBlockEntity.java +index 6d62cc8fb347ccafd51df05896e616995990f005..c26e4795afd0bd450d304f4528d0b8e4cfa761ce 100644 +--- a/src/main/java/net/minecraft/world/level/block/entity/RandomizableContainerBlockEntity.java ++++ b/src/main/java/net/minecraft/world/level/block/entity/RandomizableContainerBlockEntity.java +@@ -70,6 +70,7 @@ public abstract class RandomizableContainerBlockEntity extends BaseContainerBloc + } + + public void unpackLootTable(@Nullable Player player) { ++ if (org.plazmamc.plazma.configurations.GlobalConfiguration.get().misc.doNotTriggerLootTableRefreshForNonPlayerInteraction && player == null) return; // Plazma + if (this.lootableData.shouldReplenish(player) && this.level.getServer() != null) { // Paper + LootTable lootTable = this.level.getServer().getLootTables().get(this.lootTable); + if (player instanceof ServerPlayer) { +diff --git a/src/main/java/net/minecraft/world/level/levelgen/PhantomSpawner.java b/src/main/java/net/minecraft/world/level/levelgen/PhantomSpawner.java +index f55c50f6637a4f930b15565d6ac82bb4f27b9059..9c4e65a67bda331625a0891be10495eaae5f3f5e 100644 +--- a/src/main/java/net/minecraft/world/level/levelgen/PhantomSpawner.java ++++ b/src/main/java/net/minecraft/world/level/levelgen/PhantomSpawner.java +@@ -73,6 +73,7 @@ public class PhantomSpawner implements CustomSpawner { + + if (randomsource.nextInt(j) >= world.paperConfig().entities.behavior.playerInsomniaStartTicks) { // Paper + BlockPos blockposition1 = blockposition.above(20 + randomsource.nextInt(15)).east(-10 + randomsource.nextInt(21)).south(-10 + randomsource.nextInt(21)); ++ if (world.plazmaLevelConfiguration().entity.monster.phantom.doNotLoadChunksToSpawn && world.hasChunkAt(blockposition1)) continue; // Plazma + BlockState iblockdata = world.getBlockState(blockposition1); + FluidState fluid = world.getFluidState(blockposition1); + +diff --git a/src/main/java/net/minecraft/world/level/storage/PlayerDataStorage.java b/src/main/java/net/minecraft/world/level/storage/PlayerDataStorage.java +index 36af81f0957d17e170d229059c66f4eb4539dfeb..039c952f0c157cba6e79fa9b976958bd1763a922 100644 +--- a/src/main/java/net/minecraft/world/level/storage/PlayerDataStorage.java ++++ b/src/main/java/net/minecraft/world/level/storage/PlayerDataStorage.java +@@ -56,7 +56,8 @@ public class PlayerDataStorage { + File file = new File(this.playerDir, player.getStringUUID() + ".dat"); + // Spigot Start + boolean usingWrongFile = false; +- if ( org.bukkit.Bukkit.getOnlineMode() && !file.exists() ) // Paper - Check online mode first ++ boolean normalFile = file.exists() && file.isFile(); // Plazma - Avoid double I/O operation ++ if ( org.bukkit.Bukkit.getOnlineMode() && !normalFile ) // Paper - Check online mode first // Plazma - Avoid double I/O operation + { + file = new File( this.playerDir, java.util.UUID.nameUUIDFromBytes( ( "OfflinePlayer:" + player.getScoreboardName() ).getBytes( "UTF-8" ) ).toString() + ".dat"); + if ( file.exists() ) +@@ -67,7 +68,7 @@ public class PlayerDataStorage { + } + // Spigot End + +- if (file.exists() && file.isFile()) { ++ if (normalFile) { // Plazma - Avoid double I/O operation + nbttagcompound = NbtIo.readCompressed(file); + } + // Spigot Start +diff --git a/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java b/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java +index 065615b36237dc3b9aa21e31204c3af2c1c12084..856f790ab0b0190c63c47ac8e8d83e620abaf4bf 100644 +--- a/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java ++++ b/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java +@@ -40,6 +40,7 @@ public class GlobalConfiguration extends ConfigurationPart { + public class Misc extends ConfigurationPart { + + public boolean reduceCreateRandomInstance = Boolean.getBoolean("Plazma.disableConfigOptimization"); ++ public boolean doNotTriggerLootTableRefreshForNonPlayerInteraction = !Boolean.getBoolean("Plazma.disableConfigOptimization"); + + } + } +diff --git a/src/main/java/org/plazmamc/plazma/configurations/LevelConfigurations.java b/src/main/java/org/plazmamc/plazma/configurations/LevelConfigurations.java +index fa9d4df7039f03790b06a9d43101ee351ea6700b..2a412d46068340606cf065107cebbe15f2c5acb7 100644 +--- a/src/main/java/org/plazmamc/plazma/configurations/LevelConfigurations.java ++++ b/src/main/java/org/plazmamc/plazma/configurations/LevelConfigurations.java +@@ -99,7 +99,7 @@ public class LevelConfigurations extends ConfigurationPart { + public Phantom phantom; + public class Phantom extends ConfigurationPart { + +- ++ public boolean doNotLoadChunksToSpawn = !Boolean.getBoolean("Plazma.disableConfigOptimization"); + + } + diff --git a/patches/server/0023-Add-configuration-to-disable-moved-to-quickly-check-.patch b/patches/server/0023-Add-configuration-to-disable-moved-to-quickly-check-.patch new file mode 100644 index 0000000..76dd387 --- /dev/null +++ b/patches/server/0023-Add-configuration-to-disable-moved-to-quickly-check-.patch @@ -0,0 +1,32 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: AlphaKR93 +Date: Sat, 25 Mar 2023 20:46:40 +0900 +Subject: [PATCH] Add configuration to disable moved to quickly check for + spectators + + +diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +index ae3c1bd67c144fe971d4df6df2ca171b431b6fc5..dee076d1e6e30f108a79565546182b4751737baa 100644 +--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java ++++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +@@ -1534,7 +1534,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic + if (!this.player.isChangingDimension() && (!this.player.getLevel().getGameRules().getBoolean(GameRules.RULE_DISABLE_ELYTRA_MOVEMENT_CHECK) || !this.player.isFallFlying())) { + float f2 = this.player.isFallFlying() ? 300.0F : 100.0F; + +- if (d11 - d10 > Math.max(f2, Math.pow((double) (org.spigotmc.SpigotConfig.movedTooQuicklyMultiplier * (float) i * speed), 2)) && !this.isSingleplayerOwner()) { ++ if (!(this.player.getLevel().plazmaLevelConfiguration().misc.checkSpectatorMovedToQuickly && this.player.isSpectator()) && d11 - d10 > Math.max(f2, Math.pow((double) (org.spigotmc.SpigotConfig.movedTooQuicklyMultiplier * (float) i * speed), 2)) && !this.isSingleplayerOwner()) { // Plazma + // CraftBukkit end + ServerGamePacketListenerImpl.LOGGER.warn("{} moved too quickly! {},{},{}", new Object[]{this.player.getName().getString(), d7, d8, d9}); + this.teleport(this.player.getX(), this.player.getY(), this.player.getZ(), this.player.getYRot(), this.player.getXRot()); +diff --git a/src/main/java/org/plazmamc/plazma/configurations/LevelConfigurations.java b/src/main/java/org/plazmamc/plazma/configurations/LevelConfigurations.java +index 2a412d46068340606cf065107cebbe15f2c5acb7..29ba4e5ab6beba8537cf1a5c78f7417b9c7b0460 100644 +--- a/src/main/java/org/plazmamc/plazma/configurations/LevelConfigurations.java ++++ b/src/main/java/org/plazmamc/plazma/configurations/LevelConfigurations.java +@@ -87,6 +87,7 @@ public class LevelConfigurations extends ConfigurationPart { + public class Misc extends ConfigurationPart { + + public boolean reduceCreateRandomInstance = !Boolean.getBoolean("Plazma.disableConfigOptimization"); ++ public boolean checkSpectatorMovedToQuickly = !Boolean.getBoolean("Plazma.disableConfigOptimization"); + + } +