100 patches...

This commit is contained in:
granny
2024-10-25 22:02:48 -07:00
parent d8c53a380d
commit b14424ee72
51 changed files with 703 additions and 678 deletions

View File

@@ -5,21 +5,21 @@ Subject: [PATCH] Implement infinite liquids
diff --git a/src/main/java/net/minecraft/world/level/material/FlowingFluid.java b/src/main/java/net/minecraft/world/level/material/FlowingFluid.java diff --git a/src/main/java/net/minecraft/world/level/material/FlowingFluid.java b/src/main/java/net/minecraft/world/level/material/FlowingFluid.java
index 6785baf574f233ed1c3bea8d406be8a524d9ff82..d2f9ffa09d46287707324fd67e60736991b632ac 100644 index f4fbcbb8ff6d2677af1a02a0801a323c06dce9b1..6f024a29e8824a604ff0c74f88522d23423beb5c 100644
--- a/src/main/java/net/minecraft/world/level/material/FlowingFluid.java --- a/src/main/java/net/minecraft/world/level/material/FlowingFluid.java
+++ b/src/main/java/net/minecraft/world/level/material/FlowingFluid.java +++ b/src/main/java/net/minecraft/world/level/material/FlowingFluid.java
@@ -227,7 +227,7 @@ public abstract class FlowingFluid extends Fluid { @@ -266,7 +266,7 @@ public abstract class FlowingFluid extends Fluid {
} }
} }
- if (this.canConvertToSource(world) && j >= 2) { - if (j >= 2 && this.canConvertToSource(world)) {
+ if (this.canConvertToSource(world) && j >= getRequiredSources(world)) { + if (j >= getRequiredSources(world) && this.canConvertToSource(world)) { // Purpur
BlockState iblockdata2 = world.getBlockState(pos.below()); BlockState iblockdata2 = world.getBlockState(blockposition_mutableblockposition.setWithOffset(pos, Direction.DOWN));
FluidState fluid1 = iblockdata2.getFluidState(); FluidState fluid1 = iblockdata2.getFluidState();
@@ -325,6 +325,12 @@ public abstract class FlowingFluid extends Fluid { @@ -356,6 +356,12 @@ public abstract class FlowingFluid extends Fluid {
protected abstract boolean canConvertToSource(Level world); protected abstract boolean canConvertToSource(ServerLevel world);
+ // Purpur start + // Purpur start
+ protected int getRequiredSources(Level level) { + protected int getRequiredSources(Level level) {
@@ -28,13 +28,13 @@ index 6785baf574f233ed1c3bea8d406be8a524d9ff82..d2f9ffa09d46287707324fd67e607369
+ // Purpur end + // Purpur end
+ +
protected void spreadTo(LevelAccessor world, BlockPos pos, BlockState state, Direction direction, FluidState fluidState) { protected void spreadTo(LevelAccessor world, BlockPos pos, BlockState state, Direction direction, FluidState fluidState) {
if (state.getBlock() instanceof LiquidBlockContainer) { Block block = state.getBlock();
((LiquidBlockContainer) state.getBlock()).placeLiquid(world, pos, state, fluidState);
diff --git a/src/main/java/net/minecraft/world/level/material/LavaFluid.java b/src/main/java/net/minecraft/world/level/material/LavaFluid.java diff --git a/src/main/java/net/minecraft/world/level/material/LavaFluid.java b/src/main/java/net/minecraft/world/level/material/LavaFluid.java
index 3bb4a9a1a6249e8ba2de237f801210e7f4fd5825..4c230136d832d50ae16ffa037b0b30ff1101b50a 100644 index 884db3e64cb22ed765beec8f11ea309fcf810207..e9687c3580e5fff33ce902eb7b86eb815ca1072d 100644
--- a/src/main/java/net/minecraft/world/level/material/LavaFluid.java --- a/src/main/java/net/minecraft/world/level/material/LavaFluid.java
+++ b/src/main/java/net/minecraft/world/level/material/LavaFluid.java +++ b/src/main/java/net/minecraft/world/level/material/LavaFluid.java
@@ -198,6 +198,13 @@ public abstract class LavaFluid extends FlowingFluid { @@ -199,6 +199,13 @@ public abstract class LavaFluid extends FlowingFluid {
world.levelEvent(1501, pos, 0); world.levelEvent(1501, pos, 0);
} }
@@ -46,13 +46,13 @@ index 3bb4a9a1a6249e8ba2de237f801210e7f4fd5825..4c230136d832d50ae16ffa037b0b30ff
+ // Purpur end + // Purpur end
+ +
@Override @Override
protected boolean canConvertToSource(Level world) { protected boolean canConvertToSource(ServerLevel world) {
return world.getGameRules().getBoolean(GameRules.RULE_LAVA_SOURCE_CONVERSION); return world.getGameRules().getBoolean(GameRules.RULE_LAVA_SOURCE_CONVERSION);
diff --git a/src/main/java/net/minecraft/world/level/material/WaterFluid.java b/src/main/java/net/minecraft/world/level/material/WaterFluid.java diff --git a/src/main/java/net/minecraft/world/level/material/WaterFluid.java b/src/main/java/net/minecraft/world/level/material/WaterFluid.java
index 109f71401c65f476ccf6813137386fc9fef10254..9dcdb2f4001115db0c26fdbf86531dbe6098485d 100644 index 552925ba47c7475e2e1ec2ded0966f28ed3e50a5..1e741f36b79585f33abe413beafe00cf5205d54f 100644
--- a/src/main/java/net/minecraft/world/level/material/WaterFluid.java --- a/src/main/java/net/minecraft/world/level/material/WaterFluid.java
+++ b/src/main/java/net/minecraft/world/level/material/WaterFluid.java +++ b/src/main/java/net/minecraft/world/level/material/WaterFluid.java
@@ -80,6 +80,13 @@ public abstract class WaterFluid extends FlowingFluid { @@ -81,6 +81,13 @@ public abstract class WaterFluid extends FlowingFluid {
return world.getGameRules().getBoolean(GameRules.RULE_WATER_SOURCE_CONVERSION); return world.getGameRules().getBoolean(GameRules.RULE_WATER_SOURCE_CONVERSION);
} }
@@ -67,10 +67,10 @@ index 109f71401c65f476ccf6813137386fc9fef10254..9dcdb2f4001115db0c26fdbf86531dbe
@Override @Override
protected void beforeDestroyingBlock(LevelAccessor world, BlockPos pos, BlockState state, BlockPos source) { protected void beforeDestroyingBlock(LevelAccessor world, BlockPos pos, BlockState state, BlockPos source) {
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 4bce5d936876bf17d81d008e73877c6d5637fb87..d02eca903ad0e24ab4a8839d958738af865b8bc8 100644 index d39d2ee00b3a2f487d0c341d4103f04ffe516022..dcc6cd317d6b1da58a3deb9fb022a2ba36cdd509 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -222,6 +222,11 @@ public class PurpurWorldConfig { @@ -220,6 +220,11 @@ public class PurpurWorldConfig {
farmlandGetsMoistFromBelow = getBoolean("blocks.farmland.gets-moist-from-below", farmlandGetsMoistFromBelow); farmlandGetsMoistFromBelow = getBoolean("blocks.farmland.gets-moist-from-below", farmlandGetsMoistFromBelow);
} }
@@ -82,7 +82,7 @@ index 4bce5d936876bf17d81d008e73877c6d5637fb87..d02eca903ad0e24ab4a8839d958738af
public boolean turtleEggsBreakFromExpOrbs = false; public boolean turtleEggsBreakFromExpOrbs = false;
public boolean turtleEggsBreakFromItems = false; public boolean turtleEggsBreakFromItems = false;
public boolean turtleEggsBreakFromMinecarts = false; public boolean turtleEggsBreakFromMinecarts = false;
@@ -231,6 +236,11 @@ public class PurpurWorldConfig { @@ -229,6 +234,11 @@ public class PurpurWorldConfig {
turtleEggsBreakFromMinecarts = getBoolean("blocks.turtle_egg.break-from-minecarts", turtleEggsBreakFromMinecarts); turtleEggsBreakFromMinecarts = getBoolean("blocks.turtle_egg.break-from-minecarts", turtleEggsBreakFromMinecarts);
} }

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Make lava flow speed configurable
diff --git a/src/main/java/net/minecraft/world/level/material/LavaFluid.java b/src/main/java/net/minecraft/world/level/material/LavaFluid.java diff --git a/src/main/java/net/minecraft/world/level/material/LavaFluid.java b/src/main/java/net/minecraft/world/level/material/LavaFluid.java
index 4c230136d832d50ae16ffa037b0b30ff1101b50a..2d492d849ff73a738dfbcb16507feb89bf19a962 100644 index e9687c3580e5fff33ce902eb7b86eb815ca1072d..6e643c1a7f7e71cfd20603facaf224985ee81716 100644
--- a/src/main/java/net/minecraft/world/level/material/LavaFluid.java --- a/src/main/java/net/minecraft/world/level/material/LavaFluid.java
+++ b/src/main/java/net/minecraft/world/level/material/LavaFluid.java +++ b/src/main/java/net/minecraft/world/level/material/LavaFluid.java
@@ -180,7 +180,7 @@ public abstract class LavaFluid extends FlowingFluid { @@ -181,7 +181,7 @@ public abstract class LavaFluid extends FlowingFluid {
@Override @Override
public int getTickDelay(LevelReader world) { public int getTickDelay(LevelReader world) {
@@ -18,10 +18,10 @@ index 4c230136d832d50ae16ffa037b0b30ff1101b50a..2d492d849ff73a738dfbcb16507feb89
@Override @Override
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index d02eca903ad0e24ab4a8839d958738af865b8bc8..cde1b1277d83ac2478f872dccdc2f7f87196cc94 100644 index dcc6cd317d6b1da58a3deb9fb022a2ba36cdd509..e41649d2abd8e8ea4ddeb0af1f94d90a60174198 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -223,8 +223,12 @@ public class PurpurWorldConfig { @@ -221,8 +221,12 @@ public class PurpurWorldConfig {
} }
public int lavaInfiniteRequiredSources = 2; public int lavaInfiniteRequiredSources = 2;

View File

@@ -5,37 +5,39 @@ Subject: [PATCH] Add player death exp control options
diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java
index 5e404e470a28f04f5659503bcc6b66caf1880f3f..9dd8dc8f0dc218c5a021d84649f364cd2f1b3a45 100644 index d1b6e7cf8d110d9106ea99431cf9719ea3b102d5..f4823112f2daf2aa75e1f4520fb91077c9c94e09 100644
--- a/src/main/java/net/minecraft/world/entity/player/Player.java --- a/src/main/java/net/minecraft/world/entity/player/Player.java
+++ b/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java
@@ -1976,9 +1976,19 @@ public abstract class Player extends LivingEntity { @@ -1921,7 +1921,23 @@ public abstract class Player extends LivingEntity {
@Override @Override
protected int getBaseExperienceReward() { protected int getBaseExperienceReward(ServerLevel world) {
if (!this.level().getGameRules().getBoolean(GameRules.RULE_KEEPINVENTORY) && !this.isSpectator()) { - return !world.getGameRules().getBoolean(GameRules.RULE_KEEPINVENTORY) && !this.isSpectator() ? Math.min(this.experienceLevel * 7, 100) : 0;
- int i = this.experienceLevel * 7; + // Purpur start
- + if (!world.getGameRules().getBoolean(GameRules.RULE_KEEPINVENTORY) && !this.isSpectator()) {
- return i > 100 ? 100 : i;
+ // Purpur start
+ int toDrop; + int toDrop;
+ try { + try {
+ toDrop = Math.round(((Number) scriptEngine.eval("let expLevel = " + experienceLevel + "; " + + toDrop = Math.round(((Number) scriptEngine.eval("let expLevel = " + experienceLevel + "; " +
+ "let expTotal = " + totalExperience + "; " + + "let expTotal = " + totalExperience + "; " +
+ "let exp = " + experienceProgress + "; " + + "let exp = " + experienceProgress + "; " +
+ level().purpurConfig.playerDeathExpDropEquation)).floatValue()); + level().purpurConfig.playerDeathExpDropEquation)).floatValue());
+ } catch (javax.script.ScriptException e) { + } catch (javax.script.ScriptException e) {
+ e.printStackTrace(); + e.printStackTrace();
+ toDrop = experienceLevel * 7; + toDrop = experienceLevel * 7;
+ } + }
+ return Math.min(toDrop, level().purpurConfig.playerDeathExpDropMax); + return Math.min(toDrop, level().purpurConfig.playerDeathExpDropMax);
+ // Purpur end + } else {
} else { + return 0;
return 0; + }
} + // Purpur end
}
@Override
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index cde1b1277d83ac2478f872dccdc2f7f87196cc94..ed8f3c606984f83b77ca96cbfc8bcd454ad63ff8 100644 index e41649d2abd8e8ea4ddeb0af1f94d90a60174198..364321ea60e256edb10fea8efe4bfb3cdf33f3fb 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -172,6 +172,8 @@ public class PurpurWorldConfig { @@ -170,6 +170,8 @@ public class PurpurWorldConfig {
public boolean idleTimeoutCountAsSleeping = false; public boolean idleTimeoutCountAsSleeping = false;
public boolean idleTimeoutUpdateTabList = false; public boolean idleTimeoutUpdateTabList = false;
public boolean idleTimeoutTargetPlayer = true; public boolean idleTimeoutTargetPlayer = true;
@@ -44,7 +46,7 @@ index cde1b1277d83ac2478f872dccdc2f7f87196cc94..ed8f3c606984f83b77ca96cbfc8bcd45
private void playerSettings() { private void playerSettings() {
if (PurpurConfig.version < 19) { if (PurpurConfig.version < 19) {
boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer);
@@ -183,6 +185,8 @@ public class PurpurWorldConfig { @@ -181,6 +183,8 @@ public class PurpurWorldConfig {
idleTimeoutCountAsSleeping = getBoolean("gameplay-mechanics.player.idle-timeout.count-as-sleeping", idleTimeoutCountAsSleeping); idleTimeoutCountAsSleeping = getBoolean("gameplay-mechanics.player.idle-timeout.count-as-sleeping", idleTimeoutCountAsSleeping);
idleTimeoutUpdateTabList = getBoolean("gameplay-mechanics.player.idle-timeout.update-tab-list", idleTimeoutUpdateTabList); idleTimeoutUpdateTabList = getBoolean("gameplay-mechanics.player.idle-timeout.update-tab-list", idleTimeoutUpdateTabList);
idleTimeoutTargetPlayer = getBoolean("gameplay-mechanics.player.idle-timeout.mobs-target", idleTimeoutTargetPlayer); idleTimeoutTargetPlayer = getBoolean("gameplay-mechanics.player.idle-timeout.mobs-target", idleTimeoutTargetPlayer);

View File

@@ -19,10 +19,10 @@ index 1029b6de6f36b08bf634b4056ef5701383f6f258..ee0d1df78838e05450ad1a06ce70eab2
final ConfigurationTransformation.VersionedBuilder versionedBuilder = Transformations.versionedBuilder(); final ConfigurationTransformation.VersionedBuilder versionedBuilder = Transformations.versionedBuilder();
diff --git a/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java b/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java diff --git a/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java b/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java
index fd3b1c10695634f65c7291016bf671c084bc4d57..c867796f625813797f167610ad443c4be5a7561e 100644 index a81a332ffb80e67d7f886295099b5cd2ae8994c5..1d18cad6c32815854ff8dace256b59022200c842 100644
--- a/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java --- a/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java
+++ b/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java +++ b/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java
@@ -401,6 +401,7 @@ public class WorldConfiguration extends ConfigurationPart { @@ -400,6 +400,7 @@ public class WorldConfiguration extends ConfigurationPart {
public boolean useVanillaWorldScoreboardNameColoring = false; public boolean useVanillaWorldScoreboardNameColoring = false;
} }
@@ -30,7 +30,7 @@ index fd3b1c10695634f65c7291016bf671c084bc4d57..c867796f625813797f167610ad443c4b
public Environment environment; public Environment environment;
public class Environment extends ConfigurationPart { public class Environment extends ConfigurationPart {
@@ -410,7 +411,9 @@ public class WorldConfiguration extends ConfigurationPart { @@ -409,7 +410,9 @@ public class WorldConfiguration extends ConfigurationPart {
public boolean disableExplosionKnockback = false; public boolean disableExplosionKnockback = false;
public boolean generateFlatBedrock = false; public boolean generateFlatBedrock = false;
public FrostedIce frostedIce; public FrostedIce frostedIce;
@@ -41,10 +41,10 @@ index fd3b1c10695634f65c7291016bf671c084bc4d57..c867796f625813797f167610ad443c4b
public class FrostedIce extends ConfigurationPart { public class FrostedIce extends ConfigurationPart {
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index f200a105bd3f5013d0590f1a10d4edc08ad745d1..debc521eaa05c6befc6fe67f44780372b078039d 100644 index 8719173e50ec2313cb44905b52e5dbe7fb264374..0fd97d9607b83fa2c2c36602c3b92ab0a6f58e27 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java --- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -1249,7 +1249,15 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa @@ -1235,7 +1235,15 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
LOGGER.info("*************************************************************************************"); LOGGER.info("*************************************************************************************");
} }
// Paper end - Add onboarding message for initial server start // Paper end - Add onboarding message for initial server start
@@ -62,10 +62,10 @@ index f200a105bd3f5013d0590f1a10d4edc08ad745d1..debc521eaa05c6befc6fe67f44780372
long i; long i;
diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
index ca9afa93a9c43208ef64f86d534e5540d34a6b09..ea89f36bb1ecb8a7a8b88d6f46bc24554609647f 100644 index 11f708ec623bba462fce8bc9c4483f855fe48366..0d8d96e5aa24e8582e32fdbb920f6ae071871765 100644
--- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java --- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
+++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java +++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
@@ -222,6 +222,15 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface @@ -221,6 +221,15 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
org.spigotmc.SpigotConfig.registerCommands(); org.spigotmc.SpigotConfig.registerCommands();
// Spigot end // Spigot end
io.papermc.paper.util.ObfHelper.INSTANCE.getClass(); // Paper - load mappings for stacktrace deobf and etc. io.papermc.paper.util.ObfHelper.INSTANCE.getClass(); // Paper - load mappings for stacktrace deobf and etc.
@@ -81,9 +81,9 @@ index ca9afa93a9c43208ef64f86d534e5540d34a6b09..ea89f36bb1ecb8a7a8b88d6f46bc2455
// Paper start - initialize global and world-defaults configuration // Paper start - initialize global and world-defaults configuration
this.paperConfigurations.initializeGlobalConfiguration(this.registryAccess()); this.paperConfigurations.initializeGlobalConfiguration(this.registryAccess());
this.paperConfigurations.initializeWorldDefaultsConfiguration(this.registryAccess()); this.paperConfigurations.initializeWorldDefaultsConfiguration(this.registryAccess());
@@ -238,15 +247,6 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface @@ -235,15 +244,6 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
thread.start(); // Paper - Enhance console tab completions for brigadier commands; start console thread after MinecraftServer.console & PaperConfig are initialized
io.papermc.paper.command.PaperCommands.registerCommands(this); // Paper - setup /paper command io.papermc.paper.command.PaperCommands.registerCommands(this); // Paper - setup /paper command
this.server.spark.registerCommandBeforePlugins(this.server); // Paper - spark
com.destroystokyo.paper.Metrics.PaperMetrics.startMetrics(); // Paper - start metrics com.destroystokyo.paper.Metrics.PaperMetrics.startMetrics(); // Paper - start metrics
- // Purpur start - // Purpur start
- try { - try {
@@ -95,8 +95,8 @@ index ca9afa93a9c43208ef64f86d534e5540d34a6b09..ea89f36bb1ecb8a7a8b88d6f46bc2455
- org.purpurmc.purpur.PurpurConfig.registerCommands(); - org.purpurmc.purpur.PurpurConfig.registerCommands();
- // Purpur end - // Purpur end
com.destroystokyo.paper.VersionHistoryManager.INSTANCE.getClass(); // Paper - load version history now com.destroystokyo.paper.VersionHistoryManager.INSTANCE.getClass(); // Paper - load version history now
gg.pufferfish.pufferfish.PufferfishConfig.load(); // Pufferfish
gg.pufferfish.pufferfish.PufferfishCommand.init(); // Pufferfish this.setPvpAllowed(dedicatedserverproperties.pvp);
diff --git a/src/main/java/org/purpurmc/purpur/configuration/transformation/VoidDamageHeightMigration.java b/src/main/java/org/purpurmc/purpur/configuration/transformation/VoidDamageHeightMigration.java diff --git a/src/main/java/org/purpurmc/purpur/configuration/transformation/VoidDamageHeightMigration.java b/src/main/java/org/purpurmc/purpur/configuration/transformation/VoidDamageHeightMigration.java
new file mode 100644 new file mode 100644
index 0000000000000000000000000000000000000000..a04d23bd98075cd65a24d4de8d18281d1668480f index 0000000000000000000000000000000000000000..a04d23bd98075cd65a24d4de8d18281d1668480f

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Add canSaveToDisk to Entity
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
index 4ba8de9d87fc1b94019e8529a279cbc8a91a2b7f..c847c522def00e20435d7afc52f33cadf8183289 100644 index f573cbaa5bf7bc12d6e9405010bf50c13727b350..c2cc934f2599c6620b60b1b1485c743390157377 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java --- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -553,6 +553,11 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @@ -611,6 +611,11 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
} }
} }
// Paper end - optimise entity tracker // Paper end - optimise entity tracker
@@ -21,7 +21,7 @@ index 4ba8de9d87fc1b94019e8529a279cbc8a91a2b7f..c847c522def00e20435d7afc52f33cad
public Entity(EntityType<?> type, Level world) { public Entity(EntityType<?> type, Level world) {
this.id = Entity.ENTITY_COUNTER.incrementAndGet(); this.id = Entity.ENTITY_COUNTER.incrementAndGet();
diff --git a/src/main/java/net/minecraft/world/entity/projectile/WitherSkull.java b/src/main/java/net/minecraft/world/entity/projectile/WitherSkull.java diff --git a/src/main/java/net/minecraft/world/entity/projectile/WitherSkull.java b/src/main/java/net/minecraft/world/entity/projectile/WitherSkull.java
index 63f48841c849ff49d9d43efc5de8952c5a9bba3a..e472df057d087fe46bd40b798c050ed6e38a283c 100644 index a1f25efb38eff32aaabe892ddbc9a60426923686..e0f25b057b7b908a10038d9e9695a500aa883c75 100644
--- a/src/main/java/net/minecraft/world/entity/projectile/WitherSkull.java --- a/src/main/java/net/minecraft/world/entity/projectile/WitherSkull.java
+++ b/src/main/java/net/minecraft/world/entity/projectile/WitherSkull.java +++ b/src/main/java/net/minecraft/world/entity/projectile/WitherSkull.java
@@ -121,6 +121,11 @@ public class WitherSkull extends AbstractHurtingProjectile { @@ -121,6 +121,11 @@ public class WitherSkull extends AbstractHurtingProjectile {
@@ -37,12 +37,12 @@ index 63f48841c849ff49d9d43efc5de8952c5a9bba3a..e472df057d087fe46bd40b798c050ed6
@Override @Override
diff --git a/src/main/java/net/minecraft/world/level/chunk/storage/EntityStorage.java b/src/main/java/net/minecraft/world/level/chunk/storage/EntityStorage.java diff --git a/src/main/java/net/minecraft/world/level/chunk/storage/EntityStorage.java b/src/main/java/net/minecraft/world/level/chunk/storage/EntityStorage.java
index d4a505ef4af9ded02aeb1a817bcbe5b1a912a5b3..97a310f042db1a838a744d2909d261aaf253ea17 100644 index 16ca1c8672e5f0a27f8a30498c754a81cdec5191..e37dff5dcabeca698838e1a8c9633807213443cc 100644
--- a/src/main/java/net/minecraft/world/level/chunk/storage/EntityStorage.java --- a/src/main/java/net/minecraft/world/level/chunk/storage/EntityStorage.java
+++ b/src/main/java/net/minecraft/world/level/chunk/storage/EntityStorage.java +++ b/src/main/java/net/minecraft/world/level/chunk/storage/EntityStorage.java
@@ -105,6 +105,7 @@ public class EntityStorage implements EntityPersistentStorage<Entity> { @@ -95,6 +95,7 @@ public class EntityStorage implements EntityPersistentStorage<Entity> {
} ListTag listTag = new ListTag();
// Paper end - Entity load/save limit per chunk dataList.getEntities().forEach(entity -> {
CompoundTag compoundTagx = new CompoundTag(); CompoundTag compoundTagx = new CompoundTag();
+ if (!entity.canSaveToDisk()) return; // Purpur + if (!entity.canSaveToDisk()) return; // Purpur
if (entity.save(compoundTagx)) { if (entity.save(compoundTagx)) {

View File

@@ -4,12 +4,34 @@ Date: Sun, 25 Aug 2019 00:09:52 -0500
Subject: [PATCH] Dispenser curse of binding protection Subject: [PATCH] Dispenser curse of binding protection
diff --git a/src/main/java/net/minecraft/core/dispenser/EquipmentDispenseItemBehavior.java b/src/main/java/net/minecraft/core/dispenser/EquipmentDispenseItemBehavior.java
index 036dd3b15dfee4cd079710eba1255d2bdb4d7220..3fb385329d20ab26ea48fa33f35295115914e4a5 100644
--- a/src/main/java/net/minecraft/core/dispenser/EquipmentDispenseItemBehavior.java
+++ b/src/main/java/net/minecraft/core/dispenser/EquipmentDispenseItemBehavior.java
@@ -41,7 +41,7 @@ public class EquipmentDispenseItemBehavior extends DefaultDispenseItemBehavior {
return false;
} else {
LivingEntity entityliving = (LivingEntity) list.getFirst();
- EquipmentSlot enumitemslot = entityliving.getEquipmentSlotForItem(stack);
+ EquipmentSlot enumitemslot = pointer.level().purpurConfig.dispenserApplyCursedArmor ? entityliving.getEquipmentSlotForItem(stack) : entityliving.getEquipmentSlotForDispenserItem(stack); if (enumitemslot == null) return false; // Purpur - Dispenser curse of binding protection
ItemStack itemstack1 = stack.split(1);
// CraftBukkit start
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
index cc6148404f139464cc2f4f4fc7d5a0b45cb4929e..f444b36b4fddce06aaafabe3cfef463f173969ce 100644 index 8ebd43c8088523396a4f46b8b0083f91e2b55e27..2e955dc3299062c2564eac0de43d5f1b78f5897c 100644
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
@@ -4599,6 +4599,12 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -4653,7 +4653,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
return EquipmentSlot.MAINHAND; if (equippable != null && equippable.dispensable()) {
EquipmentSlot enumitemslot = equippable.slot();
- return this.canUseSlot(enumitemslot) && equippable.canBeEquippedBy(this.getType()) ? this.getItemBySlot(enumitemslot).isEmpty() && this.canDispenserEquipIntoSlot(enumitemslot) : false;
+ return this.canUseSlot(enumitemslot) && equippable.canBeEquippedBy(this.getType()) && this.getItemBySlot(enumitemslot).isEmpty() && this.canDispenserEquipIntoSlot(enumitemslot);
} else {
return false;
}
@@ -4678,6 +4678,12 @@ public abstract class LivingEntity extends Entity implements Attackable {
return equippable == null ? slot == EquipmentSlot.MAINHAND && this.canUseSlot(EquipmentSlot.MAINHAND) : slot == equippable.slot() && this.canUseSlot(equippable.slot()) && equippable.canBeEquippedBy(this.getType());
} }
+ // Purpur start - Dispenser curse of binding protection + // Purpur start - Dispenser curse of binding protection
@@ -21,24 +43,11 @@ index cc6148404f139464cc2f4f4fc7d5a0b45cb4929e..f444b36b4fddce06aaafabe3cfef463f
private static SlotAccess createEquipmentSlotAccess(LivingEntity entity, EquipmentSlot slot) { private static SlotAccess createEquipmentSlotAccess(LivingEntity entity, EquipmentSlot slot) {
return slot != EquipmentSlot.HEAD && slot != EquipmentSlot.MAINHAND && slot != EquipmentSlot.OFFHAND ? SlotAccess.forEquipmentSlot(entity, slot, (itemstack) -> { return slot != EquipmentSlot.HEAD && slot != EquipmentSlot.MAINHAND && slot != EquipmentSlot.OFFHAND ? SlotAccess.forEquipmentSlot(entity, slot, (itemstack) -> {
return itemstack.isEmpty() || entity.getEquipmentSlotForItem(itemstack) == slot; return itemstack.isEmpty() || entity.getEquipmentSlotForItem(itemstack) == slot;
diff --git a/src/main/java/net/minecraft/world/item/ArmorItem.java b/src/main/java/net/minecraft/world/item/ArmorItem.java
index 647a4601deace52f8d855f512a73671f82b4762a..d05b1e129eee07434d162e1b949fd5633418ef66 100644
--- a/src/main/java/net/minecraft/world/item/ArmorItem.java
+++ b/src/main/java/net/minecraft/world/item/ArmorItem.java
@@ -60,7 +60,7 @@ public class ArmorItem extends Item implements Equipable {
return false;
} else {
LivingEntity entityliving = (LivingEntity) list.get(0);
- EquipmentSlot enumitemslot = entityliving.getEquipmentSlotForItem(armor);
+ EquipmentSlot enumitemslot = pointer.level().purpurConfig.dispenserApplyCursedArmor ? entityliving.getEquipmentSlotForItem(armor) : entityliving.getEquipmentSlotForDispenserItem(armor); if (enumitemslot == null) return false; // Purpur - Dispenser curse of binding protection
ItemStack itemstack1 = armor.copyWithCount(1); // Paper - shrink below and single item in event
// CraftBukkit start
Level world = pointer.level();
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index ed8f3c606984f83b77ca96cbfc8bcd454ad63ff8..2a301dc07863320ed3e57c9bd0d4ee5a16c9cbaf 100644 index 364321ea60e256edb10fea8efe4bfb3cdf33f3fb..4b3727f9c4e4f1de2745e4984ad660b6a0ac7797 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -221,6 +221,11 @@ public class PurpurWorldConfig { @@ -219,6 +219,11 @@ public class PurpurWorldConfig {
}); });
} }

View File

@@ -4,32 +4,31 @@ Date: Sat, 7 Sep 2019 22:47:59 -0500
Subject: [PATCH] Add option for boats to eject players on land Subject: [PATCH] Add option for boats to eject players on land
diff --git a/src/main/java/net/minecraft/world/entity/vehicle/Boat.java b/src/main/java/net/minecraft/world/entity/vehicle/Boat.java diff --git a/src/main/java/net/minecraft/world/entity/vehicle/AbstractBoat.java b/src/main/java/net/minecraft/world/entity/vehicle/AbstractBoat.java
index f1955afc8e367f80ead85bd5ad3b8d66c255565a..7f7abef3c5b7ad124c5c1dda02173bc5f70c9506 100644 index 1fdbef16cd29c8fc74578ac3328f985eca61088d..e523f651e8776a89ffba015921d708f569fad8f3 100644
--- a/src/main/java/net/minecraft/world/entity/vehicle/Boat.java --- a/src/main/java/net/minecraft/world/entity/vehicle/AbstractBoat.java
+++ b/src/main/java/net/minecraft/world/entity/vehicle/Boat.java +++ b/src/main/java/net/minecraft/world/entity/vehicle/AbstractBoat.java
@@ -543,6 +543,7 @@ public class Boat extends VehicleEntity implements Leashable, VariantHolder<Boat @@ -499,6 +499,7 @@ public abstract class AbstractBoat extends VehicleEntity implements Leashable {
if (f > 0.0F) { if (f > 0.0F) {
this.landFriction = f; this.landFriction = f;
+ if (level().purpurConfig.boatEjectPlayersOnLand) ejectPassengers(); // Purpur + if (level().purpurConfig.boatEjectPlayersOnLand) ejectPassengers(); // Purpur
return Boat.Status.ON_LAND; return AbstractBoat.Status.ON_LAND;
} else { } else {
return Boat.Status.IN_AIR; return AbstractBoat.Status.IN_AIR;
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 2a301dc07863320ed3e57c9bd0d4ee5a16c9cbaf..3d5f86aebb047a3f6d3c94c28415889e65a3c027 100644 index 4b3727f9c4e4f1de2745e4984ad660b6a0ac7797..b87d96e31d5b0f931a420ae302ce944c94ffa97b 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -96,10 +96,12 @@ public class PurpurWorldConfig { @@ -96,9 +96,11 @@ public class PurpurWorldConfig {
armorstandStepHeight = (float) getDouble("gameplay-mechanics.armorstand.step-height", armorstandStepHeight); armorstandStepHeight = (float) getDouble("gameplay-mechanics.armorstand.step-height", armorstandStepHeight);
} }
+ public boolean boatEjectPlayersOnLand = false; + public boolean boatEjectPlayersOnLand = false;
public boolean disableDropsOnCrammingDeath = false; public boolean disableDropsOnCrammingDeath = false;
public boolean milkCuresBadOmen = true;
public double tridentLoyaltyVoidReturnHeight = 0.0D; public double tridentLoyaltyVoidReturnHeight = 0.0D;
private void miscGameplayMechanicsSettings() { private void miscGameplayMechanicsSettings() {
+ boatEjectPlayersOnLand = getBoolean("gameplay-mechanics.boat.eject-players-on-land", boatEjectPlayersOnLand); + boatEjectPlayersOnLand = getBoolean("gameplay-mechanics.boat.eject-players-on-land", boatEjectPlayersOnLand);
disableDropsOnCrammingDeath = getBoolean("gameplay-mechanics.disable-drops-on-cramming-death", disableDropsOnCrammingDeath); disableDropsOnCrammingDeath = getBoolean("gameplay-mechanics.disable-drops-on-cramming-death", disableDropsOnCrammingDeath);
milkCuresBadOmen = getBoolean("gameplay-mechanics.milk-cures-bad-omen", milkCuresBadOmen);
tridentLoyaltyVoidReturnHeight = getDouble("gameplay-mechanics.trident-loyalty-void-return-height", tridentLoyaltyVoidReturnHeight); tridentLoyaltyVoidReturnHeight = getDouble("gameplay-mechanics.trident-loyalty-void-return-height", tridentLoyaltyVoidReturnHeight);
}

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Mending mends most damages equipment first
diff --git a/src/main/java/net/minecraft/world/entity/ExperienceOrb.java b/src/main/java/net/minecraft/world/entity/ExperienceOrb.java diff --git a/src/main/java/net/minecraft/world/entity/ExperienceOrb.java b/src/main/java/net/minecraft/world/entity/ExperienceOrb.java
index a58ff67052fb5f33782f8b5c83465ec03ef1d073..caaeeb63b8bf0d3709fc38266a7e8c48211f5c0b 100644 index bf0838f574fa3fb9654e087d602b8d380bd7fb28..6db9a3ea4c0dc1f0629bc8bf6466aeab00c498f6 100644
--- a/src/main/java/net/minecraft/world/entity/ExperienceOrb.java --- a/src/main/java/net/minecraft/world/entity/ExperienceOrb.java
+++ b/src/main/java/net/minecraft/world/entity/ExperienceOrb.java +++ b/src/main/java/net/minecraft/world/entity/ExperienceOrb.java
@@ -347,7 +347,7 @@ public class ExperienceOrb extends Entity { @@ -351,7 +351,7 @@ public class ExperienceOrb extends Entity {
} }
private int repairPlayerItems(ServerPlayer player, int amount) { private int repairPlayerItems(ServerPlayer player, int amount) {
@@ -18,10 +18,10 @@ index a58ff67052fb5f33782f8b5c83465ec03ef1d073..caaeeb63b8bf0d3709fc38266a7e8c48
if (optional.isPresent()) { if (optional.isPresent()) {
ItemStack itemstack = ((EnchantedItemInUse) optional.get()).itemStack(); ItemStack itemstack = ((EnchantedItemInUse) optional.get()).itemStack();
diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java
index eec0ec43590be7e8ae5b530a7404c98b5e23cb53..c89663b093120d9c43a7f4d24ec8d798b3fa6d5f 100644 index 33e7d2884195677c4d6340d8b84c1dd85c636ec1..239bd6e3d756dc4ecab6ca639fa84ccbf89418a7 100644
--- a/src/main/java/net/minecraft/world/item/ItemStack.java --- a/src/main/java/net/minecraft/world/item/ItemStack.java
+++ b/src/main/java/net/minecraft/world/item/ItemStack.java +++ b/src/main/java/net/minecraft/world/item/ItemStack.java
@@ -643,6 +643,26 @@ public final class ItemStack implements DataComponentHolder { @@ -681,6 +681,26 @@ public final class ItemStack implements DataComponentHolder {
return this.isDamageableItem() && this.getDamageValue() > 0; return this.isDamageableItem() && this.getDamageValue() > 0;
} }
@@ -49,7 +49,7 @@ index eec0ec43590be7e8ae5b530a7404c98b5e23cb53..c89663b093120d9c43a7f4d24ec8d798
return Mth.clamp((Integer) this.getOrDefault(DataComponents.DAMAGE, 0), 0, this.getMaxDamage()); return Mth.clamp((Integer) this.getOrDefault(DataComponents.DAMAGE, 0), 0, this.getMaxDamage());
} }
diff --git a/src/main/java/net/minecraft/world/item/enchantment/EnchantmentHelper.java b/src/main/java/net/minecraft/world/item/enchantment/EnchantmentHelper.java diff --git a/src/main/java/net/minecraft/world/item/enchantment/EnchantmentHelper.java b/src/main/java/net/minecraft/world/item/enchantment/EnchantmentHelper.java
index 9635c076703beee96af9f5d0bdee4cf97ccd98ad..1abf54eeaad1b062f1465ee1a847bbfcba295665 100644 index d8fc10f9cd0ab2c26e64613006569a86ce201550..73241113e50dc8be89ef8850d49d95ec31fb194f 100644
--- a/src/main/java/net/minecraft/world/item/enchantment/EnchantmentHelper.java --- a/src/main/java/net/minecraft/world/item/enchantment/EnchantmentHelper.java
+++ b/src/main/java/net/minecraft/world/item/enchantment/EnchantmentHelper.java +++ b/src/main/java/net/minecraft/world/item/enchantment/EnchantmentHelper.java
@@ -6,6 +6,7 @@ import it.unimi.dsi.fastutil.objects.Object2IntMap.Entry; @@ -6,6 +6,7 @@ import it.unimi.dsi.fastutil.objects.Object2IntMap.Entry;
@@ -60,7 +60,7 @@ index 9635c076703beee96af9f5d0bdee4cf97ccd98ad..1abf54eeaad1b062f1465ee1a847bbfc
import java.util.Optional; import java.util.Optional;
import java.util.function.BiConsumer; import java.util.function.BiConsumer;
import java.util.function.Consumer; import java.util.function.Consumer;
@@ -569,4 +570,48 @@ public class EnchantmentHelper { @@ -588,4 +589,48 @@ public class EnchantmentHelper {
return getItemEnchantmentLevel(getEnchantmentHolder(enchantment), stack); return getItemEnchantmentLevel(getEnchantmentHolder(enchantment), stack);
} }
// Purpur end - Enchantment convenience methods // Purpur end - Enchantment convenience methods
@@ -110,20 +110,19 @@ index 9635c076703beee96af9f5d0bdee4cf97ccd98ad..1abf54eeaad1b062f1465ee1a847bbfc
+ // Purpur end - Add option to mend the most damaged equipment first + // Purpur end - Add option to mend the most damaged equipment first
} }
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 3d5f86aebb047a3f6d3c94c28415889e65a3c027..4f1a650b7829464d873dfb782fe7eb94703ac040 100644 index b87d96e31d5b0f931a420ae302ce944c94ffa97b..49efe798ae09c000c708001ca896620c468933d5 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -96,11 +96,13 @@ public class PurpurWorldConfig { @@ -96,10 +96,12 @@ public class PurpurWorldConfig {
armorstandStepHeight = (float) getDouble("gameplay-mechanics.armorstand.step-height", armorstandStepHeight); armorstandStepHeight = (float) getDouble("gameplay-mechanics.armorstand.step-height", armorstandStepHeight);
} }
+ public boolean useBetterMending = false; + public boolean useBetterMending = false;
public boolean boatEjectPlayersOnLand = false; public boolean boatEjectPlayersOnLand = false;
public boolean disableDropsOnCrammingDeath = false; public boolean disableDropsOnCrammingDeath = false;
public boolean milkCuresBadOmen = true;
public double tridentLoyaltyVoidReturnHeight = 0.0D; public double tridentLoyaltyVoidReturnHeight = 0.0D;
private void miscGameplayMechanicsSettings() { private void miscGameplayMechanicsSettings() {
+ useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending); + useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending);
boatEjectPlayersOnLand = getBoolean("gameplay-mechanics.boat.eject-players-on-land", boatEjectPlayersOnLand); boatEjectPlayersOnLand = getBoolean("gameplay-mechanics.boat.eject-players-on-land", boatEjectPlayersOnLand);
disableDropsOnCrammingDeath = getBoolean("gameplay-mechanics.disable-drops-on-cramming-death", disableDropsOnCrammingDeath); disableDropsOnCrammingDeath = getBoolean("gameplay-mechanics.disable-drops-on-cramming-death", disableDropsOnCrammingDeath);
milkCuresBadOmen = getBoolean("gameplay-mechanics.milk-cures-bad-omen", milkCuresBadOmen); tridentLoyaltyVoidReturnHeight = getDouble("gameplay-mechanics.trident-loyalty-void-return-height", tridentLoyaltyVoidReturnHeight);

View File

@@ -26,10 +26,10 @@ index 12b327eea95e0de9e9c39b7d039badee8ec46508..849ecc5af70901f1e40cb6c419f33f1c
} }
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index debc521eaa05c6befc6fe67f44780372b078039d..b2ce50799ff158ff2160b0d75404e52e34d54805 100644 index 0fd97d9607b83fa2c2c36602c3b92ab0a6f58e27..e96f55191f97490bbaf5fb990c33237469fa07e0 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java --- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -314,7 +314,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa @@ -325,7 +325,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
public static final int TICK_TIME = 1000000000 / MinecraftServer.TPS; public static final int TICK_TIME = 1000000000 / MinecraftServer.TPS;
private static final int SAMPLE_INTERVAL = 20; // Paper - improve server tick loop private static final int SAMPLE_INTERVAL = 20; // Paper - improve server tick loop
@Deprecated(forRemoval = true) // Paper @Deprecated(forRemoval = true) // Paper
@@ -38,7 +38,7 @@ index debc521eaa05c6befc6fe67f44780372b078039d..b2ce50799ff158ff2160b0d75404e52e
// Spigot end // Spigot end
public final io.papermc.paper.configuration.PaperConfigurations paperConfigurations; // Paper - add paper configuration files public final io.papermc.paper.configuration.PaperConfigurations paperConfigurations; // Paper - add paper configuration files
public boolean isIteratingOverLevels = false; // Paper - Throw exception on world create while being ticked public boolean isIteratingOverLevels = false; // Paper - Throw exception on world create while being ticked
@@ -1163,6 +1163,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa @@ -1162,6 +1162,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
private static final long MAX_CATCHUP_BUFFER = TICK_TIME * TPS * 60L; private static final long MAX_CATCHUP_BUFFER = TICK_TIME * TPS * 60L;
private long lastTick = 0; private long lastTick = 0;
private long catchupTime = 0; private long catchupTime = 0;
@@ -46,7 +46,7 @@ index debc521eaa05c6befc6fe67f44780372b078039d..b2ce50799ff158ff2160b0d75404e52e
public final RollingAverage tps1 = new RollingAverage(60); public final RollingAverage tps1 = new RollingAverage(60);
public final RollingAverage tps5 = new RollingAverage(60 * 5); public final RollingAverage tps5 = new RollingAverage(60 * 5);
public final RollingAverage tps15 = new RollingAverage(60 * 15); public final RollingAverage tps15 = new RollingAverage(60 * 15);
@@ -1284,14 +1285,18 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa @@ -1270,14 +1271,18 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
if (++MinecraftServer.currentTick % MinecraftServer.SAMPLE_INTERVAL == 0) { if (++MinecraftServer.currentTick % MinecraftServer.SAMPLE_INTERVAL == 0) {
final long diff = currentTime - tickSection; final long diff = currentTime - tickSection;
final java.math.BigDecimal currentTps = TPS_BASE.divide(new java.math.BigDecimal(diff), 30, java.math.RoundingMode.HALF_UP); final java.math.BigDecimal currentTps = TPS_BASE.divide(new java.math.BigDecimal(diff), 30, java.math.RoundingMode.HALF_UP);
@@ -82,10 +82,10 @@ index 096c89bd01cec2abd151bf6fffc4847d1bcd548f..cd0a8a6a1be75cab8bbb8ee3ac17bb73
this.values[this.vp++ & 0xFF] = (int)(l * 100L / Runtime.getRuntime().maxMemory()); this.values[this.vp++ & 0xFF] = (int)(l * 100L / Runtime.getRuntime().maxMemory());
this.repaint(); this.repaint();
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
index 39112ee78ff7f55d9be109f4ad3dffb788f7380f..eb764777e7bb1c8f6300ae74726891d9df95107b 100644 index febd5dc39cbe96054d21d13b14947bdf65384054..ac0dd26ecaa3d6a4ef0ebd271ec5c328f5320399 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -3034,6 +3034,7 @@ public final class CraftServer implements Server { @@ -3012,6 +3012,7 @@ public final class CraftServer implements Server {
@Override @Override
public double[] getTPS() { public double[] getTPS() {
return new double[] { return new double[] {

View File

@@ -0,0 +1,134 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: William Blake Galbreath <blake.galbreath@gmail.com>
Date: Thu, 25 Jul 2019 18:07:37 -0500
Subject: [PATCH] Implement elytra settings
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
index 2e955dc3299062c2564eac0de43d5f1b78f5897c..a58c8ed64eab56c4a4a0688e0731a232fb5f7269 100644
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
@@ -3740,7 +3740,17 @@ public abstract class LivingEntity extends Entity implements Attackable {
}).toList();
EquipmentSlot enumitemslot = (EquipmentSlot) Util.getRandom(list, this.random);
- this.getItemBySlot(enumitemslot).hurtAndBreak(1, this, enumitemslot);
+ // Purpur start
+ int damage = level().purpurConfig.elytraDamagePerSecond;
+ if (level().purpurConfig.elytraDamageMultiplyBySpeed > 0) {
+ double speed = getDeltaMovement().lengthSqr();
+ if (speed > level().purpurConfig.elytraDamageMultiplyBySpeed) {
+ damage *= (int) speed;
+ }
+ }
+
+ this.getItemBySlot(enumitemslot).hurtAndBreak(damage, this, enumitemslot);
+ // Purpur end
}
this.gameEvent(GameEvent.ELYTRA_GLIDE);
@@ -3749,7 +3759,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
}
- protected boolean canGlide() {
+ public boolean canGlide() { // Purpur
if (!this.onGround() && !this.isPassenger() && !this.hasEffect(MobEffects.LEVITATION)) {
Iterator iterator = EquipmentSlot.VALUES.iterator();
diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java
index f4823112f2daf2aa75e1f4520fb91077c9c94e09..773be9c116a664e4d0349c58c00df34f203f8ebf 100644
--- a/src/main/java/net/minecraft/world/entity/player/Player.java
+++ b/src/main/java/net/minecraft/world/entity/player/Player.java
@@ -1661,7 +1661,7 @@ public abstract class Player extends LivingEntity {
}
@Override
- protected boolean canGlide() {
+ public boolean canGlide() { // Purpur
return !this.abilities.flying && super.canGlide();
}
diff --git a/src/main/java/net/minecraft/world/item/FireworkRocketItem.java b/src/main/java/net/minecraft/world/item/FireworkRocketItem.java
index 7e308b364227dedc2d05496f5e0c90573f4a53f7..52e0a741e0a2274d3d70e8d8cdfa56f5e934deb2 100644
--- a/src/main/java/net/minecraft/world/item/FireworkRocketItem.java
+++ b/src/main/java/net/minecraft/world/item/FireworkRocketItem.java
@@ -66,6 +66,18 @@ public class FireworkRocketItem extends Item implements ProjectileItem {
com.destroystokyo.paper.event.player.PlayerElytraBoostEvent event = new com.destroystokyo.paper.event.player.PlayerElytraBoostEvent((org.bukkit.entity.Player) user.getBukkitEntity(), org.bukkit.craftbukkit.inventory.CraftItemStack.asCraftMirror(itemStack), (org.bukkit.entity.Firework) delayed.projectile().getBukkitEntity(), org.bukkit.craftbukkit.CraftEquipmentSlot.getHand(hand));
if (event.callEvent() && delayed.attemptSpawn()) {
user.awardStat(Stats.ITEM_USED.get(this)); // Moved up from below
+
+ // Purpur start
+ if (world.purpurConfig.elytraDamagePerFireworkBoost > 0) {
+ List<net.minecraft.world.entity.EquipmentSlot> list = net.minecraft.world.entity.EquipmentSlot.VALUES.stream().filter((enumitemslot) -> net.minecraft.world.entity.LivingEntity.canGlideUsing(user.getItemBySlot(enumitemslot), enumitemslot)).toList();
+ net.minecraft.world.entity.EquipmentSlot enumitemslot = net.minecraft.Util.getRandom(list, user.random);
+
+ ItemStack glideItem = user.getItemBySlot(enumitemslot);
+ if (user.canGlide()) {
+ glideItem.hurtAndBreak(world.purpurConfig.elytraDamagePerFireworkBoost, user, enumitemslot);
+ }
+ }
+ // Purpur end
if (event.shouldConsume() && !user.hasInfiniteMaterials()) {
itemStack.shrink(1); // Moved up from below
} else ((net.minecraft.server.level.ServerPlayer) user).getBukkitEntity().updateInventory();
diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java
index 239bd6e3d756dc4ecab6ca639fa84ccbf89418a7..dcb656be3d37f29bdbe7d25ace05c6dd1889e252 100644
--- a/src/main/java/net/minecraft/world/item/ItemStack.java
+++ b/src/main/java/net/minecraft/world/item/ItemStack.java
@@ -781,6 +781,12 @@ public final class ItemStack implements DataComponentHolder {
org.bukkit.craftbukkit.event.CraftEventFactory.callPlayerItemBreakEvent(serverPlayer, this); // Paper - Add EntityDamageItemEvent
}
// CraftBukkit end
+ // Purpur start
+ if (this.has(DataComponents.GLIDER)) {
+ setDamageValue(this.getMaxDamage() - 1);
+ return;
+ }
+ // Purpur end
this.shrink(1);
breakCallback.accept(item);
diff --git a/src/main/java/net/minecraft/world/item/TridentItem.java b/src/main/java/net/minecraft/world/item/TridentItem.java
index 8b9a93ef71164cce8a616735b71d96d37e83b1a8..24b97c8e2758e4a991dbbbf5276580e1fe027439 100644
--- a/src/main/java/net/minecraft/world/item/TridentItem.java
+++ b/src/main/java/net/minecraft/world/item/TridentItem.java
@@ -132,6 +132,16 @@ public class TridentItem extends Item implements ProjectileItem {
f4 *= f / f6;
f5 *= f / f6;
org.bukkit.craftbukkit.event.CraftEventFactory.callPlayerRiptideEvent(entityhuman, stack, f3, f4, f5); // CraftBukkit
+
+ // Purpur start
+ List<EquipmentSlot> list = EquipmentSlot.VALUES.stream().filter((enumitemslot) -> LivingEntity.canGlideUsing(entityhuman.getItemBySlot(enumitemslot), enumitemslot)).toList();
+ EquipmentSlot enumitemslot = net.minecraft.Util.getRandom(list, entityhuman.random);
+ ItemStack glideItem = entityhuman.getItemBySlot(enumitemslot);
+ if (glideItem.has(net.minecraft.core.component.DataComponents.GLIDER) && world.purpurConfig.elytraDamagePerTridentBoost > 0) {
+ glideItem.hurtAndBreak(world.purpurConfig.elytraDamagePerTridentBoost, entityhuman, enumitemslot);
+ }
+ // Purpur end
+
entityhuman.push((double) f3, (double) f4, (double) f5);
entityhuman.startAutoSpinAttack(20, 8.0F, stack);
if (entityhuman.onGround()) {
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 49efe798ae09c000c708001ca896620c468933d5..33aa446dc0cb834e027c45e8392cf007f62f629d 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -107,6 +107,17 @@ public class PurpurWorldConfig {
tridentLoyaltyVoidReturnHeight = getDouble("gameplay-mechanics.trident-loyalty-void-return-height", tridentLoyaltyVoidReturnHeight);
}
+ public int elytraDamagePerSecond = 1;
+ public double elytraDamageMultiplyBySpeed = 0;
+ public int elytraDamagePerFireworkBoost = 0;
+ public int elytraDamagePerTridentBoost = 0;
+ private void elytraSettings() {
+ elytraDamagePerSecond = getInt("gameplay-mechanics.elytra.damage-per-second", elytraDamagePerSecond);
+ elytraDamageMultiplyBySpeed = getDouble("gameplay-mechanics.elytra.damage-multiplied-by-speed", elytraDamageMultiplyBySpeed);
+ elytraDamagePerFireworkBoost = getInt("gameplay-mechanics.elytra.damage-per-boost.firework", elytraDamagePerFireworkBoost);
+ elytraDamagePerTridentBoost = getInt("gameplay-mechanics.elytra.damage-per-boost.trident", elytraDamagePerTridentBoost);
+ }
+
public double minecartMaxSpeed = 0.4D;
public boolean minecartPlaceAnywhere = false;
public boolean minecartControllable = false;

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Item entity immunities
diff --git a/src/main/java/net/minecraft/server/level/ServerEntity.java b/src/main/java/net/minecraft/server/level/ServerEntity.java diff --git a/src/main/java/net/minecraft/server/level/ServerEntity.java b/src/main/java/net/minecraft/server/level/ServerEntity.java
index 5a2f7f7cf79dcbb996574e18cad86ebb54bd718e..dfd09004063a8d8d93357633c8d23b6acff67b73 100644 index 5bbc7ceaafc163f12344e5d5d355ad2ff30ddca2..af54b621f04de40b1539494f30bb95f03656b590 100644
--- a/src/main/java/net/minecraft/server/level/ServerEntity.java --- a/src/main/java/net/minecraft/server/level/ServerEntity.java
+++ b/src/main/java/net/minecraft/server/level/ServerEntity.java +++ b/src/main/java/net/minecraft/server/level/ServerEntity.java
@@ -77,7 +77,7 @@ public class ServerEntity { @@ -81,7 +81,7 @@ public class ServerEntity {
@Nullable @Nullable
private List<SynchedEntityData.DataValue<?>> trackedDataValues; private List<SynchedEntityData.DataValue<?>> trackedDataValues;
// CraftBukkit start // CraftBukkit start
@@ -18,7 +18,7 @@ index 5a2f7f7cf79dcbb996574e18cad86ebb54bd718e..dfd09004063a8d8d93357633c8d23b6a
public ServerEntity(ServerLevel worldserver, Entity entity, int i, boolean flag, Consumer<Packet<?>> consumer, Set<ServerPlayerConnection> trackedPlayers) { public ServerEntity(ServerLevel worldserver, Entity entity, int i, boolean flag, Consumer<Packet<?>> consumer, Set<ServerPlayerConnection> trackedPlayers) {
this.trackedPlayers = trackedPlayers; this.trackedPlayers = trackedPlayers;
diff --git a/src/main/java/net/minecraft/world/entity/item/ItemEntity.java b/src/main/java/net/minecraft/world/entity/item/ItemEntity.java diff --git a/src/main/java/net/minecraft/world/entity/item/ItemEntity.java b/src/main/java/net/minecraft/world/entity/item/ItemEntity.java
index 4423973d4d9a2c3879d98d1d4c8b8c117c677ac5..ffc754aa6ed61f62a0c94e9117f3008d24c0c163 100644 index 5d8885bca55503bf7e1a2a4e1bb9b3bd86d55391..9e69c225a331bfce3455fc0c013a19e3c607e0c4 100644
--- a/src/main/java/net/minecraft/world/entity/item/ItemEntity.java --- a/src/main/java/net/minecraft/world/entity/item/ItemEntity.java
+++ b/src/main/java/net/minecraft/world/entity/item/ItemEntity.java +++ b/src/main/java/net/minecraft/world/entity/item/ItemEntity.java
@@ -64,6 +64,12 @@ public class ItemEntity extends Entity implements TraceableEntity { @@ -64,6 +64,12 @@ public class ItemEntity extends Entity implements TraceableEntity {
@@ -34,11 +34,11 @@ index 4423973d4d9a2c3879d98d1d4c8b8c117c677ac5..ffc754aa6ed61f62a0c94e9117f3008d
public ItemEntity(EntityType<? extends ItemEntity> type, Level world) { public ItemEntity(EntityType<? extends ItemEntity> type, Level world) {
super(type, world); super(type, world);
@@ -371,7 +377,16 @@ public class ItemEntity extends Entity implements TraceableEntity { @@ -384,7 +390,16 @@ public class ItemEntity extends Entity implements TraceableEntity {
@Override @Override
public boolean hurt(DamageSource source, float amount) { public final boolean hurtServer(ServerLevel world, DamageSource source, float amount) {
- if (this.isInvulnerableTo(source)) { - if (this.isInvulnerableToBase(source)) {
+ // Purpur start + // Purpur start
+ if ( + if (
+ (immuneToCactus && source.is(net.minecraft.world.damagesource.DamageTypes.CACTUS)) || + (immuneToCactus && source.is(net.minecraft.world.damagesource.DamageTypes.CACTUS)) ||
@@ -47,12 +47,12 @@ index 4423973d4d9a2c3879d98d1d4c8b8c117c677ac5..ffc754aa6ed61f62a0c94e9117f3008d
+ (immuneToExplosion && source.is(DamageTypeTags.IS_EXPLOSION)) + (immuneToExplosion && source.is(DamageTypeTags.IS_EXPLOSION))
+ ) { + ) {
+ return false; + return false;
+ } else if (this.isInvulnerableTo(source)) { + } else if (this.isInvulnerableToBase(source)) {
+ // Purpur end + // Purpur end
return false; return false;
} else if (!this.getItem().isEmpty() && this.getItem().is(Items.NETHER_STAR) && source.is(DamageTypeTags.IS_EXPLOSION)) { } else if (!world.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING) && source.getEntity() instanceof Mob) {
return false; return false;
@@ -579,6 +594,12 @@ public class ItemEntity extends Entity implements TraceableEntity { @@ -595,6 +610,12 @@ public class ItemEntity extends Entity implements TraceableEntity {
public void setItem(ItemStack stack) { public void setItem(ItemStack stack) {
this.getEntityData().set(ItemEntity.DATA_ITEM, stack); this.getEntityData().set(ItemEntity.DATA_ITEM, stack);
this.despawnRate = this.level().paperConfig().entities.spawning.altItemDespawnRate.enabled ? this.level().paperConfig().entities.spawning.altItemDespawnRate.items.getOrDefault(stack.getItem(), this.level().spigotConfig.itemDespawnRate) : this.level().spigotConfig.itemDespawnRate; // Paper - Alternative item-despawn-rate this.despawnRate = this.level().paperConfig().entities.spawning.altItemDespawnRate.enabled ? this.level().paperConfig().entities.spawning.altItemDespawnRate.items.getOrDefault(stack.getItem(), this.level().spigotConfig.itemDespawnRate) : this.level().spigotConfig.itemDespawnRate; // Paper - Alternative item-despawn-rate
@@ -117,10 +117,10 @@ index 30d62ee4d5cd2ddacb8783b5bbbf475d592b3e02..01e4395f1669d21c30465aa1366bd2f1
+ // Purpur end + // Purpur end
} }
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index ee159581718533688cdd271b8f205b61a5912019..652143c7f3af6bf429b2645c2112ecb61346a522 100644 index 33aa446dc0cb834e027c45e8392cf007f62f629d..75e969ed3887fe2c57ca080e4f4b56dc53e295cb 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -120,6 +120,49 @@ public class PurpurWorldConfig { @@ -118,6 +118,49 @@ public class PurpurWorldConfig {
elytraDamagePerTridentBoost = getInt("gameplay-mechanics.elytra.damage-per-boost.trident", elytraDamagePerTridentBoost); elytraDamagePerTridentBoost = getInt("gameplay-mechanics.elytra.damage-per-boost.trident", elytraDamagePerTridentBoost);
} }

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Add ping command
diff --git a/src/main/java/net/minecraft/commands/Commands.java b/src/main/java/net/minecraft/commands/Commands.java diff --git a/src/main/java/net/minecraft/commands/Commands.java b/src/main/java/net/minecraft/commands/Commands.java
index 7e291ffff86bdcdb8a0a15c211c3f84d6ae18e38..12effcb8e1b89595884798efba71849e4530b6b3 100644 index b7783480cc6a51a1f18789b7f3fc35faf5573f8d..abf33de1c20b031a684daedbc880a6f4eff869f4 100644
--- a/src/main/java/net/minecraft/commands/Commands.java --- a/src/main/java/net/minecraft/commands/Commands.java
+++ b/src/main/java/net/minecraft/commands/Commands.java +++ b/src/main/java/net/minecraft/commands/Commands.java
@@ -250,6 +250,7 @@ public class Commands { @@ -255,6 +255,7 @@ public class Commands {
StopCommand.register(this.dispatcher); StopCommand.register(this.dispatcher);
TransferCommand.register(this.dispatcher); TransferCommand.register(this.dispatcher);
WhitelistCommand.register(this.dispatcher); WhitelistCommand.register(this.dispatcher);
@@ -17,7 +17,7 @@ index 7e291ffff86bdcdb8a0a15c211c3f84d6ae18e38..12effcb8e1b89595884798efba71849e
if (environment.includeIntegrated) { if (environment.includeIntegrated) {
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
index 5fc5ae6f6e04e1fe4edfd22379bbfa52b5af0bc2..34e71243b66977b631e45df7b7f11f9b91474fe8 100644 index ed49a5131ca86b60a4d7f5c8ee61a7868dddc179..d0873724bf081e577fd42455f427a765e1db0f59 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
@@ -181,6 +181,7 @@ public class PurpurConfig { @@ -181,6 +181,7 @@ public class PurpurConfig {

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Add demo command
diff --git a/src/main/java/net/minecraft/commands/Commands.java b/src/main/java/net/minecraft/commands/Commands.java diff --git a/src/main/java/net/minecraft/commands/Commands.java b/src/main/java/net/minecraft/commands/Commands.java
index 12effcb8e1b89595884798efba71849e4530b6b3..200661f1295ac7ce2104b10bfea367a769e82f96 100644 index abf33de1c20b031a684daedbc880a6f4eff869f4..a52d20dcc9b3dfaecc3325bce3140dbd7bee8c4c 100644
--- a/src/main/java/net/minecraft/commands/Commands.java --- a/src/main/java/net/minecraft/commands/Commands.java
+++ b/src/main/java/net/minecraft/commands/Commands.java +++ b/src/main/java/net/minecraft/commands/Commands.java
@@ -250,6 +250,7 @@ public class Commands { @@ -255,6 +255,7 @@ public class Commands {
StopCommand.register(this.dispatcher); StopCommand.register(this.dispatcher);
TransferCommand.register(this.dispatcher); TransferCommand.register(this.dispatcher);
WhitelistCommand.register(this.dispatcher); WhitelistCommand.register(this.dispatcher);
@@ -17,7 +17,7 @@ index 12effcb8e1b89595884798efba71849e4530b6b3..200661f1295ac7ce2104b10bfea367a7
} }
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
index 34e71243b66977b631e45df7b7f11f9b91474fe8..8c4b83835f7e93225592de2328a01152bb400781 100644 index d0873724bf081e577fd42455f427a765e1db0f59..e65552be2b8348e2751ea088809c090f6b029e43 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
@@ -181,6 +181,7 @@ public class PurpurConfig { @@ -181,6 +181,7 @@ public class PurpurConfig {

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Add credits command
diff --git a/src/main/java/net/minecraft/commands/Commands.java b/src/main/java/net/minecraft/commands/Commands.java diff --git a/src/main/java/net/minecraft/commands/Commands.java b/src/main/java/net/minecraft/commands/Commands.java
index 200661f1295ac7ce2104b10bfea367a769e82f96..38a345901a743f5ddac18ba876d5245c5c11f111 100644 index a52d20dcc9b3dfaecc3325bce3140dbd7bee8c4c..24c2568db30f970aed1a4897cfbc7d07297047d3 100644
--- a/src/main/java/net/minecraft/commands/Commands.java --- a/src/main/java/net/minecraft/commands/Commands.java
+++ b/src/main/java/net/minecraft/commands/Commands.java +++ b/src/main/java/net/minecraft/commands/Commands.java
@@ -250,6 +250,7 @@ public class Commands { @@ -255,6 +255,7 @@ public class Commands {
StopCommand.register(this.dispatcher); StopCommand.register(this.dispatcher);
TransferCommand.register(this.dispatcher); TransferCommand.register(this.dispatcher);
WhitelistCommand.register(this.dispatcher); WhitelistCommand.register(this.dispatcher);
@@ -17,7 +17,7 @@ index 200661f1295ac7ce2104b10bfea367a769e82f96..38a345901a743f5ddac18ba876d5245c
org.purpurmc.purpur.command.PingCommand.register(this.dispatcher); // Purpur org.purpurmc.purpur.command.PingCommand.register(this.dispatcher); // Purpur
} }
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
index 8c4b83835f7e93225592de2328a01152bb400781..58812f062486ae34ad448bb1fe404c4fb05ad4ff 100644 index e65552be2b8348e2751ea088809c090f6b029e43..a3a699881e6b96d0fb507ef69e4dbc181fe5fbbc 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
@@ -181,6 +181,7 @@ public class PurpurConfig { @@ -181,6 +181,7 @@ public class PurpurConfig {

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Configurable jockey options
diff --git a/src/main/java/net/minecraft/world/entity/monster/Drowned.java b/src/main/java/net/minecraft/world/entity/monster/Drowned.java diff --git a/src/main/java/net/minecraft/world/entity/monster/Drowned.java b/src/main/java/net/minecraft/world/entity/monster/Drowned.java
index c3e0e95da8a57fc7bfba44a6748c5d96a9640374..b5a46c844e0f366828f8c287a598abb9aaeacf21 100644 index 0b572267d929ef362b6e65c55846ef12412951ba..7dc7f8734ffb3c5e50c763cb4e750d20c6e22281 100644
--- a/src/main/java/net/minecraft/world/entity/monster/Drowned.java --- a/src/main/java/net/minecraft/world/entity/monster/Drowned.java
+++ b/src/main/java/net/minecraft/world/entity/monster/Drowned.java +++ b/src/main/java/net/minecraft/world/entity/monster/Drowned.java
@@ -99,6 +99,21 @@ public class Drowned extends Zombie implements RangedAttackMob { @@ -100,6 +100,21 @@ public class Drowned extends Zombie implements RangedAttackMob {
this.getAttribute(Attributes.SPAWN_REINFORCEMENTS_CHANCE).setBaseValue(this.random.nextDouble() * this.level().purpurConfig.drownedSpawnReinforcements); this.getAttribute(Attributes.SPAWN_REINFORCEMENTS_CHANCE).setBaseValue(this.random.nextDouble() * this.level().purpurConfig.drownedSpawnReinforcements);
} }
@@ -29,12 +29,12 @@ index c3e0e95da8a57fc7bfba44a6748c5d96a9640374..b5a46c844e0f366828f8c287a598abb9
+ +
@Override @Override
protected void addBehaviourGoals() { protected void addBehaviourGoals() {
this.goalSelector.addGoal(1, new Drowned.DrownedGoToWaterGoal(this, 1.0D)); this.goalSelector.addGoal(1, new Drowned.DrownedGoToWaterGoal(this, 1.0));
diff --git a/src/main/java/net/minecraft/world/entity/monster/Husk.java b/src/main/java/net/minecraft/world/entity/monster/Husk.java diff --git a/src/main/java/net/minecraft/world/entity/monster/Husk.java b/src/main/java/net/minecraft/world/entity/monster/Husk.java
index 805bfee8b061445de5b5d8aeb13c792178e25f7b..6673c0bff3a4e3d11a09e9dc8aeb0c2418dc7f59 100644 index d9dbcd15522301344770963a6e3592afe393861a..ed4b1e2df6d7c7dfa45d96b9c08f2aa429ad32c5 100644
--- a/src/main/java/net/minecraft/world/entity/monster/Husk.java --- a/src/main/java/net/minecraft/world/entity/monster/Husk.java
+++ b/src/main/java/net/minecraft/world/entity/monster/Husk.java +++ b/src/main/java/net/minecraft/world/entity/monster/Husk.java
@@ -49,6 +49,21 @@ public class Husk extends Zombie { @@ -50,6 +50,21 @@ public class Husk extends Zombie {
this.getAttribute(net.minecraft.world.entity.ai.attributes.Attributes.SPAWN_REINFORCEMENTS_CHANCE).setBaseValue(this.random.nextDouble() * this.level().purpurConfig.huskSpawnReinforcements); this.getAttribute(net.minecraft.world.entity.ai.attributes.Attributes.SPAWN_REINFORCEMENTS_CHANCE).setBaseValue(this.random.nextDouble() * this.level().purpurConfig.huskSpawnReinforcements);
} }
@@ -53,14 +53,14 @@ index 805bfee8b061445de5b5d8aeb13c792178e25f7b..6673c0bff3a4e3d11a09e9dc8aeb0c24
+ return level().purpurConfig.huskJockeyTryExistingChickens; + return level().purpurConfig.huskJockeyTryExistingChickens;
+ } + }
+ +
public static boolean checkHuskSpawnRules(EntityType<Husk> type, ServerLevelAccessor world, MobSpawnType spawnReason, BlockPos pos, RandomSource random) { public static boolean checkHuskSpawnRules(EntityType<Husk> type, ServerLevelAccessor world, EntitySpawnReason spawnReason, BlockPos pos, RandomSource random) {
return checkMonsterSpawnRules(type, world, spawnReason, pos, random) && (MobSpawnType.isSpawner(spawnReason) || world.canSeeSky(pos)); return checkMonsterSpawnRules(type, world, spawnReason, pos, random) && (EntitySpawnReason.isSpawner(spawnReason) || world.canSeeSky(pos));
} }
diff --git a/src/main/java/net/minecraft/world/entity/monster/Zombie.java b/src/main/java/net/minecraft/world/entity/monster/Zombie.java diff --git a/src/main/java/net/minecraft/world/entity/monster/Zombie.java b/src/main/java/net/minecraft/world/entity/monster/Zombie.java
index 6eda16520bc7fdd577ac7b223e3701858eaa48c5..bd24217d0c696a506c916e062b3cb5bc751981f8 100644 index 978f610d31312f36093c0111ce623d1157fa943d..cb5cf34781de4e87074a70a447fd463280147bdc 100644
--- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java --- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java
+++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java +++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java
@@ -131,6 +131,18 @@ public class Zombie extends Monster { @@ -133,6 +133,18 @@ public class Zombie extends Monster {
this.getAttribute(Attributes.SCALE).setBaseValue(this.level().purpurConfig.zombieScale); this.getAttribute(Attributes.SCALE).setBaseValue(this.level().purpurConfig.zombieScale);
} }
@@ -79,7 +79,7 @@ index 6eda16520bc7fdd577ac7b223e3701858eaa48c5..bd24217d0c696a506c916e062b3cb5bc
@Override @Override
protected void registerGoals() { protected void registerGoals() {
this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur
@@ -542,19 +554,20 @@ public class Zombie extends Monster { @@ -553,19 +565,20 @@ public class Zombie extends Monster {
} }
if (object instanceof Zombie.ZombieGroupData entityzombie_groupdatazombie) { if (object instanceof Zombie.ZombieGroupData entityzombie_groupdatazombie) {
@@ -103,10 +103,10 @@ index 6eda16520bc7fdd577ac7b223e3701858eaa48c5..bd24217d0c696a506c916e062b3cb5bc
- } - }
- } else if ((double) randomsource.nextFloat() < 0.05D) { - } else if ((double) randomsource.nextFloat() < 0.05D) {
+ } else { // Purpur + } else { // Purpur
Chicken entitychicken1 = (Chicken) EntityType.CHICKEN.create(this.level()); Chicken entitychicken1 = (Chicken) EntityType.CHICKEN.create(this.level(), EntitySpawnReason.JOCKEY);
if (entitychicken1 != null) { if (entitychicken1 != null) {
@@ -564,6 +577,7 @@ public class Zombie extends Monster { @@ -575,6 +588,7 @@ public class Zombie extends Monster {
this.startRiding(entitychicken1); this.startRiding(entitychicken1);
world.addFreshEntity(entitychicken1, CreatureSpawnEvent.SpawnReason.MOUNT); // CraftBukkit world.addFreshEntity(entitychicken1, CreatureSpawnEvent.SpawnReason.MOUNT); // CraftBukkit
} }
@@ -115,10 +115,10 @@ index 6eda16520bc7fdd577ac7b223e3701858eaa48c5..bd24217d0c696a506c916e062b3cb5bc
} }
} }
diff --git a/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java b/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java diff --git a/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java b/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java
index 199770256cf7f838228b5263ec9af8c6b18f30fb..cdf6753b6bb2bbb4f3ab21792bd3153988b26b75 100644 index a2447844a6a6e08d41bb5152d01da91c852665cf..eb6daba7d44542739f1c537cbeef8f87c6db61bf 100644
--- a/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java --- a/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java
+++ b/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java +++ b/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java
@@ -110,6 +110,21 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder { @@ -112,6 +112,21 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder {
this.getAttribute(net.minecraft.world.entity.ai.attributes.Attributes.SPAWN_REINFORCEMENTS_CHANCE).setBaseValue(this.random.nextDouble() * this.level().purpurConfig.zombieVillagerSpawnReinforcements); this.getAttribute(net.minecraft.world.entity.ai.attributes.Attributes.SPAWN_REINFORCEMENTS_CHANCE).setBaseValue(this.random.nextDouble() * this.level().purpurConfig.zombieVillagerSpawnReinforcements);
} }
@@ -141,7 +141,7 @@ index 199770256cf7f838228b5263ec9af8c6b18f30fb..cdf6753b6bb2bbb4f3ab21792bd31539
protected void defineSynchedData(SynchedEntityData.Builder builder) { protected void defineSynchedData(SynchedEntityData.Builder builder) {
super.defineSynchedData(builder); super.defineSynchedData(builder);
diff --git a/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java b/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java diff --git a/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java b/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java
index 42e3e992cc725627e8b03fa2c057c59bd52556b4..53b8f46bda60289ec310cb45513a2b729fcbea76 100644 index ba1ce7e0ed888bd47312e9d7da5426f5c1015d07..650f9e1ca3a5ddec5123133c9604f33140e948a8 100644
--- a/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java --- a/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java
+++ b/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java
@@ -86,6 +86,21 @@ public class ZombifiedPiglin extends Zombie implements NeutralMob { @@ -86,6 +86,21 @@ public class ZombifiedPiglin extends Zombie implements NeutralMob {
@@ -167,10 +167,10 @@ index 42e3e992cc725627e8b03fa2c057c59bd52556b4..53b8f46bda60289ec310cb45513a2b72
public void setPersistentAngerTarget(@Nullable UUID angryAt) { public void setPersistentAngerTarget(@Nullable UUID angryAt) {
this.persistentAngerTarget = angryAt; this.persistentAngerTarget = angryAt;
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 652143c7f3af6bf429b2645c2112ecb61346a522..0e8ee1511b6b16320e44311114ef7a7a8b82cc71 100644 index 75e969ed3887fe2c57ca080e4f4b56dc53e295cb..6c5729b86a0540aa1ced33640170b4145efa08ba 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -636,6 +636,9 @@ public class PurpurWorldConfig { @@ -634,6 +634,9 @@ public class PurpurWorldConfig {
public double drownedMaxHealth = 20.0D; public double drownedMaxHealth = 20.0D;
public double drownedScale = 1.0D; public double drownedScale = 1.0D;
public double drownedSpawnReinforcements = 0.1D; public double drownedSpawnReinforcements = 0.1D;
@@ -180,7 +180,7 @@ index 652143c7f3af6bf429b2645c2112ecb61346a522..0e8ee1511b6b16320e44311114ef7a7a
private void drownedSettings() { private void drownedSettings() {
drownedRidable = getBoolean("mobs.drowned.ridable", drownedRidable); drownedRidable = getBoolean("mobs.drowned.ridable", drownedRidable);
drownedRidableInWater = getBoolean("mobs.drowned.ridable-in-water", drownedRidableInWater); drownedRidableInWater = getBoolean("mobs.drowned.ridable-in-water", drownedRidableInWater);
@@ -648,6 +651,9 @@ public class PurpurWorldConfig { @@ -646,6 +649,9 @@ public class PurpurWorldConfig {
drownedMaxHealth = getDouble("mobs.drowned.attributes.max_health", drownedMaxHealth); drownedMaxHealth = getDouble("mobs.drowned.attributes.max_health", drownedMaxHealth);
drownedScale = Mth.clamp(getDouble("mobs.drowned.attributes.scale", drownedScale), 0.0625D, 16.0D); drownedScale = Mth.clamp(getDouble("mobs.drowned.attributes.scale", drownedScale), 0.0625D, 16.0D);
drownedSpawnReinforcements = getDouble("mobs.drowned.attributes.spawn_reinforcements", drownedSpawnReinforcements); drownedSpawnReinforcements = getDouble("mobs.drowned.attributes.spawn_reinforcements", drownedSpawnReinforcements);
@@ -190,7 +190,7 @@ index 652143c7f3af6bf429b2645c2112ecb61346a522..0e8ee1511b6b16320e44311114ef7a7a
} }
public boolean elderGuardianRidable = false; public boolean elderGuardianRidable = false;
@@ -919,6 +925,9 @@ public class PurpurWorldConfig { @@ -917,6 +923,9 @@ public class PurpurWorldConfig {
public double huskMaxHealth = 20.0D; public double huskMaxHealth = 20.0D;
public double huskScale = 1.0D; public double huskScale = 1.0D;
public double huskSpawnReinforcements = 0.1D; public double huskSpawnReinforcements = 0.1D;
@@ -200,7 +200,7 @@ index 652143c7f3af6bf429b2645c2112ecb61346a522..0e8ee1511b6b16320e44311114ef7a7a
private void huskSettings() { private void huskSettings() {
huskRidable = getBoolean("mobs.husk.ridable", huskRidable); huskRidable = getBoolean("mobs.husk.ridable", huskRidable);
huskRidableInWater = getBoolean("mobs.husk.ridable-in-water", huskRidableInWater); huskRidableInWater = getBoolean("mobs.husk.ridable-in-water", huskRidableInWater);
@@ -931,6 +940,9 @@ public class PurpurWorldConfig { @@ -929,6 +938,9 @@ public class PurpurWorldConfig {
huskMaxHealth = getDouble("mobs.husk.attributes.max_health", huskMaxHealth); huskMaxHealth = getDouble("mobs.husk.attributes.max_health", huskMaxHealth);
huskScale = Mth.clamp(getDouble("mobs.husk.attributes.scale", huskScale), 0.0625D, 16.0D); huskScale = Mth.clamp(getDouble("mobs.husk.attributes.scale", huskScale), 0.0625D, 16.0D);
huskSpawnReinforcements = getDouble("mobs.husk.attributes.spawn_reinforcements", huskSpawnReinforcements); huskSpawnReinforcements = getDouble("mobs.husk.attributes.spawn_reinforcements", huskSpawnReinforcements);
@@ -210,7 +210,7 @@ index 652143c7f3af6bf429b2645c2112ecb61346a522..0e8ee1511b6b16320e44311114ef7a7a
} }
public boolean illusionerRidable = false; public boolean illusionerRidable = false;
@@ -1824,6 +1836,9 @@ public class PurpurWorldConfig { @@ -1822,6 +1834,9 @@ public class PurpurWorldConfig {
public double zombieMaxHealth = 20.0D; public double zombieMaxHealth = 20.0D;
public double zombieScale = 1.0D; public double zombieScale = 1.0D;
public double zombieSpawnReinforcements = 0.1D; public double zombieSpawnReinforcements = 0.1D;
@@ -220,7 +220,7 @@ index 652143c7f3af6bf429b2645c2112ecb61346a522..0e8ee1511b6b16320e44311114ef7a7a
private void zombieSettings() { private void zombieSettings() {
zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable);
zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater);
@@ -1836,6 +1851,9 @@ public class PurpurWorldConfig { @@ -1834,6 +1849,9 @@ public class PurpurWorldConfig {
zombieMaxHealth = getDouble("mobs.zombie.attributes.max_health", zombieMaxHealth); zombieMaxHealth = getDouble("mobs.zombie.attributes.max_health", zombieMaxHealth);
zombieScale = Mth.clamp(getDouble("mobs.zombie.attributes.scale", zombieScale), 0.0625D, 16.0D); zombieScale = Mth.clamp(getDouble("mobs.zombie.attributes.scale", zombieScale), 0.0625D, 16.0D);
zombieSpawnReinforcements = getDouble("mobs.zombie.attributes.spawn_reinforcements", zombieSpawnReinforcements); zombieSpawnReinforcements = getDouble("mobs.zombie.attributes.spawn_reinforcements", zombieSpawnReinforcements);
@@ -230,7 +230,7 @@ index 652143c7f3af6bf429b2645c2112ecb61346a522..0e8ee1511b6b16320e44311114ef7a7a
} }
public boolean zombieHorseRidable = false; public boolean zombieHorseRidable = false;
@@ -1873,6 +1891,9 @@ public class PurpurWorldConfig { @@ -1871,6 +1889,9 @@ public class PurpurWorldConfig {
public double zombieVillagerMaxHealth = 20.0D; public double zombieVillagerMaxHealth = 20.0D;
public double zombieVillagerScale = 1.0D; public double zombieVillagerScale = 1.0D;
public double zombieVillagerSpawnReinforcements = 0.1D; public double zombieVillagerSpawnReinforcements = 0.1D;
@@ -240,7 +240,7 @@ index 652143c7f3af6bf429b2645c2112ecb61346a522..0e8ee1511b6b16320e44311114ef7a7a
private void zombieVillagerSettings() { private void zombieVillagerSettings() {
zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable); zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable);
zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater); zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater);
@@ -1885,6 +1906,9 @@ public class PurpurWorldConfig { @@ -1883,6 +1904,9 @@ public class PurpurWorldConfig {
zombieVillagerMaxHealth = getDouble("mobs.zombie_villager.attributes.max_health", zombieVillagerMaxHealth); zombieVillagerMaxHealth = getDouble("mobs.zombie_villager.attributes.max_health", zombieVillagerMaxHealth);
zombieVillagerScale = Mth.clamp(getDouble("mobs.zombie_villager.attributes.scale", zombieVillagerScale), 0.0625D, 16.0D); zombieVillagerScale = Mth.clamp(getDouble("mobs.zombie_villager.attributes.scale", zombieVillagerScale), 0.0625D, 16.0D);
zombieVillagerSpawnReinforcements = getDouble("mobs.zombie_villager.attributes.spawn_reinforcements", zombieVillagerSpawnReinforcements); zombieVillagerSpawnReinforcements = getDouble("mobs.zombie_villager.attributes.spawn_reinforcements", zombieVillagerSpawnReinforcements);
@@ -250,7 +250,7 @@ index 652143c7f3af6bf429b2645c2112ecb61346a522..0e8ee1511b6b16320e44311114ef7a7a
} }
public boolean zombifiedPiglinRidable = false; public boolean zombifiedPiglinRidable = false;
@@ -1893,6 +1917,9 @@ public class PurpurWorldConfig { @@ -1891,6 +1915,9 @@ public class PurpurWorldConfig {
public double zombifiedPiglinMaxHealth = 20.0D; public double zombifiedPiglinMaxHealth = 20.0D;
public double zombifiedPiglinScale = 1.0D; public double zombifiedPiglinScale = 1.0D;
public double zombifiedPiglinSpawnReinforcements = 0.0D; public double zombifiedPiglinSpawnReinforcements = 0.0D;
@@ -260,7 +260,7 @@ index 652143c7f3af6bf429b2645c2112ecb61346a522..0e8ee1511b6b16320e44311114ef7a7a
private void zombifiedPiglinSettings() { private void zombifiedPiglinSettings() {
zombifiedPiglinRidable = getBoolean("mobs.zombified_piglin.ridable", zombifiedPiglinRidable); zombifiedPiglinRidable = getBoolean("mobs.zombified_piglin.ridable", zombifiedPiglinRidable);
zombifiedPiglinRidableInWater = getBoolean("mobs.zombified_piglin.ridable-in-water", zombifiedPiglinRidableInWater); zombifiedPiglinRidableInWater = getBoolean("mobs.zombified_piglin.ridable-in-water", zombifiedPiglinRidableInWater);
@@ -1905,5 +1932,8 @@ public class PurpurWorldConfig { @@ -1903,5 +1930,8 @@ public class PurpurWorldConfig {
zombifiedPiglinMaxHealth = getDouble("mobs.zombified_piglin.attributes.max_health", zombifiedPiglinMaxHealth); zombifiedPiglinMaxHealth = getDouble("mobs.zombified_piglin.attributes.max_health", zombifiedPiglinMaxHealth);
zombifiedPiglinScale = Mth.clamp(getDouble("mobs.zombified_piglin.attributes.scale", zombifiedPiglinScale), 0.0625D, 16.0D); zombifiedPiglinScale = Mth.clamp(getDouble("mobs.zombified_piglin.attributes.scale", zombifiedPiglinScale), 0.0625D, 16.0D);
zombifiedPiglinSpawnReinforcements = getDouble("mobs.zombified_piglin.attributes.spawn_reinforcements", zombifiedPiglinSpawnReinforcements); zombifiedPiglinSpawnReinforcements = getDouble("mobs.zombified_piglin.attributes.spawn_reinforcements", zombifiedPiglinSpawnReinforcements);

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Phantoms attracted to crystals and crystals shoot phantoms
diff --git a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java diff --git a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java
index a33d89fe9ca9e343edab8bb1cc88c54130ddb4a7..72122333cf0247e4a8511ac633487f170b89586c 100644 index 7cb3d69a69e0e3ef4b7f9f9c8b1eb67edb5d116d..4c9709e680b585316978b6a410600a8a3b4b6e3e 100644
--- a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java --- a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java
+++ b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java +++ b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java
@@ -31,6 +31,12 @@ public class EndCrystal extends Entity { @@ -31,6 +31,12 @@ public class EndCrystal extends Entity {
@@ -72,10 +72,10 @@ index a33d89fe9ca9e343edab8bb1cc88c54130ddb4a7..72122333cf0247e4a8511ac633487f17
@Override @Override
diff --git a/src/main/java/net/minecraft/world/entity/monster/Phantom.java b/src/main/java/net/minecraft/world/entity/monster/Phantom.java diff --git a/src/main/java/net/minecraft/world/entity/monster/Phantom.java b/src/main/java/net/minecraft/world/entity/monster/Phantom.java
index 4dea7aed072caf383986e09ead8ee790b35d9706..7a80cb45ff5d96380755d37ff43ddeac2cd451e1 100644 index e44d6d02ceaf1f133705efcd58b94e36014389ec..5d62be4ae4561262820d011f5e7318411d749bbb 100644
--- a/src/main/java/net/minecraft/world/entity/monster/Phantom.java --- a/src/main/java/net/minecraft/world/entity/monster/Phantom.java
+++ b/src/main/java/net/minecraft/world/entity/monster/Phantom.java +++ b/src/main/java/net/minecraft/world/entity/monster/Phantom.java
@@ -48,6 +48,7 @@ public class Phantom extends FlyingMob implements Enemy { @@ -49,6 +49,7 @@ public class Phantom extends FlyingMob implements Enemy {
Vec3 moveTargetPoint; Vec3 moveTargetPoint;
public BlockPos anchorPoint; public BlockPos anchorPoint;
Phantom.AttackPhase attackPhase; Phantom.AttackPhase attackPhase;
@@ -83,7 +83,7 @@ index 4dea7aed072caf383986e09ead8ee790b35d9706..7a80cb45ff5d96380755d37ff43ddeac
public Phantom(EntityType<? extends Phantom> type, Level world) { public Phantom(EntityType<? extends Phantom> type, Level world) {
super(type, world); super(type, world);
@@ -115,6 +116,23 @@ public class Phantom extends FlyingMob implements Enemy { @@ -116,6 +117,23 @@ public class Phantom extends FlyingMob implements Enemy {
level().addFreshEntity(flames); level().addFreshEntity(flames);
return true; return true;
} }
@@ -107,7 +107,7 @@ index 4dea7aed072caf383986e09ead8ee790b35d9706..7a80cb45ff5d96380755d37ff43ddeac
// Purpur end // Purpur end
@Override @Override
@@ -129,11 +147,17 @@ public class Phantom extends FlyingMob implements Enemy { @@ -130,11 +148,17 @@ public class Phantom extends FlyingMob implements Enemy {
@Override @Override
protected void registerGoals() { protected void registerGoals() {
@@ -256,10 +256,10 @@ index 4dea7aed072caf383986e09ead8ee790b35d9706..7a80cb45ff5d96380755d37ff43ddeac
private float speed = 0.1F; private float speed = 0.1F;
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 0e8ee1511b6b16320e44311114ef7a7a8b82cc71..25db0b39456aed561f1fe12b08db8ff3e9244879 100644 index 6c5729b86a0540aa1ced33640170b4145efa08ba..65c8b2e76677b92fee94e1149a9ce3803b3f1737 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -1150,6 +1150,9 @@ public class PurpurWorldConfig { @@ -1148,6 +1148,9 @@ public class PurpurWorldConfig {
public String phantomAttackDamage = "6 + size"; public String phantomAttackDamage = "6 + size";
public Map<Integer, Double> phantomMaxHealthCache = new HashMap<>(); public Map<Integer, Double> phantomMaxHealthCache = new HashMap<>();
public Map<Integer, Double> phantomAttackDamageCache = new HashMap<>(); public Map<Integer, Double> phantomAttackDamageCache = new HashMap<>();
@@ -269,7 +269,7 @@ index 0e8ee1511b6b16320e44311114ef7a7a8b82cc71..25db0b39456aed561f1fe12b08db8ff3
private void phantomSettings() { private void phantomSettings() {
phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable);
phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater);
@@ -1171,6 +1174,9 @@ public class PurpurWorldConfig { @@ -1169,6 +1172,9 @@ public class PurpurWorldConfig {
phantomAttackDamage = getString("mobs.phantom.attributes.attack_damage", phantomAttackDamage); phantomAttackDamage = getString("mobs.phantom.attributes.attack_damage", phantomAttackDamage);
phantomMaxHealthCache.clear(); phantomMaxHealthCache.clear();
phantomAttackDamageCache.clear(); phantomAttackDamageCache.clear();

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Add phantom spawning options
diff --git a/src/main/java/net/minecraft/world/level/levelgen/PhantomSpawner.java b/src/main/java/net/minecraft/world/level/levelgen/PhantomSpawner.java 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 1b1b475ca27e799e251d6f8a8c9fe1a4fd8bae83..04f67f7b43d2f461c776c76614dc3e5f060aea63 100644 index 021221da5d0315f6e371380a705ac6b3f6ac18d3..27eb9a365006884c85603dc6d9dd8eee009c98b3 100644
--- a/src/main/java/net/minecraft/world/level/levelgen/PhantomSpawner.java --- a/src/main/java/net/minecraft/world/level/levelgen/PhantomSpawner.java
+++ b/src/main/java/net/minecraft/world/level/levelgen/PhantomSpawner.java +++ b/src/main/java/net/minecraft/world/level/levelgen/PhantomSpawner.java
@@ -48,7 +48,7 @@ public class PhantomSpawner implements CustomSpawner { @@ -48,7 +48,7 @@ public class PhantomSpawner implements CustomSpawner {
@@ -40,10 +40,10 @@ index 1b1b475ca27e799e251d6f8a8c9fe1a4fd8bae83..04f67f7b43d2f461c776c76614dc3e5f
for (int l = 0; l < k; ++l) { for (int l = 0; l < k; ++l) {
// Paper start - PhantomPreSpawnEvent // Paper start - PhantomPreSpawnEvent
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 25db0b39456aed561f1fe12b08db8ff3e9244879..0117359271289b9ebe28b028ba0def78a7c024d2 100644 index 65c8b2e76677b92fee94e1149a9ce3803b3f1737..2858714275c2e3e9c0defaf264eeaade89e7cdaa 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -1153,6 +1153,12 @@ public class PurpurWorldConfig { @@ -1151,6 +1151,12 @@ public class PurpurWorldConfig {
public double phantomAttackedByCrystalRadius = 0.0D; public double phantomAttackedByCrystalRadius = 0.0D;
public float phantomAttackedByCrystalDamage = 1.0F; public float phantomAttackedByCrystalDamage = 1.0F;
public double phantomOrbitCrystalRadius = 0.0D; public double phantomOrbitCrystalRadius = 0.0D;
@@ -56,7 +56,7 @@ index 25db0b39456aed561f1fe12b08db8ff3e9244879..0117359271289b9ebe28b028ba0def78
private void phantomSettings() { private void phantomSettings() {
phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable);
phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater);
@@ -1177,6 +1183,12 @@ public class PurpurWorldConfig { @@ -1175,6 +1181,12 @@ public class PurpurWorldConfig {
phantomAttackedByCrystalRadius = getDouble("mobs.phantom.attacked-by-crystal-range", phantomAttackedByCrystalRadius); phantomAttackedByCrystalRadius = getDouble("mobs.phantom.attacked-by-crystal-range", phantomAttackedByCrystalRadius);
phantomAttackedByCrystalDamage = (float) getDouble("mobs.phantom.attacked-by-crystal-damage", phantomAttackedByCrystalDamage); phantomAttackedByCrystalDamage = (float) getDouble("mobs.phantom.attacked-by-crystal-damage", phantomAttackedByCrystalDamage);
phantomOrbitCrystalRadius = getDouble("mobs.phantom.orbit-crystal-radius", phantomOrbitCrystalRadius); phantomOrbitCrystalRadius = getDouble("mobs.phantom.orbit-crystal-radius", phantomOrbitCrystalRadius);

View File

@@ -5,19 +5,19 @@ Subject: [PATCH] Implement bed explosion options
diff --git a/src/main/java/net/minecraft/world/level/block/BedBlock.java b/src/main/java/net/minecraft/world/level/block/BedBlock.java diff --git a/src/main/java/net/minecraft/world/level/block/BedBlock.java b/src/main/java/net/minecraft/world/level/block/BedBlock.java
index 85d598c3354ee62f0fd1b26e485e0084967c0380..b59dd6b512021c335f3c21999958e2ea081daf69 100644 index c02c4834ace843633b77fb43eeadd3ddc7b1f743..3b19395f2ddee654a77df5738a1942a08c20c179 100644
--- a/src/main/java/net/minecraft/world/level/block/BedBlock.java --- a/src/main/java/net/minecraft/world/level/block/BedBlock.java
+++ b/src/main/java/net/minecraft/world/level/block/BedBlock.java +++ b/src/main/java/net/minecraft/world/level/block/BedBlock.java
@@ -104,7 +104,7 @@ public class BedBlock extends HorizontalDirectionalBlock implements EntityBlock @@ -106,7 +106,7 @@ public class BedBlock extends HorizontalDirectionalBlock implements EntityBlock
Vec3 vec3d = pos.getCenter(); Vec3 vec3d = pos.getCenter();
- world.explode((Entity) null, world.damageSources().badRespawnPointExplosion(vec3d), (ExplosionDamageCalculator) null, vec3d, 5.0F, true, Level.ExplosionInteraction.BLOCK); - world.explode((Entity) null, world.damageSources().badRespawnPointExplosion(vec3d), (ExplosionDamageCalculator) null, vec3d, 5.0F, true, Level.ExplosionInteraction.BLOCK);
+ if (world.purpurConfig.bedExplode) world.explode((Entity) null, world.damageSources().badRespawnPointExplosion(vec3d), (ExplosionDamageCalculator) null, vec3d, (float) world.purpurConfig.bedExplosionPower, world.purpurConfig.bedExplosionFire, world.purpurConfig.bedExplosionEffect); // Purpur + if (world.purpurConfig.bedExplode) world.explode((Entity) null, world.damageSources().badRespawnPointExplosion(vec3d), (ExplosionDamageCalculator) null, vec3d, (float) world.purpurConfig.bedExplosionPower, world.purpurConfig.bedExplosionFire, world.purpurConfig.bedExplosionEffect); // Purpur
return InteractionResult.SUCCESS; return InteractionResult.SUCCESS_SERVER;
} else if ((Boolean) state.getValue(BedBlock.OCCUPIED)) { } else if ((Boolean) state.getValue(BedBlock.OCCUPIED)) {
if (!BedBlock.canSetSpawn(world)) return this.explodeBed(state, world, pos); // Paper - check explode first if (!BedBlock.canSetSpawn(world)) return this.explodeBed(state, world, pos); // Paper - check explode first
@@ -157,7 +157,7 @@ public class BedBlock extends HorizontalDirectionalBlock implements EntityBlock @@ -159,7 +159,7 @@ public class BedBlock extends HorizontalDirectionalBlock implements EntityBlock
Vec3 vec3d = blockposition.getCenter(); Vec3 vec3d = blockposition.getCenter();
@@ -27,10 +27,10 @@ index 85d598c3354ee62f0fd1b26e485e0084967c0380..b59dd6b512021c335f3c21999958e2ea
} }
} }
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 0117359271289b9ebe28b028ba0def78a7c024d2..cea3e28f38e5ab585351893f62142db6dc9f4949 100644 index 2858714275c2e3e9c0defaf264eeaade89e7cdaa..60bc2a992d407ad99705af0e34ec3c2182e1cc23 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -279,6 +279,27 @@ public class PurpurWorldConfig { @@ -277,6 +277,27 @@ public class PurpurWorldConfig {
}); });
} }

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Implement respawn anchor explosion options
diff --git a/src/main/java/net/minecraft/world/level/block/RespawnAnchorBlock.java b/src/main/java/net/minecraft/world/level/block/RespawnAnchorBlock.java diff --git a/src/main/java/net/minecraft/world/level/block/RespawnAnchorBlock.java b/src/main/java/net/minecraft/world/level/block/RespawnAnchorBlock.java
index 94d067e9eeee73183de25165d8c97043fe256103..00b6941951e1af9993f8f6da5425d31b8eaa85e4 100644 index 9117c035d5a6ff114b028fad3380ceb1fc2b9691..2c5e394156dbf76107adb4913a094dfd4a598dd7 100644
--- a/src/main/java/net/minecraft/world/level/block/RespawnAnchorBlock.java --- a/src/main/java/net/minecraft/world/level/block/RespawnAnchorBlock.java
+++ b/src/main/java/net/minecraft/world/level/block/RespawnAnchorBlock.java +++ b/src/main/java/net/minecraft/world/level/block/RespawnAnchorBlock.java
@@ -150,7 +150,7 @@ public class RespawnAnchorBlock extends Block { @@ -149,7 +149,7 @@ public class RespawnAnchorBlock extends Block {
}; };
Vec3 vec3d = explodedPos.getCenter(); Vec3 vec3d = explodedPos.getCenter();
@@ -18,10 +18,10 @@ index 94d067e9eeee73183de25165d8c97043fe256103..00b6941951e1af9993f8f6da5425d31b
public static boolean canSetSpawn(Level world) { public static boolean canSetSpawn(Level world) {
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index cea3e28f38e5ab585351893f62142db6dc9f4949..7b0e04f7132f5b8a3027ef7120f2fb1a6145fefc 100644 index 60bc2a992d407ad99705af0e34ec3c2182e1cc23..a168eb5c1f08ad4def8421e298512c532ec06988 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -319,6 +319,27 @@ public class PurpurWorldConfig { @@ -317,6 +317,27 @@ public class PurpurWorldConfig {
lavaSpeedNotNether = getInt("blocks.lava.speed.not-nether", lavaSpeedNotNether); lavaSpeedNotNether = getInt("blocks.lava.speed.not-nether", lavaSpeedNotNether);
} }

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Add allow water in end world option
diff --git a/src/main/java/net/minecraft/world/item/BucketItem.java b/src/main/java/net/minecraft/world/item/BucketItem.java diff --git a/src/main/java/net/minecraft/world/item/BucketItem.java b/src/main/java/net/minecraft/world/item/BucketItem.java
index 321188173918d0d60858a258400dfd682ccdb21c..af47074f3a61a8518697d7851e43d5436fec5d57 100644 index 3bddfb6f7412ab86e0c090d0cbc6cf254b3f891c..6aa8ee091d3a7d2826d08ab9a03f970ef71a81ea 100644
--- a/src/main/java/net/minecraft/world/item/BucketItem.java --- a/src/main/java/net/minecraft/world/item/BucketItem.java
+++ b/src/main/java/net/minecraft/world/item/BucketItem.java +++ b/src/main/java/net/minecraft/world/item/BucketItem.java
@@ -196,7 +196,7 @@ public class BucketItem extends Item implements DispensibleContainerItem { @@ -196,7 +196,7 @@ public class BucketItem extends Item implements DispensibleContainerItem {
@@ -27,13 +27,14 @@ index 321188173918d0d60858a258400dfd682ccdb21c..af47074f3a61a8518697d7851e43d543
return true; return true;
diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java
index 97f83c9737726be0c3b6dc847b56970e81cc6b6f..df881431c8f32e2c12224b44084ca4d71edf9ab3 100644 index caa01dd419da2e18ad027e5eab828d8bcaca0279..82025f6dd73366a259418c2039638a6dcc6d4fc1 100644
--- a/src/main/java/net/minecraft/world/level/Level.java --- a/src/main/java/net/minecraft/world/level/Level.java
+++ b/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java
@@ -2044,4 +2044,13 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl @@ -2039,4 +2039,14 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl
return null; return this.id;
}
} }
// Paper end - optimize redstone (Alternate Current) +
+ // Purpur start + // Purpur start
+ public boolean isNether() { + public boolean isNether() {
+ return getWorld().getEnvironment() == org.bukkit.World.Environment.NETHER; + return getWorld().getEnvironment() == org.bukkit.World.Environment.NETHER;
@@ -45,10 +46,10 @@ index 97f83c9737726be0c3b6dc847b56970e81cc6b6f..df881431c8f32e2c12224b44084ca4d7
+ // Purpur end + // Purpur end
} }
diff --git a/src/main/java/net/minecraft/world/level/block/IceBlock.java b/src/main/java/net/minecraft/world/level/block/IceBlock.java diff --git a/src/main/java/net/minecraft/world/level/block/IceBlock.java b/src/main/java/net/minecraft/world/level/block/IceBlock.java
index ac775afb265430ac202cfa3900a036d11a308b1e..87ce003dfeca975d8e6af26fd341f3abe66dc185 100644 index a94762e65853ccad38cf90b0049ca256106c0c9f..38633e168a9b36e37feea00964d53e657926639e 100644
--- a/src/main/java/net/minecraft/world/level/block/IceBlock.java --- a/src/main/java/net/minecraft/world/level/block/IceBlock.java
+++ b/src/main/java/net/minecraft/world/level/block/IceBlock.java +++ b/src/main/java/net/minecraft/world/level/block/IceBlock.java
@@ -41,7 +41,7 @@ public class IceBlock extends HalfTransparentBlock { @@ -42,7 +42,7 @@ public class IceBlock extends HalfTransparentBlock {
public void afterDestroy(Level world, BlockPos pos, ItemStack tool) { public void afterDestroy(Level world, BlockPos pos, ItemStack tool) {
// Paper end - Improve Block#breakNaturally API // Paper end - Improve Block#breakNaturally API
if (!EnchantmentHelper.hasTag(tool, EnchantmentTags.PREVENTS_ICE_MELTING)) { if (!EnchantmentHelper.hasTag(tool, EnchantmentTags.PREVENTS_ICE_MELTING)) {
@@ -57,7 +58,7 @@ index ac775afb265430ac202cfa3900a036d11a308b1e..87ce003dfeca975d8e6af26fd341f3ab
world.removeBlock(pos, false); world.removeBlock(pos, false);
return; return;
} }
@@ -69,7 +69,7 @@ public class IceBlock extends HalfTransparentBlock { @@ -70,7 +70,7 @@ public class IceBlock extends HalfTransparentBlock {
return; return;
} }
// CraftBukkit end // CraftBukkit end
@@ -67,7 +68,7 @@ index ac775afb265430ac202cfa3900a036d11a308b1e..87ce003dfeca975d8e6af26fd341f3ab
} else { } else {
world.setBlockAndUpdate(pos, IceBlock.meltsInto()); world.setBlockAndUpdate(pos, IceBlock.meltsInto());
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
index 58812f062486ae34ad448bb1fe404c4fb05ad4ff..67f883f1681b7a7c2eed60309634cb4cb32e56a1 100644 index a3a699881e6b96d0fb507ef69e4dbc181fe5fbbc..580eb4f8cc88cda9df78868b373ba22eb319f75f 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
@@ -246,6 +246,11 @@ public class PurpurConfig { @@ -246,6 +246,11 @@ public class PurpurConfig {

View File

@@ -5,13 +5,13 @@ Subject: [PATCH] Allow color codes in books
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
index ba98e98a09e141d45bda8a663d5e4354e3afbc1e..24507ece498ccaa2bed7b4ab53ae9c90e734ad54 100644 index 0ffad0fee921ac302f31894766594921751fbff9..62fdb1e8b84facec3ce69d5001e7d626d74a37ce 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
@@ -1237,10 +1237,14 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl @@ -1214,10 +1214,14 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
Objects.requireNonNull(list); Objects.requireNonNull(list);
stream.forEach(list::add); optional.ifPresent(list::add);
list.addAll(packet.pages());
+ // Purpur start + // Purpur start
+ boolean hasEditPerm = getCraftPlayer().hasPermission("purpur.book.color.edit"); + boolean hasEditPerm = getCraftPlayer().hasPermission("purpur.book.color.edit");
+ boolean hasSignPerm = hasEditPerm || getCraftPlayer().hasPermission("purpur.book.color.sign"); + boolean hasSignPerm = hasEditPerm || getCraftPlayer().hasPermission("purpur.book.color.sign");
@@ -25,7 +25,7 @@ index ba98e98a09e141d45bda8a663d5e4354e3afbc1e..24507ece498ccaa2bed7b4ab53ae9c90
}; };
this.filterTextPacket((List) list).thenAcceptAsync(consumer, this.server); this.filterTextPacket((List) list).thenAcceptAsync(consumer, this.server);
@@ -1248,13 +1252,18 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl @@ -1225,13 +1229,18 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
} }
private void updateBookContents(List<FilteredText> pages, int slotId) { private void updateBookContents(List<FilteredText> pages, int slotId) {
@@ -39,13 +39,13 @@ index ba98e98a09e141d45bda8a663d5e4354e3afbc1e..24507ece498ccaa2bed7b4ab53ae9c90
ItemStack itemstack = handItem.copy(); ItemStack itemstack = handItem.copy();
// CraftBukkit end // CraftBukkit end
if (itemstack.is(Items.WRITABLE_BOOK)) { if (itemstack.has(DataComponents.WRITABLE_BOOK_CONTENT)) {
- List<Filterable<String>> list1 = pages.stream().map(this::filterableFromOutgoing).toList(); - List<Filterable<String>> list1 = pages.stream().map(this::filterableFromOutgoing).toList();
+ List<Filterable<String>> list1 = pages.stream().map(filteredText -> filterableFromOutgoing(filteredText).map(s -> color(s, hasPerm))).toList(); // Purpur + List<Filterable<String>> list1 = pages.stream().map(filteredText -> filterableFromOutgoing(filteredText).map(s -> color(s, hasPerm))).toList(); // Purpur
itemstack.set(DataComponents.WRITABLE_BOOK_CONTENT, new WritableBookContent(list1)); itemstack.set(DataComponents.WRITABLE_BOOK_CONTENT, new WritableBookContent(list1));
this.player.getInventory().setItem(slotId, CraftEventFactory.handleEditBookEvent(this.player, slotId, handItem, itemstack)); // CraftBukkit // Paper - Don't ignore result (see other callsite for handleEditBookEvent) this.player.getInventory().setItem(slotId, CraftEventFactory.handleEditBookEvent(this.player, slotId, handItem, itemstack)); // CraftBukkit // Paper - Don't ignore result (see other callsite for handleEditBookEvent)
@@ -1262,6 +1271,11 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl @@ -1239,6 +1248,11 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
} }
private void signBook(FilteredText title, List<FilteredText> pages, int slotId) { private void signBook(FilteredText title, List<FilteredText> pages, int slotId) {
@@ -56,8 +56,8 @@ index ba98e98a09e141d45bda8a663d5e4354e3afbc1e..24507ece498ccaa2bed7b4ab53ae9c90
+ // Purpur end + // Purpur end
ItemStack itemstack = this.player.getInventory().getItem(slotId); ItemStack itemstack = this.player.getInventory().getItem(slotId);
if (itemstack.is(Items.WRITABLE_BOOK)) { if (itemstack.has(DataComponents.WRITABLE_BOOK_CONTENT)) {
@@ -1269,10 +1283,10 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl @@ -1246,10 +1260,10 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
itemstack1.remove(DataComponents.WRITABLE_BOOK_CONTENT); itemstack1.remove(DataComponents.WRITABLE_BOOK_CONTENT);
List<Filterable<Component>> list1 = (List<Filterable<Component>>) (List) pages.stream().map((filteredtext1) -> { // CraftBukkit - decompile error List<Filterable<Component>> list1 = (List<Filterable<Component>>) (List) pages.stream().map((filteredtext1) -> { // CraftBukkit - decompile error
@@ -70,7 +70,7 @@ index ba98e98a09e141d45bda8a663d5e4354e3afbc1e..24507ece498ccaa2bed7b4ab53ae9c90
CraftEventFactory.handleEditBookEvent(this.player, slotId, itemstack, itemstack1); // CraftBukkit CraftEventFactory.handleEditBookEvent(this.player, slotId, itemstack, itemstack1); // CraftBukkit
this.player.getInventory().setItem(slotId, itemstack); // CraftBukkit - event factory updates the hand book this.player.getInventory().setItem(slotId, itemstack); // CraftBukkit - event factory updates the hand book
} }
@@ -1282,6 +1296,16 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl @@ -1259,6 +1273,16 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
return this.player.isTextFilteringEnabled() ? Filterable.passThrough(message.filteredOrEmpty()) : Filterable.from(message); return this.player.isTextFilteringEnabled() ? Filterable.passThrough(message.filteredOrEmpty()) : Filterable.from(message);
} }

View File

@@ -5,22 +5,22 @@ Subject: [PATCH] Entity lifespan
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
index ae603fa8bbb980bd57bddf1bfdc41af809d0d01a..58b90722df0b0dcd7c84976f510f43aa82ea795c 100644 index 62fdb1e8b84facec3ce69d5001e7d626d74a37ce..8c1f21892a96ed1cf1ef8b76ff8a52f1a8caca6e 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
@@ -2836,6 +2836,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl @@ -2783,6 +2783,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
AABB axisalignedbb = entity.getBoundingBox(); AABB axisalignedbb = entity.getBoundingBox();
if (this.player.canInteractWithEntity(axisalignedbb, io.papermc.paper.configuration.GlobalConfiguration.get().misc.clientInteractionLeniencyDistance.or(1.0D))) { // Paper - configurable lenience value for interact range if (this.player.canInteractWithEntity(axisalignedbb, io.papermc.paper.configuration.GlobalConfiguration.get().misc.clientInteractionLeniencyDistance.or(3.0D))) { // Paper - configurable lenience value for interact range
+ if (entity instanceof Mob mob) mob.ticksSinceLastInteraction = 0; // Purpur + if (entity instanceof Mob mob) mob.ticksSinceLastInteraction = 0; // Purpur
packet.dispatch(new ServerboundInteractPacket.Handler() { packet.dispatch(new ServerboundInteractPacket.Handler() {
private void performInteraction(InteractionHand enumhand, ServerGamePacketListenerImpl.EntityInteraction playerconnection_a, PlayerInteractEntityEvent event) { // CraftBukkit private void performInteraction(InteractionHand enumhand, ServerGamePacketListenerImpl.EntityInteraction playerconnection_a, PlayerInteractEntityEvent event) { // CraftBukkit
ItemStack itemstack = ServerGamePacketListenerImpl.this.player.getItemInHand(enumhand); ItemStack itemstack = ServerGamePacketListenerImpl.this.player.getItemInHand(enumhand);
diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java
index ebf2541c0d17c0940d78162a4015145bbebc51cf..0d93a8cbf15fa84f422d61adddb420ba5dcb226a 100644 index cd456edd2caf087d1dbeb97d3373bd2bf9112fc2..17e6e4a858d3a2332c14d2860d2f5d1e87e1c629 100644
--- a/src/main/java/net/minecraft/world/entity/Mob.java --- a/src/main/java/net/minecraft/world/entity/Mob.java
+++ b/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java
@@ -146,6 +146,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab @@ -148,6 +148,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab
private BlockPos restrictCenter; private BlockPos restrictCenter;
private float restrictRadius; private float restrictRadius;
@@ -28,7 +28,7 @@ index ebf2541c0d17c0940d78162a4015145bbebc51cf..0d93a8cbf15fa84f422d61adddb420ba
public boolean aware = true; // CraftBukkit public boolean aware = true; // CraftBukkit
protected Mob(EntityType<? extends Mob> type, Level world) { protected Mob(EntityType<? extends Mob> type, Level world) {
@@ -333,6 +334,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab @@ -334,6 +335,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab
entityliving = null; entityliving = null;
} }
} }
@@ -36,10 +36,10 @@ index ebf2541c0d17c0940d78162a4015145bbebc51cf..0d93a8cbf15fa84f422d61adddb420ba
this.target = entityliving; this.target = entityliving;
return true; return true;
// CraftBukkit end // CraftBukkit end
@@ -375,8 +377,28 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab @@ -378,8 +380,28 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab
} }
this.level().getProfiler().pop(); gameprofilerfiller.pop();
+ incrementTicksSinceLastInteraction(); // Purpur + incrementTicksSinceLastInteraction(); // Purpur
} }
@@ -65,7 +65,7 @@ index ebf2541c0d17c0940d78162a4015145bbebc51cf..0d93a8cbf15fa84f422d61adddb420ba
@Override @Override
protected void playHurtSound(DamageSource damageSource) { protected void playHurtSound(DamageSource damageSource) {
this.resetAmbientSoundTime(); this.resetAmbientSoundTime();
@@ -551,6 +573,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab @@ -547,6 +569,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab
} }
nbt.putBoolean("Bukkit.Aware", this.aware); // CraftBukkit nbt.putBoolean("Bukkit.Aware", this.aware); // CraftBukkit
@@ -73,7 +73,7 @@ index ebf2541c0d17c0940d78162a4015145bbebc51cf..0d93a8cbf15fa84f422d61adddb420ba
} }
@Override @Override
@@ -628,6 +651,11 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab @@ -624,6 +647,11 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab
this.aware = nbt.getBoolean("Bukkit.Aware"); this.aware = nbt.getBoolean("Bukkit.Aware");
} }
// CraftBukkit end // CraftBukkit end
@@ -85,7 +85,7 @@ index ebf2541c0d17c0940d78162a4015145bbebc51cf..0d93a8cbf15fa84f422d61adddb420ba
} }
@Override @Override
@@ -1753,6 +1781,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab @@ -1735,6 +1763,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab
this.playAttackSound(); this.playAttackSound();
} }
@@ -94,10 +94,10 @@ index ebf2541c0d17c0940d78162a4015145bbebc51cf..0d93a8cbf15fa84f422d61adddb420ba
} }
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 7b0e04f7132f5b8a3027ef7120f2fb1a6145fefc..063b8ba15e6ed01a5d77572df363b5fc89edfea6 100644 index a168eb5c1f08ad4def8421e298512c532ec06988..8832a5491303d4189155ec56f81e37f99efaa28e 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -120,6 +120,11 @@ public class PurpurWorldConfig { @@ -118,6 +118,11 @@ public class PurpurWorldConfig {
elytraDamagePerTridentBoost = getInt("gameplay-mechanics.elytra.damage-per-boost.trident", elytraDamagePerTridentBoost); elytraDamagePerTridentBoost = getInt("gameplay-mechanics.elytra.damage-per-boost.trident", elytraDamagePerTridentBoost);
} }

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Add option to teleport to spawn if outside world border
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
index 14df0de1e1abe154991c77319a73dbb3a709af80..aca60e21e7a191212d07a03a105fc4fb636359b2 100644 index badcca42c771bf39b128c2e123be3c0aeb6b8e76..5f86f0b46e91ac41820931a9d64a7240d3ddd8d4 100644
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
@@ -3037,4 +3037,26 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple @@ -3392,4 +3392,26 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple
return (CraftPlayer) super.getBukkitEntity(); return (CraftPlayer) super.getBukkitEntity();
} }
// CraftBukkit end // CraftBukkit end
@@ -36,22 +36,22 @@ index 14df0de1e1abe154991c77319a73dbb3a709af80..aca60e21e7a191212d07a03a105fc4fb
+ // Purpur end + // Purpur end
} }
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
index d8db30c9051aebf2cb6567a273bcfdfbe06d4936..cacda8947f0d88f6022e2c468e94da25ac0a1d7e 100644 index a58c8ed64eab56c4a4a0688e0731a232fb5f7269..c0ac2801321ca1813804214cc0ceecc1b557865e 100644
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
@@ -461,6 +461,7 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -481,6 +481,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
double d1 = this.level().getWorldBorder().getDamagePerBlock(); if (d1 < 0.0D) {
d0 = this.level().getWorldBorder().getDamagePerBlock();
if (d1 > 0.0D) { if (d0 > 0.0D) {
+ if (level().purpurConfig.teleportIfOutsideBorder && this instanceof ServerPlayer serverPlayer) { serverPlayer.teleport(io.papermc.paper.util.MCUtil.toLocation(level(), ((ServerLevel) level()).getSharedSpawnPos())); return; } // Purpur + if (level().purpurConfig.teleportIfOutsideBorder && this instanceof ServerPlayer serverPlayer) { serverPlayer.teleport(io.papermc.paper.util.MCUtil.toLocation(level(), ((ServerLevel) level()).getSharedSpawnPos())); return; } // Purpur
this.hurt(this.damageSources().outOfBorder(), (float) Math.max(1, Mth.floor(-d0 * d1))); this.hurtServer(worldserver1, this.damageSources().outOfBorder(), (float) Math.max(1, Mth.floor(-d1 * d0)));
} }
} }
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 063b8ba15e6ed01a5d77572df363b5fc89edfea6..bb88e3e6b467f9c66df48389f0f99218972b5856 100644 index 8832a5491303d4189155ec56f81e37f99efaa28e..20242b58cc3af8d58c51919d637ec258df308a60 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -237,6 +237,7 @@ public class PurpurWorldConfig { @@ -235,6 +235,7 @@ public class PurpurWorldConfig {
public boolean idleTimeoutTargetPlayer = true; public boolean idleTimeoutTargetPlayer = true;
public String playerDeathExpDropEquation = "expLevel * 7"; public String playerDeathExpDropEquation = "expLevel * 7";
public int playerDeathExpDropMax = 100; public int playerDeathExpDropMax = 100;
@@ -59,7 +59,7 @@ index 063b8ba15e6ed01a5d77572df363b5fc89edfea6..bb88e3e6b467f9c66df48389f0f99218
private void playerSettings() { private void playerSettings() {
if (PurpurConfig.version < 19) { if (PurpurConfig.version < 19) {
boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer);
@@ -250,6 +251,7 @@ public class PurpurWorldConfig { @@ -248,6 +249,7 @@ public class PurpurWorldConfig {
idleTimeoutTargetPlayer = getBoolean("gameplay-mechanics.player.idle-timeout.mobs-target", idleTimeoutTargetPlayer); idleTimeoutTargetPlayer = getBoolean("gameplay-mechanics.player.idle-timeout.mobs-target", idleTimeoutTargetPlayer);
playerDeathExpDropEquation = getString("gameplay-mechanics.player.exp-dropped-on-death.equation", playerDeathExpDropEquation); playerDeathExpDropEquation = getString("gameplay-mechanics.player.exp-dropped-on-death.equation", playerDeathExpDropEquation);
playerDeathExpDropMax = getInt("gameplay-mechanics.player.exp-dropped-on-death.maximum", playerDeathExpDropMax); playerDeathExpDropMax = getInt("gameplay-mechanics.player.exp-dropped-on-death.maximum", playerDeathExpDropMax);

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Squid EAR immunity
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index bb88e3e6b467f9c66df48389f0f99218972b5856..2eb90a4bc6db46de1a288c454bd5b552fae53e3a 100644 index 20242b58cc3af8d58c51919d637ec258df308a60..5f686584f2f9205c3594daa52c4b3daf32f8e57b 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -1573,6 +1573,7 @@ public class PurpurWorldConfig { @@ -1571,6 +1571,7 @@ public class PurpurWorldConfig {
public boolean squidControllable = true; public boolean squidControllable = true;
public double squidMaxHealth = 10.0D; public double squidMaxHealth = 10.0D;
public double squidScale = 1.0D; public double squidScale = 1.0D;
@@ -16,7 +16,7 @@ index bb88e3e6b467f9c66df48389f0f99218972b5856..2eb90a4bc6db46de1a288c454bd5b552
private void squidSettings() { private void squidSettings() {
squidRidable = getBoolean("mobs.squid.ridable", squidRidable); squidRidable = getBoolean("mobs.squid.ridable", squidRidable);
squidControllable = getBoolean("mobs.squid.controllable", squidControllable); squidControllable = getBoolean("mobs.squid.controllable", squidControllable);
@@ -1583,6 +1584,7 @@ public class PurpurWorldConfig { @@ -1581,6 +1582,7 @@ public class PurpurWorldConfig {
} }
squidMaxHealth = getDouble("mobs.squid.attributes.max_health", squidMaxHealth); squidMaxHealth = getDouble("mobs.squid.attributes.max_health", squidMaxHealth);
squidScale = Mth.clamp(getDouble("mobs.squid.attributes.scale", squidScale), 0.0625D, 16.0D); squidScale = Mth.clamp(getDouble("mobs.squid.attributes.scale", squidScale), 0.0625D, 16.0D);
@@ -25,10 +25,10 @@ index bb88e3e6b467f9c66df48389f0f99218972b5856..2eb90a4bc6db46de1a288c454bd5b552
public boolean spiderRidable = false; public boolean spiderRidable = false;
diff --git a/src/main/java/org/spigotmc/ActivationRange.java b/src/main/java/org/spigotmc/ActivationRange.java diff --git a/src/main/java/org/spigotmc/ActivationRange.java b/src/main/java/org/spigotmc/ActivationRange.java
index 378c889b3315fc578629990df361e37baac110d3..ba180127a50b1a1ed155ee4053440074e38adef4 100644 index bcb591ba54522ed70ca051429363f3a5517460af..ca05c37dad39808683429276d85d970b7cc63f82 100644
--- a/src/main/java/org/spigotmc/ActivationRange.java --- a/src/main/java/org/spigotmc/ActivationRange.java
+++ b/src/main/java/org/spigotmc/ActivationRange.java +++ b/src/main/java/org/spigotmc/ActivationRange.java
@@ -404,6 +404,7 @@ public class ActivationRange @@ -381,6 +381,7 @@ public class ActivationRange
*/ */
public static boolean checkIfActive(Entity entity) public static boolean checkIfActive(Entity entity)
{ {

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Phantoms burn in light
diff --git a/src/main/java/net/minecraft/world/entity/monster/Phantom.java b/src/main/java/net/minecraft/world/entity/monster/Phantom.java diff --git a/src/main/java/net/minecraft/world/entity/monster/Phantom.java b/src/main/java/net/minecraft/world/entity/monster/Phantom.java
index 7a80cb45ff5d96380755d37ff43ddeac2cd451e1..8f221fe016ea7221eb3a2116a2213139cf961797 100644 index 5d62be4ae4561262820d011f5e7318411d749bbb..11e0ba7ec12ba3b93589f451ef4f251598eb29c9 100644
--- a/src/main/java/net/minecraft/world/entity/monster/Phantom.java --- a/src/main/java/net/minecraft/world/entity/monster/Phantom.java
+++ b/src/main/java/net/minecraft/world/entity/monster/Phantom.java +++ b/src/main/java/net/minecraft/world/entity/monster/Phantom.java
@@ -48,6 +48,7 @@ public class Phantom extends FlyingMob implements Enemy { @@ -49,6 +49,7 @@ public class Phantom extends FlyingMob implements Enemy {
Vec3 moveTargetPoint; Vec3 moveTargetPoint;
public BlockPos anchorPoint; public BlockPos anchorPoint;
Phantom.AttackPhase attackPhase; Phantom.AttackPhase attackPhase;
@@ -16,7 +16,7 @@ index 7a80cb45ff5d96380755d37ff43ddeac2cd451e1..8f221fe016ea7221eb3a2116a2213139
Vec3 crystalPosition; // Purpur Vec3 crystalPosition; // Purpur
public Phantom(EntityType<? extends Phantom> type, Level world) { public Phantom(EntityType<? extends Phantom> type, Level world) {
@@ -240,7 +241,11 @@ public class Phantom extends FlyingMob implements Enemy { @@ -241,7 +242,11 @@ public class Phantom extends FlyingMob implements Enemy {
@Override @Override
public void aiStep() { public void aiStep() {
@@ -42,19 +42,19 @@ index 7a80cb45ff5d96380755d37ff43ddeac2cd451e1..8f221fe016ea7221eb3a2116a2213139
} else { } else {
if (entityliving instanceof Player) { if (entityliving instanceof Player) {
Player entityhuman = (Player) entityliving; Player entityhuman = (Player) entityliving;
@@ -786,6 +797,7 @@ public class Phantom extends FlyingMob implements Enemy { @@ -787,6 +798,7 @@ public class Phantom extends FlyingMob implements Enemy {
this.nextScanTick = reducedTickDelay(60); ServerLevel worldserver = getServerLevel(Phantom.this.level());
List<Player> list = Phantom.this.level().getNearbyPlayers(this.attackTargeting, Phantom.this, Phantom.this.getBoundingBox().inflate(16.0D, 64.0D, 16.0D)); List<Player> list = worldserver.getNearbyPlayers(this.attackTargeting, Phantom.this, Phantom.this.getBoundingBox().inflate(16.0D, 64.0D, 16.0D));
+ if (level().purpurConfig.phantomIgnorePlayersWithTorch) list.removeIf(human -> TORCH.test(human.getItemInHand(net.minecraft.world.InteractionHand.MAIN_HAND)) || TORCH.test(human.getItemInHand(net.minecraft.world.InteractionHand.OFF_HAND)));// Purpur + if (level().purpurConfig.phantomIgnorePlayersWithTorch) list.removeIf(human -> TORCH.test(human.getItemInHand(net.minecraft.world.InteractionHand.MAIN_HAND)) || TORCH.test(human.getItemInHand(net.minecraft.world.InteractionHand.OFF_HAND)));// Purpur
if (!list.isEmpty()) { if (!list.isEmpty()) {
list.sort(Comparator.comparing((Entity e) -> { return e.getY(); }).reversed()); // CraftBukkit - decompile error list.sort(Comparator.comparing((Entity e) -> { return e.getY(); }).reversed()); // CraftBukkit - decompile error
Iterator iterator = list.iterator(); Iterator iterator = list.iterator();
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 2eb90a4bc6db46de1a288c454bd5b552fae53e3a..619e3d5c5a0ffe690e6d9dd0b3a2fd86035bc2da 100644 index 5f686584f2f9205c3594daa52c4b3daf32f8e57b..3e0113f24c49e9922ce3981855c810b0907cba07 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -1208,6 +1208,9 @@ public class PurpurWorldConfig { @@ -1206,6 +1206,9 @@ public class PurpurWorldConfig {
public double phantomSpawnLocalDifficultyChance = 3.0D; public double phantomSpawnLocalDifficultyChance = 3.0D;
public int phantomSpawnMinPerAttempt = 1; public int phantomSpawnMinPerAttempt = 1;
public int phantomSpawnMaxPerAttempt = -1; public int phantomSpawnMaxPerAttempt = -1;
@@ -64,7 +64,7 @@ index 2eb90a4bc6db46de1a288c454bd5b552fae53e3a..619e3d5c5a0ffe690e6d9dd0b3a2fd86
private void phantomSettings() { private void phantomSettings() {
phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable);
phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater);
@@ -1238,6 +1241,9 @@ public class PurpurWorldConfig { @@ -1236,6 +1239,9 @@ public class PurpurWorldConfig {
phantomSpawnLocalDifficultyChance = getDouble("mobs.phantom.spawn.local-difficulty-chance", phantomSpawnLocalDifficultyChance); phantomSpawnLocalDifficultyChance = getDouble("mobs.phantom.spawn.local-difficulty-chance", phantomSpawnLocalDifficultyChance);
phantomSpawnMinPerAttempt = getInt("mobs.phantom.spawn.per-attempt.min", phantomSpawnMinPerAttempt); phantomSpawnMinPerAttempt = getInt("mobs.phantom.spawn.per-attempt.min", phantomSpawnMinPerAttempt);
phantomSpawnMaxPerAttempt = getInt("mobs.phantom.spawn.per-attempt.max", phantomSpawnMaxPerAttempt); phantomSpawnMaxPerAttempt = getInt("mobs.phantom.spawn.per-attempt.max", phantomSpawnMaxPerAttempt);

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Configurable villager breeding
diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java
index f083de2448e0e6dfa277c58a082b305cdc1e11e7..37aefffb16c43221e39ef0b41a16968a560968ea 100644 index 9008eeae3187024862bef886801d197c4c425df3..62a1d6876ce75676c5fa381e48bc58b8ef92701b 100644
--- a/src/main/java/net/minecraft/world/entity/npc/Villager.java --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java
+++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java
@@ -782,7 +782,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @@ -761,7 +761,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
@Override @Override
public boolean canBreed() { public boolean canBreed() {
@@ -18,10 +18,10 @@ index f083de2448e0e6dfa277c58a082b305cdc1e11e7..37aefffb16c43221e39ef0b41a16968a
private boolean hungry() { private boolean hungry() {
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 619e3d5c5a0ffe690e6d9dd0b3a2fd86035bc2da..6657fdacd399d0c097f81abe8de282f5a7c35445 100644 index 3e0113f24c49e9922ce3981855c810b0907cba07..5175aff0fe60a9f1c71882d01f8ad29dac84f579 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -1745,6 +1745,7 @@ public class PurpurWorldConfig { @@ -1743,6 +1743,7 @@ public class PurpurWorldConfig {
public double villagerScale = 1.0D; public double villagerScale = 1.0D;
public boolean villagerFollowEmeraldBlock = false; public boolean villagerFollowEmeraldBlock = false;
public boolean villagerCanBeLeashed = false; public boolean villagerCanBeLeashed = false;
@@ -29,7 +29,7 @@ index 619e3d5c5a0ffe690e6d9dd0b3a2fd86035bc2da..6657fdacd399d0c097f81abe8de282f5
private void villagerSettings() { private void villagerSettings() {
villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable);
villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater);
@@ -1758,6 +1759,7 @@ public class PurpurWorldConfig { @@ -1756,6 +1757,7 @@ public class PurpurWorldConfig {
villagerScale = Mth.clamp(getDouble("mobs.villager.attributes.scale", villagerScale), 0.0625D, 16.0D); villagerScale = Mth.clamp(getDouble("mobs.villager.attributes.scale", villagerScale), 0.0625D, 16.0D);
villagerFollowEmeraldBlock = getBoolean("mobs.villager.follow-emerald-blocks", villagerFollowEmeraldBlock); villagerFollowEmeraldBlock = getBoolean("mobs.villager.follow-emerald-blocks", villagerFollowEmeraldBlock);
villagerCanBeLeashed = getBoolean("mobs.villager.can-be-leashed", villagerCanBeLeashed); villagerCanBeLeashed = getBoolean("mobs.villager.can-be-leashed", villagerCanBeLeashed);

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Redstone deactivates spawners
diff --git a/src/main/java/net/minecraft/world/level/BaseSpawner.java b/src/main/java/net/minecraft/world/level/BaseSpawner.java diff --git a/src/main/java/net/minecraft/world/level/BaseSpawner.java b/src/main/java/net/minecraft/world/level/BaseSpawner.java
index f57e1b78204dff661ad5d3ee93a88a00330af2dc..967af8771ff8564c715d89f4b4b69b16c25add59 100644 index 7de66aa435dd36899b80f4ecc64480680e474d94..bb4411cfdf1bc7adc12c2f918d2eec830299f38b 100644
--- a/src/main/java/net/minecraft/world/level/BaseSpawner.java --- a/src/main/java/net/minecraft/world/level/BaseSpawner.java
+++ b/src/main/java/net/minecraft/world/level/BaseSpawner.java +++ b/src/main/java/net/minecraft/world/level/BaseSpawner.java
@@ -59,6 +59,7 @@ public abstract class BaseSpawner { @@ -59,6 +59,7 @@ public abstract class BaseSpawner {
@@ -17,10 +17,10 @@ index f57e1b78204dff661ad5d3ee93a88a00330af2dc..967af8771ff8564c715d89f4b4b69b16
} }
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 6657fdacd399d0c097f81abe8de282f5a7c35445..c613cc628f5f40d85000709b228c09bfa057028a 100644 index 5175aff0fe60a9f1c71882d01f8ad29dac84f579..0c8ec8f1f6a79a0764ff05d34b40cf18c5590862 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -347,6 +347,11 @@ public class PurpurWorldConfig { @@ -345,6 +345,11 @@ public class PurpurWorldConfig {
} }
} }

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Totems work in inventory
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
index cacda8947f0d88f6022e2c468e94da25ac0a1d7e..cd2775bf0b59056a8329b1e7e2649f4b3cd92b2a 100644 index c0ac2801321ca1813804214cc0ceecc1b557865e..06ccf6daaf5e7affe505c75cdbf85c1c29c3ebf9 100644
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
@@ -1679,6 +1679,18 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -1709,6 +1709,18 @@ public abstract class LivingEntity extends Entity implements Attackable {
} }
} }
@@ -28,10 +28,10 @@ index cacda8947f0d88f6022e2c468e94da25ac0a1d7e..cd2775bf0b59056a8329b1e7e2649f4b
EntityResurrectEvent event = new EntityResurrectEvent((org.bukkit.entity.LivingEntity) this.getBukkitEntity(), handSlot); EntityResurrectEvent event = new EntityResurrectEvent((org.bukkit.entity.LivingEntity) this.getBukkitEntity(), handSlot);
event.setCancelled(itemstack == null); event.setCancelled(itemstack == null);
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index c613cc628f5f40d85000709b228c09bfa057028a..a3e40d92a32e214a69b605740bcbe639211bedb6 100644 index 0c8ec8f1f6a79a0764ff05d34b40cf18c5590862..bd3c6364051419544cc1c5db110920ad51c1dbc7 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -238,6 +238,7 @@ public class PurpurWorldConfig { @@ -236,6 +236,7 @@ public class PurpurWorldConfig {
public String playerDeathExpDropEquation = "expLevel * 7"; public String playerDeathExpDropEquation = "expLevel * 7";
public int playerDeathExpDropMax = 100; public int playerDeathExpDropMax = 100;
public boolean teleportIfOutsideBorder = false; public boolean teleportIfOutsideBorder = false;
@@ -39,7 +39,7 @@ index c613cc628f5f40d85000709b228c09bfa057028a..a3e40d92a32e214a69b605740bcbe639
private void playerSettings() { private void playerSettings() {
if (PurpurConfig.version < 19) { if (PurpurConfig.version < 19) {
boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer);
@@ -252,6 +253,7 @@ public class PurpurWorldConfig { @@ -250,6 +251,7 @@ public class PurpurWorldConfig {
playerDeathExpDropEquation = getString("gameplay-mechanics.player.exp-dropped-on-death.equation", playerDeathExpDropEquation); playerDeathExpDropEquation = getString("gameplay-mechanics.player.exp-dropped-on-death.equation", playerDeathExpDropEquation);
playerDeathExpDropMax = getInt("gameplay-mechanics.player.exp-dropped-on-death.maximum", playerDeathExpDropMax); playerDeathExpDropMax = getInt("gameplay-mechanics.player.exp-dropped-on-death.maximum", playerDeathExpDropMax);
teleportIfOutsideBorder = getBoolean("gameplay-mechanics.player.teleport-if-outside-border", teleportIfOutsideBorder); teleportIfOutsideBorder = getBoolean("gameplay-mechanics.player.teleport-if-outside-border", teleportIfOutsideBorder);

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Add vindicator johnny spawn chance
diff --git a/src/main/java/net/minecraft/world/entity/monster/Vindicator.java b/src/main/java/net/minecraft/world/entity/monster/Vindicator.java diff --git a/src/main/java/net/minecraft/world/entity/monster/Vindicator.java b/src/main/java/net/minecraft/world/entity/monster/Vindicator.java
index e5c6baf199235812f7b4fcec20145d7146737224..f8c2911496aa18e8e2b589309e9cdd78d679f004 100644 index 2bfce82bee8f3a16a33bd937eb610d9df1b6ceeb..2f7da09e14787395e95211acadd5c693cf07fba3 100644
--- a/src/main/java/net/minecraft/world/entity/monster/Vindicator.java --- a/src/main/java/net/minecraft/world/entity/monster/Vindicator.java
+++ b/src/main/java/net/minecraft/world/entity/monster/Vindicator.java +++ b/src/main/java/net/minecraft/world/entity/monster/Vindicator.java
@@ -152,6 +152,11 @@ public class Vindicator extends AbstractIllager { @@ -157,6 +157,11 @@ public class Vindicator extends AbstractIllager {
RandomSource randomSource = world.getRandom(); RandomSource randomSource = world.getRandom();
this.populateDefaultEquipmentSlots(randomSource, difficulty); this.populateDefaultEquipmentSlots(randomSource, difficulty);
this.populateDefaultEquipmentEnchantments(world, randomSource, difficulty); this.populateDefaultEquipmentEnchantments(world, randomSource, difficulty);
@@ -21,10 +21,10 @@ index e5c6baf199235812f7b4fcec20145d7146737224..f8c2911496aa18e8e2b589309e9cdd78
} }
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index a3e40d92a32e214a69b605740bcbe639211bedb6..cf8165b5a5a1b82c966ae891d95e0093bf76526f 100644 index bd3c6364051419544cc1c5db110920ad51c1dbc7..fa69de1709b41faef119474b98bcd2839d0ae67d 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -1774,6 +1774,7 @@ public class PurpurWorldConfig { @@ -1772,6 +1772,7 @@ public class PurpurWorldConfig {
public boolean vindicatorControllable = true; public boolean vindicatorControllable = true;
public double vindicatorMaxHealth = 24.0D; public double vindicatorMaxHealth = 24.0D;
public double vindicatorScale = 1.0D; public double vindicatorScale = 1.0D;
@@ -32,7 +32,7 @@ index a3e40d92a32e214a69b605740bcbe639211bedb6..cf8165b5a5a1b82c966ae891d95e0093
private void vindicatorSettings() { private void vindicatorSettings() {
vindicatorRidable = getBoolean("mobs.vindicator.ridable", vindicatorRidable); vindicatorRidable = getBoolean("mobs.vindicator.ridable", vindicatorRidable);
vindicatorRidableInWater = getBoolean("mobs.vindicator.ridable-in-water", vindicatorRidableInWater); vindicatorRidableInWater = getBoolean("mobs.vindicator.ridable-in-water", vindicatorRidableInWater);
@@ -1785,6 +1786,7 @@ public class PurpurWorldConfig { @@ -1783,6 +1784,7 @@ public class PurpurWorldConfig {
} }
vindicatorMaxHealth = getDouble("mobs.vindicator.attributes.max_health", vindicatorMaxHealth); vindicatorMaxHealth = getDouble("mobs.vindicator.attributes.max_health", vindicatorMaxHealth);
vindicatorScale = Mth.clamp(getDouble("mobs.vindicator.attributes.scale", vindicatorScale), 0.0625D, 16.0D); vindicatorScale = Mth.clamp(getDouble("mobs.vindicator.attributes.scale", vindicatorScale), 0.0625D, 16.0D);

View File

@@ -5,13 +5,13 @@ Subject: [PATCH] Dispensers place anvils option
diff --git a/src/main/java/net/minecraft/core/dispenser/DispenseItemBehavior.java b/src/main/java/net/minecraft/core/dispenser/DispenseItemBehavior.java diff --git a/src/main/java/net/minecraft/core/dispenser/DispenseItemBehavior.java b/src/main/java/net/minecraft/core/dispenser/DispenseItemBehavior.java
index 60d3319016beb4f60cbc26dde165f64cf7577602..bd07743817f2510c179614a6215434e7b333824a 100644 index cd77e86ff289634d2dd1c56002e569ff70d15f25..f5d7008ab65be21980063c6c5da783e4077252f5 100644
--- a/src/main/java/net/minecraft/core/dispenser/DispenseItemBehavior.java --- a/src/main/java/net/minecraft/core/dispenser/DispenseItemBehavior.java
+++ b/src/main/java/net/minecraft/core/dispenser/DispenseItemBehavior.java +++ b/src/main/java/net/minecraft/core/dispenser/DispenseItemBehavior.java
@@ -1015,5 +1015,22 @@ public interface DispenseItemBehavior { @@ -922,5 +922,22 @@ public interface DispenseItemBehavior {
} DispenserBlock.registerBehavior(Items.TNT_MINECART, new MinecartDispenseItemBehavior(EntityType.TNT_MINECART));
} DispenserBlock.registerBehavior(Items.HOPPER_MINECART, new MinecartDispenseItemBehavior(EntityType.HOPPER_MINECART));
}); DispenserBlock.registerBehavior(Items.COMMAND_BLOCK_MINECART, new MinecartDispenseItemBehavior(EntityType.COMMAND_BLOCK_MINECART));
+ // Purpur start + // Purpur start
+ DispenserBlock.registerBehavior(Items.ANVIL, (new OptionalDispenseItemBehavior() { + DispenserBlock.registerBehavior(Items.ANVIL, (new OptionalDispenseItemBehavior() {
+ @Override + @Override
@@ -32,10 +32,10 @@ index 60d3319016beb4f60cbc26dde165f64cf7577602..bd07743817f2510c179614a6215434e7
} }
} }
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index cf8165b5a5a1b82c966ae891d95e0093bf76526f..f291018ef35645d14811bbc1e47c56ac34fb73c6 100644 index fa69de1709b41faef119474b98bcd2839d0ae67d..0aaf03f290a9bf410a5f854add927aca58d09ec3 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -310,8 +310,10 @@ public class PurpurWorldConfig { @@ -308,8 +308,10 @@ public class PurpurWorldConfig {
} }
public boolean dispenserApplyCursedArmor = true; public boolean dispenserApplyCursedArmor = true;

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Allow anvil colors
diff --git a/src/main/java/net/minecraft/world/inventory/AnvilMenu.java b/src/main/java/net/minecraft/world/inventory/AnvilMenu.java diff --git a/src/main/java/net/minecraft/world/inventory/AnvilMenu.java b/src/main/java/net/minecraft/world/inventory/AnvilMenu.java
index 07e4c67ed1e5b14315ccbce4f0dd8abf0e5e6635..58135a3292bcdfea17726f17d86192ced96eea9a 100644 index 0dfcce766872d9b1a9b898f56e6f4d9179a46bc4..f1834eec821a14ef6a7f42f827b7e0b8284ae5a2 100644
--- a/src/main/java/net/minecraft/world/inventory/AnvilMenu.java --- a/src/main/java/net/minecraft/world/inventory/AnvilMenu.java
+++ b/src/main/java/net/minecraft/world/inventory/AnvilMenu.java +++ b/src/main/java/net/minecraft/world/inventory/AnvilMenu.java
@@ -283,6 +283,54 @@ public class AnvilMenu extends ItemCombinerMenu { @@ -285,6 +285,54 @@ public class AnvilMenu extends ItemCombinerMenu {
if (!this.itemName.equals(itemstack.getHoverName().getString())) { if (!this.itemName.equals(itemstack.getHoverName().getString())) {
b0 = 1; b0 = 1;
i += b0; i += b0;
@@ -64,10 +64,10 @@ index 07e4c67ed1e5b14315ccbce4f0dd8abf0e5e6635..58135a3292bcdfea17726f17d86192ce
} }
} else if (itemstack.has(DataComponents.CUSTOM_NAME)) { } else if (itemstack.has(DataComponents.CUSTOM_NAME)) {
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index f291018ef35645d14811bbc1e47c56ac34fb73c6..1c1cf0e4c7fa41c2b5239ca47048670e058fd685 100644 index 0aaf03f290a9bf410a5f854add927aca58d09ec3..cc35a98e9602b261da8613ae9cf95a0940bfeb19 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -288,6 +288,13 @@ public class PurpurWorldConfig { @@ -286,6 +286,13 @@ public class PurpurWorldConfig {
}); });
} }

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Add option to disable dolphin treasure searching
diff --git a/src/main/java/net/minecraft/world/entity/animal/Dolphin.java b/src/main/java/net/minecraft/world/entity/animal/Dolphin.java diff --git a/src/main/java/net/minecraft/world/entity/animal/Dolphin.java b/src/main/java/net/minecraft/world/entity/animal/Dolphin.java
index 98885a788af662736435fa8465c9b6ffeb16811b..6278d1020aeac52622ecf98c34453044850a453e 100644 index a5a23c7f733d49c20c870f819eec2607781dccbf..be74a5732bc24eb3c909d28b4ef46d5175d999d2 100644
--- a/src/main/java/net/minecraft/world/entity/animal/Dolphin.java --- a/src/main/java/net/minecraft/world/entity/animal/Dolphin.java
+++ b/src/main/java/net/minecraft/world/entity/animal/Dolphin.java +++ b/src/main/java/net/minecraft/world/entity/animal/Dolphin.java
@@ -465,6 +465,7 @@ public class Dolphin extends WaterAnimal { @@ -493,6 +493,7 @@ public class Dolphin extends AgeableWaterCreature {
@Override @Override
public boolean canUse() { public boolean canUse() {
@@ -17,10 +17,10 @@ index 98885a788af662736435fa8465c9b6ffeb16811b..6278d1020aeac52622ecf98c34453044
} }
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 1c1cf0e4c7fa41c2b5239ca47048670e058fd685..0411116e9b6735dcddf5f4d197f83ce61bd2aab6 100644 index cc35a98e9602b261da8613ae9cf95a0940bfeb19..c1302e6cd7db386c94d95e03b901c65b3aca1887 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -656,6 +656,7 @@ public class PurpurWorldConfig { @@ -654,6 +654,7 @@ public class PurpurWorldConfig {
public float dolphinSpitDamage = 2.0F; public float dolphinSpitDamage = 2.0F;
public double dolphinMaxHealth = 10.0D; public double dolphinMaxHealth = 10.0D;
public double dolphinScale = 1.0D; public double dolphinScale = 1.0D;
@@ -28,7 +28,7 @@ index 1c1cf0e4c7fa41c2b5239ca47048670e058fd685..0411116e9b6735dcddf5f4d197f83ce6
private void dolphinSettings() { private void dolphinSettings() {
dolphinRidable = getBoolean("mobs.dolphin.ridable", dolphinRidable); dolphinRidable = getBoolean("mobs.dolphin.ridable", dolphinRidable);
dolphinControllable = getBoolean("mobs.dolphin.controllable", dolphinControllable); dolphinControllable = getBoolean("mobs.dolphin.controllable", dolphinControllable);
@@ -669,6 +670,7 @@ public class PurpurWorldConfig { @@ -667,6 +668,7 @@ public class PurpurWorldConfig {
} }
dolphinMaxHealth = getDouble("mobs.dolphin.attributes.max_health", dolphinMaxHealth); dolphinMaxHealth = getDouble("mobs.dolphin.attributes.max_health", dolphinMaxHealth);
dolphinScale = Mth.clamp(getDouble("mobs.dolphin.attributes.scale", dolphinScale), 0.0625D, 16.0D); dolphinScale = Mth.clamp(getDouble("mobs.dolphin.attributes.scale", dolphinScale), 0.0625D, 16.0D);

View File

@@ -5,13 +5,13 @@ Subject: [PATCH] Short enderman height
diff --git a/src/main/java/net/minecraft/world/entity/EntityType.java b/src/main/java/net/minecraft/world/entity/EntityType.java diff --git a/src/main/java/net/minecraft/world/entity/EntityType.java b/src/main/java/net/minecraft/world/entity/EntityType.java
index 5a80b1f1168d17ef62d756f8eed751e721f09f79..bad5b622477a637440649ec18ea5a79c321bc523 100644 index 9eebe70e8ce80620b68635c9048e8e5c1083e27e..663dde75a9fc4fd7323ae9abe73cdb83aa74f2b3 100644
--- a/src/main/java/net/minecraft/world/entity/EntityType.java --- a/src/main/java/net/minecraft/world/entity/EntityType.java
+++ b/src/main/java/net/minecraft/world/entity/EntityType.java +++ b/src/main/java/net/minecraft/world/entity/EntityType.java
@@ -324,7 +324,8 @@ public class EntityType<T extends Entity> implements FeatureElement, EntityTypeT @@ -388,7 +388,8 @@ public class EntityType<T extends Entity> implements FeatureElement, EntityTypeT
private Component description;
@Nullable @Nullable
private ResourceKey<LootTable> lootTable; private Component description;
private final Optional<ResourceKey<LootTable>> lootTable;
- private final EntityDimensions dimensions; - private final EntityDimensions dimensions;
+ private EntityDimensions dimensions; // Purpur - remove final + private EntityDimensions dimensions; // Purpur - remove final
+ public void setDimensions(EntityDimensions dimensions) { this.dimensions = dimensions; } // Purpur + public void setDimensions(EntityDimensions dimensions) { this.dimensions = dimensions; } // Purpur
@@ -19,11 +19,11 @@ index 5a80b1f1168d17ef62d756f8eed751e721f09f79..bad5b622477a637440649ec18ea5a79c
private final FeatureFlagSet requiredFeatures; private final FeatureFlagSet requiredFeatures;
diff --git a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java diff --git a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java
index 108dca0b1b97e01fd9cadf4ae330fab770fce0c8..b081ea3f272ec2dba426bf0ebdfbbba1cec718ee 100644 index 437368100f6205b4c42234713044be47fda7082d..1a33a41f79f9d661cb958a6ecee2ab7e8a819877 100644
--- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java --- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java
+++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java +++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java
@@ -428,6 +428,7 @@ public class EnderMan extends Monster implements NeutralMob { @@ -409,6 +409,7 @@ public class EnderMan extends Monster implements NeutralMob {
if (this.isInvulnerableTo(source)) { if (this.isInvulnerableTo(world, source)) {
return false; return false;
} else if (getRider() != null && this.isControllable()) { return super.hurt(source, amount); // Purpur - no teleporting on damage } else if (getRider() != null && this.isControllable()) { return super.hurt(source, amount); // Purpur - no teleporting on damage
+ } else if (org.purpurmc.purpur.PurpurConfig.endermanShortHeight && source.is(net.minecraft.world.damagesource.DamageTypes.IN_WALL)) { return false; // Purpur - no suffocation damage if short height + } else if (org.purpurmc.purpur.PurpurConfig.endermanShortHeight && source.is(net.minecraft.world.damagesource.DamageTypes.IN_WALL)) { return false; // Purpur - no suffocation damage if short height
@@ -31,7 +31,7 @@ index 108dca0b1b97e01fd9cadf4ae330fab770fce0c8..b081ea3f272ec2dba426bf0ebdfbbba1
boolean flag = source.getDirectEntity() instanceof ThrownPotion; boolean flag = source.getDirectEntity() instanceof ThrownPotion;
boolean flag1; boolean flag1;
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
index 67f883f1681b7a7c2eed60309634cb4cb32e56a1..b5822e634147e8c6e6508324442ce2b4dec3824a 100644 index 580eb4f8cc88cda9df78868b373ba22eb319f75f..230606116a3f5a00cf0fa0b075c65aac7806c647 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
@@ -246,6 +246,12 @@ public class PurpurConfig { @@ -246,6 +246,12 @@ public class PurpurConfig {

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Stop squids floating on top of water
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
index e6c1ae7b70bed34fa9b1acdeaf0d969a1f5b6f08..8911eb7f6f307c7846eeb10f68e5cd231bd22e1b 100644 index c2cc934f2599c6620b60b1b1485c743390157377..6f93348f929c33268107607dec6cce7e102c18b2 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java --- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -4496,6 +4496,12 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @@ -4721,6 +4721,12 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
return Mth.lerp(delta, this.yRotO, this.yRot); return Mth.lerp(delta, this.yRotO, this.yRot);
} }
@@ -18,14 +18,14 @@ index e6c1ae7b70bed34fa9b1acdeaf0d969a1f5b6f08..8911eb7f6f307c7846eeb10f68e5cd23
+ } + }
+ // Purpur end + // Purpur end
+ +
public boolean updateFluidHeightAndDoFluidPushing(TagKey<Fluid> tag, double speed) { // Paper start - optimise collisions
if (false && this.touchingUnloadedChunk()) { // Pufferfish - cost of a lookup here is the same cost as below, so skip public boolean updateFluidHeightAndDoFluidPushing(final TagKey<Fluid> fluid, final double flowScale) {
return false; if (this.touchingUnloadedChunk()) {
diff --git a/src/main/java/net/minecraft/world/entity/animal/Squid.java b/src/main/java/net/minecraft/world/entity/animal/Squid.java diff --git a/src/main/java/net/minecraft/world/entity/animal/Squid.java b/src/main/java/net/minecraft/world/entity/animal/Squid.java
index ef4513f577779ddcfd357420aa65e1b52cf0f388..522dabcf6ec8b19902890718717fc890d430c750 100644 index db0d03fe2d2891efb3284d5c597d7c8279f2db94..a0aa4ac61de870a374152018ebdeab47dc5b5a85 100644
--- a/src/main/java/net/minecraft/world/entity/animal/Squid.java --- a/src/main/java/net/minecraft/world/entity/animal/Squid.java
+++ b/src/main/java/net/minecraft/world/entity/animal/Squid.java +++ b/src/main/java/net/minecraft/world/entity/animal/Squid.java
@@ -73,6 +73,12 @@ public class Squid extends WaterAnimal { @@ -78,6 +78,12 @@ public class Squid extends AgeableWaterCreature {
this.getAttribute(Attributes.SCALE).setBaseValue(this.level().purpurConfig.squidScale); this.getAttribute(Attributes.SCALE).setBaseValue(this.level().purpurConfig.squidScale);
} }
@@ -39,10 +39,10 @@ index ef4513f577779ddcfd357420aa65e1b52cf0f388..522dabcf6ec8b19902890718717fc890
protected void registerGoals() { protected void registerGoals() {
this.goalSelector.addGoal(0, new Squid.SquidRandomMovementGoal(this)); this.goalSelector.addGoal(0, new Squid.SquidRandomMovementGoal(this));
diff --git a/src/main/java/net/minecraft/world/phys/AABB.java b/src/main/java/net/minecraft/world/phys/AABB.java diff --git a/src/main/java/net/minecraft/world/phys/AABB.java b/src/main/java/net/minecraft/world/phys/AABB.java
index 29123f3a2f211c08d1a9ccf62ca9bc9822f90111..db78616676ba021ee0f03cfea932f2912f4ec987 100644 index 6cf6d4ec7b9e43c7b2b4c0e2fb080964ff588130..e74866e5195a5eeae7666ad7be750edac5947094 100644
--- a/src/main/java/net/minecraft/world/phys/AABB.java --- a/src/main/java/net/minecraft/world/phys/AABB.java
+++ b/src/main/java/net/minecraft/world/phys/AABB.java +++ b/src/main/java/net/minecraft/world/phys/AABB.java
@@ -508,4 +508,10 @@ public class AABB { @@ -551,4 +551,10 @@ public class AABB {
public static AABB ofSize(Vec3 center, double dx, double dy, double dz) { public static AABB ofSize(Vec3 center, double dx, double dy, double dz) {
return new AABB(center.x - dx / 2.0, center.y - dy / 2.0, center.z - dz / 2.0, center.x + dx / 2.0, center.y + dy / 2.0, center.z + dz / 2.0); return new AABB(center.x - dx / 2.0, center.y - dy / 2.0, center.z - dz / 2.0, center.x + dx / 2.0, center.y + dy / 2.0, center.z + dz / 2.0);
} }
@@ -54,10 +54,10 @@ index 29123f3a2f211c08d1a9ccf62ca9bc9822f90111..db78616676ba021ee0f03cfea932f291
+ // Purpur + // Purpur
} }
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 0411116e9b6735dcddf5f4d197f83ce61bd2aab6..45238996bb7ee057ab981178baf56194411d5b77 100644 index c1302e6cd7db386c94d95e03b901c65b3aca1887..918923d1d95b68a99b52750974647df03070f910 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -1598,6 +1598,7 @@ public class PurpurWorldConfig { @@ -1596,6 +1596,7 @@ public class PurpurWorldConfig {
public double squidMaxHealth = 10.0D; public double squidMaxHealth = 10.0D;
public double squidScale = 1.0D; public double squidScale = 1.0D;
public boolean squidImmuneToEAR = true; public boolean squidImmuneToEAR = true;
@@ -65,7 +65,7 @@ index 0411116e9b6735dcddf5f4d197f83ce61bd2aab6..45238996bb7ee057ab981178baf56194
private void squidSettings() { private void squidSettings() {
squidRidable = getBoolean("mobs.squid.ridable", squidRidable); squidRidable = getBoolean("mobs.squid.ridable", squidRidable);
squidControllable = getBoolean("mobs.squid.controllable", squidControllable); squidControllable = getBoolean("mobs.squid.controllable", squidControllable);
@@ -1609,6 +1610,7 @@ public class PurpurWorldConfig { @@ -1607,6 +1608,7 @@ public class PurpurWorldConfig {
squidMaxHealth = getDouble("mobs.squid.attributes.max_health", squidMaxHealth); squidMaxHealth = getDouble("mobs.squid.attributes.max_health", squidMaxHealth);
squidScale = Mth.clamp(getDouble("mobs.squid.attributes.scale", squidScale), 0.0625D, 16.0D); squidScale = Mth.clamp(getDouble("mobs.squid.attributes.scale", squidScale), 0.0625D, 16.0D);
squidImmuneToEAR = getBoolean("mobs.squid.immune-to-EAR", squidImmuneToEAR); squidImmuneToEAR = getBoolean("mobs.squid.immune-to-EAR", squidImmuneToEAR);

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Crying obsidian valid for portal frames
diff --git a/src/main/java/net/minecraft/world/level/portal/PortalShape.java b/src/main/java/net/minecraft/world/level/portal/PortalShape.java diff --git a/src/main/java/net/minecraft/world/level/portal/PortalShape.java b/src/main/java/net/minecraft/world/level/portal/PortalShape.java
index 86d95edc7dd1e42b4b38eba1177cd508e72e4fc4..6c07fc507df6070854f5950a8616d2949c040656 100644 index 90056822cd17f3d33d14b3f94b34750ee522a0a9..acdff7b4a00d563739fd301c3633a266875296fa 100644
--- a/src/main/java/net/minecraft/world/level/portal/PortalShape.java --- a/src/main/java/net/minecraft/world/level/portal/PortalShape.java
+++ b/src/main/java/net/minecraft/world/level/portal/PortalShape.java +++ b/src/main/java/net/minecraft/world/level/portal/PortalShape.java
@@ -31,7 +31,7 @@ public class PortalShape { @@ -35,7 +35,7 @@ public class PortalShape {
private static final int MIN_HEIGHT = 3; private static final int MIN_HEIGHT = 3;
public static final int MAX_HEIGHT = 21; public static final int MAX_HEIGHT = 21;
private static final BlockBehaviour.StatePredicate FRAME = (iblockdata, iblockaccess, blockposition) -> { private static final BlockBehaviour.StatePredicate FRAME = (iblockdata, iblockaccess, blockposition) -> {
@@ -18,7 +18,7 @@ index 86d95edc7dd1e42b4b38eba1177cd508e72e4fc4..6c07fc507df6070854f5950a8616d294
private static final float SAFE_TRAVEL_MAX_ENTITY_XY = 4.0F; private static final float SAFE_TRAVEL_MAX_ENTITY_XY = 4.0F;
private static final double SAFE_TRAVEL_MAX_VERTICAL_DELTA = 1.0D; private static final double SAFE_TRAVEL_MAX_VERTICAL_DELTA = 1.0D;
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
index b5822e634147e8c6e6508324442ce2b4dec3824a..ce7ef9b4149021812c325bfd24cd6b9d4dc610a6 100644 index 230606116a3f5a00cf0fa0b075c65aac7806c647..d4371bebdcb3b55c412334491959835e2d52220f 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
@@ -214,6 +214,7 @@ public class PurpurConfig { @@ -214,6 +214,7 @@ public class PurpurConfig {

View File

@@ -5,19 +5,19 @@ Subject: [PATCH] Entities can use portals
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
index 8911eb7f6f307c7846eeb10f68e5cd231bd22e1b..acf10656ea445554ee537dcb2f23164ee77e4d60 100644 index 6f93348f929c33268107607dec6cce7e102c18b2..4b516fcc23c692ec2c9847bee45484d747981410 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java --- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -3277,7 +3277,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @@ -3431,7 +3431,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
public void setAsInsidePortal(Portal portal, BlockPos pos) { public void setAsInsidePortal(Portal portal, BlockPos pos) {
if (this.isOnPortalCooldown()) { if (this.isOnPortalCooldown()) {
this.setPortalCooldown(); this.setPortalCooldown();
- } else { - } else {
+ } else if (this.level.purpurConfig.entitiesCanUsePortals || this instanceof ServerPlayer) { // Purpur - Entities can use portals + } else if (this.level.purpurConfig.entitiesCanUsePortals || this instanceof ServerPlayer) { // Purpur - Entities can use portals
if (this.portalProcess != null && this.portalProcess.isSamePortal(portal)) { if (this.portalProcess != null && this.portalProcess.isSamePortal(portal)) {
this.portalProcess.updateEntryPosition(pos.immutable()); if (!this.portalProcess.isInsidePortalThisTick()) {
this.portalProcess.setAsInsidePortalThisTick(true); this.portalProcess.updateEntryPosition(pos.immutable());
@@ -3902,7 +3902,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @@ -4148,7 +4148,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
// CraftBukkit end // CraftBukkit end
public boolean canUsePortal(boolean allowVehicles) { public boolean canUsePortal(boolean allowVehicles) {
@@ -25,23 +25,22 @@ index 8911eb7f6f307c7846eeb10f68e5cd231bd22e1b..acf10656ea445554ee537dcb2f23164e
+ return (allowVehicles || !this.isPassenger()) && this.isAlive() && (this.level.purpurConfig.entitiesCanUsePortals || this instanceof ServerPlayer); // Purpur - Entities can use portals + return (allowVehicles || !this.isPassenger()) && this.isAlive() && (this.level.purpurConfig.entitiesCanUsePortals || this instanceof ServerPlayer); // Purpur - Entities can use portals
} }
public boolean canChangeDimensions(Level from, Level to) { public boolean canTeleport(Level from, Level to) {
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 45238996bb7ee057ab981178baf56194411d5b77..96dc75c3ab53dbd2df040c84ddf878881d26a051 100644 index 918923d1d95b68a99b52750974647df03070f910..85c896145bd1489a9bcdfe580f959db308c59b65 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -99,12 +99,14 @@ public class PurpurWorldConfig { @@ -100,11 +100,13 @@ public class PurpurWorldConfig {
public boolean useBetterMending = false;
public boolean boatEjectPlayersOnLand = false; public boolean boatEjectPlayersOnLand = false;
public boolean disableDropsOnCrammingDeath = false; public boolean disableDropsOnCrammingDeath = false;
+ public boolean entitiesCanUsePortals = true;
public boolean milkCuresBadOmen = true;
public double tridentLoyaltyVoidReturnHeight = 0.0D; public double tridentLoyaltyVoidReturnHeight = 0.0D;
+ public boolean entitiesCanUsePortals = true;
private void miscGameplayMechanicsSettings() { private void miscGameplayMechanicsSettings() {
useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending); useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending);
boatEjectPlayersOnLand = getBoolean("gameplay-mechanics.boat.eject-players-on-land", boatEjectPlayersOnLand); boatEjectPlayersOnLand = getBoolean("gameplay-mechanics.boat.eject-players-on-land", boatEjectPlayersOnLand);
disableDropsOnCrammingDeath = getBoolean("gameplay-mechanics.disable-drops-on-cramming-death", disableDropsOnCrammingDeath); disableDropsOnCrammingDeath = getBoolean("gameplay-mechanics.disable-drops-on-cramming-death", disableDropsOnCrammingDeath);
+ entitiesCanUsePortals = getBoolean("gameplay-mechanics.entities-can-use-portals", entitiesCanUsePortals);
milkCuresBadOmen = getBoolean("gameplay-mechanics.milk-cures-bad-omen", milkCuresBadOmen);
tridentLoyaltyVoidReturnHeight = getDouble("gameplay-mechanics.trident-loyalty-void-return-height", tridentLoyaltyVoidReturnHeight); tridentLoyaltyVoidReturnHeight = getDouble("gameplay-mechanics.trident-loyalty-void-return-height", tridentLoyaltyVoidReturnHeight);
+ entitiesCanUsePortals = getBoolean("gameplay-mechanics.entities-can-use-portals", entitiesCanUsePortals);
} }
public int elytraDamagePerSecond = 1;

View File

@@ -6,10 +6,10 @@ Subject: [PATCH] Customizable wither health and healing
Adds the ability to customize the health of the wither, as well as the amount that it heals, and how often. Adds the ability to customize the health of the wither, as well as the amount that it heals, and how often.
diff --git a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java diff --git a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java
index 8a4f48956cb0804c0d717783556b97603a1e59b2..0d753a16c77251b421735f9e38202af00baf46f9 100644 index f55842cf85dec8e5c26cd5ac52c63599f3b19cf3..2ec12ec298446b556132785d4d376130594a7cb6 100644
--- a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java --- a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java
+++ b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java +++ b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java
@@ -529,8 +529,10 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob @@ -519,8 +519,10 @@ public class WitherBoss extends Monster implements RangedAttackMob {
} }
} }
@@ -23,10 +23,10 @@ index 8a4f48956cb0804c0d717783556b97603a1e59b2..0d753a16c77251b421735f9e38202af0
this.bossEvent.setProgress(this.getHealth() / this.getMaxHealth()); this.bossEvent.setProgress(this.getHealth() / this.getMaxHealth());
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 96dc75c3ab53dbd2df040c84ddf878881d26a051..07bb161fce3e66eaac6ca347a0ad508aa80ecbf4 100644 index 85c896145bd1489a9bcdfe580f959db308c59b65..119904f2c4e9f8c4b3596a26220833d457bb60df 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -1859,6 +1859,8 @@ public class PurpurWorldConfig { @@ -1857,6 +1857,8 @@ public class PurpurWorldConfig {
public double witherMaxY = 320D; public double witherMaxY = 320D;
public double witherMaxHealth = 300.0D; public double witherMaxHealth = 300.0D;
public double witherScale = 1.0D; public double witherScale = 1.0D;
@@ -35,7 +35,7 @@ index 96dc75c3ab53dbd2df040c84ddf878881d26a051..07bb161fce3e66eaac6ca347a0ad508a
private void witherSettings() { private void witherSettings() {
witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidable = getBoolean("mobs.wither.ridable", witherRidable);
witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater);
@@ -1875,6 +1877,8 @@ public class PurpurWorldConfig { @@ -1873,6 +1875,8 @@ public class PurpurWorldConfig {
} }
witherMaxHealth = getDouble("mobs.wither.attributes.max_health", witherMaxHealth); witherMaxHealth = getDouble("mobs.wither.attributes.max_health", witherMaxHealth);
witherScale = Mth.clamp(getDouble("mobs.wither.attributes.scale", witherScale), 0.0625D, 16.0D); witherScale = Mth.clamp(getDouble("mobs.wither.attributes.scale", witherScale), 0.0625D, 16.0D);

View File

@@ -6,11 +6,11 @@ Subject: [PATCH] Allow toggling special MobSpawners per world
In vanilla, these are all hardcoded on for world type 0 (overworld) and hardcoded off for every other world type. Default config behaviour matches this. In vanilla, these are all hardcoded on for world type 0 (overworld) and hardcoded off for every other world type. Default config behaviour matches this.
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
index 8b2ab0a91a5243357400c91c01c9f27a79825047..9eeb5a5304a25f8709288bc78ec8458b70e18649 100644 index c4d8ef23a5e384ce554cc3e63e7be3e027d60e44..9538510ac96d97b8e3cdfcc9873bb3d274c351ad 100644
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java --- a/src/main/java/net/minecraft/server/level/ServerLevel.java
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
@@ -520,7 +520,24 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. @@ -588,7 +588,24 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
this.dragonParts = new Int2ObjectOpenHashMap(); // CraftBukkit end
this.tickTime = flag1; this.tickTime = flag1;
this.server = minecraftserver; this.server = minecraftserver;
- this.customSpawners = list; - this.customSpawners = list;
@@ -36,7 +36,7 @@ index 8b2ab0a91a5243357400c91c01c9f27a79825047..9eeb5a5304a25f8709288bc78ec8458b
ChunkGenerator chunkgenerator = worlddimension.generator(); ChunkGenerator chunkgenerator = worlddimension.generator();
// CraftBukkit start // CraftBukkit start
diff --git a/src/main/java/net/minecraft/world/entity/npc/WanderingTraderSpawner.java b/src/main/java/net/minecraft/world/entity/npc/WanderingTraderSpawner.java diff --git a/src/main/java/net/minecraft/world/entity/npc/WanderingTraderSpawner.java b/src/main/java/net/minecraft/world/entity/npc/WanderingTraderSpawner.java
index c72b6ea5530e54fc373c701028e1c147cea34b59..96e9fce5f9084737d2fcf4deb83305733b480179 100644 index a728dcbf956f108f01c966c7531449a506a14a87..4c1378132201c1e5d1bc01f8c0cbba91629bcffa 100644
--- a/src/main/java/net/minecraft/world/entity/npc/WanderingTraderSpawner.java --- a/src/main/java/net/minecraft/world/entity/npc/WanderingTraderSpawner.java
+++ b/src/main/java/net/minecraft/world/entity/npc/WanderingTraderSpawner.java +++ b/src/main/java/net/minecraft/world/entity/npc/WanderingTraderSpawner.java
@@ -160,7 +160,17 @@ public class WanderingTraderSpawner implements CustomSpawner { @@ -160,7 +160,17 @@ public class WanderingTraderSpawner implements CustomSpawner {
@@ -59,7 +59,7 @@ index c72b6ea5530e54fc373c701028e1c147cea34b59..96e9fce5f9084737d2fcf4deb8330573
if (spawnplacementtype.isSpawnPositionOk(world, blockposition2, EntityType.WANDERING_TRADER)) { if (spawnplacementtype.isSpawnPositionOk(world, blockposition2, EntityType.WANDERING_TRADER)) {
blockposition1 = blockposition2; blockposition1 = blockposition2;
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 07bb161fce3e66eaac6ca347a0ad508aa80ecbf4..84713d2c265d2ce097a59f64eb693742933ad8ca 100644 index 119904f2c4e9f8c4b3596a26220833d457bb60df..668ea98aee2f74ff6ac961b61360fb2e48513ebf 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -70,6 +70,12 @@ public class PurpurWorldConfig { @@ -70,6 +70,12 @@ public class PurpurWorldConfig {
@@ -75,7 +75,7 @@ index 07bb161fce3e66eaac6ca347a0ad508aa80ecbf4..84713d2c265d2ce097a59f64eb693742
private double getDouble(String path, double def) { private double getDouble(String path, double def) {
PurpurConfig.config.addDefault("world-settings.default." + path, def); PurpurConfig.config.addDefault("world-settings.default." + path, def);
return PurpurConfig.config.getDouble("world-settings." + worldName + "." + path, PurpurConfig.config.getDouble("world-settings.default." + path)); return PurpurConfig.config.getDouble("world-settings." + worldName + "." + path, PurpurConfig.config.getDouble("world-settings.default." + path));
@@ -232,6 +238,21 @@ public class PurpurWorldConfig { @@ -230,6 +236,21 @@ public class PurpurWorldConfig {
} }
} }

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Raid cooldown setting
diff --git a/src/main/java/net/minecraft/world/entity/raid/Raids.java b/src/main/java/net/minecraft/world/entity/raid/Raids.java diff --git a/src/main/java/net/minecraft/world/entity/raid/Raids.java b/src/main/java/net/minecraft/world/entity/raid/Raids.java
index 8c60f71270d909c10e6617eb64b8fdb42deb73e9..eedce2a3d67d875d5174ee125e2679480d4d412c 100644 index 439d61d8689fabe940006b9b317a6810175dccfb..6b30941a84054efb5fcccb5d9e6c80d713a23889 100644
--- a/src/main/java/net/minecraft/world/entity/raid/Raids.java --- a/src/main/java/net/minecraft/world/entity/raid/Raids.java
+++ b/src/main/java/net/minecraft/world/entity/raid/Raids.java +++ b/src/main/java/net/minecraft/world/entity/raid/Raids.java
@@ -26,6 +26,7 @@ import net.minecraft.world.phys.Vec3; @@ -26,6 +26,7 @@ import net.minecraft.world.phys.Vec3;
@@ -49,21 +49,20 @@ index 8c60f71270d909c10e6617eb64b8fdb42deb73e9..eedce2a3d67d875d5174ee125e267948
if (!raid.isStarted() && !this.raidMap.containsKey(raid.getId())) { if (!raid.isStarted() && !this.raidMap.containsKey(raid.getId())) {
this.raidMap.put(raid.getId(), raid); this.raidMap.put(raid.getId(), raid);
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 84713d2c265d2ce097a59f64eb693742933ad8ca..54e7250a70ef538ff25df1737a064690a204fa91 100644 index 668ea98aee2f74ff6ac961b61360fb2e48513ebf..0e1992ba3bbd470eee6bdd461d2f00abec5c6d55 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -108,6 +108,7 @@ public class PurpurWorldConfig { @@ -107,12 +107,14 @@ public class PurpurWorldConfig {
public boolean entitiesCanUsePortals = true; public boolean disableDropsOnCrammingDeath = false;
public boolean milkCuresBadOmen = true;
public double tridentLoyaltyVoidReturnHeight = 0.0D; public double tridentLoyaltyVoidReturnHeight = 0.0D;
public boolean entitiesCanUsePortals = true;
+ public int raidCooldownSeconds = 0; + public int raidCooldownSeconds = 0;
private void miscGameplayMechanicsSettings() { private void miscGameplayMechanicsSettings() {
useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending); useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending);
boatEjectPlayersOnLand = getBoolean("gameplay-mechanics.boat.eject-players-on-land", boatEjectPlayersOnLand); boatEjectPlayersOnLand = getBoolean("gameplay-mechanics.boat.eject-players-on-land", boatEjectPlayersOnLand);
@@ -115,6 +116,7 @@ public class PurpurWorldConfig { disableDropsOnCrammingDeath = getBoolean("gameplay-mechanics.disable-drops-on-cramming-death", disableDropsOnCrammingDeath);
entitiesCanUsePortals = getBoolean("gameplay-mechanics.entities-can-use-portals", entitiesCanUsePortals);
milkCuresBadOmen = getBoolean("gameplay-mechanics.milk-cures-bad-omen", milkCuresBadOmen);
tridentLoyaltyVoidReturnHeight = getDouble("gameplay-mechanics.trident-loyalty-void-return-height", tridentLoyaltyVoidReturnHeight); tridentLoyaltyVoidReturnHeight = getDouble("gameplay-mechanics.trident-loyalty-void-return-height", tridentLoyaltyVoidReturnHeight);
entitiesCanUsePortals = getBoolean("gameplay-mechanics.entities-can-use-portals", entitiesCanUsePortals);
+ raidCooldownSeconds = getInt("gameplay-mechanics.raid-cooldown-seconds", raidCooldownSeconds); + raidCooldownSeconds = getInt("gameplay-mechanics.raid-cooldown-seconds", raidCooldownSeconds);
} }

View File

@@ -20,14 +20,14 @@ index f7241c5292f1c012404eea11256813fbc2c2df1a..fad407d0cec0605e303e93a79752435f
ignored.add("goal_selector_1"); ignored.add("goal_selector_1");
ignored.add("goal_selector_2"); ignored.add("goal_selector_2");
diff --git a/src/main/java/net/minecraft/world/entity/monster/Drowned.java b/src/main/java/net/minecraft/world/entity/monster/Drowned.java diff --git a/src/main/java/net/minecraft/world/entity/monster/Drowned.java b/src/main/java/net/minecraft/world/entity/monster/Drowned.java
index b5a46c844e0f366828f8c287a598abb9aaeacf21..4f9daaeb1bd4d115a84b0c20649e4dd44af37924 100644 index 7dc7f8734ffb3c5e50c763cb4e750d20c6e22281..7b3c999a03d91c167dfc1a1c90750b2efd4eb675 100644
--- a/src/main/java/net/minecraft/world/entity/monster/Drowned.java --- a/src/main/java/net/minecraft/world/entity/monster/Drowned.java
+++ b/src/main/java/net/minecraft/world/entity/monster/Drowned.java +++ b/src/main/java/net/minecraft/world/entity/monster/Drowned.java
@@ -124,7 +124,19 @@ public class Drowned extends Zombie implements RangedAttackMob { @@ -125,7 +125,19 @@ public class Drowned extends Zombie implements RangedAttackMob {
this.goalSelector.addGoal(7, new RandomStrollGoal(this, 1.0D)); this.goalSelector.addGoal(7, new RandomStrollGoal(this, 1.0));
this.targetSelector.addGoal(1, (new HurtByTargetGoal(this, new Class[]{Drowned.class})).setAlertOthers(ZombifiedPiglin.class)); this.targetSelector.addGoal(1, new HurtByTargetGoal(this, Drowned.class).setAlertOthers(ZombifiedPiglin.class));
this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, Player.class, 10, true, false, this::okTarget)); this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, Player.class, 10, true, false, (target, world) -> this.okTarget(target)));
- if (this.level().spigotConfig.zombieAggressiveTowardsVillager) this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, AbstractVillager.class, false)); // Paper - Check drowned for villager aggression config - if (this.level().spigotConfig.zombieAggressiveTowardsVillager) this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, AbstractVillager.class, false)); // Paper - Check drowned for villager aggression config
+ // Purpur start + // Purpur start
+ if (this.level().spigotConfig.zombieAggressiveTowardsVillager) this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, AbstractVillager.class, false) { // Paper - Check drowned for villager aggression config + if (this.level().spigotConfig.zombieAggressiveTowardsVillager) this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, AbstractVillager.class, false) { // Paper - Check drowned for villager aggression config
+ @Override + @Override
@@ -45,10 +45,10 @@ index b5a46c844e0f366828f8c287a598abb9aaeacf21..4f9daaeb1bd4d115a84b0c20649e4dd4
this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, Axolotl.class, true, false)); this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, Axolotl.class, true, false));
this.targetSelector.addGoal(5, new NearestAttackableTargetGoal<>(this, Turtle.class, 10, true, false, Turtle.BABY_ON_LAND_SELECTOR)); this.targetSelector.addGoal(5, new NearestAttackableTargetGoal<>(this, Turtle.class, 10, true, false, Turtle.BABY_ON_LAND_SELECTOR));
diff --git a/src/main/java/net/minecraft/world/entity/monster/Zombie.java b/src/main/java/net/minecraft/world/entity/monster/Zombie.java diff --git a/src/main/java/net/minecraft/world/entity/monster/Zombie.java b/src/main/java/net/minecraft/world/entity/monster/Zombie.java
index bd24217d0c696a506c916e062b3cb5bc751981f8..c0adb41e2772ac1204bbdf8e6eee27fbfc82ef12 100644 index cb5cf34781de4e87074a70a447fd463280147bdc..e6fb53b828c1a2e76d398e88449260f6206145c3 100644
--- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java --- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java
+++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java +++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java
@@ -159,7 +159,19 @@ public class Zombie extends Monster { @@ -161,7 +161,19 @@ public class Zombie extends Monster {
this.goalSelector.addGoal(7, new WaterAvoidingRandomStrollGoal(this, 1.0D)); this.goalSelector.addGoal(7, new WaterAvoidingRandomStrollGoal(this, 1.0D));
this.targetSelector.addGoal(1, (new HurtByTargetGoal(this, new Class[0])).setAlertOthers(ZombifiedPiglin.class)); this.targetSelector.addGoal(1, (new HurtByTargetGoal(this, new Class[0])).setAlertOthers(ZombifiedPiglin.class));
this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, Player.class, true)); this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, Player.class, true));
@@ -70,10 +70,10 @@ index bd24217d0c696a506c916e062b3cb5bc751981f8..c0adb41e2772ac1204bbdf8e6eee27fb
this.targetSelector.addGoal(5, new NearestAttackableTargetGoal<>(this, Turtle.class, 10, true, false, Turtle.BABY_ON_LAND_SELECTOR)); this.targetSelector.addGoal(5, new NearestAttackableTargetGoal<>(this, Turtle.class, 10, true, false, Turtle.BABY_ON_LAND_SELECTOR));
} }
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 54e7250a70ef538ff25df1737a064690a204fa91..ad6a39364a835d698fc008fca433930b6f47800f 100644 index 0e1992ba3bbd470eee6bdd461d2f00abec5c6d55..a0a5059e5d86ff3626b7e4a6d378f9b34d6ba8dc 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -1967,6 +1967,7 @@ public class PurpurWorldConfig { @@ -1965,6 +1965,7 @@ public class PurpurWorldConfig {
public boolean zombieJockeyOnlyBaby = true; public boolean zombieJockeyOnlyBaby = true;
public double zombieJockeyChance = 0.05D; public double zombieJockeyChance = 0.05D;
public boolean zombieJockeyTryExistingChickens = true; public boolean zombieJockeyTryExistingChickens = true;
@@ -81,7 +81,7 @@ index 54e7250a70ef538ff25df1737a064690a204fa91..ad6a39364a835d698fc008fca433930b
private void zombieSettings() { private void zombieSettings() {
zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable);
zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater);
@@ -1982,6 +1983,7 @@ public class PurpurWorldConfig { @@ -1980,6 +1981,7 @@ public class PurpurWorldConfig {
zombieJockeyOnlyBaby = getBoolean("mobs.zombie.jockey.only-babies", zombieJockeyOnlyBaby); zombieJockeyOnlyBaby = getBoolean("mobs.zombie.jockey.only-babies", zombieJockeyOnlyBaby);
zombieJockeyChance = getDouble("mobs.zombie.jockey.chance", zombieJockeyChance); zombieJockeyChance = getDouble("mobs.zombie.jockey.chance", zombieJockeyChance);
zombieJockeyTryExistingChickens = getBoolean("mobs.zombie.jockey.try-existing-chickens", zombieJockeyTryExistingChickens); zombieJockeyTryExistingChickens = getBoolean("mobs.zombie.jockey.try-existing-chickens", zombieJockeyTryExistingChickens);

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Flying squids! Oh my!
diff --git a/src/main/java/net/minecraft/world/entity/GlowSquid.java b/src/main/java/net/minecraft/world/entity/GlowSquid.java diff --git a/src/main/java/net/minecraft/world/entity/GlowSquid.java b/src/main/java/net/minecraft/world/entity/GlowSquid.java
index 8211c152e6f4232e82e452b08047e4579465d770..4cd57672c548950cb4e0aa97af75ecca84be6823 100644 index 27aee968718af1ae78e2076ddc890114b2c9bb94..0f5be53c6f6a66c61dc3f2bebeb18ca61d06c10d 100644
--- a/src/main/java/net/minecraft/world/entity/GlowSquid.java --- a/src/main/java/net/minecraft/world/entity/GlowSquid.java
+++ b/src/main/java/net/minecraft/world/entity/GlowSquid.java +++ b/src/main/java/net/minecraft/world/entity/GlowSquid.java
@@ -41,6 +41,11 @@ public class GlowSquid extends Squid { @@ -43,6 +43,11 @@ public class GlowSquid extends Squid {
this.getAttribute(net.minecraft.world.entity.ai.attributes.Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.glowSquidMaxHealth); this.getAttribute(net.minecraft.world.entity.ai.attributes.Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.glowSquidMaxHealth);
} }
@@ -21,10 +21,10 @@ index 8211c152e6f4232e82e452b08047e4579465d770..4cd57672c548950cb4e0aa97af75ecca
protected ParticleOptions getInkParticle() { protected ParticleOptions getInkParticle() {
return ParticleTypes.GLOW_SQUID_INK; return ParticleTypes.GLOW_SQUID_INK;
diff --git a/src/main/java/net/minecraft/world/entity/animal/Squid.java b/src/main/java/net/minecraft/world/entity/animal/Squid.java diff --git a/src/main/java/net/minecraft/world/entity/animal/Squid.java b/src/main/java/net/minecraft/world/entity/animal/Squid.java
index 522dabcf6ec8b19902890718717fc890d430c750..ea80eca266500f93fa9c00962d078ec276814f0a 100644 index a0aa4ac61de870a374152018ebdeab47dc5b5a85..548f140c56277d46a3381b48d6f0b660c6e8feeb 100644
--- a/src/main/java/net/minecraft/world/entity/animal/Squid.java --- a/src/main/java/net/minecraft/world/entity/animal/Squid.java
+++ b/src/main/java/net/minecraft/world/entity/animal/Squid.java +++ b/src/main/java/net/minecraft/world/entity/animal/Squid.java
@@ -79,6 +79,15 @@ public class Squid extends WaterAnimal { @@ -84,6 +84,15 @@ public class Squid extends AgeableWaterCreature {
return super.getAxisForFluidCheck().offsetY(level().purpurConfig.squidOffsetWaterCheck); return super.getAxisForFluidCheck().offsetY(level().purpurConfig.squidOffsetWaterCheck);
} }
@@ -40,7 +40,7 @@ index 522dabcf6ec8b19902890718717fc890d430c750..ea80eca266500f93fa9c00962d078ec2
@Override @Override
protected void registerGoals() { protected void registerGoals() {
this.goalSelector.addGoal(0, new Squid.SquidRandomMovementGoal(this)); this.goalSelector.addGoal(0, new Squid.SquidRandomMovementGoal(this));
@@ -151,6 +160,7 @@ public class Squid extends WaterAnimal { @@ -162,6 +171,7 @@ public class Squid extends AgeableWaterCreature {
} }
if (this.isInWaterOrBubble()) { if (this.isInWaterOrBubble()) {
@@ -48,20 +48,20 @@ index 522dabcf6ec8b19902890718717fc890d430c750..ea80eca266500f93fa9c00962d078ec2
if (this.tentacleMovement < (float) Math.PI) { if (this.tentacleMovement < (float) Math.PI) {
float f = this.tentacleMovement / (float) Math.PI; float f = this.tentacleMovement / (float) Math.PI;
this.tentacleAngle = Mth.sin(f * f * (float) Math.PI) * (float) Math.PI * 0.25F; this.tentacleAngle = Mth.sin(f * f * (float) Math.PI) * (float) Math.PI * 0.25F;
@@ -358,7 +368,7 @@ public class Squid extends WaterAnimal { @@ -374,7 +384,7 @@ public class Squid extends AgeableWaterCreature {
int i = this.squid.getNoActionTime(); int i = this.squid.getNoActionTime();
if (i > 100) { if (i > 100) {
this.squid.setMovementVector(0.0F, 0.0F, 0.0F); this.squid.movementVector = Vec3.ZERO;
- } else if (this.squid.getRandom().nextInt(reducedTickDelay(50)) == 0 || !this.squid.wasTouchingWater || !this.squid.hasMovementVector()) { - } else if (this.squid.getRandom().nextInt(reducedTickDelay(50)) == 0 || !this.squid.wasTouchingWater || !this.squid.hasMovementVector()) {
+ } else if (this.squid.getRandom().nextInt(reducedTickDelay(50)) == 0 || !this.squid.isInWater() || !this.squid.hasMovementVector()) { // Purpur + } else if (this.squid.getRandom().nextInt(reducedTickDelay(50)) == 0 || !this.squid.isInWater() || !this.squid.hasMovementVector()) { // Purpur
float f = this.squid.getRandom().nextFloat() * (float) (Math.PI * 2); float f = this.squid.getRandom().nextFloat() * (float) (Math.PI * 2);
float g = Mth.cos(f) * 0.2F; this.squid.movementVector = new Vec3(
float h = -0.1F + this.squid.getRandom().nextFloat() * 0.2F; (double)(Mth.cos(f) * 0.2F), (double)(-0.1F + this.squid.getRandom().nextFloat() * 0.2F), (double)(Mth.sin(f) * 0.2F)
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index ad6a39364a835d698fc008fca433930b6f47800f..18faf8ef7c09b72849502a9e3b880d62bcc50a3f 100644 index a0a5059e5d86ff3626b7e4a6d378f9b34d6ba8dc..166a7513ee9c309cc4dd16367fcb86b2ab3b243e 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -933,11 +933,13 @@ public class PurpurWorldConfig { @@ -931,11 +931,13 @@ public class PurpurWorldConfig {
public boolean glowSquidControllable = true; public boolean glowSquidControllable = true;
public double glowSquidMaxHealth = 10.0D; public double glowSquidMaxHealth = 10.0D;
public double glowSquidScale = 1.0D; public double glowSquidScale = 1.0D;
@@ -75,7 +75,7 @@ index ad6a39364a835d698fc008fca433930b6f47800f..18faf8ef7c09b72849502a9e3b880d62
} }
public boolean goatRidable = false; public boolean goatRidable = false;
@@ -1624,6 +1626,7 @@ public class PurpurWorldConfig { @@ -1622,6 +1624,7 @@ public class PurpurWorldConfig {
public double squidScale = 1.0D; public double squidScale = 1.0D;
public boolean squidImmuneToEAR = true; public boolean squidImmuneToEAR = true;
public double squidOffsetWaterCheck = 0.0D; public double squidOffsetWaterCheck = 0.0D;
@@ -83,7 +83,7 @@ index ad6a39364a835d698fc008fca433930b6f47800f..18faf8ef7c09b72849502a9e3b880d62
private void squidSettings() { private void squidSettings() {
squidRidable = getBoolean("mobs.squid.ridable", squidRidable); squidRidable = getBoolean("mobs.squid.ridable", squidRidable);
squidControllable = getBoolean("mobs.squid.controllable", squidControllable); squidControllable = getBoolean("mobs.squid.controllable", squidControllable);
@@ -1636,6 +1639,7 @@ public class PurpurWorldConfig { @@ -1634,6 +1637,7 @@ public class PurpurWorldConfig {
squidScale = Mth.clamp(getDouble("mobs.squid.attributes.scale", squidScale), 0.0625D, 16.0D); squidScale = Mth.clamp(getDouble("mobs.squid.attributes.scale", squidScale), 0.0625D, 16.0D);
squidImmuneToEAR = getBoolean("mobs.squid.immune-to-EAR", squidImmuneToEAR); squidImmuneToEAR = getBoolean("mobs.squid.immune-to-EAR", squidImmuneToEAR);
squidOffsetWaterCheck = getDouble("mobs.squid.water-offset-check", squidOffsetWaterCheck); squidOffsetWaterCheck = getDouble("mobs.squid.water-offset-check", squidOffsetWaterCheck);

View File

@@ -5,35 +5,35 @@ Subject: [PATCH] Infinity bow settings
diff --git a/src/main/java/net/minecraft/world/item/BowItem.java b/src/main/java/net/minecraft/world/item/BowItem.java diff --git a/src/main/java/net/minecraft/world/item/BowItem.java b/src/main/java/net/minecraft/world/item/BowItem.java
index 6eb5c0f23d9dc61e69ad5ad493c89602a9dcd4b5..4db2032178471860baddc6b669c9a4f8cffd084b 100644 index bb593209c95c9cf1f9c5d52d52fab4a33ddbabcf..1d4d0799a86b9940b5e3b614c5a188ade5133f7e 100644
--- a/src/main/java/net/minecraft/world/item/BowItem.java --- a/src/main/java/net/minecraft/world/item/BowItem.java
+++ b/src/main/java/net/minecraft/world/item/BowItem.java +++ b/src/main/java/net/minecraft/world/item/BowItem.java
@@ -26,6 +26,11 @@ public class BowItem extends ProjectileWeaponItem { @@ -28,6 +28,11 @@ public class BowItem extends ProjectileWeaponItem {
public void releaseUsing(ItemStack stack, Level world, LivingEntity user, int remainingUseTicks) { return false;
if (user instanceof Player player) { } else {
ItemStack itemStack = player.getProjectile(stack); ItemStack itemStack = player.getProjectile(stack);
+ // Purpur start + // Purpur start
+ if (world.purpurConfig.infinityWorksWithoutArrows && itemStack.isEmpty() && net.minecraft.world.item.enchantment.EnchantmentHelper.getItemEnchantmentLevel(net.minecraft.world.item.enchantment.Enchantments.INFINITY, stack) > 0) { + if (world.purpurConfig.infinityWorksWithoutArrows && itemStack.isEmpty() && net.minecraft.world.item.enchantment.EnchantmentHelper.getItemEnchantmentLevel(net.minecraft.world.item.enchantment.Enchantments.INFINITY, stack) > 0) {
+ itemStack = new ItemStack(Items.ARROW); + itemStack = new ItemStack(Items.ARROW);
+ } + }
+ // Purpur end + // Purpur end
if (!itemStack.isEmpty()) { if (itemStack.isEmpty()) {
int i = this.getUseDuration(stack, user) - remainingUseTicks; return false;
float f = getPowerForTime(i); } else {
@@ -82,7 +87,7 @@ public class BowItem extends ProjectileWeaponItem { @@ -89,7 +94,7 @@ public class BowItem extends ProjectileWeaponItem {
public InteractionResultHolder<ItemStack> use(Level world, Player user, InteractionHand hand) { public InteractionResult use(Level world, Player user, InteractionHand hand) {
ItemStack itemStack = user.getItemInHand(hand); ItemStack itemStack = user.getItemInHand(hand);
boolean bl = !user.getProjectile(itemStack).isEmpty(); boolean bl = !user.getProjectile(itemStack).isEmpty();
- if (!user.hasInfiniteMaterials() && !bl) { - if (!user.hasInfiniteMaterials() && !bl) {
+ if (!user.hasInfiniteMaterials() && !bl && !(world.purpurConfig.infinityWorksWithoutArrows && net.minecraft.world.item.enchantment.EnchantmentHelper.getItemEnchantmentLevel(net.minecraft.world.item.enchantment.Enchantments.INFINITY, itemStack) > 0)) { // Purpur + if (!user.hasInfiniteMaterials() && !bl && !(world.purpurConfig.infinityWorksWithoutArrows && net.minecraft.world.item.enchantment.EnchantmentHelper.getItemEnchantmentLevel(net.minecraft.world.item.enchantment.Enchantments.INFINITY, itemStack) > 0)) { // Purpur
return InteractionResultHolder.fail(itemStack); return InteractionResult.FAIL;
} else { } else {
user.startUsingItem(hand); user.startUsingItem(hand);
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 18faf8ef7c09b72849502a9e3b880d62bcc50a3f..0abf6598e8bf4ac59ea4387ee07d4de68032076b 100644 index 166a7513ee9c309cc4dd16367fcb86b2ab3b243e..9031028533afbc896be2b1402b073c1bdd06dcfe 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -135,6 +135,11 @@ public class PurpurWorldConfig { @@ -133,6 +133,11 @@ public class PurpurWorldConfig {
entityLifeSpan = getInt("gameplay-mechanics.entity-lifespan", entityLifeSpan); entityLifeSpan = getInt("gameplay-mechanics.entity-lifespan", entityLifeSpan);
} }

View File

@@ -4,24 +4,11 @@ Date: Sat, 10 Oct 2020 14:29:55 -0500
Subject: [PATCH] Configurable daylight cycle Subject: [PATCH] Configurable daylight cycle
diff --git a/src/main/java/net/minecraft/network/protocol/game/ClientboundSetTimePacket.java b/src/main/java/net/minecraft/network/protocol/game/ClientboundSetTimePacket.java
index 76ef195a5074006b009acd9cc1744667c6aecbb9..659577549e132754281df76a7a1bfd884443c56a 100644
--- a/src/main/java/net/minecraft/network/protocol/game/ClientboundSetTimePacket.java
+++ b/src/main/java/net/minecraft/network/protocol/game/ClientboundSetTimePacket.java
@@ -10,7 +10,7 @@ public class ClientboundSetTimePacket implements Packet<ClientGamePacketListener
ClientboundSetTimePacket::write, ClientboundSetTimePacket::new
);
private final long gameTime;
- private final long dayTime;
+ private long dayTime; public void setDayTime(long dayTime) { this.dayTime = dayTime; } // Purpur
public ClientboundSetTimePacket(long time, long timeOfDay, boolean doDaylightCycle) {
this.gameTime = time;
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index b2ce50799ff158ff2160b0d75404e52e34d54805..f514c421b5ff7e46b2d211f895dcb0d7a375704f 100644 index e96f55191f97490bbaf5fb990c33237469fa07e0..d5efd5fdbf0acc89de3790f30b9739809f0a02d4 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java --- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -1784,7 +1784,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa @@ -1804,7 +1804,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
long worldTime = level.getGameTime(); long worldTime = level.getGameTime();
final ClientboundSetTimePacket worldPacket = new ClientboundSetTimePacket(worldTime, dayTime, doDaylight); final ClientboundSetTimePacket worldPacket = new ClientboundSetTimePacket(worldTime, dayTime, doDaylight);
for (Player entityhuman : level.players()) { for (Player entityhuman : level.players()) {
@@ -31,10 +18,10 @@ index b2ce50799ff158ff2160b0d75404e52e34d54805..f514c421b5ff7e46b2d211f895dcb0d7
} }
ServerPlayer entityplayer = (ServerPlayer) entityhuman; ServerPlayer entityplayer = (ServerPlayer) entityhuman;
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
index 9eeb5a5304a25f8709288bc78ec8458b70e18649..e077c6cb1880ee19e696d2430b07d1101e330919 100644 index 9538510ac96d97b8e3cdfcc9873bb3d274c351ad..8dd211d20a695164c2086c03c8b0237ba109fda4 100644
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java --- a/src/main/java/net/minecraft/server/level/ServerLevel.java
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
@@ -221,6 +221,8 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. @@ -224,6 +224,8 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
private final StructureManager structureManager; private final StructureManager structureManager;
private final StructureCheck structureCheck; private final StructureCheck structureCheck;
private final boolean tickTime; private final boolean tickTime;
@@ -43,18 +30,18 @@ index 9eeb5a5304a25f8709288bc78ec8458b70e18649..e077c6cb1880ee19e696d2430b07d110
private final RandomSequences randomSequences; private final RandomSequences randomSequences;
// CraftBukkit start // CraftBukkit start
@@ -608,6 +610,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. @@ -677,6 +679,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
this.chunkTaskScheduler = new ca.spottedleaf.moonrise.patches.chunk_system.scheduling.ChunkTaskScheduler((ServerLevel)(Object)this, ca.spottedleaf.moonrise.common.util.MoonriseCommon.WORKER_POOL); this.chunkDataController = new ca.spottedleaf.moonrise.patches.chunk_system.io.datacontroller.ChunkDataController((ServerLevel)(Object)this, this.chunkTaskScheduler);
// Paper end - rewrite chunk system // Paper end - rewrite chunk system
this.getCraftServer().addWorld(this.getWorld()); // CraftBukkit this.getCraftServer().addWorld(this.getWorld()); // CraftBukkit
+ this.preciseTime = this.serverLevelData.getDayTime(); // Purpur + this.preciseTime = this.serverLevelData.getDayTime(); // Purpur
} }
// Paper start // Paper start
@@ -798,6 +801,13 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. @@ -854,6 +857,13 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
this.serverLevelData.setGameTime(i);
this.serverLevelData.getScheduledEvents().tick(this.server, i); this.serverLevelData.getScheduledEvents().tick(this.server, i);
if (this.levelData.getGameRules().getBoolean(GameRules.RULE_DAYLIGHT)) { Profiler.get().pop();
if (this.serverLevelData.getGameRules().getBoolean(GameRules.RULE_DAYLIGHT)) {
+ // Purpur start + // Purpur start
+ int incrementTicks = isDay() ? this.purpurConfig.daytimeTicks : this.purpurConfig.nighttimeTicks; + int incrementTicks = isDay() ? this.purpurConfig.daytimeTicks : this.purpurConfig.nighttimeTicks;
+ if (incrementTicks != 12000) { + if (incrementTicks != 12000) {
@@ -65,7 +52,7 @@ index 9eeb5a5304a25f8709288bc78ec8458b70e18649..e077c6cb1880ee19e696d2430b07d110
this.setDayTime(this.levelData.getDayTime() + 1L); this.setDayTime(this.levelData.getDayTime() + 1L);
} }
@@ -806,7 +816,21 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. @@ -862,7 +872,21 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
public void setDayTime(long timeOfDay) { public void setDayTime(long timeOfDay) {
this.serverLevelData.setDayTime(timeOfDay); this.serverLevelData.setDayTime(timeOfDay);
@@ -88,10 +75,10 @@ index 9eeb5a5304a25f8709288bc78ec8458b70e18649..e077c6cb1880ee19e696d2430b07d110
public void tickCustomSpawners(boolean spawnMonsters, boolean spawnAnimals) { public void tickCustomSpawners(boolean spawnMonsters, boolean spawnAnimals) {
Iterator iterator = this.customSpawners.iterator(); Iterator iterator = this.customSpawners.iterator();
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 0abf6598e8bf4ac59ea4387ee07d4de68032076b..ac473b14269e124bbb60d063ee869103800e7cbc 100644 index 9031028533afbc896be2b1402b073c1bdd06dcfe..50cc76689e64b27172e1806e564c8fae43378234 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -119,6 +119,13 @@ public class PurpurWorldConfig { @@ -117,6 +117,13 @@ public class PurpurWorldConfig {
raidCooldownSeconds = getInt("gameplay-mechanics.raid-cooldown-seconds", raidCooldownSeconds); raidCooldownSeconds = getInt("gameplay-mechanics.raid-cooldown-seconds", raidCooldownSeconds);
} }

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Furnace uses lava from underneath
diff --git a/src/main/java/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java diff --git a/src/main/java/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java
index 730aca233f6e7564d4cb85b5b628d23c4f01d2f4..699bdc1f01a95ecdfe899493c8d81ec31cc9fa4b 100644 index 15e0861486a2bda3e2f4049b1b5a299c870acd31..91a158ed90b7ce3eac7277fd962682a0226c08ed 100644
--- a/src/main/java/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java --- a/src/main/java/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java
+++ b/src/main/java/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java
@@ -335,6 +335,21 @@ public abstract class AbstractFurnaceBlockEntity extends BaseContainerBlockEntit @@ -219,6 +219,21 @@ public abstract class AbstractFurnaceBlockEntity extends BaseContainerBlockEntit
} }
ItemStack itemstack = (ItemStack) blockEntity.items.get(1); ItemStack itemstack = (ItemStack) blockEntity.items.get(1);
@@ -30,19 +30,19 @@ index 730aca233f6e7564d4cb85b5b628d23c4f01d2f4..699bdc1f01a95ecdfe899493c8d81ec3
ItemStack itemstack1 = (ItemStack) blockEntity.items.get(0); ItemStack itemstack1 = (ItemStack) blockEntity.items.get(0);
boolean flag2 = !itemstack1.isEmpty(); boolean flag2 = !itemstack1.isEmpty();
boolean flag3 = !itemstack.isEmpty(); boolean flag3 = !itemstack.isEmpty();
@@ -421,6 +436,7 @@ public abstract class AbstractFurnaceBlockEntity extends BaseContainerBlockEntit @@ -308,6 +323,7 @@ public abstract class AbstractFurnaceBlockEntity extends BaseContainerBlockEntit
setChanged(world, pos, state); setChanged(world, pos, state);
} }
+ if (usedLavaFromUnderneath) blockEntity.items.set(1, ItemStack.EMPTY); // Purpur + if (usedLavaFromUnderneath) blockEntity.items.set(1, ItemStack.EMPTY); // Purpur
} }
private static boolean canBurn(RegistryAccess registryManager, @Nullable RecipeHolder<?> recipe, NonNullList<ItemStack> slots, int count) { private static boolean canBurn(RegistryAccess dynamicRegistryManager, @Nullable RecipeHolder<? extends AbstractCookingRecipe> recipe, SingleRecipeInput input, NonNullList<ItemStack> inventory, int maxCount) {
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index ac473b14269e124bbb60d063ee869103800e7cbc..c0a4aa371c870756333465659b747144a3bae5f4 100644 index 50cc76689e64b27172e1806e564c8fae43378234..8c2a26c150bf43f4e344c4bdf49b90926cd044b0 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -365,6 +365,17 @@ public class PurpurWorldConfig { @@ -363,6 +363,17 @@ public class PurpurWorldConfig {
farmlandGetsMoistFromBelow = getBoolean("blocks.farmland.gets-moist-from-below", farmlandGetsMoistFromBelow); farmlandGetsMoistFromBelow = getBoolean("blocks.farmland.gets-moist-from-below", farmlandGetsMoistFromBelow);
} }

View File

@@ -7,10 +7,10 @@ This prevents keeping arrows alive indefinitely (such as when the block
the arrow is stuck in gets removed, like a piston head going up/down) the arrow is stuck in gets removed, like a piston head going up/down)
diff --git a/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java b/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java diff --git a/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java b/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java
index 9ca29b3d4bf8bca5f51f3644e12fcbec2cb5d35e..2ace900721f4aa185b8ed28ac95feb50cb89453f 100644 index accc246f441c8bf5e1a755cfc0db8f97c0c01c6b..75d65b795a7802c0c5b5bd4a6ed429209f987452 100644
--- a/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java --- a/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java
+++ b/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java +++ b/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java
@@ -356,7 +356,7 @@ public abstract class AbstractArrow extends Projectile { @@ -371,7 +371,7 @@ public abstract class AbstractArrow extends Projectile {
Vec3 vec3d = this.getDeltaMovement(); Vec3 vec3d = this.getDeltaMovement();
this.setDeltaMovement(vec3d.multiply((double) (this.random.nextFloat() * 0.2F), (double) (this.random.nextFloat() * 0.2F), (double) (this.random.nextFloat() * 0.2F))); this.setDeltaMovement(vec3d.multiply((double) (this.random.nextFloat() * 0.2F), (double) (this.random.nextFloat() * 0.2F), (double) (this.random.nextFloat() * 0.2F)));
@@ -18,9 +18,9 @@ index 9ca29b3d4bf8bca5f51f3644e12fcbec2cb5d35e..2ace900721f4aa185b8ed28ac95feb50
+ if (this.level().purpurConfig.arrowMovementResetsDespawnCounter) this.life = 0; // Purpur - do not reset despawn counter + if (this.level().purpurConfig.arrowMovementResetsDespawnCounter) this.life = 0; // Purpur - do not reset despawn counter
} }
@Override public boolean isInGround() {
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index c0a4aa371c870756333465659b747144a3bae5f4..ac680a0b331d7a4a72c3f973a3a7440202651631 100644 index 8c2a26c150bf43f4e344c4bdf49b90926cd044b0..1b005150d1ab5e561d2e30c895432c2c50fb061c 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -102,6 +102,11 @@ public class PurpurWorldConfig { @@ -102,6 +102,11 @@ public class PurpurWorldConfig {

View File

@@ -5,12 +5,12 @@ Subject: [PATCH] Ability to re-add farmland mechanics from Alpha
diff --git a/src/main/java/net/minecraft/world/level/block/FarmBlock.java b/src/main/java/net/minecraft/world/level/block/FarmBlock.java diff --git a/src/main/java/net/minecraft/world/level/block/FarmBlock.java b/src/main/java/net/minecraft/world/level/block/FarmBlock.java
index da85fabd75e9bd5ebece7127ef5b512df16fe3ac..dc356bd0931af9bdab9ec71e3de66e88a67375ad 100644 index df89b18f0d5d2dad5745ec65bcd9e4a7bf2f1f2b..e744a117d2f25ad24c87263ba2ab7f760b6e594d 100644
--- a/src/main/java/net/minecraft/world/level/block/FarmBlock.java --- a/src/main/java/net/minecraft/world/level/block/FarmBlock.java
+++ b/src/main/java/net/minecraft/world/level/block/FarmBlock.java +++ b/src/main/java/net/minecraft/world/level/block/FarmBlock.java
@@ -125,6 +125,14 @@ public class FarmBlock extends Block { @@ -126,6 +126,14 @@ public class FarmBlock extends Block {
return; return;
} }
+ // Purpur start + // Purpur start
+ if (world.purpurConfig.farmlandAlpha) { + if (world.purpurConfig.farmlandAlpha) {
@@ -20,14 +20,14 @@ index da85fabd75e9bd5ebece7127ef5b512df16fe3ac..dc356bd0931af9bdab9ec71e3de66e88
+ } + }
+ } + }
+ // Purpur end + // Purpur end
if (!CraftEventFactory.callEntityChangeBlockEvent(entity, pos, Blocks.DIRT.defaultBlockState())) { if (!CraftEventFactory.callEntityChangeBlockEvent(entity, pos, Blocks.DIRT.defaultBlockState())) {
return; return;
} }
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index ac680a0b331d7a4a72c3f973a3a7440202651631..1865aff6f5601fc24a86a41c84bebc282ff9b111 100644 index 1b005150d1ab5e561d2e30c895432c2c50fb061c..0e05ebe9ee52033d86373bd2ad1c6f12503b3128 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -366,8 +366,10 @@ public class PurpurWorldConfig { @@ -364,8 +364,10 @@ public class PurpurWorldConfig {
} }
public boolean farmlandGetsMoistFromBelow = false; public boolean farmlandGetsMoistFromBelow = false;

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Add adjustable breeding cooldown to config
diff --git a/src/main/java/net/minecraft/world/entity/animal/Animal.java b/src/main/java/net/minecraft/world/entity/animal/Animal.java diff --git a/src/main/java/net/minecraft/world/entity/animal/Animal.java b/src/main/java/net/minecraft/world/entity/animal/Animal.java
index 1808e1b01afa3041a54c9c9a7586d4d61960527a..5b523f3fa323378a8f96f58a9e252d2ec0d114a7 100644 index 5677dc97ed83652f261100cf391883cfac7d16fe..4637d062b6a4c4d6de2ef54ec3cfdeb4344ff38e 100644
--- a/src/main/java/net/minecraft/world/entity/animal/Animal.java --- a/src/main/java/net/minecraft/world/entity/animal/Animal.java
+++ b/src/main/java/net/minecraft/world/entity/animal/Animal.java +++ b/src/main/java/net/minecraft/world/entity/animal/Animal.java
@@ -147,7 +147,7 @@ public abstract class Animal extends AgeableMob { @@ -157,7 +157,7 @@ public abstract class Animal extends AgeableMob {
if (this.isFood(itemstack)) { if (this.isFood(itemstack)) {
int i = this.getAge(); int i = this.getAge();
@@ -17,7 +17,7 @@ index 1808e1b01afa3041a54c9c9a7586d4d61960527a..5b523f3fa323378a8f96f58a9e252d2e
final ItemStack breedCopy = itemstack.copy(); // Paper - Fix EntityBreedEvent copying final ItemStack breedCopy = itemstack.copy(); // Paper - Fix EntityBreedEvent copying
this.usePlayerItem(player, hand, itemstack); this.usePlayerItem(player, hand, itemstack);
this.setInLove(player, breedCopy); // Paper - Fix EntityBreedEvent copying this.setInLove(player, breedCopy); // Paper - Fix EntityBreedEvent copying
@@ -235,12 +235,20 @@ public abstract class Animal extends AgeableMob { @@ -261,12 +261,20 @@ public abstract class Animal extends AgeableMob {
AgeableMob entityageable = this.getBreedOffspring(world, other); AgeableMob entityageable = this.getBreedOffspring(world, other);
if (entityageable != null) { if (entityageable != null) {
@@ -42,11 +42,11 @@ index 1808e1b01afa3041a54c9c9a7586d4d61960527a..5b523f3fa323378a8f96f58a9e252d2e
EntityBreedEvent entityBreedEvent = org.bukkit.craftbukkit.event.CraftEventFactory.callEntityBreedEvent(entityageable, this, other, breeder, this.breedItem, experience); EntityBreedEvent entityBreedEvent = org.bukkit.craftbukkit.event.CraftEventFactory.callEntityBreedEvent(entityageable, this, other, breeder, this.breedItem, experience);
if (entityBreedEvent.isCancelled()) { if (entityBreedEvent.isCancelled()) {
diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java
index df881431c8f32e2c12224b44084ca4d71edf9ab3..7bc1d9ed3a3e3679caff8da0a38a3de93fc9ebac 100644 index 82025f6dd73366a259418c2039638a6dcc6d4fc1..85ae5c9c873dab19f897fe50b70c62e3c094bd42 100644
--- a/src/main/java/net/minecraft/world/level/Level.java --- a/src/main/java/net/minecraft/world/level/Level.java
+++ b/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java
@@ -182,6 +182,49 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl @@ -183,6 +183,49 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl
public final Map<Explosion.CacheKey, Float> explosionDensityCache = new HashMap<>(); // Paper - Optimize explosions public final Map<ServerExplosion.CacheKey, Float> explosionDensityCache = new HashMap<>(); // Paper - Optimize explosions
public java.util.ArrayDeque<net.minecraft.world.level.block.RedstoneTorchBlock.Toggle> redstoneUpdateInfos; // Paper - Faster redstone torch rapid clock removal; Move from Map in BlockRedstoneTorch to here public java.util.ArrayDeque<net.minecraft.world.level.block.RedstoneTorchBlock.Toggle> redstoneUpdateInfos; // Paper - Faster redstone torch rapid clock removal; Move from Map in BlockRedstoneTorch to here
+ // Purpur start + // Purpur start
@@ -95,7 +95,7 @@ index df881431c8f32e2c12224b44084ca4d71edf9ab3..7bc1d9ed3a3e3679caff8da0a38a3de9
public CraftWorld getWorld() { public CraftWorld getWorld() {
return this.world; return this.world;
} }
@@ -689,6 +732,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl @@ -845,6 +888,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl
this.spigotConfig = new org.spigotmc.SpigotWorldConfig(((net.minecraft.world.level.storage.PrimaryLevelData) worlddatamutable).getLevelName()); // Spigot this.spigotConfig = new org.spigotmc.SpigotWorldConfig(((net.minecraft.world.level.storage.PrimaryLevelData) worlddatamutable).getLevelName()); // Spigot
this.paperConfig = paperWorldConfigCreator.apply(this.spigotConfig); // Paper - create paper world config this.paperConfig = paperWorldConfigCreator.apply(this.spigotConfig); // Paper - create paper world config
this.purpurConfig = new org.purpurmc.purpur.PurpurWorldConfig(((net.minecraft.world.level.storage.PrimaryLevelData) worlddatamutable).getLevelName(), env); // Purpur this.purpurConfig = new org.purpurmc.purpur.PurpurWorldConfig(((net.minecraft.world.level.storage.PrimaryLevelData) worlddatamutable).getLevelName(), env); // Purpur
@@ -104,20 +104,20 @@ index df881431c8f32e2c12224b44084ca4d71edf9ab3..7bc1d9ed3a3e3679caff8da0a38a3de9
this.world = new CraftWorld((ServerLevel) this, gen, biomeProvider, env); this.world = new CraftWorld((ServerLevel) this, gen, biomeProvider, env);
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 1865aff6f5601fc24a86a41c84bebc282ff9b111..1f2af3b001ce000cd504a9a5dafb74f65b3b468e 100644 index 0e05ebe9ee52033d86373bd2ad1c6f12503b3128..c02b8212cb56912e0eb244f47aa094c7879be89b 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -114,6 +114,7 @@ public class PurpurWorldConfig { @@ -113,6 +113,7 @@ public class PurpurWorldConfig {
public boolean milkCuresBadOmen = true;
public double tridentLoyaltyVoidReturnHeight = 0.0D; public double tridentLoyaltyVoidReturnHeight = 0.0D;
public boolean entitiesCanUsePortals = true;
public int raidCooldownSeconds = 0; public int raidCooldownSeconds = 0;
+ public int animalBreedingCooldownSeconds = 0; + public int animalBreedingCooldownSeconds = 0;
private void miscGameplayMechanicsSettings() { private void miscGameplayMechanicsSettings() {
useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending); useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending);
boatEjectPlayersOnLand = getBoolean("gameplay-mechanics.boat.eject-players-on-land", boatEjectPlayersOnLand); boatEjectPlayersOnLand = getBoolean("gameplay-mechanics.boat.eject-players-on-land", boatEjectPlayersOnLand);
@@ -122,6 +123,7 @@ public class PurpurWorldConfig { @@ -120,6 +121,7 @@ public class PurpurWorldConfig {
milkCuresBadOmen = getBoolean("gameplay-mechanics.milk-cures-bad-omen", milkCuresBadOmen);
tridentLoyaltyVoidReturnHeight = getDouble("gameplay-mechanics.trident-loyalty-void-return-height", tridentLoyaltyVoidReturnHeight); tridentLoyaltyVoidReturnHeight = getDouble("gameplay-mechanics.trident-loyalty-void-return-height", tridentLoyaltyVoidReturnHeight);
entitiesCanUsePortals = getBoolean("gameplay-mechanics.entities-can-use-portals", entitiesCanUsePortals);
raidCooldownSeconds = getInt("gameplay-mechanics.raid-cooldown-seconds", raidCooldownSeconds); raidCooldownSeconds = getInt("gameplay-mechanics.raid-cooldown-seconds", raidCooldownSeconds);
+ animalBreedingCooldownSeconds = getInt("gameplay-mechanics.animal-breeding-cooldown-seconds", animalBreedingCooldownSeconds); + animalBreedingCooldownSeconds = getInt("gameplay-mechanics.animal-breeding-cooldown-seconds", animalBreedingCooldownSeconds);
} }

View File

@@ -22,10 +22,10 @@ index 0a608418f87b71d5d71706712e1f82da0d7e4d34..03e7ca83e4c28dfaa5b52bcb100bd542
// CraftBukkit end // CraftBukkit end
world.broadcastEntityEvent(entityvillager2, (byte) 12); world.broadcastEntityEvent(entityvillager2, (byte) 12);
diff --git a/src/main/java/net/minecraft/world/entity/animal/Animal.java b/src/main/java/net/minecraft/world/entity/animal/Animal.java diff --git a/src/main/java/net/minecraft/world/entity/animal/Animal.java b/src/main/java/net/minecraft/world/entity/animal/Animal.java
index 5b523f3fa323378a8f96f58a9e252d2ec0d114a7..91c1093ecef7c8917b69674ffc936b4ae71871e2 100644 index 4637d062b6a4c4d6de2ef54ec3cfdeb4344ff38e..9987d28ea145f6d0126cb4ea22001e0922fb51bd 100644
--- a/src/main/java/net/minecraft/world/entity/animal/Animal.java --- a/src/main/java/net/minecraft/world/entity/animal/Animal.java
+++ b/src/main/java/net/minecraft/world/entity/animal/Animal.java +++ b/src/main/java/net/minecraft/world/entity/animal/Animal.java
@@ -43,6 +43,7 @@ public abstract class Animal extends AgeableMob { @@ -49,6 +49,7 @@ public abstract class Animal extends AgeableMob {
@Nullable @Nullable
public UUID loveCause; public UUID loveCause;
public ItemStack breedItem; // CraftBukkit - Add breedItem variable public ItemStack breedItem; // CraftBukkit - Add breedItem variable
@@ -33,7 +33,7 @@ index 5b523f3fa323378a8f96f58a9e252d2ec0d114a7..91c1093ecef7c8917b69674ffc936b4a
protected Animal(EntityType<? extends Animal> type, Level world) { protected Animal(EntityType<? extends Animal> type, Level world) {
super(type, world); super(type, world);
@@ -276,8 +277,10 @@ public abstract class Animal extends AgeableMob { @@ -302,8 +303,10 @@ public abstract class Animal extends AgeableMob {
entityplayer.awardStat(Stats.ANIMALS_BRED); entityplayer.awardStat(Stats.ANIMALS_BRED);
CriteriaTriggers.BRED_ANIMALS.trigger(entityplayer, this, entityanimal, entityageable); CriteriaTriggers.BRED_ANIMALS.trigger(entityplayer, this, entityanimal, entityageable);
} // Paper } // Paper
@@ -47,10 +47,10 @@ index 5b523f3fa323378a8f96f58a9e252d2ec0d114a7..91c1093ecef7c8917b69674ffc936b4a
entityanimal.resetLove(); entityanimal.resetLove();
worldserver.broadcastEntityEvent(this, (byte) 18); worldserver.broadcastEntityEvent(this, (byte) 18);
diff --git a/src/main/java/net/minecraft/world/entity/animal/Bee.java b/src/main/java/net/minecraft/world/entity/animal/Bee.java diff --git a/src/main/java/net/minecraft/world/entity/animal/Bee.java b/src/main/java/net/minecraft/world/entity/animal/Bee.java
index 536407b0cb28bd202f5235d1c3ba46e12899e11c..4b57756e938db00f5c6eba915c096110d68751eb 100644 index d000acd339a1967d2c448ed8d66c4f1347f797fd..51b736979e43cd0e60a8ecaf2cf95511b9f4d858 100644
--- a/src/main/java/net/minecraft/world/entity/animal/Bee.java --- a/src/main/java/net/minecraft/world/entity/animal/Bee.java
+++ b/src/main/java/net/minecraft/world/entity/animal/Bee.java +++ b/src/main/java/net/minecraft/world/entity/animal/Bee.java
@@ -484,6 +484,11 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { @@ -491,6 +491,11 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal {
this.getAttribute(Attributes.SCALE).setBaseValue(this.level().purpurConfig.beeScale); this.getAttribute(Attributes.SCALE).setBaseValue(this.level().purpurConfig.beeScale);
} }
@@ -63,10 +63,10 @@ index 536407b0cb28bd202f5235d1c3ba46e12899e11c..4b57756e938db00f5c6eba915c096110
public int getRemainingPersistentAngerTime() { public int getRemainingPersistentAngerTime() {
return (Integer) this.entityData.get(Bee.DATA_REMAINING_ANGER_TIME); return (Integer) this.entityData.get(Bee.DATA_REMAINING_ANGER_TIME);
diff --git a/src/main/java/net/minecraft/world/entity/animal/Cat.java b/src/main/java/net/minecraft/world/entity/animal/Cat.java diff --git a/src/main/java/net/minecraft/world/entity/animal/Cat.java b/src/main/java/net/minecraft/world/entity/animal/Cat.java
index 89ad4ac9d20d1e07e4243b0e01a33eab0ec726a8..c8266b1a6b609ef92bd83dcb0e86e3cf47ccce6d 100644 index 6c773af722ccb9e144d8858a013c120ecbbcfa4c..f79146925e99da08492e7b445006be003a56f340 100644
--- a/src/main/java/net/minecraft/world/entity/animal/Cat.java --- a/src/main/java/net/minecraft/world/entity/animal/Cat.java
+++ b/src/main/java/net/minecraft/world/entity/animal/Cat.java +++ b/src/main/java/net/minecraft/world/entity/animal/Cat.java
@@ -134,6 +134,11 @@ public class Cat extends TamableAnimal implements VariantHolder<Holder<CatVarian @@ -129,6 +129,11 @@ public class Cat extends TamableAnimal implements VariantHolder<Holder<CatVarian
this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.catMaxHealth); this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.catMaxHealth);
this.getAttribute(Attributes.SCALE).setBaseValue(this.level().purpurConfig.catScale); this.getAttribute(Attributes.SCALE).setBaseValue(this.level().purpurConfig.catScale);
} }
@@ -77,12 +77,12 @@ index 89ad4ac9d20d1e07e4243b0e01a33eab0ec726a8..c8266b1a6b609ef92bd83dcb0e86e3cf
+ } + }
// Purpur end // Purpur end
public ResourceLocation getTextureId() { @Override
diff --git a/src/main/java/net/minecraft/world/entity/animal/Chicken.java b/src/main/java/net/minecraft/world/entity/animal/Chicken.java diff --git a/src/main/java/net/minecraft/world/entity/animal/Chicken.java b/src/main/java/net/minecraft/world/entity/animal/Chicken.java
index 10101c733154f9e9c725e60e565f735bda14bf5f..38f0fd9c126571d03ca6789a9b8273245168b8db 100644 index 798a59046c3ac9a3838f7bcaf7bb21e738b76e44..16cc3fdf412bfb46e766b56d25a92bdf93cffeed 100644
--- a/src/main/java/net/minecraft/world/entity/animal/Chicken.java --- a/src/main/java/net/minecraft/world/entity/animal/Chicken.java
+++ b/src/main/java/net/minecraft/world/entity/animal/Chicken.java +++ b/src/main/java/net/minecraft/world/entity/animal/Chicken.java
@@ -80,6 +80,11 @@ public class Chicken extends Animal { @@ -79,6 +79,11 @@ public class Chicken extends Animal {
} }
// Purpur end // Purpur end
@@ -95,7 +95,7 @@ index 10101c733154f9e9c725e60e565f735bda14bf5f..38f0fd9c126571d03ca6789a9b827324
protected void registerGoals() { protected void registerGoals() {
this.goalSelector.addGoal(0, new FloatGoal(this)); this.goalSelector.addGoal(0, new FloatGoal(this));
diff --git a/src/main/java/net/minecraft/world/entity/animal/Cow.java b/src/main/java/net/minecraft/world/entity/animal/Cow.java diff --git a/src/main/java/net/minecraft/world/entity/animal/Cow.java b/src/main/java/net/minecraft/world/entity/animal/Cow.java
index c9f63f3716b37dbf5f4bb4c66b78ba0b97edd686..a52b94a4b9d3e65586fbfc2e3d977d40daf59ee5 100644 index 7f7d68d09b070c24ba1567967c5d228c73fd14b9..f14707692217a753db3062a3bda7c08b71eb95e9 100644
--- a/src/main/java/net/minecraft/world/entity/animal/Cow.java --- a/src/main/java/net/minecraft/world/entity/animal/Cow.java
+++ b/src/main/java/net/minecraft/world/entity/animal/Cow.java +++ b/src/main/java/net/minecraft/world/entity/animal/Cow.java
@@ -67,6 +67,11 @@ public class Cow extends Animal { @@ -67,6 +67,11 @@ public class Cow extends Animal {
@@ -111,10 +111,10 @@ index c9f63f3716b37dbf5f4bb4c66b78ba0b97edd686..a52b94a4b9d3e65586fbfc2e3d977d40
protected void registerGoals() { protected void registerGoals() {
this.goalSelector.addGoal(0, new FloatGoal(this)); this.goalSelector.addGoal(0, new FloatGoal(this));
diff --git a/src/main/java/net/minecraft/world/entity/animal/Fox.java b/src/main/java/net/minecraft/world/entity/animal/Fox.java diff --git a/src/main/java/net/minecraft/world/entity/animal/Fox.java b/src/main/java/net/minecraft/world/entity/animal/Fox.java
index 98e9ad371381350dc3bff7e2a88224a2812d6419..252df18c369d5e556632ed5a287dab04e4e9b58d 100644 index 7fe665d9c623fd98a1fd4259a759297de46fe96e..56b2e83285f02581d03746246f370f18fc0f3c3f 100644
--- a/src/main/java/net/minecraft/world/entity/animal/Fox.java --- a/src/main/java/net/minecraft/world/entity/animal/Fox.java
+++ b/src/main/java/net/minecraft/world/entity/animal/Fox.java +++ b/src/main/java/net/minecraft/world/entity/animal/Fox.java
@@ -189,6 +189,11 @@ public class Fox extends Animal implements VariantHolder<Fox.Type> { @@ -188,6 +188,11 @@ public class Fox extends Animal implements VariantHolder<Fox.Variant> {
this.getAttribute(Attributes.SCALE).setBaseValue(this.level().purpurConfig.foxScale); this.getAttribute(Attributes.SCALE).setBaseValue(this.level().purpurConfig.foxScale);
} }
@@ -126,7 +126,7 @@ index 98e9ad371381350dc3bff7e2a88224a2812d6419..252df18c369d5e556632ed5a287dab04
@Override @Override
protected void defineSynchedData(SynchedEntityData.Builder builder) { protected void defineSynchedData(SynchedEntityData.Builder builder) {
super.defineSynchedData(builder); super.defineSynchedData(builder);
@@ -991,8 +996,10 @@ public class Fox extends Animal implements VariantHolder<Fox.Type> { @@ -976,8 +981,10 @@ public class Fox extends Animal implements VariantHolder<Fox.Variant> {
CriteriaTriggers.BRED_ANIMALS.trigger(entityplayer2, this.animal, this.partner, entityfox); CriteriaTriggers.BRED_ANIMALS.trigger(entityplayer2, this.animal, this.partner, entityfox);
} }
@@ -140,10 +140,10 @@ index 98e9ad371381350dc3bff7e2a88224a2812d6419..252df18c369d5e556632ed5a287dab04
this.partner.resetLove(); this.partner.resetLove();
worldserver.addFreshEntityWithPassengers(entityfox, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.BREEDING); // CraftBukkit - added SpawnReason worldserver.addFreshEntityWithPassengers(entityfox, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.BREEDING); // CraftBukkit - added SpawnReason
diff --git a/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java b/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java diff --git a/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java b/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java
index 41b52f128fbc174939a7f2d1cd937ab19432de25..22a2328fe5159c8fed635a62334a3f1028c346a5 100644 index 2382b82d3d4c09e50e62dd353b4a1149ec9169b4..f3873e0ad6ca1f547450e44bba917241bbc80c20 100644
--- a/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java --- a/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java
+++ b/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java +++ b/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java
@@ -86,6 +86,11 @@ public class MushroomCow extends Cow implements Shearable, VariantHolder<Mushroo @@ -87,6 +87,11 @@ public class MushroomCow extends Cow implements Shearable, VariantHolder<Mushroo
this.getAttribute(net.minecraft.world.entity.ai.attributes.Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.mooshroomMaxHealth); this.getAttribute(net.minecraft.world.entity.ai.attributes.Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.mooshroomMaxHealth);
} }
@@ -156,10 +156,10 @@ index 41b52f128fbc174939a7f2d1cd937ab19432de25..22a2328fe5159c8fed635a62334a3f10
public float getWalkTargetValue(BlockPos pos, LevelReader world) { public float getWalkTargetValue(BlockPos pos, LevelReader world) {
return world.getBlockState(pos.below()).is(Blocks.MYCELIUM) ? 10.0F : world.getPathfindingCostFromLightLevels(pos); return world.getBlockState(pos.below()).is(Blocks.MYCELIUM) ? 10.0F : world.getPathfindingCostFromLightLevels(pos);
diff --git a/src/main/java/net/minecraft/world/entity/animal/Ocelot.java b/src/main/java/net/minecraft/world/entity/animal/Ocelot.java diff --git a/src/main/java/net/minecraft/world/entity/animal/Ocelot.java b/src/main/java/net/minecraft/world/entity/animal/Ocelot.java
index 2ba70099352ff7ad0d561195565227938d68cef7..59ac7021389559cf95ef4746e6860bef29e3c0dc 100644 index 33384f84cb2b9fe7f702040a1d7669e956bb90f4..b86dfe9a4545189a1ab37fab2f0ed1e63b98a8ca 100644
--- a/src/main/java/net/minecraft/world/entity/animal/Ocelot.java --- a/src/main/java/net/minecraft/world/entity/animal/Ocelot.java
+++ b/src/main/java/net/minecraft/world/entity/animal/Ocelot.java +++ b/src/main/java/net/minecraft/world/entity/animal/Ocelot.java
@@ -89,6 +89,11 @@ public class Ocelot extends Animal { @@ -88,6 +88,11 @@ public class Ocelot extends Animal {
this.getAttribute(Attributes.SCALE).setBaseValue(this.level().purpurConfig.ocelotScale); this.getAttribute(Attributes.SCALE).setBaseValue(this.level().purpurConfig.ocelotScale);
} }
@@ -172,10 +172,10 @@ index 2ba70099352ff7ad0d561195565227938d68cef7..59ac7021389559cf95ef4746e6860bef
return (Boolean) this.entityData.get(Ocelot.DATA_TRUSTING); return (Boolean) this.entityData.get(Ocelot.DATA_TRUSTING);
} }
diff --git a/src/main/java/net/minecraft/world/entity/animal/Panda.java b/src/main/java/net/minecraft/world/entity/animal/Panda.java diff --git a/src/main/java/net/minecraft/world/entity/animal/Panda.java b/src/main/java/net/minecraft/world/entity/animal/Panda.java
index 27674bc17c1696d1e10c032d69fd29ee4295fd4e..a0075e23da3bbfe74105f420c347d3f67fda3970 100644 index cf62e808687b81985073baa1be5773a2fe1cca69..3da181a7baa04e7852f7cdf7f12728ec448d707b 100644
--- a/src/main/java/net/minecraft/world/entity/animal/Panda.java --- a/src/main/java/net/minecraft/world/entity/animal/Panda.java
+++ b/src/main/java/net/minecraft/world/entity/animal/Panda.java +++ b/src/main/java/net/minecraft/world/entity/animal/Panda.java
@@ -154,6 +154,11 @@ public class Panda extends Animal { @@ -145,6 +145,11 @@ public class Panda extends Animal {
setAttributes(); setAttributes();
} }
@@ -185,13 +185,13 @@ index 27674bc17c1696d1e10c032d69fd29ee4295fd4e..a0075e23da3bbfe74105f420c347d3f6
+ } + }
+ +
@Override @Override
public boolean canTakeItem(ItemStack stack) { protected boolean canDispenserEquipIntoSlot(EquipmentSlot slot) {
EquipmentSlot enumitemslot = this.getEquipmentSlotForItem(stack); return slot == EquipmentSlot.MAINHAND && this.canPickUpLoot();
diff --git a/src/main/java/net/minecraft/world/entity/animal/Parrot.java b/src/main/java/net/minecraft/world/entity/animal/Parrot.java diff --git a/src/main/java/net/minecraft/world/entity/animal/Parrot.java b/src/main/java/net/minecraft/world/entity/animal/Parrot.java
index f9d2d35a6e65580df74c6f27f605068980d3c12d..36eee2367689710a68be22209c550298b3e06879 100644 index 47249c0f73c79b82be302d318eca10a92c8bceb8..e99e33fecba3d6506d704a0a27c578f1efeaf77b 100644
--- a/src/main/java/net/minecraft/world/entity/animal/Parrot.java --- a/src/main/java/net/minecraft/world/entity/animal/Parrot.java
+++ b/src/main/java/net/minecraft/world/entity/animal/Parrot.java +++ b/src/main/java/net/minecraft/world/entity/animal/Parrot.java
@@ -192,6 +192,11 @@ public class Parrot extends ShoulderRidingEntity implements VariantHolder<Parrot @@ -194,6 +194,11 @@ public class Parrot extends ShoulderRidingEntity implements VariantHolder<Parrot
this.getAttribute(Attributes.SCALE).setBaseValue(this.level().purpurConfig.parrotScale); this.getAttribute(Attributes.SCALE).setBaseValue(this.level().purpurConfig.parrotScale);
} }
@@ -202,12 +202,12 @@ index f9d2d35a6e65580df74c6f27f605068980d3c12d..36eee2367689710a68be22209c550298
+ +
@Nullable @Nullable
@Override @Override
public SpawnGroupData finalizeSpawn(ServerLevelAccessor world, DifficultyInstance difficulty, MobSpawnType spawnReason, @Nullable SpawnGroupData entityData) { public SpawnGroupData finalizeSpawn(ServerLevelAccessor world, DifficultyInstance difficulty, EntitySpawnReason spawnReason, @Nullable SpawnGroupData entityData) {
diff --git a/src/main/java/net/minecraft/world/entity/animal/Pig.java b/src/main/java/net/minecraft/world/entity/animal/Pig.java diff --git a/src/main/java/net/minecraft/world/entity/animal/Pig.java b/src/main/java/net/minecraft/world/entity/animal/Pig.java
index 51ffdfa038cb1be279da71d691d54728731c186e..c9c31e2e523b6829776d6bcc3d0e183c1315a7a3 100644 index 294545914dec0a06eadb6c2f139222b3f1a6f64c..73e288133ee12561053f9225121e55955a963127 100644
--- a/src/main/java/net/minecraft/world/entity/animal/Pig.java --- a/src/main/java/net/minecraft/world/entity/animal/Pig.java
+++ b/src/main/java/net/minecraft/world/entity/animal/Pig.java +++ b/src/main/java/net/minecraft/world/entity/animal/Pig.java
@@ -87,6 +87,11 @@ public class Pig extends Animal implements ItemSteerable, Saddleable { @@ -88,6 +88,11 @@ public class Pig extends Animal implements ItemSteerable, Saddleable {
this.getAttribute(Attributes.SCALE).setBaseValue(this.level().purpurConfig.pigScale); this.getAttribute(Attributes.SCALE).setBaseValue(this.level().purpurConfig.pigScale);
} }
@@ -220,7 +220,7 @@ index 51ffdfa038cb1be279da71d691d54728731c186e..c9c31e2e523b6829776d6bcc3d0e183c
protected void registerGoals() { protected void registerGoals() {
this.goalSelector.addGoal(0, new FloatGoal(this)); this.goalSelector.addGoal(0, new FloatGoal(this));
diff --git a/src/main/java/net/minecraft/world/entity/animal/PolarBear.java b/src/main/java/net/minecraft/world/entity/animal/PolarBear.java diff --git a/src/main/java/net/minecraft/world/entity/animal/PolarBear.java b/src/main/java/net/minecraft/world/entity/animal/PolarBear.java
index cd5856d3c5fdefb22f1ae146e5b64d9d4a64e07c..064d2066b2b987bfc2eb3e71c7fec39248492135 100644 index 511d0559743655ed7b43a948fccc2621c906be02..472487c3cb8bdfb28625ffdf25f14d990737f8e4 100644
--- a/src/main/java/net/minecraft/world/entity/animal/PolarBear.java --- a/src/main/java/net/minecraft/world/entity/animal/PolarBear.java
+++ b/src/main/java/net/minecraft/world/entity/animal/PolarBear.java +++ b/src/main/java/net/minecraft/world/entity/animal/PolarBear.java
@@ -120,6 +120,11 @@ public class PolarBear extends Animal implements NeutralMob { @@ -120,6 +120,11 @@ public class PolarBear extends Animal implements NeutralMob {
@@ -236,10 +236,10 @@ index cd5856d3c5fdefb22f1ae146e5b64d9d4a64e07c..064d2066b2b987bfc2eb3e71c7fec392
@Override @Override
public AgeableMob getBreedOffspring(ServerLevel world, AgeableMob entity) { public AgeableMob getBreedOffspring(ServerLevel world, AgeableMob entity) {
diff --git a/src/main/java/net/minecraft/world/entity/animal/Rabbit.java b/src/main/java/net/minecraft/world/entity/animal/Rabbit.java diff --git a/src/main/java/net/minecraft/world/entity/animal/Rabbit.java b/src/main/java/net/minecraft/world/entity/animal/Rabbit.java
index e06445c84aa632429c1647cabab73751f73d2e6c..7e509458134340bd05d15f5f51b6d1fce3206d6a 100644 index b0cdc25f6592d44a3ad3fdf4d461e95887105257..629a0729cae629dea89fdf491afa9eed96e7a38a 100644
--- a/src/main/java/net/minecraft/world/entity/animal/Rabbit.java --- a/src/main/java/net/minecraft/world/entity/animal/Rabbit.java
+++ b/src/main/java/net/minecraft/world/entity/animal/Rabbit.java +++ b/src/main/java/net/minecraft/world/entity/animal/Rabbit.java
@@ -146,6 +146,11 @@ public class Rabbit extends Animal implements VariantHolder<Rabbit.Variant> { @@ -145,6 +145,11 @@ public class Rabbit extends Animal implements VariantHolder<Rabbit.Variant> {
this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.rabbitMaxHealth); this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.rabbitMaxHealth);
this.getAttribute(Attributes.SCALE).setBaseValue(this.level().purpurConfig.rabbitScale); this.getAttribute(Attributes.SCALE).setBaseValue(this.level().purpurConfig.rabbitScale);
} }
@@ -252,10 +252,10 @@ index e06445c84aa632429c1647cabab73751f73d2e6c..7e509458134340bd05d15f5f51b6d1fc
@Override @Override
diff --git a/src/main/java/net/minecraft/world/entity/animal/Sheep.java b/src/main/java/net/minecraft/world/entity/animal/Sheep.java diff --git a/src/main/java/net/minecraft/world/entity/animal/Sheep.java b/src/main/java/net/minecraft/world/entity/animal/Sheep.java
index a14db0ec9ebcde24d5b7340a08002eddc8ebd421..fb429dce94bfad6aba3c63a4694e7c8da772ee14 100644 index bc975266fbf0348723dc04e29fd6bf8231b9cb87..a20fec03c2ee5019450825be119a017cfe0e4722 100644
--- a/src/main/java/net/minecraft/world/entity/animal/Sheep.java --- a/src/main/java/net/minecraft/world/entity/animal/Sheep.java
+++ b/src/main/java/net/minecraft/world/entity/animal/Sheep.java +++ b/src/main/java/net/minecraft/world/entity/animal/Sheep.java
@@ -138,6 +138,11 @@ public class Sheep extends Animal implements Shearable { @@ -114,6 +114,11 @@ public class Sheep extends Animal implements Shearable {
this.getAttribute(Attributes.SCALE).setBaseValue(this.level().purpurConfig.sheepScale); this.getAttribute(Attributes.SCALE).setBaseValue(this.level().purpurConfig.sheepScale);
} }
@@ -268,10 +268,10 @@ index a14db0ec9ebcde24d5b7340a08002eddc8ebd421..fb429dce94bfad6aba3c63a4694e7c8d
protected void registerGoals() { protected void registerGoals() {
this.eatBlockGoal = new EatBlockGoal(this); this.eatBlockGoal = new EatBlockGoal(this);
diff --git a/src/main/java/net/minecraft/world/entity/animal/Turtle.java b/src/main/java/net/minecraft/world/entity/animal/Turtle.java diff --git a/src/main/java/net/minecraft/world/entity/animal/Turtle.java b/src/main/java/net/minecraft/world/entity/animal/Turtle.java
index 41d47141bfd77b17cbf163bffdfeb002135035ca..8f02a1b39db0581efb8ccd2c889f048bfd7b3e04 100644 index 500676a78aedc525aca989ccd0380cd2cc1a711b..6b2e27e2f8aeccfc4d84c73be0fa5a04f5a962e2 100644
--- a/src/main/java/net/minecraft/world/entity/animal/Turtle.java --- a/src/main/java/net/minecraft/world/entity/animal/Turtle.java
+++ b/src/main/java/net/minecraft/world/entity/animal/Turtle.java +++ b/src/main/java/net/minecraft/world/entity/animal/Turtle.java
@@ -110,6 +110,11 @@ public class Turtle extends Animal { @@ -109,6 +109,11 @@ public class Turtle extends Animal {
this.getAttribute(Attributes.SCALE).setBaseValue(this.level().purpurConfig.turtleScale); this.getAttribute(Attributes.SCALE).setBaseValue(this.level().purpurConfig.turtleScale);
} }
@@ -284,10 +284,10 @@ index 41d47141bfd77b17cbf163bffdfeb002135035ca..8f02a1b39db0581efb8ccd2c889f048b
this.entityData.set(Turtle.HOME_POS, pos); this.entityData.set(Turtle.HOME_POS, pos);
} }
diff --git a/src/main/java/net/minecraft/world/entity/animal/Wolf.java b/src/main/java/net/minecraft/world/entity/animal/Wolf.java diff --git a/src/main/java/net/minecraft/world/entity/animal/Wolf.java b/src/main/java/net/minecraft/world/entity/animal/Wolf.java
index 2985a7bcd4153798c347efa086120ed841770774..0647cee2d6a7c847ab923f819a092c9004eabc6c 100644 index d082ca3ed17e8bbb27c1a971259720d43246b47f..bbdc5eb28c2be570866070d2d055a97721f46d94 100644
--- a/src/main/java/net/minecraft/world/entity/animal/Wolf.java --- a/src/main/java/net/minecraft/world/entity/animal/Wolf.java
+++ b/src/main/java/net/minecraft/world/entity/animal/Wolf.java +++ b/src/main/java/net/minecraft/world/entity/animal/Wolf.java
@@ -155,6 +155,11 @@ public class Wolf extends TamableAnimal implements NeutralMob, VariantHolder<Hol @@ -152,6 +152,11 @@ public class Wolf extends TamableAnimal implements NeutralMob, VariantHolder<Hol
this.getAttribute(Attributes.SCALE).setBaseValue(this.level().purpurConfig.wolfScale); this.getAttribute(Attributes.SCALE).setBaseValue(this.level().purpurConfig.wolfScale);
} }
@@ -300,7 +300,7 @@ index 2985a7bcd4153798c347efa086120ed841770774..0647cee2d6a7c847ab923f819a092c90
protected void registerGoals() { protected void registerGoals() {
this.goalSelector.addGoal(1, new FloatGoal(this)); this.goalSelector.addGoal(1, new FloatGoal(this));
diff --git a/src/main/java/net/minecraft/world/entity/animal/armadillo/Armadillo.java b/src/main/java/net/minecraft/world/entity/animal/armadillo/Armadillo.java diff --git a/src/main/java/net/minecraft/world/entity/animal/armadillo/Armadillo.java b/src/main/java/net/minecraft/world/entity/animal/armadillo/Armadillo.java
index 3cc0d4f7a8483fc5133ff3a3e42e0bb0f01bca3c..75c05990b9ee6fd429c24415be3b98e258638e89 100644 index a7fdb54b1bda83e7a365447f2cb5701238ba6847..9ef53608f1608e88de7a7b3e96b43d8d2b4230ae 100644
--- a/src/main/java/net/minecraft/world/entity/animal/armadillo/Armadillo.java --- a/src/main/java/net/minecraft/world/entity/animal/armadillo/Armadillo.java
+++ b/src/main/java/net/minecraft/world/entity/animal/armadillo/Armadillo.java +++ b/src/main/java/net/minecraft/world/entity/animal/armadillo/Armadillo.java
@@ -103,6 +103,11 @@ public class Armadillo extends Animal { @@ -103,6 +103,11 @@ public class Armadillo extends Animal {
@@ -316,26 +316,26 @@ index 3cc0d4f7a8483fc5133ff3a3e42e0bb0f01bca3c..75c05990b9ee6fd429c24415be3b98e2
@Override @Override
diff --git a/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java b/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java diff --git a/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java b/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java
index 909ee626d9ffb4c50423d84ff4c136f0440f9b21..e4c60befe0e642f6f93beab286af1373ceb4d4c8 100644 index 8293679fbe5df093610c30094de389fb7ff79658..b8077a31ed67050a45b5668ea759cf386f085271 100644
--- a/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java --- a/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java
+++ b/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java +++ b/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java
@@ -120,6 +120,11 @@ public class Axolotl extends Animal implements LerpingModel, VariantHolder<Axolo @@ -121,6 +121,11 @@ public class Axolotl extends Animal implements VariantHolder<Axolotl.Variant>, B
this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.axolotlMaxHealth);
this.getAttribute(Attributes.SCALE).setBaseValue(this.level().purpurConfig.axolotlScale); this.getAttribute(Attributes.SCALE).setBaseValue(this.level().purpurConfig.axolotlScale);
} }
+
+ @Override + @Override
+ public int getPurpurBreedTime() { + public int getPurpurBreedTime() {
+ return this.level().purpurConfig.axolotlBreedingTicks; + return this.level().purpurConfig.axolotlBreedingTicks;
+ } + }
+ // Purpur end
@Override @Override
public Map<String, Vector3f> getModelRotationValues() {
return this.modelRotationValues;
diff --git a/src/main/java/net/minecraft/world/entity/animal/camel/Camel.java b/src/main/java/net/minecraft/world/entity/animal/camel/Camel.java diff --git a/src/main/java/net/minecraft/world/entity/animal/camel/Camel.java b/src/main/java/net/minecraft/world/entity/animal/camel/Camel.java
index f71560b8183672640f00e00479e89237ac96558d..c567b946e013852acfae7f5a417a292706e218f4 100644 index 9b9e7c9048f453d01ccf13ffdc7ee0f2151155a9..dbce71f45c008da883b6d244a06343d83ae25e7e 100644
--- a/src/main/java/net/minecraft/world/entity/animal/camel/Camel.java --- a/src/main/java/net/minecraft/world/entity/animal/camel/Camel.java
+++ b/src/main/java/net/minecraft/world/entity/animal/camel/Camel.java +++ b/src/main/java/net/minecraft/world/entity/animal/camel/Camel.java
@@ -92,6 +92,10 @@ public class Camel extends AbstractHorse implements PlayerRideableJumping, Saddl @@ -92,6 +92,10 @@ public class Camel extends AbstractHorse {
public boolean dismountsUnderwater() { public boolean dismountsUnderwater() {
return level().purpurConfig.useDismountsUnderwaterTag ? super.dismountsUnderwater() : !level().purpurConfig.camelRidableInWater; return level().purpurConfig.useDismountsUnderwaterTag ? super.dismountsUnderwater() : !level().purpurConfig.camelRidableInWater;
} }
@@ -347,10 +347,10 @@ index f71560b8183672640f00e00479e89237ac96558d..c567b946e013852acfae7f5a417a2927
@Override @Override
diff --git a/src/main/java/net/minecraft/world/entity/animal/frog/Frog.java b/src/main/java/net/minecraft/world/entity/animal/frog/Frog.java diff --git a/src/main/java/net/minecraft/world/entity/animal/frog/Frog.java b/src/main/java/net/minecraft/world/entity/animal/frog/Frog.java
index d3983b69bacd30b548b110feb1946cc55b83efb9..66dea405cd08c6b4ca3b5fe39fb83552bdd863b4 100644 index e03598f985191350ce796dabd7641b8d0f6c081c..49915ec0ee5fb6e7d25b079e0410942d44aa1e33 100644
--- a/src/main/java/net/minecraft/world/entity/animal/frog/Frog.java --- a/src/main/java/net/minecraft/world/entity/animal/frog/Frog.java
+++ b/src/main/java/net/minecraft/world/entity/animal/frog/Frog.java +++ b/src/main/java/net/minecraft/world/entity/animal/frog/Frog.java
@@ -162,6 +162,10 @@ public class Frog extends Animal implements VariantHolder<Holder<FrogVariant>> { @@ -165,6 +165,10 @@ public class Frog extends Animal implements VariantHolder<Holder<FrogVariant>> {
} }
// Purpur end // Purpur end
@@ -362,10 +362,10 @@ index d3983b69bacd30b548b110feb1946cc55b83efb9..66dea405cd08c6b4ca3b5fe39fb83552
protected Brain.Provider<Frog> brainProvider() { protected Brain.Provider<Frog> brainProvider() {
return Brain.provider(MEMORY_TYPES, SENSOR_TYPES); return Brain.provider(MEMORY_TYPES, SENSOR_TYPES);
diff --git a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java diff --git a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java
index ca68973e851ae933015d5dbcbca7b48f872ddd07..2fd6ff9d9dc603020114cc6ab8eb28c9d09e448c 100644 index ce697bce755f8ef147d189a8729c441aee5bbd21..54e880fb1c03a8b578fd1d2929bc174edb9918c5 100644
--- a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java --- a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java
+++ b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java +++ b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java
@@ -108,6 +108,11 @@ public class Goat extends Animal { @@ -110,6 +110,11 @@ public class Goat extends Animal {
} }
// Purpur end // Purpur end
@@ -378,10 +378,10 @@ index ca68973e851ae933015d5dbcbca7b48f872ddd07..2fd6ff9d9dc603020114cc6ab8eb28c9
protected Brain.Provider<Goat> brainProvider() { protected Brain.Provider<Goat> brainProvider() {
return Brain.provider(Goat.MEMORY_TYPES, Goat.SENSOR_TYPES); return Brain.provider(Goat.MEMORY_TYPES, Goat.SENSOR_TYPES);
diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/Donkey.java b/src/main/java/net/minecraft/world/entity/animal/horse/Donkey.java diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/Donkey.java b/src/main/java/net/minecraft/world/entity/animal/horse/Donkey.java
index b47a72ffb8b947cea5d4bc6ee37b824c4161be31..2990d50fd5209b272e0cfbd5dd633124048e8129 100644 index 7362597d2ca9ea5375118d280e17b6c2719352a7..ba0b6c0154d72dd13acf9e1c0966e394d59943c7 100644
--- a/src/main/java/net/minecraft/world/entity/animal/horse/Donkey.java --- a/src/main/java/net/minecraft/world/entity/animal/horse/Donkey.java
+++ b/src/main/java/net/minecraft/world/entity/animal/horse/Donkey.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/Donkey.java
@@ -37,6 +37,11 @@ public class Donkey extends AbstractChestedHorse { @@ -38,6 +38,11 @@ public class Donkey extends AbstractChestedHorse {
return generateSpeed(this.level().purpurConfig.donkeyMovementSpeedMin, this.level().purpurConfig.donkeyMovementSpeedMax); return generateSpeed(this.level().purpurConfig.donkeyMovementSpeedMin, this.level().purpurConfig.donkeyMovementSpeedMax);
} }
@@ -394,10 +394,10 @@ index b47a72ffb8b947cea5d4bc6ee37b824c4161be31..2990d50fd5209b272e0cfbd5dd633124
protected SoundEvent getAmbientSound() { protected SoundEvent getAmbientSound() {
return SoundEvents.DONKEY_AMBIENT; return SoundEvents.DONKEY_AMBIENT;
diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/Horse.java b/src/main/java/net/minecraft/world/entity/animal/horse/Horse.java diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/Horse.java b/src/main/java/net/minecraft/world/entity/animal/horse/Horse.java
index 273365b9bca6e26760f45a794c1ebef1f9118c43..c4b22c52e335080e744a723622f455c0d8cf73e2 100644 index b0392780b35866bf1903f49cb16c4ab79335882d..b9a406cd4e317c663a12d897b8cf1f4f6eeca662 100644
--- a/src/main/java/net/minecraft/world/entity/animal/horse/Horse.java --- a/src/main/java/net/minecraft/world/entity/animal/horse/Horse.java
+++ b/src/main/java/net/minecraft/world/entity/animal/horse/Horse.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/Horse.java
@@ -67,6 +67,11 @@ public class Horse extends AbstractHorse implements VariantHolder<Variant> { @@ -65,6 +65,11 @@ public class Horse extends AbstractHorse implements VariantHolder<Variant> {
return generateSpeed(this.level().purpurConfig.horseMovementSpeedMin, this.level().purpurConfig.horseMovementSpeedMax); return generateSpeed(this.level().purpurConfig.horseMovementSpeedMin, this.level().purpurConfig.horseMovementSpeedMax);
} }
@@ -410,10 +410,10 @@ index 273365b9bca6e26760f45a794c1ebef1f9118c43..c4b22c52e335080e744a723622f455c0
protected void randomizeAttributes(RandomSource random) { protected void randomizeAttributes(RandomSource random) {
this.getAttribute(Attributes.MAX_HEALTH).setBaseValue((double)generateMaxHealth(random::nextInt)); this.getAttribute(Attributes.MAX_HEALTH).setBaseValue((double)generateMaxHealth(random::nextInt));
diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java b/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java b/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java
index 09c400ce06003139de84e22313354ed6199da761..b8a6ebd8301c4873060505c866dabb4e8772d5b5 100644 index 7ff446ea2163d3b3b9f7fd826939dda21e07c99f..1a992d4c867ebe65b56be724fb54b9bc389cd8ec 100644
--- a/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java --- a/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java
+++ b/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java
@@ -141,6 +141,11 @@ public class Llama extends AbstractChestedHorse implements VariantHolder<Llama.V @@ -139,6 +139,11 @@ public class Llama extends AbstractChestedHorse implements VariantHolder<Llama.V
return generateSpeed(this.level().purpurConfig.llamaMovementSpeedMin, this.level().purpurConfig.llamaMovementSpeedMax); return generateSpeed(this.level().purpurConfig.llamaMovementSpeedMin, this.level().purpurConfig.llamaMovementSpeedMax);
} }
@@ -426,10 +426,10 @@ index 09c400ce06003139de84e22313354ed6199da761..b8a6ebd8301c4873060505c866dabb4e
return false; return false;
} }
diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/Mule.java b/src/main/java/net/minecraft/world/entity/animal/horse/Mule.java diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/Mule.java b/src/main/java/net/minecraft/world/entity/animal/horse/Mule.java
index 68fe99ea6d683dd18171d35764b4cb319433f6e0..8c52cbd47b90da51f3d5b84b8df4113fecc598df 100644 index 7ec14013c9200f0fe4a565b2c923f92712aabc3c..9fbcc46ef7bc02ce5b265704545870d245e9b1f2 100644
--- a/src/main/java/net/minecraft/world/entity/animal/horse/Mule.java --- a/src/main/java/net/minecraft/world/entity/animal/horse/Mule.java
+++ b/src/main/java/net/minecraft/world/entity/animal/horse/Mule.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/Mule.java
@@ -36,6 +36,11 @@ public class Mule extends AbstractChestedHorse { @@ -37,6 +37,11 @@ public class Mule extends AbstractChestedHorse {
return generateSpeed(this.level().purpurConfig.muleMovementSpeedMin, this.level().purpurConfig.muleMovementSpeedMax); return generateSpeed(this.level().purpurConfig.muleMovementSpeedMin, this.level().purpurConfig.muleMovementSpeedMax);
} }
@@ -442,7 +442,7 @@ index 68fe99ea6d683dd18171d35764b4cb319433f6e0..8c52cbd47b90da51f3d5b84b8df4113f
protected SoundEvent getAmbientSound() { protected SoundEvent getAmbientSound() {
return SoundEvents.MULE_AMBIENT; return SoundEvents.MULE_AMBIENT;
diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/SkeletonHorse.java b/src/main/java/net/minecraft/world/entity/animal/horse/SkeletonHorse.java diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/SkeletonHorse.java b/src/main/java/net/minecraft/world/entity/animal/horse/SkeletonHorse.java
index 6180f750ed159e35d20bbaefc57bdd7293c657ec..5686bb0b537650e7d89292cef4e7e82bc7383748 100644 index d3b9763aa745154fd796f725c2d5babfaaf22050..069783ed1bb4bbb7dece4b7883fe4d306a1b92bd 100644
--- a/src/main/java/net/minecraft/world/entity/animal/horse/SkeletonHorse.java --- a/src/main/java/net/minecraft/world/entity/animal/horse/SkeletonHorse.java
+++ b/src/main/java/net/minecraft/world/entity/animal/horse/SkeletonHorse.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/SkeletonHorse.java
@@ -64,6 +64,11 @@ public class SkeletonHorse extends AbstractHorse { @@ -64,6 +64,11 @@ public class SkeletonHorse extends AbstractHorse {
@@ -458,10 +458,10 @@ index 6180f750ed159e35d20bbaefc57bdd7293c657ec..5686bb0b537650e7d89292cef4e7e82b
return createBaseHorseAttributes().add(Attributes.MAX_HEALTH, 15.0D).add(Attributes.MOVEMENT_SPEED, 0.20000000298023224D); return createBaseHorseAttributes().add(Attributes.MAX_HEALTH, 15.0D).add(Attributes.MOVEMENT_SPEED, 0.20000000298023224D);
} }
diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/TraderLlama.java b/src/main/java/net/minecraft/world/entity/animal/horse/TraderLlama.java diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/TraderLlama.java b/src/main/java/net/minecraft/world/entity/animal/horse/TraderLlama.java
index af29ba1512bfda03718fb01ecff8d86b4e927611..d22f429f3de9c68a189087f23a483a561454cc54 100644 index 10074787bbb3935685b9bd78c018309b2e468d87..845f75a48f07e7f25e71ed7b04a2f6b1dc87cbb8 100644
--- a/src/main/java/net/minecraft/world/entity/animal/horse/TraderLlama.java --- a/src/main/java/net/minecraft/world/entity/animal/horse/TraderLlama.java
+++ b/src/main/java/net/minecraft/world/entity/animal/horse/TraderLlama.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/TraderLlama.java
@@ -67,6 +67,11 @@ public class TraderLlama extends Llama { @@ -70,6 +70,11 @@ public class TraderLlama extends Llama {
return generateSpeed(this.level().purpurConfig.traderLlamaMovementSpeedMin, this.level().purpurConfig.traderLlamaMovementSpeedMax); return generateSpeed(this.level().purpurConfig.traderLlamaMovementSpeedMin, this.level().purpurConfig.traderLlamaMovementSpeedMax);
} }
@@ -474,7 +474,7 @@ index af29ba1512bfda03718fb01ecff8d86b4e927611..d22f429f3de9c68a189087f23a483a56
public boolean isTraderLlama() { public boolean isTraderLlama() {
return true; return true;
diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/ZombieHorse.java b/src/main/java/net/minecraft/world/entity/animal/horse/ZombieHorse.java diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/ZombieHorse.java b/src/main/java/net/minecraft/world/entity/animal/horse/ZombieHorse.java
index d2b3859f9c69e6d73fa859db858d38dd41fa35cd..fbad3b11223ee5dac4af15584e5dfd808a149545 100644 index f2cb87234d8e60b9737c6dfbe3297857a9efc3a1..b7eda8855bc7162566975849f9bae7f182ad801c 100644
--- a/src/main/java/net/minecraft/world/entity/animal/horse/ZombieHorse.java --- a/src/main/java/net/minecraft/world/entity/animal/horse/ZombieHorse.java
+++ b/src/main/java/net/minecraft/world/entity/animal/horse/ZombieHorse.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/ZombieHorse.java
@@ -60,6 +60,11 @@ public class ZombieHorse extends AbstractHorse { @@ -60,6 +60,11 @@ public class ZombieHorse extends AbstractHorse {
@@ -490,10 +490,10 @@ index d2b3859f9c69e6d73fa859db858d38dd41fa35cd..fbad3b11223ee5dac4af15584e5dfd80
return createBaseHorseAttributes().add(Attributes.MAX_HEALTH, 15.0).add(Attributes.MOVEMENT_SPEED, 0.2F); return createBaseHorseAttributes().add(Attributes.MAX_HEALTH, 15.0).add(Attributes.MOVEMENT_SPEED, 0.2F);
} }
diff --git a/src/main/java/net/minecraft/world/entity/animal/sniffer/Sniffer.java b/src/main/java/net/minecraft/world/entity/animal/sniffer/Sniffer.java diff --git a/src/main/java/net/minecraft/world/entity/animal/sniffer/Sniffer.java b/src/main/java/net/minecraft/world/entity/animal/sniffer/Sniffer.java
index 818439c7163606af5a62fee4e18251456db4f6a1..d82b036b5a759574fe83027ec1000d7eb0455a28 100644 index d08ff3f70ed3024dba7cf4405ba08d547ed5bf2d..464a16df15d8759d66f94ad080d1ea28b3f6474c 100644
--- a/src/main/java/net/minecraft/world/entity/animal/sniffer/Sniffer.java --- a/src/main/java/net/minecraft/world/entity/animal/sniffer/Sniffer.java
+++ b/src/main/java/net/minecraft/world/entity/animal/sniffer/Sniffer.java +++ b/src/main/java/net/minecraft/world/entity/animal/sniffer/Sniffer.java
@@ -115,6 +115,11 @@ public class Sniffer extends Animal { @@ -111,6 +111,11 @@ public class Sniffer extends Animal {
this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.snifferMaxHealth); this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.snifferMaxHealth);
this.getAttribute(Attributes.SCALE).setBaseValue(this.level().purpurConfig.snifferScale); this.getAttribute(Attributes.SCALE).setBaseValue(this.level().purpurConfig.snifferScale);
} }
@@ -506,7 +506,7 @@ index 818439c7163606af5a62fee4e18251456db4f6a1..d82b036b5a759574fe83027ec1000d7e
@Override @Override
diff --git a/src/main/java/net/minecraft/world/entity/monster/Strider.java b/src/main/java/net/minecraft/world/entity/monster/Strider.java diff --git a/src/main/java/net/minecraft/world/entity/monster/Strider.java b/src/main/java/net/minecraft/world/entity/monster/Strider.java
index 964d60cd69e33bf77a415a702ef93fbe964eb8b3..8c233a90d07db7959b778a84c4ed0589a6a10dd4 100644 index 6a45a62c578f033558c26935681f7de74dd98bac..0cc49b0a600a5e6fb4fc21e698e3a5fef5996df1 100644
--- a/src/main/java/net/minecraft/world/entity/monster/Strider.java --- a/src/main/java/net/minecraft/world/entity/monster/Strider.java
+++ b/src/main/java/net/minecraft/world/entity/monster/Strider.java +++ b/src/main/java/net/minecraft/world/entity/monster/Strider.java
@@ -120,6 +120,11 @@ public class Strider extends Animal implements ItemSteerable, Saddleable { @@ -120,6 +120,11 @@ public class Strider extends Animal implements ItemSteerable, Saddleable {
@@ -518,16 +518,16 @@ index 964d60cd69e33bf77a415a702ef93fbe964eb8b3..8c233a90d07db7959b778a84c4ed0589
+ return this.level().purpurConfig.striderBreedingTicks; + return this.level().purpurConfig.striderBreedingTicks;
+ } + }
+ +
public static boolean checkStriderSpawnRules(EntityType<Strider> type, LevelAccessor world, MobSpawnType spawnReason, BlockPos pos, RandomSource random) { public static boolean checkStriderSpawnRules(EntityType<Strider> type, LevelAccessor world, EntitySpawnReason spawnReason, BlockPos pos, RandomSource random) {
BlockPos.MutableBlockPos blockposition_mutableblockposition = pos.mutable(); BlockPos.MutableBlockPos blockposition_mutableblockposition = pos.mutable();
diff --git a/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java b/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java diff --git a/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java b/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java
index cd6428d0d61f68eafa8829fc21084586447cd61e..eb4a2e57ee9bddacef184e81167f8ee32c63c63f 100644 index 08c4a32b1195820eb574cdf4a499107565a551d6..0220fb517d99e8c9629d191eb554799a1dc8d7bc 100644
--- a/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java --- a/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java
+++ b/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java
@@ -113,6 +113,11 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { @@ -120,6 +120,11 @@ public class Hoglin extends Animal implements Enemy, HoglinBase {
this.timeInOverworld = timeInOverworld;
} }
// Purpur end
+ @Override + @Override
+ public int getPurpurBreedTime() { + public int getPurpurBreedTime() {
@@ -538,10 +538,10 @@ index cd6428d0d61f68eafa8829fc21084586447cd61e..eb4a2e57ee9bddacef184e81167f8ee3
public boolean canBeLeashed() { public boolean canBeLeashed() {
return true; return true;
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 1f2af3b001ce000cd504a9a5dafb74f65b3b468e..eefd829f617f2af60b9846f2fe8003676a997c88 100644 index c02b8212cb56912e0eb244f47aa094c7879be89b..c78b2c5098dc67a3aadf9f6d4ea5289b7d5124ea 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -463,23 +463,27 @@ public class PurpurWorldConfig { @@ -461,23 +461,27 @@ public class PurpurWorldConfig {
public boolean armadilloControllable = true; public boolean armadilloControllable = true;
public double armadilloMaxHealth = 12.0D; public double armadilloMaxHealth = 12.0D;
public double armadilloScale = 1.0D; public double armadilloScale = 1.0D;
@@ -569,7 +569,7 @@ index 1f2af3b001ce000cd504a9a5dafb74f65b3b468e..eefd829f617f2af60b9846f2fe800367
} }
public boolean batRidable = false; public boolean batRidable = false;
@@ -522,6 +526,7 @@ public class PurpurWorldConfig { @@ -520,6 +524,7 @@ public class PurpurWorldConfig {
public double beeMaxY = 320D; public double beeMaxY = 320D;
public double beeMaxHealth = 10.0D; public double beeMaxHealth = 10.0D;
public double beeScale = 1.0D; public double beeScale = 1.0D;
@@ -577,7 +577,7 @@ index 1f2af3b001ce000cd504a9a5dafb74f65b3b468e..eefd829f617f2af60b9846f2fe800367
private void beeSettings() { private void beeSettings() {
beeRidable = getBoolean("mobs.bee.ridable", beeRidable); beeRidable = getBoolean("mobs.bee.ridable", beeRidable);
beeRidableInWater = getBoolean("mobs.bee.ridable-in-water", beeRidableInWater); beeRidableInWater = getBoolean("mobs.bee.ridable-in-water", beeRidableInWater);
@@ -534,6 +539,7 @@ public class PurpurWorldConfig { @@ -532,6 +537,7 @@ public class PurpurWorldConfig {
} }
beeMaxHealth = getDouble("mobs.bee.attributes.max_health", beeMaxHealth); beeMaxHealth = getDouble("mobs.bee.attributes.max_health", beeMaxHealth);
beeScale = Mth.clamp(getDouble("mobs.bee.attributes.scale", beeScale), 0.0625D, 16.0D); beeScale = Mth.clamp(getDouble("mobs.bee.attributes.scale", beeScale), 0.0625D, 16.0D);
@@ -585,7 +585,7 @@ index 1f2af3b001ce000cd504a9a5dafb74f65b3b468e..eefd829f617f2af60b9846f2fe800367
} }
public boolean blazeRidable = false; public boolean blazeRidable = false;
@@ -576,6 +582,7 @@ public class PurpurWorldConfig { @@ -574,6 +580,7 @@ public class PurpurWorldConfig {
public double camelJumpStrengthMax = 0.42D; public double camelJumpStrengthMax = 0.42D;
public double camelMovementSpeedMin = 0.09D; public double camelMovementSpeedMin = 0.09D;
public double camelMovementSpeedMax = 0.09D; public double camelMovementSpeedMax = 0.09D;
@@ -593,7 +593,7 @@ index 1f2af3b001ce000cd504a9a5dafb74f65b3b468e..eefd829f617f2af60b9846f2fe800367
private void camelSettings() { private void camelSettings() {
camelRidableInWater = getBoolean("mobs.camel.ridable-in-water", camelRidableInWater); camelRidableInWater = getBoolean("mobs.camel.ridable-in-water", camelRidableInWater);
camelMaxHealthMin = getDouble("mobs.camel.attributes.max_health.min", camelMaxHealthMin); camelMaxHealthMin = getDouble("mobs.camel.attributes.max_health.min", camelMaxHealthMin);
@@ -584,6 +591,7 @@ public class PurpurWorldConfig { @@ -582,6 +589,7 @@ public class PurpurWorldConfig {
camelJumpStrengthMax = getDouble("mobs.camel.attributes.jump_strength.max", camelJumpStrengthMax); camelJumpStrengthMax = getDouble("mobs.camel.attributes.jump_strength.max", camelJumpStrengthMax);
camelMovementSpeedMin = getDouble("mobs.camel.attributes.movement_speed.min", camelMovementSpeedMin); camelMovementSpeedMin = getDouble("mobs.camel.attributes.movement_speed.min", camelMovementSpeedMin);
camelMovementSpeedMax = getDouble("mobs.camel.attributes.movement_speed.max", camelMovementSpeedMax); camelMovementSpeedMax = getDouble("mobs.camel.attributes.movement_speed.max", camelMovementSpeedMax);
@@ -601,7 +601,7 @@ index 1f2af3b001ce000cd504a9a5dafb74f65b3b468e..eefd829f617f2af60b9846f2fe800367
} }
public boolean catRidable = false; public boolean catRidable = false;
@@ -594,6 +602,7 @@ public class PurpurWorldConfig { @@ -592,6 +600,7 @@ public class PurpurWorldConfig {
public int catSpawnDelay = 1200; public int catSpawnDelay = 1200;
public int catSpawnSwampHutScanRange = 16; public int catSpawnSwampHutScanRange = 16;
public int catSpawnVillageScanRange = 48; public int catSpawnVillageScanRange = 48;
@@ -609,7 +609,7 @@ index 1f2af3b001ce000cd504a9a5dafb74f65b3b468e..eefd829f617f2af60b9846f2fe800367
private void catSettings() { private void catSettings() {
catRidable = getBoolean("mobs.cat.ridable", catRidable); catRidable = getBoolean("mobs.cat.ridable", catRidable);
catRidableInWater = getBoolean("mobs.cat.ridable-in-water", catRidableInWater); catRidableInWater = getBoolean("mobs.cat.ridable-in-water", catRidableInWater);
@@ -608,6 +617,7 @@ public class PurpurWorldConfig { @@ -606,6 +615,7 @@ public class PurpurWorldConfig {
catSpawnDelay = getInt("mobs.cat.spawn-delay", catSpawnDelay); catSpawnDelay = getInt("mobs.cat.spawn-delay", catSpawnDelay);
catSpawnSwampHutScanRange = getInt("mobs.cat.scan-range-for-other-cats.swamp-hut", catSpawnSwampHutScanRange); catSpawnSwampHutScanRange = getInt("mobs.cat.scan-range-for-other-cats.swamp-hut", catSpawnSwampHutScanRange);
catSpawnVillageScanRange = getInt("mobs.cat.scan-range-for-other-cats.village", catSpawnVillageScanRange); catSpawnVillageScanRange = getInt("mobs.cat.scan-range-for-other-cats.village", catSpawnVillageScanRange);
@@ -617,7 +617,7 @@ index 1f2af3b001ce000cd504a9a5dafb74f65b3b468e..eefd829f617f2af60b9846f2fe800367
} }
public boolean caveSpiderRidable = false; public boolean caveSpiderRidable = false;
@@ -634,6 +644,7 @@ public class PurpurWorldConfig { @@ -632,6 +642,7 @@ public class PurpurWorldConfig {
public double chickenMaxHealth = 4.0D; public double chickenMaxHealth = 4.0D;
public double chickenScale = 1.0D; public double chickenScale = 1.0D;
public boolean chickenRetaliate = false; public boolean chickenRetaliate = false;
@@ -625,7 +625,7 @@ index 1f2af3b001ce000cd504a9a5dafb74f65b3b468e..eefd829f617f2af60b9846f2fe800367
private void chickenSettings() { private void chickenSettings() {
chickenRidable = getBoolean("mobs.chicken.ridable", chickenRidable); chickenRidable = getBoolean("mobs.chicken.ridable", chickenRidable);
chickenRidableInWater = getBoolean("mobs.chicken.ridable-in-water", chickenRidableInWater); chickenRidableInWater = getBoolean("mobs.chicken.ridable-in-water", chickenRidableInWater);
@@ -646,6 +657,7 @@ public class PurpurWorldConfig { @@ -644,6 +655,7 @@ public class PurpurWorldConfig {
chickenMaxHealth = getDouble("mobs.chicken.attributes.max_health", chickenMaxHealth); chickenMaxHealth = getDouble("mobs.chicken.attributes.max_health", chickenMaxHealth);
chickenScale = Mth.clamp(getDouble("mobs.chicken.attributes.scale", chickenScale), 0.0625D, 16.0D); chickenScale = Mth.clamp(getDouble("mobs.chicken.attributes.scale", chickenScale), 0.0625D, 16.0D);
chickenRetaliate = getBoolean("mobs.chicken.retaliate", chickenRetaliate); chickenRetaliate = getBoolean("mobs.chicken.retaliate", chickenRetaliate);
@@ -633,7 +633,7 @@ index 1f2af3b001ce000cd504a9a5dafb74f65b3b468e..eefd829f617f2af60b9846f2fe800367
} }
public boolean codRidable = false; public boolean codRidable = false;
@@ -670,6 +682,7 @@ public class PurpurWorldConfig { @@ -668,6 +680,7 @@ public class PurpurWorldConfig {
public double cowMaxHealth = 10.0D; public double cowMaxHealth = 10.0D;
public double cowScale = 1.0D; public double cowScale = 1.0D;
public int cowFeedMushrooms = 0; public int cowFeedMushrooms = 0;
@@ -641,7 +641,7 @@ index 1f2af3b001ce000cd504a9a5dafb74f65b3b468e..eefd829f617f2af60b9846f2fe800367
private void cowSettings() { private void cowSettings() {
cowRidable = getBoolean("mobs.cow.ridable", cowRidable); cowRidable = getBoolean("mobs.cow.ridable", cowRidable);
cowRidableInWater = getBoolean("mobs.cow.ridable-in-water", cowRidableInWater); cowRidableInWater = getBoolean("mobs.cow.ridable-in-water", cowRidableInWater);
@@ -682,6 +695,7 @@ public class PurpurWorldConfig { @@ -680,6 +693,7 @@ public class PurpurWorldConfig {
cowMaxHealth = getDouble("mobs.cow.attributes.max_health", cowMaxHealth); cowMaxHealth = getDouble("mobs.cow.attributes.max_health", cowMaxHealth);
cowScale = Mth.clamp(getDouble("mobs.cow.attributes.scale", cowScale), 0.0625D, 16.0D); cowScale = Mth.clamp(getDouble("mobs.cow.attributes.scale", cowScale), 0.0625D, 16.0D);
cowFeedMushrooms = getInt("mobs.cow.feed-mushrooms-for-mooshroom", cowFeedMushrooms); cowFeedMushrooms = getInt("mobs.cow.feed-mushrooms-for-mooshroom", cowFeedMushrooms);
@@ -649,7 +649,7 @@ index 1f2af3b001ce000cd504a9a5dafb74f65b3b468e..eefd829f617f2af60b9846f2fe800367
} }
public boolean creeperRidable = false; public boolean creeperRidable = false;
@@ -737,6 +751,7 @@ public class PurpurWorldConfig { @@ -735,6 +749,7 @@ public class PurpurWorldConfig {
public double donkeyJumpStrengthMax = 0.5D; public double donkeyJumpStrengthMax = 0.5D;
public double donkeyMovementSpeedMin = 0.175D; public double donkeyMovementSpeedMin = 0.175D;
public double donkeyMovementSpeedMax = 0.175D; public double donkeyMovementSpeedMax = 0.175D;
@@ -657,7 +657,7 @@ index 1f2af3b001ce000cd504a9a5dafb74f65b3b468e..eefd829f617f2af60b9846f2fe800367
private void donkeySettings() { private void donkeySettings() {
donkeyRidableInWater = getBoolean("mobs.donkey.ridable-in-water", donkeyRidableInWater); donkeyRidableInWater = getBoolean("mobs.donkey.ridable-in-water", donkeyRidableInWater);
if (PurpurConfig.version < 10) { if (PurpurConfig.version < 10) {
@@ -752,6 +767,7 @@ public class PurpurWorldConfig { @@ -750,6 +765,7 @@ public class PurpurWorldConfig {
donkeyJumpStrengthMax = getDouble("mobs.donkey.attributes.jump_strength.max", donkeyJumpStrengthMax); donkeyJumpStrengthMax = getDouble("mobs.donkey.attributes.jump_strength.max", donkeyJumpStrengthMax);
donkeyMovementSpeedMin = getDouble("mobs.donkey.attributes.movement_speed.min", donkeyMovementSpeedMin); donkeyMovementSpeedMin = getDouble("mobs.donkey.attributes.movement_speed.min", donkeyMovementSpeedMin);
donkeyMovementSpeedMax = getDouble("mobs.donkey.attributes.movement_speed.max", donkeyMovementSpeedMax); donkeyMovementSpeedMax = getDouble("mobs.donkey.attributes.movement_speed.max", donkeyMovementSpeedMax);
@@ -665,7 +665,7 @@ index 1f2af3b001ce000cd504a9a5dafb74f65b3b468e..eefd829f617f2af60b9846f2fe800367
} }
public boolean drownedRidable = false; public boolean drownedRidable = false;
@@ -882,6 +898,7 @@ public class PurpurWorldConfig { @@ -880,6 +896,7 @@ public class PurpurWorldConfig {
public double foxMaxHealth = 10.0D; public double foxMaxHealth = 10.0D;
public double foxScale = 1.0D; public double foxScale = 1.0D;
public boolean foxTypeChangesWithTulips = false; public boolean foxTypeChangesWithTulips = false;
@@ -673,7 +673,7 @@ index 1f2af3b001ce000cd504a9a5dafb74f65b3b468e..eefd829f617f2af60b9846f2fe800367
private void foxSettings() { private void foxSettings() {
foxRidable = getBoolean("mobs.fox.ridable", foxRidable); foxRidable = getBoolean("mobs.fox.ridable", foxRidable);
foxRidableInWater = getBoolean("mobs.fox.ridable-in-water", foxRidableInWater); foxRidableInWater = getBoolean("mobs.fox.ridable-in-water", foxRidableInWater);
@@ -894,17 +911,20 @@ public class PurpurWorldConfig { @@ -892,17 +909,20 @@ public class PurpurWorldConfig {
foxMaxHealth = getDouble("mobs.fox.attributes.max_health", foxMaxHealth); foxMaxHealth = getDouble("mobs.fox.attributes.max_health", foxMaxHealth);
foxScale = Mth.clamp(getDouble("mobs.fox.attributes.scale", foxScale), 0.0625D, 16.0D); foxScale = Mth.clamp(getDouble("mobs.fox.attributes.scale", foxScale), 0.0625D, 16.0D);
foxTypeChangesWithTulips = getBoolean("mobs.fox.tulips-change-type", foxTypeChangesWithTulips); foxTypeChangesWithTulips = getBoolean("mobs.fox.tulips-change-type", foxTypeChangesWithTulips);
@@ -694,7 +694,7 @@ index 1f2af3b001ce000cd504a9a5dafb74f65b3b468e..eefd829f617f2af60b9846f2fe800367
} }
public boolean ghastRidable = false; public boolean ghastRidable = false;
@@ -979,12 +999,14 @@ public class PurpurWorldConfig { @@ -977,12 +997,14 @@ public class PurpurWorldConfig {
public boolean goatControllable = true; public boolean goatControllable = true;
public double goatMaxHealth = 10.0D; public double goatMaxHealth = 10.0D;
public double goatScale = 1.0D; public double goatScale = 1.0D;
@@ -709,7 +709,7 @@ index 1f2af3b001ce000cd504a9a5dafb74f65b3b468e..eefd829f617f2af60b9846f2fe800367
} }
public boolean guardianRidable = false; public boolean guardianRidable = false;
@@ -1008,6 +1030,7 @@ public class PurpurWorldConfig { @@ -1006,6 +1028,7 @@ public class PurpurWorldConfig {
public boolean hoglinControllable = true; public boolean hoglinControllable = true;
public double hoglinMaxHealth = 40.0D; public double hoglinMaxHealth = 40.0D;
public double hoglinScale = 1.0D; public double hoglinScale = 1.0D;
@@ -717,7 +717,7 @@ index 1f2af3b001ce000cd504a9a5dafb74f65b3b468e..eefd829f617f2af60b9846f2fe800367
private void hoglinSettings() { private void hoglinSettings() {
hoglinRidable = getBoolean("mobs.hoglin.ridable", hoglinRidable); hoglinRidable = getBoolean("mobs.hoglin.ridable", hoglinRidable);
hoglinRidableInWater = getBoolean("mobs.hoglin.ridable-in-water", hoglinRidableInWater); hoglinRidableInWater = getBoolean("mobs.hoglin.ridable-in-water", hoglinRidableInWater);
@@ -1019,6 +1042,7 @@ public class PurpurWorldConfig { @@ -1017,6 +1040,7 @@ public class PurpurWorldConfig {
} }
hoglinMaxHealth = getDouble("mobs.hoglin.attributes.max_health", hoglinMaxHealth); hoglinMaxHealth = getDouble("mobs.hoglin.attributes.max_health", hoglinMaxHealth);
hoglinScale = Mth.clamp(getDouble("mobs.hoglin.attributes.scale", hoglinScale), 0.0625D, 16.0D); hoglinScale = Mth.clamp(getDouble("mobs.hoglin.attributes.scale", hoglinScale), 0.0625D, 16.0D);
@@ -725,7 +725,7 @@ index 1f2af3b001ce000cd504a9a5dafb74f65b3b468e..eefd829f617f2af60b9846f2fe800367
} }
public boolean horseRidableInWater = false; public boolean horseRidableInWater = false;
@@ -1028,6 +1052,7 @@ public class PurpurWorldConfig { @@ -1026,6 +1050,7 @@ public class PurpurWorldConfig {
public double horseJumpStrengthMax = 1.0D; public double horseJumpStrengthMax = 1.0D;
public double horseMovementSpeedMin = 0.1125D; public double horseMovementSpeedMin = 0.1125D;
public double horseMovementSpeedMax = 0.3375D; public double horseMovementSpeedMax = 0.3375D;
@@ -733,7 +733,7 @@ index 1f2af3b001ce000cd504a9a5dafb74f65b3b468e..eefd829f617f2af60b9846f2fe800367
private void horseSettings() { private void horseSettings() {
horseRidableInWater = getBoolean("mobs.horse.ridable-in-water", horseRidableInWater); horseRidableInWater = getBoolean("mobs.horse.ridable-in-water", horseRidableInWater);
if (PurpurConfig.version < 10) { if (PurpurConfig.version < 10) {
@@ -1043,6 +1068,7 @@ public class PurpurWorldConfig { @@ -1041,6 +1066,7 @@ public class PurpurWorldConfig {
horseJumpStrengthMax = getDouble("mobs.horse.attributes.jump_strength.max", horseJumpStrengthMax); horseJumpStrengthMax = getDouble("mobs.horse.attributes.jump_strength.max", horseJumpStrengthMax);
horseMovementSpeedMin = getDouble("mobs.horse.attributes.movement_speed.min", horseMovementSpeedMin); horseMovementSpeedMin = getDouble("mobs.horse.attributes.movement_speed.min", horseMovementSpeedMin);
horseMovementSpeedMax = getDouble("mobs.horse.attributes.movement_speed.max", horseMovementSpeedMax); horseMovementSpeedMax = getDouble("mobs.horse.attributes.movement_speed.max", horseMovementSpeedMax);
@@ -741,7 +741,7 @@ index 1f2af3b001ce000cd504a9a5dafb74f65b3b468e..eefd829f617f2af60b9846f2fe800367
} }
public boolean huskRidable = false; public boolean huskRidable = false;
@@ -1126,6 +1152,7 @@ public class PurpurWorldConfig { @@ -1124,6 +1150,7 @@ public class PurpurWorldConfig {
public double llamaJumpStrengthMax = 0.5D; public double llamaJumpStrengthMax = 0.5D;
public double llamaMovementSpeedMin = 0.175D; public double llamaMovementSpeedMin = 0.175D;
public double llamaMovementSpeedMax = 0.175D; public double llamaMovementSpeedMax = 0.175D;
@@ -749,7 +749,7 @@ index 1f2af3b001ce000cd504a9a5dafb74f65b3b468e..eefd829f617f2af60b9846f2fe800367
private void llamaSettings() { private void llamaSettings() {
llamaRidable = getBoolean("mobs.llama.ridable", llamaRidable); llamaRidable = getBoolean("mobs.llama.ridable", llamaRidable);
llamaRidableInWater = getBoolean("mobs.llama.ridable-in-water", llamaRidableInWater); llamaRidableInWater = getBoolean("mobs.llama.ridable-in-water", llamaRidableInWater);
@@ -1143,6 +1170,7 @@ public class PurpurWorldConfig { @@ -1141,6 +1168,7 @@ public class PurpurWorldConfig {
llamaJumpStrengthMax = getDouble("mobs.llama.attributes.jump_strength.max", llamaJumpStrengthMax); llamaJumpStrengthMax = getDouble("mobs.llama.attributes.jump_strength.max", llamaJumpStrengthMax);
llamaMovementSpeedMin = getDouble("mobs.llama.attributes.movement_speed.min", llamaMovementSpeedMin); llamaMovementSpeedMin = getDouble("mobs.llama.attributes.movement_speed.min", llamaMovementSpeedMin);
llamaMovementSpeedMax = getDouble("mobs.llama.attributes.movement_speed.max", llamaMovementSpeedMax); llamaMovementSpeedMax = getDouble("mobs.llama.attributes.movement_speed.max", llamaMovementSpeedMax);
@@ -757,7 +757,7 @@ index 1f2af3b001ce000cd504a9a5dafb74f65b3b468e..eefd829f617f2af60b9846f2fe800367
} }
public boolean magmaCubeRidable = false; public boolean magmaCubeRidable = false;
@@ -1172,6 +1200,7 @@ public class PurpurWorldConfig { @@ -1170,6 +1198,7 @@ public class PurpurWorldConfig {
public boolean mooshroomControllable = true; public boolean mooshroomControllable = true;
public double mooshroomMaxHealth = 10.0D; public double mooshroomMaxHealth = 10.0D;
public double mooshroomScale = 1.0D; public double mooshroomScale = 1.0D;
@@ -765,7 +765,7 @@ index 1f2af3b001ce000cd504a9a5dafb74f65b3b468e..eefd829f617f2af60b9846f2fe800367
private void mooshroomSettings() { private void mooshroomSettings() {
mooshroomRidable = getBoolean("mobs.mooshroom.ridable", mooshroomRidable); mooshroomRidable = getBoolean("mobs.mooshroom.ridable", mooshroomRidable);
mooshroomRidableInWater = getBoolean("mobs.mooshroom.ridable-in-water", mooshroomRidableInWater); mooshroomRidableInWater = getBoolean("mobs.mooshroom.ridable-in-water", mooshroomRidableInWater);
@@ -1183,6 +1212,7 @@ public class PurpurWorldConfig { @@ -1181,6 +1210,7 @@ public class PurpurWorldConfig {
} }
mooshroomMaxHealth = getDouble("mobs.mooshroom.attributes.max_health", mooshroomMaxHealth); mooshroomMaxHealth = getDouble("mobs.mooshroom.attributes.max_health", mooshroomMaxHealth);
mooshroomScale = Mth.clamp(getDouble("mobs.mooshroom.attributes.scale", mooshroomScale), 0.0625D, 16.0D); mooshroomScale = Mth.clamp(getDouble("mobs.mooshroom.attributes.scale", mooshroomScale), 0.0625D, 16.0D);
@@ -773,7 +773,7 @@ index 1f2af3b001ce000cd504a9a5dafb74f65b3b468e..eefd829f617f2af60b9846f2fe800367
} }
public boolean muleRidableInWater = false; public boolean muleRidableInWater = false;
@@ -1192,6 +1222,7 @@ public class PurpurWorldConfig { @@ -1190,6 +1220,7 @@ public class PurpurWorldConfig {
public double muleJumpStrengthMax = 0.5D; public double muleJumpStrengthMax = 0.5D;
public double muleMovementSpeedMin = 0.175D; public double muleMovementSpeedMin = 0.175D;
public double muleMovementSpeedMax = 0.175D; public double muleMovementSpeedMax = 0.175D;
@@ -781,7 +781,7 @@ index 1f2af3b001ce000cd504a9a5dafb74f65b3b468e..eefd829f617f2af60b9846f2fe800367
private void muleSettings() { private void muleSettings() {
muleRidableInWater = getBoolean("mobs.mule.ridable-in-water", muleRidableInWater); muleRidableInWater = getBoolean("mobs.mule.ridable-in-water", muleRidableInWater);
if (PurpurConfig.version < 10) { if (PurpurConfig.version < 10) {
@@ -1207,6 +1238,7 @@ public class PurpurWorldConfig { @@ -1205,6 +1236,7 @@ public class PurpurWorldConfig {
muleJumpStrengthMax = getDouble("mobs.mule.attributes.jump_strength.max", muleJumpStrengthMax); muleJumpStrengthMax = getDouble("mobs.mule.attributes.jump_strength.max", muleJumpStrengthMax);
muleMovementSpeedMin = getDouble("mobs.mule.attributes.movement_speed.min", muleMovementSpeedMin); muleMovementSpeedMin = getDouble("mobs.mule.attributes.movement_speed.min", muleMovementSpeedMin);
muleMovementSpeedMax = getDouble("mobs.mule.attributes.movement_speed.max", muleMovementSpeedMax); muleMovementSpeedMax = getDouble("mobs.mule.attributes.movement_speed.max", muleMovementSpeedMax);
@@ -789,7 +789,7 @@ index 1f2af3b001ce000cd504a9a5dafb74f65b3b468e..eefd829f617f2af60b9846f2fe800367
} }
public boolean ocelotRidable = false; public boolean ocelotRidable = false;
@@ -1214,6 +1246,7 @@ public class PurpurWorldConfig { @@ -1212,6 +1244,7 @@ public class PurpurWorldConfig {
public boolean ocelotControllable = true; public boolean ocelotControllable = true;
public double ocelotMaxHealth = 10.0D; public double ocelotMaxHealth = 10.0D;
public double ocelotScale = 1.0D; public double ocelotScale = 1.0D;
@@ -797,7 +797,7 @@ index 1f2af3b001ce000cd504a9a5dafb74f65b3b468e..eefd829f617f2af60b9846f2fe800367
private void ocelotSettings() { private void ocelotSettings() {
ocelotRidable = getBoolean("mobs.ocelot.ridable", ocelotRidable); ocelotRidable = getBoolean("mobs.ocelot.ridable", ocelotRidable);
ocelotRidableInWater = getBoolean("mobs.ocelot.ridable-in-water", ocelotRidableInWater); ocelotRidableInWater = getBoolean("mobs.ocelot.ridable-in-water", ocelotRidableInWater);
@@ -1225,6 +1258,7 @@ public class PurpurWorldConfig { @@ -1223,6 +1256,7 @@ public class PurpurWorldConfig {
} }
ocelotMaxHealth = getDouble("mobs.ocelot.attributes.max_health", ocelotMaxHealth); ocelotMaxHealth = getDouble("mobs.ocelot.attributes.max_health", ocelotMaxHealth);
ocelotScale = Mth.clamp(getDouble("mobs.ocelot.attributes.scale", ocelotScale), 0.0625D, 16.0D); ocelotScale = Mth.clamp(getDouble("mobs.ocelot.attributes.scale", ocelotScale), 0.0625D, 16.0D);
@@ -805,7 +805,7 @@ index 1f2af3b001ce000cd504a9a5dafb74f65b3b468e..eefd829f617f2af60b9846f2fe800367
} }
public boolean pandaRidable = false; public boolean pandaRidable = false;
@@ -1232,6 +1266,7 @@ public class PurpurWorldConfig { @@ -1230,6 +1264,7 @@ public class PurpurWorldConfig {
public boolean pandaControllable = true; public boolean pandaControllable = true;
public double pandaMaxHealth = 20.0D; public double pandaMaxHealth = 20.0D;
public double pandaScale = 1.0D; public double pandaScale = 1.0D;
@@ -813,7 +813,7 @@ index 1f2af3b001ce000cd504a9a5dafb74f65b3b468e..eefd829f617f2af60b9846f2fe800367
private void pandaSettings() { private void pandaSettings() {
pandaRidable = getBoolean("mobs.panda.ridable", pandaRidable); pandaRidable = getBoolean("mobs.panda.ridable", pandaRidable);
pandaRidableInWater = getBoolean("mobs.panda.ridable-in-water", pandaRidableInWater); pandaRidableInWater = getBoolean("mobs.panda.ridable-in-water", pandaRidableInWater);
@@ -1243,6 +1278,7 @@ public class PurpurWorldConfig { @@ -1241,6 +1276,7 @@ public class PurpurWorldConfig {
} }
pandaMaxHealth = getDouble("mobs.panda.attributes.max_health", pandaMaxHealth); pandaMaxHealth = getDouble("mobs.panda.attributes.max_health", pandaMaxHealth);
pandaScale = Mth.clamp(getDouble("mobs.panda.attributes.scale", pandaScale), 0.0625D, 16.0D); pandaScale = Mth.clamp(getDouble("mobs.panda.attributes.scale", pandaScale), 0.0625D, 16.0D);
@@ -821,7 +821,7 @@ index 1f2af3b001ce000cd504a9a5dafb74f65b3b468e..eefd829f617f2af60b9846f2fe800367
} }
public boolean parrotRidable = false; public boolean parrotRidable = false;
@@ -1329,6 +1365,7 @@ public class PurpurWorldConfig { @@ -1327,6 +1363,7 @@ public class PurpurWorldConfig {
public double pigMaxHealth = 10.0D; public double pigMaxHealth = 10.0D;
public double pigScale = 1.0D; public double pigScale = 1.0D;
public boolean pigGiveSaddleBack = false; public boolean pigGiveSaddleBack = false;
@@ -829,7 +829,7 @@ index 1f2af3b001ce000cd504a9a5dafb74f65b3b468e..eefd829f617f2af60b9846f2fe800367
private void pigSettings() { private void pigSettings() {
pigRidable = getBoolean("mobs.pig.ridable", pigRidable); pigRidable = getBoolean("mobs.pig.ridable", pigRidable);
pigRidableInWater = getBoolean("mobs.pig.ridable-in-water", pigRidableInWater); pigRidableInWater = getBoolean("mobs.pig.ridable-in-water", pigRidableInWater);
@@ -1341,6 +1378,7 @@ public class PurpurWorldConfig { @@ -1339,6 +1376,7 @@ public class PurpurWorldConfig {
pigMaxHealth = getDouble("mobs.pig.attributes.max_health", pigMaxHealth); pigMaxHealth = getDouble("mobs.pig.attributes.max_health", pigMaxHealth);
pigScale = Mth.clamp(getDouble("mobs.pig.attributes.scale", pigScale), 0.0625D, 16.0D); pigScale = Mth.clamp(getDouble("mobs.pig.attributes.scale", pigScale), 0.0625D, 16.0D);
pigGiveSaddleBack = getBoolean("mobs.pig.give-saddle-back", pigGiveSaddleBack); pigGiveSaddleBack = getBoolean("mobs.pig.give-saddle-back", pigGiveSaddleBack);
@@ -837,7 +837,7 @@ index 1f2af3b001ce000cd504a9a5dafb74f65b3b468e..eefd829f617f2af60b9846f2fe800367
} }
public boolean piglinRidable = false; public boolean piglinRidable = false;
@@ -1404,6 +1442,7 @@ public class PurpurWorldConfig { @@ -1402,6 +1440,7 @@ public class PurpurWorldConfig {
public double polarBearScale = 1.0D; public double polarBearScale = 1.0D;
public String polarBearBreedableItemString = ""; public String polarBearBreedableItemString = "";
public Item polarBearBreedableItem = null; public Item polarBearBreedableItem = null;
@@ -845,7 +845,7 @@ index 1f2af3b001ce000cd504a9a5dafb74f65b3b468e..eefd829f617f2af60b9846f2fe800367
private void polarBearSettings() { private void polarBearSettings() {
polarBearRidable = getBoolean("mobs.polar_bear.ridable", polarBearRidable); polarBearRidable = getBoolean("mobs.polar_bear.ridable", polarBearRidable);
polarBearRidableInWater = getBoolean("mobs.polar_bear.ridable-in-water", polarBearRidableInWater); polarBearRidableInWater = getBoolean("mobs.polar_bear.ridable-in-water", polarBearRidableInWater);
@@ -1418,6 +1457,7 @@ public class PurpurWorldConfig { @@ -1416,6 +1455,7 @@ public class PurpurWorldConfig {
polarBearBreedableItemString = getString("mobs.polar_bear.breedable-item", polarBearBreedableItemString); polarBearBreedableItemString = getString("mobs.polar_bear.breedable-item", polarBearBreedableItemString);
Item item = BuiltInRegistries.ITEM.get(ResourceLocation.parse(polarBearBreedableItemString)); Item item = BuiltInRegistries.ITEM.get(ResourceLocation.parse(polarBearBreedableItemString));
if (item != Items.AIR) polarBearBreedableItem = item; if (item != Items.AIR) polarBearBreedableItem = item;
@@ -853,7 +853,7 @@ index 1f2af3b001ce000cd504a9a5dafb74f65b3b468e..eefd829f617f2af60b9846f2fe800367
} }
public boolean pufferfishRidable = false; public boolean pufferfishRidable = false;
@@ -1443,6 +1483,7 @@ public class PurpurWorldConfig { @@ -1441,6 +1481,7 @@ public class PurpurWorldConfig {
public double rabbitScale = 1.0D; public double rabbitScale = 1.0D;
public double rabbitNaturalToast = 0.0D; public double rabbitNaturalToast = 0.0D;
public double rabbitNaturalKiller = 0.0D; public double rabbitNaturalKiller = 0.0D;
@@ -861,7 +861,7 @@ index 1f2af3b001ce000cd504a9a5dafb74f65b3b468e..eefd829f617f2af60b9846f2fe800367
private void rabbitSettings() { private void rabbitSettings() {
rabbitRidable = getBoolean("mobs.rabbit.ridable", rabbitRidable); rabbitRidable = getBoolean("mobs.rabbit.ridable", rabbitRidable);
rabbitRidableInWater = getBoolean("mobs.rabbit.ridable-in-water", rabbitRidableInWater); rabbitRidableInWater = getBoolean("mobs.rabbit.ridable-in-water", rabbitRidableInWater);
@@ -1456,6 +1497,7 @@ public class PurpurWorldConfig { @@ -1454,6 +1495,7 @@ public class PurpurWorldConfig {
rabbitScale = Mth.clamp(getDouble("mobs.rabbit.attributes.scale", rabbitScale), 0.0625D, 16.0D); rabbitScale = Mth.clamp(getDouble("mobs.rabbit.attributes.scale", rabbitScale), 0.0625D, 16.0D);
rabbitNaturalToast = getDouble("mobs.rabbit.spawn-toast-chance", rabbitNaturalToast); rabbitNaturalToast = getDouble("mobs.rabbit.spawn-toast-chance", rabbitNaturalToast);
rabbitNaturalKiller = getDouble("mobs.rabbit.spawn-killer-rabbit-chance", rabbitNaturalKiller); rabbitNaturalKiller = getDouble("mobs.rabbit.spawn-killer-rabbit-chance", rabbitNaturalKiller);
@@ -869,7 +869,7 @@ index 1f2af3b001ce000cd504a9a5dafb74f65b3b468e..eefd829f617f2af60b9846f2fe800367
} }
public boolean ravagerRidable = false; public boolean ravagerRidable = false;
@@ -1497,6 +1539,7 @@ public class PurpurWorldConfig { @@ -1495,6 +1537,7 @@ public class PurpurWorldConfig {
public boolean sheepControllable = true; public boolean sheepControllable = true;
public double sheepMaxHealth = 8.0D; public double sheepMaxHealth = 8.0D;
public double sheepScale = 1.0D; public double sheepScale = 1.0D;
@@ -877,7 +877,7 @@ index 1f2af3b001ce000cd504a9a5dafb74f65b3b468e..eefd829f617f2af60b9846f2fe800367
private void sheepSettings() { private void sheepSettings() {
sheepRidable = getBoolean("mobs.sheep.ridable", sheepRidable); sheepRidable = getBoolean("mobs.sheep.ridable", sheepRidable);
sheepRidableInWater = getBoolean("mobs.sheep.ridable-in-water", sheepRidableInWater); sheepRidableInWater = getBoolean("mobs.sheep.ridable-in-water", sheepRidableInWater);
@@ -1508,6 +1551,7 @@ public class PurpurWorldConfig { @@ -1506,6 +1549,7 @@ public class PurpurWorldConfig {
} }
sheepMaxHealth = getDouble("mobs.sheep.attributes.max_health", sheepMaxHealth); sheepMaxHealth = getDouble("mobs.sheep.attributes.max_health", sheepMaxHealth);
sheepScale = Mth.clamp(getDouble("mobs.sheep.attributes.scale", sheepScale), 0.0625D, 16.0D); sheepScale = Mth.clamp(getDouble("mobs.sheep.attributes.scale", sheepScale), 0.0625D, 16.0D);
@@ -885,7 +885,7 @@ index 1f2af3b001ce000cd504a9a5dafb74f65b3b468e..eefd829f617f2af60b9846f2fe800367
} }
public boolean shulkerRidable = false; public boolean shulkerRidable = false;
@@ -1644,12 +1688,14 @@ public class PurpurWorldConfig { @@ -1642,12 +1686,14 @@ public class PurpurWorldConfig {
public boolean snifferControllable = true; public boolean snifferControllable = true;
public double snifferMaxHealth = 14.0D; public double snifferMaxHealth = 14.0D;
public double snifferScale = 1.0D; public double snifferScale = 1.0D;
@@ -900,7 +900,7 @@ index 1f2af3b001ce000cd504a9a5dafb74f65b3b468e..eefd829f617f2af60b9846f2fe800367
} }
public boolean squidRidable = false; public boolean squidRidable = false;
@@ -1715,6 +1761,7 @@ public class PurpurWorldConfig { @@ -1713,6 +1759,7 @@ public class PurpurWorldConfig {
public boolean striderControllable = true; public boolean striderControllable = true;
public double striderMaxHealth = 20.0D; public double striderMaxHealth = 20.0D;
public double striderScale = 1.0D; public double striderScale = 1.0D;
@@ -908,7 +908,7 @@ index 1f2af3b001ce000cd504a9a5dafb74f65b3b468e..eefd829f617f2af60b9846f2fe800367
private void striderSettings() { private void striderSettings() {
striderRidable = getBoolean("mobs.strider.ridable", striderRidable); striderRidable = getBoolean("mobs.strider.ridable", striderRidable);
striderRidableInWater = getBoolean("mobs.strider.ridable-in-water", striderRidableInWater); striderRidableInWater = getBoolean("mobs.strider.ridable-in-water", striderRidableInWater);
@@ -1726,6 +1773,7 @@ public class PurpurWorldConfig { @@ -1724,6 +1771,7 @@ public class PurpurWorldConfig {
} }
striderMaxHealth = getDouble("mobs.strider.attributes.max_health", striderMaxHealth); striderMaxHealth = getDouble("mobs.strider.attributes.max_health", striderMaxHealth);
striderScale = Mth.clamp(getDouble("mobs.strider.attributes.scale", striderScale), 0.0625D, 16.0D); striderScale = Mth.clamp(getDouble("mobs.strider.attributes.scale", striderScale), 0.0625D, 16.0D);
@@ -916,7 +916,7 @@ index 1f2af3b001ce000cd504a9a5dafb74f65b3b468e..eefd829f617f2af60b9846f2fe800367
} }
public boolean tadpoleRidable = false; public boolean tadpoleRidable = false;
@@ -1746,6 +1794,7 @@ public class PurpurWorldConfig { @@ -1744,6 +1792,7 @@ public class PurpurWorldConfig {
public double traderLlamaJumpStrengthMax = 0.5D; public double traderLlamaJumpStrengthMax = 0.5D;
public double traderLlamaMovementSpeedMin = 0.175D; public double traderLlamaMovementSpeedMin = 0.175D;
public double traderLlamaMovementSpeedMax = 0.175D; public double traderLlamaMovementSpeedMax = 0.175D;
@@ -924,7 +924,7 @@ index 1f2af3b001ce000cd504a9a5dafb74f65b3b468e..eefd829f617f2af60b9846f2fe800367
private void traderLlamaSettings() { private void traderLlamaSettings() {
traderLlamaRidable = getBoolean("mobs.trader_llama.ridable", traderLlamaRidable); traderLlamaRidable = getBoolean("mobs.trader_llama.ridable", traderLlamaRidable);
traderLlamaRidableInWater = getBoolean("mobs.trader_llama.ridable-in-water", traderLlamaRidableInWater); traderLlamaRidableInWater = getBoolean("mobs.trader_llama.ridable-in-water", traderLlamaRidableInWater);
@@ -1763,6 +1812,7 @@ public class PurpurWorldConfig { @@ -1761,6 +1810,7 @@ public class PurpurWorldConfig {
traderLlamaJumpStrengthMax = getDouble("mobs.trader_llama.attributes.jump_strength.max", traderLlamaJumpStrengthMax); traderLlamaJumpStrengthMax = getDouble("mobs.trader_llama.attributes.jump_strength.max", traderLlamaJumpStrengthMax);
traderLlamaMovementSpeedMin = getDouble("mobs.trader_llama.attributes.movement_speed.min", traderLlamaMovementSpeedMin); traderLlamaMovementSpeedMin = getDouble("mobs.trader_llama.attributes.movement_speed.min", traderLlamaMovementSpeedMin);
traderLlamaMovementSpeedMax = getDouble("mobs.trader_llama.attributes.movement_speed.max", traderLlamaMovementSpeedMax); traderLlamaMovementSpeedMax = getDouble("mobs.trader_llama.attributes.movement_speed.max", traderLlamaMovementSpeedMax);
@@ -932,7 +932,7 @@ index 1f2af3b001ce000cd504a9a5dafb74f65b3b468e..eefd829f617f2af60b9846f2fe800367
} }
public boolean tropicalFishRidable = false; public boolean tropicalFishRidable = false;
@@ -1786,6 +1836,7 @@ public class PurpurWorldConfig { @@ -1784,6 +1834,7 @@ public class PurpurWorldConfig {
public boolean turtleControllable = true; public boolean turtleControllable = true;
public double turtleMaxHealth = 30.0D; public double turtleMaxHealth = 30.0D;
public double turtleScale = 1.0D; public double turtleScale = 1.0D;
@@ -940,7 +940,7 @@ index 1f2af3b001ce000cd504a9a5dafb74f65b3b468e..eefd829f617f2af60b9846f2fe800367
private void turtleSettings() { private void turtleSettings() {
turtleRidable = getBoolean("mobs.turtle.ridable", turtleRidable); turtleRidable = getBoolean("mobs.turtle.ridable", turtleRidable);
turtleRidableInWater = getBoolean("mobs.turtle.ridable-in-water", turtleRidableInWater); turtleRidableInWater = getBoolean("mobs.turtle.ridable-in-water", turtleRidableInWater);
@@ -1797,6 +1848,7 @@ public class PurpurWorldConfig { @@ -1795,6 +1846,7 @@ public class PurpurWorldConfig {
} }
turtleMaxHealth = getDouble("mobs.turtle.attributes.max_health", turtleMaxHealth); turtleMaxHealth = getDouble("mobs.turtle.attributes.max_health", turtleMaxHealth);
turtleScale = Mth.clamp(getDouble("mobs.turtle.attributes.scale", turtleScale), 0.0625D, 16.0D); turtleScale = Mth.clamp(getDouble("mobs.turtle.attributes.scale", turtleScale), 0.0625D, 16.0D);
@@ -948,7 +948,7 @@ index 1f2af3b001ce000cd504a9a5dafb74f65b3b468e..eefd829f617f2af60b9846f2fe800367
} }
public boolean vexRidable = false; public boolean vexRidable = false;
@@ -1827,6 +1879,7 @@ public class PurpurWorldConfig { @@ -1825,6 +1877,7 @@ public class PurpurWorldConfig {
public boolean villagerFollowEmeraldBlock = false; public boolean villagerFollowEmeraldBlock = false;
public boolean villagerCanBeLeashed = false; public boolean villagerCanBeLeashed = false;
public boolean villagerCanBreed = true; public boolean villagerCanBreed = true;
@@ -956,7 +956,7 @@ index 1f2af3b001ce000cd504a9a5dafb74f65b3b468e..eefd829f617f2af60b9846f2fe800367
private void villagerSettings() { private void villagerSettings() {
villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable);
villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater);
@@ -1841,6 +1894,7 @@ public class PurpurWorldConfig { @@ -1839,6 +1892,7 @@ public class PurpurWorldConfig {
villagerFollowEmeraldBlock = getBoolean("mobs.villager.follow-emerald-blocks", villagerFollowEmeraldBlock); villagerFollowEmeraldBlock = getBoolean("mobs.villager.follow-emerald-blocks", villagerFollowEmeraldBlock);
villagerCanBeLeashed = getBoolean("mobs.villager.can-be-leashed", villagerCanBeLeashed); villagerCanBeLeashed = getBoolean("mobs.villager.can-be-leashed", villagerCanBeLeashed);
villagerCanBreed = getBoolean("mobs.villager.can-breed", villagerCanBreed); villagerCanBreed = getBoolean("mobs.villager.can-breed", villagerCanBreed);
@@ -964,7 +964,7 @@ index 1f2af3b001ce000cd504a9a5dafb74f65b3b468e..eefd829f617f2af60b9846f2fe800367
} }
public boolean vindicatorRidable = false; public boolean vindicatorRidable = false;
@@ -1963,6 +2017,7 @@ public class PurpurWorldConfig { @@ -1961,6 +2015,7 @@ public class PurpurWorldConfig {
public boolean wolfControllable = true; public boolean wolfControllable = true;
public double wolfMaxHealth = 8.0D; public double wolfMaxHealth = 8.0D;
public double wolfScale = 1.0D; public double wolfScale = 1.0D;
@@ -972,7 +972,7 @@ index 1f2af3b001ce000cd504a9a5dafb74f65b3b468e..eefd829f617f2af60b9846f2fe800367
private void wolfSettings() { private void wolfSettings() {
wolfRidable = getBoolean("mobs.wolf.ridable", wolfRidable); wolfRidable = getBoolean("mobs.wolf.ridable", wolfRidable);
wolfRidableInWater = getBoolean("mobs.wolf.ridable-in-water", wolfRidableInWater); wolfRidableInWater = getBoolean("mobs.wolf.ridable-in-water", wolfRidableInWater);
@@ -1974,6 +2029,7 @@ public class PurpurWorldConfig { @@ -1972,6 +2027,7 @@ public class PurpurWorldConfig {
} }
wolfMaxHealth = getDouble("mobs.wolf.attributes.max_health", wolfMaxHealth); wolfMaxHealth = getDouble("mobs.wolf.attributes.max_health", wolfMaxHealth);
wolfScale = Mth.clamp(getDouble("mobs.wolf.attributes.scale", wolfScale), 0.0625D, 16.0D); wolfScale = Mth.clamp(getDouble("mobs.wolf.attributes.scale", wolfScale), 0.0625D, 16.0D);

View File

@@ -6,10 +6,10 @@ Subject: [PATCH] Apply display names from item forms of entities to entities
diff --git a/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java b/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java diff --git a/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java b/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java
index 8d360dc542099af90f0c11839c12910859f0402b..4d6df7ec1bffbd30d4aac906f393ead0dfd8f69d 100644 index edb0cd90e28016c44b0aaf5c9ed5d7bdbced5295..12ff824ffa81ea45f76337ec2b6d80b01047b698 100644
--- a/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java --- a/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java
+++ b/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java +++ b/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java
@@ -620,6 +620,7 @@ public class ArmorStand extends LivingEntity { @@ -618,6 +618,7 @@ public class ArmorStand extends LivingEntity {
private org.bukkit.event.entity.EntityDeathEvent brokenByPlayer(ServerLevel world, DamageSource damageSource) { // Paper private org.bukkit.event.entity.EntityDeathEvent brokenByPlayer(ServerLevel world, DamageSource damageSource) { // Paper
ItemStack itemstack = new ItemStack(Items.ARMOR_STAND); ItemStack itemstack = new ItemStack(Items.ARMOR_STAND);
@@ -18,54 +18,54 @@ index 8d360dc542099af90f0c11839c12910859f0402b..4d6df7ec1bffbd30d4aac906f393ead0
this.drops.add(new DefaultDrop(itemstack, stack -> Block.popResource(this.level(), this.blockPosition(), stack))); // CraftBukkit - add to drops // Paper - Restore vanilla drops behavior this.drops.add(new DefaultDrop(itemstack, stack -> Block.popResource(this.level(), this.blockPosition(), stack))); // CraftBukkit - add to drops // Paper - Restore vanilla drops behavior
return this.brokenByAnything(world, damageSource); // Paper return this.brokenByAnything(world, damageSource); // Paper
diff --git a/src/main/java/net/minecraft/world/entity/decoration/ItemFrame.java b/src/main/java/net/minecraft/world/entity/decoration/ItemFrame.java diff --git a/src/main/java/net/minecraft/world/entity/decoration/ItemFrame.java b/src/main/java/net/minecraft/world/entity/decoration/ItemFrame.java
index 5b7245cd99593ee90e17c97e0104f3aba9ae05ea..cf78531b193ba56991ccb0c4f62844208e4a5706 100644 index d6f835320014c07f9d174d05929ed8cc16a10c10..9992a4e791495baae07645444f6374f083c56552 100644
--- a/src/main/java/net/minecraft/world/entity/decoration/ItemFrame.java --- a/src/main/java/net/minecraft/world/entity/decoration/ItemFrame.java
+++ b/src/main/java/net/minecraft/world/entity/decoration/ItemFrame.java +++ b/src/main/java/net/minecraft/world/entity/decoration/ItemFrame.java
@@ -227,7 +227,13 @@ public class ItemFrame extends HangingEntity { @@ -240,7 +240,13 @@ public class ItemFrame extends HangingEntity {
} }
if (alwaysDrop) { if (dropSelf) {
- this.spawnAtLocation(this.getFrameItemStack()); - this.spawnAtLocation(world, this.getFrameItemStack());
+ // Purpur start + // Purpur start
+ final ItemStack itemFrame = this.getFrameItemStack(); + final ItemStack itemFrame = this.getFrameItemStack();
+ if (!this.level().purpurConfig.persistentDroppableEntityDisplayNames) { + if (!this.level().purpurConfig.persistentDroppableEntityDisplayNames) {
+ itemFrame.set(DataComponents.CUSTOM_NAME, null); + itemFrame.set(DataComponents.CUSTOM_NAME, null);
+ } + }
+ this.spawnAtLocation(itemFrame); + this.spawnAtLocation(world, itemFrame);
+ // Purpur end + // Purpur end
} }
if (!itemstack.isEmpty()) { if (!itemstack.isEmpty()) {
diff --git a/src/main/java/net/minecraft/world/entity/decoration/Painting.java b/src/main/java/net/minecraft/world/entity/decoration/Painting.java diff --git a/src/main/java/net/minecraft/world/entity/decoration/Painting.java b/src/main/java/net/minecraft/world/entity/decoration/Painting.java
index e86fdf5d6853b7bddfe19d6e5d41d3dec0c25f23..f45567aa7695da68f92809a6c208eb515c2f838a 100644 index fd0e78a2318e3950d011c17358245e107b38154a..0fcab828e81176323cbdf16c0ec714d9a2846ae5 100644
--- a/src/main/java/net/minecraft/world/entity/decoration/Painting.java --- a/src/main/java/net/minecraft/world/entity/decoration/Painting.java
+++ b/src/main/java/net/minecraft/world/entity/decoration/Painting.java +++ b/src/main/java/net/minecraft/world/entity/decoration/Painting.java
@@ -178,7 +178,13 @@ public class Painting extends HangingEntity implements VariantHolder<Holder<Pain @@ -179,7 +179,13 @@ public class Painting extends HangingEntity implements VariantHolder<Holder<Pain
} }
} }
- this.spawnAtLocation((ItemLike) Items.PAINTING); - this.spawnAtLocation(world, (ItemLike) Items.PAINTING);
+ // Purpur start + // Purpur start
+ final ItemStack painting = new ItemStack(Items.PAINTING); + final ItemStack painting = new ItemStack((ItemLike) Items.PAINTING);
+ if (!this.level().purpurConfig.persistentDroppableEntityDisplayNames) { + if (!this.level().purpurConfig.persistentDroppableEntityDisplayNames) {
+ painting.set(net.minecraft.core.component.DataComponents.CUSTOM_NAME, null); + painting.set(net.minecraft.core.component.DataComponents.CUSTOM_NAME, null);
+ } + }
+ this.spawnAtLocation(painting); + this.spawnAtLocation(world, painting);
+ // Purpur end + // Purpur end
} }
} }
diff --git a/src/main/java/net/minecraft/world/entity/vehicle/Boat.java b/src/main/java/net/minecraft/world/entity/vehicle/Boat.java diff --git a/src/main/java/net/minecraft/world/entity/vehicle/AbstractBoat.java b/src/main/java/net/minecraft/world/entity/vehicle/AbstractBoat.java
index 7f7abef3c5b7ad124c5c1dda02173bc5f70c9506..5f3d58099d83fef4a9230e680b5e199d00eb7c7b 100644 index e523f651e8776a89ffba015921d708f569fad8f3..56c265940208bc94f531a5af94f564b59f35ebf3 100644
--- a/src/main/java/net/minecraft/world/entity/vehicle/Boat.java --- a/src/main/java/net/minecraft/world/entity/vehicle/AbstractBoat.java
+++ b/src/main/java/net/minecraft/world/entity/vehicle/Boat.java +++ b/src/main/java/net/minecraft/world/entity/vehicle/AbstractBoat.java
@@ -1017,7 +1017,13 @@ public class Boat extends VehicleEntity implements Leashable, VariantHolder<Boat @@ -930,7 +930,13 @@ public abstract class AbstractBoat extends VehicleEntity implements Leashable {
@Override @Override
public ItemStack getPickResult() { public final ItemStack getPickResult() {
- return new ItemStack(this.getDropItem()); - return new ItemStack((ItemLike) this.dropItem.get());
+ // Purpur start + // Purpur start
+ final ItemStack boat = new ItemStack(this.getDropItem()); + final ItemStack boat = new ItemStack((ItemLike) this.dropItem.get());
+ if (!this.level().purpurConfig.persistentDroppableEntityDisplayNames) { + if (!this.level().purpurConfig.persistentDroppableEntityDisplayNames) {
+ boat.set(net.minecraft.core.component.DataComponents.CUSTOM_NAME, null); + boat.set(net.minecraft.core.component.DataComponents.CUSTOM_NAME, null);
+ } + }
@@ -73,9 +73,9 @@ index 7f7abef3c5b7ad124c5c1dda02173bc5f70c9506..5f3d58099d83fef4a9230e680b5e199d
+ // Purpur end + // Purpur end
} }
public static enum Type implements StringRepresentable { public static enum Status {
diff --git a/src/main/java/net/minecraft/world/item/ArmorStandItem.java b/src/main/java/net/minecraft/world/item/ArmorStandItem.java diff --git a/src/main/java/net/minecraft/world/item/ArmorStandItem.java b/src/main/java/net/minecraft/world/item/ArmorStandItem.java
index 066a6e5ed2632a55324ec0d10f2f8a6bf3f30a0f..1921ecf2c0a9f18c93d207692fb9c2db58c9358f 100644 index cb4baebe22eeab17aed67a5ecc506b932fe2230b..c1a6734cc08de1c9fc413b1fa81a199ac9547ec2 100644
--- a/src/main/java/net/minecraft/world/item/ArmorStandItem.java --- a/src/main/java/net/minecraft/world/item/ArmorStandItem.java
+++ b/src/main/java/net/minecraft/world/item/ArmorStandItem.java +++ b/src/main/java/net/minecraft/world/item/ArmorStandItem.java
@@ -59,6 +59,14 @@ public class ArmorStandItem extends Item { @@ -59,6 +59,14 @@ public class ArmorStandItem extends Item {
@@ -94,26 +94,26 @@ index 066a6e5ed2632a55324ec0d10f2f8a6bf3f30a0f..1921ecf2c0a9f18c93d207692fb9c2db
world.playSound((Player) null, entityarmorstand.getX(), entityarmorstand.getY(), entityarmorstand.getZ(), SoundEvents.ARMOR_STAND_PLACE, SoundSource.BLOCKS, 0.75F, 0.8F); world.playSound((Player) null, entityarmorstand.getX(), entityarmorstand.getY(), entityarmorstand.getZ(), SoundEvents.ARMOR_STAND_PLACE, SoundSource.BLOCKS, 0.75F, 0.8F);
entityarmorstand.gameEvent(GameEvent.ENTITY_PLACE, context.getPlayer()); entityarmorstand.gameEvent(GameEvent.ENTITY_PLACE, context.getPlayer());
diff --git a/src/main/java/net/minecraft/world/item/BoatItem.java b/src/main/java/net/minecraft/world/item/BoatItem.java diff --git a/src/main/java/net/minecraft/world/item/BoatItem.java b/src/main/java/net/minecraft/world/item/BoatItem.java
index eb74d45ad458b80cf8455297c3bc550186adaea3..ef01856c487e4ab982996e01537618233592ac32 100644 index e51ffd6c5047ee907a58f3029f0ea7fc66aedfa7..78d41d57df9cb61b295f1f54db1e1d62c13db701 100644
--- a/src/main/java/net/minecraft/world/item/BoatItem.java --- a/src/main/java/net/minecraft/world/item/BoatItem.java
+++ b/src/main/java/net/minecraft/world/item/BoatItem.java +++ b/src/main/java/net/minecraft/world/item/BoatItem.java
@@ -72,6 +72,11 @@ public class BoatItem extends Item { @@ -71,6 +71,11 @@ public class BoatItem extends Item {
return InteractionResult.FAIL;
entityboat.setVariant(this.type);
entityboat.setYRot(user.getYRot());
+ // Purpur start
+ if (!world.purpurConfig.persistentDroppableEntityDisplayNames) {
+ entityboat.setCustomName(null);
+ }
+ // Purpur end
if (!world.noCollision(entityboat, entityboat.getBoundingBox())) {
return InteractionResultHolder.fail(itemstack);
} else { } else {
abstractboat.setYRot(user.getYRot());
+ // Purpur start
+ if (!world.purpurConfig.persistentDroppableEntityDisplayNames) {
+ abstractboat.setCustomName(null);
+ }
+ // Purpur end
if (!world.noCollision(abstractboat, abstractboat.getBoundingBox())) {
return InteractionResult.FAIL;
} else {
diff --git a/src/main/java/net/minecraft/world/item/HangingEntityItem.java b/src/main/java/net/minecraft/world/item/HangingEntityItem.java diff --git a/src/main/java/net/minecraft/world/item/HangingEntityItem.java b/src/main/java/net/minecraft/world/item/HangingEntityItem.java
index d8a63ac5444eff8e3decb2f4addc2decb8a5d648..41cc9229108aa8e4f5655dfe590ff414a16b1444 100644 index cdc17ad948d8ac5de62f14b1a561433d33211f32..44a7cee7df2927a923455e8cedaab59307b42506 100644
--- a/src/main/java/net/minecraft/world/item/HangingEntityItem.java --- a/src/main/java/net/minecraft/world/item/HangingEntityItem.java
+++ b/src/main/java/net/minecraft/world/item/HangingEntityItem.java +++ b/src/main/java/net/minecraft/world/item/HangingEntityItem.java
@@ -74,6 +74,11 @@ public class HangingEntityItem extends Item { @@ -75,6 +75,11 @@ public class HangingEntityItem extends Item {
if (!customdata.isEmpty()) { if (!customdata.isEmpty()) {
EntityType.updateCustomEntityTag(world, entityhuman, (Entity) object, customdata); EntityType.updateCustomEntityTag(world, entityhuman, (Entity) object, customdata);
@@ -126,7 +126,7 @@ index d8a63ac5444eff8e3decb2f4addc2decb8a5d648..41cc9229108aa8e4f5655dfe590ff414
if (((HangingEntity) object).survives()) { if (((HangingEntity) object).survives()) {
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index eefd829f617f2af60b9846f2fe8003676a997c88..cc95e8ba5d847348afdd4263c9e84554cb2ec713 100644 index c78b2c5098dc67a3aadf9f6d4ea5289b7d5124ea..a241c190532b0afd6d00deff3ec9c9100562524a 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -98,8 +98,10 @@ public class PurpurWorldConfig { @@ -98,8 +98,10 @@ public class PurpurWorldConfig {
@@ -140,19 +140,20 @@ index eefd829f617f2af60b9846f2fe8003676a997c88..cc95e8ba5d847348afdd4263c9e84554
} }
public boolean arrowMovementResetsDespawnCounter = true; public boolean arrowMovementResetsDespawnCounter = true;
@@ -112,6 +114,7 @@ public class PurpurWorldConfig { @@ -114,6 +116,7 @@ public class PurpurWorldConfig {
public boolean disableDropsOnCrammingDeath = false;
public boolean entitiesCanUsePortals = true; public boolean entitiesCanUsePortals = true;
public boolean milkCuresBadOmen = true;
+ public boolean persistentDroppableEntityDisplayNames = true;
public double tridentLoyaltyVoidReturnHeight = 0.0D;
public int raidCooldownSeconds = 0; public int raidCooldownSeconds = 0;
public int animalBreedingCooldownSeconds = 0; public int animalBreedingCooldownSeconds = 0;
@@ -121,6 +124,7 @@ public class PurpurWorldConfig { + public boolean persistentDroppableEntityDisplayNames = true;
disableDropsOnCrammingDeath = getBoolean("gameplay-mechanics.disable-drops-on-cramming-death", disableDropsOnCrammingDeath); private void miscGameplayMechanicsSettings() {
useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending);
boatEjectPlayersOnLand = getBoolean("gameplay-mechanics.boat.eject-players-on-land", boatEjectPlayersOnLand);
@@ -122,6 +125,8 @@ public class PurpurWorldConfig {
entitiesCanUsePortals = getBoolean("gameplay-mechanics.entities-can-use-portals", entitiesCanUsePortals); entitiesCanUsePortals = getBoolean("gameplay-mechanics.entities-can-use-portals", entitiesCanUsePortals);
milkCuresBadOmen = getBoolean("gameplay-mechanics.milk-cures-bad-omen", milkCuresBadOmen);
+ persistentDroppableEntityDisplayNames = getBoolean("gameplay-mechanics.persistent-droppable-entity-display-names", persistentDroppableEntityDisplayNames);
tridentLoyaltyVoidReturnHeight = getDouble("gameplay-mechanics.trident-loyalty-void-return-height", tridentLoyaltyVoidReturnHeight);
raidCooldownSeconds = getInt("gameplay-mechanics.raid-cooldown-seconds", raidCooldownSeconds); raidCooldownSeconds = getInt("gameplay-mechanics.raid-cooldown-seconds", raidCooldownSeconds);
animalBreedingCooldownSeconds = getInt("gameplay-mechanics.animal-breeding-cooldown-seconds", animalBreedingCooldownSeconds); animalBreedingCooldownSeconds = getInt("gameplay-mechanics.animal-breeding-cooldown-seconds", animalBreedingCooldownSeconds);
+ persistentDroppableEntityDisplayNames = getBoolean("gameplay-mechanics.persistent-droppable-entity-display-names", persistentDroppableEntityDisplayNames);
+
}
public int daytimeTicks = 12000;

View File

@@ -1,105 +0,0 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: William Blake Galbreath <blake.galbreath@gmail.com>
Date: Thu, 25 Jul 2019 18:07:37 -0500
Subject: [PATCH] Implement elytra settings
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
index f444b36b4fddce06aaafabe3cfef463f173969ce..d8db30c9051aebf2cb6567a273bcfdfbe06d4936 100644
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
@@ -3639,7 +3639,16 @@ public abstract class LivingEntity extends Entity implements Attackable {
int j = i / 10;
if (j % 2 == 0) {
- itemstack.hurtAndBreak(1, this, EquipmentSlot.CHEST);
+ // Purpur start
+ int damage = level().purpurConfig.elytraDamagePerSecond;
+ if (level().purpurConfig.elytraDamageMultiplyBySpeed > 0) {
+ double speed = getDeltaMovement().lengthSqr();
+ if (speed > level().purpurConfig.elytraDamageMultiplyBySpeed) {
+ damage *= (int) speed;
+ }
+ }
+ itemstack.hurtAndBreak(damage, this, EquipmentSlot.CHEST);
+ // Purpur end
}
this.gameEvent(GameEvent.ELYTRA_GLIDE);
diff --git a/src/main/java/net/minecraft/world/item/FireworkRocketItem.java b/src/main/java/net/minecraft/world/item/FireworkRocketItem.java
index 218f2f085309f04438f8b07bc41cf242583db2dc..ea8e49b42b9dde74784189430be66ed6978015dd 100644
--- a/src/main/java/net/minecraft/world/item/FireworkRocketItem.java
+++ b/src/main/java/net/minecraft/world/item/FireworkRocketItem.java
@@ -65,6 +65,14 @@ public class FireworkRocketItem extends Item implements ProjectileItem {
com.destroystokyo.paper.event.player.PlayerElytraBoostEvent event = new com.destroystokyo.paper.event.player.PlayerElytraBoostEvent((org.bukkit.entity.Player) user.getBukkitEntity(), org.bukkit.craftbukkit.inventory.CraftItemStack.asCraftMirror(itemStack), (org.bukkit.entity.Firework) fireworkRocketEntity.getBukkitEntity(), org.bukkit.craftbukkit.CraftEquipmentSlot.getHand(hand));
if (event.callEvent() && world.addFreshEntity(fireworkRocketEntity)) {
user.awardStat(Stats.ITEM_USED.get(this));
+ // Purpur start
+ if (world.purpurConfig.elytraDamagePerFireworkBoost > 0) {
+ ItemStack chestItem = user.getItemBySlot(net.minecraft.world.entity.EquipmentSlot.CHEST);
+ if (chestItem.getItem() == Items.ELYTRA) {
+ chestItem.hurtAndBreak(world.purpurConfig.elytraDamagePerFireworkBoost, user, net.minecraft.world.entity.EquipmentSlot.CHEST);
+ }
+ }
+ // Purpur end
if (event.shouldConsume() && !user.hasInfiniteMaterials()) {
itemStack.shrink(1);
} else ((net.minecraft.server.level.ServerPlayer) user).getBukkitEntity().updateInventory();
diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java
index c89663b093120d9c43a7f4d24ec8d798b3fa6d5f..5f57f3494705ca1664dbca395c1af3280a50cad8 100644
--- a/src/main/java/net/minecraft/world/item/ItemStack.java
+++ b/src/main/java/net/minecraft/world/item/ItemStack.java
@@ -728,6 +728,12 @@ public final class ItemStack implements DataComponentHolder {
org.bukkit.craftbukkit.event.CraftEventFactory.callPlayerItemBreakEvent(serverPlayer, this); // Paper - Add EntityDamageItemEvent
}
// CraftBukkit end
+ // Purpur start
+ if (item == Items.ELYTRA) {
+ setDamageValue(this.getMaxDamage() - 1);
+ return;
+ }
+ // Purpur end
this.shrink(1);
breakCallback.accept(item);
diff --git a/src/main/java/net/minecraft/world/item/TridentItem.java b/src/main/java/net/minecraft/world/item/TridentItem.java
index f1b2d388a1a40a1d909a2e726f32d6c15e1eb0eb..4934bae61114b49a9f8d0ed044fbb881210df32a 100644
--- a/src/main/java/net/minecraft/world/item/TridentItem.java
+++ b/src/main/java/net/minecraft/world/item/TridentItem.java
@@ -127,6 +127,14 @@ public class TridentItem extends Item implements ProjectileItem {
f4 *= f / f6;
f5 *= f / f6;
org.bukkit.craftbukkit.event.CraftEventFactory.callPlayerRiptideEvent(entityhuman, stack, f3, f4, f5); // CraftBukkit
+
+ // Purpur start
+ ItemStack chestItem = entityhuman.getItemBySlot(EquipmentSlot.CHEST);
+ if (chestItem.getItem() == Items.ELYTRA && world.purpurConfig.elytraDamagePerTridentBoost > 0) {
+ chestItem.hurtAndBreak(world.purpurConfig.elytraDamagePerTridentBoost, entityhuman, EquipmentSlot.CHEST);
+ }
+ // Purpur end
+
entityhuman.push((double) f3, (double) f4, (double) f5);
entityhuman.startAutoSpinAttack(20, 8.0F, stack);
if (entityhuman.onGround()) {
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 4f1a650b7829464d873dfb782fe7eb94703ac040..ee159581718533688cdd271b8f205b61a5912019 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -109,6 +109,17 @@ public class PurpurWorldConfig {
tridentLoyaltyVoidReturnHeight = getDouble("gameplay-mechanics.trident-loyalty-void-return-height", tridentLoyaltyVoidReturnHeight);
}
+ public int elytraDamagePerSecond = 1;
+ public double elytraDamageMultiplyBySpeed = 0;
+ public int elytraDamagePerFireworkBoost = 0;
+ public int elytraDamagePerTridentBoost = 0;
+ private void elytraSettings() {
+ elytraDamagePerSecond = getInt("gameplay-mechanics.elytra.damage-per-second", elytraDamagePerSecond);
+ elytraDamageMultiplyBySpeed = getDouble("gameplay-mechanics.elytra.damage-multiplied-by-speed", elytraDamageMultiplyBySpeed);
+ elytraDamagePerFireworkBoost = getInt("gameplay-mechanics.elytra.damage-per-boost.firework", elytraDamagePerFireworkBoost);
+ elytraDamagePerTridentBoost = getInt("gameplay-mechanics.elytra.damage-per-boost.trident", elytraDamagePerTridentBoost);
+ }
+
public double minecartMaxSpeed = 0.4D;
public boolean minecartPlaceAnywhere = false;
public boolean minecartControllable = false;