mirror of
https://github.com/PurpurMC/Purpur.git
synced 2026-02-17 16:37:43 +01:00
thats a whole lot of patches
This commit is contained in:
@@ -5,10 +5,10 @@ Subject: [PATCH] Configurable TPS Catchup
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||
index 1049f5f40d07f0c0fde965b1ab927607651b3e38..d894903c3f5c8b12b759896d8dd315a0f4c69d19 100644
|
||||
index e6c6fe80e2fddceec4cd16b08cf7aab888c7fd9d..a98785ec0e51a242ff29a0a5ae3a6bbbdf16d7c9 100644
|
||||
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||
@@ -1284,7 +1284,13 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
||||
@@ -1269,7 +1269,13 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
||||
this.tickServer(this::haveTime);
|
||||
this.profiler.popPush("nextTickWait");
|
||||
this.mayHaveDelayedTasks = true;
|
||||
|
||||
@@ -5,10 +5,10 @@ Subject: [PATCH] Add option to allow loyalty on tridents to work in the void
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/projectile/ThrownTrident.java b/src/main/java/net/minecraft/world/entity/projectile/ThrownTrident.java
|
||||
index c95eef8596fe3e1ca83e620a6c54b164c797cbe1..1e6a5404d767318de29184b3e3a2bc41c1ee2602 100644
|
||||
index a367f50b0e3fe9e7a1b87892a8c98e88bd678f6f..52d41fb8d0495f61346c718c8f2395bc622027af 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/projectile/ThrownTrident.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/projectile/ThrownTrident.java
|
||||
@@ -61,7 +61,7 @@ public class ThrownTrident extends AbstractArrow {
|
||||
@@ -60,7 +60,7 @@ public class ThrownTrident extends AbstractArrow {
|
||||
Entity entity = this.getOwner();
|
||||
byte b0 = (Byte) this.entityData.get(ThrownTrident.ID_LOYALTY);
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@ Subject: [PATCH] Add enderman and creeper griefing controls
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/monster/Creeper.java b/src/main/java/net/minecraft/world/entity/monster/Creeper.java
|
||||
index 7fbe8fb2b59fe2f578beed8b13cbbbe96011719f..96858c10ad219a47187d3008387355f1bcfdc789 100644
|
||||
index a878693fe74f1509b4d3ba5199a7b7f1dac4b8d1..f7b1d2cb0ba544aa4aec7d87d21335e9fcca6127 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/monster/Creeper.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/monster/Creeper.java
|
||||
@@ -344,7 +344,7 @@ public class Creeper extends Monster implements PowerableMob {
|
||||
@@ -18,23 +18,23 @@ index 7fbe8fb2b59fe2f578beed8b13cbbbe96011719f..96858c10ad219a47187d3008387355f1
|
||||
|
||||
// CraftBukkit start
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java
|
||||
index cb904b7822cfe645626d3306302afe1085cddce5..ec772f1ec312c3e51287d86eb2023cee80e55d7b 100644
|
||||
index 66ff0e3aa1a7dfb233a459516c4c596c1bbe033e..71b472e3fefe549fe959fda1702213bac3c3e7d4 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java
|
||||
@@ -474,6 +474,7 @@ public class EnderMan extends Monster implements NeutralMob {
|
||||
@@ -499,6 +499,7 @@ public class EnderMan extends Monster implements NeutralMob {
|
||||
|
||||
@Override
|
||||
public boolean canUse() {
|
||||
+ if (!enderman.level.purpurConfig.endermanAllowGriefing) return false; // Purpur
|
||||
return this.enderman.getCarriedBlock() == null ? false : (!this.enderman.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING) ? false : this.enderman.getRandom().nextInt(2000) == 0);
|
||||
return this.enderman.getCarriedBlock() == null ? false : (!this.enderman.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING) ? false : this.enderman.getRandom().nextInt(reducedTickDelay(2000)) == 0);
|
||||
}
|
||||
|
||||
@@ -521,6 +522,7 @@ public class EnderMan extends Monster implements NeutralMob {
|
||||
@@ -546,6 +547,7 @@ public class EnderMan extends Monster implements NeutralMob {
|
||||
|
||||
@Override
|
||||
public boolean canUse() {
|
||||
+ if (!enderman.level.purpurConfig.endermanAllowGriefing) return false; // Purpur
|
||||
return this.enderman.getCarriedBlock() != null ? false : (!this.enderman.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING) ? false : this.enderman.getRandom().nextInt(20) == 0);
|
||||
return this.enderman.getCarriedBlock() != null ? false : (!this.enderman.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING) ? false : this.enderman.getRandom().nextInt(reducedTickDelay(20)) == 0);
|
||||
}
|
||||
|
||||
diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
||||
|
||||
@@ -5,10 +5,10 @@ Subject: [PATCH] Villagers follow emerald blocks
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/ai/goal/TemptGoal.java b/src/main/java/net/minecraft/world/entity/ai/goal/TemptGoal.java
|
||||
index 30ef9d0a431b393b7238e497d16e8013f90036ef..90f8434100893d577544f7f5fbbc4503223390c0 100644
|
||||
index 79bb13c5614bab1f0749c5f8f57f762c6216c564..2cbc9adc8e417def48be03d08174a5833068ec65 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/ai/goal/TemptGoal.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/ai/goal/TemptGoal.java
|
||||
@@ -60,7 +60,7 @@ public class TemptGoal extends Goal {
|
||||
@@ -62,7 +62,7 @@ public class TemptGoal extends Goal {
|
||||
}
|
||||
|
||||
private boolean shouldFollow(LivingEntity entity) {
|
||||
@@ -18,7 +18,7 @@ index 30ef9d0a431b393b7238e497d16e8013f90036ef..90f8434100893d577544f7f5fbbc4503
|
||||
|
||||
@Override
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/npc/AbstractVillager.java b/src/main/java/net/minecraft/world/entity/npc/AbstractVillager.java
|
||||
index c75fa3274dedfafa11b94704695a2313f11c22cc..f22ec35a7960bbc2f205d972dbe78d87eb9a7e25 100644
|
||||
index ce0364b98204b64d43751fed260dcc1d9fe60649..8139fe28b5c178635ab405def3229060e24d6c09 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/npc/AbstractVillager.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/npc/AbstractVillager.java
|
||||
@@ -43,6 +43,7 @@ import org.bukkit.event.entity.VillagerAcquireTradeEvent;
|
||||
@@ -30,10 +30,10 @@ index c75fa3274dedfafa11b94704695a2313f11c22cc..f22ec35a7960bbc2f205d972dbe78d87
|
||||
// CraftBukkit start
|
||||
private CraftMerchant craftMerchant;
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java
|
||||
index 136b6f0f19c9ece222eedbf2b20b118e206ee3e9..4bc275fed808978d4645f814028a4f11a70375b2 100644
|
||||
index 4c20685b3d8735272f9f97a75485a6438cef6501..4849d347677a689de1da276c604daeece78a437d 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/npc/Villager.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java
|
||||
@@ -171,6 +171,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
|
||||
@@ -167,6 +167,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
|
||||
@Override
|
||||
protected void registerGoals() {
|
||||
this.goalSelector.addGoal(0, new net.pl3x.purpur.entity.ai.HasRider(this));
|
||||
|
||||
@@ -5,10 +5,10 @@ Subject: [PATCH] Allow leashing villagers
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java
|
||||
index 8bb0634e249b1ffc5b692719738b05281cf26a87..91960c5777fc026053cde1b7487a82d407b69369 100644
|
||||
index 79719f259090da6f41a75ac4910e925ce66d067b..635af0bde7aca3431ab930be7d018a43f34a4bb3 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/Mob.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/Mob.java
|
||||
@@ -1219,6 +1219,7 @@ public abstract class Mob extends LivingEntity {
|
||||
@@ -1234,6 +1234,7 @@ public abstract class Mob extends LivingEntity {
|
||||
if (!this.isAlive()) {
|
||||
return InteractionResult.PASS;
|
||||
} else if (this.getLeashHolder() == player) {
|
||||
@@ -17,10 +17,10 @@ index 8bb0634e249b1ffc5b692719738b05281cf26a87..91960c5777fc026053cde1b7487a82d4
|
||||
// Paper start - drop leash variable
|
||||
org.bukkit.event.player.PlayerUnleashEntityEvent event = CraftEventFactory.callPlayerUnleashEntityEvent(this, player, !player.getAbilities().instabuild);
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java
|
||||
index 4bc275fed808978d4645f814028a4f11a70375b2..773015751a9e220e4b23bb9f6889aa1e085b567c 100644
|
||||
index 4849d347677a689de1da276c604daeece78a437d..a44a0eaa5f8b1f6dc0b2570fafc5a20c669f07bd 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/npc/Villager.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java
|
||||
@@ -178,6 +178,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
|
||||
@@ -174,6 +174,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
|
||||
public void initAttributes() {
|
||||
this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.villagerMaxHealth);
|
||||
}
|
||||
|
||||
@@ -6,10 +6,10 @@ Subject: [PATCH] Implement configurable search radius for villagers to spawn
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java
|
||||
index 773015751a9e220e4b23bb9f6889aa1e085b567c..f5a24c2be1c9c4148594130107981ad7434bb835 100644
|
||||
index a44a0eaa5f8b1f6dc0b2570fafc5a20c669f07bd..d195212838e253d7a479a89c6650bb008c5daadd 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/npc/Villager.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java
|
||||
@@ -1029,6 +1029,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
|
||||
@@ -1032,6 +1032,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
|
||||
|
||||
@Nullable
|
||||
private IronGolem trySpawnGolem(ServerLevel world) {
|
||||
|
||||
@@ -5,10 +5,10 @@ Subject: [PATCH] Add player death exp control options
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java
|
||||
index 3d66d2e86cef17bcd8813d4c2b29078beebf23fe..f991ed65d27d15a6eb32533f32da0bb9b69f331d 100644
|
||||
index adc094f20ed8bb4c531b06eb2e78bebd3faff578..42becbb21eee4e1b0a14e2fc3e226f0de26c96b1 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/player/Player.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/player/Player.java
|
||||
@@ -1907,9 +1907,18 @@ public abstract class Player extends LivingEntity {
|
||||
@@ -1909,9 +1909,18 @@ public abstract class Player extends LivingEntity {
|
||||
@Override
|
||||
protected int getExperienceReward(Player player) {
|
||||
if (!this.level.getGameRules().getBoolean(GameRules.RULE_KEEPINVENTORY) && !this.isSpectator()) {
|
||||
|
||||
@@ -5,10 +5,10 @@ Subject: [PATCH] Configurable void damage height and damage
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
|
||||
index 9080bac56a64cb13a316374798fb5c5298a2475b..5fb24a823e1aa5d761063f527736c68b7c373e15 100644
|
||||
index 646972f9b7205f79b4577984d0407be4eb5f5d4a..8b62f8ce2f75e6e82dafc770333ccf33f5f94ca8 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/Entity.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
|
||||
@@ -773,7 +773,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, n
|
||||
@@ -778,7 +778,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, i
|
||||
|
||||
public void checkOutOfWorld() {
|
||||
// Paper start - Configurable nether ceiling damage
|
||||
@@ -18,10 +18,10 @@ index 9080bac56a64cb13a316374798fb5c5298a2475b..5fb24a823e1aa5d761063f527736c68b
|
||||
&& this.getY() >= this.level.paperConfig.netherVoidTopDamageHeight)) {
|
||||
// Paper end
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
|
||||
index 27a07aa2b1a85267b2012eb882acb36b04fded66..2553fe5fa89d353d4e41c04c178eb57174b2750a 100644
|
||||
index dfbb53ddf9255351b44259d0016b362a3a4625b3..2eea21644321fa07950b44cddfe72c4d8f329702 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
|
||||
@@ -2389,7 +2389,7 @@ public abstract class LivingEntity extends Entity {
|
||||
@@ -2388,7 +2388,7 @@ public abstract class LivingEntity extends Entity {
|
||||
|
||||
@Override
|
||||
protected void outOfWorld() {
|
||||
|
||||
@@ -5,10 +5,10 @@ Subject: [PATCH] Add canSaveToDisk to Entity
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
|
||||
index 5fb24a823e1aa5d761063f527736c68b7c373e15..87b9812c7c879403792c9a5a91366af7a63bc683 100644
|
||||
index 8b62f8ce2f75e6e82dafc770333ccf33f5f94ca8..0c1b9a69b9e90f68b466865a0cd8e6632ecd988a 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/Entity.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
|
||||
@@ -4316,5 +4316,9 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, n
|
||||
@@ -4240,5 +4240,9 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, i
|
||||
public boolean processClick(InteractionHand hand) {
|
||||
return false;
|
||||
}
|
||||
@@ -19,10 +19,10 @@ index 5fb24a823e1aa5d761063f527736c68b7c373e15..87b9812c7c879403792c9a5a91366af7
|
||||
// Purpur end
|
||||
}
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java
|
||||
index 8a4440f766ea39857c1f1ededeed18313e0f38cb..43de1fa753e54ae09d43a9aef8dda22c27c67b81 100644
|
||||
index 8aa986e4fff1b74b95e59b9b2cbee1356411df7c..54ea9f591d31f3503a67b3b10f9f737843c03b79 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java
|
||||
@@ -192,6 +192,11 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob
|
||||
@@ -204,6 +204,11 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob
|
||||
// do not hit rider
|
||||
return target != rider && super.canHitEntity(target);
|
||||
}
|
||||
@@ -35,11 +35,11 @@ index 8a4440f766ea39857c1f1ededeed18313e0f38cb..43de1fa753e54ae09d43a9aef8dda22c
|
||||
skull.setPosRaw(headX, headY, headZ);
|
||||
level.addFreshEntity(skull);
|
||||
diff --git a/src/main/java/net/minecraft/world/level/chunk/storage/EntityStorage.java b/src/main/java/net/minecraft/world/level/chunk/storage/EntityStorage.java
|
||||
index 1c77959518039e4b4fb2ffa8b93f5f69e8587ade..ea27bf92ff04155990871109ebf1f5b9d3796f28 100644
|
||||
index bc46fdff45b174d9c266d1b6b546061a39b4997d..bc6d523d6d2449b7590ad318e299e770fe62931d 100644
|
||||
--- a/src/main/java/net/minecraft/world/level/chunk/storage/EntityStorage.java
|
||||
+++ b/src/main/java/net/minecraft/world/level/chunk/storage/EntityStorage.java
|
||||
@@ -109,6 +109,7 @@ public class EntityStorage implements EntityPersistentStorage<Entity> {
|
||||
|
||||
@@ -92,6 +92,7 @@ public class EntityStorage implements EntityPersistentStorage<Entity> {
|
||||
ListTag listTag = new ListTag();
|
||||
final java.util.Map<net.minecraft.world.entity.EntityType<?>, Integer> savedEntityCounts = new java.util.HashMap<>(); // Paper
|
||||
dataList.getEntities().forEach((entity) -> {
|
||||
+ if (!entity.canSaveToDisk()) return; // Purpur
|
||||
|
||||
@@ -5,18 +5,18 @@ Subject: [PATCH] Dispenser curse of binding protection
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java
|
||||
index 91960c5777fc026053cde1b7487a82d407b69369..7be2798a1b190b44445e3abd55c0598e3432bf27 100644
|
||||
index 635af0bde7aca3431ab930be7d018a43f34a4bb3..d936cf11ece70d528e5a0d1176fdbafd9b8f9d93 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/Mob.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/Mob.java
|
||||
@@ -62,6 +62,7 @@ import net.minecraft.world.item.ProjectileWeaponItem;
|
||||
@@ -63,6 +63,7 @@ import net.minecraft.world.item.ProjectileWeaponItem;
|
||||
import net.minecraft.world.item.SpawnEggItem;
|
||||
import net.minecraft.world.item.SwordItem;
|
||||
import net.minecraft.world.item.enchantment.EnchantmentHelper;
|
||||
+import net.minecraft.world.item.enchantment.Enchantments;
|
||||
import net.minecraft.world.level.BlockGetter;
|
||||
import net.minecraft.world.level.GameRules;
|
||||
import net.minecraft.world.level.ItemLike;
|
||||
@@ -1075,6 +1076,12 @@ public abstract class Mob extends LivingEntity {
|
||||
import net.minecraft.world.level.Level;
|
||||
@@ -1090,6 +1091,12 @@ public abstract class Mob extends LivingEntity {
|
||||
|
||||
}
|
||||
|
||||
@@ -30,10 +30,10 @@ index 91960c5777fc026053cde1b7487a82d407b69369..7be2798a1b190b44445e3abd55c0598e
|
||||
public static Item getEquipmentForSlot(EquipmentSlot equipmentSlot, int equipmentLevel) {
|
||||
switch (equipmentSlot) {
|
||||
diff --git a/src/main/java/net/minecraft/world/item/ArmorItem.java b/src/main/java/net/minecraft/world/item/ArmorItem.java
|
||||
index e566a6ee8eda9d6e9bc7b0ce153d016ddc0b2797..043ea496bd04bbf4571ec9d16e5362257b3658c8 100644
|
||||
index baa7e055d8ee4a153842128b07984b9f6deac6ca..014dd3aa8a7313d978d4781a1b7c6f532ff04962 100644
|
||||
--- a/src/main/java/net/minecraft/world/item/ArmorItem.java
|
||||
+++ b/src/main/java/net/minecraft/world/item/ArmorItem.java
|
||||
@@ -56,7 +56,7 @@ public class ArmorItem extends Item implements Wearable {
|
||||
@@ -55,7 +55,7 @@ public class ArmorItem extends Item implements Wearable {
|
||||
return false;
|
||||
} else {
|
||||
LivingEntity entityliving = (LivingEntity) list.get(0);
|
||||
|
||||
@@ -5,10 +5,10 @@ Subject: [PATCH] Add option for boats to eject players on land
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/vehicle/Boat.java b/src/main/java/net/minecraft/world/entity/vehicle/Boat.java
|
||||
index 391454a58d18d7373b974e094fd62514ca0d0b6b..6acd2dc6ec9c3761fa330c74df8c7e7b19266f8e 100644
|
||||
index b967177cb10041f96831322c311579e409050e88..4b38f8186dcd9a98a5413a51c5563c496ff04d2c 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/vehicle/Boat.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/vehicle/Boat.java
|
||||
@@ -520,6 +520,7 @@ public class Boat extends Entity {
|
||||
@@ -519,6 +519,7 @@ public class Boat extends Entity {
|
||||
|
||||
if (f > 0.0F) {
|
||||
this.landFriction = f;
|
||||
|
||||
@@ -5,23 +5,23 @@ Subject: [PATCH] Mending mends most damages equipment first
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/ExperienceOrb.java b/src/main/java/net/minecraft/world/entity/ExperienceOrb.java
|
||||
index ec7d011fa5df0b4775bedc01632ba549d3803693..bc2000c27395618d1816719a862aa9829128d863 100644
|
||||
index 8be7a3527018f9f6ecb91576c928c255b3089342..68072fae050fb83735725f3dc2525bfc9c0cc159 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/ExperienceOrb.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/ExperienceOrb.java
|
||||
@@ -319,7 +319,7 @@ public class ExperienceOrb extends Entity {
|
||||
}
|
||||
|
||||
private int repairPlayerItems(Player player, int amount) {
|
||||
- Entry<EquipmentSlot, ItemStack> entry = EnchantmentHelper.getRandomItemWith(Enchantments.MENDING, (LivingEntity) player, ItemStack::isDamaged);
|
||||
+ Entry<EquipmentSlot, ItemStack> entry = level.purpurConfig.useBetterMending ? EnchantmentHelper.getMostDamagedEquipment(Enchantments.MENDING, player) : EnchantmentHelper.getRandomItemWith(Enchantments.MENDING, (LivingEntity) player, ItemStack::isDamaged); // Purpur
|
||||
- Entry<EquipmentSlot, ItemStack> entry = EnchantmentHelper.getRandomItemWith(Enchantments.MENDING, player, ItemStack::isDamaged);
|
||||
+ Entry<EquipmentSlot, ItemStack> entry = level.purpurConfig.useBetterMending ? EnchantmentHelper.getMostDamagedEquipment(Enchantments.MENDING, player) : EnchantmentHelper.getRandomItemWith(Enchantments.MENDING, player, ItemStack::isDamaged); // Purpur
|
||||
|
||||
if (entry != null) {
|
||||
ItemStack itemstack = (ItemStack) entry.getValue();
|
||||
diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java
|
||||
index 7695a5ec88023720d873f81fc36f78ad60fb9589..47b8b3df98eb775f7e642924fd36005d542a10c6 100644
|
||||
index 8f2f516b1f473ce18a07e9f130b49b795dd6b46e..8f0cdf883cdf6825ed53e856b9dc279f3bcd0e1d 100644
|
||||
--- a/src/main/java/net/minecraft/world/item/ItemStack.java
|
||||
+++ b/src/main/java/net/minecraft/world/item/ItemStack.java
|
||||
@@ -513,6 +513,16 @@ public final class ItemStack {
|
||||
@@ -515,6 +515,16 @@ public final class ItemStack {
|
||||
return this.isDamageableItem() && this.getDamageValue() > 0;
|
||||
}
|
||||
|
||||
@@ -39,7 +39,7 @@ index 7695a5ec88023720d873f81fc36f78ad60fb9589..47b8b3df98eb775f7e642924fd36005d
|
||||
return this.tag == null ? 0 : this.tag.getInt("Damage");
|
||||
}
|
||||
diff --git a/src/main/java/net/minecraft/world/item/enchantment/EnchantmentHelper.java b/src/main/java/net/minecraft/world/item/enchantment/EnchantmentHelper.java
|
||||
index d439e8ce87bf7da03683a336941c7673b8b166e4..955e482e4bc83f2b777cd2e4254c40beef08853b 100644
|
||||
index 7bc5aa35b52de0027cf58a6127a9903464ccaf47..f3ec99d2eae31ba7ce7d4b8e7399a56d59f19cad 100644
|
||||
--- a/src/main/java/net/minecraft/world/item/enchantment/EnchantmentHelper.java
|
||||
+++ b/src/main/java/net/minecraft/world/item/enchantment/EnchantmentHelper.java
|
||||
@@ -270,6 +270,29 @@ public class EnchantmentHelper {
|
||||
|
||||
@@ -27,10 +27,10 @@ index fa56cd09102a89692b42f1d14257990508c5c720..f9251183df72ddc56662fd3f02acf216
|
||||
setListData(vector);
|
||||
}
|
||||
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||
index d894903c3f5c8b12b759896d8dd315a0f4c69d19..688a80485ae28361b993a4de4019ae9794989982 100644
|
||||
index a98785ec0e51a242ff29a0a5ae3a6bbbdf16d7c9..5c1d9e9af0efe1b83edf2c47574c67ae8d3c064e 100644
|
||||
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||
@@ -305,7 +305,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
||||
@@ -302,7 +302,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
||||
public static final int TPS = 20;
|
||||
public static final int TICK_TIME = 1000000000 / MinecraftServer.TPS;
|
||||
private static final int SAMPLE_INTERVAL = 20; // Paper
|
||||
@@ -39,7 +39,7 @@ index d894903c3f5c8b12b759896d8dd315a0f4c69d19..688a80485ae28361b993a4de4019ae97
|
||||
public boolean lagging = false; // Purpur
|
||||
public final SlackActivityAccountant slackActivityAccountant = new SlackActivityAccountant();
|
||||
// Spigot end
|
||||
@@ -1168,6 +1168,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
||||
@@ -1153,6 +1153,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
||||
private static final long MAX_CATCHUP_BUFFER = TICK_TIME * TPS * 60L;
|
||||
private long lastTick = 0;
|
||||
private long catchupTime = 0;
|
||||
@@ -47,7 +47,7 @@ index d894903c3f5c8b12b759896d8dd315a0f4c69d19..688a80485ae28361b993a4de4019ae97
|
||||
public final RollingAverage tps1 = new RollingAverage(60);
|
||||
public final RollingAverage tps5 = new RollingAverage(60 * 5);
|
||||
public final RollingAverage tps15 = new RollingAverage(60 * 15);
|
||||
@@ -1258,13 +1259,17 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
||||
@@ -1243,13 +1244,17 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
||||
{
|
||||
final long diff = curTime - tickSection;
|
||||
java.math.BigDecimal currentTps = TPS_BASE.divide(new java.math.BigDecimal(diff), 30, java.math.RoundingMode.HALF_UP);
|
||||
@@ -69,10 +69,10 @@ index d894903c3f5c8b12b759896d8dd315a0f4c69d19..688a80485ae28361b993a4de4019ae97
|
||||
lagging = recentTps[0] < net.pl3x.purpur.PurpurConfig.laggingThreshold; // Purpur
|
||||
tickSection = curTime;
|
||||
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
||||
index 895799585e1a6964b709094d4aa4dfe8fe6470d4..d6c1c46e56ad39ec7fde5448120c8750d3ce3fa5 100644
|
||||
index 8a15ed616f10d822dd6c0a144fad084df21c14d1..0229efbb9b8838fc1228d171b19fa057aec27c2c 100644
|
||||
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
||||
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
||||
@@ -2523,6 +2523,7 @@ public final class CraftServer implements Server {
|
||||
@@ -2506,6 +2506,7 @@ public final class CraftServer implements Server {
|
||||
@Override
|
||||
public double[] getTPS() {
|
||||
return new double[] {
|
||||
|
||||
@@ -5,7 +5,7 @@ Subject: [PATCH] Implement elytra settings
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
|
||||
index 2553fe5fa89d353d4e41c04c178eb57174b2750a..71ef80e636ac7c208b362410eaaffa497dd9ceca 100644
|
||||
index 2eea21644321fa07950b44cddfe72c4d8f329702..782c49ebd9574aa68de4693fec20c6130f656c23 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
|
||||
@@ -3297,7 +3297,16 @@ public abstract class LivingEntity extends Entity {
|
||||
@@ -54,10 +54,10 @@ index 543a08f920319a2547258640bafebb1e70af65c4..dd211aa7c4ef1e158933a89898b9e5bc
|
||||
itemStack.shrink(1);
|
||||
} else ((net.minecraft.server.level.ServerPlayer) user).getBukkitEntity().updateInventory();
|
||||
diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java
|
||||
index 47b8b3df98eb775f7e642924fd36005d542a10c6..3bd63474205bf7982af291d973a2a71a8490f20b 100644
|
||||
index 8f0cdf883cdf6825ed53e856b9dc279f3bcd0e1d..7ed8ae3a92d631dcfc155790dbc2fdd4a3e39d1c 100644
|
||||
--- a/src/main/java/net/minecraft/world/item/ItemStack.java
|
||||
+++ b/src/main/java/net/minecraft/world/item/ItemStack.java
|
||||
@@ -542,7 +542,7 @@ public final class ItemStack {
|
||||
@@ -544,7 +544,7 @@ public final class ItemStack {
|
||||
int j;
|
||||
|
||||
if (amount > 0) {
|
||||
@@ -66,7 +66,7 @@ index 47b8b3df98eb775f7e642924fd36005d542a10c6..3bd63474205bf7982af291d973a2a71a
|
||||
int k = 0;
|
||||
|
||||
for (int l = 0; j > 0 && l < amount; ++l) {
|
||||
@@ -596,6 +596,12 @@ public final class ItemStack {
|
||||
@@ -598,6 +598,12 @@ public final class ItemStack {
|
||||
if (this.hurt(amount, entity.getRandom(), entity /*instanceof ServerPlayer ? (ServerPlayer) entity : null*/)) { // Paper - pass LivingEntity for EntityItemDamageEvent
|
||||
breakCallback.accept(entity);
|
||||
Item item = this.getItem();
|
||||
@@ -80,7 +80,7 @@ index 47b8b3df98eb775f7e642924fd36005d542a10c6..3bd63474205bf7982af291d973a2a71a
|
||||
if (this.count == 1 && entity instanceof net.minecraft.world.entity.player.Player) {
|
||||
org.bukkit.craftbukkit.event.CraftEventFactory.callPlayerItemBreakEvent((net.minecraft.world.entity.player.Player) entity, this);
|
||||
diff --git a/src/main/java/net/minecraft/world/item/TridentItem.java b/src/main/java/net/minecraft/world/item/TridentItem.java
|
||||
index 510ed67a7de2b503ab8b01db57ed09ee33b0d825..3f53dc8f250ad3f7616ce7ef0a2353caa0ab1879 100644
|
||||
index 998758be827efbcb7693ed36ab1dffc0ef0369bf..5beaafec0759543d3bddf99028c97d0d005be209 100644
|
||||
--- a/src/main/java/net/minecraft/world/item/TridentItem.java
|
||||
+++ b/src/main/java/net/minecraft/world/item/TridentItem.java
|
||||
@@ -126,6 +126,14 @@ public class TridentItem extends Item implements Vanishable {
|
||||
@@ -5,10 +5,10 @@ Subject: [PATCH] Item entity immunities
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java
|
||||
index 7bb12a30d8b4a817f5a85969c6200306fd45a43d..cf94a78d15873f851bf7d79d8e846c66cf45d646 100644
|
||||
index 3947e1f2823e8d077350b7e781c04a4b46a83939..9656e8f0338568d317d81f0a54e3354652ec7353 100644
|
||||
--- a/src/main/java/net/minecraft/server/level/ChunkMap.java
|
||||
+++ b/src/main/java/net/minecraft/server/level/ChunkMap.java
|
||||
@@ -2283,7 +2283,7 @@ Sections go from 0..16. Now whenever a section is not empty, it can potentially
|
||||
@@ -2179,7 +2179,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
|
||||
|
||||
public class TrackedEntity {
|
||||
|
||||
@@ -18,10 +18,10 @@ index 7bb12a30d8b4a817f5a85969c6200306fd45a43d..cf94a78d15873f851bf7d79d8e846c66
|
||||
private final int range;
|
||||
SectionPos lastSectionPos;
|
||||
diff --git a/src/main/java/net/minecraft/server/level/ServerEntity.java b/src/main/java/net/minecraft/server/level/ServerEntity.java
|
||||
index e158c9bf0fb527105da9dc3f28d88e0ba7337e65..47f5c6726e620072d76f1fa028d7ae51f79cccfb 100644
|
||||
index cc44994147e96e6b3f568921db5366a6ced25a1e..1472268e60159f5ada50ec3659268e82a7c22de0 100644
|
||||
--- a/src/main/java/net/minecraft/server/level/ServerEntity.java
|
||||
+++ b/src/main/java/net/minecraft/server/level/ServerEntity.java
|
||||
@@ -68,7 +68,7 @@ public class ServerEntity {
|
||||
@@ -67,7 +67,7 @@ public class ServerEntity {
|
||||
private boolean wasRiding;
|
||||
private boolean wasOnGround;
|
||||
// CraftBukkit start
|
||||
@@ -31,10 +31,10 @@ index e158c9bf0fb527105da9dc3f28d88e0ba7337e65..47f5c6726e620072d76f1fa028d7ae51
|
||||
public ServerEntity(ServerLevel worldserver, Entity entity, int i, boolean flag, Consumer<Packet<?>> consumer, Set<ServerPlayerConnection> trackedPlayers) {
|
||||
this.trackedPlayers = trackedPlayers;
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/item/ItemEntity.java b/src/main/java/net/minecraft/world/entity/item/ItemEntity.java
|
||||
index 063f3e4c67e6716c9a03dbe4b72eafd32e4f0d53..f3e642e27dc1e122199088dd1e4b3de5fa13180d 100644
|
||||
index 0ac107d7a360a5812a43488c611498d12546eed9..c2b0add36da8ad1bfb3fbfdd180a8606f66b8478 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/item/ItemEntity.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/item/ItemEntity.java
|
||||
@@ -53,6 +53,12 @@ public class ItemEntity extends Entity {
|
||||
@@ -54,6 +54,12 @@ public class ItemEntity extends Entity {
|
||||
public final float bobOffs;
|
||||
private int lastTick = MinecraftServer.currentTick - 1; // CraftBukkit
|
||||
public boolean canMobPickup = true; // Paper
|
||||
@@ -47,7 +47,7 @@ index 063f3e4c67e6716c9a03dbe4b72eafd32e4f0d53..f3e642e27dc1e122199088dd1e4b3de5
|
||||
|
||||
public ItemEntity(EntityType<? extends ItemEntity> type, Level world) {
|
||||
super(type, world);
|
||||
@@ -322,6 +328,16 @@ public class ItemEntity extends Entity {
|
||||
@@ -321,6 +327,16 @@ public class ItemEntity extends Entity {
|
||||
return false;
|
||||
} else if (!this.getItem().getItem().canBeHurtBy(source)) {
|
||||
return false;
|
||||
@@ -64,7 +64,7 @@ index 063f3e4c67e6716c9a03dbe4b72eafd32e4f0d53..f3e642e27dc1e122199088dd1e4b3de5
|
||||
} else {
|
||||
// CraftBukkit start
|
||||
if (org.bukkit.craftbukkit.event.CraftEventFactory.handleNonLivingEntityDamageEvent(this, source, amount)) {
|
||||
@@ -504,6 +520,12 @@ public class ItemEntity extends Entity {
|
||||
@@ -503,6 +519,12 @@ public class ItemEntity extends Entity {
|
||||
com.google.common.base.Preconditions.checkArgument(!stack.isEmpty(), "Cannot drop air"); // CraftBukkit
|
||||
this.getEntityData().set(ItemEntity.DATA_ITEM, stack);
|
||||
this.getEntityData().markDirty(ItemEntity.DATA_ITEM); // CraftBukkit - SPIGOT-4591, must mark dirty
|
||||
@@ -77,7 +77,7 @@ index 063f3e4c67e6716c9a03dbe4b72eafd32e4f0d53..f3e642e27dc1e122199088dd1e4b3de5
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -594,4 +616,17 @@ public class ItemEntity extends Entity {
|
||||
@@ -593,4 +615,17 @@ public class ItemEntity extends Entity {
|
||||
public SoundSource getSoundSource() {
|
||||
return SoundSource.AMBIENT;
|
||||
}
|
||||
@@ -5,10 +5,10 @@ Subject: [PATCH] Add ping command
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/commands/Commands.java b/src/main/java/net/minecraft/commands/Commands.java
|
||||
index dc0d785432b8e511a738bebb5c7335432b69427f..47ee3e70021ce17beea4ee6ac967c3180045b804 100644
|
||||
index 2474594f165aff55d4a08ccf0a602203cc908f65..2778f58a9b506247cbf9abe2b5fe9ab0f84502de 100644
|
||||
--- a/src/main/java/net/minecraft/commands/Commands.java
|
||||
+++ b/src/main/java/net/minecraft/commands/Commands.java
|
||||
@@ -198,6 +198,7 @@ public class Commands {
|
||||
@@ -205,6 +205,7 @@ public class Commands {
|
||||
SetPlayerIdleTimeoutCommand.register(this.dispatcher);
|
||||
StopCommand.register(this.dispatcher);
|
||||
WhitelistCommand.register(this.dispatcher);
|
||||
@@ -5,10 +5,10 @@ Subject: [PATCH] Add demo command
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/commands/Commands.java b/src/main/java/net/minecraft/commands/Commands.java
|
||||
index 47ee3e70021ce17beea4ee6ac967c3180045b804..376768b272f70d1eb45d483c51dec22d91c9d325 100644
|
||||
index 2778f58a9b506247cbf9abe2b5fe9ab0f84502de..eaa24bd6147f161e0a00df91a2375d7f259ce0d2 100644
|
||||
--- a/src/main/java/net/minecraft/commands/Commands.java
|
||||
+++ b/src/main/java/net/minecraft/commands/Commands.java
|
||||
@@ -198,6 +198,7 @@ public class Commands {
|
||||
@@ -205,6 +205,7 @@ public class Commands {
|
||||
SetPlayerIdleTimeoutCommand.register(this.dispatcher);
|
||||
StopCommand.register(this.dispatcher);
|
||||
WhitelistCommand.register(this.dispatcher);
|
||||
@@ -5,10 +5,10 @@ Subject: [PATCH] Add credits command
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/commands/Commands.java b/src/main/java/net/minecraft/commands/Commands.java
|
||||
index 376768b272f70d1eb45d483c51dec22d91c9d325..4308cf798c7f97532ee56369a11afe4dbf7a898f 100644
|
||||
index eaa24bd6147f161e0a00df91a2375d7f259ce0d2..d054bee8c7c6f6bf608252f21b2f5192b59c086c 100644
|
||||
--- a/src/main/java/net/minecraft/commands/Commands.java
|
||||
+++ b/src/main/java/net/minecraft/commands/Commands.java
|
||||
@@ -198,6 +198,7 @@ public class Commands {
|
||||
@@ -205,6 +205,7 @@ public class Commands {
|
||||
SetPlayerIdleTimeoutCommand.register(this.dispatcher);
|
||||
StopCommand.register(this.dispatcher);
|
||||
WhitelistCommand.register(this.dispatcher);
|
||||
@@ -5,7 +5,7 @@ Subject: [PATCH] Configurable jockey options
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/monster/Drowned.java b/src/main/java/net/minecraft/world/entity/monster/Drowned.java
|
||||
index 5c4e028d3a7620af1476f63a8ad000eb94ffb992..b2e3ad40cdc594b13eaf43e71e2e18edd1fbb1b7 100644
|
||||
index c0e1ed8c536a848c99d1a96038f627cc99c627e7..b321ca2b09d9aab8b1b6387774bcfda3b20bc65b 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/monster/Drowned.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/monster/Drowned.java
|
||||
@@ -89,6 +89,21 @@ public class Drowned extends Zombie implements RangedAttackMob {
|
||||
@@ -57,10 +57,10 @@ index 81a3f6c1774b187be96b412dae44be623ce7f6cb..7bb8ef0bb2de9a0b0d5048f8a4089835
|
||||
|
||||
public static boolean checkHuskSpawnRules(EntityType<Husk> type, ServerLevelAccessor world, MobSpawnType spawnReason, BlockPos pos, Random random) {
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/monster/Zombie.java b/src/main/java/net/minecraft/world/entity/monster/Zombie.java
|
||||
index dc16331adb1d02265617af9d19638d9d1a28668d..1341377c6fd5ada85831d46d71a6066e8cc2e5cd 100644
|
||||
index e1e669bd992f105ba7f42312ba70a39f6d044500..f5551d121d4bd633ce8d667433e1def6e2fcbb8e 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java
|
||||
@@ -122,6 +122,18 @@ public class Zombie extends Monster {
|
||||
@@ -119,6 +119,18 @@ public class Zombie extends Monster {
|
||||
public void initAttributes() {
|
||||
this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.drownedMaxHealth);
|
||||
}
|
||||
@@ -79,7 +79,7 @@ index dc16331adb1d02265617af9d19638d9d1a28668d..1341377c6fd5ada85831d46d71a6066e
|
||||
// Purpur end
|
||||
|
||||
@Override
|
||||
@@ -528,19 +540,20 @@ public class Zombie extends Monster {
|
||||
@@ -525,19 +537,20 @@ public class Zombie extends Monster {
|
||||
if (object instanceof Zombie.ZombieGroupData) {
|
||||
Zombie.ZombieGroupData entityzombie_groupdatazombie = (Zombie.ZombieGroupData) object;
|
||||
|
||||
@@ -106,19 +106,19 @@ index dc16331adb1d02265617af9d19638d9d1a28668d..1341377c6fd5ada85831d46d71a6066e
|
||||
Chicken entitychicken1 = (Chicken) EntityType.CHICKEN.create(this.level);
|
||||
|
||||
entitychicken1.moveTo(this.getX(), this.getY(), this.getZ(), this.getYRot(), 0.0F);
|
||||
@@ -548,6 +561,7 @@ public class Zombie extends Monster {
|
||||
@@ -545,6 +558,7 @@ public class Zombie extends Monster {
|
||||
entitychicken1.setChickenJockey(true);
|
||||
this.startRiding(entitychicken1);
|
||||
world.addEntity(entitychicken1, CreatureSpawnEvent.SpawnReason.MOUNT); // CraftBukkit
|
||||
world.addFreshEntity(entitychicken1, CreatureSpawnEvent.SpawnReason.MOUNT); // CraftBukkit
|
||||
+ } // Purpur
|
||||
}
|
||||
}
|
||||
}
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java b/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java
|
||||
index 9c60e3b3e62a29d6898c82a4110ffd4d1c7cb5f2..7fda07f5fa756077dab59de95f15b9197e09581a 100644
|
||||
index 2c93f08b0bb07b90512c317b5583d25c6ea05d82..eb8dc173468f205c7b47915942890fe711e10650 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java
|
||||
@@ -94,6 +94,21 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder {
|
||||
@@ -95,6 +95,21 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder {
|
||||
protected void randomizeReinforcementsChance() {
|
||||
this.getAttribute(net.minecraft.world.entity.ai.attributes.Attributes.SPAWN_REINFORCEMENTS_CHANCE).setBaseValue(this.random.nextDouble() * this.level.purpurConfig.zombieVillagerSpawnReinforcements);
|
||||
}
|
||||
@@ -141,10 +141,10 @@ index 9c60e3b3e62a29d6898c82a4110ffd4d1c7cb5f2..7fda07f5fa756077dab59de95f15b919
|
||||
|
||||
@Override
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java b/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java
|
||||
index cc5bd132bbd40aba8c910695f25a896c5f4fe635..96e727cd703a1da5f60ab07e47b6bc5265b309e4 100644
|
||||
index f30b36b3f1153e1cbd9b8242909d9ba8c995df1d..76f1bbec2b8ebe037de65ee5ec718e17a6081c13 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java
|
||||
@@ -73,6 +73,21 @@ public class ZombifiedPiglin extends Zombie implements NeutralMob {
|
||||
@@ -74,6 +74,21 @@ public class ZombifiedPiglin extends Zombie implements NeutralMob {
|
||||
public void initAttributes() {
|
||||
this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.zombifiedPiglinMaxHealth);
|
||||
}
|
||||
@@ -5,10 +5,10 @@ Subject: [PATCH] Phantoms attracted to crystals and crystals shoot phantoms
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java
|
||||
index b643a2449e329560c936c0a06fb4cc494d0737a7..92e65f3fbc8f5d77bb8cc31e7a7780c2589f4227 100644
|
||||
index d8c4f36ae0e65c6d0398fac80c93b78646bdf6a4..f8863cabad1bd0c3c2c62b8e17612d9559237d68 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java
|
||||
@@ -32,6 +32,12 @@ public class EndCrystal extends Entity {
|
||||
@@ -31,6 +31,12 @@ public class EndCrystal extends Entity {
|
||||
private static final EntityDataAccessor<Boolean> DATA_SHOW_BOTTOM = SynchedEntityData.defineId(EndCrystal.class, EntityDataSerializers.BOOLEAN);
|
||||
public int time;
|
||||
public boolean generatedByDragonFight = false; // Paper - Fix invulnerable end crystals
|
||||
@@ -21,7 +21,7 @@ index b643a2449e329560c936c0a06fb4cc494d0737a7..92e65f3fbc8f5d77bb8cc31e7a7780c2
|
||||
|
||||
public EndCrystal(EntityType<? extends EndCrystal> type, Level world) {
|
||||
super(type, world);
|
||||
@@ -81,7 +87,50 @@ public class EndCrystal extends Entity {
|
||||
@@ -80,7 +86,50 @@ public class EndCrystal extends Entity {
|
||||
// Paper end
|
||||
}
|
||||
|
||||
@@ -73,10 +73,10 @@ index b643a2449e329560c936c0a06fb4cc494d0737a7..92e65f3fbc8f5d77bb8cc31e7a7780c2
|
||||
@Override
|
||||
protected void addAdditionalSaveData(CompoundTag nbt) {
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/monster/Phantom.java b/src/main/java/net/minecraft/world/entity/monster/Phantom.java
|
||||
index 5e71b3d5126d30626fbc9bd4b9eefebd20916e60..c314cb61f2e643de7eb12478d265f0664858f935 100644
|
||||
index 7e0affe953585b19686bb21b31a6a2b9534aba10..b651ff470853c1c6af2f2c56848a002b066802f5 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/monster/Phantom.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/monster/Phantom.java
|
||||
@@ -50,6 +50,7 @@ public class Phantom extends FlyingMob implements Enemy {
|
||||
@@ -49,6 +49,7 @@ public class Phantom extends FlyingMob implements Enemy {
|
||||
Vec3 moveTargetPoint;
|
||||
BlockPos anchorPoint;
|
||||
Phantom.AttackPhase attackPhase;
|
||||
@@ -84,7 +84,7 @@ index 5e71b3d5126d30626fbc9bd4b9eefebd20916e60..c314cb61f2e643de7eb12478d265f066
|
||||
|
||||
public Phantom(EntityType<? extends Phantom> type, Level world) {
|
||||
super(type, world);
|
||||
@@ -117,6 +118,24 @@ public class Phantom extends FlyingMob implements Enemy {
|
||||
@@ -116,6 +117,24 @@ public class Phantom extends FlyingMob implements Enemy {
|
||||
public void initAttributes() {
|
||||
this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.phantomMaxHealth);
|
||||
}
|
||||
@@ -109,7 +109,7 @@ index 5e71b3d5126d30626fbc9bd4b9eefebd20916e60..c314cb61f2e643de7eb12478d265f066
|
||||
// Purpur end
|
||||
|
||||
@Override
|
||||
@@ -131,11 +150,17 @@ public class Phantom extends FlyingMob implements Enemy {
|
||||
@@ -130,11 +149,17 @@ public class Phantom extends FlyingMob implements Enemy {
|
||||
|
||||
@Override
|
||||
protected void registerGoals() {
|
||||
@@ -132,7 +132,7 @@ index 5e71b3d5126d30626fbc9bd4b9eefebd20916e60..c314cb61f2e643de7eb12478d265f066
|
||||
this.targetSelector.addGoal(1, new Phantom.PhantomAttackPlayerTargetGoal());
|
||||
}
|
||||
|
||||
@@ -325,6 +350,124 @@ public class Phantom extends FlyingMob implements Enemy {
|
||||
@@ -324,6 +349,124 @@ public class Phantom extends FlyingMob implements Enemy {
|
||||
private AttackPhase() {}
|
||||
}
|
||||
|
||||
@@ -5,10 +5,10 @@ Subject: [PATCH] Add phantom spawning options
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/level/levelgen/PhantomSpawner.java b/src/main/java/net/minecraft/world/level/levelgen/PhantomSpawner.java
|
||||
index 79504dc3448402e73b09c4232b1fd0488872cf68..300c9f136edace2babea4a574090b1849b2adf76 100644
|
||||
index 1e21d6cf2f03219fb2b7217c9a72bdd83c2146f7..dad5d3c754395b39e96be1e35a99c8bf4b1c573c 100644
|
||||
--- a/src/main/java/net/minecraft/world/level/levelgen/PhantomSpawner.java
|
||||
+++ b/src/main/java/net/minecraft/world/level/levelgen/PhantomSpawner.java
|
||||
@@ -43,8 +43,8 @@ public class PhantomSpawner implements CustomSpawner {
|
||||
@@ -41,8 +41,8 @@ public class PhantomSpawner implements CustomSpawner {
|
||||
if (this.nextTick > 0) {
|
||||
return 0;
|
||||
} else {
|
||||
@@ -19,7 +19,7 @@ index 79504dc3448402e73b09c4232b1fd0488872cf68..300c9f136edace2babea4a574090b184
|
||||
return 0;
|
||||
} else {
|
||||
int i = 0;
|
||||
@@ -56,22 +56,22 @@ public class PhantomSpawner implements CustomSpawner {
|
||||
@@ -54,22 +54,22 @@ public class PhantomSpawner implements CustomSpawner {
|
||||
if (!entityhuman.isSpectator() && (!world.paperConfig.phantomIgnoreCreative || !entityhuman.isCreative())) { // Paper
|
||||
BlockPos blockposition = entityhuman.blockPosition();
|
||||
|
||||
@@ -30,7 +30,7 @@ index 79504dc3448402e73b09c4232b1fd0488872cf68..300c9f136edace2babea4a574090b184
|
||||
- if (difficultydamagescaler.isHarderThan(random.nextFloat() * 3.0F)) {
|
||||
+ if (difficultydamagescaler.isHarderThan(random.nextFloat() * (float) world.purpurConfig.phantomSpawnLocalDifficultyChance)) { // Purpur
|
||||
ServerStatsCounter serverstatisticmanager = ((ServerPlayer) entityhuman).getStats();
|
||||
int j = Mth.clamp(serverstatisticmanager.getValue(Stats.CUSTOM.get(Stats.TIME_SINCE_REST)), 1, Integer.MAX_VALUE);
|
||||
int j = Mth.clamp(serverstatisticmanager.getValue(Stats.CUSTOM.get(Stats.TIME_SINCE_REST)), (int) 1, Integer.MAX_VALUE);
|
||||
boolean flag2 = true;
|
||||
|
||||
- if (random.nextInt(j) >= 72000) {
|
||||
@@ -40,7 +40,7 @@ index 79504dc3448402e73b09c4232b1fd0488872cf68..300c9f136edace2babea4a574090b184
|
||||
BlockState iblockdata = world.getBlockState(blockposition1);
|
||||
FluidState fluid = world.getFluidState(blockposition1);
|
||||
|
||||
if (NaturalSpawner.isValidEmptySpawnBlock((BlockGetter) world, blockposition1, iblockdata, fluid, EntityType.PHANTOM)) {
|
||||
if (NaturalSpawner.isValidEmptySpawnBlock(world, blockposition1, iblockdata, fluid, EntityType.PHANTOM)) {
|
||||
SpawnGroupData groupdataentity = null;
|
||||
- int k = 1 + random.nextInt(difficultydamagescaler.getDifficulty().getId() + 1);
|
||||
+ int k = world.purpurConfig.phantomSpawnMinPerAttempt + world.random.nextInt((world.purpurConfig.phantomSpawnMaxPerAttempt < 0 ? difficultydamagescaler.getDifficulty().getId() : world.purpurConfig.phantomSpawnMaxPerAttempt - world.purpurConfig.phantomSpawnMinPerAttempt) + 1); // Purpur
|
||||
@@ -5,10 +5,10 @@ Subject: [PATCH] Implement bed explosion options
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/level/block/BedBlock.java b/src/main/java/net/minecraft/world/level/block/BedBlock.java
|
||||
index e3ff04fe21761db65fb03c5e58ecd5823f0507c6..6362c9dcfbc980a0591ac6dfebe45e475b73d020 100644
|
||||
index 20c0030d566012146021613325c6a979f392740e..340e5dee8bf5d8a865c19a8fe63399ae08bf3612 100644
|
||||
--- a/src/main/java/net/minecraft/world/level/block/BedBlock.java
|
||||
+++ b/src/main/java/net/minecraft/world/level/block/BedBlock.java
|
||||
@@ -97,7 +97,7 @@ public class BedBlock extends HorizontalDirectionalBlock implements EntityBlock
|
||||
@@ -96,7 +96,7 @@ public class BedBlock extends HorizontalDirectionalBlock implements EntityBlock
|
||||
world.removeBlock(blockposition1, false);
|
||||
}
|
||||
|
||||
@@ -17,7 +17,7 @@ index e3ff04fe21761db65fb03c5e58ecd5823f0507c6..6362c9dcfbc980a0591ac6dfebe45e47
|
||||
return InteractionResult.SUCCESS;
|
||||
} else if ((Boolean) state.getValue(BedBlock.OCCUPIED)) {
|
||||
if (!this.kickVillagerOutOfBed(world, pos)) {
|
||||
@@ -146,7 +146,7 @@ public class BedBlock extends HorizontalDirectionalBlock implements EntityBlock
|
||||
@@ -145,7 +145,7 @@ public class BedBlock extends HorizontalDirectionalBlock implements EntityBlock
|
||||
world.removeBlock(blockposition1, false);
|
||||
}
|
||||
|
||||
@@ -5,7 +5,7 @@ Subject: [PATCH] Implement respawn anchor explosion options
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/level/block/RespawnAnchorBlock.java b/src/main/java/net/minecraft/world/level/block/RespawnAnchorBlock.java
|
||||
index 0a5d563700c9f806139001181f01fa9d0111f792..1aae3d27ed6c0433312502a59fe1eb70b7d14ac3 100644
|
||||
index 07e893f1859abe3c2a765694c21309d60346ca82..0fabe3ec1e9d7dae952db1f1e3dd3af879f0bc54 100644
|
||||
--- a/src/main/java/net/minecraft/world/level/block/RespawnAnchorBlock.java
|
||||
+++ b/src/main/java/net/minecraft/world/level/block/RespawnAnchorBlock.java
|
||||
@@ -120,7 +120,7 @@ public class RespawnAnchorBlock extends Block {
|
||||
@@ -5,19 +5,19 @@ Subject: [PATCH] Add allow water in end world option
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/item/BucketItem.java b/src/main/java/net/minecraft/world/item/BucketItem.java
|
||||
index 69c992ef0c526adf35907de7726832605187beb6..6356d5fdb349063071c9119ae776c22e0b321d77 100644
|
||||
index b5a5c56fbb66c17dd2e2d1f4d69d2b1826cd4951..c6a141f220ac2405a3f93ba6100b4bf3d9e46482 100644
|
||||
--- a/src/main/java/net/minecraft/world/item/BucketItem.java
|
||||
+++ b/src/main/java/net/minecraft/world/item/BucketItem.java
|
||||
@@ -170,7 +170,7 @@ public class BucketItem extends Item implements DispensibleContainerItem {
|
||||
@@ -168,7 +168,7 @@ public class BucketItem extends Item implements DispensibleContainerItem {
|
||||
// CraftBukkit end
|
||||
if (!flag1) {
|
||||
return movingobjectpositionblock != null && this.emptyContents(entityhuman, world, movingobjectpositionblock.getBlockPos().relative(movingobjectpositionblock.getDirection()), (BlockHitResult) null, enumdirection, clicked, itemstack, enumhand); // CraftBukkit // Paper - add enumhand
|
||||
- } else if (world.dimensionType().ultraWarm() && this.content.is((Tag) FluidTags.WATER)) {
|
||||
+ } else if ((world.isNether() || (world.isTheEnd() && !net.pl3x.purpur.PurpurConfig.allowWaterPlacementInTheEnd)) && this.content.is((Tag) FluidTags.WATER)) {
|
||||
return movingobjectpositionblock != null && this.emptyContents(entityhuman, world, movingobjectpositionblock.getBlockPos().relative(movingobjectpositionblock.getDirection()), (BlockHitResult) null, enumdirection, clicked, itemstack, enumhand); // CraftBukkit // Paper
|
||||
- } else if (world.dimensionType().ultraWarm() && this.content.is(FluidTags.WATER)) {
|
||||
+ } else if ((world.isNether() || (world.isTheEnd() && !net.pl3x.purpur.PurpurConfig.allowWaterPlacementInTheEnd)) && this.content.is(FluidTags.WATER)) { // Purpur
|
||||
int i = blockposition.getX();
|
||||
int j = blockposition.getY();
|
||||
int k = blockposition.getZ();
|
||||
@@ -178,7 +178,7 @@ public class BucketItem extends Item implements DispensibleContainerItem {
|
||||
@@ -176,7 +176,7 @@ public class BucketItem extends Item implements DispensibleContainerItem {
|
||||
world.playSound(entityhuman, blockposition, SoundEvents.FIRE_EXTINGUISH, SoundSource.BLOCKS, 0.5F, 2.6F + (world.random.nextFloat() - world.random.nextFloat()) * 0.8F);
|
||||
|
||||
for (int l = 0; l < 8; ++l) {
|
||||
@@ -27,12 +27,12 @@ index 69c992ef0c526adf35907de7726832605187beb6..6356d5fdb349063071c9119ae776c22e
|
||||
|
||||
return true;
|
||||
diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java
|
||||
index c44dc4cefdd74437a39283800aa6e93372525fbd..a1d9e9caed9e922cc65512a36019a0993bf549c6 100644
|
||||
index 73ebe9d8da0dbfb9d4d8f041d8b911d4931f3d04..112078739e234ee7b676a499fe33e5b2f505526b 100644
|
||||
--- a/src/main/java/net/minecraft/world/level/Level.java
|
||||
+++ b/src/main/java/net/minecraft/world/level/Level.java
|
||||
@@ -1486,4 +1486,14 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
|
||||
}
|
||||
|
||||
@@ -1493,4 +1493,14 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
|
||||
public boolean shouldDelayFallingBlockEntityRemoval(Entity.RemovalReason reason) {
|
||||
return false;
|
||||
}
|
||||
+
|
||||
+ // Purpur start
|
||||
@@ -46,10 +46,10 @@ index c44dc4cefdd74437a39283800aa6e93372525fbd..a1d9e9caed9e922cc65512a36019a099
|
||||
+ // Purpur end
|
||||
}
|
||||
diff --git a/src/main/java/net/minecraft/world/level/block/IceBlock.java b/src/main/java/net/minecraft/world/level/block/IceBlock.java
|
||||
index df4f2c729f09d5229553308e4876f29de648543f..f2b0278679fa649bbc2904660e0dc9ab4ad54542 100644
|
||||
index 2676cddca511ea775766cec0001269407599df6e..096d6a07cd44cc674b53e5d3759e44f26b654bf1 100644
|
||||
--- a/src/main/java/net/minecraft/world/level/block/IceBlock.java
|
||||
+++ b/src/main/java/net/minecraft/world/level/block/IceBlock.java
|
||||
@@ -27,7 +27,7 @@ public class IceBlock extends HalfTransparentBlock {
|
||||
@@ -26,7 +26,7 @@ public class IceBlock extends HalfTransparentBlock {
|
||||
public void playerDestroy(Level world, Player player, BlockPos pos, BlockState state, @Nullable BlockEntity blockEntity, ItemStack stack) {
|
||||
super.playerDestroy(world, player, pos, state, blockEntity, stack);
|
||||
if (EnchantmentHelper.getItemEnchantmentLevel(Enchantments.SILK_TOUCH, stack) == 0) {
|
||||
@@ -58,7 +58,7 @@ index df4f2c729f09d5229553308e4876f29de648543f..f2b0278679fa649bbc2904660e0dc9ab
|
||||
world.removeBlock(pos, false);
|
||||
return;
|
||||
}
|
||||
@@ -55,7 +55,7 @@ public class IceBlock extends HalfTransparentBlock {
|
||||
@@ -54,7 +54,7 @@ public class IceBlock extends HalfTransparentBlock {
|
||||
return;
|
||||
}
|
||||
// CraftBukkit end
|
||||
@@ -5,30 +5,30 @@ Subject: [PATCH] Allow color codes in books
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
||||
index 367876813fcf772baf6542e1422b5c9572056a18..ba6a674c2b18108390c7b9d2bb313a603d9909b4 100644
|
||||
index 7047a77b6f6b9b15145dd8c54e978d81b1f4e998..3e5bb0075766c826995807b4b16cf12f3b06a755 100644
|
||||
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
||||
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
||||
@@ -1219,13 +1219,16 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser
|
||||
@@ -1185,13 +1185,16 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser
|
||||
itemstack1.setTag(nbttagcompound.copy());
|
||||
}
|
||||
|
||||
+ // Purpur start
|
||||
+ boolean hasPerm = getCraftPlayer().hasPermission("purpur.book.color.edit") || getCraftPlayer().hasPermission("purpur.book.color.sign"); // Purpur
|
||||
itemstack1.addTagElement("author", (Tag) StringTag.valueOf(this.player.getName().getString()));
|
||||
itemstack1.addTagElement("author", StringTag.valueOf(this.player.getName().getString()));
|
||||
if (this.player.isTextFilteringEnabled()) {
|
||||
- itemstack1.addTagElement("title", (Tag) StringTag.valueOf(title.getFiltered()));
|
||||
+ itemstack1.addTagElement("title", (Tag) StringTag.valueOf(color(title.getFiltered(), hasPerm)));
|
||||
- itemstack1.addTagElement("title", StringTag.valueOf(title.getFiltered()));
|
||||
+ itemstack1.addTagElement("title", StringTag.valueOf(color(title.getFiltered(), hasPerm)));
|
||||
} else {
|
||||
- itemstack1.addTagElement("filtered_title", (Tag) StringTag.valueOf(title.getFiltered()));
|
||||
- itemstack1.addTagElement("title", (Tag) StringTag.valueOf(title.getRaw()));
|
||||
+ itemstack1.addTagElement("filtered_title", (Tag) StringTag.valueOf(color(title.getFiltered(), hasPerm)));
|
||||
+ itemstack1.addTagElement("title", (Tag) StringTag.valueOf(color(title.getRaw(), hasPerm)));
|
||||
- itemstack1.addTagElement("filtered_title", StringTag.valueOf(title.getFiltered()));
|
||||
- itemstack1.addTagElement("title", StringTag.valueOf(title.getRaw()));
|
||||
+ itemstack1.addTagElement("filtered_title", StringTag.valueOf(color(title.getFiltered(), hasPerm)));
|
||||
+ itemstack1.addTagElement("title", StringTag.valueOf(color(title.getRaw(), hasPerm)));
|
||||
}
|
||||
+ // Purpur end
|
||||
|
||||
this.updateBookPages(pages, (s) -> {
|
||||
return Component.Serializer.toJson((Component) (new TextComponent(s)));
|
||||
@@ -1237,10 +1240,13 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser
|
||||
return Component.Serializer.toJson(new TextComponent(s));
|
||||
@@ -1203,10 +1206,13 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser
|
||||
private void updateBookPages(List<TextFilter.FilteredText> list, UnaryOperator<String> unaryoperator, ItemStack itemstack, int slot, ItemStack handItem) { // CraftBukkit
|
||||
ListTag nbttaglist = new ListTag();
|
||||
|
||||
@@ -44,7 +44,7 @@ index 367876813fcf772baf6542e1422b5c9572056a18..ba6a674c2b18108390c7b9d2bb313a60
|
||||
|
||||
Objects.requireNonNull(nbttaglist);
|
||||
stream.forEach(nbttaglist::add);
|
||||
@@ -1250,10 +1256,10 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser
|
||||
@@ -1216,10 +1222,10 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser
|
||||
|
||||
for (int j = list.size(); i < j; ++i) {
|
||||
TextFilter.FilteredText itextfilter_a = (TextFilter.FilteredText) list.get(i);
|
||||
@@ -57,7 +57,7 @@ index 367876813fcf772baf6542e1422b5c9572056a18..ba6a674c2b18108390c7b9d2bb313a60
|
||||
|
||||
if (!s.equals(s1)) {
|
||||
nbttagcompound.putString(String.valueOf(i), (String) unaryoperator.apply(s1));
|
||||
@@ -1269,6 +1275,16 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser
|
||||
@@ -1235,6 +1241,16 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser
|
||||
this.player.getInventory().setItem(slot, CraftEventFactory.handleEditBookEvent(player, slot, handItem, itemstack)); // CraftBukkit // Paper - Don't ignore result (see other callsite for handleEditBookEvent)
|
||||
}
|
||||
|
||||
@@ -5,10 +5,10 @@ Subject: [PATCH] Entity lifespan
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java
|
||||
index 7be2798a1b190b44445e3abd55c0598e3432bf27..a268895fa22b81c164837a731d4bde51a68190c4 100644
|
||||
index d936cf11ece70d528e5a0d1176fdbafd9b8f9d93..198fe041d20e7ed21b47d5c22dcc121a8d388623 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/Mob.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/Mob.java
|
||||
@@ -126,6 +126,7 @@ public abstract class Mob extends LivingEntity {
|
||||
@@ -129,6 +129,7 @@ public abstract class Mob extends LivingEntity {
|
||||
private BlockPos restrictCenter;
|
||||
private float restrictRadius;
|
||||
|
||||
@@ -16,7 +16,7 @@ index 7be2798a1b190b44445e3abd55c0598e3432bf27..a268895fa22b81c164837a731d4bde51
|
||||
public boolean aware = true; // CraftBukkit
|
||||
|
||||
protected Mob(EntityType<? extends Mob> type, Level world) {
|
||||
@@ -283,6 +284,7 @@ public abstract class Mob extends LivingEntity {
|
||||
@@ -286,6 +287,7 @@ public abstract class Mob extends LivingEntity {
|
||||
entityliving = null;
|
||||
}
|
||||
}
|
||||
@@ -24,7 +24,7 @@ index 7be2798a1b190b44445e3abd55c0598e3432bf27..a268895fa22b81c164837a731d4bde51
|
||||
this.target = entityliving;
|
||||
return true;
|
||||
// CraftBukkit end
|
||||
@@ -327,9 +329,35 @@ public abstract class Mob extends LivingEntity {
|
||||
@@ -330,9 +332,35 @@ public abstract class Mob extends LivingEntity {
|
||||
this.playAmbientSound();
|
||||
}
|
||||
|
||||
@@ -60,7 +60,7 @@ index 7be2798a1b190b44445e3abd55c0598e3432bf27..a268895fa22b81c164837a731d4bde51
|
||||
@Override
|
||||
protected void playHurtSound(DamageSource source) {
|
||||
this.resetAmbientSoundTime();
|
||||
@@ -513,6 +541,7 @@ public abstract class Mob extends LivingEntity {
|
||||
@@ -516,6 +544,7 @@ public abstract class Mob extends LivingEntity {
|
||||
}
|
||||
|
||||
nbt.putBoolean("Bukkit.Aware", this.aware); // CraftBukkit
|
||||
@@ -68,7 +68,7 @@ index 7be2798a1b190b44445e3abd55c0598e3432bf27..a268895fa22b81c164837a731d4bde51
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -583,6 +612,11 @@ public abstract class Mob extends LivingEntity {
|
||||
@@ -586,6 +615,11 @@ public abstract class Mob extends LivingEntity {
|
||||
this.aware = nbt.getBoolean("Bukkit.Aware");
|
||||
}
|
||||
// CraftBukkit end
|
||||
@@ -80,7 +80,7 @@ index 7be2798a1b190b44445e3abd55c0598e3432bf27..a268895fa22b81c164837a731d4bde51
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -1590,6 +1624,7 @@ public abstract class Mob extends LivingEntity {
|
||||
@@ -1605,6 +1639,7 @@ public abstract class Mob extends LivingEntity {
|
||||
this.setLastHurtMob(target);
|
||||
}
|
||||
|
||||
@@ -5,10 +5,10 @@ Subject: [PATCH] Add option to teleport to spawn if outside world border
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
||||
index c488f0c2db28b5eff7209fe900ca27408fc1ce0e..dd3b3e4821dbd3a1fb73ddcc31c022175c18708d 100644
|
||||
index 11ebb94eb26836231cdd81514a5639e756876e09..48f19d3cfbf310344bf062b269a5f5eecc2887a5 100644
|
||||
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
||||
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
||||
@@ -2519,5 +2519,25 @@ public class ServerPlayer extends Player {
|
||||
@@ -2538,5 +2538,25 @@ public class ServerPlayer extends Player {
|
||||
}
|
||||
// CraftBukkit end
|
||||
|
||||
@@ -35,10 +35,10 @@ index c488f0c2db28b5eff7209fe900ca27408fc1ce0e..dd3b3e4821dbd3a1fb73ddcc31c02217
|
||||
+ // Purpur end
|
||||
}
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
|
||||
index 71ef80e636ac7c208b362410eaaffa497dd9ceca..63936445bc9005c11bbe669e29897786963e7626 100644
|
||||
index 782c49ebd9574aa68de4693fec20c6130f656c23..17828733fff18cb3159dd75280aa1f1b32ac088f 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
|
||||
@@ -45,6 +45,7 @@ import net.minecraft.network.syncher.EntityDataAccessor;
|
||||
@@ -43,6 +43,7 @@ import net.minecraft.network.syncher.EntityDataAccessor;
|
||||
import net.minecraft.network.syncher.EntityDataSerializers;
|
||||
import net.minecraft.network.syncher.SynchedEntityData;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
@@ -46,7 +46,7 @@ index 71ef80e636ac7c208b362410eaaffa497dd9ceca..63936445bc9005c11bbe669e29897786
|
||||
import net.minecraft.server.level.ServerChunkCache;
|
||||
import net.minecraft.server.level.ServerLevel;
|
||||
import net.minecraft.server.level.ServerPlayer;
|
||||
@@ -407,6 +408,7 @@ public abstract class LivingEntity extends Entity {
|
||||
@@ -408,6 +409,7 @@ public abstract class LivingEntity extends Entity {
|
||||
double d1 = this.level.getWorldBorder().getDamagePerBlock();
|
||||
|
||||
if (d1 > 0.0D) {
|
||||
@@ -25,7 +25,7 @@ index 213950f1d36c504824d0053843c3fe869f9eed84..1c1a1ed14a1e2a80b3a26cb990b25779
|
||||
|
||||
public boolean spiderRidable = false;
|
||||
diff --git a/src/main/java/org/spigotmc/ActivationRange.java b/src/main/java/org/spigotmc/ActivationRange.java
|
||||
index 12ffca6a545e4af5c66ecd8b15d9d8e20a6327c1..a42a96819abe9651ea31a6f869d0017303a17323 100644
|
||||
index 7e1bc869299cd2f382f05bb814946e6841cc845e..f71db0f2d37a9f813d188dc2d036fae939aa6db7 100644
|
||||
--- a/src/main/java/org/spigotmc/ActivationRange.java
|
||||
+++ b/src/main/java/org/spigotmc/ActivationRange.java
|
||||
@@ -14,6 +14,7 @@ import net.minecraft.world.entity.ambient.AmbientCreature;
|
||||
@@ -5,10 +5,10 @@ Subject: [PATCH] Phantoms burn in light
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/monster/Phantom.java b/src/main/java/net/minecraft/world/entity/monster/Phantom.java
|
||||
index c314cb61f2e643de7eb12478d265f0664858f935..789224c6285cde2009e000d98e190c36459f04e8 100644
|
||||
index b651ff470853c1c6af2f2c56848a002b066802f5..edb28f9424af0d1973231729785b6ec67b599dbd 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/monster/Phantom.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/monster/Phantom.java
|
||||
@@ -51,6 +51,7 @@ public class Phantom extends FlyingMob implements Enemy {
|
||||
@@ -50,6 +50,7 @@ public class Phantom extends FlyingMob implements Enemy {
|
||||
BlockPos anchorPoint;
|
||||
Phantom.AttackPhase attackPhase;
|
||||
Vec3 crystalPosition; // Purpur
|
||||
@@ -16,7 +16,7 @@ index c314cb61f2e643de7eb12478d265f0664858f935..789224c6285cde2009e000d98e190c36
|
||||
|
||||
public Phantom(EntityType<? extends Phantom> type, Level world) {
|
||||
super(type, world);
|
||||
@@ -230,7 +231,7 @@ public class Phantom extends FlyingMob implements Enemy {
|
||||
@@ -229,7 +230,7 @@ public class Phantom extends FlyingMob implements Enemy {
|
||||
|
||||
@Override
|
||||
public void aiStep() {
|
||||
@@ -25,7 +25,7 @@ index c314cb61f2e643de7eb12478d265f0664858f935..789224c6285cde2009e000d98e190c36
|
||||
this.setSecondsOnFire(8);
|
||||
}
|
||||
|
||||
@@ -630,6 +631,12 @@ public class Phantom extends FlyingMob implements Enemy {
|
||||
@@ -633,6 +634,12 @@ public class Phantom extends FlyingMob implements Enemy {
|
||||
return false;
|
||||
} else if (!entityliving.isAlive()) {
|
||||
return false;
|
||||
@@ -35,16 +35,16 @@ index c314cb61f2e643de7eb12478d265f0664858f935..789224c6285cde2009e000d98e190c36
|
||||
+ } else if (level.purpurConfig.phantomIgnorePlayersWithTorch && (TORCH.test(entityliving.getItemInHand(net.minecraft.world.InteractionHand.MAIN_HAND)) || TORCH.test(entityliving.getItemInHand(net.minecraft.world.InteractionHand.OFF_HAND)))) {
|
||||
+ return false;
|
||||
+ // Purpur end
|
||||
} else if (entityliving instanceof Player && (((Player) entityliving).isSpectator() || ((Player) entityliving).isCreative())) {
|
||||
return false;
|
||||
} else if (!this.canUse()) {
|
||||
@@ -767,6 +774,7 @@ public class Phantom extends FlyingMob implements Enemy {
|
||||
this.nextScanTick = 60;
|
||||
List<Player> list = Phantom.this.level.getNearbyPlayers(this.attackTargeting, (LivingEntity) Phantom.this, Phantom.this.getBoundingBox().inflate(16.0D, 64.0D, 16.0D));
|
||||
} else {
|
||||
if (entityliving instanceof Player) {
|
||||
Player entityhuman = (Player) entityliving;
|
||||
@@ -778,6 +785,7 @@ public class Phantom extends FlyingMob implements Enemy {
|
||||
this.nextScanTick = reducedTickDelay(60);
|
||||
List<Player> list = Phantom.this.level.getNearbyPlayers(this.attackTargeting, Phantom.this, Phantom.this.getBoundingBox().inflate(16.0D, 64.0D, 16.0D));
|
||||
|
||||
+ if (level.purpurConfig.phantomIgnorePlayersWithTorch) list.removeIf(human -> TORCH.test(human.getItemInHand(net.minecraft.world.InteractionHand.MAIN_HAND)) || TORCH.test(human.getItemInHand(net.minecraft.world.InteractionHand.OFF_HAND)));// Purpur
|
||||
if (!list.isEmpty()) {
|
||||
list.sort(Comparator.<Player, Double>comparing(Entity::getY).reversed()); // Paper - remap fix
|
||||
list.sort(Comparator.comparing((Entity e) -> { return e.getY(); }).reversed()); // CraftBukkit - decompile error
|
||||
Iterator iterator = list.iterator();
|
||||
diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
||||
index 1c1a1ed14a1e2a80b3a26cb990b2577904d73b0b..f06fb11df26f7a7e3fdb1f7ce21aa67e3ed5a07d 100644
|
||||
@@ -5,10 +5,10 @@ Subject: [PATCH] Configurable villager breeding
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java
|
||||
index f5a24c2be1c9c4148594130107981ad7434bb835..c942bcedcfb260141589465105091c67d6e762c9 100644
|
||||
index d195212838e253d7a479a89c6650bb008c5daadd..145607300ed953e88b0f9fc1fc61bc34a6c92f84 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/npc/Villager.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java
|
||||
@@ -751,7 +751,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
|
||||
@@ -754,7 +754,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
|
||||
|
||||
@Override
|
||||
public boolean canBreed() {
|
||||
@@ -5,13 +5,13 @@ Subject: [PATCH] Redstone deactivates spawners
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/level/BaseSpawner.java b/src/main/java/net/minecraft/world/level/BaseSpawner.java
|
||||
index 569cef8fcb1e3e1e8b66dad4fa9b956b44542bf1..53a4faa154e1da8dc37b2adec1a5b74c2e1de4b9 100644
|
||||
index 03726227fdd60e9cf77213d50184abff438e01ef..76979991d2ded84161e8a0fc72cbb2d2c3c6c55e 100644
|
||||
--- a/src/main/java/net/minecraft/world/level/BaseSpawner.java
|
||||
+++ b/src/main/java/net/minecraft/world/level/BaseSpawner.java
|
||||
@@ -78,6 +78,7 @@ public abstract class BaseSpawner {
|
||||
@@ -52,6 +52,7 @@ public abstract class BaseSpawner {
|
||||
}
|
||||
|
||||
public boolean isNearPlayer(Level world, BlockPos pos) { // Paper private->public
|
||||
public boolean isNearPlayer(Level world, BlockPos pos) {
|
||||
+ if (world.purpurConfig.spawnerDeactivateByRedstone && world.hasNeighborSignal(pos)) return false; // Purpur
|
||||
return world.isAffectsSpawningPlayerNearby((double) pos.getX() + 0.5D, (double) pos.getY() + 0.5D, (double) pos.getZ() + 0.5D, (double) this.requiredPlayerRange); // Paper
|
||||
}
|
||||
@@ -5,10 +5,10 @@ Subject: [PATCH] Totems work in inventory
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
|
||||
index 63936445bc9005c11bbe669e29897786963e7626..f23b12206e762a52879ba800353638b536e3a2f1 100644
|
||||
index 17828733fff18cb3159dd75280aa1f1b32ac088f..4904abec73580eee50c12a8edcb6e743805b018e 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
|
||||
@@ -1517,6 +1517,19 @@ public abstract class LivingEntity extends Entity {
|
||||
@@ -1512,6 +1512,19 @@ public abstract class LivingEntity extends Entity {
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,7 +5,7 @@ Subject: [PATCH] Add vindicator johnny spawn chance
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/monster/Vindicator.java b/src/main/java/net/minecraft/world/entity/monster/Vindicator.java
|
||||
index 9b4a20a78f24d4b05fefbf2a7d05686ef9cc8adb..f65a997db7ee0d8e06dfe7cf41dd2231e67b1a2f 100644
|
||||
index 730fd18cd9dc334fe527283a2ba5e5259fbfead5..c611dd58a7697093087c6d2c3b47cf85a1400722 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/monster/Vindicator.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/monster/Vindicator.java
|
||||
@@ -7,6 +7,7 @@ import java.util.function.Predicate;
|
||||
@@ -5,7 +5,7 @@ Subject: [PATCH] Add option to disable certain block updates
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/level/block/ChorusPlantBlock.java b/src/main/java/net/minecraft/world/level/block/ChorusPlantBlock.java
|
||||
index bdd3369ac1b5386642d706921e5b2c94450ae96b..3ce2146099ca55b1ac96c02fdb95712a0becf43f 100644
|
||||
index 2c29c125edac43cdf13da8eababe60fb7a87df15..8646d36b0a48b0d0cdfeab8e52a567b70aa0eff3 100644
|
||||
--- a/src/main/java/net/minecraft/world/level/block/ChorusPlantBlock.java
|
||||
+++ b/src/main/java/net/minecraft/world/level/block/ChorusPlantBlock.java
|
||||
@@ -21,6 +21,7 @@ public class ChorusPlantBlock extends PipeBlock {
|
||||
@@ -22,7 +22,7 @@ index bdd3369ac1b5386642d706921e5b2c94450ae96b..3ce2146099ca55b1ac96c02fdb95712a
|
||||
public BlockState updateShape(BlockState state, Direction direction, BlockState neighborState, LevelAccessor world, BlockPos pos, BlockPos neighborPos) {
|
||||
+ if (net.pl3x.purpur.PurpurConfig.disableChorusPlantUpdates) return state; // Purpur
|
||||
if (!state.canSurvive(world, pos)) {
|
||||
world.getBlockTicks().scheduleTick(pos, this, 1);
|
||||
world.scheduleTick(pos, this, 1);
|
||||
return super.updateShape(state, direction, neighborState, world, pos, neighborPos);
|
||||
diff --git a/src/main/java/net/minecraft/world/level/block/HugeMushroomBlock.java b/src/main/java/net/minecraft/world/level/block/HugeMushroomBlock.java
|
||||
index 3c6d97b51c6fec130b80e5965afa2c49d48843c9..174d16ae5c45dd3a4c9b4cc58b36121bef38d9cc 100644
|
||||
@@ -99,10 +99,10 @@ index 3c6d97b51c6fec130b80e5965afa2c49d48843c9..174d16ae5c45dd3a4c9b4cc58b36121b
|
||||
|
||||
@Override
|
||||
diff --git a/src/main/java/net/minecraft/world/level/block/NoteBlock.java b/src/main/java/net/minecraft/world/level/block/NoteBlock.java
|
||||
index f8e58d9f71703139a736d93e7f1996e027a29444..59ae3bb34678cdb5241f691915c96d6568363d3b 100644
|
||||
index 16e11e31077f160198e0b04abdfeabb97ed20c6f..0512b3701a3bf33891ab6281355c07af6be5b9c1 100644
|
||||
--- a/src/main/java/net/minecraft/world/level/block/NoteBlock.java
|
||||
+++ b/src/main/java/net/minecraft/world/level/block/NoteBlock.java
|
||||
@@ -35,11 +35,13 @@ public class NoteBlock extends Block {
|
||||
@@ -34,11 +34,13 @@ public class NoteBlock extends Block {
|
||||
|
||||
@Override
|
||||
public BlockState getStateForPlacement(BlockPlaceContext ctx) {
|
||||
@@ -116,7 +116,7 @@ index f8e58d9f71703139a736d93e7f1996e027a29444..59ae3bb34678cdb5241f691915c96d65
|
||||
return direction == Direction.DOWN ? (BlockState) state.setValue(NoteBlock.INSTRUMENT, NoteBlockInstrument.byState(neighborState)) : super.updateShape(state, direction, neighborState, world, pos, neighborPos);
|
||||
}
|
||||
|
||||
@@ -53,6 +55,7 @@ public class NoteBlock extends Block {
|
||||
@@ -52,6 +54,7 @@ public class NoteBlock extends Block {
|
||||
state = world.getBlockState(pos); // CraftBukkit - SPIGOT-5617: update in case changed in event
|
||||
}
|
||||
|
||||
@@ -5,21 +5,21 @@ Subject: [PATCH] Dispensers place anvils option
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/core/dispenser/DispenseItemBehavior.java b/src/main/java/net/minecraft/core/dispenser/DispenseItemBehavior.java
|
||||
index 915c68888963b879bf74dc67cc6ffb174228f9e4..c507e60a4836d9cfa5e076841b9b7375ea9ac997 100644
|
||||
index 59db245fe11384282af84ec1d5be08ab0e9484ca..a08eebaa08a75be4e7e8f6d560740ea18151cc93 100644
|
||||
--- a/src/main/java/net/minecraft/core/dispenser/DispenseItemBehavior.java
|
||||
+++ b/src/main/java/net/minecraft/core/dispenser/DispenseItemBehavior.java
|
||||
@@ -53,6 +53,7 @@ import net.minecraft.world.level.BlockGetter;
|
||||
import net.minecraft.world.level.ItemLike;
|
||||
@@ -50,6 +50,7 @@ import net.minecraft.world.item.SpawnEggItem;
|
||||
import net.minecraft.world.item.alchemy.PotionUtils;
|
||||
import net.minecraft.world.item.alchemy.Potions;
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.minecraft.world.level.LevelReader;
|
||||
+import net.minecraft.world.level.block.AnvilBlock;
|
||||
import net.minecraft.world.level.block.BaseFireBlock;
|
||||
import net.minecraft.world.level.block.BeehiveBlock;
|
||||
import net.minecraft.world.level.block.Block;
|
||||
@@ -1110,6 +1111,23 @@ public interface DispenseItemBehavior {
|
||||
@@ -1107,6 +1108,23 @@ public interface DispenseItemBehavior {
|
||||
}
|
||||
}
|
||||
}));
|
||||
});
|
||||
+ // Purpur start
|
||||
+ DispenserBlock.registerBehavior(Items.ANVIL, (new OptionalDispenseItemBehavior() {
|
||||
+ @Override
|
||||
Reference in New Issue
Block a user