mirror of
https://github.com/PurpurMC/Purpur.git
synced 2026-06-21 09:47:45 +02:00
Upstream Paper's upgrade to vineflower 12.0.0 (#1782)
This commit is contained in:
@@ -5,6 +5,8 @@ public net.minecraft.world.entity.LivingEntity canGlide()Z
|
||||
public net.minecraft.world.entity.monster.Shulker MAX_SCALE
|
||||
public net.minecraft.world.entity.player.Player canGlide()Z
|
||||
public net.minecraft.world.level.block.ShulkerBoxBlock canOpen(Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/world/level/Level;Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/block/entity/ShulkerBoxBlockEntity;)Z
|
||||
public net.minecraft.world.level.block.entity.BeehiveBlockEntity$BeeData
|
||||
public net.minecraft.world.level.block.entity.BeehiveBlockEntity$BeeData occupant
|
||||
public net.minecraft.world.level.block.entity.FuelValues values
|
||||
public net.minecraft.world.level.portal.PortalShape FRAME
|
||||
public-f net.minecraft.world.entity.EntityType dimensions
|
||||
|
||||
@@ -3,7 +3,7 @@ group = org.purpurmc.purpur
|
||||
mcVersion = 26.1.2
|
||||
apiVersion = 26.1.2
|
||||
channel=STABLE
|
||||
paperCommit = 5c917dababca4087b9df4d44b415d85125479830
|
||||
paperCommit = fd45f4b2e38a1b0ea18dee6fc8a8b420e9b069e1
|
||||
|
||||
org.gradle.configuration-cache = true
|
||||
org.gradle.caching = true
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
+ // Purpur end - Rebrand
|
||||
+
|
||||
+ /*updatingMinecraft { // Purpur start - TODO - snapshot - we don't need this
|
||||
// oldPaperCommit = "7e80cef5198561d0db53406127e5b8bc7af51577"
|
||||
// oldPaperCommit = "711c5de2b05df39b72c44ff54e9f9381f8d153cb"
|
||||
- }
|
||||
+ }*/ // Purpur end - TODO - snapshot - we don't need this
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -5,7 +5,7 @@ Subject: [PATCH] Configurable entity base attributes
|
||||
|
||||
|
||||
diff --git a/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java
|
||||
index 40f3e802ca9a9ca9977ce32a24bc56af971f2eaa..a20626d0b750ba89836d806bef61528758849311 100644
|
||||
index bb6dc165d393a527564810e0cd2f8137e5272b9e..3bc8a8d26569a3c26e518cd48c52b9b6c9e38294 100644
|
||||
--- a/net/minecraft/world/entity/LivingEntity.java
|
||||
+++ b/net/minecraft/world/entity/LivingEntity.java
|
||||
@@ -296,6 +296,7 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin
|
||||
@@ -26,7 +26,7 @@ index 40f3e802ca9a9ca9977ce32a24bc56af971f2eaa..a20626d0b750ba89836d806bef615287
|
||||
return (Brain<? extends LivingEntity>)this.brain;
|
||||
}
|
||||
diff --git a/net/minecraft/world/entity/ambient/Bat.java b/net/minecraft/world/entity/ambient/Bat.java
|
||||
index 7f036c3548aea7a23f5a085ce6d9ce987fbc5116..f40892bbe424408e3d11c887d5bd0fef179aaced 100644
|
||||
index 9861837c1d10e5ffe5dada9f4a75fb9adaccc161..cb242c69be97e0927dd62714f1a9b112c0dec84b 100644
|
||||
--- a/net/minecraft/world/entity/ambient/Bat.java
|
||||
+++ b/net/minecraft/world/entity/ambient/Bat.java
|
||||
@@ -94,6 +94,21 @@ public class Bat extends AmbientCreature {
|
||||
@@ -52,7 +52,7 @@ index 7f036c3548aea7a23f5a085ce6d9ce987fbc5116..f40892bbe424408e3d11c887d5bd0fef
|
||||
public boolean isFlapping() {
|
||||
return !this.isResting() && this.tickCount % 10.0F == 0.0F;
|
||||
diff --git a/net/minecraft/world/entity/animal/allay/Allay.java b/net/minecraft/world/entity/animal/allay/Allay.java
|
||||
index cf1bfb79588236fc648aefcc64bb759862084f58..3a78175273efa24a6bf98ee44fe24a4df71e63ed 100644
|
||||
index 931726ddada92a4b1063dd9dbdc89723f6a283cc..f5bf06a36f4ffd0370a95ef6d18e99d4daedcd65 100644
|
||||
--- a/net/minecraft/world/entity/animal/allay/Allay.java
|
||||
+++ b/net/minecraft/world/entity/animal/allay/Allay.java
|
||||
@@ -154,6 +154,14 @@ public class Allay extends PathfinderMob implements InventoryCarrier, VibrationS
|
||||
@@ -71,10 +71,10 @@ index cf1bfb79588236fc648aefcc64bb759862084f58..3a78175273efa24a6bf98ee44fe24a4d
|
||||
protected Brain<Allay> makeBrain(final Brain.Packed packedBrain) {
|
||||
return BRAIN_PROVIDER.makeBrain(this, packedBrain);
|
||||
diff --git a/net/minecraft/world/entity/animal/armadillo/Armadillo.java b/net/minecraft/world/entity/animal/armadillo/Armadillo.java
|
||||
index 1df0f3e17dadd836dbac39feec56c3b198117340..7c2c71a57b9278aea428e314462cebc08e168b50 100644
|
||||
index d8dcb325325ba2fc6b78ff62c95cb818c5fcf3fc..b55d1d5abe06d753063ea7939bd975c055a1cc95 100644
|
||||
--- a/net/minecraft/world/entity/animal/armadillo/Armadillo.java
|
||||
+++ b/net/minecraft/world/entity/animal/armadillo/Armadillo.java
|
||||
@@ -107,6 +107,14 @@ public class Armadillo extends Animal {
|
||||
@@ -106,6 +106,14 @@ public class Armadillo extends Animal {
|
||||
}
|
||||
// Purpur end - Ridables
|
||||
|
||||
@@ -90,10 +90,10 @@ index 1df0f3e17dadd836dbac39feec56c3b198117340..7c2c71a57b9278aea428e314462cebc0
|
||||
protected void defineSynchedData(final SynchedEntityData.Builder entityData) {
|
||||
super.defineSynchedData(entityData);
|
||||
diff --git a/net/minecraft/world/entity/animal/axolotl/Axolotl.java b/net/minecraft/world/entity/animal/axolotl/Axolotl.java
|
||||
index 8704620cd9348d3c417cbc9591e03c70bf4d4f45..c10b06f8adcd59869d043e48cfe3fdb60051c3db 100644
|
||||
index 993f8195bf67d675eccef47314de0ba0f257b855..e0b9b15b2727953deb7850ed57edd7248f88c184 100644
|
||||
--- a/net/minecraft/world/entity/animal/axolotl/Axolotl.java
|
||||
+++ b/net/minecraft/world/entity/animal/axolotl/Axolotl.java
|
||||
@@ -135,6 +135,14 @@ public class Axolotl extends Animal implements Bucketable {
|
||||
@@ -134,6 +134,14 @@ public class Axolotl extends Animal implements Bucketable {
|
||||
}
|
||||
// Purpur end - Ridables
|
||||
|
||||
@@ -109,10 +109,10 @@ index 8704620cd9348d3c417cbc9591e03c70bf4d4f45..c10b06f8adcd59869d043e48cfe3fdb6
|
||||
public float getWalkTargetValue(final BlockPos pos, final LevelReader level) {
|
||||
return 0.0F;
|
||||
diff --git a/net/minecraft/world/entity/animal/bee/Bee.java b/net/minecraft/world/entity/animal/bee/Bee.java
|
||||
index 2b398421d196902c5c812126528f32fc9863b497..b22f49887219bcffe8e30fd22e9f9dd67fc371bc 100644
|
||||
index 67971c3054fd17ee75c69c6168bd74f11dca4c86..24dfd3846abcb0f4f00d9c0e58f1e5389e7db658 100644
|
||||
--- a/net/minecraft/world/entity/animal/bee/Bee.java
|
||||
+++ b/net/minecraft/world/entity/animal/bee/Bee.java
|
||||
@@ -480,6 +480,14 @@ public class Bee extends Animal implements FlyingAnimal, NeutralMob {
|
||||
@@ -479,6 +479,14 @@ public class Bee extends Animal implements FlyingAnimal, NeutralMob {
|
||||
return beehiveBlockEntity != null && beehiveBlockEntity.isFireNearby();
|
||||
}
|
||||
|
||||
@@ -128,10 +128,10 @@ index 2b398421d196902c5c812126528f32fc9863b497..b22f49887219bcffe8e30fd22e9f9dd6
|
||||
public long getPersistentAngerEndTime() {
|
||||
return this.entityData.get(DATA_ANGER_END_TIME);
|
||||
diff --git a/net/minecraft/world/entity/animal/camel/Camel.java b/net/minecraft/world/entity/animal/camel/Camel.java
|
||||
index e20cae40eb84bf01b38cf6b5249410cb7e2525a1..0b3cf5ad57350c5c7a453dc7a96891238491a41a 100644
|
||||
index fcbb743a07b691f11f14febe5a05959326999293..aee34b1ac868f0f0fc24e3ffe022d51141143c9b 100644
|
||||
--- a/net/minecraft/world/entity/animal/camel/Camel.java
|
||||
+++ b/net/minecraft/world/entity/animal/camel/Camel.java
|
||||
@@ -349,6 +349,23 @@ public class Camel extends AbstractHorse {
|
||||
@@ -348,6 +348,23 @@ public class Camel extends AbstractHorse {
|
||||
return this.dashCooldown;
|
||||
}
|
||||
|
||||
@@ -194,7 +194,7 @@ index e200b9a459c3f410d2e9affbad8ba8e37e1a1ca5..33c0b8f2c43065ea89b3f9c6a519dde2
|
||||
protected void defineSynchedData(final SynchedEntityData.Builder entityData) {
|
||||
super.defineSynchedData(entityData);
|
||||
diff --git a/net/minecraft/world/entity/animal/cow/MushroomCow.java b/net/minecraft/world/entity/animal/cow/MushroomCow.java
|
||||
index 2131ba3eb10e869ff6dad67fb6b8097a8d6f1ab6..d6ec397a14753526dd34ab3a7e69ae4be36c04a6 100644
|
||||
index 7411d6aafa9ec3b5d6305bb8c1b8d03444cf6aa2..58d37bd62fec5071fb4a0c297f6c2ef89a3d79e4 100644
|
||||
--- a/net/minecraft/world/entity/animal/cow/MushroomCow.java
|
||||
+++ b/net/minecraft/world/entity/animal/cow/MushroomCow.java
|
||||
@@ -78,6 +78,13 @@ public class MushroomCow extends AbstractCow implements Shearable {
|
||||
@@ -212,7 +212,7 @@ index 2131ba3eb10e869ff6dad67fb6b8097a8d6f1ab6..d6ec397a14753526dd34ab3a7e69ae4b
|
||||
public float getWalkTargetValue(final BlockPos pos, final LevelReader level) {
|
||||
return level.getBlockState(pos.below()).is(Blocks.MYCELIUM) ? 10.0F : level.getPathfindingCostFromLightLevels(pos);
|
||||
diff --git a/net/minecraft/world/entity/animal/dolphin/Dolphin.java b/net/minecraft/world/entity/animal/dolphin/Dolphin.java
|
||||
index 924fd56994f63deb4a8fe03f870d14fc943390e4..b2e6307ead267fa8a1acd6956c409f2bcbf28c41 100644
|
||||
index 82a56ecf76f53e72d1af67228ce7f9c74678b59f..f8e155393b0c2a69018da88556116b4eeb416d83 100644
|
||||
--- a/net/minecraft/world/entity/animal/dolphin/Dolphin.java
|
||||
+++ b/net/minecraft/world/entity/animal/dolphin/Dolphin.java
|
||||
@@ -154,6 +154,14 @@ public class Dolphin extends AgeableWaterCreature {
|
||||
@@ -231,10 +231,10 @@ index 924fd56994f63deb4a8fe03f870d14fc943390e4..b2e6307ead267fa8a1acd6956c409f2b
|
||||
public @Nullable SpawnGroupData finalizeSpawn(
|
||||
final ServerLevelAccessor level, final DifficultyInstance difficulty, final EntitySpawnReason spawnReason, final @Nullable SpawnGroupData groupData
|
||||
diff --git a/net/minecraft/world/entity/animal/equine/AbstractHorse.java b/net/minecraft/world/entity/animal/equine/AbstractHorse.java
|
||||
index 1698e519a50670990e43f33c35d5a3f648c2cf61..ad21f1725c8d10e26382c8f7a0fccb7094580082 100644
|
||||
index 59bf0106908fba34500d1e44d6a02bb27b71ffe5..8f6d6f4cc72670576e7fb0fb3cfee018fa0857d6 100644
|
||||
--- a/net/minecraft/world/entity/animal/equine/AbstractHorse.java
|
||||
+++ b/net/minecraft/world/entity/animal/equine/AbstractHorse.java
|
||||
@@ -141,6 +141,46 @@ public abstract class AbstractHorse extends Animal implements PlayerRideableJump
|
||||
@@ -140,6 +140,46 @@ public abstract class AbstractHorse extends Animal implements PlayerRideableJump
|
||||
}
|
||||
// Purpur end - Ridables
|
||||
|
||||
@@ -281,7 +281,7 @@ index 1698e519a50670990e43f33c35d5a3f648c2cf61..ad21f1725c8d10e26382c8f7a0fccb70
|
||||
@Override
|
||||
protected void registerGoals() {
|
||||
this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HorseHasRider(this)); // Purpur - Ridables
|
||||
@@ -1057,7 +1097,7 @@ public abstract class AbstractHorse extends Animal implements PlayerRideableJump
|
||||
@@ -1058,7 +1098,7 @@ public abstract class AbstractHorse extends Animal implements PlayerRideableJump
|
||||
groupData = new AgeableMob.AgeableMobGroupData(0.2F);
|
||||
}
|
||||
|
||||
@@ -347,7 +347,7 @@ index d2dc51d7a8d97db64bf87f8337b10442acc5bc47..8ba8430f41ce74736f405bfac2ef5de6
|
||||
protected void randomizeAttributes(final RandomSource random) {
|
||||
this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(generateMaxHealth(random::nextInt));
|
||||
diff --git a/net/minecraft/world/entity/animal/equine/Llama.java b/net/minecraft/world/entity/animal/equine/Llama.java
|
||||
index d1049724b127c6f6307ee370ccdd4c611ec60b03..5a62d6fcc6420878a5d612e556503f01f5084d44 100644
|
||||
index 90928f2a840493b16b34bf870fc511e74d1150ea..942f55f750b7ba0cf25429ca888a46bc4c172eb3 100644
|
||||
--- a/net/minecraft/world/entity/animal/equine/Llama.java
|
||||
+++ b/net/minecraft/world/entity/animal/equine/Llama.java
|
||||
@@ -134,6 +134,23 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob {
|
||||
@@ -403,7 +403,7 @@ index ce4c2424cd6922c03cf44cc731526775eba25220..a866b93312391142b030605e2108fe52
|
||||
public SoundEvent getAmbientSound() {
|
||||
return SoundEvents.MULE_AMBIENT;
|
||||
diff --git a/net/minecraft/world/entity/animal/equine/SkeletonHorse.java b/net/minecraft/world/entity/animal/equine/SkeletonHorse.java
|
||||
index e4ee09f1b51f80d35bd3f80f07d06093acc3bfcf..fcc9b9f884aed489ab6016d1de3dfd861781d8e5 100644
|
||||
index 8a9f46e45ce077230ec918d46f599092fbe3e851..6b12c3a1a99ce66751f8e7d65ee1f6c21ffb0833 100644
|
||||
--- a/net/minecraft/world/entity/animal/equine/SkeletonHorse.java
|
||||
+++ b/net/minecraft/world/entity/animal/equine/SkeletonHorse.java
|
||||
@@ -50,6 +50,23 @@ public class SkeletonHorse extends AbstractHorse {
|
||||
@@ -487,7 +487,7 @@ index 13857de6c4be09b7d0798d2a0fd420c705ac1d5d..ae429aec9be39d9af7da4671db15a450
|
||||
return createBaseHorseAttributes().add(Attributes.MAX_HEALTH, 25.0);
|
||||
}
|
||||
diff --git a/net/minecraft/world/entity/animal/feline/Cat.java b/net/minecraft/world/entity/animal/feline/Cat.java
|
||||
index a3075535ed8726670c67d6aba0a32a00c53a70dc..e31cf2f1c4a0a419ba378424ea0a059a0117e0a4 100644
|
||||
index 36688a571cdf35697d0cd97bee316f5474bcae73..74c271dd9d55c846ed5440ff0d9c378a06da059d 100644
|
||||
--- a/net/minecraft/world/entity/animal/feline/Cat.java
|
||||
+++ b/net/minecraft/world/entity/animal/feline/Cat.java
|
||||
@@ -120,6 +120,14 @@ public class Cat extends TamableAnimal {
|
||||
@@ -561,7 +561,7 @@ index 8d3e8575120145f572b2c1834d243bac8eb28586..26acbeff80d3a4216b69b9842381f3fa
|
||||
protected void defineSynchedData(final SynchedEntityData.Builder entityData) {
|
||||
super.defineSynchedData(entityData);
|
||||
diff --git a/net/minecraft/world/entity/animal/fish/Salmon.java b/net/minecraft/world/entity/animal/fish/Salmon.java
|
||||
index e75e66134026a93e7681befb67abb5783fde37cf..d9276ab9af526f1714d3241bbf6f9c7906adec70 100644
|
||||
index e96062cd57e1866c398418ebbb8f2443a668f480..9bce191fbc3b68a051f50e85674b8cfd42832a85 100644
|
||||
--- a/net/minecraft/world/entity/animal/fish/Salmon.java
|
||||
+++ b/net/minecraft/world/entity/animal/fish/Salmon.java
|
||||
@@ -53,6 +53,13 @@ public class Salmon extends AbstractSchoolingFish {
|
||||
@@ -579,7 +579,7 @@ index e75e66134026a93e7681befb67abb5783fde37cf..d9276ab9af526f1714d3241bbf6f9c79
|
||||
public int getMaxSchoolSize() {
|
||||
return 5;
|
||||
diff --git a/net/minecraft/world/entity/animal/fish/TropicalFish.java b/net/minecraft/world/entity/animal/fish/TropicalFish.java
|
||||
index 3d00bcbb4ac39c7d8b4bacf15d7cfe4ad5a4a706..fbe7b76aac06bb0dce7ae53dea85e947a53d1b64 100644
|
||||
index d48f8dc3e806ffe767565158bcfa17631839a61c..e9692aacca5f32c4280b16b4eabecf87c2ed5aeb 100644
|
||||
--- a/net/minecraft/world/entity/animal/fish/TropicalFish.java
|
||||
+++ b/net/minecraft/world/entity/animal/fish/TropicalFish.java
|
||||
@@ -89,6 +89,13 @@ public class TropicalFish extends AbstractSchoolingFish {
|
||||
@@ -597,10 +597,10 @@ index 3d00bcbb4ac39c7d8b4bacf15d7cfe4ad5a4a706..fbe7b76aac06bb0dce7ae53dea85e947
|
||||
return "entity.minecraft.tropical_fish.predefined." + index;
|
||||
}
|
||||
diff --git a/net/minecraft/world/entity/animal/fox/Fox.java b/net/minecraft/world/entity/animal/fox/Fox.java
|
||||
index ab45081d00a012949f43929f06e9bfcdf5b3c89a..ec4137a994005c4e7845d63d9347c0586c6f77ee 100644
|
||||
index c60343771f5490236212221e7d5f2b73dee4865c..d218a71c2475240438029ca44e86d7584ff36f73 100644
|
||||
--- a/net/minecraft/world/entity/animal/fox/Fox.java
|
||||
+++ b/net/minecraft/world/entity/animal/fox/Fox.java
|
||||
@@ -193,6 +193,14 @@ public class Fox extends Animal {
|
||||
@@ -192,6 +192,14 @@ public class Fox extends Animal {
|
||||
}
|
||||
// Purpur end - Ridables
|
||||
|
||||
@@ -616,7 +616,7 @@ index ab45081d00a012949f43929f06e9bfcdf5b3c89a..ec4137a994005c4e7845d63d9347c058
|
||||
protected void defineSynchedData(final SynchedEntityData.Builder entityData) {
|
||||
super.defineSynchedData(entityData);
|
||||
diff --git a/net/minecraft/world/entity/animal/golem/CopperGolem.java b/net/minecraft/world/entity/animal/golem/CopperGolem.java
|
||||
index dd9d71eebbd9b013ae69db7b9869be8dd30ae0ba..bc66450f8d1be97f11f8380755a9973e8ef4befa 100644
|
||||
index d842d79bbd5253a2a701a87221258751aa112c3e..00877102ad4261ecd7191e402cf4e381dd6e40b3 100644
|
||||
--- a/net/minecraft/world/entity/animal/golem/CopperGolem.java
|
||||
+++ b/net/minecraft/world/entity/animal/golem/CopperGolem.java
|
||||
@@ -134,6 +134,16 @@ public class CopperGolem extends AbstractGolem implements ContainerUser, Shearab
|
||||
@@ -637,7 +637,7 @@ index dd9d71eebbd9b013ae69db7b9869be8dd30ae0ba..bc66450f8d1be97f11f8380755a9973e
|
||||
return Mob.createMobAttributes().add(Attributes.MOVEMENT_SPEED, 0.2F).add(Attributes.STEP_HEIGHT, 1.0).add(Attributes.MAX_HEALTH, 12.0);
|
||||
}
|
||||
diff --git a/net/minecraft/world/entity/animal/golem/IronGolem.java b/net/minecraft/world/entity/animal/golem/IronGolem.java
|
||||
index b9672e22eb3655168db2f85d4a273b3604f04618..ec08c9c2ac32863807061d93ec8894bd094f7ab4 100644
|
||||
index c6e0038cb3314b4db17d307b99de65dde107d5a1..cd68a06abb509dbdbcf909d3f3e142c7a1f896cf 100644
|
||||
--- a/net/minecraft/world/entity/animal/golem/IronGolem.java
|
||||
+++ b/net/minecraft/world/entity/animal/golem/IronGolem.java
|
||||
@@ -91,6 +91,14 @@ public class IronGolem extends AbstractGolem implements NeutralMob {
|
||||
@@ -675,10 +675,10 @@ index 6875e40687bbde6aba25da7d3145eccdccea6f52..bd594838ae25f16e6e16335e06c4d981
|
||||
protected void registerGoals() {
|
||||
this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - Ridables
|
||||
diff --git a/net/minecraft/world/entity/animal/happyghast/HappyGhast.java b/net/minecraft/world/entity/animal/happyghast/HappyGhast.java
|
||||
index f1da6beccfd658d8209dbc3e52f570a476f1c95b..f7f65e0935404a2eb404e5053acb9f6acd353272 100644
|
||||
index 0ffa1ed6fe9e8aa01c91dee4cefb8b9a1273770b..7991ef3a11c7901d361fef6349aef37737a69b76 100644
|
||||
--- a/net/minecraft/world/entity/animal/happyghast/HappyGhast.java
|
||||
+++ b/net/minecraft/world/entity/animal/happyghast/HappyGhast.java
|
||||
@@ -141,6 +141,19 @@ public class HappyGhast extends Animal {
|
||||
@@ -140,6 +140,19 @@ public class HappyGhast extends Animal {
|
||||
}
|
||||
// Purpur end - Ridables
|
||||
|
||||
@@ -698,7 +698,7 @@ index f1da6beccfd658d8209dbc3e52f570a476f1c95b..f7f65e0935404a2eb404e5053acb9f6a
|
||||
@Override
|
||||
protected void ageBoundaryReached() {
|
||||
if (this.isBaby()) {
|
||||
@@ -164,7 +177,7 @@ public class HappyGhast extends Animal {
|
||||
@@ -163,7 +176,7 @@ public class HappyGhast extends Animal {
|
||||
|
||||
@Override
|
||||
protected float sanitizeScale(final float scale) {
|
||||
@@ -752,10 +752,10 @@ index c4661d5d89d1a5f4b106a9a015cdaed1976efce4..087e768c35c2c2af191c75648b278154
|
||||
return AbstractNautilus.createAttributes().add(Attributes.MOVEMENT_SPEED, 1.1F);
|
||||
}
|
||||
diff --git a/net/minecraft/world/entity/animal/panda/Panda.java b/net/minecraft/world/entity/animal/panda/Panda.java
|
||||
index d18577440823cde6f44eb653c5f23afb09ea89ac..838bc9b3f5bc3df3db16ba564222eed65215461a 100644
|
||||
index e551907cd2721fa330639aa590ef76711e7e21d6..83ec6995b5fc47872efb5039c3e24cd62da22d10 100644
|
||||
--- a/net/minecraft/world/entity/animal/panda/Panda.java
|
||||
+++ b/net/minecraft/world/entity/animal/panda/Panda.java
|
||||
@@ -137,6 +137,15 @@ public class Panda extends Animal {
|
||||
@@ -136,6 +136,15 @@ public class Panda extends Animal {
|
||||
}
|
||||
// Purpur end - Ridables
|
||||
|
||||
@@ -771,7 +771,7 @@ index d18577440823cde6f44eb653c5f23afb09ea89ac..838bc9b3f5bc3df3db16ba564222eed6
|
||||
@Override
|
||||
protected boolean canDispenserEquipIntoSlot(final EquipmentSlot slot) {
|
||||
return slot == EquipmentSlot.MAINHAND && this.canPickUpLoot();
|
||||
@@ -624,7 +633,11 @@ public class Panda extends Animal {
|
||||
@@ -623,7 +632,11 @@ public class Panda extends Animal {
|
||||
|
||||
public void setAttributes() {
|
||||
if (this.isWeak()) {
|
||||
@@ -785,7 +785,7 @@ index d18577440823cde6f44eb653c5f23afb09ea89ac..838bc9b3f5bc3df3db16ba564222eed6
|
||||
|
||||
if (this.isLazy()) {
|
||||
diff --git a/net/minecraft/world/entity/animal/parrot/Parrot.java b/net/minecraft/world/entity/animal/parrot/Parrot.java
|
||||
index 5173a05a15209972905024f9c4fa097e5a95092f..d3b9a3ac77f03e3b6b580a678283f85a19cb660e 100644
|
||||
index 0cc9e9dcdaeaee8db350b4dc4acb1e6c370aa2c3..c11c6fdc96d696a2f8c4aee96f4ddf6c4f9b9676 100644
|
||||
--- a/net/minecraft/world/entity/animal/parrot/Parrot.java
|
||||
+++ b/net/minecraft/world/entity/animal/parrot/Parrot.java
|
||||
@@ -199,6 +199,14 @@ public class Parrot extends ShoulderRidingEntity implements FlyingAnimal {
|
||||
@@ -804,7 +804,7 @@ index 5173a05a15209972905024f9c4fa097e5a95092f..d3b9a3ac77f03e3b6b580a678283f85a
|
||||
public @Nullable SpawnGroupData finalizeSpawn(
|
||||
final ServerLevelAccessor level, final DifficultyInstance difficulty, final EntitySpawnReason spawnReason, @Nullable SpawnGroupData groupData
|
||||
diff --git a/net/minecraft/world/entity/animal/pig/Pig.java b/net/minecraft/world/entity/animal/pig/Pig.java
|
||||
index 57a80fbffd74a4bc0ec9f9e65abd7e2b68ef09a6..02ed5052bd06844ec6811c4249398ba8ba8c4ea6 100644
|
||||
index ed655afebba29cccb7c15e6f15aee6478ecdaee4..7246b53d2fba7e547d41fd5db1eb487738e5b51e 100644
|
||||
--- a/net/minecraft/world/entity/animal/pig/Pig.java
|
||||
+++ b/net/minecraft/world/entity/animal/pig/Pig.java
|
||||
@@ -85,6 +85,14 @@ public class Pig extends Animal implements ItemSteerable {
|
||||
@@ -823,10 +823,10 @@ index 57a80fbffd74a4bc0ec9f9e65abd7e2b68ef09a6..02ed5052bd06844ec6811c4249398ba8
|
||||
protected void registerGoals() {
|
||||
this.goalSelector.addGoal(0, new FloatGoal(this));
|
||||
diff --git a/net/minecraft/world/entity/animal/polarbear/PolarBear.java b/net/minecraft/world/entity/animal/polarbear/PolarBear.java
|
||||
index d368954be1fc54052c29dd102e97404a46c87326..e50c934e2c9959f843aae2b2dd05a682ca5f59fc 100644
|
||||
index a7a77f9cae2f524ce7abbc694cdae7c95bef3e16..ddfc7cab1b3864fc523e0837ff4acb8454e83ac9 100644
|
||||
--- a/net/minecraft/world/entity/animal/polarbear/PolarBear.java
|
||||
+++ b/net/minecraft/world/entity/animal/polarbear/PolarBear.java
|
||||
@@ -119,6 +119,14 @@ public class PolarBear extends Animal implements NeutralMob {
|
||||
@@ -118,6 +118,14 @@ public class PolarBear extends Animal implements NeutralMob {
|
||||
}
|
||||
// Purpur end - Ridables
|
||||
|
||||
@@ -842,7 +842,7 @@ index d368954be1fc54052c29dd102e97404a46c87326..e50c934e2c9959f843aae2b2dd05a682
|
||||
public @Nullable AgeableMob getBreedOffspring(final ServerLevel level, final AgeableMob partner) {
|
||||
return EntityType.POLAR_BEAR.create(level, EntitySpawnReason.BREEDING);
|
||||
diff --git a/net/minecraft/world/entity/animal/rabbit/Rabbit.java b/net/minecraft/world/entity/animal/rabbit/Rabbit.java
|
||||
index fa6fd57be6e4a36e701eb61634440a79b47bbd94..bf643b9e6929890f061ac2c44b196460234095c4 100644
|
||||
index 0053a1e7ed9b577128241e0c72f59d66eb532726..4aa18f0ce6f07f479f1d856c9cef9fa5d6329138 100644
|
||||
--- a/net/minecraft/world/entity/animal/rabbit/Rabbit.java
|
||||
+++ b/net/minecraft/world/entity/animal/rabbit/Rabbit.java
|
||||
@@ -162,6 +162,14 @@ public class Rabbit extends Animal {
|
||||
@@ -880,7 +880,7 @@ index 08cd6e675107bf622b634c1f0e2cd53e33ef3569..eb919dc63d950af08448b75559467ec8
|
||||
protected void registerGoals() {
|
||||
this.eatBlockGoal = new EatBlockGoal(this);
|
||||
diff --git a/net/minecraft/world/entity/animal/sniffer/Sniffer.java b/net/minecraft/world/entity/animal/sniffer/Sniffer.java
|
||||
index 0f6f2b3818001ee786c941fdffccec80fb966e52..7335e46f249b9a88ca0401493636f6e06c0e196d 100644
|
||||
index b980ed12f7f20d89c6bd01d2c94cb2cc15f5c561..73a1ba04a6a3ef0d0aba3301b6c1dfefeacb4df6 100644
|
||||
--- a/net/minecraft/world/entity/animal/sniffer/Sniffer.java
|
||||
+++ b/net/minecraft/world/entity/animal/sniffer/Sniffer.java
|
||||
@@ -111,6 +111,14 @@ public class Sniffer extends Animal {
|
||||
@@ -917,7 +917,7 @@ index 51a0771819abfdde5043eaeca62b0ce45c40039e..cb3d0bd838473af87af74c7d1bab3859
|
||||
protected ParticleOptions getInkParticle() {
|
||||
return ParticleTypes.GLOW_SQUID_INK;
|
||||
diff --git a/net/minecraft/world/entity/animal/squid/Squid.java b/net/minecraft/world/entity/animal/squid/Squid.java
|
||||
index 0854e0494f704e97e80581b80bf34df72786d1d9..49ef7f4004a2f82df2d8cbf0d0473a5d84588fac 100644
|
||||
index 76c9c4cb6f7567946bc90e2d59990d5aabd8e4d9..da8e8d817f959ffcbc0a84a40af854ecfc939ef2 100644
|
||||
--- a/net/minecraft/world/entity/animal/squid/Squid.java
|
||||
+++ b/net/minecraft/world/entity/animal/squid/Squid.java
|
||||
@@ -96,6 +96,14 @@ public class Squid extends AgeableWaterCreature {
|
||||
@@ -955,10 +955,10 @@ index 53fc1012d46e20b623246cecae87b3feb1a0fda6..2dfcf0c9f8eb762d1683d2841a05219c
|
||||
this.homePos = pos;
|
||||
}
|
||||
diff --git a/net/minecraft/world/entity/animal/wolf/Wolf.java b/net/minecraft/world/entity/animal/wolf/Wolf.java
|
||||
index a9349f047e6253b609b59a7590c0082a257bb9a5..d457bd20c8d644d60795776b4c19a88a8b1ffd09 100644
|
||||
index 17c3d76f0d606722dbc657250a85de9306838356..ab9e4583dd29e692a3632d23c479539a3f19e042 100644
|
||||
--- a/net/minecraft/world/entity/animal/wolf/Wolf.java
|
||||
+++ b/net/minecraft/world/entity/animal/wolf/Wolf.java
|
||||
@@ -205,6 +205,14 @@ public class Wolf extends TamableAnimal implements NeutralMob {
|
||||
@@ -204,6 +204,14 @@ public class Wolf extends TamableAnimal implements NeutralMob {
|
||||
}
|
||||
// Purpur end - Ridables
|
||||
|
||||
@@ -974,7 +974,7 @@ index a9349f047e6253b609b59a7590c0082a257bb9a5..d457bd20c8d644d60795776b4c19a88a
|
||||
protected void registerGoals() {
|
||||
this.goalSelector.addGoal(1, new FloatGoal(this));
|
||||
diff --git a/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java b/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java
|
||||
index 18b909626ca4b8cdad094671f7429acfa2c4888d..24e765b67ee7730b4e1f74a8f5de897eaf479f01 100644
|
||||
index bede0e9ce5b7c73d589511b71ad2a5f9e628eebc..6e2afa71d0d2da4cca868f617d29b3cc9071553d 100644
|
||||
--- a/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java
|
||||
+++ b/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java
|
||||
@@ -163,6 +163,13 @@ public class EnderDragon extends Mob implements Enemy {
|
||||
@@ -991,7 +991,7 @@ index 18b909626ca4b8cdad094671f7429acfa2c4888d..24e765b67ee7730b4e1f74a8f5de897e
|
||||
public static AttributeSupplier.Builder createAttributes() {
|
||||
return Mob.createMobAttributes().add(Attributes.MAX_HEALTH, 200.0).add(Attributes.CAMERA_DISTANCE, 16.0);
|
||||
}
|
||||
@@ -1060,7 +1067,7 @@ public class EnderDragon extends Mob implements Enemy {
|
||||
@@ -1061,7 +1068,7 @@ public class EnderDragon extends Mob implements Enemy {
|
||||
|
||||
@Override
|
||||
protected float sanitizeScale(final float scale) {
|
||||
@@ -1001,10 +1001,10 @@ index 18b909626ca4b8cdad094671f7429acfa2c4888d..24e765b67ee7730b4e1f74a8f5de897e
|
||||
|
||||
// CraftBukkit start - SPIGOT-2420: Special case, the ender dragon drops 12000 xp for the first kill and 500 xp for every other kill and this over time.
|
||||
diff --git a/net/minecraft/world/entity/boss/wither/WitherBoss.java b/net/minecraft/world/entity/boss/wither/WitherBoss.java
|
||||
index 1f85cad7ac4c7cd2133142e74d51c2ad84fd4427..fb04a6d53cc12038f4c55db84278632582c698fc 100644
|
||||
index 852a604d8c06e9871da4c28d60b44a5869258011..8b2716294b18da6fae981e088b8ddb1f2ffcfb2e 100644
|
||||
--- a/net/minecraft/world/entity/boss/wither/WitherBoss.java
|
||||
+++ b/net/minecraft/world/entity/boss/wither/WitherBoss.java
|
||||
@@ -214,6 +214,14 @@ public class WitherBoss extends Monster implements RangedAttackMob {
|
||||
@@ -213,6 +213,14 @@ public class WitherBoss extends Monster implements RangedAttackMob {
|
||||
}
|
||||
// Purpur end - Ridables
|
||||
|
||||
@@ -1019,7 +1019,7 @@ index 1f85cad7ac4c7cd2133142e74d51c2ad84fd4427..fb04a6d53cc12038f4c55db842786325
|
||||
@Override
|
||||
protected PathNavigation createNavigation(final Level level) {
|
||||
FlyingPathNavigation flyingPathNavigation = new FlyingPathNavigation(this, level);
|
||||
@@ -436,7 +444,7 @@ public class WitherBoss extends Monster implements RangedAttackMob {
|
||||
@@ -435,7 +443,7 @@ public class WitherBoss extends Monster implements RangedAttackMob {
|
||||
|
||||
this.setInvulnerableTicks(newCount);
|
||||
if (this.tickCount % 10 == 0) {
|
||||
@@ -1048,7 +1048,7 @@ index c1acc0a648493ec33ef4fc4a48b52fe0b3dc04b2..b553c6dd60bd23fba7ee3df9886561fc
|
||||
protected void registerGoals() {
|
||||
this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - Ridables
|
||||
diff --git a/net/minecraft/world/entity/monster/Creeper.java b/net/minecraft/world/entity/monster/Creeper.java
|
||||
index 654e923ce9fb8a725077acc8e9c9b8c7658e23f9..73b0efd692205f56862c7287d7222efebe3faf73 100644
|
||||
index e5f7d276c083cdb78d2f420c03be1b08115d5597..01c722932aaed2221badaa6231d8a20d005b087b 100644
|
||||
--- a/net/minecraft/world/entity/monster/Creeper.java
|
||||
+++ b/net/minecraft/world/entity/monster/Creeper.java
|
||||
@@ -137,6 +137,14 @@ public class Creeper extends Monster {
|
||||
@@ -1086,7 +1086,7 @@ index b86f600b1101fe1fc9f7cac5cc47c3f048e0f885..ffcfe02c51f6df1bd238c821a8d6535f
|
||||
return Guardian.createAttributes().add(Attributes.MOVEMENT_SPEED, 0.3F).add(Attributes.ATTACK_DAMAGE, 8.0).add(Attributes.MAX_HEALTH, 80.0);
|
||||
}
|
||||
diff --git a/net/minecraft/world/entity/monster/EnderMan.java b/net/minecraft/world/entity/monster/EnderMan.java
|
||||
index 36aa44008e98e3a717cbf93d29f3e8780219dc6e..30450300bdf9e4b5ef4293e9c371484ba6aabebc 100644
|
||||
index 8b958dbdec8e68690525d345bd2f1038b1466ef9..e9b28ab9af835e8394855f08edb3cc463022d6f9 100644
|
||||
--- a/net/minecraft/world/entity/monster/EnderMan.java
|
||||
+++ b/net/minecraft/world/entity/monster/EnderMan.java
|
||||
@@ -106,6 +106,14 @@ public class EnderMan extends Monster implements NeutralMob {
|
||||
@@ -1105,7 +1105,7 @@ index 36aa44008e98e3a717cbf93d29f3e8780219dc6e..30450300bdf9e4b5ef4293e9c371484b
|
||||
protected void registerGoals() {
|
||||
this.goalSelector.addGoal(0, new FloatGoal(this));
|
||||
diff --git a/net/minecraft/world/entity/monster/Endermite.java b/net/minecraft/world/entity/monster/Endermite.java
|
||||
index c66b18f8f71ecf2c1d91b46eb8c9c0b5cb865c06..040f0b59d93b1b94495253f3286bdba123c22ef4 100644
|
||||
index 8405358d2221d76bc0949047fcc6f17fdfc99dfc..c10982945974171e478690d2db5080551cb29cdb 100644
|
||||
--- a/net/minecraft/world/entity/monster/Endermite.java
|
||||
+++ b/net/minecraft/world/entity/monster/Endermite.java
|
||||
@@ -64,6 +64,14 @@ public class Endermite extends Monster {
|
||||
@@ -1124,7 +1124,7 @@ index c66b18f8f71ecf2c1d91b46eb8c9c0b5cb865c06..040f0b59d93b1b94495253f3286bdba1
|
||||
protected void registerGoals() {
|
||||
this.goalSelector.addGoal(1, new FloatGoal(this));
|
||||
diff --git a/net/minecraft/world/entity/monster/Ghast.java b/net/minecraft/world/entity/monster/Ghast.java
|
||||
index 0e056fbb4580e562928150e5002a44df001767a0..4a786f17a7a8e6175775c4705445e9dff1b2aa7c 100644
|
||||
index 0d40b789dc426c42aca47c01b4db57fb2b282f0d..5ebb6dc59ee8a845a983de207e763e1df103a4f7 100644
|
||||
--- a/net/minecraft/world/entity/monster/Ghast.java
|
||||
+++ b/net/minecraft/world/entity/monster/Ghast.java
|
||||
@@ -75,6 +75,14 @@ public class Ghast extends Mob implements Enemy {
|
||||
@@ -1164,7 +1164,7 @@ index 1b7a75a2be45928093382fa2f2da079ffc5d190d..7b6952f13e18548d0e71035d6cd6cfb2
|
||||
return Monster.createMonsterAttributes()
|
||||
.add(Attributes.MAX_HEALTH, 100.0)
|
||||
diff --git a/net/minecraft/world/entity/monster/Guardian.java b/net/minecraft/world/entity/monster/Guardian.java
|
||||
index 032b92678f2ac0d21df751d19009f11861c1efca..d5880eebf3c64dab03234ac55110645541413c4a 100644
|
||||
index 6ad546f033919c6f0ba1091222a7af0f365fabb0..2616aab01c6c43fcc259c42c9d5c43fc73794caf 100644
|
||||
--- a/net/minecraft/world/entity/monster/Guardian.java
|
||||
+++ b/net/minecraft/world/entity/monster/Guardian.java
|
||||
@@ -89,6 +89,14 @@ public class Guardian extends Monster {
|
||||
@@ -1216,10 +1216,10 @@ index 600da11f46673177a0ff1f56c93a60d94df40025..d40a4daeec1500f2d9865022ee6e3c38
|
||||
return Monster.createMonsterAttributes().add(Attributes.MOVEMENT_SPEED, 0.2F);
|
||||
}
|
||||
diff --git a/net/minecraft/world/entity/monster/Phantom.java b/net/minecraft/world/entity/monster/Phantom.java
|
||||
index 582890eb5a5b4757ad67bc2426cf3db9a8a335af..a22f245acca8e5ea3334708a27ed5029e472c205 100644
|
||||
index 961a874d3eeee40d4c45ae511412ac0167ae54ac..194b398a85550edc752b54636079e16a4de27ba7 100644
|
||||
--- a/net/minecraft/world/entity/monster/Phantom.java
|
||||
+++ b/net/minecraft/world/entity/monster/Phantom.java
|
||||
@@ -141,7 +141,10 @@ public class Phantom extends Mob implements Enemy {
|
||||
@@ -140,7 +140,10 @@ public class Phantom extends Mob implements Enemy {
|
||||
private void updatePhantomSizeInfo() {
|
||||
this.refreshDimensions();
|
||||
if (level().purpurConfig.phantomFlamesOnSwoop && attackPhase == AttackPhase.SWOOP) shoot(); // Purpur - Ridables - Phantom flames on swoop
|
||||
@@ -1231,7 +1231,7 @@ index 582890eb5a5b4757ad67bc2426cf3db9a8a335af..a22f245acca8e5ea3334708a27ed5029
|
||||
}
|
||||
|
||||
public int getPhantomSize() {
|
||||
@@ -161,6 +164,23 @@ public class Phantom extends Mob implements Enemy {
|
||||
@@ -160,6 +163,23 @@ public class Phantom extends Mob implements Enemy {
|
||||
return this.getId() * 3;
|
||||
}
|
||||
|
||||
@@ -1275,10 +1275,10 @@ index 1d02a5a037cb50844419ef41227be2427cdff4ca..3e2fa1f4e9c820af76ef5f4354ca66fa
|
||||
protected void registerGoals() {
|
||||
super.registerGoals();
|
||||
diff --git a/net/minecraft/world/entity/monster/Shulker.java b/net/minecraft/world/entity/monster/Shulker.java
|
||||
index cdcc2e23259bc259ed2edc7e2eff8ddc4636a5bb..2ba213e85002f7c76e3dbd8b386ebbb0b11fa86b 100644
|
||||
index 746dfa496dc6cde62ab3c890aa6fbdbe68086ea9..b07dd45cf3ee07d8e51aa9473ee22fab577809c6 100644
|
||||
--- a/net/minecraft/world/entity/monster/Shulker.java
|
||||
+++ b/net/minecraft/world/entity/monster/Shulker.java
|
||||
@@ -127,6 +127,14 @@ public class Shulker extends AbstractGolem implements Enemy {
|
||||
@@ -126,6 +126,14 @@ public class Shulker extends AbstractGolem implements Enemy {
|
||||
}
|
||||
// Purpur end - Ridables
|
||||
|
||||
@@ -1293,7 +1293,7 @@ index cdcc2e23259bc259ed2edc7e2eff8ddc4636a5bb..2ba213e85002f7c76e3dbd8b386ebbb0
|
||||
@Override
|
||||
protected void registerGoals() {
|
||||
this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - Ridables
|
||||
@@ -603,7 +611,7 @@ public class Shulker extends AbstractGolem implements Enemy {
|
||||
@@ -602,7 +610,7 @@ public class Shulker extends AbstractGolem implements Enemy {
|
||||
|
||||
@Override
|
||||
protected float sanitizeScale(final float scale) {
|
||||
@@ -1303,7 +1303,7 @@ index cdcc2e23259bc259ed2edc7e2eff8ddc4636a5bb..2ba213e85002f7c76e3dbd8b386ebbb0
|
||||
|
||||
private void setVariant(final Optional<DyeColor> color) {
|
||||
diff --git a/net/minecraft/world/entity/monster/Silverfish.java b/net/minecraft/world/entity/monster/Silverfish.java
|
||||
index 68080332052f1e18d7be7d5c4c27347f3d57ddcc..355475b12c6f3fcc9fe88ca63ab88cabac9d6fb1 100644
|
||||
index 4bda4d98e94f906cd86eafd412dd393b534ff8df..6037500c084e709110dfe512f110b505111b6d71 100644
|
||||
--- a/net/minecraft/world/entity/monster/Silverfish.java
|
||||
+++ b/net/minecraft/world/entity/monster/Silverfish.java
|
||||
@@ -55,6 +55,16 @@ public class Silverfish extends Monster {
|
||||
@@ -1380,7 +1380,7 @@ index 47c6dfee0254c4ccd62ed4ff584a78234284a815..f541ccef625ab0d560f4781c28ad7ae3
|
||||
this.setHealth(this.getMaxHealth());
|
||||
}
|
||||
diff --git a/net/minecraft/world/entity/monster/Strider.java b/net/minecraft/world/entity/monster/Strider.java
|
||||
index 76180ed355b0d3cb52bfebc7cbf32b91486d6f5b..f8134a362a2faa49beccb840ea8a899aa4681638 100644
|
||||
index f2ef42ce208c2bceb01f9a34bd3a58ac29beb6d9..47a5ce453ea7b291e5cca12c7cb86ccba9d55cc8 100644
|
||||
--- a/net/minecraft/world/entity/monster/Strider.java
|
||||
+++ b/net/minecraft/world/entity/monster/Strider.java
|
||||
@@ -110,6 +110,14 @@ public class Strider extends Animal implements ItemSteerable {
|
||||
@@ -1399,10 +1399,10 @@ index 76180ed355b0d3cb52bfebc7cbf32b91486d6f5b..f8134a362a2faa49beccb840ea8a899a
|
||||
final EntityType<Strider> ignoredType,
|
||||
final LevelAccessor level,
|
||||
diff --git a/net/minecraft/world/entity/monster/Vex.java b/net/minecraft/world/entity/monster/Vex.java
|
||||
index 884ac753ab4b496429c4cf808f173aa4bdbf0ea9..29e9a0deb5aa99800dc6554ad6bba36bbe6dd80e 100644
|
||||
index 0621c1a46c392b8fcf5235f7483d0d8a0ac598ed..4b5aade3de8ff29943b58741db5e310851a33561 100644
|
||||
--- a/net/minecraft/world/entity/monster/Vex.java
|
||||
+++ b/net/minecraft/world/entity/monster/Vex.java
|
||||
@@ -103,6 +103,14 @@ public class Vex extends Monster implements TraceableEntity {
|
||||
@@ -102,6 +102,14 @@ public class Vex extends Monster implements TraceableEntity {
|
||||
}
|
||||
// Purpur end - Ridables
|
||||
|
||||
@@ -1456,10 +1456,10 @@ index 1a5e3a38671602e097e1e7f00d8f80e46b1596a0..4d4593f89e20e8e72a979cc2dee54566
|
||||
protected Brain<Zoglin> makeBrain(final Brain.Packed packedBrain) {
|
||||
return BRAIN_PROVIDER.makeBrain(this, packedBrain);
|
||||
diff --git a/net/minecraft/world/entity/monster/creaking/Creaking.java b/net/minecraft/world/entity/monster/creaking/Creaking.java
|
||||
index d7a2e2a660d9844e159ca196d155ed76d277040d..c4f29fac9e5c636248e22345c61fb89b45b9eefd 100644
|
||||
index fdbf9b64871c5cdb7ed9fa56c669bd77d1a19ac2..ca64ff27b53ba5d3e9b06311757a0ff3baa8ca6b 100644
|
||||
--- a/net/minecraft/world/entity/monster/creaking/Creaking.java
|
||||
+++ b/net/minecraft/world/entity/monster/creaking/Creaking.java
|
||||
@@ -130,6 +130,14 @@ public class Creaking extends Monster {
|
||||
@@ -129,6 +129,14 @@ public class Creaking extends Monster {
|
||||
}
|
||||
// Purpur end - Ridables
|
||||
|
||||
@@ -1494,10 +1494,10 @@ index 7ba62badc9b832bdedbec5984421abfee242fa16..352139672f2cf1a7d624db4cc5bdef3a
|
||||
public void setTimeInOverworld(final int timeInOverworld) {
|
||||
this.timeInOverworld = timeInOverworld;
|
||||
diff --git a/net/minecraft/world/entity/monster/illager/Evoker.java b/net/minecraft/world/entity/monster/illager/Evoker.java
|
||||
index f1ded053c1ff4cc45496b61cf9e010e3632674cd..212c74328b1f2c4bb8753787f70246249ab5fe75 100644
|
||||
index 2d8654f1b16ee3177466dc21aff7c2bdbce310a7..d41c3efa257f82981fbbabd527c4e748f448bfa9 100644
|
||||
--- a/net/minecraft/world/entity/monster/illager/Evoker.java
|
||||
+++ b/net/minecraft/world/entity/monster/illager/Evoker.java
|
||||
@@ -67,6 +67,14 @@ public class Evoker extends SpellcasterIllager {
|
||||
@@ -66,6 +66,14 @@ public class Evoker extends SpellcasterIllager {
|
||||
}
|
||||
// Purpur end - Ridables
|
||||
|
||||
@@ -1513,10 +1513,10 @@ index f1ded053c1ff4cc45496b61cf9e010e3632674cd..212c74328b1f2c4bb8753787f7024624
|
||||
protected void registerGoals() {
|
||||
super.registerGoals();
|
||||
diff --git a/net/minecraft/world/entity/monster/illager/Illusioner.java b/net/minecraft/world/entity/monster/illager/Illusioner.java
|
||||
index 6a9f25c465a2b54969d7ec3b658355f485f36722..bc19b4c293a4101abd559c61c59021e076420b32 100644
|
||||
index 9ea4745eb0d72c25ac5b89a6bfa5ba2846740f07..0150ebdcbb681bcf8128eec34fd6e3fbfb85a79f 100644
|
||||
--- a/net/minecraft/world/entity/monster/illager/Illusioner.java
|
||||
+++ b/net/minecraft/world/entity/monster/illager/Illusioner.java
|
||||
@@ -77,6 +77,16 @@ public class Illusioner extends SpellcasterIllager implements RangedAttackMob {
|
||||
@@ -76,6 +76,16 @@ public class Illusioner extends SpellcasterIllager implements RangedAttackMob {
|
||||
}
|
||||
// Purpur end - Ridables
|
||||
|
||||
@@ -1572,7 +1572,7 @@ index c3164a33fd8010e1920eead11c482641f17b3a65..865395b9ceddfaac4fc88701878a1cf3
|
||||
protected void registerGoals() {
|
||||
super.registerGoals();
|
||||
diff --git a/net/minecraft/world/entity/monster/piglin/Piglin.java b/net/minecraft/world/entity/monster/piglin/Piglin.java
|
||||
index f53cf55c490585595381c184e6dced8d9dcc0439..0d0a86b5c485a60d0e85b3acc6f0cc01ce6c0bfe 100644
|
||||
index f617f3cbd41e9b60faf1489dd32972c6a2467fe1..17ce12d23ec9e1e03c02755711dfecb6d207af61 100644
|
||||
--- a/net/minecraft/world/entity/monster/piglin/Piglin.java
|
||||
+++ b/net/minecraft/world/entity/monster/piglin/Piglin.java
|
||||
@@ -125,6 +125,14 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento
|
||||
@@ -1665,7 +1665,7 @@ index 1d706fe3bca726a4e606232039beeadedf75b499..ce9364040d6e856fd1fa42baa75b4030
|
||||
final EntityType<Stray> type, final ServerLevelAccessor level, final EntitySpawnReason spawnReason, final BlockPos pos, final RandomSource random
|
||||
) {
|
||||
diff --git a/net/minecraft/world/entity/monster/skeleton/WitherSkeleton.java b/net/minecraft/world/entity/monster/skeleton/WitherSkeleton.java
|
||||
index fc4ed0855a00a90cb7232ac9e28510b09163a74d..024b6d01eaf36ec6c9a85da669cc6bd0a4a6fc90 100644
|
||||
index 3651c21dc87a76ad4aa268a2de6686016b589e6c..0d370f992e5ef601d8032230c927164d760a95e1 100644
|
||||
--- a/net/minecraft/world/entity/monster/skeleton/WitherSkeleton.java
|
||||
+++ b/net/minecraft/world/entity/monster/skeleton/WitherSkeleton.java
|
||||
@@ -51,6 +51,14 @@ public class WitherSkeleton extends AbstractSkeleton {
|
||||
@@ -1722,7 +1722,7 @@ index 546561f6b9960de22d84468a317c65f3cf406b29..8834ecb96e3a6ec28f8700b23971d001
|
||||
protected void registerGoals() {
|
||||
this.goalSelector.addGoal(1, new FloatGoal(this));
|
||||
diff --git a/net/minecraft/world/entity/monster/zombie/Drowned.java b/net/minecraft/world/entity/monster/zombie/Drowned.java
|
||||
index 4b033392e1ba25dbcfd7710d3a8bfbc040d42938..573abf9eae9f5492e4231d663814352f7e046fe2 100644
|
||||
index 643cf630000cd389ff7ae073a1850f2ae3f4a458..36184895787abaf54072fbae6ade286076b6f3c8 100644
|
||||
--- a/net/minecraft/world/entity/monster/zombie/Drowned.java
|
||||
+++ b/net/minecraft/world/entity/monster/zombie/Drowned.java
|
||||
@@ -103,6 +103,19 @@ public class Drowned extends Zombie implements RangedAttackMob {
|
||||
@@ -1769,10 +1769,10 @@ index dfb43d27865674f4f13050682eda38afe2731f00..1c985585a2da43e59bb5b9ebd742e1e3
|
||||
public boolean isSunSensitive() {
|
||||
return false;
|
||||
diff --git a/net/minecraft/world/entity/monster/zombie/Zombie.java b/net/minecraft/world/entity/monster/zombie/Zombie.java
|
||||
index e76895db48b00150a749a6e3d1fb2807dc9852bd..1fbebd0cd04182679400ef3c33bf0730c01bc645 100644
|
||||
index 5d86cfd5c5d679368ddebf1afd7e32702b6e34a9..875993036ebd0f8a08d28f0e04f0c82b294e3ff5 100644
|
||||
--- a/net/minecraft/world/entity/monster/zombie/Zombie.java
|
||||
+++ b/net/minecraft/world/entity/monster/zombie/Zombie.java
|
||||
@@ -130,6 +130,14 @@ public class Zombie extends Monster {
|
||||
@@ -129,6 +129,14 @@ public class Zombie extends Monster {
|
||||
}
|
||||
// Purpur end - Ridables
|
||||
|
||||
@@ -1787,7 +1787,7 @@ index e76895db48b00150a749a6e3d1fb2807dc9852bd..1fbebd0cd04182679400ef3c33bf0730
|
||||
@Override
|
||||
protected void registerGoals() {
|
||||
this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - Ridables
|
||||
@@ -637,7 +645,7 @@ public class Zombie extends Monster {
|
||||
@@ -634,7 +642,7 @@ public class Zombie extends Monster {
|
||||
}
|
||||
|
||||
protected void randomizeReinforcementsChance() {
|
||||
@@ -1848,7 +1848,7 @@ index eb3ec4314603f61a041740d5b5e52165dac6ebc6..b6c14d7c5fbe7f37d4d5b865aae60d4a
|
||||
|
||||
@Override
|
||||
diff --git a/net/minecraft/world/entity/npc/villager/Villager.java b/net/minecraft/world/entity/npc/villager/Villager.java
|
||||
index af194ac19c110b9a69967631ca189494a166b55b..80f5197c4b33d75ee4d3791db22ed5e43f5c2a65 100644
|
||||
index 627461178e2ab4f59699e04b16d8d0f337a0daba..33b219e4422d22bb88aa17841c0380398e9c149b 100644
|
||||
--- a/net/minecraft/world/entity/npc/villager/Villager.java
|
||||
+++ b/net/minecraft/world/entity/npc/villager/Villager.java
|
||||
@@ -274,6 +274,14 @@ public class Villager extends AbstractVillager implements VillagerDataHolder, Re
|
||||
@@ -1867,10 +1867,10 @@ index af194ac19c110b9a69967631ca189494a166b55b..80f5197c4b33d75ee4d3791db22ed5e4
|
||||
public Brain<Villager> getBrain() {
|
||||
return (Brain<Villager>) super.getBrain();
|
||||
diff --git a/net/minecraft/world/entity/npc/wanderingtrader/WanderingTrader.java b/net/minecraft/world/entity/npc/wanderingtrader/WanderingTrader.java
|
||||
index 2d0203b256080c3779331ff686714ae491d7b3ec..848aeba87bd220d7241c5adeba26fbd6591dbbae 100644
|
||||
index 4c35ca3877b88b13a1919d0625e5055b4554057f..f93fc5710e6c95b1c7782ff1024e52bee9fb6102 100644
|
||||
--- a/net/minecraft/world/entity/npc/wanderingtrader/WanderingTrader.java
|
||||
+++ b/net/minecraft/world/entity/npc/wanderingtrader/WanderingTrader.java
|
||||
@@ -85,6 +85,13 @@ public class WanderingTrader extends AbstractVillager implements Consumable.Over
|
||||
@@ -84,6 +84,13 @@ public class WanderingTrader extends AbstractVillager implements Consumable.Over
|
||||
}
|
||||
// Purpur end - Ridables
|
||||
|
||||
|
||||
@@ -5,10 +5,10 @@ Subject: [PATCH] Barrels and enderchests 6 rows
|
||||
|
||||
|
||||
diff --git a/net/minecraft/server/players/PlayerList.java b/net/minecraft/server/players/PlayerList.java
|
||||
index 7c0382f7cb42f448e947001542b7f40f11b018e9..341021c3952b89b6e234ce777aa37856eea58ff8 100644
|
||||
index 5da9ae5617568aaadfe2bf90e3a358d271e0c2c2..e33f57caf9640e891b87a0e9bdcd5a44911bec73 100644
|
||||
--- a/net/minecraft/server/players/PlayerList.java
|
||||
+++ b/net/minecraft/server/players/PlayerList.java
|
||||
@@ -888,6 +888,27 @@ public abstract class PlayerList {
|
||||
@@ -885,6 +885,27 @@ public abstract class PlayerList {
|
||||
player.getBukkitEntity().recalculatePermissions(); // CraftBukkit
|
||||
this.server.getCommands().sendCommands(player);
|
||||
} // Paper - Add sendOpLevel API
|
||||
@@ -37,10 +37,10 @@ index 7c0382f7cb42f448e947001542b7f40f11b018e9..341021c3952b89b6e234ce777aa37856
|
||||
|
||||
// Paper start - whitelist verify event / login event
|
||||
diff --git a/net/minecraft/world/entity/player/Player.java b/net/minecraft/world/entity/player/Player.java
|
||||
index 68688267947f19154a220fc4bea828232d08c313..fbf8d50b0e757b329818d868d86d4e8c4088ec07 100644
|
||||
index 3b0a0525cdca3ea5b91834e04b42696a7cedde10..4d80fd91a1f610e5af0ad258f94dc16f2f77ef0d 100644
|
||||
--- a/net/minecraft/world/entity/player/Player.java
|
||||
+++ b/net/minecraft/world/entity/player/Player.java
|
||||
@@ -176,6 +176,7 @@ public abstract class Player extends Avatar implements ContainerUser {
|
||||
@@ -175,6 +175,7 @@ public abstract class Player extends Avatar implements ContainerUser {
|
||||
public net.kyori.adventure.util.TriState flyingFallDamage = net.kyori.adventure.util.TriState.NOT_SET; // Paper - flying fall damage
|
||||
public int burpDelay = 0; // Purpur - Burp delay
|
||||
public boolean canPortalInstant = false; // Purpur - Add portal permission bypass
|
||||
@@ -137,18 +137,18 @@ index 4df3a32faf85595372f4b250482d852c985ea3ab..33c4c2cc8b488df5276d21e0f4e29cc0
|
||||
if (!itemStack.isEmpty()) {
|
||||
output.add(new ItemStackWithSlot(i, itemStack));
|
||||
diff --git a/net/minecraft/world/level/block/EnderChestBlock.java b/net/minecraft/world/level/block/EnderChestBlock.java
|
||||
index 24a2c411da0ebbb7f97d621bb76ff686621f9aae..7ba9e8f6414246b589ff423fac63f80505326505 100644
|
||||
index f70a729ab3678fd22d0229bc15d289ddc49b9d01..6a1ea62c737eba6ea30605be89255fb6c221c204 100644
|
||||
--- a/net/minecraft/world/level/block/EnderChestBlock.java
|
||||
+++ b/net/minecraft/world/level/block/EnderChestBlock.java
|
||||
@@ -88,7 +88,7 @@ public class EnderChestBlock extends AbstractChestBlock<EnderChestBlockEntity> i
|
||||
// Paper start - Fix InventoryOpenEvent cancellation - moved up;
|
||||
container.setActiveChest(enderChest); // Needs to happen before ChestMenu.threeRows as it is required for opening animations
|
||||
if (level instanceof ServerLevel serverLevel && player.openMenu(
|
||||
- new SimpleMenuProvider((containerId, inventory, p) -> ChestMenu.threeRows(containerId, inventory, container), CONTAINER_TITLE)
|
||||
+ new SimpleMenuProvider((containerId, inventory, p) -> org.purpurmc.purpur.PurpurConfig.enderChestSixRows ? getEnderChestSixRows(containerId, inventory, player, container) : ChestMenu.threeRows(containerId, inventory, container), CONTAINER_TITLE) // Purpur - Barrels and enderchests 6 rows
|
||||
).isPresent()) {
|
||||
// Paper end - Fix InventoryOpenEvent cancellation - moved up;
|
||||
player.awardStat(Stats.OPEN_ENDERCHEST);
|
||||
@@ -89,7 +89,7 @@ public class EnderChestBlock extends AbstractChestBlock<EnderChestBlockEntity> i
|
||||
// Paper start - Fix InventoryOpenEvent cancellation - moved up;
|
||||
container.setActiveChest(enderChest); // Needs to happen before ChestMenu.threeRows as it is required for opening animations
|
||||
if (level instanceof ServerLevel serverLevel && player.openMenu(
|
||||
- new SimpleMenuProvider((containerId, inventory, p) -> ChestMenu.threeRows(containerId, inventory, container), CONTAINER_TITLE)
|
||||
+ new SimpleMenuProvider((containerId, inventory, p) -> org.purpurmc.purpur.PurpurConfig.enderChestSixRows ? getEnderChestSixRows(containerId, inventory, player, container) : ChestMenu.threeRows(containerId, inventory, container), CONTAINER_TITLE) // Purpur - Barrels and enderchests 6 rows
|
||||
).isPresent()) {
|
||||
// Paper end - Fix InventoryOpenEvent cancellation - moved up;
|
||||
player.awardStat(Stats.OPEN_ENDERCHEST);
|
||||
@@ -102,6 +102,35 @@ public class EnderChestBlock extends AbstractChestBlock<EnderChestBlockEntity> i
|
||||
}
|
||||
}
|
||||
@@ -186,10 +186,10 @@ index 24a2c411da0ebbb7f97d621bb76ff686621f9aae..7ba9e8f6414246b589ff423fac63f805
|
||||
public BlockEntity newBlockEntity(final BlockPos worldPosition, final BlockState blockState) {
|
||||
return new EnderChestBlockEntity(worldPosition, blockState);
|
||||
diff --git a/net/minecraft/world/level/block/entity/BarrelBlockEntity.java b/net/minecraft/world/level/block/entity/BarrelBlockEntity.java
|
||||
index da5fdf77dd26d97c8b92bac9a6af8d922c31eb9c..c788746268d7317d8d4a7220fa9c71f5d04eedd6 100644
|
||||
index 5ba46020b47edfc886ecd5c33483ebb0fa57e5dc..b62a024d2ba1d5d09c81c5060e4eb1a04095681f 100644
|
||||
--- a/net/minecraft/world/level/block/entity/BarrelBlockEntity.java
|
||||
+++ b/net/minecraft/world/level/block/entity/BarrelBlockEntity.java
|
||||
@@ -60,7 +60,16 @@ public class BarrelBlockEntity extends RandomizableContainerBlockEntity {
|
||||
@@ -59,7 +59,16 @@ public class BarrelBlockEntity extends RandomizableContainerBlockEntity {
|
||||
}
|
||||
// CraftBukkit end
|
||||
private static final Component DEFAULT_NAME = Component.translatable("container.barrel");
|
||||
@@ -205,9 +205,9 @@ index da5fdf77dd26d97c8b92bac9a6af8d922c31eb9c..c788746268d7317d8d4a7220fa9c71f5
|
||||
+ }, ItemStack.EMPTY);
|
||||
+ // Purpur end - Barrels and enderchests 6 rows
|
||||
public final ContainerOpenersCounter openersCounter = new ContainerOpenersCounter() {
|
||||
{
|
||||
Objects.requireNonNull(BarrelBlockEntity.this);
|
||||
@@ -123,7 +132,16 @@ public class BarrelBlockEntity extends RandomizableContainerBlockEntity {
|
||||
// Paper start - delay open/close callbacks
|
||||
@Override
|
||||
@@ -118,7 +127,16 @@ public class BarrelBlockEntity extends RandomizableContainerBlockEntity {
|
||||
|
||||
@Override
|
||||
public int getContainerSize() {
|
||||
@@ -225,7 +225,7 @@ index da5fdf77dd26d97c8b92bac9a6af8d922c31eb9c..c788746268d7317d8d4a7220fa9c71f5
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -143,7 +161,16 @@ public class BarrelBlockEntity extends RandomizableContainerBlockEntity {
|
||||
@@ -138,7 +156,16 @@ public class BarrelBlockEntity extends RandomizableContainerBlockEntity {
|
||||
|
||||
@Override
|
||||
protected AbstractContainerMenu createMenu(final int containerId, final Inventory inventory) {
|
||||
|
||||
@@ -5,23 +5,23 @@ Subject: [PATCH] Minecart settings and WASD controls
|
||||
|
||||
|
||||
diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java
|
||||
index 1bd1bb805060604fbe4dca6d71a863bb96d12da9..a41e8e61df1f3d7a861cd1b4060bc3ec424d45bd 100644
|
||||
index 228c81791dcc1ea0971e70bcb0cb289106466c67..88aad415396d1e74da8b7544b566844e30761219 100644
|
||||
--- a/net/minecraft/server/level/ServerPlayer.java
|
||||
+++ b/net/minecraft/server/level/ServerPlayer.java
|
||||
@@ -1332,6 +1332,11 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
|
||||
} else {
|
||||
// Purpur start - Add boat fall damage config
|
||||
if (source.is(net.minecraft.tags.DamageTypeTags.IS_FALL)) {
|
||||
+ // Purpur start - Minecart settings and WASD controls
|
||||
+ if (getRootVehicle() instanceof AbstractMinecart && level().purpurConfig.minecartControllable && !level().purpurConfig.minecartControllableFallDamage) {
|
||||
+ return false;
|
||||
+ }
|
||||
+ // Purpur end - Minecart settings and WASD controls
|
||||
if (getRootVehicle() instanceof net.minecraft.world.entity.vehicle.boat.Boat && !level().purpurConfig.boatsDoFallDamage) {
|
||||
return false;
|
||||
}
|
||||
@@ -1309,6 +1309,11 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
|
||||
|
||||
// Purpur start - Add boat fall damage config
|
||||
if (source.is(net.minecraft.tags.DamageTypeTags.IS_FALL)) {
|
||||
+ // Purpur start - Minecart settings and WASD controls
|
||||
+ if (getRootVehicle() instanceof AbstractMinecart && level().purpurConfig.minecartControllable && !level().purpurConfig.minecartControllableFallDamage) {
|
||||
+ return false;
|
||||
+ }
|
||||
+ // Purpur end - Minecart settings and WASD controls
|
||||
if (getRootVehicle() instanceof net.minecraft.world.entity.vehicle.boat.Boat && !level().purpurConfig.boatsDoFallDamage) {
|
||||
return false;
|
||||
}
|
||||
diff --git a/net/minecraft/world/entity/vehicle/minecart/AbstractMinecart.java b/net/minecraft/world/entity/vehicle/minecart/AbstractMinecart.java
|
||||
index 7ba197b9bda1f98e24882be40d78fabb0db9d36b..f807e424850bcd22ca35860b37fde45c37187b1e 100644
|
||||
index 1c043c1136fc42e888125047ed73b1dc32276183..41d82befd5d30a0bc1db083df9012e0b477239b4 100644
|
||||
--- a/net/minecraft/world/entity/vehicle/minecart/AbstractMinecart.java
|
||||
+++ b/net/minecraft/world/entity/vehicle/minecart/AbstractMinecart.java
|
||||
@@ -105,6 +105,10 @@ public abstract class AbstractMinecart extends VehicleEntity {
|
||||
@@ -127,26 +127,16 @@ index 7ba197b9bda1f98e24882be40d78fabb0db9d36b..f807e424850bcd22ca35860b37fde45c
|
||||
this.move(MoverType.SELF, this.getDeltaMovement());
|
||||
if (!this.onGround()) {
|
||||
diff --git a/net/minecraft/world/item/MinecartItem.java b/net/minecraft/world/item/MinecartItem.java
|
||||
index 7464dbde8cc3348748d2a3733624bd2274f9c735..91df0baebab1da9cd060cb93698c7f154c719669 100644
|
||||
index 2ce6aecf5e34528c9601ce2f071bebd6c2f47243..a817247544186e51d3748af0ecfd78164e37e012 100644
|
||||
--- a/net/minecraft/world/item/MinecartItem.java
|
||||
+++ b/net/minecraft/world/item/MinecartItem.java
|
||||
@@ -30,8 +30,9 @@ public class MinecartItem extends Item {
|
||||
@@ -30,7 +30,8 @@ public class MinecartItem extends Item {
|
||||
BlockPos pos = context.getClickedPos();
|
||||
BlockState blockState = level.getBlockState(pos);
|
||||
if (!blockState.is(BlockTags.RAILS)) {
|
||||
- return InteractionResult.FAIL;
|
||||
- } else {
|
||||
+ if (!level.purpurConfig.minecartPlaceAnywhere) return InteractionResult.FAIL; // Purpur - Minecart settings and WASD controls
|
||||
+ if (blockState.isSolid()) pos = pos.relative(context.getClickedFace());
|
||||
+ } // else { // Purpur - Minecart settings and WASD controls
|
||||
ItemStack itemStack = context.getItemInHand();
|
||||
RailShape shape = blockState.getBlock() instanceof BaseRailBlock
|
||||
? blockState.getValue(((BaseRailBlock)blockState.getBlock()).getShapeProperty())
|
||||
@@ -70,6 +71,6 @@ public class MinecartItem extends Item {
|
||||
itemStack.shrink(1);
|
||||
return InteractionResult.SUCCESS;
|
||||
}
|
||||
- }
|
||||
+ // } // Purpur - Minecart settings and WASD controls
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ItemStack itemStack = context.getItemInHand();
|
||||
|
||||
@@ -31,7 +31,7 @@ index af2bd8a5cf760792a63dfb9c2370360f288beab6..016167a6ff90dfe5a2e66596eaab2c8f
|
||||
|
||||
@Override
|
||||
diff --git a/net/minecraft/world/entity/npc/villager/AbstractVillager.java b/net/minecraft/world/entity/npc/villager/AbstractVillager.java
|
||||
index b5247d45159898cd6ede425a4a99db8439a105b6..0c9fba0e41126a585c2471abc2f18ff50a691805 100644
|
||||
index 9582f694ddbb47be7d820c5fe8791d5ba112ec6b..ac7d5c63d4140b08e4bc63fc42b43036736101aa 100644
|
||||
--- a/net/minecraft/world/entity/npc/villager/AbstractVillager.java
|
||||
+++ b/net/minecraft/world/entity/npc/villager/AbstractVillager.java
|
||||
@@ -52,6 +52,7 @@ import org.jspecify.annotations.Nullable;
|
||||
@@ -43,7 +43,7 @@ index b5247d45159898cd6ede425a4a99db8439a105b6..0c9fba0e41126a585c2471abc2f18ff5
|
||||
private static final EntityDataAccessor<Integer> DATA_UNHAPPY_COUNTER = SynchedEntityData.defineId(AbstractVillager.class, EntityDataSerializers.INT);
|
||||
private @Nullable Player tradingPlayer;
|
||||
diff --git a/net/minecraft/world/entity/npc/villager/Villager.java b/net/minecraft/world/entity/npc/villager/Villager.java
|
||||
index 80f5197c4b33d75ee4d3791db22ed5e43f5c2a65..19bba23d87543574d5d8a4139ac93e751fe690d9 100644
|
||||
index 33b219e4422d22bb88aa17841c0380398e9c149b..e06be61042e8cb873aed23ebcb94cc688a2668cc 100644
|
||||
--- a/net/minecraft/world/entity/npc/villager/Villager.java
|
||||
+++ b/net/minecraft/world/entity/npc/villager/Villager.java
|
||||
@@ -271,6 +271,7 @@ public class Villager extends AbstractVillager implements VillagerDataHolder, Re
|
||||
@@ -72,10 +72,10 @@ index 80f5197c4b33d75ee4d3791db22ed5e43f5c2a65..19bba23d87543574d5d8a4139ac93e75
|
||||
|
||||
public boolean assignProfessionWhenSpawned() {
|
||||
diff --git a/net/minecraft/world/entity/npc/wanderingtrader/WanderingTrader.java b/net/minecraft/world/entity/npc/wanderingtrader/WanderingTrader.java
|
||||
index 848aeba87bd220d7241c5adeba26fbd6591dbbae..ea74d8ac0b5de890124361e65aeb9a08ad09fa1b 100644
|
||||
index f93fc5710e6c95b1c7782ff1024e52bee9fb6102..292980e7445d969475332d18b158a0092ad847fe 100644
|
||||
--- a/net/minecraft/world/entity/npc/wanderingtrader/WanderingTrader.java
|
||||
+++ b/net/minecraft/world/entity/npc/wanderingtrader/WanderingTrader.java
|
||||
@@ -89,9 +89,16 @@ public class WanderingTrader extends AbstractVillager implements Consumable.Over
|
||||
@@ -88,9 +88,16 @@ public class WanderingTrader extends AbstractVillager implements Consumable.Over
|
||||
@Override
|
||||
public void initAttributes() {
|
||||
this.getAttribute(net.minecraft.world.entity.ai.attributes.Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.wanderingTraderMaxHealth);
|
||||
@@ -92,7 +92,7 @@ index 848aeba87bd220d7241c5adeba26fbd6591dbbae..ea74d8ac0b5de890124361e65aeb9a08
|
||||
@Override
|
||||
protected void registerGoals() {
|
||||
this.goalSelector.addGoal(0, new FloatGoal(this));
|
||||
@@ -123,6 +130,7 @@ public class WanderingTrader extends AbstractVillager implements Consumable.Over
|
||||
@@ -122,6 +129,7 @@ public class WanderingTrader extends AbstractVillager implements Consumable.Over
|
||||
this.goalSelector.addGoal(1, new PanicGoal(this, 0.5));
|
||||
this.goalSelector.addGoal(1, new LookAtTradingPlayerGoal(this));
|
||||
this.goalSelector.addGoal(2, new WanderingTrader.WanderToPositionGoal(this, 2.0, 0.35));
|
||||
|
||||
@@ -5,10 +5,10 @@ Subject: [PATCH] Implement elytra settings
|
||||
|
||||
|
||||
diff --git a/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java
|
||||
index 8f536177aabda1387d3562912b48ae8fce1dd278..fbb288020b0526d44312610782f41ab443a42ad9 100644
|
||||
index 3bc8a8d26569a3c26e518cd48c52b9b6c9e38294..34d122f58ff32cb47b79ab1348fee3224315d2dd 100644
|
||||
--- a/net/minecraft/world/entity/LivingEntity.java
|
||||
+++ b/net/minecraft/world/entity/LivingEntity.java
|
||||
@@ -3937,7 +3937,16 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin
|
||||
@@ -3943,7 +3943,16 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin
|
||||
if (freeFallInterval % 2 == 0) {
|
||||
List<EquipmentSlot> slotsWithGliders = EquipmentSlot.VALUES.stream().filter(slot -> canGlideUsing(this.getItemBySlot(slot), slot)).toList();
|
||||
EquipmentSlot slotToDamage = Util.getRandom(slotsWithGliders, this.random);
|
||||
@@ -27,7 +27,7 @@ index 8f536177aabda1387d3562912b48ae8fce1dd278..fbb288020b0526d44312610782f41ab4
|
||||
|
||||
this.gameEvent(GameEvent.ELYTRA_GLIDE);
|
||||
diff --git a/net/minecraft/world/item/FireworkRocketItem.java b/net/minecraft/world/item/FireworkRocketItem.java
|
||||
index 0afc0916e358d4b9c9c360358a6c1aebe1ac723b..ce4380f76c89008b5fa8cd5fd666a0c22e93b26b 100644
|
||||
index b3443ff2d06af328493046e723efc11d299a2824..3c001b3810097d5cb60ad64e0727d8d9907f6a38 100644
|
||||
--- a/net/minecraft/world/item/FireworkRocketItem.java
|
||||
+++ b/net/minecraft/world/item/FireworkRocketItem.java
|
||||
@@ -73,6 +73,17 @@ public class FireworkRocketItem extends Item implements ProjectileItem {
|
||||
@@ -49,7 +49,7 @@ index 0afc0916e358d4b9c9c360358a6c1aebe1ac723b..ce4380f76c89008b5fa8cd5fd666a0c2
|
||||
itemStack.shrink(1); // Moved up from below
|
||||
} else {
|
||||
diff --git a/net/minecraft/world/item/ItemStack.java b/net/minecraft/world/item/ItemStack.java
|
||||
index aa62f69da48884f1d4e8834fe4cb9c02ce1d472e..2e511d2adaedef5e954532783beb8a77b3e000d4 100644
|
||||
index d71fe8e6699e2e3298240e091832d33215837a4a..f9d2aa76bd273c40d39c30e1c9fddb2749b18865 100644
|
||||
--- a/net/minecraft/world/item/ItemStack.java
|
||||
+++ b/net/minecraft/world/item/ItemStack.java
|
||||
@@ -694,6 +694,14 @@ public final class ItemStack implements DataComponentHolder, ItemInstance {
|
||||
@@ -68,13 +68,13 @@ index aa62f69da48884f1d4e8834fe4cb9c02ce1d472e..2e511d2adaedef5e954532783beb8a77
|
||||
onBreak.accept(item);
|
||||
}
|
||||
diff --git a/net/minecraft/world/item/TridentItem.java b/net/minecraft/world/item/TridentItem.java
|
||||
index 4352c807848acbac4e58cd84f376425c3ae6f2f7..50e38d147934d060a0cf342cec609d7d10476298 100644
|
||||
index 0321dffbbea8bf35640680eedd21cd9f9daa6c04..91f81dbf4e1fbf029c8f70ad3a80a489e1188a54 100644
|
||||
--- a/net/minecraft/world/item/TridentItem.java
|
||||
+++ b/net/minecraft/world/item/TridentItem.java
|
||||
@@ -125,6 +125,16 @@ public class TridentItem extends Item implements ProjectileItem {
|
||||
yd *= riptideStrength / dist;
|
||||
zd *= riptideStrength / dist;
|
||||
if (!org.bukkit.craftbukkit.event.CraftEventFactory.callPlayerRiptideEvent(player, itemStack, xd, yd, zd)) return false; // Paper - Add player riptide event
|
||||
@@ -127,6 +127,16 @@ public class TridentItem extends Item implements ProjectileItem {
|
||||
yd *= riptideStrength / dist;
|
||||
zd *= riptideStrength / dist;
|
||||
if (!org.bukkit.craftbukkit.event.CraftEventFactory.callPlayerRiptideEvent(player, itemStack, xd, yd, zd)) return false; // Paper - Add player riptide event
|
||||
+ // Purpur start - Implement elytra settings
|
||||
+ List<net.minecraft.world.entity.EquipmentSlot> list = net.minecraft.world.entity.EquipmentSlot.VALUES.stream().filter((enumitemslot) -> LivingEntity.canGlideUsing(entity.getItemBySlot(enumitemslot), enumitemslot)).toList();
|
||||
+ if (!list.isEmpty()) {
|
||||
@@ -85,6 +85,6 @@ index 4352c807848acbac4e58cd84f376425c3ae6f2f7..50e38d147934d060a0cf342cec609d7d
|
||||
+ }
|
||||
+ }
|
||||
+ // Purpur end - Implement elytra settings
|
||||
player.push(xd, yd, zd);
|
||||
player.startAutoSpinAttack(20, 8.0F, itemStack);
|
||||
if (player.onGround()) {
|
||||
player.push(xd, yd, zd);
|
||||
player.startAutoSpinAttack(20, 8.0F, itemStack);
|
||||
if (player.onGround()) {
|
||||
|
||||
@@ -5,7 +5,7 @@ Subject: [PATCH] Configurable jockey options
|
||||
|
||||
|
||||
diff --git a/net/minecraft/world/entity/monster/zombie/Drowned.java b/net/minecraft/world/entity/monster/zombie/Drowned.java
|
||||
index 573abf9eae9f5492e4231d663814352f7e046fe2..0f64fe7e15655c63f996106d504ab4d18dac4a1c 100644
|
||||
index 36184895787abaf54072fbae6ade286076b6f3c8..8102352e1b59608b19a68f4e5080180c9a3999b5 100644
|
||||
--- a/net/minecraft/world/entity/monster/zombie/Drowned.java
|
||||
+++ b/net/minecraft/world/entity/monster/zombie/Drowned.java
|
||||
@@ -116,6 +116,23 @@ public class Drowned extends Zombie implements RangedAttackMob {
|
||||
@@ -61,10 +61,10 @@ index 1c985585a2da43e59bb5b9ebd742e1e31b2cda29..c3f2d9ab49eb501f26939387624f3262
|
||||
public boolean isSunSensitive() {
|
||||
return false;
|
||||
diff --git a/net/minecraft/world/entity/monster/zombie/Zombie.java b/net/minecraft/world/entity/monster/zombie/Zombie.java
|
||||
index 1fbebd0cd04182679400ef3c33bf0730c01bc645..bf94d8e9512eeb294914c748be091f6565cca676 100644
|
||||
index 875993036ebd0f8a08d28f0e04f0c82b294e3ff5..4b7a00ae57526db73dda9f92a31a95c97b0bc41c 100644
|
||||
--- a/net/minecraft/world/entity/monster/zombie/Zombie.java
|
||||
+++ b/net/minecraft/world/entity/monster/zombie/Zombie.java
|
||||
@@ -138,6 +138,20 @@ public class Zombie extends Monster {
|
||||
@@ -137,6 +137,20 @@ public class Zombie extends Monster {
|
||||
}
|
||||
// Purpur end - Configurable entity base attributes
|
||||
|
||||
@@ -85,7 +85,7 @@ index 1fbebd0cd04182679400ef3c33bf0730c01bc645..bf94d8e9512eeb294914c748be091f65
|
||||
@Override
|
||||
protected void registerGoals() {
|
||||
this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - Ridables
|
||||
@@ -550,19 +564,18 @@ public class Zombie extends Monster {
|
||||
@@ -547,19 +561,18 @@ public class Zombie extends Monster {
|
||||
}
|
||||
|
||||
if (groupData instanceof Zombie.ZombieGroupData zombieData) {
|
||||
@@ -111,7 +111,7 @@ index 1fbebd0cd04182679400ef3c33bf0730c01bc645..bf94d8e9512eeb294914c748be091f65
|
||||
Chicken chicken = EntityType.CHICKEN.create(this.level(), EntitySpawnReason.JOCKEY);
|
||||
if (chicken != null) {
|
||||
chicken.snapTo(this.getX(), this.getY(), this.getZ(), this.getYRot(), 0.0F);
|
||||
@@ -571,6 +584,7 @@ public class Zombie extends Monster {
|
||||
@@ -568,6 +581,7 @@ public class Zombie extends Monster {
|
||||
this.startRiding(chicken, false, false);
|
||||
level.addFreshEntity(chicken, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.MOUNT); // CraftBukkit
|
||||
}
|
||||
|
||||
@@ -5,7 +5,7 @@ Subject: [PATCH] Phantoms attracted to crystals and crystals shoot phantoms
|
||||
|
||||
|
||||
diff --git a/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java b/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java
|
||||
index 0bfb8cd53e87d986679d4e26ebf77c52e58c1c10..fd901b84bc105a2ccf59eef687a20d53b84e1906 100644
|
||||
index aa5426c1c407a3534c587d558d56364ebd99dca3..7a85db931978b39f82947ed619edd3c83ae04dce 100644
|
||||
--- a/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java
|
||||
+++ b/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java
|
||||
@@ -27,6 +27,12 @@ public class EndCrystal extends Entity {
|
||||
@@ -72,10 +72,10 @@ index 0bfb8cd53e87d986679d4e26ebf77c52e58c1c10..fd901b84bc105a2ccf59eef687a20d53
|
||||
|
||||
@Override
|
||||
diff --git a/net/minecraft/world/entity/monster/Phantom.java b/net/minecraft/world/entity/monster/Phantom.java
|
||||
index a22f245acca8e5ea3334708a27ed5029e472c205..962539961aeb73914f5d250afa7a4109765bf438 100644
|
||||
index 194b398a85550edc752b54636079e16a4de27ba7..1474d005d8333f592856ba4cdfc396cb4b93159a 100644
|
||||
--- a/net/minecraft/world/entity/monster/Phantom.java
|
||||
+++ b/net/minecraft/world/entity/monster/Phantom.java
|
||||
@@ -50,6 +50,7 @@ public class Phantom extends Mob implements Enemy {
|
||||
@@ -49,6 +49,7 @@ public class Phantom extends Mob implements Enemy {
|
||||
private Vec3 moveTargetPoint = Vec3.ZERO;
|
||||
public @Nullable BlockPos anchorPoint;
|
||||
private Phantom.AttackPhase attackPhase = Phantom.AttackPhase.CIRCLE;
|
||||
@@ -83,7 +83,7 @@ index a22f245acca8e5ea3334708a27ed5029e472c205..962539961aeb73914f5d250afa7a4109
|
||||
// Paper start
|
||||
public java.util.@Nullable UUID spawningEntity;
|
||||
public boolean shouldBurnInDay = true;
|
||||
@@ -108,6 +109,25 @@ public class Phantom extends Mob implements Enemy {
|
||||
@@ -107,6 +108,25 @@ public class Phantom extends Mob implements Enemy {
|
||||
}
|
||||
// Purpur end - Ridables
|
||||
|
||||
@@ -109,7 +109,7 @@ index a22f245acca8e5ea3334708a27ed5029e472c205..962539961aeb73914f5d250afa7a4109
|
||||
@Override
|
||||
public boolean isFlapping() {
|
||||
return (this.getUniqueFlapTickOffset() + this.tickCount) % TICKS_PER_FLAP == 0;
|
||||
@@ -121,9 +141,15 @@ public class Phantom extends Mob implements Enemy {
|
||||
@@ -120,9 +140,15 @@ public class Phantom extends Mob implements Enemy {
|
||||
@Override
|
||||
protected void registerGoals() {
|
||||
this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - Ridables
|
||||
@@ -128,7 +128,7 @@ index a22f245acca8e5ea3334708a27ed5029e472c205..962539961aeb73914f5d250afa7a4109
|
||||
this.targetSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - Ridables
|
||||
this.targetSelector.addGoal(1, new Phantom.PhantomAttackPlayerTargetGoal());
|
||||
}
|
||||
@@ -513,6 +539,124 @@ public class Phantom extends Mob implements Enemy {
|
||||
@@ -494,6 +520,124 @@ public class Phantom extends Mob implements Enemy {
|
||||
}
|
||||
}
|
||||
|
||||
@@ -251,5 +251,5 @@ index a22f245acca8e5ea3334708a27ed5029e472c205..962539961aeb73914f5d250afa7a4109
|
||||
+ // Purpur end - Phantoms attracted to crystals and crystals shoot phantoms
|
||||
+
|
||||
private class PhantomMoveControl extends org.purpurmc.purpur.controller.FlyingMoveControllerWASD { // Purpur - Ridables
|
||||
private float speed;
|
||||
private float speed = 0.1F;
|
||||
|
||||
|
||||
@@ -5,10 +5,10 @@ Subject: [PATCH] Phantoms burn in light
|
||||
|
||||
|
||||
diff --git a/net/minecraft/world/entity/monster/Phantom.java b/net/minecraft/world/entity/monster/Phantom.java
|
||||
index 962539961aeb73914f5d250afa7a4109765bf438..b3a79a6387fbf00c97da4452cb48e4808e5391be 100644
|
||||
index 1474d005d8333f592856ba4cdfc396cb4b93159a..03db90080675c879688c37e568dc25603b4972b1 100644
|
||||
--- a/net/minecraft/world/entity/monster/Phantom.java
|
||||
+++ b/net/minecraft/world/entity/monster/Phantom.java
|
||||
@@ -55,6 +55,7 @@ public class Phantom extends Mob implements Enemy {
|
||||
@@ -54,6 +54,7 @@ public class Phantom extends Mob implements Enemy {
|
||||
public java.util.@Nullable UUID spawningEntity;
|
||||
public boolean shouldBurnInDay = true;
|
||||
// Paper end
|
||||
@@ -16,7 +16,7 @@ index 962539961aeb73914f5d250afa7a4109765bf438..b3a79a6387fbf00c97da4452cb48e480
|
||||
|
||||
public Phantom(final EntityType<? extends Phantom> type, final Level level) {
|
||||
super(type, level);
|
||||
@@ -239,7 +240,11 @@ public class Phantom extends Mob implements Enemy {
|
||||
@@ -238,7 +239,11 @@ public class Phantom extends Mob implements Enemy {
|
||||
// Paper start
|
||||
@Override
|
||||
public boolean isSunBurnTick() {
|
||||
@@ -29,15 +29,17 @@ index 962539961aeb73914f5d250afa7a4109765bf438..b3a79a6387fbf00c97da4452cb48e480
|
||||
}
|
||||
// Paper end
|
||||
|
||||
@@ -362,6 +367,7 @@ public class Phantom extends Mob implements Enemy {
|
||||
this.nextScanTick = reducedTickDelay(60);
|
||||
ServerLevel level = getServerLevel(Phantom.this.level());
|
||||
List<Player> players = level.getNearbyPlayers(this.attackTargeting, Phantom.this, Phantom.this.getBoundingBox().inflate(16.0, 64.0, 16.0));
|
||||
+ if (level().purpurConfig.phantomIgnorePlayersWithTorch) players.removeIf(human -> TORCH.test(human.getItemInHand(net.minecraft.world.InteractionHand.MAIN_HAND)) || TORCH.test(human.getItemInHand(net.minecraft.world.InteractionHand.OFF_HAND))); // Purpur - Phantoms burn in light
|
||||
if (!players.isEmpty()) {
|
||||
players.sort(Comparator.<Player, Double>comparing(Entity::getY).reversed());
|
||||
@@ -355,7 +360,8 @@ public class Phantom extends Mob implements Enemy {
|
||||
this.nextScanTick = reducedTickDelay(60);
|
||||
ServerLevel level = getServerLevel(Phantom.this.level());
|
||||
List<Player> players = level.getNearbyPlayers(this.attackTargeting, Phantom.this, Phantom.this.getBoundingBox().inflate(16.0, 64.0, 16.0));
|
||||
- if (!players.isEmpty()) {
|
||||
+ if (level().purpurConfig.phantomIgnorePlayersWithTorch) players.removeIf(human -> TORCH.test(human.getItemInHand(net.minecraft.world.InteractionHand.MAIN_HAND)) || TORCH.test(human.getItemInHand(net.minecraft.world.InteractionHand.OFF_HAND))); // Purpur - Phantoms burn in light
|
||||
+ if (!players.isEmpty()) {
|
||||
players.sort(Comparator.<Player, Double>comparing(Entity::getY).reversed());
|
||||
|
||||
@@ -752,6 +758,12 @@ public class Phantom extends Mob implements Enemy {
|
||||
for (Player player : players) {
|
||||
@@ -724,6 +730,12 @@ public class Phantom extends Mob implements Enemy {
|
||||
return false;
|
||||
} else if (!target.isAlive()) {
|
||||
return false;
|
||||
@@ -49,4 +51,4 @@ index 962539961aeb73914f5d250afa7a4109765bf438..b3a79a6387fbf00c97da4452cb48e480
|
||||
+ // Purpur end - Phantoms burn in light
|
||||
} else if (target instanceof Player player && (target.isSpectator() || player.isCreative())) {
|
||||
return false;
|
||||
} else if (!this.canUse()) {
|
||||
} else {
|
||||
|
||||
@@ -5,24 +5,24 @@ Subject: [PATCH] Make entity breeding times configurable
|
||||
|
||||
|
||||
diff --git a/net/minecraft/world/entity/ai/behavior/VillagerMakeLove.java b/net/minecraft/world/entity/ai/behavior/VillagerMakeLove.java
|
||||
index 37cf6c4cef5a8885fddd9f637cac024892b498a3..859842ba642f4307e5a1f834007afe505ce58a8c 100644
|
||||
index 2f89f27a7a5935c08ab45c09e281801fe885cc3a..74ff05c1ec402c4fdf2dee6173f7ae90ec9af9b6 100644
|
||||
--- a/net/minecraft/world/entity/ai/behavior/VillagerMakeLove.java
|
||||
+++ b/net/minecraft/world/entity/ai/behavior/VillagerMakeLove.java
|
||||
@@ -118,8 +118,10 @@ public class VillagerMakeLove extends Behavior<Villager> {
|
||||
if (org.bukkit.craftbukkit.event.CraftEventFactory.callEntityBreedEvent(child, source, target, null, null, 0).isCancelled()) {
|
||||
return Optional.empty();
|
||||
}
|
||||
- source.setAge(6000);
|
||||
- target.setAge(6000);
|
||||
@@ -119,8 +119,10 @@ public class VillagerMakeLove extends Behavior<Villager> {
|
||||
if (org.bukkit.craftbukkit.event.CraftEventFactory.callEntityBreedEvent(child, source, target, null, null, 0).isCancelled()) {
|
||||
return Optional.empty();
|
||||
}
|
||||
- source.setAge(6000);
|
||||
- target.setAge(6000);
|
||||
+ // Purpur start - Make entity breeding times configurable
|
||||
+ source.setAge(level.purpurConfig.villagerBreedingTicks);
|
||||
+ target.setAge(level.purpurConfig.villagerBreedingTicks);
|
||||
+ // Purpur end - Make entity breeding times configurable
|
||||
level.addFreshEntityWithPassengers(child, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.BREEDING);
|
||||
// CraftBukkit end - call EntityBreedEvent
|
||||
level.broadcastEntityEvent(child, EntityEvent.LOVE_HEARTS);
|
||||
level.addFreshEntityWithPassengers(child, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.BREEDING);
|
||||
// CraftBukkit end - call EntityBreedEvent
|
||||
level.broadcastEntityEvent(child, EntityEvent.LOVE_HEARTS);
|
||||
diff --git a/net/minecraft/world/entity/animal/Animal.java b/net/minecraft/world/entity/animal/Animal.java
|
||||
index 774210ebe09af15f85a919512dfd2f98e7bdee6e..407ffe0e6b5893c3abf0b1ff60fd0a27ec965e0c 100644
|
||||
index 0742f39f6b56a0c16878bdc23874bd71d247b8b1..cd1d0b07dcb89b977cd4c00130c57269e25760bc 100644
|
||||
--- a/net/minecraft/world/entity/animal/Animal.java
|
||||
+++ b/net/minecraft/world/entity/animal/Animal.java
|
||||
@@ -46,6 +46,7 @@ public abstract class Animal extends AgeableMob {
|
||||
@@ -47,10 +47,10 @@ index 774210ebe09af15f85a919512dfd2f98e7bdee6e..407ffe0e6b5893c3abf0b1ff60fd0a27
|
||||
partner.resetLove();
|
||||
level.broadcastEntityEvent(this, EntityEvent.IN_LOVE_HEARTS);
|
||||
diff --git a/net/minecraft/world/entity/animal/armadillo/Armadillo.java b/net/minecraft/world/entity/animal/armadillo/Armadillo.java
|
||||
index 7c2c71a57b9278aea428e314462cebc08e168b50..83688ac732758ee0613fc2e187838b4607b8edc9 100644
|
||||
index b55d1d5abe06d753063ea7939bd975c055a1cc95..eecedf1067f7ff1236a3c48cf22db30c623bf490 100644
|
||||
--- a/net/minecraft/world/entity/animal/armadillo/Armadillo.java
|
||||
+++ b/net/minecraft/world/entity/animal/armadillo/Armadillo.java
|
||||
@@ -115,6 +115,13 @@ public class Armadillo extends Animal {
|
||||
@@ -114,6 +114,13 @@ public class Armadillo extends Animal {
|
||||
}
|
||||
// Purpur end - Configurable entity base attributes
|
||||
|
||||
@@ -65,10 +65,10 @@ index 7c2c71a57b9278aea428e314462cebc08e168b50..83688ac732758ee0613fc2e187838b46
|
||||
protected void defineSynchedData(final SynchedEntityData.Builder entityData) {
|
||||
super.defineSynchedData(entityData);
|
||||
diff --git a/net/minecraft/world/entity/animal/axolotl/Axolotl.java b/net/minecraft/world/entity/animal/axolotl/Axolotl.java
|
||||
index c10b06f8adcd59869d043e48cfe3fdb60051c3db..d4178d85b74a41a0d2808681008f1686578db98d 100644
|
||||
index e0b9b15b2727953deb7850ed57edd7248f88c184..3f1c56981c5da00bf7d07c9faf80d3386442723c 100644
|
||||
--- a/net/minecraft/world/entity/animal/axolotl/Axolotl.java
|
||||
+++ b/net/minecraft/world/entity/animal/axolotl/Axolotl.java
|
||||
@@ -143,6 +143,13 @@ public class Axolotl extends Animal implements Bucketable {
|
||||
@@ -142,6 +142,13 @@ public class Axolotl extends Animal implements Bucketable {
|
||||
}
|
||||
// Purpur end - Configurable entity base attributes
|
||||
|
||||
@@ -83,10 +83,10 @@ index c10b06f8adcd59869d043e48cfe3fdb60051c3db..d4178d85b74a41a0d2808681008f1686
|
||||
public float getWalkTargetValue(final BlockPos pos, final LevelReader level) {
|
||||
return 0.0F;
|
||||
diff --git a/net/minecraft/world/entity/animal/bee/Bee.java b/net/minecraft/world/entity/animal/bee/Bee.java
|
||||
index b22f49887219bcffe8e30fd22e9f9dd67fc371bc..44f11b07a2b8a37db399976c4c79b44c4416f2e9 100644
|
||||
index 24dfd3846abcb0f4f00d9c0e58f1e5389e7db658..0a06e8df6e111ba65269365f3d021b57d7f87e60 100644
|
||||
--- a/net/minecraft/world/entity/animal/bee/Bee.java
|
||||
+++ b/net/minecraft/world/entity/animal/bee/Bee.java
|
||||
@@ -488,6 +488,13 @@ public class Bee extends Animal implements FlyingAnimal, NeutralMob {
|
||||
@@ -487,6 +487,13 @@ public class Bee extends Animal implements FlyingAnimal, NeutralMob {
|
||||
}
|
||||
// Purpur end - Configurable entity base attributes
|
||||
|
||||
@@ -101,10 +101,10 @@ index b22f49887219bcffe8e30fd22e9f9dd67fc371bc..44f11b07a2b8a37db399976c4c79b44c
|
||||
public long getPersistentAngerEndTime() {
|
||||
return this.entityData.get(DATA_ANGER_END_TIME);
|
||||
diff --git a/net/minecraft/world/entity/animal/camel/Camel.java b/net/minecraft/world/entity/animal/camel/Camel.java
|
||||
index 0b3cf5ad57350c5c7a453dc7a96891238491a41a..5a66cdb4a75651a9dc017d80f2c2f56e878d83ad 100644
|
||||
index aee34b1ac868f0f0fc24e3ffe022d51141143c9b..92fc921c4024b59dc2c30c5adf35e06a7978abd2 100644
|
||||
--- a/net/minecraft/world/entity/animal/camel/Camel.java
|
||||
+++ b/net/minecraft/world/entity/animal/camel/Camel.java
|
||||
@@ -103,6 +103,13 @@ public class Camel extends AbstractHorse {
|
||||
@@ -102,6 +102,13 @@ public class Camel extends AbstractHorse {
|
||||
}
|
||||
// Purpur end - Ridables
|
||||
|
||||
@@ -155,7 +155,7 @@ index 33c0b8f2c43065ea89b3f9c6a519dde27620ed07..7981f60f10c44ab2459933cb15ee9611
|
||||
protected void defineSynchedData(final SynchedEntityData.Builder entityData) {
|
||||
super.defineSynchedData(entityData);
|
||||
diff --git a/net/minecraft/world/entity/animal/cow/MushroomCow.java b/net/minecraft/world/entity/animal/cow/MushroomCow.java
|
||||
index d6ec397a14753526dd34ab3a7e69ae4be36c04a6..68a4edef68c9db6b2b0716fc6283e2c7345d4cda 100644
|
||||
index 58d37bd62fec5071fb4a0c297f6c2ef89a3d79e4..88ac1974f09b9213f124550b1873d28d8c926083 100644
|
||||
--- a/net/minecraft/world/entity/animal/cow/MushroomCow.java
|
||||
+++ b/net/minecraft/world/entity/animal/cow/MushroomCow.java
|
||||
@@ -85,6 +85,13 @@ public class MushroomCow extends AbstractCow implements Shearable {
|
||||
@@ -209,7 +209,7 @@ index 8ba8430f41ce74736f405bfac2ef5de6fffe7d49..dbb586058f38b6c4f81e2f6567b7ae8e
|
||||
protected void randomizeAttributes(final RandomSource random) {
|
||||
this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(generateMaxHealth(random::nextInt));
|
||||
diff --git a/net/minecraft/world/entity/animal/equine/Llama.java b/net/minecraft/world/entity/animal/equine/Llama.java
|
||||
index 5a62d6fcc6420878a5d612e556503f01f5084d44..138e10184c2b115e04a8a4c73ccc9a87a90e7409 100644
|
||||
index 942f55f750b7ba0cf25429ca888a46bc4c172eb3..08dcee8ef18818ad6963762198b9e60e9c7d4d04 100644
|
||||
--- a/net/minecraft/world/entity/animal/equine/Llama.java
|
||||
+++ b/net/minecraft/world/entity/animal/equine/Llama.java
|
||||
@@ -151,6 +151,13 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob {
|
||||
@@ -245,7 +245,7 @@ index a866b93312391142b030605e2108fe522d3d8ddd..cf0f3c9d5f8ff348e6fb76db823da4ca
|
||||
public SoundEvent getAmbientSound() {
|
||||
return SoundEvents.MULE_AMBIENT;
|
||||
diff --git a/net/minecraft/world/entity/animal/equine/SkeletonHorse.java b/net/minecraft/world/entity/animal/equine/SkeletonHorse.java
|
||||
index fcc9b9f884aed489ab6016d1de3dfd861781d8e5..a4a878791be034140a50b901d5daf2533d299756 100644
|
||||
index 6b12c3a1a99ce66751f8e7d65ee1f6c21ffb0833..cfce6db53e670b39a0db7f6a17857dda0ad160f6 100644
|
||||
--- a/net/minecraft/world/entity/animal/equine/SkeletonHorse.java
|
||||
+++ b/net/minecraft/world/entity/animal/equine/SkeletonHorse.java
|
||||
@@ -67,6 +67,13 @@ public class SkeletonHorse extends AbstractHorse {
|
||||
@@ -299,7 +299,7 @@ index ae429aec9be39d9af7da4671db15a4506da135d9..4be11663154a870a21832ddba05764a8
|
||||
return createBaseHorseAttributes().add(Attributes.MAX_HEALTH, 25.0);
|
||||
}
|
||||
diff --git a/net/minecraft/world/entity/animal/feline/Cat.java b/net/minecraft/world/entity/animal/feline/Cat.java
|
||||
index e31cf2f1c4a0a419ba378424ea0a059a0117e0a4..334879e3f1a28825749e7e4a3863454ee0a5ac9a 100644
|
||||
index 74c271dd9d55c846ed5440ff0d9c378a06da059d..51a587af3507415dad42f764d8fe72c5856cb6a7 100644
|
||||
--- a/net/minecraft/world/entity/animal/feline/Cat.java
|
||||
+++ b/net/minecraft/world/entity/animal/feline/Cat.java
|
||||
@@ -128,6 +128,13 @@ public class Cat extends TamableAnimal {
|
||||
@@ -335,10 +335,10 @@ index 4bf42db19d0f58338f32af1ab7c802c274a8581c..2accf49e8dd907c8a482e5317d07b28f
|
||||
return this.entityData.get(DATA_TRUSTING);
|
||||
}
|
||||
diff --git a/net/minecraft/world/entity/animal/fox/Fox.java b/net/minecraft/world/entity/animal/fox/Fox.java
|
||||
index ec4137a994005c4e7845d63d9347c0586c6f77ee..579718387c43ef36eacfe3abfb789b64e17fa55f 100644
|
||||
index d218a71c2475240438029ca44e86d7584ff36f73..bd4c29146ec791a7939fdea6c3f22badaa7b393a 100644
|
||||
--- a/net/minecraft/world/entity/animal/fox/Fox.java
|
||||
+++ b/net/minecraft/world/entity/animal/fox/Fox.java
|
||||
@@ -201,6 +201,13 @@ public class Fox extends Animal {
|
||||
@@ -200,6 +200,13 @@ public class Fox extends Animal {
|
||||
}
|
||||
// Purpur end - Configurable entity base attributes
|
||||
|
||||
@@ -352,7 +352,7 @@ index ec4137a994005c4e7845d63d9347c0586c6f77ee..579718387c43ef36eacfe3abfb789b64
|
||||
@Override
|
||||
protected void defineSynchedData(final SynchedEntityData.Builder entityData) {
|
||||
super.defineSynchedData(entityData);
|
||||
@@ -1016,8 +1023,10 @@ public class Fox extends Animal {
|
||||
@@ -1003,8 +1010,10 @@ public class Fox extends Animal {
|
||||
CriteriaTriggers.BRED_ANIMALS.trigger(loveCause, this.animal, this.partner, offspring);
|
||||
}
|
||||
|
||||
@@ -366,7 +366,7 @@ index ec4137a994005c4e7845d63d9347c0586c6f77ee..579718387c43ef36eacfe3abfb789b64
|
||||
this.partner.resetLove();
|
||||
this.level.addFreshEntityWithPassengers(offspring, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.BREEDING); // CraftBukkit - added SpawnReason
|
||||
diff --git a/net/minecraft/world/entity/animal/frog/Frog.java b/net/minecraft/world/entity/animal/frog/Frog.java
|
||||
index 977ee6a71e0c52f115a221b09248596db2534739..3d2f06b4e686345632a2493366177e9002cae554 100644
|
||||
index bedbe9adede69efa4c4f2e6def9aeb3e8429fc2e..94cd1064b8544060f2838fb776d95c19bcaf629b 100644
|
||||
--- a/net/minecraft/world/entity/animal/frog/Frog.java
|
||||
+++ b/net/minecraft/world/entity/animal/frog/Frog.java
|
||||
@@ -141,6 +141,13 @@ public class Frog extends Animal {
|
||||
@@ -384,7 +384,7 @@ index 977ee6a71e0c52f115a221b09248596db2534739..3d2f06b4e686345632a2493366177e90
|
||||
protected Brain<Frog> makeBrain(final Brain.Packed packedBrain) {
|
||||
return BRAIN_PROVIDER.makeBrain(this, packedBrain);
|
||||
diff --git a/net/minecraft/world/entity/animal/goat/Goat.java b/net/minecraft/world/entity/animal/goat/Goat.java
|
||||
index d4353bb9ba2168b81726bfaa406175e7f2af601a..c8b2ef70ca3f730d87c30af9f29adb2ad083d26f 100644
|
||||
index cd0f514fa6deef90efc697d30af9a88797b456f8..8651caf56331d78f80982b9be1fa24cb963a78a4 100644
|
||||
--- a/net/minecraft/world/entity/animal/goat/Goat.java
|
||||
+++ b/net/minecraft/world/entity/animal/goat/Goat.java
|
||||
@@ -117,6 +117,13 @@ public class Goat extends Animal {
|
||||
@@ -402,10 +402,10 @@ index d4353bb9ba2168b81726bfaa406175e7f2af601a..c8b2ef70ca3f730d87c30af9f29adb2a
|
||||
protected Brain<Goat> makeBrain(final Brain.Packed packedBrain) {
|
||||
return BRAIN_PROVIDER.makeBrain(this, packedBrain);
|
||||
diff --git a/net/minecraft/world/entity/animal/happyghast/HappyGhast.java b/net/minecraft/world/entity/animal/happyghast/HappyGhast.java
|
||||
index f7f65e0935404a2eb404e5053acb9f6acd353272..b049adf5604555041102497d7fe0c865c56d751f 100644
|
||||
index 7991ef3a11c7901d361fef6349aef37737a69b76..cc3ecc13bfcd367f8c6aeb55380bf509e525d85b 100644
|
||||
--- a/net/minecraft/world/entity/animal/happyghast/HappyGhast.java
|
||||
+++ b/net/minecraft/world/entity/animal/happyghast/HappyGhast.java
|
||||
@@ -154,6 +154,13 @@ public class HappyGhast extends Animal {
|
||||
@@ -153,6 +153,13 @@ public class HappyGhast extends Animal {
|
||||
}
|
||||
// Purpur end - Configurable entity base attributes
|
||||
|
||||
@@ -456,10 +456,10 @@ index 087e768c35c2c2af191c75648b278154ce5e593c..18bfb321e3728d3fa0596da0b86e4b76
|
||||
return AbstractNautilus.createAttributes().add(Attributes.MOVEMENT_SPEED, 1.1F);
|
||||
}
|
||||
diff --git a/net/minecraft/world/entity/animal/panda/Panda.java b/net/minecraft/world/entity/animal/panda/Panda.java
|
||||
index 838bc9b3f5bc3df3db16ba564222eed65215461a..f413e018856d485f706d2b8742b92b3253fe6532 100644
|
||||
index 83ec6995b5fc47872efb5039c3e24cd62da22d10..25232dc02916a0d7189d925c858d88ab71ea5677 100644
|
||||
--- a/net/minecraft/world/entity/animal/panda/Panda.java
|
||||
+++ b/net/minecraft/world/entity/animal/panda/Panda.java
|
||||
@@ -146,6 +146,13 @@ public class Panda extends Animal {
|
||||
@@ -145,6 +145,13 @@ public class Panda extends Animal {
|
||||
}
|
||||
// Purpur end - Configurable entity base attributes
|
||||
|
||||
@@ -474,7 +474,7 @@ index 838bc9b3f5bc3df3db16ba564222eed65215461a..f413e018856d485f706d2b8742b92b32
|
||||
protected boolean canDispenserEquipIntoSlot(final EquipmentSlot slot) {
|
||||
return slot == EquipmentSlot.MAINHAND && this.canPickUpLoot();
|
||||
diff --git a/net/minecraft/world/entity/animal/parrot/Parrot.java b/net/minecraft/world/entity/animal/parrot/Parrot.java
|
||||
index d3b9a3ac77f03e3b6b580a678283f85a19cb660e..af3d3b90f2e4d433b3b842dbc37d8c507a73dc1f 100644
|
||||
index c11c6fdc96d696a2f8c4aee96f4ddf6c4f9b9676..346cc1fa117229b95eef86b1bf2e9fe3a84970cf 100644
|
||||
--- a/net/minecraft/world/entity/animal/parrot/Parrot.java
|
||||
+++ b/net/minecraft/world/entity/animal/parrot/Parrot.java
|
||||
@@ -207,6 +207,13 @@ public class Parrot extends ShoulderRidingEntity implements FlyingAnimal {
|
||||
@@ -492,7 +492,7 @@ index d3b9a3ac77f03e3b6b580a678283f85a19cb660e..af3d3b90f2e4d433b3b842dbc37d8c50
|
||||
public @Nullable SpawnGroupData finalizeSpawn(
|
||||
final ServerLevelAccessor level, final DifficultyInstance difficulty, final EntitySpawnReason spawnReason, @Nullable SpawnGroupData groupData
|
||||
diff --git a/net/minecraft/world/entity/animal/pig/Pig.java b/net/minecraft/world/entity/animal/pig/Pig.java
|
||||
index 02ed5052bd06844ec6811c4249398ba8ba8c4ea6..514f13a6965b5f53890ddd2e47ea89e0c1a515c1 100644
|
||||
index 7246b53d2fba7e547d41fd5db1eb487738e5b51e..14696e16da919a78d0098ad07a911b82ed6b60da 100644
|
||||
--- a/net/minecraft/world/entity/animal/pig/Pig.java
|
||||
+++ b/net/minecraft/world/entity/animal/pig/Pig.java
|
||||
@@ -93,6 +93,13 @@ public class Pig extends Animal implements ItemSteerable {
|
||||
@@ -510,10 +510,10 @@ index 02ed5052bd06844ec6811c4249398ba8ba8c4ea6..514f13a6965b5f53890ddd2e47ea89e0
|
||||
protected void registerGoals() {
|
||||
this.goalSelector.addGoal(0, new FloatGoal(this));
|
||||
diff --git a/net/minecraft/world/entity/animal/polarbear/PolarBear.java b/net/minecraft/world/entity/animal/polarbear/PolarBear.java
|
||||
index e50c934e2c9959f843aae2b2dd05a682ca5f59fc..6d4713663c94e91da7d809e65fa205aff2782f38 100644
|
||||
index ddfc7cab1b3864fc523e0837ff4acb8454e83ac9..38d4e31ddd9bd169dd30b6dee456f0d3f10f106d 100644
|
||||
--- a/net/minecraft/world/entity/animal/polarbear/PolarBear.java
|
||||
+++ b/net/minecraft/world/entity/animal/polarbear/PolarBear.java
|
||||
@@ -127,6 +127,13 @@ public class PolarBear extends Animal implements NeutralMob {
|
||||
@@ -126,6 +126,13 @@ public class PolarBear extends Animal implements NeutralMob {
|
||||
}
|
||||
// Purpur end - Configurable entity base attributes
|
||||
|
||||
@@ -528,7 +528,7 @@ index e50c934e2c9959f843aae2b2dd05a682ca5f59fc..6d4713663c94e91da7d809e65fa205af
|
||||
public @Nullable AgeableMob getBreedOffspring(final ServerLevel level, final AgeableMob partner) {
|
||||
return EntityType.POLAR_BEAR.create(level, EntitySpawnReason.BREEDING);
|
||||
diff --git a/net/minecraft/world/entity/animal/rabbit/Rabbit.java b/net/minecraft/world/entity/animal/rabbit/Rabbit.java
|
||||
index bf643b9e6929890f061ac2c44b196460234095c4..3aefbdc3e537bc53bba296c7876dee93c95a77ca 100644
|
||||
index 4aa18f0ce6f07f479f1d856c9cef9fa5d6329138..f0a0c698c612de039a24b51f6afa87df8008d5b7 100644
|
||||
--- a/net/minecraft/world/entity/animal/rabbit/Rabbit.java
|
||||
+++ b/net/minecraft/world/entity/animal/rabbit/Rabbit.java
|
||||
@@ -170,6 +170,13 @@ public class Rabbit extends Animal {
|
||||
@@ -564,7 +564,7 @@ index eb919dc63d950af08448b75559467ec88623d6b8..e83fe71b4f63f8f7fa1976f7d2165c36
|
||||
protected void registerGoals() {
|
||||
this.eatBlockGoal = new EatBlockGoal(this);
|
||||
diff --git a/net/minecraft/world/entity/animal/sniffer/Sniffer.java b/net/minecraft/world/entity/animal/sniffer/Sniffer.java
|
||||
index 7335e46f249b9a88ca0401493636f6e06c0e196d..f169d075cdaa1426c152a8f2682dbaba23de4ccc 100644
|
||||
index 73a1ba04a6a3ef0d0aba3301b6c1dfefeacb4df6..3a0d1901dcc42aa61ccaba8db5caef671f994bf5 100644
|
||||
--- a/net/minecraft/world/entity/animal/sniffer/Sniffer.java
|
||||
+++ b/net/minecraft/world/entity/animal/sniffer/Sniffer.java
|
||||
@@ -119,6 +119,13 @@ public class Sniffer extends Animal {
|
||||
@@ -613,10 +613,10 @@ index 2dfcf0c9f8eb762d1683d2841a05219c497fddfc..62d9fce83cc44165c5356049a12bf608
|
||||
this.partner.resetLove();
|
||||
RandomSource random = this.animal.getRandom();
|
||||
diff --git a/net/minecraft/world/entity/animal/wolf/Wolf.java b/net/minecraft/world/entity/animal/wolf/Wolf.java
|
||||
index d457bd20c8d644d60795776b4c19a88a8b1ffd09..0ac4e30fd4f3158b5f53e9ba8bc70964907c63a2 100644
|
||||
index ab9e4583dd29e692a3632d23c479539a3f19e042..f84b35919e49c1a86cbc4bdec1f9f81f2dac633d 100644
|
||||
--- a/net/minecraft/world/entity/animal/wolf/Wolf.java
|
||||
+++ b/net/minecraft/world/entity/animal/wolf/Wolf.java
|
||||
@@ -213,6 +213,13 @@ public class Wolf extends TamableAnimal implements NeutralMob {
|
||||
@@ -212,6 +212,13 @@ public class Wolf extends TamableAnimal implements NeutralMob {
|
||||
}
|
||||
// Purpur end - Configurable entity base attributes
|
||||
|
||||
@@ -631,7 +631,7 @@ index d457bd20c8d644d60795776b4c19a88a8b1ffd09..0ac4e30fd4f3158b5f53e9ba8bc70964
|
||||
protected void registerGoals() {
|
||||
this.goalSelector.addGoal(1, new FloatGoal(this));
|
||||
diff --git a/net/minecraft/world/entity/monster/Strider.java b/net/minecraft/world/entity/monster/Strider.java
|
||||
index f8134a362a2faa49beccb840ea8a899aa4681638..38a17c219bce1a8a8a67b136e0eaf5cf15ec94fd 100644
|
||||
index 47a5ce453ea7b291e5cca12c7cb86ccba9d55cc8..b6c20ce23cc1c97c337c5df6e03ad79a51c08702 100644
|
||||
--- a/net/minecraft/world/entity/monster/Strider.java
|
||||
+++ b/net/minecraft/world/entity/monster/Strider.java
|
||||
@@ -118,6 +118,13 @@ public class Strider extends Animal implements ItemSteerable {
|
||||
|
||||
@@ -6,10 +6,10 @@ Subject: [PATCH] Apply display names from item forms of entities to entities
|
||||
|
||||
|
||||
diff --git a/net/minecraft/world/entity/decoration/ArmorStand.java b/net/minecraft/world/entity/decoration/ArmorStand.java
|
||||
index 3f4986d6a755088a2014a373767e51efa976e997..8cb13a742a1cc03d60c78d0bf5be8c6a8cd1a6ae 100644
|
||||
index 0f48cba7d4a5246baa58aaf7e42deff93a0307de..8ed90c7e793c12a130a3214f54aab5482e8e1a8a 100644
|
||||
--- a/net/minecraft/world/entity/decoration/ArmorStand.java
|
||||
+++ b/net/minecraft/world/entity/decoration/ArmorStand.java
|
||||
@@ -452,6 +452,7 @@ public class ArmorStand extends LivingEntity {
|
||||
@@ -475,6 +475,7 @@ public class ArmorStand extends LivingEntity {
|
||||
|
||||
private org.bukkit.event.entity.EntityDeathEvent brokenByPlayer(final ServerLevel level, final DamageSource source) { // Paper
|
||||
ItemStack result = new ItemStack(Items.ARMOR_STAND);
|
||||
@@ -18,10 +18,10 @@ index 3f4986d6a755088a2014a373767e51efa976e997..8cb13a742a1cc03d60c78d0bf5be8c6a
|
||||
this.drops.add(new DefaultDrop(result, stack -> Block.popResource(this.level(), this.blockPosition(), stack))); // CraftBukkit - add to drops // Paper - Restore vanilla drops behavior
|
||||
return this.brokenByAnything(level, source); // Paper
|
||||
diff --git a/net/minecraft/world/entity/decoration/ItemFrame.java b/net/minecraft/world/entity/decoration/ItemFrame.java
|
||||
index 898f64de427b84cbf9b0e5198098f8e2e9040928..bc12a7a96d8db8eb6ad2bcfccaa69464c1e2170d 100644
|
||||
index 9cc2af3db862fdfa45a67ef4b9c49581d7d69d36..b62bf660b9ccc479afdd9d277a78aa857211ef12 100644
|
||||
--- a/net/minecraft/world/entity/decoration/ItemFrame.java
|
||||
+++ b/net/minecraft/world/entity/decoration/ItemFrame.java
|
||||
@@ -246,7 +246,11 @@ public class ItemFrame extends HangingEntity {
|
||||
@@ -248,7 +248,11 @@ public class ItemFrame extends HangingEntity {
|
||||
this.removeFramedMap(itemStack);
|
||||
} else {
|
||||
if (withFrame) {
|
||||
@@ -35,7 +35,7 @@ index 898f64de427b84cbf9b0e5198098f8e2e9040928..bc12a7a96d8db8eb6ad2bcfccaa69464
|
||||
|
||||
if (!itemStack.isEmpty()) {
|
||||
diff --git a/net/minecraft/world/entity/decoration/painting/Painting.java b/net/minecraft/world/entity/decoration/painting/Painting.java
|
||||
index 7195082470ca411caf9c071e970edddae93cb127..9740bb9ec78cad900b9fa7d8ed6fca6a4016de03 100644
|
||||
index e43a510250b7c9b2b5542c30a9aca8be23004794..bb4081d0345a59b209c076fafaee1d1872ea0285 100644
|
||||
--- a/net/minecraft/world/entity/decoration/painting/Painting.java
|
||||
+++ b/net/minecraft/world/entity/decoration/painting/Painting.java
|
||||
@@ -182,7 +182,11 @@ public class Painting extends HangingEntity {
|
||||
@@ -52,10 +52,10 @@ index 7195082470ca411caf9c071e970edddae93cb127..9740bb9ec78cad900b9fa7d8ed6fca6a
|
||||
}
|
||||
}
|
||||
diff --git a/net/minecraft/world/entity/vehicle/boat/AbstractBoat.java b/net/minecraft/world/entity/vehicle/boat/AbstractBoat.java
|
||||
index a820abd08a5e2a7deada616305f3a3e8ecc4fea8..f289bd4a4251dc98b194b79d030dc480dd9dbb66 100644
|
||||
index b78a488780dcf1be542fcb2c271b06939ede7053..37386231ba0de8cec1a671b95ca9cc96446115be 100644
|
||||
--- a/net/minecraft/world/entity/vehicle/boat/AbstractBoat.java
|
||||
+++ b/net/minecraft/world/entity/vehicle/boat/AbstractBoat.java
|
||||
@@ -822,7 +822,13 @@ public abstract class AbstractBoat extends VehicleEntity implements Leashable {
|
||||
@@ -820,7 +820,13 @@ public abstract class AbstractBoat extends VehicleEntity implements Leashable {
|
||||
|
||||
@Override
|
||||
public final ItemStack getPickResult() {
|
||||
@@ -71,42 +71,42 @@ index a820abd08a5e2a7deada616305f3a3e8ecc4fea8..f289bd4a4251dc98b194b79d030dc480
|
||||
|
||||
@Override
|
||||
diff --git a/net/minecraft/world/item/ArmorStandItem.java b/net/minecraft/world/item/ArmorStandItem.java
|
||||
index 4b4cc75640cc567a74c99ec8653436b2f2a50df6..47d1e104d910addcf8322976061ef38d8c791ea8 100644
|
||||
index 62b2da0f028d21f6f759bb13acaf0ed62c673386..f0cb4717a0ffb30ca81d957e0d5f468c187dd693 100644
|
||||
--- a/net/minecraft/world/item/ArmorStandItem.java
|
||||
+++ b/net/minecraft/world/item/ArmorStandItem.java
|
||||
@@ -51,6 +51,10 @@ public class ArmorStandItem extends Item {
|
||||
return InteractionResult.FAIL;
|
||||
}
|
||||
// CraftBukkit end
|
||||
+ // Purpur start - Apply display names from item forms of entities to entities and vice versa
|
||||
+ if (!serverLevel.purpurConfig.persistentDroppableEntityDisplayNames) entity.setCustomName(null);
|
||||
+ if (serverLevel.purpurConfig.armorstandSetNameVisible && entity.getCustomName() != null) entity.setCustomNameVisible(true);
|
||||
+ // Purpur end - Apply display names from item forms of entities to entities and vice versa
|
||||
serverLevel.addFreshEntityWithPassengers(entity);
|
||||
level.playSound(null, entity.getX(), entity.getY(), entity.getZ(), SoundEvents.ARMOR_STAND_PLACE, SoundSource.BLOCKS, 0.75F, 0.8F);
|
||||
entity.gameEvent(GameEvent.ENTITY_PLACE, context.getPlayer());
|
||||
@@ -52,6 +52,10 @@ public class ArmorStandItem extends Item {
|
||||
return InteractionResult.FAIL;
|
||||
}
|
||||
// CraftBukkit end
|
||||
+ // Purpur start - Apply display names from item forms of entities to entities and vice versa
|
||||
+ if (!serverLevel.purpurConfig.persistentDroppableEntityDisplayNames) entity.setCustomName(null);
|
||||
+ if (serverLevel.purpurConfig.armorstandSetNameVisible && entity.getCustomName() != null) entity.setCustomNameVisible(true);
|
||||
+ // Purpur end - Apply display names from item forms of entities to entities and vice versa
|
||||
serverLevel.addFreshEntityWithPassengers(entity);
|
||||
level.playSound(null, entity.getX(), entity.getY(), entity.getZ(), SoundEvents.ARMOR_STAND_PLACE, SoundSource.BLOCKS, 0.75F, 0.8F);
|
||||
entity.gameEvent(GameEvent.ENTITY_PLACE, context.getPlayer());
|
||||
diff --git a/net/minecraft/world/item/BoatItem.java b/net/minecraft/world/item/BoatItem.java
|
||||
index cd7f38ab2553062dcd003bd6f758e4aba77051ea..2b90dec5d564f05f350637a9645d76d4ab7d6126 100644
|
||||
index 8d30c52c46b5f81cd0b9eef6b9c2301613f23892..7c4786b14acbeaa9fd8f98281ed74efbccdd15c9 100644
|
||||
--- a/net/minecraft/world/item/BoatItem.java
|
||||
+++ b/net/minecraft/world/item/BoatItem.java
|
||||
@@ -63,6 +63,7 @@ public class BoatItem extends Item {
|
||||
return InteractionResult.FAIL;
|
||||
} else {
|
||||
boat.setYRot(player.getYRot());
|
||||
+ if (!level.purpurConfig.persistentDroppableEntityDisplayNames) boat.setCustomName(null); // Purpur - Apply display names from item forms of entities to entities and vice versa
|
||||
if (!level.noCollision(boat, boat.getBoundingBox())) {
|
||||
return InteractionResult.FAIL;
|
||||
} else {
|
||||
diff --git a/net/minecraft/world/item/HangingEntityItem.java b/net/minecraft/world/item/HangingEntityItem.java
|
||||
index 1e30fe428914c8ae4f6caf3cb5a05ced4e183393..c07b334eb05fd277925b684256591d505e5fd46a 100644
|
||||
--- a/net/minecraft/world/item/HangingEntityItem.java
|
||||
+++ b/net/minecraft/world/item/HangingEntityItem.java
|
||||
@@ -59,7 +59,7 @@ public class HangingEntityItem extends Item {
|
||||
entity = new GlowItemFrame(level, blockPos, clickedFace);
|
||||
@@ -65,6 +65,7 @@ public class BoatItem extends Item {
|
||||
}
|
||||
|
||||
- EntityType.<HangingEntity>createDefaultStackConfig(level, itemInHand, player).accept(entity);
|
||||
+ EntityType.<HangingEntity>appendDefaultStackConfig(entity1 -> {if (!level.purpurConfig.persistentDroppableEntityDisplayNames) entity1.setCustomName(null);}, level, itemInHand, player).accept(entity); // Purpur - Apply display names from item forms of entities to entities and vice versa
|
||||
if (entity.survives()) {
|
||||
if (!level.isClientSide()) {
|
||||
// CraftBukkit start - fire HangingPlaceEvent
|
||||
boat.setYRot(player.getYRot());
|
||||
+ if (!level.purpurConfig.persistentDroppableEntityDisplayNames) boat.setCustomName(null); // Purpur - Apply display names from item forms of entities to entities and vice versa
|
||||
if (!level.noCollision(boat, boat.getBoundingBox())) {
|
||||
return InteractionResult.FAIL;
|
||||
}
|
||||
diff --git a/net/minecraft/world/item/HangingEntityItem.java b/net/minecraft/world/item/HangingEntityItem.java
|
||||
index b90397101ffb45b1a0aee3103be2d3100ae02788..a611db7d20c8652abac02c2bb80bfd974a990df0 100644
|
||||
--- a/net/minecraft/world/item/HangingEntityItem.java
|
||||
+++ b/net/minecraft/world/item/HangingEntityItem.java
|
||||
@@ -60,7 +60,7 @@ public class HangingEntityItem extends Item {
|
||||
entity = new GlowItemFrame(level, blockPos, clickedFace);
|
||||
}
|
||||
|
||||
- EntityType.<HangingEntity>createDefaultStackConfig(level, itemInHand, player).accept(entity);
|
||||
+ EntityType.<HangingEntity>appendDefaultStackConfig(entity1 -> {if (!level.purpurConfig.persistentDroppableEntityDisplayNames) entity1.setCustomName(null);}, level, itemInHand, player).accept(entity); // Purpur - Apply display names from item forms of entities to entities and vice versa
|
||||
if (entity.survives()) {
|
||||
if (!level.isClientSide()) {
|
||||
// CraftBukkit start - fire HangingPlaceEvent
|
||||
|
||||
@@ -8,7 +8,7 @@ farm Nether Wart. Reimplemented based on a feature of the carpet-extra
|
||||
mod.
|
||||
|
||||
diff --git a/net/minecraft/world/entity/ai/behavior/HarvestFarmland.java b/net/minecraft/world/entity/ai/behavior/HarvestFarmland.java
|
||||
index 6f7af24143421cac84d9c1175acd88a776d8652d..d3f88e3274abc5904544a84a6f1e1d10a441b1e7 100644
|
||||
index f5e93036b5ecb46e4f81aff27d93d27cda49e1b0..959f9fb20c428879fdc2d4a59904cf6b1a8f4d88 100644
|
||||
--- a/net/minecraft/world/entity/ai/behavior/HarvestFarmland.java
|
||||
+++ b/net/minecraft/world/entity/ai/behavior/HarvestFarmland.java
|
||||
@@ -31,6 +31,7 @@ public class HarvestFarmland extends Behavior<Villager> {
|
||||
@@ -19,19 +19,20 @@ index 6f7af24143421cac84d9c1175acd88a776d8652d..d3f88e3274abc5904544a84a6f1e1d10
|
||||
|
||||
public HarvestFarmland() {
|
||||
super(
|
||||
@@ -49,9 +50,10 @@ public class HarvestFarmland extends Behavior<Villager> {
|
||||
protected boolean checkExtraStartConditions(final ServerLevel level, final Villager body) {
|
||||
if (!level.getGameRules().get(GameRules.MOB_GRIEFING)) {
|
||||
@@ -51,10 +52,11 @@ public class HarvestFarmland extends Behavior<Villager> {
|
||||
return false;
|
||||
- } else if (!body.getVillagerData().profession().is(VillagerProfession.FARMER)) {
|
||||
+ } else if (!body.getVillagerData().profession().is(VillagerProfession.FARMER) && !(level.purpurConfig.villagerClericsFarmWarts && body.getVillagerData().profession().is(VillagerProfession.CLERIC))) { // Purpur - Option for Villager Clerics to farm Nether Wart
|
||||
return false;
|
||||
} else {
|
||||
+ if (!this.clericWartFarmer && body.getVillagerData().profession().is(VillagerProfession.CLERIC)) this.clericWartFarmer = true; // Purpur - Option for Villager Clerics to farm Nether Wart
|
||||
BlockPos.MutableBlockPos mutPos = body.blockPosition().mutable();
|
||||
this.validFarmlandAroundVillager.clear();
|
||||
}
|
||||
|
||||
@@ -81,6 +83,7 @@ public class HarvestFarmland extends Behavior<Villager> {
|
||||
- if (!body.getVillagerData().profession().is(VillagerProfession.FARMER)) {
|
||||
+ if (!body.getVillagerData().profession().is(VillagerProfession.FARMER) && !(level.purpurConfig.villagerClericsFarmWarts && body.getVillagerData().profession().is(VillagerProfession.CLERIC))) { // Purpur - Option for Villager Clerics to farm Nether Wart
|
||||
return false;
|
||||
}
|
||||
|
||||
+ if (!this.clericWartFarmer && body.getVillagerData().profession().is(VillagerProfession.CLERIC)) this.clericWartFarmer = true; // Purpur - Option for Villager Clerics to farm Nether Wart
|
||||
BlockPos.MutableBlockPos mutPos = body.blockPosition().mutable();
|
||||
this.validFarmlandAroundVillager.clear();
|
||||
|
||||
@@ -83,6 +85,7 @@ public class HarvestFarmland extends Behavior<Villager> {
|
||||
BlockState state = level.getBlockState(blockPos);
|
||||
Block block = state.getBlock();
|
||||
Block blockBelow = level.getBlockState(blockPos.below()).getBlock();
|
||||
@@ -39,7 +40,7 @@ index 6f7af24143421cac84d9c1175acd88a776d8652d..d3f88e3274abc5904544a84a6f1e1d10
|
||||
return block instanceof CropBlock && ((CropBlock)block).isMaxAge(state) || state.isAir() && blockBelow instanceof FarmlandBlock;
|
||||
}
|
||||
|
||||
@@ -107,19 +110,19 @@ public class HarvestFarmland extends Behavior<Villager> {
|
||||
@@ -109,19 +112,19 @@ public class HarvestFarmland extends Behavior<Villager> {
|
||||
BlockState blockState = level.getBlockState(this.aboveFarmlandPos);
|
||||
Block block = blockState.getBlock();
|
||||
Block blockBelow = level.getBlockState(this.aboveFarmlandPos.below()).getBlock();
|
||||
@@ -62,7 +63,7 @@ index 6f7af24143421cac84d9c1175acd88a776d8652d..d3f88e3274abc5904544a84a6f1e1d10
|
||||
BlockState place = blockItem.getBlock().defaultBlockState();
|
||||
if (org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(body, this.aboveFarmlandPos, place)) { // CraftBukkit
|
||||
level.setBlockAndUpdate(this.aboveFarmlandPos, place);
|
||||
@@ -134,7 +137,7 @@ public class HarvestFarmland extends Behavior<Villager> {
|
||||
@@ -136,7 +139,7 @@ public class HarvestFarmland extends Behavior<Villager> {
|
||||
this.aboveFarmlandPos.getX(),
|
||||
this.aboveFarmlandPos.getY(),
|
||||
this.aboveFarmlandPos.getZ(),
|
||||
@@ -135,7 +136,7 @@ index ec12508c112b1e7748a5d197b73a0d540bed10fc..f2daabad51d565cae11e8bfce8b1bf40
|
||||
brain.setMemory(MemoryModuleType.SECONDARY_JOB_SITE, jobSites);
|
||||
} else {
|
||||
diff --git a/net/minecraft/world/entity/npc/villager/Villager.java b/net/minecraft/world/entity/npc/villager/Villager.java
|
||||
index 19bba23d87543574d5d8a4139ac93e751fe690d9..27b2675059795b54b7d217442065bd50618ac7ae 100644
|
||||
index e06be61042e8cb873aed23ebcb94cc688a2668cc..744a7251f0ab9d7cb09ccdc7d1f0bbcd62483da1 100644
|
||||
--- a/net/minecraft/world/entity/npc/villager/Villager.java
|
||||
+++ b/net/minecraft/world/entity/npc/villager/Villager.java
|
||||
@@ -148,7 +148,7 @@ public class Villager extends AbstractVillager implements VillagerDataHolder, Re
|
||||
@@ -147,7 +148,7 @@ index 19bba23d87543574d5d8a4139ac93e751fe690d9..27b2675059795b54b7d217442065bd50
|
||||
ImmutableSet.of(Pair.of(MemoryModuleType.JOB_SITE, MemoryStatus.VALUE_PRESENT))
|
||||
)
|
||||
);
|
||||
@@ -945,7 +945,7 @@ public class Villager extends AbstractVillager implements VillagerDataHolder, Re
|
||||
@@ -947,7 +947,7 @@ public class Villager extends AbstractVillager implements VillagerDataHolder, Re
|
||||
}
|
||||
|
||||
public boolean hasFarmSeeds() {
|
||||
|
||||
@@ -5,10 +5,10 @@ Subject: [PATCH] Add mobGriefing override to everything affected
|
||||
|
||||
|
||||
diff --git a/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java
|
||||
index fd20156ba4319778323756485557b3dbc32b09c1..5ce6af2b5b22f439aa747d937f0baef7c2479635 100644
|
||||
index 34d122f58ff32cb47b79ab1348fee3224315d2dd..af7a1eebe6f3d9876a1a730f4ca9b0814ed57332 100644
|
||||
--- a/net/minecraft/world/entity/LivingEntity.java
|
||||
+++ b/net/minecraft/world/entity/LivingEntity.java
|
||||
@@ -1950,7 +1950,7 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin
|
||||
@@ -1953,7 +1953,7 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin
|
||||
if (this.level() instanceof ServerLevel serverLevel) {
|
||||
boolean var6 = false;
|
||||
if (this.dead && killer instanceof WitherBoss) { // Paper
|
||||
@@ -18,7 +18,7 @@ index fd20156ba4319778323756485557b3dbc32b09c1..5ce6af2b5b22f439aa747d937f0baef7
|
||||
BlockState state = Blocks.WITHER_ROSE.defaultBlockState();
|
||||
if (this.level().getBlockState(pos).isAir() && state.canSurvive(this.level(), pos)) {
|
||||
diff --git a/net/minecraft/world/entity/Mob.java b/net/minecraft/world/entity/Mob.java
|
||||
index 542ee720980f1bf8408bc150612f9a96f80a594c..6847463312a41f30cbca4116bfe5c9f2b56a451d 100644
|
||||
index d9c5d2e1c638370434e52422c9643c3521f1bb42..d5c50e5f5a850995d4636e155e5d51e190b7095c 100644
|
||||
--- a/net/minecraft/world/entity/Mob.java
|
||||
+++ b/net/minecraft/world/entity/Mob.java
|
||||
@@ -566,7 +566,7 @@ public abstract class Mob extends LivingEntity implements Targeting, EquipmentUs
|
||||
@@ -31,7 +31,7 @@ index 542ee720980f1bf8408bc150612f9a96f80a594c..6847463312a41f30cbca4116bfe5c9f2
|
||||
|
||||
for (ItemEntity entity : this.level()
|
||||
diff --git a/net/minecraft/world/entity/ai/behavior/HarvestFarmland.java b/net/minecraft/world/entity/ai/behavior/HarvestFarmland.java
|
||||
index d3f88e3274abc5904544a84a6f1e1d10a441b1e7..002328d8e8b7a5b2322872814c81a287d62ff89d 100644
|
||||
index 959f9fb20c428879fdc2d4a59904cf6b1a8f4d88..a3590f9b54520c2b7e11de706fba685c3b860f7c 100644
|
||||
--- a/net/minecraft/world/entity/ai/behavior/HarvestFarmland.java
|
||||
+++ b/net/minecraft/world/entity/ai/behavior/HarvestFarmland.java
|
||||
@@ -48,7 +48,7 @@ public class HarvestFarmland extends Behavior<Villager> {
|
||||
@@ -41,8 +41,8 @@ index d3f88e3274abc5904544a84a6f1e1d10a441b1e7..002328d8e8b7a5b2322872814c81a287
|
||||
- if (!level.getGameRules().get(GameRules.MOB_GRIEFING)) {
|
||||
+ if (!level.getGameRules().get(GameRules.MOB_GRIEFING, level.purpurConfig.villagerMobGriefingOverride)) { // Purpur - Add mobGriefing override to everything affected
|
||||
return false;
|
||||
} else if (!body.getVillagerData().profession().is(VillagerProfession.FARMER) && !(level.purpurConfig.villagerClericsFarmWarts && body.getVillagerData().profession().is(VillagerProfession.CLERIC))) { // Purpur - Option for Villager Clerics to farm Nether Wart
|
||||
return false;
|
||||
}
|
||||
|
||||
diff --git a/net/minecraft/world/entity/ai/goal/BreakDoorGoal.java b/net/minecraft/world/entity/ai/goal/BreakDoorGoal.java
|
||||
index e33598c3ea748f81c7efcaa06d9d0597624a852b..80a42d030969e264a93108ca3f2c296dd295ad1d 100644
|
||||
--- a/net/minecraft/world/entity/ai/goal/BreakDoorGoal.java
|
||||
@@ -57,7 +57,7 @@ index e33598c3ea748f81c7efcaa06d9d0597624a852b..80a42d030969e264a93108ca3f2c296d
|
||||
&& !this.isOpen();
|
||||
}
|
||||
diff --git a/net/minecraft/world/entity/ai/goal/EatBlockGoal.java b/net/minecraft/world/entity/ai/goal/EatBlockGoal.java
|
||||
index 0f52b048c33f3dbafd5734dc724bcd74db43884a..a40284d4f3812a169e94593ec14192e079133bd4 100644
|
||||
index c2a1b2b79c4b55dc09558cf6d998f09308196cb2..96cc2c94fe5bfde6a04b83b9bdb925e1454d109c 100644
|
||||
--- a/net/minecraft/world/entity/ai/goal/EatBlockGoal.java
|
||||
+++ b/net/minecraft/world/entity/ai/goal/EatBlockGoal.java
|
||||
@@ -64,7 +64,7 @@ public class EatBlockGoal extends Goal {
|
||||
@@ -79,7 +79,7 @@ index 0f52b048c33f3dbafd5734dc724bcd74db43884a..a40284d4f3812a169e94593ec14192e0
|
||||
this.level.setBlock(below, Blocks.DIRT.defaultBlockState(), Block.UPDATE_CLIENTS);
|
||||
}
|
||||
diff --git a/net/minecraft/world/entity/ai/goal/RemoveBlockGoal.java b/net/minecraft/world/entity/ai/goal/RemoveBlockGoal.java
|
||||
index ca91cadd8d52c09a735e6447664bed4753f3cdd3..3277777cb8672d29a0d49ef03f9cf35cc5df3838 100644
|
||||
index ff0f99d4b560a1c0721885b0eba5bd5ab2087bd7..51c72524c14c078d1bb0539f0b54fc4af1c1412d 100644
|
||||
--- a/net/minecraft/world/entity/ai/goal/RemoveBlockGoal.java
|
||||
+++ b/net/minecraft/world/entity/ai/goal/RemoveBlockGoal.java
|
||||
@@ -34,7 +34,7 @@ public class RemoveBlockGoal extends MoveToBlockGoal {
|
||||
@@ -92,10 +92,10 @@ index ca91cadd8d52c09a735e6447664bed4753f3cdd3..3277777cb8672d29a0d49ef03f9cf35c
|
||||
} else if (this.nextStartTick > 0) {
|
||||
this.nextStartTick--;
|
||||
diff --git a/net/minecraft/world/entity/animal/fox/Fox.java b/net/minecraft/world/entity/animal/fox/Fox.java
|
||||
index 579718387c43ef36eacfe3abfb789b64e17fa55f..29c09797530fa25e31177cf402ecac6a8f43bb23 100644
|
||||
index bd4c29146ec791a7939fdea6c3f22badaa7b393a..ed481b0d7c7787ef01797ef553b85b1bac6027c9 100644
|
||||
--- a/net/minecraft/world/entity/animal/fox/Fox.java
|
||||
+++ b/net/minecraft/world/entity/animal/fox/Fox.java
|
||||
@@ -1082,7 +1082,7 @@ public class Fox extends Animal {
|
||||
@@ -1068,7 +1068,7 @@ public class Fox extends Animal {
|
||||
}
|
||||
|
||||
protected void onReachedTarget() {
|
||||
@@ -118,7 +118,7 @@ index bd594838ae25f16e6e16335e06c4d981c5ecdc2a..7091f5bc2ecb9d4b86162fe364447df6
|
||||
}
|
||||
|
||||
diff --git a/net/minecraft/world/entity/animal/rabbit/Rabbit.java b/net/minecraft/world/entity/animal/rabbit/Rabbit.java
|
||||
index 3aefbdc3e537bc53bba296c7876dee93c95a77ca..4d79ce89c21ba0b973bbda01bf53665e3b7a1902 100644
|
||||
index f0a0c698c612de039a24b51f6afa87df8008d5b7..07db369d748df1e870339eb06032146d6fba8d35 100644
|
||||
--- a/net/minecraft/world/entity/animal/rabbit/Rabbit.java
|
||||
+++ b/net/minecraft/world/entity/animal/rabbit/Rabbit.java
|
||||
@@ -696,7 +696,7 @@ public class Rabbit extends Animal {
|
||||
@@ -131,7 +131,7 @@ index 3aefbdc3e537bc53bba296c7876dee93c95a77ca..4d79ce89c21ba0b973bbda01bf53665e
|
||||
}
|
||||
|
||||
diff --git a/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java b/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java
|
||||
index 24e765b67ee7730b4e1f74a8f5de897eaf479f01..89acbf42f9ce83c41bb2167e332e1b20e6e8fa56 100644
|
||||
index 6e2afa71d0d2da4cca868f617d29b3cc9071553d..9cdbb284c190f2130824c881000880958994013f 100644
|
||||
--- a/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java
|
||||
+++ b/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java
|
||||
@@ -535,7 +535,7 @@ public class EnderDragon extends Mob implements Enemy {
|
||||
@@ -144,10 +144,10 @@ index 24e765b67ee7730b4e1f74a8f5de897eaf479f01..89acbf42f9ce83c41bb2167e332e1b20
|
||||
//flag1 = level.removeBlock(blockPos, false) || flag1;
|
||||
destroyedBlock = true;
|
||||
diff --git a/net/minecraft/world/entity/boss/wither/WitherBoss.java b/net/minecraft/world/entity/boss/wither/WitherBoss.java
|
||||
index fb04a6d53cc12038f4c55db84278632582c698fc..30d9d12d67e2adb7d37c2a38ea1a5b528ba4ab06 100644
|
||||
index 8b2716294b18da6fae981e088b8ddb1f2ffcfb2e..06f09cf81d1ad42beda79dbd5087c2d7264a9612 100644
|
||||
--- a/net/minecraft/world/entity/boss/wither/WitherBoss.java
|
||||
+++ b/net/minecraft/world/entity/boss/wither/WitherBoss.java
|
||||
@@ -493,7 +493,7 @@ public class WitherBoss extends Monster implements RangedAttackMob {
|
||||
@@ -492,7 +492,7 @@ public class WitherBoss extends Monster implements RangedAttackMob {
|
||||
|
||||
if (this.destroyBlocksTick > 0) {
|
||||
this.destroyBlocksTick--;
|
||||
@@ -157,10 +157,10 @@ index fb04a6d53cc12038f4c55db84278632582c698fc..30d9d12d67e2adb7d37c2a38ea1a5b52
|
||||
int width = Mth.floor(this.getBbWidth() / 2.0F + 1.0F);
|
||||
int height = Mth.floor(this.getBbHeight());
|
||||
diff --git a/net/minecraft/world/entity/monster/EnderMan.java b/net/minecraft/world/entity/monster/EnderMan.java
|
||||
index 30450300bdf9e4b5ef4293e9c371484ba6aabebc..46a60e17837411e46a543d6f0254d7280d30a94c 100644
|
||||
index e9b28ab9af835e8394855f08edb3cc463022d6f9..3f233ad5cf2514813ec8d3d36a59f716615a8b18 100644
|
||||
--- a/net/minecraft/world/entity/monster/EnderMan.java
|
||||
+++ b/net/minecraft/world/entity/monster/EnderMan.java
|
||||
@@ -505,7 +505,7 @@ public class EnderMan extends Monster implements NeutralMob {
|
||||
@@ -504,7 +504,7 @@ public class EnderMan extends Monster implements NeutralMob {
|
||||
public boolean canUse() {
|
||||
if (!enderman.level().purpurConfig.endermanAllowGriefing) return false; // Purpur - Add enderman and creeper griefing controls
|
||||
return this.enderman.getCarriedBlock() != null
|
||||
@@ -169,7 +169,7 @@ index 30450300bdf9e4b5ef4293e9c371484ba6aabebc..46a60e17837411e46a543d6f0254d728
|
||||
&& this.enderman.getRandom().nextInt(reducedTickDelay(2000)) == 0;
|
||||
}
|
||||
|
||||
@@ -649,7 +649,7 @@ public class EnderMan extends Monster implements NeutralMob {
|
||||
@@ -648,7 +648,7 @@ public class EnderMan extends Monster implements NeutralMob {
|
||||
public boolean canUse() {
|
||||
if (!enderman.level().purpurConfig.endermanAllowGriefing) return false; // Purpur - Add enderman and creeper griefing controls
|
||||
return this.enderman.getCarriedBlock() == null
|
||||
@@ -192,19 +192,19 @@ index 3e2fa1f4e9c820af76ef5f4354ca66fae182da7b..01e09b39ac5385e7cbfa8a38df94884c
|
||||
AABB bb = this.getBoundingBox().inflate(0.2);
|
||||
|
||||
diff --git a/net/minecraft/world/entity/monster/Silverfish.java b/net/minecraft/world/entity/monster/Silverfish.java
|
||||
index 355475b12c6f3fcc9fe88ca63ab88cabac9d6fb1..e5a0a199685366f082904eb5e7550f0160f9c706 100644
|
||||
index 6037500c084e709110dfe512f110b505111b6d71..34bb4c573f72b32931e47e5502a342a8d2283a6c 100644
|
||||
--- a/net/minecraft/world/entity/monster/Silverfish.java
|
||||
+++ b/net/minecraft/world/entity/monster/Silverfish.java
|
||||
@@ -168,7 +168,7 @@ public class Silverfish extends Monster {
|
||||
return false;
|
||||
} else {
|
||||
RandomSource random = this.mob.getRandom();
|
||||
- if (getServerLevel(this.mob).getGameRules().get(GameRules.MOB_GRIEFING) && random.nextInt(reducedTickDelay(10)) == 0) {
|
||||
+ if (getServerLevel(this.mob).getGameRules().get(GameRules.MOB_GRIEFING, getServerLevel(this.mob).purpurConfig.silverfishMobGriefingOverride) && random.nextInt(reducedTickDelay(10)) == 0) { // Purpur - Add mobGriefing override to everything affected
|
||||
this.selectedDirection = Direction.getRandom(random);
|
||||
BlockPos pos = BlockPos.containing(this.mob.getX(), this.mob.getY() + 0.5, this.mob.getZ()).relative(this.selectedDirection);
|
||||
BlockState blockState = this.mob.level().getBlockState(pos);
|
||||
@@ -245,7 +245,7 @@ public class Silverfish extends Monster {
|
||||
@@ -173,7 +173,7 @@ public class Silverfish extends Monster {
|
||||
}
|
||||
|
||||
RandomSource random = this.mob.getRandom();
|
||||
- if (getServerLevel(this.mob).getGameRules().get(GameRules.MOB_GRIEFING) && random.nextInt(reducedTickDelay(10)) == 0) {
|
||||
+ if (getServerLevel(this.mob).getGameRules().get(GameRules.MOB_GRIEFING, getServerLevel(this.mob).purpurConfig.silverfishMobGriefingOverride) && random.nextInt(reducedTickDelay(10)) == 0) { // Purpur - Add mobGriefing override to everything affected
|
||||
this.selectedDirection = Direction.getRandom(random);
|
||||
BlockPos pos = BlockPos.containing(this.mob.getX(), this.mob.getY() + 0.5, this.mob.getZ()).relative(this.selectedDirection);
|
||||
BlockState blockState = this.mob.level().getBlockState(pos);
|
||||
@@ -249,7 +249,7 @@ public class Silverfish extends Monster {
|
||||
Block block = blockState.getBlock();
|
||||
if (block instanceof InfestedBlock) {
|
||||
// CraftBukkit start
|
||||
@@ -214,20 +214,20 @@ index 355475b12c6f3fcc9fe88ca63ab88cabac9d6fb1..e5a0a199685366f082904eb5e7550f01
|
||||
continue;
|
||||
}
|
||||
diff --git a/net/minecraft/world/entity/monster/illager/Evoker.java b/net/minecraft/world/entity/monster/illager/Evoker.java
|
||||
index 212c74328b1f2c4bb8753787f70246249ab5fe75..b6a84372a9d1486998a92fdfa1f44f2158c03a51 100644
|
||||
index d41c3efa257f82981fbbabd527c4e748f448bfa9..40fb26c7b0f5975a58d218d799fa391661e1c748 100644
|
||||
--- a/net/minecraft/world/entity/monster/illager/Evoker.java
|
||||
+++ b/net/minecraft/world/entity/monster/illager/Evoker.java
|
||||
@@ -334,7 +334,7 @@ public class Evoker extends SpellcasterIllager {
|
||||
@@ -318,7 +318,7 @@ public class Evoker extends SpellcasterIllager {
|
||||
}
|
||||
|
||||
ServerLevel level = getServerLevel(Evoker.this.level());
|
||||
- if (!level.getGameRules().get(GameRules.MOB_GRIEFING)) {
|
||||
+ if (!level.getGameRules().get(GameRules.MOB_GRIEFING, level.purpurConfig.evokerMobGriefingOverride)) { // Purpur - Add mobGriefing override to everything affected
|
||||
return false;
|
||||
} else {
|
||||
ServerLevel level = getServerLevel(Evoker.this.level());
|
||||
- if (!level.getGameRules().get(GameRules.MOB_GRIEFING)) {
|
||||
+ if (!level.getGameRules().get(GameRules.MOB_GRIEFING, level.purpurConfig.evokerMobGriefingOverride)) { // Purpur - Add mobGriefing override to everything affected
|
||||
return false;
|
||||
} else {
|
||||
List<Sheep> entities = level.getNearbyEntities(
|
||||
}
|
||||
|
||||
diff --git a/net/minecraft/world/entity/monster/piglin/Piglin.java b/net/minecraft/world/entity/monster/piglin/Piglin.java
|
||||
index 0d0a86b5c485a60d0e85b3acc6f0cc01ce6c0bfe..356fc7507b58cc38cdf5ee11618ad3551fb3c6a2 100644
|
||||
index 17ce12d23ec9e1e03c02755711dfecb6d207af61..d00490669c66343e37d2a54a051f02995e686c84 100644
|
||||
--- a/net/minecraft/world/entity/monster/piglin/Piglin.java
|
||||
+++ b/net/minecraft/world/entity/monster/piglin/Piglin.java
|
||||
@@ -416,7 +416,7 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento
|
||||
@@ -240,7 +240,7 @@ index 0d0a86b5c485a60d0e85b3acc6f0cc01ce6c0bfe..356fc7507b58cc38cdf5ee11618ad355
|
||||
|
||||
protected boolean canReplaceCurrentItem(final ItemStack newItemStack) {
|
||||
diff --git a/net/minecraft/world/entity/projectile/Projectile.java b/net/minecraft/world/entity/projectile/Projectile.java
|
||||
index 2ee2103e78f2b73d1e6df59b92037f219d82e191..47a27f0415a769c90a99d8868f19a8297d4c1d23 100644
|
||||
index 9af4bf76974f05d9f752bbd4e8037560ec481cdf..7f3673a44b0200d18dbf7f1fac8d377bfc994232 100644
|
||||
--- a/net/minecraft/world/entity/projectile/Projectile.java
|
||||
+++ b/net/minecraft/world/entity/projectile/Projectile.java
|
||||
@@ -460,7 +460,7 @@ public abstract class Projectile extends Entity implements TraceableEntity {
|
||||
@@ -294,10 +294,10 @@ index 55000ce5010321323bf79007ef8de637a492657f..b7f5f434b8b3abbaab7f65fc591ddf18
|
||||
// CraftBukkit end
|
||||
}
|
||||
diff --git a/net/minecraft/world/entity/raid/Raider.java b/net/minecraft/world/entity/raid/Raider.java
|
||||
index 72fda1b1a5cd26f98828c130a52835cc6213aed4..f37216b7f2d094ba98ea5eb004b599ad6dd8697d 100644
|
||||
index cf689dae6978577970e39bf3004be551b4908cd1..869af8dffe56a52ea1406a6598df733f724ee654 100644
|
||||
--- a/net/minecraft/world/entity/raid/Raider.java
|
||||
+++ b/net/minecraft/world/entity/raid/Raider.java
|
||||
@@ -400,7 +400,7 @@ public abstract class Raider extends PatrollingMonster {
|
||||
@@ -397,7 +397,7 @@ public abstract class Raider extends PatrollingMonster {
|
||||
}
|
||||
|
||||
private boolean cannotPickUpBanner() {
|
||||
@@ -305,7 +305,7 @@ index 72fda1b1a5cd26f98828c130a52835cc6213aed4..f37216b7f2d094ba98ea5eb004b599ad
|
||||
+ if (!getServerLevel(this.mob).getGameRules().get(net.minecraft.world.level.gamerules.GameRules.MOB_GRIEFING, this.mob.level().purpurConfig.pillagerMobGriefingOverride)) return true; // Paper - respect game and entity rules for picking up items // Purpur - Add mobGriefing override to everything affected
|
||||
if (!this.mob.hasActiveRaid()) {
|
||||
return true;
|
||||
} else if (this.mob.getCurrentRaid().isOver()) {
|
||||
}
|
||||
diff --git a/net/minecraft/world/level/block/CropBlock.java b/net/minecraft/world/level/block/CropBlock.java
|
||||
index a47e5e38ef5c13da3827174121c1ec4b9ffbbce2..0dfb632b339b24564744b1f5c0d52d7fed66d265 100644
|
||||
--- a/net/minecraft/world/level/block/CropBlock.java
|
||||
|
||||
@@ -5,7 +5,7 @@ Subject: [PATCH] Toggle for water sensitive mob damage
|
||||
|
||||
|
||||
diff --git a/net/minecraft/world/entity/ambient/Bat.java b/net/minecraft/world/entity/ambient/Bat.java
|
||||
index f40892bbe424408e3d11c887d5bd0fef179aaced..15bb425ed1569cbf445e81aa296039df8abc4746 100644
|
||||
index cb242c69be97e0927dd62714f1a9b112c0dec84b..626463a20f49c807eae86b30fe38c514311abd88 100644
|
||||
--- a/net/minecraft/world/entity/ambient/Bat.java
|
||||
+++ b/net/minecraft/world/entity/ambient/Bat.java
|
||||
@@ -109,6 +109,13 @@ public class Bat extends AmbientCreature {
|
||||
@@ -23,10 +23,10 @@ index f40892bbe424408e3d11c887d5bd0fef179aaced..15bb425ed1569cbf445e81aa296039df
|
||||
public boolean isFlapping() {
|
||||
return !this.isResting() && this.tickCount % 10.0F == 0.0F;
|
||||
diff --git a/net/minecraft/world/entity/animal/axolotl/Axolotl.java b/net/minecraft/world/entity/animal/axolotl/Axolotl.java
|
||||
index d4178d85b74a41a0d2808681008f1686578db98d..a3a98df8ffeb33d86330b5561252eda596642da8 100644
|
||||
index 3f1c56981c5da00bf7d07c9faf80d3386442723c..72583935d49eb513e1e3211863865f154e742aeb 100644
|
||||
--- a/net/minecraft/world/entity/animal/axolotl/Axolotl.java
|
||||
+++ b/net/minecraft/world/entity/animal/axolotl/Axolotl.java
|
||||
@@ -150,6 +150,13 @@ public class Axolotl extends Animal implements Bucketable {
|
||||
@@ -149,6 +149,13 @@ public class Axolotl extends Animal implements Bucketable {
|
||||
}
|
||||
// Purpur end - Make entity breeding times configurable
|
||||
|
||||
@@ -41,10 +41,10 @@ index d4178d85b74a41a0d2808681008f1686578db98d..a3a98df8ffeb33d86330b5561252eda5
|
||||
public float getWalkTargetValue(final BlockPos pos, final LevelReader level) {
|
||||
return 0.0F;
|
||||
diff --git a/net/minecraft/world/entity/animal/bee/Bee.java b/net/minecraft/world/entity/animal/bee/Bee.java
|
||||
index 44f11b07a2b8a37db399976c4c79b44c4416f2e9..e85c33e4d0d19d4e7f8ef837ec0a611e19bc19e4 100644
|
||||
index 0a06e8df6e111ba65269365f3d021b57d7f87e60..df53953b532ebb4cdc78ea1e1cab0b0ed48ce960 100644
|
||||
--- a/net/minecraft/world/entity/animal/bee/Bee.java
|
||||
+++ b/net/minecraft/world/entity/animal/bee/Bee.java
|
||||
@@ -186,7 +186,7 @@ public class Bee extends Animal implements FlyingAnimal, NeutralMob {
|
||||
@@ -185,7 +185,7 @@ public class Bee extends Animal implements FlyingAnimal, NeutralMob {
|
||||
// Paper end - Fix MC-167279
|
||||
this.lookControl = new Bee.BeeLookControl(this);
|
||||
this.setPathfindingMalus(PathType.FIRE_IN_NEIGHBOR, -1.0F);
|
||||
@@ -53,7 +53,7 @@ index 44f11b07a2b8a37db399976c4c79b44c4416f2e9..e85c33e4d0d19d4e7f8ef837ec0a611e
|
||||
this.setPathfindingMalus(PathType.WATER_BORDER, 16.0F);
|
||||
this.setPathfindingMalus(PathType.COCOA, -1.0F);
|
||||
this.setPathfindingMalus(PathType.FENCE, -1.0F);
|
||||
@@ -495,6 +495,13 @@ public class Bee extends Animal implements FlyingAnimal, NeutralMob {
|
||||
@@ -494,6 +494,13 @@ public class Bee extends Animal implements FlyingAnimal, NeutralMob {
|
||||
}
|
||||
// Purpur end - Make entity breeding times configurable
|
||||
|
||||
@@ -104,7 +104,7 @@ index 7981f60f10c44ab2459933cb15ee961103922364..7d3853d693a87e5225a16285631e0e20
|
||||
protected void defineSynchedData(final SynchedEntityData.Builder entityData) {
|
||||
super.defineSynchedData(entityData);
|
||||
diff --git a/net/minecraft/world/entity/animal/cow/MushroomCow.java b/net/minecraft/world/entity/animal/cow/MushroomCow.java
|
||||
index 68a4edef68c9db6b2b0716fc6283e2c7345d4cda..d3e5e12c4e3c168a3a15d611f8ae5845ee365080 100644
|
||||
index 88ac1974f09b9213f124550b1873d28d8c926083..9bdc0bb89e554957c70d97e6ca60f1c4aa1ef91b 100644
|
||||
--- a/net/minecraft/world/entity/animal/cow/MushroomCow.java
|
||||
+++ b/net/minecraft/world/entity/animal/cow/MushroomCow.java
|
||||
@@ -92,6 +92,13 @@ public class MushroomCow extends AbstractCow implements Shearable {
|
||||
@@ -122,7 +122,7 @@ index 68a4edef68c9db6b2b0716fc6283e2c7345d4cda..d3e5e12c4e3c168a3a15d611f8ae5845
|
||||
public float getWalkTargetValue(final BlockPos pos, final LevelReader level) {
|
||||
return level.getBlockState(pos.below()).is(Blocks.MYCELIUM) ? 10.0F : level.getPathfindingCostFromLightLevels(pos);
|
||||
diff --git a/net/minecraft/world/entity/animal/dolphin/Dolphin.java b/net/minecraft/world/entity/animal/dolphin/Dolphin.java
|
||||
index b2e6307ead267fa8a1acd6956c409f2bcbf28c41..0cab39846b6ad5d0e0ce627d6a84f73340fcd328 100644
|
||||
index f8e155393b0c2a69018da88556116b4eeb416d83..58ce1ab82ab9883853eeffd103a1b72053c59798 100644
|
||||
--- a/net/minecraft/world/entity/animal/dolphin/Dolphin.java
|
||||
+++ b/net/minecraft/world/entity/animal/dolphin/Dolphin.java
|
||||
@@ -162,6 +162,13 @@ public class Dolphin extends AgeableWaterCreature {
|
||||
@@ -176,7 +176,7 @@ index dbb586058f38b6c4f81e2f6567b7ae8ebbaff5a2..64603ad973bdb697ca75642e8e42e705
|
||||
protected void randomizeAttributes(final RandomSource random) {
|
||||
this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(generateMaxHealth(random::nextInt));
|
||||
diff --git a/net/minecraft/world/entity/animal/equine/Llama.java b/net/minecraft/world/entity/animal/equine/Llama.java
|
||||
index 138e10184c2b115e04a8a4c73ccc9a87a90e7409..c56d6f3a8a0c5a95da49ab34c72659872259a723 100644
|
||||
index 08dcee8ef18818ad6963762198b9e60e9c7d4d04..4b7a9c76df89cb0494db9375940bc219093f04c1 100644
|
||||
--- a/net/minecraft/world/entity/animal/equine/Llama.java
|
||||
+++ b/net/minecraft/world/entity/animal/equine/Llama.java
|
||||
@@ -158,6 +158,13 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob {
|
||||
@@ -212,7 +212,7 @@ index cf0f3c9d5f8ff348e6fb76db823da4cadce4fc5b..291176b409097d15c2afff7fe8deb17b
|
||||
public SoundEvent getAmbientSound() {
|
||||
return SoundEvents.MULE_AMBIENT;
|
||||
diff --git a/net/minecraft/world/entity/animal/equine/SkeletonHorse.java b/net/minecraft/world/entity/animal/equine/SkeletonHorse.java
|
||||
index a4a878791be034140a50b901d5daf2533d299756..9365609fad67377ffe18e11c7959e0d92367852a 100644
|
||||
index cfce6db53e670b39a0db7f6a17857dda0ad160f6..02aa9a838e0cbd62bc0a2e0f30e0cfc9a3995a41 100644
|
||||
--- a/net/minecraft/world/entity/animal/equine/SkeletonHorse.java
|
||||
+++ b/net/minecraft/world/entity/animal/equine/SkeletonHorse.java
|
||||
@@ -74,6 +74,13 @@ public class SkeletonHorse extends AbstractHorse {
|
||||
@@ -266,7 +266,7 @@ index 4be11663154a870a21832ddba05764a897ce90bd..586151b916a5e21c36578aa04cab9d71
|
||||
return createBaseHorseAttributes().add(Attributes.MAX_HEALTH, 25.0);
|
||||
}
|
||||
diff --git a/net/minecraft/world/entity/animal/feline/Cat.java b/net/minecraft/world/entity/animal/feline/Cat.java
|
||||
index 334879e3f1a28825749e7e4a3863454ee0a5ac9a..966b2cbc5b4f71d2cfa8759c2263407ee73c3d8e 100644
|
||||
index 51a587af3507415dad42f764d8fe72c5856cb6a7..609cf964f5020728321da2e08ccd94dc925cc4c7 100644
|
||||
--- a/net/minecraft/world/entity/animal/feline/Cat.java
|
||||
+++ b/net/minecraft/world/entity/animal/feline/Cat.java
|
||||
@@ -135,6 +135,13 @@ public class Cat extends TamableAnimal {
|
||||
@@ -338,7 +338,7 @@ index 26acbeff80d3a4216b69b9842381f3fa48c9862b..a0f1ea76011dc3aa6e8a702528062f5f
|
||||
protected void defineSynchedData(final SynchedEntityData.Builder entityData) {
|
||||
super.defineSynchedData(entityData);
|
||||
diff --git a/net/minecraft/world/entity/animal/fish/Salmon.java b/net/minecraft/world/entity/animal/fish/Salmon.java
|
||||
index d9276ab9af526f1714d3241bbf6f9c7906adec70..ba75ba1130c4fe5f4d7b29c624a17becd2a71c99 100644
|
||||
index 9bce191fbc3b68a051f50e85674b8cfd42832a85..ddf23647e17bdb04babae1832486efb52ab9f81a 100644
|
||||
--- a/net/minecraft/world/entity/animal/fish/Salmon.java
|
||||
+++ b/net/minecraft/world/entity/animal/fish/Salmon.java
|
||||
@@ -60,6 +60,13 @@ public class Salmon extends AbstractSchoolingFish {
|
||||
@@ -356,7 +356,7 @@ index d9276ab9af526f1714d3241bbf6f9c7906adec70..ba75ba1130c4fe5f4d7b29c624a17bec
|
||||
public int getMaxSchoolSize() {
|
||||
return 5;
|
||||
diff --git a/net/minecraft/world/entity/animal/fish/TropicalFish.java b/net/minecraft/world/entity/animal/fish/TropicalFish.java
|
||||
index fbe7b76aac06bb0dce7ae53dea85e947a53d1b64..17bc569bf97026e2c072633f1ad6e9e0102c137a 100644
|
||||
index e9692aacca5f32c4280b16b4eabecf87c2ed5aeb..dc2800dd2f4c9f71c79d9f012be17398263d033d 100644
|
||||
--- a/net/minecraft/world/entity/animal/fish/TropicalFish.java
|
||||
+++ b/net/minecraft/world/entity/animal/fish/TropicalFish.java
|
||||
@@ -96,6 +96,13 @@ public class TropicalFish extends AbstractSchoolingFish {
|
||||
@@ -374,10 +374,10 @@ index fbe7b76aac06bb0dce7ae53dea85e947a53d1b64..17bc569bf97026e2c072633f1ad6e9e0
|
||||
return "entity.minecraft.tropical_fish.predefined." + index;
|
||||
}
|
||||
diff --git a/net/minecraft/world/entity/animal/fox/Fox.java b/net/minecraft/world/entity/animal/fox/Fox.java
|
||||
index 29c09797530fa25e31177cf402ecac6a8f43bb23..c70e04d20e37b7063618805016d24a459ee65c91 100644
|
||||
index ed481b0d7c7787ef01797ef553b85b1bac6027c9..e74adaebbf28247e8bc85671ca294c9d9843ca08 100644
|
||||
--- a/net/minecraft/world/entity/animal/fox/Fox.java
|
||||
+++ b/net/minecraft/world/entity/animal/fox/Fox.java
|
||||
@@ -208,6 +208,13 @@ public class Fox extends Animal {
|
||||
@@ -207,6 +207,13 @@ public class Fox extends Animal {
|
||||
}
|
||||
// Purpur end - Make entity breeding times configurable
|
||||
|
||||
@@ -392,7 +392,7 @@ index 29c09797530fa25e31177cf402ecac6a8f43bb23..c70e04d20e37b7063618805016d24a45
|
||||
protected void defineSynchedData(final SynchedEntityData.Builder entityData) {
|
||||
super.defineSynchedData(entityData);
|
||||
diff --git a/net/minecraft/world/entity/animal/goat/Goat.java b/net/minecraft/world/entity/animal/goat/Goat.java
|
||||
index c8b2ef70ca3f730d87c30af9f29adb2ad083d26f..24cccc6afadfc91feb6157882c1b76da0d3657d1 100644
|
||||
index 8651caf56331d78f80982b9be1fa24cb963a78a4..ea0aace589356cb2719925d5287bc5672eb45993 100644
|
||||
--- a/net/minecraft/world/entity/animal/goat/Goat.java
|
||||
+++ b/net/minecraft/world/entity/animal/goat/Goat.java
|
||||
@@ -124,6 +124,13 @@ public class Goat extends Animal {
|
||||
@@ -410,7 +410,7 @@ index c8b2ef70ca3f730d87c30af9f29adb2ad083d26f..24cccc6afadfc91feb6157882c1b76da
|
||||
protected Brain<Goat> makeBrain(final Brain.Packed packedBrain) {
|
||||
return BRAIN_PROVIDER.makeBrain(this, packedBrain);
|
||||
diff --git a/net/minecraft/world/entity/animal/golem/CopperGolem.java b/net/minecraft/world/entity/animal/golem/CopperGolem.java
|
||||
index bc66450f8d1be97f11f8380755a9973e8ef4befa..078cb2f09e9aaf05bb965a27b90f34c7c3a4147d 100644
|
||||
index 00877102ad4261ecd7191e402cf4e381dd6e40b3..ac416c47f86b2ec4c8c58a24491b81504e3a8212 100644
|
||||
--- a/net/minecraft/world/entity/animal/golem/CopperGolem.java
|
||||
+++ b/net/minecraft/world/entity/animal/golem/CopperGolem.java
|
||||
@@ -144,6 +144,13 @@ public class CopperGolem extends AbstractGolem implements ContainerUser, Shearab
|
||||
@@ -428,7 +428,7 @@ index bc66450f8d1be97f11f8380755a9973e8ef4befa..078cb2f09e9aaf05bb965a27b90f34c7
|
||||
return Mob.createMobAttributes().add(Attributes.MOVEMENT_SPEED, 0.2F).add(Attributes.STEP_HEIGHT, 1.0).add(Attributes.MAX_HEALTH, 12.0);
|
||||
}
|
||||
diff --git a/net/minecraft/world/entity/animal/golem/IronGolem.java b/net/minecraft/world/entity/animal/golem/IronGolem.java
|
||||
index ec08c9c2ac32863807061d93ec8894bd094f7ab4..77996312597da9a2bbcf89f798c10a0be0abcd39 100644
|
||||
index cd68a06abb509dbdbcf909d3f3e142c7a1f896cf..305b6b9b5575c9351990d36f3bd2e9721a00dc2b 100644
|
||||
--- a/net/minecraft/world/entity/animal/golem/IronGolem.java
|
||||
+++ b/net/minecraft/world/entity/animal/golem/IronGolem.java
|
||||
@@ -99,6 +99,13 @@ public class IronGolem extends AbstractGolem implements NeutralMob {
|
||||
@@ -459,10 +459,10 @@ index 7091f5bc2ecb9d4b86162fe364447df65d8e9348..2d3127f6846ff9eda1a0b89764dc837d
|
||||
|
||||
@Override
|
||||
diff --git a/net/minecraft/world/entity/animal/happyghast/HappyGhast.java b/net/minecraft/world/entity/animal/happyghast/HappyGhast.java
|
||||
index b049adf5604555041102497d7fe0c865c56d751f..a73d8d3eb04602eac78f142c336e464de22ecc83 100644
|
||||
index cc3ecc13bfcd367f8c6aeb55380bf509e525d85b..2ab9e28e84193ea76e09008a230fbdeb5acbf4c1 100644
|
||||
--- a/net/minecraft/world/entity/animal/happyghast/HappyGhast.java
|
||||
+++ b/net/minecraft/world/entity/animal/happyghast/HappyGhast.java
|
||||
@@ -161,6 +161,13 @@ public class HappyGhast extends Animal {
|
||||
@@ -160,6 +160,13 @@ public class HappyGhast extends Animal {
|
||||
}
|
||||
// Purpur end - Make entity breeding times configurable
|
||||
|
||||
@@ -477,10 +477,10 @@ index b049adf5604555041102497d7fe0c865c56d751f..a73d8d3eb04602eac78f142c336e464d
|
||||
protected void ageBoundaryReached() {
|
||||
if (this.isBaby()) {
|
||||
diff --git a/net/minecraft/world/entity/animal/panda/Panda.java b/net/minecraft/world/entity/animal/panda/Panda.java
|
||||
index f413e018856d485f706d2b8742b92b3253fe6532..2f9f588c384d133f82bb4b2d08c8f7c7a72c0915 100644
|
||||
index 25232dc02916a0d7189d925c858d88ab71ea5677..4249aff88a1768f2f2184a09efe730752545b164 100644
|
||||
--- a/net/minecraft/world/entity/animal/panda/Panda.java
|
||||
+++ b/net/minecraft/world/entity/animal/panda/Panda.java
|
||||
@@ -153,6 +153,13 @@ public class Panda extends Animal {
|
||||
@@ -152,6 +152,13 @@ public class Panda extends Animal {
|
||||
}
|
||||
// Purpur end - Make entity breeding times configurable
|
||||
|
||||
@@ -495,7 +495,7 @@ index f413e018856d485f706d2b8742b92b3253fe6532..2f9f588c384d133f82bb4b2d08c8f7c7
|
||||
protected boolean canDispenserEquipIntoSlot(final EquipmentSlot slot) {
|
||||
return slot == EquipmentSlot.MAINHAND && this.canPickUpLoot();
|
||||
diff --git a/net/minecraft/world/entity/animal/parrot/Parrot.java b/net/minecraft/world/entity/animal/parrot/Parrot.java
|
||||
index af3d3b90f2e4d433b3b842dbc37d8c507a73dc1f..d756d6931dbf560fef5cb9641ace6f091fbcfff9 100644
|
||||
index 346cc1fa117229b95eef86b1bf2e9fe3a84970cf..0f5da739a7bed82a1ccef173d379a78981f37939 100644
|
||||
--- a/net/minecraft/world/entity/animal/parrot/Parrot.java
|
||||
+++ b/net/minecraft/world/entity/animal/parrot/Parrot.java
|
||||
@@ -214,6 +214,13 @@ public class Parrot extends ShoulderRidingEntity implements FlyingAnimal {
|
||||
@@ -513,7 +513,7 @@ index af3d3b90f2e4d433b3b842dbc37d8c507a73dc1f..d756d6931dbf560fef5cb9641ace6f09
|
||||
public @Nullable SpawnGroupData finalizeSpawn(
|
||||
final ServerLevelAccessor level, final DifficultyInstance difficulty, final EntitySpawnReason spawnReason, @Nullable SpawnGroupData groupData
|
||||
diff --git a/net/minecraft/world/entity/animal/pig/Pig.java b/net/minecraft/world/entity/animal/pig/Pig.java
|
||||
index 514f13a6965b5f53890ddd2e47ea89e0c1a515c1..05141bc41dc5181a8f0526528147e7a6c015a707 100644
|
||||
index 14696e16da919a78d0098ad07a911b82ed6b60da..5413851446237e7984c8da4172c31b0dd9affc60 100644
|
||||
--- a/net/minecraft/world/entity/animal/pig/Pig.java
|
||||
+++ b/net/minecraft/world/entity/animal/pig/Pig.java
|
||||
@@ -100,6 +100,13 @@ public class Pig extends Animal implements ItemSteerable {
|
||||
@@ -531,10 +531,10 @@ index 514f13a6965b5f53890ddd2e47ea89e0c1a515c1..05141bc41dc5181a8f0526528147e7a6
|
||||
protected void registerGoals() {
|
||||
this.goalSelector.addGoal(0, new FloatGoal(this));
|
||||
diff --git a/net/minecraft/world/entity/animal/polarbear/PolarBear.java b/net/minecraft/world/entity/animal/polarbear/PolarBear.java
|
||||
index 6d4713663c94e91da7d809e65fa205aff2782f38..2a28c9ef361909aa0c3946ed6857f7d340c8cfc0 100644
|
||||
index 38d4e31ddd9bd169dd30b6dee456f0d3f10f106d..a9e64a4053755050099cdcaef870a0099a867575 100644
|
||||
--- a/net/minecraft/world/entity/animal/polarbear/PolarBear.java
|
||||
+++ b/net/minecraft/world/entity/animal/polarbear/PolarBear.java
|
||||
@@ -134,6 +134,13 @@ public class PolarBear extends Animal implements NeutralMob {
|
||||
@@ -133,6 +133,13 @@ public class PolarBear extends Animal implements NeutralMob {
|
||||
}
|
||||
// Purpur end - Make entity breeding times configurable
|
||||
|
||||
@@ -549,7 +549,7 @@ index 6d4713663c94e91da7d809e65fa205aff2782f38..2a28c9ef361909aa0c3946ed6857f7d3
|
||||
public @Nullable AgeableMob getBreedOffspring(final ServerLevel level, final AgeableMob partner) {
|
||||
return EntityType.POLAR_BEAR.create(level, EntitySpawnReason.BREEDING);
|
||||
diff --git a/net/minecraft/world/entity/animal/rabbit/Rabbit.java b/net/minecraft/world/entity/animal/rabbit/Rabbit.java
|
||||
index 4d79ce89c21ba0b973bbda01bf53665e3b7a1902..7dade80db9430e4db587ed23df992d70c6b7ee04 100644
|
||||
index 07db369d748df1e870339eb06032146d6fba8d35..9116e659fff5daf09257739f6c04e32d1dfc70ca 100644
|
||||
--- a/net/minecraft/world/entity/animal/rabbit/Rabbit.java
|
||||
+++ b/net/minecraft/world/entity/animal/rabbit/Rabbit.java
|
||||
@@ -177,6 +177,13 @@ public class Rabbit extends Animal {
|
||||
@@ -603,7 +603,7 @@ index cb3d0bd838473af87af74c7d1bab38593a6c8f6d..1fa3d614dd1c45ec42caffbe92e3f8db
|
||||
protected ParticleOptions getInkParticle() {
|
||||
return ParticleTypes.GLOW_SQUID_INK;
|
||||
diff --git a/net/minecraft/world/entity/animal/squid/Squid.java b/net/minecraft/world/entity/animal/squid/Squid.java
|
||||
index 49ef7f4004a2f82df2d8cbf0d0473a5d84588fac..8b26b08956e63d3ccb9a7006cfa57ac3771339ad 100644
|
||||
index da8e8d817f959ffcbc0a84a40af854ecfc939ef2..2b2272122a7ebaed6a995d09dab7a3db3ee0c594 100644
|
||||
--- a/net/minecraft/world/entity/animal/squid/Squid.java
|
||||
+++ b/net/minecraft/world/entity/animal/squid/Squid.java
|
||||
@@ -104,6 +104,13 @@ public class Squid extends AgeableWaterCreature {
|
||||
@@ -639,10 +639,10 @@ index 62d9fce83cc44165c5356049a12bf6081c925857..6d09c0de38f2c91d2a0ab6dd0b694ab4
|
||||
this.homePos = pos;
|
||||
}
|
||||
diff --git a/net/minecraft/world/entity/animal/wolf/Wolf.java b/net/minecraft/world/entity/animal/wolf/Wolf.java
|
||||
index 0ac4e30fd4f3158b5f53e9ba8bc70964907c63a2..cd7981c9c040e1b745e08680bf3685903cbda8ff 100644
|
||||
index f84b35919e49c1a86cbc4bdec1f9f81f2dac633d..1587bcafa4b338a98e60743faab0b2ce9b923444 100644
|
||||
--- a/net/minecraft/world/entity/animal/wolf/Wolf.java
|
||||
+++ b/net/minecraft/world/entity/animal/wolf/Wolf.java
|
||||
@@ -220,6 +220,13 @@ public class Wolf extends TamableAnimal implements NeutralMob {
|
||||
@@ -219,6 +219,13 @@ public class Wolf extends TamableAnimal implements NeutralMob {
|
||||
}
|
||||
// Purpur end - Make entity breeding times configurable
|
||||
|
||||
@@ -657,7 +657,7 @@ index 0ac4e30fd4f3158b5f53e9ba8bc70964907c63a2..cd7981c9c040e1b745e08680bf368590
|
||||
protected void registerGoals() {
|
||||
this.goalSelector.addGoal(1, new FloatGoal(this));
|
||||
diff --git a/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java b/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java
|
||||
index 89acbf42f9ce83c41bb2167e332e1b20e6e8fa56..26a525dc6458e9ebcc37dafa0d73518e65d54f42 100644
|
||||
index 9cdbb284c190f2130824c881000880958994013f..994939ffe86f9986b6879c5cf9f982f8e9535e37 100644
|
||||
--- a/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java
|
||||
+++ b/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java
|
||||
@@ -170,6 +170,13 @@ public class EnderDragon extends Mob implements Enemy {
|
||||
@@ -675,10 +675,10 @@ index 89acbf42f9ce83c41bb2167e332e1b20e6e8fa56..26a525dc6458e9ebcc37dafa0d73518e
|
||||
return Mob.createMobAttributes().add(Attributes.MAX_HEALTH, 200.0).add(Attributes.CAMERA_DISTANCE, 16.0);
|
||||
}
|
||||
diff --git a/net/minecraft/world/entity/boss/wither/WitherBoss.java b/net/minecraft/world/entity/boss/wither/WitherBoss.java
|
||||
index 30d9d12d67e2adb7d37c2a38ea1a5b528ba4ab06..5e206030d9ccabbefe9c64332125526030d65750 100644
|
||||
index 06f09cf81d1ad42beda79dbd5087c2d7264a9612..2a88f051740bba72bb48e7f23cbd12d216a2eb86 100644
|
||||
--- a/net/minecraft/world/entity/boss/wither/WitherBoss.java
|
||||
+++ b/net/minecraft/world/entity/boss/wither/WitherBoss.java
|
||||
@@ -222,6 +222,13 @@ public class WitherBoss extends Monster implements RangedAttackMob {
|
||||
@@ -221,6 +221,13 @@ public class WitherBoss extends Monster implements RangedAttackMob {
|
||||
}
|
||||
// Purpur end - Configurable entity base attributes
|
||||
|
||||
@@ -715,7 +715,7 @@ index b553c6dd60bd23fba7ee3df9886561fc7640f104..7f0e76437798f1bab7956722382e1517
|
||||
|
||||
@Override
|
||||
diff --git a/net/minecraft/world/entity/monster/Creeper.java b/net/minecraft/world/entity/monster/Creeper.java
|
||||
index 73b0efd692205f56862c7287d7222efebe3faf73..80327a6ba1da0145f087a7946c7a4dfb6d947ce7 100644
|
||||
index 01c722932aaed2221badaa6231d8a20d005b087b..2d60c5e6426097302464e04bcfdd60abd08b96b9 100644
|
||||
--- a/net/minecraft/world/entity/monster/Creeper.java
|
||||
+++ b/net/minecraft/world/entity/monster/Creeper.java
|
||||
@@ -266,6 +266,13 @@ public class Creeper extends Monster {
|
||||
@@ -751,7 +751,7 @@ index ffcfe02c51f6df1bd238c821a8d6535f4ccf019c..a98967c7a76d8e25da9e31eaa8f2ae0b
|
||||
return Guardian.createAttributes().add(Attributes.MOVEMENT_SPEED, 0.3F).add(Attributes.ATTACK_DAMAGE, 8.0).add(Attributes.MAX_HEALTH, 80.0);
|
||||
}
|
||||
diff --git a/net/minecraft/world/entity/monster/EnderMan.java b/net/minecraft/world/entity/monster/EnderMan.java
|
||||
index 46a60e17837411e46a543d6f0254d7280d30a94c..8862ad857a4c99defe7621c59d8f3ef77ab7aff4 100644
|
||||
index 3f233ad5cf2514813ec8d3d36a59f716615a8b18..2b02becb39f89ca02e42cf9e3df6cbfa8eba800f 100644
|
||||
--- a/net/minecraft/world/entity/monster/EnderMan.java
|
||||
+++ b/net/minecraft/world/entity/monster/EnderMan.java
|
||||
@@ -86,7 +86,7 @@ public class EnderMan extends Monster implements NeutralMob {
|
||||
@@ -773,7 +773,7 @@ index 46a60e17837411e46a543d6f0254d7280d30a94c..8862ad857a4c99defe7621c59d8f3ef7
|
||||
|
||||
@Override
|
||||
diff --git a/net/minecraft/world/entity/monster/Endermite.java b/net/minecraft/world/entity/monster/Endermite.java
|
||||
index 040f0b59d93b1b94495253f3286bdba123c22ef4..859d490dd3be2843dde3a811bcc0d51e3eae76f0 100644
|
||||
index c10982945974171e478690d2db5080551cb29cdb..099476663f734f00b4979de7c2d0f13da5bf4909 100644
|
||||
--- a/net/minecraft/world/entity/monster/Endermite.java
|
||||
+++ b/net/minecraft/world/entity/monster/Endermite.java
|
||||
@@ -72,6 +72,13 @@ public class Endermite extends Monster {
|
||||
@@ -791,7 +791,7 @@ index 040f0b59d93b1b94495253f3286bdba123c22ef4..859d490dd3be2843dde3a811bcc0d51e
|
||||
protected void registerGoals() {
|
||||
this.goalSelector.addGoal(1, new FloatGoal(this));
|
||||
diff --git a/net/minecraft/world/entity/monster/Ghast.java b/net/minecraft/world/entity/monster/Ghast.java
|
||||
index 4a786f17a7a8e6175775c4705445e9dff1b2aa7c..64800fe5cfb3488b63126ed09f1f678d6ebd1d3b 100644
|
||||
index 5ebb6dc59ee8a845a983de207e763e1df103a4f7..14c5c70853bc8bef677c12f7e1884f472c293609 100644
|
||||
--- a/net/minecraft/world/entity/monster/Ghast.java
|
||||
+++ b/net/minecraft/world/entity/monster/Ghast.java
|
||||
@@ -83,6 +83,13 @@ public class Ghast extends Mob implements Enemy {
|
||||
@@ -827,7 +827,7 @@ index c39031e8fdfb0dff7867d9525dbddde110242647..43ebfe06ce2a8c15787d72a8ef54cd6c
|
||||
return Monster.createMonsterAttributes()
|
||||
.add(Attributes.MAX_HEALTH, 100.0)
|
||||
diff --git a/net/minecraft/world/entity/monster/Guardian.java b/net/minecraft/world/entity/monster/Guardian.java
|
||||
index d5880eebf3c64dab03234ac55110645541413c4a..ea7e6a1b4dad1b702ddc5b6004c5ebdfd541334d 100644
|
||||
index 2616aab01c6c43fcc259c42c9d5c43fc73794caf..3acf963c26ef5f269a95cdf8fe0da248adf22c83 100644
|
||||
--- a/net/minecraft/world/entity/monster/Guardian.java
|
||||
+++ b/net/minecraft/world/entity/monster/Guardian.java
|
||||
@@ -97,6 +97,13 @@ public class Guardian extends Monster {
|
||||
@@ -863,10 +863,10 @@ index d40a4daeec1500f2d9865022ee6e3c386ad7533e..fba41f261e57a050d4e24d2611cc27ed
|
||||
return Monster.createMonsterAttributes().add(Attributes.MOVEMENT_SPEED, 0.2F);
|
||||
}
|
||||
diff --git a/net/minecraft/world/entity/monster/Phantom.java b/net/minecraft/world/entity/monster/Phantom.java
|
||||
index b3a79a6387fbf00c97da4452cb48e4808e5391be..646ec1cfc192e16939c9e3dac04b77d1429f82e3 100644
|
||||
index 03db90080675c879688c37e568dc25603b4972b1..b95449d4de57c42e604428e4f5a74fb1eb44746f 100644
|
||||
--- a/net/minecraft/world/entity/monster/Phantom.java
|
||||
+++ b/net/minecraft/world/entity/monster/Phantom.java
|
||||
@@ -129,6 +129,13 @@ public class Phantom extends Mob implements Enemy {
|
||||
@@ -128,6 +128,13 @@ public class Phantom extends Mob implements Enemy {
|
||||
}
|
||||
// Purpur end - Phantoms attracted to crystals and crystals shoot phantoms
|
||||
|
||||
@@ -899,10 +899,10 @@ index 01e09b39ac5385e7cbfa8a38df94884c17f8f8c0..3e0403635cb9ce3d0894705db6727d9a
|
||||
protected void registerGoals() {
|
||||
super.registerGoals();
|
||||
diff --git a/net/minecraft/world/entity/monster/Shulker.java b/net/minecraft/world/entity/monster/Shulker.java
|
||||
index 2ba213e85002f7c76e3dbd8b386ebbb0b11fa86b..67aa12ee4a58e7cd31efb47cd1d71eaa2cc6af7d 100644
|
||||
index b07dd45cf3ee07d8e51aa9473ee22fab577809c6..8e33c702bf4b6a2ad2af8e730f9fecef579ab2ad 100644
|
||||
--- a/net/minecraft/world/entity/monster/Shulker.java
|
||||
+++ b/net/minecraft/world/entity/monster/Shulker.java
|
||||
@@ -135,6 +135,13 @@ public class Shulker extends AbstractGolem implements Enemy {
|
||||
@@ -134,6 +134,13 @@ public class Shulker extends AbstractGolem implements Enemy {
|
||||
}
|
||||
// Purpur end - Configurable entity base attributes
|
||||
|
||||
@@ -917,7 +917,7 @@ index 2ba213e85002f7c76e3dbd8b386ebbb0b11fa86b..67aa12ee4a58e7cd31efb47cd1d71eaa
|
||||
protected void registerGoals() {
|
||||
this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - Ridables
|
||||
diff --git a/net/minecraft/world/entity/monster/Silverfish.java b/net/minecraft/world/entity/monster/Silverfish.java
|
||||
index e5a0a199685366f082904eb5e7550f0160f9c706..205c05f46d70d37e11a0e35c97128e0c20b94e23 100644
|
||||
index 34bb4c573f72b32931e47e5502a342a8d2283a6c..e6bc3451f2f5921c5f8773749962b4334328ac88 100644
|
||||
--- a/net/minecraft/world/entity/monster/Silverfish.java
|
||||
+++ b/net/minecraft/world/entity/monster/Silverfish.java
|
||||
@@ -65,6 +65,13 @@ public class Silverfish extends Monster {
|
||||
@@ -953,7 +953,7 @@ index f541ccef625ab0d560f4781c28ad7ae3b67196d6..834125d0ded28a1d7a39a3e5fcf6a5bb
|
||||
protected void registerGoals() {
|
||||
this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - Ridables
|
||||
diff --git a/net/minecraft/world/entity/monster/Strider.java b/net/minecraft/world/entity/monster/Strider.java
|
||||
index 38a17c219bce1a8a8a67b136e0eaf5cf15ec94fd..1b6137674d807ed29d56e3f3120abe60254274e1 100644
|
||||
index b6c20ce23cc1c97c337c5df6e03ad79a51c08702..eacbaa4a9c9eb30a29eade20b31860f9ec6e1a69 100644
|
||||
--- a/net/minecraft/world/entity/monster/Strider.java
|
||||
+++ b/net/minecraft/world/entity/monster/Strider.java
|
||||
@@ -87,7 +87,7 @@ public class Strider extends Animal implements ItemSteerable {
|
||||
@@ -975,10 +975,10 @@ index 38a17c219bce1a8a8a67b136e0eaf5cf15ec94fd..1b6137674d807ed29d56e3f3120abe60
|
||||
|
||||
@Override
|
||||
diff --git a/net/minecraft/world/entity/monster/Vex.java b/net/minecraft/world/entity/monster/Vex.java
|
||||
index 29e9a0deb5aa99800dc6554ad6bba36bbe6dd80e..917f256f072ba29ae77e4976dd4d49ffcb2a0e35 100644
|
||||
index 4b5aade3de8ff29943b58741db5e310851a33561..838edcb5267268fadfc913ea71f3fb4adbe94209 100644
|
||||
--- a/net/minecraft/world/entity/monster/Vex.java
|
||||
+++ b/net/minecraft/world/entity/monster/Vex.java
|
||||
@@ -111,6 +111,13 @@ public class Vex extends Monster implements TraceableEntity {
|
||||
@@ -110,6 +110,13 @@ public class Vex extends Monster implements TraceableEntity {
|
||||
}
|
||||
// Purpur end - Configurable entity base attributes
|
||||
|
||||
@@ -1047,10 +1047,10 @@ index d158807f22a0a08614b2d7054663ef2782a519e3..d001cf955dba66435079eb2cc30e05ae
|
||||
public void setTimeInOverworld(final int timeInOverworld) {
|
||||
this.timeInOverworld = timeInOverworld;
|
||||
diff --git a/net/minecraft/world/entity/monster/illager/Evoker.java b/net/minecraft/world/entity/monster/illager/Evoker.java
|
||||
index b6a84372a9d1486998a92fdfa1f44f2158c03a51..a766f1139459488accd0d720be3ff522e88c3d09 100644
|
||||
index 40fb26c7b0f5975a58d218d799fa391661e1c748..fe67813da3b3be09dad8f99a68685448b33fa5a9 100644
|
||||
--- a/net/minecraft/world/entity/monster/illager/Evoker.java
|
||||
+++ b/net/minecraft/world/entity/monster/illager/Evoker.java
|
||||
@@ -75,6 +75,13 @@ public class Evoker extends SpellcasterIllager {
|
||||
@@ -74,6 +74,13 @@ public class Evoker extends SpellcasterIllager {
|
||||
}
|
||||
// Purpur end - Configurable entity base attributes
|
||||
|
||||
@@ -1065,10 +1065,10 @@ index b6a84372a9d1486998a92fdfa1f44f2158c03a51..a766f1139459488accd0d720be3ff522
|
||||
protected void registerGoals() {
|
||||
super.registerGoals();
|
||||
diff --git a/net/minecraft/world/entity/monster/illager/Illusioner.java b/net/minecraft/world/entity/monster/illager/Illusioner.java
|
||||
index bc19b4c293a4101abd559c61c59021e076420b32..32b8f638ea26494cae648f4bb48a664ce2a5021e 100644
|
||||
index 0150ebdcbb681bcf8128eec34fd6e3fbfb85a79f..bfd1a61d43fcc1293592a6199d7bab0346f40c7f 100644
|
||||
--- a/net/minecraft/world/entity/monster/illager/Illusioner.java
|
||||
+++ b/net/minecraft/world/entity/monster/illager/Illusioner.java
|
||||
@@ -87,6 +87,13 @@ public class Illusioner extends SpellcasterIllager implements RangedAttackMob {
|
||||
@@ -86,6 +86,13 @@ public class Illusioner extends SpellcasterIllager implements RangedAttackMob {
|
||||
}
|
||||
// Purpur end - Configurable entity base attributes
|
||||
|
||||
@@ -1119,7 +1119,7 @@ index 865395b9ceddfaac4fc88701878a1cf349556fe1..aab0bd86da31ca73efc4988fa34c9068
|
||||
protected void registerGoals() {
|
||||
super.registerGoals();
|
||||
diff --git a/net/minecraft/world/entity/monster/piglin/Piglin.java b/net/minecraft/world/entity/monster/piglin/Piglin.java
|
||||
index 356fc7507b58cc38cdf5ee11618ad3551fb3c6a2..de86e23b377ca0727d5f5234f2bc63180ddbbad2 100644
|
||||
index d00490669c66343e37d2a54a051f02995e686c84..21674f5ee9bd89bfbcf36f43ba728a692934a886 100644
|
||||
--- a/net/minecraft/world/entity/monster/piglin/Piglin.java
|
||||
+++ b/net/minecraft/world/entity/monster/piglin/Piglin.java
|
||||
@@ -133,6 +133,13 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento
|
||||
@@ -1191,7 +1191,7 @@ index ce9364040d6e856fd1fa42baa75b403098e6813f..64dc2a04bb2ae4dc63083a24c48f671b
|
||||
final EntityType<Stray> type, final ServerLevelAccessor level, final EntitySpawnReason spawnReason, final BlockPos pos, final RandomSource random
|
||||
) {
|
||||
diff --git a/net/minecraft/world/entity/monster/skeleton/WitherSkeleton.java b/net/minecraft/world/entity/monster/skeleton/WitherSkeleton.java
|
||||
index 024b6d01eaf36ec6c9a85da669cc6bd0a4a6fc90..f1cf1d01a497fc46d201ad403b459f9886059d0f 100644
|
||||
index 0d370f992e5ef601d8032230c927164d760a95e1..2f3ff6eeae3103248512afb8cfd745f3e08c3eaf 100644
|
||||
--- a/net/minecraft/world/entity/monster/skeleton/WitherSkeleton.java
|
||||
+++ b/net/minecraft/world/entity/monster/skeleton/WitherSkeleton.java
|
||||
@@ -59,6 +59,13 @@ public class WitherSkeleton extends AbstractSkeleton {
|
||||
@@ -1245,7 +1245,7 @@ index 8834ecb96e3a6ec28f8700b23971d00136f26a4d..467ea1fd09b94747a03aaadd28a107d9
|
||||
protected void registerGoals() {
|
||||
this.goalSelector.addGoal(1, new FloatGoal(this));
|
||||
diff --git a/net/minecraft/world/entity/monster/zombie/Drowned.java b/net/minecraft/world/entity/monster/zombie/Drowned.java
|
||||
index 0f64fe7e15655c63f996106d504ab4d18dac4a1c..e4769eeacc3ac97f90acb5ed0127990466c8d886 100644
|
||||
index 8102352e1b59608b19a68f4e5080180c9a3999b5..3828001bed19114c23e5099c3716837f4d2c2314 100644
|
||||
--- a/net/minecraft/world/entity/monster/zombie/Drowned.java
|
||||
+++ b/net/minecraft/world/entity/monster/zombie/Drowned.java
|
||||
@@ -133,6 +133,13 @@ public class Drowned extends Zombie implements RangedAttackMob {
|
||||
@@ -1281,10 +1281,10 @@ index c3f2d9ab49eb501f26939387624f326227908b81..8d6262e99fb3ad98d3142ee069f07d23
|
||||
public boolean isSunSensitive() {
|
||||
return false;
|
||||
diff --git a/net/minecraft/world/entity/monster/zombie/Zombie.java b/net/minecraft/world/entity/monster/zombie/Zombie.java
|
||||
index bf94d8e9512eeb294914c748be091f6565cca676..6693ae88aa5780189faba8649346579f5b95b77e 100644
|
||||
index 4b7a00ae57526db73dda9f92a31a95c97b0bc41c..9b34ac54b4b23c826766f2d8b1098487090aac1e 100644
|
||||
--- a/net/minecraft/world/entity/monster/zombie/Zombie.java
|
||||
+++ b/net/minecraft/world/entity/monster/zombie/Zombie.java
|
||||
@@ -152,6 +152,13 @@ public class Zombie extends Monster {
|
||||
@@ -151,6 +151,13 @@ public class Zombie extends Monster {
|
||||
}
|
||||
// Purpur end - Configurable jockey options
|
||||
|
||||
@@ -1335,7 +1335,7 @@ index d1edf1f44de1fc6d23bcd8044f8bf4165821790e..6cc4d4729520c60b98d45d5e7dd674e5
|
||||
protected void addBehaviourGoals() {
|
||||
this.goalSelector.addGoal(1, new SpearUseGoal<>(this, 1.0, 1.0, 10.0F, 2.0F));
|
||||
diff --git a/net/minecraft/world/entity/npc/villager/Villager.java b/net/minecraft/world/entity/npc/villager/Villager.java
|
||||
index 27b2675059795b54b7d217442065bd50618ac7ae..033c9322234378c46e9a6e549d04f32135243ed9 100644
|
||||
index 744a7251f0ab9d7cb09ccdc7d1f0bbcd62483da1..fd0b329f56fa78d05be5348b42f3542fff7ebbe4 100644
|
||||
--- a/net/minecraft/world/entity/npc/villager/Villager.java
|
||||
+++ b/net/minecraft/world/entity/npc/villager/Villager.java
|
||||
@@ -284,6 +284,13 @@ public class Villager extends AbstractVillager implements VillagerDataHolder, Re
|
||||
@@ -1353,10 +1353,10 @@ index 27b2675059795b54b7d217442065bd50618ac7ae..033c9322234378c46e9a6e549d04f321
|
||||
public Brain<Villager> getBrain() {
|
||||
return (Brain<Villager>) super.getBrain();
|
||||
diff --git a/net/minecraft/world/entity/npc/wanderingtrader/WanderingTrader.java b/net/minecraft/world/entity/npc/wanderingtrader/WanderingTrader.java
|
||||
index ea74d8ac0b5de890124361e65aeb9a08ad09fa1b..cbbfa09d53ada7c39e9504d28770867989eaa5c1 100644
|
||||
index 292980e7445d969475332d18b158a0092ad847fe..b6e16bcfff9a74fdd2109d4a442344c07692c3d1 100644
|
||||
--- a/net/minecraft/world/entity/npc/wanderingtrader/WanderingTrader.java
|
||||
+++ b/net/minecraft/world/entity/npc/wanderingtrader/WanderingTrader.java
|
||||
@@ -99,6 +99,13 @@ public class WanderingTrader extends AbstractVillager implements Consumable.Over
|
||||
@@ -98,6 +98,13 @@ public class WanderingTrader extends AbstractVillager implements Consumable.Over
|
||||
}
|
||||
// Purpur end - Villagers follow emerald blocks
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@ Subject: [PATCH] API for any mob to burn daylight
|
||||
Co-authored by: Encode42 <me@encode42.dev>
|
||||
|
||||
diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java
|
||||
index 49c5c8ab8f3333d4d6a96643e7018905a533b645..a593c6408b007f67c2c8e534f0b40f6c17545d8d 100644
|
||||
index 241ff14c2c27204fc8615b19700f946afdcfa2d1..6807b1310c70cd50bf8a0c8828a1bb627bfe4fce 100644
|
||||
--- a/net/minecraft/world/entity/Entity.java
|
||||
+++ b/net/minecraft/world/entity/Entity.java
|
||||
@@ -558,6 +558,21 @@ public abstract class Entity
|
||||
@@ -32,7 +32,7 @@ index 49c5c8ab8f3333d4d6a96643e7018905a533b645..a593c6408b007f67c2c8e534f0b40f6c
|
||||
this.type = type;
|
||||
this.level = level;
|
||||
diff --git a/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java
|
||||
index 123cb2d5edfbfaec8ba3a2a2683bfb42ea79c36a..c7a0c22c93d4d025c64e9102d53e89da33d181b7 100644
|
||||
index af7a1eebe6f3d9876a1a730f4ca9b0814ed57332..76c520f115ab52b661828813cc15b698aa250021 100644
|
||||
--- a/net/minecraft/world/entity/LivingEntity.java
|
||||
+++ b/net/minecraft/world/entity/LivingEntity.java
|
||||
@@ -291,6 +291,7 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin
|
||||
@@ -51,7 +51,7 @@ index 123cb2d5edfbfaec8ba3a2a2683bfb42ea79c36a..c7a0c22c93d4d025c64e9102d53e89da
|
||||
if (this.lastHurtByPlayer != null) {
|
||||
this.lastHurtByPlayer.store(output, "last_hurt_by_player");
|
||||
output.putInt("last_hurt_by_player_memory_time", this.lastHurtByPlayerMemoryTime);
|
||||
@@ -912,6 +914,7 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin
|
||||
@@ -914,6 +916,7 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin
|
||||
} // Paper - The sleeping pos will always also set the actual pos, so a desync suggests something is wrong
|
||||
}, this::clearSleepingPos);
|
||||
input.read("Brain", Brain.Packed.CODEC).ifPresent(packedBrain -> this.brain = this.makeBrain(packedBrain));
|
||||
@@ -59,7 +59,7 @@ index 123cb2d5edfbfaec8ba3a2a2683bfb42ea79c36a..c7a0c22c93d4d025c64e9102d53e89da
|
||||
this.lastHurtByPlayer = EntityReference.read(input, "last_hurt_by_player");
|
||||
this.lastHurtByPlayerMemoryTime = input.getIntOr("last_hurt_by_player_memory_time", 0);
|
||||
this.lastHurtByMob = EntityReference.read(input, "last_hurt_by_mob");
|
||||
@@ -3907,6 +3910,37 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin
|
||||
@@ -3913,6 +3916,37 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin
|
||||
if (this.level() instanceof ServerLevel serverLevel && this.isSensitiveToWater() && this.isInWaterOrRain()) {
|
||||
this.hurtServer(serverLevel, this.damageSources().drown(), 1.0F);
|
||||
}
|
||||
@@ -98,7 +98,7 @@ index 123cb2d5edfbfaec8ba3a2a2683bfb42ea79c36a..c7a0c22c93d4d025c64e9102d53e89da
|
||||
|
||||
protected void applyInput() {
|
||||
diff --git a/net/minecraft/world/entity/Mob.java b/net/minecraft/world/entity/Mob.java
|
||||
index 6847463312a41f30cbca4116bfe5c9f2b56a451d..e367b708fb22f82aa315d38f4fb0a90c9f5f5ac7 100644
|
||||
index d5c50e5f5a850995d4636e155e5d51e190b7095c..9867e2ea9af7cf5d6d711742514e222fad55ce41 100644
|
||||
--- a/net/minecraft/world/entity/Mob.java
|
||||
+++ b/net/minecraft/world/entity/Mob.java
|
||||
@@ -556,9 +556,9 @@ public abstract class Mob extends LivingEntity implements Targeting, EquipmentUs
|
||||
@@ -157,10 +157,10 @@ index 18bfb321e3728d3fa0596da0b86e4b76ced2178a..ab97449bfa5e8b5615e0f2b6b16be2fe
|
||||
|
||||
// Purpur start - Configurable entity base attributes
|
||||
diff --git a/net/minecraft/world/entity/monster/Phantom.java b/net/minecraft/world/entity/monster/Phantom.java
|
||||
index 646ec1cfc192e16939c9e3dac04b77d1429f82e3..0f1081b448ce03498b471f7d3c2ff63deee13268 100644
|
||||
index b95449d4de57c42e604428e4f5a74fb1eb44746f..356f5c6e5534b1b36bcb5c44021e0e48194fb645 100644
|
||||
--- a/net/minecraft/world/entity/monster/Phantom.java
|
||||
+++ b/net/minecraft/world/entity/monster/Phantom.java
|
||||
@@ -53,7 +53,7 @@ public class Phantom extends Mob implements Enemy {
|
||||
@@ -52,7 +52,7 @@ public class Phantom extends Mob implements Enemy {
|
||||
Vec3 crystalPosition; // Purpur - Phantoms attracted to crystals and crystals shoot phantoms
|
||||
// Paper start
|
||||
public java.util.@Nullable UUID spawningEntity;
|
||||
@@ -169,7 +169,7 @@ index 646ec1cfc192e16939c9e3dac04b77d1429f82e3..0f1081b448ce03498b471f7d3c2ff63d
|
||||
// Paper end
|
||||
private static final net.minecraft.world.item.crafting.Ingredient TORCH = net.minecraft.world.item.crafting.Ingredient.of(net.minecraft.world.item.Items.TORCH, net.minecraft.world.item.Items.SOUL_TORCH); // Purpur - Phantoms burn in light
|
||||
|
||||
@@ -62,6 +62,7 @@ public class Phantom extends Mob implements Enemy {
|
||||
@@ -61,6 +61,7 @@ public class Phantom extends Mob implements Enemy {
|
||||
this.xpReward = 5;
|
||||
this.moveControl = new Phantom.PhantomMoveControl(this);
|
||||
this.lookControl = new Phantom.PhantomLookControl(this);
|
||||
@@ -177,7 +177,7 @@ index 646ec1cfc192e16939c9e3dac04b77d1429f82e3..0f1081b448ce03498b471f7d3c2ff63d
|
||||
}
|
||||
|
||||
// Purpur start - Ridables
|
||||
@@ -298,7 +299,7 @@ public class Phantom extends Mob implements Enemy {
|
||||
@@ -297,7 +298,7 @@ public class Phantom extends Mob implements Enemy {
|
||||
this.setPhantomSize(input.getIntOr("size", 0));
|
||||
// Paper start
|
||||
this.spawningEntity = input.read("Paper.SpawningEntity", net.minecraft.core.UUIDUtil.CODEC).orElse(null);
|
||||
@@ -186,7 +186,7 @@ index 646ec1cfc192e16939c9e3dac04b77d1429f82e3..0f1081b448ce03498b471f7d3c2ff63d
|
||||
// Paper end
|
||||
}
|
||||
|
||||
@@ -309,7 +310,7 @@ public class Phantom extends Mob implements Enemy {
|
||||
@@ -308,7 +309,7 @@ public class Phantom extends Mob implements Enemy {
|
||||
output.putInt("size", this.getPhantomSize());
|
||||
// Paper start
|
||||
output.storeNullable("Paper.SpawningEntity", net.minecraft.core.UUIDUtil.CODEC, this.spawningEntity);
|
||||
@@ -196,10 +196,10 @@ index 646ec1cfc192e16939c9e3dac04b77d1429f82e3..0f1081b448ce03498b471f7d3c2ff63d
|
||||
}
|
||||
|
||||
diff --git a/net/minecraft/world/entity/monster/skeleton/AbstractSkeleton.java b/net/minecraft/world/entity/monster/skeleton/AbstractSkeleton.java
|
||||
index 32da5212c85c829eeedc9d0f7904bbcaa3ce5ed3..062c7f20e73b882ef0550d90e3da47ac39a1b3a7 100644
|
||||
index 695dca87fc3ef633290f9abe1089e7a6a0e7feb9..d02869b5c17378abf18b4ba3514e8916c62b904c 100644
|
||||
--- a/net/minecraft/world/entity/monster/skeleton/AbstractSkeleton.java
|
||||
+++ b/net/minecraft/world/entity/monster/skeleton/AbstractSkeleton.java
|
||||
@@ -71,11 +71,12 @@ public abstract class AbstractSkeleton extends Monster implements RangedAttackMo
|
||||
@@ -66,11 +66,12 @@ public abstract class AbstractSkeleton extends Monster implements RangedAttackMo
|
||||
AbstractSkeleton.this.setAggressive(true);
|
||||
}
|
||||
};
|
||||
@@ -213,7 +213,7 @@ index 32da5212c85c829eeedc9d0f7904bbcaa3ce5ed3..062c7f20e73b882ef0550d90e3da47ac
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -228,7 +229,7 @@ public abstract class AbstractSkeleton extends Monster implements RangedAttackMo
|
||||
@@ -223,7 +224,7 @@ public abstract class AbstractSkeleton extends Monster implements RangedAttackMo
|
||||
protected void readAdditionalSaveData(final ValueInput input) {
|
||||
super.readAdditionalSaveData(input);
|
||||
this.reassessWeaponGoal();
|
||||
@@ -222,7 +222,7 @@ index 32da5212c85c829eeedc9d0f7904bbcaa3ce5ed3..062c7f20e73b882ef0550d90e3da47ac
|
||||
}
|
||||
|
||||
// Paper start - silent equipping
|
||||
@@ -254,7 +255,7 @@ public abstract class AbstractSkeleton extends Monster implements RangedAttackMo
|
||||
@@ -249,7 +250,7 @@ public abstract class AbstractSkeleton extends Monster implements RangedAttackMo
|
||||
@Override
|
||||
protected void addAdditionalSaveData(final net.minecraft.world.level.storage.ValueOutput output) {
|
||||
super.addAdditionalSaveData(output);
|
||||
@@ -265,10 +265,10 @@ index 8d6262e99fb3ad98d3142ee069f07d2370ca0778..02e935edd7a6cabbf2e6fcc6c96a9601
|
||||
|
||||
@Override
|
||||
diff --git a/net/minecraft/world/entity/monster/zombie/Zombie.java b/net/minecraft/world/entity/monster/zombie/Zombie.java
|
||||
index 6693ae88aa5780189faba8649346579f5b95b77e..f8eccfab70e7d99dd74965a506837e620515b6d1 100644
|
||||
index 9b34ac54b4b23c826766f2d8b1098487090aac1e..92be49434eb76fa0774864af73b0a460f49b6a32 100644
|
||||
--- a/net/minecraft/world/entity/monster/zombie/Zombie.java
|
||||
+++ b/net/minecraft/world/entity/monster/zombie/Zombie.java
|
||||
@@ -102,11 +102,12 @@ public class Zombie extends Monster {
|
||||
@@ -101,11 +101,12 @@ public class Zombie extends Monster {
|
||||
private boolean canBreakDoors = false;
|
||||
private int inWaterTime = 0;
|
||||
public int conversionTime;
|
||||
@@ -282,7 +282,7 @@ index 6693ae88aa5780189faba8649346579f5b95b77e..f8eccfab70e7d99dd74965a506837e62
|
||||
}
|
||||
|
||||
public Zombie(final Level level) {
|
||||
@@ -364,6 +365,7 @@ public class Zombie extends Monster {
|
||||
@@ -363,6 +364,7 @@ public class Zombie extends Monster {
|
||||
// CraftBukkit end
|
||||
}
|
||||
|
||||
@@ -290,7 +290,7 @@ index 6693ae88aa5780189faba8649346579f5b95b77e..f8eccfab70e7d99dd74965a506837e62
|
||||
public boolean isSunSensitive() {
|
||||
return this.shouldBurnInDay; // Paper - Add more Zombie API
|
||||
}
|
||||
@@ -505,7 +507,7 @@ public class Zombie extends Monster {
|
||||
@@ -502,7 +504,7 @@ public class Zombie extends Monster {
|
||||
output.putBoolean("CanBreakDoors", this.canBreakDoors());
|
||||
output.putInt("InWaterTime", this.isInWater() ? this.inWaterTime : -1);
|
||||
output.putInt("DrownedConversionTime", this.isUnderWaterConverting() ? this.conversionTime : -1);
|
||||
@@ -299,7 +299,7 @@ index 6693ae88aa5780189faba8649346579f5b95b77e..f8eccfab70e7d99dd74965a506837e62
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -520,7 +522,7 @@ public class Zombie extends Monster {
|
||||
@@ -517,7 +519,7 @@ public class Zombie extends Monster {
|
||||
} else {
|
||||
this.getEntityData().set(DATA_DROWNED_CONVERSION_ID, false);
|
||||
}
|
||||
|
||||
@@ -5,7 +5,7 @@ Subject: [PATCH] Mobs always drop experience
|
||||
|
||||
|
||||
diff --git a/net/minecraft/world/entity/ambient/Bat.java b/net/minecraft/world/entity/ambient/Bat.java
|
||||
index 15bb425ed1569cbf445e81aa296039df8abc4746..1dfc4f04169b60c917d9df58b4217adcb80470f8 100644
|
||||
index 626463a20f49c807eae86b30fe38c514311abd88..237408b7dc923b04addba1d671ad07fb3e18cdda 100644
|
||||
--- a/net/minecraft/world/entity/ambient/Bat.java
|
||||
+++ b/net/minecraft/world/entity/ambient/Bat.java
|
||||
@@ -116,6 +116,13 @@ public class Bat extends AmbientCreature {
|
||||
@@ -23,10 +23,10 @@ index 15bb425ed1569cbf445e81aa296039df8abc4746..1dfc4f04169b60c917d9df58b4217adc
|
||||
public boolean isFlapping() {
|
||||
return !this.isResting() && this.tickCount % 10.0F == 0.0F;
|
||||
diff --git a/net/minecraft/world/entity/animal/axolotl/Axolotl.java b/net/minecraft/world/entity/animal/axolotl/Axolotl.java
|
||||
index a3a98df8ffeb33d86330b5561252eda596642da8..85986d2dc0c12a34f990e4262f79f813c9ff4cdf 100644
|
||||
index 72583935d49eb513e1e3211863865f154e742aeb..374c980e28f250e67fc045e9e1080aabe952710d 100644
|
||||
--- a/net/minecraft/world/entity/animal/axolotl/Axolotl.java
|
||||
+++ b/net/minecraft/world/entity/animal/axolotl/Axolotl.java
|
||||
@@ -157,6 +157,13 @@ public class Axolotl extends Animal implements Bucketable {
|
||||
@@ -156,6 +156,13 @@ public class Axolotl extends Animal implements Bucketable {
|
||||
}
|
||||
// Purpur end - Toggle for water sensitive mob damage
|
||||
|
||||
@@ -41,10 +41,10 @@ index a3a98df8ffeb33d86330b5561252eda596642da8..85986d2dc0c12a34f990e4262f79f813
|
||||
public float getWalkTargetValue(final BlockPos pos, final LevelReader level) {
|
||||
return 0.0F;
|
||||
diff --git a/net/minecraft/world/entity/animal/bee/Bee.java b/net/minecraft/world/entity/animal/bee/Bee.java
|
||||
index e85c33e4d0d19d4e7f8ef837ec0a611e19bc19e4..15b48d4b8de0eb2e59667aee9e62c254995e5600 100644
|
||||
index df53953b532ebb4cdc78ea1e1cab0b0ed48ce960..d344b4bb8515fb66d1ed33a0e6870c96927e6c72 100644
|
||||
--- a/net/minecraft/world/entity/animal/bee/Bee.java
|
||||
+++ b/net/minecraft/world/entity/animal/bee/Bee.java
|
||||
@@ -502,6 +502,13 @@ public class Bee extends Animal implements FlyingAnimal, NeutralMob {
|
||||
@@ -501,6 +501,13 @@ public class Bee extends Animal implements FlyingAnimal, NeutralMob {
|
||||
}
|
||||
// Purpur end - Toggle for water sensitive mob damage
|
||||
|
||||
@@ -95,7 +95,7 @@ index cdd404f64e196629dd61035675aac984619f1e1c..8e90f9163bcd93691bb40d1db02e0638
|
||||
protected void registerGoals() {
|
||||
super.registerGoals();
|
||||
diff --git a/net/minecraft/world/entity/animal/cow/MushroomCow.java b/net/minecraft/world/entity/animal/cow/MushroomCow.java
|
||||
index d3e5e12c4e3c168a3a15d611f8ae5845ee365080..07a1df530fcd5d684cbba4414ea0fa2010cbdb5b 100644
|
||||
index 9bdc0bb89e554957c70d97e6ca60f1c4aa1ef91b..39595cc7d2a74e067beb9c9f9c07c941d34b10ed 100644
|
||||
--- a/net/minecraft/world/entity/animal/cow/MushroomCow.java
|
||||
+++ b/net/minecraft/world/entity/animal/cow/MushroomCow.java
|
||||
@@ -99,6 +99,13 @@ public class MushroomCow extends AbstractCow implements Shearable {
|
||||
@@ -113,7 +113,7 @@ index d3e5e12c4e3c168a3a15d611f8ae5845ee365080..07a1df530fcd5d684cbba4414ea0fa20
|
||||
public float getWalkTargetValue(final BlockPos pos, final LevelReader level) {
|
||||
return level.getBlockState(pos.below()).is(Blocks.MYCELIUM) ? 10.0F : level.getPathfindingCostFromLightLevels(pos);
|
||||
diff --git a/net/minecraft/world/entity/animal/dolphin/Dolphin.java b/net/minecraft/world/entity/animal/dolphin/Dolphin.java
|
||||
index 0cab39846b6ad5d0e0ce627d6a84f73340fcd328..5e966f61ab5a48c6fc7168af3680ab3133d89365 100644
|
||||
index 58ce1ab82ab9883853eeffd103a1b72053c59798..048deece8e45f51d3bad36ef0afd39847086aa9f 100644
|
||||
--- a/net/minecraft/world/entity/animal/dolphin/Dolphin.java
|
||||
+++ b/net/minecraft/world/entity/animal/dolphin/Dolphin.java
|
||||
@@ -169,6 +169,13 @@ public class Dolphin extends AgeableWaterCreature {
|
||||
@@ -167,7 +167,7 @@ index 64603ad973bdb697ca75642e8e42e7052efd4191..5d643be94db358e4093cbb00659a4e90
|
||||
protected void randomizeAttributes(final RandomSource random) {
|
||||
this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(generateMaxHealth(random::nextInt));
|
||||
diff --git a/net/minecraft/world/entity/animal/equine/Llama.java b/net/minecraft/world/entity/animal/equine/Llama.java
|
||||
index c56d6f3a8a0c5a95da49ab34c72659872259a723..6a59ee64c539c36633ad23c1bcc53cec9426bce5 100644
|
||||
index 4b7a9c76df89cb0494db9375940bc219093f04c1..36cc05946f0760eb7b5f3523e12a58a836161e87 100644
|
||||
--- a/net/minecraft/world/entity/animal/equine/Llama.java
|
||||
+++ b/net/minecraft/world/entity/animal/equine/Llama.java
|
||||
@@ -165,6 +165,13 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob {
|
||||
@@ -203,7 +203,7 @@ index 291176b409097d15c2afff7fe8deb17ba07dbc12..8425956ded89a1ffe5a56f410f155092
|
||||
public SoundEvent getAmbientSound() {
|
||||
return SoundEvents.MULE_AMBIENT;
|
||||
diff --git a/net/minecraft/world/entity/animal/equine/SkeletonHorse.java b/net/minecraft/world/entity/animal/equine/SkeletonHorse.java
|
||||
index 9365609fad67377ffe18e11c7959e0d92367852a..16b26b4c19681b48fef9110e050145c736097adb 100644
|
||||
index 02aa9a838e0cbd62bc0a2e0f30e0cfc9a3995a41..ed25701549c7453be446b29b9f08d2093388e679 100644
|
||||
--- a/net/minecraft/world/entity/animal/equine/SkeletonHorse.java
|
||||
+++ b/net/minecraft/world/entity/animal/equine/SkeletonHorse.java
|
||||
@@ -81,6 +81,13 @@ public class SkeletonHorse extends AbstractHorse {
|
||||
@@ -257,7 +257,7 @@ index 426b468ee821a7441d15dae3634032535cb60725..54cbd5136997bdec34df0f822e21ffe5
|
||||
return createBaseHorseAttributes().add(Attributes.MAX_HEALTH, 25.0);
|
||||
}
|
||||
diff --git a/net/minecraft/world/entity/animal/feline/Cat.java b/net/minecraft/world/entity/animal/feline/Cat.java
|
||||
index 966b2cbc5b4f71d2cfa8759c2263407ee73c3d8e..d28e2ed6e08b708a8eb17645c8406b5d04110500 100644
|
||||
index 609cf964f5020728321da2e08ccd94dc925cc4c7..007e1ed1eae0d04a086bd7682351638d3d65a90d 100644
|
||||
--- a/net/minecraft/world/entity/animal/feline/Cat.java
|
||||
+++ b/net/minecraft/world/entity/animal/feline/Cat.java
|
||||
@@ -142,6 +142,13 @@ public class Cat extends TamableAnimal {
|
||||
@@ -329,7 +329,7 @@ index a0f1ea76011dc3aa6e8a702528062f5fafe07e01..a6ac30e39b15493cdee194a79d744d85
|
||||
protected void defineSynchedData(final SynchedEntityData.Builder entityData) {
|
||||
super.defineSynchedData(entityData);
|
||||
diff --git a/net/minecraft/world/entity/animal/fish/Salmon.java b/net/minecraft/world/entity/animal/fish/Salmon.java
|
||||
index ba75ba1130c4fe5f4d7b29c624a17becd2a71c99..ca5cc7569205b450e53d6e8feb87ecaa2169a67f 100644
|
||||
index ddf23647e17bdb04babae1832486efb52ab9f81a..97d8471bd04a6098653dbfbd07dbea97aeafc821 100644
|
||||
--- a/net/minecraft/world/entity/animal/fish/Salmon.java
|
||||
+++ b/net/minecraft/world/entity/animal/fish/Salmon.java
|
||||
@@ -67,6 +67,13 @@ public class Salmon extends AbstractSchoolingFish {
|
||||
@@ -347,7 +347,7 @@ index ba75ba1130c4fe5f4d7b29c624a17becd2a71c99..ca5cc7569205b450e53d6e8feb87ecaa
|
||||
public int getMaxSchoolSize() {
|
||||
return 5;
|
||||
diff --git a/net/minecraft/world/entity/animal/fish/TropicalFish.java b/net/minecraft/world/entity/animal/fish/TropicalFish.java
|
||||
index 17bc569bf97026e2c072633f1ad6e9e0102c137a..fc500f1ca1d4280519f418cac21688c3632d251b 100644
|
||||
index dc2800dd2f4c9f71c79d9f012be17398263d033d..adb530b59ce6080e281aad21e2165fd1cea5b561 100644
|
||||
--- a/net/minecraft/world/entity/animal/fish/TropicalFish.java
|
||||
+++ b/net/minecraft/world/entity/animal/fish/TropicalFish.java
|
||||
@@ -103,6 +103,13 @@ public class TropicalFish extends AbstractSchoolingFish {
|
||||
@@ -365,10 +365,10 @@ index 17bc569bf97026e2c072633f1ad6e9e0102c137a..fc500f1ca1d4280519f418cac21688c3
|
||||
return "entity.minecraft.tropical_fish.predefined." + index;
|
||||
}
|
||||
diff --git a/net/minecraft/world/entity/animal/fox/Fox.java b/net/minecraft/world/entity/animal/fox/Fox.java
|
||||
index c70e04d20e37b7063618805016d24a459ee65c91..66001fb6a7264e70f3172ea50c97d0a26214a5fd 100644
|
||||
index e74adaebbf28247e8bc85671ca294c9d9843ca08..ea23a64654ebaaf97fe9e5c0eab0f31f54d94d22 100644
|
||||
--- a/net/minecraft/world/entity/animal/fox/Fox.java
|
||||
+++ b/net/minecraft/world/entity/animal/fox/Fox.java
|
||||
@@ -215,6 +215,13 @@ public class Fox extends Animal {
|
||||
@@ -214,6 +214,13 @@ public class Fox extends Animal {
|
||||
}
|
||||
// Purpur end - Toggle for water sensitive mob damage
|
||||
|
||||
@@ -383,7 +383,7 @@ index c70e04d20e37b7063618805016d24a459ee65c91..66001fb6a7264e70f3172ea50c97d0a2
|
||||
protected void defineSynchedData(final SynchedEntityData.Builder entityData) {
|
||||
super.defineSynchedData(entityData);
|
||||
diff --git a/net/minecraft/world/entity/animal/goat/Goat.java b/net/minecraft/world/entity/animal/goat/Goat.java
|
||||
index 24cccc6afadfc91feb6157882c1b76da0d3657d1..ae262e0956a7f468d01a669f827f0c08142804fa 100644
|
||||
index ea0aace589356cb2719925d5287bc5672eb45993..88e672d51a8b7b74e7760529ed3fdb8835be795e 100644
|
||||
--- a/net/minecraft/world/entity/animal/goat/Goat.java
|
||||
+++ b/net/minecraft/world/entity/animal/goat/Goat.java
|
||||
@@ -131,6 +131,13 @@ public class Goat extends Animal {
|
||||
@@ -401,7 +401,7 @@ index 24cccc6afadfc91feb6157882c1b76da0d3657d1..ae262e0956a7f468d01a669f827f0c08
|
||||
protected Brain<Goat> makeBrain(final Brain.Packed packedBrain) {
|
||||
return BRAIN_PROVIDER.makeBrain(this, packedBrain);
|
||||
diff --git a/net/minecraft/world/entity/animal/golem/CopperGolem.java b/net/minecraft/world/entity/animal/golem/CopperGolem.java
|
||||
index 078cb2f09e9aaf05bb965a27b90f34c7c3a4147d..019aec1465be095edff6952a1f36041f030f7cb0 100644
|
||||
index ac416c47f86b2ec4c8c58a24491b81504e3a8212..eb93463395c8a580faa7c5d0aaa8bf11cdd05f2d 100644
|
||||
--- a/net/minecraft/world/entity/animal/golem/CopperGolem.java
|
||||
+++ b/net/minecraft/world/entity/animal/golem/CopperGolem.java
|
||||
@@ -151,6 +151,13 @@ public class CopperGolem extends AbstractGolem implements ContainerUser, Shearab
|
||||
@@ -419,7 +419,7 @@ index 078cb2f09e9aaf05bb965a27b90f34c7c3a4147d..019aec1465be095edff6952a1f36041f
|
||||
return Mob.createMobAttributes().add(Attributes.MOVEMENT_SPEED, 0.2F).add(Attributes.STEP_HEIGHT, 1.0).add(Attributes.MAX_HEALTH, 12.0);
|
||||
}
|
||||
diff --git a/net/minecraft/world/entity/animal/golem/IronGolem.java b/net/minecraft/world/entity/animal/golem/IronGolem.java
|
||||
index 77996312597da9a2bbcf89f798c10a0be0abcd39..880a53a2f023f5bd4a112a964aceee6dcac109b1 100644
|
||||
index 305b6b9b5575c9351990d36f3bd2e9721a00dc2b..fa1fb6251e1a50517a2282a933a67cc192570edb 100644
|
||||
--- a/net/minecraft/world/entity/animal/golem/IronGolem.java
|
||||
+++ b/net/minecraft/world/entity/animal/golem/IronGolem.java
|
||||
@@ -106,6 +106,13 @@ public class IronGolem extends AbstractGolem implements NeutralMob {
|
||||
@@ -455,10 +455,10 @@ index 2d3127f6846ff9eda1a0b89764dc837da6e7e0c7..ffb0e9cc4f8604fd03cb3a2412001182
|
||||
protected void registerGoals() {
|
||||
this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - Ridables
|
||||
diff --git a/net/minecraft/world/entity/animal/happyghast/HappyGhast.java b/net/minecraft/world/entity/animal/happyghast/HappyGhast.java
|
||||
index a73d8d3eb04602eac78f142c336e464de22ecc83..aed715317114374213bfb60b18a5bf57632459f8 100644
|
||||
index 2ab9e28e84193ea76e09008a230fbdeb5acbf4c1..790b061344b9e3c500a388bddd158bc4221fb41d 100644
|
||||
--- a/net/minecraft/world/entity/animal/happyghast/HappyGhast.java
|
||||
+++ b/net/minecraft/world/entity/animal/happyghast/HappyGhast.java
|
||||
@@ -168,6 +168,13 @@ public class HappyGhast extends Animal {
|
||||
@@ -167,6 +167,13 @@ public class HappyGhast extends Animal {
|
||||
}
|
||||
// Purpur end - Toggle for water sensitive mob damage
|
||||
|
||||
@@ -509,10 +509,10 @@ index ab97449bfa5e8b5615e0f2b6b16be2fe7e4233fd..869cec108d33626362400e9aa4890a92
|
||||
return AbstractNautilus.createAttributes().add(Attributes.MOVEMENT_SPEED, 1.1F);
|
||||
}
|
||||
diff --git a/net/minecraft/world/entity/animal/panda/Panda.java b/net/minecraft/world/entity/animal/panda/Panda.java
|
||||
index 2f9f588c384d133f82bb4b2d08c8f7c7a72c0915..0480c5851ff94e095bc54106051d0ca4d2db82e0 100644
|
||||
index 4249aff88a1768f2f2184a09efe730752545b164..f509b3a3a8f1021d5292ec6ed0a6a91e09787754 100644
|
||||
--- a/net/minecraft/world/entity/animal/panda/Panda.java
|
||||
+++ b/net/minecraft/world/entity/animal/panda/Panda.java
|
||||
@@ -160,6 +160,13 @@ public class Panda extends Animal {
|
||||
@@ -159,6 +159,13 @@ public class Panda extends Animal {
|
||||
}
|
||||
// Purpur end - Toggle for water sensitive mob damage
|
||||
|
||||
@@ -527,7 +527,7 @@ index 2f9f588c384d133f82bb4b2d08c8f7c7a72c0915..0480c5851ff94e095bc54106051d0ca4
|
||||
protected boolean canDispenserEquipIntoSlot(final EquipmentSlot slot) {
|
||||
return slot == EquipmentSlot.MAINHAND && this.canPickUpLoot();
|
||||
diff --git a/net/minecraft/world/entity/animal/parrot/Parrot.java b/net/minecraft/world/entity/animal/parrot/Parrot.java
|
||||
index d756d6931dbf560fef5cb9641ace6f091fbcfff9..5abbc7ef864dde0ae05ae0520518997520e8bcf6 100644
|
||||
index 0f5da739a7bed82a1ccef173d379a78981f37939..6df09c069c56fdcea4d44423d2c8cdba088ea305 100644
|
||||
--- a/net/minecraft/world/entity/animal/parrot/Parrot.java
|
||||
+++ b/net/minecraft/world/entity/animal/parrot/Parrot.java
|
||||
@@ -221,6 +221,13 @@ public class Parrot extends ShoulderRidingEntity implements FlyingAnimal {
|
||||
@@ -545,7 +545,7 @@ index d756d6931dbf560fef5cb9641ace6f091fbcfff9..5abbc7ef864dde0ae05ae05205189975
|
||||
public @Nullable SpawnGroupData finalizeSpawn(
|
||||
final ServerLevelAccessor level, final DifficultyInstance difficulty, final EntitySpawnReason spawnReason, @Nullable SpawnGroupData groupData
|
||||
diff --git a/net/minecraft/world/entity/animal/pig/Pig.java b/net/minecraft/world/entity/animal/pig/Pig.java
|
||||
index 05141bc41dc5181a8f0526528147e7a6c015a707..d699b79ffc603555213434fecc389b1882c1eef0 100644
|
||||
index 5413851446237e7984c8da4172c31b0dd9affc60..93ebe564d7ee8220c624058e4ae1d5ae6aa59e5d 100644
|
||||
--- a/net/minecraft/world/entity/animal/pig/Pig.java
|
||||
+++ b/net/minecraft/world/entity/animal/pig/Pig.java
|
||||
@@ -107,6 +107,13 @@ public class Pig extends Animal implements ItemSteerable {
|
||||
@@ -563,10 +563,10 @@ index 05141bc41dc5181a8f0526528147e7a6c015a707..d699b79ffc603555213434fecc389b18
|
||||
protected void registerGoals() {
|
||||
this.goalSelector.addGoal(0, new FloatGoal(this));
|
||||
diff --git a/net/minecraft/world/entity/animal/polarbear/PolarBear.java b/net/minecraft/world/entity/animal/polarbear/PolarBear.java
|
||||
index 2a28c9ef361909aa0c3946ed6857f7d340c8cfc0..5e218adce80f2d8d64cca54894abffaf6eb0baa0 100644
|
||||
index a9e64a4053755050099cdcaef870a0099a867575..ee3bc947ef81ea27b02135c0f0ea6d6168ca9fbd 100644
|
||||
--- a/net/minecraft/world/entity/animal/polarbear/PolarBear.java
|
||||
+++ b/net/minecraft/world/entity/animal/polarbear/PolarBear.java
|
||||
@@ -141,6 +141,13 @@ public class PolarBear extends Animal implements NeutralMob {
|
||||
@@ -140,6 +140,13 @@ public class PolarBear extends Animal implements NeutralMob {
|
||||
}
|
||||
// Purpur end - Toggle for water sensitive mob damage
|
||||
|
||||
@@ -581,7 +581,7 @@ index 2a28c9ef361909aa0c3946ed6857f7d340c8cfc0..5e218adce80f2d8d64cca54894abffaf
|
||||
public @Nullable AgeableMob getBreedOffspring(final ServerLevel level, final AgeableMob partner) {
|
||||
return EntityType.POLAR_BEAR.create(level, EntitySpawnReason.BREEDING);
|
||||
diff --git a/net/minecraft/world/entity/animal/rabbit/Rabbit.java b/net/minecraft/world/entity/animal/rabbit/Rabbit.java
|
||||
index 7dade80db9430e4db587ed23df992d70c6b7ee04..937ce47e45698392fad3fdc6eeb85e7869b679de 100644
|
||||
index 9116e659fff5daf09257739f6c04e32d1dfc70ca..a6ccaafe6c025bda6b82be87ff4689117cc7fbf3 100644
|
||||
--- a/net/minecraft/world/entity/animal/rabbit/Rabbit.java
|
||||
+++ b/net/minecraft/world/entity/animal/rabbit/Rabbit.java
|
||||
@@ -184,6 +184,13 @@ public class Rabbit extends Animal {
|
||||
@@ -635,7 +635,7 @@ index 1fa3d614dd1c45ec42caffbe92e3f8db02b399b1..0f4587df333a68627d6db18c0583ae1e
|
||||
protected ParticleOptions getInkParticle() {
|
||||
return ParticleTypes.GLOW_SQUID_INK;
|
||||
diff --git a/net/minecraft/world/entity/animal/squid/Squid.java b/net/minecraft/world/entity/animal/squid/Squid.java
|
||||
index 8b26b08956e63d3ccb9a7006cfa57ac3771339ad..3f197daef44cafb00390d0e429eceae8505d9c1d 100644
|
||||
index 2b2272122a7ebaed6a995d09dab7a3db3ee0c594..d3809367a849ac56a0e57b5b2af01695d5a30193 100644
|
||||
--- a/net/minecraft/world/entity/animal/squid/Squid.java
|
||||
+++ b/net/minecraft/world/entity/animal/squid/Squid.java
|
||||
@@ -111,6 +111,13 @@ public class Squid extends AgeableWaterCreature {
|
||||
@@ -671,10 +671,10 @@ index 6d09c0de38f2c91d2a0ab6dd0b694ab42b48a981..37345edf599a43ac48274e30f5d7aa34
|
||||
this.homePos = pos;
|
||||
}
|
||||
diff --git a/net/minecraft/world/entity/animal/wolf/Wolf.java b/net/minecraft/world/entity/animal/wolf/Wolf.java
|
||||
index cd7981c9c040e1b745e08680bf3685903cbda8ff..12f7874e28ae964c7d68bee4a4c3ac0a47b369ba 100644
|
||||
index 1587bcafa4b338a98e60743faab0b2ce9b923444..cf7e5a02b83dcf7d5d2b6121ebee0940600ebbba 100644
|
||||
--- a/net/minecraft/world/entity/animal/wolf/Wolf.java
|
||||
+++ b/net/minecraft/world/entity/animal/wolf/Wolf.java
|
||||
@@ -227,6 +227,13 @@ public class Wolf extends TamableAnimal implements NeutralMob {
|
||||
@@ -226,6 +226,13 @@ public class Wolf extends TamableAnimal implements NeutralMob {
|
||||
}
|
||||
// Purpur end - Toggle for water sensitive mob damage
|
||||
|
||||
@@ -689,10 +689,10 @@ index cd7981c9c040e1b745e08680bf3685903cbda8ff..12f7874e28ae964c7d68bee4a4c3ac0a
|
||||
protected void registerGoals() {
|
||||
this.goalSelector.addGoal(1, new FloatGoal(this));
|
||||
diff --git a/net/minecraft/world/entity/boss/wither/WitherBoss.java b/net/minecraft/world/entity/boss/wither/WitherBoss.java
|
||||
index 5e206030d9ccabbefe9c64332125526030d65750..a94d2d9bc5a5795a0c88348a61dff936d31d12b5 100644
|
||||
index 2a88f051740bba72bb48e7f23cbd12d216a2eb86..a043a320afc2d6e4780bb7382e0c4d0bd1d12ea8 100644
|
||||
--- a/net/minecraft/world/entity/boss/wither/WitherBoss.java
|
||||
+++ b/net/minecraft/world/entity/boss/wither/WitherBoss.java
|
||||
@@ -229,6 +229,13 @@ public class WitherBoss extends Monster implements RangedAttackMob {
|
||||
@@ -228,6 +228,13 @@ public class WitherBoss extends Monster implements RangedAttackMob {
|
||||
}
|
||||
// Purpur end - Toggle for water sensitive mob damage
|
||||
|
||||
@@ -725,7 +725,7 @@ index 7f0e76437798f1bab7956722382e1517f8f71121..257563b578762837cbea855fa42831f3
|
||||
protected void registerGoals() {
|
||||
this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - Ridables
|
||||
diff --git a/net/minecraft/world/entity/monster/Creeper.java b/net/minecraft/world/entity/monster/Creeper.java
|
||||
index 80327a6ba1da0145f087a7946c7a4dfb6d947ce7..46a769f2960fd4a35305231b84c56ff36d622d8f 100644
|
||||
index 2d60c5e6426097302464e04bcfdd60abd08b96b9..56cfc2b7cf9bd7edc966f59de091d2793c6adfb3 100644
|
||||
--- a/net/minecraft/world/entity/monster/Creeper.java
|
||||
+++ b/net/minecraft/world/entity/monster/Creeper.java
|
||||
@@ -273,6 +273,13 @@ public class Creeper extends Monster {
|
||||
@@ -761,7 +761,7 @@ index a98967c7a76d8e25da9e31eaa8f2ae0bf0704c9d..54d3ab3cb7521f4f75bdd05b7fcf35e7
|
||||
return Guardian.createAttributes().add(Attributes.MOVEMENT_SPEED, 0.3F).add(Attributes.ATTACK_DAMAGE, 8.0).add(Attributes.MAX_HEALTH, 80.0);
|
||||
}
|
||||
diff --git a/net/minecraft/world/entity/monster/EnderMan.java b/net/minecraft/world/entity/monster/EnderMan.java
|
||||
index 8862ad857a4c99defe7621c59d8f3ef77ab7aff4..8979340756abaec961b2263146c1e1e79d144117 100644
|
||||
index 2b02becb39f89ca02e42cf9e3df6cbfa8eba800f..d1903b7804880c4b3b2ccf6a6dbc85a62975deb1 100644
|
||||
--- a/net/minecraft/world/entity/monster/EnderMan.java
|
||||
+++ b/net/minecraft/world/entity/monster/EnderMan.java
|
||||
@@ -114,6 +114,13 @@ public class EnderMan extends Monster implements NeutralMob {
|
||||
@@ -779,7 +779,7 @@ index 8862ad857a4c99defe7621c59d8f3ef77ab7aff4..8979340756abaec961b2263146c1e1e7
|
||||
protected void registerGoals() {
|
||||
this.goalSelector.addGoal(0, new FloatGoal(this));
|
||||
diff --git a/net/minecraft/world/entity/monster/Endermite.java b/net/minecraft/world/entity/monster/Endermite.java
|
||||
index 859d490dd3be2843dde3a811bcc0d51e3eae76f0..b93a5d46ccf7b2dad6afbd15884f8d8ae60cdb5a 100644
|
||||
index 099476663f734f00b4979de7c2d0f13da5bf4909..3729137f6fa1bc2c8b886a02e8604918bd961e72 100644
|
||||
--- a/net/minecraft/world/entity/monster/Endermite.java
|
||||
+++ b/net/minecraft/world/entity/monster/Endermite.java
|
||||
@@ -79,6 +79,13 @@ public class Endermite extends Monster {
|
||||
@@ -797,7 +797,7 @@ index 859d490dd3be2843dde3a811bcc0d51e3eae76f0..b93a5d46ccf7b2dad6afbd15884f8d8a
|
||||
protected void registerGoals() {
|
||||
this.goalSelector.addGoal(1, new FloatGoal(this));
|
||||
diff --git a/net/minecraft/world/entity/monster/Ghast.java b/net/minecraft/world/entity/monster/Ghast.java
|
||||
index 64800fe5cfb3488b63126ed09f1f678d6ebd1d3b..b87ee7a7b92f49b72151019bf05995a6843ec7fa 100644
|
||||
index 14c5c70853bc8bef677c12f7e1884f472c293609..2a7960e4b431c4c1d4c10daea092e52f51cf3623 100644
|
||||
--- a/net/minecraft/world/entity/monster/Ghast.java
|
||||
+++ b/net/minecraft/world/entity/monster/Ghast.java
|
||||
@@ -90,6 +90,13 @@ public class Ghast extends Mob implements Enemy {
|
||||
@@ -833,7 +833,7 @@ index 43ebfe06ce2a8c15787d72a8ef54cd6c7cac2bfc..07dfe0e6fd431b8417fc7f823962e4d4
|
||||
return Monster.createMonsterAttributes()
|
||||
.add(Attributes.MAX_HEALTH, 100.0)
|
||||
diff --git a/net/minecraft/world/entity/monster/Guardian.java b/net/minecraft/world/entity/monster/Guardian.java
|
||||
index ea7e6a1b4dad1b702ddc5b6004c5ebdfd541334d..520e9e7e99c03f07087bd51d19db730aa98cd6b9 100644
|
||||
index 3acf963c26ef5f269a95cdf8fe0da248adf22c83..61a5a7c77a53c29de8a9e61f6cbc68eb50142b3a 100644
|
||||
--- a/net/minecraft/world/entity/monster/Guardian.java
|
||||
+++ b/net/minecraft/world/entity/monster/Guardian.java
|
||||
@@ -104,6 +104,13 @@ public class Guardian extends Monster {
|
||||
@@ -869,10 +869,10 @@ index fba41f261e57a050d4e24d2611cc27edcbb84ddf..4e757fc7d49c22f79eceafc02ff05da5
|
||||
return Monster.createMonsterAttributes().add(Attributes.MOVEMENT_SPEED, 0.2F);
|
||||
}
|
||||
diff --git a/net/minecraft/world/entity/monster/Phantom.java b/net/minecraft/world/entity/monster/Phantom.java
|
||||
index 0f1081b448ce03498b471f7d3c2ff63deee13268..05ae5d0a41cf0f3c4bb2da1395e64b31f45418ae 100644
|
||||
index 356f5c6e5534b1b36bcb5c44021e0e48194fb645..31f668c097db2986c29dadc042de2e90ff684780 100644
|
||||
--- a/net/minecraft/world/entity/monster/Phantom.java
|
||||
+++ b/net/minecraft/world/entity/monster/Phantom.java
|
||||
@@ -137,6 +137,13 @@ public class Phantom extends Mob implements Enemy {
|
||||
@@ -136,6 +136,13 @@ public class Phantom extends Mob implements Enemy {
|
||||
}
|
||||
// Purpur end - Toggle for water sensitive mob damage
|
||||
|
||||
@@ -905,10 +905,10 @@ index 3e0403635cb9ce3d0894705db6727d9a7cc4d628..700799d2cedea989ac60d7c5dfc563c9
|
||||
protected void registerGoals() {
|
||||
super.registerGoals();
|
||||
diff --git a/net/minecraft/world/entity/monster/Shulker.java b/net/minecraft/world/entity/monster/Shulker.java
|
||||
index 67aa12ee4a58e7cd31efb47cd1d71eaa2cc6af7d..0224a0dca4432fa33262ffa7152eb228a88c20d5 100644
|
||||
index 8e33c702bf4b6a2ad2af8e730f9fecef579ab2ad..44a2809ca8603228e19a0e0cde50c6a64ebc412e 100644
|
||||
--- a/net/minecraft/world/entity/monster/Shulker.java
|
||||
+++ b/net/minecraft/world/entity/monster/Shulker.java
|
||||
@@ -142,6 +142,13 @@ public class Shulker extends AbstractGolem implements Enemy {
|
||||
@@ -141,6 +141,13 @@ public class Shulker extends AbstractGolem implements Enemy {
|
||||
}
|
||||
// Purpur end - Toggle for water sensitive mob damage
|
||||
|
||||
@@ -923,7 +923,7 @@ index 67aa12ee4a58e7cd31efb47cd1d71eaa2cc6af7d..0224a0dca4432fa33262ffa7152eb228
|
||||
protected void registerGoals() {
|
||||
this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - Ridables
|
||||
diff --git a/net/minecraft/world/entity/monster/Silverfish.java b/net/minecraft/world/entity/monster/Silverfish.java
|
||||
index 205c05f46d70d37e11a0e35c97128e0c20b94e23..b45f8eb2bd1d9b3c91716bf329febe92620e315f 100644
|
||||
index e6bc3451f2f5921c5f8773749962b4334328ac88..8fe686109b7b4fb900c0f61db5de282496470f68 100644
|
||||
--- a/net/minecraft/world/entity/monster/Silverfish.java
|
||||
+++ b/net/minecraft/world/entity/monster/Silverfish.java
|
||||
@@ -72,6 +72,13 @@ public class Silverfish extends Monster {
|
||||
@@ -959,7 +959,7 @@ index 834125d0ded28a1d7a39a3e5fcf6a5bb967c7f91..0636fdf31330da5523b9ad11869776a2
|
||||
protected void registerGoals() {
|
||||
this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - Ridables
|
||||
diff --git a/net/minecraft/world/entity/monster/Strider.java b/net/minecraft/world/entity/monster/Strider.java
|
||||
index 1b6137674d807ed29d56e3f3120abe60254274e1..7c05c394138699c199e2044325d294826796217c 100644
|
||||
index eacbaa4a9c9eb30a29eade20b31860f9ec6e1a69..5528ef9fab00cc65f7c36f8f87b458c33515ae04 100644
|
||||
--- a/net/minecraft/world/entity/monster/Strider.java
|
||||
+++ b/net/minecraft/world/entity/monster/Strider.java
|
||||
@@ -125,6 +125,13 @@ public class Strider extends Animal implements ItemSteerable {
|
||||
@@ -977,10 +977,10 @@ index 1b6137674d807ed29d56e3f3120abe60254274e1..7c05c394138699c199e2044325d29482
|
||||
final EntityType<Strider> ignoredType,
|
||||
final LevelAccessor level,
|
||||
diff --git a/net/minecraft/world/entity/monster/Vex.java b/net/minecraft/world/entity/monster/Vex.java
|
||||
index 917f256f072ba29ae77e4976dd4d49ffcb2a0e35..d280201dfdd5c6114a00d5d245d839d271177854 100644
|
||||
index 838edcb5267268fadfc913ea71f3fb4adbe94209..6ddd7d1d0ad8fa49a9e687137a06e9069db7889d 100644
|
||||
--- a/net/minecraft/world/entity/monster/Vex.java
|
||||
+++ b/net/minecraft/world/entity/monster/Vex.java
|
||||
@@ -118,6 +118,13 @@ public class Vex extends Monster implements TraceableEntity {
|
||||
@@ -117,6 +117,13 @@ public class Vex extends Monster implements TraceableEntity {
|
||||
}
|
||||
// Purpur end - Toggle for water sensitive mob damage
|
||||
|
||||
@@ -1049,10 +1049,10 @@ index d001cf955dba66435079eb2cc30e05aec963d2c6..b8c764cc274f43073a460a4c8643e0cb
|
||||
public void setTimeInOverworld(final int timeInOverworld) {
|
||||
this.timeInOverworld = timeInOverworld;
|
||||
diff --git a/net/minecraft/world/entity/monster/illager/Evoker.java b/net/minecraft/world/entity/monster/illager/Evoker.java
|
||||
index a766f1139459488accd0d720be3ff522e88c3d09..c5d56a3c2dff087453d56821ef6c4d75c1274613 100644
|
||||
index fe67813da3b3be09dad8f99a68685448b33fa5a9..16792e45655df1ec96732f4d097f3803d4dafde8 100644
|
||||
--- a/net/minecraft/world/entity/monster/illager/Evoker.java
|
||||
+++ b/net/minecraft/world/entity/monster/illager/Evoker.java
|
||||
@@ -82,6 +82,13 @@ public class Evoker extends SpellcasterIllager {
|
||||
@@ -81,6 +81,13 @@ public class Evoker extends SpellcasterIllager {
|
||||
}
|
||||
// Purpur end - Toggle for water sensitive mob damage
|
||||
|
||||
@@ -1067,10 +1067,10 @@ index a766f1139459488accd0d720be3ff522e88c3d09..c5d56a3c2dff087453d56821ef6c4d75
|
||||
protected void registerGoals() {
|
||||
super.registerGoals();
|
||||
diff --git a/net/minecraft/world/entity/monster/illager/Illusioner.java b/net/minecraft/world/entity/monster/illager/Illusioner.java
|
||||
index 32b8f638ea26494cae648f4bb48a664ce2a5021e..fefb7927cb9b906e00b68f43e947504dec97f52e 100644
|
||||
index bfd1a61d43fcc1293592a6199d7bab0346f40c7f..05c0a84a2eb41ab9c19fd95e6745037d36aefc70 100644
|
||||
--- a/net/minecraft/world/entity/monster/illager/Illusioner.java
|
||||
+++ b/net/minecraft/world/entity/monster/illager/Illusioner.java
|
||||
@@ -94,6 +94,13 @@ public class Illusioner extends SpellcasterIllager implements RangedAttackMob {
|
||||
@@ -93,6 +93,13 @@ public class Illusioner extends SpellcasterIllager implements RangedAttackMob {
|
||||
}
|
||||
// Purpur end - Toggle for water sensitive mob damage
|
||||
|
||||
@@ -1121,7 +1121,7 @@ index aab0bd86da31ca73efc4988fa34c906886139ec3..c29a1aea5c09ade40e36f4cb00a677b3
|
||||
protected void registerGoals() {
|
||||
super.registerGoals();
|
||||
diff --git a/net/minecraft/world/entity/monster/piglin/Piglin.java b/net/minecraft/world/entity/monster/piglin/Piglin.java
|
||||
index de86e23b377ca0727d5f5234f2bc63180ddbbad2..47bcb895bf4c6f438bb0bb82f84331487fd28c0c 100644
|
||||
index 21674f5ee9bd89bfbcf36f43ba728a692934a886..bbdf01c5ab0b0eee4773d4ca690dc3c4fa3ec202 100644
|
||||
--- a/net/minecraft/world/entity/monster/piglin/Piglin.java
|
||||
+++ b/net/minecraft/world/entity/monster/piglin/Piglin.java
|
||||
@@ -140,6 +140,13 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento
|
||||
@@ -1193,7 +1193,7 @@ index 64dc2a04bb2ae4dc63083a24c48f671bfc8ff8ea..76f28568aecf019ce7432ff89593b2ed
|
||||
final EntityType<Stray> type, final ServerLevelAccessor level, final EntitySpawnReason spawnReason, final BlockPos pos, final RandomSource random
|
||||
) {
|
||||
diff --git a/net/minecraft/world/entity/monster/skeleton/WitherSkeleton.java b/net/minecraft/world/entity/monster/skeleton/WitherSkeleton.java
|
||||
index f1cf1d01a497fc46d201ad403b459f9886059d0f..3c3c53de82856033aab31c6b03e90ba647223fa7 100644
|
||||
index 2f3ff6eeae3103248512afb8cfd745f3e08c3eaf..c3f09863893933580caa07b8b9cdfd08ad5a0978 100644
|
||||
--- a/net/minecraft/world/entity/monster/skeleton/WitherSkeleton.java
|
||||
+++ b/net/minecraft/world/entity/monster/skeleton/WitherSkeleton.java
|
||||
@@ -66,6 +66,13 @@ public class WitherSkeleton extends AbstractSkeleton {
|
||||
@@ -1247,7 +1247,7 @@ index 467ea1fd09b94747a03aaadd28a107d983afeb01..8396b9d6b41e381e040ee71e7fe04ad2
|
||||
protected void registerGoals() {
|
||||
this.goalSelector.addGoal(1, new FloatGoal(this));
|
||||
diff --git a/net/minecraft/world/entity/monster/zombie/Drowned.java b/net/minecraft/world/entity/monster/zombie/Drowned.java
|
||||
index e4769eeacc3ac97f90acb5ed0127990466c8d886..07242b2e6ab055122360035f058c39d54dbb8dc7 100644
|
||||
index 3828001bed19114c23e5099c3716837f4d2c2314..d7652cc26a9e3db010a7d05f0931d78b9a53b20c 100644
|
||||
--- a/net/minecraft/world/entity/monster/zombie/Drowned.java
|
||||
+++ b/net/minecraft/world/entity/monster/zombie/Drowned.java
|
||||
@@ -140,6 +140,13 @@ public class Drowned extends Zombie implements RangedAttackMob {
|
||||
@@ -1283,10 +1283,10 @@ index 02e935edd7a6cabbf2e6fcc6c96a9601bee71acc..5d60b230eeaec9d37e286019b8d4276c
|
||||
public boolean isSunSensitive() {
|
||||
return this.shouldBurnInDay; // Purpur - moved to LivingEntity; keep methods for ABI compatibility - API for any mob to burn daylight
|
||||
diff --git a/net/minecraft/world/entity/monster/zombie/Zombie.java b/net/minecraft/world/entity/monster/zombie/Zombie.java
|
||||
index f8eccfab70e7d99dd74965a506837e620515b6d1..cb1a685b136f06ab5884c269678cc9384af1dfed 100644
|
||||
index 92be49434eb76fa0774864af73b0a460f49b6a32..09fda2f96f2c4024e35ef23c482097b7c055b936 100644
|
||||
--- a/net/minecraft/world/entity/monster/zombie/Zombie.java
|
||||
+++ b/net/minecraft/world/entity/monster/zombie/Zombie.java
|
||||
@@ -160,6 +160,13 @@ public class Zombie extends Monster {
|
||||
@@ -159,6 +159,13 @@ public class Zombie extends Monster {
|
||||
}
|
||||
// Purpur end - Toggle for water sensitive mob damage
|
||||
|
||||
@@ -1337,7 +1337,7 @@ index 6cc4d4729520c60b98d45d5e7dd674e599616505..9e893c0c033dcc2273275b92048d9b1a
|
||||
protected void addBehaviourGoals() {
|
||||
this.goalSelector.addGoal(1, new SpearUseGoal<>(this, 1.0, 1.0, 10.0F, 2.0F));
|
||||
diff --git a/net/minecraft/world/entity/npc/villager/Villager.java b/net/minecraft/world/entity/npc/villager/Villager.java
|
||||
index 033c9322234378c46e9a6e549d04f32135243ed9..f439a0b0830e74be8c123a5b2e55933671715f74 100644
|
||||
index fd0b329f56fa78d05be5348b42f3542fff7ebbe4..c841d627254da95b786469108adb2b7f89355954 100644
|
||||
--- a/net/minecraft/world/entity/npc/villager/Villager.java
|
||||
+++ b/net/minecraft/world/entity/npc/villager/Villager.java
|
||||
@@ -291,6 +291,13 @@ public class Villager extends AbstractVillager implements VillagerDataHolder, Re
|
||||
@@ -1355,10 +1355,10 @@ index 033c9322234378c46e9a6e549d04f32135243ed9..f439a0b0830e74be8c123a5b2e559336
|
||||
public Brain<Villager> getBrain() {
|
||||
return (Brain<Villager>) super.getBrain();
|
||||
diff --git a/net/minecraft/world/entity/npc/wanderingtrader/WanderingTrader.java b/net/minecraft/world/entity/npc/wanderingtrader/WanderingTrader.java
|
||||
index cbbfa09d53ada7c39e9504d28770867989eaa5c1..47ee1521e25c987fce6da0bd981371a7e835d565 100644
|
||||
index b6e16bcfff9a74fdd2109d4a442344c07692c3d1..35a2e2018f987d2fb63380d7a6b1e5bcad3a09d1 100644
|
||||
--- a/net/minecraft/world/entity/npc/wanderingtrader/WanderingTrader.java
|
||||
+++ b/net/minecraft/world/entity/npc/wanderingtrader/WanderingTrader.java
|
||||
@@ -106,6 +106,13 @@ public class WanderingTrader extends AbstractVillager implements Consumable.Over
|
||||
@@ -105,6 +105,13 @@ public class WanderingTrader extends AbstractVillager implements Consumable.Over
|
||||
}
|
||||
// Purpur end - Toggle for water sensitive mob damage
|
||||
|
||||
|
||||
@@ -5,10 +5,10 @@ Subject: [PATCH] Setting to reintroduce end void rings
|
||||
|
||||
|
||||
diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java
|
||||
index 07d3c51b80c251da74aba87bdbf9ac74650b83e5..761acf1c9cae98fc8d7699685824f561352a8f66 100644
|
||||
index 838898572cc30207a1b915dcea11f612254ac453..d2a5a1293f276aab3136c4563d778d0d79c7ff29 100644
|
||||
--- a/net/minecraft/server/MinecraftServer.java
|
||||
+++ b/net/minecraft/server/MinecraftServer.java
|
||||
@@ -1361,6 +1361,15 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
||||
@@ -1351,6 +1351,15 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
||||
}
|
||||
}
|
||||
// Purpur end - config for startup commands
|
||||
@@ -25,10 +25,10 @@ index 07d3c51b80c251da74aba87bdbf9ac74650b83e5..761acf1c9cae98fc8d7699685824f561
|
||||
while (this.running) {
|
||||
final long tickStart = System.nanoTime(); // Paper - improve tick loop
|
||||
diff --git a/net/minecraft/server/dedicated/DedicatedServer.java b/net/minecraft/server/dedicated/DedicatedServer.java
|
||||
index 95969baa7efa40e582e3eeb8c895b24f743badaf..d4c88cc35140cec61c2e9fd66e5126e80b083f3b 100644
|
||||
index 8f2757663c9a3822e07b763386376cafdc3eb58f..6fd7a1f5bd96f868a950097989176eb4cdf3e235 100644
|
||||
--- a/net/minecraft/server/dedicated/DedicatedServer.java
|
||||
+++ b/net/minecraft/server/dedicated/DedicatedServer.java
|
||||
@@ -279,6 +279,15 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
|
||||
@@ -274,6 +274,15 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
|
||||
org.spigotmc.SpigotConfig.init((java.io.File) this.options.valueOf("spigot-settings"));
|
||||
org.spigotmc.SpigotConfig.registerCommands();
|
||||
// Spigot end
|
||||
@@ -44,7 +44,7 @@ index 95969baa7efa40e582e3eeb8c895b24f743badaf..d4c88cc35140cec61c2e9fd66e5126e8
|
||||
// Paper start - initialize global and world-defaults configuration
|
||||
this.paperConfigurations.initializeGlobalConfiguration(this.registryAccess());
|
||||
this.paperConfigurations.initializeWorldDefaultsConfiguration(this.registryAccess());
|
||||
@@ -295,7 +304,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
|
||||
@@ -290,7 +299,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
|
||||
io.papermc.paper.command.PaperCommands.registerCommands(this); // Paper - setup /paper command
|
||||
this.server.spark.registerCommandBeforePlugins(this.server); // Paper - spark
|
||||
com.destroystokyo.paper.Metrics.PaperMetrics.startMetrics(); // Paper - start metrics
|
||||
@@ -53,7 +53,7 @@ index 95969baa7efa40e582e3eeb8c895b24f743badaf..d4c88cc35140cec61c2e9fd66e5126e8
|
||||
try {
|
||||
org.purpurmc.purpur.PurpurConfig.init((java.io.File) options.valueOf("purpur-settings"));
|
||||
} catch (Exception e) {
|
||||
@@ -303,7 +312,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
|
||||
@@ -298,7 +307,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
|
||||
return false;
|
||||
}
|
||||
org.purpurmc.purpur.PurpurConfig.registerCommands();
|
||||
|
||||
@@ -5,7 +5,7 @@ Subject: [PATCH] Per mob mob_griefing loot pickup override
|
||||
|
||||
|
||||
diff --git a/net/minecraft/world/entity/Mob.java b/net/minecraft/world/entity/Mob.java
|
||||
index e367b708fb22f82aa315d38f4fb0a90c9f5f5ac7..9444390caf0a5a39ffb3474bf248c3a87d02ce76 100644
|
||||
index 9867e2ea9af7cf5d6d711742514e222fad55ce41..3c5e2b36df50768367ecb4c97a88833d4327523f 100644
|
||||
--- a/net/minecraft/world/entity/Mob.java
|
||||
+++ b/net/minecraft/world/entity/Mob.java
|
||||
@@ -566,7 +566,7 @@ public abstract class Mob extends LivingEntity implements Targeting, EquipmentUs
|
||||
@@ -31,7 +31,7 @@ index e367b708fb22f82aa315d38f4fb0a90c9f5f5ac7..9444390caf0a5a39ffb3474bf248c3a8
|
||||
return EquipmentSlot.HEAD;
|
||||
}
|
||||
diff --git a/net/minecraft/world/entity/animal/allay/Allay.java b/net/minecraft/world/entity/animal/allay/Allay.java
|
||||
index 3a78175273efa24a6bf98ee44fe24a4df71e63ed..86129786c9927fc5aa941207971e28ff4b20023f 100644
|
||||
index f5bf06a36f4ffd0370a95ef6d18e99d4daedcd65..9e31aaff00f76cfbba9539d7e2bb3283afdaae65 100644
|
||||
--- a/net/minecraft/world/entity/animal/allay/Allay.java
|
||||
+++ b/net/minecraft/world/entity/animal/allay/Allay.java
|
||||
@@ -162,6 +162,13 @@ public class Allay extends PathfinderMob implements InventoryCarrier, VibrationS
|
||||
@@ -49,10 +49,10 @@ index 3a78175273efa24a6bf98ee44fe24a4df71e63ed..86129786c9927fc5aa941207971e28ff
|
||||
protected Brain<Allay> makeBrain(final Brain.Packed packedBrain) {
|
||||
return BRAIN_PROVIDER.makeBrain(this, packedBrain);
|
||||
diff --git a/net/minecraft/world/entity/animal/fox/Fox.java b/net/minecraft/world/entity/animal/fox/Fox.java
|
||||
index 66001fb6a7264e70f3172ea50c97d0a26214a5fd..af9f37fe2ed01487ed796afb163aa624ca2f1e0a 100644
|
||||
index ea23a64654ebaaf97fe9e5c0eab0f31f54d94d22..f286089eca3b6e9c72f1b954b872c8673a717b7a 100644
|
||||
--- a/net/minecraft/world/entity/animal/fox/Fox.java
|
||||
+++ b/net/minecraft/world/entity/animal/fox/Fox.java
|
||||
@@ -815,6 +815,13 @@ public class Fox extends Animal {
|
||||
@@ -814,6 +814,13 @@ public class Fox extends Animal {
|
||||
}
|
||||
// Purpur end - Tulips change fox type
|
||||
|
||||
@@ -103,7 +103,7 @@ index c29a1aea5c09ade40e36f4cb00a677b31ad91069..d4e298ecf79ff7ebdea71b710e6df7ba
|
||||
protected void registerGoals() {
|
||||
super.registerGoals();
|
||||
diff --git a/net/minecraft/world/entity/monster/piglin/Piglin.java b/net/minecraft/world/entity/monster/piglin/Piglin.java
|
||||
index 47bcb895bf4c6f438bb0bb82f84331487fd28c0c..93c5fa7b63548c6b1d24847f1f363c7c9e0ea0ec 100644
|
||||
index bbdf01c5ab0b0eee4773d4ca690dc3c4fa3ec202..b14fd101ba647ca99211a42b142d2d80975a9e38 100644
|
||||
--- a/net/minecraft/world/entity/monster/piglin/Piglin.java
|
||||
+++ b/net/minecraft/world/entity/monster/piglin/Piglin.java
|
||||
@@ -147,6 +147,13 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento
|
||||
@@ -202,7 +202,7 @@ index 76f28568aecf019ce7432ff89593b2ed4eaff8a2..e761c97212e380b6978e5fbd1d808f4d
|
||||
final EntityType<Stray> type, final ServerLevelAccessor level, final EntitySpawnReason spawnReason, final BlockPos pos, final RandomSource random
|
||||
) {
|
||||
diff --git a/net/minecraft/world/entity/monster/skeleton/WitherSkeleton.java b/net/minecraft/world/entity/monster/skeleton/WitherSkeleton.java
|
||||
index 3c3c53de82856033aab31c6b03e90ba647223fa7..afc6272905cf6ab464cca03b37b5e6c868094796 100644
|
||||
index c3f09863893933580caa07b8b9cdfd08ad5a0978..ddb189a3fb144bf84097aee9c3e45dafc88c593d 100644
|
||||
--- a/net/minecraft/world/entity/monster/skeleton/WitherSkeleton.java
|
||||
+++ b/net/minecraft/world/entity/monster/skeleton/WitherSkeleton.java
|
||||
@@ -73,6 +73,13 @@ public class WitherSkeleton extends AbstractSkeleton {
|
||||
@@ -220,7 +220,7 @@ index 3c3c53de82856033aab31c6b03e90ba647223fa7..afc6272905cf6ab464cca03b37b5e6c8
|
||||
protected void registerGoals() {
|
||||
this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, AbstractPiglin.class, true));
|
||||
diff --git a/net/minecraft/world/entity/monster/zombie/Drowned.java b/net/minecraft/world/entity/monster/zombie/Drowned.java
|
||||
index 07242b2e6ab055122360035f058c39d54dbb8dc7..3a1152e07b2cc0ee4cf84651ada3c987dc704e91 100644
|
||||
index d7652cc26a9e3db010a7d05f0931d78b9a53b20c..4801c6987740f846a3049bfa0fcac547183e3f13 100644
|
||||
--- a/net/minecraft/world/entity/monster/zombie/Drowned.java
|
||||
+++ b/net/minecraft/world/entity/monster/zombie/Drowned.java
|
||||
@@ -147,6 +147,13 @@ public class Drowned extends Zombie implements RangedAttackMob {
|
||||
@@ -256,10 +256,10 @@ index 5d60b230eeaec9d37e286019b8d4276cfa85a9ea..55b2bd676f2e9633fc8250bcd984424e
|
||||
public boolean isSunSensitive() {
|
||||
return this.shouldBurnInDay; // Purpur - moved to LivingEntity; keep methods for ABI compatibility - API for any mob to burn daylight
|
||||
diff --git a/net/minecraft/world/entity/monster/zombie/Zombie.java b/net/minecraft/world/entity/monster/zombie/Zombie.java
|
||||
index cb1a685b136f06ab5884c269678cc9384af1dfed..a0b1399d8ea3aeb583dd0c0f1b5ec6300eacf28d 100644
|
||||
index 09fda2f96f2c4024e35ef23c482097b7c055b936..04ba29b8864804899e19b08b1952df781c96a23e 100644
|
||||
--- a/net/minecraft/world/entity/monster/zombie/Zombie.java
|
||||
+++ b/net/minecraft/world/entity/monster/zombie/Zombie.java
|
||||
@@ -167,6 +167,13 @@ public class Zombie extends Monster {
|
||||
@@ -166,6 +166,13 @@ public class Zombie extends Monster {
|
||||
}
|
||||
// Purpur end - Mobs always drop experience
|
||||
|
||||
@@ -310,7 +310,7 @@ index 9e893c0c033dcc2273275b92048d9b1a941d93f2..54ba4d2e8305e2d9ba0c9e71bae67bfd
|
||||
protected void addBehaviourGoals() {
|
||||
this.goalSelector.addGoal(1, new SpearUseGoal<>(this, 1.0, 1.0, 10.0F, 2.0F));
|
||||
diff --git a/net/minecraft/world/entity/npc/villager/Villager.java b/net/minecraft/world/entity/npc/villager/Villager.java
|
||||
index 639941474d8219273a318ebad22423ae7176c67a..b8817f5791560e8b1f8297eed7f932bb5c3d0974 100644
|
||||
index c841d627254da95b786469108adb2b7f89355954..0503f9aa01099ebb807c3b6ccfe88f9610cc36b5 100644
|
||||
--- a/net/minecraft/world/entity/npc/villager/Villager.java
|
||||
+++ b/net/minecraft/world/entity/npc/villager/Villager.java
|
||||
@@ -298,6 +298,13 @@ public class Villager extends AbstractVillager implements VillagerDataHolder, Re
|
||||
@@ -328,10 +328,10 @@ index 639941474d8219273a318ebad22423ae7176c67a..b8817f5791560e8b1f8297eed7f932bb
|
||||
public Brain<Villager> getBrain() {
|
||||
return (Brain<Villager>) super.getBrain();
|
||||
diff --git a/net/minecraft/world/entity/raid/Raider.java b/net/minecraft/world/entity/raid/Raider.java
|
||||
index f37216b7f2d094ba98ea5eb004b599ad6dd8697d..0942992a5036458e98233450f465fe3bab523663 100644
|
||||
index 869af8dffe56a52ea1406a6598df733f724ee654..7eeb25f068d77095dbd35e5f9c079a78f24538fe 100644
|
||||
--- a/net/minecraft/world/entity/raid/Raider.java
|
||||
+++ b/net/minecraft/world/entity/raid/Raider.java
|
||||
@@ -400,7 +400,7 @@ public abstract class Raider extends PatrollingMonster {
|
||||
@@ -397,7 +397,7 @@ public abstract class Raider extends PatrollingMonster {
|
||||
}
|
||||
|
||||
private boolean cannotPickUpBanner() {
|
||||
@@ -339,4 +339,4 @@ index f37216b7f2d094ba98ea5eb004b599ad6dd8697d..0942992a5036458e98233450f465fe3b
|
||||
+ if (!getServerLevel(this.mob).getGameRules().get(net.minecraft.world.level.gamerules.GameRules.MOB_GRIEFING, this.mob.level().purpurConfig.pillagerCanPickUpLoot)) return true; // Paper - respect game and entity rules for picking up items // Purpur - Check mobGriefing Overrides
|
||||
if (!this.mob.hasActiveRaid()) {
|
||||
return true;
|
||||
} else if (this.mob.getCurrentRaid().isOver()) {
|
||||
}
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
|
||||
public CrashReport(final String title, final Throwable t) {
|
||||
this.title = title;
|
||||
@@ -129,7 +_,7 @@
|
||||
@@ -126,7 +_,7 @@
|
||||
}
|
||||
|
||||
public String getFriendlyReport(final ReportType reportType) {
|
||||
@@ -17,7 +17,7 @@
|
||||
}
|
||||
|
||||
public @Nullable Path getSaveFile() {
|
||||
@@ -159,7 +_,7 @@
|
||||
@@ -156,7 +_,7 @@
|
||||
}
|
||||
|
||||
public boolean saveToFile(final Path file, final ReportType reportType) {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--- a/net/minecraft/commands/Commands.java
|
||||
+++ b/net/minecraft/commands/Commands.java
|
||||
@@ -268,11 +_,11 @@
|
||||
@@ -267,11 +_,11 @@
|
||||
JfrCommand.register(this.dispatcher);
|
||||
}
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
RaidCommand.register(this.dispatcher, context);
|
||||
DebugPathCommand.register(this.dispatcher);
|
||||
DebugMobSpawningCommand.register(this.dispatcher);
|
||||
@@ -300,6 +_,14 @@
|
||||
@@ -299,6 +_,14 @@
|
||||
StopCommand.register(this.dispatcher);
|
||||
TransferCommand.register(this.dispatcher);
|
||||
WhitelistCommand.register(this.dispatcher);
|
||||
@@ -29,7 +29,7 @@
|
||||
}
|
||||
|
||||
if (commandSelection.includeIntegrated) {
|
||||
@@ -522,6 +_,7 @@
|
||||
@@ -521,6 +_,7 @@
|
||||
private void runSync(ServerPlayer player, java.util.Collection<String> bukkit, RootCommandNode<CommandSourceStack> root) {
|
||||
// Paper end - Perf: Async command map building
|
||||
new com.destroystokyo.paper.event.brigadier.AsyncPlayerSendCommandsEvent<CommandSourceStack>(player.getBukkitEntity(), (RootCommandNode) root, true).callEvent(); // Paper - Brigadier API
|
||||
@@ -37,7 +37,7 @@
|
||||
org.bukkit.event.player.PlayerCommandSendEvent event = new org.bukkit.event.player.PlayerCommandSendEvent(player.getBukkitEntity(), new java.util.LinkedHashSet<>(bukkit));
|
||||
event.getPlayer().getServer().getPluginManager().callEvent(event);
|
||||
|
||||
@@ -532,6 +_,8 @@
|
||||
@@ -531,6 +_,8 @@
|
||||
}
|
||||
}
|
||||
// CraftBukkit end
|
||||
|
||||
@@ -1,38 +1,42 @@
|
||||
--- a/net/minecraft/commands/arguments/selector/EntitySelector.java
|
||||
+++ b/net/minecraft/commands/arguments/selector/EntitySelector.java
|
||||
@@ -206,26 +_,27 @@
|
||||
@@ -210,30 +_,31 @@
|
||||
this.checkPermissions(sender);
|
||||
if (this.playerName != null) {
|
||||
ServerPlayer result = sender.getServer().getPlayerList().getPlayerByName(this.playerName);
|
||||
- return result == null ? List.of() : List.of(result);
|
||||
+ return result == null || !canSee(sender, result) ? List.of() : List.of(result); // Purpur - Hide hidden players from entity selector
|
||||
} else if (this.entityUUID != null) {
|
||||
}
|
||||
|
||||
if (this.entityUUID != null) {
|
||||
ServerPlayer result = sender.getServer().getPlayerList().getPlayer(this.entityUUID);
|
||||
- return result == null ? List.of() : List.of(result);
|
||||
+ return result == null || !canSee(sender, result) ? List.of() : List.of(result); // Purpur - Hide hidden players from entity selector
|
||||
} else {
|
||||
Vec3 pos = this.position.apply(sender.getPosition());
|
||||
AABB absoluteAabb = this.getAbsoluteAabb(pos);
|
||||
Predicate<Entity> predicate = this.getPredicate(pos, absoluteAabb, null);
|
||||
if (this.currentEntity) {
|
||||
- return sender.getEntity() instanceof ServerPlayer player && predicate.test(player) ? List.of(player) : List.of();
|
||||
+ return sender.getEntity() instanceof ServerPlayer player && predicate.test(player) && canSee(sender, player) ? List.of(player) : List.of(); // Purpur - Hide hidden players from entity selector
|
||||
} else {
|
||||
int limit = this.getResultLimit();
|
||||
List<ServerPlayer> result;
|
||||
if (this.isWorldLimited()) {
|
||||
result = sender.getLevel().getPlayers(predicate, limit);
|
||||
+ result.removeIf(entityplayer3 -> !canSee(sender, entityplayer3)); // Purpur - Hide hidden players from entity selector
|
||||
} else {
|
||||
result = new ObjectArrayList<>();
|
||||
}
|
||||
|
||||
for (ServerPlayer player : sender.getServer().getPlayerList().getPlayers()) {
|
||||
- if (predicate.test(player)) {
|
||||
+ if (predicate.test(player) && canSee(sender, player)) { // Purpur - Hide hidden players from entity selector
|
||||
result.add(player);
|
||||
if (result.size() >= limit) {
|
||||
return result;
|
||||
@@ -283,4 +_,10 @@
|
||||
Vec3 pos = this.position.apply(sender.getPosition());
|
||||
AABB absoluteAabb = this.getAbsoluteAabb(pos);
|
||||
Predicate<Entity> predicate = this.getPredicate(pos, absoluteAabb, null);
|
||||
if (this.currentEntity) {
|
||||
- return sender.getEntity() instanceof ServerPlayer player && predicate.test(player) ? List.of(player) : List.of();
|
||||
+ return sender.getEntity() instanceof ServerPlayer player && predicate.test(player) && canSee(sender, player) ? List.of(player) : List.of(); // Purpur - Hide hidden players from entity selector
|
||||
}
|
||||
|
||||
int limit = this.getResultLimit();
|
||||
List<ServerPlayer> result;
|
||||
if (this.isWorldLimited()) {
|
||||
result = sender.getLevel().getPlayers(predicate, limit);
|
||||
+ result.removeIf(entityplayer3 -> !canSee(sender, entityplayer3)); // Purpur - Hide hidden players from entity selector
|
||||
} else {
|
||||
result = new ObjectArrayList<>();
|
||||
|
||||
for (ServerPlayer player : sender.getServer().getPlayerList().getPlayers()) {
|
||||
- if (predicate.test(player)) {
|
||||
+ if (predicate.test(player) && canSee(sender, player)) { // Purpur - Hide hidden players from entity selector
|
||||
result.add(player);
|
||||
if (result.size() >= limit) {
|
||||
return result;
|
||||
@@ -289,4 +_,10 @@
|
||||
public static Component joinNames(final List<? extends Entity> entities) {
|
||||
return ComponentUtils.formatList(entities, Entity::getDisplayName);
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--- a/net/minecraft/core/dispenser/DispenseItemBehavior.java
|
||||
+++ b/net/minecraft/core/dispenser/DispenseItemBehavior.java
|
||||
@@ -691,5 +_,22 @@
|
||||
@@ -683,5 +_,22 @@
|
||||
DispenserBlock.registerBehavior(Items.TNT_MINECART, new MinecartDispenseItemBehavior(EntityType.TNT_MINECART));
|
||||
DispenserBlock.registerBehavior(Items.HOPPER_MINECART, new MinecartDispenseItemBehavior(EntityType.HOPPER_MINECART));
|
||||
DispenserBlock.registerBehavior(Items.COMMAND_BLOCK_MINECART, new MinecartDispenseItemBehavior(EntityType.COMMAND_BLOCK_MINECART));
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
--- a/net/minecraft/core/dispenser/EquipmentDispenseItemBehavior.java
|
||||
+++ b/net/minecraft/core/dispenser/EquipmentDispenseItemBehavior.java
|
||||
@@ -31,7 +_,7 @@
|
||||
return false;
|
||||
} else {
|
||||
LivingEntity target = entities.getFirst();
|
||||
- EquipmentSlot slot = target.getEquipmentSlotForItem(dispensed);
|
||||
+ EquipmentSlot slot = source.level().purpurConfig.dispenserApplyCursedArmor ? target.getEquipmentSlotForItem(dispensed) : target.getEquipmentSlotForDispenserItem(dispensed); if (slot == null) return false; // Purpur - Dispenser curse of binding protection
|
||||
ItemStack equip = dispensed.copyWithCount(1); // Paper - shrink below and single item in event
|
||||
// CraftBukkit start
|
||||
net.minecraft.world.level.Level world = source.level();
|
||||
@@ -32,7 +_,7 @@
|
||||
}
|
||||
|
||||
LivingEntity target = entities.getFirst();
|
||||
- EquipmentSlot slot = target.getEquipmentSlotForItem(dispensed);
|
||||
+ EquipmentSlot slot = source.level().purpurConfig.dispenserApplyCursedArmor ? target.getEquipmentSlotForItem(dispensed) : target.getEquipmentSlotForDispenserItem(dispensed); if (slot == null) return false; // Purpur - Dispenser curse of binding protection
|
||||
ItemStack equip = dispensed.copyWithCount(1); // Paper - shrink below and single item in event
|
||||
// CraftBukkit start
|
||||
net.minecraft.world.level.Level world = source.level();
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--- a/net/minecraft/gametest/framework/GameTestHelper.java
|
||||
+++ b/net/minecraft/gametest/framework/GameTestHelper.java
|
||||
@@ -354,6 +_,8 @@
|
||||
@@ -352,6 +_,8 @@
|
||||
return gameType;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--- a/net/minecraft/network/Connection.java
|
||||
+++ b/net/minecraft/network/Connection.java
|
||||
@@ -554,11 +_,20 @@
|
||||
@@ -552,11 +_,20 @@
|
||||
private static final int MAX_PER_TICK = io.papermc.paper.configuration.GlobalConfiguration.get().misc.maxJoinsPerTick; // Paper - Buffer joins to world
|
||||
private static int joinAttemptsThisTick; // Paper - Buffer joins to world
|
||||
private static int currTick; // Paper - Buffer joins to world
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
--- a/net/minecraft/network/chat/SignedMessageChain.java
|
||||
+++ b/net/minecraft/network/chat/SignedMessageChain.java
|
||||
@@ -49,7 +_,7 @@
|
||||
SignedMessageLink link = SignedMessageChain.this.nextLink;
|
||||
if (link == null) {
|
||||
throw new SignedMessageChain.DecodeException(SignedMessageChain.DecodeException.CHAIN_BROKEN);
|
||||
- } else if (body.timeStamp().isBefore(SignedMessageChain.this.lastTimeStamp)) {
|
||||
+ } else if (org.purpurmc.purpur.PurpurConfig.kickForOutOfOrderChat && body.timeStamp().isBefore(SignedMessageChain.this.lastTimeStamp)) { // Purpur - Option to disable kick for out of order chat
|
||||
this.setChainBroken();
|
||||
throw new SignedMessageChain.DecodeException(SignedMessageChain.DecodeException.OUT_OF_ORDER_CHAT, org.bukkit.event.player.PlayerKickEvent.Cause.OUT_OF_ORDER_CHAT); // Paper - kick event causes
|
||||
} else {
|
||||
throw new SignedMessageChain.DecodeException(SignedMessageChain.DecodeException.CHAIN_BROKEN);
|
||||
}
|
||||
|
||||
- if (body.timeStamp().isBefore(SignedMessageChain.this.lastTimeStamp)) {
|
||||
+ if (org.purpurmc.purpur.PurpurConfig.kickForOutOfOrderChat && body.timeStamp().isBefore(SignedMessageChain.this.lastTimeStamp)) { // Purpur - Option to disable kick for out of order chat
|
||||
this.setChainBroken();
|
||||
throw new SignedMessageChain.DecodeException(SignedMessageChain.DecodeException.OUT_OF_ORDER_CHAT, org.bukkit.event.player.PlayerKickEvent.Cause.OUT_OF_ORDER_CHAT); // Paper - kick event causes
|
||||
}
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
getTPS(this.tickTimes1m, interval),
|
||||
getTPS(this.tickTimes5m, interval),
|
||||
getTPS(this.tickTimes15m, interval)
|
||||
@@ -1057,6 +_,15 @@
|
||||
@@ -1047,6 +_,15 @@
|
||||
|
||||
LOGGER.info("Stopping server");
|
||||
Commands.COMMAND_SENDING_POOL.shutdownNow(); // Paper - Perf: Async command map building; Shutdown and don't bother finishing
|
||||
@@ -41,7 +41,7 @@
|
||||
// CraftBukkit start
|
||||
if (this.server != null) {
|
||||
this.server.spark.disable(); // Paper - spark
|
||||
@@ -1151,6 +_,8 @@
|
||||
@@ -1141,6 +_,8 @@
|
||||
this.safeShutdown(wait, false);
|
||||
}
|
||||
public void safeShutdown(final boolean wait, final boolean isRestarting) {
|
||||
@@ -50,7 +50,7 @@
|
||||
this.isRestarting = isRestarting;
|
||||
this.hasLoggedStop = true; // Paper - Debugging
|
||||
if (this.isDebugging()) io.papermc.paper.util.TraceUtil.dumpTraceForThread("Server stopped"); // Paper - Debugging
|
||||
@@ -1332,11 +_,21 @@
|
||||
@@ -1322,11 +_,21 @@
|
||||
}
|
||||
// Paper end - Add onboarding message for initial server start
|
||||
// Paper start - Improve outdated version checking
|
||||
@@ -73,7 +73,7 @@
|
||||
while (this.running) {
|
||||
final long tickStart = System.nanoTime(); // Paper - improve tick loop
|
||||
long thisTickNanos; // Paper - improve tick loop - diff on change, expect this to be tick interval
|
||||
@@ -1350,9 +_,11 @@
|
||||
@@ -1340,9 +_,11 @@
|
||||
final long ticksBehind = Math.max(1L, this.tickSchedule.getPeriodsAhead(thisTickNanos, tickStart));
|
||||
final long catchup = (long)Math.max(
|
||||
1,
|
||||
@@ -86,7 +86,7 @@
|
||||
// adjust ticksBehind so that it is not greater-than catchup
|
||||
if (ticksBehind - catchup > 0L) {
|
||||
final long difference = ticksBehind - catchup;
|
||||
@@ -1983,7 +_,7 @@
|
||||
@@ -1973,7 +_,7 @@
|
||||
}
|
||||
|
||||
public String getServerModName() {
|
||||
|
||||
@@ -7,14 +7,14 @@
|
||||
- if (level > enchantment.getMaxLevel()) {
|
||||
+ if (!org.purpurmc.purpur.PurpurConfig.allowUnsafeEnchantCommand && level > enchantment.getMaxLevel()) { // Purpur - Config to allow unsafe enchants
|
||||
throw ERROR_LEVEL_TOO_HIGH.create(level, enchantment.getMaxLevel());
|
||||
} else {
|
||||
int success = 0;
|
||||
@@ -77,7 +_,7 @@
|
||||
ItemStack item = target.getMainHandItem();
|
||||
if (!item.isEmpty()) {
|
||||
if (enchantment.canEnchant(item)
|
||||
- && EnchantmentHelper.isEnchantmentCompatible(EnchantmentHelper.getEnchantmentsForCrafting(item).keySet(), enchantmentHolder)) {
|
||||
+ && EnchantmentHelper.isEnchantmentCompatible(EnchantmentHelper.getEnchantmentsForCrafting(item).keySet(), enchantmentHolder) || (org.purpurmc.purpur.PurpurConfig.allowUnsafeEnchantCommand && !item.hasEnchantment(enchantmentHolder))) { // Purpur - Config to allow unsafe enchants
|
||||
item.enchant(enchantmentHolder, level);
|
||||
success++;
|
||||
} else if (targets.size() == 1) {
|
||||
}
|
||||
|
||||
@@ -78,7 +_,7 @@
|
||||
ItemStack item = target.getMainHandItem();
|
||||
if (!item.isEmpty()) {
|
||||
if (enchantment.canEnchant(item)
|
||||
- && EnchantmentHelper.isEnchantmentCompatible(EnchantmentHelper.getEnchantmentsForCrafting(item).keySet(), enchantmentHolder)) {
|
||||
+ && EnchantmentHelper.isEnchantmentCompatible(EnchantmentHelper.getEnchantmentsForCrafting(item).keySet(), enchantmentHolder) || (org.purpurmc.purpur.PurpurConfig.allowUnsafeEnchantCommand && !item.hasEnchantment(enchantmentHolder))) { // Purpur - Config to allow unsafe enchants
|
||||
item.enchant(enchantmentHolder, level);
|
||||
success++;
|
||||
} else if (targets.size() == 1) {
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
--- a/net/minecraft/server/commands/GiveCommand.java
|
||||
+++ b/net/minecraft/server/commands/GiveCommand.java
|
||||
@@ -61,6 +_,7 @@
|
||||
remaining -= size;
|
||||
ItemStack copyToDrop = prototypeItemStack.copyWithCount(size);
|
||||
boolean added = player.getInventory().add(copyToDrop);
|
||||
+ if (org.purpurmc.purpur.PurpurConfig.disableGiveCommandDrops) continue; // Purpur - add config option for toggling give command dropping
|
||||
if (added && copyToDrop.isEmpty()) {
|
||||
ItemEntity drop = player.drop(prototypeItemStack.copy(), false, false, false, null); // Paper - do not fire PlayerDropItemEvent for /give command
|
||||
if (drop != null) {
|
||||
@@ -62,6 +_,7 @@
|
||||
remaining -= size;
|
||||
ItemStack copyToDrop = prototypeItemStack.copyWithCount(size);
|
||||
boolean added = player.getInventory().add(copyToDrop);
|
||||
+ if (org.purpurmc.purpur.PurpurConfig.disableGiveCommandDrops) continue; // Purpur - add config option for toggling give command dropping
|
||||
if (added && copyToDrop.isEmpty()) {
|
||||
ItemEntity drop = player.drop(prototypeItemStack.copy(), false, false, false, null); // Paper - do not fire PlayerDropItemEvent for /give command
|
||||
if (drop != null) {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--- a/net/minecraft/server/dedicated/DedicatedServer.java
|
||||
+++ b/net/minecraft/server/dedicated/DedicatedServer.java
|
||||
@@ -216,6 +_,7 @@
|
||||
@@ -211,6 +_,7 @@
|
||||
public void run() {
|
||||
if (!org.bukkit.craftbukkit.Main.useConsole) return; // CraftBukkit
|
||||
// Paper start - Use TerminalConsoleAppender
|
||||
@@ -8,7 +8,7 @@
|
||||
new com.destroystokyo.paper.console.PaperConsole(DedicatedServer.this).start();
|
||||
/*
|
||||
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in, StandardCharsets.UTF_8));
|
||||
@@ -294,6 +_,15 @@
|
||||
@@ -289,6 +_,15 @@
|
||||
io.papermc.paper.command.PaperCommands.registerCommands(this); // Paper - setup /paper command
|
||||
this.server.spark.registerCommandBeforePlugins(this.server); // Paper - spark
|
||||
com.destroystokyo.paper.Metrics.PaperMetrics.startMetrics(); // Paper - start metrics
|
||||
@@ -24,8 +24,8 @@
|
||||
com.destroystokyo.paper.VersionHistoryManager.INSTANCE.getClass(); // Paper - load version history now
|
||||
|
||||
// this.worldData.setGameType(properties.gameMode.get()); // CraftBukkit - moved to world loading
|
||||
@@ -336,6 +_,30 @@
|
||||
if (true) throw new IllegalStateException("Failed to bind to port", var11); // Paper - Propagate failed to bind to port error
|
||||
@@ -331,6 +_,30 @@
|
||||
if (true) throw new IllegalStateException("Failed to bind to port", e); // Paper - Propagate failed to bind to port error
|
||||
return false;
|
||||
}
|
||||
+ // Purpur start - UPnP Port Forwarding
|
||||
@@ -55,13 +55,13 @@
|
||||
|
||||
// CraftBukkit start
|
||||
this.server.loadPlugins();
|
||||
@@ -410,6 +_,9 @@
|
||||
MinecraftServerStatistics.registerJmxMonitoring(this);
|
||||
LOGGER.info("JMX monitoring enabled");
|
||||
}
|
||||
@@ -406,6 +_,9 @@
|
||||
MinecraftServerStatistics.registerJmxMonitoring(this);
|
||||
LOGGER.info("JMX monitoring enabled");
|
||||
}
|
||||
+
|
||||
+ org.purpurmc.purpur.task.BossBarTask.startAll(); // Purpur - Implement TPSBar
|
||||
+ if (org.purpurmc.purpur.PurpurConfig.beeCountPayload) org.purpurmc.purpur.task.BeehiveTask.instance().register(); // Purpur - Give bee counts in beehives to Purpur clients
|
||||
+ org.purpurmc.purpur.task.BossBarTask.startAll(); // Purpur - Implement TPSBar
|
||||
+ if (org.purpurmc.purpur.PurpurConfig.beeCountPayload) org.purpurmc.purpur.task.BeehiveTask.instance().register(); // Purpur - Give bee counts in beehives to Purpur clients
|
||||
|
||||
this.saveEverything(false, true, true);
|
||||
this.notificationManager().serverStarted();
|
||||
this.saveEverything(false, true, true);
|
||||
this.notificationManager().serverStarted();
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--- a/net/minecraft/server/gui/MinecraftServerGui.java
|
||||
+++ b/net/minecraft/server/gui/MinecraftServerGui.java
|
||||
@@ -40,6 +_,11 @@
|
||||
@@ -39,6 +_,11 @@
|
||||
private Thread logAppenderThread;
|
||||
private final Collection<Runnable> finalizers = Lists.newArrayList();
|
||||
private final AtomicBoolean isClosing = new AtomicBoolean();
|
||||
@@ -12,7 +12,7 @@
|
||||
|
||||
public static MinecraftServerGui showFrameFor(final DedicatedServer server) {
|
||||
try {
|
||||
@@ -47,7 +_,7 @@
|
||||
@@ -46,7 +_,7 @@
|
||||
} catch (Exception var3) {
|
||||
}
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
final MinecraftServerGui gui = new MinecraftServerGui(server);
|
||||
frame.setDefaultCloseOperation(2);
|
||||
frame.add(gui);
|
||||
@@ -55,7 +_,7 @@
|
||||
@@ -54,7 +_,7 @@
|
||||
frame.setLocationRelativeTo(null);
|
||||
frame.setVisible(true);
|
||||
// Paper start - Improve ServerGUI
|
||||
@@ -30,7 +30,7 @@
|
||||
try {
|
||||
frame.setIconImage(javax.imageio.ImageIO.read(java.util.Objects.requireNonNull(MinecraftServerGui.class.getClassLoader().getResourceAsStream("logo.png"))));
|
||||
} catch (java.io.IOException ignore) {
|
||||
@@ -65,7 +_,7 @@
|
||||
@@ -64,7 +_,7 @@
|
||||
@Override
|
||||
public void windowClosing(final WindowEvent event) {
|
||||
if (!gui.isClosing.getAndSet(true)) {
|
||||
@@ -39,7 +39,7 @@
|
||||
server.halt(true);
|
||||
gui.runFinalizers();
|
||||
}
|
||||
@@ -113,7 +_,7 @@
|
||||
@@ -112,7 +_,7 @@
|
||||
|
||||
private JComponent buildChatPanel() {
|
||||
JPanel panel = new JPanel(new BorderLayout());
|
||||
@@ -48,7 +48,7 @@
|
||||
JScrollPane scrollPane = new JScrollPane(chatArea, 22, 30);
|
||||
chatArea.setEditable(false);
|
||||
chatArea.setFont(MONOSPACED);
|
||||
@@ -122,10 +_,43 @@
|
||||
@@ -121,10 +_,43 @@
|
||||
String text = chatField.getText().trim();
|
||||
if (!text.isEmpty()) {
|
||||
this.server.handleConsoleInput(text, this.server.createCommandSourceStack());
|
||||
@@ -90,9 +90,9 @@
|
||||
+ });
|
||||
+ // Purpur end - GUI Improvements
|
||||
chatArea.addFocusListener(new FocusAdapter() {
|
||||
{
|
||||
Objects.requireNonNull(MinecraftServerGui.this);
|
||||
@@ -164,7 +_,7 @@
|
||||
@Override
|
||||
public void focusGained(final FocusEvent arg0) {
|
||||
@@ -159,7 +_,7 @@
|
||||
}
|
||||
|
||||
private static final java.util.regex.Pattern ANSI = java.util.regex.Pattern.compile("\\e\\[[\\d;]*[^\\d;]"); // CraftBukkit // Paper
|
||||
@@ -101,7 +101,7 @@
|
||||
if (!SwingUtilities.isEventDispatchThread()) {
|
||||
SwingUtilities.invokeLater(() -> this.print(console, scrollPane, line));
|
||||
} else {
|
||||
@@ -175,16 +_,29 @@
|
||||
@@ -170,16 +_,29 @@
|
||||
shouldScroll = scrollBar.getValue() + scrollBar.getSize().getHeight() + MONOSPACED.getSize() * 4 > scrollBar.getMaximum();
|
||||
}
|
||||
|
||||
|
||||
@@ -170,7 +170,7 @@
|
||||
? this.getDestroyType(GameRules.MOB_EXPLOSION_DROP_DECAY)
|
||||
: Explosion.BlockInteraction.KEEP;
|
||||
case TNT -> this.getDestroyType(GameRules.TNT_EXPLOSION_DROP_DECAY);
|
||||
@@ -2919,7 +_,7 @@
|
||||
@@ -2914,7 +_,7 @@
|
||||
// Spigot start
|
||||
if (entity.getBukkitEntity() instanceof org.bukkit.inventory.InventoryHolder && (!(entity instanceof ServerPlayer) || entity.getRemovalReason() != Entity.RemovalReason.KILLED)) { // SPIGOT-6876: closeInventory clears death message
|
||||
// Paper start - Fix merchant inventory not closing on entity removal
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--- a/net/minecraft/server/level/ServerPlayer.java
|
||||
+++ b/net/minecraft/server/level/ServerPlayer.java
|
||||
@@ -454,6 +_,9 @@
|
||||
@@ -435,6 +_,9 @@
|
||||
public boolean isRealPlayer; // Paper
|
||||
public com.destroystokyo.paper.event.entity.@Nullable PlayerNaturallySpawnCreaturesEvent playerNaturallySpawnedEvent; // Paper - PlayerNaturallySpawnCreaturesEvent
|
||||
public org.bukkit.event.player.PlayerQuitEvent.@Nullable 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
|
||||
@@ -10,7 +10,7 @@
|
||||
|
||||
// Paper start - rewrite chunk system
|
||||
private ca.spottedleaf.moonrise.patches.chunk_system.player.RegionizedPlayerChunkLoader.PlayerChunkLoaderData chunkLoader;
|
||||
@@ -527,6 +_,9 @@
|
||||
@@ -508,6 +_,9 @@
|
||||
this.respawnConfig = input.read("respawn", ServerPlayer.RespawnConfig.CODEC).orElse(null);
|
||||
this.spawnExtraParticlesOnFall = input.getBooleanOr("spawn_extra_particles_on_fall", false);
|
||||
this.raidOmenPosition = input.read("raid_omen_position", BlockPos.CODEC).orElse(null);
|
||||
@@ -20,7 +20,7 @@
|
||||
// Paper start - Expand PlayerGameModeChangeEvent
|
||||
this.loadGameTypes(input);
|
||||
}
|
||||
@@ -568,6 +_,9 @@
|
||||
@@ -549,6 +_,9 @@
|
||||
output.store("ShoulderEntityRight", CompoundTag.CODEC, this.getShoulderEntityRight());
|
||||
}
|
||||
this.getBukkitEntity().setExtraData(output); // CraftBukkit
|
||||
@@ -30,7 +30,7 @@
|
||||
}
|
||||
|
||||
private void saveParentVehicle(final ValueOutput playerOutput) {
|
||||
@@ -1203,6 +_,7 @@
|
||||
@@ -1179,6 +_,7 @@
|
||||
// Paper - moved up to sendClientboundPlayerCombatKillPacket()
|
||||
sendClientboundPlayerCombatKillPacket(event.getShowDeathMessages(), deathScreenMessage); // Paper - Expand PlayerDeathEvent
|
||||
Team team = this.getTeam();
|
||||
@@ -38,59 +38,66 @@
|
||||
if (team == null || team.getDeathMessageVisibility() == Team.Visibility.ALWAYS) {
|
||||
this.server.getPlayerList().broadcastSystemMessage(deathMessage, false);
|
||||
} else if (team.getDeathMessageVisibility() == Team.Visibility.HIDE_FOR_OTHER_TEAMS) {
|
||||
@@ -1311,6 +_,13 @@
|
||||
if (this.isInvulnerableTo(level, source)) {
|
||||
@@ -1288,6 +_,13 @@
|
||||
return false;
|
||||
} else {
|
||||
+ // Purpur start - Add boat fall damage config
|
||||
+ if (source.is(net.minecraft.tags.DamageTypeTags.IS_FALL)) {
|
||||
+ if (getRootVehicle() instanceof net.minecraft.world.entity.vehicle.boat.Boat && !level().purpurConfig.boatsDoFallDamage) {
|
||||
+ return false;
|
||||
+ }
|
||||
}
|
||||
|
||||
+ // Purpur start - Add boat fall damage config
|
||||
+ if (source.is(net.minecraft.tags.DamageTypeTags.IS_FALL)) {
|
||||
+ if (getRootVehicle() instanceof net.minecraft.world.entity.vehicle.boat.Boat && !level().purpurConfig.boatsDoFallDamage) {
|
||||
+ return false;
|
||||
+ }
|
||||
+ // Purpur end - Add boat fall damage config
|
||||
Entity entity = source.getEntity();
|
||||
if (!( // Paper - split the if statement. If below statement is false, hurtServer would not have been evaluated. Return false.
|
||||
!(entity instanceof Player playerx && !this.canHarmPlayer(playerx))
|
||||
@@ -1570,6 +_,7 @@
|
||||
+ }
|
||||
+ // Purpur end - Add boat fall damage config
|
||||
Entity entity = source.getEntity();
|
||||
if (!( // Paper - split the if statement. If below statement is false, hurtServer would not have been evaluated. Return false.
|
||||
!(entity instanceof Player player && !this.canHarmPlayer(player))
|
||||
@@ -1529,7 +_,7 @@
|
||||
}
|
||||
|
||||
profiler.pop();
|
||||
profiler.push("placing");
|
||||
+ this.portalPos = org.bukkit.craftbukkit.util.CraftLocation.toBlockPos(exit); // Purpur - Fix stuck in portals
|
||||
this.setServerLevel(newLevel);
|
||||
this.connection.internalTeleport(PositionMoveRotation.of(transition), transition.relatives()); // CraftBukkit - use internal teleport without event
|
||||
this.connection.resetPosition();
|
||||
@@ -1686,7 +_,7 @@
|
||||
),
|
||||
monster -> monster.isPreventingPlayerRest(this.level(), this)
|
||||
);
|
||||
- if (!monsters.isEmpty()) {
|
||||
+ if (!this.level().purpurConfig.playerSleepNearMonsters && !monsters.isEmpty()) { // Purpur - Config to ignore nearby mobs when sleeping
|
||||
return Either.left(Player.BedSleepingProblem.NOT_SAFE);
|
||||
}
|
||||
}
|
||||
@@ -1726,8 +_,19 @@
|
||||
CriteriaTriggers.SLEPT_IN_BED.trigger(this);
|
||||
});
|
||||
if (!this.level().canSleepThroughNights()) {
|
||||
- this.sendOverlayMessage(Component.translatable("sleep.not_possible"));
|
||||
+ // Purpur start - Customizable sleeping actionbar messages
|
||||
+ Component clientMessage;
|
||||
+ if (org.purpurmc.purpur.PurpurConfig.sleepNotPossible.isBlank()) {
|
||||
+ clientMessage = null;
|
||||
+ } else if (!org.purpurmc.purpur.PurpurConfig.sleepNotPossible.equalsIgnoreCase("default")) {
|
||||
+ clientMessage = io.papermc.paper.adventure.PaperAdventure.asVanilla(net.kyori.adventure.text.minimessage.MiniMessage.miniMessage().deserialize(org.purpurmc.purpur.PurpurConfig.sleepNotPossible));
|
||||
+ } else {
|
||||
+ clientMessage = Component.translatable("sleep.not_possible");
|
||||
}
|
||||
+ if (clientMessage != null) {
|
||||
+ this.sendOverlayMessage(clientMessage);
|
||||
+ }// Purpur end - Customizable sleeping actionbar messages
|
||||
+ }
|
||||
if (newLevel.dimension() == lastDimension) {
|
||||
- this.connection.internalTeleport(PositionMoveRotation.of(transition), transition.relatives()); // CraftBukkit
|
||||
+ this.connection.internalTeleport(PositionMoveRotation.of(transition), transition.relatives()); // CraftBukkit
|
||||
this.connection.resetPosition();
|
||||
transition.postTeleportTransition().onTransition(this);
|
||||
return this;
|
||||
@@ -1552,6 +_,7 @@
|
||||
|
||||
this.level().updateSleepingPlayerList();
|
||||
return result;
|
||||
@@ -1821,6 +_,7 @@
|
||||
profiler.pop();
|
||||
profiler.push("placing");
|
||||
+ this.portalPos = org.bukkit.craftbukkit.util.CraftLocation.toBlockPos(exit); // Purpur - Fix stuck in portals
|
||||
this.setServerLevel(newLevel);
|
||||
this.connection.internalTeleport(PositionMoveRotation.of(transition), transition.relatives()); // CraftBukkit - use internal teleport without event
|
||||
this.connection.resetPosition();
|
||||
@@ -1664,7 +_,7 @@
|
||||
new AABB(bedCenter.x() - 8.0, bedCenter.y() - 5.0, bedCenter.z() - 8.0, bedCenter.x() + 8.0, bedCenter.y() + 5.0, bedCenter.z() + 8.0),
|
||||
monster -> monster.isPreventingPlayerRest(this.level(), this)
|
||||
);
|
||||
- if (!monsters.isEmpty()) {
|
||||
+ if (!this.level().purpurConfig.playerSleepNearMonsters && !monsters.isEmpty()) { // Purpur - Config to ignore nearby mobs when sleeping
|
||||
return Either.left(Player.BedSleepingProblem.NOT_SAFE);
|
||||
}
|
||||
}
|
||||
@@ -1700,7 +_,17 @@
|
||||
CriteriaTriggers.SLEPT_IN_BED.trigger(this);
|
||||
});
|
||||
if (!this.level().canSleepThroughNights()) {
|
||||
- this.sendOverlayMessage(Component.translatable("sleep.not_possible"));
|
||||
+ // Purpur start - Customizable sleeping actionbar messages
|
||||
+ Component clientMessage;
|
||||
+ if (org.purpurmc.purpur.PurpurConfig.sleepNotPossible.isBlank()) {
|
||||
+ clientMessage = null;
|
||||
+ } else if (!org.purpurmc.purpur.PurpurConfig.sleepNotPossible.equalsIgnoreCase("default")) {
|
||||
+ clientMessage = io.papermc.paper.adventure.PaperAdventure.asVanilla(net.kyori.adventure.text.minimessage.MiniMessage.miniMessage().deserialize(org.purpurmc.purpur.PurpurConfig.sleepNotPossible));
|
||||
+ } else {
|
||||
+ clientMessage = Component.translatable("sleep.not_possible");
|
||||
+ } if (clientMessage != null) {
|
||||
+ this.sendOverlayMessage(clientMessage);
|
||||
+ }// Purpur end - Customizable sleeping actionbar messages
|
||||
}
|
||||
|
||||
this.level().updateSleepingPlayerList();
|
||||
@@ -1794,6 +_,7 @@
|
||||
|
||||
@Override
|
||||
public void openTextEdit(final SignBlockEntity sign, final boolean isFrontText) {
|
||||
@@ -98,7 +105,7 @@
|
||||
this.connection.send(new ClientboundBlockUpdatePacket(this.level(), sign.getBlockPos()));
|
||||
this.connection.send(new ClientboundOpenSignEditorPacket(sign.getBlockPos(), isFrontText));
|
||||
}
|
||||
@@ -2164,6 +_,26 @@
|
||||
@@ -2138,6 +_,26 @@
|
||||
this.lastSentExp = -1; // CraftBukkit - Added to reset
|
||||
}
|
||||
|
||||
@@ -125,7 +132,7 @@
|
||||
@Override
|
||||
public void completeUsingItem() {
|
||||
if (!this.useItem.isEmpty() && this.isUsingItem()) {
|
||||
@@ -2403,6 +_,20 @@
|
||||
@@ -2373,6 +_,20 @@
|
||||
);
|
||||
}
|
||||
|
||||
@@ -146,7 +153,7 @@
|
||||
@Override
|
||||
public void sendSystemMessage(final Component message) {
|
||||
this.sendSystemMessage(message, false);
|
||||
@@ -2554,7 +_,67 @@
|
||||
@@ -2524,7 +_,67 @@
|
||||
|
||||
public void resetLastActionTime() {
|
||||
this.lastActionTime = Util.getMillis();
|
||||
@@ -215,7 +222,7 @@
|
||||
|
||||
public ServerStatsCounter getStats() {
|
||||
return this.stats;
|
||||
@@ -3179,4 +_,65 @@
|
||||
@@ -3149,4 +_,65 @@
|
||||
return (org.bukkit.craftbukkit.entity.CraftPlayer) super.getBukkitEntity();
|
||||
}
|
||||
// CraftBukkit end
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--- a/net/minecraft/server/level/ServerPlayerGameMode.java
|
||||
+++ b/net/minecraft/server/level/ServerPlayerGameMode.java
|
||||
@@ -371,6 +_,7 @@
|
||||
@@ -370,6 +_,7 @@
|
||||
}
|
||||
return false;
|
||||
}
|
||||
@@ -16,7 +16,7 @@
|
||||
BlockPos pos = hitResult.getBlockPos();
|
||||
BlockState state = level.getBlockState(pos);
|
||||
boolean cancelledBlock = false;
|
||||
@@ -549,7 +_,7 @@
|
||||
@@ -551,7 +_,7 @@
|
||||
boolean haveSomethingInOurHands = !player.getMainHandItem().isEmpty() || !player.getOffhandItem().isEmpty();
|
||||
boolean suppressUsingBlock = player.isSecondaryUseActive() && haveSomethingInOurHands;
|
||||
ItemStack usedItemStack = itemStack.copy();
|
||||
@@ -25,7 +25,7 @@
|
||||
InteractionResult itemUse = state.useItemOn(player.getItemInHand(hand), level, player, hand, hitResult);
|
||||
if (itemUse.consumesAction()) {
|
||||
CriteriaTriggers.ITEM_USED_ON_BLOCK.trigger(player, pos, usedItemStack);
|
||||
@@ -595,4 +_,18 @@
|
||||
@@ -597,4 +_,18 @@
|
||||
public void setLevel(final ServerLevel newLevel) {
|
||||
this.level = newLevel;
|
||||
}
|
||||
|
||||
@@ -206,7 +206,7 @@
|
||||
private boolean shouldCheckPlayerMovement(final boolean isFallFlying) {
|
||||
if (this.isSingleplayerOwner()) {
|
||||
return false;
|
||||
@@ -2227,6 +_,7 @@
|
||||
@@ -2229,6 +_,7 @@
|
||||
|
||||
boolean cancelled;
|
||||
if (hitResult == null || hitResult.getType() != HitResult.Type.BLOCK) {
|
||||
@@ -214,7 +214,7 @@
|
||||
org.bukkit.event.player.PlayerInteractEvent event = CraftEventFactory.callPlayerInteractEvent(this.player, Action.RIGHT_CLICK_AIR, itemStack, hand);
|
||||
cancelled = event.useItemInHand() == Event.Result.DENY;
|
||||
} else {
|
||||
@@ -2861,6 +_,7 @@
|
||||
@@ -2863,6 +_,7 @@
|
||||
ItemStack mainHandItem = this.player.getMainHandItem();
|
||||
if (this.player.isWithinAttackRange(mainHandItem, targetBounds, io.papermc.paper.configuration.GlobalConfiguration.get().misc.clientInteractionLeniencyDistance.or(3.0))) { // Paper - configurable lenience
|
||||
if (!mainHandItem.has(DataComponents.PIERCING_WEAPON)) {
|
||||
@@ -222,7 +222,7 @@
|
||||
if (target instanceof ItemEntity
|
||||
|| target instanceof ExperienceOrb
|
||||
|| target == this.player
|
||||
@@ -3642,7 +_,7 @@
|
||||
@@ -3644,7 +_,7 @@
|
||||
@Override
|
||||
public void handleChangeGameMode(final ServerboundChangeGameModePacket packet) {
|
||||
PacketUtils.ensureRunningOnSameThread(packet, this, this.player.level());
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--- a/net/minecraft/server/network/ServerLoginPacketListenerImpl.java
|
||||
+++ b/net/minecraft/server/network/ServerLoginPacketListenerImpl.java
|
||||
@@ -288,7 +_,7 @@
|
||||
@@ -284,7 +_,7 @@
|
||||
ServerLoginPacketListenerImpl.LOGGER.warn("Failed to verify username but will let them in anyway!");
|
||||
ServerLoginPacketListenerImpl.this.startClientVerification(ServerLoginPacketListenerImpl.this.createOfflineProfile(name)); // Spigot
|
||||
} else {
|
||||
@@ -8,4 +8,4 @@
|
||||
+ ServerLoginPacketListenerImpl.this.disconnect(org.purpurmc.purpur.PurpurConfig.unverifiedUsername.equals("default") ? Component.translatable("multiplayer.disconnect.unverified_username") : io.papermc.paper.adventure.PaperAdventure.asVanilla(net.kyori.adventure.text.minimessage.MiniMessage.miniMessage().deserialize(org.purpurmc.purpur.PurpurConfig.unverifiedUsername))); // Purpur - Config for unverified username message
|
||||
ServerLoginPacketListenerImpl.LOGGER.error("Username '{}' tried to join with an invalid session", name);
|
||||
}
|
||||
} catch (AuthenticationUnavailableException var4) {
|
||||
} catch (AuthenticationUnavailableException ignored) {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--- a/net/minecraft/server/players/PlayerList.java
|
||||
+++ b/net/minecraft/server/players/PlayerList.java
|
||||
@@ -313,6 +_,7 @@
|
||||
@@ -312,6 +_,7 @@
|
||||
scoreboard.addPlayerToTeam(player.getScoreboardName(), collideRuleTeam);
|
||||
}
|
||||
// Paper end - Configurable player collision
|
||||
@@ -8,7 +8,7 @@
|
||||
// CraftBukkit start - moved down
|
||||
LOGGER.info(
|
||||
"{}[{}] logged in with entity id {} at ([{}]{}, {}, {})", // Paper - add world identifier
|
||||
@@ -437,6 +_,7 @@
|
||||
@@ -432,6 +_,7 @@
|
||||
}
|
||||
public net.kyori.adventure.text.@Nullable Component remove(final ServerPlayer player, final net.kyori.adventure.text.Component leaveMessage) {
|
||||
// Paper end - Fix kick event leave message not being sent
|
||||
@@ -16,7 +16,7 @@
|
||||
ServerLevel level = player.level();
|
||||
player.awardStat(Stats.LEAVE_GAME);
|
||||
// CraftBukkit start - Quitting must be before we do final save of data, in case plugins need to modify it
|
||||
@@ -771,6 +_,20 @@
|
||||
@@ -768,6 +_,20 @@
|
||||
}
|
||||
}
|
||||
|
||||
@@ -37,7 +37,7 @@
|
||||
public void broadcastAll(final Packet<?> packet, final ResourceKey<Level> dimension) {
|
||||
for (ServerPlayer player : this.players) {
|
||||
if (player.level().dimension() == dimension) {
|
||||
@@ -864,6 +_,7 @@
|
||||
@@ -861,6 +_,7 @@
|
||||
case ADMINS -> EntityEvent.PERMISSION_LEVEL_ADMINS;
|
||||
case OWNERS -> EntityEvent.PERMISSION_LEVEL_OWNERS;
|
||||
};
|
||||
@@ -45,7 +45,7 @@
|
||||
player.connection.send(new ClientboundEntityEventPacket(player, eventId));
|
||||
}
|
||||
|
||||
@@ -875,7 +_,7 @@
|
||||
@@ -872,7 +_,7 @@
|
||||
|
||||
// Paper start - whitelist verify event / login event
|
||||
public LoginResult canBypassFullServerLogin(final NameAndId nameAndId, final LoginResult currentResult) {
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
+ public float maxUpStep; // Purpur - Add option to set armorstand step height
|
||||
public boolean noPhysics;
|
||||
- public final RandomSource random = SHARED_RANDOM; // Paper - Share random for entities to make them more random
|
||||
+ public final RandomSource random; // Paper - Share random for entities to make them more random // Add toggle for RNG manipulation
|
||||
+ public final RandomSource random; // Paper - Share random for entities to make them more random // Purpur - Add toggle for RNG manipulation
|
||||
public int tickCount;
|
||||
private int remainingFireTicks;
|
||||
private final EntityFluidInteraction fluidInteraction = new EntityFluidInteraction(Set.of(FluidTags.WATER, FluidTags.LAVA));
|
||||
@@ -69,7 +69,7 @@
|
||||
this.onBelowWorld();
|
||||
}
|
||||
}
|
||||
@@ -2005,7 +_,7 @@
|
||||
@@ -2007,7 +_,7 @@
|
||||
}
|
||||
|
||||
public boolean fireImmune() {
|
||||
@@ -78,7 +78,7 @@
|
||||
}
|
||||
|
||||
public boolean causeFallDamage(final double fallDistance, final float damageModifier, final DamageSource damageSource) {
|
||||
@@ -2591,7 +_,7 @@
|
||||
@@ -2593,7 +_,7 @@
|
||||
output.putBoolean("Bukkit.invisible", this.persistentInvisibility);
|
||||
}
|
||||
// SPIGOT-6907: re-implement LivingEntity#setMaximumAir()
|
||||
@@ -87,7 +87,7 @@
|
||||
output.putInt("Bukkit.MaxAirSupply", this.getMaxAirSupply());
|
||||
}
|
||||
output.putInt("Spigot.ticksLived", this.totalEntityAge); // Paper
|
||||
@@ -2678,6 +_,11 @@
|
||||
@@ -2679,6 +_,11 @@
|
||||
output.putBoolean("Paper.FreezeLock", true);
|
||||
}
|
||||
// Paper end
|
||||
@@ -96,28 +96,28 @@
|
||||
+ output.putBoolean("Purpur.FireImmune", immuneToFire);
|
||||
+ }
|
||||
+ // Purpur end - Fire immune API
|
||||
} catch (Throwable var7) {
|
||||
CrashReport report = CrashReport.forThrowable(var7, "Saving entity NBT");
|
||||
} catch (Throwable t) {
|
||||
CrashReport report = CrashReport.forThrowable(t, "Saving entity NBT");
|
||||
CrashReportCategory category = report.addCategory("Entity being saved");
|
||||
@@ -2800,6 +_,9 @@
|
||||
@@ -2802,6 +_,9 @@
|
||||
}
|
||||
freezeLocked = input.getBooleanOr("Paper.FreezeLock", false);
|
||||
// Paper end
|
||||
+
|
||||
+ immuneToFire = input.read("Purpur.FireImmune", com.mojang.serialization.Codec.BOOL).orElse(null); // Purpur - Fire immune API
|
||||
+
|
||||
} catch (Throwable var7) {
|
||||
CrashReport report = CrashReport.forThrowable(var7, "Loading entity NBT");
|
||||
} catch (Throwable t) {
|
||||
CrashReport report = CrashReport.forThrowable(t, "Loading entity NBT");
|
||||
CrashReportCategory category = report.addCategory("Entity being loaded");
|
||||
@@ -3068,6 +_,7 @@
|
||||
if (this.isAlive() && this instanceof Leashable leashablex) {
|
||||
if (leashablex.getLeashHolder() == player) {
|
||||
@@ -3067,6 +_,7 @@
|
||||
if (this.isAlive() && this instanceof Leashable leashable) {
|
||||
if (leashable.getLeashHolder() == player) {
|
||||
if (!this.level().isClientSide()) {
|
||||
+ if (hand == InteractionHand.OFF_HAND && (level().purpurConfig.villagerCanBeLeashed || level().purpurConfig.wanderingTraderCanBeLeashed) && this instanceof net.minecraft.world.entity.npc.villager.AbstractVillager) return InteractionResult.CONSUME; // Purpur - Allow leashing villagers
|
||||
// Paper start - EntityUnleashEvent
|
||||
if (!org.bukkit.craftbukkit.event.CraftEventFactory.handlePlayerUnleashEntityEvent(
|
||||
leashablex, player, hand, !player.hasInfiniteMaterials(), true
|
||||
@@ -3498,15 +_,18 @@
|
||||
leashable, player, hand, !player.hasInfiniteMaterials(), true
|
||||
@@ -3500,15 +_,18 @@
|
||||
return Vec3.directionFromRotation(this.getRotationVector());
|
||||
}
|
||||
|
||||
@@ -137,7 +137,7 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -4236,7 +_,7 @@
|
||||
@@ -4238,7 +_,7 @@
|
||||
}
|
||||
|
||||
public boolean canUsePortal(final boolean ignorePassenger) {
|
||||
@@ -146,7 +146,7 @@
|
||||
}
|
||||
|
||||
public boolean canTeleport(final Level from, final Level to) {
|
||||
@@ -4786,6 +_,12 @@
|
||||
@@ -4788,6 +_,12 @@
|
||||
return Mth.lerp(partial, this.yRotO, this.yRot);
|
||||
}
|
||||
|
||||
@@ -159,7 +159,7 @@
|
||||
public boolean touchingUnloadedChunk() {
|
||||
AABB box = this.getBoundingBox().inflate(1.0);
|
||||
int x0 = Mth.floor(box.minX);
|
||||
@@ -5089,7 +_,7 @@
|
||||
@@ -5091,7 +_,7 @@
|
||||
}
|
||||
|
||||
public float maxUpStep() {
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -1046,15 +_,33 @@
|
||||
@@ -1048,15 +_,33 @@
|
||||
}
|
||||
|
||||
if (targetingEntity != null) {
|
||||
@@ -74,40 +74,40 @@
|
||||
|
||||
return visibilityPercent;
|
||||
}
|
||||
@@ -1101,6 +_,7 @@
|
||||
Iterator<MobEffectInstance> iterator = this.activeEffects.values().iterator();
|
||||
while (iterator.hasNext()) {
|
||||
MobEffectInstance effect = iterator.next();
|
||||
+ if (cause == EntityPotionEffectEvent.Cause.MILK && !this.level().purpurConfig.milkClearsBeneficialEffects && effect.getEffect().value().isBeneficial()) continue; // Purpur - Milk Keeps Beneficial Effects
|
||||
EntityPotionEffectEvent event = CraftEventFactory.callEntityPotionEffectChangeEvent(this, effect, null, cause, EntityPotionEffectEvent.Action.CLEARED);
|
||||
if (event.isCancelled()) {
|
||||
continue;
|
||||
@@ -1432,6 +_,24 @@
|
||||
this.stopSleeping();
|
||||
}
|
||||
@@ -1106,6 +_,7 @@
|
||||
Iterator<MobEffectInstance> iterator = this.activeEffects.values().iterator();
|
||||
while (iterator.hasNext()) {
|
||||
MobEffectInstance effect = iterator.next();
|
||||
+ if (cause == EntityPotionEffectEvent.Cause.MILK && !this.level().purpurConfig.milkClearsBeneficialEffects && effect.getEffect().value().isBeneficial()) continue; // Purpur - Milk Keeps Beneficial Effects
|
||||
EntityPotionEffectEvent event = CraftEventFactory.callEntityPotionEffectChangeEvent(this, effect, null, cause, EntityPotionEffectEvent.Action.CLEARED);
|
||||
if (event.isCancelled()) {
|
||||
continue;
|
||||
@@ -1438,7 +_,23 @@
|
||||
this.stopSleeping();
|
||||
}
|
||||
|
||||
+ // Purpur start - One Punch Man!
|
||||
+ if (source.getEntity() instanceof net.minecraft.world.entity.player.Player player && source.getEntity().level().purpurConfig.creativeOnePunch && !source.is(DamageTypeTags.IS_PROJECTILE)) {
|
||||
+ if (player.isCreative()) {
|
||||
+ org.apache.commons.lang3.mutable.MutableDouble attackDamage = new org.apache.commons.lang3.mutable.MutableDouble();
|
||||
+ player.getMainHandItem().forEachModifier(EquipmentSlot.MAINHAND, (attributeHolder, attributeModifier) -> {
|
||||
+ if (attributeModifier.operation() == AttributeModifier.Operation.ADD_VALUE) {
|
||||
+ attackDamage.addAndGet(attributeModifier.amount());
|
||||
+ }
|
||||
+ });
|
||||
+
|
||||
+ if (attackDamage.doubleValue() == 0.0D) {
|
||||
+ // One punch!
|
||||
+ damage = this.getHealth();
|
||||
- this.noActionTime = 0;
|
||||
+ // Purpur start - One Punch Man!
|
||||
+ if (source.getEntity() instanceof net.minecraft.world.entity.player.Player player && source.getEntity().level().purpurConfig.creativeOnePunch && !source.is(DamageTypeTags.IS_PROJECTILE)) {
|
||||
+ if (player.isCreative()) {
|
||||
+ org.apache.commons.lang3.mutable.MutableDouble attackDamage = new org.apache.commons.lang3.mutable.MutableDouble();
|
||||
+ player.getMainHandItem().forEachModifier(EquipmentSlot.MAINHAND, (attributeHolder, attributeModifier) -> {
|
||||
+ if (attributeModifier.operation() == AttributeModifier.Operation.ADD_VALUE) {
|
||||
+ attackDamage.addAndGet(attributeModifier.amount());
|
||||
+ }
|
||||
+ });
|
||||
+
|
||||
+ if (attackDamage.doubleValue() == 0.0D) {
|
||||
+ // One punch!
|
||||
+ damage = this.getHealth();
|
||||
+ }
|
||||
+ }
|
||||
+ // Purpur end - One Punch Man!
|
||||
+
|
||||
this.noActionTime = 0;
|
||||
if (damage < 0.0F) {
|
||||
damage = 0.0F;
|
||||
@@ -1693,10 +_,10 @@
|
||||
+ }
|
||||
+ // Purpur end - One Punch Man!this.noActionTime = 0;
|
||||
if (damage < 0.0F) {
|
||||
damage = 0.0F;
|
||||
}
|
||||
@@ -1699,10 +_,10 @@
|
||||
protected @Nullable Player resolvePlayerResponsibleForDamage(final DamageSource source) {
|
||||
Entity sourceEntity = source.getEntity();
|
||||
if (sourceEntity instanceof Player playerSource) {
|
||||
@@ -120,26 +120,25 @@
|
||||
} else {
|
||||
this.lastHurtByPlayer = null;
|
||||
this.lastHurtByPlayerMemoryTime = 0;
|
||||
@@ -1747,6 +_,18 @@
|
||||
}
|
||||
@@ -1754,6 +_,17 @@
|
||||
}
|
||||
}
|
||||
|
||||
+ // Purpur start - Totems work in inventory
|
||||
+ if (level().purpurConfig.totemOfUndyingWorksInInventory && this instanceof ServerPlayer player && (itemStack == null || itemStack.getItem() != Items.TOTEM_OF_UNDYING) && player.getBukkitEntity().hasPermission("purpur.inventory_totem")) {
|
||||
+ for (ItemStack item : player.getInventory().getNonEquipmentItems()) {
|
||||
+ if (item.getItem() == Items.TOTEM_OF_UNDYING) {
|
||||
+ itemStack = item;
|
||||
+ protectionItem = item.copy();
|
||||
+ break;
|
||||
+ }
|
||||
+ // Purpur start - Totems work in inventory
|
||||
+ if (level().purpurConfig.totemOfUndyingWorksInInventory && this instanceof ServerPlayer player && (itemStack == null || itemStack.getItem() != Items.TOTEM_OF_UNDYING) && player.getBukkitEntity().hasPermission("purpur.inventory_totem")) {
|
||||
+ for (ItemStack item : player.getInventory().getNonEquipmentItems()) {
|
||||
+ if (item.getItem() == Items.TOTEM_OF_UNDYING) {
|
||||
+ itemStack = item;
|
||||
+ protectionItem = item.copy();
|
||||
+ break;
|
||||
+ }
|
||||
+ }
|
||||
+ // Purpur end - Totems work in inventory
|
||||
+
|
||||
final org.bukkit.inventory.EquipmentSlot handSlot = (usedHand != null) ? org.bukkit.craftbukkit.CraftEquipmentSlot.getHand(usedHand) : null;
|
||||
final EntityResurrectEvent event = new EntityResurrectEvent((org.bukkit.entity.LivingEntity) this.getBukkitEntity(), handSlot);
|
||||
event.setCancelled(protectionItem == null);
|
||||
@@ -1921,6 +_,7 @@
|
||||
+ }
|
||||
+ // Purpur end - Totems work in inventory
|
||||
final org.bukkit.inventory.EquipmentSlot handSlot = (usedHand != null) ? org.bukkit.craftbukkit.CraftEquipmentSlot.getHand(usedHand) : null;
|
||||
final EntityResurrectEvent event = new EntityResurrectEvent((org.bukkit.entity.LivingEntity) this.getBukkitEntity(), handSlot);
|
||||
event.setCancelled(protectionItem == null);
|
||||
@@ -1927,6 +_,7 @@
|
||||
boolean playerKilled = this.lastHurtByPlayerMemoryTime > 0;
|
||||
this.dropEquipment(level); // CraftBukkit - from below
|
||||
if (this.shouldDropLoot(level)) {
|
||||
@@ -147,7 +146,7 @@
|
||||
this.dropFromLootTable(level, source, playerKilled);
|
||||
// Paper start
|
||||
final boolean prev = this.clearEquipmentSlots;
|
||||
@@ -1929,6 +_,7 @@
|
||||
@@ -1935,6 +_,7 @@
|
||||
// Paper end
|
||||
this.dropCustomDeathLoot(level, source, playerKilled);
|
||||
this.clearEquipmentSlots = prev; // Paper
|
||||
@@ -155,7 +154,7 @@
|
||||
}
|
||||
|
||||
// CraftBukkit start - Call death event // Paper start - call advancement triggers with correct entity equipment
|
||||
@@ -3256,6 +_,7 @@
|
||||
@@ -3264,6 +_,7 @@
|
||||
float dmg = (float)(diff * 10.0 - 3.0);
|
||||
if (dmg > 0.0F) {
|
||||
this.playSound(this.getFallDamageSound((int)dmg), 1.0F, 1.0F);
|
||||
@@ -163,7 +162,7 @@
|
||||
this.hurt(this.damageSources().flyIntoWall(), dmg);
|
||||
}
|
||||
}
|
||||
@@ -4740,6 +_,12 @@
|
||||
@@ -4749,6 +_,12 @@
|
||||
? slot == EquipmentSlot.MAINHAND && this.canUseSlot(EquipmentSlot.MAINHAND)
|
||||
: slot == equippable.slot() && this.canUseSlot(equippable.slot()) && equippable.canBeEquippedBy(this.typeHolder());
|
||||
}
|
||||
|
||||
@@ -61,7 +61,7 @@
|
||||
// Paper start - allow changing despawnInPeaceful
|
||||
this.despawnInPeacefulOverride = readDespawnInPeacefulOverride(input);
|
||||
}
|
||||
@@ -1256,7 +_,7 @@
|
||||
@@ -1251,7 +_,7 @@
|
||||
);
|
||||
}
|
||||
|
||||
@@ -70,7 +70,7 @@
|
||||
return groupData;
|
||||
}
|
||||
|
||||
@@ -1613,6 +_,7 @@
|
||||
@@ -1608,6 +_,7 @@
|
||||
}
|
||||
|
||||
this.postPiercingAttack();
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--- a/net/minecraft/world/entity/ai/attributes/RangedAttribute.java
|
||||
+++ b/net/minecraft/world/entity/ai/attributes/RangedAttribute.java
|
||||
@@ -29,6 +_,7 @@
|
||||
@@ -33,6 +_,7 @@
|
||||
|
||||
@Override
|
||||
public double sanitizeValue(final double value) {
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
--- a/net/minecraft/world/entity/ai/behavior/AcquirePoi.java
|
||||
+++ b/net/minecraft/world/entity/ai/behavior/AcquirePoi.java
|
||||
@@ -90,7 +_,7 @@
|
||||
};
|
||||
// Paper start - optimise POI searches
|
||||
java.util.List<Pair<Holder<PoiType>, BlockPos>> poiPositionsRaw = new java.util.ArrayList<>();
|
||||
- ca.spottedleaf.moonrise.patches.poi_lookup.PoiAccess.findNearestPoiPositions(poiManager, poiType, cacheTest, body.blockPosition(), SCAN_RANGE, Double.MAX_VALUE, PoiManager.Occupancy.HAS_SPACE, ca.spottedleaf.moonrise.patches.poi_lookup.PoiAccess.LOAD_FOR_SEARCHING, 5, poiPositionsRaw);
|
||||
+ ca.spottedleaf.moonrise.patches.poi_lookup.PoiAccess.findNearestPoiPositions(poiManager, poiType, cacheTest, body.blockPosition(), level.purpurConfig.villagerAcquirePoiSearchRadius, Double.MAX_VALUE, PoiManager.Occupancy.HAS_SPACE, ca.spottedleaf.moonrise.patches.poi_lookup.PoiAccess.LOAD_FOR_SEARCHING, 5, poiPositionsRaw); // Purpur - Configurable villager search radius
|
||||
Set<Pair<Holder<PoiType>, BlockPos>> poiPositions = new java.util.HashSet<>(poiPositionsRaw.size());
|
||||
for (Pair<Holder<PoiType>, BlockPos> pair : poiPositionsRaw) {
|
||||
if (validPoi.test(level, pair.getSecond())) {
|
||||
@@ -96,7 +_,7 @@
|
||||
};
|
||||
// Paper start - optimise POI searches
|
||||
java.util.List<Pair<Holder<PoiType>, BlockPos>> poiPositionsRaw = new java.util.ArrayList<>();
|
||||
- ca.spottedleaf.moonrise.patches.poi_lookup.PoiAccess.findNearestPoiPositions(poiManager, poiType, cacheTest, body.blockPosition(), SCAN_RANGE, Double.MAX_VALUE, PoiManager.Occupancy.HAS_SPACE, ca.spottedleaf.moonrise.patches.poi_lookup.PoiAccess.LOAD_FOR_SEARCHING, 5, poiPositionsRaw);
|
||||
+ ca.spottedleaf.moonrise.patches.poi_lookup.PoiAccess.findNearestPoiPositions(poiManager, poiType, cacheTest, body.blockPosition(), level.purpurConfig.villagerAcquirePoiSearchRadius, Double.MAX_VALUE, PoiManager.Occupancy.HAS_SPACE, ca.spottedleaf.moonrise.patches.poi_lookup.PoiAccess.LOAD_FOR_SEARCHING, 5, poiPositionsRaw); // Purpur - Configurable villager search radius
|
||||
Set<Pair<Holder<PoiType>, BlockPos>> poiPositions = new java.util.HashSet<>(poiPositionsRaw.size());
|
||||
for (Pair<Holder<PoiType>, BlockPos> pair : poiPositionsRaw) {
|
||||
if (validPoi.test(level, pair.getSecond())) {
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
if (!this.llama.isLeashed() && !this.llama.inCaravan()) {
|
||||
List<Entity> llamas = this.llama
|
||||
.level()
|
||||
@@ -70,6 +_,7 @@
|
||||
@@ -74,6 +_,7 @@
|
||||
|
||||
@Override
|
||||
public boolean canContinueToUse() {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
--- a/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java
|
||||
+++ b/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java
|
||||
@@ -54,7 +_,7 @@
|
||||
}
|
||||
@@ -56,7 +_,7 @@
|
||||
return true;
|
||||
};
|
||||
Set<Pair<Holder<PoiType>, BlockPos>> pois = poiManager.findAllWithType(
|
||||
- e -> e.is(PoiTypes.HOME), cacheTest, body.blockPosition(), AcquirePoi.SCAN_RANGE, PoiManager.Occupancy.ANY
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
--- a/net/minecraft/world/entity/ai/targeting/TargetingConditions.java
|
||||
+++ b/net/minecraft/world/entity/ai/targeting/TargetingConditions.java
|
||||
@@ -63,6 +_,10 @@
|
||||
return false;
|
||||
} else if (this.selector != null && !this.selector.test(target, level)) {
|
||||
@@ -67,6 +_,10 @@
|
||||
|
||||
if (this.selector != null && !this.selector.test(target, level)) {
|
||||
return false;
|
||||
+ // Purpur start - AFK API
|
||||
+ } else if (!level.purpurConfig.idleTimeoutTargetPlayer && target instanceof net.minecraft.server.level.ServerPlayer player && player.isAfk()) {
|
||||
+ return false;
|
||||
+ // Purpur end - AFK API
|
||||
} else {
|
||||
if (targeter == null) {
|
||||
if (this.isCombat && (!target.canBeSeenAsEnemy() || level.getDifficulty() == Difficulty.PEACEFUL)) {
|
||||
}
|
||||
|
||||
if (targeter == null) {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--- a/net/minecraft/world/entity/animal/bee/Bee.java
|
||||
+++ b/net/minecraft/world/entity/animal/bee/Bee.java
|
||||
@@ -172,7 +_,7 @@
|
||||
@@ -171,7 +_,7 @@
|
||||
// Paper end - Fix MC-167279
|
||||
this.lookControl = new Bee.BeeLookControl(this);
|
||||
this.setPathfindingMalus(PathType.FIRE_IN_NEIGHBOR, -1.0F);
|
||||
@@ -9,7 +9,7 @@
|
||||
this.setPathfindingMalus(PathType.WATER_BORDER, 16.0F);
|
||||
this.setPathfindingMalus(PathType.COCOA, -1.0F);
|
||||
this.setPathfindingMalus(PathType.FENCE, -1.0F);
|
||||
@@ -363,13 +_,19 @@
|
||||
@@ -362,13 +_,19 @@
|
||||
if (this.stayOutOfHiveCountdown <= 0 && !this.beePollinateGoal.isPollinating() && !this.hasStung() && this.getTarget() == null) {
|
||||
boolean wantsToEnterHive = this.hasNectar()
|
||||
|| this.isTiredOfLookingForNectar()
|
||||
@@ -30,7 +30,7 @@
|
||||
public void setStayOutOfHiveCountdown(final int ticks) {
|
||||
this.stayOutOfHiveCountdown = ticks;
|
||||
}
|
||||
@@ -390,7 +_,7 @@
|
||||
@@ -389,7 +_,7 @@
|
||||
@Override
|
||||
protected void customServerAiStep(final ServerLevel level) {
|
||||
boolean hasStung = this.hasStung();
|
||||
@@ -39,7 +39,7 @@
|
||||
this.underWaterTicks++;
|
||||
} else {
|
||||
this.underWaterTicks = 0;
|
||||
@@ -400,6 +_,7 @@
|
||||
@@ -399,6 +_,7 @@
|
||||
this.hurtServer(level, this.damageSources().drown(), 1.0F);
|
||||
}
|
||||
|
||||
@@ -47,7 +47,7 @@
|
||||
if (hasStung) {
|
||||
this.timeSinceSting++;
|
||||
if (this.timeSinceSting % 5 == 0 && this.random.nextInt(Mth.clamp(1200 - this.timeSinceSting, 1, 1200)) == 0) {
|
||||
@@ -1168,6 +_,7 @@
|
||||
@@ -1132,6 +_,7 @@
|
||||
Bee.this.savedFlowerPos = nearbyPos.get();
|
||||
Bee.this.navigation
|
||||
.moveTo(Bee.this.savedFlowerPos.getX() + 0.5, Bee.this.savedFlowerPos.getY() + 0.5, Bee.this.savedFlowerPos.getZ() + 0.5, 1.2F);
|
||||
@@ -55,7 +55,7 @@
|
||||
return true;
|
||||
} else {
|
||||
Bee.this.remainingCooldownBeforeLocatingNewFlower = Mth.nextInt(Bee.this.random, 20, 60);
|
||||
@@ -1214,6 +_,7 @@
|
||||
@@ -1178,6 +_,7 @@
|
||||
this.pollinating = false;
|
||||
Bee.this.navigation.stop();
|
||||
Bee.this.remainingCooldownBeforeLocatingNewFlower = 200;
|
||||
@@ -63,7 +63,7 @@
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -1260,6 +_,7 @@
|
||||
@@ -1224,6 +_,7 @@
|
||||
this.setWantedPos();
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--- a/net/minecraft/world/entity/animal/fox/Fox.java
|
||||
+++ b/net/minecraft/world/entity/animal/fox/Fox.java
|
||||
@@ -364,6 +_,11 @@
|
||||
@@ -363,6 +_,11 @@
|
||||
}
|
||||
|
||||
private void setTargetGoals() {
|
||||
@@ -12,7 +12,7 @@
|
||||
if (this.getVariant() == Fox.Variant.RED) {
|
||||
this.targetSelector.addGoal(4, this.landTargetGoal);
|
||||
this.targetSelector.addGoal(4, this.turtleEggTargetGoal);
|
||||
@@ -391,6 +_,7 @@
|
||||
@@ -390,6 +_,7 @@
|
||||
|
||||
public void setVariant(final Fox.Variant variant) {
|
||||
this.entityData.set(DATA_TYPE_ID, variant.getId());
|
||||
@@ -20,7 +20,7 @@
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -716,6 +_,29 @@
|
||||
@@ -715,6 +_,29 @@
|
||||
return slot == EquipmentSlot.MAINHAND;
|
||||
}
|
||||
// Paper end
|
||||
|
||||
@@ -42,11 +42,11 @@
|
||||
this.readPersistentAngerSaveData(this.level(), input);
|
||||
}
|
||||
|
||||
@@ -267,6 +_,7 @@
|
||||
float pitch = 1.0F + (this.random.nextFloat() - this.random.nextFloat()) * 0.2F;
|
||||
this.playSound(SoundEvents.IRON_GOLEM_REPAIR, 1.0F, pitch);
|
||||
itemStack.consume(1, player);
|
||||
+ if (this.level().purpurConfig.ironGolemHealCalm && isAngry() && getHealth() == getMaxHealth()) stopBeingAngry(); // Purpur - Iron golem calm anger options
|
||||
return InteractionResult.SUCCESS;
|
||||
}
|
||||
}
|
||||
@@ -269,6 +_,7 @@
|
||||
float pitch = 1.0F + (this.random.nextFloat() - this.random.nextFloat()) * 0.2F;
|
||||
this.playSound(SoundEvents.IRON_GOLEM_REPAIR, 1.0F, pitch);
|
||||
itemStack.consume(1, player);
|
||||
+ if (this.level().purpurConfig.ironGolemHealCalm && isAngry() && getHealth() == getMaxHealth()) stopBeingAngry(); // Purpur - Iron golem calm anger options
|
||||
return InteractionResult.SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--- a/net/minecraft/world/entity/animal/polarbear/PolarBear.java
|
||||
+++ b/net/minecraft/world/entity/animal/polarbear/PolarBear.java
|
||||
@@ -67,6 +_,29 @@
|
||||
@@ -66,6 +_,29 @@
|
||||
super(type, level);
|
||||
}
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
@Override
|
||||
public @Nullable AgeableMob getBreedOffspring(final ServerLevel level, final AgeableMob partner) {
|
||||
return EntityType.POLAR_BEAR.create(level, EntitySpawnReason.BREEDING);
|
||||
@@ -74,7 +_,7 @@
|
||||
@@ -73,7 +_,7 @@
|
||||
|
||||
@Override
|
||||
public boolean isFood(final ItemStack itemStack) {
|
||||
@@ -39,7 +39,7 @@
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -83,6 +_,12 @@
|
||||
@@ -82,6 +_,12 @@
|
||||
this.goalSelector.addGoal(0, new FloatGoal(this));
|
||||
this.goalSelector.addGoal(1, new PolarBear.PolarBearMeleeAttackGoal());
|
||||
this.goalSelector.addGoal(1, new PanicGoal(this, 2.0, bear -> bear.isBaby() ? DamageTypeTags.PANIC_CAUSES : DamageTypeTags.PANIC_ENVIRONMENTAL_CAUSES));
|
||||
|
||||
@@ -39,7 +39,7 @@
|
||||
if (this.tentacleMovement < Mth.PI) {
|
||||
float tentacleScale = this.tentacleMovement / Mth.PI;
|
||||
this.tentacleAngle = Mth.sin(tentacleScale * tentacleScale * Mth.PI) * Mth.PI * 0.25F;
|
||||
@@ -321,7 +_,7 @@
|
||||
@@ -316,7 +_,7 @@
|
||||
int noActionTime = this.squid.getNoActionTime();
|
||||
if (noActionTime > 100) {
|
||||
this.squid.movementVector = Vec3.ZERO;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--- a/net/minecraft/world/entity/animal/wolf/Wolf.java
|
||||
+++ b/net/minecraft/world/entity/animal/wolf/Wolf.java
|
||||
@@ -97,6 +_,37 @@
|
||||
@@ -96,6 +_,37 @@
|
||||
public static final TargetingConditions.Selector PREY_SELECTOR = (target, level) -> target.is(EntityType.SHEEP)
|
||||
|| target.is(EntityType.RABBIT)
|
||||
|| target.is(EntityType.FOX);
|
||||
@@ -38,7 +38,7 @@
|
||||
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;
|
||||
@@ -118,12 +_,47 @@
|
||||
@@ -117,12 +_,47 @@
|
||||
this.setPathfindingMalus(PathType.ON_TOP_OF_POWDER_SNOW, -1.0F);
|
||||
}
|
||||
|
||||
@@ -86,7 +86,7 @@
|
||||
this.goalSelector.addGoal(4, new LeapAtTargetGoal(this, 0.4F));
|
||||
this.goalSelector.addGoal(5, new MeleeAttackGoal(this, 1.0, true));
|
||||
this.goalSelector.addGoal(6, new FollowOwnerGoal(this, 1.0, 10.0F, 2.0F));
|
||||
@@ -136,7 +_,7 @@
|
||||
@@ -135,7 +_,7 @@
|
||||
this.targetSelector.addGoal(2, new OwnerHurtTargetGoal(this));
|
||||
this.targetSelector.addGoal(3, new HurtByTargetGoal(this).setAlertOthers());
|
||||
this.targetSelector.addGoal(4, new NearestAttackableTargetGoal<>(this, Player.class, 10, true, false, this::isAngryAt));
|
||||
@@ -95,7 +95,7 @@
|
||||
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));
|
||||
@@ -231,6 +_,7 @@
|
||||
@@ -230,6 +_,7 @@
|
||||
protected void addAdditionalSaveData(final ValueOutput output) {
|
||||
super.addAdditionalSaveData(output);
|
||||
output.store("CollarColor", DyeColor.LEGACY_ID_CODEC, this.getCollarColor());
|
||||
@@ -103,7 +103,7 @@
|
||||
VariantUtils.writeVariant(output, this.getVariant());
|
||||
this.addPersistentAngerSaveData(output);
|
||||
this.getSoundVariant()
|
||||
@@ -245,6 +_,10 @@
|
||||
@@ -244,6 +_,10 @@
|
||||
super.readAdditionalSaveData(input);
|
||||
VariantUtils.readVariant(input, Registries.WOLF_VARIANT).ifPresent(this::setVariant);
|
||||
this.setCollarColor(input.read("CollarColor", DyeColor.LEGACY_ID_CODEC).orElse(DEFAULT_COLLAR_COLOR));
|
||||
@@ -114,7 +114,7 @@
|
||||
this.readPersistentAngerSaveData(this.level(), input);
|
||||
input.read("sound_variant", ResourceKey.codec(Registries.WOLF_SOUND_VARIANT))
|
||||
.flatMap(soundVariant -> this.registryAccess().lookupOrThrow(Registries.WOLF_SOUND_VARIANT).get((ResourceKey<WolfSoundVariant>)soundVariant))
|
||||
@@ -268,6 +_,10 @@
|
||||
@@ -267,6 +_,10 @@
|
||||
}
|
||||
|
||||
this.setSoundVariant(WolfSoundVariants.pickRandomSoundVariant(this.registryAccess(), level.getRandom()));
|
||||
@@ -125,7 +125,7 @@
|
||||
return super.finalizeSpawn(level, difficulty, spawnReason, groupData);
|
||||
}
|
||||
|
||||
@@ -316,6 +_,11 @@
|
||||
@@ -315,6 +_,11 @@
|
||||
public void tick() {
|
||||
super.tick();
|
||||
if (this.isAlive()) {
|
||||
|
||||
@@ -34,23 +34,23 @@
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -115,15 +_,17 @@
|
||||
@@ -118,15 +_,17 @@
|
||||
}
|
||||
// CraftBukkit end
|
||||
if (!source.is(DamageTypeTags.IS_EXPLOSION)) {
|
||||
+ if (shouldExplode()) {// Purpur - End crystal explosion options
|
||||
DamageSource damageSource = source.getEntity() != null ? this.damageSources().explosion(this, source.getEntity()) : null;
|
||||
// CraftBukkit start
|
||||
- org.bukkit.event.entity.ExplosionPrimeEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.callExplosionPrimeEvent(this, 6.0F, false);
|
||||
+ org.bukkit.event.entity.ExplosionPrimeEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.callExplosionPrimeEvent(this, getExplosionPower(), hasExplosionFire()); // Purpur - End crystal explosion options
|
||||
if (event.isCancelled()) {
|
||||
return false;
|
||||
}
|
||||
// CraftBukkit end
|
||||
if (!source.is(DamageTypeTags.IS_EXPLOSION)) {
|
||||
+ if (shouldExplode()) {// Purpur - End crystal explosion options
|
||||
DamageSource damageSource = source.getEntity() != null ? this.damageSources().explosion(this, source.getEntity()) : null;
|
||||
// CraftBukkit start
|
||||
- org.bukkit.event.entity.ExplosionPrimeEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.callExplosionPrimeEvent(this, 6.0F, false);
|
||||
+ org.bukkit.event.entity.ExplosionPrimeEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.callExplosionPrimeEvent(this, getExplosionPower(), hasExplosionFire()); // Purpur - End crystal explosion options
|
||||
if (event.isCancelled()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
this.remove(Entity.RemovalReason.KILLED, org.bukkit.event.entity.EntityRemoveEvent.Cause.EXPLODE); // Paper - add Bukkit remove cause
|
||||
- level.explode(this, damageSource, null, this.getX(), this.getY(), this.getZ(), event.getRadius(), event.getFire(), Level.ExplosionInteraction.BLOCK);
|
||||
+ level.explode(this, damageSource, null, this.getX(), this.getY(), this.getZ(), event.getRadius(), event.getFire(), getExplosionEffect()); // Purpur - End crystal explosion options
|
||||
+ } else this.unsetRemoved(); // Purpur - End crystal explosion options
|
||||
} else {
|
||||
this.remove(Entity.RemovalReason.KILLED, org.bukkit.event.entity.EntityRemoveEvent.Cause.DEATH); // Paper - add Bukkit remove cause
|
||||
// CraftBukkit end
|
||||
this.remove(Entity.RemovalReason.KILLED, org.bukkit.event.entity.EntityRemoveEvent.Cause.EXPLODE); // Paper - add Bukkit remove cause
|
||||
- level.explode(this, damageSource, null, this.getX(), this.getY(), this.getZ(), event.getRadius(), event.getFire(), Level.ExplosionInteraction.BLOCK);
|
||||
+ level.explode(this, damageSource, null, this.getX(), this.getY(), this.getZ(), event.getRadius(), event.getFire(), getExplosionEffect()); // Purpur - End crystal explosion options
|
||||
+ } else this.unsetRemoved(); // Purpur - End crystal explosion options
|
||||
} else {
|
||||
this.remove(Entity.RemovalReason.KILLED, org.bukkit.event.entity.EntityRemoveEvent.Cause.DEATH); // Paper - add Bukkit remove cause
|
||||
// CraftBukkit end
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--- a/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java
|
||||
+++ b/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java
|
||||
@@ -959,6 +_,7 @@
|
||||
@@ -960,6 +_,7 @@
|
||||
|
||||
@Override
|
||||
protected boolean canRide(final Entity vehicle) {
|
||||
@@ -8,7 +8,7 @@
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -994,7 +_,7 @@
|
||||
@@ -995,7 +_,7 @@
|
||||
boolean shouldDrop = level.getGameRules().get(GameRules.MOB_DROPS);
|
||||
int xpCount = 500;
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--- a/net/minecraft/world/entity/boss/wither/WitherBoss.java
|
||||
+++ b/net/minecraft/world/entity/boss/wither/WitherBoss.java
|
||||
@@ -82,6 +_,7 @@
|
||||
@@ -81,6 +_,7 @@
|
||||
private static final TargetingConditions.Selector LIVING_ENTITY_SELECTOR = (target, level) -> !target.is(EntityTypeTags.WITHER_FRIENDS)
|
||||
&& target.attackable();
|
||||
private static final TargetingConditions TARGETING_CONDITIONS = TargetingConditions.forCombat().range(20.0).selector(LIVING_ENTITY_SELECTOR);
|
||||
@@ -8,7 +8,7 @@
|
||||
|
||||
public WitherBoss(final EntityType<? extends WitherBoss> type, final Level level) {
|
||||
super(type, level);
|
||||
@@ -90,6 +_,16 @@
|
||||
@@ -89,6 +_,16 @@
|
||||
this.xpReward = 50;
|
||||
}
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
@Override
|
||||
protected PathNavigation createNavigation(final Level level) {
|
||||
FlyingPathNavigation flyingPathNavigation = new FlyingPathNavigation(this, level);
|
||||
@@ -122,6 +_,7 @@
|
||||
@@ -121,6 +_,7 @@
|
||||
protected void addAdditionalSaveData(final ValueOutput output) {
|
||||
super.addAdditionalSaveData(output);
|
||||
output.putInt("Invul", this.getInvulnerableTicks());
|
||||
@@ -33,7 +33,7 @@
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -131,6 +_,7 @@
|
||||
@@ -130,6 +_,7 @@
|
||||
if (this.hasCustomName()) {
|
||||
this.bossEvent.setName(this.getDisplayName());
|
||||
}
|
||||
@@ -41,7 +41,7 @@
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -274,7 +_,7 @@
|
||||
@@ -273,7 +_,7 @@
|
||||
level.explode(this, this.getX(), this.getEyeY(), this.getZ(), event.getRadius(), event.getFire(), Level.ExplosionInteraction.MOB);
|
||||
}
|
||||
// CraftBukkit end
|
||||
@@ -50,7 +50,7 @@
|
||||
// CraftBukkit start - Use relative location for far away sounds
|
||||
// level.globalLevelEvent(LevelEvent.SOUND_WITHER_BOSS_SPAWN, this.blockPosition(), 0);
|
||||
int viewDistance = level.getCraftServer().getViewDistance() * 16;
|
||||
@@ -378,8 +_,10 @@
|
||||
@@ -377,8 +_,10 @@
|
||||
}
|
||||
}
|
||||
|
||||
@@ -63,7 +63,7 @@
|
||||
}
|
||||
|
||||
this.bossEvent.setProgress(this.getHealth() / this.getMaxHealth());
|
||||
@@ -576,6 +_,7 @@
|
||||
@@ -579,6 +_,7 @@
|
||||
|
||||
@Override
|
||||
protected boolean canRide(final Entity vehicle) {
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
}
|
||||
|
||||
public ArmorStand(final Level level, final double x, final double y, final double z) {
|
||||
@@ -523,6 +_,7 @@
|
||||
@@ -546,6 +_,7 @@
|
||||
// Paper start - Allow ArmorStands not to tick
|
||||
@Override
|
||||
public void tick() {
|
||||
@@ -22,7 +22,7 @@
|
||||
if (!this.canTick) {
|
||||
if (this.noTickEquipmentDirty) {
|
||||
this.noTickEquipmentDirty = false;
|
||||
@@ -809,4 +_,19 @@
|
||||
@@ -832,4 +_,19 @@
|
||||
}
|
||||
}
|
||||
// Paper end
|
||||
|
||||
@@ -29,9 +29,9 @@
|
||||
+ } else if (this.isInvulnerableToBase(source)) {
|
||||
+ // Purpur end - Item entity immunities
|
||||
return false;
|
||||
} else if (!level.getGameRules().get(GameRules.MOB_GRIEFING) && source.getEntity() instanceof Mob) {
|
||||
return false;
|
||||
@@ -517,6 +_,12 @@
|
||||
}
|
||||
|
||||
@@ -521,6 +_,12 @@
|
||||
public void setItem(final ItemStack itemStack) {
|
||||
this.getEntityData().set(DATA_ITEM, itemStack);
|
||||
this.despawnRate = this.level().paperConfig().entities.spawning.altItemDespawnRate.enabled ? this.level().paperConfig().entities.spawning.altItemDespawnRate.items.getOrDefault(itemStack.getItem(), this.level().spigotConfig.itemDespawnRate) : this.level().spigotConfig.itemDespawnRate; // Paper - Alternative item-despawn-rate
|
||||
|
||||
@@ -18,22 +18,23 @@
|
||||
final 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();
|
||||
@@ -373,6 +_,7 @@
|
||||
@@ -373,7 +_,7 @@
|
||||
public boolean hurtServer(final ServerLevel level, final DamageSource source, final float damage) {
|
||||
if (this.isInvulnerableTo(level, source)) {
|
||||
return false;
|
||||
+ } else if (org.purpurmc.purpur.PurpurConfig.endermanShortHeight && source.is(net.minecraft.world.damagesource.DamageTypes.IN_WALL)) { return false; // Purpur - no suffocation damage if short height - Short enderman height
|
||||
} else {
|
||||
AbstractThrownPotion thrownPotion = source.getDirectEntity() instanceof AbstractThrownPotion potion ? potion : null;
|
||||
if (!source.is(DamageTypeTags.IS_PROJECTILE) && thrownPotion == null) { // Paper - EndermanEscapeEvent - diff on change - below logic relies on this path covering non-projectile damage.
|
||||
@@ -387,6 +_,7 @@
|
||||
} else {
|
||||
boolean hurtWithCleanWater = thrownPotion != null && this.hurtWithCleanWater(level, source, thrownPotion, damage);
|
||||
- }
|
||||
+ } else if (org.purpurmc.purpur.PurpurConfig.endermanShortHeight && source.is(net.minecraft.world.damagesource.DamageTypes.IN_WALL)) { return false; } // Purpur - no suffocation damage if short height - Short enderman height
|
||||
|
||||
+ if (!hurtWithCleanWater && level.purpurConfig.endermanIgnoreProjectiles) return super.hurtServer(level, source, damage); // Purpur - Config to disable Enderman teleport on projectile hit
|
||||
if (this.tryEscape(com.destroystokyo.paper.event.entity.EndermanEscapeEvent.Reason.INDIRECT)) { // Paper - EndermanEscapeEvent
|
||||
for (int i = 0; i < 64; i++) {
|
||||
if (this.teleport()) {
|
||||
AbstractThrownPotion thrownPotion = source.getDirectEntity() instanceof AbstractThrownPotion potion ? potion : null;
|
||||
if (!source.is(DamageTypeTags.IS_PROJECTILE) && thrownPotion == null) { // Paper - EndermanEscapeEvent - diff on change - below logic relies on this path covering non-projectile damage.
|
||||
@@ -388,6 +_,7 @@
|
||||
} else {
|
||||
boolean hurtWithCleanWater = thrownPotion != null && this.hurtWithCleanWater(level, source, thrownPotion, damage);
|
||||
|
||||
+ if (!hurtWithCleanWater && level.purpurConfig.endermanIgnoreProjectiles) return super.hurtServer(level, source, damage); // Purpur - Config to disable Enderman teleport on projectile hit
|
||||
if (this.tryEscape(com.destroystokyo.paper.event.entity.EndermanEscapeEvent.Reason.INDIRECT)) { // Paper - EndermanEscapeEvent
|
||||
for (int i = 0; i < 64; i++) {
|
||||
if (this.teleport()) {
|
||||
@@ -430,7 +_,7 @@
|
||||
|
||||
@Override
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--- a/net/minecraft/world/entity/monster/Guardian.java
|
||||
+++ b/net/minecraft/world/entity/monster/Guardian.java
|
||||
@@ -308,6 +_,11 @@
|
||||
@@ -310,6 +_,11 @@
|
||||
final BlockPos pos,
|
||||
final RandomSource random
|
||||
) {
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
+ // Purpur end - Config to disable hostile mob spawn on ice
|
||||
if (level.getBrightness(LightLayer.SKY, pos) > random.nextInt(32)) {
|
||||
return false;
|
||||
} else {
|
||||
}
|
||||
@@ -113,6 +_,11 @@
|
||||
public static boolean checkAnyLightMonsterSpawnRules(
|
||||
final EntityType<? extends Monster> type, final LevelAccessor level, final EntitySpawnReason spawnReason, final BlockPos pos, final RandomSource random
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--- a/net/minecraft/world/entity/monster/Phantom.java
|
||||
+++ b/net/minecraft/world/entity/monster/Phantom.java
|
||||
@@ -167,7 +_,11 @@
|
||||
@@ -166,7 +_,11 @@
|
||||
final ServerLevelAccessor level, final DifficultyInstance difficulty, final EntitySpawnReason spawnReason, final @Nullable SpawnGroupData groupData
|
||||
) {
|
||||
this.anchorPoint = this.blockPosition().above(5);
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--- a/net/minecraft/world/entity/monster/Shulker.java
|
||||
+++ b/net/minecraft/world/entity/monster/Shulker.java
|
||||
@@ -94,6 +_,22 @@
|
||||
@@ -93,6 +_,22 @@
|
||||
this.lookControl = new Shulker.ShulkerLookControl(this);
|
||||
}
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
@Override
|
||||
protected void registerGoals() {
|
||||
this.goalSelector.addGoal(1, new LookAtPlayerGoal(this, Player.class, 8.0F, 0.02F, true));
|
||||
@@ -455,11 +_,21 @@
|
||||
@@ -454,11 +_,21 @@
|
||||
private void hitByShulkerBullet() {
|
||||
Vec3 oldPosition = this.position();
|
||||
AABB oldAabb = this.getBoundingBox();
|
||||
@@ -49,7 +49,7 @@
|
||||
if (baby != null) {
|
||||
baby.setVariant(this.getVariant());
|
||||
baby.snapTo(oldPosition);
|
||||
@@ -566,7 +_,7 @@
|
||||
@@ -565,7 +_,7 @@
|
||||
}
|
||||
|
||||
public Optional<DyeColor> getVariant() {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--- a/net/minecraft/world/entity/monster/piglin/PiglinAi.java
|
||||
+++ b/net/minecraft/world/entity/monster/piglin/PiglinAi.java
|
||||
@@ -669,14 +_,24 @@
|
||||
@@ -666,14 +_,24 @@
|
||||
}
|
||||
|
||||
public static boolean isWearingSafeArmor(final LivingEntity livingEntity) {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--- a/net/minecraft/world/entity/monster/skeleton/AbstractSkeleton.java
|
||||
+++ b/net/minecraft/world/entity/monster/skeleton/AbstractSkeleton.java
|
||||
@@ -142,7 +_,7 @@
|
||||
@@ -137,7 +_,7 @@
|
||||
this.populateDefaultEquipmentEnchantments(level, random, difficulty);
|
||||
this.reassessWeaponGoal();
|
||||
this.setCanPickUpLoot(level.getLevel().paperConfig().entities.behavior.mobsCanAlwaysPickUpLoot.skeletons || random.nextFloat() < 0.55F * difficulty.getSpecialMultiplier()); // Paper - Add world settings for mobs picking up loot
|
||||
@@ -9,7 +9,7 @@
|
||||
this.setItemSlot(EquipmentSlot.HEAD, new ItemStack(random.nextFloat() < 0.1F ? Blocks.JACK_O_LANTERN : Blocks.CARVED_PUMPKIN));
|
||||
this.setDropChance(EquipmentSlot.HEAD, 0.0F);
|
||||
}
|
||||
@@ -189,7 +_,7 @@
|
||||
@@ -184,7 +_,7 @@
|
||||
double distanceToTarget = Math.sqrt(xd * xd + zd * zd);
|
||||
if (this.level() instanceof ServerLevel serverLevel) {
|
||||
Projectile.Delayed<AbstractArrow> delayedEntity = Projectile.spawnProjectileUsingShootDelayed( // Paper - delayed
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--- a/net/minecraft/world/entity/monster/zombie/Zombie.java
|
||||
+++ b/net/minecraft/world/entity/monster/zombie/Zombie.java
|
||||
@@ -128,7 +_,19 @@
|
||||
@@ -127,7 +_,19 @@
|
||||
this.goalSelector.addGoal(7, new WaterAvoidingRandomStrollGoal(this, 1.0));
|
||||
this.targetSelector.addGoal(1, new HurtByTargetGoal(this).setAlertOthers(ZombifiedPiglin.class));
|
||||
this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, Player.class, true));
|
||||
@@ -21,7 +21,7 @@
|
||||
this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, IronGolem.class, true));
|
||||
this.targetSelector.addGoal(5, new NearestAttackableTargetGoal<>(this, Turtle.class, 10, true, false, Turtle.BABY_ON_LAND_SELECTOR));
|
||||
}
|
||||
@@ -543,7 +_,7 @@
|
||||
@@ -540,7 +_,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -92,15 +92,15 @@
|
||||
profiler.pop();
|
||||
if (this.assignProfessionWhenSpawned) {
|
||||
this.assignProfessionWhenSpawned = false;
|
||||
@@ -344,6 +_,7 @@
|
||||
return InteractionResult.CONSUME;
|
||||
}
|
||||
|
||||
+ if (this.level().purpurConfig.villagerAllowTrading) // Purpur - Add config for villager trading
|
||||
this.startTrading(player);
|
||||
@@ -347,6 +_,7 @@
|
||||
return InteractionResult.CONSUME;
|
||||
}
|
||||
|
||||
@@ -485,7 +_,7 @@
|
||||
+ if (this.level().purpurConfig.villagerAllowTrading) // Purpur - Add config for villager trading
|
||||
this.startTrading(player);
|
||||
}
|
||||
|
||||
@@ -487,7 +_,7 @@
|
||||
|
||||
public void updateDemand() {
|
||||
for (MerchantOffer offer : this.getOffers()) {
|
||||
@@ -109,7 +109,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
@@ -685,7 +_,7 @@
|
||||
@@ -687,7 +_,7 @@
|
||||
|
||||
@Override
|
||||
public boolean canBreed() {
|
||||
@@ -118,7 +118,7 @@
|
||||
}
|
||||
|
||||
private boolean hungry() {
|
||||
@@ -891,6 +_,7 @@
|
||||
@@ -893,6 +_,7 @@
|
||||
}
|
||||
|
||||
public void spawnGolemIfNeeded(final ServerLevel level, final long timestamp, final int villagersNeededToAgree) {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--- a/net/minecraft/world/entity/npc/wanderingtrader/WanderingTrader.java
|
||||
+++ b/net/minecraft/world/entity/npc/wanderingtrader/WanderingTrader.java
|
||||
@@ -61,6 +_,13 @@
|
||||
@@ -60,6 +_,13 @@
|
||||
super(type, level);
|
||||
}
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
@Override
|
||||
protected void registerGoals() {
|
||||
this.goalSelector.addGoal(0, new FloatGoal(this));
|
||||
@@ -78,7 +_,7 @@
|
||||
@@ -77,7 +_,7 @@
|
||||
.addGoal(
|
||||
0,
|
||||
new UseItemGoal<>(
|
||||
@@ -23,7 +23,7 @@
|
||||
)
|
||||
);
|
||||
this.goalSelector.addGoal(1, new TradeWithPlayerGoal(this));
|
||||
@@ -121,8 +_,10 @@
|
||||
@@ -120,8 +_,10 @@
|
||||
return InteractionResult.CONSUME;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--- a/net/minecraft/world/entity/npc/wanderingtrader/WanderingTraderSpawner.java
|
||||
+++ b/net/minecraft/world/entity/npc/wanderingtrader/WanderingTraderSpawner.java
|
||||
@@ -133,7 +_,17 @@
|
||||
@@ -135,7 +_,17 @@
|
||||
int xPosition = referencePosition.getX() + this.random.nextInt(radius * 2) - radius;
|
||||
int zPosition = referencePosition.getZ() + this.random.nextInt(radius * 2) - radius;
|
||||
int yPosition = level.getHeight(SpawnPlacements.getHeightmapType(EntityType.WANDERING_TRADER), xPosition, zPosition);
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--- a/net/minecraft/world/entity/player/Player.java
|
||||
+++ b/net/minecraft/world/entity/player/Player.java
|
||||
@@ -174,11 +_,20 @@
|
||||
@@ -173,11 +_,20 @@
|
||||
public float hurtDir;
|
||||
public boolean affectsSpawning = true; // Paper - Affects Spawning API
|
||||
public net.kyori.adventure.util.TriState flyingFallDamage = net.kyori.adventure.util.TriState.NOT_SET; // Paper - flying fall damage
|
||||
@@ -21,7 +21,7 @@
|
||||
@Override
|
||||
public org.bukkit.craftbukkit.entity.CraftHumanEntity getBukkitEntity() {
|
||||
return (org.bukkit.craftbukkit.entity.CraftHumanEntity) super.getBukkitEntity();
|
||||
@@ -239,6 +_,12 @@
|
||||
@@ -242,6 +_,12 @@
|
||||
|
||||
@Override
|
||||
public void tick() {
|
||||
@@ -34,7 +34,7 @@
|
||||
this.noPhysics = this.isSpectator();
|
||||
if (this.isSpectator() || this.isPassenger()) {
|
||||
this.setOnGround(false);
|
||||
@@ -296,6 +_,17 @@
|
||||
@@ -299,6 +_,17 @@
|
||||
this.turtleHelmetTick();
|
||||
}
|
||||
|
||||
@@ -52,7 +52,7 @@
|
||||
this.cooldowns.tick();
|
||||
this.updatePlayerPose();
|
||||
}
|
||||
@@ -501,7 +_,7 @@
|
||||
@@ -504,7 +_,7 @@
|
||||
List<Entity> orbs = Lists.newArrayList();
|
||||
|
||||
for (Entity entity : entities) {
|
||||
@@ -61,7 +61,7 @@
|
||||
orbs.add(entity);
|
||||
} else if (!entity.isRemoved()) {
|
||||
this.touch(entity);
|
||||
@@ -1044,7 +_,7 @@
|
||||
@@ -1052,7 +_,7 @@
|
||||
criticalAttack = criticalAttack && !this.level().paperConfig().entities.behavior.disablePlayerCrits; // Paper - Toggleable player crits
|
||||
if (criticalAttack) {
|
||||
damageSource = damageSource.critical(); // Paper - critical damage API
|
||||
@@ -70,7 +70,7 @@
|
||||
}
|
||||
|
||||
float totalDamage = baseDamage + magicBoost;
|
||||
@@ -1740,7 +_,23 @@
|
||||
@@ -1748,7 +_,23 @@
|
||||
|
||||
@Override
|
||||
protected int getBaseExperienceReward(final ServerLevel level) {
|
||||
@@ -95,7 +95,7 @@
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -1783,6 +_,13 @@
|
||||
@@ -1791,6 +_,13 @@
|
||||
public boolean addItem(final ItemStack itemStack) {
|
||||
return this.inventory.add(itemStack);
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--- a/net/minecraft/world/entity/projectile/throwableitemprojectile/Snowball.java
|
||||
+++ b/net/minecraft/world/entity/projectile/throwableitemprojectile/Snowball.java
|
||||
@@ -56,9 +_,39 @@
|
||||
@@ -54,9 +_,39 @@
|
||||
protected void onHitEntity(final EntityHitResult hitResult) {
|
||||
super.onHitEntity(hitResult);
|
||||
Entity entity = hitResult.getEntity();
|
||||
|
||||
@@ -26,17 +26,17 @@
|
||||
Iterator<Raid> raidIterator = this.raidMap.values().iterator();
|
||||
|
||||
while (raidIterator.hasNext()) {
|
||||
@@ -137,11 +_,11 @@
|
||||
// }
|
||||
@@ -139,11 +_,12 @@
|
||||
// }
|
||||
|
||||
if (!raid.isStarted() || (raid.isInProgress() && raid.getRaidOmenLevel() < raid.getMaxRaidOmenLevel())) { // CraftBukkit - fixed a bug with raid: players could add up Bad Omen level even when the raid had finished
|
||||
- // CraftBukkit start
|
||||
+ if (level.purpurConfig.raidCooldownSeconds != 0 && playerCooldowns.containsKey(player.getUUID())) return null; // Purpur - Raid cooldown setting// CraftBukkit start
|
||||
if (!org.bukkit.craftbukkit.event.CraftEventFactory.callRaidTriggerEvent(level, raid, player)) {
|
||||
player.removeEffect(net.minecraft.world.effect.MobEffects.RAID_OMEN);
|
||||
return null;
|
||||
- }
|
||||
+ }if (level.purpurConfig.raidCooldownSeconds != 0) playerCooldowns.put(player.getUUID(), level.purpurConfig.raidCooldownSeconds); // Purpur - Raid cooldown setting
|
||||
if (!raid.isStarted() || (raid.isInProgress() && raid.getRaidOmenLevel() < raid.getMaxRaidOmenLevel())) { // CraftBukkit - fixed a bug with raid: players could add up Bad Omen level even when the raid had finished
|
||||
+ if (level.purpurConfig.raidCooldownSeconds != 0 && playerCooldowns.containsKey(player.getUUID())) return null; // Purpur - Raid cooldown setting
|
||||
// CraftBukkit start
|
||||
if (!org.bukkit.craftbukkit.event.CraftEventFactory.callRaidTriggerEvent(level, raid, player)) {
|
||||
player.removeEffect(net.minecraft.world.effect.MobEffects.RAID_OMEN);
|
||||
return null;
|
||||
- }
|
||||
+ }if (level.purpurConfig.raidCooldownSeconds != 0) playerCooldowns.put(player.getUUID(), level.purpurConfig.raidCooldownSeconds); // Purpur - Raid cooldown setting
|
||||
|
||||
if (!raid.isStarted() && !this.raidMap.containsValue(raid)) {
|
||||
this.raidMap.put(this.getUniqueId(), raid);
|
||||
if (!raid.isStarted() && !this.raidMap.containsValue(raid)) {
|
||||
this.raidMap.put(this.getUniqueId(), raid);
|
||||
|
||||
@@ -6,6 +6,6 @@
|
||||
if (deltaMovement.length() > 0.01) {
|
||||
- return deltaMovement.normalize().scale(deltaMovement.length() + 0.06);
|
||||
+ return deltaMovement.normalize().scale(deltaMovement.length() + this.level().purpurConfig.poweredRailBoostModifier); // Purpur - Configurable powered rail boost modifier
|
||||
} else {
|
||||
Vec3 powerDirection = this.minecart.getRedstoneDirection(pos);
|
||||
return powerDirection.lengthSqr() <= 0.0 ? deltaMovement : powerDirection.scale(deltaMovement.length() + 0.2);
|
||||
}
|
||||
|
||||
Vec3 powerDirection = this.minecart.getRedstoneDirection(pos);
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--- a/net/minecraft/world/inventory/AbstractContainerMenu.java
|
||||
+++ b/net/minecraft/world/inventory/AbstractContainerMenu.java
|
||||
@@ -65,6 +_,7 @@
|
||||
@@ -64,6 +_,7 @@
|
||||
private final List<ContainerListener> containerListeners = Lists.newArrayList();
|
||||
private @Nullable ContainerSynchronizer synchronizer;
|
||||
private boolean suppressRemoteUpdates;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--- a/net/minecraft/world/inventory/AbstractFurnaceMenu.java
|
||||
+++ b/net/minecraft/world/inventory/AbstractFurnaceMenu.java
|
||||
@@ -122,7 +_,13 @@
|
||||
@@ -121,7 +_,13 @@
|
||||
} else if (slotIndex != 1 && slotIndex != 0) {
|
||||
if (this.canSmelt(stack)) {
|
||||
if (!this.moveItemStackTo(stack, 0, 1, false)) {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--- a/net/minecraft/world/inventory/EnchantmentMenu.java
|
||||
+++ b/net/minecraft/world/inventory/EnchantmentMenu.java
|
||||
@@ -64,6 +_,22 @@
|
||||
@@ -63,6 +_,22 @@
|
||||
return access.getLocation();
|
||||
}
|
||||
// CraftBukkit end
|
||||
@@ -23,7 +23,7 @@
|
||||
};
|
||||
// Paper end - Add missing InventoryHolders
|
||||
this.access = access;
|
||||
@@ -92,6 +_,16 @@
|
||||
@@ -83,6 +_,16 @@
|
||||
return EnchantmentMenu.EMPTY_SLOT_LAPIS_LAZULI;
|
||||
}
|
||||
});
|
||||
@@ -40,7 +40,7 @@
|
||||
this.addStandardInventorySlots(inventory, 8, 84);
|
||||
this.addDataSlot(DataSlot.shared(this.costs, 0));
|
||||
this.addDataSlot(DataSlot.shared(this.costs, 1));
|
||||
@@ -308,7 +_,7 @@
|
||||
@@ -301,7 +_,7 @@
|
||||
@Override
|
||||
public void removed(final Player player) {
|
||||
super.removed(player);
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--- a/net/minecraft/world/inventory/GrindstoneMenu.java
|
||||
+++ b/net/minecraft/world/inventory/GrindstoneMenu.java
|
||||
@@ -105,11 +_,13 @@
|
||||
@@ -92,11 +_,13 @@
|
||||
@Override
|
||||
public void onTake(final Player player, final ItemStack carried) {
|
||||
access.execute((level, pos) -> {
|
||||
@@ -15,7 +15,7 @@
|
||||
// Paper end - Fire BlockExpEvent on grindstone use
|
||||
}
|
||||
|
||||
@@ -138,7 +_,7 @@
|
||||
@@ -125,7 +_,7 @@
|
||||
for (Entry<Holder<Enchantment>> entry : enchantments.entrySet()) {
|
||||
Holder<Enchantment> enchant = entry.getKey();
|
||||
int lvl = entry.getIntValue();
|
||||
@@ -24,7 +24,7 @@
|
||||
amount += enchant.value().getMinCost(lvl);
|
||||
}
|
||||
}
|
||||
@@ -216,16 +_,76 @@
|
||||
@@ -205,16 +_,76 @@
|
||||
|
||||
for (Entry<Holder<Enchantment>> entry : enchantments.entrySet()) {
|
||||
Holder<Enchantment> enchant = entry.getKey();
|
||||
@@ -103,7 +103,7 @@
|
||||
);
|
||||
if (item.is(Items.ENCHANTED_BOOK) && newEnchantments.isEmpty()) {
|
||||
item = item.transmuteCopy(Items.BOOK);
|
||||
@@ -238,6 +_,22 @@
|
||||
@@ -227,6 +_,22 @@
|
||||
}
|
||||
|
||||
item.set(DataComponents.REPAIR_COST, repairCost);
|
||||
@@ -126,7 +126,7 @@
|
||||
return item;
|
||||
}
|
||||
|
||||
@@ -294,7 +_,9 @@
|
||||
@@ -283,7 +_,9 @@
|
||||
return ItemStack.EMPTY;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--- a/net/minecraft/world/inventory/ItemCombinerMenu.java
|
||||
+++ b/net/minecraft/world/inventory/ItemCombinerMenu.java
|
||||
@@ -177,7 +_,9 @@
|
||||
@@ -160,7 +_,9 @@
|
||||
return ItemStack.EMPTY;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,41 +1,42 @@
|
||||
--- a/net/minecraft/world/item/AxeItem.java
|
||||
+++ b/net/minecraft/world/item/AxeItem.java
|
||||
@@ -65,13 +_,15 @@
|
||||
if (playerHasBlockingItemUseIntent(context)) {
|
||||
@@ -66,14 +_,16 @@
|
||||
return InteractionResult.PASS;
|
||||
} else {
|
||||
- Optional<BlockState> newBlock = this.evaluateNewBlockState(level, pos, player, level.getBlockState(pos));
|
||||
+ Optional<org.purpurmc.purpur.tool.Actionable> newBlock = this.evaluateActionable(level, pos, player, level.getBlockState(pos)); // Purpur - Tool actionable options
|
||||
if (newBlock.isEmpty()) {
|
||||
return InteractionResult.PASS;
|
||||
} else {
|
||||
+ org.purpurmc.purpur.tool.Actionable actionable = newBlock.get(); // Purpur - Tool actionable options
|
||||
+ BlockState state = actionable.into().withPropertiesOf(level.getBlockState(pos)); // Purpur - Tool actionable options
|
||||
ItemStack itemInHand = context.getItemInHand();
|
||||
// Paper start - EntityChangeBlockEvent
|
||||
- if (!org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(player, pos, newBlock.get())) {
|
||||
+ if (!org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(player, pos, state)) { // Purpur - Tool actionable options
|
||||
return InteractionResult.PASS;
|
||||
}
|
||||
// Paper end
|
||||
@@ -79,8 +_,15 @@
|
||||
CriteriaTriggers.ITEM_USED_ON_BLOCK.trigger((ServerPlayer)player, pos, itemInHand);
|
||||
}
|
||||
}
|
||||
|
||||
- level.setBlock(pos, newBlock.get(), Block.UPDATE_ALL_IMMEDIATE);
|
||||
- level.gameEvent(GameEvent.BLOCK_CHANGE, pos, GameEvent.Context.of(player, newBlock.get()));
|
||||
+ // Purpur start - Tool actionable options
|
||||
+ level.setBlock(pos, state, Block.UPDATE_ALL_IMMEDIATE);
|
||||
+ actionable.drops().forEach((drop, chance) -> {
|
||||
+ if (level.getRandom().nextDouble() < chance) {
|
||||
+ Block.popResourceFromFace(level, pos, context.getClickedFace(), new ItemStack(drop));
|
||||
+ }
|
||||
+ });
|
||||
+ level.gameEvent(GameEvent.BLOCK_CHANGE, pos, GameEvent.Context.of(player, state));
|
||||
+ // Purpur end - Tool actionable options
|
||||
if (player != null) {
|
||||
itemInHand.hurtAndBreak(1, player, context.getHand().asEquipmentSlot());
|
||||
}
|
||||
- Optional<BlockState> newBlock = this.evaluateNewBlockState(level, pos, player, level.getBlockState(pos));
|
||||
+ Optional<org.purpurmc.purpur.tool.Actionable> newBlock = this.evaluateActionable(level, pos, player, level.getBlockState(pos)); // Purpur - Tool actionable options
|
||||
if (newBlock.isEmpty()) {
|
||||
return InteractionResult.PASS;
|
||||
}
|
||||
|
||||
+ org.purpurmc.purpur.tool.Actionable actionable = newBlock.get(); // Purpur - Tool actionable options
|
||||
+ BlockState state = actionable.into().withPropertiesOf(level.getBlockState(pos)); // Purpur - Tool actionable options
|
||||
ItemStack itemInHand = context.getItemInHand();
|
||||
// Paper start - EntityChangeBlockEvent
|
||||
- if (!org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(player, pos, newBlock.get())) {
|
||||
+ if (!org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(player, pos, state)) { // Purpur - Tool actionable options
|
||||
return InteractionResult.PASS;
|
||||
}
|
||||
// Paper end
|
||||
@@ -81,8 +_,15 @@
|
||||
CriteriaTriggers.ITEM_USED_ON_BLOCK.trigger((ServerPlayer)player, pos, itemInHand);
|
||||
}
|
||||
|
||||
- level.setBlock(pos, newBlock.get(), Block.UPDATE_ALL_IMMEDIATE);
|
||||
- level.gameEvent(GameEvent.BLOCK_CHANGE, pos, GameEvent.Context.of(player, newBlock.get()));
|
||||
+ // Purpur start - Tool actionable options
|
||||
+ level.setBlock(pos, state, Block.UPDATE_ALL_IMMEDIATE);
|
||||
+ actionable.drops().forEach((drop, chance) -> {
|
||||
+ if (level.getRandom().nextDouble() < chance) {
|
||||
+ Block.popResourceFromFace(level, pos, context.getClickedFace(), new ItemStack(drop));
|
||||
+ }
|
||||
+ });
|
||||
+ level.gameEvent(GameEvent.BLOCK_CHANGE, pos, GameEvent.Context.of(player, state));
|
||||
+ // Purpur end - Tool actionable options
|
||||
if (player != null) {
|
||||
itemInHand.hurtAndBreak(1, player, context.getHand().asEquipmentSlot());
|
||||
}
|
||||
@@ -97,21 +_,23 @@
|
||||
&& !player.isSecondaryUseActive();
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--- a/net/minecraft/world/item/BlockItem.java
|
||||
+++ b/net/minecraft/world/item/BlockItem.java
|
||||
@@ -132,7 +_,16 @@
|
||||
@@ -134,7 +_,16 @@
|
||||
protected boolean updateCustomBlockEntityTag(
|
||||
final BlockPos pos, final Level level, final @Nullable Player player, final ItemStack itemStack, final BlockState placedState
|
||||
) {
|
||||
@@ -18,15 +18,15 @@
|
||||
}
|
||||
|
||||
protected @Nullable BlockState getPlacementState(final BlockPlaceContext context) {
|
||||
@@ -194,6 +_,7 @@
|
||||
}
|
||||
@@ -197,6 +_,7 @@
|
||||
}
|
||||
|
||||
if (!type.onlyOpCanSetNbt() || player != null && (player.canUseGameMasterBlocks() || (player.getAbilities().instabuild && player.getBukkitEntity().hasPermission("minecraft.nbt.place")))) { // Spigot - add permission
|
||||
+ if (!(level.purpurConfig.silkTouchEnabled && blockEntity instanceof net.minecraft.world.level.block.entity.SpawnerBlockEntity && player.getBukkitEntity().hasPermission("purpur.drop.spawners"))) // Purpur - Silk touch spawners
|
||||
return customData.loadInto(blockEntity, level.registryAccess());
|
||||
}
|
||||
if (!type.onlyOpCanSetNbt() || player != null && (player.canUseGameMasterBlocks() || (player.getAbilities().instabuild && player.getBukkitEntity().hasPermission("minecraft.nbt.place")))) { // Spigot - add permission
|
||||
+ if (!(level.purpurConfig.silkTouchEnabled && blockEntity instanceof net.minecraft.world.level.block.entity.SpawnerBlockEntity && player.getBukkitEntity().hasPermission("purpur.drop.spawners"))) // Purpur - Silk touch spawners
|
||||
return customData.loadInto(blockEntity, level.registryAccess());
|
||||
}
|
||||
|
||||
@@ -234,6 +_,7 @@
|
||||
@@ -236,6 +_,7 @@
|
||||
public void onDestroyed(final ItemEntity entity) {
|
||||
ItemContainerContents container = entity.getItem().set(DataComponents.CONTAINER, ItemContainerContents.EMPTY);
|
||||
if (container != null) {
|
||||
|
||||
@@ -11,16 +11,16 @@
|
||||
+ // Purpur end - Infinity bow settings
|
||||
if (projectile.isEmpty()) {
|
||||
return false;
|
||||
} else {
|
||||
@@ -38,7 +_,7 @@
|
||||
} else {
|
||||
List<ItemStack> firedProjectiles = draw(itemStack, projectile, player);
|
||||
if (level instanceof ServerLevel serverLevel && !firedProjectiles.isEmpty()) {
|
||||
- this.shoot(serverLevel, player, player.getUsedItemHand(), itemStack, firedProjectiles, pow * 3.0F, 1.0F, pow == 1.0F, null, pow); // Paper - Pass draw strength
|
||||
+ this.shoot(serverLevel, player, player.getUsedItemHand(), itemStack, firedProjectiles, pow * 3.0F, (float) serverLevel.purpurConfig.bowProjectileOffset, pow == 1.0F, null, pow); // Paper - Pass draw strength // Purpur - Projectile offset config
|
||||
}
|
||||
}
|
||||
@@ -40,7 +_,7 @@
|
||||
|
||||
level.playSound(
|
||||
List<ItemStack> firedProjectiles = draw(itemStack, projectile, player);
|
||||
if (level instanceof ServerLevel serverLevel && !firedProjectiles.isEmpty()) {
|
||||
- this.shoot(serverLevel, player, player.getUsedItemHand(), itemStack, firedProjectiles, pow * 3.0F, 1.0F, pow == 1.0F, null, pow); // Paper - Pass draw strength
|
||||
+ this.shoot(serverLevel, player, player.getUsedItemHand(), itemStack, firedProjectiles, pow * 3.0F, (float) serverLevel.purpurConfig.bowProjectileOffset, pow == 1.0F, null, pow); // Paper - Pass draw strength // Purpur - Projectile offset config
|
||||
}
|
||||
|
||||
level.playSound(
|
||||
@@ -95,7 +_,7 @@
|
||||
public InteractionResult use(final Level level, final Player player, final InteractionHand hand) {
|
||||
ItemStack itemStack = player.getItemInHand(hand);
|
||||
@@ -28,5 +28,5 @@
|
||||
- if (!player.hasInfiniteMaterials() && !foundProjectile) {
|
||||
+ if (!player.hasInfiniteMaterials() && !foundProjectile && !(level.purpurConfig.infinityWorksWithoutArrows && net.minecraft.world.item.enchantment.EnchantmentHelper.getItemEnchantmentLevel(net.minecraft.world.item.enchantment.Enchantments.INFINITY, itemStack) > 0)) { // Purpur - Infinity bow settings
|
||||
return InteractionResult.FAIL;
|
||||
} else {
|
||||
player.startUsingItem(hand);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
--- a/net/minecraft/world/item/BucketItem.java
|
||||
+++ b/net/minecraft/world/item/BucketItem.java
|
||||
@@ -146,7 +_,7 @@
|
||||
// CraftBukkit end
|
||||
if (!canPlaceFluidInsideBlock) {
|
||||
@@ -152,7 +_,7 @@
|
||||
return hitResult != null && this.emptyContents(user, level, hitResult.getBlockPos().relative(hitResult.getDirection()), null, direction, clicked, itemStack, hand); // CraftBukkit
|
||||
- } else if (level.environmentAttributes().getValue(EnvironmentAttributes.WATER_EVAPORATES, pos) && this.content.is(FluidTags.WATER)) {
|
||||
+ } else if ((level.environmentAttributes().getValue(EnvironmentAttributes.WATER_EVAPORATES, pos) || (level.isTheEnd() && !org.purpurmc.purpur.PurpurConfig.allowWaterPlacementInTheEnd)) && this.content.is(FluidTags.WATER)) { // Purpur - Add allow water in end world option
|
||||
}
|
||||
|
||||
- if (level.environmentAttributes().getValue(EnvironmentAttributes.WATER_EVAPORATES, pos) && this.content.is(FluidTags.WATER)) {
|
||||
+ if ((level.environmentAttributes().getValue(EnvironmentAttributes.WATER_EVAPORATES, pos) || (level.isTheEnd() && !org.purpurmc.purpur.PurpurConfig.allowWaterPlacementInTheEnd)) && this.content.is(FluidTags.WATER)) { // Purpur - Add allow water in end world option
|
||||
int x = pos.getX();
|
||||
int y = pos.getY();
|
||||
int z = pos.getZ();
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
--- a/net/minecraft/world/item/DyeColor.java
|
||||
+++ b/net/minecraft/world/item/DyeColor.java
|
||||
@@ -154,4 +_,10 @@
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
+
|
||||
+ // Purpur start - Shulker spawn from bullet options
|
||||
|
||||
@@ -7,5 +7,5 @@
|
||||
- if (!blockState.is(Blocks.OBSIDIAN) && !blockState.is(Blocks.BEDROCK)) {
|
||||
+ if (!level.purpurConfig.endCrystalPlaceAnywhere && !blockState.is(Blocks.OBSIDIAN) && !blockState.is(Blocks.BEDROCK)) { // Purpur - place end crystal on any block
|
||||
return InteractionResult.FAIL;
|
||||
} else {
|
||||
BlockPos above = pos.above();
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--- a/net/minecraft/world/item/HoeItem.java
|
||||
+++ b/net/minecraft/world/item/HoeItem.java
|
||||
@@ -44,15 +_,25 @@
|
||||
@@ -44,16 +_,26 @@
|
||||
public InteractionResult useOn(final UseOnContext context) {
|
||||
Level level = context.getLevel();
|
||||
BlockPos pos = context.getClickedPos();
|
||||
@@ -11,23 +11,24 @@
|
||||
+ org.purpurmc.purpur.tool.Tillable tillable = level.purpurConfig.hoeTillables.get(clickedBlock);
|
||||
+ if (tillable == null) {
|
||||
return InteractionResult.PASS;
|
||||
} else {
|
||||
- Predicate<UseOnContext> predicate = logicPair.getFirst();
|
||||
- Consumer<UseOnContext> action = logicPair.getSecond();
|
||||
+ Predicate<UseOnContext> predicate = tillable.condition().predicate();
|
||||
+ Consumer<UseOnContext> action = (ctx) -> {
|
||||
+ level.setBlock(pos, tillable.into().defaultBlockState(), 11);
|
||||
+ tillable.drops().forEach((drop, chance) -> {
|
||||
+ if (level.getRandom().nextDouble() < chance) {
|
||||
+ Block.popResourceFromFace(level, pos, ctx.getClickedFace(), new ItemStack(drop));
|
||||
+ }
|
||||
+ });
|
||||
+ };
|
||||
+ // Purpur end - Tool actionable options
|
||||
if (predicate.test(context)) {
|
||||
Player player = context.getPlayer();
|
||||
- level.playSound(player, pos, SoundEvents.HOE_TILL, SoundSource.BLOCKS, 1.0F, 1.0F);
|
||||
+ if (!TILLABLES.containsKey(clickedBlock)) level.playSound(null, pos, SoundEvents.HOE_TILL, SoundSource.BLOCKS, 1.0F, 1.0F); // Purpur - Tool actionable options - force sound
|
||||
if (!level.isClientSide()) {
|
||||
action.accept(context);
|
||||
if (player != null) {
|
||||
}
|
||||
|
||||
- Predicate<UseOnContext> predicate = logicPair.getFirst();
|
||||
- Consumer<UseOnContext> action = logicPair.getSecond();
|
||||
+ Predicate<UseOnContext> predicate = tillable.condition().predicate();
|
||||
+ Consumer<UseOnContext> action = (ctx) -> {
|
||||
+ level.setBlock(pos, tillable.into().defaultBlockState(), 11);
|
||||
+ tillable.drops().forEach((drop, chance) -> {
|
||||
+ if (level.getRandom().nextDouble() < chance) {
|
||||
+ Block.popResourceFromFace(level, pos, ctx.getClickedFace(), new ItemStack(drop));
|
||||
+ }
|
||||
+ });
|
||||
+ };
|
||||
+ // Purpur end - Tool actionable options
|
||||
if (predicate.test(context)) {
|
||||
Player player = context.getPlayer();
|
||||
- level.playSound(player, pos, SoundEvents.HOE_TILL, SoundSource.BLOCKS, 1.0F, 1.0F);
|
||||
+ if (!TILLABLES.containsKey(clickedBlock)) level.playSound(null, pos, SoundEvents.HOE_TILL, SoundSource.BLOCKS, 1.0F, 1.0F); // Purpur - Tool actionable options - force sound
|
||||
if (!level.isClientSide()) {
|
||||
action.accept(context);
|
||||
if (player != null) {
|
||||
|
||||
@@ -1,21 +1,21 @@
|
||||
--- a/net/minecraft/world/item/ItemStack.java
|
||||
+++ b/net/minecraft/world/item/ItemStack.java
|
||||
@@ -452,6 +_,7 @@
|
||||
// revert back all captured blocks
|
||||
for (org.bukkit.block.BlockState blockstate : blocks) {
|
||||
((org.bukkit.craftbukkit.block.CraftBlockState) blockstate).revertPlace();
|
||||
+ ((org.bukkit.craftbukkit.block.CraftBlock) blockstate.getBlock()).getBlockState().getBlock().forgetPlacer(); // Purpur - Store placer on Block when placed
|
||||
}
|
||||
@@ -453,6 +_,7 @@
|
||||
// revert back all captured blocks
|
||||
for (org.bukkit.block.BlockState blockstate : blocks) {
|
||||
((org.bukkit.craftbukkit.block.CraftBlockState) blockstate).revertPlace();
|
||||
+ ((org.bukkit.craftbukkit.block.CraftBlock) blockstate.getBlock()).getBlockState().getBlock().forgetPlacer(); // Purpur - Store placer on Block when placed
|
||||
}
|
||||
|
||||
SignItem.openSign = null; // SPIGOT-6758 - Reset on early return
|
||||
@@ -475,6 +_,7 @@
|
||||
if (!(block.getBlock() instanceof net.minecraft.world.level.block.BaseEntityBlock)) { // Containers get placed automatically
|
||||
block.onPlace(level, newPos, oldBlock, true, context);
|
||||
}
|
||||
+ block.getBlock().forgetPlacer(); // Purpur - Store placer on Block when placed
|
||||
|
||||
level.notifyAndUpdatePhysics(newPos, null, oldBlock, block, level.getBlockState(newPos), updateFlags, net.minecraft.world.level.block.Block.UPDATE_LIMIT); // send null chunk as chunk.k() returns false by this point
|
||||
SignItem.openSign = null; // SPIGOT-6758 - Reset on early return
|
||||
@@ -476,6 +_,7 @@
|
||||
if (!(block.getBlock() instanceof net.minecraft.world.level.block.BaseEntityBlock)) { // Containers get placed automatically
|
||||
block.onPlace(level, newPos, oldBlock, true, context);
|
||||
}
|
||||
+ block.getBlock().forgetPlacer(); // Purpur - Store placer on Block when placed
|
||||
|
||||
level.notifyAndUpdatePhysics(newPos, null, oldBlock, block, level.getBlockState(newPos), updateFlags, net.minecraft.world.level.block.Block.UPDATE_LIMIT); // send null chunk as chunk.k() returns false by this point
|
||||
}
|
||||
@@ -591,6 +_,26 @@
|
||||
return this.isDamageableItem() && this.getDamageValue() > 0;
|
||||
}
|
||||
@@ -43,7 +43,7 @@
|
||||
public int getDamageValue() {
|
||||
return Mth.clamp(this.getOrDefault(DataComponents.DAMAGE, 0), 0, this.getMaxDamage());
|
||||
}
|
||||
@@ -1246,6 +_,12 @@
|
||||
@@ -1254,6 +_,12 @@
|
||||
public boolean isEnchanted() {
|
||||
return !this.getOrDefault(DataComponents.ENCHANTMENTS, ItemEnchantments.EMPTY).isEmpty();
|
||||
}
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
--- a/net/minecraft/world/item/ProjectileWeaponItem.java
|
||||
+++ b/net/minecraft/world/item/ProjectileWeaponItem.java
|
||||
@@ -114,6 +_,8 @@
|
||||
arrowx.setCritArrow(true);
|
||||
arrow.setCritArrow(true);
|
||||
}
|
||||
|
||||
+ arrowx.setActualEnchantments(weapon.getEnchantments()); // Purpur - Add an option to fix MC-3304 projectile looting
|
||||
+ arrow.setActualEnchantments(weapon.getEnchantments()); // Purpur - Add an option to fix MC-3304 projectile looting
|
||||
+
|
||||
return arrowx;
|
||||
return arrow;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,17 +1,18 @@
|
||||
--- a/net/minecraft/world/item/ShovelItem.java
|
||||
+++ b/net/minecraft/world/item/ShovelItem.java
|
||||
@@ -46,9 +_,12 @@
|
||||
BlockState newState = FLATTENABLES.get(blockState.getBlock());
|
||||
BlockState updatedState = null;
|
||||
Runnable afterAction = null; // Paper
|
||||
+ org.purpurmc.purpur.tool.Flattenable flattenable = level.purpurConfig.shovelFlattenables.get(blockState.getBlock()); // Purpur - Tool actionable options
|
||||
if (newState != null && level.getBlockState(pos.above()).isAir()) {
|
||||
- afterAction = () -> level.playSound(player, pos, SoundEvents.SHOVEL_FLATTEN, SoundSource.BLOCKS, 1.0F, 1.0F); // Paper
|
||||
- updatedState = newState;
|
||||
@@ -47,9 +_,12 @@
|
||||
BlockState newState = FLATTENABLES.get(blockState.getBlock());
|
||||
BlockState updatedState = null;
|
||||
Runnable afterAction = null; // Paper
|
||||
- if (newState != null && level.getBlockState(pos.above()).isAir()) {
|
||||
- afterAction = () -> level.playSound(player, pos, SoundEvents.SHOVEL_FLATTEN, SoundSource.BLOCKS, 1.0F, 1.0F); // Paper
|
||||
- updatedState = newState;
|
||||
+ org.purpurmc.purpur.tool.Flattenable flattenable = level.purpurConfig.shovelFlattenables.get(blockState.getBlock()); // Purpur - Tool actionable options
|
||||
+ if (newState != null && level.getBlockState(pos.above()).isAir()) {
|
||||
+ // Purpur start - Tool actionable options
|
||||
+ afterAction = () -> {if (!FLATTENABLES.containsKey(blockState.getBlock())) level.playSound(player, pos, SoundEvents.SHOVEL_FLATTEN, SoundSource.BLOCKS, 1.0F, 1.0F);}; // Paper
|
||||
+ updatedState = flattenable.into().defaultBlockState();
|
||||
+ afterAction = () -> {if (!FLATTENABLES.containsKey(blockState.getBlock())) level.playSound(player, pos, SoundEvents.SHOVEL_FLATTEN, SoundSource.BLOCKS, 1.0F, 1.0F);}; // Paper
|
||||
+ updatedState = flattenable.into().defaultBlockState();
|
||||
+ // Purpur end - Tool actionable options
|
||||
} else if (blockState.getBlock() instanceof CampfireBlock && blockState.getValue(CampfireBlock.LIT)) {
|
||||
afterAction = () -> { // Paper
|
||||
if (!level.isClientSide()) {
|
||||
} else if (blockState.getBlock() instanceof CampfireBlock && blockState.getValue(CampfireBlock.LIT)) {
|
||||
afterAction = () -> { // Paper
|
||||
if (!level.isClientSide()) {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--- a/net/minecraft/world/item/SpawnEggItem.java
|
||||
+++ b/net/minecraft/world/item/SpawnEggItem.java
|
||||
@@ -62,6 +_,23 @@
|
||||
@@ -64,6 +_,23 @@
|
||||
return InteractionResult.FAIL;
|
||||
} else {
|
||||
if (level.paperConfig().entities.spawning.disableMobSpawnerSpawnEggTransformation) return InteractionResult.FAIL; // Paper - Allow disabling mob spawner spawn egg transformation
|
||||
|
||||
@@ -1,19 +1,19 @@
|
||||
--- a/net/minecraft/world/item/TridentItem.java
|
||||
+++ b/net/minecraft/world/item/TridentItem.java
|
||||
@@ -82,7 +_,7 @@
|
||||
if (riptideStrength == 0.0F) {
|
||||
ItemStack thrownItemStack = itemStack.copyWithCount(1); // Paper
|
||||
Projectile.Delayed<ThrownTrident> tridentDelayed = Projectile.spawnProjectileFromRotationDelayed( // Paper - PlayerLaunchProjectileEvent(
|
||||
- ThrownTrident::new, serverLevel, thrownItemStack, player, 0.0F, 2.5F, 1.0F
|
||||
+ ThrownTrident::new, serverLevel, thrownItemStack, player, 0.0F, 2.5F, (float) serverLevel.purpurConfig.tridentProjectileOffset // Purpur - Projectile offset config
|
||||
);
|
||||
// Paper start - PlayerLaunchProjectileEvent
|
||||
com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent event = new com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent((org.bukkit.entity.Player) player.getBukkitEntity(), org.bukkit.craftbukkit.inventory.CraftItemStack.asCraftMirror(itemStack), (org.bukkit.entity.Projectile) tridentDelayed.projectile().getBukkitEntity());
|
||||
@@ -92,6 +_,7 @@
|
||||
return false;
|
||||
}
|
||||
ThrownTrident trident = tridentDelayed.projectile(); // Paper - PlayerLaunchProjectileEvent
|
||||
+ trident.setActualEnchantments(itemStack.getEnchantments()); // Purpur - Add an option to fix MC-3304 projectile looting
|
||||
if (event.shouldConsume()) {
|
||||
thrownItemStack.hurtWithoutBreaking(1, player); // Paper - PlayerLaunchProjectileEvent - use thrownItemStack; pickup item damage
|
||||
}
|
||||
@@ -84,7 +_,7 @@
|
||||
if (riptideStrength == 0.0F) {
|
||||
ItemStack thrownItemStack = itemStack.copyWithCount(1); // Paper
|
||||
Projectile.Delayed<ThrownTrident> tridentDelayed = Projectile.spawnProjectileFromRotationDelayed( // Paper - PlayerLaunchProjectileEvent(
|
||||
- ThrownTrident::new, serverLevel, thrownItemStack, player, 0.0F, 2.5F, 1.0F
|
||||
+ ThrownTrident::new, serverLevel, thrownItemStack, player, 0.0F, 2.5F, (float) serverLevel.purpurConfig.tridentProjectileOffset // Purpur - Projectile offset config
|
||||
);
|
||||
// Paper start - PlayerLaunchProjectileEvent
|
||||
com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent event = new com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent((org.bukkit.entity.Player) player.getBukkitEntity(), org.bukkit.craftbukkit.inventory.CraftItemStack.asCraftMirror(itemStack), (org.bukkit.entity.Projectile) tridentDelayed.projectile().getBukkitEntity());
|
||||
@@ -94,6 +_,7 @@
|
||||
return false;
|
||||
}
|
||||
ThrownTrident trident = tridentDelayed.projectile(); // Paper - PlayerLaunchProjectileEvent
|
||||
+ trident.setActualEnchantments(itemStack.getEnchantments()); // Purpur - Add an option to fix MC-3304 projectile looting
|
||||
if (event.shouldConsume()) {
|
||||
thrownItemStack.hurtWithoutBreaking(1, player); // Paper - PlayerLaunchProjectileEvent - use thrownItemStack; pickup item damage
|
||||
}
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
|
||||
public boolean isExact() {
|
||||
return this.itemStacks != null;
|
||||
@@ -86,6 +_,11 @@
|
||||
@@ -88,6 +_,11 @@
|
||||
return this.itemStacks.contains(input); // Paper - Improve exact choice recipe ingredients (hashing FTW!)
|
||||
}
|
||||
// CraftBukkit end
|
||||
|
||||
@@ -64,7 +64,7 @@
|
||||
this.generator = generator;
|
||||
this.world = new CraftWorld((ServerLevel) this, worldKey, biomeProvider, environment);
|
||||
|
||||
@@ -2194,4 +_,14 @@
|
||||
@@ -2197,4 +_,14 @@
|
||||
return this.moonrise$getEntityLookup().getEntityCount(); // Paper - rewrite chunk system
|
||||
}
|
||||
// Paper end - allow patching this logic
|
||||
|
||||
@@ -7,4 +7,4 @@
|
||||
+ if (!((net.minecraft.world.level.LevelAccessor) level).getMinecraftWorld().purpurConfig.coralDieOutsideWater) return true; // Purpur - Config to not let coral die
|
||||
if (state.getValue(WATERLOGGED)) {
|
||||
return true;
|
||||
} else {
|
||||
}
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
--- a/net/minecraft/world/level/block/BaseFireBlock.java
|
||||
+++ b/net/minecraft/world/level/block/BaseFireBlock.java
|
||||
@@ -215,7 +_,7 @@
|
||||
boolean hasObsidian = false;
|
||||
@@ -216,7 +_,7 @@
|
||||
boolean hasObsidian = false;
|
||||
|
||||
for (Direction face : Direction.values()) {
|
||||
- if (level.getBlockState(testPos.set(pos).move(face)).is(Blocks.OBSIDIAN)) {
|
||||
+ if (PortalShape.FRAME.test(level.getBlockState(testPos.set(pos).move(face)), level, testPos)) { // Purpur - Crying obsidian valid for portal frames
|
||||
hasObsidian = true;
|
||||
break;
|
||||
}
|
||||
for (Direction face : Direction.values()) {
|
||||
- if (level.getBlockState(testPos.set(pos).move(face)).is(Blocks.OBSIDIAN)) {
|
||||
+ if (PortalShape.FRAME.test(level.getBlockState(testPos.set(pos).move(face)), level, testPos)) { // Purpur - Crying obsidian valid for portal frames
|
||||
hasObsidian = true;
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -1,20 +1,20 @@
|
||||
--- a/net/minecraft/world/level/block/BedBlock.java
|
||||
+++ b/net/minecraft/world/level/block/BedBlock.java
|
||||
@@ -100,7 +_,7 @@
|
||||
}
|
||||
@@ -101,7 +_,7 @@
|
||||
}
|
||||
|
||||
Vec3 boomPos = pos.getCenter();
|
||||
- level.explode(null, level.damageSources().badRespawnPointExplosion(boomPos), null, boomPos, 5.0F, true, Level.ExplosionInteraction.BLOCK);
|
||||
+ if (level.purpurConfig.bedExplode) level.explode(null, level.damageSources().badRespawnPointExplosion(boomPos), null, boomPos, (float) level.purpurConfig.bedExplosionPower, level.purpurConfig.bedExplosionFire, level.purpurConfig.bedExplosionEffect); // Purpur - Implement bed explosion options
|
||||
return InteractionResult.SUCCESS_SERVER;
|
||||
} else if (state.getValue(OCCUPIED)) {
|
||||
if (bedRule.explodes()) return this.explodeBed(state, level, pos); // Paper - check explode first
|
||||
Vec3 boomPos = pos.getCenter();
|
||||
- level.explode(null, level.damageSources().badRespawnPointExplosion(boomPos), null, boomPos, 5.0F, true, Level.ExplosionInteraction.BLOCK);
|
||||
+ if (level.purpurConfig.bedExplode) level.explode(null, level.damageSources().badRespawnPointExplosion(boomPos), null, boomPos, (float) level.purpurConfig.bedExplosionPower, level.purpurConfig.bedExplosionFire, level.purpurConfig.bedExplosionEffect); // Purpur - Implement bed explosion options
|
||||
return InteractionResult.SUCCESS_SERVER;
|
||||
} else if (state.getValue(OCCUPIED)) {
|
||||
if (bedRule.explodes()) return this.explodeBed(state, level, pos); // Paper - check explode first
|
||||
@@ -153,7 +_,7 @@
|
||||
}
|
||||
|
||||
Vec3 center = pos.getCenter();
|
||||
- level.explode(null, level.damageSources().badRespawnPointExplosion(center).causingBlockSnapshot(blockState), null, center, 5.0F, true, Level.ExplosionInteraction.BLOCK); // CraftBukkit - add state
|
||||
+ if (level.purpurConfig.bedExplode) level.explode(null, level.damageSources().badRespawnPointExplosion(center).causingBlockSnapshot(blockState), null, center, (float) level.purpurConfig.bedExplosionPower, level.purpurConfig.bedExplosionFire, level.purpurConfig.bedExplosionEffect); // CraftBukkit - add state // Purpur - Implement bed explosion options
|
||||
Vec3 boomPos = pos.getCenter();
|
||||
- level.explode(null, level.damageSources().badRespawnPointExplosion(boomPos).causingBlockSnapshot(blockState), null, boomPos, 5.0F, true, Level.ExplosionInteraction.BLOCK); // CraftBukkit - add state
|
||||
+ if (level.purpurConfig.bedExplode) level.explode(null, level.damageSources().badRespawnPointExplosion(boomPos).causingBlockSnapshot(blockState), null, boomPos, (float) level.purpurConfig.bedExplosionPower, level.purpurConfig.bedExplosionFire, level.purpurConfig.bedExplosionEffect); // CraftBukkit - add state // Purpur - Implement bed explosion options
|
||||
return InteractionResult.SUCCESS_SERVER;
|
||||
}
|
||||
// CraftBukkit end
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
// Paper start - Protect Bedrock and End Portal/Frames from being destroyed
|
||||
public final boolean isDestroyable() {
|
||||
return io.papermc.paper.configuration.GlobalConfiguration.get().unsupportedSettings.allowPermanentBlockBreakExploits ||
|
||||
@@ -411,7 +_,7 @@
|
||||
@@ -415,7 +_,7 @@
|
||||
event.setExpToDrop(block.getExpDrop(state, serverLevel, pos, net.minecraft.world.item.ItemStack.EMPTY, true)); // Paper - Properly handle xp dropping
|
||||
event.callEvent();
|
||||
for (org.bukkit.inventory.ItemStack drop : event.getDrops()) {
|
||||
@@ -20,7 +20,7 @@
|
||||
}
|
||||
state.spawnAfterBreak(serverLevel, pos, ItemStack.EMPTY, false); // Paper - Properly handle xp dropping
|
||||
block.popExperience(serverLevel, pos, event.getExpToDrop()); // Paper - Properly handle xp dropping
|
||||
@@ -429,7 +_,7 @@
|
||||
@@ -433,7 +_,7 @@
|
||||
|
||||
public static void dropResources(final BlockState state, final LevelAccessor level, final BlockPos pos, final @Nullable BlockEntity blockEntity) {
|
||||
if (level instanceof ServerLevel serverLevel) {
|
||||
@@ -29,7 +29,7 @@
|
||||
state.spawnAfterBreak(serverLevel, pos, ItemStack.EMPTY, true);
|
||||
}
|
||||
}
|
||||
@@ -450,11 +_,30 @@
|
||||
@@ -454,11 +_,30 @@
|
||||
, final boolean dropExperience // Paper - Properly handle xp dropping
|
||||
) {
|
||||
if (level instanceof ServerLevel serverLevel) {
|
||||
@@ -61,7 +61,7 @@
|
||||
public static void popResource(final Level level, final BlockPos pos, final ItemStack itemStack) {
|
||||
double halfHeight = EntityType.ITEM.getHeight() / 2.0;
|
||||
RandomSource random = level.getRandom();
|
||||
@@ -544,7 +_,15 @@
|
||||
@@ -548,7 +_,15 @@
|
||||
}
|
||||
|
||||
public void setPlacedBy(final Level level, final BlockPos pos, final BlockState state, final @Nullable LivingEntity by, final ItemStack itemStack) {
|
||||
@@ -78,7 +78,7 @@
|
||||
|
||||
public boolean isPossibleToRespawnInThis(final BlockState state) {
|
||||
return !state.isSolid() && !state.liquid();
|
||||
@@ -555,7 +_,7 @@
|
||||
@@ -559,7 +_,7 @@
|
||||
}
|
||||
|
||||
public void fallOn(final Level level, final BlockState state, final BlockPos pos, final Entity entity, final double fallDistance) {
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
--- a/net/minecraft/world/level/block/CakeBlock.java
|
||||
+++ b/net/minecraft/world/level/block/CakeBlock.java
|
||||
@@ -118,6 +_,7 @@
|
||||
org.bukkit.event.entity.FoodLevelChangeEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.callFoodLevelChangeEvent(player, 2 + oldFoodLevel);
|
||||
@@ -119,6 +_,7 @@
|
||||
org.bukkit.event.entity.FoodLevelChangeEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.callFoodLevelChangeEvent(player, 2 + oldFoodLevel);
|
||||
|
||||
if (!event.isCancelled()) {
|
||||
+ if (player.level().purpurConfig.playerBurpWhenFull && event.getFoodLevel() == 20 && oldFoodLevel < 20) player.burpDelay = player.level().purpurConfig.playerBurpDelay; // Purpur - Burp after eating food fills hunger bar completely
|
||||
player.getFoodData().eat(event.getFoodLevel() - oldFoodLevel, 0.1F);
|
||||
}
|
||||
if (!event.isCancelled()) {
|
||||
+ if (player.level().purpurConfig.playerBurpWhenFull && event.getFoodLevel() == 20 && oldFoodLevel < 20) player.burpDelay = player.level().purpurConfig.playerBurpDelay; // Purpur - Burp after eating food fills hunger bar completely
|
||||
player.getFoodData().eat(event.getFoodLevel() - oldFoodLevel, 0.1F);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--- a/net/minecraft/world/level/block/ChestBlock.java
|
||||
+++ b/net/minecraft/world/level/block/ChestBlock.java
|
||||
@@ -352,6 +_,7 @@
|
||||
@@ -347,6 +_,7 @@
|
||||
}
|
||||
|
||||
public static boolean isBlockedChestByBlock(final BlockGetter level, final BlockPos pos) {
|
||||
|
||||
@@ -1,13 +1,14 @@
|
||||
--- a/net/minecraft/world/level/block/DoorBlock.java
|
||||
+++ b/net/minecraft/world/level/block/DoorBlock.java
|
||||
@@ -200,6 +_,7 @@
|
||||
@@ -200,7 +_,7 @@
|
||||
protected InteractionResult useWithoutItem(BlockState state, final Level level, final BlockPos pos, final Player player, final BlockHitResult hitResult) {
|
||||
if (!this.type.canOpenByHand()) {
|
||||
return InteractionResult.PASS;
|
||||
+ } else if (requiresRedstone(level, state, pos)) { return InteractionResult.CONSUME; // Purpur - Option to make doors require redstone
|
||||
} else {
|
||||
state = state.cycle(OPEN);
|
||||
level.setBlock(pos, state, Block.UPDATE_CLIENTS | Block.UPDATE_IMMEDIATE);
|
||||
- }
|
||||
+ } else if (requiresRedstone(level, state, pos)) { return InteractionResult.CONSUME; } // Purpur - Option to make doors require redstone
|
||||
|
||||
state = state.cycle(OPEN);
|
||||
level.setBlock(pos, state, Block.UPDATE_CLIENTS | Block.UPDATE_IMMEDIATE);
|
||||
@@ -280,4 +_,18 @@
|
||||
public static boolean isWoodenDoor(final BlockState state) {
|
||||
return state.getBlock() instanceof DoorBlock door && door.type().canOpenByHand();
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user