From 5511b598d7c32f5e8ff944fc15f8bfcdf4e0a143 Mon Sep 17 00:00:00 2001 From: modmuss50 Date: Mon, 19 Aug 2019 13:52:42 +0100 Subject: [PATCH] Solid Canning Machine --- .../tier1/SoildCanningMachineBlockEntity.java | 59 ++++++++++++++++ src/main/java/techreborn/client/EGui.java | 1 + .../java/techreborn/client/GuiHandler.java | 2 + .../client/gui/GuiSolidCanningMachine.java | 67 +++++++++++++++++++ .../techreborn/config/TechRebornConfig.java | 6 ++ src/main/java/techreborn/init/ModRecipes.java | 2 +- .../java/techreborn/init/TRBlockEntities.java | 1 + src/main/java/techreborn/init/TRContent.java | 1 + .../blockstates/solid_canning_machine.json | 12 ++++ .../assets/techreborn/lang/en_us.json | 1 + .../models/item/solid_canning_machine.json | 3 + .../solid_canning_machine/bio_cell.json | 22 ++++++ 12 files changed, 176 insertions(+), 1 deletion(-) create mode 100644 src/main/java/techreborn/blockentity/machine/tier1/SoildCanningMachineBlockEntity.java create mode 100644 src/main/java/techreborn/client/gui/GuiSolidCanningMachine.java create mode 100644 src/main/resources/assets/techreborn/blockstates/solid_canning_machine.json create mode 100644 src/main/resources/assets/techreborn/models/item/solid_canning_machine.json create mode 100644 src/main/resources/data/techreborn/recipes/solid_canning_machine/bio_cell.json diff --git a/src/main/java/techreborn/blockentity/machine/tier1/SoildCanningMachineBlockEntity.java b/src/main/java/techreborn/blockentity/machine/tier1/SoildCanningMachineBlockEntity.java new file mode 100644 index 000000000..e45126aad --- /dev/null +++ b/src/main/java/techreborn/blockentity/machine/tier1/SoildCanningMachineBlockEntity.java @@ -0,0 +1,59 @@ +/* + * This file is part of TechReborn, licensed under the MIT License (MIT). + * + * Copyright (c) 2018 TechReborn + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +package techreborn.blockentity.machine.tier1; + +import net.minecraft.entity.player.PlayerEntity; +import reborncore.client.containerBuilder.IContainerProvider; +import reborncore.client.containerBuilder.builder.BuiltContainer; +import reborncore.client.containerBuilder.builder.ContainerBuilder; +import reborncore.common.recipes.RecipeCrafter; +import reborncore.common.util.RebornInventory; +import techreborn.blockentity.GenericMachineBlockEntity; +import techreborn.config.TechRebornConfig; +import techreborn.init.ModRecipes; +import techreborn.init.TRBlockEntities; +import techreborn.init.TRContent; + +public class SoildCanningMachineBlockEntity extends GenericMachineBlockEntity implements IContainerProvider { + + public SoildCanningMachineBlockEntity() { + super(TRBlockEntities.SOLID_CANNING_MACHINE, "SolidCanningMachine", TechRebornConfig.solidCanningMachineMaxInput, TechRebornConfig.solidFuelGeneratorMaxEnergy, TRContent.Machine.SOLID_CANNING_MACHINE.block, 3); + final int[] inputs = new int[] { 0, 1 }; + final int[] outputs = new int[] { 2 }; + this.inventory = new RebornInventory<>(4, "SolidCanningMachineBlockEntity", 64, this); + this.crafter = new RecipeCrafter(ModRecipes.SOLID_CANNING_MACHINE, this, 2, 1, this.inventory, inputs, outputs); + } + + // IContainerProvider + @Override + public BuiltContainer createContainer(int syncID, final PlayerEntity player) { + return new ContainerBuilder("solidcanningmachine").player(player.inventory).inventory().hotbar() + .addInventory().blockEntity(this) + .slot(0, 34, 47) + .slot(1, 126, 47) + .outputSlot(2, 80, 47).energySlot(3, 8, 72).syncEnergyValue().syncCrafterValue().addInventory() + .create(this, syncID); + } +} diff --git a/src/main/java/techreborn/client/EGui.java b/src/main/java/techreborn/client/EGui.java index 606dc5c47..536c6f2d3 100644 --- a/src/main/java/techreborn/client/EGui.java +++ b/src/main/java/techreborn/client/EGui.java @@ -78,6 +78,7 @@ public enum EGui implements IMachineGuiHandler { SEMIFLUID_GENERATOR(true), THERMAL_GENERATOR(true), VACUUM_FREEZER(true), + SOLID_CANNING_MACHINE(true), FLUID_REPLICATOR(true); private final boolean containerBuilder; diff --git a/src/main/java/techreborn/client/GuiHandler.java b/src/main/java/techreborn/client/GuiHandler.java index e7bb4a43e..6b2658a14 100644 --- a/src/main/java/techreborn/client/GuiHandler.java +++ b/src/main/java/techreborn/client/GuiHandler.java @@ -162,6 +162,8 @@ public class GuiHandler { return new GuiDistillationTower(syncID, player, (DistillationTowerBlockEntity) blockEntity); case FLUID_REPLICATOR: return new GuiFluidReplicator(syncID, player, (FluidReplicatorBlockEntity) blockEntity); + case SOLID_CANNING_MACHINE: + return new GuiSolidCanningMachine(syncID, player, (SoildCanningMachineBlockEntity) blockEntity); default: break; diff --git a/src/main/java/techreborn/client/gui/GuiSolidCanningMachine.java b/src/main/java/techreborn/client/gui/GuiSolidCanningMachine.java new file mode 100644 index 000000000..78c065bb1 --- /dev/null +++ b/src/main/java/techreborn/client/gui/GuiSolidCanningMachine.java @@ -0,0 +1,67 @@ +/* + * This file is part of TechReborn, licensed under the MIT License (MIT). + * + * Copyright (c) 2018 TechReborn + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +package techreborn.client.gui; + +import net.minecraft.entity.player.PlayerEntity; +import reborncore.client.containerBuilder.builder.BuiltContainer; +import reborncore.client.gui.builder.GuiBase; +import reborncore.client.gui.guibuilder.GuiBuilder; +import techreborn.blockentity.machine.tier1.AlloySmelterBlockEntity; +import techreborn.blockentity.machine.tier1.SoildCanningMachineBlockEntity; + +public class GuiSolidCanningMachine extends GuiBase { + + SoildCanningMachineBlockEntity blockEntity; + + public GuiSolidCanningMachine(int syncID, final PlayerEntity player, final SoildCanningMachineBlockEntity blockEntity) { + super(player, blockEntity, blockEntity.createContainer(syncID, player)); + this.blockEntity = blockEntity; + + } + + @Override + protected void drawBackground(final float f, final int mouseX, final int mouseY) { + super.drawBackground(f, mouseX, mouseY); + final Layer layer = Layer.BACKGROUND; + + drawSlot(8, 72, layer); + + drawSlot(34, 47, layer); + drawSlot(126, 47, layer); + drawOutputSlot(80, 47, layer); + + builder.drawJEIButton(this, 158, 5, layer); + } + + @Override + protected void drawForeground(final int mouseX, final int mouseY) { + super.drawForeground(mouseX, mouseY); + final Layer layer = Layer.FOREGROUND; + + builder.drawProgressBar(this, blockEntity.getProgressScaled(100), 100, 55, 51, mouseX, mouseY, GuiBuilder.ProgressDirection.RIGHT, layer); + builder.drawProgressBar(this, blockEntity.getProgressScaled(100), 100, 105, 51, mouseX, mouseY, GuiBuilder.ProgressDirection.LEFT, layer); + builder.drawMultiEnergyBar(this, 9, 19, (int) blockEntity.getEnergy(), (int) blockEntity.getMaxPower(), mouseX, mouseY, 0, layer); + } +} diff --git a/src/main/java/techreborn/config/TechRebornConfig.java b/src/main/java/techreborn/config/TechRebornConfig.java index 348667606..3be810c7e 100644 --- a/src/main/java/techreborn/config/TechRebornConfig.java +++ b/src/main/java/techreborn/config/TechRebornConfig.java @@ -484,4 +484,10 @@ public class TechRebornConfig { @Config(config = "misc", category = "general", key = "manualRefund", comment = "Allow refunding items used to craft the manual") public static boolean allowManualRefund = true; + + @Config(config = "machines", category = "solid_canning_machine", key = "solidCanningMachineMaxInput", comment = "Solid Canning Machine Max Input (Value in EU)") + public static int solidCanningMachineMaxInput = 32; + + @Config(config = "machines", category = "solid_canning_machine", key = "solidCanningMachineMaxInput", comment = "Solid Canning Machine Max Energy (Value in EU)") + public static int solidCanningMachineMaxEnergy = 1_000; } diff --git a/src/main/java/techreborn/init/ModRecipes.java b/src/main/java/techreborn/init/ModRecipes.java index 2b5346e9d..b8ead5bf6 100644 --- a/src/main/java/techreborn/init/ModRecipes.java +++ b/src/main/java/techreborn/init/ModRecipes.java @@ -51,5 +51,5 @@ public class ModRecipes { public static final RebornRecipeType FLUID_REPLICATOR = RecipeManager.newRecipeType(FluidReplicatorRecipe.class, new Identifier("techreborn:fluid_replicator")); public static final RebornRecipeType FUSION_REACTOR = RecipeManager.newRecipeType(FusionReactorRecipe.class, new Identifier("techreborn:fusion_reactor")); public static final RebornRecipeType ROLLING_MACHINE = RecipeManager.newRecipeType(RollingMachineRecipe.class, new Identifier("techreborn:rolling_machine")); - + public static final RebornRecipeType SOLID_CANNING_MACHINE = RecipeManager.newRecipeType(RebornRecipe.class, new Identifier("techreborn:solid_canning_machine")); } diff --git a/src/main/java/techreborn/init/TRBlockEntities.java b/src/main/java/techreborn/init/TRBlockEntities.java index 802e626aa..f04548bf8 100644 --- a/src/main/java/techreborn/init/TRBlockEntities.java +++ b/src/main/java/techreborn/init/TRBlockEntities.java @@ -124,6 +124,7 @@ public class TRBlockEntities { public static final BlockEntityType LAMP = register(LampBlockEntity.class, "lamp", TRContent.Machine.LAMP_INCANDESCENT, TRContent.Machine.LAMP_LED); public static final BlockEntityType ALARM = register(AlarmBlockEntity.class, "alarm", TRContent.Machine.ALARM); public static final BlockEntityType FLUID_REPLICATOR = register(FluidReplicatorBlockEntity.class, "fluid_replicator", TRContent.Machine.FLUID_REPLICATOR); + public static final BlockEntityType SOLID_CANNING_MACHINE = register(SoildCanningMachineBlockEntity.class, "solid_canning_machine", TRContent.Machine.SOLID_CANNING_MACHINE); public static BlockEntityType register(Class tClass, String name, ItemConvertible... items) { return register(tClass, name, Arrays.stream(items).map(itemConvertible -> Block.getBlockFromItem(itemConvertible.asItem())).toArray(Block[]::new)); diff --git a/src/main/java/techreborn/init/TRContent.java b/src/main/java/techreborn/init/TRContent.java index 0875b7da7..56f78c400 100644 --- a/src/main/java/techreborn/init/TRContent.java +++ b/src/main/java/techreborn/init/TRContent.java @@ -397,6 +397,7 @@ public class TRContent { ROLLING_MACHINE(new GenericMachineBlock(EGui.ROLLING_MACHINE, RollingMachineBlockEntity::new)), SCRAPBOXINATOR(new GenericMachineBlock(EGui.SCRAPBOXINATOR, ScrapboxinatorBlockEntity::new)), VACUUM_FREEZER(new GenericMachineBlock(EGui.VACUUM_FREEZER, VacuumFreezerBlockEntity::new)), + SOLID_CANNING_MACHINE(new GenericMachineBlock(EGui.SOLID_CANNING_MACHINE, SoildCanningMachineBlockEntity::new)), DIESEL_GENERATOR(new GenericMachineBlock(EGui.DIESEL_GENERATOR, DieselGeneratorBlockEntity::new)), DRAGON_EGG_SYPHON(new GenericMachineBlock(null, DragonEggSyphonBlockEntity::new)), diff --git a/src/main/resources/assets/techreborn/blockstates/solid_canning_machine.json b/src/main/resources/assets/techreborn/blockstates/solid_canning_machine.json new file mode 100644 index 000000000..587fa44dd --- /dev/null +++ b/src/main/resources/assets/techreborn/blockstates/solid_canning_machine.json @@ -0,0 +1,12 @@ +{ + "variants": { + "facing=north,active=false": { "model": "techreborn:block/machines/tier1_machines/compressor" }, + "facing=south,active=false": { "model": "techreborn:block/machines/tier1_machines/compressor", "y": 180 }, + "facing=west,active=false": { "model": "techreborn:block/machines/tier1_machines/compressor", "y": 270 }, + "facing=east,active=false": { "model": "techreborn:block/machines/tier1_machines/compressor", "y": 90 }, + "facing=north,active=true": { "model": "techreborn:block/machines/tier1_machines/compressor_on" }, + "facing=south,active=true": { "model": "techreborn:block/machines/tier1_machines/compressor_on", "y": 180 }, + "facing=west,active=true": { "model": "techreborn:block/machines/tier1_machines/compressor_on", "y": 270 }, + "facing=east,active=true": { "model": "techreborn:block/machines/tier1_machines/compressor_on", "y": 90 } + } +} diff --git a/src/main/resources/assets/techreborn/lang/en_us.json b/src/main/resources/assets/techreborn/lang/en_us.json index 6684cbdfb..9659e8bc0 100644 --- a/src/main/resources/assets/techreborn/lang/en_us.json +++ b/src/main/resources/assets/techreborn/lang/en_us.json @@ -78,6 +78,7 @@ "block.techreborn.lamp_led": "LED Lamp", "block.techreborn.alarm": "Alarm", "block.techreborn.farm": "Farm", + "block.techreborn.solid_canning_machine": "Solid Canning Machine", "_comment1": "Blocks", diff --git a/src/main/resources/assets/techreborn/models/item/solid_canning_machine.json b/src/main/resources/assets/techreborn/models/item/solid_canning_machine.json new file mode 100644 index 000000000..defba3162 --- /dev/null +++ b/src/main/resources/assets/techreborn/models/item/solid_canning_machine.json @@ -0,0 +1,3 @@ +{ + "parent": "techreborn:block/machines/tier1_machines/compressor" +} \ No newline at end of file diff --git a/src/main/resources/data/techreborn/recipes/solid_canning_machine/bio_cell.json b/src/main/resources/data/techreborn/recipes/solid_canning_machine/bio_cell.json new file mode 100644 index 000000000..c664d9f65 --- /dev/null +++ b/src/main/resources/data/techreborn/recipes/solid_canning_machine/bio_cell.json @@ -0,0 +1,22 @@ +{ + "type": "techreborn:solid_canning_machine", + "power": 1, + "time": 100, + "ingredients": [ + { + "item": "techreborn:cell", + "nbt": "empty" + }, + { + "item": "techreborn:compressed_plantball" + } + ], + "results": [ + { + "item": "techreborn:cell", + "nbt": { + "fluid": "techreborn:biofuel" + } + } + ] +} \ No newline at end of file