diff --git a/src/main/java/techreborn/blocks/GenericMachineBlock.java b/src/main/java/techreborn/blocks/GenericMachineBlock.java new file mode 100644 index 000000000..d7e691179 --- /dev/null +++ b/src/main/java/techreborn/blocks/GenericMachineBlock.java @@ -0,0 +1,48 @@ +/** + * + */ +package techreborn.blocks; + +import net.minecraft.block.entity.BlockEntity; +import net.minecraft.world.BlockView; +import reborncore.api.blockentity.IMachineGuiHandler; +import reborncore.common.blocks.BlockMachineBase; +import techreborn.client.EGui; + +/** + * @author drcrazy + * @param + * + */ +public class GenericMachineBlock extends BlockMachineBase { + + private EGui gui; + private Class blockEntityClass; + + public GenericMachineBlock(EGui gui, Class blockEntityClass) { + super(); + this.blockEntityClass = blockEntityClass; + this.gui = gui; + } + + @Override + public BlockEntity createBlockEntity(BlockView worldIn) { + if (blockEntityClass == null) { + return null; + } + BlockEntity blockEntity = null; + try { + blockEntity = (BlockEntity) blockEntityClass.newInstance(); + } catch (InstantiationException | IllegalAccessException e) { + throw new RuntimeException("Failed to create BlockEntity blockEntity", e); + } + + return blockEntity; + } + + @Override + public IMachineGuiHandler getGui() { + return gui; + } + +} diff --git a/src/main/java/techreborn/blocks/tier1/BlockAssemblingMachine.java b/src/main/java/techreborn/blocks/tier1/BlockAssemblingMachine.java deleted file mode 100644 index 8268279ee..000000000 --- a/src/main/java/techreborn/blocks/tier1/BlockAssemblingMachine.java +++ /dev/null @@ -1,49 +0,0 @@ -/* - * 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.blocks.tier1; - -import net.minecraft.block.entity.BlockEntity; -import net.minecraft.world.BlockView; -import reborncore.api.blockentity.IMachineGuiHandler; -import reborncore.common.blocks.BlockMachineBase; -import techreborn.client.EGui; -import techreborn.blockentity.machine.tier1.AssemblingMachineBlockEntity; - -public class BlockAssemblingMachine extends BlockMachineBase { - - public BlockAssemblingMachine() { - super(); - } - - @Override - public BlockEntity createBlockEntity(BlockView worldIn) { - return new AssemblingMachineBlockEntity(); - } - - @Override - public IMachineGuiHandler getGui() { - return EGui.ASSEMBLING_MACHINE; - } -} diff --git a/src/main/java/techreborn/blocks/tier1/BlockGrinder.java b/src/main/java/techreborn/blocks/tier1/BlockGrinder.java deleted file mode 100644 index 9eb103c73..000000000 --- a/src/main/java/techreborn/blocks/tier1/BlockGrinder.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * 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.blocks.tier1; - -import net.minecraft.block.entity.BlockEntity; -import net.minecraft.world.BlockView; -import reborncore.api.blockentity.IMachineGuiHandler; -import reborncore.common.blocks.BlockMachineBase; -import techreborn.client.EGui; -import techreborn.blockentity.machine.tier1.GrinderBlockEntity; - -public class BlockGrinder extends BlockMachineBase { - - @Override - public BlockEntity createBlockEntity(BlockView worldIn) { - return new GrinderBlockEntity(); - } - - @Override - public IMachineGuiHandler getGui() { - return EGui.GRINDER; - } -} diff --git a/src/main/java/techreborn/init/TRContent.java b/src/main/java/techreborn/init/TRContent.java index 3baa625ad..5f40e4e0b 100644 --- a/src/main/java/techreborn/init/TRContent.java +++ b/src/main/java/techreborn/init/TRContent.java @@ -48,12 +48,14 @@ import techreborn.blocks.tier3.*; import techreborn.blocks.transformers.BlockHVTransformer; import techreborn.blocks.transformers.BlockLVTransformer; import techreborn.blocks.transformers.BlockMVTransformer; +import techreborn.client.EGui; import techreborn.config.ConfigTechReborn; import techreborn.entities.EntityNukePrimed; import techreborn.items.ItemDynamicCell; import techreborn.items.ItemUpgrade; import techreborn.utils.InitUtils; import techreborn.blockentity.storage.AdjustableSUBlockEntity; +import techreborn.blockentity.machine.tier1.*; import javax.annotation.Nullable; import java.util.Arrays; @@ -364,14 +366,14 @@ public class TRContent { public enum Machine implements ItemConvertible { ALLOY_SMELTER(new BlockAlloySmelter()), - ASSEMBLY_MACHINE(new BlockAssemblingMachine()), + ASSEMBLY_MACHINE(new GenericMachineBlock(EGui.ASSEMBLING_MACHINE, AssemblingMachineBlockEntity.class)), AUTO_CRAFTING_TABLE(new BlockAutoCraftingTable()), CHEMICAL_REACTOR(new BlockChemicalReactor()), COMPRESSOR(new BlockCompressor()), DISTILLATION_TOWER(new BlockDistillationTower()), EXTRACTOR(new BlockExtractor()), FLUID_REPLICATOR(new BlockFluidReplicator()), - GRINDER(new BlockGrinder()), + GRINDER(new GenericMachineBlock(EGui.GRINDER, GrinderBlockEntity.class)), ELECTRIC_FURNACE(new BlockElectricFurnace()), IMPLOSION_COMPRESSOR(new BlockImplosionCompressor()), INDUSTRIAL_BLAST_FURNACE(new BlockIndustrialBlastFurnace()),