Re-add the Storage Monitor

This commit is contained in:
raoulvdberge
2019-10-21 21:52:54 +02:00
parent 97ae03da9f
commit 40c7cfe334
22 changed files with 245 additions and 151 deletions

View File

@@ -9,8 +9,10 @@ import com.raoulvdberge.refinedstorage.render.color.PatternItemColor;
import com.raoulvdberge.refinedstorage.render.model.DiskDriveBakedModel; import com.raoulvdberge.refinedstorage.render.model.DiskDriveBakedModel;
import com.raoulvdberge.refinedstorage.render.model.FullbrightBakedModel; import com.raoulvdberge.refinedstorage.render.model.FullbrightBakedModel;
import com.raoulvdberge.refinedstorage.render.model.PatternBakedModel; import com.raoulvdberge.refinedstorage.render.model.PatternBakedModel;
import com.raoulvdberge.refinedstorage.render.tesr.StorageMonitorTileRenderer;
import com.raoulvdberge.refinedstorage.screen.*; import com.raoulvdberge.refinedstorage.screen.*;
import com.raoulvdberge.refinedstorage.screen.factory.GridScreenFactory; import com.raoulvdberge.refinedstorage.screen.factory.GridScreenFactory;
import com.raoulvdberge.refinedstorage.tile.StorageMonitorTile;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.ScreenManager; import net.minecraft.client.gui.ScreenManager;
import net.minecraft.client.gui.screen.Screen; import net.minecraft.client.gui.screen.Screen;
@@ -126,10 +128,13 @@ public class ClientSetup {
ScreenManager.registerFactory(RSContainers.INTERFACE, InterfaceScreen::new); ScreenManager.registerFactory(RSContainers.INTERFACE, InterfaceScreen::new);
ScreenManager.registerFactory(RSContainers.FLUID_INTERFACE, FluidInterfaceScreen::new); ScreenManager.registerFactory(RSContainers.FLUID_INTERFACE, FluidInterfaceScreen::new);
ScreenManager.registerFactory(RSContainers.WIRELESS_TRANSMITTER, WirelessTransmitterScreen::new); ScreenManager.registerFactory(RSContainers.WIRELESS_TRANSMITTER, WirelessTransmitterScreen::new);
ScreenManager.registerFactory(RSContainers.STORAGE_MONITOR, StorageMonitorScreen::new);
ClientRegistry.registerKeyBinding(RSKeyBindings.FOCUS_SEARCH_BAR); ClientRegistry.registerKeyBinding(RSKeyBindings.FOCUS_SEARCH_BAR);
ClientRegistry.registerKeyBinding(RSKeyBindings.CLEAR_GRID_CRAFTING_MATRIX); ClientRegistry.registerKeyBinding(RSKeyBindings.CLEAR_GRID_CRAFTING_MATRIX);
ClientRegistry.bindTileEntitySpecialRenderer(StorageMonitorTile.class, new StorageMonitorTileRenderer());
e.getMinecraftSupplier().get().getItemColors().register(new PatternItemColor(), RSItems.PATTERN); e.getMinecraftSupplier().get().getItemColors().register(new PatternItemColor(), RSItems.PATTERN);
} }

View File

