mirror of
https://github.com/PurpurMC/Purpur.git
synced 2026-02-17 16:37:43 +01:00
150 patches...
This commit is contained in:
@@ -5,7 +5,7 @@ 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 774c982f28b4f127fc3f036c19dfb47fb9ae3264..d49b60e7e643498b49c03593dc0da2f8e4459902 100644
|
||||
index 000d1863bfba98b5132dfc6743362d687b2f54f3..20fece9908382f40b4082f7b1fb7d41914ae31be 100644
|
||||
--- a/src/main/java/net/minecraft/world/item/NameTagItem.java
|
||||
+++ b/src/main/java/net/minecraft/world/item/NameTagItem.java
|
||||
@@ -23,6 +23,7 @@ public class NameTagItem extends Item {
|
||||
@@ -17,7 +17,7 @@ index 774c982f28b4f127fc3f036c19dfb47fb9ae3264..d49b60e7e643498b49c03593dc0da2f8
|
||||
// Paper end - Add PlayerNameEntityEvent
|
||||
mob.setPersistenceRequired();
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index cc95e8ba5d847348afdd4263c9e84554cb2ec713..4294b5bbf24f63023dd3c63614de7d7a14c50857 100644
|
||||
index a241c190532b0afd6d00deff3ec9c9100562524a..258f973c9debcaf09f95f73b8ca1276e107d29f8 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -99,9 +99,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 b081ea3f272ec2dba426bf0ebdfbbba1cec718ee..3348b5a9e4e00ef7f4dabe10d0fe0a9c0456dbd7 100644
|
||||
index 1a33a41f79f9d661cb958a6ecee2ab7e8a819877..3a37ff8bd8ca792393fa10fed4d38eb72559d4db 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java
|
||||
@@ -487,7 +487,7 @@ public class EnderMan extends Monster implements NeutralMob {
|
||||
@@ -468,7 +468,7 @@ public class EnderMan extends Monster implements NeutralMob {
|
||||
|
||||
@Override
|
||||
public boolean requiresCustomPersistence() {
|
||||
@@ -21,10 +21,10 @@ index b081ea3f272ec2dba426bf0ebdfbbba1cec718ee..3348b5a9e4e00ef7f4dabe10d0fe0a9c
|
||||
|
||||
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 4294b5bbf24f63023dd3c63614de7d7a14c50857..35457d2d53d7497ab8e370b0059a67b8563e1eff 100644
|
||||
index 258f973c9debcaf09f95f73b8ca1276e107d29f8..bc28a4851dd68874042c05bed3486eace3db5963 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -848,6 +848,7 @@ public class PurpurWorldConfig {
|
||||
@@ -847,6 +847,7 @@ public class PurpurWorldConfig {
|
||||
public double endermanMaxHealth = 40.0D;
|
||||
public double endermanScale = 1.0D;
|
||||
public boolean endermanAllowGriefing = true;
|
||||
@@ -32,7 +32,7 @@ index 4294b5bbf24f63023dd3c63614de7d7a14c50857..35457d2d53d7497ab8e370b0059a67b8
|
||||
private void endermanSettings() {
|
||||
endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable);
|
||||
endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater);
|
||||
@@ -860,6 +861,7 @@ public class PurpurWorldConfig {
|
||||
@@ -859,6 +860,7 @@ public class PurpurWorldConfig {
|
||||
endermanMaxHealth = getDouble("mobs.enderman.attributes.max_health", endermanMaxHealth);
|
||||
endermanScale = Mth.clamp(getDouble("mobs.enderman.attributes.scale", endermanScale), 0.0625D, 16.0D);
|
||||
endermanAllowGriefing = getBoolean("mobs.enderman.allow-griefing", endermanAllowGriefing);
|
||||
@@ -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 2b4d206c0d31ba38d7b2af654bd420e85145d441..f59a2903bfb8ae591a638ea5bb387caaa93ce664 100644
|
||||
index 70961e151666a0ecf5b791853f4581eaebbdcc8b..8c853b6fbbc966ee6ba9ad3770d4e2e2a50ef388 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/projectile/Snowball.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/projectile/Snowball.java
|
||||
@@ -58,7 +58,7 @@ public class Snowball extends ThrowableItemProjectile {
|
||||
@@ -18,10 +18,10 @@ index 2b4d206c0d31ba38d7b2af654bd420e85145d441..f59a2903bfb8ae591a638ea5bb387caa
|
||||
entity.hurt(this.damageSources().thrown(this, this.getOwner()), (float) i);
|
||||
}
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index 35457d2d53d7497ab8e370b0059a67b8563e1eff..e1efcfcddacf41e516dd297b99183fe8f8aabddc 100644
|
||||
index bc28a4851dd68874042c05bed3486eace3db5963..3bbc81e6a97728b032f0097b2a88a7ff69bd18ce 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -338,6 +338,11 @@ public class PurpurWorldConfig {
|
||||
@@ -337,6 +337,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 0d93a8cbf15fa84f422d61adddb420ba5dcb226a..d9743c9e0026d1f858aacc6a78dc39f144360b96 100644
|
||||
index 17e6e4a858d3a2332c14d2860d2f5d1e87e1c629..7b0cb3f4d8d810b32cda964c20437fea5ea00e24 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/Mob.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/Mob.java
|
||||
@@ -1441,7 +1441,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab
|
||||
@@ -1422,7 +1422,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab
|
||||
attributemodifiable.addPermanentModifier(new AttributeModifier(Mob.RANDOM_SPAWN_BONUS_ID, randomsource.triangle(0.0D, 0.11485000000000001D), AttributeModifier.Operation.ADD_MULTIPLIED_BASE));
|
||||
}
|
||||
|
||||
@@ -18,10 +18,10 @@ index 0d93a8cbf15fa84f422d61adddb420ba5dcb226a..d9743c9e0026d1f858aacc6a78dc39f1
|
||||
}
|
||||
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index e1efcfcddacf41e516dd297b99183fe8f8aabddc..fc218492aeca22efd869433b145699bf31e95aca 100644
|
||||
index 3bbc81e6a97728b032f0097b2a88a7ff69bd18ce..a5f51c2dff32452ad5dda0623dda90da358fe322 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -151,8 +151,10 @@ public class PurpurWorldConfig {
|
||||
@@ -150,8 +150,10 @@ public class PurpurWorldConfig {
|
||||
}
|
||||
|
||||
public int entityLifeSpan = 0;
|
||||
@@ -5,11 +5,11 @@ 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 aca60e21e7a191212d07a03a105fc4fb636359b2..0b57d9a2e2573bdb41c9e163d953130c3a4a1747 100644
|
||||
index 5f86f0b46e91ac41820931a9d64a7240d3ddd8d4..14640ed95dbbf99150ef1f41ff1046c2c034e552 100644
|
||||
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
||||
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
||||
@@ -1182,7 +1182,16 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple
|
||||
if (this.isInvulnerableTo(source)) {
|
||||
@@ -1435,7 +1435,16 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple
|
||||
if (this.isInvulnerableTo(world, source)) {
|
||||
return false;
|
||||
} else {
|
||||
- if (source.is(DamageTypeTags.IS_FALL) && getRootVehicle() instanceof net.minecraft.world.entity.vehicle.AbstractMinecart && level().purpurConfig.minecartControllable && !level().purpurConfig.minecartControllableFallDamage) return false; // Purpur
|
||||
@@ -27,7 +27,7 @@ index aca60e21e7a191212d07a03a105fc4fb636359b2..0b57d9a2e2573bdb41c9e163d953130c
|
||||
|
||||
if (!flag && this.spawnInvulnerableTime > 0 && !source.is(DamageTypeTags.BYPASSES_INVULNERABILITY)) {
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index fc218492aeca22efd869433b145699bf31e95aca..17df2ad9ec746736ca2968caa66a0bb1ff5a1151 100644
|
||||
index a5f51c2dff32452ad5dda0623dda90da358fe322..d5a546191014dc1cc9ed8b314c67983b0401d37b 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -113,6 +113,7 @@ public class PurpurWorldConfig {
|
||||
@@ -36,13 +36,13 @@ index fc218492aeca22efd869433b145699bf31e95aca..17df2ad9ec746736ca2968caa66a0bb1
|
||||
public boolean boatEjectPlayersOnLand = false;
|
||||
+ public boolean boatsDoFallDamage = false;
|
||||
public boolean disableDropsOnCrammingDeath = false;
|
||||
public double tridentLoyaltyVoidReturnHeight = 0.0D;
|
||||
public boolean entitiesCanUsePortals = true;
|
||||
public boolean milkCuresBadOmen = true;
|
||||
@@ -123,6 +124,7 @@ public class PurpurWorldConfig {
|
||||
@@ -122,6 +123,7 @@ public class PurpurWorldConfig {
|
||||
private void miscGameplayMechanicsSettings() {
|
||||
useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending);
|
||||
boatEjectPlayersOnLand = getBoolean("gameplay-mechanics.boat.eject-players-on-land", boatEjectPlayersOnLand);
|
||||
+ boatsDoFallDamage = getBoolean("gameplay-mechanics.boat.do-fall-damage", boatsDoFallDamage);
|
||||
disableDropsOnCrammingDeath = getBoolean("gameplay-mechanics.disable-drops-on-cramming-death", disableDropsOnCrammingDeath);
|
||||
tridentLoyaltyVoidReturnHeight = getDouble("gameplay-mechanics.trident-loyalty-void-return-height", tridentLoyaltyVoidReturnHeight);
|
||||
entitiesCanUsePortals = getBoolean("gameplay-mechanics.entities-can-use-portals", entitiesCanUsePortals);
|
||||
milkCuresBadOmen = getBoolean("gameplay-mechanics.milk-cures-bad-omen", milkCuresBadOmen);
|
||||
@@ -10,10 +10,10 @@ 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 dc5af0b71ec82a8f22e64b03950e35845110a331..5b910b4168b7f7825916c14e402f7f00b651cd60 100644
|
||||
index bfdb0c52db44e7cc4f37fd42a22c8dae2cc28fac..3f97118c8ce4f4e9a5f2a2fc3acdc68a6828baed 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java
|
||||
@@ -78,7 +78,7 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM
|
||||
@@ -81,7 +81,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
|
||||
@@ -23,10 +23,10 @@ index dc5af0b71ec82a8f22e64b03950e35845110a331..5b910b4168b7f7825916c14e402f7f00
|
||||
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 17df2ad9ec746736ca2968caa66a0bb1ff5a1151..7cb8996240fe658fe5858f009fb1b8171c6de7de 100644
|
||||
index d5a546191014dc1cc9ed8b314c67983b0401d37b..e7a09087dc2382d7739f8955be1bfc966fbc4c70 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -1685,6 +1685,10 @@ public class PurpurWorldConfig {
|
||||
@@ -1684,6 +1684,10 @@ public class PurpurWorldConfig {
|
||||
public double snowGolemMaxHealth = 4.0D;
|
||||
public double snowGolemScale = 1.0D;
|
||||
public boolean snowGolemPutPumpkinBack = false;
|
||||
@@ -37,7 +37,7 @@ index 17df2ad9ec746736ca2968caa66a0bb1ff5a1151..7cb8996240fe658fe5858f009fb1b817
|
||||
private void snowGolemSettings() {
|
||||
snowGolemRidable = getBoolean("mobs.snow_golem.ridable", snowGolemRidable);
|
||||
snowGolemRidableInWater = getBoolean("mobs.snow_golem.ridable-in-water", snowGolemRidableInWater);
|
||||
@@ -1698,6 +1702,10 @@ public class PurpurWorldConfig {
|
||||
@@ -1697,6 +1701,10 @@ public class PurpurWorldConfig {
|
||||
snowGolemMaxHealth = getDouble("mobs.snow_golem.attributes.max_health", snowGolemMaxHealth);
|
||||
snowGolemScale = Mth.clamp(getDouble("mobs.snow_golem.attributes.scale", snowGolemScale), 0.0625D, 16.0D);
|
||||
snowGolemPutPumpkinBack = getBoolean("mobs.snow_golem.pumpkin-can-be-added-back", snowGolemPutPumpkinBack);
|
||||
@@ -90,7 +90,7 @@ index 8508ac7de8cda3127b73e11ff4aee62502e65ead..b1544e028d5a9b84b944e1fb5a12bb16
|
||||
throwHalfStack(entity, this.trades, villager);
|
||||
}
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/ai/behavior/VillagerGoalPackages.java b/src/main/java/net/minecraft/world/entity/ai/behavior/VillagerGoalPackages.java
|
||||
index f000a6c1e61198e6dd06ae5f084d12fdf309f50a..3091d985ba9c55d404332576320718840538722e 100644
|
||||
index bb65d46967cb04f611b3c9c97d5732cfb21ede9b..7f4156e4690bbd57f9e9141f008851062cae733d 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/ai/behavior/VillagerGoalPackages.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/ai/behavior/VillagerGoalPackages.java
|
||||
@@ -52,8 +52,13 @@ public class VillagerGoalPackages {
|
||||
@@ -136,10 +136,10 @@ index a0e0692d17760f440fe81d52887284c787e562db..ab9bebc07b5228dbc0d3ba4b0f7d1bbe
|
||||
brain.setMemory(MemoryModuleType.SECONDARY_JOB_SITE, list);
|
||||
} else {
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java
|
||||
index 37aefffb16c43221e39ef0b41a16968a560968ea..730327d560075e28f0ba316c64311297a474f0ca 100644
|
||||
index 62a1d6876ce75676c5fa381e48bc58b8ef92701b..666ab4c3c957db48783d8b891737370c3ced881c 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/npc/Villager.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java
|
||||
@@ -226,7 +226,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
|
||||
@@ -224,7 +224,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
|
||||
brain.addActivity(Activity.PLAY, VillagerGoalPackages.getPlayPackage(0.5F));
|
||||
} else {
|
||||
brain.setSchedule(Schedule.VILLAGER_DEFAULT);
|
||||
@@ -148,7 +148,7 @@ index 37aefffb16c43221e39ef0b41a16968a560968ea..730327d560075e28f0ba316c64311297
|
||||
}
|
||||
|
||||
brain.addActivity(Activity.CORE, VillagerGoalPackages.getCorePackage(villagerprofession, 0.5F));
|
||||
@@ -975,6 +975,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
|
||||
@@ -940,6 +940,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
|
||||
|
||||
public boolean hasFarmSeeds() {
|
||||
return this.getInventory().hasAnyMatching((itemstack) -> {
|
||||
@@ -174,10 +174,10 @@ index 8734ab1bd8299bbf43906d81a349c2a13e0981a7..3ca83269311cbc18c9ef3ce62cff6a2d
|
||||
"farmer",
|
||||
PoiTypes.FARMER,
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index 7cb8996240fe658fe5858f009fb1b8171c6de7de..057877ee0430de3b14a3082f16e510e64f3663ae 100644
|
||||
index e7a09087dc2382d7739f8955be1bfc966fbc4c70..24855a55bc90c5b57cec3bfcf2efc36523d817f2 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -1905,6 +1905,8 @@ public class PurpurWorldConfig {
|
||||
@@ -1904,6 +1904,8 @@ public class PurpurWorldConfig {
|
||||
public boolean villagerCanBeLeashed = false;
|
||||
public boolean villagerCanBreed = true;
|
||||
public int villagerBreedingTicks = 6000;
|
||||
@@ -186,7 +186,7 @@ index 7cb8996240fe658fe5858f009fb1b8171c6de7de..057877ee0430de3b14a3082f16e510e6
|
||||
private void villagerSettings() {
|
||||
villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable);
|
||||
villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater);
|
||||
@@ -1920,6 +1922,8 @@ public class PurpurWorldConfig {
|
||||
@@ -1919,6 +1921,8 @@ 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);
|
||||
@@ -13,7 +13,7 @@ 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 53b8f46bda60289ec310cb45513a2b729fcbea76..2756319fd1e53eca6a3dfa094d7c669014c383e9 100644
|
||||
index 650f9e1ca3a5ddec5123133c9604f33140e948a8..cb47b15d197b1167dcbac1b989903bbf84b079b4 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java
|
||||
@@ -148,7 +148,7 @@ public class ZombifiedPiglin extends Zombie implements NeutralMob {
|
||||
@@ -35,10 +35,10 @@ index 53b8f46bda60289ec310cb45513a2b729fcbea76..2756319fd1e53eca6a3dfa094d7c6690
|
||||
}
|
||||
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index 057877ee0430de3b14a3082f16e510e64f3663ae..43f98be23b7da635f168b123f7e47c005707be77 100644
|
||||
index 24855a55bc90c5b57cec3bfcf2efc36523d817f2..71b5f351c539584ccb1d215b7d4dce3e4541ac41 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -2171,6 +2171,7 @@ public class PurpurWorldConfig {
|
||||
@@ -2170,6 +2170,7 @@ public class PurpurWorldConfig {
|
||||
public boolean zombifiedPiglinJockeyOnlyBaby = true;
|
||||
public double zombifiedPiglinJockeyChance = 0.05D;
|
||||
public boolean zombifiedPiglinJockeyTryExistingChickens = true;
|
||||
@@ -46,7 +46,7 @@ index 057877ee0430de3b14a3082f16e510e64f3663ae..43f98be23b7da635f168b123f7e47c00
|
||||
private void zombifiedPiglinSettings() {
|
||||
zombifiedPiglinRidable = getBoolean("mobs.zombified_piglin.ridable", zombifiedPiglinRidable);
|
||||
zombifiedPiglinRidableInWater = getBoolean("mobs.zombified_piglin.ridable-in-water", zombifiedPiglinRidableInWater);
|
||||
@@ -2186,5 +2187,6 @@ public class PurpurWorldConfig {
|
||||
@@ -2185,5 +2186,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,10 +7,10 @@ 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 0647cee2d6a7c847ab923f819a092c9004eabc6c..d159d573d5f87c31cf61baacbaae193d24ab6801 100644
|
||||
index bbdc5eb28c2be570866070d2d055a97721f46d94..54effd4230d1b231ef94a3e3948a535e6ba15537 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/animal/Wolf.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/animal/Wolf.java
|
||||
@@ -107,6 +107,37 @@ public class Wolf extends TamableAnimal implements NeutralMob, VariantHolder<Hol
|
||||
@@ -103,6 +103,37 @@ public class Wolf extends TamableAnimal implements NeutralMob, VariantHolder<Hol
|
||||
|
||||
return entitytypes == EntityType.SHEEP || entitytypes == EntityType.RABBIT || entitytypes == EntityType.FOX;
|
||||
};
|
||||
@@ -48,7 +48,7 @@ index 0647cee2d6a7c847ab923f819a092c9004eabc6c..d159d573d5f87c31cf61baacbaae193d
|
||||
private static final float START_HEALTH = 8.0F;
|
||||
private static final float TAME_HEALTH = 40.0F;
|
||||
private static final float ARMOR_REPAIR_UNIT = 0.125F;
|
||||
@@ -160,6 +191,30 @@ public class Wolf extends TamableAnimal implements NeutralMob, VariantHolder<Hol
|
||||
@@ -157,6 +188,30 @@ public class Wolf extends TamableAnimal implements NeutralMob, VariantHolder<Hol
|
||||
return this.level().purpurConfig.wolfBreedingTicks;
|
||||
}
|
||||
|
||||
@@ -79,7 +79,7 @@ index 0647cee2d6a7c847ab923f819a092c9004eabc6c..d159d573d5f87c31cf61baacbaae193d
|
||||
@Override
|
||||
protected void registerGoals() {
|
||||
this.goalSelector.addGoal(1, new FloatGoal(this));
|
||||
@@ -167,6 +222,7 @@ public class Wolf extends TamableAnimal implements NeutralMob, VariantHolder<Hol
|
||||
@@ -164,6 +219,7 @@ public class Wolf extends TamableAnimal implements NeutralMob, VariantHolder<Hol
|
||||
this.goalSelector.addGoal(1, new TamableAnimal.TamableAnimalPanicGoal(1.5D, DamageTypeTags.PANIC_ENVIRONMENTAL_CAUSES));
|
||||
this.goalSelector.addGoal(2, new SitWhenOrderedToGoal(this));
|
||||
this.goalSelector.addGoal(3, new Wolf.WolfAvoidEntityGoal<>(this, Llama.class, 24.0F, 1.5D, 1.5D));
|
||||
@@ -87,7 +87,7 @@ index 0647cee2d6a7c847ab923f819a092c9004eabc6c..d159d573d5f87c31cf61baacbaae193d
|
||||
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));
|
||||
@@ -180,7 +236,7 @@ public class Wolf extends TamableAnimal implements NeutralMob, VariantHolder<Hol
|
||||
@@ -177,7 +233,7 @@ public class Wolf extends TamableAnimal implements NeutralMob, VariantHolder<Hol
|
||||
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));
|
||||
@@ -96,7 +96,7 @@ index 0647cee2d6a7c847ab923f819a092c9004eabc6c..d159d573d5f87c31cf61baacbaae193d
|
||||
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));
|
||||
@@ -229,6 +285,7 @@ public class Wolf extends TamableAnimal implements NeutralMob, VariantHolder<Hol
|
||||
@@ -226,6 +282,7 @@ public class Wolf extends TamableAnimal implements NeutralMob, VariantHolder<Hol
|
||||
public void addAdditionalSaveData(CompoundTag nbt) {
|
||||
super.addAdditionalSaveData(nbt);
|
||||
nbt.putByte("CollarColor", (byte) this.getCollarColor().getId());
|
||||
@@ -104,7 +104,7 @@ index 0647cee2d6a7c847ab923f819a092c9004eabc6c..d159d573d5f87c31cf61baacbaae193d
|
||||
this.getVariant().unwrapKey().ifPresent((resourcekey) -> {
|
||||
nbt.putString("variant", resourcekey.location().toString());
|
||||
});
|
||||
@@ -246,6 +303,10 @@ public class Wolf extends TamableAnimal implements NeutralMob, VariantHolder<Hol
|
||||
@@ -243,6 +300,10 @@ public class Wolf extends TamableAnimal implements NeutralMob, VariantHolder<Hol
|
||||
if (nbt.contains("CollarColor", 99)) {
|
||||
this.setCollarColor(DyeColor.byId(nbt.getInt("CollarColor")));
|
||||
}
|
||||
@@ -115,7 +115,7 @@ index 0647cee2d6a7c847ab923f819a092c9004eabc6c..d159d573d5f87c31cf61baacbaae193d
|
||||
|
||||
this.readPersistentAngerSaveData(this.level(), nbt);
|
||||
}
|
||||
@@ -264,6 +325,12 @@ public class Wolf extends TamableAnimal implements NeutralMob, VariantHolder<Hol
|
||||
@@ -261,6 +322,12 @@ public class Wolf extends TamableAnimal implements NeutralMob, VariantHolder<Hol
|
||||
}
|
||||
|
||||
this.setVariant(holder1);
|
||||
@@ -128,7 +128,7 @@ index 0647cee2d6a7c847ab923f819a092c9004eabc6c..d159d573d5f87c31cf61baacbaae193d
|
||||
return super.finalizeSpawn(world, difficulty, spawnReason, (SpawnGroupData) entityData);
|
||||
}
|
||||
|
||||
@@ -307,6 +374,11 @@ public class Wolf extends TamableAnimal implements NeutralMob, VariantHolder<Hol
|
||||
@@ -304,6 +371,11 @@ public class Wolf extends TamableAnimal implements NeutralMob, VariantHolder<Hol
|
||||
public void tick() {
|
||||
super.tick();
|
||||
if (this.isAlive()) {
|
||||
@@ -140,10 +140,10 @@ index 0647cee2d6a7c847ab923f819a092c9004eabc6c..d159d573d5f87c31cf61baacbaae193d
|
||||
this.interestedAngleO = this.interestedAngle;
|
||||
if (this.isInterested()) {
|
||||
this.interestedAngle += (1.0F - this.interestedAngle) * 0.4F;
|
||||
@@ -552,6 +624,19 @@ public class Wolf extends TamableAnimal implements NeutralMob, VariantHolder<Hol
|
||||
@@ -534,6 +606,19 @@ public class Wolf extends TamableAnimal implements NeutralMob, VariantHolder<Hol
|
||||
itemstack.consume(1, player);
|
||||
this.tryToTame(player);
|
||||
return InteractionResult.SUCCESS;
|
||||
return InteractionResult.SUCCESS_SERVER;
|
||||
+ // Purpur start
|
||||
+ } else if (this.level().purpurConfig.wolfMilkCuresRabies && itemstack.getItem() == Items.MILK_BUCKET && this.isRabid()) {
|
||||
+ if (!player.isCreative()) {
|
||||
@@ -155,13 +155,13 @@ index 0647cee2d6a7c847ab923f819a092c9004eabc6c..d159d573d5f87c31cf61baacbaae193d
|
||||
+ getX() + random.nextFloat(), getY() + (random.nextFloat() * 1.5), getZ() + random.nextFloat(), 1,
|
||||
+ random.nextGaussian() * 0.05D, random.nextGaussian() * 0.05D, random.nextGaussian() * 0.05D, 0, true);
|
||||
+ }
|
||||
+ return InteractionResult.SUCCESS;
|
||||
+ return InteractionResult.SUCCESS_SERVER;
|
||||
+ // Purpur end
|
||||
} else {
|
||||
return super.mobInteract(player, hand);
|
||||
}
|
||||
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftWolf.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftWolf.java
|
||||
index 86574da257731de7646a712ed73384955fe35aa3..e223234dd64b0e41441c3b9f649f0b64dc6d98c4 100644
|
||||
index ecd33b4add46acbe4e4f8879c0601220423d66ca..1506a8c0fa490726eb4a4ae14f3aa194dc81d9ab 100644
|
||||
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftWolf.java
|
||||
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftWolf.java
|
||||
@@ -146,4 +146,16 @@ public class CraftWolf extends CraftTameableAnimal implements Wolf {
|
||||
@@ -182,10 +182,10 @@ index 86574da257731de7646a712ed73384955fe35aa3..e223234dd64b0e41441c3b9f649f0b64
|
||||
+ // Purpur end
|
||||
}
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index 43f98be23b7da635f168b123f7e47c005707be77..2b23ba7a29fb1fd0952e476fae4fe999609dfe6e 100644
|
||||
index 71b5f351c539584ccb1d215b7d4dce3e4541ac41..bb30d75feae68fdf2714fe51c8ddc8ef71fc647c 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -2046,6 +2046,8 @@ public class PurpurWorldConfig {
|
||||
@@ -2045,6 +2045,8 @@ public class PurpurWorldConfig {
|
||||
public boolean wolfControllable = true;
|
||||
public double wolfMaxHealth = 8.0D;
|
||||
public double wolfScale = 1.0D;
|
||||
@@ -194,7 +194,7 @@ index 43f98be23b7da635f168b123f7e47c005707be77..2b23ba7a29fb1fd0952e476fae4fe999
|
||||
public int wolfBreedingTicks = 6000;
|
||||
private void wolfSettings() {
|
||||
wolfRidable = getBoolean("mobs.wolf.ridable", wolfRidable);
|
||||
@@ -2058,6 +2060,8 @@ public class PurpurWorldConfig {
|
||||
@@ -2057,6 +2059,8 @@ public class PurpurWorldConfig {
|
||||
}
|
||||
wolfMaxHealth = getDouble("mobs.wolf.attributes.max_health", wolfMaxHealth);
|
||||
wolfScale = Mth.clamp(getDouble("mobs.wolf.attributes.scale", wolfScale), 0.0625D, 16.0D);
|
||||
@@ -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 c8266b1a6b609ef92bd83dcb0e86e3cf47ccce6d..356f3728fdadf8190cd6c806789f4fd70820ec94 100644
|
||||
index f79146925e99da08492e7b445006be003a56f340..8a89ea47d79065e85bb831578c6a1ab71ca5a040 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/animal/Cat.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/animal/Cat.java
|
||||
@@ -348,6 +348,14 @@ public class Cat extends TamableAnimal implements VariantHolder<Holder<CatVarian
|
||||
@@ -355,6 +355,14 @@ public class Cat extends TamableAnimal implements VariantHolder<Holder<CatVarian
|
||||
return Mth.lerp(tickDelta, this.relaxStateOneAmountO, this.relaxStateOneAmount);
|
||||
}
|
||||
|
||||
@@ -26,10 +26,10 @@ index c8266b1a6b609ef92bd83dcb0e86e3cf47ccce6d..356f3728fdadf8190cd6c806789f4fd7
|
||||
@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 d159d573d5f87c31cf61baacbaae193d24ab6801..143717d64651ffd75124973ca7a15fc1fd007da3 100644
|
||||
index 54effd4230d1b231ef94a3e3948a535e6ba15537..e8f825288aaa6f513f1ac25689a9669e3cfc015f 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/animal/Wolf.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/animal/Wolf.java
|
||||
@@ -215,6 +215,12 @@ public class Wolf extends TamableAnimal implements NeutralMob, VariantHolder<Hol
|
||||
@@ -212,6 +212,12 @@ public class Wolf extends TamableAnimal implements NeutralMob, VariantHolder<Hol
|
||||
}
|
||||
}
|
||||
|
||||
@@ -43,10 +43,10 @@ index d159d573d5f87c31cf61baacbaae193d24ab6801..143717d64651ffd75124973ca7a15fc1
|
||||
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 2b23ba7a29fb1fd0952e476fae4fe999609dfe6e..ec7b78a2a9270ae5f0e37cfe559768adc41dab84 100644
|
||||
index bb30d75feae68fdf2714fe51c8ddc8ef71fc647c..0360a6d10440cd5a656f3ace25254d6021ca2964 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -618,6 +618,7 @@ public class PurpurWorldConfig {
|
||||
@@ -617,6 +617,7 @@ public class PurpurWorldConfig {
|
||||
public int catSpawnSwampHutScanRange = 16;
|
||||
public int catSpawnVillageScanRange = 48;
|
||||
public int catBreedingTicks = 6000;
|
||||
@@ -54,7 +54,7 @@ index 2b23ba7a29fb1fd0952e476fae4fe999609dfe6e..ec7b78a2a9270ae5f0e37cfe559768ad
|
||||
private void catSettings() {
|
||||
catRidable = getBoolean("mobs.cat.ridable", catRidable);
|
||||
catRidableInWater = getBoolean("mobs.cat.ridable-in-water", catRidableInWater);
|
||||
@@ -633,6 +634,11 @@ public class PurpurWorldConfig {
|
||||
@@ -632,6 +633,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);
|
||||
@@ -66,7 +66,7 @@ index 2b23ba7a29fb1fd0952e476fae4fe999609dfe6e..ec7b78a2a9270ae5f0e37cfe559768ad
|
||||
}
|
||||
|
||||
public boolean caveSpiderRidable = false;
|
||||
@@ -2046,6 +2052,7 @@ public class PurpurWorldConfig {
|
||||
@@ -2045,6 +2051,7 @@ public class PurpurWorldConfig {
|
||||
public boolean wolfControllable = true;
|
||||
public double wolfMaxHealth = 8.0D;
|
||||
public double wolfScale = 1.0D;
|
||||
@@ -74,7 +74,7 @@ index 2b23ba7a29fb1fd0952e476fae4fe999609dfe6e..ec7b78a2a9270ae5f0e37cfe559768ad
|
||||
public boolean wolfMilkCuresRabies = true;
|
||||
public double wolfNaturalRabid = 0.0D;
|
||||
public int wolfBreedingTicks = 6000;
|
||||
@@ -2060,6 +2067,11 @@ public class PurpurWorldConfig {
|
||||
@@ -2059,6 +2066,11 @@ public class PurpurWorldConfig {
|
||||
}
|
||||
wolfMaxHealth = getDouble("mobs.wolf.attributes.max_health", wolfMaxHealth);
|
||||
wolfScale = Mth.clamp(getDouble("mobs.wolf.attributes.scale", wolfScale), 0.0625D, 16.0D);
|
||||
@@ -5,10 +5,10 @@ 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 8f221fe016ea7221eb3a2116a2213139cf961797..88725e6f8c6490253e110485f5a62e9d3d2c9aa9 100644
|
||||
index 11e0ba7ec12ba3b93589f451ef4f251598eb29c9..32ac2ec33daacf038d2c10b748e89a7725d36a79 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/monster/Phantom.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/monster/Phantom.java
|
||||
@@ -237,6 +237,7 @@ public class Phantom extends FlyingMob implements Enemy {
|
||||
@@ -238,6 +238,7 @@ public class Phantom extends FlyingMob implements Enemy {
|
||||
this.level().addParticle(ParticleTypes.MYCELIUM, this.getX() - (double) f3, this.getY() + (double) f5, this.getZ() - (double) f4, 0.0D, 0.0D, 0.0D);
|
||||
}
|
||||
|
||||
@@ -17,10 +17,10 @@ index 8f221fe016ea7221eb3a2116a2213139cf961797..88725e6f8c6490253e110485f5a62e9d
|
||||
|
||||
@Override
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index ec7b78a2a9270ae5f0e37cfe559768adc41dab84..4dce5107ed9a2ae1148ccc5c51ec54d57426cb83 100644
|
||||
index 0360a6d10440cd5a656f3ace25254d6021ca2964..947c0405fd4e695509597cfa54f5307fc9fc5add 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -1347,6 +1347,7 @@ public class PurpurWorldConfig {
|
||||
@@ -1346,6 +1346,7 @@ public class PurpurWorldConfig {
|
||||
public int phantomBurnInLight = 0;
|
||||
public boolean phantomIgnorePlayersWithTorch = false;
|
||||
public boolean phantomBurnInDaylight = true;
|
||||
@@ -28,7 +28,7 @@ index ec7b78a2a9270ae5f0e37cfe559768adc41dab84..4dce5107ed9a2ae1148ccc5c51ec54d5
|
||||
private void phantomSettings() {
|
||||
phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable);
|
||||
phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater);
|
||||
@@ -1380,6 +1381,7 @@ public class PurpurWorldConfig {
|
||||
@@ -1379,6 +1380,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);
|
||||
@@ -5,10 +5,10 @@ Subject: [PATCH] Option for chests to open even with a solid block on top
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/level/block/ChestBlock.java b/src/main/java/net/minecraft/world/level/block/ChestBlock.java
|
||||
index 0b27baf10770cb3077c4e75da55209689d614513..485ea9892f257c6843db23bca43f9fdcd8fa1503 100644
|
||||
index edef8fc62f8dba1b57214d8d7d805ff0d83f4114..663eb96b8227f000448957b5d8ea13ca78cee329 100644
|
||||
--- a/src/main/java/net/minecraft/world/level/block/ChestBlock.java
|
||||
+++ b/src/main/java/net/minecraft/world/level/block/ChestBlock.java
|
||||
@@ -342,6 +342,7 @@ public class ChestBlock extends AbstractChestBlock<ChestBlockEntity> implements
|
||||
@@ -341,6 +341,7 @@ public class ChestBlock extends AbstractChestBlock<ChestBlockEntity> implements
|
||||
}
|
||||
|
||||
public static boolean isBlockedChestByBlock(BlockGetter world, BlockPos pos) {
|
||||
@@ -17,10 +17,10 @@ index 0b27baf10770cb3077c4e75da55209689d614513..485ea9892f257c6843db23bca43f9fdc
|
||||
|
||||
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 4dce5107ed9a2ae1148ccc5c51ec54d57426cb83..a83719bd540910f799997e6593356d56bd097c42 100644
|
||||
index 947c0405fd4e695509597cfa54f5307fc9fc5add..0fb7337e34d172d28172f2836432e4ff24769765 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -375,6 +375,11 @@ public class PurpurWorldConfig {
|
||||
@@ -374,6 +374,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 09e3c9dd08b6a5765d76390b2c8f62200fd3e27c..286f141255984dddbc3252304d6c11b0647cbbf4 100644
|
||||
index 24c2568db30f970aed1a4897cfbc7d07297047d3..5d94b71bd54f99040b76cca74964a32d55339767 100644
|
||||
--- a/src/main/java/net/minecraft/commands/Commands.java
|
||||
+++ b/src/main/java/net/minecraft/commands/Commands.java
|
||||
@@ -253,6 +253,7 @@ public class Commands {
|
||||
@@ -258,6 +258,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 09e3c9dd08b6a5765d76390b2c8f62200fd3e27c..286f141255984dddbc3252304d6c11b0
|
||||
|
||||
if (environment.includeIntegrated) {
|
||||
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||
index f514c421b5ff7e46b2d211f895dcb0d7a375704f..b14bfa10927c1e0e93f1c3515947077f11eb3ece 100644
|
||||
index d5efd5fdbf0acc89de3790f30b9739809f0a02d4..6bc6d24022c4f5ea3b7da7074725737fae341fcf 100644
|
||||
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||
@@ -1137,6 +1137,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
||||
@@ -1136,6 +1136,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
||||
this.safeShutdown(waitForShutdown, false);
|
||||
}
|
||||
public void safeShutdown(boolean waitForShutdown, boolean isRestarting) {
|
||||
@@ -29,22 +29,22 @@ index f514c421b5ff7e46b2d211f895dcb0d7a375704f..b14bfa10927c1e0e93f1c3515947077f
|
||||
this.hasLoggedStop = true; // Paper - Debugging
|
||||
if (isDebugging()) io.papermc.paper.util.TraceUtil.dumpTraceForThread("Server stopped"); // Paper - Debugging
|
||||
diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
|
||||
index ea89f36bb1ecb8a7a8b88d6f46bc24554609647f..e093ef5b2712776767db6b9b78e46bbee5b91ee5 100644
|
||||
index 0d8d96e5aa24e8582e32fdbb920f6ae071871765..86c25c52e4c42074866975884ec15dc099a77591 100644
|
||||
--- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
|
||||
+++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
|
||||
@@ -371,6 +371,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
|
||||
@@ -365,6 +365,7 @@ 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 0b57d9a2e2573bdb41c9e163d953130c3a4a1747..6100c35a54a9f597bb7e4925bf2c63aa7e0d64d3 100644
|
||||
index 14640ed95dbbf99150ef1f41ff1046c2c034e552..d1a4eca112ad8698aa9025cec1b38bca01805e3f 100644
|
||||
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
||||
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
||||
@@ -303,6 +303,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple
|
||||
@@ -324,6 +324,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple
|
||||
public @Nullable String clientBrandName = null; // Paper - Brand support
|
||||
public org.bukkit.event.player.PlayerQuitEvent.QuitReason quitReason = null; // Paper - Add API for quit reason; there are a lot of changes to do if we change all methods leading to the event
|
||||
public boolean purpurClient = false; // Purpur
|
||||
@@ -52,7 +52,7 @@ index 0b57d9a2e2573bdb41c9e163d953130c3a4a1747..6100c35a54a9f597bb7e4925bf2c63aa
|
||||
|
||||
// Paper start - rewrite chunk system
|
||||
private ca.spottedleaf.moonrise.patches.chunk_system.player.RegionizedPlayerChunkLoader.PlayerChunkLoaderData chunkLoader;
|
||||
@@ -600,6 +601,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple
|
||||
@@ -686,6 +687,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple
|
||||
});
|
||||
}
|
||||
|
||||
@@ -60,15 +60,15 @@ index 0b57d9a2e2573bdb41c9e163d953130c3a4a1747..6100c35a54a9f597bb7e4925bf2c63aa
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -676,6 +678,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple
|
||||
});
|
||||
@@ -738,6 +740,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple
|
||||
}
|
||||
|
||||
this.saveEnderPearls(nbt);
|
||||
+ nbt.putBoolean("Purpur.TPSBar", this.tpsBar); // Purpur
|
||||
}
|
||||
|
||||
// CraftBukkit start - World fallback code, either respawn location or global spawn
|
||||
@@ -3067,5 +3070,13 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple
|
||||
private void saveParentVehicle(CompoundTag nbt) {
|
||||
@@ -3422,5 +3425,13 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple
|
||||
this.server.getPlayerList().respawn(this, true, RemovalReason.KILLED, org.bukkit.event.player.PlayerRespawnEvent.RespawnReason.DEATH, to);
|
||||
}
|
||||
}
|
||||
@@ -83,18 +83,18 @@ index 0b57d9a2e2573bdb41c9e163d953130c3a4a1747..6100c35a54a9f597bb7e4925bf2c63aa
|
||||
// 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 2f476929f5dc521ff76b27586cf2a919fc09b7fa..338bf471d9214c77653eb69510b722b552e60172 100644
|
||||
index e8f43bcf810b200f0dfcac6feae7761f54dda6fe..44f1048b231e56fae00feb1bcf935c4f65508b69 100644
|
||||
--- a/src/main/java/net/minecraft/server/players/PlayerList.java
|
||||
+++ b/src/main/java/net/minecraft/server/players/PlayerList.java
|
||||
@@ -480,6 +480,7 @@ public abstract class PlayerList {
|
||||
@@ -420,6 +420,7 @@ public abstract class PlayerList {
|
||||
scoreboard.addPlayerToTeam(player.getScoreboardName(), collideRuleTeam);
|
||||
}
|
||||
// Paper end - Configurable player collision
|
||||
+ org.purpurmc.purpur.task.BossBarTask.addToAll(player); // Purpur
|
||||
PlayerList.LOGGER.info("{}[{}] logged in with entity id {} at ([{}]{}, {}, {})", player.getName().getString(), s1, player.getId(), worldserver1.serverLevelData.getLevelName(), player.getX(), player.getY(), player.getZ());
|
||||
}
|
||||
|
||||
@@ -591,6 +592,7 @@ public abstract class PlayerList {
|
||||
// Paper start - Send empty chunk, so players aren't stuck in the world loading screen with our chunk system not sending chunks when dead
|
||||
if (player.isDeadOrDying()) {
|
||||
@@ -540,6 +541,7 @@ public abstract class PlayerList {
|
||||
}
|
||||
public net.kyori.adventure.text.Component remove(ServerPlayer entityplayer, net.kyori.adventure.text.Component leaveMessage) {
|
||||
// Paper end - Fix kick event leave message not being sent
|
||||
@@ -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 8c233a90d07db7959b778a84c4ed0589a6a10dd4..d534eaa9231602f8fa73d0230223f08348aae95b 100644
|
||||
index 0cc49b0a600a5e6fb4fc21e698e3a5fef5996df1..bb2283fa9a21d7fc609f0a914cdb8b1370d90235 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/monster/Strider.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/monster/Strider.java
|
||||
@@ -485,6 +485,19 @@ public class Strider extends Animal implements ItemSteerable, Saddleable {
|
||||
@@ -483,6 +483,19 @@ public class Strider extends Animal implements ItemSteerable, Saddleable {
|
||||
public InteractionResult mobInteract(Player player, InteractionHand hand) {
|
||||
boolean flag = this.isFood(player.getItemInHand(hand));
|
||||
|
||||
@@ -29,10 +29,10 @@ index 8c233a90d07db7959b778a84c4ed0589a6a10dd4..d534eaa9231602f8fa73d0230223f083
|
||||
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 a83719bd540910f799997e6593356d56bd097c42..cef84202cfd5a74a722994be58c46619ae7cb951 100644
|
||||
index 0fb7337e34d172d28172f2836432e4ff24769765..b02c2aa15bbfd3b917476f0fd296612d548d450f 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -1800,6 +1800,7 @@ public class PurpurWorldConfig {
|
||||
@@ -1799,6 +1799,7 @@ public class PurpurWorldConfig {
|
||||
public double striderMaxHealth = 20.0D;
|
||||
public double striderScale = 1.0D;
|
||||
public int striderBreedingTicks = 6000;
|
||||
@@ -40,7 +40,7 @@ index a83719bd540910f799997e6593356d56bd097c42..cef84202cfd5a74a722994be58c46619
|
||||
private void striderSettings() {
|
||||
striderRidable = getBoolean("mobs.strider.ridable", striderRidable);
|
||||
striderRidableInWater = getBoolean("mobs.strider.ridable-in-water", striderRidableInWater);
|
||||
@@ -1812,6 +1813,7 @@ public class PurpurWorldConfig {
|
||||
@@ -1811,6 +1812,7 @@ public class PurpurWorldConfig {
|
||||
striderMaxHealth = getDouble("mobs.strider.attributes.max_health", striderMaxHealth);
|
||||
striderScale = Mth.clamp(getDouble("mobs.strider.attributes.scale", striderScale), 0.0625D, 16.0D);
|
||||
striderBreedingTicks = getInt("mobs.strider.breeding-delay-ticks", striderBreedingTicks);
|
||||
@@ -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 5c9e35d9b645774e0d96c9a089ab071034827ea2..ef55fc102b06e6fec0c39c86a5b32d3b170e0a6f 100644
|
||||
index 8c1f21892a96ed1cf1ef8b76ff8a52f1a8caca6e..d61c4cc0a4f957ef4bf2f7124644c63380e28473 100644
|
||||
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
||||
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
||||
@@ -1188,6 +1188,10 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
|
||||
@@ -1168,6 +1168,10 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
|
||||
final int maxBookPageSize = pageMax.intValue();
|
||||
final double multiplier = Math.clamp(io.papermc.paper.configuration.GlobalConfiguration.get().itemValidation.bookSize.totalMultiplier, 0.3D, 1D);
|
||||
long byteAllowed = maxBookPageSize;
|
||||
@@ -19,7 +19,7 @@ index 5c9e35d9b645774e0d96c9a089ab071034827ea2..ef55fc102b06e6fec0c39c86a5b32d3b
|
||||
for (final String page : pageList) {
|
||||
final int byteLength = page.getBytes(java.nio.charset.StandardCharsets.UTF_8).length;
|
||||
byteTotal += byteLength;
|
||||
@@ -1212,7 +1216,8 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
|
||||
@@ -1192,7 +1196,8 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
|
||||
}
|
||||
|
||||
if (byteTotal > byteAllowed) {
|
||||
@@ -5,11 +5,11 @@ 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 9dd8dc8f0dc218c5a021d84649f364cd2f1b3a45..33c1b2b387e7412a001841d1bcbb3966c188c1a3 100644
|
||||
index 773be9c116a664e4d0349c58c00df34f203f8ebf..00b3e300c0d43f7791c9d5f83a7901304f6464f5 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/player/Player.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/player/Player.java
|
||||
@@ -387,6 +387,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
|
||||
@@ -397,6 +397,16 @@ public abstract class Player extends LivingEntity {
|
||||
super.onInsideBubbleColumn(drag);
|
||||
}
|
||||
|
||||
+ // Purpur start
|
||||
@@ -24,12 +24,12 @@ index 9dd8dc8f0dc218c5a021d84649f364cd2f1b3a45..33c1b2b387e7412a001841d1bcbb3966
|
||||
+ // Purpur end
|
||||
}
|
||||
|
||||
protected ItemCooldowns createItemCooldowns() {
|
||||
private void turtleHelmetTick() {
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index cef84202cfd5a74a722994be58c46619ae7cb951..38a3ea0784a0797f26b8d3b9adb1d825b0c8058b 100644
|
||||
index b02c2aa15bbfd3b917476f0fd296612d548d450f..b236fdc1f7cfcf9be6ab2486e53025123b950106 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -284,6 +284,19 @@ public class PurpurWorldConfig {
|
||||
@@ -283,6 +283,19 @@ public class PurpurWorldConfig {
|
||||
villageSiegeSpawning = getBoolean("gameplay-mechanics.mob-spawning.village-sieges", predicate);
|
||||
}
|
||||
|
||||
@@ -5,31 +5,31 @@ 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 cd2775bf0b59056a8329b1e7e2649f4b3cd92b2a..4f172f9a0ec61a10b0b1411b9d0eb82d49bd0c57 100644
|
||||
index 06ccf6daaf5e7affe505c75cdbf85c1c29c3ebf9..7c60a938850e5db62022217168a075e2b88fa22d 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
|
||||
@@ -1857,7 +1857,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
|
||||
@@ -1886,7 +1886,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 (worldserver.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) {
|
||||
+ if (worldserver.purpurConfig.witherBypassMobGriefing || worldserver.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 d9743c9e0026d1f858aacc6a78dc39f144360b96..70ace6f2a42c0d4181cb22a08dd923bd77c08295 100644
|
||||
index 7b0cb3f4d8d810b32cda964c20437fea5ea00e24..bc2beee267f535e23bd804d415019bab5ee2fd88 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/Mob.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/Mob.java
|
||||
@@ -707,7 +707,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab
|
||||
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))) {
|
||||
Vec3i baseblockposition = this.getPickupReach();
|
||||
List<ItemEntity> list = this.level().getEntitiesOfClass(ItemEntity.class, this.getBoundingBox().inflate((double) baseblockposition.getX(), (double) baseblockposition.getY(), (double) baseblockposition.getZ()));
|
||||
Iterator iterator = list.iterator();
|
||||
@@ -704,7 +704,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab
|
||||
Level world = this.level();
|
||||
|
||||
if (world instanceof ServerLevel worldserver) {
|
||||
- if (this.canPickUpLoot() && this.isAlive() && !this.dead && worldserver.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) {
|
||||
+ if (this.canPickUpLoot() && this.isAlive() && !this.dead && (worldserver.purpurConfig.entitiesPickUpLootBypassMobGriefing || worldserver.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING))) { // Purpur
|
||||
Vec3i baseblockposition = this.getPickupReach();
|
||||
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 4fa4ec34963730507253182cad1c2bf04090ad50..8d4e206aa05b95b7bfec5d23496085cf55a3e1de 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/ai/behavior/HarvestFarmland.java
|
||||
@@ -44,28 +44,28 @@ index 4fa4ec34963730507253182cad1c2bf04090ad50..8d4e206aa05b95b7bfec5d23496085cf
|
||||
} else if (entity.getVillagerData().getProfession() != VillagerProfession.FARMER && !(world.purpurConfig.villagerClericsFarmWarts && entity.getVillagerData().getProfession() == VillagerProfession.CLERIC)) { // Purpur
|
||||
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 a85885ee51df585fa11ae9f8fcd67ff2a71c5a18..d81509e08e70ec5b2f837c9dc66b1254c86854e4 100644
|
||||
index 7324da6b7dd2623ce394e3827ff77ef684a3b98b..4b7cfca51ced0f781561ecd68484de4adb23e082 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 {
|
||||
@@ -33,7 +33,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 : (!getServerLevel((Entity) this.mob).getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING) ? false : this.isValidDifficulty(this.mob.level().getDifficulty()) && !this.isOpen());
|
||||
+ return !super.canUse() ? false : ((!this.mob.level().purpurConfig.zombieBypassMobGriefing && !getServerLevel((Entity) this.mob).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 4e2c23ccdf4e4a4d65b291dbe20952bae1838bff..0da884a833f6c707fea512e826658c3bb73f7a77 100644
|
||||
index 32bb591371fe78ba10a2bc52389ef33978cbc0eb..f3697510974be0c3cfdb0e2179d89c8109152829 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
|
||||
@@ -74,7 +74,7 @@ public class EatBlockGoal extends Goal {
|
||||
|
||||
final BlockState blockState = this.level.getBlockState(blockposition); // Paper - fix wrong block state
|
||||
if (EatBlockGoal.IS_TALL_GRASS.test(blockState)) { // Paper - fix wrong block state
|
||||
- if (CraftEventFactory.callEntityChangeBlockEvent(this.mob, blockposition, blockState.getFluidState().createLegacyBlock(), !this.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING))) { // CraftBukkit // Paper - fix wrong block state
|
||||
+ if (CraftEventFactory.callEntityChangeBlockEvent(this.mob, blockposition, blockState.getFluidState().createLegacyBlock(), !this.level.purpurConfig.sheepBypassMobGriefing && !this.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING))) { // CraftBukkit // Paper - fix wrong block state // Purpur
|
||||
- if (CraftEventFactory.callEntityChangeBlockEvent(this.mob, blockposition, blockState.getFluidState().createLegacyBlock(), !getServerLevel(this.level).getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING))) { // CraftBukkit // Paper - fix wrong block state
|
||||
+ if (CraftEventFactory.callEntityChangeBlockEvent(this.mob, blockposition, blockState.getFluidState().createLegacyBlock(), !getServerLevel(this.level).purpurConfig.sheepBypassMobGriefing && !getServerLevel(this.level).getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING))) { // CraftBukkit // Paper - fix wrong block state // Purpur
|
||||
this.level.destroyBlock(blockposition, false);
|
||||
}
|
||||
|
||||
@@ -73,103 +73,103 @@ index 4e2c23ccdf4e4a4d65b291dbe20952bae1838bff..0da884a833f6c707fea512e826658c3b
|
||||
BlockPos blockposition1 = blockposition.below();
|
||||
|
||||
if (this.level.getBlockState(blockposition1).is(Blocks.GRASS_BLOCK)) {
|
||||
- if (CraftEventFactory.callEntityChangeBlockEvent(this.mob, blockposition1, Blocks.DIRT.defaultBlockState(), !this.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING))) { // CraftBukkit // Paper - Fix wrong block state
|
||||
+ if (CraftEventFactory.callEntityChangeBlockEvent(this.mob, blockposition1, Blocks.DIRT.defaultBlockState(), !this.level.purpurConfig.sheepBypassMobGriefing && !this.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING))) { // CraftBukkit // Paper - Fix wrong block state // Purpur
|
||||
- if (CraftEventFactory.callEntityChangeBlockEvent(this.mob, blockposition1, Blocks.DIRT.defaultBlockState(), !getServerLevel(this.level).getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING))) { // CraftBukkit // Paper - Fix wrong block state
|
||||
+ if (CraftEventFactory.callEntityChangeBlockEvent(this.mob, blockposition1, Blocks.DIRT.defaultBlockState(), !getServerLevel(this.level).purpurConfig.sheepBypassMobGriefing && !getServerLevel(this.level).getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING))) { // CraftBukkit // Paper - Fix wrong block state // Purpur
|
||||
this.level.levelEvent(2001, blockposition1, Block.getId(Blocks.GRASS_BLOCK.defaultBlockState()));
|
||||
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 6634228ef002cbef67980272a26be4a75c954116..a61abba840a55fb4fbc9716a5e05eb2778068785 100644
|
||||
index 9d245d08be61d7edee9138196ae3bf52023e3993..d002acdac893e2744cde5f1145d29ac2c8ff6959 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 {
|
||||
@@ -41,7 +41,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 (!getServerLevel((Entity) this.removerMob).getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) {
|
||||
+ if (!getServerLevel((Entity) this.removerMob).purpurConfig.zombieBypassMobGriefing && !getServerLevel((Entity) this.removerMob).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 252df18c369d5e556632ed5a287dab04e4e9b58d..6c56c51a89928ba52b1fb5f66f6169fa94fffed0 100644
|
||||
index 56b2e83285f02581d03746246f370f18fc0f3c3f..dfff1b51544476dffccfd6bfa016cf57b9c1c081 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/animal/Fox.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/animal/Fox.java
|
||||
@@ -1385,7 +1385,7 @@ public class Fox extends Animal implements VariantHolder<Fox.Type> {
|
||||
@@ -1370,7 +1370,7 @@ public class Fox extends Animal implements VariantHolder<Fox.Variant> {
|
||||
}
|
||||
|
||||
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
|
||||
- if (getServerLevel(Fox.this.level()).getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) {
|
||||
+ if (getServerLevel(Fox.this.level()).purpurConfig.foxBypassMobGriefing || getServerLevel(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 7e509458134340bd05d15f5f51b6d1fce3206d6a..db9ed247a2a2c2316a9dcc06a8961345c40752a9 100644
|
||||
index 629a0729cae629dea89fdf491afa9eed96e7a38a..2281f08f07ec4d820586883ef7378883344a4f27 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/animal/Rabbit.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/animal/Rabbit.java
|
||||
@@ -636,7 +636,7 @@ public class Rabbit extends Animal implements VariantHolder<Rabbit.Variant> {
|
||||
@@ -634,7 +634,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 (!getServerLevel((Entity) this.rabbit).getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) {
|
||||
+ if (!getServerLevel((Entity) this.rabbit).purpurConfig.rabbitBypassMobGriefing && !getServerLevel((Entity) this.rabbit).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 5b910b4168b7f7825916c14e402f7f00b651cd60..09be2e9651a736bf44f3f06f1d4e6a5b4dcf230b 100644
|
||||
index 3f97118c8ce4f4e9a5f2a2fc3acdc68a6828baed..59fe12a265523f3f1e3568216b703abcff27f4cc 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java
|
||||
@@ -126,7 +126,7 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM
|
||||
this.hurt(this.damageSources().melting(), 1.0F); // CraftBukkit - DamageSources.ON_FIRE -> CraftEventFactory.MELTING
|
||||
@@ -131,7 +131,7 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM
|
||||
this.hurtServer(worldserver, this.damageSources().melting(), 1.0F); // CraftBukkit - DamageSources.ON_FIRE -> CraftEventFactory.MELTING
|
||||
}
|
||||
|
||||
- if (!this.level().getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) {
|
||||
+ if (!this.level().purpurConfig.snowGolemBypassMobGriefing && !this.level().getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) { // Purpur
|
||||
- if (!worldserver.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) {
|
||||
+ if (!worldserver.purpurConfig.snowGolemBypassMobGriefing && !worldserver.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 cc5fd3d020187adcbd20d4947beb353b291bdfd1..f80319504d70580f977acccd935af489f7d8f712 100644
|
||||
index f356110850dd71d066243ec29853f547d94e4400..0462718041e34bdc9fc3cdee1a2c9bd000686718 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
|
||||
@@ -621,7 +621,7 @@ public class EnderDragon extends Mob implements Enemy {
|
||||
BlockState iblockdata = this.level().getBlockState(blockposition);
|
||||
@@ -591,7 +591,7 @@ public class EnderDragon extends Mob implements Enemy {
|
||||
BlockState iblockdata = world.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 (world.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING) && !iblockdata.is(BlockTags.DRAGON_IMMUNE)) {
|
||||
+ if ((world.purpurConfig.enderDragonBypassMobGriefing || world.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 = worldserver.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 0d753a16c77251b421735f9e38202af00baf46f9..24677d1a9750f5757a983c4f6ecef42a442932c6 100644
|
||||
index 2ec12ec298446b556132785d4d376130594a7cb6..6b499d59ab27869a74ee1e3b3f777cbda9e4d53b 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
|
||||
@@ -502,7 +502,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob
|
||||
@@ -492,7 +492,7 @@ public class WitherBoss extends Monster implements 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 && world.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) {
|
||||
+ if (this.destroyBlocksTick == 0 && (world.purpurConfig.witherBypassMobGriefing || world.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING))) { // Purpur
|
||||
boolean flag = false;
|
||||
|
||||
j = Mth.floor(this.getBbWidth() / 2.0F + 1.0F);
|
||||
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 3348b5a9e4e00ef7f4dabe10d0fe0a9c0456dbd7..e71db58a2824d0a6a8df1a3d13ad5ac14604ad99 100644
|
||||
index 3a37ff8bd8ca792393fa10fed4d38eb72559d4db..262350aaed5070a9353ba15726bba197df3b9de0 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java
|
||||
@@ -535,7 +535,15 @@ public class EnderMan extends Monster implements NeutralMob {
|
||||
@@ -516,7 +516,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);
|
||||
- return this.enderman.getCarriedBlock() == null ? false : (!getServerLevel((Entity) this.enderman).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 (!getServerLevel((Entity) this.enderman).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 3348b5a9e4e00ef7f4dabe10d0fe0a9c0456dbd7..e71db58a2824d0a6a8df1a3d13ad5ac1
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -581,7 +589,15 @@ public class EnderMan extends Monster implements NeutralMob {
|
||||
@@ -562,7 +570,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);
|
||||
- return this.enderman.getCarriedBlock() != null ? false : (!getServerLevel((Entity) this.enderman).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 (!getServerLevel((Entity) this.enderman).getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING) && !this.enderman.level().purpurConfig.endermanBypassMobGriefing) {
|
||||
+ return false;
|
||||
+ }
|
||||
+ return this.enderman.getRandom().nextInt(reducedTickDelay(20)) == 0;
|
||||
@@ -195,177 +195,178 @@ index 3348b5a9e4e00ef7f4dabe10d0fe0a9c0456dbd7..e71db58a2824d0a6a8df1a3d13ad5ac1
|
||||
|
||||
@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 8aa91f45d3a863308ce1fce1fde40a6c9a2042db..a7976b5d8548277061aa6a4e1147922e283d5a7d 100644
|
||||
index 72d855a22e1507ad5f735df17db820c9b3fb2251..371a3db041ae8990c0a2a7c5e1702ba83712fcdc 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/monster/Evoker.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/monster/Evoker.java
|
||||
@@ -365,7 +365,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
|
||||
return false;
|
||||
@@ -367,7 +367,7 @@ public class Evoker extends SpellcasterIllager {
|
||||
} else {
|
||||
List<Sheep> list = Evoker.this.level().getNearbyEntities(Sheep.class, this.wololoTargeting, Evoker.this, Evoker.this.getBoundingBox().inflate(16.0D, 4.0D, 16.0D));
|
||||
ServerLevel worldserver = getServerLevel(Evoker.this.level());
|
||||
|
||||
- if (!worldserver.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) {
|
||||
+ if (!worldserver.purpurConfig.evokerBypassMobGriefing && !worldserver.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) { // Purpur
|
||||
return false;
|
||||
} else {
|
||||
List<Sheep> list = worldserver.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 f3b57f58738d7cb84bd25f0ce7752ce859f03c96..5d9e85b22c0fe8d0b9d9fc06fc1f3cd170931e17 100644
|
||||
index fdf30a72c6c1bf4024592dc3071fc101256a1138..83fcf23077721fcc976fc0cd3a4a18ba4f05e1e5 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/monster/Ravager.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/monster/Ravager.java
|
||||
@@ -170,7 +170,7 @@ public class Ravager extends Raider {
|
||||
this.getAttribute(Attributes.MOVEMENT_SPEED).setBaseValue(Mth.lerp(0.1D, d1, d0));
|
||||
}
|
||||
@@ -184,7 +184,7 @@ public class Ravager extends Raider {
|
||||
if (world instanceof ServerLevel) {
|
||||
ServerLevel worldserver = (ServerLevel) world;
|
||||
|
||||
- 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();
|
||||
- if (this.horizontalCollision && worldserver.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) {
|
||||
+ if (this.horizontalCollision && (worldserver.purpurConfig.ravagerBypassMobGriefing || worldserver.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 e59ee35faa8b4ec35021074ce67666569c27da63..4325dc4889fb4c514798b85ef4d06725b0c5faa7 100644
|
||||
index c31a72bad0b75940ea550acf47fab2220ff669ff..01c4627c4879389bcd0a328e00c0471ef38f60d6 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/monster/Silverfish.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/monster/Silverfish.java
|
||||
@@ -194,7 +194,7 @@ public class Silverfish extends Monster {
|
||||
@@ -197,7 +197,7 @@ public class Silverfish extends Monster {
|
||||
continue;
|
||||
}
|
||||
// CraftBukkit end
|
||||
- if (world.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) {
|
||||
+ if (world.purpurConfig.silverfishBypassMobGriefing || world.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) { // Purpur
|
||||
- if (getServerLevel(world).getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) {
|
||||
+ if (getServerLevel(world).purpurConfig.silverfishBypassMobGriefing || getServerLevel(world).getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) { // Purpur
|
||||
world.destroyBlock(blockposition1, true, this.silverfish);
|
||||
} else {
|
||||
world.setBlock(blockposition1, ((InfestedBlock) block).hostStateByInfested(world.getBlockState(blockposition1)), 3);
|
||||
@@ -232,7 +232,7 @@ public class Silverfish extends Monster {
|
||||
@@ -235,7 +235,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 (getServerLevel((Entity) this.mob).getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING) && randomsource.nextInt(reducedTickDelay(10)) == 0) {
|
||||
+ if (getServerLevel((Entity) this.mob).purpurConfig.silverfishBypassMobGriefing || getServerLevel((Entity) this.mob).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);
|
||||
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 65bb3045cd74ef1695eb8c1edd71f8b72b2d9378..ed312ed8c668ee6b02ae6e89b5a44bb4fe6d4b48 100644
|
||||
index 33326839175d2826eaa61eb7bc1e110d1ff6bc94..18d4a90bef46522e12e79e03c466910fbb703f6d 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
|
||||
@@ -413,7 +413,7 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento
|
||||
@@ -429,7 +429,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);
|
||||
public boolean wantsToPickUp(ServerLevel world, ItemStack stack) {
|
||||
- return world.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING) && this.canPickUpLoot() && PiglinAi.wantsToPickup(this, stack);
|
||||
+ return (world.purpurConfig.piglinBypassMobGriefing || world.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) && this.canPickUpLoot() && PiglinAi.wantsToPickup(this, stack); // Purpur
|
||||
}
|
||||
|
||||
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 28a65f2a9ef441ae96a7a635e0695b14ce2ee367..7b6c58a31d37896daccb5f570d3cb9247cea2cd6 100644
|
||||
index 2f00676f62478897ae4931ea06e047567c407535..6bd6113cabfae068aa421991f0a9016419f20349 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/projectile/LargeFireball.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/projectile/LargeFireball.java
|
||||
@@ -23,20 +23,20 @@ public class LargeFireball extends Fireball {
|
||||
@@ -23,13 +23,13 @@ public class LargeFireball extends Fireball {
|
||||
|
||||
public LargeFireball(EntityType<? extends LargeFireball> type, Level world) {
|
||||
super(type, world);
|
||||
- this.isIncendiary = this.level().getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING); // CraftBukkit
|
||||
+ this.isIncendiary = this.level().purpurConfig.fireballsBypassMobGriefing || this.level().getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING); // CraftBukkit // Purpur
|
||||
- this.isIncendiary = (world instanceof ServerLevel worldserver) && worldserver.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING); // CraftBukkit
|
||||
+ this.isIncendiary = (world instanceof ServerLevel worldserver) && (worldserver.purpurConfig.fireballsBypassMobGriefing || worldserver.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)); // CraftBukkit // Purpur
|
||||
}
|
||||
|
||||
public LargeFireball(Level world, LivingEntity owner, Vec3 velocity, int explosionPower) {
|
||||
super(EntityType.FIREBALL, owner, velocity, world);
|
||||
this.explosionPower = explosionPower;
|
||||
- this.isIncendiary = this.level().getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING); // CraftBukkit
|
||||
+ this.isIncendiary = this.level().purpurConfig.fireballsBypassMobGriefing || this.level().getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING); // CraftBukkit // Purpur
|
||||
- this.isIncendiary = (world instanceof ServerLevel worldserver) && worldserver.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING); // CraftBukkit
|
||||
+ this.isIncendiary = (world instanceof ServerLevel worldserver) && (worldserver.purpurConfig.fireballsBypassMobGriefing || worldserver.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
|
||||
@@ -38,7 +38,7 @@ public class LargeFireball extends Fireball {
|
||||
Level world = this.level();
|
||||
|
||||
if (world instanceof ServerLevel worldserver) {
|
||||
- boolean flag = worldserver.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING);
|
||||
+ boolean flag = worldserver.purpurConfig.fireballsBypassMobGriefing || worldserver.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 710e67ff9c57a6b1dc46abf5de98d54da1410136..9ededdbb5db39e9dff7376d80e93f41e93efdf5d 100644
|
||||
index 49c0f09f91f9ea2428fd3b13b00c99073074beba..b0e258d6025dd9536f1656e087bf85fee60e642d 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/projectile/Projectile.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/projectile/Projectile.java
|
||||
@@ -394,7 +394,7 @@ public abstract class Projectile extends Entity implements TraceableEntity {
|
||||
public boolean mayInteract(Level world, BlockPos pos) {
|
||||
@@ -479,7 +479,7 @@ public abstract class Projectile extends Entity implements TraceableEntity {
|
||||
public boolean mayInteract(ServerLevel world, BlockPos pos) {
|
||||
Entity entity = this.getOwner();
|
||||
|
||||
- return entity instanceof Player ? entity.mayInteract(world, pos) : entity == null || world.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING);
|
||||
+ return entity instanceof Player ? entity.mayInteract(world, pos) : entity == null || world.purpurConfig.projectilesBypassMobGriefing || world.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING);
|
||||
}
|
||||
|
||||
public boolean mayBreak(Level world) {
|
||||
public boolean mayBreak(ServerLevel world) {
|
||||
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 1711ad457e7d1233fd32edc3e9e3b9f1e3be9980..554d3c4db6ed07e3d12af23a9a18c28480bf77c0 100644
|
||||
index bb159ea4baf208aab6d6fcfbbddacd5b089b55c8..69dd29ed5e3cb37180b65183b0a83c8619d8e9a0 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/projectile/SmallFireball.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/projectile/SmallFireball.java
|
||||
@@ -30,7 +30,7 @@ public class SmallFireball extends Fireball {
|
||||
super(EntityType.SMALL_FIREBALL, owner, velocity, world);
|
||||
// CraftBukkit start
|
||||
if (this.getOwner() != null && this.getOwner() instanceof Mob) {
|
||||
- this.isIncendiary = this.level().getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING);
|
||||
+ this.isIncendiary = this.level().purpurConfig.fireballsBypassMobGriefing || this.level().getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING); // Purpur
|
||||
- this.isIncendiary = (world instanceof ServerLevel worldserver) && worldserver.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING);
|
||||
+ this.isIncendiary = (world instanceof ServerLevel worldserver) && (worldserver.purpurConfig.fireballsBypassMobGriefing || worldserver.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 bbf21ea433f9e3963aac0ede597ed8d3c8e50ed8..06487fc9ea416d8256e0c2cd1969d4e0283ffb05 100644
|
||||
index ab132041982df2a701e4baea8195873f31b4a5fb..4ef87acec025c6eb706fd8845663aa4f415efb29 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/raid/Raider.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/raid/Raider.java
|
||||
@@ -299,7 +299,7 @@ public abstract class Raider extends PatrollingMonster {
|
||||
|
||||
@Override
|
||||
public boolean canUse() {
|
||||
- if (!this.mob.level().getGameRules().getBoolean(net.minecraft.world.level.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(net.minecraft.world.level.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(this.mob.registryAccess().lookupOrThrow(Registries.BANNER_PATTERN)))) {
|
||||
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 112d2feba5f75a2a873b595617780515945c10e4..2af4c365743b2956939335512f74e0a1d84298f7 100644
|
||||
--- a/src/main/java/net/minecraft/world/level/block/CropBlock.java
|
||||
+++ b/src/main/java/net/minecraft/world/level/block/CropBlock.java
|
||||
@@ -179,7 +179,7 @@ public class CropBlock extends BushBlock implements BonemealableBlock {
|
||||
@Override
|
||||
protected void entityInside(BlockState state, Level world, BlockPos pos, Entity entity) {
|
||||
if (!new io.papermc.paper.event.entity.EntityInsideBlockEvent(entity.getBukkitEntity(), org.bukkit.craftbukkit.block.CraftBlock.at(world, pos)).callEvent()) { return; } // Paper - Add EntityInsideBlockEvent
|
||||
- if (entity instanceof Ravager && CraftEventFactory.callEntityChangeBlockEvent(entity, pos, Blocks.AIR.defaultBlockState(), !world.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING))) { // CraftBukkit
|
||||
+ if (entity instanceof Ravager && CraftEventFactory.callEntityChangeBlockEvent(entity, pos, Blocks.AIR.defaultBlockState(), (!world.purpurConfig.ravagerBypassMobGriefing && !world.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)))) { // CraftBukkit // Purpur
|
||||
world.destroyBlock(pos, true, entity);
|
||||
@@ -345,7 +345,7 @@ public abstract class Raider extends PatrollingMonster {
|
||||
}
|
||||
|
||||
private boolean cannotPickUpBanner() {
|
||||
- if (!getServerLevel(this.mob).getGameRules().getBoolean(net.minecraft.world.level.GameRules.RULE_MOBGRIEFING) || !this.mob.canPickUpLoot()) return false; // Paper - respect game and entity rules for picking up items
|
||||
+ if ((!this.mob.level().purpurConfig.pillagerBypassMobGriefing && !getServerLevel(this.mob).getGameRules().getBoolean(net.minecraft.world.level.GameRules.RULE_MOBGRIEFING)) || !this.mob.canPickUpLoot()) return false; // Paper - respect game and entity rules for picking up items // Purpur
|
||||
if (!this.mob.hasActiveRaid()) {
|
||||
return true;
|
||||
} else if (this.mob.getCurrentRaid().isOver()) {
|
||||
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 1ada5ed825501666addacf527a513ab7bd4a3a58..d1efd728f0660b77361fa4f9c2bf5f2e654be0d2 100644
|
||||
--- a/src/main/java/net/minecraft/world/level/block/CropBlock.java
|
||||
+++ b/src/main/java/net/minecraft/world/level/block/CropBlock.java
|
||||
@@ -180,7 +180,7 @@ public class CropBlock extends BushBlock implements BonemealableBlock {
|
||||
protected void entityInside(BlockState state, Level world, BlockPos pos, Entity entity) {
|
||||
if (!new io.papermc.paper.event.entity.EntityInsideBlockEvent(entity.getBukkitEntity(), org.bukkit.craftbukkit.block.CraftBlock.at(world, pos)).callEvent()) { return; } // Paper - Add EntityInsideBlockEvent
|
||||
if (world instanceof ServerLevel worldserver) {
|
||||
- if (entity instanceof Ravager && CraftEventFactory.callEntityChangeBlockEvent(entity, pos, Blocks.AIR.defaultBlockState(), !worldserver.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING))) { // CraftBukkit
|
||||
+ if (entity instanceof Ravager && CraftEventFactory.callEntityChangeBlockEvent(entity, pos, Blocks.AIR.defaultBlockState(), (!world.purpurConfig.ravagerBypassMobGriefing && !worldserver.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)))) { // CraftBukkit // Purpur
|
||||
worldserver.destroyBlock(pos, true, entity);
|
||||
}
|
||||
}
|
||||
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 dc356bd0931af9bdab9ec71e3de66e88a67375ad..99798220b6e0ad06db2ba5c9b74bfb72af185fee 100644
|
||||
index e744a117d2f25ad24c87263ba2ab7f760b6e594d..e1abec46177887a92726de80f66226fe7fbbb4a2 100644
|
||||
--- a/src/main/java/net/minecraft/world/level/block/FarmBlock.java
|
||||
+++ b/src/main/java/net/minecraft/world/level/block/FarmBlock.java
|
||||
@@ -111,7 +111,7 @@ public class FarmBlock extends Block {
|
||||
@Override
|
||||
@@ -112,7 +112,7 @@ public class FarmBlock extends Block {
|
||||
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.
|
||||
- if (!world.isClientSide && world.random.nextFloat() < fallDistance - 0.5F && entity instanceof LivingEntity && (entity instanceof Player || world.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) && entity.getBbWidth() * entity.getBbWidth() * entity.getBbHeight() > 0.512F) {
|
||||
+ if (!world.isClientSide && world.random.nextFloat() < fallDistance - 0.5F && entity instanceof LivingEntity && (entity instanceof Player || world.purpurConfig.farmlandBypassMobGriefing || world.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) && entity.getBbWidth() * entity.getBbWidth() * entity.getBbHeight() > 0.512F) { // Purpur
|
||||
// CraftBukkit start - Interact soil
|
||||
org.bukkit.event.Cancellable cancellable;
|
||||
if (entity instanceof Player) {
|
||||
if (world instanceof ServerLevel worldserver) {
|
||||
- if (world.random.nextFloat() < fallDistance - 0.5F && entity instanceof LivingEntity && (entity instanceof Player || worldserver.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) && entity.getBbWidth() * entity.getBbWidth() * entity.getBbHeight() > 0.512F) {
|
||||
+ if (world.random.nextFloat() < fallDistance - 0.5F && entity instanceof LivingEntity && (entity instanceof Player || worldserver.purpurConfig.farmlandBypassMobGriefing || worldserver.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) && entity.getBbWidth() * entity.getBbWidth() * entity.getBbHeight() > 0.512F) { // Purpur
|
||||
// CraftBukkit start - Interact soil
|
||||
org.bukkit.event.Cancellable cancellable;
|
||||
if (entity instanceof Player) {
|
||||
diff --git a/src/main/java/net/minecraft/world/level/block/PowderSnowBlock.java b/src/main/java/net/minecraft/world/level/block/PowderSnowBlock.java
|
||||
index a6e6545402904141ffc6218a0158b0e9c67217c8..5eac1a54398dfa5571b98fb6eefca9d2bf9b2793 100644
|
||||
index 53f1a7ed6b4bd6e2d8460531226aabf249994c02..19a403ac19695ed6984c42f83c4698ffcc6ac2b7 100644
|
||||
--- a/src/main/java/net/minecraft/world/level/block/PowderSnowBlock.java
|
||||
+++ b/src/main/java/net/minecraft/world/level/block/PowderSnowBlock.java
|
||||
@@ -80,7 +80,7 @@ public class PowderSnowBlock extends Block implements BucketPickup {
|
||||
if (!world.isClientSide) {
|
||||
@@ -76,7 +76,7 @@ public class PowderSnowBlock extends Block implements BucketPickup {
|
||||
if (world instanceof ServerLevel worldserver) {
|
||||
// CraftBukkit start
|
||||
if (entity.isOnFire() && entity.mayInteract(world, pos)) {
|
||||
- if (!org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(entity, pos, Blocks.AIR.defaultBlockState(), !(world.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING) || entity instanceof Player))) {
|
||||
+ if (!org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(entity, pos, Blocks.AIR.defaultBlockState(), !((world.purpurConfig.powderSnowBypassMobGriefing || world.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) || entity instanceof Player))) {
|
||||
if (entity.isOnFire() && entity.mayInteract(worldserver, pos)) {
|
||||
- if (!org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(entity, pos, Blocks.AIR.defaultBlockState(), !(worldserver.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING) || entity instanceof Player))) {
|
||||
+ if (!org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(entity, pos, Blocks.AIR.defaultBlockState(), !((worldserver.purpurConfig.powderSnowBypassMobGriefing || world.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) || entity instanceof Player))) { // Purpur
|
||||
return;
|
||||
}
|
||||
// CraftBukkit end
|
||||
diff --git a/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java b/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java
|
||||
index c7377d04ceac3ea624117439783a443c6d6f6d08..0c732cfbd9ce50198a3f85ae8ef2263d7ae0bc1a 100644
|
||||
index bae4931fff0db56aa125248e17b29f7c2557221f..4eb0f7a9cf6b12c02d0bd42980ae302dd56c1b8a 100644
|
||||
--- a/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java
|
||||
+++ b/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java
|
||||
@@ -221,7 +221,7 @@ public class TurtleEggBlock extends Block {
|
||||
@@ -222,7 +222,7 @@ public class TurtleEggBlock extends Block {
|
||||
}
|
||||
if (entity instanceof Player) return true;
|
||||
|
||||
@@ -375,34 +376,30 @@ index c7377d04ceac3ea624117439783a443c6d6f6d08..0c732cfbd9ce50198a3f85ae8ef2263d
|
||||
}
|
||||
}
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index 38a3ea0784a0797f26b8d3b9adb1d825b0c8058b..c38e6078eca2628dcd3cc3640a869550a95f2f49 100644
|
||||
index b236fdc1f7cfcf9be6ab2486e53025123b950106..b1d63425dc952c0ee0b3bd371a0910787ce628b7 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -116,8 +116,11 @@ public class PurpurWorldConfig {
|
||||
public boolean boatsDoFallDamage = false;
|
||||
public boolean disableDropsOnCrammingDeath = false;
|
||||
public boolean entitiesCanUsePortals = true;
|
||||
+ public boolean entitiesPickUpLootBypassMobGriefing = false;
|
||||
+ public boolean fireballsBypassMobGriefing = false;
|
||||
public boolean milkCuresBadOmen = true;
|
||||
public boolean persistentDroppableEntityDisplayNames = true;
|
||||
+ public boolean projectilesBypassMobGriefing = false;
|
||||
public double tridentLoyaltyVoidReturnHeight = 0.0D;
|
||||
@@ -120,6 +120,9 @@ public class PurpurWorldConfig {
|
||||
public int raidCooldownSeconds = 0;
|
||||
public int animalBreedingCooldownSeconds = 0;
|
||||
@@ -127,8 +130,11 @@ public class PurpurWorldConfig {
|
||||
boatsDoFallDamage = getBoolean("gameplay-mechanics.boat.do-fall-damage", boatsDoFallDamage);
|
||||
disableDropsOnCrammingDeath = getBoolean("gameplay-mechanics.disable-drops-on-cramming-death", disableDropsOnCrammingDeath);
|
||||
entitiesCanUsePortals = getBoolean("gameplay-mechanics.entities-can-use-portals", entitiesCanUsePortals);
|
||||
+ entitiesPickUpLootBypassMobGriefing = getBoolean("gameplay-mechanics.entities-pick-up-loot-bypass-mob-griefing", entitiesPickUpLootBypassMobGriefing);
|
||||
+ fireballsBypassMobGriefing = getBoolean("gameplay-mechanics.fireballs-bypass-mob-griefing", fireballsBypassMobGriefing);
|
||||
milkCuresBadOmen = getBoolean("gameplay-mechanics.milk-cures-bad-omen", milkCuresBadOmen);
|
||||
persistentDroppableEntityDisplayNames = getBoolean("gameplay-mechanics.persistent-droppable-entity-display-names", persistentDroppableEntityDisplayNames);
|
||||
+ projectilesBypassMobGriefing = getBoolean("gameplay-mechanics.projectiles-bypass-mob-griefing", projectilesBypassMobGriefing);
|
||||
tridentLoyaltyVoidReturnHeight = getDouble("gameplay-mechanics.trident-loyalty-void-return-height", tridentLoyaltyVoidReturnHeight);
|
||||
public boolean persistentDroppableEntityDisplayNames = true;
|
||||
+ public boolean entitiesPickUpLootBypassMobGriefing = false;
|
||||
+ public boolean fireballsBypassMobGriefing = false;
|
||||
+ public boolean projectilesBypassMobGriefing = false;
|
||||
private void miscGameplayMechanicsSettings() {
|
||||
useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending);
|
||||
boatEjectPlayersOnLand = getBoolean("gameplay-mechanics.boat.eject-players-on-land", boatEjectPlayersOnLand);
|
||||
@@ -130,6 +133,9 @@ public class PurpurWorldConfig {
|
||||
raidCooldownSeconds = getInt("gameplay-mechanics.raid-cooldown-seconds", raidCooldownSeconds);
|
||||
animalBreedingCooldownSeconds = getInt("gameplay-mechanics.animal-breeding-cooldown-seconds", animalBreedingCooldownSeconds);
|
||||
@@ -400,9 +406,11 @@ public class PurpurWorldConfig {
|
||||
persistentDroppableEntityDisplayNames = getBoolean("gameplay-mechanics.persistent-droppable-entity-display-names", persistentDroppableEntityDisplayNames);
|
||||
+ entitiesPickUpLootBypassMobGriefing = getBoolean("gameplay-mechanics.entities-pick-up-loot-bypass-mob-griefing", entitiesPickUpLootBypassMobGriefing);
|
||||
+ fireballsBypassMobGriefing = getBoolean("gameplay-mechanics.fireballs-bypass-mob-griefing", fireballsBypassMobGriefing);
|
||||
+ projectilesBypassMobGriefing = getBoolean("gameplay-mechanics.projectiles-bypass-mob-griefing", projectilesBypassMobGriefing);
|
||||
|
||||
}
|
||||
|
||||
@@ -399,9 +405,11 @@ public class PurpurWorldConfig {
|
||||
dispenserPlaceAnvils = getBoolean("blocks.dispenser.place-anvils", dispenserPlaceAnvils);
|
||||
}
|
||||
|
||||
@@ -414,7 +411,7 @@ index 38a3ea0784a0797f26b8d3b9adb1d825b0c8058b..c38e6078eca2628dcd3cc3640a869550
|
||||
farmlandGetsMoistFromBelow = getBoolean("blocks.farmland.gets-moist-from-below", farmlandGetsMoistFromBelow);
|
||||
farmlandAlpha = getBoolean("blocks.farmland.use-alpha-farmland", farmlandAlpha);
|
||||
}
|
||||
@@ -427,6 +435,11 @@ public class PurpurWorldConfig {
|
||||
@@ -426,6 +434,11 @@ public class PurpurWorldConfig {
|
||||
lavaSpeedNotNether = getInt("blocks.lava.speed.not-nether", lavaSpeedNotNether);
|
||||
}
|
||||
|
||||
@@ -426,7 +423,7 @@ index 38a3ea0784a0797f26b8d3b9adb1d825b0c8058b..c38e6078eca2628dcd3cc3640a869550
|
||||
public boolean respawnAnchorExplode = true;
|
||||
public double respawnAnchorExplosionPower = 5.0D;
|
||||
public boolean respawnAnchorExplosionFire = true;
|
||||
@@ -456,10 +469,12 @@ public class PurpurWorldConfig {
|
||||
@@ -455,10 +468,12 @@ public class PurpurWorldConfig {
|
||||
public boolean turtleEggsBreakFromExpOrbs = false;
|
||||
public boolean turtleEggsBreakFromItems = false;
|
||||
public boolean turtleEggsBreakFromMinecarts = false;
|
||||
@@ -439,7 +436,7 @@ index 38a3ea0784a0797f26b8d3b9adb1d825b0c8058b..c38e6078eca2628dcd3cc3640a869550
|
||||
}
|
||||
|
||||
public int waterInfiniteRequiredSources = 2;
|
||||
@@ -744,6 +759,7 @@ public class PurpurWorldConfig {
|
||||
@@ -743,6 +758,7 @@ public class PurpurWorldConfig {
|
||||
public double creeperScale = 1.0D;
|
||||
public double creeperChargedChance = 0.0D;
|
||||
public boolean creeperAllowGriefing = true;
|
||||
@@ -447,7 +444,7 @@ index 38a3ea0784a0797f26b8d3b9adb1d825b0c8058b..c38e6078eca2628dcd3cc3640a869550
|
||||
private void creeperSettings() {
|
||||
creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable);
|
||||
creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater);
|
||||
@@ -757,6 +773,7 @@ public class PurpurWorldConfig {
|
||||
@@ -756,6 +772,7 @@ public class PurpurWorldConfig {
|
||||
creeperScale = Mth.clamp(getDouble("mobs.creeper.attributes.scale", creeperScale), 0.0625D, 16.0D);
|
||||
creeperChargedChance = getDouble("mobs.creeper.naturally-charged-chance", creeperChargedChance);
|
||||
creeperAllowGriefing = getBoolean("mobs.creeper.allow-griefing", creeperAllowGriefing);
|
||||
@@ -455,7 +452,7 @@ index 38a3ea0784a0797f26b8d3b9adb1d825b0c8058b..c38e6078eca2628dcd3cc3640a869550
|
||||
}
|
||||
|
||||
public boolean dolphinRidable = false;
|
||||
@@ -857,6 +874,7 @@ public class PurpurWorldConfig {
|
||||
@@ -856,6 +873,7 @@ public class PurpurWorldConfig {
|
||||
public double enderDragonMaxY = 320D;
|
||||
public double enderDragonMaxHealth = 200.0D;
|
||||
public boolean enderDragonAlwaysDropsFullExp = false;
|
||||
@@ -463,7 +460,7 @@ index 38a3ea0784a0797f26b8d3b9adb1d825b0c8058b..c38e6078eca2628dcd3cc3640a869550
|
||||
private void enderDragonSettings() {
|
||||
enderDragonRidable = getBoolean("mobs.ender_dragon.ridable", enderDragonRidable);
|
||||
enderDragonRidableInWater = getBoolean("mobs.ender_dragon.ridable-in-water", enderDragonRidableInWater);
|
||||
@@ -873,6 +891,7 @@ public class PurpurWorldConfig {
|
||||
@@ -872,6 +890,7 @@ public class PurpurWorldConfig {
|
||||
}
|
||||
enderDragonMaxHealth = getDouble("mobs.ender_dragon.attributes.max_health", enderDragonMaxHealth);
|
||||
enderDragonAlwaysDropsFullExp = getBoolean("mobs.ender_dragon.always-drop-full-exp", enderDragonAlwaysDropsFullExp);
|
||||
@@ -471,7 +468,7 @@ index 38a3ea0784a0797f26b8d3b9adb1d825b0c8058b..c38e6078eca2628dcd3cc3640a869550
|
||||
}
|
||||
|
||||
public boolean endermanRidable = false;
|
||||
@@ -882,6 +901,7 @@ public class PurpurWorldConfig {
|
||||
@@ -881,6 +900,7 @@ public class PurpurWorldConfig {
|
||||
public double endermanScale = 1.0D;
|
||||
public boolean endermanAllowGriefing = true;
|
||||
public boolean endermanDespawnEvenWithBlock = false;
|
||||
@@ -479,7 +476,7 @@ index 38a3ea0784a0797f26b8d3b9adb1d825b0c8058b..c38e6078eca2628dcd3cc3640a869550
|
||||
private void endermanSettings() {
|
||||
endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable);
|
||||
endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater);
|
||||
@@ -895,6 +915,7 @@ public class PurpurWorldConfig {
|
||||
@@ -894,6 +914,7 @@ public class PurpurWorldConfig {
|
||||
endermanScale = Mth.clamp(getDouble("mobs.enderman.attributes.scale", endermanScale), 0.0625D, 16.0D);
|
||||
endermanAllowGriefing = getBoolean("mobs.enderman.allow-griefing", endermanAllowGriefing);
|
||||
endermanDespawnEvenWithBlock = getBoolean("mobs.enderman.can-despawn-with-held-block", endermanDespawnEvenWithBlock);
|
||||
@@ -487,7 +484,7 @@ index 38a3ea0784a0797f26b8d3b9adb1d825b0c8058b..c38e6078eca2628dcd3cc3640a869550
|
||||
}
|
||||
|
||||
public boolean endermiteRidable = false;
|
||||
@@ -920,6 +941,7 @@ public class PurpurWorldConfig {
|
||||
@@ -919,6 +940,7 @@ public class PurpurWorldConfig {
|
||||
public boolean evokerControllable = true;
|
||||
public double evokerMaxHealth = 24.0D;
|
||||
public double evokerScale = 1.0D;
|
||||
@@ -495,7 +492,7 @@ index 38a3ea0784a0797f26b8d3b9adb1d825b0c8058b..c38e6078eca2628dcd3cc3640a869550
|
||||
private void evokerSettings() {
|
||||
evokerRidable = getBoolean("mobs.evoker.ridable", evokerRidable);
|
||||
evokerRidableInWater = getBoolean("mobs.evoker.ridable-in-water", evokerRidableInWater);
|
||||
@@ -931,6 +953,7 @@ public class PurpurWorldConfig {
|
||||
@@ -930,6 +952,7 @@ public class PurpurWorldConfig {
|
||||
}
|
||||
evokerMaxHealth = getDouble("mobs.evoker.attributes.max_health", evokerMaxHealth);
|
||||
evokerScale = Mth.clamp(getDouble("mobs.evoker.attributes.scale", evokerScale), 0.0625D, 16.0D);
|
||||
@@ -503,7 +500,7 @@ index 38a3ea0784a0797f26b8d3b9adb1d825b0c8058b..c38e6078eca2628dcd3cc3640a869550
|
||||
}
|
||||
|
||||
public boolean foxRidable = false;
|
||||
@@ -940,6 +963,7 @@ public class PurpurWorldConfig {
|
||||
@@ -939,6 +962,7 @@ public class PurpurWorldConfig {
|
||||
public double foxScale = 1.0D;
|
||||
public boolean foxTypeChangesWithTulips = false;
|
||||
public int foxBreedingTicks = 6000;
|
||||
@@ -511,7 +508,7 @@ index 38a3ea0784a0797f26b8d3b9adb1d825b0c8058b..c38e6078eca2628dcd3cc3640a869550
|
||||
private void foxSettings() {
|
||||
foxRidable = getBoolean("mobs.fox.ridable", foxRidable);
|
||||
foxRidableInWater = getBoolean("mobs.fox.ridable-in-water", foxRidableInWater);
|
||||
@@ -953,6 +977,7 @@ public class PurpurWorldConfig {
|
||||
@@ -952,6 +976,7 @@ public class PurpurWorldConfig {
|
||||
foxScale = Mth.clamp(getDouble("mobs.fox.attributes.scale", foxScale), 0.0625D, 16.0D);
|
||||
foxTypeChangesWithTulips = getBoolean("mobs.fox.tulips-change-type", foxTypeChangesWithTulips);
|
||||
foxBreedingTicks = getInt("mobs.fox.breeding-delay-ticks", foxBreedingTicks);
|
||||
@@ -519,7 +516,7 @@ index 38a3ea0784a0797f26b8d3b9adb1d825b0c8058b..c38e6078eca2628dcd3cc3640a869550
|
||||
}
|
||||
|
||||
public boolean frogRidable = false;
|
||||
@@ -1429,6 +1454,7 @@ public class PurpurWorldConfig {
|
||||
@@ -1428,6 +1453,7 @@ public class PurpurWorldConfig {
|
||||
public boolean piglinControllable = true;
|
||||
public double piglinMaxHealth = 16.0D;
|
||||
public double piglinScale = 1.0D;
|
||||
@@ -527,7 +524,7 @@ index 38a3ea0784a0797f26b8d3b9adb1d825b0c8058b..c38e6078eca2628dcd3cc3640a869550
|
||||
private void piglinSettings() {
|
||||
piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable);
|
||||
piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater);
|
||||
@@ -1440,6 +1466,7 @@ public class PurpurWorldConfig {
|
||||
@@ -1439,6 +1465,7 @@ public class PurpurWorldConfig {
|
||||
}
|
||||
piglinMaxHealth = getDouble("mobs.piglin.attributes.max_health", piglinMaxHealth);
|
||||
piglinScale = Mth.clamp(getDouble("mobs.piglin.attributes.scale", piglinScale), 0.0625D, 16.0D);
|
||||
@@ -535,7 +532,7 @@ index 38a3ea0784a0797f26b8d3b9adb1d825b0c8058b..c38e6078eca2628dcd3cc3640a869550
|
||||
}
|
||||
|
||||
public boolean piglinBruteRidable = false;
|
||||
@@ -1465,6 +1492,7 @@ public class PurpurWorldConfig {
|
||||
@@ -1464,6 +1491,7 @@ public class PurpurWorldConfig {
|
||||
public boolean pillagerControllable = true;
|
||||
public double pillagerMaxHealth = 24.0D;
|
||||
public double pillagerScale = 1.0D;
|
||||
@@ -543,7 +540,7 @@ index 38a3ea0784a0797f26b8d3b9adb1d825b0c8058b..c38e6078eca2628dcd3cc3640a869550
|
||||
private void pillagerSettings() {
|
||||
pillagerRidable = getBoolean("mobs.pillager.ridable", pillagerRidable);
|
||||
pillagerRidableInWater = getBoolean("mobs.pillager.ridable-in-water", pillagerRidableInWater);
|
||||
@@ -1476,6 +1504,7 @@ public class PurpurWorldConfig {
|
||||
@@ -1475,6 +1503,7 @@ public class PurpurWorldConfig {
|
||||
}
|
||||
pillagerMaxHealth = getDouble("mobs.pillager.attributes.max_health", pillagerMaxHealth);
|
||||
pillagerScale = Mth.clamp(getDouble("mobs.pillager.attributes.scale", pillagerScale), 0.0625D, 16.0D);
|
||||
@@ -551,7 +548,7 @@ index 38a3ea0784a0797f26b8d3b9adb1d825b0c8058b..c38e6078eca2628dcd3cc3640a869550
|
||||
}
|
||||
|
||||
public boolean polarBearRidable = false;
|
||||
@@ -1527,6 +1556,7 @@ public class PurpurWorldConfig {
|
||||
@@ -1526,6 +1555,7 @@ public class PurpurWorldConfig {
|
||||
public double rabbitNaturalToast = 0.0D;
|
||||
public double rabbitNaturalKiller = 0.0D;
|
||||
public int rabbitBreedingTicks = 6000;
|
||||
@@ -559,7 +556,7 @@ index 38a3ea0784a0797f26b8d3b9adb1d825b0c8058b..c38e6078eca2628dcd3cc3640a869550
|
||||
private void rabbitSettings() {
|
||||
rabbitRidable = getBoolean("mobs.rabbit.ridable", rabbitRidable);
|
||||
rabbitRidableInWater = getBoolean("mobs.rabbit.ridable-in-water", rabbitRidableInWater);
|
||||
@@ -1541,6 +1571,7 @@ public class PurpurWorldConfig {
|
||||
@@ -1540,6 +1570,7 @@ 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);
|
||||
@@ -567,7 +564,7 @@ index 38a3ea0784a0797f26b8d3b9adb1d825b0c8058b..c38e6078eca2628dcd3cc3640a869550
|
||||
}
|
||||
|
||||
public boolean ravagerRidable = false;
|
||||
@@ -1548,6 +1579,7 @@ public class PurpurWorldConfig {
|
||||
@@ -1547,6 +1578,7 @@ public class PurpurWorldConfig {
|
||||
public boolean ravagerControllable = true;
|
||||
public double ravagerMaxHealth = 100.0D;
|
||||
public double ravagerScale = 1.0D;
|
||||
@@ -575,7 +572,7 @@ index 38a3ea0784a0797f26b8d3b9adb1d825b0c8058b..c38e6078eca2628dcd3cc3640a869550
|
||||
private void ravagerSettings() {
|
||||
ravagerRidable = getBoolean("mobs.ravager.ridable", ravagerRidable);
|
||||
ravagerRidableInWater = getBoolean("mobs.ravager.ridable-in-water", ravagerRidableInWater);
|
||||
@@ -1559,6 +1591,7 @@ public class PurpurWorldConfig {
|
||||
@@ -1558,6 +1590,7 @@ public class PurpurWorldConfig {
|
||||
}
|
||||
ravagerMaxHealth = getDouble("mobs.ravager.attributes.max_health", ravagerMaxHealth);
|
||||
ravagerScale = Mth.clamp(getDouble("mobs.ravager.attributes.scale", ravagerScale), 0.0625D, 16.0D);
|
||||
@@ -583,7 +580,7 @@ index 38a3ea0784a0797f26b8d3b9adb1d825b0c8058b..c38e6078eca2628dcd3cc3640a869550
|
||||
}
|
||||
|
||||
public boolean salmonRidable = false;
|
||||
@@ -1583,6 +1616,7 @@ public class PurpurWorldConfig {
|
||||
@@ -1582,6 +1615,7 @@ public class PurpurWorldConfig {
|
||||
public double sheepMaxHealth = 8.0D;
|
||||
public double sheepScale = 1.0D;
|
||||
public int sheepBreedingTicks = 6000;
|
||||
@@ -591,7 +588,7 @@ index 38a3ea0784a0797f26b8d3b9adb1d825b0c8058b..c38e6078eca2628dcd3cc3640a869550
|
||||
private void sheepSettings() {
|
||||
sheepRidable = getBoolean("mobs.sheep.ridable", sheepRidable);
|
||||
sheepRidableInWater = getBoolean("mobs.sheep.ridable-in-water", sheepRidableInWater);
|
||||
@@ -1595,6 +1629,7 @@ public class PurpurWorldConfig {
|
||||
@@ -1594,6 +1628,7 @@ public class PurpurWorldConfig {
|
||||
sheepMaxHealth = getDouble("mobs.sheep.attributes.max_health", sheepMaxHealth);
|
||||
sheepScale = Mth.clamp(getDouble("mobs.sheep.attributes.scale", sheepScale), 0.0625D, 16.0D);
|
||||
sheepBreedingTicks = getInt("mobs.sheep.breeding-delay-ticks", sheepBreedingTicks);
|
||||
@@ -599,7 +596,7 @@ index 38a3ea0784a0797f26b8d3b9adb1d825b0c8058b..c38e6078eca2628dcd3cc3640a869550
|
||||
}
|
||||
|
||||
public boolean shulkerRidable = false;
|
||||
@@ -1622,6 +1657,7 @@ public class PurpurWorldConfig {
|
||||
@@ -1621,6 +1656,7 @@ public class PurpurWorldConfig {
|
||||
public double silverfishScale = 1.0D;
|
||||
public double silverfishMovementSpeed = 0.25D;
|
||||
public double silverfishAttackDamage = 1.0D;
|
||||
@@ -607,7 +604,7 @@ index 38a3ea0784a0797f26b8d3b9adb1d825b0c8058b..c38e6078eca2628dcd3cc3640a869550
|
||||
private void silverfishSettings() {
|
||||
silverfishRidable = getBoolean("mobs.silverfish.ridable", silverfishRidable);
|
||||
silverfishRidableInWater = getBoolean("mobs.silverfish.ridable-in-water", silverfishRidableInWater);
|
||||
@@ -1635,6 +1671,7 @@ public class PurpurWorldConfig {
|
||||
@@ -1634,6 +1670,7 @@ public class PurpurWorldConfig {
|
||||
silverfishScale = Mth.clamp(getDouble("mobs.silverfish.attributes.scale", silverfishScale), 0.0625D, 16.0D);
|
||||
silverfishMovementSpeed = getDouble("mobs.silverfish.attributes.movement_speed", silverfishMovementSpeed);
|
||||
silverfishAttackDamage = getDouble("mobs.silverfish.attributes.attack_damage", silverfishAttackDamage);
|
||||
@@ -615,7 +612,7 @@ index 38a3ea0784a0797f26b8d3b9adb1d825b0c8058b..c38e6078eca2628dcd3cc3640a869550
|
||||
}
|
||||
|
||||
public boolean skeletonRidable = false;
|
||||
@@ -1715,6 +1752,7 @@ public class PurpurWorldConfig {
|
||||
@@ -1714,6 +1751,7 @@ public class PurpurWorldConfig {
|
||||
public int snowGolemSnowBallMax = 20;
|
||||
public float snowGolemSnowBallModifier = 10.0F;
|
||||
public double snowGolemAttackDistance = 1.25D;
|
||||
@@ -623,7 +620,7 @@ index 38a3ea0784a0797f26b8d3b9adb1d825b0c8058b..c38e6078eca2628dcd3cc3640a869550
|
||||
private void snowGolemSettings() {
|
||||
snowGolemRidable = getBoolean("mobs.snow_golem.ridable", snowGolemRidable);
|
||||
snowGolemRidableInWater = getBoolean("mobs.snow_golem.ridable-in-water", snowGolemRidableInWater);
|
||||
@@ -1732,6 +1770,7 @@ public class PurpurWorldConfig {
|
||||
@@ -1731,6 +1769,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);
|
||||
@@ -631,7 +628,7 @@ index 38a3ea0784a0797f26b8d3b9adb1d825b0c8058b..c38e6078eca2628dcd3cc3640a869550
|
||||
}
|
||||
|
||||
public boolean snifferRidable = false;
|
||||
@@ -1935,6 +1974,7 @@ public class PurpurWorldConfig {
|
||||
@@ -1934,6 +1973,7 @@ public class PurpurWorldConfig {
|
||||
public int villagerBreedingTicks = 6000;
|
||||
public boolean villagerClericsFarmWarts = false;
|
||||
public boolean villagerClericFarmersThrowWarts = true;
|
||||
@@ -639,7 +636,7 @@ index 38a3ea0784a0797f26b8d3b9adb1d825b0c8058b..c38e6078eca2628dcd3cc3640a869550
|
||||
private void villagerSettings() {
|
||||
villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable);
|
||||
villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater);
|
||||
@@ -1952,6 +1992,7 @@ public class PurpurWorldConfig {
|
||||
@@ -1951,6 +1991,7 @@ public class PurpurWorldConfig {
|
||||
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);
|
||||
@@ -647,7 +644,7 @@ index 38a3ea0784a0797f26b8d3b9adb1d825b0c8058b..c38e6078eca2628dcd3cc3640a869550
|
||||
}
|
||||
|
||||
public boolean vindicatorRidable = false;
|
||||
@@ -2031,6 +2072,7 @@ public class PurpurWorldConfig {
|
||||
@@ -2030,6 +2071,7 @@ public class PurpurWorldConfig {
|
||||
public double witherScale = 1.0D;
|
||||
public float witherHealthRegenAmount = 1.0f;
|
||||
public int witherHealthRegenDelay = 20;
|
||||
@@ -655,7 +652,7 @@ index 38a3ea0784a0797f26b8d3b9adb1d825b0c8058b..c38e6078eca2628dcd3cc3640a869550
|
||||
private void witherSettings() {
|
||||
witherRidable = getBoolean("mobs.wither.ridable", witherRidable);
|
||||
witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater);
|
||||
@@ -2049,6 +2091,7 @@ public class PurpurWorldConfig {
|
||||
@@ -2048,6 +2090,7 @@ public class PurpurWorldConfig {
|
||||
witherScale = Mth.clamp(getDouble("mobs.wither.attributes.scale", witherScale), 0.0625D, 16.0D);
|
||||
witherHealthRegenAmount = (float) getDouble("mobs.wither.health-regen-amount", witherHealthRegenAmount);
|
||||
witherHealthRegenDelay = getInt("mobs.wither.health-regen-delay", witherHealthRegenDelay);
|
||||
@@ -663,7 +660,7 @@ index 38a3ea0784a0797f26b8d3b9adb1d825b0c8058b..c38e6078eca2628dcd3cc3640a869550
|
||||
}
|
||||
|
||||
public boolean witherSkeletonRidable = false;
|
||||
@@ -2127,6 +2170,7 @@ public class PurpurWorldConfig {
|
||||
@@ -2126,6 +2169,7 @@ public class PurpurWorldConfig {
|
||||
public double zombieJockeyChance = 0.05D;
|
||||
public boolean zombieJockeyTryExistingChickens = true;
|
||||
public boolean zombieAggressiveTowardsVillagerWhenLagging = true;
|
||||
@@ -671,7 +668,7 @@ index 38a3ea0784a0797f26b8d3b9adb1d825b0c8058b..c38e6078eca2628dcd3cc3640a869550
|
||||
private void zombieSettings() {
|
||||
zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable);
|
||||
zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater);
|
||||
@@ -2143,6 +2187,7 @@ public class PurpurWorldConfig {
|
||||
@@ -2142,6 +2186,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);
|
||||
@@ -9,10 +9,10 @@ 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 1d82cfe7af0dc42f88901fb0c44896771fdf8a93..43dd972b374daa1072608f3a68e812e7fb733a2b 100644
|
||||
index 6582db84c5307257f16c321453491cf24e40c9c7..f9015d4e478efeec8a796b7a897638f76064db20 100644
|
||||
--- a/src/main/java/net/minecraft/world/level/block/NoteBlock.java
|
||||
+++ b/src/main/java/net/minecraft/world/level/block/NoteBlock.java
|
||||
@@ -95,7 +95,7 @@ public class NoteBlock extends Block {
|
||||
@@ -97,7 +97,7 @@ public class NoteBlock extends Block {
|
||||
}
|
||||
|
||||
private void playNote(@Nullable Entity entity, BlockState state, Level world, BlockPos pos) {
|
||||
@@ -22,22 +22,23 @@ index 1d82cfe7af0dc42f88901fb0c44896771fdf8a93..43dd972b374daa1072608f3a68e812e7
|
||||
// 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 c38e6078eca2628dcd3cc3640a869550a95f2f49..d7ea0c68b93dee2bf43e8b863b680f060bda0869 100644
|
||||
index b1d63425dc952c0ee0b3bd371a0910787ce628b7..eed88f28a22665b2998297af2d74535610cf9d58 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 {
|
||||
@@ -123,6 +123,7 @@ public class PurpurWorldConfig {
|
||||
public boolean entitiesPickUpLootBypassMobGriefing = false;
|
||||
public boolean fireballsBypassMobGriefing = false;
|
||||
public boolean milkCuresBadOmen = true;
|
||||
+ public boolean noteBlockIgnoreAbove = false;
|
||||
public boolean persistentDroppableEntityDisplayNames = true;
|
||||
public boolean projectilesBypassMobGriefing = false;
|
||||
public double tridentLoyaltyVoidReturnHeight = 0.0D;
|
||||
@@ -133,6 +134,7 @@ public class PurpurWorldConfig {
|
||||
+ public boolean noteBlockIgnoreAbove = false;
|
||||
private void miscGameplayMechanicsSettings() {
|
||||
useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending);
|
||||
boatEjectPlayersOnLand = getBoolean("gameplay-mechanics.boat.eject-players-on-land", boatEjectPlayersOnLand);
|
||||
@@ -136,7 +137,7 @@ public class PurpurWorldConfig {
|
||||
entitiesPickUpLootBypassMobGriefing = getBoolean("gameplay-mechanics.entities-pick-up-loot-bypass-mob-griefing", entitiesPickUpLootBypassMobGriefing);
|
||||
fireballsBypassMobGriefing = getBoolean("gameplay-mechanics.fireballs-bypass-mob-griefing", fireballsBypassMobGriefing);
|
||||
milkCuresBadOmen = getBoolean("gameplay-mechanics.milk-cures-bad-omen", milkCuresBadOmen);
|
||||
+ noteBlockIgnoreAbove = getBoolean("gameplay-mechanics.note-block-ignore-above", noteBlockIgnoreAbove);
|
||||
persistentDroppableEntityDisplayNames = getBoolean("gameplay-mechanics.persistent-droppable-entity-display-names", persistentDroppableEntityDisplayNames);
|
||||
projectilesBypassMobGriefing = getBoolean("gameplay-mechanics.projectiles-bypass-mob-griefing", projectilesBypassMobGriefing);
|
||||
tridentLoyaltyVoidReturnHeight = getDouble("gameplay-mechanics.trident-loyalty-void-return-height", tridentLoyaltyVoidReturnHeight);
|
||||
-
|
||||
+ noteBlockIgnoreAbove = getBoolean("gameplay-mechanics.note-block-ignore-above", noteBlockIgnoreAbove);
|
||||
}
|
||||
|
||||
public int daytimeTicks = 12000;
|
||||
@@ -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/level/block/EndGatewayBlock.java b/src/main/java/net/minecraft/world/level/block/EndGatewayBlock.java
|
||||
index 3f5bb5c9ceb5b31fcc9ef0a7a6157e1e1cb2a09f..9bd56c48119fe630f272427a2ec99ffe19eefdfb 100644
|
||||
index a7a21f071161fb7e73a046717d2462f871ab653c..abb75f9389167a1f51a2c50831664d50181749de 100644
|
||||
--- a/src/main/java/net/minecraft/world/level/block/EndGatewayBlock.java
|
||||
+++ b/src/main/java/net/minecraft/world/level/block/EndGatewayBlock.java
|
||||
@@ -102,6 +102,13 @@ public class EndGatewayBlock extends BaseEntityBlock implements Portal {
|
||||
@@ -104,6 +104,13 @@ public class EndGatewayBlock extends BaseEntityBlock implements Portal {
|
||||
TheEndGatewayBlockEntity tileentityendgateway = (TheEndGatewayBlockEntity) tileentity;
|
||||
|
||||
if (!tileentityendgateway.isCoolingDown()) {
|
||||
@@ -35,13 +35,13 @@ index 3f5bb5c9ceb5b31fcc9ef0a7a6157e1e1cb2a09f..9bd56c48119fe630f272427a2ec99ffe
|
||||
TheEndGatewayBlockEntity.triggerCooldown(world, pos, state, tileentityendgateway);
|
||||
}
|
||||
diff --git a/src/main/java/net/minecraft/world/level/block/EndPortalBlock.java b/src/main/java/net/minecraft/world/level/block/EndPortalBlock.java
|
||||
index a35a426cc7778a51523f26057b5d61b8a3e23d5d..28d8c8a879badc97cd1168e1847e2fafdc40e4bd 100644
|
||||
index 4aa14f975e1ceedf3d4a427e0daefb58b12fcafe..2dffc3990d9ae3d595d923239885e3a7d8ec04f3 100644
|
||||
--- a/src/main/java/net/minecraft/world/level/block/EndPortalBlock.java
|
||||
+++ b/src/main/java/net/minecraft/world/level/block/EndPortalBlock.java
|
||||
@@ -65,6 +65,13 @@ public class EndPortalBlock extends BaseEntityBlock implements Portal {
|
||||
@@ -70,6 +70,13 @@ public class EndPortalBlock extends BaseEntityBlock implements Portal {
|
||||
protected void entityInside(BlockState state, Level world, BlockPos pos, Entity entity) {
|
||||
if (!new io.papermc.paper.event.entity.EntityInsideBlockEvent(entity.getBukkitEntity(), org.bukkit.craftbukkit.block.CraftBlock.at(world, pos)).callEvent()) { return; } // Paper - Add EntityInsideBlockEvent
|
||||
if (entity.canUsePortal(false) && Shapes.joinIsNotEmpty(Shapes.create(entity.getBoundingBox().move((double) (-pos.getX()), (double) (-pos.getY()), (double) (-pos.getZ()))), state.getShape(world, pos), BooleanOp.AND)) {
|
||||
if (entity.canUsePortal(false)) {
|
||||
+ // Purpur start
|
||||
+ if (world.purpurConfig.imposeTeleportRestrictionsOnEndPortals && (entity.isVehicle() || entity.isPassenger())) {
|
||||
+ if (!new org.purpurmc.purpur.event.entity.EntityTeleportHinderedEvent(entity.getBukkitEntity(), entity.isPassenger() ? org.purpurmc.purpur.event.entity.EntityTeleportHinderedEvent.Reason.IS_PASSENGER : org.purpurmc.purpur.event.entity.EntityTeleportHinderedEvent.Reason.IS_VEHICLE, PlayerTeleportEvent.TeleportCause.END_PORTAL).callEvent()) {
|
||||
@@ -53,10 +53,10 @@ index a35a426cc7778a51523f26057b5d61b8a3e23d5d..28d8c8a879badc97cd1168e1847e2faf
|
||||
EntityPortalEnterEvent event = new EntityPortalEnterEvent(entity.getBukkitEntity(), new org.bukkit.Location(world.getWorld(), pos.getX(), pos.getY(), pos.getZ()), org.bukkit.PortalType.ENDER); // Paper - add portal type
|
||||
world.getCraftServer().getPluginManager().callEvent(event);
|
||||
diff --git a/src/main/java/net/minecraft/world/level/block/NetherPortalBlock.java b/src/main/java/net/minecraft/world/level/block/NetherPortalBlock.java
|
||||
index 0fdbcab175b51a8b77646e0e4a267d987b133a35..e8cccf3d89ecef13c0523c2357ef4b07e30a25b4 100644
|
||||
index 2b31bf586c1c0bd393d2aa8d0b6635dd9f22f21c..c00b13482ce3f603f1d85b9a5ad36b768de5a9f8 100644
|
||||
--- a/src/main/java/net/minecraft/world/level/block/NetherPortalBlock.java
|
||||
+++ b/src/main/java/net/minecraft/world/level/block/NetherPortalBlock.java
|
||||
@@ -109,6 +109,13 @@ public class NetherPortalBlock extends Block implements Portal {
|
||||
@@ -117,6 +117,13 @@ public class NetherPortalBlock extends Block implements Portal {
|
||||
protected void entityInside(BlockState state, Level world, BlockPos pos, Entity entity) {
|
||||
if (!new io.papermc.paper.event.entity.EntityInsideBlockEvent(entity.getBukkitEntity(), org.bukkit.craftbukkit.block.CraftBlock.at(world, pos)).callEvent()) { return; } // Paper - Add EntityInsideBlockEvent
|
||||
if (entity.canUsePortal(false)) {
|
||||
@@ -71,10 +71,10 @@ index 0fdbcab175b51a8b77646e0e4a267d987b133a35..e8cccf3d89ecef13c0523c2357ef4b07
|
||||
EntityPortalEnterEvent event = new EntityPortalEnterEvent(entity.getBukkitEntity(), new org.bukkit.Location(world.getWorld(), pos.getX(), pos.getY(), pos.getZ()), org.bukkit.PortalType.NETHER); // Paper - add portal type
|
||||
world.getCraftServer().getPluginManager().callEvent(event);
|
||||
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
|
||||
index 0883ac705b507c839246a50bd99f7230f9f3a56f..af3ab1eb9af64605203e7bb671ff08a38be9e6a6 100644
|
||||
index cf1797c6ba877c510bba5c8016e57003373d8220..f68c1d6c7003202c4d107663b9c60c2fb1c95455 100644
|
||||
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
|
||||
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
|
||||
@@ -245,6 +245,7 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
|
||||
@@ -246,6 +246,7 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
|
||||
boolean ignorePassengers = flagSet.contains(io.papermc.paper.entity.TeleportFlag.EntityState.RETAIN_PASSENGERS);
|
||||
// Don't allow teleporting between worlds while keeping passengers
|
||||
if (flagSet.contains(io.papermc.paper.entity.TeleportFlag.EntityState.RETAIN_PASSENGERS) && this.entity.isVehicle() && location.getWorld() != this.getWorld()) {
|
||||
@@ -83,10 +83,10 @@ index 0883ac705b507c839246a50bd99f7230f9f3a56f..af3ab1eb9af64605203e7bb671ff08a3
|
||||
}
|
||||
|
||||
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
||||
index 82b8fca9ca46f24d71b357ed5eab89c6b27ecd8a..9df9b518f6188a758d9a712def36dadb9dd94f21 100644
|
||||
index dc698d64ff3b5ab3b65b91159ce26d7cf51e68a1..32f0aa352a4809573784451bccd70ae8c02590f4 100644
|
||||
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
||||
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
||||
@@ -1440,6 +1440,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
@@ -1458,6 +1458,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
// Paper start - Teleport passenger API
|
||||
// Don't allow teleporting between worlds while keeping passengers
|
||||
if (ignorePassengers && entity.isVehicle() && location.getWorld() != this.getWorld()) {
|
||||
@@ -95,26 +95,27 @@ index 82b8fca9ca46f24d71b357ed5eab89c6b27ecd8a..9df9b518f6188a758d9a712def36dadb
|
||||
}
|
||||
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index d7ea0c68b93dee2bf43e8b863b680f060bda0869..c348b5570aa8a311198569a2024aec12e21a3e40 100644
|
||||
index eed88f28a22665b2998297af2d74535610cf9d58..929bb86a823f3283d9abae278186b9f24a8543a8 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -118,6 +118,9 @@ public class PurpurWorldConfig {
|
||||
public boolean entitiesCanUsePortals = true;
|
||||
public boolean entitiesPickUpLootBypassMobGriefing = false;
|
||||
@@ -124,6 +124,9 @@ public class PurpurWorldConfig {
|
||||
public boolean fireballsBypassMobGriefing = false;
|
||||
public boolean projectilesBypassMobGriefing = false;
|
||||
public boolean noteBlockIgnoreAbove = false;
|
||||
+ public boolean imposeTeleportRestrictionsOnGateways = false;
|
||||
+ public boolean imposeTeleportRestrictionsOnNetherPortals = false;
|
||||
+ public boolean imposeTeleportRestrictionsOnEndPortals = false;
|
||||
public boolean milkCuresBadOmen = true;
|
||||
public boolean noteBlockIgnoreAbove = false;
|
||||
public boolean persistentDroppableEntityDisplayNames = true;
|
||||
@@ -133,6 +136,9 @@ public class PurpurWorldConfig {
|
||||
entitiesCanUsePortals = getBoolean("gameplay-mechanics.entities-can-use-portals", entitiesCanUsePortals);
|
||||
entitiesPickUpLootBypassMobGriefing = getBoolean("gameplay-mechanics.entities-pick-up-loot-bypass-mob-griefing", entitiesPickUpLootBypassMobGriefing);
|
||||
private void miscGameplayMechanicsSettings() {
|
||||
useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending);
|
||||
boatEjectPlayersOnLand = getBoolean("gameplay-mechanics.boat.eject-players-on-land", boatEjectPlayersOnLand);
|
||||
@@ -138,6 +141,10 @@ public class PurpurWorldConfig {
|
||||
fireballsBypassMobGriefing = getBoolean("gameplay-mechanics.fireballs-bypass-mob-griefing", fireballsBypassMobGriefing);
|
||||
projectilesBypassMobGriefing = getBoolean("gameplay-mechanics.projectiles-bypass-mob-griefing", projectilesBypassMobGriefing);
|
||||
noteBlockIgnoreAbove = getBoolean("gameplay-mechanics.note-block-ignore-above", noteBlockIgnoreAbove);
|
||||
+ imposeTeleportRestrictionsOnGateways = getBoolean("gameplay-mechanics.impose-teleport-restrictions-on-gateways", imposeTeleportRestrictionsOnGateways);
|
||||
+ imposeTeleportRestrictionsOnNetherPortals = getBoolean("gameplay-mechanics.impose-teleport-restrictions-on-nether-portals", imposeTeleportRestrictionsOnNetherPortals);
|
||||
+ imposeTeleportRestrictionsOnEndPortals = getBoolean("gameplay-mechanics.impose-teleport-restrictions-on-end-portals", imposeTeleportRestrictionsOnEndPortals);
|
||||
milkCuresBadOmen = getBoolean("gameplay-mechanics.milk-cures-bad-omen", milkCuresBadOmen);
|
||||
noteBlockIgnoreAbove = getBoolean("gameplay-mechanics.note-block-ignore-above", noteBlockIgnoreAbove);
|
||||
persistentDroppableEntityDisplayNames = getBoolean("gameplay-mechanics.persistent-droppable-entity-display-names", persistentDroppableEntityDisplayNames);
|
||||
+
|
||||
}
|
||||
|
||||
public int daytimeTicks = 12000;
|
||||
@@ -12,11 +12,11 @@ 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 99798220b6e0ad06db2ba5c9b74bfb72af185fee..12a0c69f8fec30fad64cbb00af2ca1bbf0ea5153 100644
|
||||
index e1abec46177887a92726de80f66226fe7fbbb4a2..bc149eb17695ac727aa8db08db6209497f7d20bf 100644
|
||||
--- a/src/main/java/net/minecraft/world/level/block/FarmBlock.java
|
||||
+++ b/src/main/java/net/minecraft/world/level/block/FarmBlock.java
|
||||
@@ -126,12 +126,20 @@ public class FarmBlock extends Block {
|
||||
}
|
||||
@@ -127,12 +127,20 @@ public class FarmBlock extends Block {
|
||||
}
|
||||
|
||||
// Purpur start
|
||||
+ if (world.purpurConfig.farmlandTramplingDisabled) return;
|
||||
@@ -34,13 +34,13 @@ index 99798220b6e0ad06db2ba5c9b74bfb72af185fee..12a0c69f8fec30fad64cbb00af2ca1bb
|
||||
+ }
|
||||
+ }
|
||||
// Purpur end
|
||||
if (!CraftEventFactory.callEntityChangeBlockEvent(entity, pos, Blocks.DIRT.defaultBlockState())) {
|
||||
return;
|
||||
if (!CraftEventFactory.callEntityChangeBlockEvent(entity, pos, Blocks.DIRT.defaultBlockState())) {
|
||||
return;
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index c348b5570aa8a311198569a2024aec12e21a3e40..0bc350c73ecbaa253cf126c3b4071b07593643fe 100644
|
||||
index 929bb86a823f3283d9abae278186b9f24a8543a8..ec44bddaedef83fa9feedee6253df78213f71280 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -417,10 +417,16 @@ public class PurpurWorldConfig {
|
||||
@@ -416,10 +416,16 @@ public class PurpurWorldConfig {
|
||||
public boolean farmlandBypassMobGriefing = false;
|
||||
public boolean farmlandGetsMoistFromBelow = false;
|
||||
public boolean farmlandAlpha = false;
|
||||
@@ -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 acf10656ea445554ee537dcb2f23164ee77e4d60..b8b38d6b544261038905c97e8c600625f5ce2bda 100644
|
||||
index 4b516fcc23c692ec2c9847bee45484d747981410..49af66a9f5e0fcc0993fdfb8095645e48c17bd68 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/Entity.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
|
||||
@@ -1937,7 +1937,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
|
||||
@@ -2007,7 +2007,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
|
||||
return this.isInWater() || flag;
|
||||
}
|
||||
|
||||
@@ -28,12 +28,12 @@ index acf10656ea445554ee537dcb2f23164ee77e4d60..b8b38d6b544261038905c97e8c600625
|
||||
+ public void updateInWaterStateAndDoWaterCurrentPushing() { // Purpur - package-private -> public
|
||||
Entity entity = this.getVehicle();
|
||||
|
||||
if (entity instanceof Boat entityboat) {
|
||||
if (entity instanceof AbstractBoat abstractboat) {
|
||||
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 4d6df7ec1bffbd30d4aac906f393ead0dfd8f69d..7180d65afee6216a0bc6ff2dc7888f64b9b6c22d 100644
|
||||
index 12ff824ffa81ea45f76337ec2b6d80b01047b698..c954cb3255145e18e8ab1e5a1b0267b879bbd1f3 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java
|
||||
@@ -102,10 +102,12 @@ public class ArmorStand extends LivingEntity {
|
||||
@@ -114,10 +114,12 @@ public class ArmorStand extends LivingEntity {
|
||||
private boolean noTickPoseDirty = false;
|
||||
private boolean noTickEquipmentDirty = false;
|
||||
// Paper end - Allow ArmorStands not to tick
|
||||
@@ -46,7 +46,7 @@ index 4d6df7ec1bffbd30d4aac906f393ead0dfd8f69d..7180d65afee6216a0bc6ff2dc7888f64
|
||||
this.handItems = NonNullList.withSize(2, ItemStack.EMPTY);
|
||||
this.armorItems = NonNullList.withSize(4, ItemStack.EMPTY);
|
||||
this.headPose = ArmorStand.DEFAULT_HEAD_POSE;
|
||||
@@ -1017,4 +1019,18 @@ public class ArmorStand extends LivingEntity {
|
||||
@@ -1015,4 +1017,18 @@ public class ArmorStand extends LivingEntity {
|
||||
}
|
||||
}
|
||||
// Paper end
|
||||
@@ -66,7 +66,7 @@ index 4d6df7ec1bffbd30d4aac906f393ead0dfd8f69d..7180d65afee6216a0bc6ff2dc7888f64
|
||||
+ // Purpur end
|
||||
}
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index 0bc350c73ecbaa253cf126c3b4071b07593643fe..fd1dfddc41e27d065f3eb429d2217c5eaa77f3b0 100644
|
||||
index ec44bddaedef83fa9feedee6253df78213f71280..63b38c9c0862a5bd00468024015e62d0485b2619 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -100,10 +100,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 6100c35a54a9f597bb7e4925bf2c63aa7e0d64d3..d677c1308412e5a12046225ce2449af136b7665f 100644
|
||||
index d1a4eca112ad8698aa9025cec1b38bca01805e3f..c64b2386f35c55e3484df2d193f712a1728dc745 100644
|
||||
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
||||
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
||||
@@ -1424,6 +1424,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple
|
||||
@@ -1680,6 +1680,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple
|
||||
worldserver1.removePlayerImmediately(this, Entity.RemovalReason.CHANGED_DIMENSION);
|
||||
this.unsetRemoved();
|
||||
// CraftBukkit end
|
||||
+ this.portalPos = io.papermc.paper.util.MCUtil.toBlockPosition(exit); // Purpur - Fix stuck in portals
|
||||
this.setServerLevel(worldserver);
|
||||
this.connection.teleport(exit); // CraftBukkit - use internal teleport without event
|
||||
this.connection.internalTeleport(PositionMoveRotation.of(teleportTarget), teleportTarget.relatives()); // CraftBukkit - use internal teleport without event
|
||||
this.connection.resetPosition();
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
|
||||
index b8b38d6b544261038905c97e8c600625f5ce2bda..901080dd8431b83b20aa5604e931519dcba82b22 100644
|
||||
index 49af66a9f5e0fcc0993fdfb8095645e48c17bd68..0b936bcf09bb12b0a29a1ef755df1a24604f0904 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/Entity.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
|
||||
@@ -3274,13 +3274,16 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
|
||||
@@ -3428,14 +3428,17 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
|
||||
return Vec3.directionFromRotation(this.getRotationVector());
|
||||
}
|
||||
|
||||
@@ -31,17 +31,18 @@ index b8b38d6b544261038905c97e8c600625f5ce2bda..901080dd8431b83b20aa5604e931519d
|
||||
this.setPortalCooldown();
|
||||
} else if (this.level.purpurConfig.entitiesCanUsePortals || this instanceof ServerPlayer) { // Purpur - Entities can use portals
|
||||
if (this.portalProcess != null && this.portalProcess.isSamePortal(portal)) {
|
||||
this.portalProcess.updateEntryPosition(pos.immutable());
|
||||
this.portalProcess.setAsInsidePortalThisTick(true);
|
||||
+ this.portalPos = BlockPos.ZERO; // Purpur - Fix stuck in portals
|
||||
if (!this.portalProcess.isInsidePortalThisTick()) {
|
||||
this.portalProcess.updateEntryPosition(pos.immutable());
|
||||
this.portalProcess.setAsInsidePortalThisTick(true);
|
||||
+ this.portalPos = BlockPos.ZERO; // Purpur - Fix stuck in portals
|
||||
}
|
||||
} else {
|
||||
this.portalProcess = new PortalProcessor(portal, pos.immutable());
|
||||
}
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index fd1dfddc41e27d065f3eb429d2217c5eaa77f3b0..f8717837f1fb25b244e38f4b32c73e57158a2bb9 100644
|
||||
index 63b38c9c0862a5bd00468024015e62d0485b2619..b700c52f74cbae8f99bc721b9b594845a1c1ee6d 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -326,6 +326,7 @@ public class PurpurWorldConfig {
|
||||
@@ -325,6 +325,7 @@ public class PurpurWorldConfig {
|
||||
public int playerDeathExpDropMax = 100;
|
||||
public boolean teleportIfOutsideBorder = false;
|
||||
public boolean totemOfUndyingWorksInInventory = false;
|
||||
@@ -49,7 +50,7 @@ index fd1dfddc41e27d065f3eb429d2217c5eaa77f3b0..f8717837f1fb25b244e38f4b32c73e57
|
||||
private void playerSettings() {
|
||||
if (PurpurConfig.version < 19) {
|
||||
boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer);
|
||||
@@ -341,6 +342,7 @@ public class PurpurWorldConfig {
|
||||
@@ -340,6 +341,7 @@ public class PurpurWorldConfig {
|
||||
playerDeathExpDropMax = getInt("gameplay-mechanics.player.exp-dropped-on-death.maximum", playerDeathExpDropMax);
|
||||
teleportIfOutsideBorder = getBoolean("gameplay-mechanics.player.teleport-if-outside-border", teleportIfOutsideBorder);
|
||||
totemOfUndyingWorksInInventory = getBoolean("gameplay-mechanics.player.totem-of-undying-works-in-inventory", totemOfUndyingWorksInInventory);
|
||||
File diff suppressed because it is too large
Load Diff
@@ -20,10 +20,10 @@ index b0944fa1f3849dd24cd010fa0a6638f5fd7179d1..d409ae987088df3d47192128401d7491
|
||||
return;
|
||||
}
|
||||
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 4476fb2764bccdb0868e6e43f3a803971982effb..2cbaebbdc6bf4ce9131e67d891a612ec6ce86275 100644
|
||||
index 1a060021f92822a85aa45d682ee09d8ef69d7a1f..8f0a31c896340907aa8017c0a56fb58db48c2c65 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/animal/Cat.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/animal/Cat.java
|
||||
@@ -513,7 +513,7 @@ public class Cat extends TamableAnimal implements VariantHolder<Holder<CatVarian
|
||||
@@ -522,7 +522,7 @@ public class Cat extends TamableAnimal implements VariantHolder<Holder<CatVarian
|
||||
}
|
||||
|
||||
private void tryToTame(Player player) {
|
||||
@@ -33,10 +33,10 @@ index 4476fb2764bccdb0868e6e43f3a803971982effb..2cbaebbdc6bf4ce9131e67d891a612ec
|
||||
this.setOrderedToSit(true);
|
||||
this.level().broadcastEntityEvent(this, (byte) 7);
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/animal/Parrot.java b/src/main/java/net/minecraft/world/entity/animal/Parrot.java
|
||||
index 0711b1c38b4bef53aeb0d447774db4a639704e8d..884fc114ef70d49fd0d64fcea46fb277950962a1 100644
|
||||
index b3dab2eda7aa109c4715e027fd6bba6ac320a106..9c7e29307b811d859a0d743b232463e18391b5f0 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/animal/Parrot.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/animal/Parrot.java
|
||||
@@ -322,7 +322,7 @@ public class Parrot extends ShoulderRidingEntity implements VariantHolder<Parrot
|
||||
@@ -324,7 +324,7 @@ public class Parrot extends ShoulderRidingEntity implements VariantHolder<Parrot
|
||||
}
|
||||
|
||||
if (!this.level().isClientSide) {
|
||||
@@ -46,10 +46,10 @@ index 0711b1c38b4bef53aeb0d447774db4a639704e8d..884fc114ef70d49fd0d64fcea46fb277
|
||||
this.level().broadcastEntityEvent(this, (byte) 7);
|
||||
} else {
|
||||
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 b6602362b7b450749ae1768572658b756c4e7840..2949adfbe7c71d552a4afb6aca1c166a718716f4 100644
|
||||
index ec8dc3d02920580103e534f3102063c80bfab5f0..27fb659a92606a89e5e669d41618f94996bf0c5a 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/animal/Wolf.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/animal/Wolf.java
|
||||
@@ -655,7 +655,7 @@ public class Wolf extends TamableAnimal implements NeutralMob, VariantHolder<Hol
|
||||
@@ -637,7 +637,7 @@ public class Wolf extends TamableAnimal implements NeutralMob, VariantHolder<Hol
|
||||
|
||||
private void tryToTame(Player player) {
|
||||
// CraftBukkit - added event call and isCancelled check.
|
||||
@@ -59,7 +59,7 @@ index b6602362b7b450749ae1768572658b756c4e7840..2949adfbe7c71d552a4afb6aca1c166a
|
||||
this.navigation.stop();
|
||||
this.setTarget((LivingEntity) null);
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index 791b12dd28c0a56cc9ce6a4e4414b85ea641efd0..0f2d27f3ceea7fc87bf63b10d94f4ccf339e59b9 100644
|
||||
index d3e196a29e10a21436c4e8049790d87cae2037be..48c1c436f85031df702d7cea74cf7b5713025a3c 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -118,6 +118,7 @@ public class PurpurWorldConfig {
|
||||
@@ -70,8 +70,8 @@ index 791b12dd28c0a56cc9ce6a4e4414b85ea641efd0..0f2d27f3ceea7fc87bf63b10d94f4ccf
|
||||
public boolean boatEjectPlayersOnLand = false;
|
||||
public boolean boatsDoFallDamage = false;
|
||||
public boolean disableDropsOnCrammingDeath = false;
|
||||
@@ -136,6 +137,7 @@ public class PurpurWorldConfig {
|
||||
public int animalBreedingCooldownSeconds = 0;
|
||||
@@ -135,6 +136,7 @@ public class PurpurWorldConfig {
|
||||
public boolean imposeTeleportRestrictionsOnEndPortals = false;
|
||||
private void miscGameplayMechanicsSettings() {
|
||||
useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending);
|
||||
+ alwaysTameInCreative = getBoolean("gameplay-mechanics.always-tame-in-creative", alwaysTameInCreative);
|
||||
@@ -5,7 +5,7 @@ Subject: [PATCH] End crystal explosion options
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java
|
||||
index 72122333cf0247e4a8511ac633487f170b89586c..02f1d0418395b100cabfad7294466aaad34ac7c6 100644
|
||||
index 4c9709e680b585316978b6a410600a8a3b4b6e3e..305c3350116f656c3d0e6134e4d8023eac50f3ad 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java
|
||||
@@ -49,6 +49,22 @@ public class EndCrystal extends Entity {
|
||||
@@ -31,7 +31,7 @@ index 72122333cf0247e4a8511ac633487f170b89586c..02f1d0418395b100cabfad7294466aaa
|
||||
@Override
|
||||
protected Entity.MovementEmission getMovementEmission() {
|
||||
return Entity.MovementEmission.NONE;
|
||||
@@ -172,16 +188,18 @@ public class EndCrystal extends Entity {
|
||||
@@ -177,16 +193,18 @@ public class EndCrystal extends Entity {
|
||||
}
|
||||
// CraftBukkit end
|
||||
if (!source.is(DamageTypeTags.IS_EXPLOSION)) {
|
||||
@@ -46,17 +46,17 @@ index 72122333cf0247e4a8511ac633487f170b89586c..02f1d0418395b100cabfad7294466aaa
|
||||
}
|
||||
|
||||
this.remove(Entity.RemovalReason.KILLED, EntityRemoveEvent.Cause.EXPLODE); // CraftBukkit - add Bukkit remove cause
|
||||
- this.level().explode(this, damagesource1, (ExplosionDamageCalculator) null, this.getX(), this.getY(), this.getZ(), event.getRadius(), event.getFire(), Level.ExplosionInteraction.BLOCK);
|
||||
+ this.level().explode(this, damagesource1, (ExplosionDamageCalculator) null, this.getX(), this.getY(), this.getZ(), event.getRadius(), event.getFire(), getExplosionEffect()); // Purpur
|
||||
- world.explode(this, damagesource1, (ExplosionDamageCalculator) null, this.getX(), this.getY(), this.getZ(), event.getRadius(), event.getFire(), Level.ExplosionInteraction.BLOCK);
|
||||
+ world.explode(this, damagesource1, (ExplosionDamageCalculator) null, this.getX(), this.getY(), this.getZ(), event.getRadius(), event.getFire(), getExplosionEffect()); // Purpur
|
||||
+ } else this.unsetRemoved(); // Purpur
|
||||
} else {
|
||||
this.remove(Entity.RemovalReason.KILLED, EntityRemoveEvent.Cause.DEATH); // CraftBukkit - add Bukkit remove cause
|
||||
}
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index 0f2d27f3ceea7fc87bf63b10d94f4ccf339e59b9..4c35cab67704690ce54f412ea145537171ba0ebf 100644
|
||||
index 48c1c436f85031df702d7cea74cf7b5713025a3c..f969c4c453b80f674e964ed0542d633c76380cab 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -424,6 +424,43 @@ public class PurpurWorldConfig {
|
||||
@@ -423,6 +423,43 @@ public class PurpurWorldConfig {
|
||||
dispenserPlaceAnvils = getBoolean("blocks.dispenser.place-anvils", dispenserPlaceAnvils);
|
||||
}
|
||||
|
||||
@@ -5,10 +5,10 @@ Subject: [PATCH] Configs for if Wither/Ender Dragon can ride vehicles
|
||||
|
||||
|
||||
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 0d0f999ab361db9a839bc7e57bfeca21aed4c523..573ec75b5fed1c3d30aa9dc64cf3a8a77ddfbcae 100644
|
||||
index 5f642aba559290011f2426858e2966352da1e6f4..e0e76b5abdb9650c3c50a3c8b49336977982fe67 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
|
||||
@@ -1204,6 +1204,7 @@ public class EnderDragon extends Mob implements Enemy {
|
||||
@@ -1155,6 +1155,7 @@ public class EnderDragon extends Mob implements Enemy {
|
||||
|
||||
@Override
|
||||
protected boolean canRide(Entity entity) {
|
||||
@@ -17,10 +17,10 @@ index 0d0f999ab361db9a839bc7e57bfeca21aed4c523..573ec75b5fed1c3d30aa9dc64cf3a8a7
|
||||
}
|
||||
|
||||
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 6fedac6f92193d7031b6265f897d9688fd2c8780..8809b88dec7beffa569de6832f5b458116b143cc 100644
|
||||
index 1f9d7c85f2ee5f6653e11457e19c03e6fa0419d9..8ecb72f6cd12d1e12f5ae9b240ccd6d9e4f6c248 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
|
||||
@@ -739,6 +739,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob
|
||||
@@ -729,6 +729,7 @@ public class WitherBoss extends Monster implements RangedAttackMob {
|
||||
|
||||
@Override
|
||||
protected boolean canRide(Entity entity) {
|
||||
@@ -29,10 +29,10 @@ index 6fedac6f92193d7031b6265f897d9688fd2c8780..8809b88dec7beffa569de6832f5b4581
|
||||
}
|
||||
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index 4c35cab67704690ce54f412ea145537171ba0ebf..caeaf92e383cb5aa7e2e2c053adc7aee391f38a7 100644
|
||||
index f969c4c453b80f674e964ed0542d633c76380cab..49edc77bdfe789408e553b9e08aa09ee23806aa1 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -965,6 +965,7 @@ public class PurpurWorldConfig {
|
||||
@@ -964,6 +964,7 @@ public class PurpurWorldConfig {
|
||||
public boolean enderDragonAlwaysDropsFullExp = false;
|
||||
public boolean enderDragonBypassMobGriefing = false;
|
||||
public boolean enderDragonTakeDamageFromWater = false;
|
||||
@@ -40,7 +40,7 @@ index 4c35cab67704690ce54f412ea145537171ba0ebf..caeaf92e383cb5aa7e2e2c053adc7aee
|
||||
private void enderDragonSettings() {
|
||||
enderDragonRidable = getBoolean("mobs.ender_dragon.ridable", enderDragonRidable);
|
||||
enderDragonRidableInWater = getBoolean("mobs.ender_dragon.ridable-in-water", enderDragonRidableInWater);
|
||||
@@ -983,6 +984,7 @@ public class PurpurWorldConfig {
|
||||
@@ -982,6 +983,7 @@ public class PurpurWorldConfig {
|
||||
enderDragonAlwaysDropsFullExp = getBoolean("mobs.ender_dragon.always-drop-full-exp", enderDragonAlwaysDropsFullExp);
|
||||
enderDragonBypassMobGriefing = getBoolean("mobs.ender_dragon.bypass-mob-griefing", enderDragonBypassMobGriefing);
|
||||
enderDragonTakeDamageFromWater = getBoolean("mobs.ender_dragon.takes-damage-from-water", enderDragonTakeDamageFromWater);
|
||||
@@ -48,7 +48,7 @@ index 4c35cab67704690ce54f412ea145537171ba0ebf..caeaf92e383cb5aa7e2e2c053adc7aee
|
||||
}
|
||||
|
||||
public boolean endermanRidable = false;
|
||||
@@ -2265,6 +2267,7 @@ public class PurpurWorldConfig {
|
||||
@@ -2264,6 +2266,7 @@ public class PurpurWorldConfig {
|
||||
public int witherHealthRegenDelay = 20;
|
||||
public boolean witherBypassMobGriefing = false;
|
||||
public boolean witherTakeDamageFromWater = false;
|
||||
@@ -56,7 +56,7 @@ index 4c35cab67704690ce54f412ea145537171ba0ebf..caeaf92e383cb5aa7e2e2c053adc7aee
|
||||
private void witherSettings() {
|
||||
witherRidable = getBoolean("mobs.wither.ridable", witherRidable);
|
||||
witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater);
|
||||
@@ -2285,6 +2288,7 @@ public class PurpurWorldConfig {
|
||||
@@ -2284,6 +2287,7 @@ public class PurpurWorldConfig {
|
||||
witherHealthRegenDelay = getInt("mobs.wither.health-regen-delay", witherHealthRegenDelay);
|
||||
witherBypassMobGriefing = getBoolean("mobs.wither.bypass-mob-griefing", witherBypassMobGriefing);
|
||||
witherTakeDamageFromWater = getBoolean("mobs.wither.takes-damage-from-water", witherTakeDamageFromWater);
|
||||
@@ -6,10 +6,10 @@ Subject: [PATCH] Dont run with scissors!
|
||||
inspired by https://modrinth.com/mod/dont-run-with-scissors
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
||||
index bbec4b963ca4b0804bce0c4cde49e1e88c0ae9f0..b7f8499cabbd28c0679d0c775b009c9cdf53b5f8 100644
|
||||
index d61c4cc0a4f957ef4bf2f7124644c63380e28473..c3fd22396eaf85ac4d7a0aeba67b5c26a748be4c 100644
|
||||
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
||||
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
||||
@@ -1654,6 +1654,13 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
|
||||
@@ -1621,6 +1621,13 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
|
||||
this.player.tryResetCurrentImpulseContext();
|
||||
}
|
||||
|
||||
@@ -23,7 +23,7 @@ index bbec4b963ca4b0804bce0c4cde49e1e88c0ae9f0..b7f8499cabbd28c0679d0c775b009c9c
|
||||
this.player.checkMovementStatistics(this.player.getX() - d3, this.player.getY() - d4, this.player.getZ() - d5);
|
||||
this.lastGoodX = this.player.getX();
|
||||
this.lastGoodY = this.player.getY();
|
||||
@@ -1681,6 +1688,14 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
|
||||
@@ -1660,6 +1667,14 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
|
||||
}
|
||||
}
|
||||
|
||||
@@ -35,9 +35,9 @@ index bbec4b963ca4b0804bce0c4cde49e1e88c0ae9f0..b7f8499cabbd28c0679d0c775b009c9c
|
||||
+ }
|
||||
+ // Purpur end
|
||||
+
|
||||
// Paper start - optimise out extra getCubes
|
||||
private boolean hasNewCollision(final ServerLevel world, final Entity entity, final AABB oldBox, final AABB newBox) {
|
||||
final List<AABB> collisionsBB = new java.util.ArrayList<>();
|
||||
private boolean isPlayerCollidingWithAnythingNew(LevelReader world, AABB box, double newX, double newY, double newZ) {
|
||||
AABB axisalignedbb1 = this.player.getBoundingBox().move(newX - this.player.getX(), newY - this.player.getY(), newZ - this.player.getZ());
|
||||
Iterable<VoxelShape> iterable = world.getCollisions(this.player, axisalignedbb1.deflate(9.999999747378752E-6D));
|
||||
diff --git a/src/main/java/net/minecraft/world/damagesource/CombatTracker.java b/src/main/java/net/minecraft/world/damagesource/CombatTracker.java
|
||||
index 99a7e9eb75231c15bd8bb24fbb4e296bc9fdedff..a375d40ec6365ba8704ba3ece22dd5b2de9857b5 100644
|
||||
--- a/src/main/java/net/minecraft/world/damagesource/CombatTracker.java
|
||||
@@ -93,24 +93,24 @@ index c83e80ebdbbfb2d0e08561a44486a308d16f50af..aa65f4bf60172a2629daf6e15f7f48d2
|
||||
}
|
||||
// CraftBukkit end
|
||||
diff --git a/src/main/java/net/minecraft/world/damagesource/DamageSources.java b/src/main/java/net/minecraft/world/damagesource/DamageSources.java
|
||||
index e34584e4780f343d6c946af5377088d53818e88e..da790aac3bd8981f351b7e241015ff42bd0da73b 100644
|
||||
index be87cb3cfa15a7d889118cdc4b87232e30749023..61e906fb47b242e86789dca1a210473c76863166 100644
|
||||
--- a/src/main/java/net/minecraft/world/damagesource/DamageSources.java
|
||||
+++ b/src/main/java/net/minecraft/world/damagesource/DamageSources.java
|
||||
@@ -45,11 +45,13 @@ public class DamageSources {
|
||||
@@ -46,11 +46,13 @@ public class DamageSources {
|
||||
// CraftBukkit start
|
||||
private final DamageSource melting;
|
||||
private final DamageSource poison;
|
||||
+ private final DamageSource scissors; // Purpur
|
||||
|
||||
public DamageSources(RegistryAccess registryManager) {
|
||||
this.damageTypes = registryManager.registryOrThrow(Registries.DAMAGE_TYPE);
|
||||
this.damageTypes = registryManager.lookupOrThrow(Registries.DAMAGE_TYPE);
|
||||
this.melting = this.source(DamageTypes.ON_FIRE).melting();
|
||||
this.poison = this.source(DamageTypes.MAGIC).poison();
|
||||
+ this.scissors = this.source(DamageTypes.MAGIC).scissors(); // Purpur
|
||||
// CraftBukkit end
|
||||
this.inFire = this.source(DamageTypes.IN_FIRE);
|
||||
this.campfire = this.source(DamageTypes.CAMPFIRE);
|
||||
@@ -99,6 +101,12 @@ public class DamageSources {
|
||||
@@ -101,6 +103,12 @@ public class DamageSources {
|
||||
}
|
||||
// CraftBukkit end
|
||||
|
||||
@@ -149,10 +149,10 @@ index 2685a3e5e4d0a1559f2d28152bab73b8982362fd..6fcb2db92a38e862da288518ce34d16a
|
||||
|
||||
public static String serverModName = io.papermc.paper.ServerBuildInfo.buildInfo().brandName();
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index caeaf92e383cb5aa7e2e2c053adc7aee391f38a7..1cf04d5acd6a252762f643f5933f22846930c1a0 100644
|
||||
index 49edc77bdfe789408e553b9e08aa09ee23806aa1..77e6729051509bdf6d226206578a813b3e80cedc 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -190,6 +190,10 @@ public class PurpurWorldConfig {
|
||||
@@ -189,6 +189,10 @@ public class PurpurWorldConfig {
|
||||
public List<Item> itemImmuneToExplosion = new ArrayList<>();
|
||||
public List<Item> itemImmuneToFire = new ArrayList<>();
|
||||
public List<Item> itemImmuneToLightning = new ArrayList<>();
|
||||
@@ -163,7 +163,7 @@ index caeaf92e383cb5aa7e2e2c053adc7aee391f38a7..1cf04d5acd6a252762f643f5933f2284
|
||||
private void itemSettings() {
|
||||
itemImmuneToCactus.clear();
|
||||
getList("gameplay-mechanics.item.immune.cactus", new ArrayList<>()).forEach(key -> {
|
||||
@@ -227,6 +231,10 @@ public class PurpurWorldConfig {
|
||||
@@ -226,6 +230,10 @@ public class PurpurWorldConfig {
|
||||
Item item = BuiltInRegistries.ITEM.get(ResourceLocation.parse(key.toString()));
|
||||
if (item != Items.AIR) itemImmuneToLightning.add(item);
|
||||
});
|
||||
@@ -6,10 +6,10 @@ Subject: [PATCH] One Punch Man!
|
||||
inspired by https://modrinth.com/mod/creative-one-punch
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
|
||||
index 4f172f9a0ec61a10b0b1411b9d0eb82d49bd0c57..7a99319d6ac85fd794fef361dd6f8092b847c744 100644
|
||||
index 7c60a938850e5db62022217168a075e2b88fa22d..698340b3934a500ebd2cc50bc8818914d53af92d 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
|
||||
@@ -1441,6 +1441,24 @@ public abstract class LivingEntity extends Entity implements Attackable {
|
||||
@@ -1457,6 +1457,24 @@ public abstract class LivingEntity extends Entity implements Attackable {
|
||||
this.stopSleeping();
|
||||
}
|
||||
|
||||
@@ -32,13 +32,13 @@ index 4f172f9a0ec61a10b0b1411b9d0eb82d49bd0c57..7a99319d6ac85fd794fef361dd6f8092
|
||||
+ // Purpur end
|
||||
+
|
||||
this.noActionTime = 0;
|
||||
float f1 = amount; final float originalAmount = f1; // Paper - revert to vanilla #hurt - OBFHELPER
|
||||
boolean flag = amount > 0.0F && this.isDamageSourceBlocked(source); // Copied from below
|
||||
if (amount < 0.0F) {
|
||||
amount = 0.0F;
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index 1cf04d5acd6a252762f643f5933f22846930c1a0..a963ceb3b9ed41d36239c468ebc901e3d94e4768 100644
|
||||
index 77e6729051509bdf6d226206578a813b3e80cedc..bdf8bdf14cc54ddb44c6e6f7bc1572bb7920dd45 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 {
|
||||
@@ -336,6 +336,7 @@ public class PurpurWorldConfig {
|
||||
public boolean teleportIfOutsideBorder = false;
|
||||
public boolean totemOfUndyingWorksInInventory = false;
|
||||
public boolean playerFixStuckPortal = false;
|
||||
@@ -46,7 +46,7 @@ index 1cf04d5acd6a252762f643f5933f22846930c1a0..a963ceb3b9ed41d36239c468ebc901e3
|
||||
private void playerSettings() {
|
||||
if (PurpurConfig.version < 19) {
|
||||
boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer);
|
||||
@@ -353,6 +354,7 @@ public class PurpurWorldConfig {
|
||||
@@ -352,6 +353,7 @@ public class PurpurWorldConfig {
|
||||
teleportIfOutsideBorder = getBoolean("gameplay-mechanics.player.teleport-if-outside-border", teleportIfOutsideBorder);
|
||||
totemOfUndyingWorksInInventory = getBoolean("gameplay-mechanics.player.totem-of-undying-works-in-inventory", totemOfUndyingWorksInInventory);
|
||||
playerFixStuckPortal = getBoolean("gameplay-mechanics.player.fix-stuck-in-portal", playerFixStuckPortal);
|
||||
@@ -8,45 +8,44 @@ Subject: [PATCH] Configurable Ender Pearl cooldown, damage, and Endermite RNG
|
||||
- Endermite spawn chance
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/projectile/ThrownEnderpearl.java b/src/main/java/net/minecraft/world/entity/projectile/ThrownEnderpearl.java
|
||||
index 1aa5e57a4e6a4be60514d8808a2e6c973d93e798..0d2a18190c46f34277a714570267bcc33507ff10 100644
|
||||
index 5f790dd24f2bdae827c6dc597064b9b265089751..88bb9ef154faf45a270750914b9b6b769819ccb9 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/projectile/ThrownEnderpearl.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/projectile/ThrownEnderpearl.java
|
||||
@@ -77,7 +77,7 @@ public class ThrownEnderpearl extends ThrowableItemProjectile {
|
||||
@@ -152,7 +152,7 @@ public class ThrownEnderpearl extends ThrowableItemProjectile {
|
||||
return;
|
||||
}
|
||||
// CraftBukkit end
|
||||
- if (this.random.nextFloat() < 0.05F && worldserver.getGameRules().getBoolean(GameRules.RULE_DOMOBSPAWNING)) {
|
||||
+ if (this.random.nextFloat() < this.level().purpurConfig.enderPearlEndermiteChance && worldserver.getGameRules().getBoolean(GameRules.RULE_DOMOBSPAWNING)) { // Purpur
|
||||
Endermite entityendermite = (Endermite) EntityType.ENDERMITE.create(worldserver);
|
||||
+ if (this.random.nextFloat() < worldserver.purpurConfig.enderPearlEndermiteChance && worldserver.getGameRules().getBoolean(GameRules.RULE_DOMOBSPAWNING)) { // Purpur
|
||||
Endermite entityendermite = (Endermite) EntityType.ENDERMITE.create(worldserver, EntitySpawnReason.TRIGGERED);
|
||||
|
||||
if (entityendermite != null) {
|
||||
@@ -89,7 +89,7 @@ public class ThrownEnderpearl extends ThrowableItemProjectile {
|
||||
// entity.changeDimension(new DimensionTransition(worldserver, this.position(), entity.getDeltaMovement(), entity.getYRot(), entity.getXRot(), DimensionTransition.DO_NOTHING)); // CraftBukkit - moved up
|
||||
entity.resetFallDistance();
|
||||
entityplayer.resetCurrentImpulseContext();
|
||||
- entity.hurt(this.damageSources().fall().customEventDamager(this), 5.0F); // CraftBukkit // Paper - fix DamageSource API
|
||||
+ entity.hurt(this.damageSources().fall().customEventDamager(this), this.level().purpurConfig.enderPearlDamage); // CraftBukkit // Paper - fix DamageSource API // Purpur
|
||||
this.playSound(worldserver, this.position());
|
||||
}
|
||||
} else {
|
||||
@@ -170,7 +170,7 @@ public class ThrownEnderpearl extends ThrowableItemProjectile {
|
||||
if (entityplayer1 != null) {
|
||||
entityplayer1.resetFallDistance();
|
||||
entityplayer1.resetCurrentImpulseContext();
|
||||
- entityplayer1.hurtServer(entityplayer.serverLevel(), this.damageSources().enderPearl().customEventDamager(this), 5.0F); // CraftBukkit // Paper - fix DamageSource API
|
||||
+ entityplayer1.hurtServer(entityplayer.serverLevel(), this.damageSources().enderPearl().customEventDamager(this), this.level().purpurConfig.enderPearlDamage); // CraftBukkit // Paper - fix DamageSource API // Purpur
|
||||
}
|
||||
|
||||
this.playSound(worldserver, vec3d);
|
||||
diff --git a/src/main/java/net/minecraft/world/item/EnderpearlItem.java b/src/main/java/net/minecraft/world/item/EnderpearlItem.java
|
||||
index 20a91d798d31a71b3c05efa2cc5bda55494e26cc..fc62754f93bd11a10c28b8b7b116e9fff70a5c7b 100644
|
||||
index b232390d8ee8e449e61c0ea7f3af60df507abb97..ad99c6fb7bcd8ccbdeb405ca7ff73ae4d1c2f2ee 100644
|
||||
--- a/src/main/java/net/minecraft/world/item/EnderpearlItem.java
|
||||
+++ b/src/main/java/net/minecraft/world/item/EnderpearlItem.java
|
||||
@@ -36,7 +36,7 @@ public class EnderpearlItem extends Item {
|
||||
@@ -35,6 +35,7 @@ public class EnderpearlItem extends Item {
|
||||
|
||||
world.playSound((Player) null, user.getX(), user.getY(), user.getZ(), SoundEvents.ENDER_PEARL_THROW, SoundSource.NEUTRAL, 0.5F, 0.4F / (net.minecraft.world.entity.Entity.SHARED_RANDOM.nextFloat() * 0.4F + 0.8F));
|
||||
world.playSound((Player) null, user.getX(), user.getY(), user.getZ(), SoundEvents.ENDER_PEARL_THROW, SoundSource.NEUTRAL, 0.5F, 0.4F / (world.getRandom().nextFloat() * 0.4F + 0.8F));
|
||||
user.awardStat(Stats.ITEM_USED.get(this));
|
||||
- user.getCooldowns().addCooldown(this, 20);
|
||||
+ user.getCooldowns().addCooldown(this, user.getAbilities().instabuild ? world.purpurConfig.enderPearlCooldownCreative : world.purpurConfig.enderPearlCooldown); // Purpur
|
||||
+ user.getCooldowns().addCooldown(itemstack, user.getAbilities().instabuild ? world.purpurConfig.enderPearlCooldownCreative : world.purpurConfig.enderPearlCooldown); // Purpur
|
||||
} else {
|
||||
// Paper end - PlayerLaunchProjectileEvent
|
||||
// Paper end - PlayerLaunchProjectileEvent
|
||||
if (user instanceof net.minecraft.server.level.ServerPlayer) {
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index a963ceb3b9ed41d36239c468ebc901e3d94e4768..70d5b6e46dce5f1e22f7bc365fd01e6da8a7c591 100644
|
||||
index bdf8bdf14cc54ddb44c6e6f7bc1572bb7920dd45..428fd6150856e3f247c37779891c5ccc92dddcc1 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -194,6 +194,10 @@ public class PurpurWorldConfig {
|
||||
@@ -193,6 +193,10 @@ public class PurpurWorldConfig {
|
||||
public boolean ignoreScissorsInWater = false;
|
||||
public boolean ignoreScissorsInLava = false;
|
||||
public double scissorsRunningDamage = 1D;
|
||||
@@ -57,7 +56,7 @@ index a963ceb3b9ed41d36239c468ebc901e3d94e4768..70d5b6e46dce5f1e22f7bc365fd01e6d
|
||||
private void itemSettings() {
|
||||
itemImmuneToCactus.clear();
|
||||
getList("gameplay-mechanics.item.immune.cactus", new ArrayList<>()).forEach(key -> {
|
||||
@@ -235,6 +239,10 @@ public class PurpurWorldConfig {
|
||||
@@ -234,6 +238,10 @@ public class PurpurWorldConfig {
|
||||
ignoreScissorsInWater = getBoolean("gameplay-mechanics.item.shears.ignore-in-water", ignoreScissorsInWater);
|
||||
ignoreScissorsInLava = getBoolean("gameplay-mechanics.item.shears.ignore-in-lava", ignoreScissorsInLava);
|
||||
scissorsRunningDamage = getDouble("gameplay-mechanics.item.shears.sprinting-damage", scissorsRunningDamage);
|
||||
@@ -5,11 +5,11 @@ Subject: [PATCH] Config to ignore nearby mobs when sleeping
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
||||
index d677c1308412e5a12046225ce2449af136b7665f..513ab3d7d3ff4fe0a5c9c609ca752357b2d8055a 100644
|
||||
index c64b2386f35c55e3484df2d193f712a1728dc745..8d4e50aade704403cd713506268a1711080f72a3 100644
|
||||
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
||||
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
||||
@@ -1529,7 +1529,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple
|
||||
return entitymonster.isPreventingPlayerRest(this);
|
||||
@@ -1791,7 +1791,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple
|
||||
return entitymonster.isPreventingPlayerRest(this.serverLevel(), this);
|
||||
});
|
||||
|
||||
- if (!list.isEmpty()) {
|
||||
@@ -18,10 +18,10 @@ index d677c1308412e5a12046225ce2449af136b7665f..513ab3d7d3ff4fe0a5c9c609ca752357
|
||||
}
|
||||
}
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index 70d5b6e46dce5f1e22f7bc365fd01e6da8a7c591..4293d2a343fa9ac2dec503371c2fb62311f8e77f 100644
|
||||
index 428fd6150856e3f247c37779891c5ccc92dddcc1..f032d27542b26797126a9b060fa52237349dbca5 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -346,6 +346,7 @@ public class PurpurWorldConfig {
|
||||
@@ -345,6 +345,7 @@ public class PurpurWorldConfig {
|
||||
public boolean totemOfUndyingWorksInInventory = false;
|
||||
public boolean playerFixStuckPortal = false;
|
||||
public boolean creativeOnePunch = false;
|
||||
@@ -29,7 +29,7 @@ index 70d5b6e46dce5f1e22f7bc365fd01e6da8a7c591..4293d2a343fa9ac2dec503371c2fb623
|
||||
private void playerSettings() {
|
||||
if (PurpurConfig.version < 19) {
|
||||
boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer);
|
||||
@@ -363,6 +364,7 @@ public class PurpurWorldConfig {
|
||||
@@ -362,6 +363,7 @@ public class PurpurWorldConfig {
|
||||
totemOfUndyingWorksInInventory = getBoolean("gameplay-mechanics.player.totem-of-undying-works-in-inventory", totemOfUndyingWorksInInventory);
|
||||
playerFixStuckPortal = getBoolean("gameplay-mechanics.player.fix-stuck-in-portal", playerFixStuckPortal);
|
||||
creativeOnePunch = getBoolean("gameplay-mechanics.player.one-punch-in-creative", creativeOnePunch);
|
||||
@@ -5,7 +5,7 @@ Subject: [PATCH] Add back player spawned endermite API
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/monster/Endermite.java b/src/main/java/net/minecraft/world/entity/monster/Endermite.java
|
||||
index dd73278cea317280b88c3290dfcc052866c9ec52..13c41b561683231a369affd309a28509c8ce5c93 100644
|
||||
index e8b7e291c96ff6856832fc6612f792fc778e5162..806719a3673f3c333bfc720a7ccf07f7ba5cffc2 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/monster/Endermite.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/monster/Endermite.java
|
||||
@@ -32,6 +32,7 @@ public class Endermite extends Monster {
|
||||
@@ -47,11 +47,11 @@ index dd73278cea317280b88c3290dfcc052866c9ec52..13c41b561683231a369affd309a28509
|
||||
|
||||
@Override
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/projectile/ThrownEnderpearl.java b/src/main/java/net/minecraft/world/entity/projectile/ThrownEnderpearl.java
|
||||
index 0d2a18190c46f34277a714570267bcc33507ff10..334fa781e94d195c13dd78cdbe8f43b4b126ebd0 100644
|
||||
index 88bb9ef154faf45a270750914b9b6b769819ccb9..7cc4a2a6cfef90a84859a128a9e0521ce3110854 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/projectile/ThrownEnderpearl.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/projectile/ThrownEnderpearl.java
|
||||
@@ -81,6 +81,7 @@ public class ThrownEnderpearl extends ThrowableItemProjectile {
|
||||
Endermite entityendermite = (Endermite) EntityType.ENDERMITE.create(worldserver);
|
||||
@@ -156,6 +156,7 @@ public class ThrownEnderpearl extends ThrowableItemProjectile {
|
||||
Endermite entityendermite = (Endermite) EntityType.ENDERMITE.create(worldserver, EntitySpawnReason.TRIGGERED);
|
||||
|
||||
if (entityendermite != null) {
|
||||
+ entityendermite.setPlayerSpawned(true); // Purpur
|
||||
@@ -5,7 +5,7 @@ Subject: [PATCH] Config Enderman aggressiveness towards Endermites
|
||||
|
||||
|
||||
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 d4360a62cc2514dafc02749e49674213db65cc85..22583cdb173862b021c9701d26171ca337796557 100644
|
||||
index d48be9b5ac329bddd1eb3c26d35421b32d87f547..4a223113757320610eddd89d5404dd54e38fc87d 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java
|
||||
@@ -132,7 +132,7 @@ public class EnderMan extends Monster implements NeutralMob {
|
||||
@@ -18,10 +18,10 @@ index d4360a62cc2514dafc02749e49674213db65cc85..22583cdb173862b021c9701d26171ca3
|
||||
}
|
||||
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index 4293d2a343fa9ac2dec503371c2fb62311f8e77f..9dd087d34438b7685e50d4574e3cb58c09bdf9c5 100644
|
||||
index f032d27542b26797126a9b060fa52237349dbca5..2b0984f7a2dd0d2f42f59b85a5b6e8d7b09319c2 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -1016,6 +1016,8 @@ public class PurpurWorldConfig {
|
||||
@@ -1015,6 +1015,8 @@ public class PurpurWorldConfig {
|
||||
public boolean endermanDespawnEvenWithBlock = false;
|
||||
public boolean endermanBypassMobGriefing = false;
|
||||
public boolean endermanTakeDamageFromWater = true;
|
||||
@@ -30,7 +30,7 @@ index 4293d2a343fa9ac2dec503371c2fb62311f8e77f..9dd087d34438b7685e50d4574e3cb58c
|
||||
private void endermanSettings() {
|
||||
endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable);
|
||||
endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater);
|
||||
@@ -1025,12 +1027,18 @@ public class PurpurWorldConfig {
|
||||
@@ -1024,12 +1026,18 @@ public class PurpurWorldConfig {
|
||||
set("mobs.enderman.attributes.max-health", null);
|
||||
set("mobs.enderman.attributes.max_health", oldValue);
|
||||
}
|
||||
@@ -7,36 +7,34 @@ Prevents Enderman from becoming aggresive towards players that are wearing a Dra
|
||||
Adds functionality to a useless item!
|
||||
|
||||
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 22583cdb173862b021c9701d26171ca337796557..65c7bf88071dda62034d71b6a83caedd49d0902a 100644
|
||||
index 4a223113757320610eddd89d5404dd54e38fc87d..27a4b47ad46700b595dd829e6aab558d170c0a8f 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java
|
||||
@@ -269,7 +269,7 @@ public class EnderMan extends Monster implements NeutralMob {
|
||||
// Paper end - EndermanAttackPlayerEvent
|
||||
ItemStack itemstack = (ItemStack) player.getInventory().armor.get(3);
|
||||
@@ -260,7 +260,7 @@ public class EnderMan extends Monster implements NeutralMob {
|
||||
|
||||
- if (itemstack.is(Blocks.CARVED_PUMPKIN.asItem())) {
|
||||
+ if (this.level().purpurConfig.endermanDisableStareAggro || itemstack.is(Blocks.CARVED_PUMPKIN.asItem()) || (this.level().purpurConfig.endermanIgnorePlayerDragonHead && itemstack.is(net.minecraft.world.item.Items.DRAGON_HEAD))) { // Purpur
|
||||
return false;
|
||||
} else {
|
||||
Vec3 vec3d = player.getViewVector(1.0F).normalize();
|
||||
boolean isBeingStaredBy(Player player) {
|
||||
// Paper start - EndermanAttackPlayerEvent
|
||||
- boolean shouldAttack = isBeingStaredBy0(player);
|
||||
+ boolean shouldAttack = !this.level().purpurConfig.endermanDisableStareAggro && isBeingStaredBy0(player); // Purpur
|
||||
com.destroystokyo.paper.event.entity.EndermanAttackPlayerEvent event = new com.destroystokyo.paper.event.entity.EndermanAttackPlayerEvent((org.bukkit.entity.Enderman) getBukkitEntity(), (org.bukkit.entity.Player) player.getBukkitEntity());
|
||||
event.setCancelled(!shouldAttack);
|
||||
return event.callEvent();
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index 9dd087d34438b7685e50d4574e3cb58c09bdf9c5..5902f7c6a74723c07892abbefbf7d2daf5e66271 100644
|
||||
index 2b0984f7a2dd0d2f42f59b85a5b6e8d7b09319c2..d138bb202fd13c92800e634543ff4559fe19b9d4 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -1018,6 +1018,8 @@ public class PurpurWorldConfig {
|
||||
@@ -1017,6 +1017,7 @@ public class PurpurWorldConfig {
|
||||
public boolean endermanTakeDamageFromWater = true;
|
||||
public boolean endermanAggroEndermites = true;
|
||||
public boolean endermanAggroEndermitesOnlyIfPlayerSpawned = false;
|
||||
+ public boolean endermanIgnorePlayerDragonHead = false;
|
||||
+ public boolean endermanDisableStareAggro = false;
|
||||
private void endermanSettings() {
|
||||
endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable);
|
||||
endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater);
|
||||
@@ -1039,6 +1041,8 @@ public class PurpurWorldConfig {
|
||||
@@ -1038,6 +1039,7 @@ public class PurpurWorldConfig {
|
||||
endermanTakeDamageFromWater = getBoolean("mobs.enderman.takes-damage-from-water", endermanTakeDamageFromWater);
|
||||
endermanAggroEndermites = getBoolean("mobs.enderman.aggressive-towards-endermites", endermanAggroEndermites);
|
||||
endermanAggroEndermitesOnlyIfPlayerSpawned = getBoolean("mobs.enderman.aggressive-towards-endermites-only-spawned-by-player-thrown-ender-pearls", endermanAggroEndermitesOnlyIfPlayerSpawned);
|
||||
+ endermanIgnorePlayerDragonHead = getBoolean("mobs.enderman.ignore-players-wearing-dragon-head", endermanIgnorePlayerDragonHead);
|
||||
+ endermanDisableStareAggro = getBoolean("mobs.enderman.disable-player-stare-aggression", endermanDisableStareAggro);
|
||||
}
|
||||
|
||||
58
patches/server/0131-Tick-fluids-config.patch
Normal file
58
patches/server/0131-Tick-fluids-config.patch
Normal file
@@ -0,0 +1,58 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: William Blake Galbreath <Blake.Galbreath@GMail.com>
|
||||
Date: Mon, 15 Mar 2021 03:52:17 -0500
|
||||
Subject: [PATCH] Tick fluids config
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/level/block/LiquidBlock.java b/src/main/java/net/minecraft/world/level/block/LiquidBlock.java
|
||||
index a2d023ff011f71f80032f02430a53d6a08a23623..399441dd8388dcdec08768665d3cfa189aca0a95 100644
|
||||
--- a/src/main/java/net/minecraft/world/level/block/LiquidBlock.java
|
||||
+++ b/src/main/java/net/minecraft/world/level/block/LiquidBlock.java
|
||||
@@ -140,7 +140,7 @@ public class LiquidBlock extends Block implements BucketPickup {
|
||||
|
||||
@Override
|
||||
protected void onPlace(BlockState state, Level world, BlockPos pos, BlockState oldState, boolean notify) {
|
||||
- if (this.shouldSpreadLiquid(world, pos, state)) {
|
||||
+ if (world.purpurConfig.tickFluids && this.shouldSpreadLiquid(world, pos, state)) { // Purpur
|
||||
world.scheduleTick(pos, state.getFluidState().getType(), this.getFlowSpeed(world, pos)); // Paper - Configurable speed for water flowing over lava
|
||||
}
|
||||
|
||||
@@ -168,7 +168,7 @@ public class LiquidBlock extends Block implements BucketPickup {
|
||||
|
||||
@Override
|
||||
protected BlockState updateShape(BlockState state, LevelReader world, ScheduledTickAccess tickView, BlockPos pos, Direction direction, BlockPos neighborPos, BlockState neighborState, RandomSource random) {
|
||||
- if (state.getFluidState().isSource() || neighborState.getFluidState().isSource()) {
|
||||
+ if (world.getWorldBorder().world.purpurConfig.tickFluids && state.getFluidState().isSource() || neighborState.getFluidState().isSource()) { // Purpur
|
||||
tickView.scheduleTick(pos, state.getFluidState().getType(), this.fluid.getTickDelay(world));
|
||||
}
|
||||
|
||||
@@ -177,7 +177,7 @@ public class LiquidBlock extends Block implements BucketPickup {
|
||||
|
||||
@Override
|
||||
protected void neighborChanged(BlockState state, Level world, BlockPos pos, Block sourceBlock, @Nullable Orientation wireOrientation, boolean notify) {
|
||||
- if (this.shouldSpreadLiquid(world, pos, state)) {
|
||||
+ if (world.purpurConfig.tickFluids && this.shouldSpreadLiquid(world, pos, state)) { // Purpur
|
||||
world.scheduleTick(pos, state.getFluidState().getType(), this.getFlowSpeed(world, pos)); // Paper - Configurable speed for water flowing over lava
|
||||
}
|
||||
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index d138bb202fd13c92800e634543ff4559fe19b9d4..58fb417f9f59fc5d97d963afdbf9a69e64c69057 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -134,6 +134,7 @@ public class PurpurWorldConfig {
|
||||
public boolean imposeTeleportRestrictionsOnGateways = false;
|
||||
public boolean imposeTeleportRestrictionsOnNetherPortals = false;
|
||||
public boolean imposeTeleportRestrictionsOnEndPortals = false;
|
||||
+ public boolean tickFluids = true;
|
||||
private void miscGameplayMechanicsSettings() {
|
||||
useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending);
|
||||
alwaysTameInCreative = getBoolean("gameplay-mechanics.always-tame-in-creative", alwaysTameInCreative);
|
||||
@@ -152,7 +153,7 @@ public class PurpurWorldConfig {
|
||||
imposeTeleportRestrictionsOnGateways = getBoolean("gameplay-mechanics.impose-teleport-restrictions-on-gateways", imposeTeleportRestrictionsOnGateways);
|
||||
imposeTeleportRestrictionsOnNetherPortals = getBoolean("gameplay-mechanics.impose-teleport-restrictions-on-nether-portals", imposeTeleportRestrictionsOnNetherPortals);
|
||||
imposeTeleportRestrictionsOnEndPortals = getBoolean("gameplay-mechanics.impose-teleport-restrictions-on-end-portals", imposeTeleportRestrictionsOnEndPortals);
|
||||
-
|
||||
+ tickFluids = getBoolean("gameplay-mechanics.tick-fluids", tickFluids);
|
||||
}
|
||||
|
||||
public int daytimeTicks = 12000;
|
||||
@@ -19,10 +19,10 @@ index eb0faf58fa1a408f294fc62120b140def97f998d..0f4f546cd0eda4bd82b47446ae23ac32
|
||||
List<Entity> list = this.llama.level().getEntities(this.llama, this.llama.getBoundingBox().inflate(9.0, 4.0, 9.0), entity -> {
|
||||
EntityType<?> entityType = entity.getType();
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java b/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java
|
||||
index 96f1eba4a356e131a8f3c689bedc9eb8821e1a72..8edfc34a17d8c05cfa2928738306c1abc1743cc5 100644
|
||||
index 1c23531fed535e61afe47bfb66fc4e5ffb1d2dc5..be4429f922bab5fd389759f85aeadbd0335d75b4 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java
|
||||
@@ -477,7 +477,7 @@ public class Llama extends AbstractChestedHorse implements VariantHolder<Llama.V
|
||||
@@ -461,7 +461,7 @@ public class Llama extends AbstractChestedHorse implements VariantHolder<Llama.V
|
||||
}
|
||||
|
||||
public void joinCaravan(Llama llama) {
|
||||
@@ -32,10 +32,10 @@ index 96f1eba4a356e131a8f3c689bedc9eb8821e1a72..8edfc34a17d8c05cfa2928738306c1ab
|
||||
this.caravanHead.caravanTail = this;
|
||||
}
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index 4e7ea1f1b4413c929ed4066e9dd213a9fc9b4b35..1a690b72b8d149a3c9338abc83069fcab4ff0ccc 100644
|
||||
index 58fb417f9f59fc5d97d963afdbf9a69e64c69057..205fc1779a51440232c368e3e9d54f5ce9d0c62c 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -1375,6 +1375,7 @@ public class PurpurWorldConfig {
|
||||
@@ -1371,6 +1371,7 @@ public class PurpurWorldConfig {
|
||||
public double llamaMovementSpeedMax = 0.175D;
|
||||
public int llamaBreedingTicks = 6000;
|
||||
public boolean llamaTakeDamageFromWater = false;
|
||||
@@ -43,7 +43,7 @@ index 4e7ea1f1b4413c929ed4066e9dd213a9fc9b4b35..1a690b72b8d149a3c9338abc83069fca
|
||||
private void llamaSettings() {
|
||||
llamaRidable = getBoolean("mobs.llama.ridable", llamaRidable);
|
||||
llamaRidableInWater = getBoolean("mobs.llama.ridable-in-water", llamaRidableInWater);
|
||||
@@ -1394,6 +1395,7 @@ public class PurpurWorldConfig {
|
||||
@@ -1390,6 +1391,7 @@ public class PurpurWorldConfig {
|
||||
llamaMovementSpeedMax = getDouble("mobs.llama.attributes.movement_speed.max", llamaMovementSpeedMax);
|
||||
llamaBreedingTicks = getInt("mobs.llama.breeding-delay-ticks", llamaBreedingTicks);
|
||||
llamaTakeDamageFromWater = getBoolean("mobs.llama.takes-damage-from-water", llamaTakeDamageFromWater);
|
||||
@@ -6,10 +6,10 @@ Subject: [PATCH] Config to make Creepers explode on death
|
||||
Creepers exploded after being killed in the alpha days. This brings that back.
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/monster/Creeper.java b/src/main/java/net/minecraft/world/entity/monster/Creeper.java
|
||||
index 1ce1cf48624d8273dccc571ee37a08c06951acad..902191001a7302872ff661564fb6389457abaa9c 100644
|
||||
index aed8273dd74930914a495d6963e55308d935008c..ad3a3d8e7ab660be5afb8e00948b87387196ebb7 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/monster/Creeper.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/monster/Creeper.java
|
||||
@@ -66,6 +66,7 @@ public class Creeper extends Monster implements PowerableMob {
|
||||
@@ -65,6 +65,7 @@ public class Creeper extends Monster {
|
||||
private int prevSpacebarCharge = 0;
|
||||
private int powerToggleDelay = 0;
|
||||
// Purpur end
|
||||
@@ -17,7 +17,7 @@ index 1ce1cf48624d8273dccc571ee37a08c06951acad..902191001a7302872ff661564fb63894
|
||||
|
||||
public Creeper(EntityType<? extends Creeper> type, Level world) {
|
||||
super(type, world);
|
||||
@@ -271,6 +272,16 @@ public class Creeper extends Monster implements PowerableMob {
|
||||
@@ -270,6 +271,16 @@ public class Creeper extends Monster {
|
||||
return this.level().purpurConfig.creeperTakeDamageFromWater;
|
||||
}
|
||||
|
||||
@@ -34,16 +34,15 @@ index 1ce1cf48624d8273dccc571ee37a08c06951acad..902191001a7302872ff661564fb63894
|
||||
@Override
|
||||
protected SoundEvent getHurtSound(DamageSource source) {
|
||||
return SoundEvents.CREEPER_HURT;
|
||||
@@ -359,6 +370,8 @@ public class Creeper extends Monster implements PowerableMob {
|
||||
}
|
||||
@@ -358,6 +369,7 @@ public class Creeper extends Monster {
|
||||
|
||||
public void explodeCreeper() {
|
||||
Level world = this.level();
|
||||
+ this.exploding = true; // Purpur - Config to make Creepers explode on death
|
||||
+
|
||||
if (!this.level().isClientSide) {
|
||||
float f = this.isPowered() ? 2.0F : 1.0F;
|
||||
|
||||
@@ -379,6 +392,7 @@ public class Creeper extends Monster implements PowerableMob {
|
||||
if (world instanceof ServerLevel worldserver) {
|
||||
float f = this.isPowered() ? 2.0F : 1.0F;
|
||||
@@ -379,6 +391,7 @@ public class Creeper extends Monster {
|
||||
// CraftBukkit end
|
||||
}
|
||||
|
||||
@@ -52,10 +51,10 @@ index 1ce1cf48624d8273dccc571ee37a08c06951acad..902191001a7302872ff661564fb63894
|
||||
|
||||
private void spawnLingeringCloud() {
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index 1a690b72b8d149a3c9338abc83069fcab4ff0ccc..d861652c9495ad58b24124c495b3041e071ad549 100644
|
||||
index 205fc1779a51440232c368e3e9d54f5ce9d0c62c..b1ce0257e3cad9d37f6ab998a7ff6e41060fc3ed 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -862,6 +862,7 @@ public class PurpurWorldConfig {
|
||||
@@ -860,6 +860,7 @@ public class PurpurWorldConfig {
|
||||
public boolean creeperAllowGriefing = true;
|
||||
public boolean creeperBypassMobGriefing = false;
|
||||
public boolean creeperTakeDamageFromWater = false;
|
||||
@@ -63,7 +62,7 @@ index 1a690b72b8d149a3c9338abc83069fcab4ff0ccc..d861652c9495ad58b24124c495b3041e
|
||||
private void creeperSettings() {
|
||||
creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable);
|
||||
creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater);
|
||||
@@ -877,6 +878,7 @@ public class PurpurWorldConfig {
|
||||
@@ -875,6 +876,7 @@ public class PurpurWorldConfig {
|
||||
creeperAllowGriefing = getBoolean("mobs.creeper.allow-griefing", creeperAllowGriefing);
|
||||
creeperBypassMobGriefing = getBoolean("mobs.creeper.bypass-mob-griefing", creeperBypassMobGriefing);
|
||||
creeperTakeDamageFromWater = getBoolean("mobs.creeper.takes-damage-from-water", creeperTakeDamageFromWater);
|
||||
@@ -5,36 +5,36 @@ Subject: [PATCH] Configurable ravager griefable blocks list
|
||||
|
||||
|
||||
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 30aee88ab5fd1e849780903083c2c95dd4e392aa..6c52629a304e48d6f9ea04ac52c8b1cae00df53a 100644
|
||||
index 159b542361debf397bbd24ac9a4f037e584de876..d4d02459f078788b404f39e84d1547a6c9d0313c 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/monster/Ravager.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/monster/Ravager.java
|
||||
@@ -185,7 +185,7 @@ public class Ravager extends Raider {
|
||||
BlockState iblockdata = this.level().getBlockState(blockposition);
|
||||
Block block = iblockdata.getBlock();
|
||||
@@ -199,7 +199,7 @@ public class Ravager extends Raider {
|
||||
BlockState iblockdata = worldserver.getBlockState(blockposition);
|
||||
Block block = iblockdata.getBlock();
|
||||
|
||||
- if (block instanceof LeavesBlock) {
|
||||
+ if (this.level().purpurConfig.ravagerGriefableBlocks.contains(block)) { // Purpur
|
||||
// CraftBukkit start
|
||||
if (!CraftEventFactory.callEntityChangeBlockEvent(this, blockposition, iblockdata.getFluidState().createLegacyBlock())) { // Paper - fix wrong block state
|
||||
continue;
|
||||
- if (block instanceof LeavesBlock) {
|
||||
+ if (this.level().purpurConfig.ravagerGriefableBlocks.contains(block)) { // Purpur
|
||||
// CraftBukkit start
|
||||
if (!CraftEventFactory.callEntityChangeBlockEvent(this, blockposition, iblockdata.getFluidState().createLegacyBlock())) { // Paper - fix wrong block state
|
||||
continue;
|
||||
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 2af4c365743b2956939335512f74e0a1d84298f7..a69e7e8da81bd13578d230cc1e3f0f900817cbfd 100644
|
||||
index d1efd728f0660b77361fa4f9c2bf5f2e654be0d2..ab58c4dbe9deb8807478a8e66e01f81a30221532 100644
|
||||
--- a/src/main/java/net/minecraft/world/level/block/CropBlock.java
|
||||
+++ b/src/main/java/net/minecraft/world/level/block/CropBlock.java
|
||||
@@ -179,7 +179,7 @@ public class CropBlock extends BushBlock implements BonemealableBlock {
|
||||
@Override
|
||||
@@ -180,7 +180,7 @@ public class CropBlock extends BushBlock implements BonemealableBlock {
|
||||
protected void entityInside(BlockState state, Level world, BlockPos pos, Entity entity) {
|
||||
if (!new io.papermc.paper.event.entity.EntityInsideBlockEvent(entity.getBukkitEntity(), org.bukkit.craftbukkit.block.CraftBlock.at(world, pos)).callEvent()) { return; } // Paper - Add EntityInsideBlockEvent
|
||||
- if (entity instanceof Ravager && CraftEventFactory.callEntityChangeBlockEvent(entity, pos, Blocks.AIR.defaultBlockState(), (!world.purpurConfig.ravagerBypassMobGriefing && !world.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)))) { // CraftBukkit // Purpur
|
||||
+ if (entity instanceof Ravager && world.purpurConfig.ravagerGriefableBlocks.contains(world.getBlockState(pos).getBlock()) && CraftEventFactory.callEntityChangeBlockEvent(entity, pos, Blocks.AIR.defaultBlockState(), (!world.purpurConfig.ravagerBypassMobGriefing && !world.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)))) { // CraftBukkit // Purpur
|
||||
world.destroyBlock(pos, true, entity);
|
||||
if (world instanceof ServerLevel worldserver) {
|
||||
- if (entity instanceof Ravager && CraftEventFactory.callEntityChangeBlockEvent(entity, pos, Blocks.AIR.defaultBlockState(), (!world.purpurConfig.ravagerBypassMobGriefing && !worldserver.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)))) { // CraftBukkit // Purpur
|
||||
+ if (entity instanceof Ravager && world.purpurConfig.ravagerGriefableBlocks.contains(world.getBlockState(pos).getBlock()) && CraftEventFactory.callEntityChangeBlockEvent(entity, pos, Blocks.AIR.defaultBlockState(), (!world.purpurConfig.ravagerBypassMobGriefing && !worldserver.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)))) { // CraftBukkit // Purpur
|
||||
worldserver.destroyBlock(pos, true, entity);
|
||||
}
|
||||
}
|
||||
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index d861652c9495ad58b24124c495b3041e071ad549..7f2a5c5720bd7f5e176a58d2369a4ffbd81ca138 100644
|
||||
index b1ce0257e3cad9d37f6ab998a7ff6e41060fc3ed..f99d1df0358804862f2d98cd39d1aaf1369081c5 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -1770,6 +1770,7 @@ public class PurpurWorldConfig {
|
||||
@@ -1766,6 +1766,7 @@ public class PurpurWorldConfig {
|
||||
public double ravagerScale = 1.0D;
|
||||
public boolean ravagerBypassMobGriefing = false;
|
||||
public boolean ravagerTakeDamageFromWater = false;
|
||||
@@ -42,7 +42,7 @@ index d861652c9495ad58b24124c495b3041e071ad549..7f2a5c5720bd7f5e176a58d2369a4ffb
|
||||
private void ravagerSettings() {
|
||||
ravagerRidable = getBoolean("mobs.ravager.ridable", ravagerRidable);
|
||||
ravagerRidableInWater = getBoolean("mobs.ravager.ridable-in-water", ravagerRidableInWater);
|
||||
@@ -1783,6 +1784,23 @@ public class PurpurWorldConfig {
|
||||
@@ -1779,6 +1780,23 @@ public class PurpurWorldConfig {
|
||||
ravagerScale = Mth.clamp(getDouble("mobs.ravager.attributes.scale", ravagerScale), 0.0625D, 16.0D);
|
||||
ravagerBypassMobGriefing = getBoolean("mobs.ravager.bypass-mob-griefing", ravagerBypassMobGriefing);
|
||||
ravagerTakeDamageFromWater = getBoolean("mobs.ravager.takes-damage-from-water", ravagerTakeDamageFromWater);
|
||||
@@ -5,23 +5,23 @@ Subject: [PATCH] Sneak to bulk process composter
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java
|
||||
index ee9e4521079137d7b72194e8789810e7a89b8e75..09ab1904ea9c587f365513150dafe434a0b56ccf 100644
|
||||
index 504c996220b278c194c93e001a3b326d549868ec..9c33daaf92fe590272d5cc32f538ae9bef4d07bc 100644
|
||||
--- a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java
|
||||
+++ b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java
|
||||
@@ -577,7 +577,7 @@ public class ServerPlayerGameMode {
|
||||
@@ -583,7 +583,7 @@ public class ServerPlayerGameMode {
|
||||
ItemStack itemstack1 = stack.copy();
|
||||
InteractionResult enuminteractionresult;
|
||||
|
||||
- if (!flag1) {
|
||||
+ if (!flag1 || (player.level().purpurConfig.composterBulkProcess && iblockdata.is(Blocks.COMPOSTER))) { // Purpur
|
||||
ItemInteractionResult iteminteractionresult = iblockdata.useItemOn(player.getItemInHand(hand), world, player, hand, hitResult);
|
||||
InteractionResult enuminteractionresult1 = iblockdata.useItemOn(player.getItemInHand(hand), world, player, hand, hitResult);
|
||||
|
||||
if (iteminteractionresult.consumesAction()) {
|
||||
if (enuminteractionresult1.consumesAction()) {
|
||||
diff --git a/src/main/java/net/minecraft/world/level/block/ComposterBlock.java b/src/main/java/net/minecraft/world/level/block/ComposterBlock.java
|
||||
index d3d12f9114173f4971f95d7ef895a4374705bd3f..f34159f8d6c51af2341bf49db0d6d6f0417919cf 100644
|
||||
index db837b250fc35af5b528bf973b3b07f63e79bc46..ed3a310d56a0cca8c4c11c3768ac2056cd11edea 100644
|
||||
--- a/src/main/java/net/minecraft/world/level/block/ComposterBlock.java
|
||||
+++ b/src/main/java/net/minecraft/world/level/block/ComposterBlock.java
|
||||
@@ -237,18 +237,27 @@ public class ComposterBlock extends Block implements WorldlyContainerHolder {
|
||||
@@ -241,18 +241,27 @@ public class ComposterBlock extends Block implements WorldlyContainerHolder {
|
||||
int i = (Integer) state.getValue(ComposterBlock.LEVEL);
|
||||
|
||||
if (i < 8 && ComposterBlock.COMPOSTABLES.containsKey(stack.getItem())) {
|
||||
@@ -29,7 +29,7 @@ index d3d12f9114173f4971f95d7ef895a4374705bd3f..f34159f8d6c51af2341bf49db0d6d6f0
|
||||
- BlockState iblockdata1 = ComposterBlock.addItem(player, state, world, pos, stack);
|
||||
- // Paper start - handle cancelled events
|
||||
- if (iblockdata1 == null) {
|
||||
- return ItemInteractionResult.SKIP_DEFAULT_BLOCK_INTERACTION;
|
||||
- return InteractionResult.PASS;
|
||||
- }
|
||||
- // Paper end
|
||||
-
|
||||
@@ -39,7 +39,7 @@ index d3d12f9114173f4971f95d7ef895a4374705bd3f..f34159f8d6c51af2341bf49db0d6d6f0
|
||||
+ // Purpur start - sneak to bulk process composter
|
||||
+ BlockState newState = process(i, player, state, world, pos, stack);
|
||||
+ if (newState == null) {
|
||||
+ return ItemInteractionResult.SKIP_DEFAULT_BLOCK_INTERACTION;
|
||||
+ return InteractionResult.PASS;
|
||||
}
|
||||
+ if (world.purpurConfig.composterBulkProcess && player.isShiftKeyDown() && newState != state) {
|
||||
+ BlockState oldState;
|
||||
@@ -50,7 +50,7 @@ index d3d12f9114173f4971f95d7ef895a4374705bd3f..f34159f8d6c51af2341bf49db0d6d6f0
|
||||
+ oldLevel = oldState.getValue(ComposterBlock.LEVEL);
|
||||
+ newState = process(oldLevel, player, oldState, world, pos, stack);
|
||||
+ if (newState == null) {
|
||||
+ return ItemInteractionResult.SKIP_DEFAULT_BLOCK_INTERACTION;
|
||||
+ return InteractionResult.PASS;
|
||||
+ }
|
||||
+ newCount = stack.getCount();
|
||||
+ newLevel = newState.getValue(ComposterBlock.LEVEL);
|
||||
@@ -58,9 +58,9 @@ index d3d12f9114173f4971f95d7ef895a4374705bd3f..f34159f8d6c51af2341bf49db0d6d6f0
|
||||
+ }
|
||||
+ // Purpur end
|
||||
|
||||
return ItemInteractionResult.sidedSuccess(world.isClientSide);
|
||||
return InteractionResult.SUCCESS;
|
||||
} else {
|
||||
@@ -256,6 +265,25 @@ public class ComposterBlock extends Block implements WorldlyContainerHolder {
|
||||
@@ -260,6 +269,25 @@ public class ComposterBlock extends Block implements WorldlyContainerHolder {
|
||||
}
|
||||
}
|
||||
|
||||
@@ -87,10 +87,10 @@ index d3d12f9114173f4971f95d7ef895a4374705bd3f..f34159f8d6c51af2341bf49db0d6d6f0
|
||||
protected InteractionResult useWithoutItem(BlockState state, Level world, BlockPos pos, Player player, BlockHitResult hit) {
|
||||
int i = (Integer) state.getValue(ComposterBlock.LEVEL);
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index 7f2a5c5720bd7f5e176a58d2369a4ffbd81ca138..b1d81d3877c207ec711f8e796f2b12e6febb8eba 100644
|
||||
index f99d1df0358804862f2d98cd39d1aaf1369081c5..3740c1390debbc660ecf31dee0dc7e58096bf1ba 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -439,6 +439,11 @@ public class PurpurWorldConfig {
|
||||
@@ -437,6 +437,11 @@ public class PurpurWorldConfig {
|
||||
chestOpenWithBlockOnTop = getBoolean("blocks.chest.open-with-solid-block-on-top", chestOpenWithBlockOnTop);
|
||||
}
|
||||
|
||||
@@ -5,10 +5,10 @@ Subject: [PATCH] Config for skipping night
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
|
||||
index e077c6cb1880ee19e696d2430b07d1101e330919..40a5107d37e908d13bd0307fc41d9a6e3faf1217 100644
|
||||
index 8dd211d20a695164c2086c03c8b0237ba109fda4..29b8a57477032c85bc498e90af4bfb739926d03c 100644
|
||||
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
|
||||
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
|
||||
@@ -661,7 +661,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf.
|
||||
@@ -731,7 +731,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
|
||||
int i = this.getGameRules().getInt(GameRules.RULE_PLAYERS_SLEEPING_PERCENTAGE);
|
||||
long j;
|
||||
|
||||
@@ -18,10 +18,10 @@ index e077c6cb1880ee19e696d2430b07d1101e330919..40a5107d37e908d13bd0307fc41d9a6e
|
||||
j = this.levelData.getDayTime() + 24000L;
|
||||
TimeSkipEvent event = new TimeSkipEvent(this.getWorld(), TimeSkipEvent.SkipReason.NIGHT_SKIP, (j - j % 24000L) - this.getDayTime());
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index b1d81d3877c207ec711f8e796f2b12e6febb8eba..dbacc159567dea21653148a4e9d9dbf78c8139f7 100644
|
||||
index 3740c1390debbc660ecf31dee0dc7e58096bf1ba..c0341b91afa7eda863caec0395db2129dba59450 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -349,6 +349,7 @@ public class PurpurWorldConfig {
|
||||
@@ -347,6 +347,7 @@ public class PurpurWorldConfig {
|
||||
public boolean playerFixStuckPortal = false;
|
||||
public boolean creativeOnePunch = false;
|
||||
public boolean playerSleepNearMonsters = false;
|
||||
@@ -29,7 +29,7 @@ index b1d81d3877c207ec711f8e796f2b12e6febb8eba..dbacc159567dea21653148a4e9d9dbf7
|
||||
private void playerSettings() {
|
||||
if (PurpurConfig.version < 19) {
|
||||
boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer);
|
||||
@@ -367,6 +368,7 @@ public class PurpurWorldConfig {
|
||||
@@ -365,6 +366,7 @@ public class PurpurWorldConfig {
|
||||
playerFixStuckPortal = getBoolean("gameplay-mechanics.player.fix-stuck-in-portal", playerFixStuckPortal);
|
||||
creativeOnePunch = getBoolean("gameplay-mechanics.player.one-punch-in-creative", creativeOnePunch);
|
||||
playerSleepNearMonsters = getBoolean("gameplay-mechanics.player.sleep-ignore-nearby-mobs", playerSleepNearMonsters);
|
||||
@@ -5,10 +5,10 @@ Subject: [PATCH] Add config for villager trading
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java
|
||||
index a717443f894d1e30efed61944f45e991902d1fa4..671d1dafbfe2f8ba24096f78e2661014d00a5e09 100644
|
||||
index 3fce5c42ca000250bb25201939ba6c73170486be..3b17133289f95e5420f1c0a73b34b953470df533 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/npc/Villager.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java
|
||||
@@ -376,6 +376,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
|
||||
@@ -369,6 +369,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
|
||||
}
|
||||
|
||||
if (level().purpurConfig.villagerRidable && itemstack.isEmpty()) return tryRide(player, hand); // Purpur
|
||||
@@ -17,10 +17,10 @@ index a717443f894d1e30efed61944f45e991902d1fa4..671d1dafbfe2f8ba24096f78e2661014
|
||||
}
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java
|
||||
index 05c63eb6cf8a7067105c58d244c7cc27d6bf1125..7c2d5d28f8c2aba2cd8255a4aef22247fe04d0e0 100644
|
||||
index 5eac0ba67b3ab258dd594ad1e1aaa7a2535fcfca..485a49bb13532177a949938d4b99c934518a0af1 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java
|
||||
@@ -155,8 +155,10 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill
|
||||
@@ -156,8 +156,10 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill
|
||||
return tryRide(player, hand, InteractionResult.CONSUME); // Purpur
|
||||
}
|
||||
if (level().purpurConfig.wanderingTraderRidable && itemstack.isEmpty()) return tryRide(player, hand); // Purpur
|
||||
@@ -30,12 +30,12 @@ index 05c63eb6cf8a7067105c58d244c7cc27d6bf1125..7c2d5d28f8c2aba2cd8255a4aef22247
|
||||
+ } // Purpur
|
||||
}
|
||||
|
||||
return InteractionResult.sidedSuccess(this.level().isClientSide);
|
||||
return InteractionResult.SUCCESS;
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index dbacc159567dea21653148a4e9d9dbf78c8139f7..4430a61f8c923e92ea889897c17ab4535fa47b4d 100644
|
||||
index c0341b91afa7eda863caec0395db2129dba59450..dbaff51304eb9830ae2740e2274d7a5036880482 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -2224,6 +2224,7 @@ public class PurpurWorldConfig {
|
||||
@@ -2220,6 +2220,7 @@ public class PurpurWorldConfig {
|
||||
public boolean villagerClericFarmersThrowWarts = true;
|
||||
public boolean villagerBypassMobGriefing = false;
|
||||
public boolean villagerTakeDamageFromWater = false;
|
||||
@@ -43,7 +43,7 @@ index dbacc159567dea21653148a4e9d9dbf78c8139f7..4430a61f8c923e92ea889897c17ab453
|
||||
private void villagerSettings() {
|
||||
villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable);
|
||||
villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater);
|
||||
@@ -2243,6 +2244,7 @@ public class PurpurWorldConfig {
|
||||
@@ -2239,6 +2240,7 @@ public class PurpurWorldConfig {
|
||||
villagerClericFarmersThrowWarts = getBoolean("mobs.villager.cleric-wart-farmers-throw-warts-at-villagers", villagerClericFarmersThrowWarts);
|
||||
villagerBypassMobGriefing = getBoolean("mobs.villager.bypass-mob-griefing", villagerBypassMobGriefing);
|
||||
villagerTakeDamageFromWater = getBoolean("mobs.villager.takes-damage-from-water", villagerTakeDamageFromWater);
|
||||
@@ -51,7 +51,7 @@ index dbacc159567dea21653148a4e9d9dbf78c8139f7..4430a61f8c923e92ea889897c17ab453
|
||||
}
|
||||
|
||||
public boolean vindicatorRidable = false;
|
||||
@@ -2275,6 +2277,7 @@ public class PurpurWorldConfig {
|
||||
@@ -2271,6 +2273,7 @@ public class PurpurWorldConfig {
|
||||
public boolean wanderingTraderFollowEmeraldBlock = false;
|
||||
public boolean wanderingTraderCanBeLeashed = false;
|
||||
public boolean wanderingTraderTakeDamageFromWater = false;
|
||||
@@ -59,7 +59,7 @@ index dbacc159567dea21653148a4e9d9dbf78c8139f7..4430a61f8c923e92ea889897c17ab453
|
||||
private void wanderingTraderSettings() {
|
||||
wanderingTraderRidable = getBoolean("mobs.wandering_trader.ridable", wanderingTraderRidable);
|
||||
wanderingTraderRidableInWater = getBoolean("mobs.wandering_trader.ridable-in-water", wanderingTraderRidableInWater);
|
||||
@@ -2289,6 +2292,7 @@ public class PurpurWorldConfig {
|
||||
@@ -2285,6 +2288,7 @@ public class PurpurWorldConfig {
|
||||
wanderingTraderFollowEmeraldBlock = getBoolean("mobs.wandering_trader.follow-emerald-blocks", wanderingTraderFollowEmeraldBlock);
|
||||
wanderingTraderCanBeLeashed = getBoolean("mobs.wandering_trader.can-be-leashed", wanderingTraderCanBeLeashed);
|
||||
wanderingTraderTakeDamageFromWater = getBoolean("mobs.wandering_trader.takes-damage-from-water", wanderingTraderTakeDamageFromWater);
|
||||
@@ -5,10 +5,10 @@ Subject: [PATCH] Drowning Settings
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
|
||||
index 901080dd8431b83b20aa5604e931519dcba82b22..657980c6c82b6a50ee9874f4aeb483b40dc24247 100644
|
||||
index 0b936bcf09bb12b0a29a1ef755df1a24604f0904..f3769da2422d98dec32ba252bde5d9467f1bd84f 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/Entity.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
|
||||
@@ -3493,7 +3493,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
|
||||
@@ -3655,7 +3655,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
|
||||
}
|
||||
|
||||
public int getMaxAirSupply() {
|
||||
@@ -18,10 +18,10 @@ index 901080dd8431b83b20aa5604e931519dcba82b22..657980c6c82b6a50ee9874f4aeb483b4
|
||||
|
||||
public int getAirSupply() {
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
|
||||
index 7a99319d6ac85fd794fef361dd6f8092b847c744..d4ba4752b04ad3d1a8133c56144800af756f4aa6 100644
|
||||
index 698340b3934a500ebd2cc50bc8818914d53af92d..64e30f4b32484da95a5eb6d5556fdc8f66727410 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
|
||||
@@ -473,7 +473,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
|
||||
@@ -493,7 +493,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
|
||||
|
||||
if (flag1) {
|
||||
this.setAirSupply(this.decreaseAirSupply(this.getAirSupply()));
|
||||
@@ -30,8 +30,8 @@ index 7a99319d6ac85fd794fef361dd6f8092b847c744..d4ba4752b04ad3d1a8133c56144800af
|
||||
this.setAirSupply(0);
|
||||
Vec3 vec3d = this.getDeltaMovement();
|
||||
|
||||
@@ -485,7 +485,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
|
||||
this.level().addParticle(ParticleTypes.BUBBLE, this.getX() + d2, this.getY() + d3, this.getZ() + d4, vec3d.x, vec3d.y, vec3d.z);
|
||||
@@ -505,7 +505,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
|
||||
this.level().addParticle(ParticleTypes.BUBBLE, this.getX() + d0, this.getY() + d2, this.getZ() + d3, vec3d.x, vec3d.y, vec3d.z);
|
||||
}
|
||||
|
||||
- this.hurt(this.damageSources().drown(), 2.0F);
|
||||
@@ -40,10 +40,10 @@ index 7a99319d6ac85fd794fef361dd6f8092b847c744..d4ba4752b04ad3d1a8133c56144800af
|
||||
}
|
||||
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index 4430a61f8c923e92ea889897c17ab4535fa47b4d..1859d0003a0c1860dd9db434b113dcfec284e025 100644
|
||||
index dbaff51304eb9830ae2740e2274d7a5036880482..c0084a992ae74365e4da842795adee98ebd99a09 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -165,6 +165,15 @@ public class PurpurWorldConfig {
|
||||
@@ -163,6 +163,15 @@ public class PurpurWorldConfig {
|
||||
nighttimeTicks = getInt("gameplay-mechanics.daylight-cycle-ticks.nighttime", nighttimeTicks);
|
||||
}
|
||||
|
||||
@@ -5,10 +5,10 @@ Subject: [PATCH] Break individual slabs when sneaking
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java
|
||||
index 09ab1904ea9c587f365513150dafe434a0b56ccf..d3c49951c0bd7db4352326d3113f0ca9da393fab 100644
|
||||
index 9c33daaf92fe590272d5cc32f538ae9bef4d07bc..8ad07b6939831f57469bb6ad7c78b2c7e3b17fea 100644
|
||||
--- a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java
|
||||
+++ b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java
|
||||
@@ -405,6 +405,7 @@ public class ServerPlayerGameMode {
|
||||
@@ -403,6 +403,7 @@ public class ServerPlayerGameMode {
|
||||
} else {capturedBlockEntity = true;} // Paper - Send block entities after destroy prediction
|
||||
return false;
|
||||
}
|
||||
@@ -17,10 +17,10 @@ index 09ab1904ea9c587f365513150dafe434a0b56ccf..d3c49951c0bd7db4352326d3113f0ca9
|
||||
// CraftBukkit end
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/level/block/SlabBlock.java b/src/main/java/net/minecraft/world/level/block/SlabBlock.java
|
||||
index fa29eb15934b3dad171d27c21d99b2451cfe553b..ba4aa69425d796d306791ea193f9c6b21a065f0b 100644
|
||||
index 9274fd639c22e305dda567b303f9b01068adb52c..4433e432ea0ee8d11045b87e68dac3ed43e8cf82 100644
|
||||
--- a/src/main/java/net/minecraft/world/level/block/SlabBlock.java
|
||||
+++ b/src/main/java/net/minecraft/world/level/block/SlabBlock.java
|
||||
@@ -138,4 +138,25 @@ public class SlabBlock extends Block implements SimpleWaterloggedBlock {
|
||||
@@ -150,4 +150,25 @@ public class SlabBlock extends Block implements SimpleWaterloggedBlock {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -47,10 +47,10 @@ index fa29eb15934b3dad171d27c21d99b2451cfe553b..ba4aa69425d796d306791ea193f9c6b2
|
||||
+ // Purpur end
|
||||
}
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index 1859d0003a0c1860dd9db434b113dcfec284e025..c9bff81954385a2f4113a4fd51d3b85b2f7048c2 100644
|
||||
index c0084a992ae74365e4da842795adee98ebd99a09..54c971872973d6c997530fa147850e06a86c1bf0 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -560,6 +560,11 @@ public class PurpurWorldConfig {
|
||||
@@ -558,6 +558,11 @@ public class PurpurWorldConfig {
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,10 +5,10 @@ Subject: [PATCH] Config to disable hostile mob spawn on ice
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/monster/Monster.java b/src/main/java/net/minecraft/world/entity/monster/Monster.java
|
||||
index e7bfce0534c7ef3a1480a1082ae8514caf78778b..6511b8c737a57fbc72122dd04e2b544987a49b92 100644
|
||||
index e2de074bbe7bab0e5a7aecc1fae4c5914a203dd4..c2061f575c731ecc6071384b007517c08e0cf983 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/monster/Monster.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/monster/Monster.java
|
||||
@@ -87,6 +87,14 @@ public abstract class Monster extends PathfinderMob implements Enemy {
|
||||
@@ -88,6 +88,14 @@ public abstract class Monster extends PathfinderMob implements Enemy {
|
||||
}
|
||||
|
||||
public static boolean isDarkEnoughToSpawn(ServerLevelAccessor world, BlockPos pos, RandomSource random) {
|
||||
@@ -24,10 +24,10 @@ index e7bfce0534c7ef3a1480a1082ae8514caf78778b..6511b8c737a57fbc72122dd04e2b5449
|
||||
return false;
|
||||
} else {
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index c9bff81954385a2f4113a4fd51d3b85b2f7048c2..4e6824fa7adf8dfbafeff2bd6f6426ddb03c5a15 100644
|
||||
index 54c971872973d6c997530fa147850e06a86c1bf0..d30f6bd3b57d8b7bb18a714e80089253a028840b 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -525,6 +525,13 @@ public class PurpurWorldConfig {
|
||||
@@ -523,6 +523,13 @@ public class PurpurWorldConfig {
|
||||
furnaceUseLavaFromUnderneath = getBoolean("blocks.furnace.use-lava-from-underneath", furnaceUseLavaFromUnderneath);
|
||||
}
|
||||
|
||||
@@ -5,10 +5,10 @@ Subject: [PATCH] Config to show Armor Stand arms on spawn
|
||||
|
||||
|
||||
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 7180d65afee6216a0bc6ff2dc7888f64b9b6c22d..c0383771b08e1d89dfa4996b979248da1de8aca1 100644
|
||||
index c954cb3255145e18e8ab1e5a1b0267b879bbd1f3..037586c0fdb42a02660aba89dd741a647c67e52b 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java
|
||||
@@ -116,6 +116,7 @@ public class ArmorStand extends LivingEntity {
|
||||
@@ -128,6 +128,7 @@ public class ArmorStand extends LivingEntity {
|
||||
this.rightArmPose = ArmorStand.DEFAULT_RIGHT_ARM_POSE;
|
||||
this.leftLegPose = ArmorStand.DEFAULT_LEFT_LEG_POSE;
|
||||
this.rightLegPose = ArmorStand.DEFAULT_RIGHT_LEG_POSE;
|
||||
@@ -17,7 +17,7 @@ index 7180d65afee6216a0bc6ff2dc7888f64b9b6c22d..c0383771b08e1d89dfa4996b979248da
|
||||
|
||||
public ArmorStand(Level world, double x, double y, double z) {
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index 4e6824fa7adf8dfbafeff2bd6f6426ddb03c5a15..678130678e1f0b018fc77c608ed092c94e2f52a0 100644
|
||||
index d30f6bd3b57d8b7bb18a714e80089253a028840b..4c751f6b66536ad976c9b8fc936bda38ea12f6e5 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -103,6 +103,7 @@ public class PurpurWorldConfig {
|
||||
@@ -36,10 +36,10 @@ index 3513b15f6622bfc134ecfcd9129f81a8acc2c601..6e70579a58a1bf906b176b81713e5531
|
||||
} else {
|
||||
DoorBlock blockdoor = (DoorBlock) iblockdata.getBlock();
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java
|
||||
index 7c2d5d28f8c2aba2cd8255a4aef22247fe04d0e0..6250bc28db4bbac0f101cdc93c90ec4d7ec6b2ba 100644
|
||||
index 485a49bb13532177a949938d4b99c934518a0af1..dac073bf9626bd8198c912241d4ca36d90b8441c 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java
|
||||
@@ -156,8 +156,8 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill
|
||||
@@ -157,8 +157,8 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill
|
||||
}
|
||||
if (level().purpurConfig.wanderingTraderRidable && itemstack.isEmpty()) return tryRide(player, hand); // Purpur
|
||||
if (this.level().purpurConfig.wanderingTraderAllowTrading) { // Purpur
|
||||
@@ -51,10 +51,10 @@ index 7c2d5d28f8c2aba2cd8255a4aef22247fe04d0e0..6250bc28db4bbac0f101cdc93c90ec4d
|
||||
}
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/level/block/DoorBlock.java b/src/main/java/net/minecraft/world/level/block/DoorBlock.java
|
||||
index 6dd75bc722f9c20b4869e6353115c3b02dd79f99..dfaf82f5b0180cf08c4125347867d37a2557fd24 100644
|
||||
index 077b99caf0ec0ee098786d23194d88e1dc4481ce..daf865c20cc193a12db0d98e3c0472eefdf635c2 100644
|
||||
--- a/src/main/java/net/minecraft/world/level/block/DoorBlock.java
|
||||
+++ b/src/main/java/net/minecraft/world/level/block/DoorBlock.java
|
||||
@@ -198,6 +198,7 @@ public class DoorBlock extends Block {
|
||||
@@ -200,6 +200,7 @@ public class DoorBlock extends Block {
|
||||
protected InteractionResult useWithoutItem(BlockState state, Level world, BlockPos pos, Player player, BlockHitResult hit) {
|
||||
if (!this.type.canOpenByHand()) {
|
||||
return InteractionResult.PASS;
|
||||
@@ -62,7 +62,7 @@ index 6dd75bc722f9c20b4869e6353115c3b02dd79f99..dfaf82f5b0180cf08c4125347867d37a
|
||||
} else {
|
||||
state = (BlockState) state.cycle(DoorBlock.OPEN);
|
||||
world.setBlock(pos, state, 10);
|
||||
@@ -299,4 +300,18 @@ public class DoorBlock extends Block {
|
||||
@@ -301,4 +302,18 @@ public class DoorBlock extends Block {
|
||||
flag = false;
|
||||
return flag;
|
||||
}
|
||||
@@ -82,10 +82,10 @@ index 6dd75bc722f9c20b4869e6353115c3b02dd79f99..dfaf82f5b0180cf08c4125347867d37a
|
||||
+ // Purpur end
|
||||
}
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index 678130678e1f0b018fc77c608ed092c94e2f52a0..58726907eb4dcb4f386873c4092df2b314736f2d 100644
|
||||
index 4c751f6b66536ad976c9b8fc936bda38ea12f6e5..c11e68ba894df3e21d499920585df8128bf7429f 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -464,6 +464,16 @@ public class PurpurWorldConfig {
|
||||
@@ -462,6 +462,16 @@ public class PurpurWorldConfig {
|
||||
dispenserPlaceAnvils = getBoolean("blocks.dispenser.place-anvils", dispenserPlaceAnvils);
|
||||
}
|
||||
|
||||
@@ -5,7 +5,7 @@ Subject: [PATCH] Config to allow unsafe enchants
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/commands/EnchantCommand.java b/src/main/java/net/minecraft/server/commands/EnchantCommand.java
|
||||
index 99695e38b6a10c3cffda6e453f9f0619c7406cc0..2283f69607cb769545c85bcae940ac956779e80b 100644
|
||||
index cf0a5943f457c532958f40b4989fa18f967abae6..2ab8ff8ca51eb841932ccca4a348acc0141264a8 100644
|
||||
--- a/src/main/java/net/minecraft/server/commands/EnchantCommand.java
|
||||
+++ b/src/main/java/net/minecraft/server/commands/EnchantCommand.java
|
||||
@@ -70,7 +70,7 @@ public class EnchantCommand {
|
||||
@@ -27,10 +27,10 @@ index 99695e38b6a10c3cffda6e453f9f0619c7406cc0..2283f69607cb769545c85bcae940ac95
|
||||
i++;
|
||||
} else if (targets.size() == 1) {
|
||||
diff --git a/src/main/java/net/minecraft/world/inventory/AnvilMenu.java b/src/main/java/net/minecraft/world/inventory/AnvilMenu.java
|
||||
index 58135a3292bcdfea17726f17d86192ced96eea9a..29e54876c22739f45565cd91bcbd76612e8bfad1 100644
|
||||
index f1834eec821a14ef6a7f42f827b7e0b8284ae5a2..e9c17953a3767e03e528ed93b10fb42626fff118 100644
|
||||
--- a/src/main/java/net/minecraft/world/inventory/AnvilMenu.java
|
||||
+++ b/src/main/java/net/minecraft/world/inventory/AnvilMenu.java
|
||||
@@ -232,7 +232,10 @@ public class AnvilMenu extends ItemCombinerMenu {
|
||||
@@ -234,7 +234,10 @@ public class AnvilMenu extends ItemCombinerMenu {
|
||||
|
||||
i2 = l1 == i2 ? i2 + 1 : Math.max(i2, l1);
|
||||
Enchantment enchantment = (Enchantment) holder.value();
|
||||
@@ -42,7 +42,7 @@ index 58135a3292bcdfea17726f17d86192ced96eea9a..29e54876c22739f45565cd91bcbd7661
|
||||
|
||||
if (this.player.getAbilities().instabuild || itemstack.is(Items.ENCHANTED_BOOK)) {
|
||||
flag3 = true;
|
||||
@@ -244,16 +247,22 @@ public class AnvilMenu extends ItemCombinerMenu {
|
||||
@@ -246,16 +249,22 @@ public class AnvilMenu extends ItemCombinerMenu {
|
||||
Holder<Enchantment> holder1 = (Holder) iterator1.next();
|
||||
|
||||
if (!holder1.equals(holder) && !Enchantment.areCompatible(holder, holder1)) {
|
||||
@@ -68,7 +68,7 @@ index 58135a3292bcdfea17726f17d86192ced96eea9a..29e54876c22739f45565cd91bcbd7661
|
||||
i2 = enchantment.getMaxLevel();
|
||||
}
|
||||
|
||||
@@ -379,7 +388,7 @@ public class AnvilMenu extends ItemCombinerMenu {
|
||||
@@ -385,7 +394,7 @@ public class AnvilMenu extends ItemCombinerMenu {
|
||||
this.broadcastChanges();
|
||||
|
||||
// Purpur start - Anvil API
|
||||
@@ -78,10 +78,10 @@ index 58135a3292bcdfea17726f17d86192ced96eea9a..29e54876c22739f45565cd91bcbd7661
|
||||
((ServerPlayer) this.player).connection.send(new ClientboundContainerSetDataPacket(this.containerId, 0, this.cost.get()));
|
||||
}
|
||||
diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java
|
||||
index 5f57f3494705ca1664dbca395c1af3280a50cad8..8c14f8c9f61baf1842e42b62bcd73717e82a29e1 100644
|
||||
index dcb656be3d37f29bdbe7d25ace05c6dd1889e252..d644d02b039ca918391a32a04549f7a34386b3f9 100644
|
||||
--- a/src/main/java/net/minecraft/world/item/ItemStack.java
|
||||
+++ b/src/main/java/net/minecraft/world/item/ItemStack.java
|
||||
@@ -1255,6 +1255,12 @@ public final class ItemStack implements DataComponentHolder {
|
||||
@@ -1351,6 +1351,12 @@ public final class ItemStack implements DataComponentHolder {
|
||||
return !((ItemEnchantments) this.getOrDefault(DataComponents.ENCHANTMENTS, ItemEnchantments.EMPTY)).isEmpty();
|
||||
}
|
||||
|
||||
@@ -8,10 +8,10 @@ Allows the total area and radius of water blocks the sponge can absorb to be cha
|
||||
Co-authored by: granny <granny@purpurmc.org>
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/level/block/SpongeBlock.java b/src/main/java/net/minecraft/world/level/block/SpongeBlock.java
|
||||
index 902825ec9ea05f4418b45f56a008d73f217bd178..a676ccfa6b02e8986df6f6a2e04cbb06b3edd0ff 100644
|
||||
index 59cf905b1b5686f6f4f2bad94730ffa69d3a2834..d82c62cdb219cee0bbc3083e38e18b7615ad09ef 100644
|
||||
--- a/src/main/java/net/minecraft/world/level/block/SpongeBlock.java
|
||||
+++ b/src/main/java/net/minecraft/world/level/block/SpongeBlock.java
|
||||
@@ -58,7 +58,7 @@ public class SpongeBlock extends Block {
|
||||
@@ -61,7 +61,7 @@ public class SpongeBlock extends Block {
|
||||
|
||||
private boolean removeWaterBreadthFirstSearch(Level world, BlockPos pos) {
|
||||
BlockStateListPopulator blockList = new BlockStateListPopulator(world); // CraftBukkit - Use BlockStateListPopulator
|
||||
@@ -21,10 +21,10 @@ index 902825ec9ea05f4418b45f56a008d73f217bd178..a676ccfa6b02e8986df6f6a2e04cbb06
|
||||
int i = aenumdirection.length;
|
||||
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index 58726907eb4dcb4f386873c4092df2b314736f2d..a4c0ed4e5b6145cb8e33f6bd38af678cae4d79d7 100644
|
||||
index c11e68ba894df3e21d499920585df8128bf7429f..e6787f6885e7f40b195544f753b4782d16d4b6ef 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -589,6 +589,13 @@ public class PurpurWorldConfig {
|
||||
@@ -587,6 +587,13 @@ public class PurpurWorldConfig {
|
||||
spawnerDeactivateByRedstone = getBoolean("blocks.spawner.deactivate-by-redstone", spawnerDeactivateByRedstone);
|
||||
}
|
||||
|
||||
@@ -5,11 +5,11 @@ Subject: [PATCH] Projectile offset config
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/item/BowItem.java b/src/main/java/net/minecraft/world/item/BowItem.java
|
||||
index 4db2032178471860baddc6b669c9a4f8cffd084b..fc534b1f214663eb8e4fe479fed12b1dd069105c 100644
|
||||
index 1d4d0799a86b9940b5e3b614c5a188ade5133f7e..58fa528e4b2589d362eb976afd6221cd94f2623c 100644
|
||||
--- a/src/main/java/net/minecraft/world/item/BowItem.java
|
||||
+++ b/src/main/java/net/minecraft/world/item/BowItem.java
|
||||
@@ -37,7 +37,7 @@ public class BowItem extends ProjectileWeaponItem {
|
||||
if (!((double)f < 0.1)) {
|
||||
@@ -43,7 +43,7 @@ public class BowItem extends ProjectileWeaponItem {
|
||||
} else {
|
||||
List<ItemStack> list = draw(stack, itemStack, player);
|
||||
if (world instanceof ServerLevel serverLevel && !list.isEmpty()) {
|
||||
- this.shoot(serverLevel, player, player.getUsedItemHand(), stack, list, f * 3.0F, 1.0F, f == 1.0F, null);
|
||||
@@ -18,7 +18,7 @@ index 4db2032178471860baddc6b669c9a4f8cffd084b..fc534b1f214663eb8e4fe479fed12b1d
|
||||
|
||||
world.playSound(
|
||||
diff --git a/src/main/java/net/minecraft/world/item/CrossbowItem.java b/src/main/java/net/minecraft/world/item/CrossbowItem.java
|
||||
index 1467e6f2df302e0b7992dcb6c136cb626ade3d2b..4e60c2102e3e838c68e4b9db41c8bca365d22923 100644
|
||||
index 52c40eafc77e50a6fd21b9a7a250cea501f11690..86204c2ab5bbd5d45ddb1d626f844d91ccae6b4f 100644
|
||||
--- a/src/main/java/net/minecraft/world/item/CrossbowItem.java
|
||||
+++ b/src/main/java/net/minecraft/world/item/CrossbowItem.java
|
||||
@@ -69,7 +69,7 @@ public class CrossbowItem extends ProjectileWeaponItem {
|
||||
@@ -27,79 +27,79 @@ index 1467e6f2df302e0b7992dcb6c136cb626ade3d2b..4e60c2102e3e838c68e4b9db41c8bca3
|
||||
if (chargedProjectiles != null && !chargedProjectiles.isEmpty()) {
|
||||
- this.performShooting(world, user, hand, itemStack, getShootingPower(chargedProjectiles), 1.0F, null);
|
||||
+ this.performShooting(world, user, hand, itemStack, getShootingPower(chargedProjectiles), (float) world.purpurConfig.crossbowProjectileOffset, null); // Purpur
|
||||
return InteractionResultHolder.consume(itemStack);
|
||||
return InteractionResult.CONSUME;
|
||||
} else if (!user.getProjectile(itemStack).isEmpty()) {
|
||||
this.startSoundPlayed = false;
|
||||
diff --git a/src/main/java/net/minecraft/world/item/EggItem.java b/src/main/java/net/minecraft/world/item/EggItem.java
|
||||
index 4ebd634cff286b10868e26eeb3ecf34abdcab22e..7dc811335caa46870d1d895899a1e6c21980382d 100644
|
||||
index 3ddd34e5d05fa1355a2affd329d72dea216cd0e4..770bdb3fb2426083ff6785f1c38ffe9d11f898e5 100644
|
||||
--- a/src/main/java/net/minecraft/world/item/EggItem.java
|
||||
+++ b/src/main/java/net/minecraft/world/item/EggItem.java
|
||||
@@ -27,7 +27,7 @@ public class EggItem extends Item implements ProjectileItem {
|
||||
ThrownEgg entityegg = new ThrownEgg(world, user);
|
||||
|
||||
entityegg.setItem(itemstack);
|
||||
- entityegg.shootFromRotation(user, user.getXRot(), user.getYRot(), 0.0F, 1.5F, 1.0F);
|
||||
+ entityegg.shootFromRotation(user, user.getXRot(), user.getYRot(), 0.0F, 1.5F, (float) world.purpurConfig.eggProjectileOffset); // Purpur
|
||||
if (world instanceof ServerLevel worldserver) {
|
||||
// CraftBukkit start
|
||||
// Paper start - PlayerLaunchProjectileEvent
|
||||
com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent event = new com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent((org.bukkit.entity.Player) user.getBukkitEntity(), org.bukkit.craftbukkit.inventory.CraftItemStack.asCraftMirror(itemstack), (org.bukkit.entity.Projectile) entityegg.getBukkitEntity());
|
||||
if (event.callEvent() && world.addFreshEntity(entityegg)) {
|
||||
- final Projectile.Delayed<ThrownEgg> thrownEgg = Projectile.spawnProjectileFromRotationDelayed(ThrownEgg::new, worldserver, itemstack, user, 0.0F, 1.5F, 1.0F);
|
||||
+ final Projectile.Delayed<ThrownEgg> thrownEgg = Projectile.spawnProjectileFromRotationDelayed(ThrownEgg::new, worldserver, itemstack, user, 0.0F, 1.5F, (float) worldserver.purpurConfig.eggProjectileOffset); // Purpur
|
||||
com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent event = new com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent((org.bukkit.entity.Player) user.getBukkitEntity(), org.bukkit.craftbukkit.inventory.CraftItemStack.asCraftMirror(itemstack), (org.bukkit.entity.Projectile) thrownEgg.projectile().getBukkitEntity());
|
||||
if (event.callEvent() && thrownEgg.attemptSpawn()) {
|
||||
if (event.shouldConsume()) {
|
||||
diff --git a/src/main/java/net/minecraft/world/item/EnderpearlItem.java b/src/main/java/net/minecraft/world/item/EnderpearlItem.java
|
||||
index fc62754f93bd11a10c28b8b7b116e9fff70a5c7b..11b04455f09d8bfdf44499bb8359dc715c2daffd 100644
|
||||
index ad99c6fb7bcd8ccbdeb405ca7ff73ae4d1c2f2ee..4039d300debadf29e6c544e8b4c950b7121a02d1 100644
|
||||
--- a/src/main/java/net/minecraft/world/item/EnderpearlItem.java
|
||||
+++ b/src/main/java/net/minecraft/world/item/EnderpearlItem.java
|
||||
@@ -24,7 +24,7 @@ public class EnderpearlItem extends Item {
|
||||
ThrownEnderpearl entityenderpearl = new ThrownEnderpearl(world, user);
|
||||
|
||||
entityenderpearl.setItem(itemstack);
|
||||
- entityenderpearl.shootFromRotation(user, user.getXRot(), user.getYRot(), 0.0F, 1.5F, 1.0F);
|
||||
+ entityenderpearl.shootFromRotation(user, user.getXRot(), user.getYRot(), 0.0F, 1.5F, (float) world.purpurConfig.enderPearlProjectileOffset); // Purpur
|
||||
if (world instanceof ServerLevel worldserver) {
|
||||
// CraftBukkit start
|
||||
// Paper start - PlayerLaunchProjectileEvent
|
||||
com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent event = new com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent((org.bukkit.entity.Player) user.getBukkitEntity(), org.bukkit.craftbukkit.inventory.CraftItemStack.asCraftMirror(itemstack), (org.bukkit.entity.Projectile) entityenderpearl.getBukkitEntity());
|
||||
if (event.callEvent() && world.addFreshEntity(entityenderpearl)) {
|
||||
- final Projectile.Delayed<ThrownEnderpearl> thrownEnderpearl = Projectile.spawnProjectileFromRotationDelayed(ThrownEnderpearl::new, worldserver, itemstack, user, 0.0F, 1.5F, 1.0F);
|
||||
+ final Projectile.Delayed<ThrownEnderpearl> thrownEnderpearl = Projectile.spawnProjectileFromRotationDelayed(ThrownEnderpearl::new, worldserver, itemstack, user, 0.0F, 1.5F, (float) worldserver.purpurConfig.enderPearlProjectileOffset); // Purpur
|
||||
com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent event = new com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent((org.bukkit.entity.Player) user.getBukkitEntity(), org.bukkit.craftbukkit.inventory.CraftItemStack.asCraftMirror(itemstack), (org.bukkit.entity.Projectile) thrownEnderpearl.projectile().getBukkitEntity());
|
||||
if (event.callEvent() && thrownEnderpearl.attemptSpawn()) {
|
||||
if (event.shouldConsume()) {
|
||||
diff --git a/src/main/java/net/minecraft/world/item/SnowballItem.java b/src/main/java/net/minecraft/world/item/SnowballItem.java
|
||||
index 32b170551a2f5bdc88d29f4d03750bfe3974e71b..a41fb0dd26af367fc2470a7913a84d864bc505f7 100644
|
||||
index 57872ebef6beb8cdc03c9f8f19de94652ee19062..60a064c26de0566aaf9f8be886402e291c03ca3b 100644
|
||||
--- a/src/main/java/net/minecraft/world/item/SnowballItem.java
|
||||
+++ b/src/main/java/net/minecraft/world/item/SnowballItem.java
|
||||
@@ -28,7 +28,7 @@ public class SnowballItem extends Item implements ProjectileItem {
|
||||
Snowball entitysnowball = new Snowball(world, user);
|
||||
|
||||
entitysnowball.setItem(itemstack);
|
||||
- entitysnowball.shootFromRotation(user, user.getXRot(), user.getYRot(), 0.0F, 1.5F, 1.0F);
|
||||
+ entitysnowball.shootFromRotation(user, user.getXRot(), user.getYRot(), 0.0F, 1.5F, (float) world.purpurConfig.snowballProjectileOffset); // Purpur
|
||||
@@ -27,7 +27,7 @@ public class SnowballItem extends Item implements ProjectileItem {
|
||||
// world.playSound((EntityHuman) null, entityhuman.getX(), entityhuman.getY(), entityhuman.getZ(), SoundEffects.SNOWBALL_THROW, SoundCategory.NEUTRAL, 0.5F, 0.4F / (world.getRandom().nextFloat() * 0.4F + 0.8F));
|
||||
if (world instanceof ServerLevel worldserver) {
|
||||
// Paper start - PlayerLaunchProjectileEvent
|
||||
com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent event = new com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent((org.bukkit.entity.Player) user.getBukkitEntity(), org.bukkit.craftbukkit.inventory.CraftItemStack.asCraftMirror(itemstack), (org.bukkit.entity.Projectile) entitysnowball.getBukkitEntity());
|
||||
if (event.callEvent() && world.addFreshEntity(entitysnowball)) {
|
||||
- final Projectile.Delayed<Snowball> snowball = Projectile.spawnProjectileFromRotationDelayed(Snowball::new, worldserver, itemstack, user, 0.0F, 1.5F, 1.0F);
|
||||
+ final Projectile.Delayed<Snowball> snowball = Projectile.spawnProjectileFromRotationDelayed(Snowball::new, worldserver, itemstack, user, 0.0F, 1.5F, (float) worldserver.purpurConfig.snowballProjectileOffset); // Purpur
|
||||
com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent event = new com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent((org.bukkit.entity.Player) user.getBukkitEntity(), org.bukkit.craftbukkit.inventory.CraftItemStack.asCraftMirror(itemstack), (org.bukkit.entity.Projectile) snowball.projectile().getBukkitEntity());
|
||||
if (event.callEvent() && snowball.attemptSpawn()) {
|
||||
user.awardStat(Stats.ITEM_USED.get(this));
|
||||
diff --git a/src/main/java/net/minecraft/world/item/ThrowablePotionItem.java b/src/main/java/net/minecraft/world/item/ThrowablePotionItem.java
|
||||
index 369955746f4b51f69fa01103e3771dd74fc6c8f0..e6edd3a0fa2578900cdbe8bd588219dc3fd3af5f 100644
|
||||
index fa9d2ae44fcdd06f8f33cd14ffca422b20a01451..ffbc71ca2a27800d7758e3db339bf06a39ef1f11 100644
|
||||
--- a/src/main/java/net/minecraft/world/item/ThrowablePotionItem.java
|
||||
+++ b/src/main/java/net/minecraft/world/item/ThrowablePotionItem.java
|
||||
@@ -21,7 +21,7 @@ public class ThrowablePotionItem extends PotionItem implements ProjectileItem {
|
||||
if (!world.isClientSide) {
|
||||
ThrownPotion thrownPotion = new ThrownPotion(world, user);
|
||||
thrownPotion.setItem(itemStack);
|
||||
- thrownPotion.shootFromRotation(user, user.getXRot(), user.getYRot(), -20.0F, 0.5F, 1.0F);
|
||||
+ thrownPotion.shootFromRotation(user, user.getXRot(), user.getYRot(), -20.0F, 0.5F, (float) world.purpurConfig.throwablePotionProjectileOffset); // Purpur
|
||||
ItemStack itemStack = user.getItemInHand(hand);
|
||||
if (world instanceof ServerLevel serverLevel) {
|
||||
// Paper start - PlayerLaunchProjectileEvent
|
||||
com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent event = new com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent((org.bukkit.entity.Player) user.getBukkitEntity(), org.bukkit.craftbukkit.inventory.CraftItemStack.asCraftMirror(itemStack), (org.bukkit.entity.Projectile) thrownPotion.getBukkitEntity());
|
||||
if (event.callEvent() && world.addFreshEntity(thrownPotion)) {
|
||||
- final Projectile.Delayed<ThrownPotion> thrownPotion = Projectile.spawnProjectileFromRotationDelayed(ThrownPotion::new, serverLevel, itemStack, user, -20.0F, 0.5F, 1.0F);
|
||||
+ final Projectile.Delayed<ThrownPotion> thrownPotion = Projectile.spawnProjectileFromRotationDelayed(ThrownPotion::new, serverLevel, itemStack, user, -20.0F, 0.5F, (float) serverLevel.purpurConfig.throwablePotionProjectileOffset); // Purpur
|
||||
// Paper start - PlayerLaunchProjectileEvent
|
||||
com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent event = new com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent((org.bukkit.entity.Player) user.getBukkitEntity(), org.bukkit.craftbukkit.inventory.CraftItemStack.asCraftMirror(itemStack), (org.bukkit.entity.Projectile) thrownPotion.projectile().getBukkitEntity());
|
||||
if (event.callEvent() && thrownPotion.attemptSpawn()) {
|
||||
diff --git a/src/main/java/net/minecraft/world/item/TridentItem.java b/src/main/java/net/minecraft/world/item/TridentItem.java
|
||||
index 4934bae61114b49a9f8d0ed044fbb881210df32a..1be074074283f12543ac771ac9201580e7736289 100644
|
||||
index 24b97c8e2758e4a991dbbbf5276580e1fe027439..4e863ae1f94291b391a142e04e0c41e83417ab70 100644
|
||||
--- a/src/main/java/net/minecraft/world/item/TridentItem.java
|
||||
+++ b/src/main/java/net/minecraft/world/item/TridentItem.java
|
||||
@@ -81,7 +81,7 @@ public class TridentItem extends Item implements ProjectileItem {
|
||||
if (f == 0.0F) {
|
||||
ThrownTrident entitythrowntrident = new ThrownTrident(world, entityhuman, stack);
|
||||
|
||||
- entitythrowntrident.shootFromRotation(entityhuman, entityhuman.getXRot(), entityhuman.getYRot(), 0.0F, 2.5F, 1.0F);
|
||||
+ entitythrowntrident.shootFromRotation(entityhuman, entityhuman.getXRot(), entityhuman.getYRot(), 0.0F, 2.5F, (float) world.purpurConfig.tridentProjectileOffset); // Purpur
|
||||
if (entityhuman.hasInfiniteMaterials()) {
|
||||
entitythrowntrident.pickup = AbstractArrow.Pickup.CREATIVE_ONLY;
|
||||
}
|
||||
@@ -88,7 +88,7 @@ public class TridentItem extends Item implements ProjectileItem {
|
||||
// itemstack.hurtWithoutBreaking(1, entityhuman); // CraftBukkit - moved down
|
||||
if (f == 0.0F) {
|
||||
// Paper start - PlayerLaunchProjectileEvent
|
||||
- Projectile.Delayed<ThrownTrident> tridentDelayed = Projectile.spawnProjectileFromRotationDelayed(ThrownTrident::new, worldserver, stack, entityhuman, 0.0F, 2.5F, 1.0F);
|
||||
+ Projectile.Delayed<ThrownTrident> tridentDelayed = Projectile.spawnProjectileFromRotationDelayed(ThrownTrident::new, worldserver, stack, entityhuman, 0.0F, 2.5F, (float) worldserver.purpurConfig.tridentProjectileOffset); // Purpur
|
||||
// Paper start - PlayerLaunchProjectileEvent
|
||||
com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent event = new com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent((org.bukkit.entity.Player) entityhuman.getBukkitEntity(), org.bukkit.craftbukkit.inventory.CraftItemStack.asCraftMirror(stack), (org.bukkit.entity.Projectile) tridentDelayed.projectile().getBukkitEntity());
|
||||
if (!event.callEvent() || !tridentDelayed.attemptSpawn()) {
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index a4c0ed4e5b6145cb8e33f6bd38af678cae4d79d7..c4233c138edf6c685cbcb487c79c02e84adaf65e 100644
|
||||
index e6787f6885e7f40b195544f753b4782d16d4b6ef..de393b153bd5efd0e39aaedc506d280e548e81e4 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -414,6 +414,23 @@ public class PurpurWorldConfig {
|
||||
@@ -412,6 +412,23 @@ public class PurpurWorldConfig {
|
||||
});
|
||||
}
|
||||
|
||||
@@ -5,7 +5,7 @@ Subject: [PATCH] Config for powered rail activation distance
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/level/block/PoweredRailBlock.java b/src/main/java/net/minecraft/world/level/block/PoweredRailBlock.java
|
||||
index 9603d8c84ff483030dc08e82d3579b89e5c1f6e9..8fc65c32a3c6e6842a76b36f45e1b1c23abbc480 100644
|
||||
index b763361a8f0f1b46093d5dd9afe8dba0cadf9c78..bd14c08defe8afc5ceca59d16a5b1dbad178f594 100644
|
||||
--- a/src/main/java/net/minecraft/world/level/block/PoweredRailBlock.java
|
||||
+++ b/src/main/java/net/minecraft/world/level/block/PoweredRailBlock.java
|
||||
@@ -30,7 +30,7 @@ public class PoweredRailBlock extends BaseRailBlock {
|
||||
@@ -18,10 +18,10 @@ index 9603d8c84ff483030dc08e82d3579b89e5c1f6e9..8fc65c32a3c6e6842a76b36f45e1b1c2
|
||||
} else {
|
||||
int j = pos.getX();
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index c4233c138edf6c685cbcb487c79c02e84adaf65e..22de19aeb28795484525ddb22df96b89f915eceb 100644
|
||||
index de393b153bd5efd0e39aaedc506d280e548e81e4..0f940d6b8d927355cf0ae120e857b62be8af7806 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -575,6 +575,11 @@ public class PurpurWorldConfig {
|
||||
@@ -573,6 +573,11 @@ public class PurpurWorldConfig {
|
||||
powderSnowBypassMobGriefing = getBoolean("blocks.powder_snow.bypass-mob-griefing", powderSnowBypassMobGriefing);
|
||||
}
|
||||
|
||||
@@ -1,57 +0,0 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: William Blake Galbreath <Blake.Galbreath@GMail.com>
|
||||
Date: Mon, 15 Mar 2021 03:52:17 -0500
|
||||
Subject: [PATCH] Tick fluids config
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/level/block/LiquidBlock.java b/src/main/java/net/minecraft/world/level/block/LiquidBlock.java
|
||||
index 84623c632d8c2f0fa7ec939c711316d757117d23..1851035b9fdcc076442d0699567a3b020e6425d6 100644
|
||||
--- a/src/main/java/net/minecraft/world/level/block/LiquidBlock.java
|
||||
+++ b/src/main/java/net/minecraft/world/level/block/LiquidBlock.java
|
||||
@@ -137,7 +137,7 @@ public class LiquidBlock extends Block implements BucketPickup {
|
||||
|
||||
@Override
|
||||
protected void onPlace(BlockState state, Level world, BlockPos pos, BlockState oldState, boolean notify) {
|
||||
- if (this.shouldSpreadLiquid(world, pos, state)) {
|
||||
+ if (world.purpurConfig.tickFluids && this.shouldSpreadLiquid(world, pos, state)) { // Purpur
|
||||
world.scheduleTick(pos, state.getFluidState().getType(), this.getFlowSpeed(world, pos)); // Paper - Configurable speed for water flowing over lava
|
||||
}
|
||||
|
||||
@@ -165,7 +165,7 @@ public class LiquidBlock extends Block implements BucketPickup {
|
||||
|
||||
@Override
|
||||
protected BlockState updateShape(BlockState state, Direction direction, BlockState neighborState, LevelAccessor world, BlockPos pos, BlockPos neighborPos) {
|
||||
- if (state.getFluidState().isSource() || neighborState.getFluidState().isSource()) {
|
||||
+ if (world.getMinecraftWorld().purpurConfig.tickFluids && state.getFluidState().isSource() || neighborState.getFluidState().isSource()) { // Purpur
|
||||
world.scheduleTick(pos, state.getFluidState().getType(), this.fluid.getTickDelay(world));
|
||||
}
|
||||
|
||||
@@ -174,7 +174,7 @@ public class LiquidBlock extends Block implements BucketPickup {
|
||||
|
||||
@Override
|
||||
protected void neighborChanged(BlockState state, Level world, BlockPos pos, Block sourceBlock, BlockPos sourcePos, boolean notify) {
|
||||
- if (this.shouldSpreadLiquid(world, pos, state)) {
|
||||
+ if (world.purpurConfig.tickFluids && this.shouldSpreadLiquid(world, pos, state)) { // Purpur
|
||||
world.scheduleTick(pos, state.getFluidState().getType(), this.getFlowSpeed(world, pos)); // Paper - Configurable speed for water flowing over lava
|
||||
}
|
||||
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index 5902f7c6a74723c07892abbefbf7d2daf5e66271..4e7ea1f1b4413c929ed4066e9dd213a9fc9b4b35 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -132,6 +132,7 @@ public class PurpurWorldConfig {
|
||||
public boolean noteBlockIgnoreAbove = false;
|
||||
public boolean persistentDroppableEntityDisplayNames = true;
|
||||
public boolean projectilesBypassMobGriefing = false;
|
||||
+ public boolean tickFluids = true;
|
||||
public double tridentLoyaltyVoidReturnHeight = 0.0D;
|
||||
public int raidCooldownSeconds = 0;
|
||||
public int animalBreedingCooldownSeconds = 0;
|
||||
@@ -151,6 +152,7 @@ public class PurpurWorldConfig {
|
||||
noteBlockIgnoreAbove = getBoolean("gameplay-mechanics.note-block-ignore-above", noteBlockIgnoreAbove);
|
||||
persistentDroppableEntityDisplayNames = getBoolean("gameplay-mechanics.persistent-droppable-entity-display-names", persistentDroppableEntityDisplayNames);
|
||||
projectilesBypassMobGriefing = getBoolean("gameplay-mechanics.projectiles-bypass-mob-griefing", projectilesBypassMobGriefing);
|
||||
+ tickFluids = getBoolean("gameplay-mechanics.tick-fluids", tickFluids);
|
||||
tridentLoyaltyVoidReturnHeight = getDouble("gameplay-mechanics.trident-loyalty-void-return-height", tridentLoyaltyVoidReturnHeight);
|
||||
raidCooldownSeconds = getInt("gameplay-mechanics.raid-cooldown-seconds", raidCooldownSeconds);
|
||||
animalBreedingCooldownSeconds = getInt("gameplay-mechanics.animal-breeding-cooldown-seconds", animalBreedingCooldownSeconds);
|
||||
Reference in New Issue
Block a user