diff --git a/build.gradle b/build.gradle index c406bd2..914621c 100644 --- a/build.gradle +++ b/build.gradle @@ -21,7 +21,7 @@ apply plugin: 'eclipse' apply plugin: 'maven-publish' apply plugin: 'org.spongepowered.mixin' -version = '1.16.5-0.1.54-B' + getVersionNumber() +version = '1.16.5-0.1.55-B' + getVersionNumber() group = 'com.ticticboooom.mods.mm' // http://maven.apache.org/guides/mini/guide-naming-conventions.html archivesBaseName = 'MasterfulMachinery' java.toolchain.languageVersion = JavaLanguageVersion.of(8) // Mojang ships Java 8 to end users, so your mod should target Java 8. diff --git a/src/main/java/com/ticticboooom/mods/mm/block/StructureGenBlock.java b/src/main/java/com/ticticboooom/mods/mm/block/StructureGenBlock.java index 2b1388d..1e6b8f8 100644 --- a/src/main/java/com/ticticboooom/mods/mm/block/StructureGenBlock.java +++ b/src/main/java/com/ticticboooom/mods/mm/block/StructureGenBlock.java @@ -7,6 +7,8 @@ import net.minecraft.block.*; import net.minecraft.block.material.Material; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.player.ServerPlayerEntity; +import net.minecraft.inventory.IInventory; +import net.minecraft.inventory.InventoryHelper; import net.minecraft.item.BlockItemUseContext; import net.minecraft.state.DirectionProperty; import net.minecraft.state.StateContainer; @@ -29,12 +31,6 @@ import javax.annotation.Nullable; import java.util.stream.Stream; public class StructureGenBlock extends Block { - public StructureGenBlock() { - super(AbstractBlock.Properties.create(Material.IRON).setRequiresTool().hardnessAndResistance(5.0F, 6.0F).sound(SoundType.METAL).harvestLevel(0) - .harvestTool(ToolType.PICKAXE)); - this.setDefaultState(this.getDefaultState().with(FACING, Direction.NORTH)); - } - private static final DirectionProperty FACING = HorizontalBlock.HORIZONTAL_FACING; private static final VoxelShape SHAPE_N = Stream.of( @@ -109,15 +105,15 @@ public class StructureGenBlock extends Block { Block.makeCuboidShape(15, 2, 15, 16, 5, 16) ).reduce((v1, v2) -> VoxelShapes.combineAndSimplify(v1, v2, IBooleanFunction.OR)).get(); - @Override - public boolean hasTileEntity(BlockState state) { - return true; + public StructureGenBlock() { + super(AbstractBlock.Properties.create(Material.IRON).setRequiresTool().hardnessAndResistance(5.0F, 6.0F).sound(SoundType.METAL).harvestLevel(0) + .harvestTool(ToolType.PICKAXE)); + this.setDefaultState(this.getDefaultState().with(FACING, Direction.NORTH)); } - @Nullable @Override - public TileEntity createTileEntity(BlockState state, IBlockReader world) { - return MMSetup.STRUCTURE_TILE.get().create(); + protected void fillStateContainer(StateContainer.Builder builder) { + super.fillStateContainer(builder.add(FACING)); } @Override @@ -132,8 +128,16 @@ public class StructureGenBlock extends Block { } @Override - protected void fillStateContainer(StateContainer.Builder builder) { - super.fillStateContainer(builder.add(FACING)); + public void onReplaced(BlockState state, World worldIn, BlockPos pos, BlockState newState, boolean isMoving) { + if (!state.matchesBlock(newState.getBlock())) { + TileEntity tileentity = worldIn.getTileEntity(pos); + if (tileentity instanceof StructureGenBlockEntity) { + InventoryHelper.dropInventoryItems(worldIn, pos, ((StructureGenBlockEntity) tileentity).getInv()); + worldIn.updateComparatorOutputLevel(pos, this); + } + + super.onReplaced(state, worldIn, pos, newState, isMoving); + } } @Nullable @@ -157,4 +161,15 @@ public class StructureGenBlock extends Block { throw new IllegalStateException("Invalid State"); } } + + @Override + public boolean hasTileEntity(BlockState state) { + return true; + } + + @Nullable + @Override + public TileEntity createTileEntity(BlockState state, IBlockReader world) { + return MMSetup.STRUCTURE_TILE.get().create(); + } } diff --git a/src/main/java/com/ticticboooom/mods/mm/block/tile/StructureGenBlockEntity.java b/src/main/java/com/ticticboooom/mods/mm/block/tile/StructureGenBlockEntity.java index fba4b62..c3a960d 100644 --- a/src/main/java/com/ticticboooom/mods/mm/block/tile/StructureGenBlockEntity.java +++ b/src/main/java/com/ticticboooom/mods/mm/block/tile/StructureGenBlockEntity.java @@ -27,7 +27,6 @@ public class StructureGenBlockEntity extends UpdatableTile implements ITickableT super(MMSetup.STRUCTURE_TILE.get()); } - @Getter private ItemStackHandler handler = new ItemStackHandler(1); @Getter diff --git a/src/main/java/com/ticticboooom/mods/mm/helper/GuiHelper.java b/src/main/java/com/ticticboooom/mods/mm/helper/GuiHelper.java new file mode 100644 index 0000000..43e7340 --- /dev/null +++ b/src/main/java/com/ticticboooom/mods/mm/helper/GuiHelper.java @@ -0,0 +1,13 @@ +package com.ticticboooom.mods.mm.helper; + +import com.mojang.blaze3d.matrix.MatrixStack; +import net.minecraft.client.gui.screen.Screen; + +public class GuiHelper { + + public static void renderVerticallyFilledBar(MatrixStack ms, Screen screen, int x, int y, int u, int v, int width, int height, float pct) { + float invPct = 1 - pct; + screen.blit(ms, x, y + (int) (height * invPct), u, v + (int) (height * invPct), width, (int) (height * pct)); + } + +} diff --git a/src/main/java/com/ticticboooom/mods/mm/ports/storage/EnergyPortStorage.java b/src/main/java/com/ticticboooom/mods/mm/ports/storage/EnergyPortStorage.java index c528705..c3a5a2f 100644 --- a/src/main/java/com/ticticboooom/mods/mm/ports/storage/EnergyPortStorage.java +++ b/src/main/java/com/ticticboooom/mods/mm/ports/storage/EnergyPortStorage.java @@ -4,6 +4,7 @@ import com.mojang.blaze3d.matrix.MatrixStack; import com.mojang.serialization.Codec; import com.mojang.serialization.codecs.RecordCodecBuilder; import com.ticticboooom.mods.mm.MM; +import com.ticticboooom.mods.mm.helper.GuiHelper; import com.ticticboooom.mods.mm.inventory.PortEnergyInventory; import lombok.Getter; import net.minecraft.client.Minecraft; @@ -56,16 +57,17 @@ public class EnergyPortStorage extends PortStorage { public void render(MatrixStack stack, int mouseX, int mouseY, int left, int top, Screen screen) { Minecraft.getInstance().textureManager.bindTexture(new ResourceLocation(MM.ID, "textures/gui/port_gui.png")); screen.blit(stack, left, top, 0, 0, 175, 256); - int barOffsetX = 175 - 30; - int barOffsetY = 20; - screen.blit(stack, left + barOffsetX, top + barOffsetY, 175, 18, 18, 108); - float amount = 0; + int barX = left + 175 - 30; + int barY = top + 20; + int barWidth = 18; + int barHeight = 108; + screen.blit(stack, barX, barY, 175, 18, barWidth, barHeight); + float pct = 0; if (inv.getMaxEnergyStored() > 0) { - amount = (float)inv.getEnergyStored() / inv.getMaxEnergyStored(); + pct = (float)inv.getEnergyStored() / inv.getMaxEnergyStored(); } - //screen.blit(stack, left + barOffsetX, top + barOffsetY, 193, 18, 18, (int) (108 * amount)); - screen.blit(stack, left + barOffsetX, top + barOffsetY + 108 - (int) (108*amount), 193, 18, 18, (int) (108*amount)-1); - AbstractGui.drawString(stack, Minecraft.getInstance().fontRenderer,String.format("%.2f",Math.round((float)10000 * amount) / 100.f) + "%", left + 30, top + 60, 0xfefefe); + GuiHelper.renderVerticallyFilledBar(stack, screen, barX, barY, 193, 18, barWidth, barHeight, pct); + AbstractGui.drawString(stack, Minecraft.getInstance().fontRenderer,String.format("%.2f",Math.round((float)10000 * pct) / 100.f) + "%", left + 30, top + 60, 0xfefefe); AbstractGui.drawString(stack, Minecraft.getInstance().fontRenderer, inv.getEnergyStored() + "FE", left + 30, top + 80, 0xfefefe); } } diff --git a/src/main/java/com/ticticboooom/mods/mm/ports/storage/ManaPortStorage.java b/src/main/java/com/ticticboooom/mods/mm/ports/storage/ManaPortStorage.java index 9b1bfab..614899e 100644 --- a/src/main/java/com/ticticboooom/mods/mm/ports/storage/ManaPortStorage.java +++ b/src/main/java/com/ticticboooom/mods/mm/ports/storage/ManaPortStorage.java @@ -5,6 +5,7 @@ import com.mojang.serialization.Codec; import com.mojang.serialization.codecs.RecordCodecBuilder; import com.ticticboooom.mods.mm.MM; import com.ticticboooom.mods.mm.block.tile.MachinePortBlockEntity; +import com.ticticboooom.mods.mm.helper.GuiHelper; import com.ticticboooom.mods.mm.inventory.PortEnergyInventory; import com.ticticboooom.mods.mm.inventory.botania.PortManaInventory; import lombok.Getter; @@ -68,12 +69,16 @@ public class ManaPortStorage extends PortStorage { screen.blit(stack, left, top, 0, 0, 175, 256); int barOffsetX = 175 - 30; int barOffsetY = 20; - screen.blit(stack, left + barOffsetX, top + barOffsetY, 175, 18, 18, 108); - float amount = 0; + int barX = left + 175 - 30; + int barY = top + 20; + int barWidth = 18; + int barHeight = 108; + screen.blit(stack, barX, barY, 175, 18, barWidth, barHeight); + float pct = 0; if (inv.getMaxManaStored() > 0) { - amount = (float)inv.getManaStored() / inv.getMaxManaStored(); + pct = (float)inv.getManaStored() / inv.getMaxManaStored(); } - screen.blit(stack, left + barOffsetX, top + barOffsetY + 108 - (int) (108*amount), 193, 18, 18, (int) (108*amount)-1); + GuiHelper.renderVerticallyFilledBar(stack, screen, barX, barY, 193, 18, barWidth, barHeight, pct); AbstractGui.drawString(stack, Minecraft.getInstance().fontRenderer, inv.getManaStored() + " Mana", left + 30, top + 60, 0xfefefe); } } diff --git a/src/main/java/com/ticticboooom/mods/mm/ports/storage/MekGasPortStorage.java b/src/main/java/com/ticticboooom/mods/mm/ports/storage/MekGasPortStorage.java index 84a64ad..f2caf89 100644 --- a/src/main/java/com/ticticboooom/mods/mm/ports/storage/MekGasPortStorage.java +++ b/src/main/java/com/ticticboooom/mods/mm/ports/storage/MekGasPortStorage.java @@ -4,6 +4,7 @@ import com.mojang.blaze3d.matrix.MatrixStack; import com.mojang.serialization.Codec; import com.mojang.serialization.codecs.RecordCodecBuilder; import com.ticticboooom.mods.mm.MM; +import com.ticticboooom.mods.mm.helper.GuiHelper; import com.ticticboooom.mods.mm.helper.RLUtils; import com.ticticboooom.mods.mm.inventory.mek.PortMekGasInventory; import lombok.Getter; @@ -64,14 +65,16 @@ public class MekGasPortStorage extends PortStorage { public void render(MatrixStack stack, int mouseX, int mouseY, int left, int top, Screen screen) { Minecraft.getInstance().textureManager.bindTexture(new ResourceLocation(MM.ID, "textures/gui/port_gui.png")); screen.blit(stack, left, top, 0, 0, 175, 256); - int barOffsetX = 175 - 30; - int barOffsetY = 20; - screen.blit(stack, left + barOffsetX, top + barOffsetY, 175, 18, 18, 108); - float amount = 0; + int barX = left + 175 - 30; + int barY = top + 20; + int barWidth = 18; + int barHeight = 108; + screen.blit(stack, barX, barY, 175, 18, barWidth, barHeight); + float pct = 0; if (inv.getStack().getAmount() > 0) { - amount = (float)inv.getStack().getAmount() / inv.getTankCapacity(0); + pct = (float)inv.getStack().getAmount() / inv.getTankCapacity(0); } - screen.blit(stack, left + barOffsetX, top + barOffsetY, 193, 18, 18, (int) (108 * amount)); + GuiHelper.renderVerticallyFilledBar(stack, screen, barX, barY, 193, 18, barWidth, barHeight, pct); AbstractGui.drawString(stack, Minecraft.getInstance().fontRenderer,inv.getStack().getType().getTextComponent().getString(), left + 30, top + 60, 0xfefefe); AbstractGui.drawString(stack, Minecraft.getInstance().fontRenderer, inv.getStack().getAmount() + "mB", left + 30, top + 80, 0xfefefe); diff --git a/src/main/java/com/ticticboooom/mods/mm/ports/storage/MekInfusePortStorage.java b/src/main/java/com/ticticboooom/mods/mm/ports/storage/MekInfusePortStorage.java index aacc5c2..b27b943 100644 --- a/src/main/java/com/ticticboooom/mods/mm/ports/storage/MekInfusePortStorage.java +++ b/src/main/java/com/ticticboooom/mods/mm/ports/storage/MekInfusePortStorage.java @@ -4,6 +4,7 @@ import com.mojang.blaze3d.matrix.MatrixStack; import com.mojang.serialization.Codec; import com.mojang.serialization.codecs.RecordCodecBuilder; import com.ticticboooom.mods.mm.MM; +import com.ticticboooom.mods.mm.helper.GuiHelper; import com.ticticboooom.mods.mm.helper.RLUtils; import com.ticticboooom.mods.mm.inventory.mek.PortMekInfuseInventory; import com.ticticboooom.mods.mm.inventory.mek.PortMekSlurryInventory; @@ -67,14 +68,16 @@ public class MekInfusePortStorage extends PortStorage { public void render(MatrixStack stack, int mouseX, int mouseY, int left, int top, Screen screen) { Minecraft.getInstance().textureManager.bindTexture(new ResourceLocation(MM.ID, "textures/gui/port_gui.png")); screen.blit(stack, left, top, 0, 0, 175, 256); - int barOffsetX = 175 - 30; - int barOffsetY = 20; - screen.blit(stack, left + barOffsetX, top + barOffsetY, 175, 18, 18, 108); - float amount = 0; + int barX = left + 175 - 30; + int barY = top + 20; + int barWidth = 18; + int barHeight = 108; + screen.blit(stack, barX, barY, 175, 18, barWidth, barHeight); + float pct = 0; if (inv.getStack().getAmount() > 0) { - amount = (float) inv.getStack().getAmount() / inv.getTankCapacity(0); + pct = (float) inv.getStack().getAmount() / inv.getTankCapacity(0); } - screen.blit(stack, left + barOffsetX, top + barOffsetY, 193, 18, 18, (int) (108 * amount)); + GuiHelper.renderVerticallyFilledBar(stack, screen, barX, barY, 193, 18, barWidth, barHeight, pct); AbstractGui.drawString(stack, Minecraft.getInstance().fontRenderer, inv.getStack().getType().getTextComponent().getString(), left + 30, top + 60, 0xfefefe); AbstractGui.drawString(stack, Minecraft.getInstance().fontRenderer, inv.getStack().getAmount() + "mB", left + 30, top + 80, 0xfefefe); } diff --git a/src/main/java/com/ticticboooom/mods/mm/ports/storage/MekSlurryPortStorage.java b/src/main/java/com/ticticboooom/mods/mm/ports/storage/MekSlurryPortStorage.java index 9175541..8a53595 100644 --- a/src/main/java/com/ticticboooom/mods/mm/ports/storage/MekSlurryPortStorage.java +++ b/src/main/java/com/ticticboooom/mods/mm/ports/storage/MekSlurryPortStorage.java @@ -6,6 +6,7 @@ import com.mojang.serialization.codecs.RecordCodecBuilder; import com.ticticboooom.mods.mm.MM; import com.ticticboooom.mods.mm.block.container.PortBlockContainer; import com.ticticboooom.mods.mm.block.tile.MachinePortBlockEntity; +import com.ticticboooom.mods.mm.helper.GuiHelper; import com.ticticboooom.mods.mm.helper.RLUtils; import com.ticticboooom.mods.mm.inventory.mek.PortMekSlurryInventory; import lombok.Getter; @@ -70,14 +71,16 @@ public class MekSlurryPortStorage extends PortStorage { public void render(MatrixStack stack, int mouseX, int mouseY, int left, int top, Screen screen) { Minecraft.getInstance().textureManager.bindTexture(new ResourceLocation(MM.ID, "textures/gui/port_gui.png")); screen.blit(stack, left, top, 0, 0, 175, 256); - int barOffsetX = 175 - 30; - int barOffsetY = 20; - screen.blit(stack, left + barOffsetX, top + barOffsetY, 175, 18, 18, 108); - float amount = 0; + int barX = left + 175 - 30; + int barY = top + 20; + int barWidth = 18; + int barHeight = 108; + screen.blit(stack, barX, barY, 175, 18, barWidth, barHeight); + float pct = 0; if (inv.getStack().getAmount() > 0) { - amount = (float) inv.getStack().getAmount() / inv.getTankCapacity(0); + pct = (float) inv.getStack().getAmount() / inv.getTankCapacity(0); } - screen.blit(stack, left + barOffsetX, top + barOffsetY, 193, 18, 18, (int) (108 * amount)); + GuiHelper.renderVerticallyFilledBar(stack, screen, barX, barY, 193, 18, barWidth, barHeight, pct); AbstractGui.drawString(stack, Minecraft.getInstance().fontRenderer, inv.getStack().getType().getTextComponent().getString(), left + 30, top + 60, 0xfefefe); AbstractGui.drawString(stack, Minecraft.getInstance().fontRenderer, inv.getStack().getAmount() + "mB", left + 30, top + 80, 0xfefefe); diff --git a/src/main/java/com/ticticboooom/mods/mm/ports/storage/PneumaticPortStorage.java b/src/main/java/com/ticticboooom/mods/mm/ports/storage/PneumaticPortStorage.java index cecd873..0651dfd 100644 --- a/src/main/java/com/ticticboooom/mods/mm/ports/storage/PneumaticPortStorage.java +++ b/src/main/java/com/ticticboooom/mods/mm/ports/storage/PneumaticPortStorage.java @@ -6,6 +6,7 @@ import com.mojang.serialization.codecs.RecordCodecBuilder; import com.ticticboooom.mods.mm.MM; import com.ticticboooom.mods.mm.block.tile.IMachinePortTile; import com.ticticboooom.mods.mm.block.tile.MachinePortBlockEntity; +import com.ticticboooom.mods.mm.helper.GuiHelper; import lombok.Getter; import me.desht.pneumaticcraft.api.PNCCapabilities; import me.desht.pneumaticcraft.api.tileentity.IAirHandlerMachine; @@ -78,17 +79,22 @@ public class PneumaticPortStorage extends PortStorage { public void render(MatrixStack stack, int mouseX, int mouseY, int left, int top, Screen screen) { Minecraft.getInstance().textureManager.bindTexture(new ResourceLocation(MM.ID, "textures/gui/port_gui.png")); screen.blit(stack, left, top, 0, 0, 175, 256); - int barOffsetX = 175 - 30; - int barOffsetY = 20; - screen.blit(stack, left + barOffsetX, top + barOffsetY, 175, 18, 18, 108); - float amount = inv.getPressure() / inv.getCriticalPressure(); - screen.blit(stack, left + barOffsetX, top + barOffsetY, 193, 18, 18, (int) (108 * amount)); + int barX = left + 175 - 30; + int barY = top + 20; + int barWidth = 18; + int barHeight = 108; + screen.blit(stack, barX, barY, 175, barWidth, barWidth, barHeight); + + float pct = inv.getPressure() / inv.getCriticalPressure(); + GuiHelper.renderVerticallyFilledBar(stack, screen, barX, barY, 193, 18, barWidth, barHeight, pct); AbstractGui.drawCenteredString(stack, Minecraft.getInstance().fontRenderer, NumberFormat.getInstance().format(inv.getPressure()) + "P", left + 50, top + 80, 0xfefefe); AbstractGui.drawCenteredString(stack, Minecraft.getInstance().fontRenderer, inv.getAir() + " Air", left + 50, top + 60, 0xfefefe); } + + @Override public void tick(IMachinePortTile tile) { this.inv.tick((TileEntity) tile); diff --git a/src/test/resources/data/mm/recipes/structures/test_all.json b/src/test/resources/data/mm/recipes/structures/test_all.json new file mode 100644 index 0000000..39a87f7 --- /dev/null +++ b/src/test/resources/data/mm/recipes/structures/test_all.json @@ -0,0 +1,82 @@ +{ + "type": "masterfulmachinery:machine_structure", + "id": "test_all", + "controllerId": "basic", + "name": "Testing All The Ports", + "layout": [ + [ + ")C*", + "+ ,", + "- .", + "/ 0", + "1 2", + "3 4", + "5 6", + "7 8", + "9 :", + "; <" + ] + ], + "legend": { + ")": { + "block": "masterfulmachinery:basic_simple_port_items_output" + }, + "*": { + "block": "masterfulmachinery:basic_simple_port_items_input" + }, + "+": { + "block": "masterfulmachinery:basic_simple_port_energy_output" + }, + ",": { + "block": "masterfulmachinery:basic_simple_port_energy_input" + }, + "-": { + "block": "masterfulmachinery:basic_simple_port_fluids_output" + }, + ".": { + "block": "masterfulmachinery:basic_simple_port_fluids_input" + }, + "/": { + "block": "masterfulmachinery:basic_simple_port_pncr_pressure_output" + }, + "0": { + "block": "masterfulmachinery:basic_simple_port_pncr_pressure_input" + }, + "1": { + "block": "masterfulmachinery:basic_simple_port_botania_mana_output" + }, + "2": { + "block": "masterfulmachinery:basic_simple_port_botania_mana_input" + }, + "3": { + "block": "masterfulmachinery:basic_simple_port_astral_starlight_output" + }, + "4": { + "block": "masterfulmachinery:basic_simple_port_astral_starlight_input" + }, + "5": { + "block": "masterfulmachinery:basic_simple_port_create_rotation_output" + }, + "6": { + "block": "masterfulmachinery:basic_simple_port_create_rotation_input" + }, + "7": { + "block": "masterfulmachinery:basic_simple_port_mekanism_gas_output" + }, + "8": { + "block": "masterfulmachinery:basic_simple_port_mekanism_gas_input" + }, + "9": { + "block": "masterfulmachinery:basic_simple_port_mekanism_slurry_output" + }, + ":": { + "block": "masterfulmachinery:basic_simple_port_mekanism_slurry_input" + }, + ";": { + "block": "masterfulmachinery:basic_simple_port_mekanism_infuse_output" + }, + "<": { + "block": "masterfulmachinery:basic_simple_port_mekanism_infuse_input" + } + } +} \ No newline at end of file diff --git a/src/test/resources/data/mm/recipes/test_rotation.json b/src/test/resources/data/mm/recipes/test_rotation.json index 4d8b5e7..594be06 100644 --- a/src/test/resources/data/mm/recipes/test_rotation.json +++ b/src/test/resources/data/mm/recipes/test_rotation.json @@ -2,13 +2,14 @@ "type": "masterfulmachinery:machine_process", "structureId": "test_rotation", "controllerId": "basic", - "perTick": true, + "ticks": 200, "inputs": [ { "type": "masterfulmachinery:create_rotation", "data": { "speed": 2 - } + }, + "perTick": true } ], "outputs": [ @@ -16,7 +17,8 @@ "type": "masterfulmachinery:create_rotation", "data": { "speed": 64 - } + }, + "perTick": true } ] } \ No newline at end of file diff --git a/version.properties b/version.properties index 070fb19..a66e078 100644 --- a/version.properties +++ b/version.properties @@ -1,2 +1,2 @@ -#Wed Sep 29 10:53:26 BST 2021 -VERSION_CODE=790 +#Wed Sep 29 13:34:35 BST 2021 +VERSION_CODE=798