@@ -127,6 +127,7 @@ public final class RS {
API.instance().getNetworkNodeRegistry().add(InterfaceNetworkNode.ID, (tag, world, pos) -> readAndReturn(tag, new InterfaceNetworkNode(world, pos))); API.instance().getNetworkNodeRegistry().add(InterfaceNetworkNode.ID, (tag, world, pos) -> readAndReturn(tag, new InterfaceNetworkNode(world, pos)));
API.instance().getNetworkNodeRegistry().add(FluidInterfaceNetworkNode.ID, (tag, world, pos) -> readAndReturn(tag, new FluidInterfaceNetworkNode(world, pos))); API.instance().getNetworkNodeRegistry().add(FluidInterfaceNetworkNode.ID, (tag, world, pos) -> readAndReturn(tag, new FluidInterfaceNetworkNode(world, pos)));
API.instance().getNetworkNodeRegistry().add(WirelessTransmitterNetworkNode.ID, (tag, world, pos) -> readAndReturn(tag, new WirelessTransmitterNetworkNode(world, pos))); API.instance().getNetworkNodeRegistry().add(WirelessTransmitterNetworkNode.ID, (tag, world, pos) -> readAndReturn(tag, new WirelessTransmitterNetworkNode(world, pos)));
API.instance().getNetworkNodeRegistry().add(StorageMonitorNetworkNode.ID, (tag, world, pos) -> readAndReturn(tag, new StorageMonitorNetworkNode(world, pos)));
API.instance().getGridManager().add(GridBlockGridFactory.ID, new GridBlockGridFactory()); API.instance().getGridManager().add(GridBlockGridFactory.ID, new GridBlockGridFactory());
@@ -179,6 +180,7 @@ public final class RS {
e.getRegistry().register(new InterfaceBlock()); e.getRegistry().register(new InterfaceBlock());
e.getRegistry().register(new FluidInterfaceBlock()); e.getRegistry().register(new FluidInterfaceBlock());
e.getRegistry().register(new WirelessTransmitterBlock()); e.getRegistry().register(new WirelessTransmitterBlock());
e.getRegistry().register(new StorageMonitorBlock());
} }
@SubscribeEvent @SubscribeEvent
@@ -215,6 +217,7 @@ public final class RS {
e.getRegistry().register(registerTileDataParameters(TileEntityType.Builder.create(InterfaceTile::new, RSBlocks.INTERFACE).build(null).setRegistryName(RS.ID, "interface"))); e.getRegistry().register(registerTileDataParameters(TileEntityType.Builder.create(InterfaceTile::new, RSBlocks.INTERFACE).build(null).setRegistryName(RS.ID, "interface")));
e.getRegistry().register(registerTileDataParameters(TileEntityType.Builder.create(FluidInterfaceTile::new, RSBlocks.FLUID_INTERFACE).build(null).setRegistryName(RS.ID, "fluid_interface"))); e.getRegistry().register(registerTileDataParameters(TileEntityType.Builder.create(FluidInterfaceTile::new, RSBlocks.FLUID_INTERFACE).build(null).setRegistryName(RS.ID, "fluid_interface")));
e.getRegistry().register(registerTileDataParameters(TileEntityType.Builder.create(WirelessTransmitterTile::new, RSBlocks.WIRELESS_TRANSMITTER).build(null).setRegistryName(RS.ID, "wireless_transmitter"))); e.getRegistry().register(registerTileDataParameters(TileEntityType.Builder.create(WirelessTransmitterTile::new, RSBlocks.WIRELESS_TRANSMITTER).build(null).setRegistryName(RS.ID, "wireless_transmitter")));
e.getRegistry().register(registerTileDataParameters(TileEntityType.Builder.create(StorageMonitorTile::new, RSBlocks.STORAGE_MONITOR).build(null).setRegistryName(RS.ID, "storage_monitor")));
} }
private <T extends TileEntity> TileEntityType<T> registerTileDataParameters(TileEntityType<T> t) { private <T extends TileEntity> TileEntityType<T> registerTileDataParameters(TileEntityType<T> t) {
@@ -243,6 +246,7 @@ public final class RS {
e.getRegistry().register(IForgeContainerType.create(new PositionalTileContainerFactory<InterfaceContainer, InterfaceTile>((windowId, inv, tile) -> new InterfaceContainer(tile, inv.player, windowId))).setRegistryName(RS.ID, "interface")); e.getRegistry().register(IForgeContainerType.create(new PositionalTileContainerFactory<InterfaceContainer, InterfaceTile>((windowId, inv, tile) -> new InterfaceContainer(tile, inv.player, windowId))).setRegistryName(RS.ID, "interface"));
e.getRegistry().register(IForgeContainerType.create(new PositionalTileContainerFactory<FluidInterfaceContainer, FluidInterfaceTile>((windowId, inv, tile) -> new FluidInterfaceContainer(tile, inv.player, windowId))).setRegistryName(RS.ID, "fluid_interface")); e.getRegistry().register(IForgeContainerType.create(new PositionalTileContainerFactory<FluidInterfaceContainer, FluidInterfaceTile>((windowId, inv, tile) -> new FluidInterfaceContainer(tile, inv.player, windowId))).setRegistryName(RS.ID, "fluid_interface"));
e.getRegistry().register(IForgeContainerType.create(new PositionalTileContainerFactory<WirelessTransmitterContainer, WirelessTransmitterTile>((windowId, inv, tile) -> new WirelessTransmitterContainer(tile, inv.player, windowId))).setRegistryName(RS.ID, "wireless_transmitter")); e.getRegistry().register(IForgeContainerType.create(new PositionalTileContainerFactory<WirelessTransmitterContainer, WirelessTransmitterTile>((windowId, inv, tile) -> new WirelessTransmitterContainer(tile, inv.player, windowId))).setRegistryName(RS.ID, "wireless_transmitter"));
e.getRegistry().register(IForgeContainerType.create(new PositionalTileContainerFactory<StorageMonitorContainer, StorageMonitorTile>((windowId, inv, tile) -> new StorageMonitorContainer(tile, inv.player, windowId))).setRegistryName(RS.ID, "storage_monitor"));
} }
@SubscribeEvent @SubscribeEvent
@@ -321,6 +325,7 @@ public final class RS {
e.getRegistry().register(BlockUtils.createBlockItemFor(RSBlocks.INTERFACE)); e.getRegistry().register(BlockUtils.createBlockItemFor(RSBlocks.INTERFACE));
e.getRegistry().register(BlockUtils.createBlockItemFor(RSBlocks.FLUID_INTERFACE)); e.getRegistry().register(BlockUtils.createBlockItemFor(RSBlocks.FLUID_INTERFACE));
e.getRegistry().register(new WirelessTransmitterBlockItem()); e.getRegistry().register(new WirelessTransmitterBlockItem());
e.getRegistry().register(BlockUtils.createBlockItemFor(RSBlocks.STORAGE_MONITOR));
} }
/* TODO /* TODO

View File

@@ -66,13 +66,14 @@ public final class RSBlocks {
public static final FluidInterfaceBlock FLUID_INTERFACE = null; public static final FluidInterfaceBlock FLUID_INTERFACE = null;
@ObjectHolder(RS.ID + ":wireless_transmitter") @ObjectHolder(RS.ID + ":wireless_transmitter")
public static final WirelessTransmitterBlock WIRELESS_TRANSMITTER = null; public static final WirelessTransmitterBlock WIRELESS_TRANSMITTER = null;
@ObjectHolder(RS.ID + ":storage_monitor")
public static final StorageMonitorBlock STORAGE_MONITOR = null;
public static final BlockDestructor DESTRUCTOR = new BlockDestructor(); public static final BlockDestructor DESTRUCTOR = new BlockDestructor();
public static final BlockConstructor CONSTRUCTOR = new BlockConstructor(); public static final BlockConstructor CONSTRUCTOR = new BlockConstructor();
public static final BlockCraftingMonitor CRAFTING_MONITOR = new BlockCraftingMonitor(); public static final BlockCraftingMonitor CRAFTING_MONITOR = new BlockCraftingMonitor();
public static final BlockCrafter CRAFTER = new BlockCrafter(); public static final BlockCrafter CRAFTER = new BlockCrafter();
public static final BlockDiskManipulator DISK_MANIPULATOR = new BlockDiskManipulator(); public static final BlockDiskManipulator DISK_MANIPULATOR = new BlockDiskManipulator();
public static final BlockStorageMonitor STORAGE_MONITOR = new BlockStorageMonitor();
public static final BlockPortableGrid PORTABLE_GRID = new BlockPortableGrid(); public static final BlockPortableGrid PORTABLE_GRID = new BlockPortableGrid();
public static final BlockCrafterManager CRAFTER_MANAGER = new BlockCrafterManager(); public static final BlockCrafterManager CRAFTER_MANAGER = new BlockCrafterManager();
} }

View File

@@ -37,6 +37,8 @@ public final class RSContainers {
public static final ContainerType<FluidInterfaceContainer> FLUID_INTERFACE = null; public static final ContainerType<FluidInterfaceContainer> FLUID_INTERFACE = null;
@ObjectHolder(RS.ID + ":wireless_transmitter") @ObjectHolder(RS.ID + ":wireless_transmitter")
public static final ContainerType<WirelessTransmitterContainer> WIRELESS_TRANSMITTER = null; public static final ContainerType<WirelessTransmitterContainer> WIRELESS_TRANSMITTER = null;
@ObjectHolder(RS.ID + ":storage_monitor")
public static final ContainerType<StorageMonitorContainer> STORAGE_MONITOR = null;
//@ObjectHolder(RS.ID + ":crafter") //@ObjectHolder(RS.ID + ":crafter")
public static final ContainerType<CrafterContainer> CRAFTER = null; public static final ContainerType<CrafterContainer> CRAFTER = null;
@@ -50,6 +52,4 @@ public final class RSContainers {
public static final ContainerType<ConstructorContainer> CONSTRUCTOR = null; public static final ContainerType<ConstructorContainer> CONSTRUCTOR = null;
//@ObjectHolder(RS.ID + ":disk_manipulator") //@ObjectHolder(RS.ID + ":disk_manipulator")
public static final ContainerType<DiskManipulatorContainer> DISK_MANIPULATOR = null; public static final ContainerType<DiskManipulatorContainer> DISK_MANIPULATOR = null;
//@ObjectHolder(RS.ID + ":storage_monitor")
public static final ContainerType<StorageMonitorContainer> STORAGE_MONITOR = null;
} }

View File

@@ -66,11 +66,11 @@ public class RSTiles {
public static final TileEntityType<FluidInterfaceTile> FLUID_INTERFACE = null; public static final TileEntityType<FluidInterfaceTile> FLUID_INTERFACE = null;
@ObjectHolder(RS.ID + ":wireless_transmitter") @ObjectHolder(RS.ID + ":wireless_transmitter")
public static final TileEntityType<WirelessTransmitterTile> WIRELESS_TRANSMITTER = null; public static final TileEntityType<WirelessTransmitterTile> WIRELESS_TRANSMITTER = null;
@ObjectHolder(RS.ID + ":storage_monitor")
public static final TileEntityType<StorageMonitorTile> STORAGE_MONITOR = null;
//@ObjectHolder(RS.ID + ":portable_grid") //@ObjectHolder(RS.ID + ":portable_grid")
public static final TileEntityType<TilePortableGrid> PORTABLE_GRID = null; public static final TileEntityType<TilePortableGrid> PORTABLE_GRID = null;
//@ObjectHolder(RS.ID + ":storage_monitor")
public static final TileEntityType<TileStorageMonitor> STORAGE_MONITOR = null;
//@ObjectHolder(RS.ID + ":disk_manipulator") //@ObjectHolder(RS.ID + ":disk_manipulator")
public static final TileEntityType<TileDiskManipulator> DISK_MANIPULATOR = null; public static final TileEntityType<TileDiskManipulator> DISK_MANIPULATOR = null;
//@ObjectHolder(RS.ID + ":crafter") //@ObjectHolder(RS.ID + ":crafter")

View File

@@ -24,7 +24,7 @@ import org.apache.commons.lang3.tuple.Pair;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
public class NetworkNodeStorageMonitor extends NetworkNode implements IComparable { public class StorageMonitorNetworkNode extends NetworkNode implements IComparable {
public static final int DEPOSIT_ALL_MAX_DELAY = 500; public static final int DEPOSIT_ALL_MAX_DELAY = 500;
public static final ResourceLocation ID = new ResourceLocation(RS.ID, "storage_monitor"); public static final ResourceLocation ID = new ResourceLocation(RS.ID, "storage_monitor");
@@ -45,7 +45,7 @@ public class NetworkNodeStorageMonitor extends NetworkNode implements IComparabl
private int oldAmount = -1; private int oldAmount = -1;
public NetworkNodeStorageMonitor(World world, BlockPos pos) { public StorageMonitorNetworkNode(World world, BlockPos pos) {
super(world, pos); super(world, pos);
} }
@@ -139,7 +139,7 @@ public class NetworkNodeStorageMonitor extends NetworkNode implements IComparabl
@Override @Override
public int getEnergyUsage() { public int getEnergyUsage() {
return 0; return RS.SERVER_CONFIG.getStorageMonitor().getUsage();
} }
@Override @Override

View File

@@ -1,66 +0,0 @@
package com.raoulvdberge.refinedstorage.block;
import com.raoulvdberge.refinedstorage.block.info.BlockInfoBuilder;
import com.raoulvdberge.refinedstorage.tile.TileStorageMonitor;
public class BlockStorageMonitor extends BlockNode {
public BlockStorageMonitor() {
super(BlockInfoBuilder.forId("storage_monitor").tileEntity(TileStorageMonitor::new).create());
}
/* TODO
@Override
@OnlyIn(Dist.CLIENT)
public void registerModels(IModelRegistration modelRegistration) {
modelRegistration.setModel(this, 0, new ModelResourceLocation(info.getId(), "connected=false,direction=north"));
modelRegistration.setTesr(TileStorageMonitor.class, new TileEntitySpecialRendererStorageMonitor());
}
@Override
@Nullable
public BlockDirection getDirection() {
return BlockDirection.HORIZONTAL;
}
@Override
public boolean onBlockActivated(World world, BlockPos pos, BlockState state, PlayerEntity player, EnumHand hand, Direction side, float hitX, float hitY, float hitZ) {
if (!world.isRemote) {
ItemStack held = player.inventory.getCurrentItem();
if (player.isSneaking()) {
openNetworkGui(RSGui.STORAGE_MONITOR, player, world, pos, side);
} else {
NetworkNodeStorageMonitor storageMonitor = ((TileStorageMonitor) world.getTileEntity(pos)).getNode();
if (!held.isEmpty()) {
return storageMonitor.deposit(player, held);
} else {
return storageMonitor.depositAll(player);
}
}
}
return true;
}
@Override
public void onBlockClicked(World world, BlockPos pos, PlayerEntity player) {
super.onBlockClicked(world, pos, player);
if (!world.isRemote) {
RayTraceResult rayResult = ForgeHooks.rayTraceEyes(player, player.getEntityAttribute(PlayerEntity.REACH_DISTANCE).getAttributeValue() + 1);
if (rayResult == null) {
return;
}
((TileStorageMonitor) world.getTileEntity(pos)).getNode().extract(player, rayResult.sideHit);
}
}*/
@Override
public boolean hasConnectedState() {
return true;
}
}

