mirror of
https://github.com/PurpurMC/Purpur.git
synced 2026-02-20 01:47:42 +01:00
100 patches...
This commit is contained in:
@@ -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
|
||||
index 6785baf574f233ed1c3bea8d406be8a524d9ff82..d2f9ffa09d46287707324fd67e60736991b632ac 100644
|
||||
index f4fbcbb8ff6d2677af1a02a0801a323c06dce9b1..6f024a29e8824a604ff0c74f88522d23423beb5c 100644
|
||||
--- a/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 (this.canConvertToSource(world) && j >= getRequiredSources(world)) {
|
||||
BlockState iblockdata2 = world.getBlockState(pos.below());
|
||||
- if (j >= 2 && this.canConvertToSource(world)) {
|
||||
+ if (j >= getRequiredSources(world) && this.canConvertToSource(world)) { // Purpur
|
||||
BlockState iblockdata2 = world.getBlockState(blockposition_mutableblockposition.setWithOffset(pos, Direction.DOWN));
|
||||
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
|
||||
+ protected int getRequiredSources(Level level) {
|
||||
@@ -28,13 +28,13 @@ index 6785baf574f233ed1c3bea8d406be8a524d9ff82..d2f9ffa09d46287707324fd67e607369
|
||||
+ // Purpur end
|
||||
+
|
||||
protected void spreadTo(LevelAccessor world, BlockPos pos, BlockState state, Direction direction, FluidState fluidState) {
|
||||
if (state.getBlock() instanceof LiquidBlockContainer) {
|
||||
((LiquidBlockContainer) state.getBlock()).placeLiquid(world, pos, state, fluidState);
|
||||
Block block = state.getBlock();
|
||||
|
||||
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
|
||||
+++ 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);
|
||||
}
|
||||
|
||||
@@ -46,13 +46,13 @@ index 3bb4a9a1a6249e8ba2de237f801210e7f4fd5825..4c230136d832d50ae16ffa037b0b30ff
|
||||
+ // Purpur end
|
||||
+
|
||||
@Override
|
||||
protected boolean canConvertToSource(Level world) {
|
||||
protected boolean canConvertToSource(ServerLevel world) {
|
||||
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
|
||||
index 109f71401c65f476ccf6813137386fc9fef10254..9dcdb2f4001115db0c26fdbf86531dbe6098485d 100644
|
||||
index 552925ba47c7475e2e1ec2ded0966f28ed3e50a5..1e741f36b79585f33abe413beafe00cf5205d54f 100644
|
||||
--- a/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);
|
||||
}
|
||||
|
||||
@@ -67,10 +67,10 @@ index 109f71401c65f476ccf6813137386fc9fef10254..9dcdb2f4001115db0c26fdbf86531dbe
|
||||
@Override
|
||||
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
|
||||
index 4bce5d936876bf17d81d008e73877c6d5637fb87..d02eca903ad0e24ab4a8839d958738af865b8bc8 100644
|
||||
index d39d2ee00b3a2f487d0c341d4103f04ffe516022..dcc6cd317d6b1da58a3deb9fb022a2ba36cdd509 100644
|
||||
--- a/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);
|
||||
}
|
||||
|
||||
@@ -82,7 +82,7 @@ index 4bce5d936876bf17d81d008e73877c6d5637fb87..d02eca903ad0e24ab4a8839d958738af
|
||||
public boolean turtleEggsBreakFromExpOrbs = false;
|
||||
public boolean turtleEggsBreakFromItems = 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);
|
||||
}
|
||||
|
||||
@@ -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
|
||||
index 4c230136d832d50ae16ffa037b0b30ff1101b50a..2d492d849ff73a738dfbcb16507feb89bf19a962 100644
|
||||
index e9687c3580e5fff33ce902eb7b86eb815ca1072d..6e643c1a7f7e71cfd20603facaf224985ee81716 100644
|
||||
--- a/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
|
||||
public int getTickDelay(LevelReader world) {
|
||||
@@ -18,10 +18,10 @@ index 4c230136d832d50ae16ffa037b0b30ff1101b50a..2d492d849ff73a738dfbcb16507feb89
|
||||
|
||||
@Override
|
||||
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
|
||||
+++ 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;
|
||||
@@ -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
|
||||
index 5e404e470a28f04f5659503bcc6b66caf1880f3f..9dd8dc8f0dc218c5a021d84649f364cd2f1b3a45 100644
|
||||
index d1b6e7cf8d110d9106ea99431cf9719ea3b102d5..f4823112f2daf2aa75e1f4520fb91077c9c94e09 100644
|
||||
--- a/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
|
||||
protected int getBaseExperienceReward() {
|
||||
if (!this.level().getGameRules().getBoolean(GameRules.RULE_KEEPINVENTORY) && !this.isSpectator()) {
|
||||
- int i = this.experienceLevel * 7;
|
||||
-
|
||||
- return i > 100 ? 100 : i;
|
||||
+ // Purpur start
|
||||
protected int getBaseExperienceReward(ServerLevel world) {
|
||||
- return !world.getGameRules().getBoolean(GameRules.RULE_KEEPINVENTORY) && !this.isSpectator() ? Math.min(this.experienceLevel * 7, 100) : 0;
|
||||
+ // Purpur start
|
||||
+ if (!world.getGameRules().getBoolean(GameRules.RULE_KEEPINVENTORY) && !this.isSpectator()) {
|
||||
+ int toDrop;
|
||||
+ try {
|
||||
+ toDrop = Math.round(((Number) scriptEngine.eval("let expLevel = " + experienceLevel + "; " +
|
||||
+ "let expTotal = " + totalExperience + "; " +
|
||||
+ "let exp = " + experienceProgress + "; " +
|
||||
+ level().purpurConfig.playerDeathExpDropEquation)).floatValue());
|
||||
+ "let expTotal = " + totalExperience + "; " +
|
||||
+ "let exp = " + experienceProgress + "; " +
|
||||
+ level().purpurConfig.playerDeathExpDropEquation)).floatValue());
|
||||
+ } catch (javax.script.ScriptException e) {
|
||||
+ e.printStackTrace();
|
||||
+ toDrop = experienceLevel * 7;
|
||||
+ }
|
||||
+ return Math.min(toDrop, level().purpurConfig.playerDeathExpDropMax);
|
||||
+ // Purpur end
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
+ } else {
|
||||
+ 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
|
||||
index cde1b1277d83ac2478f872dccdc2f7f87196cc94..ed8f3c606984f83b77ca96cbfc8bcd454ad63ff8 100644
|
||||
index e41649d2abd8e8ea4ddeb0af1f94d90a60174198..364321ea60e256edb10fea8efe4bfb3cdf33f3fb 100644
|
||||
--- a/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 idleTimeoutUpdateTabList = false;
|
||||
public boolean idleTimeoutTargetPlayer = true;
|
||||
@@ -44,7 +46,7 @@ index cde1b1277d83ac2478f872dccdc2f7f87196cc94..ed8f3c606984f83b77ca96cbfc8bcd45
|
||||
private void playerSettings() {
|
||||
if (PurpurConfig.version < 19) {
|
||||
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);
|
||||
idleTimeoutUpdateTabList = getBoolean("gameplay-mechanics.player.idle-timeout.update-tab-list", idleTimeoutUpdateTabList);
|
||||
idleTimeoutTargetPlayer = getBoolean("gameplay-mechanics.player.idle-timeout.mobs-target", idleTimeoutTargetPlayer);
|
||||
@@ -19,10 +19,10 @@ index 1029b6de6f36b08bf634b4056ef5701383f6f258..ee0d1df78838e05450ad1a06ce70eab2
|
||||
|
||||
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
|
||||
index fd3b1c10695634f65c7291016bf671c084bc4d57..c867796f625813797f167610ad443c4be5a7561e 100644
|
||||
index a81a332ffb80e67d7f886295099b5cd2ae8994c5..1d18cad6c32815854ff8dace256b59022200c842 100644
|
||||
--- a/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;
|
||||
}
|
||||
|
||||
@@ -30,7 +30,7 @@ index fd3b1c10695634f65c7291016bf671c084bc4d57..c867796f625813797f167610ad443c4b
|
||||
public Environment environment;
|
||||
|
||||
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 generateFlatBedrock = false;
|
||||
public FrostedIce frostedIce;
|
||||
@@ -41,10 +41,10 @@ index fd3b1c10695634f65c7291016bf671c084bc4d57..c867796f625813797f167610ad443c4b
|
||||
|
||||
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
|
||||
index f200a105bd3f5013d0590f1a10d4edc08ad745d1..debc521eaa05c6befc6fe67f44780372b078039d 100644
|
||||
index 8719173e50ec2313cb44905b52e5dbe7fb264374..0fd97d9607b83fa2c2c36602c3b92ab0a6f58e27 100644
|
||||
--- a/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("*************************************************************************************");
|
||||
}
|
||||
// Paper end - Add onboarding message for initial server start
|
||||
@@ -62,10 +62,10 @@ index f200a105bd3f5013d0590f1a10d4edc08ad745d1..debc521eaa05c6befc6fe67f44780372
|
||||
long i;
|
||||
|
||||
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
|
||||
+++ 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();
|
||||
// Spigot end
|
||||
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
|
||||
this.paperConfigurations.initializeGlobalConfiguration(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
|
||||
this.server.spark.registerCommandBeforePlugins(this.server); // Paper - spark
|
||||
com.destroystokyo.paper.Metrics.PaperMetrics.startMetrics(); // Paper - start metrics
|
||||
- // Purpur start
|
||||
- try {
|
||||
@@ -95,8 +95,8 @@ index ca9afa93a9c43208ef64f86d534e5540d34a6b09..ea89f36bb1ecb8a7a8b88d6f46bc2455
|
||||
- org.purpurmc.purpur.PurpurConfig.registerCommands();
|
||||
- // Purpur end
|
||||
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
|
||||
new file mode 100644
|
||||
index 0000000000000000000000000000000000000000..a04d23bd98075cd65a24d4de8d18281d1668480f
|
||||
@@ -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
|
||||
index 4ba8de9d87fc1b94019e8529a279cbc8a91a2b7f..c847c522def00e20435d7afc52f33cadf8183289 100644
|
||||
index f573cbaa5bf7bc12d6e9405010bf50c13727b350..c2cc934f2599c6620b60b1b1485c743390157377 100644
|
||||
--- a/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
|
||||
@@ -21,7 +21,7 @@ index 4ba8de9d87fc1b94019e8529a279cbc8a91a2b7f..c847c522def00e20435d7afc52f33cad
|
||||
public Entity(EntityType<?> type, Level world) {
|
||||
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
|
||||
index 63f48841c849ff49d9d43efc5de8952c5a9bba3a..e472df057d087fe46bd40b798c050ed6e38a283c 100644
|
||||
index a1f25efb38eff32aaabe892ddbc9a60426923686..e0f25b057b7b908a10038d9e9695a500aa883c75 100644
|
||||
--- a/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 {
|
||||
@@ -37,12 +37,12 @@ index 63f48841c849ff49d9d43efc5de8952c5a9bba3a..e472df057d087fe46bd40b798c050ed6
|
||||
|
||||
@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
|
||||
index d4a505ef4af9ded02aeb1a817bcbe5b1a912a5b3..97a310f042db1a838a744d2909d261aaf253ea17 100644
|
||||
index 16ca1c8672e5f0a27f8a30498c754a81cdec5191..e37dff5dcabeca698838e1a8c9633807213443cc 100644
|
||||
--- a/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> {
|
||||
}
|
||||
// Paper end - Entity load/save limit per chunk
|
||||
@@ -95,6 +95,7 @@ public class EntityStorage implements EntityPersistentStorage<Entity> {
|
||||
ListTag listTag = new ListTag();
|
||||
dataList.getEntities().forEach(entity -> {
|
||||
CompoundTag compoundTagx = new CompoundTag();
|
||||
+ if (!entity.canSaveToDisk()) return; // Purpur
|
||||
if (entity.save(compoundTagx)) {
|
||||
@@ -4,12 +4,34 @@ Date: Sun, 25 Aug 2019 00:09:52 -0500
|
||||
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
|
||||
index cc6148404f139464cc2f4f4fc7d5a0b45cb4929e..f444b36b4fddce06aaafabe3cfef463f173969ce 100644
|
||||
index 8ebd43c8088523396a4f46b8b0083f91e2b55e27..2e955dc3299062c2564eac0de43d5f1b78f5897c 100644
|
||||
--- a/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 {
|
||||
return EquipmentSlot.MAINHAND;
|
||||
@@ -4653,7 +4653,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
|
||||
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
|
||||
@@ -21,24 +43,11 @@ index cc6148404f139464cc2f4f4fc7d5a0b45cb4929e..f444b36b4fddce06aaafabe3cfef463f
|
||||
private static SlotAccess createEquipmentSlotAccess(LivingEntity entity, EquipmentSlot slot) {
|
||||
return slot != EquipmentSlot.HEAD && slot != EquipmentSlot.MAINHAND && slot != EquipmentSlot.OFFHAND ? SlotAccess.forEquipmentSlot(entity, slot, (itemstack) -> {
|
||||
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
|
||||
index ed8f3c606984f83b77ca96cbfc8bcd454ad63ff8..2a301dc07863320ed3e57c9bd0d4ee5a16c9cbaf 100644
|
||||
index 364321ea60e256edb10fea8efe4bfb3cdf33f3fb..4b3727f9c4e4f1de2745e4984ad660b6a0ac7797 100644
|
||||
--- a/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 {
|
||||
});
|
||||
}
|
||||
|
||||
@@ -4,32 +4,31 @@ Date: Sat, 7 Sep 2019 22:47:59 -0500
|
||||
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
|
||||
index f1955afc8e367f80ead85bd5ad3b8d66c255565a..7f7abef3c5b7ad124c5c1dda02173bc5f70c9506 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/vehicle/Boat.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/vehicle/Boat.java
|
||||
@@ -543,6 +543,7 @@ public class Boat extends VehicleEntity implements Leashable, VariantHolder<Boat
|
||||
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 1fdbef16cd29c8fc74578ac3328f985eca61088d..e523f651e8776a89ffba015921d708f569fad8f3 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/vehicle/AbstractBoat.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/vehicle/AbstractBoat.java
|
||||
@@ -499,6 +499,7 @@ public abstract class AbstractBoat extends VehicleEntity implements Leashable {
|
||||
|
||||
if (f > 0.0F) {
|
||||
this.landFriction = f;
|
||||
+ if (level().purpurConfig.boatEjectPlayersOnLand) ejectPassengers(); // Purpur
|
||||
return Boat.Status.ON_LAND;
|
||||
return AbstractBoat.Status.ON_LAND;
|
||||
} 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
|
||||
index 2a301dc07863320ed3e57c9bd0d4ee5a16c9cbaf..3d5f86aebb047a3f6d3c94c28415889e65a3c027 100644
|
||||
index 4b3727f9c4e4f1de2745e4984ad660b6a0ac7797..b87d96e31d5b0f931a420ae302ce944c94ffa97b 100644
|
||||
--- a/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);
|
||||
}
|
||||
|
||||
+ public boolean boatEjectPlayersOnLand = false;
|
||||
public boolean disableDropsOnCrammingDeath = false;
|
||||
public boolean milkCuresBadOmen = true;
|
||||
public double tridentLoyaltyVoidReturnHeight = 0.0D;
|
||||
private void miscGameplayMechanicsSettings() {
|
||||
+ boatEjectPlayersOnLand = getBoolean("gameplay-mechanics.boat.eject-players-on-land", boatEjectPlayersOnLand);
|
||||
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);
|
||||
}
|
||||
@@ -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
|
||||
index a58ff67052fb5f33782f8b5c83465ec03ef1d073..caaeeb63b8bf0d3709fc38266a7e8c48211f5c0b 100644
|
||||
index bf0838f574fa3fb9654e087d602b8d380bd7fb28..6db9a3ea4c0dc1f0629bc8bf6466aeab00c498f6 100644
|
||||
--- a/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) {
|
||||
@@ -18,10 +18,10 @@ index a58ff67052fb5f33782f8b5c83465ec03ef1d073..caaeeb63b8bf0d3709fc38266a7e8c48
|
||||
if (optional.isPresent()) {
|
||||
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
|
||||
index eec0ec43590be7e8ae5b530a7404c98b5e23cb53..c89663b093120d9c43a7f4d24ec8d798b3fa6d5f 100644
|
||||
index 33e7d2884195677c4d6340d8b84c1dd85c636ec1..239bd6e3d756dc4ecab6ca639fa84ccbf89418a7 100644
|
||||
--- a/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;
|
||||
}
|
||||
|
||||
@@ -49,7 +49,7 @@ index eec0ec43590be7e8ae5b530a7404c98b5e23cb53..c89663b093120d9c43a7f4d24ec8d798
|
||||
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
|
||||
index 9635c076703beee96af9f5d0bdee4cf97ccd98ad..1abf54eeaad1b062f1465ee1a847bbfcba295665 100644
|
||||
index d8fc10f9cd0ab2c26e64613006569a86ce201550..73241113e50dc8be89ef8850d49d95ec31fb194f 100644
|
||||
--- a/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;
|
||||
@@ -60,7 +60,7 @@ index 9635c076703beee96af9f5d0bdee4cf97ccd98ad..1abf54eeaad1b062f1465ee1a847bbfc
|
||||
import java.util.Optional;
|
||||
import java.util.function.BiConsumer;
|
||||
import java.util.function.Consumer;
|
||||
@@ -569,4 +570,48 @@ public class EnchantmentHelper {
|
||||
@@ -588,4 +589,48 @@ public class EnchantmentHelper {
|
||||
return getItemEnchantmentLevel(getEnchantmentHolder(enchantment), stack);
|
||||
}
|
||||
// Purpur end - Enchantment convenience methods
|
||||
@@ -110,20 +110,19 @@ index 9635c076703beee96af9f5d0bdee4cf97ccd98ad..1abf54eeaad1b062f1465ee1a847bbfc
|
||||
+ // 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
|
||||
index 3d5f86aebb047a3f6d3c94c28415889e65a3c027..4f1a650b7829464d873dfb782fe7eb94703ac040 100644
|
||||
index b87d96e31d5b0f931a420ae302ce944c94ffa97b..49efe798ae09c000c708001ca896620c468933d5 100644
|
||||
--- a/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);
|
||||
}
|
||||
|
||||
+ public boolean useBetterMending = false;
|
||||
public boolean boatEjectPlayersOnLand = false;
|
||||
public boolean disableDropsOnCrammingDeath = false;
|
||||
public boolean milkCuresBadOmen = true;
|
||||
public double tridentLoyaltyVoidReturnHeight = 0.0D;
|
||||
private void miscGameplayMechanicsSettings() {
|
||||
+ useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending);
|
||||
boatEjectPlayersOnLand = getBoolean("gameplay-mechanics.boat.eject-players-on-land", boatEjectPlayersOnLand);
|
||||
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);
|
||||
@@ -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
|
||||
index debc521eaa05c6befc6fe67f44780372b078039d..b2ce50799ff158ff2160b0d75404e52e34d54805 100644
|
||||
index 0fd97d9607b83fa2c2c36602c3b92ab0a6f58e27..e96f55191f97490bbaf5fb990c33237469fa07e0 100644
|
||||
--- a/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;
|
||||
private static final int SAMPLE_INTERVAL = 20; // Paper - improve server tick loop
|
||||
@Deprecated(forRemoval = true) // Paper
|
||||
@@ -38,7 +38,7 @@ index debc521eaa05c6befc6fe67f44780372b078039d..b2ce50799ff158ff2160b0d75404e52e
|
||||
// Spigot end
|
||||
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
|
||||
@@ -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 long lastTick = 0;
|
||||
private long catchupTime = 0;
|
||||
@@ -46,7 +46,7 @@ index debc521eaa05c6befc6fe67f44780372b078039d..b2ce50799ff158ff2160b0d75404e52e
|
||||
public final RollingAverage tps1 = new RollingAverage(60);
|
||||
public final RollingAverage tps5 = new RollingAverage(60 * 5);
|
||||
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) {
|
||||
final long diff = currentTime - tickSection;
|
||||
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.repaint();
|
||||
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
|
||||
+++ 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
|
||||
public double[] getTPS() {
|
||||
return new double[] {
|
||||
134
patches/server/0057-Implement-elytra-settings.patch
Normal file
134
patches/server/0057-Implement-elytra-settings.patch
Normal 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;
|
||||
@@ -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
|
||||
index 5a2f7f7cf79dcbb996574e18cad86ebb54bd718e..dfd09004063a8d8d93357633c8d23b6acff67b73 100644
|
||||
index 5bbc7ceaafc163f12344e5d5d355ad2ff30ddca2..af54b621f04de40b1539494f30bb95f03656b590 100644
|
||||
--- a/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
|
||||
private List<SynchedEntityData.DataValue<?>> trackedDataValues;
|
||||
// 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) {
|
||||
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
|
||||
index 4423973d4d9a2c3879d98d1d4c8b8c117c677ac5..ffc754aa6ed61f62a0c94e9117f3008d24c0c163 100644
|
||||
index 5d8885bca55503bf7e1a2a4e1bb9b3bd86d55391..9e69c225a331bfce3455fc0c013a19e3c607e0c4 100644
|
||||
--- a/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 {
|
||||
@@ -34,11 +34,11 @@ index 4423973d4d9a2c3879d98d1d4c8b8c117c677ac5..ffc754aa6ed61f62a0c94e9117f3008d
|
||||
|
||||
public ItemEntity(EntityType<? extends ItemEntity> type, Level 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
|
||||
public boolean hurt(DamageSource source, float amount) {
|
||||
- if (this.isInvulnerableTo(source)) {
|
||||
public final boolean hurtServer(ServerLevel world, DamageSource source, float amount) {
|
||||
- if (this.isInvulnerableToBase(source)) {
|
||||
+ // Purpur start
|
||||
+ if (
|
||||
+ (immuneToCactus && source.is(net.minecraft.world.damagesource.DamageTypes.CACTUS)) ||
|
||||
@@ -47,12 +47,12 @@ index 4423973d4d9a2c3879d98d1d4c8b8c117c677ac5..ffc754aa6ed61f62a0c94e9117f3008d
|
||||
+ (immuneToExplosion && source.is(DamageTypeTags.IS_EXPLOSION))
|
||||
+ ) {
|
||||
+ return false;
|
||||
+ } else if (this.isInvulnerableTo(source)) {
|
||||
+ } else if (this.isInvulnerableToBase(source)) {
|
||||
+ // Purpur end
|
||||
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;
|
||||
@@ -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) {
|
||||
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
|
||||
@@ -117,10 +117,10 @@ index 30d62ee4d5cd2ddacb8783b5bbbf475d592b3e02..01e4395f1669d21c30465aa1366bd2f1
|
||||
+ // Purpur end
|
||||
}
|
||||
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
|
||||
+++ 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);
|
||||
}
|
||||
|
||||
@@ -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
|
||||
index 7e291ffff86bdcdb8a0a15c211c3f84d6ae18e38..12effcb8e1b89595884798efba71849e4530b6b3 100644
|
||||
index b7783480cc6a51a1f18789b7f3fc35faf5573f8d..abf33de1c20b031a684daedbc880a6f4eff869f4 100644
|
||||
--- a/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);
|
||||
TransferCommand.register(this.dispatcher);
|
||||
WhitelistCommand.register(this.dispatcher);
|
||||
@@ -17,7 +17,7 @@ index 7e291ffff86bdcdb8a0a15c211c3f84d6ae18e38..12effcb8e1b89595884798efba71849e
|
||||
|
||||
if (environment.includeIntegrated) {
|
||||
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
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
||||
@@ -181,6 +181,7 @@ public class PurpurConfig {
|
||||
@@ -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
|
||||
index 12effcb8e1b89595884798efba71849e4530b6b3..200661f1295ac7ce2104b10bfea367a769e82f96 100644
|
||||
index abf33de1c20b031a684daedbc880a6f4eff869f4..a52d20dcc9b3dfaecc3325bce3140dbd7bee8c4c 100644
|
||||
--- a/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);
|
||||
TransferCommand.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
|
||||
index 34e71243b66977b631e45df7b7f11f9b91474fe8..8c4b83835f7e93225592de2328a01152bb400781 100644
|
||||
index d0873724bf081e577fd42455f427a765e1db0f59..e65552be2b8348e2751ea088809c090f6b029e43 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
||||
@@ -181,6 +181,7 @@ public class PurpurConfig {
|
||||
@@ -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
|
||||
index 200661f1295ac7ce2104b10bfea367a769e82f96..38a345901a743f5ddac18ba876d5245c5c11f111 100644
|
||||
index a52d20dcc9b3dfaecc3325bce3140dbd7bee8c4c..24c2568db30f970aed1a4897cfbc7d07297047d3 100644
|
||||
--- a/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);
|
||||
TransferCommand.register(this.dispatcher);
|
||||
WhitelistCommand.register(this.dispatcher);
|
||||
@@ -17,7 +17,7 @@ index 200661f1295ac7ce2104b10bfea367a769e82f96..38a345901a743f5ddac18ba876d5245c
|
||||
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
|
||||
index 8c4b83835f7e93225592de2328a01152bb400781..58812f062486ae34ad448bb1fe404c4fb05ad4ff 100644
|
||||
index e65552be2b8348e2751ea088809c090f6b029e43..a3a699881e6b96d0fb507ef69e4dbc181fe5fbbc 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
||||
@@ -181,6 +181,7 @@ public class PurpurConfig {
|
||||
@@ -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
|
||||
index c3e0e95da8a57fc7bfba44a6748c5d96a9640374..b5a46c844e0f366828f8c287a598abb9aaeacf21 100644
|
||||
index 0b572267d929ef362b6e65c55846ef12412951ba..7dc7f8734ffb3c5e50c763cb4e750d20c6e22281 100644
|
||||
--- a/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);
|
||||
}
|
||||
|
||||
@@ -29,12 +29,12 @@ index c3e0e95da8a57fc7bfba44a6748c5d96a9640374..b5a46c844e0f366828f8c287a598abb9
|
||||
+
|
||||
@Override
|
||||
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
|
||||
index 805bfee8b061445de5b5d8aeb13c792178e25f7b..6673c0bff3a4e3d11a09e9dc8aeb0c2418dc7f59 100644
|
||||
index d9dbcd15522301344770963a6e3592afe393861a..ed4b1e2df6d7c7dfa45d96b9c08f2aa429ad32c5 100644
|
||||
--- a/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);
|
||||
}
|
||||
|
||||
@@ -53,14 +53,14 @@ index 805bfee8b061445de5b5d8aeb13c792178e25f7b..6673c0bff3a4e3d11a09e9dc8aeb0c24
|
||||
+ return level().purpurConfig.huskJockeyTryExistingChickens;
|
||||
+ }
|
||||
+
|
||||
public static boolean checkHuskSpawnRules(EntityType<Husk> type, ServerLevelAccessor world, MobSpawnType spawnReason, BlockPos pos, RandomSource random) {
|
||||
return checkMonsterSpawnRules(type, world, spawnReason, pos, random) && (MobSpawnType.isSpawner(spawnReason) || world.canSeeSky(pos));
|
||||
public static boolean checkHuskSpawnRules(EntityType<Husk> type, ServerLevelAccessor world, EntitySpawnReason spawnReason, BlockPos pos, RandomSource random) {
|
||||
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
|
||||
index 6eda16520bc7fdd577ac7b223e3701858eaa48c5..bd24217d0c696a506c916e062b3cb5bc751981f8 100644
|
||||
index 978f610d31312f36093c0111ce623d1157fa943d..cb5cf34781de4e87074a70a447fd463280147bdc 100644
|
||||
--- a/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);
|
||||
}
|
||||
|
||||
@@ -79,7 +79,7 @@ index 6eda16520bc7fdd577ac7b223e3701858eaa48c5..bd24217d0c696a506c916e062b3cb5bc
|
||||
@Override
|
||||
protected void registerGoals() {
|
||||
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) {
|
||||
@@ -103,10 +103,10 @@ index 6eda16520bc7fdd577ac7b223e3701858eaa48c5..bd24217d0c696a506c916e062b3cb5bc
|
||||
- }
|
||||
- } else if ((double) randomsource.nextFloat() < 0.05D) {
|
||||
+ } else { // Purpur
|
||||
Chicken entitychicken1 = (Chicken) EntityType.CHICKEN.create(this.level());
|
||||
Chicken entitychicken1 = (Chicken) EntityType.CHICKEN.create(this.level(), EntitySpawnReason.JOCKEY);
|
||||
|
||||
if (entitychicken1 != null) {
|
||||
@@ -564,6 +577,7 @@ public class Zombie extends Monster {
|
||||
@@ -575,6 +588,7 @@ public class Zombie extends Monster {
|
||||
this.startRiding(entitychicken1);
|
||||
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
|
||||
index 199770256cf7f838228b5263ec9af8c6b18f30fb..cdf6753b6bb2bbb4f3ab21792bd3153988b26b75 100644
|
||||
index a2447844a6a6e08d41bb5152d01da91c852665cf..eb6daba7d44542739f1c537cbeef8f87c6db61bf 100644
|
||||
--- a/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);
|
||||
}
|
||||
|
||||
@@ -141,7 +141,7 @@ index 199770256cf7f838228b5263ec9af8c6b18f30fb..cdf6753b6bb2bbb4f3ab21792bd31539
|
||||
protected void defineSynchedData(SynchedEntityData.Builder 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
|
||||
index 42e3e992cc725627e8b03fa2c057c59bd52556b4..53b8f46bda60289ec310cb45513a2b729fcbea76 100644
|
||||
index ba1ce7e0ed888bd47312e9d7da5426f5c1015d07..650f9e1ca3a5ddec5123133c9604f33140e948a8 100644
|
||||
--- a/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 {
|
||||
@@ -167,10 +167,10 @@ index 42e3e992cc725627e8b03fa2c057c59bd52556b4..53b8f46bda60289ec310cb45513a2b72
|
||||
public void setPersistentAngerTarget(@Nullable UUID angryAt) {
|
||||
this.persistentAngerTarget = angryAt;
|
||||
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
|
||||
+++ 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 drownedScale = 1.0D;
|
||||
public double drownedSpawnReinforcements = 0.1D;
|
||||
@@ -180,7 +180,7 @@ index 652143c7f3af6bf429b2645c2112ecb61346a522..0e8ee1511b6b16320e44311114ef7a7a
|
||||
private void drownedSettings() {
|
||||
drownedRidable = getBoolean("mobs.drowned.ridable", drownedRidable);
|
||||
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);
|
||||
drownedScale = Mth.clamp(getDouble("mobs.drowned.attributes.scale", drownedScale), 0.0625D, 16.0D);
|
||||
drownedSpawnReinforcements = getDouble("mobs.drowned.attributes.spawn_reinforcements", drownedSpawnReinforcements);
|
||||
@@ -190,7 +190,7 @@ index 652143c7f3af6bf429b2645c2112ecb61346a522..0e8ee1511b6b16320e44311114ef7a7a
|
||||
}
|
||||
|
||||
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 huskScale = 1.0D;
|
||||
public double huskSpawnReinforcements = 0.1D;
|
||||
@@ -200,7 +200,7 @@ index 652143c7f3af6bf429b2645c2112ecb61346a522..0e8ee1511b6b16320e44311114ef7a7a
|
||||
private void huskSettings() {
|
||||
huskRidable = getBoolean("mobs.husk.ridable", huskRidable);
|
||||
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);
|
||||
huskScale = Mth.clamp(getDouble("mobs.husk.attributes.scale", huskScale), 0.0625D, 16.0D);
|
||||
huskSpawnReinforcements = getDouble("mobs.husk.attributes.spawn_reinforcements", huskSpawnReinforcements);
|
||||
@@ -210,7 +210,7 @@ index 652143c7f3af6bf429b2645c2112ecb61346a522..0e8ee1511b6b16320e44311114ef7a7a
|
||||
}
|
||||
|
||||
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 zombieScale = 1.0D;
|
||||
public double zombieSpawnReinforcements = 0.1D;
|
||||
@@ -220,7 +220,7 @@ index 652143c7f3af6bf429b2645c2112ecb61346a522..0e8ee1511b6b16320e44311114ef7a7a
|
||||
private void zombieSettings() {
|
||||
zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable);
|
||||
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);
|
||||
zombieScale = Mth.clamp(getDouble("mobs.zombie.attributes.scale", zombieScale), 0.0625D, 16.0D);
|
||||
zombieSpawnReinforcements = getDouble("mobs.zombie.attributes.spawn_reinforcements", zombieSpawnReinforcements);
|
||||
@@ -230,7 +230,7 @@ index 652143c7f3af6bf429b2645c2112ecb61346a522..0e8ee1511b6b16320e44311114ef7a7a
|
||||
}
|
||||
|
||||
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 zombieVillagerScale = 1.0D;
|
||||
public double zombieVillagerSpawnReinforcements = 0.1D;
|
||||
@@ -240,7 +240,7 @@ index 652143c7f3af6bf429b2645c2112ecb61346a522..0e8ee1511b6b16320e44311114ef7a7a
|
||||
private void zombieVillagerSettings() {
|
||||
zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable);
|
||||
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);
|
||||
zombieVillagerScale = Mth.clamp(getDouble("mobs.zombie_villager.attributes.scale", zombieVillagerScale), 0.0625D, 16.0D);
|
||||
zombieVillagerSpawnReinforcements = getDouble("mobs.zombie_villager.attributes.spawn_reinforcements", zombieVillagerSpawnReinforcements);
|
||||
@@ -250,7 +250,7 @@ index 652143c7f3af6bf429b2645c2112ecb61346a522..0e8ee1511b6b16320e44311114ef7a7a
|
||||
}
|
||||
|
||||
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 zombifiedPiglinScale = 1.0D;
|
||||
public double zombifiedPiglinSpawnReinforcements = 0.0D;
|
||||
@@ -260,7 +260,7 @@ index 652143c7f3af6bf429b2645c2112ecb61346a522..0e8ee1511b6b16320e44311114ef7a7a
|
||||
private void zombifiedPiglinSettings() {
|
||||
zombifiedPiglinRidable = getBoolean("mobs.zombified_piglin.ridable", zombifiedPiglinRidable);
|
||||
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);
|
||||
zombifiedPiglinScale = Mth.clamp(getDouble("mobs.zombified_piglin.attributes.scale", zombifiedPiglinScale), 0.0625D, 16.0D);
|
||||
zombifiedPiglinSpawnReinforcements = getDouble("mobs.zombified_piglin.attributes.spawn_reinforcements", zombifiedPiglinSpawnReinforcements);
|
||||
@@ -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
|
||||
index a33d89fe9ca9e343edab8bb1cc88c54130ddb4a7..72122333cf0247e4a8511ac633487f170b89586c 100644
|
||||
index 7cb3d69a69e0e3ef4b7f9f9c8b1eb67edb5d116d..4c9709e680b585316978b6a410600a8a3b4b6e3e 100644
|
||||
--- a/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 {
|
||||
@@ -72,10 +72,10 @@ index a33d89fe9ca9e343edab8bb1cc88c54130ddb4a7..72122333cf0247e4a8511ac633487f17
|
||||
|
||||
@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
|
||||
index 4dea7aed072caf383986e09ead8ee790b35d9706..7a80cb45ff5d96380755d37ff43ddeac2cd451e1 100644
|
||||
index e44d6d02ceaf1f133705efcd58b94e36014389ec..5d62be4ae4561262820d011f5e7318411d749bbb 100644
|
||||
--- a/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;
|
||||
public BlockPos anchorPoint;
|
||||
Phantom.AttackPhase attackPhase;
|
||||
@@ -83,7 +83,7 @@ index 4dea7aed072caf383986e09ead8ee790b35d9706..7a80cb45ff5d96380755d37ff43ddeac
|
||||
|
||||
public Phantom(EntityType<? extends Phantom> type, Level 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);
|
||||
return true;
|
||||
}
|
||||
@@ -107,7 +107,7 @@ index 4dea7aed072caf383986e09ead8ee790b35d9706..7a80cb45ff5d96380755d37ff43ddeac
|
||||
// Purpur end
|
||||
|
||||
@Override
|
||||
@@ -129,11 +147,17 @@ public class Phantom extends FlyingMob implements Enemy {
|
||||
@@ -130,11 +148,17 @@ public class Phantom extends FlyingMob implements Enemy {
|
||||
|
||||
@Override
|
||||
protected void registerGoals() {
|
||||
@@ -256,10 +256,10 @@ index 4dea7aed072caf383986e09ead8ee790b35d9706..7a80cb45ff5d96380755d37ff43ddeac
|
||||
|
||||
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
|
||||
index 0e8ee1511b6b16320e44311114ef7a7a8b82cc71..25db0b39456aed561f1fe12b08db8ff3e9244879 100644
|
||||
index 6c5729b86a0540aa1ced33640170b4145efa08ba..65c8b2e76677b92fee94e1149a9ce3803b3f1737 100644
|
||||
--- a/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 Map<Integer, Double> phantomMaxHealthCache = new HashMap<>();
|
||||
public Map<Integer, Double> phantomAttackDamageCache = new HashMap<>();
|
||||
@@ -269,7 +269,7 @@ index 0e8ee1511b6b16320e44311114ef7a7a8b82cc71..25db0b39456aed561f1fe12b08db8ff3
|
||||
private void phantomSettings() {
|
||||
phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable);
|
||||
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);
|
||||
phantomMaxHealthCache.clear();
|
||||
phantomAttackDamageCache.clear();
|
||||
@@ -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
|
||||
index 1b1b475ca27e799e251d6f8a8c9fe1a4fd8bae83..04f67f7b43d2f461c776c76614dc3e5f060aea63 100644
|
||||
index 021221da5d0315f6e371380a705ac6b3f6ac18d3..27eb9a365006884c85603dc6d9dd8eee009c98b3 100644
|
||||
--- a/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 {
|
||||
@@ -40,10 +40,10 @@ index 1b1b475ca27e799e251d6f8a8c9fe1a4fd8bae83..04f67f7b43d2f461c776c76614dc3e5f
|
||||
for (int l = 0; l < k; ++l) {
|
||||
// Paper start - PhantomPreSpawnEvent
|
||||
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
|
||||
+++ 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 float phantomAttackedByCrystalDamage = 1.0F;
|
||||
public double phantomOrbitCrystalRadius = 0.0D;
|
||||
@@ -56,7 +56,7 @@ index 25db0b39456aed561f1fe12b08db8ff3e9244879..0117359271289b9ebe28b028ba0def78
|
||||
private void phantomSettings() {
|
||||
phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable);
|
||||
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);
|
||||
phantomAttackedByCrystalDamage = (float) getDouble("mobs.phantom.attacked-by-crystal-damage", phantomAttackedByCrystalDamage);
|
||||
phantomOrbitCrystalRadius = getDouble("mobs.phantom.orbit-crystal-radius", phantomOrbitCrystalRadius);
|
||||
@@ -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
|
||||
index 85d598c3354ee62f0fd1b26e485e0084967c0380..b59dd6b512021c335f3c21999958e2ea081daf69 100644
|
||||
index c02c4834ace843633b77fb43eeadd3ddc7b1f743..3b19395f2ddee654a77df5738a1942a08c20c179 100644
|
||||
--- a/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();
|
||||
|
||||
- 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
|
||||
return InteractionResult.SUCCESS;
|
||||
return InteractionResult.SUCCESS_SERVER;
|
||||
} else if ((Boolean) state.getValue(BedBlock.OCCUPIED)) {
|
||||
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();
|
||||
|
||||
@@ -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
|
||||
index 0117359271289b9ebe28b028ba0def78a7c024d2..cea3e28f38e5ab585351893f62142db6dc9f4949 100644
|
||||
index 2858714275c2e3e9c0defaf264eeaade89e7cdaa..60bc2a992d407ad99705af0e34ec3c2182e1cc23 100644
|
||||
--- a/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 {
|
||||
});
|
||||
}
|
||||
|
||||
@@ -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
|
||||
index 94d067e9eeee73183de25165d8c97043fe256103..00b6941951e1af9993f8f6da5425d31b8eaa85e4 100644
|
||||
index 9117c035d5a6ff114b028fad3380ceb1fc2b9691..2c5e394156dbf76107adb4913a094dfd4a598dd7 100644
|
||||
--- a/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();
|
||||
|
||||
@@ -18,10 +18,10 @@ index 94d067e9eeee73183de25165d8c97043fe256103..00b6941951e1af9993f8f6da5425d31b
|
||||
|
||||
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
|
||||
index cea3e28f38e5ab585351893f62142db6dc9f4949..7b0e04f7132f5b8a3027ef7120f2fb1a6145fefc 100644
|
||||
index 60bc2a992d407ad99705af0e34ec3c2182e1cc23..a168eb5c1f08ad4def8421e298512c532ec06988 100644
|
||||
--- a/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);
|
||||
}
|
||||
|
||||
@@ -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
|
||||
index 321188173918d0d60858a258400dfd682ccdb21c..af47074f3a61a8518697d7851e43d5436fec5d57 100644
|
||||
index 3bddfb6f7412ab86e0c090d0cbc6cf254b3f891c..6aa8ee091d3a7d2826d08ab9a03f970ef71a81ea 100644
|
||||
--- a/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 {
|
||||
@@ -27,13 +27,14 @@ index 321188173918d0d60858a258400dfd682ccdb21c..af47074f3a61a8518697d7851e43d543
|
||||
|
||||
return true;
|
||||
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
|
||||
+++ b/src/main/java/net/minecraft/world/level/Level.java
|
||||
@@ -2044,4 +2044,13 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl
|
||||
return null;
|
||||
@@ -2039,4 +2039,14 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl
|
||||
return this.id;
|
||||
}
|
||||
}
|
||||
// Paper end - optimize redstone (Alternate Current)
|
||||
+
|
||||
+ // Purpur start
|
||||
+ public boolean isNether() {
|
||||
+ return getWorld().getEnvironment() == org.bukkit.World.Environment.NETHER;
|
||||
@@ -45,10 +46,10 @@ index 97f83c9737726be0c3b6dc847b56970e81cc6b6f..df881431c8f32e2c12224b44084ca4d7
|
||||
+ // 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
|
||||
index ac775afb265430ac202cfa3900a036d11a308b1e..87ce003dfeca975d8e6af26fd341f3abe66dc185 100644
|
||||
index a94762e65853ccad38cf90b0049ca256106c0c9f..38633e168a9b36e37feea00964d53e657926639e 100644
|
||||
--- a/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) {
|
||||
// Paper end - Improve Block#breakNaturally API
|
||||
if (!EnchantmentHelper.hasTag(tool, EnchantmentTags.PREVENTS_ICE_MELTING)) {
|
||||
@@ -57,7 +58,7 @@ index ac775afb265430ac202cfa3900a036d11a308b1e..87ce003dfeca975d8e6af26fd341f3ab
|
||||
world.removeBlock(pos, false);
|
||||
return;
|
||||
}
|
||||
@@ -69,7 +69,7 @@ public class IceBlock extends HalfTransparentBlock {
|
||||
@@ -70,7 +70,7 @@ public class IceBlock extends HalfTransparentBlock {
|
||||
return;
|
||||
}
|
||||
// CraftBukkit end
|
||||
@@ -67,7 +68,7 @@ index ac775afb265430ac202cfa3900a036d11a308b1e..87ce003dfeca975d8e6af26fd341f3ab
|
||||
} else {
|
||||
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
|
||||
index 58812f062486ae34ad448bb1fe404c4fb05ad4ff..67f883f1681b7a7c2eed60309634cb4cb32e56a1 100644
|
||||
index a3a699881e6b96d0fb507ef69e4dbc181fe5fbbc..580eb4f8cc88cda9df78868b373ba22eb319f75f 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
||||
@@ -246,6 +246,11 @@ public class PurpurConfig {
|
||||
@@ -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
|
||||
index ba98e98a09e141d45bda8a663d5e4354e3afbc1e..24507ece498ccaa2bed7b4ab53ae9c90e734ad54 100644
|
||||
index 0ffad0fee921ac302f31894766594921751fbff9..62fdb1e8b84facec3ce69d5001e7d626d74a37ce 100644
|
||||
--- a/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);
|
||||
stream.forEach(list::add);
|
||||
optional.ifPresent(list::add);
|
||||
list.addAll(packet.pages());
|
||||
+ // Purpur start
|
||||
+ boolean hasEditPerm = getCraftPlayer().hasPermission("purpur.book.color.edit");
|
||||
+ boolean hasSignPerm = hasEditPerm || getCraftPlayer().hasPermission("purpur.book.color.sign");
|
||||
@@ -25,7 +25,7 @@ index ba98e98a09e141d45bda8a663d5e4354e3afbc1e..24507ece498ccaa2bed7b4ab53ae9c90
|
||||
};
|
||||
|
||||
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) {
|
||||
@@ -39,13 +39,13 @@ index ba98e98a09e141d45bda8a663d5e4354e3afbc1e..24507ece498ccaa2bed7b4ab53ae9c90
|
||||
ItemStack itemstack = handItem.copy();
|
||||
// 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(filteredText -> filterableFromOutgoing(filteredText).map(s -> color(s, hasPerm))).toList(); // Purpur
|
||||
|
||||
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)
|
||||
@@ -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) {
|
||||
@@ -56,8 +56,8 @@ index ba98e98a09e141d45bda8a663d5e4354e3afbc1e..24507ece498ccaa2bed7b4ab53ae9c90
|
||||
+ // Purpur end
|
||||
ItemStack itemstack = this.player.getInventory().getItem(slotId);
|
||||
|
||||
if (itemstack.is(Items.WRITABLE_BOOK)) {
|
||||
@@ -1269,10 +1283,10 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
|
||||
if (itemstack.has(DataComponents.WRITABLE_BOOK_CONTENT)) {
|
||||
@@ -1246,10 +1260,10 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
|
||||
|
||||
itemstack1.remove(DataComponents.WRITABLE_BOOK_CONTENT);
|
||||
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
|
||||
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);
|
||||
}
|
||||
|
||||
@@ -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
|
||||
index ae603fa8bbb980bd57bddf1bfdc41af809d0d01a..58b90722df0b0dcd7c84976f510f43aa82ea795c 100644
|
||||
index 62fdb1e8b84facec3ce69d5001e7d626d74a37ce..8c1f21892a96ed1cf1ef8b76ff8a52f1a8caca6e 100644
|
||||
--- a/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();
|
||||
|
||||
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
|
||||
packet.dispatch(new ServerboundInteractPacket.Handler() {
|
||||
private void performInteraction(InteractionHand enumhand, ServerGamePacketListenerImpl.EntityInteraction playerconnection_a, PlayerInteractEntityEvent event) { // CraftBukkit
|
||||
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
|
||||
index ebf2541c0d17c0940d78162a4015145bbebc51cf..0d93a8cbf15fa84f422d61adddb420ba5dcb226a 100644
|
||||
index cd456edd2caf087d1dbeb97d3373bd2bf9112fc2..17e6e4a858d3a2332c14d2860d2f5d1e87e1c629 100644
|
||||
--- a/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 float restrictRadius;
|
||||
|
||||
@@ -28,7 +28,7 @@ index ebf2541c0d17c0940d78162a4015145bbebc51cf..0d93a8cbf15fa84f422d61adddb420ba
|
||||
public boolean aware = true; // CraftBukkit
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
||||
@@ -36,10 +36,10 @@ index ebf2541c0d17c0940d78162a4015145bbebc51cf..0d93a8cbf15fa84f422d61adddb420ba
|
||||
this.target = entityliving;
|
||||
return true;
|
||||
// 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
|
||||
}
|
||||
|
||||
@@ -65,7 +65,7 @@ index ebf2541c0d17c0940d78162a4015145bbebc51cf..0d93a8cbf15fa84f422d61adddb420ba
|
||||
@Override
|
||||
protected void playHurtSound(DamageSource damageSource) {
|
||||
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
|
||||
@@ -73,7 +73,7 @@ index ebf2541c0d17c0940d78162a4015145bbebc51cf..0d93a8cbf15fa84f422d61adddb420ba
|
||||
}
|
||||
|
||||
@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");
|
||||
}
|
||||
// CraftBukkit end
|
||||
@@ -85,7 +85,7 @@ index ebf2541c0d17c0940d78162a4015145bbebc51cf..0d93a8cbf15fa84f422d61adddb420ba
|
||||
}
|
||||
|
||||
@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();
|
||||
}
|
||||
|
||||
@@ -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
|
||||
index 7b0e04f7132f5b8a3027ef7120f2fb1a6145fefc..063b8ba15e6ed01a5d77572df363b5fc89edfea6 100644
|
||||
index a168eb5c1f08ad4def8421e298512c532ec06988..8832a5491303d4189155ec56f81e37f99efaa28e 100644
|
||||
--- a/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);
|
||||
}
|
||||
|
||||
@@ -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
|
||||
index 14df0de1e1abe154991c77319a73dbb3a709af80..aca60e21e7a191212d07a03a105fc4fb636359b2 100644
|
||||
index badcca42c771bf39b128c2e123be3c0aeb6b8e76..5f86f0b46e91ac41820931a9d64a7240d3ddd8d4 100644
|
||||
--- a/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();
|
||||
}
|
||||
// CraftBukkit end
|
||||
@@ -36,22 +36,22 @@ index 14df0de1e1abe154991c77319a73dbb3a709af80..aca60e21e7a191212d07a03a105fc4fb
|
||||
+ // Purpur end
|
||||
}
|
||||
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
|
||||
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
|
||||
@@ -461,6 +461,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
|
||||
double d1 = this.level().getWorldBorder().getDamagePerBlock();
|
||||
|
||||
if (d1 > 0.0D) {
|
||||
@@ -481,6 +481,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
|
||||
if (d1 < 0.0D) {
|
||||
d0 = this.level().getWorldBorder().getDamagePerBlock();
|
||||
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
|
||||
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
|
||||
index 063b8ba15e6ed01a5d77572df363b5fc89edfea6..bb88e3e6b467f9c66df48389f0f99218972b5856 100644
|
||||
index 8832a5491303d4189155ec56f81e37f99efaa28e..20242b58cc3af8d58c51919d637ec258df308a60 100644
|
||||
--- a/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 String playerDeathExpDropEquation = "expLevel * 7";
|
||||
public int playerDeathExpDropMax = 100;
|
||||
@@ -59,7 +59,7 @@ index 063b8ba15e6ed01a5d77572df363b5fc89edfea6..bb88e3e6b467f9c66df48389f0f99218
|
||||
private void playerSettings() {
|
||||
if (PurpurConfig.version < 19) {
|
||||
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);
|
||||
playerDeathExpDropEquation = getString("gameplay-mechanics.player.exp-dropped-on-death.equation", playerDeathExpDropEquation);
|
||||
playerDeathExpDropMax = getInt("gameplay-mechanics.player.exp-dropped-on-death.maximum", playerDeathExpDropMax);
|
||||
@@ -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
|
||||
index bb88e3e6b467f9c66df48389f0f99218972b5856..2eb90a4bc6db46de1a288c454bd5b552fae53e3a 100644
|
||||
index 20242b58cc3af8d58c51919d637ec258df308a60..5f686584f2f9205c3594daa52c4b3daf32f8e57b 100644
|
||||
--- a/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 double squidMaxHealth = 10.0D;
|
||||
public double squidScale = 1.0D;
|
||||
@@ -16,7 +16,7 @@ index bb88e3e6b467f9c66df48389f0f99218972b5856..2eb90a4bc6db46de1a288c454bd5b552
|
||||
private void squidSettings() {
|
||||
squidRidable = getBoolean("mobs.squid.ridable", squidRidable);
|
||||
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);
|
||||
squidScale = Mth.clamp(getDouble("mobs.squid.attributes.scale", squidScale), 0.0625D, 16.0D);
|
||||
@@ -25,10 +25,10 @@ index bb88e3e6b467f9c66df48389f0f99218972b5856..2eb90a4bc6db46de1a288c454bd5b552
|
||||
|
||||
public boolean spiderRidable = false;
|
||||
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
|
||||
+++ 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)
|
||||
{
|
||||
@@ -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
|
||||
index 7a80cb45ff5d96380755d37ff43ddeac2cd451e1..8f221fe016ea7221eb3a2116a2213139cf961797 100644
|
||||
index 5d62be4ae4561262820d011f5e7318411d749bbb..11e0ba7ec12ba3b93589f451ef4f251598eb29c9 100644
|
||||
--- a/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;
|
||||
public BlockPos anchorPoint;
|
||||
Phantom.AttackPhase attackPhase;
|
||||
@@ -16,7 +16,7 @@ index 7a80cb45ff5d96380755d37ff43ddeac2cd451e1..8f221fe016ea7221eb3a2116a2213139
|
||||
Vec3 crystalPosition; // Purpur
|
||||
|
||||
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
|
||||
public void aiStep() {
|
||||
@@ -42,19 +42,19 @@ index 7a80cb45ff5d96380755d37ff43ddeac2cd451e1..8f221fe016ea7221eb3a2116a2213139
|
||||
} else {
|
||||
if (entityliving instanceof Player) {
|
||||
Player entityhuman = (Player) entityliving;
|
||||
@@ -786,6 +797,7 @@ public class Phantom extends FlyingMob implements Enemy {
|
||||
this.nextScanTick = reducedTickDelay(60);
|
||||
List<Player> list = Phantom.this.level().getNearbyPlayers(this.attackTargeting, Phantom.this, Phantom.this.getBoundingBox().inflate(16.0D, 64.0D, 16.0D));
|
||||
@@ -787,6 +798,7 @@ public class Phantom extends FlyingMob implements Enemy {
|
||||
ServerLevel worldserver = getServerLevel(Phantom.this.level());
|
||||
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 (!list.isEmpty()) {
|
||||
list.sort(Comparator.comparing((Entity e) -> { return e.getY(); }).reversed()); // CraftBukkit - decompile error
|
||||
Iterator iterator = list.iterator();
|
||||
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
|
||||
+++ 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 int phantomSpawnMinPerAttempt = 1;
|
||||
public int phantomSpawnMaxPerAttempt = -1;
|
||||
@@ -64,7 +64,7 @@ index 2eb90a4bc6db46de1a288c454bd5b552fae53e3a..619e3d5c5a0ffe690e6d9dd0b3a2fd86
|
||||
private void phantomSettings() {
|
||||
phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable);
|
||||
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);
|
||||
phantomSpawnMinPerAttempt = getInt("mobs.phantom.spawn.per-attempt.min", phantomSpawnMinPerAttempt);
|
||||
phantomSpawnMaxPerAttempt = getInt("mobs.phantom.spawn.per-attempt.max", phantomSpawnMaxPerAttempt);
|
||||
@@ -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
|
||||
index f083de2448e0e6dfa277c58a082b305cdc1e11e7..37aefffb16c43221e39ef0b41a16968a560968ea 100644
|
||||
index 9008eeae3187024862bef886801d197c4c425df3..62a1d6876ce75676c5fa381e48bc58b8ef92701b 100644
|
||||
--- a/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
|
||||
public boolean canBreed() {
|
||||
@@ -18,10 +18,10 @@ index f083de2448e0e6dfa277c58a082b305cdc1e11e7..37aefffb16c43221e39ef0b41a16968a
|
||||
|
||||
private boolean hungry() {
|
||||
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
|
||||
+++ 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 boolean villagerFollowEmeraldBlock = false;
|
||||
public boolean villagerCanBeLeashed = false;
|
||||
@@ -29,7 +29,7 @@ index 619e3d5c5a0ffe690e6d9dd0b3a2fd86035bc2da..6657fdacd399d0c097f81abe8de282f5
|
||||
private void villagerSettings() {
|
||||
villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable);
|
||||
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);
|
||||
villagerFollowEmeraldBlock = getBoolean("mobs.villager.follow-emerald-blocks", villagerFollowEmeraldBlock);
|
||||
villagerCanBeLeashed = getBoolean("mobs.villager.can-be-leashed", villagerCanBeLeashed);
|
||||
@@ -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
|
||||
index f57e1b78204dff661ad5d3ee93a88a00330af2dc..967af8771ff8564c715d89f4b4b69b16c25add59 100644
|
||||
index 7de66aa435dd36899b80f4ecc64480680e474d94..bb4411cfdf1bc7adc12c2f918d2eec830299f38b 100644
|
||||
--- a/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 {
|
||||
@@ -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
|
||||
index 6657fdacd399d0c097f81abe8de282f5a7c35445..c613cc628f5f40d85000709b228c09bfa057028a 100644
|
||||
index 5175aff0fe60a9f1c71882d01f8ad29dac84f579..0c8ec8f1f6a79a0764ff05d34b40cf18c5590862 100644
|
||||
--- a/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 {
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
index cacda8947f0d88f6022e2c468e94da25ac0a1d7e..cd2775bf0b59056a8329b1e7e2649f4b3cd92b2a 100644
|
||||
index c0ac2801321ca1813804214cc0ceecc1b557865e..06ccf6daaf5e7affe505c75cdbf85c1c29c3ebf9 100644
|
||||
--- a/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);
|
||||
event.setCancelled(itemstack == null);
|
||||
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
|
||||
+++ 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 int playerDeathExpDropMax = 100;
|
||||
public boolean teleportIfOutsideBorder = false;
|
||||
@@ -39,7 +39,7 @@ index c613cc628f5f40d85000709b228c09bfa057028a..a3e40d92a32e214a69b605740bcbe639
|
||||
private void playerSettings() {
|
||||
if (PurpurConfig.version < 19) {
|
||||
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);
|
||||
playerDeathExpDropMax = getInt("gameplay-mechanics.player.exp-dropped-on-death.maximum", playerDeathExpDropMax);
|
||||
teleportIfOutsideBorder = getBoolean("gameplay-mechanics.player.teleport-if-outside-border", teleportIfOutsideBorder);
|
||||
@@ -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
|
||||
index e5c6baf199235812f7b4fcec20145d7146737224..f8c2911496aa18e8e2b589309e9cdd78d679f004 100644
|
||||
index 2bfce82bee8f3a16a33bd937eb610d9df1b6ceeb..2f7da09e14787395e95211acadd5c693cf07fba3 100644
|
||||
--- a/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();
|
||||
this.populateDefaultEquipmentSlots(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
|
||||
index a3e40d92a32e214a69b605740bcbe639211bedb6..cf8165b5a5a1b82c966ae891d95e0093bf76526f 100644
|
||||
index bd3c6364051419544cc1c5db110920ad51c1dbc7..fa69de1709b41faef119474b98bcd2839d0ae67d 100644
|
||||
--- a/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 double vindicatorMaxHealth = 24.0D;
|
||||
public double vindicatorScale = 1.0D;
|
||||
@@ -32,7 +32,7 @@ index a3e40d92a32e214a69b605740bcbe639211bedb6..cf8165b5a5a1b82c966ae891d95e0093
|
||||
private void vindicatorSettings() {
|
||||
vindicatorRidable = getBoolean("mobs.vindicator.ridable", vindicatorRidable);
|
||||
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);
|
||||
vindicatorScale = Mth.clamp(getDouble("mobs.vindicator.attributes.scale", vindicatorScale), 0.0625D, 16.0D);
|
||||
@@ -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
|
||||
index 60d3319016beb4f60cbc26dde165f64cf7577602..bd07743817f2510c179614a6215434e7b333824a 100644
|
||||
index cd77e86ff289634d2dd1c56002e569ff70d15f25..f5d7008ab65be21980063c6c5da783e4077252f5 100644
|
||||
--- a/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
|
||||
+ DispenserBlock.registerBehavior(Items.ANVIL, (new OptionalDispenseItemBehavior() {
|
||||
+ @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
|
||||
index cf8165b5a5a1b82c966ae891d95e0093bf76526f..f291018ef35645d14811bbc1e47c56ac34fb73c6 100644
|
||||
index fa69de1709b41faef119474b98bcd2839d0ae67d..0aaf03f290a9bf410a5f854add927aca58d09ec3 100644
|
||||
--- a/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;
|
||||
@@ -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
|
||||
index 07e4c67ed1e5b14315ccbce4f0dd8abf0e5e6635..58135a3292bcdfea17726f17d86192ced96eea9a 100644
|
||||
index 0dfcce766872d9b1a9b898f56e6f4d9179a46bc4..f1834eec821a14ef6a7f42f827b7e0b8284ae5a2 100644
|
||||
--- a/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())) {
|
||||
b0 = 1;
|
||||
i += b0;
|
||||
@@ -64,10 +64,10 @@ index 07e4c67ed1e5b14315ccbce4f0dd8abf0e5e6635..58135a3292bcdfea17726f17d86192ce
|
||||
}
|
||||
} 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
|
||||
index f291018ef35645d14811bbc1e47c56ac34fb73c6..1c1cf0e4c7fa41c2b5239ca47048670e058fd685 100644
|
||||
index 0aaf03f290a9bf410a5f854add927aca58d09ec3..cc35a98e9602b261da8613ae9cf95a0940bfeb19 100644
|
||||
--- a/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 {
|
||||
});
|
||||
}
|
||||
|
||||
@@ -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
|
||||
index 98885a788af662736435fa8465c9b6ffeb16811b..6278d1020aeac52622ecf98c34453044850a453e 100644
|
||||
index a5a23c7f733d49c20c870f819eec2607781dccbf..be74a5732bc24eb3c909d28b4ef46d5175d999d2 100644
|
||||
--- a/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
|
||||
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
|
||||
index 1c1cf0e4c7fa41c2b5239ca47048670e058fd685..0411116e9b6735dcddf5f4d197f83ce61bd2aab6 100644
|
||||
index cc35a98e9602b261da8613ae9cf95a0940bfeb19..c1302e6cd7db386c94d95e03b901c65b3aca1887 100644
|
||||
--- a/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 double dolphinMaxHealth = 10.0D;
|
||||
public double dolphinScale = 1.0D;
|
||||
@@ -28,7 +28,7 @@ index 1c1cf0e4c7fa41c2b5239ca47048670e058fd685..0411116e9b6735dcddf5f4d197f83ce6
|
||||
private void dolphinSettings() {
|
||||
dolphinRidable = getBoolean("mobs.dolphin.ridable", dolphinRidable);
|
||||
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);
|
||||
dolphinScale = Mth.clamp(getDouble("mobs.dolphin.attributes.scale", dolphinScale), 0.0625D, 16.0D);
|
||||
@@ -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
|
||||
index 5a80b1f1168d17ef62d756f8eed751e721f09f79..bad5b622477a637440649ec18ea5a79c321bc523 100644
|
||||
index 9eebe70e8ce80620b68635c9048e8e5c1083e27e..663dde75a9fc4fd7323ae9abe73cdb83aa74f2b3 100644
|
||||
--- a/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
|
||||
private Component description;
|
||||
@@ -388,7 +388,8 @@ public class EntityType<T extends Entity> implements FeatureElement, EntityTypeT
|
||||
@Nullable
|
||||
private ResourceKey<LootTable> lootTable;
|
||||
private Component description;
|
||||
private final Optional<ResourceKey<LootTable>> lootTable;
|
||||
- private final EntityDimensions dimensions;
|
||||
+ private EntityDimensions dimensions; // Purpur - remove final
|
||||
+ public void setDimensions(EntityDimensions dimensions) { this.dimensions = dimensions; } // Purpur
|
||||
@@ -19,11 +19,11 @@ index 5a80b1f1168d17ef62d756f8eed751e721f09f79..bad5b622477a637440649ec18ea5a79c
|
||||
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
|
||||
index 108dca0b1b97e01fd9cadf4ae330fab770fce0c8..b081ea3f272ec2dba426bf0ebdfbbba1cec718ee 100644
|
||||
index 437368100f6205b4c42234713044be47fda7082d..1a33a41f79f9d661cb958a6ecee2ab7e8a819877 100644
|
||||
--- a/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 {
|
||||
if (this.isInvulnerableTo(source)) {
|
||||
@@ -409,6 +409,7 @@ public class EnderMan extends Monster implements NeutralMob {
|
||||
if (this.isInvulnerableTo(world, source)) {
|
||||
return false;
|
||||
} 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
|
||||
@@ -31,7 +31,7 @@ index 108dca0b1b97e01fd9cadf4ae330fab770fce0c8..b081ea3f272ec2dba426bf0ebdfbbba1
|
||||
boolean flag = source.getDirectEntity() instanceof ThrownPotion;
|
||||
boolean flag1;
|
||||
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
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
||||
@@ -246,6 +246,12 @@ public class PurpurConfig {
|
||||
@@ -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
|
||||
index e6c1ae7b70bed34fa9b1acdeaf0d969a1f5b6f08..8911eb7f6f307c7846eeb10f68e5cd231bd22e1b 100644
|
||||
index c2cc934f2599c6620b60b1b1485c743390157377..6f93348f929c33268107607dec6cce7e102c18b2 100644
|
||||
--- a/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);
|
||||
}
|
||||
|
||||
@@ -18,14 +18,14 @@ index e6c1ae7b70bed34fa9b1acdeaf0d969a1f5b6f08..8911eb7f6f307c7846eeb10f68e5cd23
|
||||
+ }
|
||||
+ // Purpur end
|
||||
+
|
||||
public boolean updateFluidHeightAndDoFluidPushing(TagKey<Fluid> tag, double speed) {
|
||||
if (false && this.touchingUnloadedChunk()) { // Pufferfish - cost of a lookup here is the same cost as below, so skip
|
||||
return false;
|
||||
// Paper start - optimise collisions
|
||||
public boolean updateFluidHeightAndDoFluidPushing(final TagKey<Fluid> fluid, final double flowScale) {
|
||||
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
|
||||
index ef4513f577779ddcfd357420aa65e1b52cf0f388..522dabcf6ec8b19902890718717fc890d430c750 100644
|
||||
index db0d03fe2d2891efb3284d5c597d7c8279f2db94..a0aa4ac61de870a374152018ebdeab47dc5b5a85 100644
|
||||
--- a/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);
|
||||
}
|
||||
|
||||
@@ -39,10 +39,10 @@ index ef4513f577779ddcfd357420aa65e1b52cf0f388..522dabcf6ec8b19902890718717fc890
|
||||
protected void registerGoals() {
|
||||
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
|
||||
index 29123f3a2f211c08d1a9ccf62ca9bc9822f90111..db78616676ba021ee0f03cfea932f2912f4ec987 100644
|
||||
index 6cf6d4ec7b9e43c7b2b4c0e2fb080964ff588130..e74866e5195a5eeae7666ad7be750edac5947094 100644
|
||||
--- a/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) {
|
||||
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
|
||||
}
|
||||
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
|
||||
+++ 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 squidScale = 1.0D;
|
||||
public boolean squidImmuneToEAR = true;
|
||||
@@ -65,7 +65,7 @@ index 0411116e9b6735dcddf5f4d197f83ce61bd2aab6..45238996bb7ee057ab981178baf56194
|
||||
private void squidSettings() {
|
||||
squidRidable = getBoolean("mobs.squid.ridable", squidRidable);
|
||||
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);
|
||||
squidScale = Mth.clamp(getDouble("mobs.squid.attributes.scale", squidScale), 0.0625D, 16.0D);
|
||||
squidImmuneToEAR = getBoolean("mobs.squid.immune-to-EAR", squidImmuneToEAR);
|
||||
@@ -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
|
||||
index 86d95edc7dd1e42b4b38eba1177cd508e72e4fc4..6c07fc507df6070854f5950a8616d2949c040656 100644
|
||||
index 90056822cd17f3d33d14b3f94b34750ee522a0a9..acdff7b4a00d563739fd301c3633a266875296fa 100644
|
||||
--- a/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;
|
||||
public static final int MAX_HEIGHT = 21;
|
||||
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 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
|
||||
index b5822e634147e8c6e6508324442ce2b4dec3824a..ce7ef9b4149021812c325bfd24cd6b9d4dc610a6 100644
|
||||
index 230606116a3f5a00cf0fa0b075c65aac7806c647..d4371bebdcb3b55c412334491959835e2d52220f 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
||||
@@ -214,6 +214,7 @@ public class PurpurConfig {
|
||||
@@ -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
|
||||
index 8911eb7f6f307c7846eeb10f68e5cd231bd22e1b..acf10656ea445554ee537dcb2f23164ee77e4d60 100644
|
||||
index 6f93348f929c33268107607dec6cce7e102c18b2..4b516fcc23c692ec2c9847bee45484d747981410 100644
|
||||
--- a/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) {
|
||||
if (this.isOnPortalCooldown()) {
|
||||
this.setPortalCooldown();
|
||||
- } else {
|
||||
+ } else if (this.level.purpurConfig.entitiesCanUsePortals || this instanceof ServerPlayer) { // Purpur - Entities can use portals
|
||||
if (this.portalProcess != null && this.portalProcess.isSamePortal(portal)) {
|
||||
this.portalProcess.updateEntryPosition(pos.immutable());
|
||||
this.portalProcess.setAsInsidePortalThisTick(true);
|
||||
@@ -3902,7 +3902,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
|
||||
if (!this.portalProcess.isInsidePortalThisTick()) {
|
||||
this.portalProcess.updateEntryPosition(pos.immutable());
|
||||
@@ -4148,7 +4148,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
|
||||
// CraftBukkit end
|
||||
|
||||
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
|
||||
}
|
||||
|
||||
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
|
||||
index 45238996bb7ee057ab981178baf56194411d5b77..96dc75c3ab53dbd2df040c84ddf878881d26a051 100644
|
||||
index 918923d1d95b68a99b52750974647df03070f910..85c896145bd1489a9bcdfe580f959db308c59b65 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -99,12 +99,14 @@ public class PurpurWorldConfig {
|
||||
public boolean useBetterMending = false;
|
||||
@@ -100,11 +100,13 @@ public class PurpurWorldConfig {
|
||||
public boolean boatEjectPlayersOnLand = false;
|
||||
public boolean disableDropsOnCrammingDeath = false;
|
||||
+ public boolean entitiesCanUsePortals = true;
|
||||
public boolean milkCuresBadOmen = true;
|
||||
public double tridentLoyaltyVoidReturnHeight = 0.0D;
|
||||
+ public boolean entitiesCanUsePortals = true;
|
||||
private void miscGameplayMechanicsSettings() {
|
||||
useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending);
|
||||
boatEjectPlayersOnLand = getBoolean("gameplay-mechanics.boat.eject-players-on-land", boatEjectPlayersOnLand);
|
||||
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);
|
||||
+ entitiesCanUsePortals = getBoolean("gameplay-mechanics.entities-can-use-portals", entitiesCanUsePortals);
|
||||
}
|
||||
|
||||
public int elytraDamagePerSecond = 1;
|
||||
@@ -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.
|
||||
|
||||
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
|
||||
+++ 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());
|
||||
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
|
||||
+++ 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 witherMaxHealth = 300.0D;
|
||||
public double witherScale = 1.0D;
|
||||
@@ -35,7 +35,7 @@ index 96dc75c3ab53dbd2df040c84ddf878881d26a051..07bb161fce3e66eaac6ca347a0ad508a
|
||||
private void witherSettings() {
|
||||
witherRidable = getBoolean("mobs.wither.ridable", witherRidable);
|
||||
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);
|
||||
witherScale = Mth.clamp(getDouble("mobs.wither.attributes.scale", witherScale), 0.0625D, 16.0D);
|
||||
@@ -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.
|
||||
|
||||
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
|
||||
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
|
||||
@@ -520,7 +520,24 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf.
|
||||
this.dragonParts = new Int2ObjectOpenHashMap();
|
||||
@@ -588,7 +588,24 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
|
||||
// CraftBukkit end
|
||||
this.tickTime = flag1;
|
||||
this.server = minecraftserver;
|
||||
- this.customSpawners = list;
|
||||
@@ -36,7 +36,7 @@ index 8b2ab0a91a5243357400c91c01c9f27a79825047..9eeb5a5304a25f8709288bc78ec8458b
|
||||
ChunkGenerator chunkgenerator = worlddimension.generator();
|
||||
// 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
|
||||
index c72b6ea5530e54fc373c701028e1c147cea34b59..96e9fce5f9084737d2fcf4deb83305733b480179 100644
|
||||
index a728dcbf956f108f01c966c7531449a506a14a87..4c1378132201c1e5d1bc01f8c0cbba91629bcffa 100644
|
||||
--- a/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 {
|
||||
@@ -59,7 +59,7 @@ index c72b6ea5530e54fc373c701028e1c147cea34b59..96e9fce5f9084737d2fcf4deb8330573
|
||||
if (spawnplacementtype.isSpawnPositionOk(world, blockposition2, EntityType.WANDERING_TRADER)) {
|
||||
blockposition1 = blockposition2;
|
||||
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
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -70,6 +70,12 @@ public class PurpurWorldConfig {
|
||||
@@ -75,7 +75,7 @@ index 07bb161fce3e66eaac6ca347a0ad508aa80ecbf4..84713d2c265d2ce097a59f64eb693742
|
||||
private double getDouble(String path, double def) {
|
||||
PurpurConfig.config.addDefault("world-settings.default." + path, def);
|
||||
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 {
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
index 8c60f71270d909c10e6617eb64b8fdb42deb73e9..eedce2a3d67d875d5174ee125e2679480d4d412c 100644
|
||||
index 439d61d8689fabe940006b9b317a6810175dccfb..6b30941a84054efb5fcccb5d9e6c80d713a23889 100644
|
||||
--- a/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;
|
||||
@@ -49,21 +49,20 @@ index 8c60f71270d909c10e6617eb64b8fdb42deb73e9..eedce2a3d67d875d5174ee125e267948
|
||||
if (!raid.isStarted() && !this.raidMap.containsKey(raid.getId())) {
|
||||
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
|
||||
index 84713d2c265d2ce097a59f64eb693742933ad8ca..54e7250a70ef538ff25df1737a064690a204fa91 100644
|
||||
index 668ea98aee2f74ff6ac961b61360fb2e48513ebf..0e1992ba3bbd470eee6bdd461d2f00abec5c6d55 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -108,6 +108,7 @@ public class PurpurWorldConfig {
|
||||
public boolean entitiesCanUsePortals = true;
|
||||
public boolean milkCuresBadOmen = true;
|
||||
@@ -107,12 +107,14 @@ public class PurpurWorldConfig {
|
||||
public boolean disableDropsOnCrammingDeath = false;
|
||||
public double tridentLoyaltyVoidReturnHeight = 0.0D;
|
||||
public boolean entitiesCanUsePortals = true;
|
||||
+ public int raidCooldownSeconds = 0;
|
||||
private void miscGameplayMechanicsSettings() {
|
||||
useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending);
|
||||
boatEjectPlayersOnLand = getBoolean("gameplay-mechanics.boat.eject-players-on-land", boatEjectPlayersOnLand);
|
||||
@@ -115,6 +116,7 @@ public class PurpurWorldConfig {
|
||||
entitiesCanUsePortals = getBoolean("gameplay-mechanics.entities-can-use-portals", entitiesCanUsePortals);
|
||||
milkCuresBadOmen = getBoolean("gameplay-mechanics.milk-cures-bad-omen", milkCuresBadOmen);
|
||||
disableDropsOnCrammingDeath = getBoolean("gameplay-mechanics.disable-drops-on-cramming-death", disableDropsOnCrammingDeath);
|
||||
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);
|
||||
}
|
||||
|
||||
@@ -20,14 +20,14 @@ index f7241c5292f1c012404eea11256813fbc2c2df1a..fad407d0cec0605e303e93a79752435f
|
||||
ignored.add("goal_selector_1");
|
||||
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
|
||||
index b5a46c844e0f366828f8c287a598abb9aaeacf21..4f9daaeb1bd4d115a84b0c20649e4dd44af37924 100644
|
||||
index 7dc7f8734ffb3c5e50c763cb4e750d20c6e22281..7b3c999a03d91c167dfc1a1c90750b2efd4eb675 100644
|
||||
--- a/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 {
|
||||
this.goalSelector.addGoal(7, new RandomStrollGoal(this, 1.0D));
|
||||
this.targetSelector.addGoal(1, (new HurtByTargetGoal(this, new Class[]{Drowned.class})).setAlertOthers(ZombifiedPiglin.class));
|
||||
this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, Player.class, 10, true, false, this::okTarget));
|
||||
- if (this.level().spigotConfig.zombieAggressiveTowardsVillager) this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, AbstractVillager.class, false)); // Paper - Check drowned for villager aggression config
|
||||
@@ -125,7 +125,19 @@ public class Drowned extends Zombie implements RangedAttackMob {
|
||||
this.goalSelector.addGoal(7, new RandomStrollGoal(this, 1.0));
|
||||
this.targetSelector.addGoal(1, new HurtByTargetGoal(this, Drowned.class).setAlertOthers(ZombifiedPiglin.class));
|
||||
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
|
||||
+ // Purpur start
|
||||
+ if (this.level().spigotConfig.zombieAggressiveTowardsVillager) this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, AbstractVillager.class, false) { // Paper - Check drowned for villager aggression config
|
||||
+ @Override
|
||||
@@ -45,10 +45,10 @@ index b5a46c844e0f366828f8c287a598abb9aaeacf21..4f9daaeb1bd4d115a84b0c20649e4dd4
|
||||
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));
|
||||
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
|
||||
+++ 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.targetSelector.addGoal(1, (new HurtByTargetGoal(this, new Class[0])).setAlertOthers(ZombifiedPiglin.class));
|
||||
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));
|
||||
}
|
||||
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
|
||||
+++ 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 double zombieJockeyChance = 0.05D;
|
||||
public boolean zombieJockeyTryExistingChickens = true;
|
||||
@@ -81,7 +81,7 @@ index 54e7250a70ef538ff25df1737a064690a204fa91..ad6a39364a835d698fc008fca433930b
|
||||
private void zombieSettings() {
|
||||
zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable);
|
||||
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);
|
||||
zombieJockeyChance = getDouble("mobs.zombie.jockey.chance", zombieJockeyChance);
|
||||
zombieJockeyTryExistingChickens = getBoolean("mobs.zombie.jockey.try-existing-chickens", zombieJockeyTryExistingChickens);
|
||||
@@ -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
|
||||
index 8211c152e6f4232e82e452b08047e4579465d770..4cd57672c548950cb4e0aa97af75ecca84be6823 100644
|
||||
index 27aee968718af1ae78e2076ddc890114b2c9bb94..0f5be53c6f6a66c61dc3f2bebeb18ca61d06c10d 100644
|
||||
--- a/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);
|
||||
}
|
||||
|
||||
@@ -21,10 +21,10 @@ index 8211c152e6f4232e82e452b08047e4579465d770..4cd57672c548950cb4e0aa97af75ecca
|
||||
protected ParticleOptions getInkParticle() {
|
||||
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
|
||||
index 522dabcf6ec8b19902890718717fc890d430c750..ea80eca266500f93fa9c00962d078ec276814f0a 100644
|
||||
index a0aa4ac61de870a374152018ebdeab47dc5b5a85..548f140c56277d46a3381b48d6f0b660c6e8feeb 100644
|
||||
--- a/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);
|
||||
}
|
||||
|
||||
@@ -40,7 +40,7 @@ index 522dabcf6ec8b19902890718717fc890d430c750..ea80eca266500f93fa9c00962d078ec2
|
||||
@Override
|
||||
protected void registerGoals() {
|
||||
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()) {
|
||||
@@ -48,20 +48,20 @@ index 522dabcf6ec8b19902890718717fc890d430c750..ea80eca266500f93fa9c00962d078ec2
|
||||
if (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;
|
||||
@@ -358,7 +368,7 @@ public class Squid extends WaterAnimal {
|
||||
@@ -374,7 +384,7 @@ public class Squid extends AgeableWaterCreature {
|
||||
int i = this.squid.getNoActionTime();
|
||||
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.isInWater() || !this.squid.hasMovementVector()) { // Purpur
|
||||
float f = this.squid.getRandom().nextFloat() * (float) (Math.PI * 2);
|
||||
float g = Mth.cos(f) * 0.2F;
|
||||
float h = -0.1F + this.squid.getRandom().nextFloat() * 0.2F;
|
||||
this.squid.movementVector = new Vec3(
|
||||
(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
|
||||
index ad6a39364a835d698fc008fca433930b6f47800f..18faf8ef7c09b72849502a9e3b880d62bcc50a3f 100644
|
||||
index a0a5059e5d86ff3626b7e4a6d378f9b34d6ba8dc..166a7513ee9c309cc4dd16367fcb86b2ab3b243e 100644
|
||||
--- a/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 double glowSquidMaxHealth = 10.0D;
|
||||
public double glowSquidScale = 1.0D;
|
||||
@@ -75,7 +75,7 @@ index ad6a39364a835d698fc008fca433930b6f47800f..18faf8ef7c09b72849502a9e3b880d62
|
||||
}
|
||||
|
||||
public boolean goatRidable = false;
|
||||
@@ -1624,6 +1626,7 @@ public class PurpurWorldConfig {
|
||||
@@ -1622,6 +1624,7 @@ public class PurpurWorldConfig {
|
||||
public double squidScale = 1.0D;
|
||||
public boolean squidImmuneToEAR = true;
|
||||
public double squidOffsetWaterCheck = 0.0D;
|
||||
@@ -83,7 +83,7 @@ index ad6a39364a835d698fc008fca433930b6f47800f..18faf8ef7c09b72849502a9e3b880d62
|
||||
private void squidSettings() {
|
||||
squidRidable = getBoolean("mobs.squid.ridable", squidRidable);
|
||||
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);
|
||||
squidImmuneToEAR = getBoolean("mobs.squid.immune-to-EAR", squidImmuneToEAR);
|
||||
squidOffsetWaterCheck = getDouble("mobs.squid.water-offset-check", squidOffsetWaterCheck);
|
||||
@@ -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
|
||||
index 6eb5c0f23d9dc61e69ad5ad493c89602a9dcd4b5..4db2032178471860baddc6b669c9a4f8cffd084b 100644
|
||||
index bb593209c95c9cf1f9c5d52d52fab4a33ddbabcf..1d4d0799a86b9940b5e3b614c5a188ade5133f7e 100644
|
||||
--- a/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 {
|
||||
public void releaseUsing(ItemStack stack, Level world, LivingEntity user, int remainingUseTicks) {
|
||||
if (user instanceof Player player) {
|
||||
@@ -28,6 +28,11 @@ public class BowItem extends ProjectileWeaponItem {
|
||||
return false;
|
||||
} else {
|
||||
ItemStack itemStack = player.getProjectile(stack);
|
||||
+ // Purpur start
|
||||
+ 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);
|
||||
+ }
|
||||
+ // Purpur end
|
||||
if (!itemStack.isEmpty()) {
|
||||
int i = this.getUseDuration(stack, user) - remainingUseTicks;
|
||||
float f = getPowerForTime(i);
|
||||
@@ -82,7 +87,7 @@ public class BowItem extends ProjectileWeaponItem {
|
||||
public InteractionResultHolder<ItemStack> use(Level world, Player user, InteractionHand hand) {
|
||||
if (itemStack.isEmpty()) {
|
||||
return false;
|
||||
} else {
|
||||
@@ -89,7 +94,7 @@ public class BowItem extends ProjectileWeaponItem {
|
||||
public InteractionResult use(Level world, Player user, InteractionHand hand) {
|
||||
ItemStack itemStack = user.getItemInHand(hand);
|
||||
boolean bl = !user.getProjectile(itemStack).isEmpty();
|
||||
- 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
|
||||
return InteractionResultHolder.fail(itemStack);
|
||||
return InteractionResult.FAIL;
|
||||
} else {
|
||||
user.startUsingItem(hand);
|
||||
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
|
||||
+++ 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);
|
||||
}
|
||||
|
||||
@@ -4,24 +4,11 @@ Date: Sat, 10 Oct 2020 14:29:55 -0500
|
||||
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
|
||||
index b2ce50799ff158ff2160b0d75404e52e34d54805..f514c421b5ff7e46b2d211f895dcb0d7a375704f 100644
|
||||
index e96f55191f97490bbaf5fb990c33237469fa07e0..d5efd5fdbf0acc89de3790f30b9739809f0a02d4 100644
|
||||
--- a/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();
|
||||
final ClientboundSetTimePacket worldPacket = new ClientboundSetTimePacket(worldTime, dayTime, doDaylight);
|
||||
for (Player entityhuman : level.players()) {
|
||||
@@ -31,10 +18,10 @@ index b2ce50799ff158ff2160b0d75404e52e34d54805..f514c421b5ff7e46b2d211f895dcb0d7
|
||||
}
|
||||
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
|
||||
index 9eeb5a5304a25f8709288bc78ec8458b70e18649..e077c6cb1880ee19e696d2430b07d1101e330919 100644
|
||||
index 9538510ac96d97b8e3cdfcc9873bb3d274c351ad..8dd211d20a695164c2086c03c8b0237ba109fda4 100644
|
||||
--- a/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 StructureCheck structureCheck;
|
||||
private final boolean tickTime;
|
||||
@@ -43,18 +30,18 @@ index 9eeb5a5304a25f8709288bc78ec8458b70e18649..e077c6cb1880ee19e696d2430b07d110
|
||||
private final RandomSequences randomSequences;
|
||||
|
||||
// CraftBukkit start
|
||||
@@ -608,6 +610,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf.
|
||||
this.chunkTaskScheduler = new ca.spottedleaf.moonrise.patches.chunk_system.scheduling.ChunkTaskScheduler((ServerLevel)(Object)this, ca.spottedleaf.moonrise.common.util.MoonriseCommon.WORKER_POOL);
|
||||
@@ -677,6 +679,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
|
||||
this.chunkDataController = new ca.spottedleaf.moonrise.patches.chunk_system.io.datacontroller.ChunkDataController((ServerLevel)(Object)this, this.chunkTaskScheduler);
|
||||
// Paper end - rewrite chunk system
|
||||
this.getCraftServer().addWorld(this.getWorld()); // CraftBukkit
|
||||
+ this.preciseTime = this.serverLevelData.getDayTime(); // Purpur
|
||||
}
|
||||
|
||||
// Paper start
|
||||
@@ -798,6 +801,13 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf.
|
||||
this.serverLevelData.setGameTime(i);
|
||||
@@ -854,6 +857,13 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
|
||||
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
|
||||
+ int incrementTicks = isDay() ? this.purpurConfig.daytimeTicks : this.purpurConfig.nighttimeTicks;
|
||||
+ if (incrementTicks != 12000) {
|
||||
@@ -65,7 +52,7 @@ index 9eeb5a5304a25f8709288bc78ec8458b70e18649..e077c6cb1880ee19e696d2430b07d110
|
||||
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) {
|
||||
this.serverLevelData.setDayTime(timeOfDay);
|
||||
@@ -88,10 +75,10 @@ index 9eeb5a5304a25f8709288bc78ec8458b70e18649..e077c6cb1880ee19e696d2430b07d110
|
||||
public void tickCustomSpawners(boolean spawnMonsters, boolean spawnAnimals) {
|
||||
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
|
||||
index 0abf6598e8bf4ac59ea4387ee07d4de68032076b..ac473b14269e124bbb60d063ee869103800e7cbc 100644
|
||||
index 9031028533afbc896be2b1402b073c1bdd06dcfe..50cc76689e64b27172e1806e564c8fae43378234 100644
|
||||
--- a/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);
|
||||
}
|
||||
|
||||
@@ -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
|
||||
index 730aca233f6e7564d4cb85b5b628d23c4f01d2f4..699bdc1f01a95ecdfe899493c8d81ec31cc9fa4b 100644
|
||||
index 15e0861486a2bda3e2f4049b1b5a299c870acd31..91a158ed90b7ce3eac7277fd962682a0226c08ed 100644
|
||||
--- a/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);
|
||||
@@ -30,19 +30,19 @@ index 730aca233f6e7564d4cb85b5b628d23c4f01d2f4..699bdc1f01a95ecdfe899493c8d81ec3
|
||||
ItemStack itemstack1 = (ItemStack) blockEntity.items.get(0);
|
||||
boolean flag2 = !itemstack1.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);
|
||||
}
|
||||
|
||||
+ 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
|
||||
index ac473b14269e124bbb60d063ee869103800e7cbc..c0a4aa371c870756333465659b747144a3bae5f4 100644
|
||||
index 50cc76689e64b27172e1806e564c8fae43378234..8c2a26c150bf43f4e344c4bdf49b90926cd044b0 100644
|
||||
--- a/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);
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
|
||||
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
|
||||
+++ 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();
|
||||
|
||||
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
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isInGround() {
|
||||
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
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -102,6 +102,11 @@ public class PurpurWorldConfig {
|
||||
@@ -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
|
||||
index da85fabd75e9bd5ebece7127ef5b512df16fe3ac..dc356bd0931af9bdab9ec71e3de66e88a67375ad 100644
|
||||
index df89b18f0d5d2dad5745ec65bcd9e4a7bf2f1f2b..e744a117d2f25ad24c87263ba2ab7f760b6e594d 100644
|
||||
--- a/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 {
|
||||
return;
|
||||
}
|
||||
@@ -126,6 +126,14 @@ public class FarmBlock extends Block {
|
||||
return;
|
||||
}
|
||||
|
||||
+ // Purpur start
|
||||
+ if (world.purpurConfig.farmlandAlpha) {
|
||||
@@ -20,14 +20,14 @@ index da85fabd75e9bd5ebece7127ef5b512df16fe3ac..dc356bd0931af9bdab9ec71e3de66e88
|
||||
+ }
|
||||
+ }
|
||||
+ // Purpur end
|
||||
if (!CraftEventFactory.callEntityChangeBlockEvent(entity, pos, Blocks.DIRT.defaultBlockState())) {
|
||||
return;
|
||||
}
|
||||
if (!CraftEventFactory.callEntityChangeBlockEvent(entity, pos, Blocks.DIRT.defaultBlockState())) {
|
||||
return;
|
||||
}
|
||||
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
|
||||
+++ 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;
|
||||
@@ -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
|
||||
index 1808e1b01afa3041a54c9c9a7586d4d61960527a..5b523f3fa323378a8f96f58a9e252d2ec0d114a7 100644
|
||||
index 5677dc97ed83652f261100cf391883cfac7d16fe..4637d062b6a4c4d6de2ef54ec3cfdeb4344ff38e 100644
|
||||
--- a/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)) {
|
||||
int i = this.getAge();
|
||||
|
||||
@@ -17,7 +17,7 @@ index 1808e1b01afa3041a54c9c9a7586d4d61960527a..5b523f3fa323378a8f96f58a9e252d2e
|
||||
final ItemStack breedCopy = itemstack.copy(); // Paper - Fix EntityBreedEvent copying
|
||||
this.usePlayerItem(player, hand, itemstack);
|
||||
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);
|
||||
|
||||
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);
|
||||
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
|
||||
index df881431c8f32e2c12224b44084ca4d71edf9ab3..7bc1d9ed3a3e3679caff8da0a38a3de93fc9ebac 100644
|
||||
index 82025f6dd73366a259418c2039638a6dcc6d4fc1..85ae5c9c873dab19f897fe50b70c62e3c094bd42 100644
|
||||
--- a/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
|
||||
public final Map<Explosion.CacheKey, Float> explosionDensityCache = new HashMap<>(); // Paper - Optimize explosions
|
||||
@@ -183,6 +183,49 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl
|
||||
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
|
||||
|
||||
+ // Purpur start
|
||||
@@ -95,7 +95,7 @@ index df881431c8f32e2c12224b44084ca4d71edf9ab3..7bc1d9ed3a3e3679caff8da0a38a3de9
|
||||
public CraftWorld getWorld() {
|
||||
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.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
|
||||
@@ -104,20 +104,20 @@ index df881431c8f32e2c12224b44084ca4d71edf9ab3..7bc1d9ed3a3e3679caff8da0a38a3de9
|
||||
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
|
||||
index 1865aff6f5601fc24a86a41c84bebc282ff9b111..1f2af3b001ce000cd504a9a5dafb74f65b3b468e 100644
|
||||
index 0e05ebe9ee52033d86373bd2ad1c6f12503b3128..c02b8212cb56912e0eb244f47aa094c7879be89b 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -114,6 +114,7 @@ public class PurpurWorldConfig {
|
||||
public boolean milkCuresBadOmen = true;
|
||||
@@ -113,6 +113,7 @@ public class PurpurWorldConfig {
|
||||
public double tridentLoyaltyVoidReturnHeight = 0.0D;
|
||||
public boolean entitiesCanUsePortals = true;
|
||||
public int raidCooldownSeconds = 0;
|
||||
+ public int animalBreedingCooldownSeconds = 0;
|
||||
private void miscGameplayMechanicsSettings() {
|
||||
useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending);
|
||||
boatEjectPlayersOnLand = getBoolean("gameplay-mechanics.boat.eject-players-on-land", boatEjectPlayersOnLand);
|
||||
@@ -122,6 +123,7 @@ public class PurpurWorldConfig {
|
||||
milkCuresBadOmen = getBoolean("gameplay-mechanics.milk-cures-bad-omen", milkCuresBadOmen);
|
||||
@@ -120,6 +121,7 @@ public class PurpurWorldConfig {
|
||||
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);
|
||||
+ animalBreedingCooldownSeconds = getInt("gameplay-mechanics.animal-breeding-cooldown-seconds", animalBreedingCooldownSeconds);
|
||||
}
|
||||
@@ -22,10 +22,10 @@ index 0a608418f87b71d5d71706712e1f82da0d7e4d34..03e7ca83e4c28dfaa5b52bcb100bd542
|
||||
// CraftBukkit end
|
||||
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
|
||||
index 5b523f3fa323378a8f96f58a9e252d2ec0d114a7..91c1093ecef7c8917b69674ffc936b4ae71871e2 100644
|
||||
index 4637d062b6a4c4d6de2ef54ec3cfdeb4344ff38e..9987d28ea145f6d0126cb4ea22001e0922fb51bd 100644
|
||||
--- a/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
|
||||
public UUID loveCause;
|
||||
public ItemStack breedItem; // CraftBukkit - Add breedItem variable
|
||||
@@ -33,7 +33,7 @@ index 5b523f3fa323378a8f96f58a9e252d2ec0d114a7..91c1093ecef7c8917b69674ffc936b4a
|
||||
|
||||
protected Animal(EntityType<? extends Animal> type, Level 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);
|
||||
CriteriaTriggers.BRED_ANIMALS.trigger(entityplayer, this, entityanimal, entityageable);
|
||||
} // Paper
|
||||
@@ -47,10 +47,10 @@ index 5b523f3fa323378a8f96f58a9e252d2ec0d114a7..91c1093ecef7c8917b69674ffc936b4a
|
||||
entityanimal.resetLove();
|
||||
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
|
||||
index 536407b0cb28bd202f5235d1c3ba46e12899e11c..4b57756e938db00f5c6eba915c096110d68751eb 100644
|
||||
index d000acd339a1967d2c448ed8d66c4f1347f797fd..51b736979e43cd0e60a8ecaf2cf95511b9f4d858 100644
|
||||
--- a/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);
|
||||
}
|
||||
|
||||
@@ -63,10 +63,10 @@ index 536407b0cb28bd202f5235d1c3ba46e12899e11c..4b57756e938db00f5c6eba915c096110
|
||||
public int getRemainingPersistentAngerTime() {
|
||||
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
|
||||
index 89ad4ac9d20d1e07e4243b0e01a33eab0ec726a8..c8266b1a6b609ef92bd83dcb0e86e3cf47ccce6d 100644
|
||||
index 6c773af722ccb9e144d8858a013c120ecbbcfa4c..f79146925e99da08492e7b445006be003a56f340 100644
|
||||
--- a/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.SCALE).setBaseValue(this.level().purpurConfig.catScale);
|
||||
}
|
||||
@@ -77,12 +77,12 @@ index 89ad4ac9d20d1e07e4243b0e01a33eab0ec726a8..c8266b1a6b609ef92bd83dcb0e86e3cf
|
||||
+ }
|
||||
// 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
|
||||
index 10101c733154f9e9c725e60e565f735bda14bf5f..38f0fd9c126571d03ca6789a9b8273245168b8db 100644
|
||||
index 798a59046c3ac9a3838f7bcaf7bb21e738b76e44..16cc3fdf412bfb46e766b56d25a92bdf93cffeed 100644
|
||||
--- a/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
|
||||
|
||||
@@ -95,7 +95,7 @@ index 10101c733154f9e9c725e60e565f735bda14bf5f..38f0fd9c126571d03ca6789a9b827324
|
||||
protected void registerGoals() {
|
||||
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
|
||||
index c9f63f3716b37dbf5f4bb4c66b78ba0b97edd686..a52b94a4b9d3e65586fbfc2e3d977d40daf59ee5 100644
|
||||
index 7f7d68d09b070c24ba1567967c5d228c73fd14b9..f14707692217a753db3062a3bda7c08b71eb95e9 100644
|
||||
--- a/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 {
|
||||
@@ -111,10 +111,10 @@ index c9f63f3716b37dbf5f4bb4c66b78ba0b97edd686..a52b94a4b9d3e65586fbfc2e3d977d40
|
||||
protected void registerGoals() {
|
||||
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
|
||||
index 98e9ad371381350dc3bff7e2a88224a2812d6419..252df18c369d5e556632ed5a287dab04e4e9b58d 100644
|
||||
index 7fe665d9c623fd98a1fd4259a759297de46fe96e..56b2e83285f02581d03746246f370f18fc0f3c3f 100644
|
||||
--- a/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);
|
||||
}
|
||||
|
||||
@@ -126,7 +126,7 @@ index 98e9ad371381350dc3bff7e2a88224a2812d6419..252df18c369d5e556632ed5a287dab04
|
||||
@Override
|
||||
protected void defineSynchedData(SynchedEntityData.Builder 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);
|
||||
}
|
||||
|
||||
@@ -140,10 +140,10 @@ index 98e9ad371381350dc3bff7e2a88224a2812d6419..252df18c369d5e556632ed5a287dab04
|
||||
this.partner.resetLove();
|
||||
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
|
||||
index 41b52f128fbc174939a7f2d1cd937ab19432de25..22a2328fe5159c8fed635a62334a3f1028c346a5 100644
|
||||
index 2382b82d3d4c09e50e62dd353b4a1149ec9169b4..f3873e0ad6ca1f547450e44bba917241bbc80c20 100644
|
||||
--- a/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);
|
||||
}
|
||||
|
||||
@@ -156,10 +156,10 @@ index 41b52f128fbc174939a7f2d1cd937ab19432de25..22a2328fe5159c8fed635a62334a3f10
|
||||
public float getWalkTargetValue(BlockPos pos, LevelReader world) {
|
||||
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
|
||||
index 2ba70099352ff7ad0d561195565227938d68cef7..59ac7021389559cf95ef4746e6860bef29e3c0dc 100644
|
||||
index 33384f84cb2b9fe7f702040a1d7669e956bb90f4..b86dfe9a4545189a1ab37fab2f0ed1e63b98a8ca 100644
|
||||
--- a/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);
|
||||
}
|
||||
|
||||
@@ -172,10 +172,10 @@ index 2ba70099352ff7ad0d561195565227938d68cef7..59ac7021389559cf95ef4746e6860bef
|
||||
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
|
||||
index 27674bc17c1696d1e10c032d69fd29ee4295fd4e..a0075e23da3bbfe74105f420c347d3f67fda3970 100644
|
||||
index cf62e808687b81985073baa1be5773a2fe1cca69..3da181a7baa04e7852f7cdf7f12728ec448d707b 100644
|
||||
--- a/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();
|
||||
}
|
||||
|
||||
@@ -185,13 +185,13 @@ index 27674bc17c1696d1e10c032d69fd29ee4295fd4e..a0075e23da3bbfe74105f420c347d3f6
|
||||
+ }
|
||||
+
|
||||
@Override
|
||||
public boolean canTakeItem(ItemStack stack) {
|
||||
EquipmentSlot enumitemslot = this.getEquipmentSlotForItem(stack);
|
||||
protected boolean canDispenserEquipIntoSlot(EquipmentSlot slot) {
|
||||
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
|
||||
index f9d2d35a6e65580df74c6f27f605068980d3c12d..36eee2367689710a68be22209c550298b3e06879 100644
|
||||
index 47249c0f73c79b82be302d318eca10a92c8bceb8..e99e33fecba3d6506d704a0a27c578f1efeaf77b 100644
|
||||
--- a/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);
|
||||
}
|
||||
|
||||
@@ -202,12 +202,12 @@ index f9d2d35a6e65580df74c6f27f605068980d3c12d..36eee2367689710a68be22209c550298
|
||||
+
|
||||
@Nullable
|
||||
@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
|
||||
index 51ffdfa038cb1be279da71d691d54728731c186e..c9c31e2e523b6829776d6bcc3d0e183c1315a7a3 100644
|
||||
index 294545914dec0a06eadb6c2f139222b3f1a6f64c..73e288133ee12561053f9225121e55955a963127 100644
|
||||
--- a/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);
|
||||
}
|
||||
|
||||
@@ -220,7 +220,7 @@ index 51ffdfa038cb1be279da71d691d54728731c186e..c9c31e2e523b6829776d6bcc3d0e183c
|
||||
protected void registerGoals() {
|
||||
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
|
||||
index cd5856d3c5fdefb22f1ae146e5b64d9d4a64e07c..064d2066b2b987bfc2eb3e71c7fec39248492135 100644
|
||||
index 511d0559743655ed7b43a948fccc2621c906be02..472487c3cb8bdfb28625ffdf25f14d990737f8e4 100644
|
||||
--- a/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 {
|
||||
@@ -236,10 +236,10 @@ index cd5856d3c5fdefb22f1ae146e5b64d9d4a64e07c..064d2066b2b987bfc2eb3e71c7fec392
|
||||
@Override
|
||||
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
|
||||
index e06445c84aa632429c1647cabab73751f73d2e6c..7e509458134340bd05d15f5f51b6d1fce3206d6a 100644
|
||||
index b0cdc25f6592d44a3ad3fdf4d461e95887105257..629a0729cae629dea89fdf491afa9eed96e7a38a 100644
|
||||
--- a/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.SCALE).setBaseValue(this.level().purpurConfig.rabbitScale);
|
||||
}
|
||||
@@ -252,10 +252,10 @@ index e06445c84aa632429c1647cabab73751f73d2e6c..7e509458134340bd05d15f5f51b6d1fc
|
||||
|
||||
@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
|
||||
index a14db0ec9ebcde24d5b7340a08002eddc8ebd421..fb429dce94bfad6aba3c63a4694e7c8da772ee14 100644
|
||||
index bc975266fbf0348723dc04e29fd6bf8231b9cb87..a20fec03c2ee5019450825be119a017cfe0e4722 100644
|
||||
--- a/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);
|
||||
}
|
||||
|
||||
@@ -268,10 +268,10 @@ index a14db0ec9ebcde24d5b7340a08002eddc8ebd421..fb429dce94bfad6aba3c63a4694e7c8d
|
||||
protected void registerGoals() {
|
||||
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
|
||||
index 41d47141bfd77b17cbf163bffdfeb002135035ca..8f02a1b39db0581efb8ccd2c889f048bfd7b3e04 100644
|
||||
index 500676a78aedc525aca989ccd0380cd2cc1a711b..6b2e27e2f8aeccfc4d84c73be0fa5a04f5a962e2 100644
|
||||
--- a/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);
|
||||
}
|
||||
|
||||
@@ -284,10 +284,10 @@ index 41d47141bfd77b17cbf163bffdfeb002135035ca..8f02a1b39db0581efb8ccd2c889f048b
|
||||
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
|
||||
index 2985a7bcd4153798c347efa086120ed841770774..0647cee2d6a7c847ab923f819a092c9004eabc6c 100644
|
||||
index d082ca3ed17e8bbb27c1a971259720d43246b47f..bbdc5eb28c2be570866070d2d055a97721f46d94 100644
|
||||
--- a/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);
|
||||
}
|
||||
|
||||
@@ -300,7 +300,7 @@ index 2985a7bcd4153798c347efa086120ed841770774..0647cee2d6a7c847ab923f819a092c90
|
||||
protected void registerGoals() {
|
||||
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
|
||||
index 3cc0d4f7a8483fc5133ff3a3e42e0bb0f01bca3c..75c05990b9ee6fd429c24415be3b98e258638e89 100644
|
||||
index a7fdb54b1bda83e7a365447f2cb5701238ba6847..9ef53608f1608e88de7a7b3e96b43d8d2b4230ae 100644
|
||||
--- a/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 {
|
||||
@@ -316,26 +316,26 @@ index 3cc0d4f7a8483fc5133ff3a3e42e0bb0f01bca3c..75c05990b9ee6fd429c24415be3b98e2
|
||||
|
||||
@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
|
||||
index 909ee626d9ffb4c50423d84ff4c136f0440f9b21..e4c60befe0e642f6f93beab286af1373ceb4d4c8 100644
|
||||
index 8293679fbe5df093610c30094de389fb7ff79658..b8077a31ed67050a45b5668ea759cf386f085271 100644
|
||||
--- a/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);
|
||||
}
|
||||
|
||||
+
|
||||
+ @Override
|
||||
+ public int getPurpurBreedTime() {
|
||||
+ return this.level().purpurConfig.axolotlBreedingTicks;
|
||||
+ }
|
||||
+
|
||||
// Purpur end
|
||||
|
||||
@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
|
||||
index f71560b8183672640f00e00479e89237ac96558d..c567b946e013852acfae7f5a417a292706e218f4 100644
|
||||
index 9b9e7c9048f453d01ccf13ffdc7ee0f2151155a9..dbce71f45c008da883b6d244a06343d83ae25e7e 100644
|
||||
--- a/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() {
|
||||
return level().purpurConfig.useDismountsUnderwaterTag ? super.dismountsUnderwater() : !level().purpurConfig.camelRidableInWater;
|
||||
}
|
||||
@@ -347,10 +347,10 @@ index f71560b8183672640f00e00479e89237ac96558d..c567b946e013852acfae7f5a417a2927
|
||||
|
||||
@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
|
||||
index d3983b69bacd30b548b110feb1946cc55b83efb9..66dea405cd08c6b4ca3b5fe39fb83552bdd863b4 100644
|
||||
index e03598f985191350ce796dabd7641b8d0f6c081c..49915ec0ee5fb6e7d25b079e0410942d44aa1e33 100644
|
||||
--- a/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
|
||||
|
||||
@@ -362,10 +362,10 @@ index d3983b69bacd30b548b110feb1946cc55b83efb9..66dea405cd08c6b4ca3b5fe39fb83552
|
||||
protected Brain.Provider<Frog> brainProvider() {
|
||||
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
|
||||
index ca68973e851ae933015d5dbcbca7b48f872ddd07..2fd6ff9d9dc603020114cc6ab8eb28c9d09e448c 100644
|
||||
index ce697bce755f8ef147d189a8729c441aee5bbd21..54e880fb1c03a8b578fd1d2929bc174edb9918c5 100644
|
||||
--- a/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
|
||||
|
||||
@@ -378,10 +378,10 @@ index ca68973e851ae933015d5dbcbca7b48f872ddd07..2fd6ff9d9dc603020114cc6ab8eb28c9
|
||||
protected Brain.Provider<Goat> brainProvider() {
|
||||
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
|
||||
index b47a72ffb8b947cea5d4bc6ee37b824c4161be31..2990d50fd5209b272e0cfbd5dd633124048e8129 100644
|
||||
index 7362597d2ca9ea5375118d280e17b6c2719352a7..ba0b6c0154d72dd13acf9e1c0966e394d59943c7 100644
|
||||
--- a/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);
|
||||
}
|
||||
|
||||
@@ -394,10 +394,10 @@ index b47a72ffb8b947cea5d4bc6ee37b824c4161be31..2990d50fd5209b272e0cfbd5dd633124
|
||||
protected SoundEvent getAmbientSound() {
|
||||
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
|
||||
index 273365b9bca6e26760f45a794c1ebef1f9118c43..c4b22c52e335080e744a723622f455c0d8cf73e2 100644
|
||||
index b0392780b35866bf1903f49cb16c4ab79335882d..b9a406cd4e317c663a12d897b8cf1f4f6eeca662 100644
|
||||
--- a/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);
|
||||
}
|
||||
|
||||
@@ -410,10 +410,10 @@ index 273365b9bca6e26760f45a794c1ebef1f9118c43..c4b22c52e335080e744a723622f455c0
|
||||
protected void randomizeAttributes(RandomSource random) {
|
||||
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
|
||||
index 09c400ce06003139de84e22313354ed6199da761..b8a6ebd8301c4873060505c866dabb4e8772d5b5 100644
|
||||
index 7ff446ea2163d3b3b9f7fd826939dda21e07c99f..1a992d4c867ebe65b56be724fb54b9bc389cd8ec 100644
|
||||
--- a/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);
|
||||
}
|
||||
|
||||
@@ -426,10 +426,10 @@ index 09c400ce06003139de84e22313354ed6199da761..b8a6ebd8301c4873060505c866dabb4e
|
||||
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
|
||||
index 68fe99ea6d683dd18171d35764b4cb319433f6e0..8c52cbd47b90da51f3d5b84b8df4113fecc598df 100644
|
||||
index 7ec14013c9200f0fe4a565b2c923f92712aabc3c..9fbcc46ef7bc02ce5b265704545870d245e9b1f2 100644
|
||||
--- a/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);
|
||||
}
|
||||
|
||||
@@ -442,7 +442,7 @@ index 68fe99ea6d683dd18171d35764b4cb319433f6e0..8c52cbd47b90da51f3d5b84b8df4113f
|
||||
protected SoundEvent getAmbientSound() {
|
||||
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
|
||||
index 6180f750ed159e35d20bbaefc57bdd7293c657ec..5686bb0b537650e7d89292cef4e7e82bc7383748 100644
|
||||
index d3b9763aa745154fd796f725c2d5babfaaf22050..069783ed1bb4bbb7dece4b7883fe4d306a1b92bd 100644
|
||||
--- a/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 {
|
||||
@@ -458,10 +458,10 @@ index 6180f750ed159e35d20bbaefc57bdd7293c657ec..5686bb0b537650e7d89292cef4e7e82b
|
||||
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
|
||||
index af29ba1512bfda03718fb01ecff8d86b4e927611..d22f429f3de9c68a189087f23a483a561454cc54 100644
|
||||
index 10074787bbb3935685b9bd78c018309b2e468d87..845f75a48f07e7f25e71ed7b04a2f6b1dc87cbb8 100644
|
||||
--- a/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);
|
||||
}
|
||||
|
||||
@@ -474,7 +474,7 @@ index af29ba1512bfda03718fb01ecff8d86b4e927611..d22f429f3de9c68a189087f23a483a56
|
||||
public boolean isTraderLlama() {
|
||||
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
|
||||
index d2b3859f9c69e6d73fa859db858d38dd41fa35cd..fbad3b11223ee5dac4af15584e5dfd808a149545 100644
|
||||
index f2cb87234d8e60b9737c6dfbe3297857a9efc3a1..b7eda8855bc7162566975849f9bae7f182ad801c 100644
|
||||
--- a/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 {
|
||||
@@ -490,10 +490,10 @@ index d2b3859f9c69e6d73fa859db858d38dd41fa35cd..fbad3b11223ee5dac4af15584e5dfd80
|
||||
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
|
||||
index 818439c7163606af5a62fee4e18251456db4f6a1..d82b036b5a759574fe83027ec1000d7eb0455a28 100644
|
||||
index d08ff3f70ed3024dba7cf4405ba08d547ed5bf2d..464a16df15d8759d66f94ad080d1ea28b3f6474c 100644
|
||||
--- a/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.SCALE).setBaseValue(this.level().purpurConfig.snifferScale);
|
||||
}
|
||||
@@ -506,7 +506,7 @@ index 818439c7163606af5a62fee4e18251456db4f6a1..d82b036b5a759574fe83027ec1000d7e
|
||||
|
||||
@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
|
||||
index 964d60cd69e33bf77a415a702ef93fbe964eb8b3..8c233a90d07db7959b778a84c4ed0589a6a10dd4 100644
|
||||
index 6a45a62c578f033558c26935681f7de74dd98bac..0cc49b0a600a5e6fb4fc21e698e3a5fef5996df1 100644
|
||||
--- a/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 {
|
||||
@@ -518,16 +518,16 @@ index 964d60cd69e33bf77a415a702ef93fbe964eb8b3..8c233a90d07db7959b778a84c4ed0589
|
||||
+ 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();
|
||||
|
||||
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
|
||||
+++ 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
|
||||
+ public int getPurpurBreedTime() {
|
||||
@@ -538,10 +538,10 @@ index cd6428d0d61f68eafa8829fc21084586447cd61e..eb4a2e57ee9bddacef184e81167f8ee3
|
||||
public boolean canBeLeashed() {
|
||||
return true;
|
||||
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
|
||||
+++ 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 double armadilloMaxHealth = 12.0D;
|
||||
public double armadilloScale = 1.0D;
|
||||
@@ -569,7 +569,7 @@ index 1f2af3b001ce000cd504a9a5dafb74f65b3b468e..eefd829f617f2af60b9846f2fe800367
|
||||
}
|
||||
|
||||
public boolean batRidable = false;
|
||||
@@ -522,6 +526,7 @@ public class PurpurWorldConfig {
|
||||
@@ -520,6 +524,7 @@ public class PurpurWorldConfig {
|
||||
public double beeMaxY = 320D;
|
||||
public double beeMaxHealth = 10.0D;
|
||||
public double beeScale = 1.0D;
|
||||
@@ -577,7 +577,7 @@ index 1f2af3b001ce000cd504a9a5dafb74f65b3b468e..eefd829f617f2af60b9846f2fe800367
|
||||
private void beeSettings() {
|
||||
beeRidable = getBoolean("mobs.bee.ridable", beeRidable);
|
||||
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);
|
||||
beeScale = Mth.clamp(getDouble("mobs.bee.attributes.scale", beeScale), 0.0625D, 16.0D);
|
||||
@@ -585,7 +585,7 @@ index 1f2af3b001ce000cd504a9a5dafb74f65b3b468e..eefd829f617f2af60b9846f2fe800367
|
||||
}
|
||||
|
||||
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 camelMovementSpeedMin = 0.09D;
|
||||
public double camelMovementSpeedMax = 0.09D;
|
||||
@@ -593,7 +593,7 @@ index 1f2af3b001ce000cd504a9a5dafb74f65b3b468e..eefd829f617f2af60b9846f2fe800367
|
||||
private void camelSettings() {
|
||||
camelRidableInWater = getBoolean("mobs.camel.ridable-in-water", camelRidableInWater);
|
||||
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);
|
||||
camelMovementSpeedMin = getDouble("mobs.camel.attributes.movement_speed.min", camelMovementSpeedMin);
|
||||
camelMovementSpeedMax = getDouble("mobs.camel.attributes.movement_speed.max", camelMovementSpeedMax);
|
||||
@@ -601,7 +601,7 @@ index 1f2af3b001ce000cd504a9a5dafb74f65b3b468e..eefd829f617f2af60b9846f2fe800367
|
||||
}
|
||||
|
||||
public boolean catRidable = false;
|
||||
@@ -594,6 +602,7 @@ public class PurpurWorldConfig {
|
||||
@@ -592,6 +600,7 @@ public class PurpurWorldConfig {
|
||||
public int catSpawnDelay = 1200;
|
||||
public int catSpawnSwampHutScanRange = 16;
|
||||
public int catSpawnVillageScanRange = 48;
|
||||
@@ -609,7 +609,7 @@ index 1f2af3b001ce000cd504a9a5dafb74f65b3b468e..eefd829f617f2af60b9846f2fe800367
|
||||
private void catSettings() {
|
||||
catRidable = getBoolean("mobs.cat.ridable", catRidable);
|
||||
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);
|
||||
catSpawnSwampHutScanRange = getInt("mobs.cat.scan-range-for-other-cats.swamp-hut", catSpawnSwampHutScanRange);
|
||||
catSpawnVillageScanRange = getInt("mobs.cat.scan-range-for-other-cats.village", catSpawnVillageScanRange);
|
||||
@@ -617,7 +617,7 @@ index 1f2af3b001ce000cd504a9a5dafb74f65b3b468e..eefd829f617f2af60b9846f2fe800367
|
||||
}
|
||||
|
||||
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 chickenScale = 1.0D;
|
||||
public boolean chickenRetaliate = false;
|
||||
@@ -625,7 +625,7 @@ index 1f2af3b001ce000cd504a9a5dafb74f65b3b468e..eefd829f617f2af60b9846f2fe800367
|
||||
private void chickenSettings() {
|
||||
chickenRidable = getBoolean("mobs.chicken.ridable", chickenRidable);
|
||||
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);
|
||||
chickenScale = Mth.clamp(getDouble("mobs.chicken.attributes.scale", chickenScale), 0.0625D, 16.0D);
|
||||
chickenRetaliate = getBoolean("mobs.chicken.retaliate", chickenRetaliate);
|
||||
@@ -633,7 +633,7 @@ index 1f2af3b001ce000cd504a9a5dafb74f65b3b468e..eefd829f617f2af60b9846f2fe800367
|
||||
}
|
||||
|
||||
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 cowScale = 1.0D;
|
||||
public int cowFeedMushrooms = 0;
|
||||
@@ -641,7 +641,7 @@ index 1f2af3b001ce000cd504a9a5dafb74f65b3b468e..eefd829f617f2af60b9846f2fe800367
|
||||
private void cowSettings() {
|
||||
cowRidable = getBoolean("mobs.cow.ridable", cowRidable);
|
||||
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);
|
||||
cowScale = Mth.clamp(getDouble("mobs.cow.attributes.scale", cowScale), 0.0625D, 16.0D);
|
||||
cowFeedMushrooms = getInt("mobs.cow.feed-mushrooms-for-mooshroom", cowFeedMushrooms);
|
||||
@@ -649,7 +649,7 @@ index 1f2af3b001ce000cd504a9a5dafb74f65b3b468e..eefd829f617f2af60b9846f2fe800367
|
||||
}
|
||||
|
||||
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 donkeyMovementSpeedMin = 0.175D;
|
||||
public double donkeyMovementSpeedMax = 0.175D;
|
||||
@@ -657,7 +657,7 @@ index 1f2af3b001ce000cd504a9a5dafb74f65b3b468e..eefd829f617f2af60b9846f2fe800367
|
||||
private void donkeySettings() {
|
||||
donkeyRidableInWater = getBoolean("mobs.donkey.ridable-in-water", donkeyRidableInWater);
|
||||
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);
|
||||
donkeyMovementSpeedMin = getDouble("mobs.donkey.attributes.movement_speed.min", donkeyMovementSpeedMin);
|
||||
donkeyMovementSpeedMax = getDouble("mobs.donkey.attributes.movement_speed.max", donkeyMovementSpeedMax);
|
||||
@@ -665,7 +665,7 @@ index 1f2af3b001ce000cd504a9a5dafb74f65b3b468e..eefd829f617f2af60b9846f2fe800367
|
||||
}
|
||||
|
||||
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 foxScale = 1.0D;
|
||||
public boolean foxTypeChangesWithTulips = false;
|
||||
@@ -673,7 +673,7 @@ index 1f2af3b001ce000cd504a9a5dafb74f65b3b468e..eefd829f617f2af60b9846f2fe800367
|
||||
private void foxSettings() {
|
||||
foxRidable = getBoolean("mobs.fox.ridable", foxRidable);
|
||||
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);
|
||||
foxScale = Mth.clamp(getDouble("mobs.fox.attributes.scale", foxScale), 0.0625D, 16.0D);
|
||||
foxTypeChangesWithTulips = getBoolean("mobs.fox.tulips-change-type", foxTypeChangesWithTulips);
|
||||
@@ -694,7 +694,7 @@ index 1f2af3b001ce000cd504a9a5dafb74f65b3b468e..eefd829f617f2af60b9846f2fe800367
|
||||
}
|
||||
|
||||
public boolean ghastRidable = false;
|
||||
@@ -979,12 +999,14 @@ public class PurpurWorldConfig {
|
||||
@@ -977,12 +997,14 @@ public class PurpurWorldConfig {
|
||||
public boolean goatControllable = true;
|
||||
public double goatMaxHealth = 10.0D;
|
||||
public double goatScale = 1.0D;
|
||||
@@ -709,7 +709,7 @@ index 1f2af3b001ce000cd504a9a5dafb74f65b3b468e..eefd829f617f2af60b9846f2fe800367
|
||||
}
|
||||
|
||||
public boolean guardianRidable = false;
|
||||
@@ -1008,6 +1030,7 @@ public class PurpurWorldConfig {
|
||||
@@ -1006,6 +1028,7 @@ public class PurpurWorldConfig {
|
||||
public boolean hoglinControllable = true;
|
||||
public double hoglinMaxHealth = 40.0D;
|
||||
public double hoglinScale = 1.0D;
|
||||
@@ -717,7 +717,7 @@ index 1f2af3b001ce000cd504a9a5dafb74f65b3b468e..eefd829f617f2af60b9846f2fe800367
|
||||
private void hoglinSettings() {
|
||||
hoglinRidable = getBoolean("mobs.hoglin.ridable", hoglinRidable);
|
||||
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);
|
||||
hoglinScale = Mth.clamp(getDouble("mobs.hoglin.attributes.scale", hoglinScale), 0.0625D, 16.0D);
|
||||
@@ -725,7 +725,7 @@ index 1f2af3b001ce000cd504a9a5dafb74f65b3b468e..eefd829f617f2af60b9846f2fe800367
|
||||
}
|
||||
|
||||
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 horseMovementSpeedMin = 0.1125D;
|
||||
public double horseMovementSpeedMax = 0.3375D;
|
||||
@@ -733,7 +733,7 @@ index 1f2af3b001ce000cd504a9a5dafb74f65b3b468e..eefd829f617f2af60b9846f2fe800367
|
||||
private void horseSettings() {
|
||||
horseRidableInWater = getBoolean("mobs.horse.ridable-in-water", horseRidableInWater);
|
||||
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);
|
||||
horseMovementSpeedMin = getDouble("mobs.horse.attributes.movement_speed.min", horseMovementSpeedMin);
|
||||
horseMovementSpeedMax = getDouble("mobs.horse.attributes.movement_speed.max", horseMovementSpeedMax);
|
||||
@@ -741,7 +741,7 @@ index 1f2af3b001ce000cd504a9a5dafb74f65b3b468e..eefd829f617f2af60b9846f2fe800367
|
||||
}
|
||||
|
||||
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 llamaMovementSpeedMin = 0.175D;
|
||||
public double llamaMovementSpeedMax = 0.175D;
|
||||
@@ -749,7 +749,7 @@ index 1f2af3b001ce000cd504a9a5dafb74f65b3b468e..eefd829f617f2af60b9846f2fe800367
|
||||
private void llamaSettings() {
|
||||
llamaRidable = getBoolean("mobs.llama.ridable", llamaRidable);
|
||||
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);
|
||||
llamaMovementSpeedMin = getDouble("mobs.llama.attributes.movement_speed.min", llamaMovementSpeedMin);
|
||||
llamaMovementSpeedMax = getDouble("mobs.llama.attributes.movement_speed.max", llamaMovementSpeedMax);
|
||||
@@ -757,7 +757,7 @@ index 1f2af3b001ce000cd504a9a5dafb74f65b3b468e..eefd829f617f2af60b9846f2fe800367
|
||||
}
|
||||
|
||||
public boolean magmaCubeRidable = false;
|
||||
@@ -1172,6 +1200,7 @@ public class PurpurWorldConfig {
|
||||
@@ -1170,6 +1198,7 @@ public class PurpurWorldConfig {
|
||||
public boolean mooshroomControllable = true;
|
||||
public double mooshroomMaxHealth = 10.0D;
|
||||
public double mooshroomScale = 1.0D;
|
||||
@@ -765,7 +765,7 @@ index 1f2af3b001ce000cd504a9a5dafb74f65b3b468e..eefd829f617f2af60b9846f2fe800367
|
||||
private void mooshroomSettings() {
|
||||
mooshroomRidable = getBoolean("mobs.mooshroom.ridable", mooshroomRidable);
|
||||
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);
|
||||
mooshroomScale = Mth.clamp(getDouble("mobs.mooshroom.attributes.scale", mooshroomScale), 0.0625D, 16.0D);
|
||||
@@ -773,7 +773,7 @@ index 1f2af3b001ce000cd504a9a5dafb74f65b3b468e..eefd829f617f2af60b9846f2fe800367
|
||||
}
|
||||
|
||||
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 muleMovementSpeedMin = 0.175D;
|
||||
public double muleMovementSpeedMax = 0.175D;
|
||||
@@ -781,7 +781,7 @@ index 1f2af3b001ce000cd504a9a5dafb74f65b3b468e..eefd829f617f2af60b9846f2fe800367
|
||||
private void muleSettings() {
|
||||
muleRidableInWater = getBoolean("mobs.mule.ridable-in-water", muleRidableInWater);
|
||||
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);
|
||||
muleMovementSpeedMin = getDouble("mobs.mule.attributes.movement_speed.min", muleMovementSpeedMin);
|
||||
muleMovementSpeedMax = getDouble("mobs.mule.attributes.movement_speed.max", muleMovementSpeedMax);
|
||||
@@ -789,7 +789,7 @@ index 1f2af3b001ce000cd504a9a5dafb74f65b3b468e..eefd829f617f2af60b9846f2fe800367
|
||||
}
|
||||
|
||||
public boolean ocelotRidable = false;
|
||||
@@ -1214,6 +1246,7 @@ public class PurpurWorldConfig {
|
||||
@@ -1212,6 +1244,7 @@ public class PurpurWorldConfig {
|
||||
public boolean ocelotControllable = true;
|
||||
public double ocelotMaxHealth = 10.0D;
|
||||
public double ocelotScale = 1.0D;
|
||||
@@ -797,7 +797,7 @@ index 1f2af3b001ce000cd504a9a5dafb74f65b3b468e..eefd829f617f2af60b9846f2fe800367
|
||||
private void ocelotSettings() {
|
||||
ocelotRidable = getBoolean("mobs.ocelot.ridable", ocelotRidable);
|
||||
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);
|
||||
ocelotScale = Mth.clamp(getDouble("mobs.ocelot.attributes.scale", ocelotScale), 0.0625D, 16.0D);
|
||||
@@ -805,7 +805,7 @@ index 1f2af3b001ce000cd504a9a5dafb74f65b3b468e..eefd829f617f2af60b9846f2fe800367
|
||||
}
|
||||
|
||||
public boolean pandaRidable = false;
|
||||
@@ -1232,6 +1266,7 @@ public class PurpurWorldConfig {
|
||||
@@ -1230,6 +1264,7 @@ public class PurpurWorldConfig {
|
||||
public boolean pandaControllable = true;
|
||||
public double pandaMaxHealth = 20.0D;
|
||||
public double pandaScale = 1.0D;
|
||||
@@ -813,7 +813,7 @@ index 1f2af3b001ce000cd504a9a5dafb74f65b3b468e..eefd829f617f2af60b9846f2fe800367
|
||||
private void pandaSettings() {
|
||||
pandaRidable = getBoolean("mobs.panda.ridable", pandaRidable);
|
||||
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);
|
||||
pandaScale = Mth.clamp(getDouble("mobs.panda.attributes.scale", pandaScale), 0.0625D, 16.0D);
|
||||
@@ -821,7 +821,7 @@ index 1f2af3b001ce000cd504a9a5dafb74f65b3b468e..eefd829f617f2af60b9846f2fe800367
|
||||
}
|
||||
|
||||
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 pigScale = 1.0D;
|
||||
public boolean pigGiveSaddleBack = false;
|
||||
@@ -829,7 +829,7 @@ index 1f2af3b001ce000cd504a9a5dafb74f65b3b468e..eefd829f617f2af60b9846f2fe800367
|
||||
private void pigSettings() {
|
||||
pigRidable = getBoolean("mobs.pig.ridable", pigRidable);
|
||||
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);
|
||||
pigScale = Mth.clamp(getDouble("mobs.pig.attributes.scale", pigScale), 0.0625D, 16.0D);
|
||||
pigGiveSaddleBack = getBoolean("mobs.pig.give-saddle-back", pigGiveSaddleBack);
|
||||
@@ -837,7 +837,7 @@ index 1f2af3b001ce000cd504a9a5dafb74f65b3b468e..eefd829f617f2af60b9846f2fe800367
|
||||
}
|
||||
|
||||
public boolean piglinRidable = false;
|
||||
@@ -1404,6 +1442,7 @@ public class PurpurWorldConfig {
|
||||
@@ -1402,6 +1440,7 @@ public class PurpurWorldConfig {
|
||||
public double polarBearScale = 1.0D;
|
||||
public String polarBearBreedableItemString = "";
|
||||
public Item polarBearBreedableItem = null;
|
||||
@@ -845,7 +845,7 @@ index 1f2af3b001ce000cd504a9a5dafb74f65b3b468e..eefd829f617f2af60b9846f2fe800367
|
||||
private void polarBearSettings() {
|
||||
polarBearRidable = getBoolean("mobs.polar_bear.ridable", polarBearRidable);
|
||||
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);
|
||||
Item item = BuiltInRegistries.ITEM.get(ResourceLocation.parse(polarBearBreedableItemString));
|
||||
if (item != Items.AIR) polarBearBreedableItem = item;
|
||||
@@ -853,7 +853,7 @@ index 1f2af3b001ce000cd504a9a5dafb74f65b3b468e..eefd829f617f2af60b9846f2fe800367
|
||||
}
|
||||
|
||||
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 rabbitNaturalToast = 0.0D;
|
||||
public double rabbitNaturalKiller = 0.0D;
|
||||
@@ -861,7 +861,7 @@ index 1f2af3b001ce000cd504a9a5dafb74f65b3b468e..eefd829f617f2af60b9846f2fe800367
|
||||
private void rabbitSettings() {
|
||||
rabbitRidable = getBoolean("mobs.rabbit.ridable", rabbitRidable);
|
||||
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);
|
||||
rabbitNaturalToast = getDouble("mobs.rabbit.spawn-toast-chance", rabbitNaturalToast);
|
||||
rabbitNaturalKiller = getDouble("mobs.rabbit.spawn-killer-rabbit-chance", rabbitNaturalKiller);
|
||||
@@ -869,7 +869,7 @@ index 1f2af3b001ce000cd504a9a5dafb74f65b3b468e..eefd829f617f2af60b9846f2fe800367
|
||||
}
|
||||
|
||||
public boolean ravagerRidable = false;
|
||||
@@ -1497,6 +1539,7 @@ public class PurpurWorldConfig {
|
||||
@@ -1495,6 +1537,7 @@ public class PurpurWorldConfig {
|
||||
public boolean sheepControllable = true;
|
||||
public double sheepMaxHealth = 8.0D;
|
||||
public double sheepScale = 1.0D;
|
||||
@@ -877,7 +877,7 @@ index 1f2af3b001ce000cd504a9a5dafb74f65b3b468e..eefd829f617f2af60b9846f2fe800367
|
||||
private void sheepSettings() {
|
||||
sheepRidable = getBoolean("mobs.sheep.ridable", sheepRidable);
|
||||
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);
|
||||
sheepScale = Mth.clamp(getDouble("mobs.sheep.attributes.scale", sheepScale), 0.0625D, 16.0D);
|
||||
@@ -885,7 +885,7 @@ index 1f2af3b001ce000cd504a9a5dafb74f65b3b468e..eefd829f617f2af60b9846f2fe800367
|
||||
}
|
||||
|
||||
public boolean shulkerRidable = false;
|
||||
@@ -1644,12 +1688,14 @@ public class PurpurWorldConfig {
|
||||
@@ -1642,12 +1686,14 @@ public class PurpurWorldConfig {
|
||||
public boolean snifferControllable = true;
|
||||
public double snifferMaxHealth = 14.0D;
|
||||
public double snifferScale = 1.0D;
|
||||
@@ -900,7 +900,7 @@ index 1f2af3b001ce000cd504a9a5dafb74f65b3b468e..eefd829f617f2af60b9846f2fe800367
|
||||
}
|
||||
|
||||
public boolean squidRidable = false;
|
||||
@@ -1715,6 +1761,7 @@ public class PurpurWorldConfig {
|
||||
@@ -1713,6 +1759,7 @@ public class PurpurWorldConfig {
|
||||
public boolean striderControllable = true;
|
||||
public double striderMaxHealth = 20.0D;
|
||||
public double striderScale = 1.0D;
|
||||
@@ -908,7 +908,7 @@ index 1f2af3b001ce000cd504a9a5dafb74f65b3b468e..eefd829f617f2af60b9846f2fe800367
|
||||
private void striderSettings() {
|
||||
striderRidable = getBoolean("mobs.strider.ridable", striderRidable);
|
||||
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);
|
||||
striderScale = Mth.clamp(getDouble("mobs.strider.attributes.scale", striderScale), 0.0625D, 16.0D);
|
||||
@@ -916,7 +916,7 @@ index 1f2af3b001ce000cd504a9a5dafb74f65b3b468e..eefd829f617f2af60b9846f2fe800367
|
||||
}
|
||||
|
||||
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 traderLlamaMovementSpeedMin = 0.175D;
|
||||
public double traderLlamaMovementSpeedMax = 0.175D;
|
||||
@@ -924,7 +924,7 @@ index 1f2af3b001ce000cd504a9a5dafb74f65b3b468e..eefd829f617f2af60b9846f2fe800367
|
||||
private void traderLlamaSettings() {
|
||||
traderLlamaRidable = getBoolean("mobs.trader_llama.ridable", traderLlamaRidable);
|
||||
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);
|
||||
traderLlamaMovementSpeedMin = getDouble("mobs.trader_llama.attributes.movement_speed.min", traderLlamaMovementSpeedMin);
|
||||
traderLlamaMovementSpeedMax = getDouble("mobs.trader_llama.attributes.movement_speed.max", traderLlamaMovementSpeedMax);
|
||||
@@ -932,7 +932,7 @@ index 1f2af3b001ce000cd504a9a5dafb74f65b3b468e..eefd829f617f2af60b9846f2fe800367
|
||||
}
|
||||
|
||||
public boolean tropicalFishRidable = false;
|
||||
@@ -1786,6 +1836,7 @@ public class PurpurWorldConfig {
|
||||
@@ -1784,6 +1834,7 @@ public class PurpurWorldConfig {
|
||||
public boolean turtleControllable = true;
|
||||
public double turtleMaxHealth = 30.0D;
|
||||
public double turtleScale = 1.0D;
|
||||
@@ -940,7 +940,7 @@ index 1f2af3b001ce000cd504a9a5dafb74f65b3b468e..eefd829f617f2af60b9846f2fe800367
|
||||
private void turtleSettings() {
|
||||
turtleRidable = getBoolean("mobs.turtle.ridable", turtleRidable);
|
||||
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);
|
||||
turtleScale = Mth.clamp(getDouble("mobs.turtle.attributes.scale", turtleScale), 0.0625D, 16.0D);
|
||||
@@ -948,7 +948,7 @@ index 1f2af3b001ce000cd504a9a5dafb74f65b3b468e..eefd829f617f2af60b9846f2fe800367
|
||||
}
|
||||
|
||||
public boolean vexRidable = false;
|
||||
@@ -1827,6 +1879,7 @@ public class PurpurWorldConfig {
|
||||
@@ -1825,6 +1877,7 @@ public class PurpurWorldConfig {
|
||||
public boolean villagerFollowEmeraldBlock = false;
|
||||
public boolean villagerCanBeLeashed = false;
|
||||
public boolean villagerCanBreed = true;
|
||||
@@ -956,7 +956,7 @@ index 1f2af3b001ce000cd504a9a5dafb74f65b3b468e..eefd829f617f2af60b9846f2fe800367
|
||||
private void villagerSettings() {
|
||||
villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable);
|
||||
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);
|
||||
villagerCanBeLeashed = getBoolean("mobs.villager.can-be-leashed", villagerCanBeLeashed);
|
||||
villagerCanBreed = getBoolean("mobs.villager.can-breed", villagerCanBreed);
|
||||
@@ -964,7 +964,7 @@ index 1f2af3b001ce000cd504a9a5dafb74f65b3b468e..eefd829f617f2af60b9846f2fe800367
|
||||
}
|
||||
|
||||
public boolean vindicatorRidable = false;
|
||||
@@ -1963,6 +2017,7 @@ public class PurpurWorldConfig {
|
||||
@@ -1961,6 +2015,7 @@ public class PurpurWorldConfig {
|
||||
public boolean wolfControllable = true;
|
||||
public double wolfMaxHealth = 8.0D;
|
||||
public double wolfScale = 1.0D;
|
||||
@@ -972,7 +972,7 @@ index 1f2af3b001ce000cd504a9a5dafb74f65b3b468e..eefd829f617f2af60b9846f2fe800367
|
||||
private void wolfSettings() {
|
||||
wolfRidable = getBoolean("mobs.wolf.ridable", wolfRidable);
|
||||
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);
|
||||
wolfScale = Mth.clamp(getDouble("mobs.wolf.attributes.scale", wolfScale), 0.0625D, 16.0D);
|
||||
@@ -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
|
||||
index 8d360dc542099af90f0c11839c12910859f0402b..4d6df7ec1bffbd30d4aac906f393ead0dfd8f69d 100644
|
||||
index edb0cd90e28016c44b0aaf5c9ed5d7bdbced5295..12ff824ffa81ea45f76337ec2b6d80b01047b698 100644
|
||||
--- a/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
|
||||
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
|
||||
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
|
||||
index 5b7245cd99593ee90e17c97e0104f3aba9ae05ea..cf78531b193ba56991ccb0c4f62844208e4a5706 100644
|
||||
index d6f835320014c07f9d174d05929ed8cc16a10c10..9992a4e791495baae07645444f6374f083c56552 100644
|
||||
--- a/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) {
|
||||
- this.spawnAtLocation(this.getFrameItemStack());
|
||||
if (dropSelf) {
|
||||
- this.spawnAtLocation(world, this.getFrameItemStack());
|
||||
+ // Purpur start
|
||||
+ final ItemStack itemFrame = this.getFrameItemStack();
|
||||
+ if (!this.level().purpurConfig.persistentDroppableEntityDisplayNames) {
|
||||
+ itemFrame.set(DataComponents.CUSTOM_NAME, null);
|
||||
+ }
|
||||
+ this.spawnAtLocation(itemFrame);
|
||||
+ this.spawnAtLocation(world, itemFrame);
|
||||
+ // Purpur end
|
||||
}
|
||||
|
||||
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
|
||||
index e86fdf5d6853b7bddfe19d6e5d41d3dec0c25f23..f45567aa7695da68f92809a6c208eb515c2f838a 100644
|
||||
index fd0e78a2318e3950d011c17358245e107b38154a..0fcab828e81176323cbdf16c0ec714d9a2846ae5 100644
|
||||
--- a/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
|
||||
+ final ItemStack painting = new ItemStack(Items.PAINTING);
|
||||
+ final ItemStack painting = new ItemStack((ItemLike) Items.PAINTING);
|
||||
+ if (!this.level().purpurConfig.persistentDroppableEntityDisplayNames) {
|
||||
+ painting.set(net.minecraft.core.component.DataComponents.CUSTOM_NAME, null);
|
||||
+ }
|
||||
+ this.spawnAtLocation(painting);
|
||||
+ this.spawnAtLocation(world, painting);
|
||||
+ // 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
|
||||
index 7f7abef3c5b7ad124c5c1dda02173bc5f70c9506..5f3d58099d83fef4a9230e680b5e199d00eb7c7b 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/vehicle/Boat.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/vehicle/Boat.java
|
||||
@@ -1017,7 +1017,13 @@ public class Boat extends VehicleEntity implements Leashable, VariantHolder<Boat
|
||||
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 e523f651e8776a89ffba015921d708f569fad8f3..56c265940208bc94f531a5af94f564b59f35ebf3 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/vehicle/AbstractBoat.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/vehicle/AbstractBoat.java
|
||||
@@ -930,7 +930,13 @@ public abstract class AbstractBoat extends VehicleEntity implements Leashable {
|
||||
|
||||
@Override
|
||||
public ItemStack getPickResult() {
|
||||
- return new ItemStack(this.getDropItem());
|
||||
public final ItemStack getPickResult() {
|
||||
- return new ItemStack((ItemLike) this.dropItem.get());
|
||||
+ // Purpur start
|
||||
+ final ItemStack boat = new ItemStack(this.getDropItem());
|
||||
+ final ItemStack boat = new ItemStack((ItemLike) this.dropItem.get());
|
||||
+ if (!this.level().purpurConfig.persistentDroppableEntityDisplayNames) {
|
||||
+ boat.set(net.minecraft.core.component.DataComponents.CUSTOM_NAME, null);
|
||||
+ }
|
||||
@@ -73,9 +73,9 @@ index 7f7abef3c5b7ad124c5c1dda02173bc5f70c9506..5f3d58099d83fef4a9230e680b5e199d
|
||||
+ // 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
|
||||
index 066a6e5ed2632a55324ec0d10f2f8a6bf3f30a0f..1921ecf2c0a9f18c93d207692fb9c2db58c9358f 100644
|
||||
index cb4baebe22eeab17aed67a5ecc506b932fe2230b..c1a6734cc08de1c9fc413b1fa81a199ac9547ec2 100644
|
||||
--- a/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 {
|
||||
@@ -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);
|
||||
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
|
||||
index eb74d45ad458b80cf8455297c3bc550186adaea3..ef01856c487e4ab982996e01537618233592ac32 100644
|
||||
index e51ffd6c5047ee907a58f3029f0ea7fc66aedfa7..78d41d57df9cb61b295f1f54db1e1d62c13db701 100644
|
||||
--- a/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 {
|
||||
|
||||
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);
|
||||
@@ -71,6 +71,11 @@ public class BoatItem extends Item {
|
||||
return InteractionResult.FAIL;
|
||||
} 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
|
||||
index d8a63ac5444eff8e3decb2f4addc2decb8a5d648..41cc9229108aa8e4f5655dfe590ff414a16b1444 100644
|
||||
index cdc17ad948d8ac5de62f14b1a561433d33211f32..44a7cee7df2927a923455e8cedaab59307b42506 100644
|
||||
--- a/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()) {
|
||||
EntityType.updateCustomEntityTag(world, entityhuman, (Entity) object, customdata);
|
||||
@@ -126,7 +126,7 @@ index d8a63ac5444eff8e3decb2f4addc2decb8a5d648..41cc9229108aa8e4f5655dfe590ff414
|
||||
|
||||
if (((HangingEntity) object).survives()) {
|
||||
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
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -98,8 +98,10 @@ public class PurpurWorldConfig {
|
||||
@@ -140,19 +140,20 @@ index eefd829f617f2af60b9846f2fe8003676a997c88..cc95e8ba5d847348afdd4263c9e84554
|
||||
}
|
||||
|
||||
public boolean arrowMovementResetsDespawnCounter = true;
|
||||
@@ -112,6 +114,7 @@ public class PurpurWorldConfig {
|
||||
public boolean disableDropsOnCrammingDeath = false;
|
||||
@@ -114,6 +116,7 @@ public class PurpurWorldConfig {
|
||||
public boolean entitiesCanUsePortals = true;
|
||||
public boolean milkCuresBadOmen = true;
|
||||
+ public boolean persistentDroppableEntityDisplayNames = true;
|
||||
public double tridentLoyaltyVoidReturnHeight = 0.0D;
|
||||
public int raidCooldownSeconds = 0;
|
||||
public int animalBreedingCooldownSeconds = 0;
|
||||
@@ -121,6 +124,7 @@ public class PurpurWorldConfig {
|
||||
disableDropsOnCrammingDeath = getBoolean("gameplay-mechanics.disable-drops-on-cramming-death", disableDropsOnCrammingDeath);
|
||||
+ public boolean persistentDroppableEntityDisplayNames = true;
|
||||
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);
|
||||
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);
|
||||
animalBreedingCooldownSeconds = getInt("gameplay-mechanics.animal-breeding-cooldown-seconds", animalBreedingCooldownSeconds);
|
||||
+ persistentDroppableEntityDisplayNames = getBoolean("gameplay-mechanics.persistent-droppable-entity-display-names", persistentDroppableEntityDisplayNames);
|
||||
+
|
||||
}
|
||||
|
||||
public int daytimeTicks = 12000;
|
||||
@@ -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;
|
||||
Reference in New Issue
Block a user