From 09b004e790bc297e9d77f5feb2867c24e080aca2 Mon Sep 17 00:00:00 2001 From: Hea3veN Date: Thu, 19 Feb 2015 21:10:11 -0300 Subject: [PATCH] add a stripes robot --- .../api/transport/IStripesActivator.java | 18 +++ .../api/transport/IStripesHandler.java | 2 +- .../api/transport/IStripesPipe.java | 8 +- .../assets/buildcraft/lang/en_US.lang | 1 + .../textures/entities/robot_stripes.png | Bin 0 -> 896 bytes common/buildcraft/BuildCraftCore.java | 2 + common/buildcraft/BuildCraftSilicon.java | 2 + common/buildcraft/core/Box.java | 4 +- common/buildcraft/core/ItemMapLocation.java | 16 +++ common/buildcraft/robots/EntityRobot.java | 12 ++ .../robots/ai/AIRobotStripesHandler.java | 114 ++++++++++++++++ .../robots/boards/BoardRobotStripes.java | 129 ++++++++++++++++++ .../robots/boards/BoardRobotStripesNBT.java | 64 +++++++++ .../transport/pipes/PipeItemsStripes.java | 2 +- .../stripes/StripesHandlerArrow.java | 6 +- .../stripes/StripesHandlerBucket.java | 12 +- .../stripes/StripesHandlerDefault.java | 6 +- .../stripes/StripesHandlerEntityInteract.java | 12 +- .../stripes/StripesHandlerPipes.java | 4 +- .../stripes/StripesHandlerPlaceBlock.java | 4 +- .../stripes/StripesHandlerRightClick.java | 6 +- .../stripes/StripesHandlerShears.java | 8 +- 22 files changed, 392 insertions(+), 40 deletions(-) create mode 100644 api/buildcraft/api/transport/IStripesActivator.java create mode 100644 buildcraft_resources/assets/buildcraft/textures/entities/robot_stripes.png create mode 100644 common/buildcraft/robots/ai/AIRobotStripesHandler.java create mode 100644 common/buildcraft/robots/boards/BoardRobotStripes.java create mode 100644 common/buildcraft/robots/boards/BoardRobotStripesNBT.java diff --git a/api/buildcraft/api/transport/IStripesActivator.java b/api/buildcraft/api/transport/IStripesActivator.java new file mode 100644 index 00000000..849e0316 --- /dev/null +++ b/api/buildcraft/api/transport/IStripesActivator.java @@ -0,0 +1,18 @@ +/** + * Copyright (c) 2011-2014, SpaceToad and the BuildCraft Team + * http://www.mod-buildcraft.com + * + * The BuildCraft API is distributed under the terms of the MIT License. + * Please check the contents of the license, which should be located + * as "LICENSE.API" in the BuildCraft source code distribution. + */ +package buildcraft.api.transport; + +import net.minecraft.item.ItemStack; + +import net.minecraftforge.common.util.ForgeDirection; + +public interface IStripesActivator { + void sendItem(ItemStack itemStack, ForgeDirection direction); + void dropItem(ItemStack itemStack, ForgeDirection direction); +} diff --git a/api/buildcraft/api/transport/IStripesHandler.java b/api/buildcraft/api/transport/IStripesHandler.java index a2610ee4..f84017e0 100644 --- a/api/buildcraft/api/transport/IStripesHandler.java +++ b/api/buildcraft/api/transport/IStripesHandler.java @@ -25,5 +25,5 @@ public interface IStripesHandler { boolean shouldHandle(ItemStack stack); boolean handle(World world, int x, int y, int z, ForgeDirection direction, - ItemStack stack, EntityPlayer player, IStripesPipe pipe); + ItemStack stack, EntityPlayer player, IStripesActivator activator); } diff --git a/api/buildcraft/api/transport/IStripesPipe.java b/api/buildcraft/api/transport/IStripesPipe.java index da8b2291..ec5a6d47 100644 --- a/api/buildcraft/api/transport/IStripesPipe.java +++ b/api/buildcraft/api/transport/IStripesPipe.java @@ -8,11 +8,5 @@ */ package buildcraft.api.transport; -import net.minecraft.item.ItemStack; - -import net.minecraftforge.common.util.ForgeDirection; - -public interface IStripesPipe extends IPipe { - void sendItem(ItemStack itemStack, ForgeDirection direction); - void dropItem(ItemStack itemStack, ForgeDirection direction); +public interface IStripesPipe extends IPipe, IStripesActivator { } diff --git a/buildcraft_resources/assets/buildcraft/lang/en_US.lang b/buildcraft_resources/assets/buildcraft/lang/en_US.lang index 693cd8d8..24ce8f02 100644 --- a/buildcraft_resources/assets/buildcraft/lang/en_US.lang +++ b/buildcraft_resources/assets/buildcraft/lang/en_US.lang @@ -17,6 +17,7 @@ buildcraft.boardRobotBuilder=Builder buildcraft.boardRobotCrafter=Crafter buildcraft.boardRobotDelivery=Delivery buildcraft.boardRobotPump=Pump +buildcraft.boardRobotStripes=Stripes chat.gateCopier.clear=Gate information cleared. chat.gateCopier.gateCopied=Copied gate information to copier. diff --git a/buildcraft_resources/assets/buildcraft/textures/entities/robot_stripes.png b/buildcraft_resources/assets/buildcraft/textures/entities/robot_stripes.png new file mode 100644 index 0000000000000000000000000000000000000000..016535237665117d7f2802440dc874ed0b6403b9 GIT binary patch literal 896 zcmWlXeN2;A6vodz_rCptCT?Yxua~~iDk#%+vqCnf1J**DF+w^QadDYLLLv%9-hR-+ z0^47jxFu%HwaB1UOQz8om(92j4LZ!Cb_|6Lu^?y*EwW_>mAJ)(y(GW$-19ui`RAT< zsJf~`t;$pZfZAp?+oiWeDnUUd{o>8f&I6E{>dNhw-!7#~Ne93(KxJhmZ9v?Q(1_Rw zq>*A1fCJG1#6h7MpqViTWe$cby__}^RTCu#2t7cc1)+su3(^(>BFLpgL==IDl!zP^ z2{?g?08ZpYf?|rY1!W>KCvc(yT|itETr%R~sEaZe5;p-ilQ|VK7jQ0$ZYklEPNZ&v zZU!D?ZUhe_9*%Q!#3P4RhOMY_18pVXm6U=PSu28r~1@yVHF+kmuj zN-qcPOzEStHdM6{?10n`6#UtOKPRhOCj_#yj%DQ>%j0`_zE>xFW#IdGT_2yjWbt2<#sAD~c_?x3^~KoM#n`q-@i!hz%$7WvD_u%Rl>Iwz{%^q& z(Cb!73nor`)jLo!ce{SY)V@_=hJze$m5j34x>MRqie{w>gWPF*+ajMvjmo5+ zo(zvmGZ{8>>2~X{dve#nqo&L2x1)Vz|IgKaJ zp7t9v%*Pj%StBFYBB}Ndrqum6pE9-oUD-|J_w~>F%M%(?@ZvdL-So3Vn+85k7CE<- z(kp49GgmK+Mb^|k+sev%(uTSwo__kBIjr6gK74q#y+)Zi7+d}I^}U73y%9(3RD&ba xP#3QKJFGvO`QY-#!o2<3L8GetazQ$0M%dM0AN(QObzk~7uvx0i-<0kCdGN=Fm literal 0 HcmV?d00001 diff --git a/common/buildcraft/BuildCraftCore.java b/common/buildcraft/BuildCraftCore.java index 278289a7..74b99f8c 100644 --- a/common/buildcraft/BuildCraftCore.java +++ b/common/buildcraft/BuildCraftCore.java @@ -183,6 +183,7 @@ import buildcraft.robots.boards.BoardRobotPicker; import buildcraft.robots.boards.BoardRobotPlanter; import buildcraft.robots.boards.BoardRobotPump; import buildcraft.robots.boards.BoardRobotShovelman; +import buildcraft.robots.boards.BoardRobotStripes; @Mod(name = "BuildCraft", version = Version.VERSION, useMetadata = false, modid = "BuildCraft|Core", acceptedMinecraftVersions = "[1.7.10,1.8)", dependencies = "required-after:Forge@[10.13.0.1207,)") public class BuildCraftCore extends BuildCraftMod { @@ -432,6 +433,7 @@ public class BuildCraftCore extends BuildCraftMod { RobotManager.registerAIRobot(BoardRobotPlanter.class, "boardRobotPlanter", "buildcraft.core.robots.boards.BoardRobotPlanter"); RobotManager.registerAIRobot(BoardRobotPump.class, "boardRobotPump", "buildcraft.core.robots.boards.BoardRobotPump"); RobotManager.registerAIRobot(BoardRobotShovelman.class, "boardRobotShovelman", "buildcraft.core.robots.boards.BoardRobotShovelman"); + RobotManager.registerAIRobot(BoardRobotStripes.class, "boardRobotStripes", "buildcraft.core.robots.boards.BoardRobotStripes"); RobotManager.registerAIRobot(AIRobotAttack.class, "aiRobotAttack", "buildcraft.core.robots.AIRobotAttack"); RobotManager.registerAIRobot(AIRobotBreak.class, "aiRobotBreak", "buildcraft.core.robots.AIRobotBreak"); RobotManager.registerAIRobot(AIRobotCraftAssemblyTable.class, "aiRobotCraftAssemblyTable", "buildcraft.core.robots.AIRobotCraftAssemblyTable"); diff --git a/common/buildcraft/BuildCraftSilicon.java b/common/buildcraft/BuildCraftSilicon.java index 7220402d..84f80499 100644 --- a/common/buildcraft/BuildCraftSilicon.java +++ b/common/buildcraft/BuildCraftSilicon.java @@ -65,6 +65,7 @@ import buildcraft.robots.boards.BoardRobotPickerNBT; import buildcraft.robots.boards.BoardRobotPlanterNBT; import buildcraft.robots.boards.BoardRobotPumpNBT; import buildcraft.robots.boards.BoardRobotShovelmanNBT; +import buildcraft.robots.boards.BoardRobotStripesNBT; import buildcraft.robots.statements.ActionRobotFilter; import buildcraft.robots.statements.ActionRobotFilterTool; import buildcraft.robots.statements.ActionRobotGotoStation; @@ -197,6 +198,7 @@ public class BuildCraftSilicon extends BuildCraftMod { RedstoneBoardRegistry.instance.registerBoardClass(BoardRobotBomberNBT.instance, 1); RedstoneBoardRegistry.instance.registerBoardClass(BoardRobotBuilderNBT.instance, 0.5F); + RedstoneBoardRegistry.instance.registerBoardClass(BoardRobotStripesNBT.instance, 0.5F); StatementManager.registerActionProvider(new RobotsActionProvider()); StatementManager.registerTriggerProvider(new RobotsTriggerProvider()); diff --git a/common/buildcraft/core/Box.java b/common/buildcraft/core/Box.java index 690afe38..ec8f8256 100644 --- a/common/buildcraft/core/Box.java +++ b/common/buildcraft/core/Box.java @@ -363,9 +363,9 @@ public class Box implements IBox, ISerializable { @Override public BlockIndex getRandomBlockIndex(Random rand) { - int x = xMin + rand.nextInt(xMax - xMin); + int x = (xMax > xMin) ? xMin + rand.nextInt(xMax - xMin) : xMin; int y = (yMax > yMin) ? yMin + rand.nextInt(yMax - yMin) : yMin; - int z = zMin + rand.nextInt(zMax - zMin); + int z = (zMax > zMin) ? zMin + rand.nextInt(zMax - zMin) : zMin; return new BlockIndex(x, y, z); diff --git a/common/buildcraft/core/ItemMapLocation.java b/common/buildcraft/core/ItemMapLocation.java index b4fcc227..2f72b469 100755 --- a/common/buildcraft/core/ItemMapLocation.java +++ b/common/buildcraft/core/ItemMapLocation.java @@ -212,6 +212,20 @@ public class ItemMapLocation extends ItemBuildCraft { } } + public static IBox getPointBox(ItemStack item) { + NBTTagCompound cpt = NBTUtils.getItemData(item); + + if (cpt.hasKey("kind") && cpt.getByte("kind") == 0) { + int x = cpt.getInteger("x"); + int y = cpt.getInteger("y"); + int z = cpt.getInteger("z"); + + return new Box(x, y, z, x, y, z); + } else { + return null; + } + } + public static ForgeDirection getSide(ItemStack item) { NBTTagCompound cpt = NBTUtils.getItemData(item); @@ -232,6 +246,8 @@ public class ItemMapLocation extends ItemBuildCraft { return plan; } else if (cpt.hasKey("kind") && cpt.getByte("kind") == 1) { return getBox(item); + } else if (cpt.hasKey("kind") && cpt.getByte("kind") == 0) { + return getPointBox(item); } else { return null; } diff --git a/common/buildcraft/robots/EntityRobot.java b/common/buildcraft/robots/EntityRobot.java index 1215c278..5720de36 100644 --- a/common/buildcraft/robots/EntityRobot.java +++ b/common/buildcraft/robots/EntityRobot.java @@ -25,6 +25,7 @@ import net.minecraft.nbt.NBTTagList; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.DamageSource; import net.minecraft.util.EntityDamageSource; +import net.minecraft.util.IIcon; import net.minecraft.util.ResourceLocation; import net.minecraft.util.Vec3; import net.minecraft.world.World; @@ -1115,4 +1116,15 @@ public class EntityRobot extends EntityRobotBase implements return new FluidTankInfo[] {new FluidTankInfo(tank, maxFluid)}; } + @SideOnly(Side.CLIENT) + public IIcon getItemIcon(ItemStack stack, int renderPass) { + IIcon iicon = super.getItemIcon(stack, renderPass); + + if (iicon == null) { + iicon = stack.getItem().getIcon(stack, renderPass, null, itemInUse, 0); + } + + return iicon; + } + } diff --git a/common/buildcraft/robots/ai/AIRobotStripesHandler.java b/common/buildcraft/robots/ai/AIRobotStripesHandler.java new file mode 100644 index 00000000..878a991f --- /dev/null +++ b/common/buildcraft/robots/ai/AIRobotStripesHandler.java @@ -0,0 +1,114 @@ +/** + * Copyright (c) 2011-2014, SpaceToad and the BuildCraft Team + * http://www.mod-buildcraft.com + * + * BuildCraft is distributed under the terms of the Minecraft Mod Public + * License 1.0, or MMPL. Please check the contents of the license located in + * http://www.mod-buildcraft.com/MMPL-1.0.txt + */ +package buildcraft.robots.ai; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.world.WorldServer; + +import net.minecraftforge.common.util.ForgeDirection; + +import buildcraft.api.core.BlockIndex; +import buildcraft.api.core.Position; +import buildcraft.api.robots.AIRobot; +import buildcraft.api.robots.EntityRobotBase; +import buildcraft.api.transport.IStripesActivator; +import buildcraft.api.transport.IStripesHandler; +import buildcraft.api.transport.IStripesHandler.StripesHandlerType; +import buildcraft.api.transport.PipeManager; +import buildcraft.core.inventory.InvUtils; +import buildcraft.core.proxy.CoreProxy; +import buildcraft.transport.stripes.StripesHandlerDefault; + +public class AIRobotStripesHandler extends AIRobot implements IStripesActivator { + + private static IStripesHandler defaultItemsHandler = new StripesHandlerDefault(); + + private BlockIndex useToBlock; + private int useCycles = 0; + + public AIRobotStripesHandler(EntityRobotBase iRobot) { + super(iRobot); + } + + public AIRobotStripesHandler(EntityRobotBase iRobot, BlockIndex index) { + super(iRobot); + + useToBlock = index; + } + + @Override + public void start() { + robot.aimItemAt(useToBlock.x, useToBlock.y, useToBlock.z); + robot.setItemActive(true); + } + + @Override + public void update() { + useCycles++; + + if (useCycles > 60) { + ItemStack stack = robot.getHeldItem(); + + ForgeDirection direction = ForgeDirection.NORTH; + + Position p = new Position(useToBlock.x, useToBlock.y, useToBlock.z); + + EntityPlayer player = CoreProxy.proxy.getBuildCraftPlayer( + (WorldServer) robot.worldObj, (int) p.x, (int) p.y, + (int) p.z).get(); + player.rotationPitch = 0; + player.rotationYaw = 180; + + for (IStripesHandler handler : PipeManager.stripesHandlers) { + if (handler.getType() == StripesHandlerType.ITEM_USE + && handler.shouldHandle(stack)) { + if (handler.handle(robot.worldObj, (int) p.x, (int) p.y, + (int) p.z, direction, stack, player, this)) { + robot.setItemInUse(null); + terminate(); + return; + } + } + } + + if (defaultItemsHandler.handle(robot.worldObj, (int) p.x, (int) p.y, + (int) p.z, direction, stack, player, this)) { + robot.setItemInUse(null); + } + terminate(); + } + } + + private ForgeDirection getDirection() { + + return null; + } + + @Override + public void end() { + robot.setItemActive(false); + } + + @Override + public int getEnergyCost() { + return 70; + } + + @Override + public void sendItem(ItemStack stack, ForgeDirection direction) { + InvUtils.dropItems(robot.worldObj, stack, (int) Math.floor(robot.posX), + (int) Math.floor(robot.posY), (int) Math.floor(robot.posZ)); + } + + @Override + public void dropItem(ItemStack stack, ForgeDirection direction) { + sendItem(stack, direction); + } +} diff --git a/common/buildcraft/robots/boards/BoardRobotStripes.java b/common/buildcraft/robots/boards/BoardRobotStripes.java new file mode 100644 index 00000000..35c6bd3b --- /dev/null +++ b/common/buildcraft/robots/boards/BoardRobotStripes.java @@ -0,0 +1,129 @@ +/** + * Copyright (c) 2011-2014, SpaceToad and the BuildCraft Team + * http://www.mod-buildcraft.com + * + * BuildCraft is distributed under the terms of the Minecraft Mod Public + * License 1.0, or MMPL. Please check the contents of the license located in + * http://www.mod-buildcraft.com/MMPL-1.0.txt + */ +package buildcraft.robots.boards; + +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.world.World; + +import buildcraft.api.boards.RedstoneBoardRobot; +import buildcraft.api.boards.RedstoneBoardRobotNBT; +import buildcraft.api.core.BlockIndex; +import buildcraft.api.robots.AIRobot; +import buildcraft.api.robots.EntityRobotBase; +import buildcraft.core.inventory.filters.IStackFilter; +import buildcraft.core.utils.IBlockFilter; +import buildcraft.robots.ResourceIdBlock; +import buildcraft.robots.RobotRegistry; +import buildcraft.robots.ai.AIRobotFetchAndEquipItemStack; +import buildcraft.robots.ai.AIRobotGotoBlock; +import buildcraft.robots.ai.AIRobotGotoSleep; +import buildcraft.robots.ai.AIRobotSearchRandomBlock; +import buildcraft.robots.ai.AIRobotStripesHandler; + +public class BoardRobotStripes extends RedstoneBoardRobot { + + private BlockIndex blockFound; + + public BoardRobotStripes(EntityRobotBase iRobot) { + super(iRobot); + } + + @Override + public RedstoneBoardRobotNBT getNBTHandler() { + return BoardRobotStripesNBT.instance; + } + + @Override + public void update() { + if (robot.getHeldItem() == null) { + startDelegateAI(new AIRobotFetchAndEquipItemStack(robot, new IStackFilter() { + @Override + public boolean matches(ItemStack stack) { + return stack != null; + } + })); + } else { + startDelegateAI(new AIRobotSearchRandomBlock(robot, new IBlockFilter() { + @Override + public boolean matches(World world, int x, int y, int z) { + return world.getBlock(x, y, z).isAir(world, x, y, z) + && !robot.getRegistry().isTaken(new ResourceIdBlock(x, y, z)); + } + })); + } + } + + @Override + public void delegateAIEnded(AIRobot ai) { + if (ai instanceof AIRobotSearchRandomBlock) { + AIRobotSearchRandomBlock searchAI = (AIRobotSearchRandomBlock) ai; + + if (searchAI.blockFound != null + && RobotRegistry.getRegistry(robot.worldObj).take( + new ResourceIdBlock(searchAI.blockFound), robot)) { + searchAI.unreserve(); + + if (blockFound != null) { + robot.getRegistry().release(new ResourceIdBlock(blockFound)); + } + + blockFound = searchAI.blockFound; + startDelegateAI(new AIRobotGotoBlock(robot, searchAI.path)); + } else { + if (searchAI.blockFound != null) { + searchAI.unreserve(); + } + startDelegateAI(new AIRobotGotoSleep(robot)); + } + } else if (ai instanceof AIRobotGotoBlock) { + startDelegateAI(new AIRobotStripesHandler(robot, blockFound)); + } else if (ai instanceof AIRobotFetchAndEquipItemStack) { + if (robot.getHeldItem() == null) { + startDelegateAI(new AIRobotGotoSleep(robot)); + } + } else if (ai instanceof AIRobotStripesHandler) { + robot.getRegistry().release(new ResourceIdBlock(blockFound)); + blockFound = null; + } + } + + @Override + public void end() { + if (blockFound != null) { + robot.getRegistry().release(new ResourceIdBlock(blockFound)); + } + } + + @Override + public void writeSelfToNBT(NBTTagCompound nbt) { + super.writeSelfToNBT(nbt); + + if (blockFound != null) { + NBTTagCompound sub = new NBTTagCompound(); + blockFound.writeTo(sub); + nbt.setTag("blockFound", sub); + } + } + + @Override + public void loadSelfFromNBT(NBTTagCompound nbt) { + super.loadSelfFromNBT(nbt); + + if (nbt.hasKey("blockFound")) { + blockFound = new BlockIndex(nbt.getCompoundTag("blockFound")); + } + } + + private boolean isAirAbove(World world, int x, int y, int z) { + synchronized (world) { + return world.isAirBlock(x, y + 1, z); + } + } +} diff --git a/common/buildcraft/robots/boards/BoardRobotStripesNBT.java b/common/buildcraft/robots/boards/BoardRobotStripesNBT.java new file mode 100644 index 00000000..e89b3c2e --- /dev/null +++ b/common/buildcraft/robots/boards/BoardRobotStripesNBT.java @@ -0,0 +1,64 @@ +/** + * Copyright (c) 2011-2014, SpaceToad and the BuildCraft Team + * http://www.mod-buildcraft.com + * + * BuildCraft is distributed under the terms of the Minecraft Mod Public + * License 1.0, or MMPL. Please check the contents of the license located in + * http://www.mod-buildcraft.com/MMPL-1.0.txt + */ +package buildcraft.robots.boards; + +import java.util.List; + +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.IIcon; +import net.minecraft.util.ResourceLocation; + +import buildcraft.api.boards.RedstoneBoardRobot; +import buildcraft.api.boards.RedstoneBoardRobotNBT; +import buildcraft.api.robots.EntityRobotBase; +import buildcraft.core.DefaultProps; +import buildcraft.core.utils.StringUtils; + +public final class BoardRobotStripesNBT extends RedstoneBoardRobotNBT { + + public static BoardRobotStripesNBT instance = new BoardRobotStripesNBT(); + + private static final ResourceLocation TEXTURE = new ResourceLocation("buildcraft", + DefaultProps.TEXTURE_PATH_ENTITIES + "/robot_stripes.png"); + + private IIcon icon; + + @Override + public RedstoneBoardRobot create(NBTTagCompound nbt, EntityRobotBase robot) { + return new BoardRobotStripes(robot); + } + + @Override + public ResourceLocation getRobotTexture() { + return TEXTURE; + } + + @Override + public String getID() { + return "buildcraft:boardRobotStripes"; + } + + @Override + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean advanced) { + list.add(StringUtils.localize("buildcraft.boardRobotStripes")); + } + + @Override + public void registerIcons(IIconRegister iconRegister) { + icon = iconRegister.registerIcon("buildcraft:board_yellow"); + } + + @Override + public IIcon getIcon(NBTTagCompound nbt) { + return icon; + } +} diff --git a/common/buildcraft/transport/pipes/PipeItemsStripes.java b/common/buildcraft/transport/pipes/PipeItemsStripes.java index 5604a380..233d79b6 100644 --- a/common/buildcraft/transport/pipes/PipeItemsStripes.java +++ b/common/buildcraft/transport/pipes/PipeItemsStripes.java @@ -41,7 +41,7 @@ import buildcraft.transport.utils.TransportUtils; public class PipeItemsStripes extends Pipe implements IEnergyHandler, IStripesPipe { - private IStripesHandler defaultItemsHandler = new StripesHandlerDefault(); + private static IStripesHandler defaultItemsHandler = new StripesHandlerDefault(); public PipeItemsStripes(Item item) { super(new PipeTransportItems(), item); diff --git a/common/buildcraft/transport/stripes/StripesHandlerArrow.java b/common/buildcraft/transport/stripes/StripesHandlerArrow.java index 132cb364..7f5a248f 100644 --- a/common/buildcraft/transport/stripes/StripesHandlerArrow.java +++ b/common/buildcraft/transport/stripes/StripesHandlerArrow.java @@ -8,8 +8,8 @@ import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; +import buildcraft.api.transport.IStripesActivator; import buildcraft.api.transport.IStripesHandler; -import buildcraft.api.transport.IStripesPipe; public class StripesHandlerArrow implements IStripesHandler { @@ -26,7 +26,7 @@ public class StripesHandlerArrow implements IStripesHandler { @Override public boolean handle(World world, int x, int y, int z, ForgeDirection direction, ItemStack stack, EntityPlayer player, - IStripesPipe pipe) { + IStripesActivator activator) { EntityArrow entityArrow = new EntityArrow(world, player, 0); entityArrow.setPosition(x + 0.5d, y + 0.5d, z + 0.5d); @@ -39,7 +39,7 @@ public class StripesHandlerArrow implements IStripesHandler { stack.stackSize--; if (stack.stackSize > 0) { - pipe.sendItem(stack, direction.getOpposite()); + activator.sendItem(stack, direction.getOpposite()); } return true; diff --git a/common/buildcraft/transport/stripes/StripesHandlerBucket.java b/common/buildcraft/transport/stripes/StripesHandlerBucket.java index 903b3a5a..2fbd5fea 100644 --- a/common/buildcraft/transport/stripes/StripesHandlerBucket.java +++ b/common/buildcraft/transport/stripes/StripesHandlerBucket.java @@ -14,8 +14,8 @@ import net.minecraftforge.fluids.FluidContainerRegistry; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.IFluidBlock; +import buildcraft.api.transport.IStripesActivator; import buildcraft.api.transport.IStripesHandler; -import buildcraft.api.transport.IStripesPipe; public class StripesHandlerBucket implements IStripesHandler { private static final ItemStack emptyBucket = new ItemStack(Items.bucket, 1); @@ -33,16 +33,16 @@ public class StripesHandlerBucket implements IStripesHandler { @Override public boolean handle(World world, int x, int y, int z, ForgeDirection direction, ItemStack stack, EntityPlayer player, - IStripesPipe pipe) { + IStripesActivator activator) { Block block = world.getBlock(x, y, z); if (block == Blocks.air) { Block underblock = world.getBlock(x, y - 1, z); if (((ItemBucket) stack.getItem()).tryPlaceContainedLiquid(world, x, y - 1, z)) { - pipe.sendItem(emptyBucket, direction.getOpposite()); + activator.sendItem(emptyBucket, direction.getOpposite()); stack.stackSize--; if (stack.stackSize > 0) { - pipe.sendItem(stack, direction.getOpposite()); + activator.sendItem(stack, direction.getOpposite()); } return true; @@ -66,10 +66,10 @@ public class StripesHandlerBucket implements IStripesHandler { if (filledBucket != null) { world.setBlockToAir(x, y - 1, z); - pipe.sendItem(filledBucket, direction.getOpposite()); + activator.sendItem(filledBucket, direction.getOpposite()); stack.stackSize--; if (stack.stackSize > 0) { - pipe.sendItem(stack, direction.getOpposite()); + activator.sendItem(stack, direction.getOpposite()); } return true; diff --git a/common/buildcraft/transport/stripes/StripesHandlerDefault.java b/common/buildcraft/transport/stripes/StripesHandlerDefault.java index 3b7e3d4f..d2e31fec 100644 --- a/common/buildcraft/transport/stripes/StripesHandlerDefault.java +++ b/common/buildcraft/transport/stripes/StripesHandlerDefault.java @@ -14,8 +14,8 @@ import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; +import buildcraft.api.transport.IStripesActivator; import buildcraft.api.transport.IStripesHandler; -import buildcraft.api.transport.IStripesPipe; public class StripesHandlerDefault implements IStripesHandler { @@ -32,14 +32,14 @@ public class StripesHandlerDefault implements IStripesHandler { @Override public boolean handle(World world, int x, int y, int z, ForgeDirection direction, ItemStack stack, EntityPlayer player, - IStripesPipe pipe) { + IStripesActivator activator) { if (!world.isAirBlock(x, y, z)) { return false; } if (!stack.tryPlaceItemIntoWorld(player, world, x, y - 1, z, 1, 0.0f, 0.0f, 0.0f)) { return false; } - pipe.sendItem(stack, direction.getOpposite()); + activator.sendItem(stack, direction.getOpposite()); return true; } diff --git a/common/buildcraft/transport/stripes/StripesHandlerEntityInteract.java b/common/buildcraft/transport/stripes/StripesHandlerEntityInteract.java index 222923d9..414a6761 100644 --- a/common/buildcraft/transport/stripes/StripesHandlerEntityInteract.java +++ b/common/buildcraft/transport/stripes/StripesHandlerEntityInteract.java @@ -20,8 +20,8 @@ import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; +import buildcraft.api.transport.IStripesActivator; import buildcraft.api.transport.IStripesHandler; -import buildcraft.api.transport.IStripesPipe; public class StripesHandlerEntityInteract implements IStripesHandler { @@ -38,7 +38,7 @@ public class StripesHandlerEntityInteract implements IStripesHandler { @Override public boolean handle(World world, int x, int y, int z, ForgeDirection direction, ItemStack stack, EntityPlayer player, - IStripesPipe pipe) { + IStripesActivator activator) { AxisAlignedBB box = AxisAlignedBB.getBoundingBox(x, y, z, x + 1, y + 1, z + 1); List entities = world.getEntitiesWithinAABBExcludingEntity(null, box); @@ -64,21 +64,21 @@ public class StripesHandlerEntityInteract implements IStripesHandler { continue; } successful = true; - dropItemsExcept(stack, player, pipe, direction); + dropItemsExcept(stack, player, activator, direction); } if (stack.stackSize > 0) { - pipe.sendItem(stack, direction.getOpposite()); + activator.sendItem(stack, direction.getOpposite()); } return successful; } - private void dropItemsExcept(ItemStack stack, EntityPlayer player, IStripesPipe pipe, ForgeDirection direction) { + private void dropItemsExcept(ItemStack stack, EntityPlayer player, IStripesActivator activator, ForgeDirection direction) { for (int i = 0; i < player.inventory.getSizeInventory(); i++) { ItemStack invStack = player.inventory.getStackInSlot(i); if (invStack != null && invStack != stack) { player.inventory.setInventorySlotContents(i, null); - pipe.sendItem(invStack, direction.getOpposite()); + activator.sendItem(invStack, direction.getOpposite()); } } } diff --git a/common/buildcraft/transport/stripes/StripesHandlerPipes.java b/common/buildcraft/transport/stripes/StripesHandlerPipes.java index 77460f76..af56f048 100644 --- a/common/buildcraft/transport/stripes/StripesHandlerPipes.java +++ b/common/buildcraft/transport/stripes/StripesHandlerPipes.java @@ -18,8 +18,8 @@ import net.minecraftforge.common.util.ForgeDirection; import buildcraft.BuildCraftTransport; import buildcraft.api.core.Position; +import buildcraft.api.transport.IStripesActivator; import buildcraft.api.transport.IStripesHandler; -import buildcraft.api.transport.IStripesPipe; import buildcraft.transport.BlockGenericPipe; import buildcraft.transport.ItemPipe; import buildcraft.transport.Pipe; @@ -41,7 +41,7 @@ public class StripesHandlerPipes implements IStripesHandler { @Override public boolean handle(World world, int x, int y, int z, ForgeDirection direction, ItemStack stack, EntityPlayer player, - IStripesPipe pipe) { + IStripesActivator activator) { if (!(stack.getItem() instanceof ItemPipe) || (stack.getItem() == BuildCraftTransport.pipeItemsStripes)) { return false; diff --git a/common/buildcraft/transport/stripes/StripesHandlerPlaceBlock.java b/common/buildcraft/transport/stripes/StripesHandlerPlaceBlock.java index 64692ba5..d04738a3 100644 --- a/common/buildcraft/transport/stripes/StripesHandlerPlaceBlock.java +++ b/common/buildcraft/transport/stripes/StripesHandlerPlaceBlock.java @@ -15,8 +15,8 @@ import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; +import buildcraft.api.transport.IStripesActivator; import buildcraft.api.transport.IStripesHandler; -import buildcraft.api.transport.IStripesPipe; public class StripesHandlerPlaceBlock implements IStripesHandler { @@ -33,7 +33,7 @@ public class StripesHandlerPlaceBlock implements IStripesHandler { @Override public boolean handle(World world, int x, int y, int z, ForgeDirection direction, ItemStack stack, EntityPlayer player, - IStripesPipe pipe) { + IStripesActivator activator) { if (!world.isAirBlock(x, y, z)) { return false; } diff --git a/common/buildcraft/transport/stripes/StripesHandlerRightClick.java b/common/buildcraft/transport/stripes/StripesHandlerRightClick.java index 75511144..492d1a99 100644 --- a/common/buildcraft/transport/stripes/StripesHandlerRightClick.java +++ b/common/buildcraft/transport/stripes/StripesHandlerRightClick.java @@ -8,8 +8,8 @@ import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; +import buildcraft.api.transport.IStripesActivator; import buildcraft.api.transport.IStripesHandler; -import buildcraft.api.transport.IStripesPipe; public class StripesHandlerRightClick implements IStripesHandler { @@ -28,9 +28,9 @@ public class StripesHandlerRightClick implements IStripesHandler { @Override public boolean handle(World world, int x, int y, int z, ForgeDirection direction, ItemStack stack, EntityPlayer player, - IStripesPipe pipe) { + IStripesActivator activator) { ItemStack remainingStack = stack.getItem().onItemRightClick(stack, world, player); - pipe.sendItem(remainingStack, direction.getOpposite()); + activator.sendItem(remainingStack, direction.getOpposite()); return true; } diff --git a/common/buildcraft/transport/stripes/StripesHandlerShears.java b/common/buildcraft/transport/stripes/StripesHandlerShears.java index ae819d19..abfb245c 100644 --- a/common/buildcraft/transport/stripes/StripesHandlerShears.java +++ b/common/buildcraft/transport/stripes/StripesHandlerShears.java @@ -13,8 +13,8 @@ import net.minecraft.world.World; import net.minecraftforge.common.IShearable; import net.minecraftforge.common.util.ForgeDirection; +import buildcraft.api.transport.IStripesActivator; import buildcraft.api.transport.IStripesHandler; -import buildcraft.api.transport.IStripesPipe; public class StripesHandlerShears implements IStripesHandler { @@ -31,7 +31,7 @@ public class StripesHandlerShears implements IStripesHandler { @Override public boolean handle(World world, int x, int y, int z, ForgeDirection direction, ItemStack stack, EntityPlayer player, - IStripesPipe pipe) { + IStripesActivator activator) { Block block = world.getBlock(x, y, z); if (block instanceof IShearable) { @@ -42,9 +42,9 @@ public class StripesHandlerShears implements IStripesHandler { EnchantmentHelper.getEnchantmentLevel(Enchantment.fortune.effectId, stack)); world.setBlockToAir(x, y, z); stack.damageItem(1, player); - pipe.sendItem(stack, direction.getOpposite()); + activator.sendItem(stack, direction.getOpposite()); for (ItemStack dropStack : drops) { - pipe.sendItem(dropStack, direction.getOpposite()); + activator.sendItem(dropStack, direction.getOpposite()); } return true; }