mirror of
https://github.com/Winds-Studio/Leaf.git
synced 2026-01-04 15:41:40 +00:00
Updated Upstream (Gale/Purpur)
This commit is contained in:
@@ -2,7 +2,7 @@ group = cn.dreeam.leaf
|
||||
mcVersion = 1.21
|
||||
version = 1.21-R0.1-SNAPSHOT
|
||||
|
||||
galeCommit = cb3e413cba19462a9182e2404fec86f494da8b8b
|
||||
galeCommit = 088b9bd9d859b1554b0e495dc94a6c617c9c9781
|
||||
|
||||
org.gradle.caching = true
|
||||
org.gradle.parallel = true
|
||||
|
||||
@@ -6,7 +6,7 @@ Subject: [PATCH] Purpur API Changes
|
||||
Original license: MIT
|
||||
Original project: https://github.com/PurpurMC/Purpur
|
||||
|
||||
Commit: 9efd5fcda1d141b9fb50945f68b578e64d6bf78a
|
||||
Commit: 39617d5c9df0ed67f4b9c7cbcbc4f23a0dbae37e
|
||||
|
||||
Patches below are removed in this patch:
|
||||
Pufferfish-API-Changes.patch
|
||||
@@ -905,13 +905,13 @@ index bcc6ba95bd21c7972865838c636a03f50b6c1f1a..c3fcd8dd7dbb1e1a18e17c014c1e6411
|
||||
+ // Purpur end
|
||||
}
|
||||
diff --git a/src/main/java/org/bukkit/entity/LivingEntity.java b/src/main/java/org/bukkit/entity/LivingEntity.java
|
||||
index 5c29956c6db53440322330ff723c7087193641f1..05123a4833b8908d8ceee3e72d42f2289e33999a 100644
|
||||
index a1e54e9d14393a6c0ea57cca854071c5396d9717..e492d3707e948cd3936f0f9c5eea4668fb1fe249 100644
|
||||
--- a/src/main/java/org/bukkit/entity/LivingEntity.java
|
||||
+++ b/src/main/java/org/bukkit/entity/LivingEntity.java
|
||||
@@ -1447,4 +1447,20 @@ public interface LivingEntity extends Attributable, Damageable, ProjectileSource
|
||||
@@ -1458,4 +1458,20 @@ public interface LivingEntity extends Attributable, Damageable, ProjectileSource
|
||||
*/
|
||||
void setBodyYaw(float bodyYaw);
|
||||
// Paper end - body yaw API
|
||||
boolean canUseEquipmentSlot(org.bukkit.inventory.@NotNull EquipmentSlot slot);
|
||||
// Paper end - Expose canUseSlot
|
||||
+
|
||||
+ // Purpur start - API for any mob to burn daylight
|
||||
+ /**
|
||||
@@ -1108,7 +1108,7 @@ index 7fbfdb07585c7b28acea1f0c1f58ada0cc744441..21fcca092e2e31baa5ece0de9e44e3fa
|
||||
+ // Purpur end
|
||||
}
|
||||
diff --git a/src/main/java/org/bukkit/entity/Villager.java b/src/main/java/org/bukkit/entity/Villager.java
|
||||
index 3bc24457d143449e6a338d79becf7c39b9f81054..4a5edf4e72e81b22c1abb2ade244f7f4292e993c 100644
|
||||
index 48c8af31b2bdc849b5269784ff3829ba31fb3f47..431a62092380d30f27476eadbfa11833060e4a33 100644
|
||||
--- a/src/main/java/org/bukkit/entity/Villager.java
|
||||
+++ b/src/main/java/org/bukkit/entity/Villager.java
|
||||
@@ -328,4 +328,14 @@ public interface Villager extends AbstractVillager {
|
||||
@@ -1191,7 +1191,7 @@ index ca634147935c3bda8abad5dc73327e51381793a8..02c6a087dc41ffb004bcc20284135844
|
||||
* Damage: variable
|
||||
*/
|
||||
diff --git a/src/main/java/org/bukkit/event/entity/EntityPotionEffectEvent.java b/src/main/java/org/bukkit/event/entity/EntityPotionEffectEvent.java
|
||||
index c9f395064656dd0126410eb3c6e197baa450c063..13156a12e5df50cdc1e465dc0bd9d94108275629 100644
|
||||
index c95943a0c6a2cc7685b0e2601460d92fa1b4b2f5..30ee288c516eb4f532ae5b2550c4ee4957833396 100644
|
||||
--- a/src/main/java/org/bukkit/event/entity/EntityPotionEffectEvent.java
|
||||
+++ b/src/main/java/org/bukkit/event/entity/EntityPotionEffectEvent.java
|
||||
@@ -217,6 +217,12 @@ public class EntityPotionEffectEvent extends EntityEvent implements Cancellable
|
||||
@@ -1206,7 +1206,7 @@ index c9f395064656dd0126410eb3c6e197baa450c063..13156a12e5df50cdc1e465dc0bd9d941
|
||||
+ // Purpur end
|
||||
/**
|
||||
* When a player gets bad omen after killing a patrol captain.
|
||||
*/
|
||||
*
|
||||
diff --git a/src/main/java/org/bukkit/event/inventory/InventoryType.java b/src/main/java/org/bukkit/event/inventory/InventoryType.java
|
||||
index 398f74ba0d2e890fb556cd964f61da7c623a7c6d..29090acd16d8f5a41c8653d0e68692f0e07e3bf1 100644
|
||||
--- a/src/main/java/org/bukkit/event/inventory/InventoryType.java
|
||||
|
||||
@@ -6,7 +6,7 @@ Subject: [PATCH] Purpur generated-api Changes
|
||||
Original license: MIT
|
||||
Original project: https://github.com/PurpurMC/Purpur
|
||||
|
||||
Commit: 9efd5fcda1d141b9fb50945f68b578e64d6bf78a
|
||||
Commit: 39617d5c9df0ed67f4b9c7cbcbc4f23a0dbae37e
|
||||
|
||||
diff --git a/com/destroystokyo/paper/entity/ai/VanillaGoal.java b/com/destroystokyo/paper/entity/ai/VanillaGoal.java
|
||||
index 3add91218dd3f07052aa932f0503d1f10ac3799b..3e41a4141095bce989c75e989293deb3f47e8e6d 100644
|
||||
|
||||
@@ -8,7 +8,7 @@ TODO - Dreeam: Check Fix-pufferfish-issues.patch
|
||||
Original license: MIT
|
||||
Original project: https://github.com/PurpurMC/Purpur
|
||||
|
||||
Commit: 9efd5fcda1d141b9fb50945f68b578e64d6bf78a
|
||||
Commit: 39617d5c9df0ed67f4b9c7cbcbc4f23a0dbae37e
|
||||
|
||||
Patches below are removed in this patch:
|
||||
Brand changes in Rebrand.patch
|
||||
@@ -32,7 +32,7 @@ Remove-Mojang-Profiler.patch
|
||||
MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch
|
||||
|
||||
diff --git a/build.gradle.kts b/build.gradle.kts
|
||||
index 397d93b63e412abb96cc8366c51c3927d760afb8..8c4d68b7293aba6622689b81c8b7cab08b4b92dc 100644
|
||||
index 693608e3efc0e7435adb8f73ee38b074e0c120fa..cae5b4817786451ce4a498437f82fee56e30578f 100644
|
||||
--- a/build.gradle.kts
|
||||
+++ b/build.gradle.kts
|
||||
@@ -57,6 +57,12 @@ dependencies {
|
||||
@@ -604,7 +604,7 @@ index 2767d6f97e8b314d23a8e62f22dfd396f5660d31..a64e5997b94cc8173f0512d1e282355f
|
||||
super(x, y, z);
|
||||
}
|
||||
diff --git a/src/main/java/net/minecraft/core/dispenser/DispenseItemBehavior.java b/src/main/java/net/minecraft/core/dispenser/DispenseItemBehavior.java
|
||||
index 7bf250bba4179a506c0a39b7866a9389552d2905..6548e595ab5c06044be438bc7eac181f413c261a 100644
|
||||
index 60d3319016beb4f60cbc26dde165f64cf7577602..bd07743817f2510c179614a6215434e7b333824a 100644
|
||||
--- a/src/main/java/net/minecraft/core/dispenser/DispenseItemBehavior.java
|
||||
+++ b/src/main/java/net/minecraft/core/dispenser/DispenseItemBehavior.java
|
||||
@@ -1015,5 +1015,22 @@ public interface DispenseItemBehavior {
|
||||
@@ -2228,7 +2228,7 @@ index f43bf280999ff3860cc702def50cc62b131eb1bd..66d9e99a351f5fc6cf58be3bee4397d9
|
||||
}
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
|
||||
index 55f544a7a7253cd6619ef43d26f17b38ccb375ea..d05aa2a4a88d6c160abf1f10eeb8f1485070a9d4 100644
|
||||
index 5210fc4a74dde64bd0e40a4521aa320424bde428..7c3aec4c19954b3823ece1122c779beccdb6dea6 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/Entity.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
|
||||
@@ -168,7 +168,7 @@ import org.bukkit.plugin.PluginManager;
|
||||
@@ -2333,7 +2333,7 @@ index 55f544a7a7253cd6619ef43d26f17b38ccb375ea..d05aa2a4a88d6c160abf1f10eeb8f148
|
||||
Entity entity = this.getVehicle();
|
||||
|
||||
if (entity instanceof Boat entityboat) {
|
||||
@@ -2483,6 +2507,11 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
|
||||
@@ -2482,6 +2506,11 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
|
||||
nbttagcompound.putBoolean("Paper.FreezeLock", true);
|
||||
}
|
||||
// Paper end
|
||||
@@ -2345,7 +2345,7 @@ index 55f544a7a7253cd6619ef43d26f17b38ccb375ea..d05aa2a4a88d6c160abf1f10eeb8f148
|
||||
return nbttagcompound;
|
||||
} catch (Throwable throwable) {
|
||||
CrashReport crashreport = CrashReport.forThrowable(throwable, "Saving entity NBT");
|
||||
@@ -2630,6 +2659,11 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
|
||||
@@ -2629,6 +2658,11 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
|
||||
freezeLocked = nbt.getBoolean("Paper.FreezeLock");
|
||||
}
|
||||
// Paper end
|
||||
@@ -2357,7 +2357,7 @@ index 55f544a7a7253cd6619ef43d26f17b38ccb375ea..d05aa2a4a88d6c160abf1f10eeb8f148
|
||||
|
||||
} catch (Throwable throwable) {
|
||||
CrashReport crashreport = CrashReport.forThrowable(throwable, "Loading entity NBT");
|
||||
@@ -2791,6 +2825,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
|
||||
@@ -2790,6 +2824,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
|
||||
if (this.isAlive() && this instanceof Leashable leashable) {
|
||||
if (leashable.getLeashHolder() == player) {
|
||||
if (!this.level().isClientSide()) {
|
||||
@@ -2365,7 +2365,7 @@ index 55f544a7a7253cd6619ef43d26f17b38ccb375ea..d05aa2a4a88d6c160abf1f10eeb8f148
|
||||
// CraftBukkit start - fire PlayerUnleashEntityEvent
|
||||
// Paper start - Expand EntityUnleashEvent
|
||||
org.bukkit.event.player.PlayerUnleashEntityEvent event = CraftEventFactory.callPlayerUnleashEntityEvent(this, player, hand, !player.hasInfiniteMaterials());
|
||||
@@ -2994,6 +3029,13 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
|
||||
@@ -2993,6 +3028,13 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
|
||||
this.passengers = ImmutableList.copyOf(list);
|
||||
}
|
||||
|
||||
@@ -2379,7 +2379,7 @@ index 55f544a7a7253cd6619ef43d26f17b38ccb375ea..d05aa2a4a88d6c160abf1f10eeb8f148
|
||||
this.gameEvent(GameEvent.ENTITY_MOUNT, passenger);
|
||||
}
|
||||
}
|
||||
@@ -3033,6 +3075,14 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
|
||||
@@ -3032,6 +3074,14 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
|
||||
return false;
|
||||
}
|
||||
// CraftBukkit end
|
||||
@@ -2394,7 +2394,7 @@ index 55f544a7a7253cd6619ef43d26f17b38ccb375ea..d05aa2a4a88d6c160abf1f10eeb8f148
|
||||
if (this.passengers.size() == 1 && this.passengers.get(0) == entity) {
|
||||
this.passengers = ImmutableList.of();
|
||||
} else {
|
||||
@@ -3111,13 +3161,16 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
|
||||
@@ -3110,13 +3160,16 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
|
||||
return Vec3.directionFromRotation(this.getRotationVector());
|
||||
}
|
||||
|
||||
@@ -2411,7 +2411,7 @@ index 55f544a7a7253cd6619ef43d26f17b38ccb375ea..d05aa2a4a88d6c160abf1f10eeb8f148
|
||||
} else {
|
||||
this.portalProcess = new PortalProcessor(portal, pos.immutable());
|
||||
}
|
||||
@@ -3325,7 +3378,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
|
||||
@@ -3324,7 +3377,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
|
||||
}
|
||||
|
||||
public int getMaxAirSupply() {
|
||||
@@ -2582,7 +2582,7 @@ index f9440014ab2fe753c16b9383f5fffbb8adb76e79..d3de0362dd1ef3954d05c4d8fa56a25e
|
||||
}
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/ExperienceOrb.java b/src/main/java/net/minecraft/world/entity/ExperienceOrb.java
|
||||
index 15844971ce2cca8c679ad3aaa2dfe160e6d0b564..3003f2ab38008b761bee49823b49edae67cd5292 100644
|
||||
index a58ff67052fb5f33782f8b5c83465ec03ef1d073..1cdf71a76c629bcc42da7fcc451b7031dbe644bd 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/ExperienceOrb.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/ExperienceOrb.java
|
||||
@@ -329,7 +329,7 @@ public class ExperienceOrb extends Entity {
|
||||
@@ -12481,7 +12481,7 @@ index c72b6ea5530e54fc373c701028e1c147cea34b59..96e9fce5f9084737d2fcf4deb8330573
|
||||
if (spawnplacementtype.isSpawnPositionOk(world, blockposition2, EntityType.WANDERING_TRADER)) {
|
||||
blockposition1 = blockposition2;
|
||||
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 b5659a5cc87859c93f8c837d9f5090f7024a3d84..f1697fe1a102c070eb58d326491e58543111e5e9 100644
|
||||
index 4f36d5b8d00d260ad1e03274393a7afd5afed45b..b1d89448f97f022bc85a5e170d1f2fbd249d9a38 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/player/Player.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/player/Player.java
|
||||
@@ -199,11 +199,21 @@ public abstract class Player extends LivingEntity {
|
||||
@@ -12574,7 +12574,7 @@ index b5659a5cc87859c93f8c837d9f5090f7024a3d84..f1697fe1a102c070eb58d326491e5854
|
||||
}
|
||||
|
||||
float f3 = f + f1;
|
||||
@@ -1970,9 +2009,19 @@ public abstract class Player extends LivingEntity {
|
||||
@@ -1967,9 +2006,19 @@ public abstract class Player extends LivingEntity {
|
||||
@Override
|
||||
protected int getBaseExperienceReward() {
|
||||
if (!this.level().getGameRules().getBoolean(GameRules.RULE_KEEPINVENTORY) && !this.isSpectator()) {
|
||||
@@ -12597,7 +12597,7 @@ index b5659a5cc87859c93f8c837d9f5090f7024a3d84..f1697fe1a102c070eb58d326491e5854
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
@@ -2053,6 +2102,13 @@ public abstract class Player extends LivingEntity {
|
||||
@@ -2050,6 +2099,13 @@ public abstract class Player extends LivingEntity {
|
||||
return slot != EquipmentSlot.BODY;
|
||||
}
|
||||
|
||||
@@ -12611,7 +12611,7 @@ index b5659a5cc87859c93f8c837d9f5090f7024a3d84..f1697fe1a102c070eb58d326491e5854
|
||||
public boolean setEntityOnShoulder(CompoundTag entityNbt) {
|
||||
if (!this.isPassenger() && this.onGround() && !this.isInWater() && !this.isInPowderSnow) {
|
||||
if (this.getShoulderEntityLeft().isEmpty()) {
|
||||
@@ -2350,7 +2406,7 @@ public abstract class Player extends LivingEntity {
|
||||
@@ -2347,7 +2403,7 @@ public abstract class Player extends LivingEntity {
|
||||
public ItemStack eat(Level world, ItemStack stack, FoodProperties foodComponent) {
|
||||
this.getFoodData().eat(stack, foodComponent); // CraftBukkit
|
||||
this.awardStat(Stats.ITEM_USED.get(stack.getItem()));
|
||||
@@ -12836,7 +12836,7 @@ index 55fd997a4e894eeab24de269d59e486196ffbe8d..999453409c19abf7f5b5c2dc39969985
|
||||
public boolean hurt(DamageSource source, float amount) {
|
||||
return false;
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/raid/Raider.java b/src/main/java/net/minecraft/world/entity/raid/Raider.java
|
||||
index bbf21ea433f9e3963aac0ede597ed8d3c8e50ed8..06487fc9ea416d8256e0c2cd1969d4e0283ffb05 100644
|
||||
index 9c958635f9b9ca82d49062fdc35b7ebadf02bb2f..6e20ab54278ab3aa66dc8762c7e6a538ddf9cc9b 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/raid/Raider.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/raid/Raider.java
|
||||
@@ -299,7 +299,7 @@ public abstract class Raider extends PatrollingMonster {
|
||||
@@ -12847,7 +12847,7 @@ index bbf21ea433f9e3963aac0ede597ed8d3c8e50ed8..06487fc9ea416d8256e0c2cd1969d4e0
|
||||
+ if ((!this.mob.level().purpurConfig.pillagerBypassMobGriefing && !this.mob.level().getGameRules().getBoolean(net.minecraft.world.level.GameRules.RULE_MOBGRIEFING)) || !this.mob.canPickUpLoot()) return false; // Paper - respect game and entity rules for picking up items // Purpur
|
||||
Raid raid = this.mob.getCurrentRaid();
|
||||
|
||||
if (this.mob.hasActiveRaid() && !this.mob.getCurrentRaid().isOver() && this.mob.canBeLeader() && !ItemStack.matches(this.mob.getItemBySlot(EquipmentSlot.HEAD), Raid.getLeaderBannerInstance(this.mob.registryAccess().lookupOrThrow(Registries.BANNER_PATTERN)))) {
|
||||
if (this.mob.hasActiveRaid() && !this.mob.getCurrentRaid().isOver() && this.mob.canBeLeader() && !ItemStack.matches(this.mob.getItemBySlot(EquipmentSlot.HEAD), Raid.getLeaderBanner(this.mob.registryAccess().lookupOrThrow(Registries.BANNER_PATTERN)))) { // Gale - Lithium - cache ominous banner item
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/raid/Raids.java b/src/main/java/net/minecraft/world/entity/raid/Raids.java
|
||||
index 8c60f71270d909c10e6617eb64b8fdb42deb73e9..eedce2a3d67d875d5174ee125e2679480d4d412c 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/raid/Raids.java
|
||||
@@ -14657,10 +14657,10 @@ index 8240c32d676a88aa23dcd052ee0136767e54fb0d..372c4ab9d390d5afd98947f21c79aae0
|
||||
if (i != -1) {
|
||||
world.scheduleTick(blockposition, (Block) this, i);
|
||||
diff --git a/src/main/java/net/minecraft/world/level/block/Block.java b/src/main/java/net/minecraft/world/level/block/Block.java
|
||||
index dbfee1647c564e833eb23a3b90ad0f1cb78edfb5..dcfe68a51067b35057ef14813f57e7d91a0f84b6 100644
|
||||
index ac0da3d2d1b83dd0fb3db170141a6b105476d8e6..c9c255283dab251de150c65b121919cc827ab02a 100644
|
||||
--- a/src/main/java/net/minecraft/world/level/block/Block.java
|
||||
+++ b/src/main/java/net/minecraft/world/level/block/Block.java
|
||||
@@ -88,6 +88,10 @@ public class Block extends BlockBehaviour implements ItemLike {
|
||||
@@ -89,6 +89,10 @@ public class Block extends BlockBehaviour implements ItemLike {
|
||||
public static final int UPDATE_LIMIT = 512;
|
||||
protected final StateDefinition<Block, BlockState> stateDefinition;
|
||||
private BlockState defaultBlockState;
|
||||
@@ -14671,7 +14671,7 @@ index dbfee1647c564e833eb23a3b90ad0f1cb78edfb5..dcfe68a51067b35057ef14813f57e7d9
|
||||
// Paper start
|
||||
public final boolean isDestroyable() {
|
||||
return io.papermc.paper.configuration.GlobalConfiguration.get().unsupportedSettings.allowPermanentBlockBreakExploits ||
|
||||
@@ -311,7 +315,7 @@ public class Block extends BlockBehaviour implements ItemLike {
|
||||
@@ -312,7 +316,7 @@ public class Block extends BlockBehaviour implements ItemLike {
|
||||
public static void dropResources(BlockState state, LevelAccessor world, BlockPos pos, @Nullable BlockEntity blockEntity) {
|
||||
if (world instanceof ServerLevel) {
|
||||
Block.getDrops(state, (ServerLevel) world, pos, blockEntity).forEach((itemstack) -> {
|
||||
@@ -14680,7 +14680,7 @@ index dbfee1647c564e833eb23a3b90ad0f1cb78edfb5..dcfe68a51067b35057ef14813f57e7d9
|
||||
});
|
||||
state.spawnAfterBreak((ServerLevel) world, pos, ItemStack.EMPTY, true);
|
||||
}
|
||||
@@ -330,7 +334,7 @@ public class Block extends BlockBehaviour implements ItemLike {
|
||||
@@ -331,7 +335,7 @@ public class Block extends BlockBehaviour implements ItemLike {
|
||||
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()) {
|
||||
@@ -14689,7 +14689,7 @@ index dbfee1647c564e833eb23a3b90ad0f1cb78edfb5..dcfe68a51067b35057ef14813f57e7d9
|
||||
}
|
||||
state.spawnAfterBreak(serverLevel, pos, ItemStack.EMPTY, false); // Paper - Properly handle xp dropping
|
||||
block.popExperience(serverLevel, pos, event.getExpToDrop()); // Paper - Properly handle xp dropping
|
||||
@@ -347,13 +351,32 @@ public class Block extends BlockBehaviour implements ItemLike {
|
||||
@@ -348,13 +352,32 @@ public class Block extends BlockBehaviour implements ItemLike {
|
||||
// Paper end - Properly handle xp dropping
|
||||
if (world instanceof ServerLevel) {
|
||||
Block.getDrops(state, (ServerLevel) world, pos, blockEntity, entity, tool).forEach((itemstack1) -> {
|
||||
@@ -14723,7 +14723,7 @@ index dbfee1647c564e833eb23a3b90ad0f1cb78edfb5..dcfe68a51067b35057ef14813f57e7d9
|
||||
public static void popResource(Level world, BlockPos pos, ItemStack stack) {
|
||||
double d0 = (double) EntityType.ITEM.getHeight() / 2.0D;
|
||||
double d1 = (double) pos.getX() + 0.5D + Mth.nextDouble(world.random, -0.25D, 0.25D);
|
||||
@@ -437,7 +460,17 @@ public class Block extends BlockBehaviour implements ItemLike {
|
||||
@@ -438,7 +461,17 @@ public class Block extends BlockBehaviour implements ItemLike {
|
||||
} // Paper - fix drops not preventing stats/food exhaustion
|
||||
}
|
||||
|
||||
@@ -14742,7 +14742,7 @@ index dbfee1647c564e833eb23a3b90ad0f1cb78edfb5..dcfe68a51067b35057ef14813f57e7d9
|
||||
|
||||
public boolean isPossibleToRespawnInThis(BlockState state) {
|
||||
return !state.isSolid() && !state.liquid();
|
||||
@@ -456,7 +489,7 @@ public class Block extends BlockBehaviour implements ItemLike {
|
||||
@@ -457,7 +490,7 @@ public class Block extends BlockBehaviour implements ItemLike {
|
||||
}
|
||||
|
||||
public void fallOn(Level world, BlockState state, BlockPos pos, Entity entity, float fallDistance) {
|
||||
@@ -15159,10 +15159,10 @@ index 151e856dda3aa262c846ce8793650ee582bfb749..be0ed8a14e5726d5fcea1864302b18fb
|
||||
+ // Purpur end
|
||||
}
|
||||
diff --git a/src/main/java/net/minecraft/world/level/block/EndGatewayBlock.java b/src/main/java/net/minecraft/world/level/block/EndGatewayBlock.java
|
||||
index 11486419dd98a013c7387d3d73f322a95a18c574..b1444e8605282a05c3d030330b92213ad8341fda 100644
|
||||
index 3f5bb5c9ceb5b31fcc9ef0a7a6157e1e1cb2a09f..9bd56c48119fe630f272427a2ec99ffe19eefdfb 100644
|
||||
--- a/src/main/java/net/minecraft/world/level/block/EndGatewayBlock.java
|
||||
+++ b/src/main/java/net/minecraft/world/level/block/EndGatewayBlock.java
|
||||
@@ -98,6 +98,13 @@ public class EndGatewayBlock extends BaseEntityBlock implements Portal {
|
||||
@@ -102,6 +102,13 @@ public class EndGatewayBlock extends BaseEntityBlock implements Portal {
|
||||
TheEndGatewayBlockEntity tileentityendgateway = (TheEndGatewayBlockEntity) tileentity;
|
||||
|
||||
if (!tileentityendgateway.isCoolingDown()) {
|
||||
@@ -15177,7 +15177,7 @@ index 11486419dd98a013c7387d3d73f322a95a18c574..b1444e8605282a05c3d030330b92213a
|
||||
TheEndGatewayBlockEntity.triggerCooldown(world, pos, state, tileentityendgateway);
|
||||
}
|
||||
diff --git a/src/main/java/net/minecraft/world/level/block/EndPortalBlock.java b/src/main/java/net/minecraft/world/level/block/EndPortalBlock.java
|
||||
index cff3e9869340f1ffb7093431cbe1ac5e67792a4e..dfe27fc9b2cbc824e8d2a5fd759409d939bd9c71 100644
|
||||
index 01333f69b622141b2eb53441c6cbd69e4a059d55..9c11a615fbfd4fcaff5df2a15d1b8578897ab2b4 100644
|
||||
--- a/src/main/java/net/minecraft/world/level/block/EndPortalBlock.java
|
||||
+++ b/src/main/java/net/minecraft/world/level/block/EndPortalBlock.java
|
||||
@@ -65,6 +65,13 @@ public class EndPortalBlock extends BaseEntityBlock implements Portal {
|
||||
@@ -15185,14 +15185,14 @@ index cff3e9869340f1ffb7093431cbe1ac5e67792a4e..dfe27fc9b2cbc824e8d2a5fd759409d9
|
||||
if (!new io.papermc.paper.event.entity.EntityInsideBlockEvent(entity.getBukkitEntity(), org.bukkit.craftbukkit.block.CraftBlock.at(world, pos)).callEvent()) { return; } // Paper - Add EntityInsideBlockEvent
|
||||
if (entity.canUsePortal(false) && Shapes.joinIsNotEmpty(Shapes.create(entity.getBoundingBox().move((double) (-pos.getX()), (double) (-pos.getY()), (double) (-pos.getZ()))), state.getShape(world, pos), BooleanOp.AND)) {
|
||||
+ // Purpur start
|
||||
+ if (entity.isPassenger() || entity.isVehicle()) {
|
||||
+ if (world.purpurConfig.imposeTeleportRestrictionsOnEndPortals && (entity.isVehicle() || entity.isPassenger())) {
|
||||
+ if (!new org.purpurmc.purpur.event.entity.EntityTeleportHinderedEvent(entity.getBukkitEntity(), entity.isPassenger() ? org.purpurmc.purpur.event.entity.EntityTeleportHinderedEvent.Reason.IS_PASSENGER : org.purpurmc.purpur.event.entity.EntityTeleportHinderedEvent.Reason.IS_VEHICLE, PlayerTeleportEvent.TeleportCause.END_PORTAL).callEvent()) {
|
||||
+ return;
|
||||
+ }
|
||||
+ }
|
||||
+ // Purpur end
|
||||
// CraftBukkit start - Entity in portal
|
||||
EntityPortalEnterEvent event = new EntityPortalEnterEvent(entity.getBukkitEntity(), new org.bukkit.Location(world.getWorld(), pos.getX(), pos.getY(), pos.getZ()));
|
||||
EntityPortalEnterEvent event = new EntityPortalEnterEvent(entity.getBukkitEntity(), new org.bukkit.Location(world.getWorld(), pos.getX(), pos.getY(), pos.getZ()), org.bukkit.PortalType.ENDER); // Paper - add portal type
|
||||
world.getCraftServer().getPluginManager().callEvent(event);
|
||||
diff --git a/src/main/java/net/minecraft/world/level/block/EnderChestBlock.java b/src/main/java/net/minecraft/world/level/block/EnderChestBlock.java
|
||||
index ca92d49ef2010ba00c623491671dcde8ebe697c1..bd65df4588584b8bb001e9dc3656a14e381a0b6d 100644
|
||||
@@ -15448,7 +15448,7 @@ index 02d59789c09f58045fea302ea6f2ee3856114de3..8072713da7ed8b7a44b63c241050c3a9
|
||||
}
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/level/block/NetherPortalBlock.java b/src/main/java/net/minecraft/world/level/block/NetherPortalBlock.java
|
||||
index a530276b0123dee5680d7e09ad3d2f0414909c91..b3179c9537ba528379c2b0f6e166f850332e18c3 100644
|
||||
index ddab7de1d376e9e486e2f920174397ea8804aa29..74d9a8a61365f1244471dbff8eb91dad3afaab51 100644
|
||||
--- a/src/main/java/net/minecraft/world/level/block/NetherPortalBlock.java
|
||||
+++ b/src/main/java/net/minecraft/world/level/block/NetherPortalBlock.java
|
||||
@@ -77,7 +77,7 @@ public class NetherPortalBlock extends Block implements Portal {
|
||||
@@ -15465,16 +15465,16 @@ index a530276b0123dee5680d7e09ad3d2f0414909c91..b3179c9537ba528379c2b0f6e166f850
|
||||
if (!new io.papermc.paper.event.entity.EntityInsideBlockEvent(entity.getBukkitEntity(), org.bukkit.craftbukkit.block.CraftBlock.at(world, pos)).callEvent()) { return; } // Paper - Add EntityInsideBlockEvent
|
||||
if (entity.canUsePortal(false)) {
|
||||
+ // Purpur start
|
||||
+ if (entity.isPassenger() || entity.isVehicle()) {
|
||||
+ if (world.purpurConfig.imposeTeleportRestrictionsOnNetherPortals && (entity.isVehicle() || entity.isPassenger())) {
|
||||
+ if (!new org.purpurmc.purpur.event.entity.EntityTeleportHinderedEvent(entity.getBukkitEntity(), entity.isPassenger() ? org.purpurmc.purpur.event.entity.EntityTeleportHinderedEvent.Reason.IS_PASSENGER : org.purpurmc.purpur.event.entity.EntityTeleportHinderedEvent.Reason.IS_VEHICLE, org.bukkit.event.player.PlayerTeleportEvent.TeleportCause.NETHER_PORTAL).callEvent()) {
|
||||
+ return;
|
||||
+ }
|
||||
+ }
|
||||
+ // Purpur end
|
||||
// CraftBukkit start - Entity in portal
|
||||
EntityPortalEnterEvent event = new EntityPortalEnterEvent(entity.getBukkitEntity(), new org.bukkit.Location(world.getWorld(), pos.getX(), pos.getY(), pos.getZ()));
|
||||
EntityPortalEnterEvent event = new EntityPortalEnterEvent(entity.getBukkitEntity(), new org.bukkit.Location(world.getWorld(), pos.getX(), pos.getY(), pos.getZ()), org.bukkit.PortalType.NETHER); // Paper - add portal type
|
||||
world.getCraftServer().getPluginManager().callEvent(event);
|
||||
@@ -121,7 +128,7 @@ public class NetherPortalBlock extends Block implements Portal {
|
||||
@@ -122,7 +129,7 @@ public class NetherPortalBlock extends Block implements Portal {
|
||||
@Override
|
||||
public int getPortalTransitionTime(ServerLevel world, Entity entity) {
|
||||
if (entity instanceof Player entityhuman) {
|
||||
@@ -17419,7 +17419,7 @@ index 30d62ee4d5cd2ddacb8783b5bbbf475d592b3e02..5c1cda88080850314dac196dbe71ff12
|
||||
+ // Purpur end
|
||||
}
|
||||
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java
|
||||
index b3970222ed979dda5296ce472739c112b70d0e89..1504c8b0a36e1af7548b3b442e280e7c853e8028 100644
|
||||
index d2bb0831394c03b620b2cbd8306cb82b621f34f7..9add2ba364e80815ec9c530b984e1619b6607bb8 100644
|
||||
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java
|
||||
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java
|
||||
@@ -513,7 +513,7 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity {
|
||||
@@ -17431,10 +17431,10 @@ index b3970222ed979dda5296ce472739c112b70d0e89..1504c8b0a36e1af7548b3b442e280e7c
|
||||
}
|
||||
// Paper end
|
||||
|
||||
@@ -1182,4 +1182,16 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity {
|
||||
this.getHandle().setYBodyRot(bodyYaw);
|
||||
@@ -1189,4 +1189,16 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity {
|
||||
return this.getHandle().canUseSlot(org.bukkit.craftbukkit.CraftEquipmentSlot.getNMS(slot));
|
||||
}
|
||||
// Paper end - body yaw API
|
||||
// Paper end - Expose canUseSlot
|
||||
+
|
||||
+ // Purpur start - API for any mob to burn daylight
|
||||
+ @Override
|
||||
@@ -18463,10 +18463,10 @@ index 0000000000000000000000000000000000000000..71787e9efaa8a711f4c41849793f01f3
|
||||
+}
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
new file mode 100644
|
||||
index 0000000000000000000000000000000000000000..7cf54e37e1c70ebb7b1606074c3c7fe73f31a3ef
|
||||
index 0000000000000000000000000000000000000000..b08583d1d5e923dc86378dbd97612aee5c7c43c7
|
||||
--- /dev/null
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -0,0 +1,3441 @@
|
||||
@@ -0,0 +1,3445 @@
|
||||
+package org.purpurmc.purpur;
|
||||
+
|
||||
+import net.minecraft.core.registries.BuiltInRegistries;
|
||||
@@ -18591,6 +18591,8 @@ index 0000000000000000000000000000000000000000..7cf54e37e1c70ebb7b1606074c3c7fe7
|
||||
+ public boolean entitiesPickUpLootBypassMobGriefing = false;
|
||||
+ public boolean fireballsBypassMobGriefing = false;
|
||||
+ public boolean imposeTeleportRestrictionsOnGateways = false;
|
||||
+ public boolean imposeTeleportRestrictionsOnNetherPortals = false;
|
||||
+ public boolean imposeTeleportRestrictionsOnEndPortals = false;
|
||||
+ public boolean milkCuresBadOmen = true;
|
||||
+ public boolean milkClearsBeneficialEffects = true;
|
||||
+ public boolean noteBlockIgnoreAbove = false;
|
||||
@@ -18619,6 +18621,8 @@ index 0000000000000000000000000000000000000000..7cf54e37e1c70ebb7b1606074c3c7fe7
|
||||
+ entitiesPickUpLootBypassMobGriefing = getBoolean("gameplay-mechanics.entities-pick-up-loot-bypass-mob-griefing", entitiesPickUpLootBypassMobGriefing);
|
||||
+ fireballsBypassMobGriefing = getBoolean("gameplay-mechanics.fireballs-bypass-mob-griefing", fireballsBypassMobGriefing);
|
||||
+ imposeTeleportRestrictionsOnGateways = getBoolean("gameplay-mechanics.impose-teleport-restrictions-on-gateways", imposeTeleportRestrictionsOnGateways);
|
||||
+ imposeTeleportRestrictionsOnNetherPortals = getBoolean("gameplay-mechanics.impose-teleport-restrictions-on-nether-portals", imposeTeleportRestrictionsOnNetherPortals);
|
||||
+ imposeTeleportRestrictionsOnEndPortals = getBoolean("gameplay-mechanics.impose-teleport-restrictions-on-end-portals", imposeTeleportRestrictionsOnEndPortals);
|
||||
+ milkCuresBadOmen = getBoolean("gameplay-mechanics.milk-cures-bad-omen", milkCuresBadOmen);
|
||||
+ milkClearsBeneficialEffects = getBoolean("gameplay-mechanics.milk-clears-beneficial-effects", milkClearsBeneficialEffects);
|
||||
+ noteBlockIgnoreAbove = getBoolean("gameplay-mechanics.note-block-ignore-above", noteBlockIgnoreAbove);
|
||||
|
||||
@@ -1608,10 +1608,10 @@ index d490429ddbb8cd82aeda5e03540075c9167b095e..d556089907bb695a9d87df1961ef0b0a
|
||||
|
||||
// Paper start - Add mobcaps commands
|
||||
diff --git a/src/main/java/net/minecraft/world/level/block/Block.java b/src/main/java/net/minecraft/world/level/block/Block.java
|
||||
index dcfe68a51067b35057ef14813f57e7d91a0f84b6..78c3dabea3dd08ed1f4212375e8ef20e904a9d3a 100644
|
||||
index c9c255283dab251de150c65b121919cc827ab02a..7248b72430d5ff047e3150a57f26592b76e99fa5 100644
|
||||
--- a/src/main/java/net/minecraft/world/level/block/Block.java
|
||||
+++ b/src/main/java/net/minecraft/world/level/block/Block.java
|
||||
@@ -106,13 +106,6 @@ public class Block extends BlockBehaviour implements ItemLike {
|
||||
@@ -107,13 +107,6 @@ public class Block extends BlockBehaviour implements ItemLike {
|
||||
this != Blocks.STRUCTURE_BLOCK &&
|
||||
this != Blocks.JIGSAW;
|
||||
}
|
||||
|
||||
@@ -9,7 +9,7 @@ Original project: https://github.com/LeavesMC/Leaves
|
||||
Commit: e234432bd99e1c4b07c24d1dd247977226a7516a
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
|
||||
index 43b13836406ac6a7f26317f029225e6b2c9f2ea8..a8c7a433043ae670a34764ab3947b11b2fbf1671 100644
|
||||
index 747dfc5795cf9e9c5f67ee7478f09f827eba5f79..a270eb3b94ffc439499c0dcf37c7a35f3d5700ac 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/Entity.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
|
||||
@@ -434,6 +434,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
|
||||
@@ -20,7 +20,7 @@ index 43b13836406ac6a7f26317f029225e6b2c9f2ea8..a8c7a433043ae670a34764ab3947b11b
|
||||
|
||||
public void setOrigin(@javax.annotation.Nonnull Location location) {
|
||||
this.origin = location.toVector();
|
||||
@@ -2528,6 +2529,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
|
||||
@@ -2527,6 +2528,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
|
||||
nbttagcompound.putBoolean("Purpur.FireImmune", immuneToFire);
|
||||
}
|
||||
// Purpur end
|
||||
@@ -28,7 +28,7 @@ index 43b13836406ac6a7f26317f029225e6b2c9f2ea8..a8c7a433043ae670a34764ab3947b11b
|
||||
return nbttagcompound;
|
||||
} catch (Throwable throwable) {
|
||||
CrashReport crashreport = CrashReport.forThrowable(throwable, "Saving entity NBT");
|
||||
@@ -2680,6 +2682,11 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
|
||||
@@ -2679,6 +2681,11 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
|
||||
immuneToFire = nbt.getBoolean("Purpur.FireImmune");
|
||||
}
|
||||
// Purpur end
|
||||
|
||||
@@ -97,10 +97,10 @@ index 1c04fbea0dce4167a0902b92b95d470f562825c2..4f1f816496f8f8564c1dc53ceae5cfb3
|
||||
@Override
|
||||
public EntityDimensions getDefaultDimensions(Pose pose) {
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index 7cf54e37e1c70ebb7b1606074c3c7fe73f31a3ef..a0fa8b10cf53e5cb75385f40acdb0ba9d44b536f 100644
|
||||
index b08583d1d5e923dc86378dbd97612aee5c7c43c7..33990382600b155ed8afcaa93707d9b7c189ad83 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -1573,6 +1573,7 @@ public class PurpurWorldConfig {
|
||||
@@ -1577,6 +1577,7 @@ public class PurpurWorldConfig {
|
||||
public boolean drownedTakeDamageFromWater = false;
|
||||
public boolean drownedBreakDoors = false;
|
||||
public boolean drownedAlwaysDropExp = false;
|
||||
@@ -108,7 +108,7 @@ index 7cf54e37e1c70ebb7b1606074c3c7fe73f31a3ef..a0fa8b10cf53e5cb75385f40acdb0ba9
|
||||
private void drownedSettings() {
|
||||
drownedRidable = getBoolean("mobs.drowned.ridable", drownedRidable);
|
||||
drownedRidableInWater = getBoolean("mobs.drowned.ridable-in-water", drownedRidableInWater);
|
||||
@@ -1591,6 +1592,7 @@ public class PurpurWorldConfig {
|
||||
@@ -1595,6 +1596,7 @@ public class PurpurWorldConfig {
|
||||
drownedTakeDamageFromWater = getBoolean("mobs.drowned.takes-damage-from-water", drownedTakeDamageFromWater);
|
||||
drownedBreakDoors = getBoolean("mobs.drowned.can-break-doors", drownedBreakDoors);
|
||||
drownedAlwaysDropExp = getBoolean("mobs.drowned.always-drop-exp", drownedAlwaysDropExp);
|
||||
@@ -116,7 +116,7 @@ index 7cf54e37e1c70ebb7b1606074c3c7fe73f31a3ef..a0fa8b10cf53e5cb75385f40acdb0ba9
|
||||
}
|
||||
|
||||
public boolean elderGuardianRidable = false;
|
||||
@@ -1960,6 +1962,7 @@ public class PurpurWorldConfig {
|
||||
@@ -1964,6 +1966,7 @@ public class PurpurWorldConfig {
|
||||
public boolean huskJockeyTryExistingChickens = true;
|
||||
public boolean huskTakeDamageFromWater = false;
|
||||
public boolean huskAlwaysDropExp = false;
|
||||
@@ -124,7 +124,7 @@ index 7cf54e37e1c70ebb7b1606074c3c7fe73f31a3ef..a0fa8b10cf53e5cb75385f40acdb0ba9
|
||||
private void huskSettings() {
|
||||
huskRidable = getBoolean("mobs.husk.ridable", huskRidable);
|
||||
huskRidableInWater = getBoolean("mobs.husk.ridable-in-water", huskRidableInWater);
|
||||
@@ -1977,6 +1980,7 @@ public class PurpurWorldConfig {
|
||||
@@ -1981,6 +1984,7 @@ public class PurpurWorldConfig {
|
||||
huskJockeyTryExistingChickens = getBoolean("mobs.husk.jockey.try-existing-chickens", huskJockeyTryExistingChickens);
|
||||
huskTakeDamageFromWater = getBoolean("mobs.husk.takes-damage-from-water", huskTakeDamageFromWater);
|
||||
huskAlwaysDropExp = getBoolean("mobs.husk.always-drop-exp", huskAlwaysDropExp);
|
||||
@@ -132,7 +132,7 @@ index 7cf54e37e1c70ebb7b1606074c3c7fe73f31a3ef..a0fa8b10cf53e5cb75385f40acdb0ba9
|
||||
}
|
||||
|
||||
public boolean illusionerRidable = false;
|
||||
@@ -3270,6 +3274,7 @@ public class PurpurWorldConfig {
|
||||
@@ -3274,6 +3278,7 @@ public class PurpurWorldConfig {
|
||||
public boolean zombieTakeDamageFromWater = false;
|
||||
public boolean zombieAlwaysDropExp = false;
|
||||
public double zombieHeadVisibilityPercent = 0.5D;
|
||||
@@ -140,7 +140,7 @@ index 7cf54e37e1c70ebb7b1606074c3c7fe73f31a3ef..a0fa8b10cf53e5cb75385f40acdb0ba9
|
||||
private void zombieSettings() {
|
||||
zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable);
|
||||
zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater);
|
||||
@@ -3290,6 +3295,7 @@ public class PurpurWorldConfig {
|
||||
@@ -3294,6 +3299,7 @@ public class PurpurWorldConfig {
|
||||
zombieTakeDamageFromWater = getBoolean("mobs.zombie.takes-damage-from-water", zombieTakeDamageFromWater);
|
||||
zombieAlwaysDropExp = getBoolean("mobs.zombie.always-drop-exp", zombieAlwaysDropExp);
|
||||
zombieHeadVisibilityPercent = getDouble("mobs.zombie.head-visibility-percent", zombieHeadVisibilityPercent);
|
||||
@@ -148,7 +148,7 @@ index 7cf54e37e1c70ebb7b1606074c3c7fe73f31a3ef..a0fa8b10cf53e5cb75385f40acdb0ba9
|
||||
}
|
||||
|
||||
public boolean zombieHorseRidable = false;
|
||||
@@ -3339,6 +3345,7 @@ public class PurpurWorldConfig {
|
||||
@@ -3343,6 +3349,7 @@ public class PurpurWorldConfig {
|
||||
public int zombieVillagerCuringTimeMax = 6000;
|
||||
public boolean zombieVillagerCureEnabled = true;
|
||||
public boolean zombieVillagerAlwaysDropExp = false;
|
||||
@@ -156,7 +156,7 @@ index 7cf54e37e1c70ebb7b1606074c3c7fe73f31a3ef..a0fa8b10cf53e5cb75385f40acdb0ba9
|
||||
private void zombieVillagerSettings() {
|
||||
zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable);
|
||||
zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater);
|
||||
@@ -3359,6 +3366,7 @@ public class PurpurWorldConfig {
|
||||
@@ -3363,6 +3370,7 @@ public class PurpurWorldConfig {
|
||||
zombieVillagerCuringTimeMax = getInt("mobs.zombie_villager.curing_time.max", zombieVillagerCuringTimeMax);
|
||||
zombieVillagerCureEnabled = getBoolean("mobs.zombie_villager.cure.enabled", zombieVillagerCureEnabled);
|
||||
zombieVillagerAlwaysDropExp = getBoolean("mobs.zombie_villager.always-drop-exp", zombieVillagerAlwaysDropExp);
|
||||
@@ -164,7 +164,7 @@ index 7cf54e37e1c70ebb7b1606074c3c7fe73f31a3ef..a0fa8b10cf53e5cb75385f40acdb0ba9
|
||||
}
|
||||
|
||||
public boolean zombifiedPiglinRidable = false;
|
||||
@@ -3373,6 +3381,7 @@ public class PurpurWorldConfig {
|
||||
@@ -3377,6 +3385,7 @@ public class PurpurWorldConfig {
|
||||
public boolean zombifiedPiglinCountAsPlayerKillWhenAngry = true;
|
||||
public boolean zombifiedPiglinTakeDamageFromWater = false;
|
||||
public boolean zombifiedPiglinAlwaysDropExp = false;
|
||||
@@ -172,7 +172,7 @@ index 7cf54e37e1c70ebb7b1606074c3c7fe73f31a3ef..a0fa8b10cf53e5cb75385f40acdb0ba9
|
||||
private void zombifiedPiglinSettings() {
|
||||
zombifiedPiglinRidable = getBoolean("mobs.zombified_piglin.ridable", zombifiedPiglinRidable);
|
||||
zombifiedPiglinRidableInWater = getBoolean("mobs.zombified_piglin.ridable-in-water", zombifiedPiglinRidableInWater);
|
||||
@@ -3391,6 +3400,7 @@ public class PurpurWorldConfig {
|
||||
@@ -3395,6 +3404,7 @@ public class PurpurWorldConfig {
|
||||
zombifiedPiglinCountAsPlayerKillWhenAngry = getBoolean("mobs.zombified_piglin.count-as-player-kill-when-angry", zombifiedPiglinCountAsPlayerKillWhenAngry);
|
||||
zombifiedPiglinTakeDamageFromWater = getBoolean("mobs.zombified_piglin.takes-damage-from-water", zombifiedPiglinTakeDamageFromWater);
|
||||
zombifiedPiglinAlwaysDropExp = getBoolean("mobs.zombified_piglin.always-drop-exp", zombifiedPiglinAlwaysDropExp);
|
||||
|
||||
@@ -231,10 +231,10 @@ index 71787e9efaa8a711f4c41849793f01f3087add1a..d0c62588d80414d83326192d30500257
|
||||
org.bukkit.event.inventory.InventoryType.ENDER_CHEST.setDefaultSize(enderChestSixRows ? 54 : 27);
|
||||
enderChestPermissionRows = getBoolean("settings.blocks.ender_chest.use-permissions-for-rows", enderChestPermissionRows);
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index a0fa8b10cf53e5cb75385f40acdb0ba9d44b536f..53689e7b2f49d482414377cabe2c5497f22b37ba 100644
|
||||
index 33990382600b155ed8afcaa93707d9b7c189ad83..7cae3a982d5c26c4b789630fd571d786c6c7bc07 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -1160,12 +1160,20 @@ public class PurpurWorldConfig {
|
||||
@@ -1164,12 +1164,20 @@ public class PurpurWorldConfig {
|
||||
public boolean allayControllable = true;
|
||||
public double allayMaxHealth = 20.0D;
|
||||
public double allayScale = 1.0D;
|
||||
@@ -255,7 +255,7 @@ index a0fa8b10cf53e5cb75385f40acdb0ba9d44b536f..53689e7b2f49d482414377cabe2c5497
|
||||
}
|
||||
|
||||
public boolean armadilloRidable = false;
|
||||
@@ -1315,6 +1323,10 @@ public class PurpurWorldConfig {
|
||||
@@ -1319,6 +1327,10 @@ public class PurpurWorldConfig {
|
||||
public double camelMovementSpeedMin = 0.09D;
|
||||
public double camelMovementSpeedMax = 0.09D;
|
||||
public int camelBreedingTicks = 6000;
|
||||
@@ -266,7 +266,7 @@ index a0fa8b10cf53e5cb75385f40acdb0ba9d44b536f..53689e7b2f49d482414377cabe2c5497
|
||||
private void camelSettings() {
|
||||
camelRidableInWater = getBoolean("mobs.camel.ridable-in-water", camelRidableInWater);
|
||||
camelMaxHealthMin = getDouble("mobs.camel.attributes.max_health.min", camelMaxHealthMin);
|
||||
@@ -1324,6 +1336,10 @@ public class PurpurWorldConfig {
|
||||
@@ -1328,6 +1340,10 @@ public class PurpurWorldConfig {
|
||||
camelMovementSpeedMin = getDouble("mobs.camel.attributes.movement_speed.min", camelMovementSpeedMin);
|
||||
camelMovementSpeedMax = getDouble("mobs.camel.attributes.movement_speed.max", camelMovementSpeedMax);
|
||||
camelBreedingTicks = getInt("mobs.camel.breeding-delay-ticks", camelBreedingTicks);
|
||||
@@ -277,7 +277,7 @@ index a0fa8b10cf53e5cb75385f40acdb0ba9d44b536f..53689e7b2f49d482414377cabe2c5497
|
||||
}
|
||||
|
||||
public boolean catRidable = false;
|
||||
@@ -1771,12 +1787,22 @@ public class PurpurWorldConfig {
|
||||
@@ -1775,12 +1791,22 @@ public class PurpurWorldConfig {
|
||||
public boolean frogControllable = true;
|
||||
public float frogRidableJumpHeight = 0.65F;
|
||||
public int frogBreedingTicks = 6000;
|
||||
@@ -300,7 +300,7 @@ index a0fa8b10cf53e5cb75385f40acdb0ba9d44b536f..53689e7b2f49d482414377cabe2c5497
|
||||
}
|
||||
|
||||
public boolean ghastRidable = false;
|
||||
@@ -2778,6 +2804,10 @@ public class PurpurWorldConfig {
|
||||
@@ -2782,6 +2808,10 @@ public class PurpurWorldConfig {
|
||||
public double snifferMaxHealth = 14.0D;
|
||||
public double snifferScale = 1.0D;
|
||||
public int snifferBreedingTicks = 6000;
|
||||
@@ -311,7 +311,7 @@ index a0fa8b10cf53e5cb75385f40acdb0ba9d44b536f..53689e7b2f49d482414377cabe2c5497
|
||||
private void snifferSettings() {
|
||||
snifferRidable = getBoolean("mobs.sniffer.ridable", snifferRidable);
|
||||
snifferRidableInWater = getBoolean("mobs.sniffer.ridable-in-water", snifferRidableInWater);
|
||||
@@ -2785,6 +2815,10 @@ public class PurpurWorldConfig {
|
||||
@@ -2789,6 +2819,10 @@ public class PurpurWorldConfig {
|
||||
snifferMaxHealth = getDouble("mobs.sniffer.attributes.max_health", snifferMaxHealth);
|
||||
snifferScale = Mth.clamp(getDouble("mobs.sniffer.attributes.scale", snifferScale), 0.0625D, 16.0D);
|
||||
snifferBreedingTicks = getInt("mobs.sniffer.breeding-delay-ticks", snifferBreedingTicks);
|
||||
@@ -322,7 +322,7 @@ index a0fa8b10cf53e5cb75385f40acdb0ba9d44b536f..53689e7b2f49d482414377cabe2c5497
|
||||
}
|
||||
|
||||
public boolean squidRidable = false;
|
||||
@@ -2886,10 +2920,20 @@ public class PurpurWorldConfig {
|
||||
@@ -2890,10 +2924,20 @@ public class PurpurWorldConfig {
|
||||
public boolean tadpoleRidable = false;
|
||||
public boolean tadpoleRidableInWater = true;
|
||||
public boolean tadpoleControllable = true;
|
||||
@@ -343,7 +343,7 @@ index a0fa8b10cf53e5cb75385f40acdb0ba9d44b536f..53689e7b2f49d482414377cabe2c5497
|
||||
}
|
||||
|
||||
public boolean traderLlamaRidable = false;
|
||||
@@ -3114,10 +3158,20 @@ public class PurpurWorldConfig {
|
||||
@@ -3118,10 +3162,20 @@ public class PurpurWorldConfig {
|
||||
public boolean wardenRidable = false;
|
||||
public boolean wardenRidableInWater = true;
|
||||
public boolean wardenControllable = true;
|
||||
|
||||
@@ -6,10 +6,10 @@ Subject: [PATCH] Fix MC-2025
|
||||
Mojang issues: https://bugs.mojang.com/browse/MC-2025
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
|
||||
index a8c7a433043ae670a34764ab3947b11b2fbf1671..0a730f1584f0b493b14ccf6c610ffd52f5a826b8 100644
|
||||
index a270eb3b94ffc439499c0dcf37c7a35f3d5700ac..0f7dba6335cc85b8fcc814bbc6fdeaf37ccef48f 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/Entity.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
|
||||
@@ -2530,6 +2530,16 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
|
||||
@@ -2529,6 +2529,16 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
|
||||
}
|
||||
// Purpur end
|
||||
nbttagcompound.put("Leaves.Data", leavesData); // Leaves - leaves ex data
|
||||
@@ -26,7 +26,7 @@ index a8c7a433043ae670a34764ab3947b11b2fbf1671..0a730f1584f0b493b14ccf6c610ffd52
|
||||
return nbttagcompound;
|
||||
} catch (Throwable throwable) {
|
||||
CrashReport crashreport = CrashReport.forThrowable(throwable, "Saving entity NBT");
|
||||
@@ -2607,6 +2617,13 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
|
||||
@@ -2606,6 +2616,13 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
|
||||
this.reapplyPosition();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user