basic constructor block done, still needs functionality

This commit is contained in:
Raoul Van den Berge
2015-12-24 21:09:58 +01:00
parent 84cf875356
commit e5fe30f707
14 changed files with 359 additions and 5 deletions

View File

@@ -30,6 +30,7 @@ public class StorageCraft
public static final int SOLDERER = 7; public static final int SOLDERER = 7;
public static final int WIRELESS_TRANSMITTER = 8; public static final int WIRELESS_TRANSMITTER = 8;
public static final int DESTRUCTOR = 9; public static final int DESTRUCTOR = 9;
public static final int CONSTRUCTOR = 10;
} }
public static final String ID = "storagecraft"; public static final String ID = "storagecraft";

View File

@@ -1,6 +1,7 @@
package storagecraft; package storagecraft;
import storagecraft.block.BlockCable; import storagecraft.block.BlockCable;
import storagecraft.block.BlockConstructor;
import storagecraft.block.BlockController; import storagecraft.block.BlockController;
import storagecraft.block.BlockDestructor; import storagecraft.block.BlockDestructor;
import storagecraft.block.BlockDetector; import storagecraft.block.BlockDetector;
@@ -27,4 +28,5 @@ public class StorageCraftBlocks
public static final BlockSolderer SOLDERER = new BlockSolderer(); public static final BlockSolderer SOLDERER = new BlockSolderer();
public static final BlockWirelessTransmitter WIRELESS_TRANSMITTER = new BlockWirelessTransmitter(); public static final BlockWirelessTransmitter WIRELESS_TRANSMITTER = new BlockWirelessTransmitter();
public static final BlockDestructor DESTRUCTOR = new BlockDestructor(); public static final BlockDestructor DESTRUCTOR = new BlockDestructor();
public static final BlockConstructor CONSTRUCTOR = new BlockConstructor();
} }

View File

@@ -0,0 +1,72 @@
package storagecraft.block;
import net.minecraft.block.ITileEntityProvider;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.IIcon;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import storagecraft.StorageCraft;
import storagecraft.tile.TileConstructor;
public class BlockConstructor extends BlockBase implements ITileEntityProvider
{
private IIcon sideIcon;
private IIcon connectedIcon;
private IIcon disconnectedIcon;
public BlockConstructor()
{
super("constructor");
}
@Override
public TileEntity createNewTileEntity(World world, int meta)
{
return new TileConstructor();
}
@Override
public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ)
{
if (!world.isRemote)
{
player.openGui(StorageCraft.INSTANCE, StorageCraft.GUI.CONSTRUCTOR, world, x, y, z);
}
return true;
}
@Override
public void registerBlockIcons(IIconRegister register)
{
connectedIcon = register.registerIcon("storagecraft:constructorConnected");
disconnectedIcon = register.registerIcon("storagecraft:constructorDisconnected");
sideIcon = register.registerIcon("storagecraft:side");
}
@Override
public IIcon getIcon(IBlockAccess world, int x, int y, int z, int side)
{
TileConstructor tile = (TileConstructor) world.getTileEntity(x, y, z);
if (side == tile.getDirection().ordinal())
{
return tile.isConnected() ? connectedIcon : disconnectedIcon;
}
return sideIcon;
}
@Override
public IIcon getIcon(int side, int damage)
{
if (side == 3)
{
return disconnectedIcon;
}
return sideIcon;
}
}

View File

