Fix compilation issues (#1530)

This commit is contained in:
Krakenied
2024-06-17 01:52:10 +02:00
committed by GitHub
parent 6e1147f1ac
commit c9917352de
306 changed files with 1065 additions and 1005 deletions

View File

@@ -56,7 +56,7 @@ repositories {
}
dependencies {
remapper("net.fabricmc:tiny-remapper:0.10.1:fat")
remapper("net.fabricmc:tiny-remapper:0.10.3:fat")
decompiler("org.vineflower:vineflower:1.10.1")
paperclip("io.papermc:paperclip:3.0.3")
}

View File

@@ -2,7 +2,7 @@ group = org.purpurmc.purpur
version = 1.21-R0.1-SNAPSHOT
mcVersion = 1.21
paperCommit = f873bcee24264ea91a3350af871222b09c4ee228
paperCommit = a7f66333625febf891e5126bbd432707d38d1b1c
org.gradle.caching = true
org.gradle.parallel = true

View File

@@ -1,6 +1,6 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-8.8-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME

View File

@@ -23,14 +23,15 @@ index 514611cf71cafc8e7e07ef901c2ccad03cd5f31b..8c9c4183785a47b64f084f4b8cdac53d
// Purpur end
}
diff --git a/src/main/java/org/bukkit/entity/LivingEntity.java b/src/main/java/org/bukkit/entity/LivingEntity.java
index e1079c5c4be99e75a646c090189678dd131f210e..544b1d8aa5665fd2567605014adee6222d2cb312 100644
index 5c29956c6db53440322330ff723c7087193641f1..05123a4833b8908d8ceee3e72d42f2289e33999a 100644
--- a/src/main/java/org/bukkit/entity/LivingEntity.java
+++ b/src/main/java/org/bukkit/entity/LivingEntity.java
@@ -1455,5 +1455,19 @@ public interface LivingEntity extends Attributable, Damageable, ProjectileSource
* @param slot Equipment slot to play break animation for
@@ -1447,4 +1447,20 @@ public interface LivingEntity extends Attributable, Damageable, ProjectileSource
*/
void broadcastItemBreak(@NotNull org.bukkit.inventory.EquipmentSlot slot);
void setBodyYaw(float bodyYaw);
// Paper end - body yaw API
+
+ // Purpur start - API for any mob to burn daylight
+ /**
+ * If this mob will burn in the sunlight
+ *
@@ -44,5 +45,5 @@ index e1079c5c4be99e75a646c090189678dd131f210e..544b1d8aa5665fd2567605014adee622
+ * @param shouldBurnInDay True to burn in sunlight
+ */
+ void setShouldBurnInDay(boolean shouldBurnInDay);
// Purpur end
+ // Purpur end - API for any mob to burn daylight
}

View File

@@ -179,10 +179,10 @@ index 6e1f92b45504cef0c4dcbbebf3df339ef4cad0a1..48e8b7405270632130721e87579ee243
.withRequiredArg()
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
new file mode 100644
index 0000000000000000000000000000000000000000..4f015144be0a7a448c6c2b0765232c02ad405d09
index 0000000000000000000000000000000000000000..f06fed3ae5631d46a953617cfdd766a02e628515
--- /dev/null
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
@@ -0,0 +1,175 @@
@@ -0,0 +1,177 @@
+package org.purpurmc.purpur;
+
+import com.google.common.base.Throwables;
@@ -190,7 +190,9 @@ index 0000000000000000000000000000000000000000..4f015144be0a7a448c6c2b0765232c02
+import com.mojang.datafixers.util.Pair;
+import net.kyori.adventure.bossbar.BossBar;
+import net.kyori.adventure.text.minimessage.MiniMessage;
+import net.minecraft.core.Registry;
+import net.minecraft.core.registries.BuiltInRegistries;
+import net.minecraft.core.registries.Registries;
+import net.minecraft.resources.ResourceLocation;
+import net.minecraft.server.MinecraftServer;
+import net.minecraft.world.effect.MobEffect;

View File

@@ -36,7 +36,7 @@ index 92e9a5e38cc60e3ef6d7e2216bf4a85cb2464cdd..47afcbc699a992358871fe90929f71b4
public void displayClientMessage(Component message, boolean overlay) {
this.sendSystemMessage(message, overlay);
diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java
index 0d0b07c9199be9ca0d5ac3feb1d44f149ba69283..b708323c6ad3ff40e6f2af5bd24988a63918f37c 100644
index 3d30427e75bdfb9cf453fb5cd2a344227da1641a..18c19b6029a167658623c3cf9814bb0857338117 100644
--- a/src/main/java/net/minecraft/server/players/PlayerList.java
+++ b/src/main/java/net/minecraft/server/players/PlayerList.java
@@ -1015,6 +1015,20 @@ public abstract class PlayerList {
@@ -81,10 +81,10 @@ index bb1a60180e58c1333e7bb33e8acf1b0225eda8a8..c83e80ebdbbfb2d0e08561a44486a308
return this.type().msgId();
}
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
index 14db8510af7465eb663501008ca35f8ec63bfe30..134af1086b63bcdcca4bce9f3534bd19a82db774 100644
index 437956b18d5bffd93c46e0be34cf413e9c704e5a..9e5eda675411916f40a82d7c60e488cf790381e3 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -3995,6 +3995,20 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
@@ -4015,6 +4015,20 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
return SlotAccess.NULL;
}

View File

