From 678b14086c37ad2be235f4c77dc2e4b3050d495a Mon Sep 17 00:00:00 2001 From: BillyGalbreath Date: Sat, 29 Sep 2018 16:08:23 -0500 Subject: [PATCH] Turtle API diff --git a/src/main/java/net/minecraft/server/EntityTurtle.java b/src/main/java/net/minecraft/server/EntityTurtle.java index 70cf407dc..2c1db9b78 100644 --- a/src/main/java/net/minecraft/server/EntityTurtle.java +++ b/src/main/java/net/minecraft/server/EntityTurtle.java @@ -27,51 +27,63 @@ public class EntityTurtle extends EntityAnimal { this.Q = 1.0F; } + public void setHome(BlockPosition pos) { g(pos); } // Paper - OBFHELPER public void g(BlockPosition blockposition) { this.datawatcher.set(EntityTurtle.bD, blockposition); } + public BlockPosition getHome() { return dA(); } // Paper - OBFHELPER private BlockPosition dA() { return (BlockPosition) this.datawatcher.get(EntityTurtle.bD); } + public void setTravelPos(BlockPosition pos) { h(pos); } // Paper - OBFHELPER private void h(BlockPosition blockposition) { this.datawatcher.set(EntityTurtle.bH, blockposition); } + public BlockPosition getTravelPos() { return dB(); } // Paper - OBFHELPER private BlockPosition dB() { return (BlockPosition) this.datawatcher.get(EntityTurtle.bH); } + public boolean hasEgg() { return dy(); } // Paper - OBFHELPER public boolean dy() { return ((Boolean) this.datawatcher.get(EntityTurtle.bE)).booleanValue(); } + public void setHasEgg(boolean hasEgg) { s(hasEgg); } // Paper - OBFHELPER private void s(boolean flag) { this.datawatcher.set(EntityTurtle.bE, Boolean.valueOf(flag)); } + public boolean isDigging() { return dz(); } // Paper - OBFHELPER public boolean dz() { return ((Boolean) this.datawatcher.get(EntityTurtle.bG)).booleanValue(); } + public void setDigging(boolean digging) { t(digging); } // Paper - OBFHELPER private void t(boolean flag) { this.bK = flag ? 1 : 0; this.datawatcher.set(EntityTurtle.bG, Boolean.valueOf(flag)); } + public boolean isGoingHome() { return dC(); } // Paper - OBFHELPER private boolean dC() { return ((Boolean) this.datawatcher.get(EntityTurtle.bI)).booleanValue(); } + public void setGoingHome(boolean goingHome) { u(goingHome); } // Paper - OBFHELPER private void u(boolean flag) { this.datawatcher.set(EntityTurtle.bI, Boolean.valueOf(flag)); } + public boolean isTravelling() { return dH(); } // Paper - OBFHELPER private boolean dH() { return ((Boolean) this.datawatcher.get(EntityTurtle.bJ)).booleanValue(); } + public void setTravelling(boolean travelling) { v(travelling); } // Paper - OBFHELPER private void v(boolean flag) { this.datawatcher.set(EntityTurtle.bJ, Boolean.valueOf(flag)); } @@ -435,14 +447,18 @@ public class EntityTurtle extends EntityAnimal { if (!this.f.isInWater() && this.k()) { if (this.f.bK < 1) { - this.f.t(true); + this.f.setDigging(new com.destroystokyo.paper.event.entity.TurtleStartDiggingEvent((org.bukkit.entity.Turtle) this.f.getBukkitEntity(), MCUtil.toLocation(this.f.world, this.d)).callEvent()); // Paper } else if (this.f.bK > 200) { World world = this.f.world; // CraftBukkit start - if (!org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(this.f, this.d.up(), Blocks.TURTLE_EGG.getBlockData().set(BlockTurtleEgg.b, Integer.valueOf(this.f.random.nextInt(4) + 1))).isCancelled()) { + // Paper start + int eggCount = this.f.random.nextInt(4) + 1; + com.destroystokyo.paper.event.entity.TurtleLayEggEvent layEggEvent = new com.destroystokyo.paper.event.entity.TurtleLayEggEvent((org.bukkit.entity.Turtle) this.f.getBukkitEntity(), MCUtil.toLocation(this.f.world, this.d.up()), eggCount); + if (layEggEvent.callEvent() && !org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(this.f, this.d.up(), Blocks.TURTLE_EGG.getBlockData().set(BlockTurtleEgg.b, layEggEvent.getEggCount())).isCancelled()) { world.a((EntityHuman) null, blockposition, SoundEffects.ENTITY_TURTLE_LAY_EGG, SoundCategory.BLOCKS, 0.3F, 0.9F + world.random.nextFloat() * 0.2F); - world.setTypeAndData(this.d.up(), (IBlockData) Blocks.TURTLE_EGG.getBlockData().set(BlockTurtleEgg.b, Integer.valueOf(this.f.random.nextInt(4) + 1)), 3); + world.setTypeAndData(this.d.up(), (IBlockData) Blocks.TURTLE_EGG.getBlockData().set(BlockTurtleEgg.b, layEggEvent.getEggCount()), 3); + // Paper end } // CraftBukkit end this.f.s(false); @@ -568,7 +584,7 @@ public class EntityTurtle extends EntityAnimal { } public boolean a() { - return this.a.isBaby() ? false : (this.a.dy() ? true : (this.a.getRandom().nextInt(700) != 0 ? false : this.a.c(this.a.dA()) >= 4096.0D)); + return this.a.isBaby() ? false : (this.a.dy() ? true : (this.a.getRandom().nextInt(700) != 0 ? false : this.a.c(this.a.dA()) >= 4096.0D)) && new com.destroystokyo.paper.event.entity.TurtleGoHomeEvent((org.bukkit.entity.Turtle) this.a.getBukkitEntity()).callEvent(); // Paper; } public void c() { diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftTurtle.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftTurtle.java index 123a2c75c..8edcf7af6 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftTurtle.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftTurtle.java @@ -1,6 +1,8 @@ package org.bukkit.craftbukkit.entity; import net.minecraft.server.EntityTurtle; +import net.minecraft.server.MCUtil; +import org.bukkit.Location; import org.bukkit.craftbukkit.CraftServer; import org.bukkit.entity.EntityType; import org.bukkit.entity.Turtle; @@ -25,4 +27,36 @@ public class CraftTurtle extends CraftAnimals implements Turtle { public EntityType getType() { return EntityType.TURTLE; } + + // Paper start + @Override + public Location getHome() { + return MCUtil.toLocation(getHandle().world, getHandle().getHome()); + } + + @Override + public void setHome(Location location) { + getHandle().setHome(MCUtil.toBlockPosition(location)); + } + + @Override + public boolean isGoingHome() { + return getHandle().isGoingHome(); + } + + @Override + public boolean isDigging() { + return getHandle().isDigging(); + } + + @Override + public boolean hasEgg() { + return getHandle().hasEgg(); + } + + @Override + public void setHasEgg(boolean hasEgg) { + getHandle().setHasEgg(hasEgg); + } + // Paper end } -- 2.19.1