mirror of
https://github.com/PurpurMC/Purpur.git
synced 2026-02-17 08:27:43 +01:00
130/310
This commit is contained in:
@@ -2,7 +2,7 @@ group = org.purpurmc.purpur
|
||||
version = 1.20-R0.1-SNAPSHOT
|
||||
|
||||
mcVersion = 1.20
|
||||
paperCommit = f0aea8123e4a6d3c854f7147c3aff150b79b4f63
|
||||
paperCommit = 3fe0e32495a0a95a92a203321a3f414e9bb5a55f
|
||||
|
||||
org.gradle.caching = true
|
||||
org.gradle.parallel = true
|
||||
|
||||
@@ -18,7 +18,7 @@ index 9658611850a266ee1acf347d3f90cf4922a89d3c..7e3b64dbd6df0b4d3556f7666c632a63
|
||||
this.spawnLingeringCloud();
|
||||
} else {
|
||||
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 81b3f96b1fe8d592cac95e2deff8395edb6d589c..d1602c71f96d817d212582737dc6ec5db1c4f79a 100644
|
||||
index 81b3f96b1fe8d592cac95e2deff8395edb6d589c..7eefdbe71588dbfcfb47bbb944e051f893bf790c 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java
|
||||
@@ -510,6 +510,7 @@ public class EnderMan extends Monster implements NeutralMob {
|
||||
@@ -29,16 +29,14 @@ index 81b3f96b1fe8d592cac95e2deff8395edb6d589c..d1602c71f96d817d212582737dc6ec5d
|
||||
return this.enderman.getCarriedBlock() == null ? false : (!this.enderman.level().getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING) ? false : this.enderman.getRandom().nextInt(reducedTickDelay(2000)) == 0);
|
||||
}
|
||||
|
||||
@@ -557,7 +558,8 @@ public class EnderMan extends Monster implements NeutralMob {
|
||||
@@ -557,6 +558,7 @@ public class EnderMan extends Monster implements NeutralMob {
|
||||
|
||||
@Override
|
||||
public boolean canUse() {
|
||||
- return this.enderman.getCarriedBlock() != null ? false : (!this.enderman.level().getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING) ? false : this.enderman.getRandom().nextInt(reducedTickDelay(20)) == 0);
|
||||
+ if (!enderman.level().purpurConfig.endermanAllowGriefing) return false; // Purpur
|
||||
+ return this.enderman.getCarriedBlock() != null ? false : (!this.enderman.level)_.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING) ? false : this.enderman.getRandom().nextInt(reducedTickDelay(20)) == 0);
|
||||
return this.enderman.getCarriedBlock() != null ? false : (!this.enderman.level().getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING) ? false : this.enderman.getRandom().nextInt(reducedTickDelay(20)) == 0);
|
||||
}
|
||||
|
||||
@Override
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index a08a38dabc08f88cea0411540236128b18ff47fa..d725ea8aa559120f3b0841296cae8643475e0046 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
|
||||
@@ -67,7 +67,7 @@ index 82e85fbbd45244d02df90fa00c9046e7f51275a2..ec6c63075306f9e5389e83641d2c8a82
|
||||
@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 5874ad0a9d3d2e838c15b3cc3c1e8a9992fdfc54..ff6bda851c5e7f7b5eba17d059fcda6e5a469db7 100644
|
||||
index 5874ad0a9d3d2e838c15b3cc3c1e8a9992fdfc54..88978de01b75526802436714f6a9493d2eb4b0d9 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -227,6 +227,11 @@ public class PurpurWorldConfig {
|
||||
@@ -82,21 +82,3 @@ index 5874ad0a9d3d2e838c15b3cc3c1e8a9992fdfc54..ff6bda851c5e7f7b5eba17d059fcda6e
|
||||
public boolean turtleEggsBreakFromExpOrbs = true;
|
||||
public boolean turtleEggsBreakFromItems = true;
|
||||
public boolean turtleEggsBreakFromMinecarts = true;
|
||||
@@ -1186,3 +1191,17 @@ public class PurpurWorldConfig {
|
||||
zombifiedPiglinSpawnReinforcements = getDouble("mobs.zombified_piglin.attributes.spawn_reinforcements", zombifiedPiglinSpawnReinforcements);
|
||||
}
|
||||
}
|
||||
+||||||| expected
|
||||
+ public boolean babiesAreRidable = true;
|
||||
+ public boolean untamedTamablesAreRidable = true;
|
||||
+ public boolean useNightVisionWhenRiding = false;
|
||||
+=======
|
||||
+ public int waterInfiniteRequiredSources = 2;
|
||||
+ private void waterSources() {
|
||||
+ waterInfiniteRequiredSources = getInt("blocks.water.infinite-required-sources", waterInfiniteRequiredSources);
|
||||
+ }
|
||||
+
|
||||
+ public boolean babiesAreRidable = true;
|
||||
+ public boolean untamedTamablesAreRidable = true;
|
||||
+ public boolean useNightVisionWhenRiding = false;
|
||||
+>>>>>>> replacement
|
||||
|
||||
@@ -167,7 +167,7 @@ index 5e97cec00a6ea97520f0e5acb6e30d5e7e5fab89..45c93c148cde236e01fe925c1a9b67e3
|
||||
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 31d259d0b914b344095dd0435891f55dd5ab4c56..1301d9498808d2edf98ca20de6886c8f50fbdb83 100644
|
||||
index 2011a1e6ec9d52e6f97a2c311c39aa50e67c93a2..ec7bc641fa77a9fbb48aa0adf05dc119755dbe90 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -490,6 +490,9 @@ public class PurpurWorldConfig {
|
||||
@@ -257,7 +257,7 @@ index 31d259d0b914b344095dd0435891f55dd5ab4c56..1301d9498808d2edf98ca20de6886c8f
|
||||
private void zombifiedPiglinSettings() {
|
||||
if (PurpurConfig.version < 10) {
|
||||
double oldValue = getDouble("mobs.zombified_piglin.attributes.max-health", zombifiedPiglinMaxHealth);
|
||||
@@ -1266,6 +1293,9 @@ public class PurpurWorldConfig {
|
||||
@@ -1266,5 +1293,8 @@ public class PurpurWorldConfig {
|
||||
}
|
||||
zombifiedPiglinMaxHealth = getDouble("mobs.zombified_piglin.attributes.max_health", zombifiedPiglinMaxHealth);
|
||||
zombifiedPiglinSpawnReinforcements = getDouble("mobs.zombified_piglin.attributes.spawn_reinforcements", zombifiedPiglinSpawnReinforcements);
|
||||
@@ -266,4 +266,3 @@ index 31d259d0b914b344095dd0435891f55dd5ab4c56..1301d9498808d2edf98ca20de6886c8f
|
||||
+ zombifiedPiglinJockeyTryExistingChickens = getBoolean("mobs.zombified_piglin.jockey.try-existing-chickens", zombifiedPiglinJockeyTryExistingChickens);
|
||||
}
|
||||
}
|
||||
||||||| expected
|
||||
|
||||
@@ -5,7 +5,7 @@ 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 a3f073066f6e2eea8964461ad2b0409ade202f35..4ff472f454b60c3608286b7553926acf74069b73 100644
|
||||
index 448fa4f4f200430d6ce3051763c7ceb697696146..ca2052804ad829a1528a9c5a0a792275beead113 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
|
||||
@@ -44,6 +44,7 @@ import net.minecraft.world.level.Level;
|
||||
@@ -47,7 +47,7 @@ index a3f073066f6e2eea8964461ad2b0409ade202f35..4ff472f454b60c3608286b7553926acf
|
||||
|
||||
private static boolean canBurn(RegistryAccess registryManager, @Nullable Recipe<?> recipe, NonNullList<ItemStack> slots, int count) {
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index 3f0f7264aef8942d82f8d12ccf9bc48c72104ab5..f607e8fc2bc998c93f86f01dbb556f960825489e 100644
|
||||
index 421f08c047af617141f08682742fb81c7e077f94..0fec88e696fe1c0cc241ed296e5a8ad4435e251e 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -415,6 +415,17 @@ public class PurpurWorldConfig {
|
||||
@@ -7,7 +7,7 @@ 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 5d6d26cfe8f0ab68a3145214b3fc126ca7a71a66..1ea5664e1e7dc73cbd2d1cc38c830a19ba985528 100644
|
||||
index 7226be19248a1ffb8ff2c89b55882529d33a6c0c..57f89ff7ddcd738100f296ae7a21b3240ab374de 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java
|
||||
@@ -312,7 +312,7 @@ public abstract class AbstractArrow extends Projectile {
|
||||
@@ -20,7 +20,7 @@ index 5d6d26cfe8f0ab68a3145214b3fc126ca7a71a66..1ea5664e1e7dc73cbd2d1cc38c830a19
|
||||
|
||||
@Override
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index f607e8fc2bc998c93f86f01dbb556f960825489e..70911b0e8c47d505e43e11e5d29da150afb19272 100644
|
||||
index 0fec88e696fe1c0cc241ed296e5a8ad4435e251e..698dff77d5507f8da1170757a77e790598102c30 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -103,6 +103,11 @@ public class PurpurWorldConfig {
|
||||
@@ -5,10 +5,10 @@ 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 fce9ebcaaac18ecee24c7091ea77a32ac567762e..8725ca6eec1becc401951a746a90f678e5edf7ac 100644
|
||||
index d446b440e2bc5b73362fc3d30a10d2e52fde68e1..d4e3a32a0f9b49bff64cb43d77727ce3cae95f09 100644
|
||||
--- a/src/main/java/net/minecraft/world/level/block/FarmBlock.java
|
||||
+++ b/src/main/java/net/minecraft/world/level/block/FarmBlock.java
|
||||
@@ -114,6 +114,14 @@ public class FarmBlock extends Block {
|
||||
@@ -115,6 +115,14 @@ public class FarmBlock extends Block {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -24,7 +24,7 @@ index fce9ebcaaac18ecee24c7091ea77a32ac567762e..8725ca6eec1becc401951a746a90f678
|
||||
return;
|
||||
}
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index 70911b0e8c47d505e43e11e5d29da150afb19272..00e4930d899b547f4a410fae3bc91dfe16259ed6 100644
|
||||
index 698dff77d5507f8da1170757a77e790598102c30..fbde69170f19333faa02552f0bccc4fbaf04ef14 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -416,8 +416,10 @@ public class PurpurWorldConfig {
|
||||
@@ -5,38 +5,47 @@ 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 3c4d142e982c34a23bdb5da1f51c8dcacc0532c1..f185215b826c4b50a819c8454089cb8ccdb0ed3a 100644
|
||||
index 80598d4e679999138f6aca9f6f847e9509fa68da..e3a0a2914db92c95c894174e3815e3eca8d70826 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/animal/Animal.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/animal/Animal.java
|
||||
@@ -150,7 +150,7 @@ public abstract class Animal extends AgeableMob {
|
||||
@@ -151,7 +151,7 @@ public abstract class Animal extends AgeableMob {
|
||||
if (this.isFood(itemstack)) {
|
||||
int i = this.getAge();
|
||||
|
||||
- if (!this.level.isClientSide && i == 0 && this.canFallInLove()) {
|
||||
+ if (!this.level.isClientSide && i == 0 && this.canFallInLove() && (this.level.purpurConfig.animalBreedingCooldownSeconds <= 0 || !this.level.hasBreedingCooldown(player.getUUID(), this.getClass()))) { // Purpur
|
||||
- if (!this.level().isClientSide && i == 0 && this.canFallInLove()) {
|
||||
+ if (!this.level().isClientSide && i == 0 && this.canFallInLove() && (this.level().purpurConfig.animalBreedingCooldownSeconds <= 0 || !this.level().hasBreedingCooldown(player.getUUID(), this.getClass()))) { // Purpur
|
||||
this.usePlayerItem(player, hand, itemstack);
|
||||
this.setInLove(player);
|
||||
return InteractionResult.SUCCESS;
|
||||
@@ -237,6 +237,14 @@ public abstract class Animal extends AgeableMob {
|
||||
if (entityplayer == null && other.getLoveCause() != null) {
|
||||
entityplayer = other.getLoveCause();
|
||||
}
|
||||
@@ -233,12 +233,20 @@ public abstract class Animal extends AgeableMob {
|
||||
AgeableMob entityageable = this.getBreedOffspring(world, other);
|
||||
|
||||
if (entityageable != null) {
|
||||
- entityageable.setBaby(true);
|
||||
- entityageable.moveTo(this.getX(), this.getY(), this.getZ(), 0.0F, 0.0F);
|
||||
- // CraftBukkit start - call EntityBreedEvent
|
||||
+ // Purpur start
|
||||
+ if (entityplayer != null && world.purpurConfig.animalBreedingCooldownSeconds > 0) {
|
||||
+ if (world.hasBreedingCooldown(entityplayer.getUUID(), this.getClass())) {
|
||||
ServerPlayer breeder = Optional.ofNullable(this.getLoveCause()).or(() -> {
|
||||
return Optional.ofNullable(other.getLoveCause());
|
||||
}).orElse(null);
|
||||
+ if (breeder != null && world.purpurConfig.animalBreedingCooldownSeconds > 0) {
|
||||
+ if (world.hasBreedingCooldown(breeder.getUUID(), this.getClass())) {
|
||||
+ return;
|
||||
+ }
|
||||
+ world.addBreedingCooldown(entityplayer.getUUID(), this.getClass());
|
||||
+ world.addBreedingCooldown(breeder.getUUID(), this.getClass());
|
||||
+ }
|
||||
+ entityageable.setBaby(true);
|
||||
+ entityageable.moveTo(this.getX(), this.getY(), this.getZ(), 0.0F, 0.0F);
|
||||
+ // CraftBukkit start - call EntityBreedEvent
|
||||
+ // Purpur end
|
||||
// CraftBukkit start - call EntityBreedEvent
|
||||
entityageable.setBaby(true);
|
||||
entityageable.moveTo(this.getX(), this.getY(), this.getZ(), 0.0F, 0.0F);
|
||||
int experience = this.getRandom().nextInt(7) + 1;
|
||||
org.bukkit.event.entity.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 d0e0ce953dd0cdd6b54bb00224e82dca62f793cd..52d2fa575a29ec36280bb4dbcab6954ac468d2a1 100644
|
||||
index 8673d325bd866704ae90ac31eb54f78097eac952..10cff85dd4a59558dd487a3c5c7871a026835ceb 100644
|
||||
--- a/src/main/java/net/minecraft/world/level/Level.java
|
||||
+++ b/src/main/java/net/minecraft/world/level/Level.java
|
||||
@@ -195,6 +195,49 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
|
||||
@@ -193,6 +193,49 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
|
||||
}
|
||||
// Paper end - fix and optimise world upgrading
|
||||
|
||||
@@ -86,7 +95,7 @@ index d0e0ce953dd0cdd6b54bb00224e82dca62f793cd..52d2fa575a29ec36280bb4dbcab6954a
|
||||
public CraftWorld getWorld() {
|
||||
return this.world;
|
||||
}
|
||||
@@ -290,6 +333,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
|
||||
@@ -277,6 +320,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
|
||||
this.spigotConfig = new org.spigotmc.SpigotWorldConfig(((net.minecraft.world.level.storage.PrimaryLevelData) worlddatamutable).getLevelName()); // Spigot
|
||||
this.paperConfig = paperWorldConfigCreator.apply(this.spigotConfig); // Paper
|
||||
this.purpurConfig = new org.purpurmc.purpur.PurpurWorldConfig(((net.minecraft.world.level.storage.PrimaryLevelData) worlddatamutable).getLevelName(), env); // Purpur
|
||||
@@ -95,7 +104,7 @@ index d0e0ce953dd0cdd6b54bb00224e82dca62f793cd..52d2fa575a29ec36280bb4dbcab6954a
|
||||
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 00e4930d899b547f4a410fae3bc91dfe16259ed6..f3e623890c29726d2bfa7713ab5183a788664ed7 100644
|
||||
index fbde69170f19333faa02552f0bccc4fbaf04ef14..0780e76f12cd36744e5682860cf399634d4d137c 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -117,6 +117,7 @@ public class PurpurWorldConfig {
|
||||
File diff suppressed because it is too large
Load Diff
@@ -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 697d6d6cca0a1c8df9c5bf6852495130a0c57eb4..5b4523320de59167bd5864b2f17187590afb5ad6 100644
|
||||
index 316716b8827b974fa62f7f27d57c3b776b42fbd8..1406cdd79c7183522f1f5c0b0edc6166ff9d4ed9 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java
|
||||
@@ -609,7 +609,7 @@ public class ArmorStand extends LivingEntity {
|
||||
@@ -603,7 +603,7 @@ public class ArmorStand extends LivingEntity {
|
||||
private org.bukkit.event.entity.EntityDeathEvent brokenByPlayer(DamageSource damageSource) { // Paper
|
||||
ItemStack itemstack = new ItemStack(Items.ARMOR_STAND);
|
||||
|
||||
@@ -19,7 +19,7 @@ index 697d6d6cca0a1c8df9c5bf6852495130a0c57eb4..5b4523320de59167bd5864b2f1718759
|
||||
}
|
||||
|
||||
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 30aec9dff249ae629b22318e52902361a9fa4099..165382f5da5307d6f6eae971a565ab1ae3046891 100644
|
||||
index 955316687e2e29ad75a0052317a7b0f89034c82a..43f9733d4cc180b3103173d86bf2e8742f87de2a 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/decoration/ItemFrame.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/decoration/ItemFrame.java
|
||||
@@ -272,7 +272,13 @@ public class ItemFrame extends HangingEntity {
|
||||
@@ -38,7 +38,7 @@ index 30aec9dff249ae629b22318e52902361a9fa4099..165382f5da5307d6f6eae971a565ab1a
|
||||
|
||||
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 cefb3d0658e56c7c103626b8cfc5faa05f03665b..90cab3586d3e3e290475fe8d59a69d89d3c24add 100644
|
||||
index d5784a19cec98eb199a51acd9e1f4de8c6bf7265..6bf0daff390e1a7335d2b61cc52d415002cf6f08 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/decoration/Painting.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/decoration/Painting.java
|
||||
@@ -159,7 +159,13 @@ public class Painting extends HangingEntity implements VariantHolder<Holder<Pain
|
||||
@@ -57,7 +57,7 @@ index cefb3d0658e56c7c103626b8cfc5faa05f03665b..90cab3586d3e3e290475fe8d59a69d89
|
||||
}
|
||||
|
||||
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 9038d694ea8d56aaed4794f55f7c23b8c1358ba7..06421017e3a7a0511c253e2ad4a028b0c156c9a8 100644
|
||||
index 5e33f19193ff49d0d2119d811d8f81d0664e5cee..9a68c0d7cd74818a663ddedf23a22799754f08aa 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/vehicle/Boat.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/vehicle/Boat.java
|
||||
@@ -223,7 +223,13 @@ public class Boat extends Entity implements VariantHolder<Boat.Type> {
|
||||
@@ -136,7 +136,7 @@ index b2ad6d230de2c29f371178bccde1111c7532ee70..6667926519a0f1c151e53f59cce36e74
|
||||
|
||||
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 c2651f1a01a1ae04b937316671bc16a33b6c9b8e..dfd60520c7924e4258d1a481fc1f72ff182ed6b9 100644
|
||||
index 82222e74b3fd450b3c8c3d8b04a7243c7baba475..cd37b4e5705ccbb88bf9fd8559c66e4ed7f092f0 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -99,8 +99,10 @@ public class PurpurWorldConfig {
|
||||
@@ -5,19 +5,19 @@ Subject: [PATCH] Set name visible when using a Name Tag on an Armor Stand
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/item/NameTagItem.java b/src/main/java/net/minecraft/world/item/NameTagItem.java
|
||||
index 623f78c078fb3aa2665d7e8a37672438227bce6b..500c69e555c7247e20ef8cc59d83415578f44427 100644
|
||||
index 2941c16ef486345b57ab2dfcd26f0272285d3b5a..a312bdc5c90cdcc45b40fc54a1a2a98f54eae82e 100644
|
||||
--- a/src/main/java/net/minecraft/world/item/NameTagItem.java
|
||||
+++ b/src/main/java/net/minecraft/world/item/NameTagItem.java
|
||||
@@ -24,6 +24,7 @@ public class NameTagItem extends Item {
|
||||
@@ -20,6 +20,7 @@ public class NameTagItem extends Item {
|
||||
if (!event.callEvent()) return InteractionResult.PASS;
|
||||
LivingEntity newEntityLiving = ((org.bukkit.craftbukkit.entity.CraftLivingEntity) event.getEntity()).getHandle();
|
||||
newEntityLiving.setCustomName(event.getName() != null ? PaperAdventure.asVanilla(event.getName()) : null);
|
||||
newEntityLiving.setCustomName(event.getName() != null ? io.papermc.paper.adventure.PaperAdventure.asVanilla(event.getName()) : null);
|
||||
+ if (user.level.purpurConfig.armorstandFixNametags && entity instanceof net.minecraft.world.entity.decoration.ArmorStand) entity.setCustomNameVisible(true); // Purpur
|
||||
if (event.isPersistent() && newEntityLiving instanceof Mob) {
|
||||
((Mob) newEntityLiving).setPersistenceRequired();
|
||||
// Paper end
|
||||
// Paper end
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index dfd60520c7924e4258d1a481fc1f72ff182ed6b9..c5c02479efbe1531f7b86bfd18e86f6fff7e27fe 100644
|
||||
index cd37b4e5705ccbb88bf9fd8559c66e4ed7f092f0..ceb42382e3f80c795d75ba2a34a4bed741d84ea7 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -100,9 +100,11 @@ public class PurpurWorldConfig {
|
||||
@@ -8,10 +8,10 @@ This should help to reduce the amount of dirt, gravel, grass, and etc.
|
||||
that Endermen like to randomly place all over the world.
|
||||
|
||||
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 d8123aa5585cb4c0cc1210ced04fdf08f731fdb2..757aa2e3fa1c4608f07adbff0f718ad8f04be475 100644
|
||||
index 1bb0f20e964d74e9949fe7ec3034d5ada8bafa89..c3c32a99d53eea7f61b70d7ed8ddc8a2112dd9f7 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java
|
||||
@@ -490,7 +490,7 @@ public class EnderMan extends Monster implements NeutralMob {
|
||||
@@ -464,7 +464,7 @@ public class EnderMan extends Monster implements NeutralMob {
|
||||
|
||||
@Override
|
||||
public boolean requiresCustomPersistence() {
|
||||
@@ -21,22 +21,22 @@ index d8123aa5585cb4c0cc1210ced04fdf08f731fdb2..757aa2e3fa1c4608f07adbff0f718ad8
|
||||
|
||||
private static class EndermanFreezeWhenLookedAt extends Goal {
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index c5c02479efbe1531f7b86bfd18e86f6fff7e27fe..2d63b6de58149bd160d8455becbf224757cb3baf 100644
|
||||
index ceb42382e3f80c795d75ba2a34a4bed741d84ea7..94c3fd880ac8a5561a9af57485810ed428cd718c 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -835,6 +835,7 @@ public class PurpurWorldConfig {
|
||||
public boolean endermanControllable = true;
|
||||
@@ -717,6 +717,7 @@ public class PurpurWorldConfig {
|
||||
|
||||
public double endermanMaxHealth = 40.0D;
|
||||
public boolean endermanAllowGriefing = true;
|
||||
+ public boolean endermanDespawnEvenWithBlock = false;
|
||||
private void endermanSettings() {
|
||||
endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable);
|
||||
endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater);
|
||||
@@ -846,6 +847,7 @@ public class PurpurWorldConfig {
|
||||
if (PurpurConfig.version < 10) {
|
||||
double oldValue = getDouble("mobs.enderman.attributes.max-health", endermanMaxHealth);
|
||||
@@ -725,6 +726,7 @@ public class PurpurWorldConfig {
|
||||
}
|
||||
endermanMaxHealth = getDouble("mobs.enderman.attributes.max_health", endermanMaxHealth);
|
||||
endermanAllowGriefing = getBoolean("mobs.enderman.allow-griefing", endermanAllowGriefing);
|
||||
+ endermanDespawnEvenWithBlock = getBoolean("mobs.enderman.can-despawn-with-held-block", endermanDespawnEvenWithBlock);
|
||||
}
|
||||
|
||||
public boolean endermiteRidable = false;
|
||||
public double endermiteMaxHealth = 8.0D;
|
||||
@@ -5,7 +5,7 @@ Subject: [PATCH] Add configurable snowball damage
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/projectile/Snowball.java b/src/main/java/net/minecraft/world/entity/projectile/Snowball.java
|
||||
index 6cded52e4627c2b6073fa221fc6d6583f1b2a96d..5827236f351cd0679af764644bb22bb286ac361d 100644
|
||||
index 718e120c9768cf716b32d3d652f53f1dda925168..e1e19a360be99b189dee1652e5289292f4996d92 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/projectile/Snowball.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/projectile/Snowball.java
|
||||
@@ -53,7 +53,7 @@ public class Snowball extends ThrowableItemProjectile {
|
||||
@@ -18,7 +18,7 @@ index 6cded52e4627c2b6073fa221fc6d6583f1b2a96d..5827236f351cd0679af764644bb22bb2
|
||||
}
|
||||
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index 2d63b6de58149bd160d8455becbf224757cb3baf..c9559508d8962b891b5aca3a7ee1138b935a078b 100644
|
||||
index 94c3fd880ac8a5561a9af57485810ed428cd718c..b23ef63f21eec2224975e7ee531e4c7d4becfdd5 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -356,6 +356,11 @@ public class PurpurWorldConfig {
|
||||
@@ -5,10 +5,10 @@ Subject: [PATCH] Changeable Mob Left Handed Chance
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java
|
||||
index 183261a031a2a0b6b95dbb983236cee3cd3a0398..9dae07b1f1e18cbc86d64e5f793a5eb1685c2f7b 100644
|
||||
index 0509b57efe9a42bf44a8ff2c13a042bb2d3accf9..311927443aaca5f3acd5936d333abc72719448d1 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/Mob.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/Mob.java
|
||||
@@ -1292,7 +1292,7 @@ public abstract class Mob extends LivingEntity implements Targeting {
|
||||
@@ -1289,7 +1289,7 @@ public abstract class Mob extends LivingEntity implements Targeting {
|
||||
RandomSource randomsource = world.getRandom();
|
||||
|
||||
this.getAttribute(Attributes.FOLLOW_RANGE).addPermanentModifier(new AttributeModifier("Random spawn bonus", randomsource.triangle(0.0D, 0.11485000000000001D), AttributeModifier.Operation.MULTIPLY_BASE));
|
||||
@@ -18,7 +18,7 @@ index 183261a031a2a0b6b95dbb983236cee3cd3a0398..9dae07b1f1e18cbc86d64e5f793a5eb1
|
||||
} else {
|
||||
this.setLeftHanded(false);
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index c9559508d8962b891b5aca3a7ee1138b935a078b..a673ae630a0551fb242d920470c9165f4531f5fb 100644
|
||||
index b23ef63f21eec2224975e7ee531e4c7d4becfdd5..eacc769e0930f3b510f70b4c5cf5024d1d249d40 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -158,8 +158,10 @@ public class PurpurWorldConfig {
|
||||
@@ -5,10 +5,10 @@ Subject: [PATCH] Add boat fall damage config
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
||||
index 581685e53fc9b63d291ba4904e47e8afc1119c9a..02078f459eb7230a5ac9b4499d961c8b37e5b196 100644
|
||||
index 5165f6d8189ec8e64cdb0902d61276571198f9a7..2a0e5c8ef89bf32411893b4ee4a045ddc104dc93 100644
|
||||
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
||||
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
||||
@@ -1071,7 +1071,16 @@ public class ServerPlayer extends Player {
|
||||
@@ -1103,7 +1103,16 @@ public class ServerPlayer extends Player {
|
||||
if (this.isInvulnerableTo(source)) {
|
||||
return false;
|
||||
} else {
|
||||
@@ -27,7 +27,7 @@ index 581685e53fc9b63d291ba4904e47e8afc1119c9a..02078f459eb7230a5ac9b4499d961c8b
|
||||
|
||||
if (!flag && isSpawnInvulnerable() && !source.is(DamageTypeTags.BYPASSES_INVULNERABILITY)) { // Purpur
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index a673ae630a0551fb242d920470c9165f4531f5fb..780c094431e8206a7cd42b1f0bdfb098c1af8af2 100644
|
||||
index eacc769e0930f3b510f70b4c5cf5024d1d249d40..f4443840cc77feb3cc6a6519d91d66a757d756af 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 {
|
||||
@@ -10,23 +10,23 @@ If min-shoot-interval-ticks and max-shoot-interval-ticks are both set to
|
||||
0, snow golems won't shoot any snowballs.
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java b/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java
|
||||
index 6c6e020522261ca5bbc47a59c25d3e98bf0b4007..30abf3ee1b9d3aef9291076a1f0bf865c54beadd 100644
|
||||
index 02e0f6d86a7dfc7a21a45bc8f50fed22a81207f2..ca557bf95c8238c6b671900affc1965b3f3af837 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java
|
||||
@@ -79,7 +79,7 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM
|
||||
@@ -61,7 +61,7 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM
|
||||
|
||||
@Override
|
||||
protected void registerGoals() {
|
||||
this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur
|
||||
- this.goalSelector.addGoal(1, new RangedAttackGoal(this, 1.25D, 20, 10.0F));
|
||||
+ this.goalSelector.addGoal(1, new RangedAttackGoal(this, level.purpurConfig.snowGolemAttackDistance, level.purpurConfig.snowGolemSnowBallMin, level.purpurConfig.snowGolemSnowBallMax, level.purpurConfig.snowGolemSnowBallModifier)); // Purpur
|
||||
this.goalSelector.addGoal(2, new WaterAvoidingRandomStrollGoal(this, 1.0D, 1.0000001E-5F));
|
||||
this.goalSelector.addGoal(3, new LookAtPlayerGoal(this, Player.class, 6.0F));
|
||||
this.goalSelector.addGoal(4, new RandomLookAroundGoal(this));
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index 780c094431e8206a7cd42b1f0bdfb098c1af8af2..496b797910b1248662289fab16ed5fa3390d0c4d 100644
|
||||
index f4443840cc77feb3cc6a6519d91d66a757d756af..ac11e65b03fb94afad7fca5c10884c1859c5d23b 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -1607,6 +1607,10 @@ public class PurpurWorldConfig {
|
||||
@@ -1263,6 +1263,10 @@ public class PurpurWorldConfig {
|
||||
public double snowGolemMaxHealth = 4.0D;
|
||||
public boolean snowGolemDropsPumpkin = true;
|
||||
public boolean snowGolemPutPumpkinBack = false;
|
||||
@@ -35,9 +35,9 @@ index 780c094431e8206a7cd42b1f0bdfb098c1af8af2..496b797910b1248662289fab16ed5fa3
|
||||
+ public float snowGolemSnowBallModifier = 10.0F;
|
||||
+ public double snowGolemAttackDistance = 1.25D;
|
||||
private void snowGolemSettings() {
|
||||
snowGolemRidable = getBoolean("mobs.snow_golem.ridable", snowGolemRidable);
|
||||
snowGolemRidableInWater = getBoolean("mobs.snow_golem.ridable-in-water", snowGolemRidableInWater);
|
||||
@@ -1620,6 +1624,10 @@ public class PurpurWorldConfig {
|
||||
snowGolemLeaveTrailWhenRidden = getBoolean("mobs.snow_golem.leave-trail-when-ridden", snowGolemLeaveTrailWhenRidden);
|
||||
if (PurpurConfig.version < 10) {
|
||||
@@ -1273,6 +1277,10 @@ public class PurpurWorldConfig {
|
||||
snowGolemMaxHealth = getDouble("mobs.snow_golem.attributes.max_health", snowGolemMaxHealth);
|
||||
snowGolemDropsPumpkin = getBoolean("mobs.snow_golem.drop-pumpkin-when-sheared", snowGolemDropsPumpkin);
|
||||
snowGolemPutPumpkinBack = getBoolean("mobs.snow_golem.pumpkin-can-be-added-back", snowGolemPutPumpkinBack);
|
||||
@@ -47,4 +47,4 @@ index 780c094431e8206a7cd42b1f0bdfb098c1af8af2..496b797910b1248662289fab16ed5fa3
|
||||
+ snowGolemAttackDistance = getDouble("mobs.snow_golem.attack-distance", snowGolemAttackDistance);
|
||||
}
|
||||
|
||||
public boolean snifferRidable = false;
|
||||
public double snifferMaxHealth = 14.0D;
|
||||
@@ -8,22 +8,22 @@ purpur.yml to disable the /give command from dropping items on the
|
||||
floor when a player's inventory is full.
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/commands/GiveCommand.java b/src/main/java/net/minecraft/server/commands/GiveCommand.java
|
||||
index ee7d29d85c8b024c9b23cba8ecd4192aa7e8aa7b..7a44bac6e66bc5f5fe14a45a5e7c78c940fb1efb 100644
|
||||
index d601d287e94a59ff93b8a83a44dac02544d211df..0ff3b06a98b2f4514b2d861b92dd70fe678ae86c 100644
|
||||
--- a/src/main/java/net/minecraft/server/commands/GiveCommand.java
|
||||
+++ b/src/main/java/net/minecraft/server/commands/GiveCommand.java
|
||||
@@ -58,6 +58,7 @@ public class GiveCommand {
|
||||
boolean flag = entityplayer.getInventory().add(itemstack);
|
||||
@@ -59,6 +59,7 @@ public class GiveCommand {
|
||||
boolean flag = entityplayer.getInventory().add(itemstack1);
|
||||
ItemEntity entityitem;
|
||||
|
||||
+ if (org.purpurmc.purpur.PurpurConfig.disableGiveCommandDrops) continue; // Purpur - add config option for toggling give command dropping
|
||||
if (flag && itemstack.isEmpty()) {
|
||||
itemstack.setCount(1);
|
||||
entityitem = entityplayer.drop(itemstack, false, false, false); // SPIGOT-2942: Add boolean to call event
|
||||
if (flag && itemstack1.isEmpty()) {
|
||||
itemstack1.setCount(1);
|
||||
entityitem = entityplayer.drop(itemstack1, false, false, false); // SPIGOT-2942: Add boolean to call event
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
||||
index 4e303fc793bef67426308204d704b02960fc75b8..b1757cd2f828304ca7376eed6eea01f816b26550 100644
|
||||
index cac902dae062d706c6ba255f74fc0f82378df241..22e9972b95824d5ef695af65a927a08c3bacd4fa 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
||||
@@ -209,6 +209,11 @@ public class PurpurConfig {
|
||||
@@ -207,6 +207,11 @@ public class PurpurConfig {
|
||||
useAlternateKeepAlive = getBoolean("settings.use-alternate-keepalive", useAlternateKeepAlive);
|
||||
}
|
||||
|
||||
@@ -13,10 +13,10 @@ to the Piglin being angry, even though the player never hit them.
|
||||
This patch adds a toggle to disable this behavior.
|
||||
|
||||
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 f2c690c92dd2bf55f986f629ed79b76fbdfa32a4..6e8f0c9df06e2930084a6d58213f6edfb36ec444 100644
|
||||
index 45c93c148cde236e01fe925c1a9b67e3e963bbb8..c8a024c9bd7c9cdbeff029bfacf4dba91e6ac580 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java
|
||||
@@ -152,7 +152,7 @@ public class ZombifiedPiglin extends Zombie implements NeutralMob {
|
||||
@@ -135,7 +135,7 @@ public class ZombifiedPiglin extends Zombie implements NeutralMob {
|
||||
this.maybeAlertOthers();
|
||||
}
|
||||
|
||||
@@ -25,7 +25,7 @@ index f2c690c92dd2bf55f986f629ed79b76fbdfa32a4..6e8f0c9df06e2930084a6d58213f6edf
|
||||
this.lastHurtByPlayerTime = this.tickCount;
|
||||
}
|
||||
|
||||
@@ -207,7 +207,7 @@ public class ZombifiedPiglin extends Zombie implements NeutralMob {
|
||||
@@ -190,7 +190,7 @@ public class ZombifiedPiglin extends Zombie implements NeutralMob {
|
||||
this.ticksUntilNextAlert = ZombifiedPiglin.ALERT_INTERVAL.sample(this.random);
|
||||
}
|
||||
|
||||
@@ -35,18 +35,18 @@ index f2c690c92dd2bf55f986f629ed79b76fbdfa32a4..6e8f0c9df06e2930084a6d58213f6edf
|
||||
}
|
||||
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index 1ffdd96306b525f217a630b4f8f05e16c0e8b7cd..86d033f990e19c80db0209aacd0a60a506a6e607 100644
|
||||
index ac11e65b03fb94afad7fca5c10884c1859c5d23b..abbdb20d10bd86c4d68ebbb93213a73fb24e35bd 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -2054,6 +2054,7 @@ public class PurpurWorldConfig {
|
||||
@@ -1566,6 +1566,7 @@ public class PurpurWorldConfig {
|
||||
public boolean zombifiedPiglinJockeyOnlyBaby = true;
|
||||
public double zombifiedPiglinJockeyChance = 0.05D;
|
||||
public boolean zombifiedPiglinJockeyTryExistingChickens = true;
|
||||
+ public boolean zombifiedPiglinCountAsPlayerKillWhenAngry = true;
|
||||
private void zombifiedPiglinSettings() {
|
||||
zombifiedPiglinRidable = getBoolean("mobs.zombified_piglin.ridable", zombifiedPiglinRidable);
|
||||
zombifiedPiglinRidableInWater = getBoolean("mobs.zombified_piglin.ridable-in-water", zombifiedPiglinRidableInWater);
|
||||
@@ -2068,5 +2069,6 @@ public class PurpurWorldConfig {
|
||||
if (PurpurConfig.version < 10) {
|
||||
double oldValue = getDouble("mobs.zombified_piglin.attributes.max-health", zombifiedPiglinMaxHealth);
|
||||
@@ -1577,5 +1578,6 @@ public class PurpurWorldConfig {
|
||||
zombifiedPiglinJockeyOnlyBaby = getBoolean("mobs.zombified_piglin.jockey.only-babies", zombifiedPiglinJockeyOnlyBaby);
|
||||
zombifiedPiglinJockeyChance = getDouble("mobs.zombified_piglin.jockey.chance", zombifiedPiglinJockeyChance);
|
||||
zombifiedPiglinJockeyTryExistingChickens = getBoolean("mobs.zombified_piglin.jockey.try-existing-chickens", zombifiedPiglinJockeyTryExistingChickens);
|
||||
@@ -7,7 +7,7 @@ Configurable chance to spawn a wolf that is rabid.
|
||||
Rabid wolves attack all players, mobs, and animals.
|
||||
|
||||
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 6ddcf37ce8dbc6a57cabd43b04be6baba496a904..079d41636f1420a8755442843f1843e397cdbbf9 100644
|
||||
index d914f8d659404e0e8c499e2cd8bf0a3a6d21905e..55b2f060b4e05ba0999acf2ffe46f9b4fece1952 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/animal/Wolf.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/animal/Wolf.java
|
||||
@@ -10,6 +10,7 @@ import net.minecraft.network.syncher.EntityDataAccessor;
|
||||
@@ -93,11 +93,10 @@ index 6ddcf37ce8dbc6a57cabd43b04be6baba496a904..079d41636f1420a8755442843f1843e3
|
||||
private static final float START_HEALTH = 8.0F;
|
||||
private static final float TAME_HEALTH = 20.0F;
|
||||
private float interestedAngle;
|
||||
@@ -132,6 +170,37 @@ public class Wolf extends TamableAnimal implements NeutralMob {
|
||||
public int getPurpurBreedTime() {
|
||||
@@ -112,12 +150,44 @@ public class Wolf extends TamableAnimal implements NeutralMob {
|
||||
return this.level.purpurConfig.wolfBreedingTicks;
|
||||
}
|
||||
+
|
||||
|
||||
+ public boolean isRabid() {
|
||||
+ return this.isRabid;
|
||||
+ }
|
||||
@@ -128,10 +127,10 @@ index 6ddcf37ce8dbc6a57cabd43b04be6baba496a904..079d41636f1420a8755442843f1843e3
|
||||
+ this.updatePathfinders(false);
|
||||
+ return super.finalizeSpawn(world, difficulty, type, data, nbt);
|
||||
+ }
|
||||
// Purpur end
|
||||
|
||||
+
|
||||
@Override
|
||||
@@ -141,6 +210,7 @@ public class Wolf extends TamableAnimal implements NeutralMob {
|
||||
protected void registerGoals() {
|
||||
this.goalSelector.addGoal(1, new FloatGoal(this));
|
||||
this.goalSelector.addGoal(1, new Wolf.WolfPanicGoal(1.5D));
|
||||
this.goalSelector.addGoal(2, new SitWhenOrderedToGoal(this));
|
||||
this.goalSelector.addGoal(3, new Wolf.WolfAvoidEntityGoal<>(this, Llama.class, 24.0F, 1.5D, 1.5D));
|
||||
@@ -139,7 +138,7 @@ index 6ddcf37ce8dbc6a57cabd43b04be6baba496a904..079d41636f1420a8755442843f1843e3
|
||||
this.goalSelector.addGoal(4, new LeapAtTargetGoal(this, 0.4F));
|
||||
this.goalSelector.addGoal(5, new MeleeAttackGoal(this, 1.0D, true));
|
||||
this.goalSelector.addGoal(6, new FollowOwnerGoal(this, 1.0D, 10.0F, 2.0F, false));
|
||||
@@ -154,7 +224,7 @@ public class Wolf extends TamableAnimal implements NeutralMob {
|
||||
@@ -130,7 +200,7 @@ public class Wolf extends TamableAnimal implements NeutralMob {
|
||||
this.targetSelector.addGoal(2, new OwnerHurtTargetGoal(this));
|
||||
this.targetSelector.addGoal(3, (new HurtByTargetGoal(this, new Class[0])).setAlertOthers());
|
||||
this.targetSelector.addGoal(4, new NearestAttackableTargetGoal<>(this, Player.class, 10, true, false, this::isAngryAt));
|
||||
@@ -148,7 +147,7 @@ index 6ddcf37ce8dbc6a57cabd43b04be6baba496a904..079d41636f1420a8755442843f1843e3
|
||||
this.targetSelector.addGoal(6, new NonTameRandomTargetGoal<>(this, Turtle.class, false, Turtle.BABY_ON_LAND_SELECTOR));
|
||||
this.targetSelector.addGoal(7, new NearestAttackableTargetGoal<>(this, AbstractSkeleton.class, false));
|
||||
this.targetSelector.addGoal(8, new ResetUniversalAngerTargetGoal<>(this, true));
|
||||
@@ -199,6 +269,7 @@ public class Wolf extends TamableAnimal implements NeutralMob {
|
||||
@@ -175,6 +245,7 @@ public class Wolf extends TamableAnimal implements NeutralMob {
|
||||
public void addAdditionalSaveData(CompoundTag nbt) {
|
||||
super.addAdditionalSaveData(nbt);
|
||||
nbt.putByte("CollarColor", (byte) this.getCollarColor().getId());
|
||||
@@ -156,7 +155,7 @@ index 6ddcf37ce8dbc6a57cabd43b04be6baba496a904..079d41636f1420a8755442843f1843e3
|
||||
this.addPersistentAngerSaveData(nbt);
|
||||
}
|
||||
|
||||
@@ -208,6 +279,10 @@ public class Wolf extends TamableAnimal implements NeutralMob {
|
||||
@@ -184,6 +255,10 @@ public class Wolf extends TamableAnimal implements NeutralMob {
|
||||
if (nbt.contains("CollarColor", 99)) {
|
||||
this.setCollarColor(DyeColor.byId(nbt.getInt("CollarColor")));
|
||||
}
|
||||
@@ -165,9 +164,9 @@ index 6ddcf37ce8dbc6a57cabd43b04be6baba496a904..079d41636f1420a8755442843f1843e3
|
||||
+ this.updatePathfinders(false);
|
||||
+ // Purpur end
|
||||
|
||||
this.readPersistentAngerSaveData(this.level, nbt);
|
||||
this.readPersistentAngerSaveData(this.level(), nbt);
|
||||
}
|
||||
@@ -252,6 +327,11 @@ public class Wolf extends TamableAnimal implements NeutralMob {
|
||||
@@ -228,6 +303,11 @@ public class Wolf extends TamableAnimal implements NeutralMob {
|
||||
public void tick() {
|
||||
super.tick();
|
||||
if (this.isAlive()) {
|
||||
@@ -179,9 +178,9 @@ index 6ddcf37ce8dbc6a57cabd43b04be6baba496a904..079d41636f1420a8755442843f1843e3
|
||||
this.interestedAngleO = this.interestedAngle;
|
||||
if (this.isInterested()) {
|
||||
this.interestedAngle += (1.0F - this.interestedAngle) * 0.4F;
|
||||
@@ -458,6 +538,20 @@ public class Wolf extends TamableAnimal implements NeutralMob {
|
||||
|
||||
return InteractionResult.SUCCESS;
|
||||
@@ -437,6 +517,20 @@ public class Wolf extends TamableAnimal implements NeutralMob {
|
||||
} else {
|
||||
this.level().broadcastEntityEvent(this, (byte) 6);
|
||||
}
|
||||
+ // Purpur start
|
||||
+ else if (this.level.purpurConfig.wolfMilkCuresRabies && itemstack.getItem() == Items.MILK_BUCKET && this.isRabid()) {
|
||||
@@ -198,8 +197,8 @@ index 6ddcf37ce8dbc6a57cabd43b04be6baba496a904..079d41636f1420a8755442843f1843e3
|
||||
+ }
|
||||
+ // Purpur end
|
||||
|
||||
return super.mobInteract(player, hand);
|
||||
}
|
||||
return InteractionResult.SUCCESS;
|
||||
} else {
|
||||
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftWolf.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftWolf.java
|
||||
index e43fd3e59fd8c74828ae65965fade27f56beef65..b2f133c8baabba1cffa6e92ea0f854532f4c181b 100644
|
||||
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftWolf.java
|
||||
@@ -222,19 +221,19 @@ index e43fd3e59fd8c74828ae65965fade27f56beef65..b2f133c8baabba1cffa6e92ea0f85453
|
||||
+ // Purpur end
|
||||
}
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index 86d033f990e19c80db0209aacd0a60a506a6e607..a6fbccd217af50fa3abfe703de7e9e9894916f40 100644
|
||||
index abbdb20d10bd86c4d68ebbb93213a73fb24e35bd..7e8d7744f1f107308e5856e18831f986bcf41bd8 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -1939,6 +1939,8 @@ public class PurpurWorldConfig {
|
||||
public boolean wolfRidableInWater = true;
|
||||
public boolean wolfControllable = true;
|
||||
@@ -1479,6 +1479,8 @@ public class PurpurWorldConfig {
|
||||
}
|
||||
|
||||
public double wolfMaxHealth = 8.0D;
|
||||
+ public boolean wolfMilkCuresRabies = true;
|
||||
+ public double wolfNaturalRabid = 0.0D;
|
||||
public int wolfBreedingTicks = 6000;
|
||||
private void wolfSettings() {
|
||||
wolfRidable = getBoolean("mobs.wolf.ridable", wolfRidable);
|
||||
@@ -1950,6 +1952,8 @@ public class PurpurWorldConfig {
|
||||
if (PurpurConfig.version < 10) {
|
||||
@@ -1487,6 +1489,8 @@ public class PurpurWorldConfig {
|
||||
set("mobs.wolf.attributes.max_health", oldValue);
|
||||
}
|
||||
wolfMaxHealth = getDouble("mobs.wolf.attributes.max_health", wolfMaxHealth);
|
||||
@@ -7,10 +7,10 @@ This allows for the server to set a default collar color when a wolf or cat is t
|
||||
Resets to RED when the value is invalid.
|
||||
|
||||
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 bc9c39e90f0a41f9bec6f93db921d2157183698c..8e6abeab0a7d7007d0deef3b1dea77aee66681fa 100644
|
||||
index a47718747f41a80b5aecffdf74aa1095786cf9a3..0d8320fde901cd9ae6aa420b76362be77ca62c93 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/animal/Cat.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/animal/Cat.java
|
||||
@@ -345,6 +345,14 @@ public class Cat extends TamableAnimal implements VariantHolder<CatVariant> {
|
||||
@@ -318,6 +318,14 @@ public class Cat extends TamableAnimal implements VariantHolder<CatVariant> {
|
||||
return Mth.lerp(tickDelta, this.relaxStateOneAmountO, this.relaxStateOneAmount);
|
||||
}
|
||||
|
||||
@@ -26,55 +26,55 @@ index bc9c39e90f0a41f9bec6f93db921d2157183698c..8e6abeab0a7d7007d0deef3b1dea77ae
|
||||
@Override
|
||||
public Cat getBreedOffspring(ServerLevel world, AgeableMob entity) {
|
||||
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 079d41636f1420a8755442843f1843e397cdbbf9..214d5d27f8c4f352839c1a45a083c329f41164bd 100644
|
||||
index 55b2f060b4e05ba0999acf2ffe46f9b4fece1952..3c5186800381c414c8dd3f2c58b1cd947e64a092 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/animal/Wolf.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/animal/Wolf.java
|
||||
@@ -201,6 +201,12 @@ public class Wolf extends TamableAnimal implements NeutralMob {
|
||||
this.updatePathfinders(false);
|
||||
@@ -181,6 +181,12 @@ public class Wolf extends TamableAnimal implements NeutralMob {
|
||||
return super.finalizeSpawn(world, difficulty, type, data, nbt);
|
||||
}
|
||||
+
|
||||
|
||||
+ @Override
|
||||
+ public void tame(Player player) {
|
||||
+ setCollarColor(level.purpurConfig.wolfDefaultCollarColor);
|
||||
+ super.tame(player);
|
||||
+ }
|
||||
// Purpur end
|
||||
|
||||
+
|
||||
@Override
|
||||
protected void registerGoals() {
|
||||
this.goalSelector.addGoal(1, new FloatGoal(this));
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index a6fbccd217af50fa3abfe703de7e9e9894916f40..38dbd6ff79fe1e1f5e4abb8ca57548ff6f46e60a 100644
|
||||
index 7e8d7744f1f107308e5856e18831f986bcf41bd8..84bb7a1a7744a55ebc284bbd8e2fb8b840eb0391 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -623,6 +623,7 @@ public class PurpurWorldConfig {
|
||||
@@ -569,6 +569,7 @@ public class PurpurWorldConfig {
|
||||
public int catSpawnSwampHutScanRange = 16;
|
||||
public int catSpawnVillageScanRange = 48;
|
||||
public int catBreedingTicks = 6000;
|
||||
+ public DyeColor catDefaultCollarColor = DyeColor.RED;
|
||||
private void catSettings() {
|
||||
catRidable = getBoolean("mobs.cat.ridable", catRidable);
|
||||
catRidableInWater = getBoolean("mobs.cat.ridable-in-water", catRidableInWater);
|
||||
@@ -637,6 +638,11 @@ public class PurpurWorldConfig {
|
||||
if (PurpurConfig.version < 10) {
|
||||
double oldValue = getDouble("mobs.cat.attributes.max-health", catMaxHealth);
|
||||
@@ -580,6 +581,11 @@ public class PurpurWorldConfig {
|
||||
catSpawnSwampHutScanRange = getInt("mobs.cat.scan-range-for-other-cats.swamp-hut", catSpawnSwampHutScanRange);
|
||||
catSpawnVillageScanRange = getInt("mobs.cat.scan-range-for-other-cats.village", catSpawnVillageScanRange);
|
||||
catBreedingTicks = getInt("mobs.cat.breeding-delay-ticks", catBreedingTicks);
|
||||
+ try {
|
||||
+ catDefaultCollarColor = DyeColor.valueOf(getString("mobs.cat.default-collar-color", wolfDefaultCollarColor.name()));
|
||||
+ catDefaultCollarColor = DyeColor.valueOf(getString("mobs.cat.default-collar-color", catDefaultCollarColor.name()));
|
||||
+ } catch (IllegalArgumentException ignore) {
|
||||
+ catDefaultCollarColor = DyeColor.RED;
|
||||
+ }
|
||||
}
|
||||
|
||||
public boolean caveSpiderRidable = false;
|
||||
@@ -1939,6 +1945,7 @@ public class PurpurWorldConfig {
|
||||
public boolean wolfRidableInWater = true;
|
||||
public boolean wolfControllable = true;
|
||||
public double caveSpiderMaxHealth = 12.0D;
|
||||
@@ -1479,6 +1485,7 @@ public class PurpurWorldConfig {
|
||||
}
|
||||
|
||||
public double wolfMaxHealth = 8.0D;
|
||||
+ public DyeColor wolfDefaultCollarColor = DyeColor.RED;
|
||||
public boolean wolfMilkCuresRabies = true;
|
||||
public double wolfNaturalRabid = 0.0D;
|
||||
public int wolfBreedingTicks = 6000;
|
||||
@@ -1952,6 +1959,11 @@ public class PurpurWorldConfig {
|
||||
@@ -1489,6 +1496,11 @@ public class PurpurWorldConfig {
|
||||
set("mobs.wolf.attributes.max_health", oldValue);
|
||||
}
|
||||
wolfMaxHealth = getDouble("mobs.wolf.attributes.max_health", wolfMaxHealth);
|
||||
@@ -5,11 +5,11 @@ Subject: [PATCH] Phantom flames on swoop
|
||||
|
||||
|
||||
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 b601c542e28bc0a588e56aa37c243fe92145547e..ed5c75d390babced3dc062428176e968da878d8f 100644
|
||||
index ca46d91d75de8aaf39a16141bba593be94cbc45f..c0980014edd84582f179882e9d63abb5474df622 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/monster/Phantom.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/monster/Phantom.java
|
||||
@@ -244,6 +244,7 @@ public class Phantom extends FlyingMob implements Enemy {
|
||||
this.level.addParticle(ParticleTypes.MYCELIUM, this.getX() - (double) f2, this.getY() + (double) f4, this.getZ() - (double) f3, 0.0D, 0.0D, 0.0D);
|
||||
@@ -159,6 +159,7 @@ public class Phantom extends FlyingMob implements Enemy {
|
||||
this.level().addParticle(ParticleTypes.MYCELIUM, this.getX() - (double) f2, this.getY() + (double) f4, this.getZ() - (double) f3, 0.0D, 0.0D, 0.0D);
|
||||
}
|
||||
|
||||
+ if (level.purpurConfig.phantomFlamesOnSwoop && attackPhase == AttackPhase.SWOOP) shoot(); // Purpur
|
||||
@@ -17,22 +17,22 @@ index b601c542e28bc0a588e56aa37c243fe92145547e..ed5c75d390babced3dc062428176e968
|
||||
|
||||
@Override
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index 38dbd6ff79fe1e1f5e4abb8ca57548ff6f46e60a..b77cc1019396f8fa63baf9aad81227ff7452400d 100644
|
||||
index 84bb7a1a7744a55ebc284bbd8e2fb8b840eb0391..224bb233f4b608ea9b971aad141c76bb37a019c5 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -1301,6 +1301,7 @@ public class PurpurWorldConfig {
|
||||
@@ -1054,6 +1054,7 @@ public class PurpurWorldConfig {
|
||||
public int phantomBurnInLight = 0;
|
||||
public boolean phantomIgnorePlayersWithTorch = false;
|
||||
public boolean phantomBurnInDaylight = true;
|
||||
+ public boolean phantomFlamesOnSwoop = false;
|
||||
private void phantomSettings() {
|
||||
phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable);
|
||||
phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater);
|
||||
@@ -1334,6 +1335,7 @@ public class PurpurWorldConfig {
|
||||
if (PurpurConfig.version < 10) {
|
||||
double oldValue = getDouble("mobs.phantom.attributes.max-health", Double.parseDouble(phantomMaxHealth));
|
||||
@@ -1077,6 +1078,7 @@ public class PurpurWorldConfig {
|
||||
phantomBurnInLight = getInt("mobs.phantom.burn-in-light", phantomBurnInLight);
|
||||
phantomBurnInDaylight = getBoolean("mobs.phantom.burn-in-daylight", phantomBurnInDaylight);
|
||||
phantomIgnorePlayersWithTorch = getBoolean("mobs.phantom.ignore-players-with-torch", phantomIgnorePlayersWithTorch);
|
||||
+ phantomFlamesOnSwoop = getBoolean("mobs.phantom.flames-on-swoop", phantomFlamesOnSwoop);
|
||||
}
|
||||
|
||||
public boolean pigRidable = false;
|
||||
public double pigMaxHealth = 10.0D;
|
||||
@@ -17,7 +17,7 @@ index 5e22d175b1048a58802cdf64ac70a8b56329e915..d81946b400f208c39941128ce823ff77
|
||||
|
||||
return world.getBlockState(blockposition1).isRedstoneConductor(world, blockposition1);
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index b77cc1019396f8fa63baf9aad81227ff7452400d..bcb384761d4ad7abb6624d78e501084817c678e0 100644
|
||||
index 224bb233f4b608ea9b971aad141c76bb37a019c5..775a13fa3462f75fe62f1649ef731b1058703d2f 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -425,6 +425,11 @@ public class PurpurWorldConfig {
|
||||
@@ -5,10 +5,10 @@ Subject: [PATCH] Implement TPSBar
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/commands/Commands.java b/src/main/java/net/minecraft/commands/Commands.java
|
||||
index 277fb799d898ca726205519b1516861901be33c5..144e83bac0d8885c48d97d7fbb4b712d4c0fc4b3 100644
|
||||
index e5b1b6ad32c48a4ba13b4930954fad18669677ad..4e721dfca7559620d8ce65a6703f2089a839f4a0 100644
|
||||
--- a/src/main/java/net/minecraft/commands/Commands.java
|
||||
+++ b/src/main/java/net/minecraft/commands/Commands.java
|
||||
@@ -225,6 +225,7 @@ public class Commands {
|
||||
@@ -227,6 +227,7 @@ public class Commands {
|
||||
org.purpurmc.purpur.command.CreditsCommand.register(this.dispatcher); // Purpur
|
||||
org.purpurmc.purpur.command.DemoCommand.register(this.dispatcher); // Purpur
|
||||
org.purpurmc.purpur.command.PingCommand.register(this.dispatcher); // Purpur
|
||||
@@ -17,10 +17,10 @@ index 277fb799d898ca726205519b1516861901be33c5..144e83bac0d8885c48d97d7fbb4b712d
|
||||
|
||||
if (environment.includeIntegrated) {
|
||||
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||
index 52487bc86a28a2f2c1c677b07c9fec77685f2af0..de9e19d9979ad6981fcda881d22b18a613c4138d 100644
|
||||
index 5750934e3cfb1a9d7fc127a5033c504476900981..8e044ff6db7f4ab1605eec1bd8063916add22ca8 100644
|
||||
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||
@@ -1026,6 +1026,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
||||
@@ -1023,6 +1023,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
||||
this.safeShutdown(waitForShutdown, false);
|
||||
}
|
||||
public void safeShutdown(boolean waitForShutdown, boolean isRestarting) {
|
||||
@@ -29,20 +29,20 @@ index 52487bc86a28a2f2c1c677b07c9fec77685f2af0..de9e19d9979ad6981fcda881d22b18a6
|
||||
this.hasLoggedStop = true; // Paper
|
||||
if (isDebugging()) io.papermc.paper.util.TraceUtil.dumpTraceForThread("Server stopped"); // Paper
|
||||
diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
|
||||
index ca6a2fee12ac8a89dae57aa2787462f190463cd0..e0b2819d6c73a9ca1fa60ff71d29e201360370a8 100644
|
||||
index 2dbb2a21942a4e2cb2d3e1fc77a487dd5bd3d964..c2b243240efacac250cb8440d215884756b66283 100644
|
||||
--- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
|
||||
+++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
|
||||
@@ -351,6 +351,8 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
|
||||
@@ -348,6 +348,8 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
|
||||
DedicatedServer.LOGGER.info("JMX monitoring enabled");
|
||||
}
|
||||
|
||||
if (gg.pufferfish.pufferfish.PufferfishConfig.enableAsyncMobSpawning) mobSpawnExecutor.start(); // Pufferfish
|
||||
+ org.purpurmc.purpur.task.BossBarTask.startAll(); // Purpur
|
||||
+
|
||||
return true;
|
||||
}
|
||||
}
|
||||
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
||||
index 91a2081acf514b61033b669dc331b223c84adfbd..d526d2374008bdaac4b03437e24da25a7915cbeb 100644
|
||||
index 2a0e5c8ef89bf32411893b4ee4a045ddc104dc93..6ffa173574cd07e547c18ef89f0a733a526735eb 100644
|
||||
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
||||
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
||||
@@ -279,6 +279,7 @@ public class ServerPlayer extends Player {
|
||||
@@ -51,9 +51,9 @@ index 91a2081acf514b61033b669dc331b223c84adfbd..d526d2374008bdaac4b03437e24da25a
|
||||
public boolean acceptingResourcePack = false; // Purpur
|
||||
+ private boolean tpsBar = false; // Purpur
|
||||
|
||||
public ServerPlayer(MinecraftServer server, ServerLevel world, GameProfile profile) {
|
||||
super(world, world.getSharedSpawnPos(), world.getSharedSpawnAngle(), profile);
|
||||
@@ -518,6 +519,7 @@ public class ServerPlayer extends Player {
|
||||
private final java.util.concurrent.atomic.AtomicReference<io.papermc.paper.chunk.system.RegionizedPlayerChunkLoader.ViewDistances> viewDistances = new java.util.concurrent.atomic.AtomicReference<>(new io.papermc.paper.chunk.system.RegionizedPlayerChunkLoader.ViewDistances(-1, -1, -1));
|
||||
public io.papermc.paper.chunk.system.RegionizedPlayerChunkLoader.PlayerChunkLoaderData chunkLoader;
|
||||
@@ -559,6 +560,7 @@ public class ServerPlayer extends Player {
|
||||
}
|
||||
}
|
||||
|
||||
@@ -61,7 +61,7 @@ index 91a2081acf514b61033b669dc331b223c84adfbd..d526d2374008bdaac4b03437e24da25a
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -584,6 +586,7 @@ public class ServerPlayer extends Player {
|
||||
@@ -625,6 +627,7 @@ public class ServerPlayer extends Player {
|
||||
}
|
||||
this.getBukkitEntity().setExtraData(nbt); // CraftBukkit
|
||||
|
||||
@@ -69,7 +69,7 @@ index 91a2081acf514b61033b669dc331b223c84adfbd..d526d2374008bdaac4b03437e24da25a
|
||||
}
|
||||
|
||||
// CraftBukkit start - World fallback code, either respawn location or global spawn
|
||||
@@ -2703,5 +2706,13 @@ public class ServerPlayer extends Player {
|
||||
@@ -2779,5 +2782,13 @@ public class ServerPlayer extends Player {
|
||||
this.server.getPlayerList().respawn(this, toLevel, true, to, !toLevel.paperConfig().environment.disableTeleportationSuffocationCheck, org.bukkit.event.player.PlayerRespawnEvent.RespawnReason.DEATH);
|
||||
}
|
||||
}
|
||||
@@ -84,10 +84,10 @@ index 91a2081acf514b61033b669dc331b223c84adfbd..d526d2374008bdaac4b03437e24da25a
|
||||
// Purpur end
|
||||
}
|
||||
diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java
|
||||
index 91166ac140e14a4300ecbec8d80716b175fd2889..37943331eecee6263041b64d274a8be682a1039d 100644
|
||||
index bacce71fe2616068d45bee9cf12a1a3b3326b98e..15a04d24f511425aee392a2fa4e333071ca5c582 100644
|
||||
--- a/src/main/java/net/minecraft/server/players/PlayerList.java
|
||||
+++ b/src/main/java/net/minecraft/server/players/PlayerList.java
|
||||
@@ -469,6 +469,7 @@ public abstract class PlayerList {
|
||||
@@ -476,6 +476,7 @@ public abstract class PlayerList {
|
||||
scoreboard.addPlayerToTeam(player.getScoreboardName(), collideRuleTeam);
|
||||
}
|
||||
// Paper end
|
||||
@@ -95,28 +95,27 @@ index 91166ac140e14a4300ecbec8d80716b175fd2889..37943331eecee6263041b64d274a8be6
|
||||
// CraftBukkit - Moved from above, added world
|
||||
PlayerList.LOGGER.info("{}[{}] logged in with entity id {} at ([{}]{}, {}, {})", player.getName().getString(), s1, player.getId(), worldserver1.serverLevelData.getLevelName(), player.getX(), player.getY(), player.getZ());
|
||||
}
|
||||
@@ -578,6 +579,8 @@ public abstract class PlayerList {
|
||||
@@ -585,6 +586,7 @@ public abstract class PlayerList {
|
||||
}
|
||||
public net.kyori.adventure.text.Component remove(ServerPlayer entityplayer, net.kyori.adventure.text.Component leaveMessage) {
|
||||
// Paper end
|
||||
+ org.purpurmc.purpur.task.BossBarTask.removeFromAll(entityplayer.getBukkitEntity()); // Purpur
|
||||
+
|
||||
ServerLevel worldserver = entityplayer.getLevel();
|
||||
ServerLevel worldserver = entityplayer.serverLevel();
|
||||
|
||||
entityplayer.awardStat(Stats.LEAVE_GAME);
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
||||
index b1757cd2f828304ca7376eed6eea01f816b26550..70db296b80b98b378917f68037420ae150e14adb 100644
|
||||
index 22e9972b95824d5ef695af65a927a08c3bacd4fa..fdfb1f6bd59f5b9e193aac61b2ddc1b1e4f20d6c 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
||||
@@ -182,6 +182,7 @@ public class PurpurConfig {
|
||||
@@ -181,6 +181,7 @@ public class PurpurConfig {
|
||||
public static String creditsCommandOutput = "<green>%s has been shown the end credits";
|
||||
public static String demoCommandOutput = "<green>%s has been shown the demo screen";
|
||||
public static String pingCommandOutput = "<green>%s's ping is %sms";
|
||||
+ public static String tpsbarCommandOutput = "<green>Tpsbar toggled <onoff> for <target>";
|
||||
private static void messages() {
|
||||
cannotRideMob = getString("settings.messages.cannot-ride-mob", cannotRideMob);
|
||||
afkBroadcastAway = getString("settings.messages.afk-broadcast-away", afkBroadcastAway);
|
||||
@@ -192,6 +193,7 @@ public class PurpurConfig {
|
||||
afkBroadcastBack = getString("settings.messages.afk-broadcast-back", afkBroadcastBack);
|
||||
@@ -190,6 +191,7 @@ public class PurpurConfig {
|
||||
creditsCommandOutput = getString("settings.messages.credits-command-output", creditsCommandOutput);
|
||||
demoCommandOutput = getString("settings.messages.demo-command-output", demoCommandOutput);
|
||||
pingCommandOutput = getString("settings.messages.ping-command-output", pingCommandOutput);
|
||||
@@ -124,7 +123,7 @@ index b1757cd2f828304ca7376eed6eea01f816b26550..70db296b80b98b378917f68037420ae1
|
||||
}
|
||||
|
||||
public static String serverModName = "Purpur";
|
||||
@@ -214,6 +216,29 @@ public class PurpurConfig {
|
||||
@@ -212,6 +214,29 @@ public class PurpurConfig {
|
||||
disableGiveCommandDrops = getBoolean("settings.disable-give-dropping", disableGiveCommandDrops);
|
||||
}
|
||||
|
||||
@@ -5,10 +5,10 @@ Subject: [PATCH] Striders give saddle back
|
||||
|
||||
|
||||
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 1be6dc3608b839b0ed7d2fcd968991ce5bbeb89b..270135cb5a5f50b39683f74da84045ea75045030 100644
|
||||
index 3479e37415a1d5a94a1e2388bd56558b6d56eec9..7d57137951c9493265623f8674b8900c850ef396 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/monster/Strider.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/monster/Strider.java
|
||||
@@ -486,6 +486,19 @@ public class Strider extends Animal implements ItemSteerable, Saddleable {
|
||||
@@ -468,6 +468,19 @@ public class Strider extends Animal implements ItemSteerable, Saddleable {
|
||||
public InteractionResult mobInteract(Player player, InteractionHand hand) {
|
||||
boolean flag = this.isFood(player.getItemInHand(hand));
|
||||
|
||||
@@ -26,25 +26,25 @@ index 1be6dc3608b839b0ed7d2fcd968991ce5bbeb89b..270135cb5a5f50b39683f74da84045ea
|
||||
+ // Purpur end
|
||||
+
|
||||
if (!flag && this.isSaddled() && !this.isVehicle() && !player.isSecondaryUseActive()) {
|
||||
if (!this.level.isClientSide) {
|
||||
if (!this.level().isClientSide) {
|
||||
player.startRiding(this);
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index bcb384761d4ad7abb6624d78e501084817c678e0..c877d28640ad083ef4d117b7c2deecbed3bcc12a 100644
|
||||
index 775a13fa3462f75fe62f1649ef731b1058703d2f..d7bb242d3be5cadfd848c105419d269391504537 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -1713,6 +1713,7 @@ public class PurpurWorldConfig {
|
||||
public boolean striderControllable = true;
|
||||
@@ -1341,6 +1341,7 @@ public class PurpurWorldConfig {
|
||||
|
||||
public double striderMaxHealth = 20.0D;
|
||||
public int striderBreedingTicks = 6000;
|
||||
+ public boolean striderGiveSaddleBack = false;
|
||||
private void striderSettings() {
|
||||
striderRidable = getBoolean("mobs.strider.ridable", striderRidable);
|
||||
striderRidableInWater = getBoolean("mobs.strider.ridable-in-water", striderRidableInWater);
|
||||
@@ -1724,6 +1725,7 @@ public class PurpurWorldConfig {
|
||||
if (PurpurConfig.version < 10) {
|
||||
double oldValue = getDouble("mobs.strider.attributes.max-health", striderMaxHealth);
|
||||
@@ -1349,6 +1350,7 @@ public class PurpurWorldConfig {
|
||||
}
|
||||
striderMaxHealth = getDouble("mobs.strider.attributes.max_health", striderMaxHealth);
|
||||
striderBreedingTicks = getInt("mobs.strider.breeding-delay-ticks", striderBreedingTicks);
|
||||
+ striderGiveSaddleBack = getBoolean("mobs.strider.give-saddle-back", striderGiveSaddleBack);
|
||||
}
|
||||
|
||||
public boolean tadpoleRidable = false;
|
||||
public double traderLlamaMaxHealthMin = 15.0D;
|
||||
@@ -5,10 +5,10 @@ Subject: [PATCH] PlayerBookTooLargeEvent
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
||||
index d4280dcd4b8a4e09ef1b6c6d89ea5c58468f7229..d9a6a5ef1cd419d2111e49d42df8b866e90d9c6b 100644
|
||||
index 5ceb3a454fbd6993fd82cacb83b3ba9844463054..c624651d073eef3a71729555d7fe1adca27679e2 100644
|
||||
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
||||
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
||||
@@ -1262,10 +1262,12 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
|
||||
@@ -1264,10 +1264,12 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
|
||||
int maxBookPageSize = io.papermc.paper.configuration.GlobalConfiguration.get().itemValidation.bookSize.pageMax;
|
||||
double multiplier = Math.max(0.3D, Math.min(1D, io.papermc.paper.configuration.GlobalConfiguration.get().itemValidation.bookSize.totalMultiplier));
|
||||
long byteAllowed = maxBookPageSize;
|
||||
@@ -21,7 +21,7 @@ index d4280dcd4b8a4e09ef1b6c6d89ea5c58468f7229..d9a6a5ef1cd419d2111e49d42df8b866
|
||||
server.scheduleOnMain(() -> this.disconnect("Book too large!", org.bukkit.event.player.PlayerKickEvent.Cause.ILLEGAL_ACTION)); // Paper - kick event cause
|
||||
return;
|
||||
}
|
||||
@@ -1289,6 +1291,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
|
||||
@@ -1291,6 +1293,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
|
||||
|
||||
if (byteTotal > byteAllowed) {
|
||||
ServerGamePacketListenerImpl.LOGGER.warn(this.player.getScoreboardName() + " tried to send too large of a book. Book Size: " + byteTotal + " - Allowed: "+ byteAllowed + " - Pages: " + pageList.size());
|
||||
@@ -5,10 +5,10 @@ Subject: [PATCH] Full netherite armor grants fire resistance
|
||||
|
||||
|
||||
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 cd5d9b5e6853cebb556c347ebdcb0ec912a61f87..6e6fbcaab227b83144640e3e1024a0382984fdae 100644
|
||||
index d37080e74a7ce5442e4290eecb6352019b30fdb3..5537e4d735ff635bb1f088e41c0c5822487d0a6c 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/player/Player.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/player/Player.java
|
||||
@@ -365,6 +365,16 @@ public abstract class Player extends LivingEntity {
|
||||
@@ -353,6 +353,16 @@ public abstract class Player extends LivingEntity {
|
||||
this.addEffect(new MobEffectInstance(MobEffects.WATER_BREATHING, 200, 0, false, false, true), org.bukkit.event.entity.EntityPotionEffectEvent.Cause.TURTLE_HELMET); // CraftBukkit
|
||||
}
|
||||
|
||||
@@ -26,7 +26,7 @@ index cd5d9b5e6853cebb556c347ebdcb0ec912a61f87..6e6fbcaab227b83144640e3e1024a038
|
||||
|
||||
protected ItemCooldowns createItemCooldowns() {
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index c877d28640ad083ef4d117b7c2deecbed3bcc12a..0232f39eabedefbe0054a7e96d85fa7033da74f0 100644
|
||||
index d7bb242d3be5cadfd848c105419d269391504537..9b19c4c3cbeeb635a854668158acdc7b0d7c8627 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -297,6 +297,19 @@ public class PurpurWorldConfig {
|
||||
@@ -5,10 +5,10 @@ Subject: [PATCH] Fix rotating UP/DOWN CW and CCW
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/core/Direction.java b/src/main/java/net/minecraft/core/Direction.java
|
||||
index 82bce6109d59cba30178a446f0ff129da6f3692f..eaa620ad86abfb151b43f697973cbc731e2e5e92 100644
|
||||
index d0a8092bf57a29ab7c00ec0ddf52a9fdb2a33267..defe5951938ce3a7b7f83017d4af36bb49ff5be0 100644
|
||||
--- a/src/main/java/net/minecraft/core/Direction.java
|
||||
+++ b/src/main/java/net/minecraft/core/Direction.java
|
||||
@@ -248,6 +248,12 @@ public enum Direction implements StringRepresentable {
|
||||
@@ -238,6 +238,12 @@ public enum Direction implements StringRepresentable {
|
||||
case EAST:
|
||||
var10000 = SOUTH;
|
||||
break;
|
||||
@@ -21,7 +21,7 @@ index 82bce6109d59cba30178a446f0ff129da6f3692f..eaa620ad86abfb151b43f697973cbc73
|
||||
default:
|
||||
throw new IllegalStateException("Unable to get Y-rotated facing of " + this);
|
||||
}
|
||||
@@ -360,6 +366,12 @@ public enum Direction implements StringRepresentable {
|
||||
@@ -350,6 +356,12 @@ public enum Direction implements StringRepresentable {
|
||||
case EAST:
|
||||
var10000 = NORTH;
|
||||
break;
|
||||
@@ -5,59 +5,59 @@ Subject: [PATCH] Add mobGriefing bypass to everything affected
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
|
||||
index f7e95a73f60d06a102f79677bb0e31bf9532894d..f8957ef4d25c66002eb2dc992334a6db617ea5e0 100644
|
||||
index f8ed307bcc19eb5e0f3b9709fda623b1b2af9ae9..77a808d1f2737bd705807a97f84d1c3b77338346 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
|
||||
@@ -1723,7 +1723,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
|
||||
@@ -1766,7 +1766,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
|
||||
boolean flag = false;
|
||||
|
||||
if (this.dead && adversary instanceof WitherBoss) { // Paper
|
||||
- if (this.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) {
|
||||
+ if (this.level.purpurConfig.witherBypassMobGriefing || this.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) { // Purpur
|
||||
- if (this.level().getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) {
|
||||
+ if (this.level().purpurConfig.witherBypassMobGriefing || this.level().getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) { // Purpur
|
||||
BlockPos blockposition = this.blockPosition();
|
||||
BlockState iblockdata = Blocks.WITHER_ROSE.defaultBlockState();
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java
|
||||
index 9dae07b1f1e18cbc86d64e5f793a5eb1685c2f7b..34eb04112fa47cbcd233f8a959036d988d73f1b4 100644
|
||||
index 311927443aaca5f3acd5936d333abc72719448d1..475ac814ccd4dc988a10511a4419336ecf34421e 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/Mob.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/Mob.java
|
||||
@@ -700,7 +700,7 @@ public abstract class Mob extends LivingEntity implements Targeting {
|
||||
@@ -701,7 +701,7 @@ public abstract class Mob extends LivingEntity implements Targeting {
|
||||
public void aiStep() {
|
||||
super.aiStep();
|
||||
this.level.getProfiler().push("looting");
|
||||
- if (!this.level.isClientSide && this.canPickUpLoot() && this.isAlive() && !this.dead && this.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) {
|
||||
+ if (!this.level.isClientSide && this.canPickUpLoot() && this.isAlive() && !this.dead && (this.level.purpurConfig.entitiesPickUpLootBypassMobGriefing || this.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING))) {
|
||||
this.level().getProfiler().push("looting");
|
||||
- if (!this.level().isClientSide && this.canPickUpLoot() && this.isAlive() && !this.dead && this.level().getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) {
|
||||
+ if (!this.level().isClientSide && this.canPickUpLoot() && this.isAlive() && !this.dead && (this.level().purpurConfig.entitiesPickUpLootBypassMobGriefing || this.level().getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING))) {
|
||||
Vec3i baseblockposition = this.getPickupReach();
|
||||
List<ItemEntity> list = this.level.getEntitiesOfClass(ItemEntity.class, this.getBoundingBox().inflate((double) baseblockposition.getX(), (double) baseblockposition.getY(), (double) baseblockposition.getZ()));
|
||||
List<ItemEntity> list = this.level().getEntitiesOfClass(ItemEntity.class, this.getBoundingBox().inflate((double) baseblockposition.getX(), (double) baseblockposition.getY(), (double) baseblockposition.getZ()));
|
||||
Iterator iterator = list.iterator();
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/ai/behavior/HarvestFarmland.java b/src/main/java/net/minecraft/world/entity/ai/behavior/HarvestFarmland.java
|
||||
index ed67d2adf06f7ae9c451648e30945ad289ceae38..2dca8e45b9b1f5451db2734cba4c2b03c9dd303b 100644
|
||||
index 5bb3db5e1f47ef56ef40c84f06a1c5ae59f84c89..841954670c5a9b400552774669e57b68b156c300 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/ai/behavior/HarvestFarmland.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/ai/behavior/HarvestFarmland.java
|
||||
@@ -41,7 +41,7 @@ public class HarvestFarmland extends Behavior<Villager> {
|
||||
@@ -45,7 +45,7 @@ public class HarvestFarmland extends Behavior<Villager> {
|
||||
}
|
||||
|
||||
protected boolean checkExtraStartConditions(ServerLevel world, Villager entity) {
|
||||
- if (!world.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) {
|
||||
+ if (!world.purpurConfig.villagerBypassMobGriefing && !world.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) { // Purpur
|
||||
return false;
|
||||
} else if (entity.getVillagerData().getProfession() != VillagerProfession.FARMER && !(world.purpurConfig.villagerClericsFarmWarts && entity.getVillagerData().getProfession() == VillagerProfession.CLERIC)) { // Purpur
|
||||
} else if (entity.getVillagerData().getProfession() != VillagerProfession.FARMER) {
|
||||
return false;
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/ai/goal/BreakDoorGoal.java b/src/main/java/net/minecraft/world/entity/ai/goal/BreakDoorGoal.java
|
||||
index 529435cf648d61f80a37f041cee3c6fc0b74ceb6..6c7195c93b5968845da35450e80022c70839487d 100644
|
||||
index 4253b3b1263a7ae5a2f5f3a34674dfea615a81ea..a987c94fd321f51241c405659d6a0b2327a612ae 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/ai/goal/BreakDoorGoal.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/ai/goal/BreakDoorGoal.java
|
||||
@@ -32,7 +32,7 @@ public class BreakDoorGoal extends DoorInteractGoal {
|
||||
|
||||
@Override
|
||||
public boolean canUse() {
|
||||
- return !super.canUse() ? false : (!this.mob.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING) ? false : this.isValidDifficulty(this.mob.level.getDifficulty()) && !this.isOpen());
|
||||
+ return !super.canUse() ? false : ((!this.mob.level.purpurConfig.zombieBypassMobGriefing && !this.mob.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) ? false : this.isValidDifficulty(this.mob.level.getDifficulty()) && !this.isOpen()); // Purpur
|
||||
- return !super.canUse() ? false : (!this.mob.level().getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING) ? false : this.isValidDifficulty(this.mob.level().getDifficulty()) && !this.isOpen());
|
||||
+ return !super.canUse() ? false : ((!this.mob.level().purpurConfig.zombieBypassMobGriefing && !this.mob.level().getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) ? false : this.isValidDifficulty(this.mob.level().getDifficulty()) && !this.isOpen()); // Purpur
|
||||
}
|
||||
|
||||
@Override
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/ai/goal/EatBlockGoal.java b/src/main/java/net/minecraft/world/entity/ai/goal/EatBlockGoal.java
|
||||
index 80aa539f7c6a6ee44338de084cdcdf5fb4ef996a..3a633f369af8005de3c06cfa715a42e3b248b2f0 100644
|
||||
index abf796c3369da6b73c8587dfc05f56d0b8933fde..95dc62687d10e5c6f54baadda4a725094c52c07f 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/ai/goal/EatBlockGoal.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/ai/goal/EatBlockGoal.java
|
||||
@@ -69,7 +69,7 @@ public class EatBlockGoal extends Goal {
|
||||
@@ -79,97 +79,97 @@ index 80aa539f7c6a6ee44338de084cdcdf5fb4ef996a..3a633f369af8005de3c06cfa715a42e3
|
||||
this.level.setBlock(blockposition1, Blocks.DIRT.defaultBlockState(), 2);
|
||||
}
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/ai/goal/RemoveBlockGoal.java b/src/main/java/net/minecraft/world/entity/ai/goal/RemoveBlockGoal.java
|
||||
index d3e91faee8805e88d850740fb5de9e5c8288c48b..fe526ebf395ff9813b94284fc3f0142323d6a303 100644
|
||||
index 0035461aff86fa3f44c860e7d77589b974446048..8c08457b5a9ade9b602851c9a12b015e1b4b5a36 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/ai/goal/RemoveBlockGoal.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/ai/goal/RemoveBlockGoal.java
|
||||
@@ -40,7 +40,7 @@ public class RemoveBlockGoal extends MoveToBlockGoal {
|
||||
|
||||
@Override
|
||||
public boolean canUse() {
|
||||
- if (!this.removerMob.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) {
|
||||
+ if (!this.removerMob.level.purpurConfig.zombieBypassMobGriefing && !this.removerMob.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) { // Purpur
|
||||
- if (!this.removerMob.level().getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) {
|
||||
+ if (!this.removerMob.level().purpurConfig.zombieBypassMobGriefing && !this.removerMob.level().getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) { // Purpur
|
||||
return false;
|
||||
} else if (this.nextStartTick > 0) {
|
||||
--this.nextStartTick;
|
||||
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 920b70b5c534ee83f5acb26890f3cfdf220fd887..6642f93ae5a8843a8e560594008c8643ef693878 100644
|
||||
index a80d18398db003ddeaa28aa00e13a0869191695f..5974577a408c13d05f326c7bfc704441644e7c8b 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/animal/Fox.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/animal/Fox.java
|
||||
@@ -1377,7 +1377,7 @@ public class Fox extends Animal implements VariantHolder<Fox.Type> {
|
||||
@@ -1337,7 +1337,7 @@ public class Fox extends Animal implements VariantHolder<Fox.Type> {
|
||||
}
|
||||
|
||||
protected void onReachedTarget() {
|
||||
- if (Fox.this.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) {
|
||||
+ if (Fox.this.level.purpurConfig.foxBypassMobGriefing || Fox.this.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) { // Purpur
|
||||
BlockState iblockdata = Fox.this.level.getBlockState(this.blockPos);
|
||||
- if (Fox.this.level().getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) {
|
||||
+ if (Fox.this.level().purpurConfig.foxBypassMobGriefing || Fox.this.level().getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) { // Purpur
|
||||
BlockState iblockdata = Fox.this.level().getBlockState(this.blockPos);
|
||||
|
||||
if (iblockdata.is(Blocks.SWEET_BERRY_BUSH)) {
|
||||
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 aca51a77f02670809a6da5e7c384d9bbfcee2506..8aa108cdcbe3772e7dd140e0e9af77a1db163739 100644
|
||||
index c2106749af90e0fa0603ef90be919ef11da32758..919c27b38085d545617cc685fef9c8a29926b018 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/animal/Rabbit.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/animal/Rabbit.java
|
||||
@@ -630,7 +630,7 @@ public class Rabbit extends Animal implements VariantHolder<Rabbit.Variant> {
|
||||
@@ -575,7 +575,7 @@ public class Rabbit extends Animal implements VariantHolder<Rabbit.Variant> {
|
||||
@Override
|
||||
public boolean canUse() {
|
||||
if (this.nextStartTick <= 0) {
|
||||
- if (!this.rabbit.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) {
|
||||
+ if (!this.rabbit.level.purpurConfig.rabbitBypassMobGriefing && !this.rabbit.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) { // Purpur
|
||||
- if (!this.rabbit.level().getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) {
|
||||
+ if (!this.rabbit.level().purpurConfig.rabbitBypassMobGriefing && !this.rabbit.level().getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) { // Purpur
|
||||
return false;
|
||||
}
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java b/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java
|
||||
index 30abf3ee1b9d3aef9291076a1f0bf865c54beadd..806abdd159ff5c696f16d799902f02bcc3cd252f 100644
|
||||
index ca557bf95c8238c6b671900affc1965b3f3af837..6b8169ac1fbe3920083ffd8cb5e15b9d8e67f436 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java
|
||||
@@ -127,7 +127,7 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM
|
||||
@@ -108,7 +108,7 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM
|
||||
this.hurt(this.damageSources().melting, 1.0F); // CraftBukkit - DamageSource.BURN -> CraftEventFactory.MELTING
|
||||
}
|
||||
|
||||
- if (!this.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) {
|
||||
+ if (!this.level.purpurConfig.snowGolemBypassMobGriefing && !this.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) { // Purpur
|
||||
- if (!this.level().getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) {
|
||||
+ if (!this.level().purpurConfig.snowGolemBypassMobGriefing && !this.level().getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) { // Purpur
|
||||
return;
|
||||
}
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java
|
||||
index 178c01444b7894833265c21a50ff6805d1aa356a..a07d1b6a45ef14cc4f121efe11869fc2da44a969 100644
|
||||
index b3b3572a6e3a1334b193f8e1462387e0b7526828..c819d041bf2e4909e97d6e856474786a96085a25 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java
|
||||
@@ -579,7 +579,7 @@ public class EnderDragon extends Mob implements Enemy {
|
||||
BlockState iblockdata = this.level.getBlockState(blockposition);
|
||||
@@ -537,7 +537,7 @@ public class EnderDragon extends Mob implements Enemy {
|
||||
BlockState iblockdata = this.level().getBlockState(blockposition);
|
||||
|
||||
if (!iblockdata.isAir() && !iblockdata.is(BlockTags.DRAGON_TRANSPARENT)) {
|
||||
- if (this.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING) && !iblockdata.is(BlockTags.DRAGON_IMMUNE)) {
|
||||
+ if ((this.level.purpurConfig.enderDragonBypassMobGriefing || this.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) && !iblockdata.is(BlockTags.DRAGON_IMMUNE)) { // Purpur
|
||||
- if (this.level().getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING) && !iblockdata.is(BlockTags.DRAGON_IMMUNE)) {
|
||||
+ if ((this.level().purpurConfig.enderDragonBypassMobGriefing || this.level().getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) && !iblockdata.is(BlockTags.DRAGON_IMMUNE)) { // Purpur
|
||||
// CraftBukkit start - Add blocks to list rather than destroying them
|
||||
// flag1 = this.level.removeBlock(blockposition, false) || flag1;
|
||||
// flag1 = this.level().removeBlock(blockposition, false) || flag1;
|
||||
flag1 = true;
|
||||
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 b22d0af2267581467af9a4d0e8104146b3da9b71..334ffb3553e1b87b538ac42155942049587639a0 100644
|
||||
index 462f4bdc4ca57aa46564df9372c5bc7fd673030f..dda3152aa6d4e8265fcb3fd450ecf39ec0f1a9ac 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
|
||||
@@ -496,7 +496,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob
|
||||
@@ -366,7 +366,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob
|
||||
|
||||
if (this.destroyBlocksTick > 0) {
|
||||
--this.destroyBlocksTick;
|
||||
- if (this.destroyBlocksTick == 0 && this.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) {
|
||||
+ if (this.destroyBlocksTick == 0 && (this.level.purpurConfig.witherBypassMobGriefing || this.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING))) { // Purpur
|
||||
- if (this.destroyBlocksTick == 0 && this.level().getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) {
|
||||
+ if (this.destroyBlocksTick == 0 && (this.level().purpurConfig.witherBypassMobGriefing || this.level().getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING))) { // Purpur
|
||||
i = Mth.floor(this.getY());
|
||||
j = Mth.floor(this.getX());
|
||||
int i1 = Mth.floor(this.getZ());
|
||||
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 757aa2e3fa1c4608f07adbff0f718ad8f04be475..643a3b83b7b7e173372e8ffa1607ea8bbf67f50f 100644
|
||||
index c3c32a99d53eea7f61b70d7ed8ddc8a2112dd9f7..444993e357e7a3e4aba0b0a73760fe478f6461ff 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java
|
||||
@@ -538,7 +538,15 @@ public class EnderMan extends Monster implements NeutralMob {
|
||||
@@ -512,7 +512,15 @@ public class EnderMan extends Monster implements NeutralMob {
|
||||
@Override
|
||||
public boolean canUse() {
|
||||
if (!enderman.level.purpurConfig.endermanAllowGriefing) return false; // Purpur
|
||||
- return this.enderman.getCarriedBlock() == null ? false : (!this.enderman.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING) ? false : this.enderman.getRandom().nextInt(reducedTickDelay(2000)) == 0);
|
||||
if (!enderman.level().purpurConfig.endermanAllowGriefing) return false; // Purpur
|
||||
- return this.enderman.getCarriedBlock() == null ? false : (!this.enderman.level().getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING) ? false : this.enderman.getRandom().nextInt(reducedTickDelay(2000)) == 0);
|
||||
+ // Purpur start
|
||||
+ if (this.enderman.getCarriedBlock() == null) {
|
||||
+ return false;
|
||||
+ }
|
||||
+ if (!this.enderman.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING) && !this.enderman.level.purpurConfig.endermanBypassMobGriefing) {
|
||||
+ if (!this.enderman.level().getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING) && !this.enderman.level().purpurConfig.endermanBypassMobGriefing) {
|
||||
+ return false;
|
||||
+ }
|
||||
+ return this.enderman.getRandom().nextInt(reducedTickDelay(2000)) == 0;
|
||||
@@ -177,16 +177,16 @@ index 757aa2e3fa1c4608f07adbff0f718ad8f04be475..643a3b83b7b7e173372e8ffa1607ea8b
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -586,7 +594,15 @@ public class EnderMan extends Monster implements NeutralMob {
|
||||
@@ -560,7 +568,15 @@ public class EnderMan extends Monster implements NeutralMob {
|
||||
@Override
|
||||
public boolean canUse() {
|
||||
if (!enderman.level.purpurConfig.endermanAllowGriefing) return false; // Purpur
|
||||
- return this.enderman.getCarriedBlock() != null ? false : (!this.enderman.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING) ? false : this.enderman.getRandom().nextInt(reducedTickDelay(20)) == 0);
|
||||
if (!enderman.level().purpurConfig.endermanAllowGriefing) return false; // Purpur
|
||||
- return this.enderman.getCarriedBlock() != null ? false : (!this.enderman.level().getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING) ? false : this.enderman.getRandom().nextInt(reducedTickDelay(20)) == 0);
|
||||
+ // Purpur start
|
||||
+ if (this.enderman.getCarriedBlock() != null) {
|
||||
+ return false;
|
||||
+ }
|
||||
+ if (!this.enderman.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING) && !this.enderman.level.purpurConfig.endermanBypassMobGriefing) {
|
||||
+ if (!this.enderman.level().getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING) && !this.enderman.level().purpurConfig.endermanBypassMobGriefing) {
|
||||
+ return false;
|
||||
+ }
|
||||
+ return this.enderman.getRandom().nextInt(reducedTickDelay(20)) == 0;
|
||||
@@ -195,36 +195,36 @@ index 757aa2e3fa1c4608f07adbff0f718ad8f04be475..643a3b83b7b7e173372e8ffa1607ea8b
|
||||
|
||||
@Override
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/monster/Evoker.java b/src/main/java/net/minecraft/world/entity/monster/Evoker.java
|
||||
index bbcbccaeb479cc61adab96da2670ca31a1fda740..b05bf61183379e1d6aadee4de0796eb43175c47c 100644
|
||||
index a2dc53d9ce6c3bc2278fa389a98f1506bbcccefa..eaf84c30701dbe8562e0d498f088f0461c53c442 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/monster/Evoker.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/monster/Evoker.java
|
||||
@@ -341,7 +341,7 @@ public class Evoker extends SpellcasterIllager {
|
||||
@@ -322,7 +322,7 @@ public class Evoker extends SpellcasterIllager {
|
||||
return false;
|
||||
} else if (Evoker.this.tickCount < this.nextAttackTickCount) {
|
||||
return false;
|
||||
- } else if (!Evoker.this.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) {
|
||||
+ } else if (!Evoker.this.level.purpurConfig.evokerBypassMobGriefing && !Evoker.this.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) { // Purpur
|
||||
- } else if (!Evoker.this.level().getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) {
|
||||
+ } else if (!Evoker.this.level().purpurConfig.evokerBypassMobGriefing && !Evoker.this.level().getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) { // Purpur
|
||||
return false;
|
||||
} else {
|
||||
List<Sheep> list = Evoker.this.level.getNearbyEntities(Sheep.class, this.wololoTargeting, Evoker.this, Evoker.this.getBoundingBox().inflate(16.0D, 4.0D, 16.0D));
|
||||
List<Sheep> list = Evoker.this.level().getNearbyEntities(Sheep.class, this.wololoTargeting, Evoker.this, Evoker.this.getBoundingBox().inflate(16.0D, 4.0D, 16.0D));
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/monster/Ravager.java b/src/main/java/net/minecraft/world/entity/monster/Ravager.java
|
||||
index 2d592307f42ede8a490c072da9ec796b2e356f0a..9c8ebbec20438401265d8049b33132f490e3c1ea 100644
|
||||
index 45ac92467b5cdadcc692c8867a52277e1754a934..26ca7b3ac44f24c324f0f97e0e2bb5ed62f3aa73 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/monster/Ravager.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/monster/Ravager.java
|
||||
@@ -190,7 +190,7 @@ public class Ravager extends Raider {
|
||||
@@ -165,7 +165,7 @@ public class Ravager extends Raider {
|
||||
this.getAttribute(Attributes.MOVEMENT_SPEED).setBaseValue(Mth.lerp(0.1D, d1, d0));
|
||||
}
|
||||
|
||||
- if (this.horizontalCollision && this.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) {
|
||||
+ if (this.horizontalCollision && (this.level.purpurConfig.ravagerBypassMobGriefing || this.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING))) { // Purpur
|
||||
- if (this.horizontalCollision && this.level().getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) {
|
||||
+ if (this.horizontalCollision && (this.level().purpurConfig.ravagerBypassMobGriefing || this.level().getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING))) { // Purpur
|
||||
boolean flag = false;
|
||||
AABB axisalignedbb = this.getBoundingBox().inflate(0.2D);
|
||||
Iterator iterator = BlockPos.betweenClosed(Mth.floor(axisalignedbb.minX), Mth.floor(axisalignedbb.minY), Mth.floor(axisalignedbb.minZ), Mth.floor(axisalignedbb.maxX), Mth.floor(axisalignedbb.maxY), Mth.floor(axisalignedbb.maxZ)).iterator();
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/monster/Silverfish.java b/src/main/java/net/minecraft/world/entity/monster/Silverfish.java
|
||||
index 77204ec0e18807dd46cadb515b07a919b1bee16b..a676bb029fc4575028ce6833e608e3169d2fc358 100644
|
||||
index 49a025b0ffb823bd92319bf3194a13f71ec03c32..2b51cd9052271575c0f7ecabe69a1cc88f7ce800 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/monster/Silverfish.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/monster/Silverfish.java
|
||||
@@ -208,7 +208,7 @@ public class Silverfish extends Monster {
|
||||
@@ -189,7 +189,7 @@ public class Silverfish extends Monster {
|
||||
continue;
|
||||
}
|
||||
// CraftBukkit end
|
||||
@@ -233,61 +233,61 @@ index 77204ec0e18807dd46cadb515b07a919b1bee16b..a676bb029fc4575028ce6833e608e316
|
||||
world.destroyBlock(blockposition1, true, this.silverfish);
|
||||
} else {
|
||||
world.setBlock(blockposition1, ((InfestedBlock) block).hostStateByInfested(world.getBlockState(blockposition1)), 3);
|
||||
@@ -246,7 +246,7 @@ public class Silverfish extends Monster {
|
||||
@@ -227,7 +227,7 @@ public class Silverfish extends Monster {
|
||||
} else {
|
||||
RandomSource randomsource = this.mob.getRandom();
|
||||
|
||||
- if (this.mob.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING) && randomsource.nextInt(reducedTickDelay(10)) == 0) {
|
||||
+ if ((this.mob.level.purpurConfig.silverfishBypassMobGriefing || this.mob.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) && randomsource.nextInt(reducedTickDelay(10)) == 0) { // Purpur
|
||||
- if (this.mob.level().getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING) && randomsource.nextInt(reducedTickDelay(10)) == 0) {
|
||||
+ if ((this.mob.level().purpurConfig.silverfishBypassMobGriefing || this.mob.level().getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) && randomsource.nextInt(reducedTickDelay(10)) == 0) { // Purpur
|
||||
this.selectedDirection = Direction.getRandom(randomsource);
|
||||
BlockPos blockposition = BlockPos.containing(this.mob.getX(), this.mob.getY() + 0.5D, this.mob.getZ()).relative(this.selectedDirection);
|
||||
BlockState iblockdata = this.mob.level.getBlockState(blockposition);
|
||||
BlockState iblockdata = this.mob.level().getBlockState(blockposition);
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java b/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java
|
||||
index c36b17a7f209ce5f2b366077a192c16fc389cbf7..5b93bd222895c493dbdbcfa134c91b5e4b315c47 100644
|
||||
index 7e1a46eba403e238c266680e9f1fae435a246e1c..20339cb8a1fa4ca0716c7362276fc0cb9add6dee 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java
|
||||
@@ -432,7 +432,7 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento
|
||||
@@ -410,7 +410,7 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento
|
||||
|
||||
@Override
|
||||
public boolean wantsToPickUp(ItemStack stack) {
|
||||
- return this.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING) && this.canPickUpLoot() && PiglinAi.wantsToPickup(this, stack);
|
||||
+ return (this.level.purpurConfig.piglinBypassMobGriefing || this.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) && this.canPickUpLoot() && PiglinAi.wantsToPickup(this, stack);
|
||||
- return this.level().getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING) && this.canPickUpLoot() && PiglinAi.wantsToPickup(this, stack);
|
||||
+ return (this.level().purpurConfig.piglinBypassMobGriefing || this.level().getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) && this.canPickUpLoot() && PiglinAi.wantsToPickup(this, stack);
|
||||
}
|
||||
|
||||
protected boolean canReplaceCurrentItem(ItemStack stack) {
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/projectile/LargeFireball.java b/src/main/java/net/minecraft/world/entity/projectile/LargeFireball.java
|
||||
index 4daa368881e4fa59a9365d7b3810ae7dc1455fa3..a4041580061b2acd150836a1437df66ebb4a62cb 100644
|
||||
index 251e6bc87eb02ec4372062ef22b21249ac5164ff..6b60597a0e837054b0d1891c1e6e5e7cd3af9539 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/projectile/LargeFireball.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/projectile/LargeFireball.java
|
||||
@@ -16,20 +16,20 @@ public class LargeFireball extends Fireball {
|
||||
|
||||
public LargeFireball(EntityType<? extends LargeFireball> type, Level world) {
|
||||
super(type, world);
|
||||
- isIncendiary = this.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING); // CraftBukkit
|
||||
+ isIncendiary = this.level.purpurConfig.fireballsBypassMobGriefing || this.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING); // CraftBukkit // Purpur
|
||||
- isIncendiary = this.level().getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING); // CraftBukkit
|
||||
+ isIncendiary = this.level().purpurConfig.fireballsBypassMobGriefing || this.level().getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING); // CraftBukkit // Purpur
|
||||
}
|
||||
|
||||
public LargeFireball(Level world, LivingEntity owner, double velocityX, double velocityY, double velocityZ, int explosionPower) {
|
||||
super(EntityType.FIREBALL, owner, velocityX, velocityY, velocityZ, world);
|
||||
this.explosionPower = explosionPower;
|
||||
- isIncendiary = this.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING); // CraftBukkit
|
||||
+ isIncendiary = this.level.purpurConfig.fireballsBypassMobGriefing || this.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING); // CraftBukkit // Purpur
|
||||
- isIncendiary = this.level().getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING); // CraftBukkit
|
||||
+ isIncendiary = this.level().purpurConfig.fireballsBypassMobGriefing || this.level().getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING); // CraftBukkit // Purpur
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onHit(HitResult hitResult) {
|
||||
super.onHit(hitResult);
|
||||
if (!this.level.isClientSide) {
|
||||
- boolean flag = this.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING);
|
||||
+ boolean flag = this.level.purpurConfig.fireballsBypassMobGriefing || this.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING); // Purpur
|
||||
if (!this.level().isClientSide) {
|
||||
- boolean flag = this.level().getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING);
|
||||
+ boolean flag = this.level().purpurConfig.fireballsBypassMobGriefing || this.level().getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING); // Purpur
|
||||
|
||||
// CraftBukkit start - fire ExplosionPrimeEvent
|
||||
ExplosionPrimeEvent event = new ExplosionPrimeEvent((org.bukkit.entity.Explosive) this.getBukkitEntity());
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/projectile/Projectile.java b/src/main/java/net/minecraft/world/entity/projectile/Projectile.java
|
||||
index 85260fd93ca8d5ffd0ba7a98f1d47093d58f0f87..505a60605ff2282f2c460c81464d60a433f41eda 100644
|
||||
index 1b7cf6d06bdf36f146656727511a461f2520762e..ddc84a02fa0dd7201925aa329b8101c6468b7dc6 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/projectile/Projectile.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/projectile/Projectile.java
|
||||
@@ -318,6 +318,6 @@ public abstract class Projectile extends Entity implements TraceableEntity {
|
||||
@@ -289,6 +289,6 @@ public abstract class Projectile extends Entity implements TraceableEntity {
|
||||
public boolean mayInteract(Level world, BlockPos pos) {
|
||||
Entity entity = this.getOwner();
|
||||
|
||||
@@ -296,33 +296,33 @@ index 85260fd93ca8d5ffd0ba7a98f1d47093d58f0f87..505a60605ff2282f2c460c81464d60a4
|
||||
}
|
||||
}
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/projectile/SmallFireball.java b/src/main/java/net/minecraft/world/entity/projectile/SmallFireball.java
|
||||
index b9e4955fecabbad8d6762f3d933ea1402e932d9b..895c501f8579799139239701703078ef060cd481 100644
|
||||
index 04c2ea1ff44af72ae48e2d6b7b912b1c14285038..7839d856b3f924f0c87b298d9a1e3b15ab0693d6 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/projectile/SmallFireball.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/projectile/SmallFireball.java
|
||||
@@ -24,7 +24,7 @@ public class SmallFireball extends Fireball {
|
||||
super(EntityType.SMALL_FIREBALL, owner, velocityX, velocityY, velocityZ, world);
|
||||
// CraftBukkit start
|
||||
if (this.getOwner() != null && this.getOwner() instanceof Mob) {
|
||||
- isIncendiary = this.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING);
|
||||
+ isIncendiary = this.level.purpurConfig.fireballsBypassMobGriefing || this.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING); // Purpur
|
||||
- isIncendiary = this.level().getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING);
|
||||
+ isIncendiary = this.level().purpurConfig.fireballsBypassMobGriefing || this.level().getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING); // Purpur
|
||||
}
|
||||
// CraftBukkit end
|
||||
}
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/raid/Raider.java b/src/main/java/net/minecraft/world/entity/raid/Raider.java
|
||||
index 99e9d46d42ddd0b451c6aeb847f1b295ebe5c697..f7b03dc1d5316aeb760a52d6f6c50e8aae5f978e 100644
|
||||
index 57fdcdaf54fd1c92a6e51a3a81789029096e5abe..822dd4265ce02252afadbc652064450b7dfd7e0d 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/raid/Raider.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/raid/Raider.java
|
||||
@@ -319,7 +319,7 @@ public abstract class Raider extends PatrollingMonster {
|
||||
|
||||
@Override
|
||||
public boolean canUse() {
|
||||
- if (!this.mob.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING) || !this.mob.canPickUpLoot()) return false; // Paper - respect game and entity rules for picking up items
|
||||
+ if ((!this.mob.level.purpurConfig.pillagerBypassMobGriefing && !this.mob.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) || !this.mob.canPickUpLoot()) return false; // Paper - respect game and entity rules for picking up items // Purpur
|
||||
- if (!this.mob.level().getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING) || !this.mob.canPickUpLoot()) return false; // Paper - respect game and entity rules for picking up items
|
||||
+ if ((!this.mob.level().purpurConfig.pillagerBypassMobGriefing && !this.mob.level().getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) || !this.mob.canPickUpLoot()) return false; // Paper - respect game and entity rules for picking up items // Purpur
|
||||
Raid raid = this.mob.getCurrentRaid();
|
||||
|
||||
if (this.mob.hasActiveRaid() && !this.mob.getCurrentRaid().isOver() && this.mob.canBeLeader() && !ItemStack.matches(this.mob.getItemBySlot(EquipmentSlot.HEAD), Raid.getLeaderBannerInstance())) {
|
||||
diff --git a/src/main/java/net/minecraft/world/level/block/CropBlock.java b/src/main/java/net/minecraft/world/level/block/CropBlock.java
|
||||
index a140fed067e7e6c1c42e111f47d3678863ef95ce..d78cb69c6b3fdc0883613c5cc53a38a7d31c0b76 100644
|
||||
index c463adf131c4ca6e38f18d4efd94f4629bcfafe9..cf7007cabe4ba7505f2728e79e4c56e2d1bc878b 100644
|
||||
--- a/src/main/java/net/minecraft/world/level/block/CropBlock.java
|
||||
+++ b/src/main/java/net/minecraft/world/level/block/CropBlock.java
|
||||
@@ -168,7 +168,7 @@ public class CropBlock extends BushBlock implements BonemealableBlock {
|
||||
@@ -335,10 +335,10 @@ index a140fed067e7e6c1c42e111f47d3678863ef95ce..d78cb69c6b3fdc0883613c5cc53a38a7
|
||||
}
|
||||
|
||||
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 8725ca6eec1becc401951a746a90f678e5edf7ac..f66a556e93469204e19baa5bf2decbf974701a5d 100644
|
||||
index d4e3a32a0f9b49bff64cb43d77727ce3cae95f09..090d232af0183c9c9ffeb4e75125514d827648f2 100644
|
||||
--- a/src/main/java/net/minecraft/world/level/block/FarmBlock.java
|
||||
+++ b/src/main/java/net/minecraft/world/level/block/FarmBlock.java
|
||||
@@ -100,7 +100,7 @@ public class FarmBlock extends Block {
|
||||
@@ -101,7 +101,7 @@ public class FarmBlock extends Block {
|
||||
@Override
|
||||
public void fallOn(Level world, BlockState state, BlockPos pos, Entity entity, float fallDistance) {
|
||||
super.fallOn(world, state, pos, entity, fallDistance); // CraftBukkit - moved here as game rules / events shouldn't affect fall damage.
|
||||
@@ -374,7 +374,7 @@ index 1942649e868fc985a488034c411a6721595ecc67..7495e0e8beedad59fff24ebf189b58b3
|
||||
}
|
||||
}
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index 0232f39eabedefbe0054a7e96d85fa7033da74f0..a30ad2eb176b748f77dc396043b397f462027943 100644
|
||||
index 9b19c4c3cbeeb635a854668158acdc7b0d7c8627..5c37a4221391f461d1d4b6bd8bed3a71d478c666 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -117,8 +117,11 @@ public class PurpurWorldConfig {
|
||||
@@ -425,7 +425,7 @@ index 0232f39eabedefbe0054a7e96d85fa7033da74f0..a30ad2eb176b748f77dc396043b397f4
|
||||
public boolean respawnAnchorExplode = true;
|
||||
public double respawnAnchorExplosionPower = 5.0D;
|
||||
public boolean respawnAnchorExplosionFire = true;
|
||||
@@ -511,10 +524,12 @@ public class PurpurWorldConfig {
|
||||
@@ -506,10 +519,12 @@ public class PurpurWorldConfig {
|
||||
public boolean turtleEggsBreakFromExpOrbs = true;
|
||||
public boolean turtleEggsBreakFromItems = true;
|
||||
public boolean turtleEggsBreakFromMinecarts = true;
|
||||
@@ -437,243 +437,236 @@ index 0232f39eabedefbe0054a7e96d85fa7033da74f0..a30ad2eb176b748f77dc396043b397f4
|
||||
+ turtleEggsBypassMobGriefing = getBoolean("blocks.turtle_egg.bypass-mob-griefing", turtleEggsBypassMobGriefing);
|
||||
}
|
||||
|
||||
public int waterInfiniteRequiredSources = 2;
|
||||
@@ -739,6 +754,7 @@ public class PurpurWorldConfig {
|
||||
public double axolotlMaxHealth = 14.0D;
|
||||
@@ -657,6 +672,7 @@ public class PurpurWorldConfig {
|
||||
public double creeperMaxHealth = 20.0D;
|
||||
public double creeperChargedChance = 0.0D;
|
||||
public boolean creeperAllowGriefing = true;
|
||||
+ public boolean creeperBypassMobGriefing = false;
|
||||
private void creeperSettings() {
|
||||
creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable);
|
||||
creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater);
|
||||
@@ -751,6 +767,7 @@ public class PurpurWorldConfig {
|
||||
if (PurpurConfig.version < 10) {
|
||||
double oldValue = getDouble("mobs.creeper.attributes.max-health", creeperMaxHealth);
|
||||
@@ -666,6 +682,7 @@ public class PurpurWorldConfig {
|
||||
creeperMaxHealth = getDouble("mobs.creeper.attributes.max_health", creeperMaxHealth);
|
||||
creeperChargedChance = getDouble("mobs.creeper.naturally-charged-chance", creeperChargedChance);
|
||||
creeperAllowGriefing = getBoolean("mobs.creeper.allow-griefing", creeperAllowGriefing);
|
||||
+ creeperBypassMobGriefing = getBoolean("mobs.creeper.bypass-mob-griefing", creeperBypassMobGriefing);
|
||||
}
|
||||
|
||||
public boolean dolphinRidable = false;
|
||||
@@ -845,6 +862,7 @@ public class PurpurWorldConfig {
|
||||
public double enderDragonMaxY = 320D;
|
||||
public double dolphinMaxHealth = 10.0D;
|
||||
@@ -734,6 +751,7 @@ public class PurpurWorldConfig {
|
||||
|
||||
public double enderDragonMaxHealth = 200.0D;
|
||||
public boolean enderDragonAlwaysDropsFullExp = false;
|
||||
+ public boolean enderDragonBypassMobGriefing = false;
|
||||
private void enderDragonSettings() {
|
||||
enderDragonRidable = getBoolean("mobs.ender_dragon.ridable", enderDragonRidable);
|
||||
enderDragonRidableInWater = getBoolean("mobs.ender_dragon.ridable-in-water", enderDragonRidableInWater);
|
||||
@@ -861,6 +879,7 @@ public class PurpurWorldConfig {
|
||||
if (PurpurConfig.version < 8) {
|
||||
double oldValue = getDouble("mobs.ender_dragon.max-health", enderDragonMaxHealth);
|
||||
@@ -746,11 +764,13 @@ public class PurpurWorldConfig {
|
||||
}
|
||||
enderDragonMaxHealth = getDouble("mobs.ender_dragon.attributes.max_health", enderDragonMaxHealth);
|
||||
enderDragonAlwaysDropsFullExp = getBoolean("mobs.ender_dragon.always-drop-full-exp", enderDragonAlwaysDropsFullExp);
|
||||
+ enderDragonBypassMobGriefing = getBoolean("mobs.ender_dragon.bypass-mob-griefing", enderDragonBypassMobGriefing);
|
||||
}
|
||||
|
||||
public boolean endermanRidable = false;
|
||||
@@ -869,6 +888,7 @@ public class PurpurWorldConfig {
|
||||
public double endermanMaxHealth = 40.0D;
|
||||
public boolean endermanAllowGriefing = true;
|
||||
public boolean endermanDespawnEvenWithBlock = false;
|
||||
+ public boolean endermanBypassMobGriefing = false;
|
||||
private void endermanSettings() {
|
||||
endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable);
|
||||
endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater);
|
||||
@@ -881,6 +901,7 @@ public class PurpurWorldConfig {
|
||||
if (PurpurConfig.version < 10) {
|
||||
double oldValue = getDouble("mobs.enderman.attributes.max-health", endermanMaxHealth);
|
||||
@@ -760,6 +780,7 @@ public class PurpurWorldConfig {
|
||||
endermanMaxHealth = getDouble("mobs.enderman.attributes.max_health", endermanMaxHealth);
|
||||
endermanAllowGriefing = getBoolean("mobs.enderman.allow-griefing", endermanAllowGriefing);
|
||||
endermanDespawnEvenWithBlock = getBoolean("mobs.enderman.can-despawn-with-held-block", endermanDespawnEvenWithBlock);
|
||||
+ endermanBypassMobGriefing = getBoolean("mobs.enderman.bypass-mob-griefing", endermanBypassMobGriefing);
|
||||
}
|
||||
|
||||
public boolean endermiteRidable = false;
|
||||
@@ -903,6 +924,7 @@ public class PurpurWorldConfig {
|
||||
public boolean evokerRidableInWater = true;
|
||||
public boolean evokerControllable = true;
|
||||
public double endermiteMaxHealth = 8.0D;
|
||||
@@ -773,6 +794,7 @@ public class PurpurWorldConfig {
|
||||
}
|
||||
|
||||
public double evokerMaxHealth = 24.0D;
|
||||
+ public boolean evokerBypassMobGriefing = false;
|
||||
private void evokerSettings() {
|
||||
evokerRidable = getBoolean("mobs.evoker.ridable", evokerRidable);
|
||||
evokerRidableInWater = getBoolean("mobs.evoker.ridable-in-water", evokerRidableInWater);
|
||||
@@ -913,6 +935,7 @@ public class PurpurWorldConfig {
|
||||
if (PurpurConfig.version < 10) {
|
||||
double oldValue = getDouble("mobs.evoker.attributes.max-health", evokerMaxHealth);
|
||||
@@ -780,11 +802,13 @@ public class PurpurWorldConfig {
|
||||
set("mobs.evoker.attributes.max_health", oldValue);
|
||||
}
|
||||
evokerMaxHealth = getDouble("mobs.evoker.attributes.max_health", evokerMaxHealth);
|
||||
+ evokerBypassMobGriefing = getBoolean("mobs.evoker.bypass-mob-griefing", evokerBypassMobGriefing);
|
||||
}
|
||||
|
||||
public boolean foxRidable = false;
|
||||
@@ -921,6 +944,7 @@ public class PurpurWorldConfig {
|
||||
public double foxMaxHealth = 10.0D;
|
||||
public boolean foxTypeChangesWithTulips = false;
|
||||
public int foxBreedingTicks = 6000;
|
||||
+ public boolean foxBypassMobGriefing = false;
|
||||
private void foxSettings() {
|
||||
foxRidable = getBoolean("mobs.fox.ridable", foxRidable);
|
||||
foxRidableInWater = getBoolean("mobs.fox.ridable-in-water", foxRidableInWater);
|
||||
@@ -933,6 +957,7 @@ public class PurpurWorldConfig {
|
||||
if (PurpurConfig.version < 10) {
|
||||
double oldValue = getDouble("mobs.fox.attributes.max-health", foxMaxHealth);
|
||||
@@ -794,6 +818,7 @@ public class PurpurWorldConfig {
|
||||
foxMaxHealth = getDouble("mobs.fox.attributes.max_health", foxMaxHealth);
|
||||
foxTypeChangesWithTulips = getBoolean("mobs.fox.tulips-change-type", foxTypeChangesWithTulips);
|
||||
foxBreedingTicks = getInt("mobs.fox.breeding-delay-ticks", foxBreedingTicks);
|
||||
+ foxBypassMobGriefing = getBoolean("mobs.fox.bypass-mob-griefing", foxBypassMobGriefing);
|
||||
}
|
||||
|
||||
public boolean frogRidable = false;
|
||||
@@ -1380,6 +1405,7 @@ public class PurpurWorldConfig {
|
||||
public boolean piglinRidableInWater = true;
|
||||
public boolean piglinControllable = true;
|
||||
public int frogBreedingTicks = 6000;
|
||||
@@ -1114,6 +1139,7 @@ public class PurpurWorldConfig {
|
||||
}
|
||||
|
||||
public double piglinMaxHealth = 16.0D;
|
||||
+ public boolean piglinBypassMobGriefing = false;
|
||||
private void piglinSettings() {
|
||||
piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable);
|
||||
piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater);
|
||||
@@ -1390,6 +1416,7 @@ public class PurpurWorldConfig {
|
||||
if (PurpurConfig.version < 10) {
|
||||
double oldValue = getDouble("mobs.piglin.attributes.max-health", piglinMaxHealth);
|
||||
@@ -1121,6 +1147,7 @@ public class PurpurWorldConfig {
|
||||
set("mobs.piglin.attributes.max_health", oldValue);
|
||||
}
|
||||
piglinMaxHealth = getDouble("mobs.piglin.attributes.max_health", piglinMaxHealth);
|
||||
+ piglinBypassMobGriefing = getBoolean("mobs.piglin.bypass-mob-griefing", piglinBypassMobGriefing);
|
||||
}
|
||||
|
||||
public boolean piglinBruteRidable = false;
|
||||
@@ -1412,6 +1439,7 @@ public class PurpurWorldConfig {
|
||||
public boolean pillagerRidableInWater = true;
|
||||
public boolean pillagerControllable = true;
|
||||
public double piglinBruteMaxHealth = 50.0D;
|
||||
@@ -1134,6 +1161,7 @@ public class PurpurWorldConfig {
|
||||
}
|
||||
|
||||
public double pillagerMaxHealth = 24.0D;
|
||||
+ public boolean pillagerBypassMobGriefing = false;
|
||||
private void pillagerSettings() {
|
||||
pillagerRidable = getBoolean("mobs.pillager.ridable", pillagerRidable);
|
||||
pillagerRidableInWater = getBoolean("mobs.pillager.ridable-in-water", pillagerRidableInWater);
|
||||
@@ -1422,6 +1450,7 @@ public class PurpurWorldConfig {
|
||||
if (PurpurConfig.version < 10) {
|
||||
double oldValue = getDouble("mobs.pillager.attributes.max-health", pillagerMaxHealth);
|
||||
@@ -1141,6 +1169,7 @@ public class PurpurWorldConfig {
|
||||
set("mobs.pillager.attributes.max_health", oldValue);
|
||||
}
|
||||
pillagerMaxHealth = getDouble("mobs.pillager.attributes.max_health", pillagerMaxHealth);
|
||||
+ pillagerBypassMobGriefing = getBoolean("mobs.pillager.bypass-mob-griefing", pillagerBypassMobGriefing);
|
||||
}
|
||||
|
||||
public boolean polarBearRidable = false;
|
||||
@@ -1468,6 +1497,7 @@ public class PurpurWorldConfig {
|
||||
public double polarBearMaxHealth = 30.0D;
|
||||
@@ -1174,6 +1203,7 @@ public class PurpurWorldConfig {
|
||||
public double rabbitNaturalToast = 0.0D;
|
||||
public double rabbitNaturalKiller = 0.0D;
|
||||
public int rabbitBreedingTicks = 6000;
|
||||
+ public boolean rabbitBypassMobGriefing = false;
|
||||
private void rabbitSettings() {
|
||||
rabbitRidable = getBoolean("mobs.rabbit.ridable", rabbitRidable);
|
||||
rabbitRidableInWater = getBoolean("mobs.rabbit.ridable-in-water", rabbitRidableInWater);
|
||||
@@ -1481,12 +1511,14 @@ public class PurpurWorldConfig {
|
||||
if (PurpurConfig.version < 10) {
|
||||
double oldValue = getDouble("mobs.rabbit.attributes.max-health", rabbitMaxHealth);
|
||||
@@ -1184,9 +1214,11 @@ public class PurpurWorldConfig {
|
||||
rabbitNaturalToast = getDouble("mobs.rabbit.spawn-toast-chance", rabbitNaturalToast);
|
||||
rabbitNaturalKiller = getDouble("mobs.rabbit.spawn-killer-rabbit-chance", rabbitNaturalKiller);
|
||||
rabbitBreedingTicks = getInt("mobs.rabbit.breeding-delay-ticks", rabbitBreedingTicks);
|
||||
+ rabbitBypassMobGriefing = getBoolean("mobs.rabbit.bypass-mob-griefing", rabbitBypassMobGriefing);
|
||||
}
|
||||
|
||||
public boolean ravagerRidable = false;
|
||||
public boolean ravagerRidableInWater = false;
|
||||
public boolean ravagerControllable = true;
|
||||
public double ravagerMaxHealth = 100.0D;
|
||||
+ public boolean ravagerBypassMobGriefing = false;
|
||||
private void ravagerSettings() {
|
||||
ravagerRidable = getBoolean("mobs.ravager.ridable", ravagerRidable);
|
||||
ravagerRidableInWater = getBoolean("mobs.ravager.ridable-in-water", ravagerRidableInWater);
|
||||
@@ -1497,6 +1529,7 @@ public class PurpurWorldConfig {
|
||||
if (PurpurConfig.version < 10) {
|
||||
double oldValue = getDouble("mobs.ravager.attributes.max-health", ravagerMaxHealth);
|
||||
@@ -1194,6 +1226,7 @@ public class PurpurWorldConfig {
|
||||
set("mobs.ravager.attributes.max_health", oldValue);
|
||||
}
|
||||
ravagerMaxHealth = getDouble("mobs.ravager.attributes.max_health", ravagerMaxHealth);
|
||||
+ ravagerBypassMobGriefing = getBoolean("mobs.ravager.bypass-mob-griefing", ravagerBypassMobGriefing);
|
||||
}
|
||||
|
||||
public boolean salmonRidable = false;
|
||||
@@ -1518,6 +1551,7 @@ public class PurpurWorldConfig {
|
||||
public boolean sheepControllable = true;
|
||||
public double salmonMaxHealth = 3.0D;
|
||||
@@ -1208,6 +1241,7 @@ public class PurpurWorldConfig {
|
||||
|
||||
public double sheepMaxHealth = 8.0D;
|
||||
public int sheepBreedingTicks = 6000;
|
||||
+ public boolean sheepBypassMobGriefing = false;
|
||||
private void sheepSettings() {
|
||||
sheepRidable = getBoolean("mobs.sheep.ridable", sheepRidable);
|
||||
sheepRidableInWater = getBoolean("mobs.sheep.ridable-in-water", sheepRidableInWater);
|
||||
@@ -1529,6 +1563,7 @@ public class PurpurWorldConfig {
|
||||
if (PurpurConfig.version < 10) {
|
||||
double oldValue = getDouble("mobs.sheep.attributes.max-health", sheepMaxHealth);
|
||||
@@ -1216,6 +1250,7 @@ public class PurpurWorldConfig {
|
||||
}
|
||||
sheepMaxHealth = getDouble("mobs.sheep.attributes.max_health", sheepMaxHealth);
|
||||
sheepBreedingTicks = getInt("mobs.sheep.breeding-delay-ticks", sheepBreedingTicks);
|
||||
+ sheepBypassMobGriefing = getBoolean("mobs.sheep.bypass-mob-griefing", sheepBypassMobGriefing);
|
||||
}
|
||||
|
||||
public boolean shulkerRidable = false;
|
||||
@@ -1551,6 +1586,7 @@ public class PurpurWorldConfig {
|
||||
public boolean silverfishRidableInWater = true;
|
||||
public boolean silverfishControllable = true;
|
||||
public double shulkerMaxHealth = 30.0D;
|
||||
@@ -1229,6 +1264,7 @@ public class PurpurWorldConfig {
|
||||
}
|
||||
|
||||
public double silverfishMaxHealth = 8.0D;
|
||||
+ public boolean silverfishBypassMobGriefing = false;
|
||||
private void silverfishSettings() {
|
||||
silverfishRidable = getBoolean("mobs.silverfish.ridable", silverfishRidable);
|
||||
silverfishRidableInWater = getBoolean("mobs.silverfish.ridable-in-water", silverfishRidableInWater);
|
||||
@@ -1561,6 +1597,7 @@ public class PurpurWorldConfig {
|
||||
if (PurpurConfig.version < 10) {
|
||||
double oldValue = getDouble("mobs.silverfish.attributes.max-health", silverfishMaxHealth);
|
||||
@@ -1236,6 +1272,7 @@ public class PurpurWorldConfig {
|
||||
set("mobs.silverfish.attributes.max_health", oldValue);
|
||||
}
|
||||
silverfishMaxHealth = getDouble("mobs.silverfish.attributes.max_health", silverfishMaxHealth);
|
||||
+ silverfishBypassMobGriefing = getBoolean("mobs.silverfish.bypass-mob-griefing", silverfishBypassMobGriefing);
|
||||
}
|
||||
|
||||
public boolean skeletonRidable = false;
|
||||
@@ -1637,6 +1674,7 @@ public class PurpurWorldConfig {
|
||||
public double skeletonMaxHealth = 20.0D;
|
||||
@@ -1293,6 +1330,7 @@ public class PurpurWorldConfig {
|
||||
public int snowGolemSnowBallMax = 20;
|
||||
public float snowGolemSnowBallModifier = 10.0F;
|
||||
public double snowGolemAttackDistance = 1.25D;
|
||||
+ public boolean snowGolemBypassMobGriefing = false;
|
||||
private void snowGolemSettings() {
|
||||
snowGolemRidable = getBoolean("mobs.snow_golem.ridable", snowGolemRidable);
|
||||
snowGolemRidableInWater = getBoolean("mobs.snow_golem.ridable-in-water", snowGolemRidableInWater);
|
||||
@@ -1654,6 +1692,7 @@ public class PurpurWorldConfig {
|
||||
snowGolemLeaveTrailWhenRidden = getBoolean("mobs.snow_golem.leave-trail-when-ridden", snowGolemLeaveTrailWhenRidden);
|
||||
if (PurpurConfig.version < 10) {
|
||||
@@ -1307,6 +1345,7 @@ public class PurpurWorldConfig {
|
||||
snowGolemSnowBallMax = getInt("mobs.snow_golem.max-shoot-interval-ticks", snowGolemSnowBallMax);
|
||||
snowGolemSnowBallModifier = (float) getDouble("mobs.snow_golem.snow-ball-modifier", snowGolemSnowBallModifier);
|
||||
snowGolemAttackDistance = getDouble("mobs.snow_golem.attack-distance", snowGolemAttackDistance);
|
||||
+ snowGolemBypassMobGriefing = getBoolean("mobs.snow_golem.bypass-mob-griefing", snowGolemBypassMobGriefing);
|
||||
}
|
||||
|
||||
public boolean snifferRidable = false;
|
||||
@@ -1840,6 +1879,7 @@ public class PurpurWorldConfig {
|
||||
public double snifferMaxHealth = 14.0D;
|
||||
@@ -1429,6 +1468,7 @@ public class PurpurWorldConfig {
|
||||
public boolean villagerCanBeLeashed = false;
|
||||
public boolean villagerCanBreed = true;
|
||||
public int villagerBreedingTicks = 6000;
|
||||
public boolean villagerClericsFarmWarts = false;
|
||||
public boolean villagerClericFarmersThrowWarts = true;
|
||||
+ public boolean villagerBypassMobGriefing = false;
|
||||
private void villagerSettings() {
|
||||
villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable);
|
||||
villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater);
|
||||
@@ -1856,6 +1896,7 @@ public class PurpurWorldConfig {
|
||||
if (PurpurConfig.version < 10) {
|
||||
double oldValue = getDouble("mobs.villager.attributes.max-health", villagerMaxHealth);
|
||||
@@ -1440,6 +1480,7 @@ public class PurpurWorldConfig {
|
||||
villagerCanBeLeashed = getBoolean("mobs.villager.can-be-leashed", villagerCanBeLeashed);
|
||||
villagerCanBreed = getBoolean("mobs.villager.can-breed", villagerCanBreed);
|
||||
villagerBreedingTicks = getInt("mobs.villager.breeding-delay-ticks", villagerBreedingTicks);
|
||||
villagerClericsFarmWarts = getBoolean("mobs.villager.clerics-farm-warts", villagerClericsFarmWarts);
|
||||
villagerClericFarmersThrowWarts = getBoolean("mobs.villager.cleric-wart-farmers-throw-warts-at-villagers", villagerClericFarmersThrowWarts);
|
||||
+ villagerBypassMobGriefing = getBoolean("mobs.villager.bypass-mob-griefing", villagerBypassMobGriefing);
|
||||
}
|
||||
|
||||
public boolean vindicatorRidable = false;
|
||||
@@ -1928,6 +1969,7 @@ public class PurpurWorldConfig {
|
||||
public double vindicatorMaxHealth = 24.0D;
|
||||
@@ -1481,6 +1522,7 @@ public class PurpurWorldConfig {
|
||||
public double witherMaxHealth = 300.0D;
|
||||
public float witherHealthRegenAmount = 1.0f;
|
||||
public int witherHealthRegenDelay = 20;
|
||||
+ public boolean witherBypassMobGriefing = false;
|
||||
private void witherSettings() {
|
||||
witherRidable = getBoolean("mobs.wither.ridable", witherRidable);
|
||||
witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater);
|
||||
@@ -1945,6 +1987,7 @@ public class PurpurWorldConfig {
|
||||
if (PurpurConfig.version < 8) {
|
||||
double oldValue = getDouble("mobs.wither.max-health", witherMaxHealth);
|
||||
@@ -1494,6 +1536,7 @@ public class PurpurWorldConfig {
|
||||
witherMaxHealth = getDouble("mobs.wither.attributes.max_health", witherMaxHealth);
|
||||
witherHealthRegenAmount = (float) getDouble("mobs.wither.health-regen-amount", witherHealthRegenAmount);
|
||||
witherHealthRegenDelay = getInt("mobs.wither.health-regen-delay", witherHealthRegenDelay);
|
||||
+ witherBypassMobGriefing = getBoolean("mobs.wither.bypass-mob-griefing", witherBypassMobGriefing);
|
||||
}
|
||||
|
||||
public boolean witherSkeletonRidable = false;
|
||||
@@ -2016,6 +2059,7 @@ public class PurpurWorldConfig {
|
||||
public double witherSkeletonMaxHealth = 20.0D;
|
||||
@@ -1544,6 +1587,7 @@ public class PurpurWorldConfig {
|
||||
public double zombieJockeyChance = 0.05D;
|
||||
public boolean zombieJockeyTryExistingChickens = true;
|
||||
public boolean zombieAggressiveTowardsVillagerWhenLagging = true;
|
||||
+ public boolean zombieBypassMobGriefing = false;
|
||||
private void zombieSettings() {
|
||||
zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable);
|
||||
zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater);
|
||||
@@ -2031,6 +2075,7 @@ public class PurpurWorldConfig {
|
||||
if (PurpurConfig.version < 10) {
|
||||
double oldValue = getDouble("mobs.zombie.attributes.max-health", zombieMaxHealth);
|
||||
@@ -1556,6 +1600,7 @@ public class PurpurWorldConfig {
|
||||
zombieJockeyChance = getDouble("mobs.zombie.jockey.chance", zombieJockeyChance);
|
||||
zombieJockeyTryExistingChickens = getBoolean("mobs.zombie.jockey.try-existing-chickens", zombieJockeyTryExistingChickens);
|
||||
zombieAggressiveTowardsVillagerWhenLagging = getBoolean("mobs.zombie.aggressive-towards-villager-when-lagging", zombieAggressiveTowardsVillagerWhenLagging);
|
||||
+ zombieBypassMobGriefing = getBoolean("mobs.zombie.bypass-mob-griefing", zombieBypassMobGriefing);
|
||||
}
|
||||
|
||||
public boolean zombieHorseRidableInWater = false;
|
||||
public double zombieHorseMaxHealthMin = 15.0D;
|
||||
@@ -9,20 +9,20 @@ Normally, the sounds will only play when the block directly above is air.
|
||||
With this patch enabled, players can place any block above the Note Block and it will still work.
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/level/block/NoteBlock.java b/src/main/java/net/minecraft/world/level/block/NoteBlock.java
|
||||
index 42e8e2d9d673947ecbfb55e0f31fc22afe3223b6..0b5ce2db558e721807944d9d0f672a77ce2a7fe0 100644
|
||||
index 6bc29eeb5771a3dc9aa23c7d184c895717797b36..244857755f269eedd57d1c8d4657b4b4b75de2e5 100644
|
||||
--- a/src/main/java/net/minecraft/world/level/block/NoteBlock.java
|
||||
+++ b/src/main/java/net/minecraft/world/level/block/NoteBlock.java
|
||||
@@ -91,7 +91,7 @@ public class NoteBlock extends Block {
|
||||
@@ -87,7 +87,7 @@ public class NoteBlock extends Block {
|
||||
}
|
||||
|
||||
private void playNote(@Nullable Entity entity, BlockState state, Level world, BlockPos pos) {
|
||||
- if (!((NoteBlockInstrument) state.getValue(NoteBlock.INSTRUMENT)).requiresAirAbove() || world.getBlockState(pos.above()).isAir()) {
|
||||
+ if (world.purpurConfig.noteBlockIgnoreAbove || !((NoteBlockInstrument) state.getValue(NoteBlock.INSTRUMENT)).requiresAirAbove() || world.getBlockState(pos.above()).isAir()) { // Purpur
|
||||
- if (((NoteBlockInstrument) state.getValue(NoteBlock.INSTRUMENT)).worksAboveNoteBlock() || world.getBlockState(pos.above()).isAir()) {
|
||||
+ if (world.purpurConfig.noteBlockIgnoreAbove || ((NoteBlockInstrument) state.getValue(NoteBlock.INSTRUMENT)).worksAboveNoteBlock() || world.getBlockState(pos.above()).isAir()) { // Purpur
|
||||
// CraftBukkit start
|
||||
// org.bukkit.event.block.NotePlayEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.callNotePlayEvent(world, pos, state.getValue(NoteBlock.INSTRUMENT), state.getValue(NoteBlock.NOTE));
|
||||
// if (event.isCancelled()) {
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index a30ad2eb176b748f77dc396043b397f462027943..a5eb4756b750196847899b52cd390e8d1cbcbeeb 100644
|
||||
index 5c37a4221391f461d1d4b6bd8bed3a71d478c666..f8ff580c6cfccae2472a705d9a5f477cfe53e98f 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -120,6 +120,7 @@ public class PurpurWorldConfig {
|
||||
@@ -55,7 +55,7 @@ index a6ab0d0defc05e56a91084c49897059670a1324b..2c085c4a154cb0f8a1d38453f43474a7
|
||||
EntityPortalEnterEvent event = new EntityPortalEnterEvent(entity.getBukkitEntity(), new org.bukkit.Location(world.getWorld(), pos.getX(), pos.getY(), pos.getZ()));
|
||||
world.getCraftServer().getPluginManager().callEvent(event);
|
||||
diff --git a/src/main/java/net/minecraft/world/level/block/entity/TheEndGatewayBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/TheEndGatewayBlockEntity.java
|
||||
index e9466871a329c47204b251263e3922b8f1f9c176..a4cd9869988f414ce1bf14d38442f78207e3f048 100644
|
||||
index 678c4527ddc7032a07e7d74cc160ddcb8810abbf..c370461d434005dc5394053713e039d9f6395bb0 100644
|
||||
--- a/src/main/java/net/minecraft/world/level/block/entity/TheEndGatewayBlockEntity.java
|
||||
+++ b/src/main/java/net/minecraft/world/level/block/entity/TheEndGatewayBlockEntity.java
|
||||
@@ -179,6 +179,14 @@ public class TheEndGatewayBlockEntity extends TheEndPortalBlockEntity {
|
||||
@@ -74,7 +74,7 @@ index e9466871a329c47204b251263e3922b8f1f9c176..a4cd9869988f414ce1bf14d38442f782
|
||||
|
||||
blockEntity.teleportCooldown = 100;
|
||||
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
|
||||
index a4644b1d9abb7ffeda89801e4562a078ffe43288..ef683027bc840999d70420b2d6c751ca07c168e9 100644
|
||||
index ea056babe2f8123f20dc608d8a636da1de634b8c..285d58cfa0ea899e2a7583d1ca308872e68f18c9 100644
|
||||
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
|
||||
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
|
||||
@@ -586,6 +586,10 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
|
||||
@@ -89,10 +89,10 @@ index a4644b1d9abb7ffeda89801e4562a078ffe43288..ef683027bc840999d70420b2d6c751ca
|
||||
}
|
||||
|
||||
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
||||
index e323c7238e481e9e64748792f734a40dcab9e6f6..a87fc2fa8399a4f117ef966f482c693747d6b08b 100644
|
||||
index cf82afb7949a0031c1b656149e583c4075362211..d65147f864dc75475cbb893fdcc9b391538b7c3c 100644
|
||||
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
||||
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
||||
@@ -1363,6 +1363,10 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
@@ -1336,6 +1336,10 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
}
|
||||
|
||||
if (entity.isVehicle() && !ignorePassengers) { // Paper - Teleport API
|
||||
@@ -104,7 +104,7 @@ index e323c7238e481e9e64748792f734a40dcab9e6f6..a87fc2fa8399a4f117ef966f482c6937
|
||||
}
|
||||
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index a5eb4756b750196847899b52cd390e8d1cbcbeeb..8ef0190cbfc88cd74ea43cd5669b4dd1350a5df4 100644
|
||||
index f8ff580c6cfccae2472a705d9a5f477cfe53e98f..d43c3ed34d8d7a79f0260e9a83c0435365d65285 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -119,6 +119,7 @@ public class PurpurWorldConfig {
|
||||
@@ -12,10 +12,10 @@ necessary to trample in the first place. Feather Falling 1 requires
|
||||
you to fall over 3+ blocks to trample. FF 2 requires 4+, etc.
|
||||
|
||||
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 f66a556e93469204e19baa5bf2decbf974701a5d..eed062c9cf1103d7ac96695e3620d4276edcd2aa 100644
|
||||
index 090d232af0183c9c9ffeb4e75125514d827648f2..1064a13f37b991e60213b052e252a183b8340449 100644
|
||||
--- a/src/main/java/net/minecraft/world/level/block/FarmBlock.java
|
||||
+++ b/src/main/java/net/minecraft/world/level/block/FarmBlock.java
|
||||
@@ -115,12 +115,20 @@ public class FarmBlock extends Block {
|
||||
@@ -116,12 +116,20 @@ public class FarmBlock extends Block {
|
||||
}
|
||||
|
||||
// Purpur start
|
||||
@@ -37,7 +37,7 @@ index f66a556e93469204e19baa5bf2decbf974701a5d..eed062c9cf1103d7ac96695e3620d427
|
||||
if (CraftEventFactory.callEntityChangeBlockEvent(entity, pos, Blocks.DIRT.defaultBlockState()).isCancelled()) {
|
||||
return;
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index 8ef0190cbfc88cd74ea43cd5669b4dd1350a5df4..9336f5e5435e12f95c9e361a214a45584359ca56 100644
|
||||
index d43c3ed34d8d7a79f0260e9a83c0435365d65285..e4451d20bac90334ebe4b7ed4432c4f3208f1ba9 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -463,10 +463,16 @@ public class PurpurWorldConfig {
|
||||
@@ -17,10 +17,10 @@ You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
|
||||
index d1d2c0ea830fc3e4b5ac1be59a70fd551ad8c9b3..c1112da2671095f0ebc69fcb28fff90cf1cd3025 100644
|
||||
index 091702e3946effa1177c1521f7c8c25f611e5c88..91962f4b2259d2ae6e1fcb149fc299f6e2875cf5 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/Entity.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
|
||||
@@ -1747,7 +1747,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
|
||||
@@ -1795,7 +1795,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
|
||||
return this.isInWater() || flag;
|
||||
}
|
||||
|
||||
@@ -30,7 +30,7 @@ index d1d2c0ea830fc3e4b5ac1be59a70fd551ad8c9b3..c1112da2671095f0ebc69fcb28fff90c
|
||||
|
||||
if (entity instanceof Boat) {
|
||||
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 5b4523320de59167bd5864b2f17187590afb5ad6..88949e8ca7e4a5e74a8a365bb1aa6d466d3f8ddd 100644
|
||||
index 1406cdd79c7183522f1f5c0b0edc6166ff9d4ed9..cfe4c6f3316a9bcb3fb77bbb839525bed5527b17 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java
|
||||
@@ -99,10 +99,12 @@ public class ArmorStand extends LivingEntity {
|
||||
@@ -46,7 +46,7 @@ index 5b4523320de59167bd5864b2f17187590afb5ad6..88949e8ca7e4a5e74a8a365bb1aa6d46
|
||||
this.handItems = NonNullList.withSize(2, ItemStack.EMPTY);
|
||||
this.armorItems = NonNullList.withSize(4, ItemStack.EMPTY);
|
||||
this.headPose = ArmorStand.DEFAULT_HEAD_POSE;
|
||||
@@ -1007,4 +1009,18 @@ public class ArmorStand extends LivingEntity {
|
||||
@@ -1006,4 +1008,18 @@ public class ArmorStand extends LivingEntity {
|
||||
}
|
||||
// Paper end
|
||||
// Paper end
|
||||
@@ -66,7 +66,7 @@ index 5b4523320de59167bd5864b2f17187590afb5ad6..88949e8ca7e4a5e74a8a365bb1aa6d46
|
||||
+ // Purpur end
|
||||
}
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index 9336f5e5435e12f95c9e361a214a45584359ca56..24ce48b5aef4f1a59506f9a17af3a3333cb1ebbe 100644
|
||||
index e4451d20bac90334ebe4b7ed4432c4f3208f1ba9..06f3e9e32eec5cb7ea109b8bee3f99d2b7807f13 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -101,10 +101,16 @@ public class PurpurWorldConfig {
|
||||
@@ -5,22 +5,22 @@ Subject: [PATCH] Fix stuck in portals
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
||||
index cbf30bd3fe91d2bc386af16a9322f50e12593c2b..cb12b41ec62e49c500491beaf3d7b49603ada88e 100644
|
||||
index 6ffa173574cd07e547c18ef89f0a733a526735eb..e81f439727dea8073044abec5f99fbe1220fb279 100644
|
||||
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
||||
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
||||
@@ -1230,6 +1230,7 @@ public class ServerPlayer extends Player {
|
||||
@@ -1262,6 +1262,7 @@ public class ServerPlayer extends Player {
|
||||
playerlist.sendPlayerPermissionLevel(this);
|
||||
worldserver1.removePlayerImmediately(this, Entity.RemovalReason.CHANGED_DIMENSION);
|
||||
this.unsetRemoved();
|
||||
+ this.portalPos = io.papermc.paper.util.MCUtil.toBlockPosition(exit); // Purpur
|
||||
|
||||
// CraftBukkit end
|
||||
this.setLevel(worldserver);
|
||||
this.setServerLevel(worldserver);
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
|
||||
index c1112da2671095f0ebc69fcb28fff90cf1cd3025..fa3258b69770d91aebbf181f5c19690e166f9df2 100644
|
||||
index 91962f4b2259d2ae6e1fcb149fc299f6e2875cf5..c6157d80118ad936d677651083dcde6724667434 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/Entity.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
|
||||
@@ -2939,12 +2939,15 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
|
||||
@@ -2981,12 +2981,15 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
|
||||
return Vec3.directionFromRotation(this.getRotationVector());
|
||||
}
|
||||
|
||||
@@ -30,14 +30,14 @@ index c1112da2671095f0ebc69fcb28fff90cf1cd3025..fa3258b69770d91aebbf181f5c19690e
|
||||
+ if (!(level.purpurConfig.playerFixStuckPortal && this instanceof Player && !pos.equals(portalPos))) // Purpur
|
||||
this.setPortalCooldown();
|
||||
} else if (level.purpurConfig.entitiesCanUsePortals || this instanceof ServerPlayer) { // Purpur
|
||||
if (!this.level.isClientSide && !pos.equals(this.portalEntrancePos)) {
|
||||
if (!this.level().isClientSide && !pos.equals(this.portalEntrancePos)) {
|
||||
this.portalEntrancePos = pos.immutable();
|
||||
+ portalPos = BlockPos.ZERO; // Purpur
|
||||
}
|
||||
|
||||
this.isInsidePortal = true;
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index 24ce48b5aef4f1a59506f9a17af3a3333cb1ebbe..52049de384f22443f9ee106552cf8dc6c56e9a38 100644
|
||||
index 06f3e9e32eec5cb7ea109b8bee3f99d2b7807f13..f39c4a2acf8d6af849ce3c0ef319a58a203b08c1 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -337,6 +337,7 @@ public class PurpurWorldConfig {
|
||||
Reference in New Issue
Block a user