View File

@@ -0,0 +1,96 @@
package com.raoulvdberge.refinedstorage.block;
import com.raoulvdberge.refinedstorage.RS;
import com.raoulvdberge.refinedstorage.apiimpl.network.node.StorageMonitorNetworkNode;
import com.raoulvdberge.refinedstorage.block.info.BlockDirection;
import com.raoulvdberge.refinedstorage.container.StorageMonitorContainer;
import com.raoulvdberge.refinedstorage.container.factory.PositionalTileContainerProvider;
import com.raoulvdberge.refinedstorage.tile.StorageMonitorTile;
import com.raoulvdberge.refinedstorage.util.BlockUtils;
import com.raoulvdberge.refinedstorage.util.NetworkUtils;
import com.raoulvdberge.refinedstorage.util.WorldUtils;
import net.minecraft.block.BlockState;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.entity.player.ServerPlayerEntity;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.Hand;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.BlockRayTraceResult;
import net.minecraft.util.math.RayTraceResult;
import net.minecraft.util.text.TranslationTextComponent;
import net.minecraft.world.IBlockReader;
import net.minecraft.world.World;
import net.minecraftforge.fml.network.NetworkHooks;
import javax.annotation.Nullable;
public class StorageMonitorBlock extends NodeBlock {
public StorageMonitorBlock() {
super(BlockUtils.DEFAULT_ROCK_PROPERTIES);
this.setRegistryName(RS.ID, "storage_monitor");
}
@Override
public BlockDirection getDirection() {
return BlockDirection.HORIZONTAL;
}
@Nullable
@Override
public TileEntity createTileEntity(BlockState state, IBlockReader world) {
return new StorageMonitorTile();
}
@Override
@SuppressWarnings("deprecation")
public boolean onBlockActivated(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand handIn, BlockRayTraceResult hit) {
if (!world.isRemote) {
ItemStack held = player.inventory.getCurrentItem();
if (player.isSneaking()) {
return NetworkUtils.attemptModify(world, pos, hit.getFace(), player, () -> NetworkHooks.openGui(
(ServerPlayerEntity) player,
new PositionalTileContainerProvider<StorageMonitorTile>(
new TranslationTextComponent("gui.refinedstorage.storage_monitor"),
(tile, windowId, inventory, p) -> new StorageMonitorContainer(tile, player, windowId),
pos
),
pos
));
} else {
StorageMonitorNetworkNode storageMonitor = ((StorageMonitorTile) world.getTileEntity(pos)).getNode();
if (!held.isEmpty()) {
return storageMonitor.deposit(player, held);
} else {
return storageMonitor.depositAll(player);
}
}
}
return true;
}
@Override
@SuppressWarnings("deprecation")
public void onBlockClicked(BlockState state, World world, BlockPos pos, PlayerEntity player) {
super.onBlockClicked(state, world, pos, player);
if (!world.isRemote) {
RayTraceResult result = WorldUtils.rayTracePlayer(world, player);
if (!(result instanceof BlockRayTraceResult)) {
return;
}
((StorageMonitorTile) world.getTileEntity(pos)).getNode().extract(player, ((BlockRayTraceResult) result).getFace());
}
}
@Override
public boolean hasConnectedState() {
return true;
}
}

