Storage monitor! Renderer isn't working yet...

This commit is contained in:
raoulvdberge
2017-02-12 15:31:36 +01:00
parent db160364bb
commit c91a1abb90
14 changed files with 279 additions and 1 deletions

View File

@@ -31,4 +31,5 @@ public final class RSBlocks {
public static final BlockWriter WRITER = new BlockWriter(); public static final BlockWriter WRITER = new BlockWriter();
public static final BlockSecurityManager SECURITY_MANAGER = new BlockSecurityManager(); public static final BlockSecurityManager SECURITY_MANAGER = new BlockSecurityManager();
public static final BlockQuartzEnrichedIron QUARTZ_ENRICHED_IRON = new BlockQuartzEnrichedIron(); public static final BlockQuartzEnrichedIron QUARTZ_ENRICHED_IRON = new BlockQuartzEnrichedIron();
public static final BlockStorageMonitor STORAGE_MONITOR = new BlockStorageMonitor();
} }

View File

@@ -27,4 +27,5 @@ public final class RSGui {
public static final int WIRELESS_CRAFTING_MONITOR = 23; public static final int WIRELESS_CRAFTING_MONITOR = 23;
public static final int READER_WRITER = 24; public static final int READER_WRITER = 24;
public static final int SECURITY_MANAGER = 25; public static final int SECURITY_MANAGER = 25;
public static final int STORAGE_MONITOR = 26;
} }

View File

@@ -125,7 +125,6 @@ public class NetworkNodeImporter extends NetworkNode implements IComparable, IFi
return tag; return tag;
} }
@Override @Override
public NBTTagCompound writeConfiguration(NBTTagCompound tag) { public NBTTagCompound writeConfiguration(NBTTagCompound tag) {
super.writeConfiguration(tag); super.writeConfiguration(tag);

View File

@@ -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;
}
}

View File

@@ -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;
}
}

View File

@@ -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;
}
}

View File

@@ -72,6 +72,8 @@ public class GuiHandler implements IGuiHandler {
return new ContainerReaderWriter((IGuiReaderWriter) ((TileNode) tile).getNode(), (TileBase) tile, player); return new ContainerReaderWriter((IGuiReaderWriter) ((TileNode) tile).getNode(), (TileBase) tile, player);
case RSGui.SECURITY_MANAGER: case RSGui.SECURITY_MANAGER:
return new ContainerSecurityManager((TileSecurityManager) tile, player); return new ContainerSecurityManager((TileSecurityManager) tile, player);
case RSGui.STORAGE_MONITOR:
return new ContainerStorageMonitor((TileStorageMonitor) tile, player);
default: default:
return null; return null;
} }
@@ -150,6 +152,8 @@ public class GuiHandler implements IGuiHandler {
return new GuiReaderWriter((ContainerReaderWriter) getContainer(ID, player, tile), (IGuiReaderWriter) ((TileNode) tile).getNode()); return new GuiReaderWriter((ContainerReaderWriter) getContainer(ID, player, tile), (IGuiReaderWriter) ((TileNode) tile).getNode());
case RSGui.SECURITY_MANAGER: case RSGui.SECURITY_MANAGER:
return new GuiSecurityManager((ContainerSecurityManager) getContainer(ID, player, tile), (TileSecurityManager) tile); return new GuiSecurityManager((ContainerSecurityManager) getContainer(ID, player, tile), (TileSecurityManager) tile);
case RSGui.STORAGE_MONITOR:
return new GuiStorageMonitor((ContainerStorageMonitor) getContainer(ID, player, tile));
default: default:
return null; return null;
} }

View File

@@ -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"));
}
}

View File

