diff --git a/src/main/java/com/raoulvdberge/refinedstorage/Config.java b/src/main/java/com/raoulvdberge/refinedstorage/Config.java new file mode 100644 index 000000000..52f5411e5 --- /dev/null +++ b/src/main/java/com/raoulvdberge/refinedstorage/Config.java @@ -0,0 +1,58 @@ +package com.raoulvdberge.refinedstorage; + +import com.electronwill.nightconfig.core.file.CommentedFileConfig; +import net.minecraftforge.common.ForgeConfigSpec; + +import java.nio.file.Paths; + +public class Config { + private ForgeConfigSpec.Builder builder = new ForgeConfigSpec.Builder(); + private ForgeConfigSpec spec; + + private Controller controller; + + public Config() { + controller = new Controller(); + + spec = builder.build(); + spec.setConfig(CommentedFileConfig.builder(Paths.get("config", "refinedstorage.toml")).build()); + } + + public Controller getController() { + return controller; + } + + public class Controller { + private final ForgeConfigSpec.IntValue baseUsage; + private final ForgeConfigSpec.IntValue maxReceive; + private final ForgeConfigSpec.IntValue capacity; + private final ForgeConfigSpec.BooleanValue useEnergy; + + public Controller() { + builder.push("controller"); + + baseUsage = builder.comment("The base energy used by the Controller").defineInRange("baseUsage", 0, 0, Integer.MAX_VALUE); + maxReceive = builder.comment("The maximum energy the Controller receives per tick").defineInRange("maxReceive", Integer.MAX_VALUE, 0, Integer.MAX_VALUE); + capacity = builder.comment("The energy capacity of the Controller").defineInRange("capacity", 32000, 0, Integer.MAX_VALUE); + useEnergy = builder.comment("Whether the Controller uses energy").define("useEnergy", true); + + builder.pop(); + } + + public int getBaseUsage() { + return baseUsage.get(); + } + + public int getMaxReceive() { + return maxReceive.get(); + } + + public int getCapacity() { + return capacity.get(); + } + + public boolean getUseEnergy() { + return useEnergy.get(); + } + } +} diff --git a/src/main/java/com/raoulvdberge/refinedstorage/RS.java b/src/main/java/com/raoulvdberge/refinedstorage/RS.java index dde6875f9..6de4a69b6 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/RS.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/RS.java @@ -5,13 +5,17 @@ import com.raoulvdberge.refinedstorage.apiimpl.storage.FluidStorageType; import com.raoulvdberge.refinedstorage.apiimpl.storage.ItemStorageType; import com.raoulvdberge.refinedstorage.apiimpl.storage.disk.StorageDiskFactoryFluid; import com.raoulvdberge.refinedstorage.apiimpl.storage.disk.StorageDiskFactoryItem; +import com.raoulvdberge.refinedstorage.block.ControllerBlock; +import com.raoulvdberge.refinedstorage.block.MachineCasingBlock; import com.raoulvdberge.refinedstorage.block.QuartzEnrichedIronBlock; import com.raoulvdberge.refinedstorage.container.ContainerFilter; import com.raoulvdberge.refinedstorage.item.*; +import com.raoulvdberge.refinedstorage.item.blockitem.ControllerBlockItem; import com.raoulvdberge.refinedstorage.item.group.MainItemGroup; import com.raoulvdberge.refinedstorage.network.NetworkHandler; import com.raoulvdberge.refinedstorage.recipe.UpgradeWithEnchantedBookRecipeSerializer; import com.raoulvdberge.refinedstorage.screen.FilterScreen; +import com.raoulvdberge.refinedstorage.tile.ControllerTile; import com.raoulvdberge.refinedstorage.util.BlockUtils; import net.minecraft.block.Block; import net.minecraft.client.gui.ScreenManager; @@ -19,6 +23,7 @@ import net.minecraft.inventory.container.ContainerType; import net.minecraft.item.Item; import net.minecraft.item.ItemGroup; import net.minecraft.item.crafting.IRecipeSerializer; +import net.minecraft.tileentity.TileEntityType; import net.minecraftforge.common.extensions.IForgeContainerType; import net.minecraftforge.event.RegistryEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; @@ -32,15 +37,17 @@ public final class RS { public static final String ID = "refinedstorage"; public static RS INSTANCE; - public RSConfig config; + public RSOldConfig config = new RSOldConfig(); public static final NetworkHandler NETWORK_HANDLER = new NetworkHandler(); public static final ItemGroup MAIN_GROUP = new MainItemGroup(); + public static final Config CONFIG = new Config(); public RS() { FMLJavaModLoadingContext.get().getModEventBus().addListener(this::onCommonSetup); FMLJavaModLoadingContext.get().getModEventBus().addListener(this::onClientSetup); FMLJavaModLoadingContext.get().getModEventBus().addGenericListener(Block.class, this::onRegisterBlocks); + FMLJavaModLoadingContext.get().getModEventBus().addGenericListener(TileEntityType.class, this::onRegisterTiles); FMLJavaModLoadingContext.get().getModEventBus().addGenericListener(Item.class, this::onRegisterItems); FMLJavaModLoadingContext.get().getModEventBus().addGenericListener(IRecipeSerializer.class, this::onRegisterRecipeSerializers); FMLJavaModLoadingContext.get().getModEventBus().addGenericListener(ContainerType.class, this::onRegisterContainers); @@ -67,6 +74,15 @@ public final class RS { @SubscribeEvent public void onRegisterBlocks(RegistryEvent.Register e) { e.getRegistry().register(new QuartzEnrichedIronBlock()); + e.getRegistry().register(new ControllerBlock(ControllerBlock.Type.NORMAL)); + e.getRegistry().register(new ControllerBlock(ControllerBlock.Type.CREATIVE)); + e.getRegistry().register(new MachineCasingBlock()); + } + + @SubscribeEvent + public void onRegisterTiles(RegistryEvent.Register> e) { + e.getRegistry().register(TileEntityType.Builder.create(() -> new ControllerTile(ControllerBlock.Type.NORMAL), RSBlocks.CONTROLLER).build(null).setRegistryName(RS.ID, "controller")); + e.getRegistry().register(TileEntityType.Builder.create(() -> new ControllerTile(ControllerBlock.Type.CREATIVE), RSBlocks.CREATIVE_CONTROLLER).build(null).setRegistryName(RS.ID, "creative_controller")); } @SubscribeEvent @@ -118,6 +134,9 @@ public final class RS { e.getRegistry().register(new FilterItem()); e.getRegistry().register(BlockUtils.createBlockItemFor(RSBlocks.QUARTZ_ENRICHED_IRON)); + e.getRegistry().register(new ControllerBlockItem(RSBlocks.CONTROLLER)); + e.getRegistry().register(new ControllerBlockItem(RSBlocks.CREATIVE_CONTROLLER)); + e.getRegistry().register(BlockUtils.createBlockItemFor(RSBlocks.MACHINE_CASING)); } /* TODO diff --git a/src/main/java/com/raoulvdberge/refinedstorage/RSBlocks.java b/src/main/java/com/raoulvdberge/refinedstorage/RSBlocks.java index 02f995e31..69b46eba1 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/RSBlocks.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/RSBlocks.java @@ -4,7 +4,6 @@ import com.raoulvdberge.refinedstorage.block.*; import net.minecraftforge.registries.ObjectHolder; public final class RSBlocks { - public static final BlockController CONTROLLER = new BlockController(); public static final BlockCable CABLE = new BlockCable(); public static final BlockGrid GRID = new BlockGrid(); public static final BlockDiskDrive DISK_DRIVE = new BlockDiskDrive(); @@ -12,7 +11,6 @@ public final class RSBlocks { public static final BlockImporter IMPORTER = new BlockImporter(); public static final BlockExporter EXPORTER = new BlockExporter(); public static final BlockDetector DETECTOR = new BlockDetector(); - public static final BlockMachineCasing MACHINE_CASING = new BlockMachineCasing(); public static final BlockDestructor DESTRUCTOR = new BlockDestructor(); public static final BlockConstructor CONSTRUCTOR = new BlockConstructor(); public static final BlockStorage STORAGE = new BlockStorage(); @@ -33,6 +31,14 @@ public final class RSBlocks { @ObjectHolder(RS.ID + ":quartz_enriched_iron_block") public static final QuartzEnrichedIronBlock QUARTZ_ENRICHED_IRON = null; + @ObjectHolder(RS.ID + ":machine_casing") + public static final MachineCasingBlock MACHINE_CASING = null; + + @ObjectHolder(RS.ID + ":controller") + public static final ControllerBlock CONTROLLER = null; + @ObjectHolder(RS.ID + ":creative_controller") + public static final ControllerBlock CREATIVE_CONTROLLER = null; + public static final BlockStorageMonitor STORAGE_MONITOR = new BlockStorageMonitor(); public static final BlockPortableGrid PORTABLE_GRID = new BlockPortableGrid(); public static final BlockCrafterManager CRAFTER_MANAGER = new BlockCrafterManager(); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/RSConfig.java b/src/main/java/com/raoulvdberge/refinedstorage/RSOldConfig.java old mode 100755 new mode 100644 similarity index 96% rename from src/main/java/com/raoulvdberge/refinedstorage/RSConfig.java rename to src/main/java/com/raoulvdberge/refinedstorage/RSOldConfig.java index 66c4dfcf8..51cfae8ea --- a/src/main/java/com/raoulvdberge/refinedstorage/RSConfig.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/RSOldConfig.java @@ -1,17 +1,12 @@ package com.raoulvdberge.refinedstorage; -import net.minecraftforge.common.MinecraftForge; - import javax.annotation.Nullable; -import java.io.File; -public class RSConfig { +public class RSOldConfig { // private Configuration config; - private RSConfig originalClientVersion; + private RSOldConfig originalClientVersion; //region Energy - public int controllerBaseUsage; - public int controllerMaxReceive; public int cableUsage; public int constructorUsage; public int crafterUsage; @@ -43,11 +38,6 @@ public class RSConfig { public int securityManagerPerSecurityCardUsage; //endregion - //region Controller - public int controllerCapacity; - public boolean controllerUsesEnergy; - //endregion - //region Grid public int maxRowsStretch; public boolean largeFont; @@ -131,25 +121,26 @@ public class RSConfig { private static final String AUTOCRAFTING = "autocrafting"; //endregion + /* public RSConfig(@Nullable RSConfig originalClientVersion, File configFile) { - this(originalClientVersion/*, new Configuration(configFile)*/); + this(originalClientVersion, new Configuration(configFile)); } - public RSConfig(@Nullable RSConfig originalClientVersion/*, Configuration config*/) { + public RSConfig(@Nullable RSConfig originalClientVersion, Configuration config) { this.originalClientVersion = originalClientVersion; // this.config = config; MinecraftForge.EVENT_BUS.register(this); // this.loadConfig(); - } + }*/ /*public Configuration getConfig() { return config; }*/ @Nullable - public RSConfig getOriginalClientVersion() { + public RSOldConfig getOriginalClientVersion() { return originalClientVersion; } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/RSTiles.java b/src/main/java/com/raoulvdberge/refinedstorage/RSTiles.java index 2113c1e0c..6cf6237d8 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/RSTiles.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/RSTiles.java @@ -5,12 +5,18 @@ import com.raoulvdberge.refinedstorage.tile.craftingmonitor.TileCraftingMonitor; import com.raoulvdberge.refinedstorage.tile.grid.TileGrid; import com.raoulvdberge.refinedstorage.tile.grid.portable.TilePortableGrid; import net.minecraft.tileentity.TileEntityType; +import net.minecraftforge.registries.ObjectHolder; public class RSTiles { //@ObjectHolder(RS.ID + ":constructor") public static final TileEntityType CONSTRUCTOR = null; - //@ObjectHolder(RS.ID + ":controller") - public static final TileEntityType CONTROLLER = null; + + @ObjectHolder(RS.ID + ":controller") + public static final TileEntityType CONTROLLER = null; + + @ObjectHolder(RS.ID + ":creative_controller") + public static final TileEntityType CREATIVE_CONTROLLER = null; + //@ObjectHolder(RS.ID + ":crafter") public static final TileEntityType CRAFTER = null; //@ObjectHolder(RS.ID + ":crafter_manager") diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/autocrafting/CraftingManager.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/autocrafting/CraftingManager.java index 70fa43811..33cb33d4e 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/autocrafting/CraftingManager.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/autocrafting/CraftingManager.java @@ -12,7 +12,7 @@ import com.raoulvdberge.refinedstorage.api.autocrafting.task.ICraftingTaskError; import com.raoulvdberge.refinedstorage.api.network.node.INetworkNode; import com.raoulvdberge.refinedstorage.api.util.IComparer; import com.raoulvdberge.refinedstorage.apiimpl.API; -import com.raoulvdberge.refinedstorage.tile.TileController; +import com.raoulvdberge.refinedstorage.tile.ControllerTile; import net.minecraft.item.ItemStack; import net.minecraft.nbt.CompoundNBT; import net.minecraft.nbt.ListNBT; @@ -31,7 +31,7 @@ public class CraftingManager implements ICraftingManager { private static final String NBT_TASK_TYPE = "Type"; private static final String NBT_TASK_DATA = "Task"; - private TileController network; + private ControllerTile network; private Map> containerInventories = new LinkedHashMap<>(); @@ -46,7 +46,7 @@ public class CraftingManager implements ICraftingManager { private Set listeners = new HashSet<>(); - public CraftingManager(TileController network) { + public CraftingManager(ControllerTile network) { this.network = network; } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockBase.java b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockBase.java index 731048247..d779327c6 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockBase.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockBase.java @@ -2,7 +2,7 @@ package com.raoulvdberge.refinedstorage.block; import com.raoulvdberge.refinedstorage.block.info.BlockDirection; import com.raoulvdberge.refinedstorage.block.info.IBlockInfo; -import com.raoulvdberge.refinedstorage.item.itemblock.ItemBlockBase; +import com.raoulvdberge.refinedstorage.item.blockitem.ItemBlockBase; import com.raoulvdberge.refinedstorage.render.IModelRegistration; import com.raoulvdberge.refinedstorage.render.collision.CollisionGroup; import com.raoulvdberge.refinedstorage.util.CollisionUtils; diff --git a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockController.java b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockController.java deleted file mode 100755 index 76e120649..000000000 --- a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockController.java +++ /dev/null @@ -1,106 +0,0 @@ -package com.raoulvdberge.refinedstorage.block; - -import com.raoulvdberge.refinedstorage.block.enums.ControllerEnergyType; -import com.raoulvdberge.refinedstorage.block.enums.ControllerType; -import com.raoulvdberge.refinedstorage.block.info.BlockInfoBuilder; -import com.raoulvdberge.refinedstorage.item.itemblock.ItemBlockController; -import com.raoulvdberge.refinedstorage.tile.TileController; -import net.minecraft.item.Item; -import net.minecraft.state.EnumProperty; -import net.minecraft.util.BlockRenderLayer; - -public class BlockController extends BlockNodeProxy { - public static final EnumProperty TYPE = EnumProperty.create("type", ControllerType.class); - public static final EnumProperty ENERGY_TYPE = EnumProperty.create("energy_type", ControllerEnergyType.class); - - public BlockController() { - super(BlockInfoBuilder.forId("controller").tileEntity(TileController::new).create()); - } - - @Override - public BlockRenderLayer getRenderLayer() { - return BlockRenderLayer.CUTOUT; - } - - /* - @Override - @OnlyIn(Dist.CLIENT) - public void registerModels(IModelRegistration modelRegistration) { - modelRegistration.setModelMeshDefinition(this, new ItemMeshDefinitionController()); - - modelRegistration.setStateMapper(this, new StateMap.Builder().ignore(TYPE).build()); - - modelRegistration.addBakedModelOverride(info.getId(), base -> new BakedModelFullbright( - base, - RS.ID + ":blocks/controller/cutouts/nearly_off", - RS.ID + ":blocks/controller/cutouts/nearly_on", - RS.ID + ":blocks/controller/cutouts/on" - )); - } - - @Override - public void getSubBlocks(CreativeTabs tab, NonNullList items) { - items.add(ItemBlockController.createStack(new ItemStack(this, 1, 0), 0)); - items.add(ItemBlockController.createStack(new ItemStack(this, 1, 0), RS.INSTANCE.config.controllerCapacity)); - items.add(ItemBlockController.createStack(new ItemStack(this, 1, 1), 0)); - } - - @Override - protected BlockStateContainer createBlockState() { - return createBlockStateBuilder() - .add(TYPE) - .add(ENERGY_TYPE) - .build(); - } - - @Override - public BlockState getStateFromMeta(int meta) { - return getDefaultState().withProperty(TYPE, meta == 0 ? ControllerType.NORMAL : ControllerType.CREATIVE); - } - - @Override - public int getMetaFromState(BlockState state) { - return state.getValue(TYPE) == ControllerType.NORMAL ? 0 : 1; - } - - @Override - public BlockState getActualState(BlockState state, IBlockAccess world, BlockPos pos) { - return super.getActualState(state, world, pos) - .withProperty(ENERGY_TYPE, ((TileController) world.getTileEntity(pos)).getEnergyType()); - } - - @Override - public boolean onBlockActivated(World world, BlockPos pos, BlockState state, PlayerEntity player, EnumHand hand, Direction side, float hitX, float hitY, float hitZ) { - return openNetworkGui(RSGui.CONTROLLER, player, world, pos, side); - } - - @Override - public void onBlockPlacedBy(World world, BlockPos pos, BlockState state, EntityLivingBase player, ItemStack stack) { - if (!world.isRemote) { - TileController controller = (TileController) world.getTileEntity(pos); - - CompoundNBT tag = stack.getTagCompound(); - - if (tag != null && tag.hasKey(TileController.NBT_ENERGY)) { - controller.getEnergy().setStored(tag.getInteger(TileController.NBT_ENERGY)); - } - } - - super.onBlockPlacedBy(world, pos, state, player, stack); - } - - @Override - public void getDrops(NonNullList drops, IBlockAccess world, BlockPos pos, BlockState state, int fortune) { - ItemStack stack = new ItemStack(this, 1, getMetaFromState(state)); - - stack.setTagCompound(new CompoundNBT()); - stack.getTagCompound().putInt(TileController.NBT_ENERGY, ((TileController) world.getTileEntity(pos)).getEnergy().getStored()); - - drops.add(stack); - }*/ - - @Override - public Item createItem() { - return new ItemBlockController(this); - } -} diff --git a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockMachineCasing.java b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockMachineCasing.java deleted file mode 100755 index 661eb11d7..000000000 --- a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockMachineCasing.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.raoulvdberge.refinedstorage.block; - -import com.raoulvdberge.refinedstorage.block.info.BlockInfoBuilder; - -public class BlockMachineCasing extends BlockBase { - public BlockMachineCasing() { - super(BlockInfoBuilder.forId("machine_casing").create()); - } -/* TODO - @Override - @OnlyIn(Dist.CLIENT) - public void registerModels(IModelRegistration modelRegistration) { - modelRegistration.setModel(this, 0, new ModelResourceLocation(info.getId(), "inventory")); - } */ -} diff --git a/src/main/java/com/raoulvdberge/refinedstorage/block/ControllerBlock.java b/src/main/java/com/raoulvdberge/refinedstorage/block/ControllerBlock.java new file mode 100644 index 000000000..fb538c4c6 --- /dev/null +++ b/src/main/java/com/raoulvdberge/refinedstorage/block/ControllerBlock.java @@ -0,0 +1,116 @@ +package com.raoulvdberge.refinedstorage.block; + +import com.raoulvdberge.refinedstorage.RS; +import com.raoulvdberge.refinedstorage.tile.ControllerTile; +import com.raoulvdberge.refinedstorage.util.BlockUtils; +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.state.EnumProperty; +import net.minecraft.state.StateContainer; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.BlockRenderLayer; +import net.minecraft.util.IStringSerializable; +import net.minecraft.world.IBlockReader; + +import javax.annotation.Nullable; + +// TODO - Fullbright models +public class ControllerBlock extends Block { + public enum Type { + NORMAL, + CREATIVE + } + + public enum EnergyType implements IStringSerializable { + OFF("off"), + NEARLY_OFF("nearly_off"), + NEARLY_ON("nearly_on"), + ON("on"); + + private String name; + + EnergyType(String name) { + this.name = name; + } + + @Override + public String getName() { + return name; + } + + @Override + public String toString() { + return name; + } + } + + public static final EnumProperty ENERGY_TYPE = EnumProperty.create("energy_type", EnergyType.class); + + private Type type; + + public ControllerBlock(Type type) { + super(BlockUtils.DEFAULT_ROCK_PROPERTIES); + + this.type = type; + this.setRegistryName(RS.ID, type == Type.CREATIVE ? "creative_controller" : "controller"); + this.setDefaultState(getStateContainer().getBaseState().with(ENERGY_TYPE, EnergyType.OFF)); + } + + @Override + protected void fillStateContainer(StateContainer.Builder builder) { + super.fillStateContainer(builder); + + builder.add(ENERGY_TYPE); + } + + public Type getType() { + return type; + } + + @Override + public BlockRenderLayer getRenderLayer() { + return BlockRenderLayer.CUTOUT; + } + + @Override + public boolean hasTileEntity(BlockState state) { + return true; + } + + @Nullable + @Override + public TileEntity createTileEntity(BlockState state, IBlockReader world) { + return new ControllerTile(type); + } + + /* + @Override + public boolean onBlockActivated(World world, BlockPos pos, BlockState state, PlayerEntity player, EnumHand hand, Direction side, float hitX, float hitY, float hitZ) { + return openNetworkGui(RSGui.CONTROLLER, player, world, pos, side); + } + + @Override + public void onBlockPlacedBy(World world, BlockPos pos, BlockState state, EntityLivingBase player, ItemStack stack) { + if (!world.isRemote) { + TileController controller = (TileController) world.getTileEntity(pos); + + CompoundNBT tag = stack.getTagCompound(); + + if (tag != null && tag.hasKey(TileController.NBT_ENERGY)) { + controller.getEnergy().setStored(tag.getInteger(TileController.NBT_ENERGY)); + } + } + + super.onBlockPlacedBy(world, pos, state, player, stack); + } + + @Override + public void getDrops(NonNullList drops, IBlockAccess world, BlockPos pos, BlockState state, int fortune) { + ItemStack stack = new ItemStack(this, 1, getMetaFromState(state)); + + stack.setTagCompound(new CompoundNBT()); + stack.getTagCompound().putInt(TileController.NBT_ENERGY, ((TileController) world.getTileEntity(pos)).getEnergy().getStored()); + + drops.add(stack); + }*/ +} diff --git a/src/main/java/com/raoulvdberge/refinedstorage/block/MachineCasingBlock.java b/src/main/java/com/raoulvdberge/refinedstorage/block/MachineCasingBlock.java new file mode 100644 index 000000000..5198cff21 --- /dev/null +++ b/src/main/java/com/raoulvdberge/refinedstorage/block/MachineCasingBlock.java @@ -0,0 +1,13 @@ +package com.raoulvdberge.refinedstorage.block; + +import com.raoulvdberge.refinedstorage.RS; +import com.raoulvdberge.refinedstorage.util.BlockUtils; +import net.minecraft.block.Block; + +public class MachineCasingBlock extends Block { + public MachineCasingBlock() { + super(BlockUtils.DEFAULT_ROCK_PROPERTIES); + + this.setRegistryName(RS.ID, "machine_casing"); + } +} diff --git a/src/main/java/com/raoulvdberge/refinedstorage/block/enums/ControllerEnergyType.java b/src/main/java/com/raoulvdberge/refinedstorage/block/enums/ControllerEnergyType.java deleted file mode 100644 index 3aed60ea6..000000000 --- a/src/main/java/com/raoulvdberge/refinedstorage/block/enums/ControllerEnergyType.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.raoulvdberge.refinedstorage.block.enums; - -import net.minecraft.util.IStringSerializable; - -public enum ControllerEnergyType implements IStringSerializable { - OFF(0, "off"), - NEARLY_OFF(1, "nearly_off"), - NEARLY_ON(2, "nearly_on"), - ON(3, "on"); - - private int id; - private String name; - - ControllerEnergyType(int id, String name) { - this.id = id; - this.name = name; - } - - @Override - public String getName() { - return name; - } - - public int getId() { - return id; - } - - @Override - public String toString() { - return name; - } - - public static ControllerEnergyType getById(int id) { - for (ControllerEnergyType type : values()) { - if (type.id == id) { - return type; - } - } - - return OFF; - } -} diff --git a/src/main/java/com/raoulvdberge/refinedstorage/block/enums/ControllerType.java b/src/main/java/com/raoulvdberge/refinedstorage/block/enums/ControllerType.java deleted file mode 100644 index 2abbb6112..000000000 --- a/src/main/java/com/raoulvdberge/refinedstorage/block/enums/ControllerType.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.raoulvdberge.refinedstorage.block.enums; - -import net.minecraft.util.IStringSerializable; - -public enum ControllerType implements IStringSerializable { - NORMAL(0, "normal"), - CREATIVE(1, "creative"); - - private int id; - private String name; - - ControllerType(int id, String name) { - this.id = id; - this.name = name; - } - - @Override - public String getName() { - return name; - } - - public int getId() { - return id; - } - - @Override - public String toString() { - return name; - } -} diff --git a/src/main/java/com/raoulvdberge/refinedstorage/container/ContainerController.java b/src/main/java/com/raoulvdberge/refinedstorage/container/ContainerController.java index f3cb79747..a247a33d7 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/container/ContainerController.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/container/ContainerController.java @@ -1,11 +1,11 @@ package com.raoulvdberge.refinedstorage.container; import com.raoulvdberge.refinedstorage.RSContainers; -import com.raoulvdberge.refinedstorage.tile.TileController; +import com.raoulvdberge.refinedstorage.tile.ControllerTile; import net.minecraft.entity.player.PlayerEntity; public class ContainerController extends ContainerBase { - public ContainerController(TileController controller, PlayerEntity player, int windowId) { + public ContainerController(ControllerTile controller, PlayerEntity player, int windowId) { super(RSContainers.CONTROLLER, controller, player, windowId); addPlayerInventory(8, 99); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/item/blockitem/ControllerBlockItem.java b/src/main/java/com/raoulvdberge/refinedstorage/item/blockitem/ControllerBlockItem.java new file mode 100644 index 000000000..b56f2d7e1 --- /dev/null +++ b/src/main/java/com/raoulvdberge/refinedstorage/item/blockitem/ControllerBlockItem.java @@ -0,0 +1,75 @@ +package com.raoulvdberge.refinedstorage.item.blockitem; + +import com.raoulvdberge.refinedstorage.RS; +import com.raoulvdberge.refinedstorage.block.ControllerBlock; +import com.raoulvdberge.refinedstorage.tile.ControllerTile; +import net.minecraft.client.util.ITooltipFlag; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.BlockItem; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.CompoundNBT; +import net.minecraft.util.math.MathHelper; +import net.minecraft.util.text.ITextComponent; +import net.minecraft.util.text.Style; +import net.minecraft.util.text.TextFormatting; +import net.minecraft.util.text.TranslationTextComponent; +import net.minecraft.world.World; + +import javax.annotation.Nullable; +import java.util.List; + +// TODO: Convert to energy cap. +public class ControllerBlockItem extends BlockItem { + private ControllerBlock controller; + + public ControllerBlockItem(ControllerBlock block) { + super(block, new Item.Properties().group(RS.MAIN_GROUP).maxStackSize(1)); + + this.controller = block; + this.setRegistryName(block.getRegistryName()); + } + + @Override + public double getDurabilityForDisplay(ItemStack stack) { + return 1D - ((double) getEnergyStored(stack) / (double) RS.CONFIG.getController().getCapacity()); + } + + @Override + public int getRGBDurabilityForDisplay(ItemStack stack) { + return MathHelper.hsvToRGB(Math.max(0.0F, (float) getEnergyStored(stack) / (float) RS.CONFIG.getController().getCapacity()) / 3.0F, 1.0F, 1.0F); + } + + @Override + public boolean showDurabilityBar(ItemStack stack) { + return controller.getType() != ControllerBlock.Type.CREATIVE; + } + + @Override + public void addInformation(ItemStack stack, @Nullable World world, List tooltip, ITooltipFlag flag) { + super.addInformation(stack, world, tooltip, flag); + + if (controller.getType() != ControllerBlock.Type.CREATIVE) { + tooltip.add(new TranslationTextComponent("misc.refinedstorage.energy_stored", getEnergyStored(stack), RS.CONFIG.getController().getCapacity()).setStyle(new Style().setColor(TextFormatting.GRAY))); + } + } + + public static int getEnergyStored(ItemStack stack) { + return (stack.hasTag() && stack.getTag().contains(ControllerTile.NBT_ENERGY)) ? stack.getTag().getInt(ControllerTile.NBT_ENERGY) : 0; + } + + @Override + public void onCreated(ItemStack stack, World world, PlayerEntity player) { + super.onCreated(stack, world, player); + + CompoundNBT tag = stack.getTag(); + + if (tag == null) { + tag = new CompoundNBT(); + } + + tag.putInt(ControllerTile.NBT_ENERGY, 0); + + stack.setTag(tag); + } +} diff --git a/src/main/java/com/raoulvdberge/refinedstorage/item/itemblock/ItemBlockBase.java b/src/main/java/com/raoulvdberge/refinedstorage/item/blockitem/ItemBlockBase.java similarity index 94% rename from src/main/java/com/raoulvdberge/refinedstorage/item/itemblock/ItemBlockBase.java rename to src/main/java/com/raoulvdberge/refinedstorage/item/blockitem/ItemBlockBase.java index 25b6e3857..35f419909 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/item/itemblock/ItemBlockBase.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/item/blockitem/ItemBlockBase.java @@ -1,4 +1,4 @@ -package com.raoulvdberge.refinedstorage.item.itemblock; +package com.raoulvdberge.refinedstorage.item.blockitem; import com.raoulvdberge.refinedstorage.block.BlockBase; import net.minecraft.item.BlockItem; diff --git a/src/main/java/com/raoulvdberge/refinedstorage/item/itemblock/ItemBlockEnergyItem.java b/src/main/java/com/raoulvdberge/refinedstorage/item/blockitem/ItemBlockEnergyItem.java similarity index 98% rename from src/main/java/com/raoulvdberge/refinedstorage/item/itemblock/ItemBlockEnergyItem.java rename to src/main/java/com/raoulvdberge/refinedstorage/item/blockitem/ItemBlockEnergyItem.java index 4425e0cef..04363c117 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/item/itemblock/ItemBlockEnergyItem.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/item/blockitem/ItemBlockEnergyItem.java @@ -1,4 +1,4 @@ -package com.raoulvdberge.refinedstorage.item.itemblock; +package com.raoulvdberge.refinedstorage.item.blockitem; import com.raoulvdberge.refinedstorage.block.BlockBase; import com.raoulvdberge.refinedstorage.item.capabilityprovider.CapabilityProviderEnergy; diff --git a/src/main/java/com/raoulvdberge/refinedstorage/item/itemblock/ItemBlockFluidStorage.java b/src/main/java/com/raoulvdberge/refinedstorage/item/blockitem/ItemBlockFluidStorage.java similarity index 98% rename from src/main/java/com/raoulvdberge/refinedstorage/item/itemblock/ItemBlockFluidStorage.java rename to src/main/java/com/raoulvdberge/refinedstorage/item/blockitem/ItemBlockFluidStorage.java index f96b86090..aaaad6c76 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/item/itemblock/ItemBlockFluidStorage.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/item/blockitem/ItemBlockFluidStorage.java @@ -1,4 +1,4 @@ -package com.raoulvdberge.refinedstorage.item.itemblock; +package com.raoulvdberge.refinedstorage.item.blockitem; import com.raoulvdberge.refinedstorage.block.BlockFluidStorage; diff --git a/src/main/java/com/raoulvdberge/refinedstorage/item/itemblock/ItemBlockPortableGrid.java b/src/main/java/com/raoulvdberge/refinedstorage/item/blockitem/ItemBlockPortableGrid.java similarity index 97% rename from src/main/java/com/raoulvdberge/refinedstorage/item/itemblock/ItemBlockPortableGrid.java rename to src/main/java/com/raoulvdberge/refinedstorage/item/blockitem/ItemBlockPortableGrid.java index cb6f45ff3..1b8b0cce2 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/item/itemblock/ItemBlockPortableGrid.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/item/blockitem/ItemBlockPortableGrid.java @@ -1,4 +1,4 @@ -package com.raoulvdberge.refinedstorage.item.itemblock; +package com.raoulvdberge.refinedstorage.item.blockitem; import com.raoulvdberge.refinedstorage.RS; import com.raoulvdberge.refinedstorage.block.BlockPortableGrid; diff --git a/src/main/java/com/raoulvdberge/refinedstorage/item/itemblock/ItemBlockStorage.java b/src/main/java/com/raoulvdberge/refinedstorage/item/blockitem/ItemBlockStorage.java similarity index 98% rename from src/main/java/com/raoulvdberge/refinedstorage/item/itemblock/ItemBlockStorage.java rename to src/main/java/com/raoulvdberge/refinedstorage/item/blockitem/ItemBlockStorage.java index faae72a9e..a62ab11e8 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/item/itemblock/ItemBlockStorage.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/item/blockitem/ItemBlockStorage.java @@ -1,4 +1,4 @@ -package com.raoulvdberge.refinedstorage.item.itemblock; +package com.raoulvdberge.refinedstorage.item.blockitem; import com.raoulvdberge.refinedstorage.block.BlockStorage; diff --git a/src/main/java/com/raoulvdberge/refinedstorage/item/group/MainItemGroup.java b/src/main/java/com/raoulvdberge/refinedstorage/item/group/MainItemGroup.java index 37bf3576a..bfe3f1724 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/item/group/MainItemGroup.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/item/group/MainItemGroup.java @@ -1,7 +1,7 @@ package com.raoulvdberge.refinedstorage.item.group; import com.raoulvdberge.refinedstorage.RS; -import net.minecraft.block.Blocks; +import com.raoulvdberge.refinedstorage.RSBlocks; import net.minecraft.item.ItemGroup; import net.minecraft.item.ItemStack; @@ -12,6 +12,6 @@ public class MainItemGroup extends ItemGroup { @Override public ItemStack createIcon() { - return new ItemStack(Blocks.DIRT); + return new ItemStack(RSBlocks.CREATIVE_CONTROLLER); } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/item/itemblock/ItemBlockController.java b/src/main/java/com/raoulvdberge/refinedstorage/item/itemblock/ItemBlockController.java deleted file mode 100644 index 14471d7f8..000000000 --- a/src/main/java/com/raoulvdberge/refinedstorage/item/itemblock/ItemBlockController.java +++ /dev/null @@ -1,60 +0,0 @@ -package com.raoulvdberge.refinedstorage.item.itemblock; - -import com.raoulvdberge.refinedstorage.block.BlockController; - -public class ItemBlockController extends ItemBlockBase { - public ItemBlockController(BlockController block) { - super(block); - - // setMaxStackSize(1); - } -/* TODO - @Override - public double getDurabilityForDisplay(ItemStack stack) { - return 1D - ((double) getEnergyStored(stack) / (double) RS.INSTANCE.config.controllerCapacity); - } - - @Override - public int getRGBDurabilityForDisplay(ItemStack stack) { - return MathHelper.hsvToRGB(Math.max(0.0F, (float) getEnergyStored(stack) / (float) RS.INSTANCE.config.controllerCapacity) / 3.0F, 1.0F, 1.0F); - } - - @Override - public boolean showDurabilityBar(ItemStack stack) { - return stack.getMetadata() != ControllerType.CREATIVE.getId(); - } - - @Override - public void addInformation(ItemStack stack, @Nullable World world, List tooltip, ITooltipFlag flag) { - super.addInformation(stack, world, tooltip, flag); - - if (stack.getMetadata() != ControllerType.CREATIVE.getId()) { - tooltip.add(I18n.format("misc.refinedstorage.energy_stored", getEnergyStored(stack), RS.INSTANCE.config.controllerCapacity)); - } - } - - public static int getEnergyStored(ItemStack stack) { - return (stack.hasTagCompound() && stack.getTagCompound().hasKey(TileController.NBT_ENERGY)) ? stack.getTagCompound().getInteger(TileController.NBT_ENERGY) : 0; - } - - @Override - public void onCreated(ItemStack stack, World world, PlayerEntity player) { - super.onCreated(stack, world, player); - - createStack(stack, 0); - } - - public static ItemStack createStack(ItemStack stack, int energy) { - CompoundNBT tag = stack.getTagCompound(); - - if (tag == null) { - tag = new CompoundNBT(); - } - - tag.putInt(TileController.NBT_ENERGY, stack.getMetadata() == ControllerType.CREATIVE.getId() ? RS.INSTANCE.config.controllerCapacity : energy); - - stack.setTagCompound(tag); - - return stack; - }*/ -} diff --git a/src/main/java/com/raoulvdberge/refinedstorage/network/MessageConfigSync.java.off b/src/main/java/com/raoulvdberge/refinedstorage/network/MessageConfigSync.java.off index da0682871..43fcf509c 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/network/MessageConfigSync.java.off +++ b/src/main/java/com/raoulvdberge/refinedstorage/network/MessageConfigSync.java.off @@ -1,7 +1,7 @@ package com.raoulvdberge.refinedstorage.network; import com.raoulvdberge.refinedstorage.RS; -import com.raoulvdberge.refinedstorage.RSConfig; +import com.raoulvdberge.refinedstorage.RSOldConfig; import io.netty.buffer.ByteBuf; import net.minecraftforge.fml.common.network.simpleimpl.IMessage; import net.minecraftforge.fml.common.network.simpleimpl.IMessageHandler; diff --git a/src/main/java/com/raoulvdberge/refinedstorage/screen/GuiController.java b/src/main/java/com/raoulvdberge/refinedstorage/screen/GuiController.java index 55ce68793..ac3e4163d 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/screen/GuiController.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/screen/GuiController.java @@ -6,7 +6,7 @@ import com.raoulvdberge.refinedstorage.container.ContainerController; import com.raoulvdberge.refinedstorage.screen.widget.ScrollbarWidget; import com.raoulvdberge.refinedstorage.screen.widget.sidebutton.SideButtonRedstoneMode; import com.raoulvdberge.refinedstorage.tile.ClientNode; -import com.raoulvdberge.refinedstorage.tile.TileController; +import com.raoulvdberge.refinedstorage.tile.ControllerTile; import com.raoulvdberge.refinedstorage.util.RenderUtils; import net.minecraft.client.renderer.RenderHelper; import net.minecraft.client.resources.I18n; @@ -17,7 +17,7 @@ import java.util.List; public class GuiController extends BaseScreen { private static final int VISIBLE_ROWS = 2; - private TileController controller; + private ControllerTile controller; private int barX = 8; private int barY = 20; @@ -26,7 +26,7 @@ public class GuiController extends BaseScreen { private ScrollbarWidget scrollbar; - public GuiController(ContainerController container, TileController controller, PlayerInventory inventory) { + public GuiController(ContainerController container, ControllerTile controller, PlayerInventory inventory) { super(container, 176, 181, inventory, null); this.controller = controller; @@ -36,7 +36,7 @@ public class GuiController extends BaseScreen { @Override public void init(int x, int y) { - addSideButton(new SideButtonRedstoneMode(this, TileController.REDSTONE_MODE)); + addSideButton(new SideButtonRedstoneMode(this, ControllerTile.REDSTONE_MODE)); } @Override @@ -53,14 +53,14 @@ public class GuiController extends BaseScreen { blit(x, y, 0, 0, xSize, ySize); - int barHeightNew = TileController.getEnergyScaled(TileController.ENERGY_STORED.getValue(), TileController.ENERGY_CAPACITY.getValue(), barHeight); + int barHeightNew = ControllerTile.getEnergyScaled(ControllerTile.ENERGY_STORED.getValue(), ControllerTile.ENERGY_CAPACITY.getValue(), barHeight); blit(x + barX, y + barY + barHeight - barHeightNew, 178, barHeight - barHeightNew, barWidth, barHeightNew); } @Override public void renderForeground(int mouseX, int mouseY) { - renderString(7, 7, I18n.format("gui.refinedstorage:controller." + controller.getControllerType().getId())); + // TODO renderString(7, 7, I18n.format("gui.refinedstorage:controller." + controller.getControllerType().getId())); renderString(7, 87, I18n.format("container.inventory")); int x = 33; @@ -70,7 +70,7 @@ public class GuiController extends BaseScreen { RenderHelper.enableGUIStandardItemLighting(); - List nodes = TileController.NODES.getValue(); + List nodes = ControllerTile.NODES.getValue(); ClientNode nodeHovering = null; @@ -114,12 +114,12 @@ public class GuiController extends BaseScreen { } if (RenderUtils.inBounds(barX, barY, barWidth, barHeight, mouseX, mouseY)) { - renderTooltip(mouseX, mouseY, I18n.format("misc.refinedstorage.energy_usage", TileController.ENERGY_USAGE.getValue()) + "\n" + I18n.format("misc.refinedstorage.energy_stored", TileController.ENERGY_STORED.getValue(), TileController.ENERGY_CAPACITY.getValue())); + renderTooltip(mouseX, mouseY, I18n.format("misc.refinedstorage.energy_usage", ControllerTile.ENERGY_USAGE.getValue()) + "\n" + I18n.format("misc.refinedstorage.energy_stored", ControllerTile.ENERGY_STORED.getValue(), ControllerTile.ENERGY_CAPACITY.getValue())); } } private int getRows() { - return Math.max(0, (int) Math.ceil((float) TileController.NODES.getValue().size() / 2F)); + return Math.max(0, (int) Math.ceil((float) ControllerTile.NODES.getValue().size() / 2F)); } private String trimNameIfNeeded(boolean scaled, String name) { diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileController.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/ControllerTile.java old mode 100755 new mode 100644 similarity index 88% rename from src/main/java/com/raoulvdberge/refinedstorage/tile/TileController.java rename to src/main/java/com/raoulvdberge/refinedstorage/tile/ControllerTile.java index 37d40313c..2d36e0474 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileController.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/ControllerTile.java @@ -2,7 +2,6 @@ package com.raoulvdberge.refinedstorage.tile; import com.google.common.base.Preconditions; import com.raoulvdberge.refinedstorage.RS; -import com.raoulvdberge.refinedstorage.RSBlocks; import com.raoulvdberge.refinedstorage.RSTiles; import com.raoulvdberge.refinedstorage.api.autocrafting.ICraftingManager; import com.raoulvdberge.refinedstorage.api.energy.IEnergy; @@ -36,16 +35,13 @@ import com.raoulvdberge.refinedstorage.apiimpl.storage.StorageCacheFluid; import com.raoulvdberge.refinedstorage.apiimpl.storage.StorageCacheItem; import com.raoulvdberge.refinedstorage.apiimpl.storage.StorageTrackerFluid; import com.raoulvdberge.refinedstorage.apiimpl.storage.StorageTrackerItem; -import com.raoulvdberge.refinedstorage.block.BlockController; -import com.raoulvdberge.refinedstorage.block.enums.ControllerEnergyType; -import com.raoulvdberge.refinedstorage.block.enums.ControllerType; +import com.raoulvdberge.refinedstorage.block.ControllerBlock; import com.raoulvdberge.refinedstorage.integration.forgeenergy.EnergyProxy; import com.raoulvdberge.refinedstorage.tile.config.IRedstoneConfigurable; import com.raoulvdberge.refinedstorage.tile.config.RedstoneMode; import com.raoulvdberge.refinedstorage.tile.data.RSSerializers; import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter; import com.raoulvdberge.refinedstorage.util.StackUtils; -import com.raoulvdberge.refinedstorage.util.WorldUtils; import net.minecraft.block.BlockState; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; @@ -73,7 +69,7 @@ import java.util.function.Predicate; import static com.raoulvdberge.refinedstorage.capability.CapabilityNetworkNodeProxy.NETWORK_NODE_PROXY_CAPABILITY; // TODO: Change INetwork to be offloaded from the tile. -public class TileController extends TileBase implements ITickableTileEntity, INetwork, IRedstoneConfigurable, INetworkNode, INetworkNodeProxy, INetworkNodeVisitor { +public class ControllerTile extends TileBase implements ITickableTileEntity, INetwork, IRedstoneConfigurable, INetworkNode, INetworkNodeProxy, INetworkNodeVisitor { private static final Comparator CLIENT_NODE_COMPARATOR = (left, right) -> { if (left.getEnergyUsage() == right.getEnergyUsage()) { return 0; @@ -82,11 +78,11 @@ public class TileController extends TileBase implements ITickableTileEntity, INe return (left.getEnergyUsage() > right.getEnergyUsage()) ? -1 : 1; }; - public static final TileDataParameter REDSTONE_MODE = RedstoneMode.createParameter(); - public static final TileDataParameter ENERGY_USAGE = new TileDataParameter<>(DataSerializers.VARINT, 0, TileController::getEnergyUsage); - public static final TileDataParameter ENERGY_STORED = new TileDataParameter<>(DataSerializers.VARINT, 0, t -> t.getEnergy().getStored()); - public static final TileDataParameter ENERGY_CAPACITY = new TileDataParameter<>(DataSerializers.VARINT, 0, t -> t.getEnergy().getCapacity()); - public static final TileDataParameter, TileController> NODES = new TileDataParameter<>(RSSerializers.CLIENT_NODE_SERIALIZER, new ArrayList<>(), t -> { + public static final TileDataParameter REDSTONE_MODE = RedstoneMode.createParameter(); + public static final TileDataParameter ENERGY_USAGE = new TileDataParameter<>(DataSerializers.VARINT, 0, ControllerTile::getEnergyUsage); + public static final TileDataParameter ENERGY_STORED = new TileDataParameter<>(DataSerializers.VARINT, 0, t -> t.getEnergy().getStored()); + public static final TileDataParameter ENERGY_CAPACITY = new TileDataParameter<>(DataSerializers.VARINT, 0, t -> t.getEnergy().getCapacity()); + public static final TileDataParameter, ControllerTile> NODES = new TileDataParameter<>(RSSerializers.CLIENT_NODE_SERIALIZER, new ArrayList<>(), t -> { List nodes = new ArrayList<>(); for (INetworkNode node : t.nodeGraph.all()) { @@ -142,23 +138,25 @@ public class TileController extends TileBase implements ITickableTileEntity, INe private IReaderWriterManager readerWriterManager = new ReaderWriterManager(this); - private final IEnergy energy = new Energy(RS.INSTANCE.config.controllerCapacity); - private final EnergyProxy energyProxy = new EnergyProxy(this.energy, RS.INSTANCE.config.controllerMaxReceive, 0); + private final IEnergy energy = new Energy(RS.CONFIG.getController().getCapacity()); + private final EnergyProxy energyProxy = new EnergyProxy(this.energy, RS.CONFIG.getController().getMaxReceive()); private final LazyOptional energyProxyCap = LazyOptional.of(() -> energyProxy); - private final LazyOptional> networkNodeProxyCap = LazyOptional.of(() -> this); + private final LazyOptional> networkNodeProxyCap = LazyOptional.of(() -> this); private boolean throttlingDisabled = true; // Will be enabled after first update private boolean couldRun; private int ticksSinceUpdateChanged; - private ControllerType type; - private ControllerEnergyType energyType = ControllerEnergyType.OFF; + private ControllerBlock.Type type; + private ControllerBlock.EnergyType lastEnergyType = ControllerBlock.EnergyType.OFF; private RedstoneMode redstoneMode = RedstoneMode.IGNORE; - public TileController() { - super(RSTiles.CONTROLLER); + public ControllerTile(ControllerBlock.Type type) { + super(type == ControllerBlock.Type.CREATIVE ? RSTiles.CREATIVE_CONTROLLER : RSTiles.CONTROLLER); + + this.type = type; dataManager.addWatchedParameter(REDSTONE_MODE); dataManager.addWatchedParameter(ENERGY_USAGE); @@ -177,7 +175,7 @@ public class TileController extends TileBase implements ITickableTileEntity, INe } }); - nodeGraph.addListener(() -> dataManager.sendParameterToWatchers(TileController.NODES)); + nodeGraph.addListener(() -> dataManager.sendParameterToWatchers(ControllerTile.NODES)); } @Override @@ -223,15 +221,15 @@ public class TileController extends TileBase implements ITickableTileEntity, INe } } - if (getControllerType() == ControllerType.NORMAL) { - if (!RS.INSTANCE.config.controllerUsesEnergy) { + if (type == ControllerBlock.Type.NORMAL) { + if (!RS.CONFIG.getController().getUseEnergy()) { this.energy.setStored(this.energy.getCapacity()); } else if (this.energy.extract(getEnergyUsage(), Action.SIMULATE) >= 0) { this.energy.extract(getEnergyUsage(), Action.PERFORM); } else { this.energy.setStored(0); } - } else if (getControllerType() == ControllerType.CREATIVE) { + } else if (type == ControllerBlock.Type.CREATIVE) { this.energy.setStored(this.energy.getCapacity()); } @@ -252,12 +250,12 @@ public class TileController extends TileBase implements ITickableTileEntity, INe ticksSinceUpdateChanged = 0; } - ControllerEnergyType energyType = getEnergyType(); + ControllerBlock.EnergyType energyType = getEnergyType(); - if (this.energyType != energyType) { - this.energyType = energyType; + if (lastEnergyType != energyType) { + lastEnergyType = energyType; - WorldUtils.updateBlock(world, pos); + world.setBlockState(pos, world.getBlockState(pos).with(ControllerBlock.ENERGY_TYPE, energyType)); } } } @@ -561,7 +559,7 @@ public class TileController extends TileBase implements ITickableTileEntity, INe public CompoundNBT writeUpdate(CompoundNBT tag) { super.writeUpdate(tag); - tag.putInt(NBT_ENERGY_TYPE, getEnergyType().getId()); + tag.putInt(NBT_ENERGY_TYPE, getEnergyType().ordinal()); return tag; } @@ -569,7 +567,7 @@ public class TileController extends TileBase implements ITickableTileEntity, INe @Override public void readUpdate(CompoundNBT tag) { if (tag.contains(NBT_ENERGY_TYPE)) { - this.energyType = ControllerEnergyType.getById(tag.getInt(NBT_ENERGY_TYPE)); + world.setBlockState(pos, world.getBlockState(pos).with(ControllerBlock.ENERGY_TYPE, ControllerBlock.EnergyType.values()[tag.getInt(NBT_ENERGY_TYPE)])); } super.readUpdate(tag); @@ -579,32 +577,28 @@ public class TileController extends TileBase implements ITickableTileEntity, INe return (int) ((float) stored / (float) capacity * (float) scale); } - public static ControllerEnergyType getEnergyType(int stored, int capacity) { - int energy = getEnergyScaled(stored, capacity, 100); - - if (energy <= 0) { - return ControllerEnergyType.OFF; - } else if (energy <= 10) { - return ControllerEnergyType.NEARLY_OFF; - } else if (energy <= 20) { - return ControllerEnergyType.NEARLY_ON; - } - - return ControllerEnergyType.ON; - } - - public ControllerEnergyType getEnergyType() { - if (world.isRemote) { - return energyType; - } - + private ControllerBlock.EnergyType getEnergyType() { if (!redstoneMode.isEnabled(world, pos)) { - return ControllerEnergyType.OFF; + return ControllerBlock.EnergyType.OFF; } return getEnergyType(this.energy.getStored(), this.energy.getCapacity()); } + private static ControllerBlock.EnergyType getEnergyType(int stored, int capacity) { + int energy = getEnergyScaled(stored, capacity, 100); + + if (energy <= 0) { + return ControllerBlock.EnergyType.OFF; + } else if (energy <= 10) { + return ControllerBlock.EnergyType.NEARLY_OFF; + } else if (energy <= 20) { + return ControllerBlock.EnergyType.NEARLY_ON; + } + + return ControllerBlock.EnergyType.ON; + } + @Override public RedstoneMode getRedstoneMode() { return redstoneMode; @@ -619,7 +613,7 @@ public class TileController extends TileBase implements ITickableTileEntity, INe @Override public int getEnergyUsage() { - int usage = RS.INSTANCE.config.controllerBaseUsage; + int usage = RS.CONFIG.getController().getBaseUsage(); for (INetworkNode node : nodeGraph.all()) { if (node.canUpdate()) { @@ -665,18 +659,6 @@ public class TileController extends TileBase implements ITickableTileEntity, INe // This is update from INetworkNode } - public ControllerType getControllerType() { - if (type == null) { - BlockState state = world.getBlockState(pos); - - if (state.getBlock() == RSBlocks.CONTROLLER) { - this.type = state.get(BlockController.TYPE); - } - } - - return type == null ? ControllerType.NORMAL : type; - } - @Nonnull @Override public LazyOptional getCapability(@Nonnull Capability cap) { @@ -693,7 +675,7 @@ public class TileController extends TileBase implements ITickableTileEntity, INe @Override @Nonnull - public TileController getNode() { + public ControllerTile getNode() { return this; } @@ -724,7 +706,7 @@ public class TileController extends TileBase implements ITickableTileEntity, INe // Cannot use API#getNetworkNodeHashCode or API#isNetworkNodeEqual: it will crash with a AbstractMethodError (getPos). @Override public boolean equals(Object o) { - if (!(o instanceof TileController)) { + if (!(o instanceof ControllerTile)) { return false; } @@ -732,7 +714,7 @@ public class TileController extends TileBase implements ITickableTileEntity, INe return true; } - TileController otherController = (TileController) o; + ControllerTile otherController = (ControllerTile) o; if (world.getDimension().getType() != otherController.world.getDimension().getType()) { return false; diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileBase.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileBase.java index afa1df68f..204a420e2 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileBase.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileBase.java @@ -3,7 +3,6 @@ package com.raoulvdberge.refinedstorage.tile; import com.raoulvdberge.refinedstorage.tile.data.TileDataManager; import com.raoulvdberge.refinedstorage.tile.direction.DirectionHandlerTile; import com.raoulvdberge.refinedstorage.tile.direction.IDirectionHandler; -import com.raoulvdberge.refinedstorage.util.WorldUtils; import net.minecraft.nbt.CompoundNBT; import net.minecraft.network.NetworkManager; import net.minecraft.network.play.server.SUpdateTileEntityPacket; @@ -66,13 +65,13 @@ public abstract class TileBase extends TileEntity { } public void readUpdate(CompoundNBT tag) { - boolean doRender = canCauseRenderUpdate(tag); + /*boolean doRender = canCauseRenderUpdate(tag); clientDirection = Direction.byIndex(tag.getInt(NBT_DIRECTION)); if (doRender) { WorldUtils.updateBlock(world, pos); - } + }*/ } protected boolean canCauseRenderUpdate(CompoundNBT tag) { diff --git a/src/main/java/com/raoulvdberge/refinedstorage/util/WorldUtils.java b/src/main/java/com/raoulvdberge/refinedstorage/util/WorldUtils.java index fb7b292cc..73122985c 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/util/WorldUtils.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/util/WorldUtils.java @@ -22,6 +22,7 @@ import net.minecraftforge.items.wrapper.SidedInvWrapper; import javax.annotation.Nullable; public final class WorldUtils { + // TODO REMOVE. Can just use setBlockState now. public static void updateBlock(@Nullable World world, BlockPos pos) { if (world != null) { BlockState state = world.getBlockState(pos); diff --git a/src/main/resources/assets/refinedstorage/blockstates/controller.json b/src/main/resources/assets/refinedstorage/blockstates/controller.json index f6da20ef9..815c12357 100755 --- a/src/main/resources/assets/refinedstorage/blockstates/controller.json +++ b/src/main/resources/assets/refinedstorage/blockstates/controller.json @@ -1,44 +1,16 @@ { - "forge_marker": 1, - "defaults": { - "model": "refinedstorage:cube_all_cutout", - "textures": { - "particle": "refinedstorage:blocks/controller/controller_off", - "all": "refinedstorage:blocks/controller/controller_off", - "cutout": "refinedstorage:blocks/controller/cutouts/off" - } - }, "variants": { - "inventory": [ - { - "transform": "forge:default-block" - } - ], - "energy_type": { - "off": { - }, - "nearly_off": { - "model": "refinedstorage:controller_nearly_on_off", - "textures": { - "all": "refinedstorage:blocks/controller/controller", - "cutout": "refinedstorage:blocks/controller/cutouts/nearly_off", - "cutout_gray": "refinedstorage:blocks/controller/cutouts/nearly_off_gray" - } - }, - "nearly_on": { - "model": "refinedstorage:controller_nearly_on_off", - "textures": { - "all": "refinedstorage:blocks/controller/controller", - "cutout": "refinedstorage:blocks/controller/cutouts/nearly_on", - "cutout_gray": "refinedstorage:blocks/controller/cutouts/nearly_on_gray" - } - }, - "on": { - "textures": { - "all": "refinedstorage:blocks/controller/controller", - "cutout": "refinedstorage:blocks/controller/cutouts/on" - } - } + "energy_type=off": { + "model": "refinedstorage:block/controller/controller_off" + }, + "energy_type=nearly_off": { + "model": "refinedstorage:block/controller/controller_nearly_off" + }, + "energy_type=nearly_on": { + "model": "refinedstorage:block/controller/controller_nearly_on" + }, + "energy_type=on": { + "model": "refinedstorage:block/controller/controller_on" } } -} \ No newline at end of file +} diff --git a/src/main/resources/assets/refinedstorage/blockstates/creative_controller.json b/src/main/resources/assets/refinedstorage/blockstates/creative_controller.json new file mode 100644 index 000000000..815c12357 --- /dev/null +++ b/src/main/resources/assets/refinedstorage/blockstates/creative_controller.json @@ -0,0 +1,16 @@ +{ + "variants": { + "energy_type=off": { + "model": "refinedstorage:block/controller/controller_off" + }, + "energy_type=nearly_off": { + "model": "refinedstorage:block/controller/controller_nearly_off" + }, + "energy_type=nearly_on": { + "model": "refinedstorage:block/controller/controller_nearly_on" + }, + "energy_type=on": { + "model": "refinedstorage:block/controller/controller_on" + } + } +} diff --git a/src/main/resources/assets/refinedstorage/blockstates/machine_casing.json b/src/main/resources/assets/refinedstorage/blockstates/machine_casing.json index 88f2eceb7..f5f0959f8 100755 --- a/src/main/resources/assets/refinedstorage/blockstates/machine_casing.json +++ b/src/main/resources/assets/refinedstorage/blockstates/machine_casing.json @@ -1,19 +1,7 @@ { - "forge_marker": 1, - "defaults": { - "model": "cube_all", - "textures": { - "all": "refinedstorage:blocks/machine_casing" - } - }, "variants": { - "inventory": [ - { - "transform": "forge:default-block" - } - ], - "normal": { - "model": "cube_all" + "": { + "model": "refinedstorage:block/machine_casing" } } } \ No newline at end of file diff --git a/src/main/resources/assets/refinedstorage/lang/en_us.json b/src/main/resources/assets/refinedstorage/lang/en_us.json index dff9547da..6d463ad2d 100644 --- a/src/main/resources/assets/refinedstorage/lang/en_us.json +++ b/src/main/resources/assets/refinedstorage/lang/en_us.json @@ -176,8 +176,8 @@ "sidebutton.refinedstorage:access_type.0": "Insert and extract", "sidebutton.refinedstorage:access_type.1": "Insert only", "sidebutton.refinedstorage:access_type.2": "Extract only", - "block.refinedstorage:controller.0": "Controller", - "block.refinedstorage:controller.1": "Creative Controller", + "block.refinedstorage.controller": "Controller", + "block.refinedstorage.creative_controller": "Creative Controller", "block.refinedstorage:cable": "Cable", "block.refinedstorage:grid.0": "Grid", "block.refinedstorage:grid.1": "Crafting Grid", @@ -189,7 +189,7 @@ "block.refinedstorage:importer": "Importer", "block.refinedstorage:exporter": "Exporter", "block.refinedstorage:detector": "Detector", - "block.refinedstorage:machine_casing": "Machine Casing", + "block.refinedstorage.machine_casing": "Machine Casing", "block.refinedstorage:destructor": "Destructor", "block.refinedstorage:constructor": "Constructor", "block.refinedstorage:storage.0": "1k Storage Block", diff --git a/src/main/resources/assets/refinedstorage/models/block/controller/controller_nearly.json b/src/main/resources/assets/refinedstorage/models/block/controller/controller_nearly.json new file mode 100644 index 000000000..13e17586b --- /dev/null +++ b/src/main/resources/assets/refinedstorage/models/block/controller/controller_nearly.json @@ -0,0 +1,43 @@ +{ + "parent": "refinedstorage:block/cube_all_cutout", + "elements": [ + { + "from": [ + 0, + 0, + 0 + ], + "to": [ + 16, + 16, + 16 + ], + "faces": { + "up": { + "texture": "#cutout_gray", + "cullface": "up" + }, + "down": { + "texture": "#cutout_gray", + "cullface": "down" + }, + "north": { + "texture": "#cutout_gray", + "cullface": "north" + }, + "south": { + "texture": "#cutout_gray", + "cullface": "south" + }, + "west": { + "texture": "#cutout_gray", + "cullface": "west" + }, + "east": { + "texture": "#cutout_gray", + "cullface": "east" + } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/refinedstorage/models/block/controller/controller_nearly_off.json b/src/main/resources/assets/refinedstorage/models/block/controller/controller_nearly_off.json new file mode 100644 index 000000000..3f1fac213 --- /dev/null +++ b/src/main/resources/assets/refinedstorage/models/block/controller/controller_nearly_off.json @@ -0,0 +1,9 @@ +{ + "parent": "refinedstorage:block/controller/controller_nearly", + "textures": { + "particle": "refinedstorage:block/controller/controller_off", + "all": "refinedstorage:block/controller/controller", + "cutout": "refinedstorage:block/controller/cutouts/nearly_off", + "cutout_gray": "refinedstorage:block/controller/cutouts/nearly_off_gray" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/refinedstorage/models/block/controller/controller_nearly_on.json b/src/main/resources/assets/refinedstorage/models/block/controller/controller_nearly_on.json new file mode 100644 index 000000000..edd905f55 --- /dev/null +++ b/src/main/resources/assets/refinedstorage/models/block/controller/controller_nearly_on.json @@ -0,0 +1,9 @@ +{ + "parent": "refinedstorage:block/controller/controller_nearly", + "textures": { + "particle": "refinedstorage:block/controller/controller_off", + "all": "refinedstorage:block/controller/controller", + "cutout": "refinedstorage:block/controller/cutouts/nearly_on", + "cutout_gray": "refinedstorage:block/controller/cutouts/nearly_on_gray" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/refinedstorage/models/block/controller/controller_off.json b/src/main/resources/assets/refinedstorage/models/block/controller/controller_off.json new file mode 100644 index 000000000..c4ed3e130 --- /dev/null +++ b/src/main/resources/assets/refinedstorage/models/block/controller/controller_off.json @@ -0,0 +1,8 @@ +{ + "parent": "refinedstorage:block/cube_all_cutout", + "textures": { + "particle": "refinedstorage:block/controller/controller_off", + "all": "refinedstorage:block/controller/controller_off", + "cutout": "refinedstorage:block/controller/cutouts/off" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/refinedstorage/models/block/controller/controller_on.json b/src/main/resources/assets/refinedstorage/models/block/controller/controller_on.json new file mode 100644 index 000000000..c9552ff2b --- /dev/null +++ b/src/main/resources/assets/refinedstorage/models/block/controller/controller_on.json @@ -0,0 +1,8 @@ +{ + "parent": "refinedstorage:block/cube_all_cutout", + "textures": { + "particle": "refinedstorage:block/controller/controller_off", + "all": "refinedstorage:block/controller/controller", + "cutout": "refinedstorage:block/controller/cutouts/on" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/refinedstorage/models/block/controller_nearly_on_off.json b/src/main/resources/assets/refinedstorage/models/block/controller_nearly_on_off.json deleted file mode 100644 index 99cab458b..000000000 --- a/src/main/resources/assets/refinedstorage/models/block/controller_nearly_on_off.json +++ /dev/null @@ -1,119 +0,0 @@ -{ - "parent": "block/cube", - "elements": [ - { - "from": [ - 0, - 0, - 0 - ], - "to": [ - 16, - 16, - 16 - ], - "faces": { - "down": { - "texture": "#all", - "cullface": "down" - }, - "up": { - "texture": "#all", - "cullface": "up" - }, - "north": { - "texture": "#all", - "cullface": "north" - }, - "south": { - "texture": "#all", - "cullface": "south" - }, - "west": { - "texture": "#all", - "cullface": "west" - }, - "east": { - "texture": "#all", - "cullface": "east" - } - } - }, - { - "from": [ - 0, - 0, - 0 - ], - "to": [ - 16, - 16, - 16 - ], - "faces": { - "up": { - "texture": "#cutout", - "cullface": "up" - }, - "down": { - "texture": "#cutout", - "cullface": "down" - }, - "north": { - "texture": "#cutout", - "cullface": "north" - }, - "south": { - "texture": "#cutout", - "cullface": "south" - }, - "west": { - "texture": "#cutout", - "cullface": "west" - }, - "east": { - "texture": "#cutout", - "cullface": "east" - } - } - }, - { - "from": [ - 0, - 0, - 0 - ], - "to": [ - 16, - 16, - 16 - ], - "faces": { - "up": { - "texture": "#cutout_gray", - "cullface": "up" - }, - "down": { - "texture": "#cutout_gray", - "cullface": "down" - }, - "north": { - "texture": "#cutout_gray", - "cullface": "north" - }, - "south": { - "texture": "#cutout_gray", - "cullface": "south" - }, - "west": { - "texture": "#cutout_gray", - "cullface": "west" - }, - "east": { - "texture": "#cutout_gray", - "cullface": "east" - } - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/refinedstorage/models/block/machine_casing.json b/src/main/resources/assets/refinedstorage/models/block/machine_casing.json new file mode 100644 index 000000000..6b03a93cb --- /dev/null +++ b/src/main/resources/assets/refinedstorage/models/block/machine_casing.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cube_all", + "textures": { + "all": "refinedstorage:block/machine_casing" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/refinedstorage/models/item/controller.json b/src/main/resources/assets/refinedstorage/models/item/controller.json new file mode 100644 index 000000000..75552cac2 --- /dev/null +++ b/src/main/resources/assets/refinedstorage/models/item/controller.json @@ -0,0 +1,3 @@ +{ + "parent": "refinedstorage:block/controller/controller_off" +} \ No newline at end of file diff --git a/src/main/resources/assets/refinedstorage/models/item/creative_controller.json b/src/main/resources/assets/refinedstorage/models/item/creative_controller.json new file mode 100644 index 000000000..9728c7205 --- /dev/null +++ b/src/main/resources/assets/refinedstorage/models/item/creative_controller.json @@ -0,0 +1,3 @@ +{ + "parent": "refinedstorage:block/controller/controller_on" +} \ No newline at end of file diff --git a/src/main/resources/assets/refinedstorage/models/item/machine_casing.json b/src/main/resources/assets/refinedstorage/models/item/machine_casing.json new file mode 100644 index 000000000..1016a05c7 --- /dev/null +++ b/src/main/resources/assets/refinedstorage/models/item/machine_casing.json @@ -0,0 +1,3 @@ +{ + "parent": "refinedstorage:block/machine_casing" +} \ No newline at end of file diff --git a/src/main/resources/assets/refinedstorage/recipes/controller.json b/src/main/resources/data/refinedstorage/recipes/controller.json similarity index 66% rename from src/main/resources/assets/refinedstorage/recipes/controller.json rename to src/main/resources/data/refinedstorage/recipes/controller.json index 1fee45777..e56f06548 100644 --- a/src/main/resources/assets/refinedstorage/recipes/controller.json +++ b/src/main/resources/data/refinedstorage/recipes/controller.json @@ -10,18 +10,16 @@ "item": "refinedstorage:quartz_enriched_iron" }, "P": { - "item": "#advanced_processor" + "item": "refinedstorage:advanced_processor" }, "S": { - "type": "forge:ore_dict", - "ore": "itemSilicon" + "tag": "refinedstorage:silicons" }, "M": { "item": "refinedstorage:machine_casing" } }, "result": { - "item": "refinedstorage:controller", - "data": 0 + "item": "refinedstorage:controller" } } \ No newline at end of file diff --git a/src/main/resources/assets/refinedstorage/recipes/machine_casing.json b/src/main/resources/data/refinedstorage/recipes/machine_casing.json similarity index 83% rename from src/main/resources/assets/refinedstorage/recipes/machine_casing.json rename to src/main/resources/data/refinedstorage/recipes/machine_casing.json index 121b6b010..6d3573d45 100644 --- a/src/main/resources/assets/refinedstorage/recipes/machine_casing.json +++ b/src/main/resources/data/refinedstorage/recipes/machine_casing.json @@ -10,8 +10,7 @@ "item": "refinedstorage:quartz_enriched_iron" }, "S": { - "type": "forge:ore_dict", - "ore": "stone" + "tag": "forge:stone" } }, "result": {