Storage monitor! Renderer isn't working yet...
This commit is contained in:
@@ -31,4 +31,5 @@ public final class RSBlocks {
|
||||
public static final BlockWriter WRITER = new BlockWriter();
|
||||
public static final BlockSecurityManager SECURITY_MANAGER = new BlockSecurityManager();
|
||||
public static final BlockQuartzEnrichedIron QUARTZ_ENRICHED_IRON = new BlockQuartzEnrichedIron();
|
||||
public static final BlockStorageMonitor STORAGE_MONITOR = new BlockStorageMonitor();
|
||||
}
|
||||
@@ -27,4 +27,5 @@ public final class RSGui {
|
||||
public static final int WIRELESS_CRAFTING_MONITOR = 23;
|
||||
public static final int READER_WRITER = 24;
|
||||
public static final int SECURITY_MANAGER = 25;
|
||||
public static final int STORAGE_MONITOR = 26;
|
||||
}
|
||||
|
||||
@@ -125,7 +125,6 @@ public class NetworkNodeImporter extends NetworkNode implements IComparable, IFi
|
||||
return tag;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public NBTTagCompound writeConfiguration(NBTTagCompound tag) {
|
||||
super.writeConfiguration(tag);
|
||||
|
||||
@@ -0,0 +1,63 @@
|
||||
package com.raoulvdberge.refinedstorage.apiimpl.network.node;
|
||||
|
||||
import com.raoulvdberge.refinedstorage.api.util.IComparer;
|
||||
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerBasic;
|
||||
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerFluid;
|
||||
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerListenerNetworkNode;
|
||||
import com.raoulvdberge.refinedstorage.tile.TileStorageMonitor;
|
||||
import com.raoulvdberge.refinedstorage.tile.config.IComparable;
|
||||
import com.raoulvdberge.refinedstorage.tile.config.IType;
|
||||
import net.minecraftforge.items.IItemHandler;
|
||||
|
||||
public class NetworkNodeStorageMonitor extends NetworkNode implements IComparable, IType {
|
||||
public static final String ID = "storage_monitor";
|
||||
|
||||
private ItemHandlerBasic itemFilter = new ItemHandlerBasic(1, new ItemHandlerListenerNetworkNode(this));
|
||||
private ItemHandlerFluid fluidFilter = new ItemHandlerFluid(1, new ItemHandlerListenerNetworkNode(this));
|
||||
|
||||
private int compare = IComparer.COMPARE_NBT | IComparer.COMPARE_DAMAGE;
|
||||
private int type = IType.ITEMS;
|
||||
|
||||
public NetworkNodeStorageMonitor(INetworkNodeHolder holder) {
|
||||
super(holder);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getEnergyUsage() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getId() {
|
||||
return ID;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getCompare() {
|
||||
return compare;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setCompare(int compare) {
|
||||
this.compare = compare;
|
||||
|
||||
markDirty();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getType() {
|
||||
return holder.world().isRemote ? TileStorageMonitor.TYPE.getValue() : type;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setType(int type) {
|
||||
this.type = type;
|
||||
|
||||
markDirty();
|
||||
}
|
||||
|
||||
@Override
|
||||
public IItemHandler getFilterInventory() {
|
||||
return getType() == IType.ITEMS ? itemFilter : fluidFilter;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
package com.raoulvdberge.refinedstorage.block;
|
||||
|
||||
import com.raoulvdberge.refinedstorage.RSGui;
|
||||
import com.raoulvdberge.refinedstorage.tile.TileStorageMonitor;
|
||||
import net.minecraft.block.state.IBlockState;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
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 javax.annotation.Nullable;
|
||||
|
||||
public class BlockStorageMonitor extends BlockNode {
|
||||
public BlockStorageMonitor() {
|
||||
super("storage_monitor");
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, EnumFacing side, float hitX, float hitY, float hitZ) {
|
||||
if (!world.isRemote) {
|
||||
tryOpenNetworkGui(RSGui.STORAGE_MONITOR, player, world, pos, side);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public TileEntity createTileEntity(World world, IBlockState state) {
|
||||
return new TileStorageMonitor();
|
||||
}
|
||||
|
||||
@Override
|
||||
public EnumPlacementType getPlacementType() {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
package com.raoulvdberge.refinedstorage.container;
|
||||
|
||||
import com.raoulvdberge.refinedstorage.container.slot.SlotFilterType;
|
||||
import com.raoulvdberge.refinedstorage.tile.TileStorageMonitor;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.inventory.Slot;
|
||||
import net.minecraft.item.ItemStack;
|
||||
|
||||
public class ContainerStorageMonitor extends ContainerBase {
|
||||
public ContainerStorageMonitor(TileStorageMonitor storageMonitor, EntityPlayer player) {
|
||||
super(storageMonitor, player);
|
||||
|
||||
addSlotToContainer(new SlotFilterType(storageMonitor.getNode(), 0, 80, 20));
|
||||
|
||||
addPlayerInventory(8, 55);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack transferStackInSlot(EntityPlayer player, int index) {
|
||||
ItemStack stack = ItemStack.EMPTY;
|
||||
|
||||
Slot slot = getSlot(index);
|
||||
|
||||
if (slot.getHasStack()) {
|
||||
stack = slot.getStack();
|
||||
|
||||
if (index < 4) {
|
||||
if (!mergeItemStack(stack, 4, inventorySlots.size(), false)) {
|
||||
return ItemStack.EMPTY;
|
||||
}
|
||||
} else if (!mergeItemStack(stack, 0, 4, false)) {
|
||||
return mergeItemStackToFilters(stack, 4, 4 + 1);
|
||||
}
|
||||
|
||||
if (stack.getCount() == 0) {
|
||||
slot.putStack(ItemStack.EMPTY);
|
||||
} else {
|
||||
slot.onSlotChanged();
|
||||
}
|
||||
}
|
||||
|
||||
return stack;
|
||||
}
|
||||
}
|
||||
@@ -72,6 +72,8 @@ public class GuiHandler implements IGuiHandler {
|
||||
return new ContainerReaderWriter((IGuiReaderWriter) ((TileNode) tile).getNode(), (TileBase) tile, player);
|
||||
case RSGui.SECURITY_MANAGER:
|
||||
return new ContainerSecurityManager((TileSecurityManager) tile, player);
|
||||
case RSGui.STORAGE_MONITOR:
|
||||
return new ContainerStorageMonitor((TileStorageMonitor) tile, player);
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
@@ -150,6 +152,8 @@ public class GuiHandler implements IGuiHandler {
|
||||
return new GuiReaderWriter((ContainerReaderWriter) getContainer(ID, player, tile), (IGuiReaderWriter) ((TileNode) tile).getNode());
|
||||
case RSGui.SECURITY_MANAGER:
|
||||
return new GuiSecurityManager((ContainerSecurityManager) getContainer(ID, player, tile), (TileSecurityManager) tile);
|
||||
case RSGui.STORAGE_MONITOR:
|
||||
return new GuiStorageMonitor((ContainerStorageMonitor) getContainer(ID, player, tile));
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,39 @@
|
||||
package com.raoulvdberge.refinedstorage.gui;
|
||||
|
||||
import com.raoulvdberge.refinedstorage.api.util.IComparer;
|
||||
import com.raoulvdberge.refinedstorage.container.ContainerStorageMonitor;
|
||||
import com.raoulvdberge.refinedstorage.gui.sidebutton.SideButtonCompare;
|
||||
import com.raoulvdberge.refinedstorage.gui.sidebutton.SideButtonType;
|
||||
import com.raoulvdberge.refinedstorage.tile.TileStorageMonitor;
|
||||
|
||||
public class GuiStorageMonitor extends GuiBase {
|
||||
public GuiStorageMonitor(ContainerStorageMonitor container) {
|
||||
super(container, 211, 137);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void init(int x, int y) {
|
||||
addSideButton(new SideButtonType(this, TileStorageMonitor.TYPE));
|
||||
|
||||
addSideButton(new SideButtonCompare(this, TileStorageMonitor.COMPARE, IComparer.COMPARE_DAMAGE));
|
||||
addSideButton(new SideButtonCompare(this, TileStorageMonitor.COMPARE, IComparer.COMPARE_NBT));
|
||||
addSideButton(new SideButtonCompare(this, TileStorageMonitor.COMPARE, IComparer.COMPARE_OREDICT));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void update(int x, int y) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void drawBackground(int x, int y, int mouseX, int mouseY) {
|
||||
bindTexture("gui/storage_monitor.png");
|
||||
|
||||
drawTexture(x, y, 0, 0, screenWidth, screenHeight);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void drawForeground(int mouseX, int mouseY) {
|
||||
drawString(7, 7, t("gui.refinedstorage:storage_monitor"));
|
||||
drawString(7, 43, t("container.inventory"));
|
||||
}
|
||||
}
|
||||
@@ -12,7 +12,9 @@ import com.raoulvdberge.refinedstorage.network.MessageGridCraftingPreviewRespons
|
||||
import com.raoulvdberge.refinedstorage.render.BakedModelPattern;
|
||||
import com.raoulvdberge.refinedstorage.render.ModelDiskDrive;
|
||||
import com.raoulvdberge.refinedstorage.render.ModelDiskManipulator;
|
||||
import com.raoulvdberge.refinedstorage.render.TileEntitySpecialRendererStorageMonitor;
|
||||
import com.raoulvdberge.refinedstorage.tile.TileController;
|
||||
import com.raoulvdberge.refinedstorage.tile.TileStorageMonitor;
|
||||
import net.minecraft.block.state.IBlockState;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.gui.GuiScreen;
|
||||
@@ -36,6 +38,7 @@ import net.minecraftforge.client.model.IModel;
|
||||
import net.minecraftforge.client.model.ModelLoader;
|
||||
import net.minecraftforge.client.model.ModelLoaderRegistry;
|
||||
import net.minecraftforge.common.MinecraftForge;
|
||||
import net.minecraftforge.fml.client.registry.ClientRegistry;
|
||||
import net.minecraftforge.fml.common.FMLCommonHandler;
|
||||
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
|
||||
import net.minecraftforge.fml.common.eventhandler.EventPriority;
|
||||
@@ -50,6 +53,9 @@ public class ProxyClient extends ProxyCommon {
|
||||
|
||||
MinecraftForge.EVENT_BUS.register(this);
|
||||
|
||||
// TESRs
|
||||
ClientRegistry.bindTileEntitySpecialRenderer(TileStorageMonitor.class, new TileEntitySpecialRendererStorageMonitor());
|
||||
|
||||
// Item Variants
|
||||
ModelBakery.registerItemVariants(RSItems.STORAGE_DISK,
|
||||
new ResourceLocation("refinedstorage:1k_storage_disk"),
|
||||
@@ -201,6 +207,7 @@ public class ProxyClient extends ProxyCommon {
|
||||
ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(RSBlocks.DISK_MANIPULATOR), 0, new ModelResourceLocation("refinedstorage:disk_manipulator", "inventory"));
|
||||
ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(RSBlocks.SECURITY_MANAGER), 0, new ModelResourceLocation("refinedstorage:security_manager", "inventory"));
|
||||
ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(RSBlocks.QUARTZ_ENRICHED_IRON), 0, new ModelResourceLocation("refinedstorage:quartz_enriched_iron_block", "inventory"));
|
||||
ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(RSBlocks.STORAGE_MONITOR), 0, new ModelResourceLocation("refinedstorage:storage_monitor", "inventory"));
|
||||
|
||||
ModelLoaderRegistry.registerLoader(new ICustomModelLoader() {
|
||||
@Override
|
||||
|
||||
@@ -156,6 +156,7 @@ public class ProxyCommon {
|
||||
registerTile(TileSecurityManager.class, "security_manager");
|
||||
registerTile(TileReader.class, "reader");
|
||||
registerTile(TileWriter.class, "writer");
|
||||
registerTile(TileStorageMonitor.class, "storage_monitor");
|
||||
|
||||
registerBlock(RSBlocks.CONTROLLER);
|
||||
registerBlock(RSBlocks.GRID);
|
||||
@@ -175,6 +176,7 @@ public class ProxyCommon {
|
||||
registerBlock(RSBlocks.SECURITY_MANAGER);
|
||||
registerBlock(RSBlocks.READER);
|
||||
registerBlock(RSBlocks.WRITER);
|
||||
registerBlock(RSBlocks.STORAGE_MONITOR);
|
||||
|
||||
registerBlock(RSBlocks.DETECTOR);
|
||||
registerBlock(RSBlocks.RELAY);
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
package com.raoulvdberge.refinedstorage.render;
|
||||
|
||||
import com.raoulvdberge.refinedstorage.tile.TileStorageMonitor;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.renderer.GlStateManager;
|
||||
import net.minecraft.client.renderer.RenderHelper;
|
||||
import net.minecraft.client.renderer.block.model.IBakedModel;
|
||||
import net.minecraft.client.renderer.block.model.ItemCameraTransforms;
|
||||
import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
|
||||
import net.minecraft.init.Blocks;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraftforge.client.ForgeHooksClient;
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
public class TileEntitySpecialRendererStorageMonitor extends TileEntitySpecialRenderer<TileStorageMonitor> {
|
||||
@Override
|
||||
public void renderTileEntityAt(TileStorageMonitor tile, double x, double y, double z, float partialTicks, int destroyStage) {
|
||||
GlStateManager.pushMatrix();
|
||||
GlStateManager.translate(x, y, z);
|
||||
|
||||
GlStateManager.enableRescaleNormal();
|
||||
RenderHelper.enableStandardItemLighting();
|
||||
GlStateManager.enableAlpha();
|
||||
GlStateManager.enableLighting();
|
||||
GlStateManager.alphaFunc(GL11.GL_GREATER, 0.0F);
|
||||
GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F);
|
||||
GlStateManager.scale(0.5F, 0.5F, 0.02F);
|
||||
|
||||
IBakedModel model = Minecraft.getMinecraft().getRenderItem().getItemModelWithOverrides(new ItemStack(Blocks.DIRT), null, null);
|
||||
|
||||
model = ForgeHooksClient.handleCameraTransforms(model, ItemCameraTransforms.TransformType.GUI, false);
|
||||
|
||||
Minecraft.getMinecraft().getRenderItem().renderItem(new ItemStack(Blocks.DIRT), model);
|
||||
|
||||
GlStateManager.popMatrix();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
package com.raoulvdberge.refinedstorage.tile;
|
||||
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.network.node.NetworkNodeStorageMonitor;
|
||||
import com.raoulvdberge.refinedstorage.tile.config.IComparable;
|
||||
import com.raoulvdberge.refinedstorage.tile.config.IType;
|
||||
import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter;
|
||||
|
||||
public class TileStorageMonitor extends TileNode<NetworkNodeStorageMonitor> {
|
||||
public static final TileDataParameter<Integer> COMPARE = IComparable.createParameter();
|
||||
public static final TileDataParameter<Integer> TYPE = IType.createParameter();
|
||||
|
||||
public TileStorageMonitor() {
|
||||
dataManager.addWatchedParameter(COMPARE);
|
||||
dataManager.addWatchedParameter(TYPE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public NetworkNodeStorageMonitor createNode() {
|
||||
return new NetworkNodeStorageMonitor(this);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"forge_marker": 1,
|
||||
"defaults": {
|
||||
"model": "cube_all",
|
||||
"textures": {
|
||||
"all": "refinedstorage:blocks/machine_casing"
|
||||
}
|
||||
},
|
||||
"variants": {
|
||||
"inventory": [
|
||||
{
|
||||
"transform": "forge:default-block"
|
||||
}
|
||||
],
|
||||
"normal": {
|
||||
"model": "cube_all"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -72,6 +72,7 @@ gui.refinedstorage:security_manager.permission.4=Build
|
||||
gui.refinedstorage:security_manager.permission.4.tooltip=Adding or removing devices to or from the network
|
||||
gui.refinedstorage:security_manager.permission.5=Security
|
||||
gui.refinedstorage:security_manager.permission.5.tooltip=Ability to change security options
|
||||
gui.refinedstorage:storage_monitor=Storage Monitor
|
||||
|
||||
misc.refinedstorage:energy_stored=%d / %d RS
|
||||
misc.refinedstorage:energy_usage=Usage: %d RS/t
|
||||
@@ -221,6 +222,7 @@ block.refinedstorage:reader.name=Reader
|
||||
block.refinedstorage:writer.name=Writer
|
||||
block.refinedstorage:security_manager.name=Security Manager
|
||||
block.refinedstorage:quartz_enriched_iron_block.name=Block of Quartz Enriched Iron
|
||||
block.refinedstorage:storage_monitor.name=Storage Monitor
|
||||
|
||||
item.refinedstorage:storage_disk.0.name=1k Storage Disk
|
||||
item.refinedstorage:storage_disk.1.name=4k Storage Disk
|
||||
|
||||
Reference in New Issue
Block a user