diff --git a/src/main/java/dan200/computercraft/ComputerCraft.java b/src/main/java/dan200/computercraft/ComputerCraft.java index 95c468b06..633f7abfd 100644 --- a/src/main/java/dan200/computercraft/ComputerCraft.java +++ b/src/main/java/dan200/computercraft/ComputerCraft.java @@ -53,9 +53,10 @@ import net.minecraft.item.ItemStack; import net.minecraft.network.PacketBuffer; import net.minecraft.server.MinecraftServer; +import net.minecraft.util.EnumFacing; +import net.minecraft.util.EnumHand; import net.minecraft.util.SoundEvent; import net.minecraft.util.math.BlockPos; -import net.minecraft.util.EnumFacing; import net.minecraft.world.World; import net.minecraftforge.common.config.Configuration; import net.minecraftforge.common.config.Property; @@ -366,14 +367,14 @@ public static void openTurtleGUI( EntityPlayer player, TileTurtle turtle ) 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() diff --git a/src/main/java/dan200/computercraft/client/gui/widgets/MousePos.java b/src/main/java/dan200/computercraft/client/gui/widgets/MousePos.java new file mode 100644 index 000000000..40b1b2287 --- /dev/null +++ b/src/main/java/dan200/computercraft/client/gui/widgets/MousePos.java @@ -0,0 +1,19 @@ +/** + * This file is part of ComputerCraft - http://www.computercraft.info + * Copyright Daniel Ratcliffe, 2011-2016. Do not distribute without permission. + * Send enquiries to dratcliffe@gmail.com + */ + +package dan200.computercraft.client.gui.widgets; + +public class MousePos +{ + public int x; + public int y; + + public MousePos( int x, int y ) + { + this.x = x; + this.y = y; + } +} diff --git a/src/main/java/dan200/computercraft/client/gui/widgets/Widget.java b/src/main/java/dan200/computercraft/client/gui/widgets/Widget.java index 89f35567a..7a60779c0 100644 --- a/src/main/java/dan200/computercraft/client/gui/widgets/Widget.java +++ b/src/main/java/dan200/computercraft/client/gui/widgets/Widget.java @@ -6,8 +6,6 @@ package dan200.computercraft.client.gui.widgets; -import dan200.computercraftedu.client.gui.widgets.MousePos; -import dan200.computercraftedu.client.gui.widgets.WidgetContainer; import net.minecraft.client.Minecraft; import net.minecraft.client.audio.PositionedSoundRecord; import net.minecraft.client.gui.FontRenderer; diff --git a/src/main/java/dan200/computercraft/client/gui/widgets/WidgetContainer.java b/src/main/java/dan200/computercraft/client/gui/widgets/WidgetContainer.java new file mode 100644 index 000000000..050d4e7ca --- /dev/null +++ b/src/main/java/dan200/computercraft/client/gui/widgets/WidgetContainer.java @@ -0,0 +1,344 @@ +/** + * This file is part of ComputerCraft - http://www.computercraft.info + * Copyright Daniel Ratcliffe, 2011-2016. Do not distribute without permission. + * Send enquiries to dratcliffe@gmail.com + */ + + +package dan200.computercraft.client.gui.widgets; + +import dan200.computercraft.client.gui.widgets.Widget; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.GlStateManager; + +import java.util.ArrayList; + +public class WidgetContainer extends Widget +{ + private ArrayList m_widgets; + private Widget m_modalWidget; + + public WidgetContainer( int x, int y, int w, int h ) + { + super( x, y, w, h ); + m_widgets = new ArrayList(); + m_modalWidget = null; + } + + public void addWidget( Widget widget ) + { + m_widgets.add( widget ); + widget.setParent( this ); + } + + public void setModalWidget( Widget widget ) + { + m_modalWidget = widget; + if( widget != null ) + { + widget.setParent( this ); + } + } + + public Widget getModalWidget() + { + return m_modalWidget; + } + + @Override + public void update() + { + for( int i=0; i onItemRightClick( ItemStack stack, World world, EntityPlayer player, EnumHand hand ) { if( !world.isRemote ) { - ComputerCraft.openPrintoutGUI( player ); - return new ActionResult( EnumActionResult.SUCCESS, stack ); + ComputerCraft.openPrintoutGUI( player, hand ); } - return new ActionResult( EnumActionResult.PASS, stack ); + return new ActionResult( EnumActionResult.SUCCESS, stack ); } - + private static ItemStack createFromTitleAndText( Type type, String title, String[] text, String[] colours ) { // Calculate damage @@ -150,12 +149,12 @@ private static ItemStack createFromTitleAndText( Type type, String title, String // Return stack return stack; } - + public static ItemStack createSingleFromTitleAndText( String title, String[] text, String[] colours ) { return createFromTitleAndText( Type.Single, title, text, colours ); } - + public static ItemStack createMultipleFromTitleAndText( String title, String[] text, String[] colours ) { return createFromTitleAndText( Type.Multiple, title, text, colours ); @@ -196,7 +195,7 @@ public static String getTitle( ItemStack stack ) } return null; } - + public static int getPageCount( ItemStack stack ) { NBTTagCompound nbt = stack.getTagCompound(); @@ -206,7 +205,7 @@ public static int getPageCount( ItemStack stack ) } return 1; } - + public static String[] getText( ItemStack stack ) { NBTTagCompound nbt = stack.getTagCompound(); @@ -224,8 +223,8 @@ public static String[] getText( ItemStack stack ) } } return lines; - } - + } + public static String[] getColours( ItemStack stack ) { NBTTagCompound nbt = stack.getTagCompound(); diff --git a/src/main/java/dan200/computercraft/shared/media/items/RecordMedia.java b/src/main/java/dan200/computercraft/shared/media/items/RecordMedia.java index e770268dc..ffaf433ed 100644 --- a/src/main/java/dan200/computercraft/shared/media/items/RecordMedia.java +++ b/src/main/java/dan200/computercraft/shared/media/items/RecordMedia.java @@ -13,6 +13,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.util.SoundEvent; import net.minecraft.world.World; +import net.minecraftforge.fml.common.ObfuscationReflectionHelper; // An implementation of IMedia for ItemRecord's public class RecordMedia implements IMedia @@ -43,7 +44,7 @@ public String getAudioTitle( ItemStack stack ) public SoundEvent getAudio( ItemStack stack ) { ItemRecord itemRecord = (ItemRecord)stack.getItem(); - return itemRecord.getSound(); + return ObfuscationReflectionHelper.getPrivateValue(ItemRecord.class, itemRecord, "field_185076_b"); } @Override diff --git a/src/main/java/dan200/computercraft/shared/peripheral/common/ItemCable.java b/src/main/java/dan200/computercraft/shared/peripheral/common/ItemCable.java index a0b2ebbd6..c98e0d41c 100644 --- a/src/main/java/dan200/computercraft/shared/peripheral/common/ItemCable.java +++ b/src/main/java/dan200/computercraft/shared/peripheral/common/ItemCable.java @@ -89,7 +89,7 @@ public EnumActionResult onItemUse( ItemStack stack, EntityPlayer player, World w if( stack.stackSize > 0 ) { world.setBlockState( pos, existingState.withProperty( BlockCable.Properties.CABLE, true ), 3 ); - world.playSound( null, pos.getX() + 0.5, pos.getY() + 0.5, pos.getZ() + 0.5, ComputerCraft.Blocks.cable.getSoundType().getBreakSound(), SoundCategory.BLOCKS, (ComputerCraft.Blocks.cable.getSoundType().getVolume() + 1.0F ) / 2.0F, ComputerCraft.Blocks.cable.getSoundType().getPitch() * 0.8F); + world.playSound( null, pos.getX() + 0.5, pos.getY() + 0.5, pos.getZ() + 0.5, ComputerCraft.Blocks.cable.getSoundType().getPlaceSound(), SoundCategory.BLOCKS, (ComputerCraft.Blocks.cable.getSoundType().getVolume() + 1.0F ) / 2.0F, ComputerCraft.Blocks.cable.getSoundType().getPitch() * 0.8F); stack.stackSize--; TileEntity tile = world.getTileEntity( pos ); @@ -119,7 +119,7 @@ public EnumActionResult onItemUse( ItemStack stack, EntityPlayer player, World w if( stack.stackSize > 0 ) { world.setBlockState( offset, offsetExistingState.withProperty( BlockCable.Properties.MODEM, BlockCableModemVariant.fromFacing( side.getOpposite() ) ), 3 ); - world.playSound( null, offset.getX() + 0.5, offset.getY() + 0.5, offset.getZ() + 0.5, ComputerCraft.Blocks.cable.getSoundType().getBreakSound(), SoundCategory.BLOCKS, (ComputerCraft.Blocks.cable.getSoundType().getVolume() + 1.0F ) / 2.0F, ComputerCraft.Blocks.cable.getSoundType().getPitch() * 0.8F); + world.playSound( null, offset.getX() + 0.5, offset.getY() + 0.5, offset.getZ() + 0.5, ComputerCraft.Blocks.cable.getSoundType().getPlaceSound(), SoundCategory.BLOCKS, (ComputerCraft.Blocks.cable.getSoundType().getVolume() + 1.0F ) / 2.0F, ComputerCraft.Blocks.cable.getSoundType().getPitch() * 0.8F); stack.stackSize--; TileEntity tile = world.getTileEntity( offset ); @@ -139,7 +139,7 @@ public EnumActionResult onItemUse( ItemStack stack, EntityPlayer player, World w if( stack.stackSize > 0 ) { world.setBlockState( offset, offsetExistingState.withProperty( BlockCable.Properties.CABLE, true ), 3 ); - world.playSound( null, offset.getX() + 0.5, offset.getY() + 0.5, offset.getZ() + 0.5, ComputerCraft.Blocks.cable.getSoundType().getBreakSound(), SoundCategory.BLOCKS, (ComputerCraft.Blocks.cable.getSoundType().getVolume() + 1.0F ) / 2.0F, ComputerCraft.Blocks.cable.getSoundType().getPitch() * 0.8F); + world.playSound( null, offset.getX() + 0.5, offset.getY() + 0.5, offset.getZ() + 0.5, ComputerCraft.Blocks.cable.getSoundType().getPlaceSound(), SoundCategory.BLOCKS, (ComputerCraft.Blocks.cable.getSoundType().getVolume() + 1.0F ) / 2.0F, ComputerCraft.Blocks.cable.getSoundType().getPitch() * 0.8F); stack.stackSize--; TileEntity tile = world.getTileEntity( offset ); diff --git a/src/main/java/dan200/computercraft/shared/pocket/items/ItemPocketComputer.java b/src/main/java/dan200/computercraft/shared/pocket/items/ItemPocketComputer.java index 35170df87..484c9ecdc 100644 --- a/src/main/java/dan200/computercraft/shared/pocket/items/ItemPocketComputer.java +++ b/src/main/java/dan200/computercraft/shared/pocket/items/ItemPocketComputer.java @@ -30,11 +30,13 @@ import net.minecraft.util.EnumActionResult; import net.minecraft.util.EnumHand; 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 java.util.List; +; + public class ItemPocketComputer extends Item implements IComputerItem, IMedia { public ItemPocketComputer() @@ -169,10 +171,9 @@ public ActionResult onItemRightClick( ItemStack stack, World world, E { computer.turnOn(); } - ComputerCraft.openPocketComputerGUI( player ); - return new ActionResult( EnumActionResult.SUCCESS, stack ); + ComputerCraft.openPocketComputerGUI( player, hand ); } - return new ActionResult( EnumActionResult.PASS, stack ); + return new ActionResult( EnumActionResult.SUCCESS, stack ); } @Override diff --git a/src/main/java/dan200/computercraft/shared/proxy/ComputerCraftProxyCommon.java b/src/main/java/dan200/computercraft/shared/proxy/ComputerCraftProxyCommon.java index bf968244e..4bafb6f5d 100644 --- a/src/main/java/dan200/computercraft/shared/proxy/ComputerCraftProxyCommon.java +++ b/src/main/java/dan200/computercraft/shared/proxy/ComputerCraftProxyCommon.java @@ -15,7 +15,6 @@ import dan200.computercraft.shared.computer.blocks.BlockComputer; import dan200.computercraft.shared.computer.blocks.TileCommandComputer; import dan200.computercraft.shared.computer.blocks.TileComputer; -import dan200.computercraft.shared.computer.core.ClientComputer; import dan200.computercraft.shared.computer.core.ComputerFamily; import dan200.computercraft.shared.computer.core.ServerComputer; import dan200.computercraft.shared.computer.inventory.ContainerComputer; @@ -63,16 +62,16 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.network.Packet; -import net.minecraft.server.MinecraftServer; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.EnumHand; +import net.minecraft.util.IThreadListener; import net.minecraft.util.SoundEvent; import net.minecraft.util.math.BlockPos; -import net.minecraft.util.IThreadListener; -import net.minecraft.util.ResourceLocation; +import net.minecraft.util.text.translation.I18n; import net.minecraft.world.World; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.event.world.WorldEvent; -import net.minecraftforge.fml.common.FMLCommonHandler; +import net.minecraftforge.fml.common.ObfuscationReflectionHelper; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; import net.minecraftforge.fml.common.gameevent.TickEvent; import net.minecraftforge.fml.common.network.FMLNetworkEvent; @@ -88,7 +87,7 @@ public abstract class ComputerCraftProxyCommon implements IComputerCraftProxy public ComputerCraftProxyCommon() { } - + // IComputerCraftProxy implementation @Override @@ -96,17 +95,17 @@ public void preInit() { registerItems(); } - - @Override + + @Override public void init() { registerTileEntities(); registerForgeHandlers(); } - + @Override public abstract boolean isClient(); - + @Override public abstract boolean getGlobalCursorBlink(); @@ -120,25 +119,26 @@ public void deleteDisplayLists( int list, int range ) @Override public abstract Object getFixedWidthFontRenderer(); - + @Override public String getRecordInfo( ItemStack recordStack ) { Item item = recordStack.getItem(); - if( item instanceof ItemRecord ) + if (item instanceof ItemRecord) { - ItemRecord record = (ItemRecord)item; - return record.getRecordNameLocal(); + ItemRecord record = (ItemRecord) item; + String key = ObfuscationReflectionHelper.getPrivateValue( ItemRecord.class, record, "field_185077_c" ); + return I18n.translateToLocal( key ); } return null; } - + @Override public abstract void playRecord( SoundEvent record, String recordInfo, World world, BlockPos pos ); - + @Override public abstract Object getDiskDriveGUI( InventoryPlayer inventory, TileDiskDrive drive ); - + @Override public abstract Object getComputerGUI( TileComputer computer ); @@ -149,24 +149,23 @@ public String getRecordInfo( ItemStack recordStack ) public abstract Object getTurtleGUI( InventoryPlayer inventory, TileTurtle turtle ); @Override - public abstract Object getPrintoutGUI( InventoryPlayer inventory ); + public abstract Object getPrintoutGUI( EntityPlayer player, EnumHand hand ); @Override - public abstract Object getPocketComputerGUI( InventoryPlayer inventory ); + public abstract Object getPocketComputerGUI( EntityPlayer player, EnumHand hand ); public abstract File getWorldDir( World world ); - - @Override + + @Override public void handlePacket( final ComputerCraftPacket packet, final EntityPlayer player ) { IThreadListener listener = player.getServer(); - if( listener != null ) + if (listener != null) { - if( listener.isCallingFromMinecraftThread() ) + if (listener.isCallingFromMinecraftThread()) { processPacket( packet, player ); - } - else + } else { listener.addScheduledTask( new Runnable() { @@ -182,7 +181,7 @@ public void run() private void processPacket( ComputerCraftPacket packet, EntityPlayer player ) { - switch( packet.m_packetType ) + switch (packet.m_packetType) { /////////////////////////////////// // Packets from Client to Server // @@ -196,7 +195,7 @@ private void processPacket( ComputerCraftPacket packet, EntityPlayer player ) { int instance = packet.m_dataInt[0]; ServerComputer computer = ComputerCraft.serverComputerRegistry.get( instance ); - if( computer != null ) + if (computer != null) { computer.handlePacket( packet, player ); } @@ -210,13 +209,13 @@ private void processPacket( ComputerCraftPacket packet, EntityPlayer player ) BlockPos pos = new BlockPos( x, y, z ); World world = player.getEntityWorld(); TileEntity tileEntity = world.getTileEntity( pos ); - if( tileEntity != null && tileEntity instanceof TileGeneric ) + if (tileEntity != null && tileEntity instanceof TileGeneric) { - TileGeneric generic = (TileGeneric)tileEntity; + TileGeneric generic = (TileGeneric) tileEntity; Packet description = generic.getUpdatePacket(); - if( description != null ) + if (description != null) { - ((EntityPlayerMP)player).connection.sendPacket( description ); + ((EntityPlayerMP) player).connection.sendPacket( description ); } } break; @@ -281,93 +280,93 @@ private void registerItems() // Computer ItemStack computer = ComputerItemFactory.create( -1, null, ComputerFamily.Normal ); GameRegistry.addRecipe( computer, - "XXX", "XYX", "XZX", - 'X', Blocks.STONE, - 'Y', Items.REDSTONE, - 'Z', Blocks.GLASS_PANE + "XXX", "XYX", "XZX", + 'X', Blocks.STONE, + 'Y', Items.REDSTONE, + 'Z', Blocks.GLASS_PANE ); // Advanced Computer ItemStack advancedComputer = ComputerItemFactory.create( -1, null, ComputerFamily.Advanced ); GameRegistry.addRecipe( advancedComputer, - "XXX", "XYX", "XZX", - 'X', Items.GOLD_INGOT, - 'Y', Items.REDSTONE, - 'Z', Blocks.GLASS_PANE + "XXX", "XYX", "XZX", + 'X', Items.GOLD_INGOT, + 'Y', Items.REDSTONE, + 'Z', Blocks.GLASS_PANE ); // Disk Drive ItemStack diskDrive = PeripheralItemFactory.create( PeripheralType.DiskDrive, null, 1 ); GameRegistry.addRecipe( diskDrive, - "XXX", "XYX", "XYX", - 'X', Blocks.STONE, - 'Y', Items.REDSTONE + "XXX", "XYX", "XYX", + 'X', Blocks.STONE, + 'Y', Items.REDSTONE ); - + // Wireless Modem ItemStack wirelessModem = PeripheralItemFactory.create( PeripheralType.WirelessModem, null, 1 ); GameRegistry.addRecipe( wirelessModem, - "XXX", "XYX", "XXX", - 'X', Blocks.STONE, - 'Y', Items.ENDER_PEARL + "XXX", "XYX", "XXX", + 'X', Blocks.STONE, + 'Y', Items.ENDER_PEARL ); - + // Monitor ItemStack monitor = PeripheralItemFactory.create( PeripheralType.Monitor, null, 1 ); GameRegistry.addRecipe( monitor, - "XXX", "XYX", "XXX", - 'X', Blocks.STONE, - 'Y', Blocks.GLASS_PANE + "XXX", "XYX", "XXX", + 'X', Blocks.STONE, + 'Y', Blocks.GLASS_PANE ); - + // PrinterEmpty ItemStack printer = PeripheralItemFactory.create( PeripheralType.Printer, null, 1 ); GameRegistry.addRecipe( printer, - "XXX", "XYX", "XZX", - 'X', Blocks.STONE, - 'Y', Items.REDSTONE, - 'Z', new ItemStack( Items.DYE, 1, 0 ) // 0 = Black + "XXX", "XYX", "XZX", + 'X', Blocks.STONE, + 'Y', Items.REDSTONE, + 'Z', new ItemStack( Items.DYE, 1, 0 ) // 0 = Black ); // Advanced Monitor ItemStack advancedMonitors = PeripheralItemFactory.create( PeripheralType.AdvancedMonitor, null, 4 ); GameRegistry.addRecipe( advancedMonitors, - "XXX", "XYX", "XXX", - 'X', Items.GOLD_INGOT, - 'Y', Blocks.GLASS_PANE + "XXX", "XYX", "XXX", + 'X', Items.GOLD_INGOT, + 'Y', Blocks.GLASS_PANE ); // Networking Cable ItemStack cable = PeripheralItemFactory.create( PeripheralType.Cable, null, 6 ); GameRegistry.addRecipe( cable, - " X ", "XYX", " X ", - 'X', Blocks.STONE, - 'Y', Items.REDSTONE + " X ", "XYX", " X ", + 'X', Blocks.STONE, + 'Y', Items.REDSTONE ); - + // Wired Modem ItemStack wiredModem = PeripheralItemFactory.create( PeripheralType.WiredModem, null, 1 ); GameRegistry.addRecipe( wiredModem, - "XXX", "XYX", "XXX", - 'X', Blocks.STONE, - 'Y', Items.REDSTONE + "XXX", "XYX", "XXX", + 'X', Blocks.STONE, + 'Y', Items.REDSTONE ); // Computer ItemStack commandComputer = ComputerItemFactory.create( -1, null, ComputerFamily.Command ); GameRegistry.addRecipe( commandComputer, - "XXX", "XYX", "XZX", - 'X', Blocks.STONE, - 'Y', Blocks.COMMAND_BLOCK, - 'Z', Blocks.GLASS_PANE + "XXX", "XYX", "XZX", + 'X', Blocks.STONE, + 'Y', Blocks.COMMAND_BLOCK, + 'Z', Blocks.GLASS_PANE ); // Advanced Modem ItemStack advancedModem = PeripheralItemFactory.create( PeripheralType.AdvancedModem, null, 1 ); GameRegistry.addRecipe( advancedModem, - "XXX", "XYX", "XXX", - 'X', Items.GOLD_INGOT, - 'Y', Items.ENDER_EYE + "XXX", "XYX", "XXX", + 'X', Items.GOLD_INGOT, + 'Y', Items.ENDER_EYE ); // Disk @@ -377,24 +376,24 @@ private void registerItems() ItemStack paper = new ItemStack( Items.PAPER, 1 ); ItemStack redstone = new ItemStack( Items.REDSTONE, 1 ); ItemStack basicDisk = ItemDiskLegacy.createFromIDAndColour( -1, null, Colour.Blue.getHex() ); - GameRegistry.addRecipe( new ImpostorShapelessRecipe( basicDisk, new Object[] { redstone, paper } ) ); + GameRegistry.addRecipe( new ImpostorShapelessRecipe( basicDisk, new Object[]{redstone, paper} ) ); - for( int colour=0; colour<16; ++colour ) + for (int colour = 0; colour < 16; ++colour) { - ItemStack disk = ItemDiskLegacy.createFromIDAndColour( -1, null, Colour.values()[ colour ].getHex() ); + ItemStack disk = ItemDiskLegacy.createFromIDAndColour( -1, null, Colour.values()[colour].getHex() ); ItemStack dye = new ItemStack( Items.DYE, 1, colour ); - for( int otherColour=0; otherColour<16; ++otherColour ) + for (int otherColour = 0; otherColour < 16; ++otherColour) { - if( colour != otherColour ) + if (colour != otherColour) { - ItemStack otherDisk = ItemDiskLegacy.createFromIDAndColour( -1, null, Colour.values()[ colour ].getHex() ); - GameRegistry.addRecipe( new ImpostorShapelessRecipe( disk, new Object[] { - otherDisk, dye + ItemStack otherDisk = ItemDiskLegacy.createFromIDAndColour( -1, null, Colour.values()[colour].getHex() ); + GameRegistry.addRecipe( new ImpostorShapelessRecipe( disk, new Object[]{ + otherDisk, dye } ) ); } } - GameRegistry.addRecipe( new ImpostorShapelessRecipe( disk, new Object[] { - redstone, paper, dye + GameRegistry.addRecipe( new ImpostorShapelessRecipe( disk, new Object[]{ + redstone, paper, dye } ) ); } @@ -407,27 +406,27 @@ private void registerItems() // Impostor Printout recipes (to fool NEI) ItemStack string = new ItemStack( Items.STRING, 1, 0 ); - GameRegistry.addRecipe( new ImpostorShapelessRecipe( multiplePrintout, new Object[] { singlePrintout, singlePrintout, string } ) ); + GameRegistry.addRecipe( new ImpostorShapelessRecipe( multiplePrintout, new Object[]{singlePrintout, singlePrintout, string} ) ); ItemStack leather = new ItemStack( Items.LEATHER, 1, 0 ); - GameRegistry.addRecipe( new ImpostorShapelessRecipe( bookPrintout, new Object[] { leather, singlePrintout, string } ) ); + GameRegistry.addRecipe( new ImpostorShapelessRecipe( bookPrintout, new Object[]{leather, singlePrintout, string} ) ); // Pocket Computer ItemStack pocketComputer = PocketComputerItemFactory.create( -1, null, ComputerFamily.Normal, false ); GameRegistry.addRecipe( pocketComputer, - "XXX", "XYX", "XZX", - 'X', Blocks.STONE, - 'Y', Items.GOLDEN_APPLE, - 'Z', Blocks.GLASS_PANE + "XXX", "XYX", "XZX", + 'X', Blocks.STONE, + 'Y', Items.GOLDEN_APPLE, + 'Z', Blocks.GLASS_PANE ); // Advanced Pocket Computer ItemStack advancedPocketComputer = PocketComputerItemFactory.create( -1, null, ComputerFamily.Advanced, false ); GameRegistry.addRecipe( advancedPocketComputer, - "XXX", "XYX", "XZX", - 'X', Items.GOLD_INGOT, - 'Y', Items.GOLDEN_APPLE, - 'Z', Blocks.GLASS_PANE + "XXX", "XYX", "XZX", + 'X', Items.GOLD_INGOT, + 'Y', Items.GOLDEN_APPLE, + 'Z', Blocks.GLASS_PANE ); // Wireless Pocket Computer @@ -438,8 +437,8 @@ private void registerItems() ItemStack advancedWirelessPocketComputer = PocketComputerItemFactory.create( -1, null, ComputerFamily.Advanced, true ); // Impostor Pocket Computer recipes (to fool NEI) - GameRegistry.addRecipe( new ImpostorRecipe( 1, 2, new ItemStack[] { wirelessModem, pocketComputer }, wirelessPocketComputer ) ); - GameRegistry.addRecipe( new ImpostorRecipe( 1, 2, new ItemStack[] { wirelessModem, advancedPocketComputer }, advancedWirelessPocketComputer ) ); + GameRegistry.addRecipe( new ImpostorRecipe( 1, 2, new ItemStack[]{wirelessModem, pocketComputer}, wirelessPocketComputer ) ); + GameRegistry.addRecipe( new ImpostorRecipe( 1, 2, new ItemStack[]{wirelessModem, advancedPocketComputer}, advancedWirelessPocketComputer ) ); // Skulls (Easter Egg) // Dan @@ -456,7 +455,7 @@ private void registerItems() cloudyHead.setTagCompound( tag ); GameRegistry.addShapelessRecipe( cloudyHead, monitor, new ItemStack( Items.SKULL, 1, 1 ) ); } - + private void registerTileEntities() { // Tile Entities @@ -471,7 +470,7 @@ private void registerTileEntities() // Register peripheral providers ComputerCraftAPI.registerPeripheralProvider( new DefaultPeripheralProvider() ); - if( ComputerCraft.enableCommandBlock ) + if (ComputerCraft.enableCommandBlock) { ComputerCraftAPI.registerPeripheralProvider( new CommandBlockPeripheralProvider() ); } @@ -482,35 +481,35 @@ private void registerTileEntities() // Register media providers ComputerCraftAPI.registerMediaProvider( new DefaultMediaProvider() ); } - + private void registerForgeHandlers() { ForgeHandlers handlers = new ForgeHandlers(); MinecraftForge.EVENT_BUS.register( handlers ); NetworkRegistry.INSTANCE.registerGuiHandler( ComputerCraft.instance, handlers ); } - + public class ForgeHandlers implements - IGuiHandler + IGuiHandler { private ForgeHandlers() { } // IGuiHandler implementation - + @Override public Object getServerGuiElement( int id, EntityPlayer player, World world, int x, int y, int z ) { BlockPos pos = new BlockPos( x, y, z ); - switch( id ) + switch (id) { case ComputerCraft.diskDriveGUIID: { TileEntity tile = world.getTileEntity( pos ); - if( tile != null && tile instanceof TileDiskDrive ) + if (tile != null && tile instanceof TileDiskDrive) { - TileDiskDrive drive = (TileDiskDrive)tile; + TileDiskDrive drive = (TileDiskDrive) tile; return new ContainerDiskDrive( player.inventory, drive ); } break; @@ -518,9 +517,9 @@ public Object getServerGuiElement( int id, EntityPlayer player, World world, int case ComputerCraft.computerGUIID: { TileEntity tile = world.getTileEntity( pos ); - if( tile != null && tile instanceof TileComputer ) + if (tile != null && tile instanceof TileComputer) { - TileComputer computer = (TileComputer)tile; + TileComputer computer = (TileComputer) tile; return new ContainerComputer( computer ); } break; @@ -528,9 +527,9 @@ public Object getServerGuiElement( int id, EntityPlayer player, World world, int case ComputerCraft.printerGUIID: { TileEntity tile = world.getTileEntity( pos ); - if( tile != null && tile instanceof TilePrinter ) + if (tile != null && tile instanceof TilePrinter) { - TilePrinter printer = (TilePrinter)tile; + TilePrinter printer = (TilePrinter) tile; return new ContainerPrinter( player.inventory, printer ); } break; @@ -538,20 +537,20 @@ public Object getServerGuiElement( int id, EntityPlayer player, World world, int case ComputerCraft.turtleGUIID: { TileEntity tile = world.getTileEntity( pos ); - if( tile != null && tile instanceof TileTurtle ) + if (tile != null && tile instanceof TileTurtle) { - TileTurtle turtle = (TileTurtle)tile; + TileTurtle turtle = (TileTurtle) tile; return new ContainerTurtle( player.inventory, turtle.getAccess() ); } break; } case ComputerCraft.printoutGUIID: { - return new ContainerHeldItem( player.inventory ); + return new ContainerHeldItem( player, x == 0 ? EnumHand.MAIN_HAND : EnumHand.MAIN_HAND ); } case ComputerCraft.pocketComputerGUIID: { - return new ContainerHeldItem( player.inventory ); + return new ContainerHeldItem( player, x == 0 ? EnumHand.MAIN_HAND : EnumHand.OFF_HAND ); } } return null; @@ -561,14 +560,14 @@ public Object getServerGuiElement( int id, EntityPlayer player, World world, int public Object getClientGuiElement( int id, EntityPlayer player, World world, int x, int y, int z ) { BlockPos pos = new BlockPos( x, y, z ); - switch( id ) + switch (id) { case ComputerCraft.diskDriveGUIID: { TileEntity tile = world.getTileEntity( pos ); - if( tile != null && tile instanceof TileDiskDrive ) + if (tile != null && tile instanceof TileDiskDrive) { - TileDiskDrive drive = (TileDiskDrive)tile; + TileDiskDrive drive = (TileDiskDrive) tile; return getDiskDriveGUI( player.inventory, drive ); } break; @@ -576,9 +575,9 @@ public Object getClientGuiElement( int id, EntityPlayer player, World world, int case ComputerCraft.computerGUIID: { TileEntity tile = world.getTileEntity( pos ); - if( tile != null && tile instanceof TileComputer ) + if (tile != null && tile instanceof TileComputer) { - TileComputer computer = (TileComputer)tile; + TileComputer computer = (TileComputer) tile; return getComputerGUI( computer ); } break; @@ -586,9 +585,9 @@ public Object getClientGuiElement( int id, EntityPlayer player, World world, int case ComputerCraft.printerGUIID: { TileEntity tile = world.getTileEntity( pos ); - if( tile != null && tile instanceof TilePrinter ) + if (tile != null && tile instanceof TilePrinter) { - TilePrinter printer = (TilePrinter)tile; + TilePrinter printer = (TilePrinter) tile; return getPrinterGUI( player.inventory, printer ); } break; @@ -596,20 +595,20 @@ public Object getClientGuiElement( int id, EntityPlayer player, World world, int case ComputerCraft.turtleGUIID: { TileEntity tile = world.getTileEntity( pos ); - if( tile != null && tile instanceof TileTurtle ) + if (tile != null && tile instanceof TileTurtle) { - TileTurtle turtle = (TileTurtle)tile; + TileTurtle turtle = (TileTurtle) tile; return getTurtleGUI( player.inventory, turtle ); } break; } case ComputerCraft.printoutGUIID: { - return getPrintoutGUI( player.inventory ); + return getPrintoutGUI( player, x == 0 ? EnumHand.MAIN_HAND : EnumHand.OFF_HAND ); } case ComputerCraft.pocketComputerGUIID: { - return getPocketComputerGUI( player.inventory ); + return getPocketComputerGUI( player, x == 0 ? EnumHand.MAIN_HAND : EnumHand.OFF_HAND ); } } return null; @@ -632,7 +631,7 @@ public void onConnectionClosed( FMLNetworkEvent.ClientDisconnectionFromServerEve @SubscribeEvent public void onClientTick( TickEvent.ClientTickEvent event ) { - if( event.phase == TickEvent.Phase.START ) + if (event.phase == TickEvent.Phase.START) { ComputerCraft.clientComputerRegistry.update(); } @@ -641,7 +640,7 @@ public void onClientTick( TickEvent.ClientTickEvent event ) @SubscribeEvent public void onServerTick( TickEvent.ServerTickEvent event ) { - if( event.phase == TickEvent.Phase.START ) + if (event.phase == TickEvent.Phase.START) { MainThread.executePendingTasks(); ComputerCraft.serverComputerRegistry.update(); diff --git a/src/main/java/dan200/computercraft/shared/proxy/IComputerCraftProxy.java b/src/main/java/dan200/computercraft/shared/proxy/IComputerCraftProxy.java index 82e2dc146..31101b609 100644 --- a/src/main/java/dan200/computercraft/shared/proxy/IComputerCraftProxy.java +++ b/src/main/java/dan200/computercraft/shared/proxy/IComputerCraftProxy.java @@ -14,6 +14,7 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.item.ItemStack; +import net.minecraft.util.EnumHand; import net.minecraft.util.SoundEvent; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; @@ -38,8 +39,8 @@ public interface IComputerCraftProxy public Object getComputerGUI( TileComputer computer ); public Object getPrinterGUI( InventoryPlayer inventory, TilePrinter printer ); public Object getTurtleGUI( InventoryPlayer inventory, TileTurtle turtle ); - public abstract Object getPrintoutGUI( InventoryPlayer inventory ); - public abstract Object getPocketComputerGUI( InventoryPlayer inventory ); + public abstract Object getPrintoutGUI( EntityPlayer player, EnumHand hand ); + public abstract Object getPocketComputerGUI( EntityPlayer player, EnumHand hand ); public File getWorldDir( World world ); public void handlePacket( ComputerCraftPacket packet, EntityPlayer player ); diff --git a/src/main/java/dan200/computercraft/shared/turtle/core/TurtleBrain.java b/src/main/java/dan200/computercraft/shared/turtle/core/TurtleBrain.java index 3ce166657..1c440d06f 100644 --- a/src/main/java/dan200/computercraft/shared/turtle/core/TurtleBrain.java +++ b/src/main/java/dan200/computercraft/shared/turtle/core/TurtleBrain.java @@ -505,7 +505,7 @@ public boolean teleportTo( World world, BlockPos pos ) } // Create a new turtle - if( world.isBlockLoaded( pos ) && world.setBlockState( pos, oldBlock.getDefaultState(), 3 ) ) + if( world.isBlockLoaded( pos ) && world.setBlockState( pos, oldBlock.getDefaultState(), 0 ) ) { Block block = world.getBlockState( pos ).getBlock(); if( block == oldBlock ) @@ -525,6 +525,7 @@ public boolean teleportTo( World world, BlockPos pos ) oldWorld.setBlockToAir( oldPos ); // Make sure everybody knows about it + newTurtle.updateBlock(); newTurtle.updateInput(); newTurtle.updateOutput(); return true; diff --git a/src/main/java/dan200/computercraft/shared/turtle/core/TurtlePlaceCommand.java b/src/main/java/dan200/computercraft/shared/turtle/core/TurtlePlaceCommand.java index fc8005e4a..522ecf52e 100644 --- a/src/main/java/dan200/computercraft/shared/turtle/core/TurtlePlaceCommand.java +++ b/src/main/java/dan200/computercraft/shared/turtle/core/TurtlePlaceCommand.java @@ -240,6 +240,10 @@ public void consumeDrop( Entity entity, ItemStack drop ) placed = true; turtlePlayer.loadInventory( stackCopy ); } + else if( hitEntity.processInitialInteract( turtlePlayer, stackCopy, EnumHand.MAIN_HAND ) ) + { + placed = true; + } else if( hitEntity instanceof EntityLivingBase ) { placed = item.itemInteractionForEntity( stackCopy, turtlePlayer, (EntityLivingBase)hitEntity, EnumHand.MAIN_HAND ); diff --git a/src/main/java/dan200/computercraft/shared/turtle/upgrades/TurtleTool.java b/src/main/java/dan200/computercraft/shared/turtle/upgrades/TurtleTool.java index 90f8a835d..87bbefd1a 100644 --- a/src/main/java/dan200/computercraft/shared/turtle/upgrades/TurtleTool.java +++ b/src/main/java/dan200/computercraft/shared/turtle/upgrades/TurtleTool.java @@ -281,8 +281,7 @@ private TurtleCommandResult dig( ITurtleAccess turtle, EnumFacing direction ) // Destroy the block IBlockState previousState = world.getBlockState( newPosition ); - Block previousBlock = previousState.getBlock(); - world.playSound( null, newPosition, previousBlock.getSoundType().getBreakSound(), SoundCategory.BLOCKS, (previousBlock.getSoundType().getVolume() + 1.0F) / 2.0F, previousBlock.getSoundType().getPitch() * 0.8F ); + world.playEvent(2001, newPosition, Block.getStateId(previousState)); world.setBlockToAir( newPosition ); // Remember the previous block diff --git a/src/main/resources/assets/computercraft/models/item/advanced_computer.json b/src/main/resources/assets/computercraft/models/item/advanced_computer.json index 3a444bc0b..b2ff4dc35 100644 --- a/src/main/resources/assets/computercraft/models/item/advanced_computer.json +++ b/src/main/resources/assets/computercraft/models/item/advanced_computer.json @@ -1,3 +1,3 @@ { - "parent": "computercraft:block/advanced_computer_blinking", + "parent": "computercraft:block/advanced_computer_blinking" }