diff --git a/build-data/purpur.at b/build-data/purpur.at index 79d15d2a6..f7e1fb05e 100644 --- a/build-data/purpur.at +++ b/build-data/purpur.at @@ -4,3 +4,4 @@ protected net.minecraft.world.entity.Entity dimensions public net.minecraft.world.entity.LivingEntity canGlide()Z public net.minecraft.world.entity.monster.Shulker MAX_SCALE public net.minecraft.world.entity.player.Player canGlide()Z +public-f net.minecraft.world.entity.EntityType dimensions diff --git a/patches/server/0081-Short-enderman-height.patch b/patches/server/0081-Short-enderman-height.patch deleted file mode 100644 index b547c03ec..000000000 --- a/patches/server/0081-Short-enderman-height.patch +++ /dev/null @@ -1,49 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: William Blake Galbreath -Date: Mon, 10 Aug 2020 21:46:22 -0500 -Subject: [PATCH] Short enderman height - - -diff --git a/net/minecraft/world/entity/EntityType.java b/net/minecraft/world/entity/EntityType.java -index 426d47c14d137906ed70fc3082e3d77e7f48c8d7..20a7fe2995db717f394fc3041435a95dbfee2ff7 100644 ---- a/net/minecraft/world/entity/EntityType.java -+++ b/net/minecraft/world/entity/EntityType.java -@@ -388,7 +388,8 @@ public class EntityType implements FeatureElement, EntityTypeT - @Nullable - private Component description; - private final Optional> lootTable; -- private final EntityDimensions dimensions; -+ private EntityDimensions dimensions; // Purpur - remove final - Short enderman height -+ public void setDimensions(EntityDimensions dimensions) { this.dimensions = dimensions; } // Purpur - Short enderman height - private final float spawnDimensionsScale; - private final FeatureFlagSet requiredFeatures; - -diff --git a/net/minecraft/world/entity/monster/EnderMan.java b/net/minecraft/world/entity/monster/EnderMan.java -index 13eaf1e8b12c3b4cba6b202f2d31e99a8a9bae92..d2959976cf206f6c92ae90f103035e4760b9d955 100644 ---- a/net/minecraft/world/entity/monster/EnderMan.java -+++ b/net/minecraft/world/entity/monster/EnderMan.java -@@ -409,6 +409,7 @@ public class EnderMan extends Monster implements NeutralMob { - if (this.isInvulnerableTo(world, source)) { - return false; - } else if (getRider() != null && this.isControllable()) { return super.hurtServer(world, source, amount); // Purpur - no teleporting on damage -+ } else if (org.purpurmc.purpur.PurpurConfig.endermanShortHeight && source.is(net.minecraft.world.damagesource.DamageTypes.IN_WALL)) { return false; // Purpur - no suffocation damage if short height - Short enderman height - } else { - boolean flag = source.getDirectEntity() instanceof ThrownPotion; - boolean flag1; -diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 5aa172d86f3d36a239147438e8d71c73ec2a3cf0..6ba2e3ed28b7605329446b84dc305e71505e30ec 100644 ---- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java -+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -247,6 +247,12 @@ public class PurpurConfig { - enderChestPermissionRows = getBoolean("settings.blocks.ender_chest.use-permissions-for-rows", enderChestPermissionRows); - } - -+ public static boolean endermanShortHeight = false; -+ private static void entitySettings() { -+ endermanShortHeight = getBoolean("settings.entity.enderman.short-height", endermanShortHeight); -+ if (endermanShortHeight) EntityType.ENDERMAN.setDimensions(EntityDimensions.scalable(0.6F, 1.9F)); -+ } -+ - public static boolean allowWaterPlacementInTheEnd = true; - private static void allowWaterPlacementInEnd() { - allowWaterPlacementInTheEnd = getBoolean("settings.allow-water-placement-in-the-end", allowWaterPlacementInTheEnd); diff --git a/purpur-server/minecraft-patches/features/0001-Ridables.patch b/purpur-server/minecraft-patches/features/0001-Ridables.patch index 6abe13d8d..9ae73ec6a 100644 --- a/purpur-server/minecraft-patches/features/0001-Ridables.patch +++ b/purpur-server/minecraft-patches/features/0001-Ridables.patch @@ -62,7 +62,7 @@ index f8a31e8b2f917e9d00827dc98bfb766be1f9f85a..041019ff63f7f437c140ea354f84e49b private void updatePlayerAttributes() { diff --git a/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 7cb8b2f113be88c7df834f3dcdb304bfcd73d92e..685068a1f633266371cf4f292f05761e903ecc7b 100644 +index db9860c44faacdf4b24979c2ffa84515e3883299..1fc37692c7ddfc7b7e0961cd9f0602339f18a2df 100644 --- a/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -2795,6 +2795,8 @@ public class ServerGamePacketListenerImpl @@ -841,7 +841,7 @@ index 8c1f74c6be53cbf48bd6b5641511359578801c08..656babc0c8810a85eb9f78ced1f3ad95 // CraftBukkit end player.playSound(SoundEvents.COW_MILK, 1.0F, 1.0F); diff --git a/net/minecraft/world/entity/animal/Dolphin.java b/net/minecraft/world/entity/animal/Dolphin.java -index 4141052dfd635804195a5cfa24dbd0394355a7da..0e4112793dddc0d75f4bed35bb880c03b2d1318f 100644 +index 7b4b50a714829ed1a48c8ff1fed779432e079489..f6aa8c23afdccb093bcfb0643683614dad49caac 100644 --- a/net/minecraft/world/entity/animal/Dolphin.java +++ b/net/minecraft/world/entity/animal/Dolphin.java @@ -71,14 +71,82 @@ public class Dolphin extends AgeableWaterCreature { @@ -3332,7 +3332,7 @@ index 4585b7c867685f8419c4d2b5b90af5946d337f90..c6eeaf7b460408acfdf89d988b47b08e return Guardian.createAttributes().add(Attributes.MOVEMENT_SPEED, 0.3F).add(Attributes.ATTACK_DAMAGE, 8.0).add(Attributes.MAX_HEALTH, 80.0); } diff --git a/net/minecraft/world/entity/monster/EnderMan.java b/net/minecraft/world/entity/monster/EnderMan.java -index 22a078c9b94516c8a5170a1387d7b941b91c3f1d..1f1e86dcdc6ded664a4562c0a3de45162c4fd6ac 100644 +index 2a76e89139248b3533dc38148d3ac14dd7d8e94c..7340fcd9e07d8839845db506d6c51878e01cc6d9 100644 --- a/net/minecraft/world/entity/monster/EnderMan.java +++ b/net/minecraft/world/entity/monster/EnderMan.java @@ -90,9 +90,27 @@ public class EnderMan extends Monster implements NeutralMob { @@ -3385,9 +3385,9 @@ index 22a078c9b94516c8a5170a1387d7b941b91c3f1d..1f1e86dcdc6ded664a4562c0a3de4516 if (this.isInvulnerableTo(level, damageSource)) { return false; + } else if (getRider() != null && this.isControllable()) { return super.hurtServer(level, damageSource, amount); // Purpur - no teleporting on damage + } else if (org.purpurmc.purpur.PurpurConfig.endermanShortHeight && damageSource.is(net.minecraft.world.damagesource.DamageTypes.IN_WALL)) { return false; // Purpur - no suffocation damage if short height - Short enderman height } else { boolean flag = damageSource.getDirectEntity() instanceof ThrownPotion; - if (!damageSource.is(DamageTypeTags.IS_PROJECTILE) && !flag) { diff --git a/net/minecraft/world/entity/monster/Endermite.java b/net/minecraft/world/entity/monster/Endermite.java index 2a219c9ae39d7cbee8484b2a93bd278d913afe95..f412cebb5c350bf16f0bee710a4ae1df7c72c384 100644 --- a/net/minecraft/world/entity/monster/Endermite.java diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/EnderMan.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/EnderMan.java.patch index 423ab6faf..bf5dff840 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/EnderMan.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/EnderMan.java.patch @@ -1,5 +1,13 @@ --- a/net/minecraft/world/entity/monster/EnderMan.java +++ b/net/minecraft/world/entity/monster/EnderMan.java +@@ -385,6 +_,7 @@ + public boolean hurtServer(ServerLevel level, DamageSource damageSource, float amount) { + if (this.isInvulnerableTo(level, damageSource)) { + return false; ++ } else if (org.purpurmc.purpur.PurpurConfig.endermanShortHeight && damageSource.is(net.minecraft.world.damagesource.DamageTypes.IN_WALL)) { return false; // Purpur - no suffocation damage if short height - Short enderman height + } else { + boolean flag = damageSource.getDirectEntity() instanceof ThrownPotion; + if (!damageSource.is(DamageTypeTags.IS_PROJECTILE) && !flag) { @@ -484,6 +_,7 @@ @Override diff --git a/purpur-server/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/purpur-server/src/main/java/org/purpurmc/purpur/PurpurConfig.java index 1168dcd55..530f7afa8 100644 --- a/purpur-server/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/purpur-server/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -4,6 +4,8 @@ import com.google.common.base.Throwables; import com.google.common.collect.ImmutableMap; import net.kyori.adventure.text.minimessage.MiniMessage; import net.minecraft.server.MinecraftServer; +import net.minecraft.world.entity.EntityDimensions; +import net.minecraft.world.entity.EntityType; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockBehaviour; import org.bukkit.Bukkit; @@ -228,6 +230,12 @@ public class PurpurConfig { enderChestPermissionRows = getBoolean("settings.blocks.ender_chest.use-permissions-for-rows", enderChestPermissionRows); } + public static boolean endermanShortHeight = false; + private static void entitySettings() { + endermanShortHeight = getBoolean("settings.entity.enderman.short-height", endermanShortHeight); + if (endermanShortHeight) EntityType.ENDERMAN.dimensions = EntityDimensions.scalable(0.6F, 1.9F); + } + public static boolean allowWaterPlacementInTheEnd = true; private static void allowWaterPlacementInEnd() { allowWaterPlacementInTheEnd = getBoolean("settings.allow-water-placement-in-the-end", allowWaterPlacementInTheEnd);