View File

@@ -6,6 +6,7 @@ public class ServerConfig {
private ForgeConfigSpec.Builder builder = new ForgeConfigSpec.Builder(); private ForgeConfigSpec.Builder builder = new ForgeConfigSpec.Builder();
private ForgeConfigSpec spec; private ForgeConfigSpec spec;
private Upgrades upgrades;
private Controller controller; private Controller controller;
private Cable cable; private Cable cable;
private Grid grid; private Grid grid;
@@ -23,9 +24,10 @@ public class ServerConfig {
private Interface _interface; private Interface _interface;
private FluidInterface fluidInterface; private FluidInterface fluidInterface;
private WirelessTransmitter wirelessTransmitter; private WirelessTransmitter wirelessTransmitter;
private Upgrades upgrades; private StorageMonitor storageMonitor;
public ServerConfig() { public ServerConfig() {
upgrades = new Upgrades();
controller = new Controller(); controller = new Controller();
cable = new Cable(); cable = new Cable();
grid = new Grid(); grid = new Grid();
@@ -43,11 +45,15 @@ public class ServerConfig {
_interface = new Interface(); _interface = new Interface();
fluidInterface = new FluidInterface(); fluidInterface = new FluidInterface();
wirelessTransmitter = new WirelessTransmitter(); wirelessTransmitter = new WirelessTransmitter();
upgrades = new Upgrades(); storageMonitor = new StorageMonitor();
spec = builder.build(); spec = builder.build();
} }
public Upgrades getUpgrades() {
return upgrades;
}
public Controller getController() { public Controller getController() {
return controller; return controller;
} }
@@ -60,10 +66,6 @@ public class ServerConfig {
return diskDrive; return diskDrive;
} }
public Upgrades getUpgrades() {
return upgrades;
}
public Grid getGrid() { public Grid getGrid() {
return grid; return grid;
} }
@@ -120,6 +122,10 @@ public class ServerConfig {
return wirelessTransmitter; return wirelessTransmitter;
} }
public StorageMonitor getStorageMonitor() {
return storageMonitor;
}
public ForgeConfigSpec getSpec() { public ForgeConfigSpec getSpec() {
return spec; return spec;
} }
@@ -561,4 +567,20 @@ public class ServerConfig {
return rangePerUpgrade.get(); return rangePerUpgrade.get();
} }
} }
public class StorageMonitor {
private final ForgeConfigSpec.IntValue usage;
public StorageMonitor() {
builder.push("storageMonitor");
usage = builder.comment("The energy used by the Storage Monitor").defineInRange("usage", 3, 0, Integer.MAX_VALUE);
builder.pop();
}
public int getUsage() {
return usage.get();
}
}
} }

