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 shouldHandle(ItemStack stack);
boolean handle(World world, int x, int y, int z, ForgeDirection direction, 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; package buildcraft.api.transport;
import net.minecraft.item.ItemStack; public interface IStripesPipe extends IPipe, IStripesActivator {
import net.minecraftforge.common.util.ForgeDirection;
public interface IStripesPipe extends IPipe {
void sendItem(ItemStack itemStack, ForgeDirection direction);
void dropItem(ItemStack itemStack, ForgeDirection direction);
} }

View file

@ -17,6 +17,7 @@ buildcraft.boardRobotBuilder=Builder
buildcraft.boardRobotCrafter=Crafter buildcraft.boardRobotCrafter=Crafter
buildcraft.boardRobotDelivery=Delivery buildcraft.boardRobotDelivery=Delivery
buildcraft.boardRobotPump=Pump buildcraft.boardRobotPump=Pump
buildcraft.boardRobotStripes=Stripes
chat.gateCopier.clear=Gate information cleared. chat.gateCopier.clear=Gate information cleared.
chat.gateCopier.gateCopied=Copied gate information to copier. 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.BoardRobotPlanter;
import buildcraft.robots.boards.BoardRobotPump; import buildcraft.robots.boards.BoardRobotPump;
import buildcraft.robots.boards.BoardRobotShovelman; 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,)") @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 { 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(BoardRobotPlanter.class, "boardRobotPlanter", "buildcraft.core.robots.boards.BoardRobotPlanter");
RobotManager.registerAIRobot(BoardRobotPump.class, "boardRobotPump", "buildcraft.core.robots.boards.BoardRobotPump"); RobotManager.registerAIRobot(BoardRobotPump.class, "boardRobotPump", "buildcraft.core.robots.boards.BoardRobotPump");
RobotManager.registerAIRobot(BoardRobotShovelman.class, "boardRobotShovelman", "buildcraft.core.robots.boards.BoardRobotShovelman"); 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(AIRobotAttack.class, "aiRobotAttack", "buildcraft.core.robots.AIRobotAttack");
RobotManager.registerAIRobot(AIRobotBreak.class, "aiRobotBreak", "buildcraft.core.robots.AIRobotBreak"); RobotManager.registerAIRobot(AIRobotBreak.class, "aiRobotBreak", "buildcraft.core.robots.AIRobotBreak");
RobotManager.registerAIRobot(AIRobotCraftAssemblyTable.class, "aiRobotCraftAssemblyTable", "buildcraft.core.robots.AIRobotCraftAssemblyTable"); 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.BoardRobotPlanterNBT;
import buildcraft.robots.boards.BoardRobotPumpNBT; import buildcraft.robots.boards.BoardRobotPumpNBT;
import buildcraft.robots.boards.BoardRobotShovelmanNBT; import buildcraft.robots.boards.BoardRobotShovelmanNBT;
import buildcraft.robots.boards.BoardRobotStripesNBT;
import buildcraft.robots.statements.ActionRobotFilter; import buildcraft.robots.statements.ActionRobotFilter;
import buildcraft.robots.statements.ActionRobotFilterTool; import buildcraft.robots.statements.ActionRobotFilterTool;
import buildcraft.robots.statements.ActionRobotGotoStation; import buildcraft.robots.statements.ActionRobotGotoStation;
@ -197,6 +198,7 @@ public class BuildCraftSilicon extends BuildCraftMod {
RedstoneBoardRegistry.instance.registerBoardClass(BoardRobotBomberNBT.instance, 1); RedstoneBoardRegistry.instance.registerBoardClass(BoardRobotBomberNBT.instance, 1);
RedstoneBoardRegistry.instance.registerBoardClass(BoardRobotBuilderNBT.instance, 0.5F); RedstoneBoardRegistry.instance.registerBoardClass(BoardRobotBuilderNBT.instance, 0.5F);
RedstoneBoardRegistry.instance.registerBoardClass(BoardRobotStripesNBT.instance, 0.5F);
StatementManager.registerActionProvider(new RobotsActionProvider()); StatementManager.registerActionProvider(new RobotsActionProvider());
StatementManager.registerTriggerProvider(new RobotsTriggerProvider()); StatementManager.registerTriggerProvider(new RobotsTriggerProvider());

View file

@ -363,9 +363,9 @@ public class Box implements IBox, ISerializable {
@Override @Override
public BlockIndex getRandomBlockIndex(Random rand) { 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 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); 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) { public static ForgeDirection getSide(ItemStack item) {
NBTTagCompound cpt = NBTUtils.getItemData(item); NBTTagCompound cpt = NBTUtils.getItemData(item);
@ -232,6 +246,8 @@ public class ItemMapLocation extends ItemBuildCraft {
return plan; return plan;
} else if (cpt.hasKey("kind") && cpt.getByte("kind") == 1) { } else if (cpt.hasKey("kind") && cpt.getByte("kind") == 1) {
return getBox(item); return getBox(item);
} else if (cpt.hasKey("kind") && cpt.getByte("kind") == 0) {
return getPointBox(item);
} else { } else {
return null; return null;
} }

View file

@ -25,6 +25,7 @@ import net.minecraft.nbt.NBTTagList;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.DamageSource; import net.minecraft.util.DamageSource;
import net.minecraft.util.EntityDamageSource; import net.minecraft.util.EntityDamageSource;
import net.minecraft.util.IIcon;
import net.minecraft.util.ResourceLocation; import net.minecraft.util.ResourceLocation;
import net.minecraft.util.Vec3; import net.minecraft.util.Vec3;
import net.minecraft.world.World; import net.minecraft.world.World;
@ -1115,4 +1116,15 @@ public class EntityRobot extends EntityRobotBase implements
return new FluidTankInfo[] {new FluidTankInfo(tank, maxFluid)}; 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 { public class PipeItemsStripes extends Pipe<PipeTransportItems> implements IEnergyHandler, IStripesPipe {
private IStripesHandler defaultItemsHandler = new StripesHandlerDefault(); private static IStripesHandler defaultItemsHandler = new StripesHandlerDefault();
public PipeItemsStripes(Item item) { public PipeItemsStripes(Item item) {
super(new PipeTransportItems(), item); super(new PipeTransportItems(), item);

View file

@ -8,8 +8,8 @@ import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.common.util.ForgeDirection;
import buildcraft.api.transport.IStripesActivator;
import buildcraft.api.transport.IStripesHandler; import buildcraft.api.transport.IStripesHandler;
import buildcraft.api.transport.IStripesPipe;
public class StripesHandlerArrow implements IStripesHandler { public class StripesHandlerArrow implements IStripesHandler {
@ -26,7 +26,7 @@ public class StripesHandlerArrow implements IStripesHandler {
@Override @Override
public boolean handle(World world, int x, int y, int z, public boolean handle(World world, int x, int y, int z,
ForgeDirection direction, ItemStack stack, EntityPlayer player, ForgeDirection direction, ItemStack stack, EntityPlayer player,
IStripesPipe pipe) { IStripesActivator activator) {
EntityArrow entityArrow = new EntityArrow(world, player, 0); EntityArrow entityArrow = new EntityArrow(world, player, 0);
entityArrow.setPosition(x + 0.5d, y + 0.5d, z + 0.5d); entityArrow.setPosition(x + 0.5d, y + 0.5d, z + 0.5d);
@ -39,7 +39,7 @@ public class StripesHandlerArrow implements IStripesHandler {
stack.stackSize--; stack.stackSize--;
if (stack.stackSize > 0) { if (stack.stackSize > 0) {
pipe.sendItem(stack, direction.getOpposite()); activator.sendItem(stack, direction.getOpposite());
} }
return true; return true;

View file

@ -14,8 +14,8 @@ import net.minecraftforge.fluids.FluidContainerRegistry;
import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.FluidStack;
import net.minecraftforge.fluids.IFluidBlock; import net.minecraftforge.fluids.IFluidBlock;
import buildcraft.api.transport.IStripesActivator;
import buildcraft.api.transport.IStripesHandler; import buildcraft.api.transport.IStripesHandler;
import buildcraft.api.transport.IStripesPipe;
public class StripesHandlerBucket implements IStripesHandler { public class StripesHandlerBucket implements IStripesHandler {
private static final ItemStack emptyBucket = new ItemStack(Items.bucket, 1); private static final ItemStack emptyBucket = new ItemStack(Items.bucket, 1);
@ -33,16 +33,16 @@ public class StripesHandlerBucket implements IStripesHandler {
@Override @Override
public boolean handle(World world, int x, int y, int z, public boolean handle(World world, int x, int y, int z,
ForgeDirection direction, ItemStack stack, EntityPlayer player, ForgeDirection direction, ItemStack stack, EntityPlayer player,
IStripesPipe pipe) { IStripesActivator activator) {
Block block = world.getBlock(x, y, z); Block block = world.getBlock(x, y, z);
if (block == Blocks.air) { if (block == Blocks.air) {
Block underblock = world.getBlock(x, y - 1, z); Block underblock = world.getBlock(x, y - 1, z);
if (((ItemBucket) stack.getItem()).tryPlaceContainedLiquid(world, 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--; stack.stackSize--;
if (stack.stackSize > 0) { if (stack.stackSize > 0) {
pipe.sendItem(stack, direction.getOpposite()); activator.sendItem(stack, direction.getOpposite());
} }
return true; return true;
@ -66,10 +66,10 @@ public class StripesHandlerBucket implements IStripesHandler {
if (filledBucket != null) { if (filledBucket != null) {
world.setBlockToAir(x, y - 1, z); world.setBlockToAir(x, y - 1, z);
pipe.sendItem(filledBucket, direction.getOpposite()); activator.sendItem(filledBucket, direction.getOpposite());
stack.stackSize--; stack.stackSize--;
if (stack.stackSize > 0) { if (stack.stackSize > 0) {
pipe.sendItem(stack, direction.getOpposite()); activator.sendItem(stack, direction.getOpposite());
} }
return true; return true;

View file

@ -14,8 +14,8 @@ import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.common.util.ForgeDirection;
import buildcraft.api.transport.IStripesActivator;
import buildcraft.api.transport.IStripesHandler; import buildcraft.api.transport.IStripesHandler;
import buildcraft.api.transport.IStripesPipe;
public class StripesHandlerDefault implements IStripesHandler { public class StripesHandlerDefault implements IStripesHandler {
@ -32,14 +32,14 @@ public class StripesHandlerDefault implements IStripesHandler {
@Override @Override
public boolean handle(World world, int x, int y, int z, public boolean handle(World world, int x, int y, int z,
ForgeDirection direction, ItemStack stack, EntityPlayer player, ForgeDirection direction, ItemStack stack, EntityPlayer player,
IStripesPipe pipe) { IStripesActivator activator) {
if (!world.isAirBlock(x, y, z)) { if (!world.isAirBlock(x, y, z)) {
return false; return false;
} }
if (!stack.tryPlaceItemIntoWorld(player, world, x, y - 1, z, 1, 0.0f, 0.0f, 0.0f)) { if (!stack.tryPlaceItemIntoWorld(player, world, x, y - 1, z, 1, 0.0f, 0.0f, 0.0f)) {
return false; return false;
} }
pipe.sendItem(stack, direction.getOpposite()); activator.sendItem(stack, direction.getOpposite());
return true; return true;
} }

View file

@ -20,8 +20,8 @@ import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.common.util.ForgeDirection;
import buildcraft.api.transport.IStripesActivator;
import buildcraft.api.transport.IStripesHandler; import buildcraft.api.transport.IStripesHandler;
import buildcraft.api.transport.IStripesPipe;
public class StripesHandlerEntityInteract implements IStripesHandler { public class StripesHandlerEntityInteract implements IStripesHandler {
@ -38,7 +38,7 @@ public class StripesHandlerEntityInteract implements IStripesHandler {
@Override @Override
public boolean handle(World world, int x, int y, int z, public boolean handle(World world, int x, int y, int z,
ForgeDirection direction, ItemStack stack, EntityPlayer player, ForgeDirection direction, ItemStack stack, EntityPlayer player,
IStripesPipe pipe) { IStripesActivator activator) {
AxisAlignedBB box = AxisAlignedBB.getBoundingBox(x, y, z, x + 1, y + 1, z + 1); AxisAlignedBB box = AxisAlignedBB.getBoundingBox(x, y, z, x + 1, y + 1, z + 1);
List entities = world.getEntitiesWithinAABBExcludingEntity(null, box); List entities = world.getEntitiesWithinAABBExcludingEntity(null, box);
@ -64,21 +64,21 @@ public class StripesHandlerEntityInteract implements IStripesHandler {
continue; continue;
} }
successful = true; successful = true;
dropItemsExcept(stack, player, pipe, direction); dropItemsExcept(stack, player, activator, direction);
} }
if (stack.stackSize > 0) { if (stack.stackSize > 0) {
pipe.sendItem(stack, direction.getOpposite()); activator.sendItem(stack, direction.getOpposite());
} }
return successful; 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++) { for (int i = 0; i < player.inventory.getSizeInventory(); i++) {
ItemStack invStack = player.inventory.getStackInSlot(i); ItemStack invStack = player.inventory.getStackInSlot(i);
if (invStack != null && invStack != stack) { if (invStack != null && invStack != stack) {
player.inventory.setInventorySlotContents(i, null); 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.BuildCraftTransport;
import buildcraft.api.core.Position; import buildcraft.api.core.Position;
import buildcraft.api.transport.IStripesActivator;
import buildcraft.api.transport.IStripesHandler; import buildcraft.api.transport.IStripesHandler;
import buildcraft.api.transport.IStripesPipe;
import buildcraft.transport.BlockGenericPipe; import buildcraft.transport.BlockGenericPipe;
import buildcraft.transport.ItemPipe; import buildcraft.transport.ItemPipe;
import buildcraft.transport.Pipe; import buildcraft.transport.Pipe;
@ -41,7 +41,7 @@ public class StripesHandlerPipes implements IStripesHandler {
@Override @Override
public boolean handle(World world, int x, int y, int z, public boolean handle(World world, int x, int y, int z,
ForgeDirection direction, ItemStack stack, EntityPlayer player, ForgeDirection direction, ItemStack stack, EntityPlayer player,
IStripesPipe pipe) { IStripesActivator activator) {
if (!(stack.getItem() instanceof ItemPipe) || (stack.getItem() == BuildCraftTransport.pipeItemsStripes)) { if (!(stack.getItem() instanceof ItemPipe) || (stack.getItem() == BuildCraftTransport.pipeItemsStripes)) {
return false; return false;

View file

@ -15,8 +15,8 @@ import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.common.util.ForgeDirection;
import buildcraft.api.transport.IStripesActivator;
import buildcraft.api.transport.IStripesHandler; import buildcraft.api.transport.IStripesHandler;
import buildcraft.api.transport.IStripesPipe;
public class StripesHandlerPlaceBlock implements IStripesHandler { public class StripesHandlerPlaceBlock implements IStripesHandler {
@ -33,7 +33,7 @@ public class StripesHandlerPlaceBlock implements IStripesHandler {
@Override @Override
public boolean handle(World world, int x, int y, int z, public boolean handle(World world, int x, int y, int z,
ForgeDirection direction, ItemStack stack, EntityPlayer player, ForgeDirection direction, ItemStack stack, EntityPlayer player,
IStripesPipe pipe) { IStripesActivator activator) {
if (!world.isAirBlock(x, y, z)) { if (!world.isAirBlock(x, y, z)) {
return false; return false;
} }

View file

@ -8,8 +8,8 @@ import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.common.util.ForgeDirection;
import buildcraft.api.transport.IStripesActivator;
import buildcraft.api.transport.IStripesHandler; import buildcraft.api.transport.IStripesHandler;
import buildcraft.api.transport.IStripesPipe;
public class StripesHandlerRightClick implements IStripesHandler { public class StripesHandlerRightClick implements IStripesHandler {
@ -28,9 +28,9 @@ public class StripesHandlerRightClick implements IStripesHandler {
@Override @Override
public boolean handle(World world, int x, int y, int z, public boolean handle(World world, int x, int y, int z,
ForgeDirection direction, ItemStack stack, EntityPlayer player, ForgeDirection direction, ItemStack stack, EntityPlayer player,
IStripesPipe pipe) { IStripesActivator activator) {
ItemStack remainingStack = stack.getItem().onItemRightClick(stack, world, player); ItemStack remainingStack = stack.getItem().onItemRightClick(stack, world, player);
pipe.sendItem(remainingStack, direction.getOpposite()); activator.sendItem(remainingStack, direction.getOpposite());
return true; return true;
} }

View file

@ -13,8 +13,8 @@ import net.minecraft.world.World;
import net.minecraftforge.common.IShearable; import net.minecraftforge.common.IShearable;
import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.common.util.ForgeDirection;
import buildcraft.api.transport.IStripesActivator;
import buildcraft.api.transport.IStripesHandler; import buildcraft.api.transport.IStripesHandler;
import buildcraft.api.transport.IStripesPipe;
public class StripesHandlerShears implements IStripesHandler { public class StripesHandlerShears implements IStripesHandler {
@ -31,7 +31,7 @@ public class StripesHandlerShears implements IStripesHandler {
@Override @Override
public boolean handle(World world, int x, int y, int z, public boolean handle(World world, int x, int y, int z,
ForgeDirection direction, ItemStack stack, EntityPlayer player, ForgeDirection direction, ItemStack stack, EntityPlayer player,
IStripesPipe pipe) { IStripesActivator activator) {
Block block = world.getBlock(x, y, z); Block block = world.getBlock(x, y, z);
if (block instanceof IShearable) { if (block instanceof IShearable) {
@ -42,9 +42,9 @@ public class StripesHandlerShears implements IStripesHandler {
EnchantmentHelper.getEnchantmentLevel(Enchantment.fortune.effectId, stack)); EnchantmentHelper.getEnchantmentLevel(Enchantment.fortune.effectId, stack));
world.setBlockToAir(x, y, z); world.setBlockToAir(x, y, z);
stack.damageItem(1, player); stack.damageItem(1, player);
pipe.sendItem(stack, direction.getOpposite()); activator.sendItem(stack, direction.getOpposite());
for (ItemStack dropStack : drops) { for (ItemStack dropStack : drops) {
pipe.sendItem(dropStack, direction.getOpposite()); activator.sendItem(dropStack, direction.getOpposite());
} }
return true; return true;
} }