aboutsummaryrefslogtreecommitdiffhomepage
path: root/patches/server/0271-Turtle-API.patch
diff options
context:
space:
mode:
Diffstat (limited to 'patches/server/0271-Turtle-API.patch')
-rw-r--r--patches/server/0271-Turtle-API.patch99
1 files changed, 99 insertions, 0 deletions
diff --git a/patches/server/0271-Turtle-API.patch b/patches/server/0271-Turtle-API.patch
new file mode 100644
index 0000000000..fb6ff88d30
--- /dev/null
+++ b/patches/server/0271-Turtle-API.patch
@@ -0,0 +1,99 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: BillyGalbreath <[email protected]>
+Date: Sat, 29 Sep 2018 16:08:23 -0500
+Subject: [PATCH] Turtle API
+
+
+diff --git a/src/main/java/net/minecraft/world/entity/ai/goal/MoveToBlockGoal.java b/src/main/java/net/minecraft/world/entity/ai/goal/MoveToBlockGoal.java
+index e3983370c09e3e3445c4557fcca50dd25f29cba0..6efba52c2e5d7811ee329ed22c1c76f75d7ddbe1 100644
+--- a/src/main/java/net/minecraft/world/entity/ai/goal/MoveToBlockGoal.java
++++ b/src/main/java/net/minecraft/world/entity/ai/goal/MoveToBlockGoal.java
+@@ -14,7 +14,7 @@ public abstract class MoveToBlockGoal extends Goal {
+ protected int nextStartTick;
+ protected int tryTicks;
+ private int maxStayTicks;
+- protected BlockPos blockPos = BlockPos.ZERO;
++ protected BlockPos blockPos = BlockPos.ZERO; @Deprecated public final BlockPos getTargetPosition() { return this.blockPos; } // Paper - OBFHELPER
+ private boolean reachedTarget;
+ private final int searchRange;
+ private final int verticalSearchRange;
+diff --git a/src/main/java/net/minecraft/world/entity/animal/Turtle.java b/src/main/java/net/minecraft/world/entity/animal/Turtle.java
+index ea1bb6924043dfd05452b793afd7651c867de5dc..1b0be28ebfd7ec2f978b5d87f6d26e4d5913fb06 100644
+--- a/src/main/java/net/minecraft/world/entity/animal/Turtle.java
++++ b/src/main/java/net/minecraft/world/entity/animal/Turtle.java
+@@ -482,14 +482,17 @@ public class Turtle extends Animal {
+
+ if (!this.turtle.isInWater() && this.isReachedTarget()) {
+ if (this.turtle.layEggCounter < 1) {
+- this.turtle.setLayingEgg(true);
++ this.turtle.setLayingEgg(new com.destroystokyo.paper.event.entity.TurtleStartDiggingEvent((org.bukkit.entity.Turtle) this.turtle.getBukkitEntity(), net.minecraft.server.MCUtil.toLocation(this.turtle.level, this.getTargetPosition())).callEvent()); // Paper
+ } else if (this.turtle.layEggCounter > this.adjustedTickDelay(200)) {
+ Level world = this.turtle.level;
+
+ // CraftBukkit start
+- if (!org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(this.turtle, this.blockPos.above(), (BlockState) Blocks.TURTLE_EGG.defaultBlockState().setValue(TurtleEggBlock.EGGS, this.turtle.random.nextInt(4) + 1)).isCancelled()) {
++ // Paper start
++ int eggCount = this.turtle.random.nextInt(4) + 1;
++ com.destroystokyo.paper.event.entity.TurtleLayEggEvent layEggEvent = new com.destroystokyo.paper.event.entity.TurtleLayEggEvent((org.bukkit.entity.Turtle) this.turtle.getBukkitEntity(), net.minecraft.server.MCUtil.toLocation(this.turtle.level, this.blockPos.above()), eggCount);
++ if (layEggEvent.callEvent() && !org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(this.turtle, this.blockPos.above(), Blocks.TURTLE_EGG.defaultBlockState().setValue(TurtleEggBlock.EGGS, layEggEvent.getEggCount())).isCancelled()) {
+ world.playSound((Player) null, blockposition, SoundEvents.TURTLE_LAY_EGG, SoundSource.BLOCKS, 0.3F, 0.9F + world.random.nextFloat() * 0.2F);
+- world.setBlock(this.blockPos.above(), (BlockState) Blocks.TURTLE_EGG.defaultBlockState().setValue(TurtleEggBlock.EGGS, this.turtle.random.nextInt(4) + 1), 3);
++ world.setBlock(this.blockPos.above(), (BlockState) Blocks.TURTLE_EGG.defaultBlockState().setValue(TurtleEggBlock.EGGS, layEggEvent.getEggCount()), 3);
+ }
+ // CraftBukkit end
+ this.turtle.setHasEgg(false);
+@@ -557,7 +560,7 @@ public class Turtle extends Animal {
+
+ @Override
+ public boolean canUse() {
+- return this.turtle.isBaby() ? false : (this.turtle.hasEgg() ? true : (this.turtle.getRandom().nextInt(reducedTickDelay(700)) != 0 ? false : !this.turtle.getHomePos().closerToCenterThan(this.turtle.position(), 64.0D)));
++ return this.turtle.isBaby() ? false : (this.turtle.hasEgg() ? true : (this.turtle.getRandom().nextInt(reducedTickDelay(700)) != 0 ? false : !this.turtle.getHomePos().closerToCenterThan(this.turtle.position(), 64.0D))) && new com.destroystokyo.paper.event.entity.TurtleGoHomeEvent((org.bukkit.entity.Turtle) this.turtle.getBukkitEntity()).callEvent(); // Paper
+ }
+
+ @Override
+diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftTurtle.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftTurtle.java
+index ed08089f21c8958fc9fc7e6e73a2b6ff9108242c..b78289dd6a71b962c02247af578e939bc97847c8 100644
+--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftTurtle.java
++++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftTurtle.java
+@@ -24,4 +24,41 @@ public class CraftTurtle extends CraftAnimals implements Turtle {
+ public EntityType getType() {
+ return EntityType.TURTLE;
+ }
++
++ // Paper start
++ @Override
++ public org.bukkit.Location getHome() {
++ return net.minecraft.server.MCUtil.toLocation(getHandle().level, getHandle().getHomePos());
++ }
++
++ @Override
++ public void setHome(org.bukkit.Location location) {
++ getHandle().setHomePos(net.minecraft.server.MCUtil.toBlockPosition(location));
++ }
++
++ @Override
++ public boolean isGoingHome() {
++ return getHandle().isGoingHome();
++ }
++
++ @Override
++ public boolean isDigging() {
++ return getHandle().isLayingEgg();
++ }
++
++ @Override
++ public boolean hasEgg() {
++ return getHandle().hasEgg();
++ }
++
++ @Override
++ public void setHasEgg(boolean hasEgg) {
++ getHandle().setHasEgg(hasEgg);
++ }
++
++ @Override
++ public boolean isLayingEgg() {
++ return this.getHandle().isLayingEgg();
++ }
++ // Paper end
+ }