@@ -34,7 +34,7 @@ index 7e32eecacf6f5e832dbfd0455e4bab1302a33d46..32d574d1f52577c67883d99309ff03a9
this.profiler.push(() -> {
String s = String.valueOf(worldserver);
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
index fb0db51493e343c781876b9db773fa3fc9a8d666..e8ed80cf7d7519eab614e5ae5326755b40c76623 100644
index b81ac6db8ba1ee0722e9e85f8de8ef91169a3198..bb61ccf3246ea69cf1eb097a95c3324d0802dae1 100644
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
@@ -229,6 +229,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf.
@@ -66,10 +66,10 @@ index 47afcbc699a992358871fe90929f71b4d47d9601..ae41c955ec6cfe284fec5f8e79cb827e
private void updatePlayerAttributes() {
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
index be2e97e4de911ad9570a9b4e9f3c5fafa93f6203..224a4d09bca571e6b440ea3011fbd13f785c78db 100644
index 7796e191747be545e744564a2b0b65790f69114d..82f60de72bc0f9b01eb97dbc0e296e80579b0968 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
@@ -2716,6 +2716,8 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
@@ -2717,6 +2717,8 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
ServerGamePacketListenerImpl.this.cserver.getPluginManager().callEvent(event);
@@ -77,9 +77,9 @@ index be2e97e4de911ad9570a9b4e9f3c5fafa93f6203..224a4d09bca571e6b440ea3011fbd13f
+
// Entity in bucket - SPIGOT-4048 and SPIGOT-6859a
if ((entity instanceof Bucketable && entity instanceof LivingEntity && origItem != null && origItem.asItem() == Items.WATER_BUCKET) && (event.isCancelled() || ServerGamePacketListenerImpl.this.player.getInventory().getSelected() == null || ServerGamePacketListenerImpl.this.player.getInventory().getSelected().getItem() != origItem)) {
entity.getBukkitEntity().update(ServerGamePacketListenerImpl.this.player);
entity.resendPossiblyDesyncedEntityData(ServerGamePacketListenerImpl.this.player); // Paper - The entire mob gets deleted, so resend it
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
index 134af1086b63bcdcca4bce9f3534bd19a82db774..67aa0563c33bc9a98facfff6bf5a1a8ace483d99 100644
index 9e5eda675411916f40a82d7c60e488cf790381e3..f332458dbc26bb0e77ca9b7446f4ae800c359d13 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -383,7 +383,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
@@ -91,7 +91,7 @@ index 134af1086b63bcdcca4bce9f3534bd19a82db774..67aa0563c33bc9a98facfff6bf5a1a8a
private float eyeHeight;
public boolean isInPowderSnow;
public boolean wasInPowderSnow;
@@ -2933,6 +2933,13 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
@@ -2964,6 +2964,13 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
this.passengers = ImmutableList.copyOf(list);
}
@@ -105,7 +105,7 @@ index 134af1086b63bcdcca4bce9f3534bd19a82db774..67aa0563c33bc9a98facfff6bf5a1a8a
this.gameEvent(GameEvent.ENTITY_MOUNT, passenger);
}
}
@@ -2972,6 +2979,14 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
@@ -3003,6 +3010,14 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
return false;
}
// CraftBukkit end
@@ -120,7 +120,7 @@ index 134af1086b63bcdcca4bce9f3534bd19a82db774..67aa0563c33bc9a98facfff6bf5a1a8a
if (this.passengers.size() == 1 && this.passengers.get(0) == entity) {
this.passengers = ImmutableList.of();
} else {
@@ -4814,4 +4829,44 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
@@ -4834,4 +4849,44 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
return ((net.minecraft.server.level.ServerChunkCache) level.getChunkSource()).isPositionTicking(this);
}
// Paper end - Expose entity id counter
@@ -190,7 +190,7 @@ index 09fdea983772612ef3fff6b2da3cf469a34e4ec0..aa76a24421cdb3908a3544d92eb3d1e3
protected ParticleOptions getInkParticle() {
return ParticleTypes.GLOW_SQUID_INK;
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
index 25a7dfddb44a11f6e20c459141a61270c0c12d4c..6b5d09b34c9fe88548a14e64e9aa42841e9031f5 100644
index e980c8c356b30d25e2fc5a73b91ad2c6edd4fe05..661db9eb343b32f97d6e7ccb93e56e24213b6367 100644
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
@@ -237,9 +237,9 @@ public abstract class LivingEntity extends Entity implements Attackable {
@@ -1333,7 +1333,7 @@ index e108f876d3f129c6287f13d68427aed2a6f0c5b1..fff8abfe14be823867aa9bd145146763
}
}
diff --git a/src/main/java/net/minecraft/world/entity/animal/Parrot.java b/src/main/java/net/minecraft/world/entity/animal/Parrot.java
index 97931bfd360725945ab9606ff698b518ae101076..0549fafbd6e76cf1b0d4e56e4fc745c4773f4c5d 100644
index 97931bfd360725945ab9606ff698b518ae101076..eecf37d4dba41cb96d0893c905567130e00b66e9 100644
--- a/src/main/java/net/minecraft/world/entity/animal/Parrot.java
+++ b/src/main/java/net/minecraft/world/entity/animal/Parrot.java
@@ -124,12 +124,68 @@ public class Parrot extends ShoulderRidingEntity implements VariantHolder<Parrot
@@ -1414,7 +1414,7 @@ index 97931bfd360725945ab9606ff698b518ae101076..0549fafbd6e76cf1b0d4e56e4fc745c4
+ //this.goalSelector.addGoal(0, new TamableAnimal.TamableAnimalPanicGoal(1.25D)); // Purpur - move down
this.goalSelector.addGoal(0, new FloatGoal(this));
+ this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur
+ this.goalSelector.addGoal(1, new PanicGoal(this, 1.25D)); // Purpur
+ this.goalSelector.addGoal(1, new TamableAnimal.TamableAnimalPanicGoal(1.25D)); // Purpur
this.goalSelector.addGoal(1, new LookAtPlayerGoal(this, Player.class, 8.0F));
this.goalSelector.addGoal(2, new SitWhenOrderedToGoal(this));
this.goalSelector.addGoal(2, new FollowOwnerGoal(this, 1.0D, 5.0F, 1.0F));
@@ -1797,7 +1797,7 @@ index 5c2ed3c39c8eb850f3be1e2ea5b5a7ea266e16d1..d51b486afb83bf3e12046ed5e61e73ee
}
diff --git a/src/main/java/net/minecraft/world/entity/animal/Squid.java b/src/main/java/net/minecraft/world/entity/animal/Squid.java
index 42f4e544fe7fbc342f15eacb5e38d40849e3c419..fddd8693858f9b1d15b0fddeacc030339ac39c0d 100644
index 42f4e544fe7fbc342f15eacb5e38d40849e3c419..8afab50de942ec4999f5ef849a28da92c54ab8dd 100644
--- a/src/main/java/net/minecraft/world/entity/animal/Squid.java
+++ b/src/main/java/net/minecraft/world/entity/animal/Squid.java
@@ -45,9 +45,32 @@ public class Squid extends WaterAnimal {
@@ -1838,7 +1838,7 @@ index 42f4e544fe7fbc342f15eacb5e38d40849e3c419..fddd8693858f9b1d15b0fddeacc03033
@Override
public void tick() {
+ // Purpur start
+ Player rider = squid.getRider();
+ net.minecraft.world.entity.player.Player rider = squid.getRider();
+ if (rider != null && squid.isControllable()) {
+ if (rider.jumping) {
+ squid.onSpacebar();
@@ -2833,7 +2833,7 @@ index 4d2fbade3a01ca26ff107f1323ae23db6dad8ef8..bc2bcae9e18f76c2db1a75b4db9bd987
this.dragonFight.updateDragon(this);
}
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 d3b4d492aee380dc17f4232d90eaae4f07bb9f86..57a91dc073739b81d5acb973bf8c9c74a4a825cd 100644
index d3b4d492aee380dc17f4232d90eaae4f07bb9f86..b3c52d0b74528136523f5194acac14cc3421ef73 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
@@ -88,16 +88,30 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob
@@ -2868,7 +2868,7 @@ index d3b4d492aee380dc17f4232d90eaae4f07bb9f86..57a91dc073739b81d5acb973bf8c9c74
this.setHealth(this.getMaxHealth());
this.xpReward = 50;
}
@@ -112,13 +126,113 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob
@@ -112,13 +126,114 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob
return navigationflying;
}
@@ -2964,7 +2964,8 @@ index d3b4d492aee380dc17f4232d90eaae4f07bb9f86..57a91dc073739b81d5acb973bf8c9c74
+ double headX = getHeadX(head);
+ double headY = getHeadY(head);
+ double headZ = getHeadZ(head);
+ WitherSkull skull = new WitherSkull(level(), this, x - headX, y - headY, z - headZ);
+ Vec3 vec3d = new Vec3(x - headX, y - headY, z - headZ);
+ WitherSkull skull = new WitherSkull(level(), this, vec3d.normalize());
+ skull.setPosRaw(headX, headY, headZ);
+ level().addFreshEntity(skull);
+ }
@@ -2982,7 +2983,7 @@ index d3b4d492aee380dc17f4232d90eaae4f07bb9f86..57a91dc073739b81d5acb973bf8c9c74
this.targetSelector.addGoal(1, new HurtByTargetGoal(this, new Class[0]));
this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, LivingEntity.class, 0, false, false, WitherBoss.LIVING_ENTITY_SELECTOR));
}
@@ -263,6 +377,16 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob
@@ -263,6 +378,16 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob
@Override
protected void customServerAiStep() {
@@ -2999,7 +3000,7 @@ index d3b4d492aee380dc17f4232d90eaae4f07bb9f86..57a91dc073739b81d5acb973bf8c9c74
int i;
if (this.getInvulnerableTicks() > 0) {
@@ -580,11 +704,11 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob
@@ -580,11 +705,11 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob
}
public int getAlternativeTarget(int headIndex) {
@@ -5084,10 +5085,10 @@ index 55fd997a4e894eeab24de269d59e486196ffbe8d..63f48841c849ff49d9d43efc5de8952c
public boolean hurt(DamageSource source, float amount) {
return false;
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
index b8eb9166e44da8745a056bf68f2f9316ce25d7a7..3629a6f99e99ca686446a23eea0329771c4d11cc 100644
index 2cde808bfa797256409879505ba205a71f381981..84479dad6078a2a12e6b977185bdbbe7f6b36576 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
@@ -1293,4 +1293,27 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
@@ -1297,4 +1297,27 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
return this.getHandle().getScoreboardName();
}
// Paper end - entity scoreboard name
@@ -5144,10 +5145,10 @@ index bd6fee3e3ad9116802ff8bb57bfa741b881c4057..9e5d4e8a70aec8619db68d75ef3447cf
event = new EntityDamageEvent(damagee.getBukkitEntity(), cause, bukkitDamageSource, modifiers, modifierFunctions);
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
index 4f015144be0a7a448c6c2b0765232c02ad405d09..169722178ba7cd9543a029741e81d025a659ffe2 100644
index f06fed3ae5631d46a953617cfdd766a02e628515..08f38c2a87feb138b202f0934abb3724ef79c4c1 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
@@ -172,4 +172,9 @@ public class PurpurConfig {
@@ -174,4 +174,9 @@ public class PurpurConfig {
}
return builder.build();
}

View File

@@ -269,7 +269,7 @@ index fff8abfe14be823867aa9bd145146763cfe83148..0fd0358d287604d0ff1f52f0c7163358
if (this.isLazy()) {
diff --git a/src/main/java/net/minecraft/world/entity/animal/Parrot.java b/src/main/java/net/minecraft/world/entity/animal/Parrot.java
index 0549fafbd6e76cf1b0d4e56e4fc745c4773f4c5d..17983481386709110b7c4749ec8432866454492d 100644
index eecf37d4dba41cb96d0893c905567130e00b66e9..d9e1ff687bb478af4d9c669379477737d053e83d 100644
--- a/src/main/java/net/minecraft/world/entity/animal/Parrot.java
+++ b/src/main/java/net/minecraft/world/entity/animal/Parrot.java
@@ -186,6 +186,11 @@ public class Parrot extends ShoulderRidingEntity implements VariantHolder<Parrot
@@ -397,7 +397,7 @@ index d51b486afb83bf3e12046ed5e61e73eec5bd7c7c..a54893d51cc1ce204e59a6ffe8b84228
protected void registerGoals() {
this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur
diff --git a/src/main/java/net/minecraft/world/entity/animal/Squid.java b/src/main/java/net/minecraft/world/entity/animal/Squid.java
index fddd8693858f9b1d15b0fddeacc030339ac39c0d..eb85356f0e2d1dc2eeecb30a36f88df900eb5caa 100644
index 8afab50de942ec4999f5ef849a28da92c54ab8dd..f66b283612671a3c6d4b33b32284259bcfd9331e 100644
--- a/src/main/java/net/minecraft/world/entity/animal/Squid.java
+++ b/src/main/java/net/minecraft/world/entity/animal/Squid.java
@@ -67,6 +67,11 @@ public class Squid extends WaterAnimal {
@@ -793,7 +793,7 @@ index bc2bcae9e18f76c2db1a75b4db9bd9874b9f79cf..4218c84f3bef499bd6ebd4df224d4dcc
return Mob.createMobAttributes().add(Attributes.MAX_HEALTH, 200.0D);
}
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 57a91dc073739b81d5acb973bf8c9c74a4a825cd..c4894f62a2c3d84d063e5caa5a38df80575660cb 100644
index b3c52d0b74528136523f5194acac14cc3421ef73..4b1821ad50103cb996bb3ff9b9668f22ffff518f 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
@@ -116,6 +116,11 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob
@@ -808,7 +808,7 @@ index 57a91dc073739b81d5acb973bf8c9c74a4a825cd..c4894f62a2c3d84d063e5caa5a38df80
@Override
protected PathNavigation createNavigation(Level world) {
FlyingPathNavigation navigationflying = new FlyingPathNavigation(this, world);
@@ -428,7 +433,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob
@@ -429,7 +434,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob
this.setInvulnerableTicks(i);
if (this.tickCount % 10 == 0) {

View File

@@ -253,10 +253,10 @@ index af1ae3dacb628da23f7d2988c6e76d3fb2d64103..4ee2d501f882279b48edb4b8bf082458
for (int i = 0; i < this.getSize(); i++) {
if (i >= items.length) {
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
index 169722178ba7cd9543a029741e81d025a659ffe2..db0d57060cae1f5fd51087a15134ca5f389511bc 100644
index 08f38c2a87feb138b202f0934abb3724ef79c4c1..5f51a9d16912ecbd9d015f5158d50563904a461f 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
@@ -177,4 +177,39 @@ public class PurpurConfig {
@@ -179,4 +179,39 @@ public class PurpurConfig {
private static void messages() {
cannotRideMob = getString("settings.messages.cannot-ride-mob", cannotRideMob);
}

View File

@@ -265,10 +265,10 @@ index e099eb16dbe2bdf73874199ad57c7027498dd4ba..2fba6458aa097d9375df7d2f38efd100
// Purpur end
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
index db0d57060cae1f5fd51087a15134ca5f389511bc..d2f3e864aa4d1c5d3ee8bb8f1e36787b1ca45f2e 100644
index 5f51a9d16912ecbd9d015f5158d50563904a461f..d80e5f2280aa156bbe455f9638d84f8243dbdaf7 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
@@ -174,8 +174,18 @@ public class PurpurConfig {
@@ -176,8 +176,18 @@ public class PurpurConfig {
}
public static String cannotRideMob = "<red>You cannot mount that mob";

View File

@@ -18,10 +18,10 @@ index 32d574d1f52577c67883d99309ff03a9fae123dc..c8616c6c9f555079cb8433da4dd9dcf9
public SystemReport fillSystemReport(SystemReport details) {
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
index d2f3e864aa4d1c5d3ee8bb8f1e36787b1ca45f2e..fdf726c455f9a4de822644c703de7ffeab6b3702 100644
index d80e5f2280aa156bbe455f9638d84f8243dbdaf7..9960d7791d37fb7b43e8ffc3351528510ac537ca 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
@@ -188,6 +188,11 @@ public class PurpurConfig {
@@ -190,6 +190,11 @@ public class PurpurConfig {
afkTabListSuffix = MiniMessage.miniMessage().serialize(MiniMessage.miniMessage().deserialize(getString("settings.messages.afk-tab-list-suffix", afkTabListSuffix)));
}

View File

@@ -40,10 +40,10 @@ index 90e12b1eb1180d066e7162bef0adeb9d3dec8721..3afa845c073aec1f60a932dc825f5338
// Purpur end
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
index fdf726c455f9a4de822644c703de7ffeab6b3702..f80414b9bb7fb1f2849749481209648516fb28fb 100644
index 9960d7791d37fb7b43e8ffc3351528510ac537ca..9e6bcdaa2b3dabb2a7c50034eed81f0064a2f98f 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
@@ -193,6 +193,11 @@ public class PurpurConfig {
@@ -195,6 +195,11 @@ public class PurpurConfig {
serverModName = getString("settings.server-mod-name", serverModName);
}

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] PlayerSetSpawnerTypeWithEggEvent
diff --git a/src/main/java/net/minecraft/world/entity/EntityType.java b/src/main/java/net/minecraft/world/entity/EntityType.java
index 842b0cec0397d7ae5166617627340ffac0e35db1..76d0c482f1ab251963ca2e0c312acad52a7f9901 100644
index 842b0cec0397d7ae5166617627340ffac0e35db1..02257d9c7ceb81b8fccca0013ef5090feac1e19e 100644
--- a/src/main/java/net/minecraft/world/entity/EntityType.java
+++ b/src/main/java/net/minecraft/world/entity/EntityType.java
@@ -330,6 +330,16 @@ public class EntityType<T extends Entity> implements FeatureElement, EntityTypeT
@@ -14,7 +14,7 @@ index 842b0cec0397d7ae5166617627340ffac0e35db1..76d0c482f1ab251963ca2e0c312acad5
+ // Purpur start
+ public static EntityType<?> getFromBukkitType(org.bukkit.entity.EntityType bukkitType) {
+ return getFromKey(new ResourceLocation(bukkitType.getKey().toString()));
+ return getFromKey(ResourceLocation.parse(bukkitType.getKey().toString()));
+ }
+
+ public static EntityType<?> getFromKey(ResourceLocation location) {
@@ -43,7 +43,7 @@ index 842b0cec0397d7ae5166617627340ffac0e35db1..76d0c482f1ab251963ca2e0c312acad5
if (this.descriptionId == null) {
this.descriptionId = Util.makeDescriptionId("entity", BuiltInRegistries.ENTITY_TYPE.getKey(this));
diff --git a/src/main/java/net/minecraft/world/item/SpawnEggItem.java b/src/main/java/net/minecraft/world/item/SpawnEggItem.java
index 9cea8da84f39bb3f687139ef213ccea358724dee..076e6858222b92f8409f1f5cad398582c1fd6bcb 100644
index 9cea8da84f39bb3f687139ef213ccea358724dee..d43be19fdb4ca917d08f84cda5a67667960f28fe 100644
--- a/src/main/java/net/minecraft/world/item/SpawnEggItem.java
+++ b/src/main/java/net/minecraft/world/item/SpawnEggItem.java
@@ -74,6 +74,15 @@ public class SpawnEggItem extends Item {
@@ -53,7 +53,7 @@ index 9cea8da84f39bb3f687139ef213ccea358724dee..076e6858222b92f8409f1f5cad398582
+
+ // Purpur start
+ org.bukkit.block.Block bukkitBlock = world.getWorld().getBlockAt(blockposition.getX(), blockposition.getY(), blockposition.getZ());
+ org.purpurmc.purpur.event.PlayerSetSpawnerTypeWithEggEvent event = new org.purpurmc.purpur.event.PlayerSetSpawnerTypeWithEggEvent((org.bukkit.entity.Player) context.getPlayer().getBukkitEntity(), bukkitBlock, (org.bukkit.block.CreatureSpawner) bukkitBlock.getState(), org.bukkit.entity.EntityType.fromName(entitytypes.getName()));
+ org.purpurmc.purpur.event.PlayerSetSpawnerTypeWithEggEvent event = new org.purpurmc.purpur.event.PlayerSetSpawnerTypeWithEggEvent((org.bukkit.entity.Player) context.getPlayer().getBukkitEntity(), bukkitBlock, (org.bukkit.block.CreatureSpawner) bukkitBlock.getState(), org.bukkit.entity.EntityType.fromName(entitytypes.getName()));
+ if (!event.callEvent()) {
+ return InteractionResult.FAIL;
+ }

View File

@@ -5,136 +5,138 @@ Subject: [PATCH] Anvil API
diff --git a/src/main/java/net/minecraft/world/inventory/AbstractContainerMenu.java b/src/main/java/net/minecraft/world/inventory/AbstractContainerMenu.java
index 32910f677b0522ac8ec513fa0d00b714b52cfae4..f85eef14b91a0ada1f6f4b13ab3966f051ff92d3 100644
index 32910f677b0522ac8ec513fa0d00b714b52cfae4..c491291b522aebf34c7d990d2b485d1a0d19cdcd 100644
--- a/src/main/java/net/minecraft/world/inventory/AbstractContainerMenu.java
+++ b/src/main/java/net/minecraft/world/inventory/AbstractContainerMenu.java
@@ -76,6 +76,7 @@ public abstract class AbstractContainerMenu {
@Nullable
private ContainerSynchronizer synchronizer;
private boolean suppressRemoteUpdates;
+ @javax.annotation.Nullable protected ItemStack activeQuickItem = null; // Purpur
+ @Nullable protected ItemStack activeQuickItem = null; // Purpur - Anvil API
// CraftBukkit start
public boolean checkReachable = true;
diff --git a/src/main/java/net/minecraft/world/inventory/AnvilMenu.java b/src/main/java/net/minecraft/world/inventory/AnvilMenu.java
index 7198dc9ffc9a37dab3654e12aa497c442a9993c5..2348ee0065367ade5354d54aac53ab23d43d0622 100644
index 7198dc9ffc9a37dab3654e12aa497c442a9993c5..99bfa7cdc58c690d6f0c742dafedd40cace3223f 100644
--- a/src/main/java/net/minecraft/world/inventory/AnvilMenu.java
+++ b/src/main/java/net/minecraft/world/inventory/AnvilMenu.java
@@ -25,6 +25,13 @@ import org.slf4j.Logger;
@@ -25,6 +25,12 @@ import org.slf4j.Logger;
import org.bukkit.craftbukkit.inventory.CraftInventoryView;
// CraftBukkit end
+// Purpur start
+import net.minecraft.nbt.IntTag;
+// Purpur start - Anvil API
+import net.minecraft.network.protocol.game.ClientboundContainerSetDataPacket;
+import net.minecraft.network.protocol.game.ClientboundContainerSetSlotPacket;
+import net.minecraft.server.level.ServerPlayer;
+// Purpur end
+// Purpur end - Anvil API
+
public class AnvilMenu extends ItemCombinerMenu {
public static final int INPUT_SLOT = 0;
@@ -53,6 +60,8 @@ public class AnvilMenu extends ItemCombinerMenu {
@@ -53,6 +59,10 @@ public class AnvilMenu extends ItemCombinerMenu {
public int maximumRepairCost = 40;
private CraftInventoryView bukkitEntity;
// CraftBukkit end
+ public boolean bypassCost = false; // Purpur
+ public boolean canDoUnsafeEnchants = false; // Purpur
+ // Purpur start - Anvil API
+ public boolean bypassCost = false;
+ public boolean canDoUnsafeEnchants = false;
+ // Purpur end - Anvil API
public AnvilMenu(int syncId, Inventory inventory) {
this(syncId, inventory, ContainerLevelAccess.NULL);
@@ -80,12 +89,15 @@ public class AnvilMenu extends ItemCombinerMenu {
@@ -80,12 +90,17 @@ public class AnvilMenu extends ItemCombinerMenu {
@Override
protected boolean mayPickup(Player player, boolean present) {
- return (player.hasInfiniteMaterials() || player.experienceLevel >= this.cost.get()) && this.cost.get() > AnvilMenu.DEFAULT_DENIED_COST && present; // CraftBukkit - allow cost 0 like a free item
+ return (player.hasInfiniteMaterials() || player.experienceLevel >= this.cost.get()) && (bypassCost || this.cost.get() > AnvilMenu.DEFAULT_DENIED_COST) && present; // CraftBukkit - allow cost 0 like a free item // Purpur
+ return (player.hasInfiniteMaterials() || player.experienceLevel >= this.cost.get()) && (this.bypassCost || this.cost.get() > AnvilMenu.DEFAULT_DENIED_COST) && present; // CraftBukkit - allow cost 0 like a free item // Purpur - Anvil API
}
@Override
protected void onTake(Player player, ItemStack stack) {
+ ItemStack itemstack = activeQuickItem == null ? stack : activeQuickItem; // Purpur
+ if (org.purpurmc.purpur.event.inventory.AnvilTakeResultEvent.getHandlerList().getRegisteredListeners().length > 0) new org.purpurmc.purpur.event.inventory.AnvilTakeResultEvent(player.getBukkitEntity(), getBukkitView(), org.bukkit.craftbukkit.inventory.CraftItemStack.asCraftMirror(itemstack)).callEvent(); // Purpur
+ // Purpur start - Anvil API
+ ItemStack itemstack = this.activeQuickItem != null ? this.activeQuickItem : stack;
+ if (org.purpurmc.purpur.event.inventory.AnvilTakeResultEvent.getHandlerList().getRegisteredListeners().length > 0) new org.purpurmc.purpur.event.inventory.AnvilTakeResultEvent(player.getBukkitEntity(), getBukkitView(), org.bukkit.craftbukkit.inventory.CraftItemStack.asCraftMirror(itemstack)).callEvent();
+ // Purpur end - Anvil API
if (!player.getAbilities().instabuild) {
+ if (bypassCost) ((ServerPlayer) player).lastSentExp = -1; else // Purpur
+ if (this.bypassCost) ((ServerPlayer) player).lastSentExp = -1; else // Purpur - Anvil API
player.giveExperienceLevels(-this.cost.get());
}
@@ -136,6 +148,12 @@ public class AnvilMenu extends ItemCombinerMenu {
@@ -136,6 +151,12 @@ public class AnvilMenu extends ItemCombinerMenu {
@Override
public void createResult() {
+ // Purpur start
+ bypassCost = false;
+ canDoUnsafeEnchants = false;
+ // Purpur start - Anvil API
+ this.bypassCost = false;
+ this.canDoUnsafeEnchants = false;
+ if (org.purpurmc.purpur.event.inventory.AnvilUpdateResultEvent.getHandlerList().getRegisteredListeners().length > 0) new org.purpurmc.purpur.event.inventory.AnvilUpdateResultEvent(getBukkitView()).callEvent();
+ // Purpur end
+ // Purpur end - Anvil API
+
ItemStack itemstack = this.inputSlots.getItem(0);
this.cost.set(1);
@@ -143,7 +161,7 @@ public class AnvilMenu extends ItemCombinerMenu {
@@ -143,7 +164,7 @@ public class AnvilMenu extends ItemCombinerMenu {
long j = 0L;
byte b0 = 0;
- if (!itemstack.isEmpty() && EnchantmentHelper.canStoreEnchantments(itemstack)) {
+ if (!itemstack.isEmpty() && canDoUnsafeEnchants || EnchantmentHelper.canStoreEnchantments(itemstack)) { // Purpur
+ if (!itemstack.isEmpty() && this.canDoUnsafeEnchants || EnchantmentHelper.canStoreEnchantments(itemstack)) { // Purpur - Anvil API
ItemStack itemstack1 = itemstack.copy();
ItemStack itemstack2 = this.inputSlots.getItem(1);
ItemEnchantments.Mutable itemenchantments_a = new ItemEnchantments.Mutable(EnchantmentHelper.getEnchantmentsForCrafting(itemstack1));
@@ -221,8 +239,8 @@ public class AnvilMenu extends ItemCombinerMenu {
while (iterator1.hasNext()) {
@@ -222,7 +243,7 @@ public class AnvilMenu extends ItemCombinerMenu {
Holder<Enchantment> holder1 = (Holder) iterator1.next();
- if (!holder1.equals(holder) && !Enchantment.areCompatible(holder, holder1)) {
if (!holder1.equals(holder) && !Enchantment.areCompatible(holder, holder1)) {
- flag3 = false;
+ if (!holder1.equals(holder) && !enchantment.isCompatibleWith((Enchantment) holder1.value())) {
+ flag3 = canDoUnsafeEnchants; // Purpur
+ flag3 = this.canDoUnsafeEnchants; // Purpur - Anvil API
++i;
}
}
@@ -280,6 +298,12 @@ public class AnvilMenu extends ItemCombinerMenu {
@@ -280,6 +301,12 @@ public class AnvilMenu extends ItemCombinerMenu {
this.cost.set(this.maximumRepairCost - 1); // CraftBukkit
}
+ // Purpur start
+ if (bypassCost && cost.get() >= maximumRepairCost) {
+ cost.set(maximumRepairCost - 1);
+ // Purpur start - Anvil API
+ if (this.bypassCost && this.cost.get() >= this.maximumRepairCost) {
+ this.cost.set(this.maximumRepairCost - 1);
+ }
+ // Purpur end
+ // Purpur end - Anvil API
+
if (this.cost.get() >= this.maximumRepairCost && !this.player.getAbilities().instabuild) { // CraftBukkit
itemstack1 = ItemStack.EMPTY;
}
@@ -301,6 +325,12 @@ public class AnvilMenu extends ItemCombinerMenu {
@@ -301,6 +328,13 @@ public class AnvilMenu extends ItemCombinerMenu {
org.bukkit.craftbukkit.event.CraftEventFactory.callPrepareAnvilEvent(this.getBukkitView(), itemstack1); // CraftBukkit
this.sendAllDataToRemote(); // CraftBukkit - SPIGOT-6686: Always send completed inventory to stay in sync with client
this.broadcastChanges();
+ // Purpur start
+ if (canDoUnsafeEnchants && itemstack1 != ItemStack.EMPTY) {
+ ((ServerPlayer) player).connection.send(new ClientboundContainerSetSlotPacket(containerId, incrementStateId(), 2, itemstack1));
+ ((ServerPlayer) player).connection.send(new ClientboundContainerSetDataPacket(containerId, 0, cost.get()));
+
+ // Purpur start - Anvil API
+ if (this.canDoUnsafeEnchants && itemstack1 != ItemStack.EMPTY) {
+ ((ServerPlayer) this.player).connection.send(new ClientboundContainerSetSlotPacket(this.containerId, this.incrementStateId(), 2, itemstack1));
+ ((ServerPlayer) this.player).connection.send(new ClientboundContainerSetDataPacket(this.containerId, 0, this.cost.get()));
+ }
+ // Purpur end
+ // Purpur end - Anvil API
} else {
org.bukkit.craftbukkit.event.CraftEventFactory.callPrepareAnvilEvent(this.getBukkitView(), ItemStack.EMPTY); // CraftBukkit
this.cost.set(AnvilMenu.DEFAULT_DENIED_COST); // CraftBukkit - use a variable for set a cost for denied item
diff --git a/src/main/java/net/minecraft/world/inventory/ItemCombinerMenu.java b/src/main/java/net/minecraft/world/inventory/ItemCombinerMenu.java
index 7de5e47f9a54263734eeef855a2dc07ef64d30ea..7215af6cc91f48b040c23c54536d4aac8d293497 100644
index 7de5e47f9a54263734eeef855a2dc07ef64d30ea..b3bd9bbd96efc4784b86c2be6bb857da4db919b8 100644
--- a/src/main/java/net/minecraft/world/inventory/ItemCombinerMenu.java
+++ b/src/main/java/net/minecraft/world/inventory/ItemCombinerMenu.java
@@ -178,7 +178,9 @@ public abstract class ItemCombinerMenu extends AbstractContainerMenu {
return ItemStack.EMPTY;
}
+ this.activeQuickItem = itemstack; // Purpur
+ this.activeQuickItem = itemstack; // Purpur - Anvil API
slot1.onTake(player, itemstack1);
+ this.activeQuickItem = null; // Purpur
+ this.activeQuickItem = null; // Purpur - Anvil API
}
return itemstack;
diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryAnvil.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryAnvil.java
index 9ee14589d63bbfc0880f2eee5e924fe946ee0035..0a5841fa26698e60bdeadbb58b9343fe1ff08a28 100644
index 9ee14589d63bbfc0880f2eee5e924fe946ee0035..062783f30f41761c34d7679844e443e9a55c6011 100644
--- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryAnvil.java
+++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryAnvil.java
@@ -9,7 +9,7 @@ import org.bukkit.inventory.AnvilInventory;
@@ -142,7 +144,7 @@ index 9ee14589d63bbfc0880f2eee5e924fe946ee0035..0a5841fa26698e60bdeadbb58b9343fe
private final Location location;
- private final AnvilMenu container;
+ public final AnvilMenu container; // Purpur - private -> public
+ public final AnvilMenu container; // Purpur - private -> public - Anvil API
public CraftInventoryAnvil(Location location, Container inventory, Container resultInventory, AnvilMenu container) {
super(inventory, resultInventory);
@@ -151,25 +153,25 @@ index 9ee14589d63bbfc0880f2eee5e924fe946ee0035..0a5841fa26698e60bdeadbb58b9343fe
this.container.maximumRepairCost = levels;
}
+
+ // Purpur start
+ // Purpur start - Anvil API
+ @Override
+ public boolean canBypassCost() {
+ return container.bypassCost;
+ return this.container.bypassCost;
+ }
+
+ @Override
+ public void setBypassCost(boolean bypassCost) {
+ container.bypassCost = bypassCost;
+ this.container.bypassCost = bypassCost;
+ }
+
+ @Override
+ public boolean canDoUnsafeEnchants() {
+ return container.canDoUnsafeEnchants;
+ return this.container.canDoUnsafeEnchants;
+ }
+
+ @Override
+ public void setDoUnsafeEnchants(boolean canDoUnsafeEnchants) {
+ container.canDoUnsafeEnchants = canDoUnsafeEnchants;
+ this.container.canDoUnsafeEnchants = canDoUnsafeEnchants;
+ }
+ // Purpur end
+ // Purpur end - Anvil API
}

View File

@@ -56,10 +56,10 @@ index b66d4047b5e529f5f737efb0ff1edda805de1316..e7075e0c59fe99229142ecb518fadc5b
if (this.keepAlivePending && !this.processedDisconnect && elapsedTime >= KEEPALIVE_LIMIT) { // Paper - check keepalive limit, don't fire if already disconnected
this.disconnect(ServerCommonPacketListenerImpl.TIMEOUT_DISCONNECTION_MESSAGE, PlayerKickEvent.Cause.TIMEOUT); // Paper - kick event cause
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
index f80414b9bb7fb1f2849749481209648516fb28fb..e4c01fc54f832f895adec75ac855b614ff77d19a 100644
index 9e6bcdaa2b3dabb2a7c50034eed81f0064a2f98f..4ddeff1d34f5e3f7f9c6cfe1c517be0e2d57f86f 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
@@ -198,6 +198,11 @@ public class PurpurConfig {
@@ -200,6 +200,11 @@ public class PurpurConfig {
laggingThreshold = getDouble("settings.lagging-threshold", laggingThreshold);
}

View File

@@ -0,0 +1,25 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Krakenied <Krakenied1@gmail.com>
Date: Sat, 15 Jun 2024 14:31:48 +0200
Subject: [PATCH] Add utility methods to deal with enchantments a bit easier
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 fce49b17905ab97e691aa8499a5dfed67adf0c40..97542361144a950f5b60021874688775226f292d 100644
--- a/src/main/java/net/minecraft/world/item/enchantment/EnchantmentHelper.java
+++ b/src/main/java/net/minecraft/world/item/enchantment/EnchantmentHelper.java
@@ -559,4 +559,14 @@ public class EnchantmentHelper {
interface EnchantmentVisitor {
void accept(Holder<Enchantment> enchantment, int level);
}
+
+ // Purpur start - Add utility methods to deal with enchantments a bit easier
+ public static Holder.Reference<Enchantment> getEnchantmentHolder(ResourceKey<Enchantment> enchantment) {
+ return net.minecraft.server.MinecraftServer.getServer().registryAccess().lookupOrThrow(Registries.ENCHANTMENT).getOrThrow(enchantment);
+ }
+
+ public static int getItemEnchantmentLevel(ResourceKey<Enchantment> enchantment, ItemStack stack) {
+ return getItemEnchantmentLevel(getEnchantmentHolder(enchantment), stack);
+ }
+ // Purpur end - Add utility methods to deal with enchantments a bit easier
}

View File

@@ -100,7 +100,7 @@ index 4f190a40b8474aa06a92c8afcc06d0044120ff7b..66c17bdfecdfbcfb2d853e561432dd51
int i = 15 + worldserver.random.nextInt(15) + worldserver.random.nextInt(15);
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 2f2986f9f7a241c4d7a1e065126dbbae601f7fe5..4beb1df3b5bdeb2e3de7f8e7ca9a53bf0f6be277 100644
index 2f2986f9f7a241c4d7a1e065126dbbae601f7fe5..b51c96bdc9871d7ef7d7eff2b24b0f516bb97236 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -108,6 +108,38 @@ public class PurpurWorldConfig {
@@ -134,7 +134,7 @@ index 2f2986f9f7a241c4d7a1e065126dbbae601f7fe5..4beb1df3b5bdeb2e3de7f8e7ca9a53bf
+ "minecraft:diamond_pickaxe",
+ "minecraft:netherite_pickaxe"
+ )).forEach(key -> {
+ Item item = BuiltInRegistries.ITEM.get(new ResourceLocation(key.toString()));
+ Item item = BuiltInRegistries.ITEM.get(ResourceLocation.parse(key.toString()));
+ if (item != Items.AIR) silkTouchTools.add(item);
+ });
+ }

View File

@@ -36,7 +36,7 @@ index a6f408e56fa6c9de82fd93555fe21e1b11ce1022..c7377d04ceac3ea624117439783a443c
}
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 4beb1df3b5bdeb2e3de7f8e7ca9a53bf0f6be277..aba1a09a949da1e1c70caf665b078c8979a5f746 100644
index b51c96bdc9871d7ef7d7eff2b24b0f516bb97236..9c0362396ae2646ee9caf6756ecdef3a605328a7 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -140,6 +140,15 @@ public class PurpurWorldConfig {

View File

@@ -53,10 +53,10 @@ index dc591702d1ad41209bb80e8d05f4ca11f20816f2..a63f090e75cf7d6561276c4297305d92
if (MinecraftServer.getServer() != null && MinecraftServer.getServer().isDebugging()) {
new Exception().printStackTrace();
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
index e4c01fc54f832f895adec75ac855b614ff77d19a..321a10764b2a0787a49d7b8948e40cfe0a73f591 100644
index 4ddeff1d34f5e3f7f9c6cfe1c517be0e2d57f86f..49737a87b75c971b823bc1f3a20c17faee9d537c 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
@@ -237,4 +237,15 @@ public class PurpurConfig {
@@ -239,4 +239,15 @@ public class PurpurConfig {
org.bukkit.event.inventory.InventoryType.ENDER_CHEST.setDefaultSize(enderChestSixRows ? 54 : 27);
enderChestPermissionRows = getBoolean("settings.blocks.ender_chest.use-permissions-for-rows", enderChestPermissionRows);
}

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Giants AI settings
diff --git a/src/main/java/net/minecraft/world/entity/monster/Giant.java b/src/main/java/net/minecraft/world/entity/monster/Giant.java
index 9602e59cbebeedc85ea75d2a41d3e74f0ff45b46..ca53c5b45c119dce1c713dbf931251f89c90cb8d 100644
index 9602e59cbebeedc85ea75d2a41d3e74f0ff45b46..0d211d4c120186667682dbb5f320ec45ef6c235d 100644
--- a/src/main/java/net/minecraft/world/entity/monster/Giant.java
+++ b/src/main/java/net/minecraft/world/entity/monster/Giant.java
@@ -30,8 +30,23 @@ public class Giant extends Monster {
@@ -43,7 +43,7 @@ index 9602e59cbebeedc85ea75d2a41d3e74f0ff45b46..ca53c5b45c119dce1c713dbf931251f8
+ net.minecraft.world.entity.SpawnGroupData groupData = super.finalizeSpawn(world, difficulty, spawnReason, entityData);
+ if (groupData == null) {
+ populateDefaultEquipmentSlots(this.random, difficulty);
+ populateDefaultEquipmentEnchantments(this.random, difficulty);
+ populateDefaultEquipmentEnchantments(world, this.random, difficulty);
+ }
+ return groupData;
+ }
@@ -71,7 +71,7 @@ index 9602e59cbebeedc85ea75d2a41d3e74f0ff45b46..ca53c5b45c119dce1c713dbf931251f8
}
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index aba1a09a949da1e1c70caf665b078c8979a5f746..a4e540f63746bf36d679fd632e0cf9924a0d2370 100644
index 9c0362396ae2646ee9caf6756ecdef3a605328a7..d60746b2a05a93683be845bdf36131c71091ed9b 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -576,6 +576,10 @@ public class PurpurWorldConfig {

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Zombie horse naturally spawn
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
index e8ed80cf7d7519eab614e5ae5326755b40c76623..c9efd62cba540f7cdd8a7ce37d455c9b190c5a12 100644
index bb61ccf3246ea69cf1eb097a95c3324d0802dae1..cad36bdd7463e23f23ed77f1b430031a19145de4 100644
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
@@ -815,10 +815,18 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf.
@@ -814,10 +814,18 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf.
boolean flag1 = this.getGameRules().getBoolean(GameRules.RULE_DOMOBSPAWNING) && this.random.nextDouble() < (double) difficultydamagescaler.getEffectiveDifficulty() * this.paperConfig().entities.spawning.skeletonHorseThunderSpawnChance.or(0.01D) && !this.getBlockState(blockposition.below()).is(Blocks.LIGHTNING_ROD); // Paper - Configurable spawn chances for skeleton horses
if (flag1) {
@@ -30,7 +30,7 @@ index e8ed80cf7d7519eab614e5ae5326755b40c76623..c9efd62cba540f7cdd8a7ce37d455c9b
entityhorseskeleton.setPos((double) blockposition.getX(), (double) blockposition.getY(), (double) blockposition.getZ());
this.addFreshEntity(entityhorseskeleton, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.LIGHTNING); // CraftBukkit
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index a4e540f63746bf36d679fd632e0cf9924a0d2370..72172293aedfef696b6649946746d39edf056363 100644
index d60746b2a05a93683be845bdf36131c71091ed9b..f0ea2bcb88630395d6f2bf2e7a658abcad124be4 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -1509,6 +1509,7 @@ public class PurpurWorldConfig {

View File

@@ -24,7 +24,7 @@ index 4cb68050f93027225b63176724b2c882902d8b71..a3b8b874dba75b0b2dfb89d8a31f875c
protected SoundEvent getHurtSound(DamageSource source) {
return SoundEvents.CREEPER_HURT;
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 72172293aedfef696b6649946746d39edf056363..4a05d99d81fd487fda33ec2aee7f981bb24766aa 100644
index f0ea2bcb88630395d6f2bf2e7a658abcad124be4..7d3380eb407c463327f82d06b24b94af8d4754ae 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -367,6 +367,7 @@ public class PurpurWorldConfig {

View File

@@ -33,7 +33,7 @@ index 826484123d864172a73e3d0d6e16923533748ea1..6cb70392a86b166c8f8a8f3944f7abe8
int i = world.getRandom().nextInt(100);
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 4a05d99d81fd487fda33ec2aee7f981bb24766aa..0a3a3a776e533b56ee3f67fca64bf76f514b1ab0 100644
index 7d3380eb407c463327f82d06b24b94af8d4754ae..567d2760551326764a3d62f7a933a767f0579227 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -1010,6 +1010,8 @@ public class PurpurWorldConfig {

View File

@@ -59,7 +59,7 @@ index 473c857b83b87d824800eb91b2019bcf106189ae..52c11b3621a9b834de8305ff98ad7671
// Paper start - Cancellable death event
protected org.bukkit.event.entity.EntityDeathEvent dropAllDeathLoot(ServerLevel world, DamageSource damageSource) {
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 0a3a3a776e533b56ee3f67fca64bf76f514b1ab0..7d1dd19a08ff1d57f9c9bd4b19851804427d6ef9 100644
index 567d2760551326764a3d62f7a933a767f0579227..e1da2a710808ecfc30c8b5594b3673518a475b0b 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -531,6 +531,7 @@ public class PurpurWorldConfig {

View File

@@ -59,7 +59,7 @@ index 9bb4fd13e3c60ed889f4acd941b48922c9a4e8df..590b015102bd1ea22da34448de2f1b75
this.goalSelector.addGoal(5, new RandomStrollGoal(this, 1.0));
this.goalSelector.addGoal(6, new LookAtPlayerGoal(this, Player.class, 6.0F));
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 7d1dd19a08ff1d57f9c9bd4b19851804427d6ef9..5b161e6d980f44183e3a6c532bb330e82ff228b1 100644
index e1da2a710808ecfc30c8b5594b3673518a475b0b..56198935e7df874abcd6801e351a5e56e89daf13 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -982,6 +982,8 @@ public class PurpurWorldConfig {
@@ -76,7 +76,7 @@ index 7d1dd19a08ff1d57f9c9bd4b19851804427d6ef9..5b161e6d980f44183e3a6c532bb330e8
}
polarBearMaxHealth = getDouble("mobs.polar_bear.attributes.max_health", polarBearMaxHealth);
+ polarBearBreedableItemString = getString("mobs.polar_bear.breedable-item", polarBearBreedableItemString);
+ Item item = BuiltInRegistries.ITEM.get(new ResourceLocation(polarBearBreedableItemString));
+ Item item = BuiltInRegistries.ITEM.get(ResourceLocation.parse(polarBearBreedableItemString));
+ if (item != Items.AIR) polarBearBreedableItem = item;
}

View File

@@ -51,7 +51,7 @@ index ca213cb0b8618b85c67066236eaba87c0439376f..1ff256f2a40403f0fbefc714e3609890
@Override
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 5b161e6d980f44183e3a6c532bb330e82ff228b1..ef4f35a59d716b7927a280c4da372268ad2ff395 100644
index 56198935e7df874abcd6801e351a5e56e89daf13..b343a05b3d8b09e761bafcfa960d9b769c168c77 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -321,6 +321,7 @@ public class PurpurWorldConfig {

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Add option to set armorstand step height
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
index 4c7439645974fd20f9f23196c5fbdce6ce324d13..de93640d0b458bafac8f661fb73c99c0bb596551 100644
index 6ff9e8bb038e7e1b89796a2e9d271371052ccf22..66f971c14efe9ecac26e84d031334f9bdeb87095 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -343,6 +343,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
@@ -16,7 +16,7 @@ index 4c7439645974fd20f9f23196c5fbdce6ce324d13..de93640d0b458bafac8f661fb73c99c0
public boolean noPhysics;
public final RandomSource random;
public int tickCount;
@@ -4637,7 +4638,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
@@ -4657,7 +4658,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
}
public float maxUpStep() {
@@ -38,7 +38,7 @@ index 2f398750bfee5758ad8b1367b6fc14364e4de776..9e6e29b9eddc94b50a32713e8ba1a53d
if (!this.canTick) {
if (this.noTickPoseDirty) {
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index ef4f35a59d716b7927a280c4da372268ad2ff395..bc42fbcb073b8b6f278e256ac66fd514e747a1fe 100644
index b343a05b3d8b09e761bafcfa960d9b769c168c77..b6e8c4d1814ab07c961e736e2d1b9155c5339a52 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -90,6 +90,11 @@ public class PurpurWorldConfig {

View File

@@ -46,7 +46,7 @@ index e0e5046c84941a8d17e18c177f3daea9cb631940..d503d7a5837dbeb98e58dbe8f7e5de45
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index bc42fbcb073b8b6f278e256ac66fd514e747a1fe..ebf1e3abed78f8a2d90764b8f0c5481bcfbc8de5 100644
index b6e8c4d1814ab07c961e736e2d1b9155c5339a52..17f54a4de62555e2c6d86275ee9dd7ca51dea147 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -294,6 +294,9 @@ public class PurpurWorldConfig {

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Cows eat mushrooms
diff --git a/src/main/java/net/minecraft/world/entity/animal/Cow.java b/src/main/java/net/minecraft/world/entity/animal/Cow.java
index 478663c16a5763dda9a6c3edbafc843b8dfe06f2..bf5935fbd8e3edfb1221dd06ea1e1a2c8fb887fd 100644
index 478663c16a5763dda9a6c3edbafc843b8dfe06f2..a1036e44116ef0848fbb438526f9a117ee2bfaa9 100644
--- a/src/main/java/net/minecraft/world/entity/animal/Cow.java
+++ b/src/main/java/net/minecraft/world/entity/animal/Cow.java
@@ -73,7 +73,7 @@ public class Cow extends Animal {
@@ -28,7 +28,7 @@ index 478663c16a5763dda9a6c3edbafc843b8dfe06f2..bf5935fbd8e3edfb1221dd06ea1e1a2c
} else {
return super.mobInteract(player, hand);
}
@@ -150,4 +154,69 @@ public class Cow extends Animal {
@@ -150,4 +154,66 @@ public class Cow extends Animal {
public EntityDimensions getDefaultDimensions(Pose pose) {
return this.isBaby() ? Cow.BABY_DIMENSIONS : super.getDefaultDimensions(pose);
}
@@ -81,9 +81,6 @@ index 478663c16a5763dda9a6c3edbafc843b8dfe06f2..bf5935fbd8e3edfb1221dd06ea1e1a2c
+ if (CraftEventFactory.callEntityTransformEvent(this, mooshroom, org.bukkit.event.entity.EntityTransformEvent.TransformReason.INFECTION).isCancelled()) {
+ return InteractionResult.PASS;
+ }
+ if (!new com.destroystokyo.paper.event.entity.EntityTransformedEvent(this.getBukkitEntity(), mooshroom.getBukkitEntity(), com.destroystokyo.paper.event.entity.EntityTransformedEvent.TransformedReason.INFECTED).callEvent()) {
+ return InteractionResult.PASS;
+ }
+ this.level().addFreshEntity(mooshroom);
+ this.remove(RemovalReason.DISCARDED, org.bukkit.event.entity.EntityRemoveEvent.Cause.DISCARD);
+ if (!player.getAbilities().instabuild) {
@@ -99,7 +96,7 @@ index 478663c16a5763dda9a6c3edbafc843b8dfe06f2..bf5935fbd8e3edfb1221dd06ea1e1a2c
+ // Purpur end
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index ebf1e3abed78f8a2d90764b8f0c5481bcfbc8de5..ebffa181f84ed8d2c246e104727186231061b5e2 100644
index 17f54a4de62555e2c6d86275ee9dd7ca51dea147..7177f38088d262e4be8718d234f895990bbd7887 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -364,6 +364,7 @@ public class PurpurWorldConfig {

View File

@@ -27,7 +27,7 @@ index 0f7e77e4f72be611a34ebe00d9979179519c54d9..7b5080993904a41083aa534a87a6eed2
if (!this.level().isClientSide) {
player.startRiding(this);
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index ebffa181f84ed8d2c246e104727186231061b5e2..65924f91027841a91ed10de7301b39646ab1696c 100644
index 7177f38088d262e4be8718d234f895990bbd7887..2cc17c7991c645e5cd2d13cecc552baf91b7bc8a 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -933,6 +933,7 @@ public class PurpurWorldConfig {

View File

@@ -24,7 +24,7 @@ index a54893d51cc1ce204e59a6ffe8b84228775af4da..0060414b1d5afde56372ce121e9d37a1
return tryRide(player, hand); // Purpur
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 65924f91027841a91ed10de7301b39646ab1696c..bc428f01d431b9d63d6a64607fa2e294c4b122f3 100644
index 2cc17c7991c645e5cd2d13cecc552baf91b7bc8a..8b5a4141e414bf1e58237532bbc47729af07c4e8 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -1198,6 +1198,7 @@ public class PurpurWorldConfig {

View File

@@ -18,7 +18,7 @@ index 4218c84f3bef499bd6ebd4df224d4dcc95f5ce6c..bf2591f163b8482d35a6e53200467719
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index bc428f01d431b9d63d6a64607fa2e294c4b122f3..2e851587620aca4366da17f3fe1fd79eb4d48ca0 100644
index 8b5a4141e414bf1e58237532bbc47729af07c4e8..382214ecf9a3d58b2df9cc46a45c0e24c56fe74f 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -477,6 +477,7 @@ public class PurpurWorldConfig {

View File

@@ -18,7 +18,7 @@ index d59e33e7326489c6d55d316d0130f22235f4c63c..da85fabd75e9bd5ebece7127ef5b512d
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 2e851587620aca4366da17f3fe1fd79eb4d48ca0..8665e24197df9001c58389c8b79716510d17743b 100644
index 382214ecf9a3d58b2df9cc46a45c0e24c56fe74f..9a463e1e47033509cc1fb874f6046f46c66ae172 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -145,6 +145,11 @@ public class PurpurWorldConfig {

View File

@@ -149,7 +149,7 @@ index a768b07dae4bf75b68e3bc1d3de4b68fc7d23842..1b825b9012e24b12f83883f2056839c1
protected ResourceKey<LootTable> drops;
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 8665e24197df9001c58389c8b79716510d17743b..ce11e8ffb0853a4d1beb91248b255d785138893b 100644
index 9a463e1e47033509cc1fb874f6046f46c66ae172..ef94bc1dc4e4145d5691c6a6d78e67a580a744e1 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -95,6 +95,68 @@ public class PurpurWorldConfig {
@@ -207,7 +207,7 @@ index 8665e24197df9001c58389c8b79716510d17743b..ce11e8ffb0853a4d1beb91248b255d78
+ ConfigurationSection section = getConfigurationSection("gameplay-mechanics.minecart.controllable.block-speed");
+ if (section != null) {
+ for (String key : section.getKeys(false)) {
+ Block block = BuiltInRegistries.BLOCK.get(new ResourceLocation(key));
+ Block block = BuiltInRegistries.BLOCK.get(ResourceLocation.parse(key));
+ if (block != Blocks.AIR) {
+ minecartControllableBlockSpeeds.put(block, section.getDouble(key, minecartControllableBaseSpeed));
+ }

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Disable loot drops on death by cramming
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
index 8f9756736b08fbaa78b7cff9fa78657c9877e89d..fa30e935c939c3aa7dab562a25aefb8370155da3 100644
index 8bad6672c689c7bc65e5941887b3826ad99e36bb..a3f400336e0013dab8845492b0e124f4414cf59f 100644
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
@@ -1831,7 +1831,8 @@ public abstract class LivingEntity extends Entity implements Attackable {
@@ -27,7 +27,7 @@ index 8f9756736b08fbaa78b7cff9fa78657c9877e89d..fa30e935c939c3aa7dab562a25aefb83
// CraftBukkit start - Call death event // Paper start - call advancement triggers with correct entity equipment
org.bukkit.event.entity.EntityDeathEvent deathEvent = CraftEventFactory.callEntityDeathEvent(this, damageSource, this.drops, () -> {
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index ce11e8ffb0853a4d1beb91248b255d785138893b..aec526d7d148c815cd724ea886486ac7508f4440 100644
index ef94bc1dc4e4145d5691c6a6d78e67a580a744e1..9faca17345d8ea25e19ebb89fda97f5552e3f8d6 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -95,6 +95,11 @@ public class PurpurWorldConfig {

View File

@@ -19,7 +19,7 @@ index 43c9dea6b0db7f8d6070dedcb472883ab46d9eaf..15a1f9ffbf640bffadca97e28f72b6a5
if (user instanceof Player entityhuman) {
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index aec526d7d148c815cd724ea886486ac7508f4440..8f219c6074c2ee882686f59ef5128e94d2e61578 100644
index 9faca17345d8ea25e19ebb89fda97f5552e3f8d6..c297a379867f56f6b9d3c5487a9d666daf7cc78d 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -96,8 +96,10 @@ public class PurpurWorldConfig {

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Skip events if there's no listeners
diff --git a/src/main/java/net/minecraft/commands/Commands.java b/src/main/java/net/minecraft/commands/Commands.java
index d0a2581bc87df5335c064fa7854caf0bab512e91..f12f208c1c4669b0aae35cb86b122bbf06fd884a 100644
index eb488f598de412849ad6fd83161cfaebe043be14..f5989a4e4a9f6d983d664a9f74ccdfebf91ed4d9 100644
--- a/src/main/java/net/minecraft/commands/Commands.java
+++ b/src/main/java/net/minecraft/commands/Commands.java
@@ -518,6 +518,7 @@ public class Commands {

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Add permission for F3+N debug
diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java
index 27391592eca984295c648edefce50f3360f5be1e..09595bbd536fc84d309163923317a860f606ea7c 100644
index 3db05bb52fef8e465e6d3575c8126521141c18c9..fe0f7f6a1b9a4c2b298a0e0d9172fc8f04d16459 100644
--- a/src/main/java/net/minecraft/server/players/PlayerList.java
+++ b/src/main/java/net/minecraft/server/players/PlayerList.java
@@ -1132,6 +1132,7 @@ public abstract class PlayerList {

View File

@@ -22,10 +22,10 @@ index 0f53f5d5c25f115cf6bc7b0fdd844521a15ccfbd..709611a974f957c101aeba9002b38283
this.waitUntilNextTick();
this.finishMeasuringTaskExecutionTime();
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
index 321a10764b2a0787a49d7b8948e40cfe0a73f591..29d7c792277ff17f5119cf391c4fe4b86797adf0 100644
index 49737a87b75c971b823bc1f3a20c17faee9d537c..5fc5ae6f6e04e1fe4edfd22379bbfa52b5af0bc2 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
@@ -248,4 +248,9 @@ public class PurpurConfig {
@@ -250,4 +250,9 @@ public class PurpurConfig {
loggerSuppressUnrecognizedRecipeErrors = getBoolean("settings.logger.suppress-unrecognized-recipe-errors", loggerSuppressUnrecognizedRecipeErrors);
loggerSuppressSetBlockFarChunk = getBoolean("settings.logger.suppress-setblock-in-far-chunk-errors", loggerSuppressSetBlockFarChunk);
}

View File

@@ -18,7 +18,7 @@ index cb71f468e90f076caf2c0dcc5f2ba2745c737c22..c8dbca9573060f7d9c2a0a96a532f06d
if (!this.level().isClientSide && this.pickup == AbstractArrow.Pickup.ALLOWED) {
this.spawnAtLocation(this.getPickupItem(), 0.1F);
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 8f219c6074c2ee882686f59ef5128e94d2e61578..ce91250794af7d121f6752509135f37d68cd3e7c 100644
index c297a379867f56f6b9d3c5487a9d666daf7cc78d..d1058d129a7b1167092a35f6f1ab489e699d1510 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -97,9 +97,11 @@ public class PurpurWorldConfig {

View File

@@ -38,7 +38,7 @@ index 37b1d81f6a77affe345a78fefbd86a156e9db193..12422c069c64bae0e16b3edd39e8dbe5
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index ce91250794af7d121f6752509135f37d68cd3e7c..d5e4e2fbee5061d4ea267310e0458dff3f905e32 100644
index d1058d129a7b1167092a35f6f1ab489e699d1510..a35d9ed67ce320b996981696dc9f515712f52204 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -459,6 +459,7 @@ public class PurpurWorldConfig {

View File

@@ -30,7 +30,7 @@ index 49b35fab8ee98a384ee12d36bbe2ac813342f1d6..142bcf71448e2c54991fd144269f74c7
// 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 cd024c26d0658aa150a7d516b9b447eb72ebf26a..4a8da72d81a1938fa82dd1d2d861defd2bdac4b7 100644
index 97071390c66aaeb37c41778d6b7f8a5af4522274..4ae45a7dae279cb1b8048ce4eff2aa1ae4e19f68 100644
--- a/src/main/java/net/minecraft/world/entity/npc/Villager.java
+++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java
@@ -154,6 +154,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
@@ -54,7 +54,7 @@ index a4ca761f6e8e6e8f86fc20ce5e3dcf92a66b3f2a..6990d6dc306b1d25544793b365fd6f7b
this.goalSelector.addGoal(8, new WaterAvoidingRandomStrollGoal(this, 0.35D));
this.goalSelector.addGoal(9, new InteractGoal(this, Player.class, 3.0F, 1.0F));
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index d5e4e2fbee5061d4ea267310e0458dff3f905e32..851014c5c02491cdbe778844251d3ec6a4236ff8 100644
index a35d9ed67ce320b996981696dc9f515712f52204..7dfe1afed783938308d8f89629cf91fb34f358ee 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -1457,6 +1457,7 @@ public class PurpurWorldConfig {

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Allow leashing villagers
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
index de93640d0b458bafac8f661fb73c99c0bb596551..289a516b56a6a6c97ecda3768ea08b91348a79ed 100644
index e8ccd831c629418d96f81ef3be03e8a5d43f7213..b65ae7b4ddc7a1f3d2f66d63a62b766f5803b5ad 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -2731,6 +2731,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
@@ -2762,6 +2762,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
if (this.isAlive() && this instanceof Leashable leashable) {
if (leashable.getLeashHolder() == player) {
if (!this.level().isClientSide()) {
@@ -49,7 +49,7 @@ index 6990d6dc306b1d25544793b365fd6f7be8a37201..0d5e828a7fb6fd6facc04a27175541ac
@Override
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 851014c5c02491cdbe778844251d3ec6a4236ff8..28ca277a383eefbc96f07e05d98d4a9f460807af 100644
index 7dfe1afed783938308d8f89629cf91fb34f358ee..a15dd3994240a4b48558f8d92a546a24153419e8 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -1458,6 +1458,7 @@ public class PurpurWorldConfig {

View File

@@ -67,7 +67,7 @@ index 109f71401c65f476ccf6813137386fc9fef10254..9dcdb2f4001115db0c26fdbf86531dbe
@Override
protected void beforeDestroyingBlock(LevelAccessor world, BlockPos pos, BlockState state, BlockPos source) {
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 28ca277a383eefbc96f07e05d98d4a9f460807af..de44c8ffa61bb5d694cd635ebf3a5ce8ac9ef414 100644
index a15dd3994240a4b48558f8d92a546a24153419e8..40402d33fe13a779cd84977ea1c8eb13484c76d2 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -221,6 +221,11 @@ public class PurpurWorldConfig {

View File

@@ -18,7 +18,7 @@ index 4c230136d832d50ae16ffa037b0b30ff1101b50a..2d492d849ff73a738dfbcb16507feb89
@Override
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index de44c8ffa61bb5d694cd635ebf3a5ce8ac9ef414..b9a1a8497b5d5a55d7547da5755ceeb4fd35f3c8 100644
index 40402d33fe13a779cd84977ea1c8eb13484c76d2..9206ea37f1122a878952516ac23bc68811276735 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -222,8 +222,12 @@ public class PurpurWorldConfig {

View File

@@ -32,7 +32,7 @@ index 9ef4ab973508eb139f7a44feb4bd484d8e0e03cd..025309a47e9683ec29cd94f997663b7f
return 0;
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index b9a1a8497b5d5a55d7547da5755ceeb4fd35f3c8..c6c38f53357f79c984e3e5d23298067a7688efcd 100644
index 9206ea37f1122a878952516ac23bc68811276735..990aa0a71076789af0eba7ed22c2f52536a0fbae 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -171,6 +171,8 @@ public class PurpurWorldConfig {

View File

@@ -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 289a516b56a6a6c97ecda3768ea08b91348a79ed..0056b23f6e883a057c267b4ca4c807b8a929a515 100644
index b65ae7b4ddc7a1f3d2f66d63a62b766f5803b5ad..0989543cd39e337b2a4abb3184a623fc0ae39202 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -881,7 +881,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
@@ -912,7 +912,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
public void checkBelowWorld() {
// Paper start - Configurable nether ceiling damage
@@ -18,7 +18,7 @@ index 289a516b56a6a6c97ecda3768ea08b91348a79ed..0056b23f6e883a057c267b4ca4c807b8
&& (!(this instanceof Player player) || !player.getAbilities().invulnerable))) {
// Paper end - Configurable nether ceiling damage
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
index a3f400336e0013dab8845492b0e124f4414cf59f..6f7188ccba2675264ba8fbfd05cacc1c60211157 100644
index d6c550b11c99dcc5beced14f03317e5973de6550..f51d4d93ce91eff11889f814256fdef36115cc04 100644
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
@@ -2576,7 +2576,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
@@ -31,7 +31,7 @@ index a3f400336e0013dab8845492b0e124f4414cf59f..6f7188ccba2675264ba8fbfd05cacc1c
protected void updateSwingTime() {
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index c6c38f53357f79c984e3e5d23298067a7688efcd..be57857fc31ba32b47bd5d50d2898c5eb1ff9bd8 100644
index 990aa0a71076789af0eba7ed22c2f52536a0fbae..ee683604d94476bdeaac73d6b34091b44b47128f 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -98,10 +98,14 @@ public class PurpurWorldConfig {

View File

@@ -5,7 +5,7 @@ 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 0056b23f6e883a057c267b4ca4c807b8a929a515..92c7c8e75a8d8d97496b24bf0b6719aeeb1440dc 100644
index 0989543cd39e337b2a4abb3184a623fc0ae39202..93d69b90b22a167eb8e64c0882e42258c2d6c101 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -530,6 +530,11 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
@@ -37,12 +37,12 @@ index 63f48841c849ff49d9d43efc5de8952c5a9bba3a..e472df057d087fe46bd40b798c050ed6
@Override
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 503ac0374e0c9f9993ad37bb8bd8cf1570d3615a..8987312954f17465b0a6f39f83aa29a727ad1125 100644
index d4a505ef4af9ded02aeb1a817bcbe5b1a912a5b3..97a310f042db1a838a744d2909d261aaf253ea17 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
@@ -94,6 +94,7 @@ public class EntityStorage implements EntityPersistentStorage<Entity> {
ListTag listTag = new ListTag();
dataList.getEntities().forEach(entity -> {
@@ -105,6 +105,7 @@ public class EntityStorage implements EntityPersistentStorage<Entity> {
}
// Paper end - Entity load/save limit per chunk
CompoundTag compoundTagx = new CompoundTag();
+ if (!entity.canSaveToDisk()) return; // Purpur
if (entity.save(compoundTagx)) {

View File

@@ -4,25 +4,25 @@ Date: Sun, 25 Aug 2019 00:09:52 -0500
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 091d2b1646068657120ee4244d79cbf7867a9cf7..28ff18c341703148e880e4d4a64b73daa136c32a 100644
--- a/src/main/java/net/minecraft/world/entity/Mob.java
+++ b/src/main/java/net/minecraft/world/entity/Mob.java
@@ -1307,6 +1307,12 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
index f51d4d93ce91eff11889f814256fdef36115cc04..e7853a16674ee748ebbf378044cb484cfdf6b73e 100644
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
@@ -4497,6 +4497,12 @@ public abstract class LivingEntity extends Entity implements Attackable {
return EquipmentSlot.MAINHAND;
}
+ // Purpur start
+ public static @Nullable EquipmentSlot getSlotForDispenser(ItemStack itemstack) {
+ return EnchantmentHelper.getItemEnchantmentLevel(net.minecraft.world.item.enchantment.Enchantments.BINDING_CURSE, itemstack) > 0 ? null : getEquipmentSlotForItem(itemstack);
+ // Purpur start - Dispenser curse of binding protection
+ public @Nullable EquipmentSlot getEquipmentSlotForDispenserItem(ItemStack itemstack) {
+ return EnchantmentHelper.getItemEnchantmentLevel(net.minecraft.world.item.enchantment.Enchantments.BINDING_CURSE, itemstack) > 0 ? null : this.getEquipmentSlotForItem(itemstack);
+ }
+ // Purpur end
+ // Purpur end - Dispenser curse of binding protection
+
@Nullable
public static Item getEquipmentForSlot(EquipmentSlot equipmentSlot, int equipmentLevel) {
switch (equipmentSlot) {
private static SlotAccess createEquipmentSlotAccess(LivingEntity entity, EquipmentSlot slot) {
return slot != EquipmentSlot.HEAD && slot != EquipmentSlot.MAINHAND && slot != EquipmentSlot.OFFHAND ? SlotAccess.forEquipmentSlot(entity, slot, (itemstack) -> {
return itemstack.isEmpty() || entity.getEquipmentSlotForItem(itemstack) == slot;
diff --git a/src/main/java/net/minecraft/world/item/ArmorItem.java b/src/main/java/net/minecraft/world/item/ArmorItem.java
index 647a4601deace52f8d855f512a73671f82b4762a..d6bdd6313e0e5be3ddfa04f40cf035e72e09f1ea 100644
index 647a4601deace52f8d855f512a73671f82b4762a..d05b1e129eee07434d162e1b949fd5633418ef66 100644
--- a/src/main/java/net/minecraft/world/item/ArmorItem.java
+++ b/src/main/java/net/minecraft/world/item/ArmorItem.java
@@ -60,7 +60,7 @@ public class ArmorItem extends Item implements Equipable {
@@ -30,12 +30,12 @@ index 647a4601deace52f8d855f512a73671f82b4762a..d6bdd6313e0e5be3ddfa04f40cf035e7
} else {
LivingEntity entityliving = (LivingEntity) list.get(0);
- EquipmentSlot enumitemslot = entityliving.getEquipmentSlotForItem(armor);
+ EquipmentSlot enumitemslot = pointer.level().purpurConfig.dispenserApplyCursedArmor ? entityliving.getEquipmentSlotForItem(armor) : Mob.getSlotForDispenser(armor); if (enumitemslot == null) return false; // Purpur
+ EquipmentSlot enumitemslot = pointer.level().purpurConfig.dispenserApplyCursedArmor ? entityliving.getEquipmentSlotForItem(armor) : entityliving.getEquipmentSlotForDispenserItem(armor); if (enumitemslot == null) return false; // Purpur - Dispenser curse of binding protection
ItemStack itemstack1 = armor.copyWithCount(1); // Paper - shrink below and single item in event
// CraftBukkit start
Level world = pointer.level();
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index be57857fc31ba32b47bd5d50d2898c5eb1ff9bd8..4e4f037c6b1c75467a4f2c58001c8a1cb7a9d79f 100644
index ee683604d94476bdeaac73d6b34091b44b47128f..7096fd85e1c46097aa6d1c2e1bd511d36a9c486e 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -224,6 +224,11 @@ public class PurpurWorldConfig {

View File

@@ -17,7 +17,7 @@ index 907f751c859855484151fb5d607acee2f2a35076..4e1b2d65182f7d562a8470449b9f7c2e
} else {
return Boat.Status.IN_AIR;
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 4e4f037c6b1c75467a4f2c58001c8a1cb7a9d79f..240c34bd95be07f19fb92d9b6678e6feffe2430e 100644
index 7096fd85e1c46097aa6d1c2e1bd511d36a9c486e..94df007142fc6dc1c9dbbd9af5219b87ace4d65d 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -95,12 +95,14 @@ public class PurpurWorldConfig {

View File

@@ -1,110 +0,0 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: William Blake Galbreath <blake.galbreath@gmail.com>
Date: Sun, 14 Jul 2019 19:52:47 -0500
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 15844971ce2cca8c679ad3aaa2dfe160e6d0b564..6598a737db11fb0c7e7a95b9bbfaabd75895cbdd 100644
--- a/src/main/java/net/minecraft/world/entity/ExperienceOrb.java
+++ b/src/main/java/net/minecraft/world/entity/ExperienceOrb.java
@@ -20,6 +20,7 @@ import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.enchantment.EnchantedItemInUse;
import net.minecraft.world.item.enchantment.EnchantmentEffectComponents;
import net.minecraft.world.item.enchantment.EnchantmentHelper;
+import net.minecraft.world.item.enchantment.Enchantments;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.entity.EntityTypeTest;
import net.minecraft.world.phys.AABB;
@@ -347,7 +348,7 @@ public class ExperienceOrb extends Entity {
}
private int repairPlayerItems(ServerPlayer player, int amount) {
- Optional<EnchantedItemInUse> optional = EnchantmentHelper.getRandomItemWith(EnchantmentEffectComponents.REPAIR_WITH_XP, player, ItemStack::isDamaged);
+ Optional<EnchantedItemInUse> optional = level().purpurConfig.useBetterMending ? EnchantmentHelper.getMostDamagedEquipment(Enchantments.MENDING, player) : EnchantmentHelper.getRandomItemWith(EnchantmentEffectComponents.REPAIR_WITH_XP, player, ItemStack::isDamaged); // Purpur
if (optional.isPresent()) {
ItemStack itemstack = ((EnchantedItemInUse) optional.get()).itemStack();
diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java
index 312b57b4ef340935f4335989ce1d6a4b8b61532c..930cc4c38a7c7631b140f7735cb03f4c82553375 100644
--- a/src/main/java/net/minecraft/world/item/ItemStack.java
+++ b/src/main/java/net/minecraft/world/item/ItemStack.java
@@ -643,6 +643,16 @@ public final class ItemStack implements DataComponentHolder {
return this.isDamageableItem() && this.getDamageValue() > 0;
}
+ // Purpur start
+ public float getDamagePercent() {
+ if (isDamaged()) {
+ return (float) getDamageValue() / (float) getMaxDamage();
+ } else {
+ return 0F;
+ }
+ }
+ // Purpur end
+
public int getDamageValue() {
return Mth.clamp((Integer) this.getOrDefault(DataComponents.DAMAGE, 0), 0, this.getMaxDamage());
}
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 fce49b17905ab97e691aa8499a5dfed67adf0c40..5ef8f69a4271c0a70380b5bd321735ff3e2b8cdd 100644
--- a/src/main/java/net/minecraft/world/item/enchantment/EnchantmentHelper.java
+++ b/src/main/java/net/minecraft/world/item/enchantment/EnchantmentHelper.java
@@ -6,6 +6,7 @@ import it.unimi.dsi.fastutil.objects.Object2IntMap.Entry;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
+import java.util.Map;
import java.util.Optional;
import java.util.function.BiConsumer;
import java.util.function.Consumer;
@@ -380,6 +381,29 @@ public class EnchantmentHelper {
return false;
}
+ // Purpur start
+ @Nullable
+ public static Map.Entry<EquipmentSlot, ItemStack> getMostDamagedEquipment(Enchantment enchantment, LivingEntity entity) {
+ Map<EquipmentSlot, ItemStack> map = enchantment.getSlotItems(entity);
+ if (map.isEmpty()) {
+ return null;
+ }
+ Map.Entry<EquipmentSlot, ItemStack> item = null;
+ float maxPercent = 0F;
+ for (Map.Entry<EquipmentSlot, ItemStack> entry : map.entrySet()) {
+ ItemStack itemstack = entry.getValue();
+ if (!itemstack.isEmpty() && itemstack.isDamaged() && getItemEnchantmentLevel(enchantment, itemstack) > 0) {
+ float percent = itemstack.getDamagePercent();
+ if (item == null || percent > maxPercent) {
+ item = entry;
+ maxPercent = percent;
+ }
+ }
+ }
+ return item;
+ }
+ // Purpur end
+
public static boolean has(ItemStack stack, DataComponentType<?> componentType) {
MutableBoolean mutableBoolean = new MutableBoolean(false);
runIterationOnItem(stack, (enchantment, level) -> {
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 240c34bd95be07f19fb92d9b6678e6feffe2430e..9c87144050ed62ca030e51ae08d8a977e935ba68 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -95,6 +95,7 @@ public class PurpurWorldConfig {
armorstandStepHeight = (float) getDouble("gameplay-mechanics.armorstand.step-height", armorstandStepHeight);
}
+ public boolean useBetterMending = false;
public boolean boatEjectPlayersOnLand = false;
public boolean disableDropsOnCrammingDeath = false;
public boolean milkCuresBadOmen = true;
@@ -102,6 +103,7 @@ public class PurpurWorldConfig {
public double voidDamageHeight = -64.0D;
public double voidDamageDealt = 4.0D;
private void miscGameplayMechanicsSettings() {
+ useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending);
boatEjectPlayersOnLand = getBoolean("gameplay-mechanics.boat.eject-players-on-land", boatEjectPlayersOnLand);
disableDropsOnCrammingDeath = getBoolean("gameplay-mechanics.disable-drops-on-cramming-death", disableDropsOnCrammingDeath);
milkCuresBadOmen = getBoolean("gameplay-mechanics.milk-cures-bad-omen", milkCuresBadOmen);

View File

@@ -0,0 +1,134 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: William Blake Galbreath <blake.galbreath@gmail.com>
Date: Sun, 14 Jul 2019 19:52:47 -0500
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 15844971ce2cca8c679ad3aaa2dfe160e6d0b564..9743e3ed1bbccc44c39df864e980e64fc5e32e1d 100644
--- a/src/main/java/net/minecraft/world/entity/ExperienceOrb.java
+++ b/src/main/java/net/minecraft/world/entity/ExperienceOrb.java
@@ -347,7 +347,7 @@ public class ExperienceOrb extends Entity {
}
private int repairPlayerItems(ServerPlayer player, int amount) {
- Optional<EnchantedItemInUse> optional = EnchantmentHelper.getRandomItemWith(EnchantmentEffectComponents.REPAIR_WITH_XP, player, ItemStack::isDamaged);
+ Optional<EnchantedItemInUse> optional = level().purpurConfig.useBetterMending ? EnchantmentHelper.getMostDamagedItemWith(EnchantmentEffectComponents.REPAIR_WITH_XP, player) : EnchantmentHelper.getRandomItemWith(EnchantmentEffectComponents.REPAIR_WITH_XP, player, ItemStack::isDamaged); // Purpur - Add option to mend the most damaged equipment first
if (optional.isPresent()) {
ItemStack itemstack = ((EnchantedItemInUse) optional.get()).itemStack();
diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java
index 312b57b4ef340935f4335989ce1d6a4b8b61532c..00665c3e81264b440cd27431f7632f3bc2b1ceef 100644
--- a/src/main/java/net/minecraft/world/item/ItemStack.java
+++ b/src/main/java/net/minecraft/world/item/ItemStack.java
@@ -643,6 +643,26 @@ public final class ItemStack implements DataComponentHolder {
return this.isDamageableItem() && this.getDamageValue() > 0;
}
+ // Purpur start - Add option to mend the most damaged equipment first
+ public float getDamagePercent() {
+ if (this.has(DataComponents.UNBREAKABLE)) {
+ return 0.0F;
+ }
+
+ final int maxDamage = this.getOrDefault(DataComponents.MAX_DAMAGE, 0);
+ if (maxDamage == 0) {
+ return 0.0F;
+ }
+
+ final int damage = this.getOrDefault(DataComponents.DAMAGE, 0);
+ if (damage == 0) {
+ return 0.0F;
+ }
+
+ return (float) damage / maxDamage;
+ }
+ // Purpur end - Add option to mend the most damaged equipment first
+
public int getDamageValue() {
return Mth.clamp((Integer) this.getOrDefault(DataComponents.DAMAGE, 0), 0, this.getMaxDamage());
}
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 97542361144a950f5b60021874688775226f292d..a33419a7a15aec82c7eaecffd927bd8fb8285c0b 100644
--- a/src/main/java/net/minecraft/world/item/enchantment/EnchantmentHelper.java
+++ b/src/main/java/net/minecraft/world/item/enchantment/EnchantmentHelper.java
@@ -6,6 +6,7 @@ import it.unimi.dsi.fastutil.objects.Object2IntMap.Entry;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
+import java.util.Map;
import java.util.Optional;
import java.util.function.BiConsumer;
import java.util.function.Consumer;
@@ -569,4 +570,51 @@ public class EnchantmentHelper {
return getItemEnchantmentLevel(getEnchantmentHolder(enchantment), stack);
}
// Purpur end - Add utility methods to deal with enchantments a bit easier
+
+ // Purpur start - Add option to mend the most damaged equipment first
+ public static Optional<EnchantedItemInUse> getMostDamagedItemWith(DataComponentType<?> componentType, LivingEntity entity) {
+ ItemStack maxStack = null;
+ EquipmentSlot maxSlot = null;
+ float maxPercent = 0.0F;
+
+ equipmentSlotLoop:
+ for (EquipmentSlot equipmentSlot : EquipmentSlot.values()) {
+ ItemStack stack = entity.getItemBySlot(equipmentSlot);
+
+ // do not even check enchantments for item with lower or equal damage percent
+ float percent = stack.getDamagePercent();
+ if (percent <= maxPercent) {
+ continue;
+ }
+
+ ItemEnchantments itemEnchantments = stack.getOrDefault(DataComponents.ENCHANTMENTS, ItemEnchantments.EMPTY);
+
+ for (Entry<Holder<Enchantment>> entry : itemEnchantments.entrySet()) {
+ Enchantment enchantment = entry.getKey().value();
+
+ net.minecraft.core.component.DataComponentMap effects = enchantment.effects();
+ if (!effects.has(componentType)) {
+ // try with another enchantment
+ continue;
+ }
+
+ List<EquipmentSlotGroup> slotGroups = enchantment.definition().slots();
+ for (EquipmentSlotGroup slotGroup : slotGroups) {
+ if (slotGroup.test(equipmentSlot)) {
+ maxStack = stack;
+ maxSlot = equipmentSlot;
+ maxPercent = percent;
+
+ // check another slot now
+ continue equipmentSlotLoop;
+ }
+ }
+ }
+ }
+
+ return maxStack != null
+ ? Optional.of(new EnchantedItemInUse(maxStack, maxSlot, entity))
+ : Optional.empty();
+ }
+ // Purpur end - Add option to mend the most damaged equipment first
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 94df007142fc6dc1c9dbbd9af5219b87ace4d65d..f980e39b09f38e1c8265a8fe65de91178579326f 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -95,6 +95,7 @@ public class PurpurWorldConfig {
armorstandStepHeight = (float) getDouble("gameplay-mechanics.armorstand.step-height", armorstandStepHeight);
}
+ public boolean useBetterMending = false;
public boolean boatEjectPlayersOnLand = false;
public boolean disableDropsOnCrammingDeath = false;
public boolean milkCuresBadOmen = true;
@@ -102,6 +103,7 @@ public class PurpurWorldConfig {
public double voidDamageHeight = -64.0D;
public double voidDamageDealt = 4.0D;
private void miscGameplayMechanicsSettings() {
+ useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending);
boatEjectPlayersOnLand = getBoolean("gameplay-mechanics.boat.eject-players-on-land", boatEjectPlayersOnLand);
disableDropsOnCrammingDeath = getBoolean("gameplay-mechanics.disable-drops-on-cramming-death", disableDropsOnCrammingDeath);
milkCuresBadOmen = getBoolean("gameplay-mechanics.milk-cures-bad-omen", milkCuresBadOmen);

View File

@@ -46,10 +46,10 @@ index 218f2f085309f04438f8b07bc41cf242583db2dc..ea8e49b42b9dde74784189430be66ed6
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 930cc4c38a7c7631b140f7735cb03f4c82553375..bb9f480e5a2083633ddde5607b05048bab5f1b52 100644
index 00665c3e81264b440cd27431f7632f3bc2b1ceef..d36b5ddc360e4f4cca3ef5c1b5b3d0cbad02614b 100644
--- a/src/main/java/net/minecraft/world/item/ItemStack.java
+++ b/src/main/java/net/minecraft/world/item/ItemStack.java
@@ -675,6 +675,7 @@ public final class ItemStack implements DataComponentHolder {
@@ -685,6 +685,7 @@ public final class ItemStack implements DataComponentHolder {
if (player == null || !player.hasInfiniteMaterials() || force) { // Paper
if (amount > 0) {
int originalDamage = amount; // Paper - Expand PlayerItemDamageEvent
@@ -57,7 +57,7 @@ index 930cc4c38a7c7631b140f7735cb03f4c82553375..bb9f480e5a2083633ddde5607b05048b
amount = EnchantmentHelper.processDurabilityChange(world, this, amount);
// CraftBukkit start
if (player instanceof ServerPlayer serverPlayer) { // Paper - Add EntityDamageItemEvent
@@ -740,6 +741,12 @@ public final class ItemStack implements DataComponentHolder {
@@ -750,6 +751,12 @@ public final class ItemStack implements DataComponentHolder {
}
this.hurtAndBreak(amount, worldserver, entity, (item) -> { // Paper - Add EntityDamageItemEvent
@@ -90,7 +90,7 @@ index f1b2d388a1a40a1d909a2e726f32d6c15e1eb0eb..4934bae61114b49a9f8d0ed044fbb881
entityhuman.startAutoSpinAttack(20, 8.0F, stack);
if (entityhuman.onGround()) {
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 9c87144050ed62ca030e51ae08d8a977e935ba68..e408d9753b6e2bae9bf276e60c3670654ab4782f 100644
index f980e39b09f38e1c8265a8fe65de91178579326f..4d7a85f1ece3a60404474ad492edb2d8f097a6a0 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -112,6 +112,19 @@ public class PurpurWorldConfig {

View File

@@ -117,7 +117,7 @@ index 30d62ee4d5cd2ddacb8783b5bbbf475d592b3e02..01e4395f1669d21c30465aa1366bd2f1
+ // Purpur end
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index e408d9753b6e2bae9bf276e60c3670654ab4782f..06acffbb57d961d1c8a48bce5983b063146181f3 100644
index 4d7a85f1ece3a60404474ad492edb2d8f097a6a0..d020ee719367487302d57a2806524f15f5401289 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -125,6 +125,49 @@ public class PurpurWorldConfig {
@@ -135,7 +135,7 @@ index e408d9753b6e2bae9bf276e60c3670654ab4782f..06acffbb57d961d1c8a48bce5983b063
+ BuiltInRegistries.ITEM.stream().filter(item -> item != Items.AIR).forEach((item) -> itemImmuneToCactus.add(item));
+ return;
+ }
+ Item item = BuiltInRegistries.ITEM.get(new ResourceLocation(key.toString()));
+ Item item = BuiltInRegistries.ITEM.get(ResourceLocation.parse(key.toString()));
+ if (item != Items.AIR) itemImmuneToCactus.add(item);
+ });
+ itemImmuneToExplosion.clear();
@@ -144,7 +144,7 @@ index e408d9753b6e2bae9bf276e60c3670654ab4782f..06acffbb57d961d1c8a48bce5983b063
+ BuiltInRegistries.ITEM.stream().filter(item -> item != Items.AIR).forEach((item) -> itemImmuneToExplosion.add(item));
+ return;
+ }
+ Item item = BuiltInRegistries.ITEM.get(new ResourceLocation(key.toString()));
+ Item item = BuiltInRegistries.ITEM.get(ResourceLocation.parse(key.toString()));
+ if (item != Items.AIR) itemImmuneToExplosion.add(item);
+ });
+ itemImmuneToFire.clear();
@@ -153,7 +153,7 @@ index e408d9753b6e2bae9bf276e60c3670654ab4782f..06acffbb57d961d1c8a48bce5983b063
+ BuiltInRegistries.ITEM.stream().filter(item -> item != Items.AIR).forEach((item) -> itemImmuneToFire.add(item));
+ return;
+ }
+ Item item = BuiltInRegistries.ITEM.get(new ResourceLocation(key.toString()));
+ Item item = BuiltInRegistries.ITEM.get(ResourceLocation.parse(key.toString()));
+ if (item != Items.AIR) itemImmuneToFire.add(item);
+ });
+ itemImmuneToLightning.clear();
@@ -162,7 +162,7 @@ index e408d9753b6e2bae9bf276e60c3670654ab4782f..06acffbb57d961d1c8a48bce5983b063
+ BuiltInRegistries.ITEM.stream().filter(item -> item != Items.AIR).forEach((item) -> itemImmuneToLightning.add(item));
+ return;
+ }
+ Item item = BuiltInRegistries.ITEM.get(new ResourceLocation(key.toString()));
+ Item item = BuiltInRegistries.ITEM.get(ResourceLocation.parse(key.toString()));
+ if (item != Items.AIR) itemImmuneToLightning.add(item);
+ });
+ }

View File

@@ -17,10 +17,10 @@ index f5989a4e4a9f6d983d664a9f74ccdfebf91ed4d9..3bb11eeff4e855ae9a57f8179491c175
if (environment.includeIntegrated) {
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
index 29d7c792277ff17f5119cf391c4fe4b86797adf0..d6a1e2c21fb3b09e602ac6abe267c752d1f742eb 100644
index 5fc5ae6f6e04e1fe4edfd22379bbfa52b5af0bc2..34e71243b66977b631e45df7b7f11f9b91474fe8 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
@@ -179,6 +179,7 @@ public class PurpurConfig {
@@ -181,6 +181,7 @@ public class PurpurConfig {
public static boolean afkBroadcastUseDisplayName = false;
public static String afkTabListPrefix = "[AFK] ";
public static String afkTabListSuffix = "";
@@ -28,7 +28,7 @@ index 29d7c792277ff17f5119cf391c4fe4b86797adf0..d6a1e2c21fb3b09e602ac6abe267c752
private static void messages() {
cannotRideMob = getString("settings.messages.cannot-ride-mob", cannotRideMob);
afkBroadcastAway = getString("settings.messages.afk-broadcast-away", afkBroadcastAway);
@@ -186,6 +187,7 @@ public class PurpurConfig {
@@ -188,6 +189,7 @@ public class PurpurConfig {
afkBroadcastUseDisplayName = getBoolean("settings.messages.afk-broadcast-use-display-name", afkBroadcastUseDisplayName);
afkTabListPrefix = MiniMessage.miniMessage().serialize(MiniMessage.miniMessage().deserialize(getString("settings.messages.afk-tab-list-prefix", afkTabListPrefix)));
afkTabListSuffix = MiniMessage.miniMessage().serialize(MiniMessage.miniMessage().deserialize(getString("settings.messages.afk-tab-list-suffix", afkTabListSuffix)));

View File

@@ -17,10 +17,10 @@ index 3bb11eeff4e855ae9a57f8179491c1756d14e04e..1da5184311b51494ca0cf426ba466404
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
index d6a1e2c21fb3b09e602ac6abe267c752d1f742eb..6d266f2096deca638ceebd2ca1fd4dce83e1e9a8 100644
index 34e71243b66977b631e45df7b7f11f9b91474fe8..8c4b83835f7e93225592de2328a01152bb400781 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
@@ -179,6 +179,7 @@ public class PurpurConfig {
@@ -181,6 +181,7 @@ public class PurpurConfig {
public static boolean afkBroadcastUseDisplayName = false;
public static String afkTabListPrefix = "[AFK] ";
public static String afkTabListSuffix = "";
@@ -28,7 +28,7 @@ index d6a1e2c21fb3b09e602ac6abe267c752d1f742eb..6d266f2096deca638ceebd2ca1fd4dce
public static String pingCommandOutput = "<green>%s's ping is %sms";
private static void messages() {
cannotRideMob = getString("settings.messages.cannot-ride-mob", cannotRideMob);
@@ -187,6 +188,7 @@ public class PurpurConfig {
@@ -189,6 +190,7 @@ public class PurpurConfig {
afkBroadcastUseDisplayName = getBoolean("settings.messages.afk-broadcast-use-display-name", afkBroadcastUseDisplayName);
afkTabListPrefix = MiniMessage.miniMessage().serialize(MiniMessage.miniMessage().deserialize(getString("settings.messages.afk-tab-list-prefix", afkTabListPrefix)));
afkTabListSuffix = MiniMessage.miniMessage().serialize(MiniMessage.miniMessage().deserialize(getString("settings.messages.afk-tab-list-suffix", afkTabListSuffix)));

View File

@@ -17,10 +17,10 @@ index 1da5184311b51494ca0cf426ba466404599b8d2c..c44832599a95039f9ca0f772e7b405e4
org.purpurmc.purpur.command.PingCommand.register(this.dispatcher); // Purpur
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
index 6d266f2096deca638ceebd2ca1fd4dce83e1e9a8..7ed1b8048c6f1f198c45337ae5f9ddd2de5c02ab 100644
index 8c4b83835f7e93225592de2328a01152bb400781..58812f062486ae34ad448bb1fe404c4fb05ad4ff 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
@@ -179,6 +179,7 @@ public class PurpurConfig {
@@ -181,6 +181,7 @@ public class PurpurConfig {
public static boolean afkBroadcastUseDisplayName = false;
public static String afkTabListPrefix = "[AFK] ";
public static String afkTabListSuffix = "";
@@ -28,7 +28,7 @@ index 6d266f2096deca638ceebd2ca1fd4dce83e1e9a8..7ed1b8048c6f1f198c45337ae5f9ddd2
public static String demoCommandOutput = "<green>%s has been shown the demo screen";
public static String pingCommandOutput = "<green>%s's ping is %sms";
private static void messages() {
@@ -188,6 +189,7 @@ public class PurpurConfig {
@@ -190,6 +191,7 @@ public class PurpurConfig {
afkBroadcastUseDisplayName = getBoolean("settings.messages.afk-broadcast-use-display-name", afkBroadcastUseDisplayName);
afkTabListPrefix = MiniMessage.miniMessage().serialize(MiniMessage.miniMessage().deserialize(getString("settings.messages.afk-tab-list-prefix", afkTabListPrefix)));
afkTabListSuffix = MiniMessage.miniMessage().serialize(MiniMessage.miniMessage().deserialize(getString("settings.messages.afk-tab-list-suffix", afkTabListSuffix)));

View File

@@ -167,7 +167,7 @@ index 883cd9a96a1d4276ca10c5558b553c36a1bb0d79..0dcf5638e12c7670e6a5e577210e2542
public void setPersistentAngerTarget(@Nullable UUID angryAt) {
this.persistentAngerTarget = angryAt;
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 06acffbb57d961d1c8a48bce5983b063146181f3..803387f232c25ed43c252fa05335e5e1915048ff 100644
index d020ee719367487302d57a2806524f15f5401289..5fa2939889d7a294d4e0afe444bf0529a1efa849 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -610,6 +610,9 @@ public class PurpurWorldConfig {

View File

@@ -256,7 +256,7 @@ index 4dea7aed072caf383986e09ead8ee790b35d9706..7a80cb45ff5d96380755d37ff43ddeac
private float speed = 0.1F;
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 803387f232c25ed43c252fa05335e5e1915048ff..bfa1ed9e0927f919648ab67ae49681fcd1286e3a 100644
index 5fa2939889d7a294d4e0afe444bf0529a1efa849..49ac8f8b8c33560dfae7871eb325ef47127d3654 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -1087,6 +1087,9 @@ public class PurpurWorldConfig {

View File

@@ -40,7 +40,7 @@ index 1b1b475ca27e799e251d6f8a8c9fe1a4fd8bae83..04f67f7b43d2f461c776c76614dc3e5f
for (int l = 0; l < k; ++l) {
// Paper start - PhantomPreSpawnEvent
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index bfa1ed9e0927f919648ab67ae49681fcd1286e3a..07f3b64e5d117957262ce6c8290052d707d17508 100644
index 49ac8f8b8c33560dfae7871eb325ef47127d3654..812a95f388302a0c860cd9addec24697be50b781 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -1090,6 +1090,12 @@ public class PurpurWorldConfig {

View File

@@ -27,7 +27,7 @@ index 85d598c3354ee62f0fd1b26e485e0084967c0380..b59dd6b512021c335f3c21999958e2ea
}
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 07f3b64e5d117957262ce6c8290052d707d17508..6c4ada076bcabfbf0622e66ccaeaf3508ec6826c 100644
index 812a95f388302a0c860cd9addec24697be50b781..35d387e70b2bb75b68b01199be617888036957fa 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -284,6 +284,27 @@ public class PurpurWorldConfig {

View File

@@ -18,7 +18,7 @@ index 94d067e9eeee73183de25165d8c97043fe256103..00b6941951e1af9993f8f6da5425d31b
public static boolean canSetSpawn(Level world) {
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 6c4ada076bcabfbf0622e66ccaeaf3508ec6826c..709afe70fccfc31457a4743f441cdeb9f6abb9f9 100644
index 35d387e70b2bb75b68b01199be617888036957fa..f91548d91fbe690bdddcc63da8459f0a30a72899 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -324,6 +324,27 @@ public class PurpurWorldConfig {

View File

@@ -67,10 +67,10 @@ index ac775afb265430ac202cfa3900a036d11a308b1e..87ce003dfeca975d8e6af26fd341f3ab
} else {
world.setBlockAndUpdate(pos, IceBlock.meltsInto());
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
index 7ed1b8048c6f1f198c45337ae5f9ddd2de5c02ab..b15769f1e5b6cb2afc63402e540683253b7e3284 100644
index 58812f062486ae34ad448bb1fe404c4fb05ad4ff..67f883f1681b7a7c2eed60309634cb4cb32e56a1 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
@@ -244,6 +244,11 @@ public class PurpurConfig {
@@ -246,6 +246,11 @@ public class PurpurConfig {
enderChestPermissionRows = getBoolean("settings.blocks.ender_chest.use-permissions-for-rows", enderChestPermissionRows);
}

Some files were not shown because too many files have changed in this diff Show More