@@ -61,13 +61,13 @@ public abstract class ContainerBase extends Container
if (slot instanceof SlotSpecimen) if (slot instanceof SlotSpecimen)
{ {
if (clickedButton == 2) if (clickedButton == 2 || player.inventory.getItemStack() == null)
{ {
slot.putStack(null); slot.putStack(null);
} }
else else if (slot.isItemValid(player.inventory.getItemStack()))
{ {
slot.putStack(player.inventory.getItemStack() == null ? null : player.inventory.getItemStack().copy()); slot.putStack(player.inventory.getItemStack().copy());
} }
return player.inventory.getItemStack(); return player.inventory.getItemStack();

View File

@@ -0,0 +1,34 @@
package storagecraft.container;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.IInventory;
import net.minecraft.item.ItemBlock;
import net.minecraft.item.ItemStack;
import storagecraft.container.slot.SlotSpecimen;
import storagecraft.tile.TileConstructor;
public class ContainerConstructor extends ContainerBase
{
class SlotConstructor extends SlotSpecimen
{
public SlotConstructor(IInventory inventory, int id, int x, int y)
{
super(inventory, id, x, y);
}
@Override
public boolean isItemValid(ItemStack stack)
{
return stack.getItem() instanceof ItemBlock;
}
}
public ContainerConstructor(EntityPlayer player, TileConstructor constructor)
{
super(player);
addSlotToContainer(new SlotConstructor(constructor, 0, 80, 20));
addPlayerInventory(8, 55);
}
}

View File

@@ -0,0 +1,48 @@
package storagecraft.gui;
import storagecraft.container.ContainerConstructor;
import storagecraft.gui.sidebutton.SideButtonCompare;
import storagecraft.gui.sidebutton.SideButtonRedstoneMode;
import storagecraft.tile.TileConstructor;
import storagecraft.util.InventoryUtils;
public class GuiConstructor extends GuiBase
{
private TileConstructor constructor;
public GuiConstructor(ContainerConstructor container, TileConstructor constructor)
{
super(container, 176, 137);
this.constructor = constructor;
}
@Override
public void init(int x, int y)
{
addSideButton(new SideButtonRedstoneMode(constructor));
addSideButton(new SideButtonCompare(constructor, InventoryUtils.COMPARE_DAMAGE));
addSideButton(new SideButtonCompare(constructor, InventoryUtils.COMPARE_NBT));
}
@Override
public void update(int x, int y)
{
}
@Override
public void drawBackground(int x, int y, int mouseX, int mouseY)
{
bindTexture("gui/constructor.png");
drawTexturedModalRect(x, y, 0, 0, xSize, ySize);
}
@Override
public void drawForeground(int mouseX, int mouseY)
{
drawString(7, 7, t("gui.storagecraft:constructor"));
drawString(7, 43, t("container.inventory"));
}
}

View File

@@ -6,6 +6,7 @@ import net.minecraft.inventory.Container;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World; import net.minecraft.world.World;
import storagecraft.StorageCraft; import storagecraft.StorageCraft;
import storagecraft.container.ContainerConstructor;
import storagecraft.container.ContainerController; import storagecraft.container.ContainerController;
import storagecraft.container.ContainerDestructor; import storagecraft.container.ContainerDestructor;
import storagecraft.container.ContainerDetector; import storagecraft.container.ContainerDetector;
@@ -16,6 +17,7 @@ import storagecraft.container.ContainerImporter;
import storagecraft.container.ContainerSolderer; import storagecraft.container.ContainerSolderer;
import storagecraft.container.ContainerExternalStorage; import storagecraft.container.ContainerExternalStorage;
import storagecraft.container.ContainerWirelessTransmitter; import storagecraft.container.ContainerWirelessTransmitter;
import storagecraft.tile.TileConstructor;
import storagecraft.tile.TileController; import storagecraft.tile.TileController;
import storagecraft.tile.TileDestructor; import storagecraft.tile.TileDestructor;
import storagecraft.tile.TileDetector; import storagecraft.tile.TileDetector;
@@ -53,6 +55,8 @@ public class GuiHandler implements IGuiHandler
return new ContainerWirelessTransmitter(player, (TileWirelessTransmitter) tile); return new ContainerWirelessTransmitter(player, (TileWirelessTransmitter) tile);
case StorageCraft.GUI.DESTRUCTOR: case StorageCraft.GUI.DESTRUCTOR:
return new ContainerDestructor(player); return new ContainerDestructor(player);
case StorageCraft.GUI.CONSTRUCTOR:
return new ContainerConstructor(player, (TileConstructor) tile);
default: default:
return null; return null;
} }
@@ -91,6 +95,8 @@ public class GuiHandler implements IGuiHandler
return new GuiWirelessTransmitter((ContainerWirelessTransmitter) getContainer(ID, player, tile), (TileWirelessTransmitter) tile); return new GuiWirelessTransmitter((ContainerWirelessTransmitter) getContainer(ID, player, tile), (TileWirelessTransmitter) tile);
case StorageCraft.GUI.DESTRUCTOR: case StorageCraft.GUI.DESTRUCTOR:
return new GuiDestructor((ContainerDestructor) getContainer(ID, player, tile), (TileDestructor) tile); return new GuiDestructor((ContainerDestructor) getContainer(ID, player, tile), (TileDestructor) tile);
case StorageCraft.GUI.CONSTRUCTOR:
return new GuiConstructor((ContainerConstructor) getContainer(ID, player, tile), (TileConstructor) tile);
default: default:
return null; return null;
} }

View File