@@ -12,7 +12,9 @@ import com.raoulvdberge.refinedstorage.network.MessageGridCraftingPreviewRespons
import com.raoulvdberge.refinedstorage.render.BakedModelPattern; import com.raoulvdberge.refinedstorage.render.BakedModelPattern;
import com.raoulvdberge.refinedstorage.render.ModelDiskDrive; import com.raoulvdberge.refinedstorage.render.ModelDiskDrive;
import com.raoulvdberge.refinedstorage.render.ModelDiskManipulator; import com.raoulvdberge.refinedstorage.render.ModelDiskManipulator;
import com.raoulvdberge.refinedstorage.render.TileEntitySpecialRendererStorageMonitor;
import com.raoulvdberge.refinedstorage.tile.TileController; import com.raoulvdberge.refinedstorage.tile.TileController;
import com.raoulvdberge.refinedstorage.tile.TileStorageMonitor;
import net.minecraft.block.state.IBlockState; import net.minecraft.block.state.IBlockState;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.GuiScreen; 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.ModelLoader;
import net.minecraftforge.client.model.ModelLoaderRegistry; import net.minecraftforge.client.model.ModelLoaderRegistry;
import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.fml.client.registry.ClientRegistry;
import net.minecraftforge.fml.common.FMLCommonHandler; import net.minecraftforge.fml.common.FMLCommonHandler;
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent; import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
import net.minecraftforge.fml.common.eventhandler.EventPriority; import net.minecraftforge.fml.common.eventhandler.EventPriority;
@@ -50,6 +53,9 @@ public class ProxyClient extends ProxyCommon {
MinecraftForge.EVENT_BUS.register(this); MinecraftForge.EVENT_BUS.register(this);
// TESRs
ClientRegistry.bindTileEntitySpecialRenderer(TileStorageMonitor.class, new TileEntitySpecialRendererStorageMonitor());
// Item Variants // Item Variants
ModelBakery.registerItemVariants(RSItems.STORAGE_DISK, ModelBakery.registerItemVariants(RSItems.STORAGE_DISK,
new ResourceLocation("refinedstorage:1k_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.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.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.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() { ModelLoaderRegistry.registerLoader(new ICustomModelLoader() {
@Override @Override

View File

@@ -156,6 +156,7 @@ public class ProxyCommon {
registerTile(TileSecurityManager.class, "security_manager"); registerTile(TileSecurityManager.class, "security_manager");
registerTile(TileReader.class, "reader"); registerTile(TileReader.class, "reader");
registerTile(TileWriter.class, "writer"); registerTile(TileWriter.class, "writer");
registerTile(TileStorageMonitor.class, "storage_monitor");
registerBlock(RSBlocks.CONTROLLER); registerBlock(RSBlocks.CONTROLLER);
registerBlock(RSBlocks.GRID); registerBlock(RSBlocks.GRID);
@@ -175,6 +176,7 @@ public class ProxyCommon {
registerBlock(RSBlocks.SECURITY_MANAGER); registerBlock(RSBlocks.SECURITY_MANAGER);
registerBlock(RSBlocks.READER); registerBlock(RSBlocks.READER);
registerBlock(RSBlocks.WRITER); registerBlock(RSBlocks.WRITER);
registerBlock(RSBlocks.STORAGE_MONITOR);
registerBlock(RSBlocks.DETECTOR); registerBlock(RSBlocks.DETECTOR);
registerBlock(RSBlocks.RELAY); registerBlock(RSBlocks.RELAY);

View File

@@ -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();
}
}

View File

@@ -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);
}
}

View File

@@ -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"
}
}
}

View File

@@ -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.4.tooltip=Adding or removing devices to or from the network
gui.refinedstorage:security_manager.permission.5=Security gui.refinedstorage:security_manager.permission.5=Security
gui.refinedstorage:security_manager.permission.5.tooltip=Ability to change security options 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_stored=%d / %d RS
misc.refinedstorage:energy_usage=Usage: %d RS/t misc.refinedstorage:energy_usage=Usage: %d RS/t
@@ -221,6 +222,7 @@ block.refinedstorage:reader.name=Reader
block.refinedstorage:writer.name=Writer block.refinedstorage:writer.name=Writer
block.refinedstorage:security_manager.name=Security Manager block.refinedstorage:security_manager.name=Security Manager
block.refinedstorage:quartz_enriched_iron_block.name=Block of Quartz Enriched Iron 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.0.name=1k Storage Disk
item.refinedstorage:storage_disk.1.name=4k Storage Disk item.refinedstorage:storage_disk.1.name=4k Storage Disk