add a stripes robot

This commit is contained in:
Hea3veN 2015-02-19 21:10:11 -03:00
parent e9af8230e6
commit 09b004e790
22 changed files with 392 additions and 40 deletions

View file

@ -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);
}

View file

@ -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);
}

View file

@ -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 {
}

View file

@ -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.

Binary file not shown.

After

Width:  |  Height:  |  Size: 896 B

View file

@ -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");

View file

@ -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());

View file

@ -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);

View file

@ -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;
}

View file

@ -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;
}
}

View file

@ -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);
}
}

View file

@ -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);
}
}
}

View file

@ -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;
}
}

View file

@ -41,7 +41,7 @@ import buildcraft.transport.utils.TransportUtils;
public class PipeItemsStripes extends Pipe<PipeTransportItems> implements IEnergyHandler, IStripesPipe {
private IStripesHandler defaultItemsHandler = new StripesHandlerDefault();
private static IStripesHandler defaultItemsHandler = new StripesHandlerDefault();
public PipeItemsStripes(Item item) {
super(new PipeTransportItems(), item);

View file

@ -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;

View file

@ -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;

View file

@ -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;
}

View file

@ -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());
}
}
}

View file

@ -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;

View file

@ -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;
}

View file

@ -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;
}

View file

@ -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;
}