From e2e6946c92c12490810ab45b70030f7b15dab36c Mon Sep 17 00:00:00 2001 From: SquidDev Date: Mon, 16 Apr 2018 09:34:44 +0100 Subject: [PATCH] Add additional method stubs to the TurtlePlayer Forge's default fake player implementation doesn't override all methods which use the connection. As it is not set, we get an NPE and thus crash the server. We simply stub those methods out ourselves to prevent such an issue. --- .../shared/turtle/core/TurtlePlayer.java | 74 +++++++++++++++++-- 1 file changed, 69 insertions(+), 5 deletions(-) diff --git a/src/main/java/dan200/computercraft/shared/turtle/core/TurtlePlayer.java b/src/main/java/dan200/computercraft/shared/turtle/core/TurtlePlayer.java index a5362c531..f0f35ef0b 100644 --- a/src/main/java/dan200/computercraft/shared/turtle/core/TurtlePlayer.java +++ b/src/main/java/dan200/computercraft/shared/turtle/core/TurtlePlayer.java @@ -11,10 +11,16 @@ import dan200.computercraft.api.turtle.ITurtleAccess; import dan200.computercraft.shared.util.InventoryUtil; import dan200.computercraft.shared.util.WorldUtil; import net.minecraft.entity.Entity; +import net.minecraft.entity.IMerchant; +import net.minecraft.entity.passive.AbstractHorse; +import net.minecraft.inventory.IInventory; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntitySign; import net.minecraft.util.EnumFacing; +import net.minecraft.util.EnumHand; import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.Vec3d; +import net.minecraft.world.IInteractionObject; import net.minecraft.world.World; import net.minecraft.world.WorldServer; import net.minecraftforge.common.util.FakePlayer; @@ -73,6 +79,12 @@ public class TurtlePlayer extends FakePlayer return results; } + @Override + public Vec3d getPositionVector() + { + return new Vec3d( posX, posY, posZ ); + } + @Override public float getEyeHeight() { @@ -85,6 +97,63 @@ public class TurtlePlayer extends FakePlayer return 0.0f; } + @Override + public void sendEnterCombat() + { + } + + @Override + public void sendEndCombat() + { + } + + @Nonnull + @Override + public SleepResult trySleep( @Nonnull BlockPos bedLocation ) + { + return SleepResult.OTHER_PROBLEM; + } + + @Override + public void openEditSign( TileEntitySign signTile ) + { + } + + @Override + public void displayGui( IInteractionObject guiOwner ) + { + } + + @Override + public void displayGUIChest( IInventory chestInventory ) + { + } + + @Override + public void displayVillagerTradeGui( IMerchant villager ) + { + } + + @Override + public void openGuiHorseInventory( AbstractHorse horse, IInventory inventoryIn ) + { + } + + @Override + public void openBook( ItemStack stack, @Nonnull EnumHand hand ) + { + } + + @Override + public void updateHeldItem() + { + } + + @Override + protected void onItemUseFinish() + { + } + @Override public void mountEntityAndWakeUp() { @@ -94,9 +163,4 @@ public class TurtlePlayer extends FakePlayer public void dismountEntity( @Nonnull Entity entity ) { } - - @Override - public void openEditSign( TileEntitySign signTile ) - { - } }