Solid Canning Machine

This commit is contained in:
modmuss50 2019-08-19 13:52:42 +01:00
parent 2d34ebc480
commit 5511b598d7
12 changed files with 176 additions and 1 deletions

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -51,5 +51,5 @@ public class ModRecipes {
public static final RebornRecipeType<FluidReplicatorRecipe> FLUID_REPLICATOR = RecipeManager.newRecipeType(FluidReplicatorRecipe.class, new Identifier("techreborn:fluid_replicator"));
public static final RebornRecipeType<FusionReactorRecipe> FUSION_REACTOR = RecipeManager.newRecipeType(FusionReactorRecipe.class, new Identifier("techreborn:fusion_reactor"));
public static final RebornRecipeType<RollingMachineRecipe> ROLLING_MACHINE = RecipeManager.newRecipeType(RollingMachineRecipe.class, new Identifier("techreborn:rolling_machine"));
public static final RebornRecipeType<RebornRecipe> SOLID_CANNING_MACHINE = RecipeManager.newRecipeType(RebornRecipe.class, new Identifier("techreborn:solid_canning_machine"));
}

View file

@ -124,6 +124,7 @@ public class TRBlockEntities {
public static final BlockEntityType<LampBlockEntity> LAMP = register(LampBlockEntity.class, "lamp", TRContent.Machine.LAMP_INCANDESCENT, TRContent.Machine.LAMP_LED);
public static final BlockEntityType<AlarmBlockEntity> ALARM = register(AlarmBlockEntity.class, "alarm", TRContent.Machine.ALARM);
public static final BlockEntityType<FluidReplicatorBlockEntity> FLUID_REPLICATOR = register(FluidReplicatorBlockEntity.class, "fluid_replicator", TRContent.Machine.FLUID_REPLICATOR);
public static final BlockEntityType<SoildCanningMachineBlockEntity> SOLID_CANNING_MACHINE = register(SoildCanningMachineBlockEntity.class, "solid_canning_machine", TRContent.Machine.SOLID_CANNING_MACHINE);
public static <T extends BlockEntity> BlockEntityType<T> register(Class<T> tClass, String name, ItemConvertible... items) {
return register(tClass, name, Arrays.stream(items).map(itemConvertible -> Block.getBlockFromItem(itemConvertible.asItem())).toArray(Block[]::new));

View file

@ -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)),

View file

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

View file

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

View file

@ -0,0 +1,3 @@
{
"parent": "techreborn:block/machines/tier1_machines/compressor"
}

View file

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