From 83b23fe763025b12ece868752d31f222152dd5e0 Mon Sep 17 00:00:00 2001 From: Christian Knaapen Date: Fri, 6 Dec 2019 15:23:05 +0100 Subject: [PATCH] Fixed screens, except containerscreen. Fixed clientproxy and BlockRayTraceResult (cast if type = block). --- .../effortlessbuilding/ModEventHandler.java | 11 +- .../gui/RandomizerBagContainer.java | 2 + .../gui/RandomizerBagGuiContainer.java | 8 +- .../gui/RandomizerBagGuiHandler.java | 75 ++--- .../gui/buildmode/RadialMenu.java | 53 ++-- .../gui/buildmodifier/ArraySettingsGui.java | 15 +- .../gui/buildmodifier/MirrorSettingsGui.java | 91 +++--- .../buildmodifier/ModifierSettingsGui.java | 39 ++- .../RadialMirrorSettingsGui.java | 93 +++--- .../elements/GuiCollapsibleScrollEntry.java | 15 +- .../gui/elements/GuiIconButton.java | 17 +- .../gui/elements/GuiNumberField.java | 44 ++- .../gui/elements/GuiScrollPane.java | 299 ++++++++---------- .../effortlessbuilding/proxy/ClientProxy.java | 89 +++--- .../render/BlockPreviewRenderer.java | 20 +- .../assets/effortlessbuilding/lang/en_us.json | 4 + 16 files changed, 403 insertions(+), 472 deletions(-) diff --git a/src/main/java/nl/requios/effortlessbuilding/ModEventHandler.java b/src/main/java/nl/requios/effortlessbuilding/ModEventHandler.java index 277b3c1..063657e 100644 --- a/src/main/java/nl/requios/effortlessbuilding/ModEventHandler.java +++ b/src/main/java/nl/requios/effortlessbuilding/ModEventHandler.java @@ -1,6 +1,8 @@ package nl.requios.effortlessbuilding; import net.minecraft.block.Block; +import net.minecraft.inventory.container.Container; +import net.minecraft.inventory.container.ContainerType; import net.minecraft.item.Item; import net.minecraft.item.BlockItem; import net.minecraftforge.event.RegistryEvent; @@ -18,8 +20,7 @@ public class ModEventHandler { } @SubscribeEvent - public static void registerItems(RegistryEvent.Register event) - { + public static void registerItems(RegistryEvent.Register event) { event.getRegistry().registerAll(EffortlessBuilding.ITEMS); for (Block block : EffortlessBuilding.BLOCKS) @@ -27,4 +28,10 @@ public class ModEventHandler { event.getRegistry().register(new BlockItem(block, new Item.Properties()).setRegistryName(block.getRegistryName())); } } + + //TODO 1.14 Gui +// @SubscribeEvent +// public static void registerContainerTypes(RegistryEvent.Register> event) { +// event.getRegistry().register() +// } } diff --git a/src/main/java/nl/requios/effortlessbuilding/gui/RandomizerBagContainer.java b/src/main/java/nl/requios/effortlessbuilding/gui/RandomizerBagContainer.java index ce7c8e6..b052c5b 100644 --- a/src/main/java/nl/requios/effortlessbuilding/gui/RandomizerBagContainer.java +++ b/src/main/java/nl/requios/effortlessbuilding/gui/RandomizerBagContainer.java @@ -20,6 +20,8 @@ public class RandomizerBagContainer extends Container { HOTBAR_START = INV_END + 1, HOTBAR_END = HOTBAR_START + 8; public RandomizerBagContainer(PlayerInventory parInventoryPlayer, IItemHandler parIInventory) { + //TODO 1.14 Gui + super(null, 0); bagInventory = parIInventory; sizeInventory = bagInventory.getSlots(); for (int i = 0; i < sizeInventory; ++i) { diff --git a/src/main/java/nl/requios/effortlessbuilding/gui/RandomizerBagGuiContainer.java b/src/main/java/nl/requios/effortlessbuilding/gui/RandomizerBagGuiContainer.java index cf92671..bb0cb9b 100644 --- a/src/main/java/nl/requios/effortlessbuilding/gui/RandomizerBagGuiContainer.java +++ b/src/main/java/nl/requios/effortlessbuilding/gui/RandomizerBagGuiContainer.java @@ -2,9 +2,9 @@ package nl.requios.effortlessbuilding.gui; import com.mojang.blaze3d.platform.GlStateManager; import net.minecraft.client.gui.screen.inventory.ContainerScreen; -import net.minecraft.client.renderer.GlStateManager; import net.minecraft.entity.player.PlayerInventory; import net.minecraft.util.ResourceLocation; +import net.minecraft.util.text.TranslationTextComponent; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.items.IItemHandler; @@ -18,7 +18,7 @@ public class RandomizerBagGuiContainer extends ContainerScreen { private final IItemHandler inventoryBag; public RandomizerBagGuiContainer(PlayerInventory inventoryPlayer, IItemHandler inventoryBag) { - super(new RandomizerBagContainer(inventoryPlayer, inventoryBag)); + super(new RandomizerBagContainer(inventoryPlayer, inventoryBag), inventoryPlayer, new TranslationTextComponent("effortlessbuilding.screen.randomizer_bag")); this.inventoryPlayer = inventoryPlayer; this.inventoryBag = inventoryBag; @@ -27,7 +27,7 @@ public class RandomizerBagGuiContainer extends ContainerScreen { @Override public void render(int mouseX, int mouseY, float partialTicks) { - drawDefaultBackground(); + renderBackground(); super.render(mouseX, mouseY, partialTicks); this.renderHoveredToolTip(mouseX, mouseY); } @@ -45,6 +45,6 @@ public class RandomizerBagGuiContainer extends ContainerScreen { minecraft.getTextureManager().bindTexture(guiTextures); int marginHorizontal = (width - xSize) / 2; int marginVertical = (height - ySize) / 2; - drawTexturedModalRect(marginHorizontal, marginVertical, 0, 0, xSize, ySize); + blit(marginHorizontal, marginVertical, 0, 0, xSize, ySize); } } diff --git a/src/main/java/nl/requios/effortlessbuilding/gui/RandomizerBagGuiHandler.java b/src/main/java/nl/requios/effortlessbuilding/gui/RandomizerBagGuiHandler.java index 6f023bd..3e7346d 100644 --- a/src/main/java/nl/requios/effortlessbuilding/gui/RandomizerBagGuiHandler.java +++ b/src/main/java/nl/requios/effortlessbuilding/gui/RandomizerBagGuiHandler.java @@ -6,10 +6,11 @@ import net.minecraft.client.gui.screen.Screen; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.player.PlayerInventory; import net.minecraft.inventory.container.Container; +import net.minecraft.inventory.container.INamedContainerProvider; import net.minecraft.util.Hand; import net.minecraft.util.text.ITextComponent; import net.minecraft.util.text.StringTextComponent; -import net.minecraft.world.IInteractionObject; +import net.minecraft.util.text.TranslationTextComponent; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.fml.network.FMLPlayMessages; @@ -19,8 +20,8 @@ import nl.requios.effortlessbuilding.EffortlessBuilding; import nl.requios.effortlessbuilding.item.ItemRandomizerBag; import javax.annotation.Nullable; -TODO 1.14 GUI -public class RandomizerBagGuiHandler implements /*IGuiHandler, */IInteractionObject { + +public class RandomizerBagGuiHandler implements INamedContainerProvider { // @Nullable // @Override // public Object getServerGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) { @@ -54,54 +55,40 @@ public class RandomizerBagGuiHandler implements /*IGuiHandler, */IInteractionObj // return null; // } - @OnlyIn(Dist.CLIENT) - public static Screen openGui(FMLPlayMessages.OpenContainer openContainer) { - if (openContainer.getId().equals(EffortlessBuilding.RANDOMIZER_BAG_GUI)) { - ClientPlayerEntity player = Minecraft.getInstance().player; - if (player.getHeldItem(Hand.MAIN_HAND).getItem() instanceof ItemRandomizerBag) { - IItemHandler itemHandler = player.getHeldItem(Hand.MAIN_HAND).getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY).orElse(null); - if (itemHandler != null) { - return new RandomizerBagGuiContainer(player.inventory, itemHandler); - } - } - } - return null; - } - - @Override - public Container createContainer(PlayerInventory inventory, PlayerEntity player) { - if (player.getHeldItem(Hand.MAIN_HAND).getItem() instanceof ItemRandomizerBag) { - IItemHandler itemHandler = player.getHeldItem(Hand.MAIN_HAND).getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY).orElse(null); - if (itemHandler != null) { - return new RandomizerBagContainer(inventory, itemHandler); - } - } - return null; - } - - @Override - public String getGuiID() { - return EffortlessBuilding.RANDOMIZER_BAG_GUI.toString(); - } - - @Override - public ITextComponent getName() { - return new StringTextComponent("Randomizer Bag"); - } - - @Override - public boolean hasCustomName() { - return false; - } +// @OnlyIn(Dist.CLIENT) +// public static Screen openGui(FMLPlayMessages.OpenContainer openContainer) { +// if (openContainer.getId().equals(EffortlessBuilding.RANDOMIZER_BAG_GUI)) { +// ClientPlayerEntity player = Minecraft.getInstance().player; +// if (player.getHeldItem(Hand.MAIN_HAND).getItem() instanceof ItemRandomizerBag) { +// IItemHandler itemHandler = player.getHeldItem(Hand.MAIN_HAND).getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY).orElse(null); +// if (itemHandler != null) { +// return new RandomizerBagGuiContainer(player.inventory, itemHandler); +// } +// } +// } +// return null; +// } +// +// @Override +// public Container createContainer(PlayerInventory inventory, PlayerEntity player) { +// if (player.getHeldItem(Hand.MAIN_HAND).getItem() instanceof ItemRandomizerBag) { +// IItemHandler itemHandler = player.getHeldItem(Hand.MAIN_HAND).getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY).orElse(null); +// if (itemHandler != null) { +// return new RandomizerBagContainer(inventory, itemHandler); +// } +// } +// return null; +// } @Override public ITextComponent getDisplayName() { - return new StringTextComponent("Randomizer Bag"); + return new TranslationTextComponent("effortlessbuilding.screen.randomizer_bag"); } + //TODO 1.14 GUI @Nullable @Override - public ITextComponent getCustomName() { + public Container createMenu(int containerId, PlayerInventory playerInventory, PlayerEntity player) { return null; } } diff --git a/src/main/java/nl/requios/effortlessbuilding/gui/buildmode/RadialMenu.java b/src/main/java/nl/requios/effortlessbuilding/gui/buildmode/RadialMenu.java index 310b622..db56a58 100644 --- a/src/main/java/nl/requios/effortlessbuilding/gui/buildmode/RadialMenu.java +++ b/src/main/java/nl/requios/effortlessbuilding/gui/buildmode/RadialMenu.java @@ -7,7 +7,9 @@ import com.mojang.blaze3d.platform.GlStateManager; import net.minecraft.client.gui.screen.Screen; import net.minecraft.client.resources.I18n; import net.minecraft.util.Direction; +import net.minecraft.util.text.ITextComponent; import net.minecraft.util.text.TextFormatting; +import net.minecraft.util.text.TranslationTextComponent; import nl.requios.effortlessbuilding.EffortlessBuilding; import nl.requios.effortlessbuilding.buildmode.ModeSettingsManager; import nl.requios.effortlessbuilding.proxy.ClientProxy; @@ -18,7 +20,6 @@ import com.google.common.base.Stopwatch; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.BufferBuilder; -import net.minecraft.client.renderer.GlStateManager; import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.client.renderer.vertex.DefaultVertexFormats; @@ -41,6 +42,10 @@ public class RadialMenu extends Screen { public ActionEnum doAction = null; public boolean actionUsed = false; + public RadialMenu() { + super(new TranslationTextComponent("effortlessbuilding.screen.radial_menu")); + } + private float clampVis(final float f) { return Math.max( 0.0f, Math.min( 1.0f, f ) ); } @@ -118,7 +123,7 @@ public class RadialMenu extends Screen { final int startColor = (int) ( visibility * 98 ) << 24; final int endColor = (int) ( visibility * 128 ) << 24; - drawGradientRect(0, 0, width, height, startColor, endColor); + fillGradient(0, 0, width, height, startColor, endColor); GlStateManager.disableTexture(); GlStateManager.enableBlend(); @@ -229,10 +234,10 @@ public class RadialMenu extends Screen { switchTo = menuRegion.mode; } - buffer.pos(middleX + x1m1, middleY + y1m1, zLevel).color(r, g, b, a).endVertex(); - buffer.pos(middleX + x2m1, middleY + y2m1, zLevel).color(r, g, b, a).endVertex(); - buffer.pos(middleX + x2m2, middleY + y2m2, zLevel).color(r, g, b, a).endVertex(); - buffer.pos(middleX + x1m2, middleY + y1m2, zLevel).color(r, g, b, a).endVertex(); + buffer.pos(middleX + x1m1, middleY + y1m1, blitOffset).color(r, g, b, a).endVertex(); + buffer.pos(middleX + x2m1, middleY + y2m1, blitOffset).color(r, g, b, a).endVertex(); + buffer.pos(middleX + x2m2, middleY + y2m2, blitOffset).color(r, g, b, a).endVertex(); + buffer.pos(middleX + x1m2, middleY + y1m2, blitOffset).color(r, g, b, a).endVertex(); currentMode++; } @@ -268,10 +273,10 @@ public class RadialMenu extends Screen { doAction = btn.action; } - buffer.pos(middleX + btn.x1, middleY + btn.y1, zLevel).color(r, g, b, a).endVertex(); - buffer.pos(middleX + btn.x1, middleY + btn.y2, zLevel).color(r, g, b, a).endVertex(); - buffer.pos(middleX + btn.x2, middleY + btn.y2, zLevel).color(r, g, b, a).endVertex(); - buffer.pos(middleX + btn.x2, middleY + btn.y1, zLevel).color(r, g, b, a).endVertex(); + buffer.pos(middleX + btn.x1, middleY + btn.y1, blitOffset).color(r, g, b, a).endVertex(); + buffer.pos(middleX + btn.x1, middleY + btn.y2, blitOffset).color(r, g, b, a).endVertex(); + buffer.pos(middleX + btn.x2, middleY + btn.y2, blitOffset).color(r, g, b, a).endVertex(); + buffer.pos(middleX + btn.x2, middleY + btn.y1, blitOffset).color(r, g, b, a).endVertex(); } tessellator.draw(); @@ -279,7 +284,7 @@ public class RadialMenu extends Screen { GlStateManager.shadeModel(GL11.GL_FLAT); GlStateManager.translatef(0f, 0f, 5f); - GlStateManager.enableTexture2D(); + GlStateManager.enableTexture(); GlStateManager.color3f(1f, 1f, 1f); GlStateManager.disableBlend(); GlStateManager.enableAlphaTest(); @@ -308,10 +313,10 @@ public class RadialMenu extends Screen { final double v1 = 0; final double v2 = 16; - buffer.pos(middleX + x1, middleY + y1, zLevel).tex(sprite.getInterpolatedU(u1), sprite.getInterpolatedV(v1)).color(f, f, f, a).endVertex(); - buffer.pos(middleX + x1, middleY + y2, zLevel).tex(sprite.getInterpolatedU(u1), sprite.getInterpolatedV(v2)).color(f, f, f, a).endVertex(); - buffer.pos(middleX + x2, middleY + y2, zLevel).tex(sprite.getInterpolatedU(u2), sprite.getInterpolatedV(v2)).color(f, f, f, a).endVertex(); - buffer.pos(middleX + x2, middleY + y1, zLevel).tex(sprite.getInterpolatedU(u2), sprite.getInterpolatedV(v1)).color(f, f, f, a).endVertex(); + buffer.pos(middleX + x1, middleY + y1, blitOffset).tex(sprite.getInterpolatedU(u1), sprite.getInterpolatedV(v1)).color(f, f, f, a).endVertex(); + buffer.pos(middleX + x1, middleY + y2, blitOffset).tex(sprite.getInterpolatedU(u1), sprite.getInterpolatedV(v2)).color(f, f, f, a).endVertex(); + buffer.pos(middleX + x2, middleY + y2, blitOffset).tex(sprite.getInterpolatedU(u2), sprite.getInterpolatedV(v2)).color(f, f, f, a).endVertex(); + buffer.pos(middleX + x2, middleY + y1, blitOffset).tex(sprite.getInterpolatedU(u2), sprite.getInterpolatedV(v1)).color(f, f, f, a).endVertex(); } //Draw action icons @@ -334,10 +339,10 @@ public class RadialMenu extends Screen { final double btny1 = btnmiddleY - 8; final double btny2 = btnmiddleY + 8; - buffer.pos(middleX + btnx1, middleY + btny1, zLevel).tex(sprite.getInterpolatedU(u1), sprite.getInterpolatedV(v1)).color(f, f, f, a).endVertex(); - buffer.pos(middleX + btnx1, middleY + btny2, zLevel).tex(sprite.getInterpolatedU(u1), sprite.getInterpolatedV(v2)).color(f, f, f, a).endVertex(); - buffer.pos(middleX + btnx2, middleY + btny2, zLevel).tex(sprite.getInterpolatedU(u2), sprite.getInterpolatedV(v2)).color(f, f, f, a).endVertex(); - buffer.pos(middleX + btnx2, middleY + btny1, zLevel).tex(sprite.getInterpolatedU(u2), sprite.getInterpolatedV(v1)).color(f, f, f, a).endVertex(); + buffer.pos(middleX + btnx1, middleY + btny1, blitOffset).tex(sprite.getInterpolatedU(u1), sprite.getInterpolatedV(v1)).color(f, f, f, a).endVertex(); + buffer.pos(middleX + btnx1, middleY + btny2, blitOffset).tex(sprite.getInterpolatedU(u1), sprite.getInterpolatedV(v2)).color(f, f, f, a).endVertex(); + buffer.pos(middleX + btnx2, middleY + btny2, blitOffset).tex(sprite.getInterpolatedU(u2), sprite.getInterpolatedV(v2)).color(f, f, f, a).endVertex(); + buffer.pos(middleX + btnx2, middleY + btny1, blitOffset).tex(sprite.getInterpolatedU(u2), sprite.getInterpolatedV(v1)).color(f, f, f, a).endVertex(); } tessellator.draw(); @@ -385,22 +390,22 @@ public class RadialMenu extends Screen { //Add keybind in brackets if (button.action == ActionEnum.UNDO) { - keybind = ClientProxy.keyBindings[4].getKey().getName(); + keybind = ClientProxy.keyBindings[4].getLocalizedName(); } if (button.action == ActionEnum.REDO) { - keybind = ClientProxy.keyBindings[5].getKey().getName(); + keybind = ClientProxy.keyBindings[5].getLocalizedName(); } if (button.action == ActionEnum.REPLACE) { - keybind = ClientProxy.keyBindings[1].getKey().getName(); + keybind = ClientProxy.keyBindings[1].getLocalizedName(); } if (button.action == ActionEnum.OPEN_MODIFIER_SETTINGS) { - keybind = ClientProxy.keyBindings[0].getKey().getName(); + keybind = ClientProxy.keyBindings[0].getLocalizedName(); } if (currentBuildMode.options.length > 0) { //Add (ctrl) to first two actions of first option if (button.action == currentBuildMode.options[0].actions[0] || button.action == currentBuildMode.options[0].actions[1]) { - keybind = ClientProxy.keyBindings[6].getKey().getName(); + keybind = ClientProxy.keyBindings[6].getLocalizedName(); if (keybind.equals("Left Control")) keybind = "Ctrl"; } } diff --git a/src/main/java/nl/requios/effortlessbuilding/gui/buildmodifier/ArraySettingsGui.java b/src/main/java/nl/requios/effortlessbuilding/gui/buildmodifier/ArraySettingsGui.java index b42d045..c9cb00e 100644 --- a/src/main/java/nl/requios/effortlessbuilding/gui/buildmodifier/ArraySettingsGui.java +++ b/src/main/java/nl/requios/effortlessbuilding/gui/buildmodifier/ArraySettingsGui.java @@ -1,6 +1,7 @@ package nl.requios.effortlessbuilding.gui.buildmodifier; import net.minecraft.client.gui.screen.Screen; +import net.minecraft.client.gui.widget.Widget; import net.minecraft.client.gui.widget.button.Button; import net.minecraft.util.math.BlockPos; import net.minecraft.util.text.TextFormatting; @@ -31,8 +32,8 @@ public class ArraySettingsGui extends GuiCollapsibleScrollEntry { } @Override - public int initGui(int id, List