@@ -15,7 +15,7 @@ import storagecraft.tile.solderer.SoldererRegistry;
public class CraftingHandlerSolderer extends TemplateRecipeHandler public class CraftingHandlerSolderer extends TemplateRecipeHandler
{ {
public class SoldererRecipe extends CachedRecipe class SoldererRecipe extends CachedRecipe
{ {
private ArrayList<PositionedStack> ingredients = new ArrayList<PositionedStack>(); private ArrayList<PositionedStack> ingredients = new ArrayList<PositionedStack>();
private PositionedStack result; private PositionedStack result;

View File

@@ -30,6 +30,7 @@ import storagecraft.network.MessageStoragePull;
import storagecraft.network.MessageStoragePush; import storagecraft.network.MessageStoragePush;
import storagecraft.network.MessageTileUpdate; import storagecraft.network.MessageTileUpdate;
import storagecraft.tile.TileCable; import storagecraft.tile.TileCable;
import storagecraft.tile.TileConstructor;
import storagecraft.tile.TileController; import storagecraft.tile.TileController;
import storagecraft.tile.TileDestructor; import storagecraft.tile.TileDestructor;
import storagecraft.tile.TileDetector; import storagecraft.tile.TileDetector;
@@ -75,6 +76,7 @@ public class CommonProxy
GameRegistry.registerTileEntity(TileSolderer.class, "solderer"); GameRegistry.registerTileEntity(TileSolderer.class, "solderer");
GameRegistry.registerTileEntity(TileWirelessTransmitter.class, "wirelessTransmitter"); GameRegistry.registerTileEntity(TileWirelessTransmitter.class, "wirelessTransmitter");
GameRegistry.registerTileEntity(TileDestructor.class, "destructor"); GameRegistry.registerTileEntity(TileDestructor.class, "destructor");
GameRegistry.registerTileEntity(TileConstructor.class, "constructor");
GameRegistry.registerBlock(StorageCraftBlocks.CONTROLLER, "controller"); GameRegistry.registerBlock(StorageCraftBlocks.CONTROLLER, "controller");
GameRegistry.registerBlock(StorageCraftBlocks.CABLE, ItemBlockCable.class, "cable"); GameRegistry.registerBlock(StorageCraftBlocks.CABLE, ItemBlockCable.class, "cable");
@@ -88,6 +90,7 @@ public class CommonProxy
GameRegistry.registerBlock(StorageCraftBlocks.SOLDERER, "solderer"); GameRegistry.registerBlock(StorageCraftBlocks.SOLDERER, "solderer");
GameRegistry.registerBlock(StorageCraftBlocks.WIRELESS_TRANSMITTER, "wirelessTransmitter"); GameRegistry.registerBlock(StorageCraftBlocks.WIRELESS_TRANSMITTER, "wirelessTransmitter");
GameRegistry.registerBlock(StorageCraftBlocks.DESTRUCTOR, "destructor"); GameRegistry.registerBlock(StorageCraftBlocks.DESTRUCTOR, "destructor");
GameRegistry.registerBlock(StorageCraftBlocks.CONSTRUCTOR, "constructor");
GameRegistry.registerItem(StorageCraftItems.STORAGE_CELL, "storageCell"); GameRegistry.registerItem(StorageCraftItems.STORAGE_CELL, "storageCell");
GameRegistry.registerItem(StorageCraftItems.WIRELESS_GRID, "wirelessGrid"); GameRegistry.registerItem(StorageCraftItems.WIRELESS_GRID, "wirelessGrid");
@@ -141,7 +144,7 @@ public class CommonProxy
new ItemStack(Items.quartz) new ItemStack(Items.quartz)
); );
// Constroller // Controller
GameRegistry.addRecipe(new ItemStack(StorageCraftBlocks.CONTROLLER), GameRegistry.addRecipe(new ItemStack(StorageCraftBlocks.CONTROLLER),
"EDE", "EDE",
"SRS", "SRS",
@@ -259,6 +262,18 @@ public class CommonProxy
'I', new ItemStack(StorageCraftItems.PROCESSOR, 1, ItemProcessor.TYPE_IMPROVED) 'I', new ItemStack(StorageCraftItems.PROCESSOR, 1, ItemProcessor.TYPE_IMPROVED)
); );
// Constructor
GameRegistry.addShapedRecipe(new ItemStack(StorageCraftBlocks.CONSTRUCTOR),
"ECE",
"RMR",
"EIE",
'E', new ItemStack(StorageCraftItems.QUARTZ_ENRICHED_IRON),
'C', new ItemStack(StorageCraftItems.CORE, 1, ItemCore.TYPE_CONSTRUCTION),
'R', new ItemStack(Items.redstone),
'M', new ItemStack(StorageCraftBlocks.MACHINE_CASING),
'I', new ItemStack(StorageCraftItems.PROCESSOR, 1, ItemProcessor.TYPE_IMPROVED)
);
// Detector // Detector
GameRegistry.addRecipe(new ItemStack(StorageCraftBlocks.DETECTOR), GameRegistry.addRecipe(new ItemStack(StorageCraftBlocks.DETECTOR),
"ECE", "ECE",

View File

@@ -0,0 +1,174 @@
package storagecraft.tile;
import io.netty.buffer.ByteBuf;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.IInventory;
import net.minecraft.inventory.ISidedInventory;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import storagecraft.inventory.InventorySimple;
import storagecraft.util.InventoryUtils;
public class TileConstructor extends TileMachine implements IInventory, ISidedInventory, ICompareSetting
{
public static final String NBT_COMPARE = "Compare";
private InventorySimple inventory = new InventorySimple("constructor", 1);
private int compare = 0;
@Override
public int getEnergyUsage()
{
return 1;
}
@Override
public void updateMachine()
{
// @TODO: ...
}
@Override
public int getCompare()
{
return compare;
}
@Override
public void setCompare(int compare)
{
this.compare = compare;
}
@Override
public int getSizeInventory()
{
return inventory.getSizeInventory();
}
@Override
public ItemStack getStackInSlot(int slot)
{
return inventory.getStackInSlot(slot);
}
@Override
public ItemStack decrStackSize(int slot, int amount)
{
return inventory.decrStackSize(slot, amount);
}
@Override
public ItemStack getStackInSlotOnClosing(int slot)
{
return inventory.getStackInSlotOnClosing(slot);
}
@Override
public void setInventorySlotContents(int slot, ItemStack stack)
{
inventory.setInventorySlotContents(slot, stack);
}
@Override
public String getInventoryName()
{
return inventory.getInventoryName();
}
@Override
public boolean hasCustomInventoryName()
{
return inventory.hasCustomInventoryName();
}
@Override
public int getInventoryStackLimit()
{
return inventory.getInventoryStackLimit();
}
@Override
public boolean isUseableByPlayer(EntityPlayer player)
{
return inventory.isUseableByPlayer(player);
}
@Override
public void openInventory()
{
inventory.openInventory();
}
@Override
public void closeInventory()
{
inventory.closeInventory();
}
@Override
public boolean isItemValidForSlot(int slot, ItemStack stack)
{
return inventory.isItemValidForSlot(slot, stack);
}
@Override
public int[] getAccessibleSlotsFromSide(int side)
{
return new int[]
{
};
}
@Override
public boolean canInsertItem(int slot, ItemStack stack, int side)
{
return false;
}
@Override
public boolean canExtractItem(int slot, ItemStack stack, int side)
{
return false;
}
@Override
public void readFromNBT(NBTTagCompound nbt)
{
super.readFromNBT(nbt);
if (nbt.hasKey(NBT_COMPARE))
{
compare = nbt.getInteger(NBT_COMPARE);
}
InventoryUtils.restoreInventory(this, nbt);
}
@Override
public void writeToNBT(NBTTagCompound nbt)
{
super.writeToNBT(nbt);
nbt.setInteger(NBT_COMPARE, compare);
InventoryUtils.saveInventory(this, nbt);
}
@Override
public void fromBytes(ByteBuf buf)
{
super.fromBytes(buf);
compare = buf.readInt();
}
@Override
public void toBytes(ByteBuf buf)
{
super.toBytes(buf);
buf.writeInt(compare);
}
}

View File

@@ -10,6 +10,7 @@ gui.storagecraft:detector=Detector
gui.storagecraft:solderer=Solderer gui.storagecraft:solderer=Solderer
gui.storagecraft:wirelessTransmitter=Wireless Transmitter gui.storagecraft:wirelessTransmitter=Wireless Transmitter
gui.storagecraft:destructor=Destructor gui.storagecraft:destructor=Destructor
gui.storagecraft:constructor=Constructor
misc.storagecraft:energyStored=%d / %d RF misc.storagecraft:energyStored=%d / %d RF
misc.storagecraft:energyUsage=Usage: %d RF/t misc.storagecraft:energyUsage=Usage: %d RF/t
@@ -69,6 +70,7 @@ block.storagecraft:machineCasing.name=Machine Casing
block.storagecraft:solderer.name=Solderer block.storagecraft:solderer.name=Solderer
block.storagecraft:wirelessTransmitter.name=Wireless Transmitter block.storagecraft:wirelessTransmitter.name=Wireless Transmitter
block.storagecraft:destructor.name=Destructor block.storagecraft:destructor.name=Destructor
block.storagecraft:constructor.name=Constructor
item.storagecraft:storageCell.0.name=1k Storage Cell item.storagecraft:storageCell.0.name=1k Storage Cell
item.storagecraft:storageCell.1.name=4k Storage Cell item.storagecraft:storageCell.1.name=4k Storage Cell

Binary file not shown.

After

Width:  |  Height:  |  Size: 338 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 338 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB