From 0000000000000000000000000000000000000000 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/world/entity/ai/goal/PathfinderGoalGotoTarget.java b/src/main/java/net/minecraft/world/entity/ai/goal/PathfinderGoalGotoTarget.java index 62276550627bfe453794a2b3101426fe05a585ff..6a156a488bc073b3b60f4d1081e3f2ab65ba9e96 100644 --- a/src/main/java/net/minecraft/world/entity/ai/goal/PathfinderGoalGotoTarget.java +++ b/src/main/java/net/minecraft/world/entity/ai/goal/PathfinderGoalGotoTarget.java @@ -14,7 +14,7 @@ public abstract class PathfinderGoalGotoTarget extends PathfinderGoal { protected int c; protected int d; private int g; - protected BlockPosition e; + protected BlockPosition e;public final BlockPosition getTargetPosition() { return this.e; } // Paper - OBFHELPER private boolean h; private final int i; private final int j; diff --git a/src/main/java/net/minecraft/world/entity/animal/EntityTurtle.java b/src/main/java/net/minecraft/world/entity/animal/EntityTurtle.java index bf224c97854daa379c61affff6a0ac9524c2c35d..09a6310af6712d36c20167256b60dc3235e76021 100644 --- a/src/main/java/net/minecraft/world/entity/animal/EntityTurtle.java +++ b/src/main/java/net/minecraft/world/entity/animal/EntityTurtle.java @@ -14,6 +14,7 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.network.syncher.DataWatcher; import net.minecraft.network.syncher.DataWatcherObject; import net.minecraft.network.syncher.DataWatcherRegistry; +import net.minecraft.server.MCUtil; import net.minecraft.server.level.EntityPlayer; import net.minecraft.server.level.WorldServer; import net.minecraft.sounds.SoundCategory; @@ -93,7 +94,7 @@ public class EntityTurtle extends EntityAnimal { this.datawatcher.set(EntityTurtle.bp, blockposition); } - private BlockPosition getHomePos() { + public BlockPosition getHomePos() { // Paper - public return (BlockPosition) this.datawatcher.get(EntityTurtle.bp); } @@ -109,31 +110,37 @@ public class EntityTurtle extends EntityAnimal { return (Boolean) this.datawatcher.get(EntityTurtle.bq); } - private void setHasEgg(boolean flag) { + public void setHasEgg(boolean flag) { // Paper this.datawatcher.set(EntityTurtle.bq, flag); } + public final boolean isDigging() { return this.eL(); } // Paper - OBFHELPER public boolean eL() { return (Boolean) this.datawatcher.get(EntityTurtle.br); } + public final void setDigging(boolean digging) { this.u(digging); } // Paper - OBFHELPER private void u(boolean flag) { this.bv = flag ? 1 : 0; this.datawatcher.set(EntityTurtle.br, flag); } + public final boolean isGoingHome() { return this.eU(); } // Paper - OBFHELPER private boolean eU() { return (Boolean) this.datawatcher.get(EntityTurtle.bt); } + public final void setGoingHome(boolean goingHome) { this.v(goingHome); } // Paper - OBFHELPER private void v(boolean flag) { this.datawatcher.set(EntityTurtle.bt, flag); } + public final boolean isTravelling() { return this.eV(); } // Paper - OBFHELPER private boolean eV() { return (Boolean) this.datawatcher.get(EntityTurtle.bu); } + public final void setTravelling(boolean travelling) { this.w(travelling); } // Paper - OBFHELPER private void w(boolean flag) { this.datawatcher.set(EntityTurtle.bu, flag); } @@ -500,14 +507,17 @@ public class EntityTurtle extends EntityAnimal { if (!this.g.isInWater() && this.l()) { if (this.g.bv < 1) { - this.g.u(true); + this.g.setDigging(new com.destroystokyo.paper.event.entity.TurtleStartDiggingEvent((org.bukkit.entity.Turtle) this.g.getBukkitEntity(), MCUtil.toLocation(this.g.world, this.getTargetPosition())).callEvent()); // Paper } else if (this.g.bv > 200) { World world = this.g.world; // CraftBukkit start - if (!org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(this.g, this.e.up(), (IBlockData) Blocks.TURTLE_EGG.getBlockData().set(BlockTurtleEgg.b, this.g.random.nextInt(4) + 1)).isCancelled()) { + // Paper start + int eggCount = this.g.random.nextInt(4) + 1; + com.destroystokyo.paper.event.entity.TurtleLayEggEvent layEggEvent = new com.destroystokyo.paper.event.entity.TurtleLayEggEvent((org.bukkit.entity.Turtle) this.g.getBukkitEntity(), MCUtil.toLocation(this.g.world, this.e.up()), eggCount); + if (layEggEvent.callEvent() && !org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(this.g, this.e.up(), Blocks.TURTLE_EGG.getBlockData().set(BlockTurtleEgg.b, layEggEvent.getEggCount())).isCancelled()) { world.playSound((EntityHuman) null, blockposition, SoundEffects.ENTITY_TURTLE_LAY_EGG, SoundCategory.BLOCKS, 0.3F, 0.9F + world.random.nextFloat() * 0.2F); - world.setTypeAndData(this.e.up(), (IBlockData) Blocks.TURTLE_EGG.getBlockData().set(BlockTurtleEgg.b, this.g.random.nextInt(4) + 1), 3); + world.setTypeAndData(this.e.up(), (IBlockData) Blocks.TURTLE_EGG.getBlockData().set(BlockTurtleEgg.b, layEggEvent.getEggCount()), 3); } // CraftBukkit end this.g.setHasEgg(false); @@ -636,7 +646,7 @@ public class EntityTurtle extends EntityAnimal { @Override public boolean a() { - return this.a.isBaby() ? false : (this.a.hasEgg() ? true : (this.a.getRandom().nextInt(700) != 0 ? false : !this.a.getHomePos().a((IPosition) this.a.getPositionVector(), 64.0D))); + return this.a.isBaby() ? false : (this.a.hasEgg() ? true : (this.a.getRandom().nextInt(700) != 0 ? false : !this.a.getHomePos().a((IPosition) this.a.getPositionVector(), 64.0D))) && new com.destroystokyo.paper.event.entity.TurtleGoHomeEvent((org.bukkit.entity.Turtle) this.a.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 b46bb75926c14ab54ea309a400eb57405b11ce27..31f1a6b2b9a432cdd25826ced884424eeb50df97 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftTurtle.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftTurtle.java @@ -25,4 +25,36 @@ 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().world, 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().isDigging(); + } + + @Override + public boolean hasEgg() { + return getHandle().hasEgg(); + } + + @Override + public void setHasEgg(boolean hasEgg) { + getHandle().setHasEgg(hasEgg); + } + // Paper end }