Crafter block

This commit is contained in:
Raoul Van den Berge
2016-04-28 22:07:02 +02:00
parent ca6049a859
commit f861b776e2
15 changed files with 336 additions and 0 deletions

View File

@@ -20,4 +20,5 @@ public final class RefinedStorageBlocks {
public static final BlockInterface INTERFACE = new BlockInterface();
public static final BlockCraftingMonitor CRAFTING_MONITOR = new BlockCraftingMonitor();
public static final BlockWirelessTransmitter WIRELESS_TRANSMITTER = new BlockWirelessTransmitter();
public static final BlockCrafter CRAFTER = new BlockCrafter();
}

View File

@@ -16,4 +16,5 @@ public final class RefinedStorageGui {
public static final int WIRELESS_GRID = 14;
public static final int CRAFTING_MONITOR = 15;
public static final int WIRELESS_TRANSMITTER = 16;
public static final int CRAFTER = 17;
}

View File

@@ -0,0 +1,33 @@
package refinedstorage.block;
import net.minecraft.block.state.IBlockState;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.EnumHand;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
import refinedstorage.RefinedStorage;
import refinedstorage.RefinedStorageGui;
import refinedstorage.tile.TileCrafter;
public class BlockCrafter extends BlockMachine {
public BlockCrafter() {
super("crafter");
}
@Override
public TileEntity createTileEntity(World world, IBlockState state) {
return new TileCrafter();
}
@Override
public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, ItemStack heldItem, EnumFacing side, float hitX, float hitY, float hitZ) {
if (!world.isRemote) {
player.openGui(RefinedStorage.INSTANCE, RefinedStorageGui.CRAFTER, world, pos.getX(), pos.getY(), pos.getZ());
}
return true;
}
}

View File

@@ -0,0 +1,73 @@
package refinedstorage.container;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.Slot;
import net.minecraft.item.ItemStack;
import refinedstorage.RefinedStorageItems;
import refinedstorage.container.slot.IItemValidator;
import refinedstorage.container.slot.SlotFiltered;
import refinedstorage.item.ItemPattern;
import refinedstorage.item.ItemUpgrade;
import refinedstorage.tile.TileCrafter;
public class ContainerCrafter extends ContainerStorage {
public ContainerCrafter(EntityPlayer player, TileCrafter crafter) {
super(player);
for (int i = 0; i < 3; ++i) {
addSlotToContainer(new SlotFiltered(crafter, i, 8, 19 + (i * 18), new IItemValidator() {
@Override
public boolean isValid(ItemStack stack) {
return stack.getItem() == RefinedStorageItems.PATTERN && ItemPattern.hasResult(stack);
}
}));
}
for (int i = 3; i < 6; ++i) {
addSlotToContainer(new SlotFiltered(crafter, i, 89, 19 + ((i - 3) * 18), new IItemValidator() {
@Override
public boolean isValid(ItemStack stack) {
return stack.getItem() == RefinedStorageItems.PATTERN && ItemPattern.hasResult(stack);
}
}));
}
for (int i = 0; i < 4; ++i) {
addSlotToContainer(new SlotFiltered(crafter, 6 + i, 187, 6 + (i * 18), new IItemValidator() {
@Override
public boolean isValid(ItemStack stack) {
return stack.getItem() == RefinedStorageItems.UPGRADE && stack.getMetadata() == ItemUpgrade.TYPE_SPEED;
}
}));
}
addPlayerInventory(8, 90);
}
@Override
public ItemStack transferStackInSlot(EntityPlayer player, int index) {
ItemStack stack = null;
Slot slot = getSlot(index);
if (slot != null && slot.getHasStack()) {
stack = slot.getStack().copy();
if (index < 8) {
if (!mergeItemStack(stack, 6, inventorySlots.size(), true)) {
return null;
}
} else if (!mergeItemStack(stack, 0, 6, false)) {
return null;
}
if (stack.stackSize == 0) {
slot.putStack(null);
} else {
slot.onSlotChanged();
}
}
return stack;
}
}

View File

@@ -0,0 +1,37 @@
package refinedstorage.gui;
import refinedstorage.container.ContainerCrafter;
import refinedstorage.gui.sidebutton.SideButtonRedstoneMode;
import refinedstorage.tile.TileCrafter;
public class GuiCrafter extends GuiBase {
private TileCrafter crafter;
public GuiCrafter(ContainerCrafter container, TileCrafter crafter) {
super(container, 211, 173);
this.crafter = crafter;
}
@Override
public void init(int x, int y) {
addSideButton(new SideButtonRedstoneMode(crafter));
}
@Override
public void update(int x, int y) {
}
@Override
public void drawBackground(int x, int y, int mouseX, int mouseY) {
bindTexture("gui/crafter.png");
drawTexture(x, y, 0, 0, width, height);
}
@Override
public void drawForeground(int mouseX, int mouseY) {
drawString(7, 7, t("gui.refinedstorage:crafter"));
drawString(7, 77, t("container.inventory"));
}
}

