Implement network transmitter GUI and network card logic
This commit is contained in:
@@ -19,4 +19,5 @@ public final class RefinedStorageGui {
|
||||
public static final int CRAFTER = 15;
|
||||
public static final int PROCESSING_PATTERN_ENCODER = 16;
|
||||
public static final int GRID_FILTER = 17;
|
||||
public static final int NETWORK_TRANSMITTER = 18;
|
||||
}
|
||||
|
@@ -5,7 +5,7 @@ import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.world.World;
|
||||
import refinedstorage.tile.TileNetworkReceiver;
|
||||
|
||||
public class BlockNetworkReceiver extends BlockBase {
|
||||
public class BlockNetworkReceiver extends BlockNode {
|
||||
public BlockNetworkReceiver() {
|
||||
super("network_receiver");
|
||||
}
|
||||
|
@@ -1,8 +1,15 @@
|
||||
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.TileNetworkTransmitter;
|
||||
|
||||
public class BlockNetworkTransmitter extends BlockNode {
|
||||
@@ -10,6 +17,15 @@ public class BlockNetworkTransmitter extends BlockNode {
|
||||
super("network_transmitter");
|
||||
}
|
||||
|
||||
@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.NETWORK_TRANSMITTER, world, pos.getX(), pos.getY(), pos.getZ());
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public TileEntity createTileEntity(World world, IBlockState state) {
|
||||
return new TileNetworkTransmitter();
|
||||
|
16
src/main/java/refinedstorage/container/ContainerNetworkTransmitter.java
Executable file
16
src/main/java/refinedstorage/container/ContainerNetworkTransmitter.java
Executable file
@@ -0,0 +1,16 @@
|
||||
package refinedstorage.container;
|
||||
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraftforge.items.SlotItemHandler;
|
||||
import refinedstorage.tile.TileNetworkTransmitter;
|
||||
|
||||
public class ContainerNetworkTransmitter extends ContainerBase {
|
||||
public ContainerNetworkTransmitter(EntityPlayer player, TileNetworkTransmitter networkTransmitter) {
|
||||
super(player);
|
||||
|
||||
addSlotToContainer(new SlotItemHandler(networkTransmitter.getNetworkCard(), 0, 8, 20));
|
||||
addSlotToContainer(new SlotItemHandler(networkTransmitter.getUpgrade(), 0, 187, 6));
|
||||
|
||||
addPlayerInventory(8, 55);
|
||||
}
|
||||
}
|
@@ -50,6 +50,8 @@ public class GuiHandler implements IGuiHandler {
|
||||
return new ContainerCrafter(player, (TileCrafter) tile);
|
||||
case RefinedStorageGui.PROCESSING_PATTERN_ENCODER:
|
||||
return new ContainerProcessingPatternEncoder(player, (TileProcessingPatternEncoder) tile);
|
||||
case RefinedStorageGui.NETWORK_TRANSMITTER:
|
||||
return new ContainerNetworkTransmitter(player, (TileNetworkTransmitter) tile);
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
@@ -107,6 +109,8 @@ public class GuiHandler implements IGuiHandler {
|
||||
return new GuiProcessingPatternEncoder((ContainerProcessingPatternEncoder) getContainer(ID, player, tile), (TileProcessingPatternEncoder) tile);
|
||||
case RefinedStorageGui.GRID_FILTER:
|
||||
return new GuiGridFilter(getGridFilterContainer(player, x));
|
||||
case RefinedStorageGui.NETWORK_TRANSMITTER:
|
||||
return new GuiNetworkTransmitter((ContainerNetworkTransmitter) getContainer(ID, player, tile), (TileNetworkTransmitter) tile);
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
|
47
src/main/java/refinedstorage/gui/GuiNetworkTransmitter.java
Executable file
47
src/main/java/refinedstorage/gui/GuiNetworkTransmitter.java
Executable file
@@ -0,0 +1,47 @@
|
||||
package refinedstorage.gui;
|
||||
|
||||
import refinedstorage.container.ContainerNetworkTransmitter;
|
||||
import refinedstorage.gui.sidebutton.SideButtonRedstoneMode;
|
||||
import refinedstorage.tile.TileNetworkTransmitter;
|
||||
|
||||
public class GuiNetworkTransmitter extends GuiBase {
|
||||
private TileNetworkTransmitter networkTransmitter;
|
||||
|
||||
public GuiNetworkTransmitter(ContainerNetworkTransmitter container, TileNetworkTransmitter networkTransmitter) {
|
||||
super(container, 211, 137);
|
||||
|
||||
this.networkTransmitter = networkTransmitter;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void init(int x, int y) {
|
||||
addSideButton(new SideButtonRedstoneMode(networkTransmitter));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void update(int x, int y) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void drawBackground(int x, int y, int mouseX, int mouseY) {
|
||||
bindTexture("gui/network_transmitter.png");
|
||||
|
||||
drawTexture(x, y, 0, 0, width, height);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void drawForeground(int mouseX, int mouseY) {
|
||||
drawString(7, 7, t("gui.refinedstorage:network_transmitter"));
|
||||
|
||||
String distance;
|
||||
|
||||
if (networkTransmitter.getReceiver() == null) {
|
||||
distance = t("gui.refinedstorage:network_transmitter.distance_missing");
|
||||
} else {
|
||||
distance = t("gui.refinedstorage:network_transmitter.distance", networkTransmitter.getDistance());
|
||||
}
|
||||
|
||||
drawString(50, 24, distance);
|
||||
drawString(7, 42, t("container.inventory"));
|
||||
}
|
||||
}
|
@@ -1,7 +1,69 @@
|
||||
package refinedstorage.item;
|
||||
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.client.resources.I18n;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.util.EnumActionResult;
|
||||
import net.minecraft.util.EnumFacing;
|
||||
import net.minecraft.util.EnumHand;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.world.World;
|
||||
import refinedstorage.RefinedStorageBlocks;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class ItemNetworkCard extends ItemBase {
|
||||
private static final String NBT_RECEIVER_X = "ReceiverX";
|
||||
private static final String NBT_RECEIVER_Y = "ReceiverY";
|
||||
private static final String NBT_RECEIVER_Z = "ReceiverZ";
|
||||
|
||||
public ItemNetworkCard() {
|
||||
super("network_card");
|
||||
}
|
||||
|
||||
@Override
|
||||
public EnumActionResult onItemUse(ItemStack stack, EntityPlayer player, World world, BlockPos pos, EnumHand hand, EnumFacing facing, float hitX, float hitY, float hitZ) {
|
||||
Block block = world.getBlockState(pos).getBlock();
|
||||
|
||||
if (block == RefinedStorageBlocks.NETWORK_RECEIVER) {
|
||||
setReceiver(stack, pos);
|
||||
|
||||
return EnumActionResult.SUCCESS;
|
||||
}
|
||||
|
||||
return EnumActionResult.PASS;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addInformation(ItemStack stack, EntityPlayer player, List<String> tooltip, boolean advanced) {
|
||||
super.addInformation(stack, player, tooltip, advanced);
|
||||
|
||||
BlockPos pos = getReceiver(stack);
|
||||
|
||||
if (pos != null) {
|
||||
tooltip.add(I18n.format("misc.refinedstorage:network_card.tooltip.0", pos.getX()));
|
||||
tooltip.add(I18n.format("misc.refinedstorage:network_card.tooltip.1", pos.getY()));
|
||||
tooltip.add(I18n.format("misc.refinedstorage:network_card.tooltip.2", pos.getZ()));
|
||||
}
|
||||
}
|
||||
|
||||
public static BlockPos getReceiver(ItemStack stack) {
|
||||
if (stack.hasTagCompound() && stack.getTagCompound().hasKey(NBT_RECEIVER_X) && stack.getTagCompound().hasKey(NBT_RECEIVER_Y) && stack.getTagCompound().hasKey(NBT_RECEIVER_Z)) {
|
||||
return new BlockPos(stack.getTagCompound().getInteger(NBT_RECEIVER_X), stack.getTagCompound().getInteger(NBT_RECEIVER_Y), stack.getTagCompound().getInteger(NBT_RECEIVER_Z));
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public static void setReceiver(ItemStack stack, BlockPos pos) {
|
||||
NBTTagCompound tag = new NBTTagCompound();
|
||||
|
||||
tag.setInteger(NBT_RECEIVER_X, pos.getX());
|
||||
tag.setInteger(NBT_RECEIVER_Y, pos.getY());
|
||||
tag.setInteger(NBT_RECEIVER_Z, pos.getZ());
|
||||
|
||||
stack.setTagCompound(tag);
|
||||
}
|
||||
}
|
||||
|
@@ -1,12 +1,79 @@
|
||||
package refinedstorage.tile;
|
||||
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import net.minecraft.inventory.Container;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import refinedstorage.RefinedStorageItems;
|
||||
import refinedstorage.container.ContainerNetworkTransmitter;
|
||||
import refinedstorage.inventory.ItemHandlerBasic;
|
||||
import refinedstorage.inventory.ItemValidatorBasic;
|
||||
import refinedstorage.item.ItemNetworkCard;
|
||||
|
||||
public class TileNetworkTransmitter extends TileNode {
|
||||
private ItemHandlerBasic networkCard = new ItemHandlerBasic(1, this, new ItemValidatorBasic(RefinedStorageItems.NETWORK_CARD)) {
|
||||
@Override
|
||||
protected void onContentsChanged(int slot) {
|
||||
super.onContentsChanged(slot);
|
||||
|
||||
ItemStack card = getStackInSlot(slot);
|
||||
|
||||
if (card == null) {
|
||||
receiver = null;
|
||||
} else {
|
||||
receiver = ItemNetworkCard.getReceiver(card);
|
||||
}
|
||||
}
|
||||
};
|
||||
private ItemHandlerBasic upgrade = new ItemHandlerBasic(1, this);
|
||||
|
||||
private BlockPos receiver;
|
||||
|
||||
@Override
|
||||
public void updateNode() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public NBTTagCompound write(NBTTagCompound tag) {
|
||||
super.write(tag);
|
||||
|
||||
writeItems(networkCard, 0, tag);
|
||||
writeItems(upgrade, 1, tag);
|
||||
|
||||
return tag;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void read(NBTTagCompound tag) {
|
||||
super.read(tag);
|
||||
|
||||
readItems(networkCard, 0, tag);
|
||||
readItems(upgrade, 1, tag);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void writeContainerData(ByteBuf buf) {
|
||||
super.writeContainerData(buf);
|
||||
|
||||
buf.writeBoolean(receiver != null);
|
||||
|
||||
if (receiver != null) {
|
||||
buf.writeLong(receiver.toLong());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void readContainerData(ByteBuf buf) {
|
||||
super.readContainerData(buf);
|
||||
|
||||
if (buf.readBoolean()) {
|
||||
receiver = BlockPos.fromLong(buf.readLong());
|
||||
} else {
|
||||
receiver = null;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getEnergyUsage() {
|
||||
return 0;
|
||||
@@ -14,6 +81,26 @@ public class TileNetworkTransmitter extends TileNode {
|
||||
|
||||
@Override
|
||||
public Class<? extends Container> getContainer() {
|
||||
return null;
|
||||
return ContainerNetworkTransmitter.class;
|
||||
}
|
||||
|
||||
public ItemHandlerBasic getUpgrade() {
|
||||
return upgrade;
|
||||
}
|
||||
|
||||
public ItemHandlerBasic getNetworkCard() {
|
||||
return networkCard;
|
||||
}
|
||||
|
||||
public BlockPos getReceiver() {
|
||||
return receiver;
|
||||
}
|
||||
|
||||
public int getDistance() {
|
||||
if (receiver == null) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
return (int) Math.sqrt(Math.pow(pos.getX() - receiver.getX(), 2) + Math.pow(pos.getY() - receiver.getY(), 2) + Math.pow(pos.getZ() - receiver.getZ(), 2));
|
||||
}
|
||||
}
|
||||
|
@@ -31,6 +31,9 @@ gui.refinedstorage:crafter.processing=Processing
|
||||
gui.refinedstorage:processing_pattern_encoder=Processing Pattern Encoder
|
||||
gui.refinedstorage:processing_pattern_encoder.pattern_create=Create Pattern
|
||||
gui.refinedstorage:grid_filter=Grid Filter
|
||||
gui.refinedstorage:network_transmitter=Network Transmitter
|
||||
gui.refinedstorage:network_transmitter.distance=%d blocks
|
||||
gui.refinedstorage:network_transmitter.distance_missing=Missing Network Card
|
||||
|
||||
misc.refinedstorage:energy_stored=%d / %d RS
|
||||
misc.refinedstorage:energy_usage=Usage: %d RS/t
|
||||
@@ -48,6 +51,10 @@ misc.refinedstorage:wireless_grid.tooltip.2=Z: %d
|
||||
misc.refinedstorage:wireless_grid.out_of_range=There is no Wireless Transmitter in range.
|
||||
misc.refinedstorage:wireless_grid.not_found=Controller not found.
|
||||
|
||||
misc.refinedstorage:network_card.tooltip.0=X: %d
|
||||
misc.refinedstorage:network_card.tooltip.1=Y: %d
|
||||
misc.refinedstorage:network_card.tooltip.2=Z: %d
|
||||
|
||||
misc.refinedstorage:pattern.inputs=Inputs
|
||||
misc.refinedstorage:pattern.outputs=Outputs
|
||||
|
||||
@@ -115,8 +122,8 @@ block.refinedstorage:crafting_monitor.name=Crafting Monitor
|
||||
block.refinedstorage:wireless_transmitter.name=Wireless Transmitter
|
||||
block.refinedstorage:crafter.name=Crafter
|
||||
block.refinedstorage:processing_pattern_encoder.name=Processing Pattern Encoder
|
||||
block.refinedstorage:network_receiver.name=Wireless Receiver
|
||||
block.refinedstorage:network_transmitter.name=Wireless Transmitter
|
||||
block.refinedstorage:network_receiver.name=Network Receiver
|
||||
block.refinedstorage:network_transmitter.name=Network Transmitter
|
||||
|
||||
item.refinedstorage:storage_disk.0.name=1k Storage Disk
|
||||
item.refinedstorage:storage_disk.1.name=4k Storage Disk
|
||||
|
@@ -31,6 +31,9 @@ gui.refinedstorage:crafter.processing=Verwerking
|
||||
gui.refinedstorage:processing_pattern_encoder=Verwerkingspatroon Codeerder
|
||||
gui.refinedstorage:processing_pattern_encoder.pattern_create=Patroon maken
|
||||
gui.refinedstorage:grid_filter=Rooster Filter
|
||||
gui.refinedstorage:network_transmitter=Netwerkzender
|
||||
gui.refinedstorage:network_transmitter.distance=%d blokken
|
||||
gui.refinedstorage:network_transmitter.distance_missing=Geen Netwerkkaart
|
||||
|
||||
misc.refinedstorage:energy_stored=%d / %d RS
|
||||
misc.refinedstorage:energy_usage=Vebruik: %d RS/t
|
||||
@@ -48,6 +51,10 @@ misc.refinedstorage:wireless_grid.tooltip.2=Z: %d
|
||||
misc.refinedstorage:wireless_grid.out_of_range=Er is geen Draadloze Zender binnen bereik.
|
||||
misc.refinedstorage:wireless_grid.not_found=Controller niet gevonden.
|
||||
|
||||
misc.refinedstorage:network_card.tooltip.0=X: %d
|
||||
misc.refinedstorage:network_card.tooltip.1=Y: %d
|
||||
misc.refinedstorage:network_card.tooltip.2=Z: %d
|
||||
|
||||
misc.refinedstorage:pattern.inputs=Inputs
|
||||
misc.refinedstorage:pattern.outputs=Outputs
|
||||
|
||||
@@ -115,8 +122,8 @@ block.refinedstorage:crafting_monitor.name=Crafting Monitor
|
||||
block.refinedstorage:wireless_transmitter.name=Draadloze Zender
|
||||
block.refinedstorage:crafter.name=Crafter
|
||||
block.refinedstorage:processing_pattern_encoder.name=Verwerkingspatroon Codeerder
|
||||
block.refinedstorage:network_receiver.name=Draadloze Networkontvanger
|
||||
block.refinedstorage:network_transmitter.name=Draadloze Netwerkzender
|
||||
block.refinedstorage:network_receiver.name=Netwerkontvanger
|
||||
block.refinedstorage:network_transmitter.name=Netwerkzender
|
||||
|
||||
item.refinedstorage:storage_disk.0.name=1k Opslagschijf
|
||||
item.refinedstorage:storage_disk.1.name=4k Opslagschijf
|
||||
|
Reference in New Issue
Block a user