diff --git a/src/main/java/com/simibubi/create/CreateClient.java b/src/main/java/com/simibubi/create/CreateClient.java index b5c6f2a9d..5b847be56 100644 --- a/src/main/java/com/simibubi/create/CreateClient.java +++ b/src/main/java/com/simibubi/create/CreateClient.java @@ -104,11 +104,11 @@ public class CreateClient { // Register overlays in reverse order OverlayRegistry.registerOverlayAbove(ForgeIngameGui.AIR_LEVEL_ELEMENT, "Create's Remaining Air", CopperBacktankArmorLayer.REMAINING_AIR_OVERLAY); OverlayRegistry.registerOverlayAbove(ForgeIngameGui.EXPERIENCE_BAR_ELEMENT, "Create's Train Driver HUD", TrainHUD.OVERLAY); - OverlayRegistry.registerOverlayAbove(ForgeIngameGui.HOTBAR_ELEMENT, "Create's Toolboxes", ToolboxHandlerClient.OVERLAY); OverlayRegistry.registerOverlayAbove(ForgeIngameGui.HOTBAR_ELEMENT, "Create's Goggle Information", GoggleOverlayRenderer.OVERLAY); OverlayRegistry.registerOverlayAbove(ForgeIngameGui.HOTBAR_ELEMENT, "Create's Blueprints", BlueprintOverlayRenderer.OVERLAY); OverlayRegistry.registerOverlayAbove(ForgeIngameGui.HOTBAR_ELEMENT, "Create's Linked Controller", LinkedControllerClientHandler.OVERLAY); OverlayRegistry.registerOverlayAbove(ForgeIngameGui.HOTBAR_ELEMENT, "Create's Schematics", SCHEMATIC_HANDLER.getOverlayRenderer()); + OverlayRegistry.registerOverlayAbove(ForgeIngameGui.HOTBAR_ELEMENT, "Create's Toolboxes", ToolboxHandlerClient.OVERLAY); } public static void invalidateRenderers() { diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/interaction/controls/TrainHUD.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/interaction/controls/TrainHUD.java index a2ddd7156..3a7b7d211 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/interaction/controls/TrainHUD.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/interaction/controls/TrainHUD.java @@ -21,6 +21,7 @@ import net.minecraft.core.Direction; import net.minecraft.network.chat.Component; import net.minecraft.util.Mth; import net.minecraft.world.entity.Entity; +import net.minecraft.world.level.GameType; import net.minecraft.world.level.levelgen.structure.templatesystem.StructureTemplate.StructureBlockInfo; import net.minecraftforge.client.gui.ForgeIngameGui; import net.minecraftforge.client.gui.IIngameOverlay; @@ -106,6 +107,10 @@ public class TrainHUD { public static void renderOverlay(ForgeIngameGui gui, PoseStack poseStack, float partialTicks, int width, int height) { + Minecraft mc = Minecraft.getInstance(); + if (mc.options.hideGui || mc.gameMode.getPlayerMode() == GameType.SPECTATOR) + return; + if (!(ControlsHandler.entityRef.get() instanceof CarriageContraptionEntity cce)) return; Carriage carriage = cce.getCarriage(); @@ -147,7 +152,7 @@ public class TrainHUD { poseStack.popPose(); - Font font = Minecraft.getInstance().font; + Font font = mc.font; if (currentPrompt != null && font.width(currentPrompt) < promptSize - 10) { poseStack.pushPose(); poseStack.translate(font.width(currentPrompt) / -2f + 82, -27, 100); diff --git a/src/main/java/com/simibubi/create/content/contraptions/goggles/GoggleOverlayRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/goggles/GoggleOverlayRenderer.java index 5e91641ee..367f6ca2c 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/goggles/GoggleOverlayRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/goggles/GoggleOverlayRenderer.java @@ -33,6 +33,7 @@ import net.minecraft.network.chat.FormattedText; import net.minecraft.network.chat.TextComponent; import net.minecraft.util.Mth; import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.GameType; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.BlockHitResult; @@ -51,8 +52,11 @@ public class GoggleOverlayRenderer { public static void renderOverlay(ForgeIngameGui gui, PoseStack poseStack, float partialTicks, int width, int height) { - HitResult objectMouseOver = Minecraft.getInstance().hitResult; + Minecraft mc = Minecraft.getInstance(); + if (mc.options.hideGui || mc.gameMode.getPlayerMode() == GameType.SPECTATOR) + return; + HitResult objectMouseOver = mc.hitResult; if (!(objectMouseOver instanceof BlockHitResult)) { lastHovered = null; hoverTicks = 0; @@ -68,7 +72,6 @@ public class GoggleOverlayRenderer { } BlockHitResult result = (BlockHitResult) objectMouseOver; - Minecraft mc = Minecraft.getInstance(); ClientLevel world = mc.level; BlockPos pos = result.getBlockPos(); BlockEntity te = world.getBlockEntity(pos); diff --git a/src/main/java/com/simibubi/create/content/contraptions/goggles/IHaveHoveringInformation.java b/src/main/java/com/simibubi/create/content/contraptions/goggles/IHaveHoveringInformation.java index 1db2b6a22..061ab7e6b 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/goggles/IHaveHoveringInformation.java +++ b/src/main/java/com/simibubi/create/content/contraptions/goggles/IHaveHoveringInformation.java @@ -9,7 +9,7 @@ import net.minecraft.network.chat.Component; * */ public interface IHaveHoveringInformation { - default boolean addToTooltip(List tooltip, boolean isPlayerSneaking){ + default boolean addToTooltip(List tooltip, boolean isPlayerSneaking) { return false; } diff --git a/src/main/java/com/simibubi/create/content/contraptions/processing/burner/BlazeBurnerTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/processing/burner/BlazeBurnerTileEntity.java index ea8d83437..6a17d9f85 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/processing/burner/BlazeBurnerTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/processing/burner/BlazeBurnerTileEntity.java @@ -107,7 +107,7 @@ public class BlazeBurnerTileEntity extends SmartTileEntity { if (!active) { float target = 0; LocalPlayer player = Minecraft.getInstance().player; - if (player != null) { + if (player != null && !player.isInvisible()) { double x; double z; if (isVirtual()) { diff --git a/src/main/java/com/simibubi/create/content/curiosities/armor/CopperBacktankArmorLayer.java b/src/main/java/com/simibubi/create/content/curiosities/armor/CopperBacktankArmorLayer.java index 1e1cb49e2..9ceefaf8e 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/armor/CopperBacktankArmorLayer.java +++ b/src/main/java/com/simibubi/create/content/curiosities/armor/CopperBacktankArmorLayer.java @@ -31,6 +31,7 @@ import net.minecraft.util.StringUtil; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.Pose; import net.minecraft.world.entity.player.Player; +import net.minecraft.world.level.GameType; import net.minecraft.world.level.block.state.BlockState; import net.minecraftforge.client.gui.ForgeIngameGui; import net.minecraftforge.client.gui.IIngameOverlay; @@ -106,10 +107,14 @@ public class CopperBacktankArmorLayer 0) return; - LocalPlayer player = Minecraft.getInstance().player; + LocalPlayer player = mc.player; if (player == null) return; Level level = player.level; @@ -151,11 +156,15 @@ public class ToolboxHandlerClient { } public static void renderOverlay(ForgeIngameGui gui, PoseStack poseStack, float partialTicks, int width, int height) { + Minecraft mc = Minecraft.getInstance(); + if (mc.options.hideGui) + return; + int x = width / 2 - 90; int y = height - 23; RenderSystem.enableDepthTest(); - Player player = Minecraft.getInstance().player; + Player player = mc.player; CompoundTag persistentData = player.getPersistentData(); if (!persistentData.contains("CreateToolboxData")) return; diff --git a/src/main/java/com/simibubi/create/content/curiosities/tools/BlueprintOverlayRenderer.java b/src/main/java/com/simibubi/create/content/curiosities/tools/BlueprintOverlayRenderer.java index f3c74c14e..6889a801e 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/tools/BlueprintOverlayRenderer.java +++ b/src/main/java/com/simibubi/create/content/curiosities/tools/BlueprintOverlayRenderer.java @@ -32,6 +32,7 @@ import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; import net.minecraft.world.item.crafting.CraftingRecipe; import net.minecraft.world.item.crafting.RecipeType; +import net.minecraft.world.level.GameType; import net.minecraft.world.phys.EntityHitResult; import net.minecraft.world.phys.HitResult; import net.minecraft.world.phys.HitResult.Type; @@ -60,13 +61,16 @@ public class BlueprintOverlayRenderer { public static void tick() { Minecraft mc = Minecraft.getInstance(); - HitResult mouseOver = mc.hitResult; + BlueprintSection last = lastTargetedSection; - boolean sneak = mc.player.isShiftKeyDown(); lastTargetedSection = null; active = false; noOutput = false; + if (mc.gameMode.getPlayerMode() == GameType.SPECTATOR) + return; + + HitResult mouseOver = mc.hitResult; if (mouseOver == null) return; if (mouseOver.getType() != Type.ENTITY) @@ -83,6 +87,7 @@ public class BlueprintOverlayRenderer { lastTargetedSection = last; active = true; + boolean sneak = mc.player.isShiftKeyDown(); if (sectionAt != lastTargetedSection || AnimationTickHolder.getTicks() % 10 == 0 || lastSneakState != sneak) rebuild(sectionAt, sneak); @@ -236,10 +241,13 @@ public class BlueprintOverlayRenderer { public static void renderOverlay(ForgeIngameGui gui, PoseStack poseStack, float partialTicks, int width, int height) { + Minecraft mc = Minecraft.getInstance(); + if (mc.options.hideGui) + return; + if (!active || empty) return; - Minecraft mc = Minecraft.getInstance(); int w = 21 * ingredients.size(); if (!noOutput) @@ -275,6 +283,7 @@ public class BlueprintOverlayRenderer { resultCraftable ? x - 1 : x, resultCraftable ? y - 1 : y); drawItemStack(poseStack, mc, x, y, result, null); } + RenderSystem.disableBlend(); } public static void drawItemStack(PoseStack ms, Minecraft mc, int x, int y, ItemStack itemStack, String count) { diff --git a/src/main/java/com/simibubi/create/content/logistics/item/LinkedControllerClientHandler.java b/src/main/java/com/simibubi/create/content/logistics/item/LinkedControllerClientHandler.java index 1e20ad42f..06b490716 100644 --- a/src/main/java/com/simibubi/create/content/logistics/item/LinkedControllerClientHandler.java +++ b/src/main/java/com/simibubi/create/content/logistics/item/LinkedControllerClientHandler.java @@ -211,9 +211,12 @@ public class LinkedControllerClientHandler { public static void renderOverlay(ForgeIngameGui gui, PoseStack poseStack, float partialTicks, int width1, int height1) { + Minecraft mc = Minecraft.getInstance(); + if (mc.options.hideGui) + return; + if (MODE != Mode.BIND) return; - Minecraft mc = Minecraft.getInstance(); poseStack.pushPose(); Screen tooltipScreen = new Screen(TextComponent.EMPTY) { @@ -239,7 +242,7 @@ public class LinkedControllerClientHandler { for (Component iTextComponent : list) width = Math.max(width, mc.font.width(iTextComponent)); int x = (width1 / 3) - width / 2; - int y = height1 - height; + int y = height1 - height - 24; // TODO tooltipScreen.renderComponentTooltip(poseStack, list, x, y); diff --git a/src/main/java/com/simibubi/create/content/schematics/client/SchematicHandler.java b/src/main/java/com/simibubi/create/content/schematics/client/SchematicHandler.java index 9269de411..b12481874 100644 --- a/src/main/java/com/simibubi/create/content/schematics/client/SchematicHandler.java +++ b/src/main/java/com/simibubi/create/content/schematics/client/SchematicHandler.java @@ -32,6 +32,7 @@ import net.minecraft.nbt.Tag; import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.GameType; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Mirror; @@ -78,11 +79,22 @@ public class SchematicHandler { } public void tick() { - LocalPlayer player = Minecraft.getInstance().player; + Minecraft mc = Minecraft.getInstance(); + if (mc.gameMode.getPlayerMode() == GameType.SPECTATOR) { + if (active) { + active = false; + syncCooldown = 0; + activeHotbarSlot = 0; + activeSchematicItem = null; + renderers.forEach(r -> r.setActive(false)); + } + return; + } if (activeSchematicItem != null && transformation != null) transformation.tick(); + LocalPlayer player = mc.player; ItemStack stack = findBlueprintInHand(player); if (stack == null) { active = false; @@ -222,7 +234,7 @@ public class SchematicHandler { } public void renderOverlay(ForgeIngameGui gui, PoseStack poseStack, float partialTicks, int width, int height) { - if (!active) + if (Minecraft.getInstance().options.hideGui || !active) return; if (activeSchematicItem != null) this.overlay.renderOn(poseStack, activeHotbarSlot); diff --git a/src/main/java/com/simibubi/create/content/schematics/client/ToolSelectionScreen.java b/src/main/java/com/simibubi/create/content/schematics/client/ToolSelectionScreen.java index 70173d792..2a567a8e4 100644 --- a/src/main/java/com/simibubi/create/content/schematics/client/ToolSelectionScreen.java +++ b/src/main/java/com/simibubi/create/content/schematics/client/ToolSelectionScreen.java @@ -134,7 +134,7 @@ public class ToolSelectionScreen extends Screen { matrixStack.popPose(); } - RenderSystem.enableBlend(); + RenderSystem.disableBlend(); matrixStack.popPose(); } diff --git a/src/main/java/com/simibubi/create/foundation/gui/Theme.java b/src/main/java/com/simibubi/create/foundation/gui/Theme.java index 665b3da50..ad21e7223 100644 --- a/src/main/java/com/simibubi/create/foundation/gui/Theme.java +++ b/src/main/java/com/simibubi/create/foundation/gui/Theme.java @@ -95,6 +95,7 @@ public class Theme { put(Key.PONDER_BUTTON_DISABLE, new Color(0x80_909090, true), new Color(0x20_909090, true)); put(Key.PONDER_BACKGROUND_TRANSPARENT, new Color(0xdd_000000, true)); put(Key.PONDER_BACKGROUND_FLAT, new Color(0xff_000000, false)); + put(Key.PONDER_BACKGROUND_IMPORTANT, new Color(0xdd_0e0e20, true)); put(Key.PONDER_IDLE, new Color(0x40ffeedd, true), new Color(0x20ffeedd, true)); put(Key.PONDER_HOVER, new Color(0x70ffffff, true), new Color(0x30ffffff, true)); put(Key.PONDER_HIGHLIGHT, new Color(0xf0ffeedd, true), new Color(0x60ffeedd, true)); @@ -122,7 +123,7 @@ public class Theme { } protected void put(Key key, Color c1, Color c2) { - put(key.get(), c1 , c2); + put(key.get(), c1, c2); } protected void lookup(Key key, Key source) { @@ -162,6 +163,7 @@ public class Theme { public static final Key PONDER_BACKGROUND_TRANSPARENT = new Key(); public static final Key PONDER_BACKGROUND_FLAT = new Key(); + public static final Key PONDER_BACKGROUND_IMPORTANT = new Key(); public static final Key PONDER_IDLE = new Key(); public static final Key PONDER_HOVER = new Key(); public static final Key PONDER_HIGHLIGHT = new Key(); diff --git a/src/main/java/com/simibubi/create/foundation/ponder/PonderTag.java b/src/main/java/com/simibubi/create/foundation/ponder/PonderTag.java index bfb3b356d..3d3d5932a 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/PonderTag.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/PonderTag.java @@ -67,7 +67,7 @@ public class PonderTag implements ScreenElement { "Tools and Components used to assemble structures moved as an animated Contraption") .addToIndex(), - SAILS = create("windmill_sails").item(AllBlocks.WINDMILL_BEARING.get(), true, true) + SAILS = create("windmill_sails").item(AllBlocks.WINDMILL_BEARING.get()) .defaultLang("Sails for Windmill Bearings", "Blocks that count towards the strength of a Windmill Contraption when assembled. Each of these have equal efficiency in doing so."), diff --git a/src/main/java/com/simibubi/create/foundation/ponder/ui/PonderTagScreen.java b/src/main/java/com/simibubi/create/foundation/ponder/ui/PonderTagScreen.java index a1952d156..854026875 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/ui/PonderTagScreen.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/ui/PonderTagScreen.java @@ -108,8 +108,9 @@ public class PonderTagScreen extends NavigatableSimiScreen { .getItem() .getRegistryName(); - PonderButton b = new PonderButton(itemCenterX - layout.getTotalWidth() / 2 - 42, itemCenterY - 10) + PonderButton b = new PonderButton(itemCenterX - layout.getTotalWidth() / 2 - 48, itemCenterY - 10) .showing(tag.getMainItem()); + b.withCustomBackground(Theme.c(Theme.Key.PONDER_BACKGROUND_IMPORTANT)); if (PonderRegistry.ALL.containsKey(registryName)) { b.withCallback((mouseX, mouseY) -> {