View File

@@ -2,11 +2,11 @@ package com.raoulvdberge.refinedstorage.container;
import com.raoulvdberge.refinedstorage.RSContainers; import com.raoulvdberge.refinedstorage.RSContainers;
import com.raoulvdberge.refinedstorage.container.slot.filter.FilterSlot; import com.raoulvdberge.refinedstorage.container.slot.filter.FilterSlot;
import com.raoulvdberge.refinedstorage.tile.TileStorageMonitor; import com.raoulvdberge.refinedstorage.tile.StorageMonitorTile;
import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.player.PlayerEntity;
public class StorageMonitorContainer extends BaseContainer { public class StorageMonitorContainer extends BaseContainer {
public StorageMonitorContainer(TileStorageMonitor storageMonitor, PlayerEntity player, int windowId) { public StorageMonitorContainer(StorageMonitorTile storageMonitor, PlayerEntity player, int windowId) {
super(RSContainers.STORAGE_MONITOR, storageMonitor, player, windowId); super(RSContainers.STORAGE_MONITOR, storageMonitor, player, windowId);
addSlot(new FilterSlot(storageMonitor.getNode().getItemFilters(), 0, 80, 20)); addSlot(new FilterSlot(storageMonitor.getNode().getItemFilters(), 0, 80, 20));

View File

@@ -6,7 +6,7 @@ import com.raoulvdberge.refinedstorage.api.autocrafting.ICraftingPattern;
import com.raoulvdberge.refinedstorage.api.autocrafting.ICraftingPatternContainer; import com.raoulvdberge.refinedstorage.api.autocrafting.ICraftingPatternContainer;
import com.raoulvdberge.refinedstorage.api.autocrafting.ICraftingPatternProvider; import com.raoulvdberge.refinedstorage.api.autocrafting.ICraftingPatternProvider;
import com.raoulvdberge.refinedstorage.apiimpl.autocrafting.CraftingPattern; import com.raoulvdberge.refinedstorage.apiimpl.autocrafting.CraftingPattern;
import com.raoulvdberge.refinedstorage.render.tesr.PatternItemStackTileEntityRenderer; import com.raoulvdberge.refinedstorage.render.tesr.PatternItemStackTileRenderer;
import com.raoulvdberge.refinedstorage.util.RenderUtils; import com.raoulvdberge.refinedstorage.util.RenderUtils;
import net.minecraft.client.gui.screen.inventory.ContainerScreen; import net.minecraft.client.gui.screen.inventory.ContainerScreen;
import net.minecraft.client.util.ITooltipFlag; import net.minecraft.client.util.ITooltipFlag;
@@ -45,7 +45,7 @@ public class PatternItem extends Item implements ICraftingPatternProvider {
private static final int VERSION = 1; private static final int VERSION = 1;
public PatternItem() { public PatternItem() {
super(new Item.Properties().group(RS.MAIN_GROUP).setTEISR(() -> PatternItemStackTileEntityRenderer::new)); super(new Item.Properties().group(RS.MAIN_GROUP).setTEISR(() -> PatternItemStackTileRenderer::new));
this.setRegistryName(RS.ID, "pattern"); this.setRegistryName(RS.ID, "pattern");
} }

View File

@@ -5,7 +5,7 @@ import com.raoulvdberge.refinedstorage.item.PatternItem;
import net.minecraft.client.renderer.tileentity.ItemStackTileEntityRenderer; import net.minecraft.client.renderer.tileentity.ItemStackTileEntityRenderer;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
public class PatternItemStackTileEntityRenderer extends ItemStackTileEntityRenderer { public class PatternItemStackTileRenderer extends ItemStackTileEntityRenderer {
@Override @Override
public void renderByItem(ItemStack stack) { public void renderByItem(ItemStack stack) {
CraftingPattern pattern = PatternItem.fromCache(null, stack); CraftingPattern pattern = PatternItem.fromCache(null, stack);

View File

@@ -1,18 +1,21 @@
package com.raoulvdberge.refinedstorage.render.tesr; package com.raoulvdberge.refinedstorage.render.tesr;
import com.mojang.blaze3d.platform.GlStateManager; import com.mojang.blaze3d.platform.GlStateManager;
import com.raoulvdberge.refinedstorage.RSBlocks;
import com.raoulvdberge.refinedstorage.apiimpl.API; import com.raoulvdberge.refinedstorage.apiimpl.API;
import com.raoulvdberge.refinedstorage.tile.TileStorageMonitor; import com.raoulvdberge.refinedstorage.tile.StorageMonitorTile;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.model.IBakedModel; import net.minecraft.client.renderer.model.IBakedModel;
import net.minecraft.client.renderer.model.ItemCameraTransforms; import net.minecraft.client.renderer.model.ItemCameraTransforms;
import net.minecraft.client.renderer.texture.AtlasTexture;
import net.minecraft.client.renderer.tileentity.TileEntityRenderer; import net.minecraft.client.renderer.tileentity.TileEntityRenderer;
import net.minecraft.util.Direction;
import net.minecraftforge.client.ForgeHooksClient; import net.minecraftforge.client.ForgeHooksClient;
import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GL11;
public class StorageMonitorTileEntityRenderer extends TileEntityRenderer<TileStorageMonitor> { public class StorageMonitorTileRenderer extends TileEntityRenderer<StorageMonitorTile> {
@Override @Override
public void render(TileStorageMonitor tile, double x, double y, double z, float partialTicks, int destroyStage) { public void render(StorageMonitorTile tile, double x, double y, double z, float partialTicks, int destroyStage) {
setLightmapDisabled(true); setLightmapDisabled(true);
float disX = 0, disXText = 0; float disX = 0, disXText = 0;
@@ -37,8 +40,9 @@ public class StorageMonitorTileEntityRenderer extends TileEntityRenderer<TileSto
} }
} }
/* TODO Direction direction = tile.getWorld().getBlockState(tile.getPos()).get(RSBlocks.STORAGE_MONITOR.getDirection().getProperty());
if (tile.getDirection() == Direction.NORTH) {
if (direction == Direction.NORTH) {
disX = 0.5F; disX = 0.5F;
disXText = disX + textWidth; disXText = disX + textWidth;
@@ -46,7 +50,7 @@ public class StorageMonitorTileEntityRenderer extends TileEntityRenderer<TileSto
disZText = disZ - spacing; disZText = disZ - spacing;
rotZ = 1F; rotZ = 1F;
} else if (tile.getDirection() == Direction.WEST) { } else if (direction == Direction.WEST) {
disX = -spacing; disX = -spacing;
disXText = disX - spacing; disXText = disX - spacing;
@@ -55,7 +59,7 @@ public class StorageMonitorTileEntityRenderer extends TileEntityRenderer<TileSto
rotZ = 1F; rotZ = 1F;
rotX = 1F; rotX = 1F;
} else if (tile.getDirection() == Direction.SOUTH) { } else if (direction == Direction.SOUTH) {
disX = 0.5F; disX = 0.5F;
disXText = disX - textWidth; disXText = disX - textWidth;
@@ -63,7 +67,7 @@ public class StorageMonitorTileEntityRenderer extends TileEntityRenderer<TileSto
disZText = disZ + spacing; disZText = disZ + spacing;
rotX = 1F; rotX = 1F;
} else if (tile.getDirection() == Direction.EAST) { } else if (direction == Direction.EAST) {
disX = 1F + spacing; disX = 1F + spacing;
disXText = disX + spacing; disXText = disX + spacing;
@@ -72,7 +76,7 @@ public class StorageMonitorTileEntityRenderer extends TileEntityRenderer<TileSto
rotZ = 1F; rotZ = 1F;
rotX = -1F; rotX = -1F;
}*/ }
GlStateManager.pushMatrix(); GlStateManager.pushMatrix();
GlStateManager.translated(x + disX, y + disY, z + disZ); GlStateManager.translated(x + disX, y + disY, z + disZ);
@@ -84,8 +88,8 @@ public class StorageMonitorTileEntityRenderer extends TileEntityRenderer<TileSto
GlStateManager.blendFunc(GlStateManager.SourceFactor.ONE, GlStateManager.DestFactor.ZERO); GlStateManager.blendFunc(GlStateManager.SourceFactor.ONE, GlStateManager.DestFactor.ZERO);
GlStateManager.depthMask(true); GlStateManager.depthMask(true);
GlStateManager.scalef(0.4F, -0.4F, -0.015F); GlStateManager.scalef(0.4F, -0.4F, -0.015F);
// TODO Minecraft.getInstance().getTextureManager().bindTexture(TextureMap.LOCATION_BLOCKS_TEXTURE); Minecraft.getInstance().getTextureManager().bindTexture(AtlasTexture.LOCATION_BLOCKS_TEXTURE);
// TODO Minecraft.getInstance().getTextureManager().getTexture(TextureMap.LOCATION_BLOCKS_TEXTURE).setBlurMipmap(false, false); Minecraft.getInstance().getTextureManager().getTexture(AtlasTexture.LOCATION_BLOCKS_TEXTURE).setBlurMipmap(false, false);
GlStateManager.enableRescaleNormal(); GlStateManager.enableRescaleNormal();
GlStateManager.enableAlphaTest(); GlStateManager.enableAlphaTest();
GlStateManager.alphaFunc(GL11.GL_GREATER, 0.1F); GlStateManager.alphaFunc(GL11.GL_GREATER, 0.1F);
@@ -102,8 +106,8 @@ public class StorageMonitorTileEntityRenderer extends TileEntityRenderer<TileSto
GlStateManager.disableAlphaTest(); GlStateManager.disableAlphaTest();
GlStateManager.disableRescaleNormal(); GlStateManager.disableRescaleNormal();
GlStateManager.disableLighting(); GlStateManager.disableLighting();
// TODO Minecraft.getInstance().getTextureManager().bindTexture(TextureMap.LOCATION_BLOCKS_TEXTURE); Minecraft.getInstance().getTextureManager().bindTexture(AtlasTexture.LOCATION_BLOCKS_TEXTURE);
// TODO Minecraft.getInstance().getTextureManager().getTexture(TextureMap.LOCATION_BLOCKS_TEXTURE).restoreLastBlurMipmap(); Minecraft.getInstance().getTextureManager().getTexture(AtlasTexture.LOCATION_BLOCKS_TEXTURE).restoreLastBlurMipmap();
GlStateManager.disableBlend(); GlStateManager.disableBlend();
GlStateManager.color4f(1F, 1F, 1F, 1F); GlStateManager.color4f(1F, 1F, 1F, 1F);

View File

@@ -3,18 +3,19 @@ package com.raoulvdberge.refinedstorage.screen;
import com.raoulvdberge.refinedstorage.RS; import com.raoulvdberge.refinedstorage.RS;
import com.raoulvdberge.refinedstorage.container.StorageMonitorContainer; import com.raoulvdberge.refinedstorage.container.StorageMonitorContainer;
import com.raoulvdberge.refinedstorage.screen.widget.sidebutton.ExactModeSideButton; import com.raoulvdberge.refinedstorage.screen.widget.sidebutton.ExactModeSideButton;
import com.raoulvdberge.refinedstorage.tile.TileStorageMonitor; import com.raoulvdberge.refinedstorage.tile.StorageMonitorTile;
import net.minecraft.client.resources.I18n; import net.minecraft.client.resources.I18n;
import net.minecraft.entity.player.PlayerInventory; import net.minecraft.entity.player.PlayerInventory;
import net.minecraft.util.text.ITextComponent;
public class GuiStorageMonitor extends BaseScreen<StorageMonitorContainer> { public class StorageMonitorScreen extends BaseScreen<StorageMonitorContainer> {
public GuiStorageMonitor(StorageMonitorContainer container, PlayerInventory inventory) { public StorageMonitorScreen(StorageMonitorContainer container, PlayerInventory inventory, ITextComponent title) {
super(container, 211, 137, inventory, null); super(container, 211, 137, inventory, title);
} }
@Override @Override
public void onPostInit(int x, int y) { public void onPostInit(int x, int y) {
addSideButton(new ExactModeSideButton(this, TileStorageMonitor.COMPARE)); addSideButton(new ExactModeSideButton(this, StorageMonitorTile.COMPARE));
} }
@Override @Override
@@ -30,7 +31,7 @@ public class GuiStorageMonitor extends BaseScreen<StorageMonitorContainer> {
@Override @Override
public void renderForeground(int mouseX, int mouseY) { public void renderForeground(int mouseX, int mouseY) {
renderString(7, 7, I18n.format("gui.refinedstorage:storage_monitor")); renderString(7, 7, title.getFormattedText());
renderString(7, 43, I18n.format("container.inventory")); renderString(7, 43, I18n.format("container.inventory"));
} }
} }

View File

@@ -1,7 +1,7 @@
package com.raoulvdberge.refinedstorage.tile; package com.raoulvdberge.refinedstorage.tile;
import com.raoulvdberge.refinedstorage.RSTiles; import com.raoulvdberge.refinedstorage.RSTiles;
import com.raoulvdberge.refinedstorage.apiimpl.network.node.NetworkNodeStorageMonitor; import com.raoulvdberge.refinedstorage.apiimpl.network.node.StorageMonitorNetworkNode;
import com.raoulvdberge.refinedstorage.tile.config.IComparable; import com.raoulvdberge.refinedstorage.tile.config.IComparable;
import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter; import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
@@ -11,8 +11,8 @@ import net.minecraft.world.World;
import javax.annotation.Nullable; import javax.annotation.Nullable;
public class TileStorageMonitor extends NetworkNodeTile<NetworkNodeStorageMonitor> { public class StorageMonitorTile extends NetworkNodeTile<StorageMonitorNetworkNode> {
public static final TileDataParameter<Integer, TileStorageMonitor> COMPARE = IComparable.createParameter(); public static final TileDataParameter<Integer, StorageMonitorTile> COMPARE = IComparable.createParameter();
private static final String NBT_STACK = "Stack"; private static final String NBT_STACK = "Stack";
private static final String NBT_AMOUNT = "Amount"; private static final String NBT_AMOUNT = "Amount";
@@ -21,15 +21,15 @@ public class TileStorageMonitor extends NetworkNodeTile<NetworkNodeStorageMonito
@Nullable @Nullable
private ItemStack itemStack; private ItemStack itemStack;
public TileStorageMonitor() { public StorageMonitorTile() {
super(RSTiles.STORAGE_MONITOR); super(RSTiles.STORAGE_MONITOR);
dataManager.addWatchedParameter(COMPARE); dataManager.addWatchedParameter(COMPARE);
} }
@Override @Override
public NetworkNodeStorageMonitor createNode(World world, BlockPos pos) { public StorageMonitorNetworkNode createNode(World world, BlockPos pos) {
return new NetworkNodeStorageMonitor(world, pos); return new StorageMonitorNetworkNode(world, pos);
} }
@Override @Override

View File

@@ -7,6 +7,9 @@ import net.minecraft.inventory.ISidedInventory;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.Direction; import net.minecraft.util.Direction;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.RayTraceContext;
import net.minecraft.util.math.RayTraceResult;
import net.minecraft.util.math.Vec3d;
import net.minecraft.util.text.Style; import net.minecraft.util.text.Style;
import net.minecraft.util.text.TextFormatting; import net.minecraft.util.text.TextFormatting;
import net.minecraft.util.text.TranslationTextComponent; import net.minecraft.util.text.TranslationTextComponent;
@@ -56,4 +59,14 @@ public final class WorldUtils {
public static void sendNoPermissionMessage(PlayerEntity player) { public static void sendNoPermissionMessage(PlayerEntity player) {
player.sendMessage(new TranslationTextComponent("misc.refinedstorage:security.no_permission").setStyle(new Style().setColor(TextFormatting.RED))); player.sendMessage(new TranslationTextComponent("misc.refinedstorage:security.no_permission").setStyle(new Style().setColor(TextFormatting.RED)));
} }
public static RayTraceResult rayTracePlayer(World world, PlayerEntity player) {
double reachDistance = player.getAttribute(PlayerEntity.REACH_DISTANCE).getValue();
Vec3d base = player.getEyePosition(1.0F);
Vec3d look = player.getLookVec();
Vec3d target = base.add(look.x * reachDistance, look.y * reachDistance, look.z * reachDistance);
return world.rayTraceBlocks(new RayTraceContext(base, target, RayTraceContext.BlockMode.OUTLINE, RayTraceContext.FluidMode.NONE, player));
}
} }

View File

@@ -1,40 +1,20 @@
{ {
"forge_marker": 1,
"defaults": {
"model": "cube",
"textures": {
"particle": "refinedstorage:blocks/side",
"north": "refinedstorage:blocks/storage_monitor_front",
"east": "refinedstorage:blocks/storage_monitor_left",
"south": "refinedstorage:blocks/storage_monitor_back",
"west": "refinedstorage:blocks/storage_monitor_right",
"up": "refinedstorage:blocks/storage_monitor_top",
"down": "refinedstorage:blocks/bottom"
}
},
"variants": { "variants": {
"connected": { "direction=north": {
"true": { "model": "refinedstorage:block/storage_monitor",
"textures": {
"north": "refinedstorage:blocks/storage_monitor_front"
}
},
"false": {
}
},
"direction": {
"north": {
"y": 0 "y": 0
}, },
"east": { "direction=east": {
"model": "refinedstorage:block/storage_monitor",
"y": 90 "y": 90
}, },
"south": { "direction=south": {
"model": "refinedstorage:block/storage_monitor",
"y": 180 "y": 180
}, },
"west": { "direction=west": {
"model": "refinedstorage:block/storage_monitor",
"y": 270 "y": 270
} }
} }
} }
}

View File

@@ -79,7 +79,7 @@
"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", "gui.refinedstorage.storage_monitor": "Storage Monitor",
"gui.refinedstorage:crafter_manager": "Crafter Manager", "gui.refinedstorage:crafter_manager": "Crafter Manager",
"misc.refinedstorage.energy_stored": "%d / %d FE", "misc.refinedstorage.energy_stored": "%d / %d FE",
"misc.refinedstorage.energy_usage": "Usage: %d FE/t", "misc.refinedstorage.energy_usage": "Usage: %d FE/t",
@@ -210,7 +210,7 @@
"block.refinedstorage.creative_fluid_storage_block": "Creative Fluid Storage Block", "block.refinedstorage.creative_fluid_storage_block": "Creative Fluid Storage Block",
"block.refinedstorage.security_manager": "Security Manager", "block.refinedstorage.security_manager": "Security Manager",
"block.refinedstorage.quartz_enriched_iron_block": "Block of Quartz Enriched Iron", "block.refinedstorage.quartz_enriched_iron_block": "Block of Quartz Enriched Iron",
"block.refinedstorage:storage_monitor": "Storage Monitor", "block.refinedstorage.storage_monitor": "Storage Monitor",
"block.refinedstorage:portable_grid.0": "Portable Grid", "block.refinedstorage:portable_grid.0": "Portable Grid",
"block.refinedstorage:portable_grid.1": "Creative Portable Grid", "block.refinedstorage:portable_grid.1": "Creative Portable Grid",
"block.refinedstorage:portable_grid.tooltip": "Sneak to place in the world.", "block.refinedstorage:portable_grid.tooltip": "Sneak to place in the world.",

View File

@@ -0,0 +1,12 @@
{
"parent": "block/cube",
"textures": {
"particle": "refinedstorage:block/side",
"north": "refinedstorage:block/storage_monitor_front",
"east": "refinedstorage:block/storage_monitor_left",
"south": "refinedstorage:block/storage_monitor_back",
"west": "refinedstorage:block/storage_monitor_right",
"up": "refinedstorage:block/storage_monitor_top",
"down": "refinedstorage:block/bottom"
}
}

View File

@@ -0,0 +1,3 @@
{
"parent": "refinedstorage:block/storage_monitor"
}

View File

@@ -0,0 +1,19 @@
{
"type": "minecraft:block",
"pools": [
{
"rolls": 1,
"entries": [
{
"type": "minecraft:item",
"name": "refinedstorage:storage_monitor"
}
],
"conditions": [
{
"condition": "minecraft:survives_explosion"
}
]
}
]
}

View File

@@ -7,14 +7,13 @@
], ],
"key": { "key": {
"P": { "P": {
"item": "#basic_processor" "item": "refinedstorage:basic_processor"
}, },
"C": { "C": {
"item": "#construction_core" "item": "refinedstorage:construction_core"
}, },
"G": { "G": {
"type": "forge:ore_dict", "tag": "forge:glass"
"ore": "blockGlass"
}, },
"E": { "E": {
"item": "refinedstorage:quartz_enriched_iron" "item": "refinedstorage:quartz_enriched_iron"
@@ -23,7 +22,7 @@
"item": "refinedstorage:machine_casing" "item": "refinedstorage:machine_casing"
}, },
"D": { "D": {
"item": "#destruction_core" "item": "refinedstorage:destruction_core"
} }
}, },
"result": { "result": {