Crafter block
This commit is contained in:
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
33
src/main/java/refinedstorage/block/BlockCrafter.java
Executable file
33
src/main/java/refinedstorage/block/BlockCrafter.java
Executable 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;
|
||||
}
|
||||
}
|
||||
73
src/main/java/refinedstorage/container/ContainerCrafter.java
Executable file
73
src/main/java/refinedstorage/container/ContainerCrafter.java
Executable 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;
|
||||
}
|
||||
}
|
||||
37
src/main/java/refinedstorage/gui/GuiCrafter.java
Executable file
37
src/main/java/refinedstorage/gui/GuiCrafter.java
Executable 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"));
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
119
src/main/java/refinedstorage/tile/TileCrafter.java
Executable file
119
src/main/java/refinedstorage/tile/TileCrafter.java
Executable 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;
|
||||
}
|
||||
}
|
||||
45
src/main/resources/assets/refinedstorage/blockstates/crafter.json
Executable file
45
src/main/resources/assets/refinedstorage/blockstates/crafter.json
Executable 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
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
BIN
src/main/resources/assets/refinedstorage/textures/blocks/crafter.png
Executable file
BIN
src/main/resources/assets/refinedstorage/textures/blocks/crafter.png
Executable file
Binary file not shown.
|
After Width: | Height: | Size: 221 B |
BIN
src/main/resources/assets/refinedstorage/textures/gui/crafter.png
Executable file
BIN
src/main/resources/assets/refinedstorage/textures/gui/crafter.png
Executable file
Binary file not shown.
|
After Width: | Height: | Size: 1.9 KiB |
Reference in New Issue
Block a user