Correctly render mana/slurry/infuse/gas/energy the right way up in port GUIs

This commit is contained in:
Quarris
2021-09-29 13:51:09 +01:00
parent 33837a4c98
commit 509f8c1e3d
13 changed files with 189 additions and 56 deletions

View File

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

View File

@@ -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<Block, BlockState> builder) {
super.fillStateContainer(builder.add(FACING));
}
@Override
@@ -132,8 +128,16 @@ public class StructureGenBlock extends Block {
}
@Override
protected void fillStateContainer(StateContainer.Builder<Block, BlockState> 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();
}
}

View File

@@ -27,7 +27,6 @@ public class StructureGenBlockEntity extends UpdatableTile implements ITickableT
super(MMSetup.STRUCTURE_TILE.get());
}
@Getter
private ItemStackHandler handler = new ItemStackHandler(1);
@Getter

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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