View File

@@ -46,6 +46,8 @@ public class GuiHandler implements IGuiHandler {
return new ContainerCraftingMonitor(player);
case RefinedStorageGui.WIRELESS_TRANSMITTER:
return new ContainerWirelessTransmitter(player, (TileWirelessTransmitter) tile);
case RefinedStorageGui.CRAFTER:
return new ContainerCrafter(player, (TileCrafter) tile);
default:
return null;
}
@@ -111,6 +113,8 @@ public class GuiHandler implements IGuiHandler {
return new GuiCraftingMonitor((ContainerCraftingMonitor) getContainer(ID, player, tile), (TileCraftingMonitor) tile);
case RefinedStorageGui.WIRELESS_TRANSMITTER:
return new GuiWirelessTransmitter((ContainerWirelessTransmitter) getContainer(ID, player, tile), (TileWirelessTransmitter) tile);
case RefinedStorageGui.CRAFTER:
return new GuiCrafter((ContainerCrafter) getContainer(ID, player, tile), (TileCrafter) tile);
default:
return null;
}

View File

@@ -111,6 +111,7 @@ public class ClientProxy extends CommonProxy {
ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(RefinedStorageBlocks.INTERFACE), 0, new ModelResourceLocation("refinedstorage:interface", "inventory"));
ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(RefinedStorageBlocks.WIRELESS_TRANSMITTER), 0, new ModelResourceLocation("refinedstorage:wireless_transmitter", "inventory"));
ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(RefinedStorageBlocks.CRAFTING_MONITOR), 0, new ModelResourceLocation("refinedstorage:crafting_monitor", "inventory"));
ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(RefinedStorageBlocks.CRAFTER), 0, new ModelResourceLocation("refinedstorage:crafter", "inventory"));
ModelLoader.setCustomStateMapper(RefinedStorageBlocks.STORAGE, (new StateMap.Builder())
.ignore(RefinedStorageBlocks.STORAGE.DIRECTION)

View File

@@ -68,6 +68,7 @@ public class CommonProxy {
GameRegistry.registerTileEntity(TileInterface.class, ID + ":interface");
GameRegistry.registerTileEntity(TileCraftingMonitor.class, ID + ":crafting_monitor");
GameRegistry.registerTileEntity(TileWirelessTransmitter.class, ID + ":wireless_transmitter");
GameRegistry.registerTileEntity(TileCrafter.class, ID + ":crafter");
registerBlock(RefinedStorageBlocks.CONTROLLER);
registerBlock(RefinedStorageBlocks.CABLE);
@@ -86,6 +87,7 @@ public class CommonProxy {
registerBlock(RefinedStorageBlocks.INTERFACE);
registerBlock(RefinedStorageBlocks.CRAFTING_MONITOR);
registerBlock(RefinedStorageBlocks.WIRELESS_TRANSMITTER);
registerBlock(RefinedStorageBlocks.CRAFTER);
registerItem(RefinedStorageItems.STORAGE_DISK);
registerItem(RefinedStorageItems.PATTERN);

View File

@@ -243,6 +243,22 @@ public class TileController extends TileBase implements IEnergyReceiver, INetwor
public List<ItemStack> getPatterns() {
List<ItemStack> patterns = new ArrayList<ItemStack>();
Iterator<TileMachine> it = machines.iterator();
while (it.hasNext()) {
TileMachine machine = it.next();
if (machine instanceof TileCrafter) {
TileCrafter crafter = (TileCrafter) machine;
for (int i = 0; i < TileCrafter.PATTERN_SLOTS; ++i) {
if (crafter.getStackInSlot(i) != null) {
patterns.add(crafter.getStackInSlot(i));
}
}
}
}
return patterns;
}

View File

@@ -0,0 +1,119 @@
package refinedstorage.tile;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.Container;
import net.minecraft.inventory.IInventory;
import net.minecraft.item.ItemStack;
import net.minecraft.util.text.ITextComponent;
import refinedstorage.container.ContainerCrafter;
import refinedstorage.inventory.InventorySimple;
public class TileCrafter extends TileMachine implements IInventory {
private InventorySimple inventory = new InventorySimple("crafter", PATTERN_SLOTS + 4, this);
public static final int PATTERN_SLOTS = 6;
@Override
public int getEnergyUsage() {
return 2;
}
@Override
public void updateMachine() {
}
@Override
public Class<? extends Container> getContainer() {
return ContainerCrafter.class;
}
@Override
public int getSizeInventory() {
return inventory.getSizeInventory();
}
@Override
public ItemStack getStackInSlot(int slot) {
return inventory.getStackInSlot(slot);
}
@Override
public ItemStack decrStackSize(int slot, int count) {
return inventory.decrStackSize(slot, count);
}
@Override
public ItemStack removeStackFromSlot(int slot) {
return inventory.removeStackFromSlot(slot);
}
@Override
public void setInventorySlotContents(int slot, ItemStack stack) {
inventory.setInventorySlotContents(slot, stack);
}
@Override
public int getInventoryStackLimit() {
return inventory.getInventoryStackLimit();
}
@Override
public boolean isUseableByPlayer(EntityPlayer player) {
return inventory.isUseableByPlayer(player);
}
@Override
public void openInventory(EntityPlayer player) {
inventory.openInventory(player);
}
@Override
public void closeInventory(EntityPlayer player) {
inventory.closeInventory(player);
}
@Override
public boolean isItemValidForSlot(int slot, ItemStack stack) {
return inventory.isItemValidForSlot(slot, stack);
}
@Override
public int getField(int id) {
return inventory.getField(id);
}
@Override
public void setField(int id, int value) {
inventory.setField(id, value);
}
@Override
public int getFieldCount() {
return inventory.getFieldCount();
}
@Override
public void clear() {
inventory.clear();
}
@Override
public boolean hasCustomName() {
return inventory.hasCustomName();
}
@Override
public ITextComponent getDisplayName() {
return inventory.getDisplayName();
}
@Override
public String getName() {
return inventory.getName();
}
@Override
public IInventory getDroppedInventory() {
return inventory;
}
}

View File

@@ -0,0 +1,45 @@
{
"forge_marker": 1,
"defaults": {
"model": "orientable",
"textures": {
"side": "refinedstorage:blocks/side",
"top": "refinedstorage:blocks/side",
"front": "refinedstorage:blocks/crafter"
}
},
"variants": {
"inventory": [
{
"transform": "forge:default-block",
"y": 0
}
],
"connected": {
"true": {
},
"false": {
}
},
"direction": {
"north": {
"y": 0
},
"east": {
"y": 90
},
"south": {
"y": 180
},
"west": {
"y": 270
},
"up": {
"x": 270
},
"down": {
"x": 90
}
}
}
}

View File

@@ -23,6 +23,7 @@ gui.refinedstorage:interface.export=Interface Export
gui.refinedstorage:crafting_monitor=Crafting Monitor
gui.refinedstorage:wireless_transmitter=Wireless Transmitter
gui.refinedstorage:wireless_transmitter.distance=%d blocks
gui.refinedstorage:crafter=Crafter
misc.refinedstorage:energy_stored=%d / %d RF
misc.refinedstorage:energy_usage=Usage: %d RF/t
@@ -97,6 +98,7 @@ block.refinedstorage:relay.name=Relay
block.refinedstorage:interface.name=Interface
block.refinedstorage:crafting_monitor.name=Crafting Monitor
block.refinedstorage:wireless_transmitter.name=Wireless Transmitter
block.refinedstorage:crafter.name=Crafter
item.refinedstorage:storage_disk.0.name=1k Storage Disk
item.refinedstorage:storage_disk.1.name=4k Storage Disk

View File

@@ -23,6 +23,7 @@ gui.refinedstorage:interface.export=Interface Export
gui.refinedstorage:crafting_monitor=Crafting Monitor
gui.refinedstorage:wireless_transmitter=Draadloze Zender
gui.refinedstorage:wireless_transmitter.distance=%d blokken
gui.refinedstorage:crafter=Crafter
misc.refinedstorage:energy_stored=%d / %d RF
misc.refinedstorage:energy_usage=Vebruik: %d RF/t
@@ -97,6 +98,7 @@ block.refinedstorage:relay.name=Relais
block.refinedstorage:interface.name=Interface
block.refinedstorage:crafting_monitor.name=Crafting Monitor
block.refinedstorage:wireless_transmitter.name=Draadloze Zender
block.refinedstorage:crafter.name=Crafter
item.refinedstorage:storage_disk.0.name=1k Opslagschijf
item.refinedstorage:storage_disk.1.name=4k Opslagschijf

Binary file not shown.

After

Width:  |  Height:  |  Size: 221 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB