geforkt von Mirrors/Paper
b62dfa0bf9
Upstream has released updates that appears to apply and compile correctly. This update has not been tested by PaperMC and as with ANY update, please do your own testing Bukkit Changes: 39ce5d3a SPIGOT-4399: ItemMeta.equals broken with AttributeModifiers CraftBukkit Changes:1cf8b5dc
SPIGOT-4400: Populators running on existing chunks116cb9a1
SPIGOT-4399: Add attribute modifier equality test5ee1c18a
SPIGOT-4398: Set ASM7_EXPERIMENTAL flag
139 Zeilen
6.2 KiB
Diff
139 Zeilen
6.2 KiB
Diff
From b128c99c11c451eb05ae62b6585e565e90939db5 Mon Sep 17 00:00:00 2001
|
|
From: BillyGalbreath <Blake.Galbreath@GMail.com>
|
|
Date: Fri, 24 Aug 2018 08:18:42 -0500
|
|
Subject: [PATCH] Slime Pathfinder Events
|
|
|
|
|
|
diff --git a/src/main/java/net/minecraft/server/EntitySlime.java b/src/main/java/net/minecraft/server/EntitySlime.java
|
|
index 238f3c7926..cfa4710b78 100644
|
|
--- a/src/main/java/net/minecraft/server/EntitySlime.java
|
|
+++ b/src/main/java/net/minecraft/server/EntitySlime.java
|
|
@@ -57,6 +57,7 @@ public class EntitySlime extends EntityInsentient implements IMonster {
|
|
super.b(nbttagcompound);
|
|
nbttagcompound.setInt("Size", this.getSize() - 1);
|
|
nbttagcompound.setBoolean("wasOnGround", this.bD);
|
|
+ nbttagcompound.setBoolean("Paper.canWander", this.canWander); // Paper
|
|
}
|
|
|
|
public void a(NBTTagCompound nbttagcompound) {
|
|
@@ -69,6 +70,7 @@ public class EntitySlime extends EntityInsentient implements IMonster {
|
|
|
|
this.setSize(i + 1, false);
|
|
this.bD = nbttagcompound.getBoolean("wasOnGround");
|
|
+ this.canWander = nbttagcompound.getBoolean("Paper.canWander"); // Paper
|
|
}
|
|
|
|
public boolean dy() {
|
|
@@ -308,7 +310,7 @@ public class EntitySlime extends EntityInsentient implements IMonster {
|
|
}
|
|
|
|
public boolean a() {
|
|
- return true;
|
|
+ return this.a.canWander && new com.destroystokyo.paper.event.entity.SlimeWanderEvent((org.bukkit.entity.Slime) this.a.getBukkitEntity()).callEvent(); // Paper
|
|
}
|
|
|
|
public void e() {
|
|
@@ -327,7 +329,7 @@ public class EntitySlime extends EntityInsentient implements IMonster {
|
|
}
|
|
|
|
public boolean a() {
|
|
- return this.a.isInWater() || this.a.ax();
|
|
+ return (this.a.isInWater() || this.a.ax()) && this.a.canWander && new com.destroystokyo.paper.event.entity.SlimeSwimEvent((org.bukkit.entity.Slime) this.a.getBukkitEntity()).callEvent(); // Paper
|
|
}
|
|
|
|
public void e() {
|
|
@@ -351,13 +353,17 @@ public class EntitySlime extends EntityInsentient implements IMonster {
|
|
}
|
|
|
|
public boolean a() {
|
|
- return this.a.getGoalTarget() == null && (this.a.onGround || this.a.isInWater() || this.a.ax() || this.a.hasEffect(MobEffects.LEVITATION));
|
|
+ return this.a.canWander && this.a.getGoalTarget() == null && (this.a.onGround || this.a.isInWater() || this.a.ax() || this.a.hasEffect(MobEffects.LEVITATION)); // Paper
|
|
}
|
|
|
|
public void e() {
|
|
if (--this.c <= 0) {
|
|
this.c = 40 + this.a.getRandom().nextInt(60);
|
|
- this.b = (float) this.a.getRandom().nextInt(360);
|
|
+ // Paper start
|
|
+ com.destroystokyo.paper.event.entity.SlimeChangeDirectionEvent event = new com.destroystokyo.paper.event.entity.SlimeChangeDirectionEvent((org.bukkit.entity.Slime) this.a.getBukkitEntity(), (float) this.a.getRandom().nextInt(360));
|
|
+ if (!this.a.canWander || !event.callEvent()) return;
|
|
+ this.b = event.getNewYaw();
|
|
+ // Paper end
|
|
}
|
|
|
|
((EntitySlime.ControllerMoveSlime) this.a.getControllerMove()).a(this.b, false);
|
|
@@ -377,7 +383,16 @@ public class EntitySlime extends EntityInsentient implements IMonster {
|
|
public boolean a() {
|
|
EntityLiving entityliving = this.a.getGoalTarget();
|
|
|
|
- return entityliving == null ? false : (!entityliving.isAlive() ? false : !(entityliving instanceof EntityHuman) || !((EntityHuman) entityliving).abilities.isInvulnerable);
|
|
+ // Paper start
|
|
+ if (entityliving != null && entityliving.isAlive() && (!(entityliving instanceof EntityHuman) || !((EntityHuman) entityliving).abilities.isInvulnerable)) {
|
|
+ if (this.a.canWander && new com.destroystokyo.paper.event.entity.SlimeTargetLivingEntityEvent((org.bukkit.entity.Slime) this.a.getBukkitEntity(), (org.bukkit.entity.LivingEntity) entityliving.getBukkitEntity()).callEvent()) {
|
|
+ return true;
|
|
+ }
|
|
+ this.b = 0;
|
|
+ this.a.setGoalTarget(null);
|
|
+ }
|
|
+ return false;
|
|
+ // Paper end
|
|
}
|
|
|
|
public void c() {
|
|
@@ -388,7 +403,16 @@ public class EntitySlime extends EntityInsentient implements IMonster {
|
|
public boolean b() {
|
|
EntityLiving entityliving = this.a.getGoalTarget();
|
|
|
|
- return entityliving == null ? false : (!entityliving.isAlive() ? false : (entityliving instanceof EntityHuman && ((EntityHuman) entityliving).abilities.isInvulnerable ? false : --this.b > 0));
|
|
+ // Paper start
|
|
+ if (entityliving != null && entityliving.isAlive() && (!(entityliving instanceof EntityHuman) || !((EntityHuman) entityliving).abilities.isInvulnerable)) {
|
|
+ if (this.a.canWander && new com.destroystokyo.paper.event.entity.SlimeTargetLivingEntityEvent((org.bukkit.entity.Slime) this.a.getBukkitEntity(), (org.bukkit.entity.LivingEntity) entityliving.getBukkitEntity()).callEvent()) {
|
|
+ return true;
|
|
+ }
|
|
+ this.b = 0;
|
|
+ this.a.setGoalTarget(null);
|
|
+ }
|
|
+ return false;
|
|
+ // Paper end
|
|
}
|
|
|
|
public void e() {
|
|
@@ -452,4 +476,15 @@ public class EntitySlime extends EntityInsentient implements IMonster {
|
|
}
|
|
}
|
|
}
|
|
+
|
|
+ // Paper start
|
|
+ private boolean canWander = true;
|
|
+ public boolean canWander() {
|
|
+ return canWander;
|
|
+ }
|
|
+
|
|
+ public void setWander(boolean canWander) {
|
|
+ this.canWander = canWander;
|
|
+ }
|
|
+ // Paper end
|
|
}
|
|
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftSlime.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftSlime.java
|
|
index 18e7ef80ac..8403c1e01c 100644
|
|
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftSlime.java
|
|
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftSlime.java
|
|
@@ -33,4 +33,14 @@ public class CraftSlime extends CraftMob implements Slime {
|
|
public EntityType getType() {
|
|
return EntityType.SLIME;
|
|
}
|
|
+
|
|
+ // Paper start
|
|
+ public boolean canWander() {
|
|
+ return getHandle().canWander();
|
|
+ }
|
|
+
|
|
+ public void setWander(boolean canWander) {
|
|
+ getHandle().setWander(canWander);
|
|
+ }
|
|
+ // Paper end
|
|
}
|
|
--
|
|
2.19.0
|
|
|