six patches

This commit is contained in:
Ben Kerllenevich
2021-06-16 07:50:20 -04:00
parent 8489c54fc8
commit 7447eb7020
11 changed files with 385 additions and 438 deletions

View File

@@ -1,42 +0,0 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: William Blake Galbreath <blake.galbreath@gmail.com>
Date: Sat, 15 Jun 2019 03:12:15 -0500
Subject: [PATCH] Make Iron Golems Swim
diff --git a/src/main/java/net/minecraft/world/entity/animal/EntityIronGolem.java b/src/main/java/net/minecraft/world/entity/animal/EntityIronGolem.java
index 5e2b49d120b724cb5a7ae00940ded4f4875ea8a1..62cff5faafa076d05ebc59ad5c4fb020bea0509e 100644
--- a/src/main/java/net/minecraft/world/entity/animal/EntityIronGolem.java
+++ b/src/main/java/net/minecraft/world/entity/animal/EntityIronGolem.java
@@ -30,6 +30,7 @@ import net.minecraft.world.entity.EntityTypes;
import net.minecraft.world.entity.IEntityAngerable;
import net.minecraft.world.entity.ai.attributes.AttributeProvider;
import net.minecraft.world.entity.ai.attributes.GenericAttributes;
+import net.minecraft.world.entity.ai.goal.PathfinderGoalFloat;
import net.minecraft.world.entity.ai.goal.PathfinderGoalLookAtPlayer;
import net.minecraft.world.entity.ai.goal.PathfinderGoalMeleeAttack;
import net.minecraft.world.entity.ai.goal.PathfinderGoalMoveTowardsTarget;
@@ -70,6 +71,7 @@ public class EntityIronGolem extends EntityGolem implements IEntityAngerable {
@Override
protected void initPathfinder() {
+ if (world.purpurConfig.ironGolemCanSwim) this.goalSelector.a(0, new PathfinderGoalFloat(this)); // Purpur
this.goalSelector.a(1, new PathfinderGoalMeleeAttack(this, 1.0D, true));
this.goalSelector.a(2, new PathfinderGoalMoveTowardsTarget(this, 0.9D, 32.0F));
this.goalSelector.a(2, new PathfinderGoalStrollVillage(this, 0.6D, false));
diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
index 6dcfbebd850d71587da5a78a3acf09d8ae413072..decd0e755deede2b092866a8f7f6b46520435bbe 100644
--- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
+++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
@@ -154,6 +154,11 @@ public class PurpurWorldConfig {
illusionerMaxHealth = getDouble("mobs.illusioner.attributes.max-health", illusionerMaxHealth);
}
+ public boolean ironGolemCanSwim = false;
+ private void ironGolemSettings() {
+ ironGolemCanSwim = getBoolean("mobs.iron_golem.can-swim", ironGolemCanSwim);
+ }
+
public double rabbitNaturalToast = 0.0D;
public double rabbitNaturalKiller = 0.0D;
private void rabbitSettings() {

View File

@@ -1,78 +0,0 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: William Blake Galbreath <blake.galbreath@gmail.com>
Date: Sat, 6 Jul 2019 17:00:04 -0500
Subject: [PATCH] Dont send useless entity packets
diff --git a/src/main/java/net/minecraft/network/protocol/game/PacketPlayOutEntity.java b/src/main/java/net/minecraft/network/protocol/game/PacketPlayOutEntity.java
index 0eed10a6c4e0c7245f219d19ed1e2e5c94364db9..2b54a5f3347f788b751892105f888663bb349629 100644
--- a/src/main/java/net/minecraft/network/protocol/game/PacketPlayOutEntity.java
+++ b/src/main/java/net/minecraft/network/protocol/game/PacketPlayOutEntity.java
@@ -9,11 +9,11 @@ import net.minecraft.world.phys.Vec3D;
public class PacketPlayOutEntity implements Packet<PacketListenerPlayOut> {
protected int a;
- protected short b;
- protected short c;
- protected short d;
- protected byte e;
- protected byte f;
+ protected short b; public short getX() { return b; } // Purpur - OBFHELPER
+ protected short c; public short getY() { return c; } // Purpur - OBFHELPER
+ protected short d; public short getZ() { return d; } // Purpur - OBFHELPER
+ protected byte e; public byte getYaw() { return e; } // Purpur - OBFHELPER
+ protected byte f; public byte getPitch() { return f; } // Purpur - OBFHELPER
protected boolean g;
protected boolean h;
protected boolean i;
diff --git a/src/main/java/net/minecraft/server/level/EntityTrackerEntry.java b/src/main/java/net/minecraft/server/level/EntityTrackerEntry.java
index 1df8fb8cb3fcf8201e1c5fa8ca13f7a9c632c379..eaa68fb865dd23af20a05b567aad231dd8fa469c 100644
--- a/src/main/java/net/minecraft/server/level/EntityTrackerEntry.java
+++ b/src/main/java/net/minecraft/server/level/EntityTrackerEntry.java
@@ -199,6 +199,7 @@ public class EntityTrackerEntry {
this.o = 0;
packet1 = new PacketPlayOutEntityTeleport(this.tracker);
}
+ if (net.pl3x.purpur.PurpurConfig.dontSendUselessEntityPackets && isUselessPacket(packet1)) packet1 = null; // Purpur
}
if ((this.e || this.tracker.impulse || this.tracker instanceof EntityLiving && ((EntityLiving) this.tracker).isGliding()) && this.tickCounter > 0) {
@@ -285,6 +286,22 @@ public class EntityTrackerEntry {
}
+ // Purpur start
+ private boolean isUselessPacket(Packet<?> possibleUselessPacket) {
+ if (possibleUselessPacket instanceof PacketPlayOutEntity) {
+ PacketPlayOutEntity packet = (PacketPlayOutEntity) possibleUselessPacket;
+ if (possibleUselessPacket instanceof PacketPlayOutEntity.PacketPlayOutRelEntityMove) {
+ return packet.getX() == 0 && packet.getY() == 0 && packet.getZ() == 0;
+ } else if (possibleUselessPacket instanceof PacketPlayOutEntity.PacketPlayOutRelEntityMoveLook) {
+ return packet.getX() == 0 && packet.getY() == 0 && packet.getZ() == 0 && packet.getYaw() == 0 && packet.getPitch() == 0;
+ } else if (possibleUselessPacket instanceof PacketPlayOutEntity.PacketPlayOutEntityLook) {
+ return packet.getYaw() == 0 && packet.getPitch() == 0;
+ }
+ }
+ return false;
+ }
+ // Purpur end
+
public void a(EntityPlayer entityplayer) {
this.tracker.c(entityplayer);
entityplayer.c(this.tracker);
diff --git a/src/main/java/net/pl3x/purpur/PurpurConfig.java b/src/main/java/net/pl3x/purpur/PurpurConfig.java
index c7755cea5e8337af7acc96c6a34afa547b391035..6d5c2f469e4a7a13a69ac3f7a1dadeac6aabb531 100644
--- a/src/main/java/net/pl3x/purpur/PurpurConfig.java
+++ b/src/main/java/net/pl3x/purpur/PurpurConfig.java
@@ -179,6 +179,11 @@ public class PurpurConfig {
enderChestPermissionRows = getBoolean("settings.blocks.ender_chest.use-permissions-for-rows", enderChestPermissionRows);
}
+ public static boolean dontSendUselessEntityPackets = false;
+ private static void dontSendUselessEntityPackets() {
+ dontSendUselessEntityPackets = getBoolean("settings.dont-send-useless-entity-packets", dontSendUselessEntityPackets);
+ }
+
public static boolean loggerSuppressInitLegacyMaterialError = false;
public static boolean loggerSuppressIgnoredAdvancementWarnings = false;
private static void loggerSettings() {

View File

@@ -1,111 +0,0 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: William Blake Galbreath <blake.galbreath@gmail.com>
Date: Sat, 13 Jul 2019 15:56:22 -0500
Subject: [PATCH] Tulips change fox type
diff --git a/src/main/java/net/minecraft/world/entity/animal/EntityFox.java b/src/main/java/net/minecraft/world/entity/animal/EntityFox.java
index b7fa24318ef43918b6b10ff4ea8acb960527296e..19a9affdaba52d8e7dc1c4c20d5c0d52829f4989 100644
--- a/src/main/java/net/minecraft/world/entity/animal/EntityFox.java
+++ b/src/main/java/net/minecraft/world/entity/animal/EntityFox.java
@@ -30,6 +30,8 @@ import net.minecraft.tags.Tag;
import net.minecraft.tags.TagsFluid;
import net.minecraft.util.MathHelper;
import net.minecraft.world.DifficultyDamageScaler;
+import net.minecraft.world.EnumHand;
+import net.minecraft.world.EnumInteractionResult;
import net.minecraft.world.damagesource.DamageSource;
import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.EntityAgeable;
@@ -107,9 +109,9 @@ public class EntityFox extends EntityAnimal {
private static final Predicate<Entity> bv = (entity) -> {
return !entity.bx() && IEntitySelector.e.test(entity);
};
- private PathfinderGoal bw;
- private PathfinderGoal bx;
- private PathfinderGoal by;
+ private PathfinderGoal bw; private PathfinderGoal attackAnimalGoal() { return bw; } // Purpur - OBFHELPER
+ private PathfinderGoal bx; private PathfinderGoal attackTurtleGoal() { return bx; } // Purpur - OBFHELPER
+ private PathfinderGoal by; private PathfinderGoal attackFishGoal() { return by; } // Purpur - OBFHELPER
private float bz;
private float bA;
private float bB;
@@ -297,6 +299,11 @@ public class EntityFox extends EntityAnimal {
}
private void initializePathFinderGoals() {
+ // Purpur start - do not add duplicate goals
+ this.targetSelector.a(attackAnimalGoal());
+ this.targetSelector.a(attackTurtleGoal());
+ this.targetSelector.a(attackFishGoal());
+ // Purpur end
if (this.getFoxType() == EntityFox.Type.RED) {
this.targetSelector.a(4, this.bw);
this.targetSelector.a(4, this.bx);
@@ -329,6 +336,7 @@ public class EntityFox extends EntityAnimal {
public void setFoxType(EntityFox.Type entityfox_type) {
this.datawatcher.set(EntityFox.bo, entityfox_type.b());
+ initializePathFinderGoals(); // Purpur - fix API bug not updating pathfinders on type change
}
private List<UUID> fa() {
@@ -646,6 +654,27 @@ public class EntityFox extends EntityAnimal {
return this.fa().contains(uuid);
}
+ @Override
+ public EnumInteractionResult b(EntityHuman entityhuman, EnumHand enumhand) {
+ if (world.purpurConfig.foxTypeChangesWithTulips) {
+ ItemStack itemstack = entityhuman.b(enumhand);
+ if (getFoxType() == Type.RED && itemstack.getItem() == Items.whiteTulip()) {
+ setFoxType(Type.SNOW);
+ if (!entityhuman.abilities.canInstantlyBuild) {
+ itemstack.subtract(1);
+ }
+ return EnumInteractionResult.SUCCESS;
+ } else if (getFoxType() == Type.SNOW && itemstack.getItem() == Items.orangeTulip()) {
+ setFoxType(Type.RED);
+ if (!entityhuman.abilities.canInstantlyBuild) {
+ itemstack.subtract(1);
+ }
+ return EnumInteractionResult.SUCCESS;
+ }
+ }
+ return super.b(entityhuman, enumhand);
+ }
+
@Override
protected org.bukkit.event.entity.EntityDeathEvent d(DamageSource damagesource) { // Paper
ItemStack itemstack = this.getEquipment(EnumItemSlot.MAINHAND).cloneItemStack(); // Paper
diff --git a/src/main/java/net/minecraft/world/item/Items.java b/src/main/java/net/minecraft/world/item/Items.java
index 8e9a25495d76251a86268d3059e2960a86dc46b3..993a88a5937417016821ef9d7cd58e4ee097491c 100644
--- a/src/main/java/net/minecraft/world/item/Items.java
+++ b/src/main/java/net/minecraft/world/item/Items.java
@@ -133,8 +133,8 @@ public class Items {
public static final Item bk = a(Blocks.ALLIUM, CreativeModeTab.c);
public static final Item bl = a(Blocks.AZURE_BLUET, CreativeModeTab.c);
public static final Item bm = a(Blocks.RED_TULIP, CreativeModeTab.c);
- public static final Item bn = a(Blocks.ORANGE_TULIP, CreativeModeTab.c);
- public static final Item bo = a(Blocks.WHITE_TULIP, CreativeModeTab.c);
+ public static final Item bn = a(Blocks.ORANGE_TULIP, CreativeModeTab.c); public static Item orangeTulip() { return bn; } // Purpur - OBFHELPER
+ public static final Item bo = a(Blocks.WHITE_TULIP, CreativeModeTab.c); public static Item whiteTulip() { return bo; } // Purpur - OBFHELPER
public static final Item bp = a(Blocks.PINK_TULIP, CreativeModeTab.c);
public static final Item bq = a(Blocks.OXEYE_DAISY, CreativeModeTab.c);
public static final Item br = a(Blocks.CORNFLOWER, CreativeModeTab.c);
diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
index decd0e755deede2b092866a8f7f6b46520435bbe..081675005077c5070f7745e24fd2ee7400fe2320 100644
--- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
+++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
@@ -118,6 +118,11 @@ public class PurpurWorldConfig {
creeperChargedChance = getDouble("mobs.creeper.naturally-charged-chance", creeperChargedChance);
}
+ public boolean foxTypeChangesWithTulips = false;
+ private void foxSettings() {
+ foxTypeChangesWithTulips = getBoolean("mobs.fox.tulips-change-type", foxTypeChangesWithTulips);
+ }
+
public float giantStepHeight = 2.0F;
public float giantJumpHeight = 1.0F;
public double giantMovementSpeed = 0.5D;

View File

@@ -1,117 +0,0 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: William Blake Galbreath <Blake.Galbreath@GMail.com>
Date: Thu, 26 Mar 2020 19:46:44 -0500
Subject: [PATCH] Breedable Polar Bears
diff --git a/src/main/java/net/minecraft/world/entity/animal/EntityPolarBear.java b/src/main/java/net/minecraft/world/entity/animal/EntityPolarBear.java
index 49f26d487229a732902d5bf48d305b0864e90d63..f25f5ced218555af0d62844a78842cfc7599d608 100644
--- a/src/main/java/net/minecraft/world/entity/animal/EntityPolarBear.java
+++ b/src/main/java/net/minecraft/world/entity/animal/EntityPolarBear.java
@@ -34,6 +34,7 @@ import net.minecraft.world.entity.GroupDataEntity;
import net.minecraft.world.entity.IEntityAngerable;
import net.minecraft.world.entity.ai.attributes.AttributeProvider;
import net.minecraft.world.entity.ai.attributes.GenericAttributes;
+import net.minecraft.world.entity.ai.goal.PathfinderGoalBreed;
import net.minecraft.world.entity.ai.goal.PathfinderGoalFloat;
import net.minecraft.world.entity.ai.goal.PathfinderGoalFollowParent;
import net.minecraft.world.entity.ai.goal.PathfinderGoalLookAtPlayer;
@@ -41,11 +42,13 @@ import net.minecraft.world.entity.ai.goal.PathfinderGoalMeleeAttack;
import net.minecraft.world.entity.ai.goal.PathfinderGoalPanic;
import net.minecraft.world.entity.ai.goal.PathfinderGoalRandomLookaround;
import net.minecraft.world.entity.ai.goal.PathfinderGoalRandomStroll;
+import net.minecraft.world.entity.ai.goal.PathfinderGoalTempt;
import net.minecraft.world.entity.ai.goal.target.PathfinderGoalHurtByTarget;
import net.minecraft.world.entity.ai.goal.target.PathfinderGoalNearestAttackableTarget;
import net.minecraft.world.entity.ai.goal.target.PathfinderGoalUniversalAngerReset;
import net.minecraft.world.entity.player.EntityHuman;
import net.minecraft.world.item.ItemStack;
+import net.minecraft.world.item.crafting.RecipeItemStack;
import net.minecraft.world.level.GeneratorAccess;
import net.minecraft.world.level.World;
import net.minecraft.world.level.WorldAccess;
@@ -68,6 +71,30 @@ public class EntityPolarBear extends EntityAnimal implements IEntityAngerable {
super(entitytypes, world);
}
+ // Purpur start
+ @Override
+ public boolean mate(EntityAnimal entityanimal) {
+ if (entityanimal == this) {
+ return false;
+ } else if (this.isStanding()) {
+ return false;
+ } else if (this.getGoalTarget() != null) {
+ return false;
+ } else if (!(entityanimal instanceof EntityPolarBear)) {
+ return false;
+ } else {
+ EntityPolarBear polarbear = (EntityPolarBear) entityanimal;
+ if (polarbear.isStanding()) {
+ return false;
+ }
+ if (polarbear.getGoalTarget() != null) {
+ return false;
+ }
+ return this.isInLove() && polarbear.isInLove();
+ }
+ }
+ // Purpur end
+
@Override
public EntityAgeable createChild(WorldServer worldserver, EntityAgeable entityageable) {
return (EntityAgeable) EntityTypes.POLAR_BEAR.a((World) worldserver);
@@ -75,7 +102,7 @@ public class EntityPolarBear extends EntityAnimal implements IEntityAngerable {
@Override
public boolean k(ItemStack itemstack) {
- return false;
+ return world.purpurConfig.polarBearBreedableItem != null && itemstack.getItem() == world.purpurConfig.polarBearBreedableItem; // Purpur;
}
@Override
@@ -84,6 +111,12 @@ public class EntityPolarBear extends EntityAnimal implements IEntityAngerable {
this.goalSelector.a(0, new PathfinderGoalFloat(this));
this.goalSelector.a(1, new EntityPolarBear.c());
this.goalSelector.a(1, new EntityPolarBear.d());
+ // Purpur start
+ if (world.purpurConfig.polarBearBreedableItem != null) {
+ this.goalSelector.a(2, new PathfinderGoalBreed(this, 1.0D));
+ this.goalSelector.a(3, new PathfinderGoalTempt(this, 1.0D, RecipeItemStack.a(world.purpurConfig.polarBearBreedableItem), false));
+ }
+ // Purpur end
this.goalSelector.a(4, new PathfinderGoalFollowParent(this, 1.25D));
this.goalSelector.a(5, new PathfinderGoalRandomStroll(this, 1.0D));
this.goalSelector.a(6, new PathfinderGoalLookAtPlayer(this, EntityHuman.class, 6.0F));
@@ -225,10 +258,12 @@ public class EntityPolarBear extends EntityAnimal implements IEntityAngerable {
return flag;
}
+ public boolean isStanding() { return eM(); } // Purpur - OBFHELPER
public boolean eM() {
return (Boolean) this.datawatcher.get(EntityPolarBear.bo);
}
+ public void setStanding(boolean standing) { t(standing); } // Purpur - OBFHELPER
public void t(boolean flag) {
this.datawatcher.set(EntityPolarBear.bo, flag);
}
diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
index 081675005077c5070f7745e24fd2ee7400fe2320..fa43c015976aabaae8843983976c9c939a49016f 100644
--- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
+++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
@@ -164,6 +164,14 @@ public class PurpurWorldConfig {
ironGolemCanSwim = getBoolean("mobs.iron_golem.can-swim", ironGolemCanSwim);
}
+ public String polarBearBreedableItemString = "";
+ public Item polarBearBreedableItem = null;
+ private void polarBearSettings() {
+ polarBearBreedableItemString = getString("mobs.polar_bear.breedable-item", polarBearBreedableItemString);
+ Item item = IRegistry.ITEM.get(new MinecraftKey(polarBearBreedableItemString));
+ if (item != Items.AIR) polarBearBreedableItem = item;
+ }
+
public double rabbitNaturalToast = 0.0D;
public double rabbitNaturalKiller = 0.0D;
private void rabbitSettings() {

View File

@@ -1,83 +0,0 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: William Blake Galbreath <Blake.Galbreath@GMail.com>
Date: Sun, 12 Apr 2020 13:19:34 -0500
Subject: [PATCH] Chickens can retaliate
diff --git a/src/main/java/net/minecraft/world/entity/animal/EntityChicken.java b/src/main/java/net/minecraft/world/entity/animal/EntityChicken.java
index cd6fb8efb20a2d32de59d479b1dbf5ee69d5df37..600d6ebdf554dbaa8ca46a22a12d8b4e3255d987 100644
--- a/src/main/java/net/minecraft/world/entity/animal/EntityChicken.java
+++ b/src/main/java/net/minecraft/world/entity/animal/EntityChicken.java
@@ -20,10 +20,12 @@ import net.minecraft.world.entity.ai.goal.PathfinderGoalBreed;
import net.minecraft.world.entity.ai.goal.PathfinderGoalFloat;
import net.minecraft.world.entity.ai.goal.PathfinderGoalFollowParent;
import net.minecraft.world.entity.ai.goal.PathfinderGoalLookAtPlayer;
+import net.minecraft.world.entity.ai.goal.PathfinderGoalMeleeAttack;
import net.minecraft.world.entity.ai.goal.PathfinderGoalPanic;
import net.minecraft.world.entity.ai.goal.PathfinderGoalRandomLookaround;
import net.minecraft.world.entity.ai.goal.PathfinderGoalRandomStrollLand;
import net.minecraft.world.entity.ai.goal.PathfinderGoalTempt;
+import net.minecraft.world.entity.ai.goal.target.PathfinderGoalHurtByTarget;
import net.minecraft.world.entity.player.EntityHuman;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.Items;
@@ -51,16 +53,33 @@ public class EntityChicken extends EntityAnimal {
this.a(PathType.WATER, 0.0F);
}
+ // Purpur start
+ @Override
+ protected void initAttributes() {
+ if (world.purpurConfig.chickenRetaliate) {
+ this.getAttributeInstance(GenericAttributes.ATTACK_DAMAGE).setValue(2.0D);
+ }
+ }
+ // Purpur end
+
@Override
protected void initPathfinder() {
this.goalSelector.a(0, new PathfinderGoalFloat(this));
- this.goalSelector.a(1, new PathfinderGoalPanic(this, 1.4D));
+ //this.goalSelector.a(1, new PathfinderGoalPanic(this, 1.4D)); // Purpur - moved down
this.goalSelector.a(2, new PathfinderGoalBreed(this, 1.0D));
this.goalSelector.a(3, new PathfinderGoalTempt(this, 1.0D, false, EntityChicken.bv));
this.goalSelector.a(4, new PathfinderGoalFollowParent(this, 1.1D));
this.goalSelector.a(5, new PathfinderGoalRandomStrollLand(this, 1.0D));
this.goalSelector.a(6, new PathfinderGoalLookAtPlayer(this, EntityHuman.class, 6.0F));
this.goalSelector.a(7, new PathfinderGoalRandomLookaround(this));
+ // Purpur start
+ if (world.purpurConfig.chickenRetaliate) {
+ this.goalSelector.a(1, new PathfinderGoalMeleeAttack(this, 1.0D, false));
+ this.targetSelector.a(1, new PathfinderGoalHurtByTarget(this));
+ } else {
+ this.goalSelector.a(1, new PathfinderGoalPanic(this, 1.4D));
+ }
+ // Purpur end
}
@Override
@@ -69,7 +88,7 @@ public class EntityChicken extends EntityAnimal {
}
public static AttributeProvider.Builder eK() {
- return EntityInsentient.p().a(GenericAttributes.MAX_HEALTH, 4.0D).a(GenericAttributes.MOVEMENT_SPEED, 0.25D);
+ return EntityInsentient.p().a(GenericAttributes.MAX_HEALTH, 4.0D).a(GenericAttributes.MOVEMENT_SPEED, 0.25D).a(GenericAttributes.ATTACK_DAMAGE, 0.0D); // Purpur
}
@Override
diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
index fa43c015976aabaae8843983976c9c939a49016f..78218f2d59203b8f2b286fd09b3f6bdebb47565c 100644
--- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
+++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
@@ -113,6 +113,11 @@ public class PurpurWorldConfig {
turtleEggsBreakFromMinecarts = getBoolean("blocks.turtle_egg.break-from-minecarts", turtleEggsBreakFromMinecarts);
}
+ public boolean chickenRetaliate = false;
+ private void chickenSettings() {
+ chickenRetaliate = getBoolean("mobs.chicken.retaliate", chickenRetaliate);
+ }
+
public double creeperChargedChance = 0.0D;
private void creeperSettings() {
creeperChargedChance = getDouble("mobs.creeper.naturally-charged-chance", creeperChargedChance);

View File

@@ -1,34 +0,0 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: William Blake Galbreath <blake.galbreath@gmail.com>
Date: Sun, 6 Oct 2019 12:46:35 -0500
Subject: [PATCH] Add option to set armorstand step height
diff --git a/src/main/java/net/minecraft/world/entity/decoration/EntityArmorStand.java b/src/main/java/net/minecraft/world/entity/decoration/EntityArmorStand.java
index c0e0750adef0ae6aff7635c84f6585f06c5fc38d..89d3734489b65245e815376edf4e2d9baea1563a 100644
--- a/src/main/java/net/minecraft/world/entity/decoration/EntityArmorStand.java
+++ b/src/main/java/net/minecraft/world/entity/decoration/EntityArmorStand.java
@@ -660,6 +660,7 @@ public class EntityArmorStand extends EntityLiving {
@Override
public void tick() {
+ setStepHeight(world.purpurConfig.armorstandStepHeight); // Purpur
// Paper start
if (!this.canTick) {
if (this.noTickPoseDirty) {
diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
index 78218f2d59203b8f2b286fd09b3f6bdebb47565c..90f367f2f04f9bf66b7f54ffe784db16c7ca868b 100644
--- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
+++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
@@ -63,6 +63,11 @@ public class PurpurWorldConfig {
return PurpurConfig.config.getString("world-settings." + worldName + "." + path, PurpurConfig.config.getString("world-settings.default." + path));
}
+ public float armorstandStepHeight = 0.0F;
+ private void armorstandSettings() {
+ armorstandStepHeight = (float) getDouble("gameplay-mechanics.armorstand.step-height", armorstandStepHeight);
+ }
+
public boolean idleTimeoutKick = true;
public boolean idleTimeoutTickNearbyEntities = true;
public boolean idleTimeoutCountAsSleeping = false;