mirror of
https://github.com/SquidDev-CC/CC-Tweaked
synced 2025-06-08 17:44:11 +00:00
Fire all entity interaction events in TurtlePlaceCommand
This allows turtles to interact with entities correctly.
This commit is contained in:
parent
d050ca9849
commit
bbbbccf63d
@ -53,9 +53,10 @@ import net.minecraft.entity.player.EntityPlayerMP;
|
|||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.network.PacketBuffer;
|
import net.minecraft.network.PacketBuffer;
|
||||||
import net.minecraft.server.MinecraftServer;
|
import net.minecraft.server.MinecraftServer;
|
||||||
|
import net.minecraft.util.EnumFacing;
|
||||||
|
import net.minecraft.util.EnumHand;
|
||||||
import net.minecraft.util.SoundEvent;
|
import net.minecraft.util.SoundEvent;
|
||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
import net.minecraft.util.EnumFacing;
|
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
import net.minecraftforge.common.config.Configuration;
|
import net.minecraftforge.common.config.Configuration;
|
||||||
import net.minecraftforge.common.config.Property;
|
import net.minecraftforge.common.config.Property;
|
||||||
@ -366,14 +367,14 @@ public class ComputerCraft
|
|||||||
player.openGui( instance, ComputerCraft.turtleGUIID, player.getEntityWorld(), pos.getX(), pos.getY(), pos.getZ() );
|
player.openGui( instance, ComputerCraft.turtleGUIID, player.getEntityWorld(), pos.getX(), pos.getY(), pos.getZ() );
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void openPrintoutGUI( EntityPlayer player )
|
public static void openPrintoutGUI( EntityPlayer player, EnumHand hand )
|
||||||
{
|
{
|
||||||
player.openGui( ComputerCraft.instance, ComputerCraft.printoutGUIID, player.getEntityWorld(), 0, 0, 0 );
|
player.openGui( ComputerCraft.instance, ComputerCraft.printoutGUIID, player.getEntityWorld(), hand.ordinal(), 0, 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void openPocketComputerGUI( EntityPlayer player )
|
public static void openPocketComputerGUI( EntityPlayer player, EnumHand hand )
|
||||||
{
|
{
|
||||||
player.openGui( ComputerCraft.instance, ComputerCraft.pocketComputerGUIID, player.getEntityWorld(), 0, 0, 0 );
|
player.openGui( ComputerCraft.instance, ComputerCraft.pocketComputerGUIID, player.getEntityWorld(), hand.ordinal(), 0, 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
public static File getBaseDir()
|
public static File getBaseDir()
|
||||||
|
@ -34,11 +34,11 @@ import net.minecraft.entity.player.EntityPlayer;
|
|||||||
import net.minecraft.entity.player.InventoryPlayer;
|
import net.minecraft.entity.player.InventoryPlayer;
|
||||||
import net.minecraft.item.Item;
|
import net.minecraft.item.Item;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.server.MinecraftServer;
|
import net.minecraft.util.EnumHand;
|
||||||
|
import net.minecraft.util.IThreadListener;
|
||||||
import net.minecraft.util.ResourceLocation;
|
import net.minecraft.util.ResourceLocation;
|
||||||
import net.minecraft.util.SoundEvent;
|
import net.minecraft.util.SoundEvent;
|
||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
import net.minecraft.util.IThreadListener;
|
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
import net.minecraftforge.client.event.RenderGameOverlayEvent;
|
import net.minecraftforge.client.event.RenderGameOverlayEvent;
|
||||||
import net.minecraftforge.client.event.RenderHandEvent;
|
import net.minecraftforge.client.event.RenderHandEvent;
|
||||||
@ -176,7 +176,7 @@ public class ComputerCraftProxyClient extends ComputerCraftProxyCommon
|
|||||||
"advanced_pocket_computer_off", "advanced_pocket_computer_on", "advanced_pocket_computer_blinking", "advanced_pocket_computer_on_modem_on", "advanced_pocket_computer_blinking_modem_on",
|
"advanced_pocket_computer_off", "advanced_pocket_computer_on", "advanced_pocket_computer_blinking", "advanced_pocket_computer_on_modem_on", "advanced_pocket_computer_blinking_modem_on",
|
||||||
} );
|
} );
|
||||||
|
|
||||||
// Setup item colours
|
// Setup
|
||||||
mc.getItemColors().registerItemColorHandler(new DiskColorHandler(ComputerCraft.Items.disk), ComputerCraft.Items.disk);
|
mc.getItemColors().registerItemColorHandler(new DiskColorHandler(ComputerCraft.Items.disk), ComputerCraft.Items.disk);
|
||||||
mc.getItemColors().registerItemColorHandler(new DiskColorHandler(ComputerCraft.Items.diskExpanded), ComputerCraft.Items.diskExpanded);
|
mc.getItemColors().registerItemColorHandler(new DiskColorHandler(ComputerCraft.Items.diskExpanded), ComputerCraft.Items.diskExpanded);
|
||||||
|
|
||||||
@ -312,9 +312,9 @@ public class ComputerCraftProxyClient extends ComputerCraftProxyCommon
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Object getPrintoutGUI( InventoryPlayer inventory )
|
public Object getPrintoutGUI( EntityPlayer player, EnumHand hand )
|
||||||
{
|
{
|
||||||
ContainerHeldItem container = new ContainerHeldItem( inventory );
|
ContainerHeldItem container = new ContainerHeldItem( player, hand );
|
||||||
if( container.getStack() != null && container.getStack().getItem() instanceof ItemPrintout )
|
if( container.getStack() != null && container.getStack().getItem() instanceof ItemPrintout )
|
||||||
{
|
{
|
||||||
return new GuiPrintout( container );
|
return new GuiPrintout( container );
|
||||||
@ -323,9 +323,9 @@ public class ComputerCraftProxyClient extends ComputerCraftProxyCommon
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Object getPocketComputerGUI( InventoryPlayer inventory )
|
public Object getPocketComputerGUI( EntityPlayer player, EnumHand hand )
|
||||||
{
|
{
|
||||||
ContainerHeldItem container = new ContainerHeldItem( inventory );
|
ContainerHeldItem container = new ContainerHeldItem( player, hand );
|
||||||
if( container.getStack() != null && container.getStack().getItem() instanceof ItemPocketComputer )
|
if( container.getStack() != null && container.getStack().getItem() instanceof ItemPocketComputer )
|
||||||
{
|
{
|
||||||
return new GuiPocketComputer( container );
|
return new GuiPocketComputer( container );
|
||||||
|
@ -12,7 +12,9 @@ import dan200.computercraft.shared.peripheral.diskdrive.TileDiskDrive;
|
|||||||
import dan200.computercraft.shared.peripheral.printer.TilePrinter;
|
import dan200.computercraft.shared.peripheral.printer.TilePrinter;
|
||||||
import dan200.computercraft.shared.proxy.ComputerCraftProxyCommon;
|
import dan200.computercraft.shared.proxy.ComputerCraftProxyCommon;
|
||||||
import dan200.computercraft.shared.turtle.blocks.TileTurtle;
|
import dan200.computercraft.shared.turtle.blocks.TileTurtle;
|
||||||
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.entity.player.InventoryPlayer;
|
import net.minecraft.entity.player.InventoryPlayer;
|
||||||
|
import net.minecraft.util.EnumHand;
|
||||||
import net.minecraft.util.SoundEvent;
|
import net.minecraft.util.SoundEvent;
|
||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
@ -88,13 +90,13 @@ public class ComputerCraftProxyServer extends ComputerCraftProxyCommon
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Object getPrintoutGUI( InventoryPlayer inventory )
|
public Object getPrintoutGUI( EntityPlayer player, EnumHand hand )
|
||||||
{
|
{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Object getPocketComputerGUI( InventoryPlayer inventory )
|
public Object getPocketComputerGUI( EntityPlayer player, EnumHand hand )
|
||||||
{
|
{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
@ -8,19 +8,19 @@ package dan200.computercraft.shared.media.inventory;
|
|||||||
|
|
||||||
import dan200.computercraft.shared.util.InventoryUtil;
|
import dan200.computercraft.shared.util.InventoryUtil;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.entity.player.InventoryPlayer;
|
|
||||||
import net.minecraft.inventory.Container;
|
import net.minecraft.inventory.Container;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
|
import net.minecraft.util.EnumHand;
|
||||||
|
|
||||||
public class ContainerHeldItem extends Container
|
public class ContainerHeldItem extends Container
|
||||||
{
|
{
|
||||||
private final ItemStack m_stack;
|
private final ItemStack m_stack;
|
||||||
private final int m_slot;
|
private final EnumHand m_hand;
|
||||||
|
|
||||||
public ContainerHeldItem( InventoryPlayer player )
|
public ContainerHeldItem( EntityPlayer player, EnumHand hand )
|
||||||
{
|
{
|
||||||
m_slot = player.currentItem;
|
m_hand = hand;
|
||||||
m_stack = InventoryUtil.copyItem( player.getStackInSlot( m_slot ) );
|
m_stack = InventoryUtil.copyItem( player.getHeldItem( hand ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
public ItemStack getStack()
|
public ItemStack getStack()
|
||||||
@ -33,7 +33,7 @@ public class ContainerHeldItem extends Container
|
|||||||
{
|
{
|
||||||
if( player != null && player.isEntityAlive() )
|
if( player != null && player.isEntityAlive() )
|
||||||
{
|
{
|
||||||
ItemStack stack = player.inventory.getStackInSlot( m_slot );
|
ItemStack stack = player.getHeldItem( m_hand );
|
||||||
if( (stack == m_stack) || (stack != null && m_stack != null && stack.getItem() == m_stack.getItem()) )
|
if( (stack == m_stack) || (stack != null && m_stack != null && stack.getItem() == m_stack.getItem()) )
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
|
@ -85,10 +85,9 @@ public class ItemPrintout extends Item
|
|||||||
{
|
{
|
||||||
if( !world.isRemote )
|
if( !world.isRemote )
|
||||||
{
|
{
|
||||||
ComputerCraft.openPrintoutGUI( player );
|
ComputerCraft.openPrintoutGUI( player, hand );
|
||||||
return new ActionResult<ItemStack>( EnumActionResult.SUCCESS, stack );
|
|
||||||
}
|
}
|
||||||
return new ActionResult<ItemStack>( EnumActionResult.PASS, stack );
|
return new ActionResult<ItemStack>( EnumActionResult.SUCCESS, stack );
|
||||||
}
|
}
|
||||||
|
|
||||||
private static ItemStack createFromTitleAndText( Type type, String title, String[] text, String[] colours )
|
private static ItemStack createFromTitleAndText( Type type, String title, String[] text, String[] colours )
|
||||||
|
@ -30,11 +30,13 @@ import net.minecraft.util.ActionResult;
|
|||||||
import net.minecraft.util.EnumActionResult;
|
import net.minecraft.util.EnumActionResult;
|
||||||
import net.minecraft.util.EnumHand;
|
import net.minecraft.util.EnumHand;
|
||||||
import net.minecraft.util.SoundEvent;
|
import net.minecraft.util.SoundEvent;
|
||||||
import net.minecraft.util.text.translation.I18n;;
|
import net.minecraft.util.text.translation.I18n;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
;
|
||||||
|
|
||||||
public class ItemPocketComputer extends Item implements IComputerItem, IMedia
|
public class ItemPocketComputer extends Item implements IComputerItem, IMedia
|
||||||
{
|
{
|
||||||
public ItemPocketComputer()
|
public ItemPocketComputer()
|
||||||
@ -169,10 +171,9 @@ public class ItemPocketComputer extends Item implements IComputerItem, IMedia
|
|||||||
{
|
{
|
||||||
computer.turnOn();
|
computer.turnOn();
|
||||||
}
|
}
|
||||||
ComputerCraft.openPocketComputerGUI( player );
|
ComputerCraft.openPocketComputerGUI( player, hand );
|
||||||
return new ActionResult<ItemStack>( EnumActionResult.SUCCESS, stack );
|
|
||||||
}
|
}
|
||||||
return new ActionResult<ItemStack>( EnumActionResult.PASS, stack );
|
return new ActionResult<ItemStack>( EnumActionResult.SUCCESS, stack );
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -63,6 +63,7 @@ import net.minecraft.item.ItemStack;
|
|||||||
import net.minecraft.nbt.NBTTagCompound;
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
import net.minecraft.network.Packet;
|
import net.minecraft.network.Packet;
|
||||||
import net.minecraft.tileentity.TileEntity;
|
import net.minecraft.tileentity.TileEntity;
|
||||||
|
import net.minecraft.util.EnumHand;
|
||||||
import net.minecraft.util.IThreadListener;
|
import net.minecraft.util.IThreadListener;
|
||||||
import net.minecraft.util.SoundEvent;
|
import net.minecraft.util.SoundEvent;
|
||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
@ -148,10 +149,10 @@ public abstract class ComputerCraftProxyCommon implements IComputerCraftProxy
|
|||||||
public abstract Object getTurtleGUI( InventoryPlayer inventory, TileTurtle turtle );
|
public abstract Object getTurtleGUI( InventoryPlayer inventory, TileTurtle turtle );
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public abstract Object getPrintoutGUI( InventoryPlayer inventory );
|
public abstract Object getPrintoutGUI( EntityPlayer player, EnumHand hand );
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public abstract Object getPocketComputerGUI( InventoryPlayer inventory );
|
public abstract Object getPocketComputerGUI( EntityPlayer player, EnumHand hand );
|
||||||
|
|
||||||
public abstract File getWorldDir( World world );
|
public abstract File getWorldDir( World world );
|
||||||
|
|
||||||
@ -164,8 +165,7 @@ public abstract class ComputerCraftProxyCommon implements IComputerCraftProxy
|
|||||||
if (listener.isCallingFromMinecraftThread())
|
if (listener.isCallingFromMinecraftThread())
|
||||||
{
|
{
|
||||||
processPacket( packet, player );
|
processPacket( packet, player );
|
||||||
}
|
} else
|
||||||
else
|
|
||||||
{
|
{
|
||||||
listener.addScheduledTask( new Runnable()
|
listener.addScheduledTask( new Runnable()
|
||||||
{
|
{
|
||||||
@ -546,11 +546,11 @@ public abstract class ComputerCraftProxyCommon implements IComputerCraftProxy
|
|||||||
}
|
}
|
||||||
case ComputerCraft.printoutGUIID:
|
case ComputerCraft.printoutGUIID:
|
||||||
{
|
{
|
||||||
return new ContainerHeldItem( player.inventory );
|
return new ContainerHeldItem( player, x == 0 ? EnumHand.MAIN_HAND : EnumHand.MAIN_HAND );
|
||||||
}
|
}
|
||||||
case ComputerCraft.pocketComputerGUIID:
|
case ComputerCraft.pocketComputerGUIID:
|
||||||
{
|
{
|
||||||
return new ContainerHeldItem( player.inventory );
|
return new ContainerHeldItem( player, x == 0 ? EnumHand.MAIN_HAND : EnumHand.OFF_HAND );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
@ -604,11 +604,11 @@ public abstract class ComputerCraftProxyCommon implements IComputerCraftProxy
|
|||||||
}
|
}
|
||||||
case ComputerCraft.printoutGUIID:
|
case ComputerCraft.printoutGUIID:
|
||||||
{
|
{
|
||||||
return getPrintoutGUI( player.inventory );
|
return getPrintoutGUI( player, x == 0 ? EnumHand.MAIN_HAND : EnumHand.OFF_HAND );
|
||||||
}
|
}
|
||||||
case ComputerCraft.pocketComputerGUIID:
|
case ComputerCraft.pocketComputerGUIID:
|
||||||
{
|
{
|
||||||
return getPocketComputerGUI( player.inventory );
|
return getPocketComputerGUI( player, x == 0 ? EnumHand.MAIN_HAND : EnumHand.OFF_HAND );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
|
@ -14,6 +14,7 @@ import dan200.computercraft.shared.turtle.blocks.TileTurtle;
|
|||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.entity.player.InventoryPlayer;
|
import net.minecraft.entity.player.InventoryPlayer;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
|
import net.minecraft.util.EnumHand;
|
||||||
import net.minecraft.util.SoundEvent;
|
import net.minecraft.util.SoundEvent;
|
||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
@ -38,8 +39,8 @@ public interface IComputerCraftProxy
|
|||||||
public Object getComputerGUI( TileComputer computer );
|
public Object getComputerGUI( TileComputer computer );
|
||||||
public Object getPrinterGUI( InventoryPlayer inventory, TilePrinter printer );
|
public Object getPrinterGUI( InventoryPlayer inventory, TilePrinter printer );
|
||||||
public Object getTurtleGUI( InventoryPlayer inventory, TileTurtle turtle );
|
public Object getTurtleGUI( InventoryPlayer inventory, TileTurtle turtle );
|
||||||
public abstract Object getPrintoutGUI( InventoryPlayer inventory );
|
public abstract Object getPrintoutGUI( EntityPlayer player, EnumHand hand );
|
||||||
public abstract Object getPocketComputerGUI( InventoryPlayer inventory );
|
public abstract Object getPocketComputerGUI( EntityPlayer player, EnumHand hand );
|
||||||
|
|
||||||
public File getWorldDir( World world );
|
public File getWorldDir( World world );
|
||||||
public void handlePacket( ComputerCraftPacket packet, EntityPlayer player );
|
public void handlePacket( ComputerCraftPacket packet, EntityPlayer player );
|
||||||
|
@ -240,6 +240,10 @@ public class TurtlePlaceCommand implements ITurtleCommand
|
|||||||
placed = true;
|
placed = true;
|
||||||
turtlePlayer.loadInventory( stackCopy );
|
turtlePlayer.loadInventory( stackCopy );
|
||||||
}
|
}
|
||||||
|
else if( hitEntity.processInitialInteract( turtlePlayer, stackCopy, EnumHand.MAIN_HAND ) )
|
||||||
|
{
|
||||||
|
placed = true;
|
||||||
|
}
|
||||||
else if( hitEntity instanceof EntityLivingBase )
|
else if( hitEntity instanceof EntityLivingBase )
|
||||||
{
|
{
|
||||||
placed = item.itemInteractionForEntity( stackCopy, turtlePlayer, (EntityLivingBase)hitEntity, EnumHand.MAIN_HAND );
|
placed = item.itemInteractionForEntity( stackCopy, turtlePlayer, (EntityLivingBase)hitEntity, EnumHand.MAIN_HAND );
|
||||||
|
Loading…
x
Reference in New Issue
Block a user