From 420b06d41423d8757c562c99994236c53f972f8a Mon Sep 17 00:00:00 2001 From: Christian Date: Sun, 29 Jan 2023 23:57:47 +0100 Subject: [PATCH] Modifier settings GUI for array and mirror, with header. New parts in modifiers gui texture. Added reordering modifiers. Replaced all icon rendering with AllIcons class. Delayed blockset placing in server. Modifiers now work when buildmode is DISABLED. Modifiers now work with breaking when buildmode would break a single block. Modifiers screen renders tooltip on top of everything. New labeledScrollInput class, extension of Create's ScrollInput. BlockPreviews ignores config settings to hide itself when placing more than 1 block. Fixed mirroring wrong horizontal axis. --- .../effortlessbuilding/AllGuiTextures.java | 11 +- .../effortlessbuilding/ClientEvents.java | 1 - .../effortlessbuilding/CommonEvents.java | 6 +- .../EffortlessBuilding.java | 2 - .../buildmode/BuildModeEnum.java | 29 ++- .../buildmode/ModeOptions.java | 65 +++-- .../buildmodifier/Array.java | 1 + .../buildmodifier/BuildModifiers.java | 23 -- .../buildmodifier/Mirror.java | 34 +++ .../buildmodifier/RadialMirror.java | 2 + .../foundation/gui/AbstractSimiScreen.java | 7 + .../foundation/gui/widget/ScrollInput.java | 3 +- .../foundation/utility/outliner/Outliner.java | 2 +- .../gui/buildmode/RadialMenu.java | 15 +- .../gui/buildmodifier/ArrayEntry.java | 79 ++---- .../gui/buildmodifier/BaseModifierEntry.java | 86 +++++-- .../gui/buildmodifier/MirrorEntry.java | 235 ++++++++++++++++-- .../gui/buildmodifier/ModifiersScreen.java | 40 ++- .../buildmodifier/ModifiersScreenList.java | 30 ++- .../gui/elements/LabeledScrollInput.java | 49 ++++ .../gui/elements/MiniButton.java | 19 ++ .../network/ServerPlaceBlocksPacket.java | 12 +- .../render/BlockPreviews.java | 10 +- .../systems/BuilderChain.java | 11 +- .../systems/DelayedBlockPlacer.java | 104 -------- .../systems/ServerBlockPlacer.java | 40 ++- .../utilities/BlockEntry.java | 7 +- .../utilities/BlockSet.java | 16 +- .../utilities/MathHelper.java | 19 ++ .../utilities/ReachHelper.java | 4 + .../assets/effortlessbuilding/lang/en_us.json | 3 +- .../textures/gui/modifiers.png | Bin 2405 -> 8154 bytes 32 files changed, 651 insertions(+), 314 deletions(-) create mode 100644 src/main/java/nl/requios/effortlessbuilding/gui/elements/LabeledScrollInput.java create mode 100644 src/main/java/nl/requios/effortlessbuilding/gui/elements/MiniButton.java delete mode 100644 src/main/java/nl/requios/effortlessbuilding/systems/DelayedBlockPlacer.java diff --git a/src/main/java/nl/requios/effortlessbuilding/AllGuiTextures.java b/src/main/java/nl/requios/effortlessbuilding/AllGuiTextures.java index 3843a43..10f40b4 100644 --- a/src/main/java/nl/requios/effortlessbuilding/AllGuiTextures.java +++ b/src/main/java/nl/requios/effortlessbuilding/AllGuiTextures.java @@ -11,9 +11,14 @@ import nl.requios.effortlessbuilding.create.foundation.gui.element.ScreenElement import nl.requios.effortlessbuilding.create.foundation.utility.Color; public enum AllGuiTextures implements ScreenElement { - ARRAY_ENTRY("modifiers", 256, 60), - MIRROR_ENTRY("modifiers", 0, 60, 256, 60), - RADIAL_MIRROR_ENTRY("modifiers", 0, 120, 256, 60), + ARRAY_ENTRY("modifiers", 226, 60), + MIRROR_ENTRY("modifiers", 0, 60, 226, 60), + RADIAL_MIRROR_ENTRY("modifiers", 0, 120, 226, 60), + ENABLE_BUTTON_BACKGROUND("modifiers", 234, 0, 9, 9), + CHECKMARK("modifiers", 243, 0, 10, 9), + ARROW_UP("modifiers", 234, 9, 9, 9), + ARROW_DOWN("modifiers", 243, 9, 9, 9), + TRASH("modifiers", 234, 18, 9, 9), ; public final ResourceLocation location; public int width, height; diff --git a/src/main/java/nl/requios/effortlessbuilding/ClientEvents.java b/src/main/java/nl/requios/effortlessbuilding/ClientEvents.java index e2eaf8c..f72be3b 100644 --- a/src/main/java/nl/requios/effortlessbuilding/ClientEvents.java +++ b/src/main/java/nl/requios/effortlessbuilding/ClientEvents.java @@ -91,7 +91,6 @@ public class ClientEvents { BuildModeEnum buildMode = EffortlessBuildingClient.BUILD_MODES.getBuildMode(); if (mc.screen != null || - buildMode == BuildModeEnum.DISABLED || RadialMenu.instance.isVisible()) { return; } diff --git a/src/main/java/nl/requios/effortlessbuilding/CommonEvents.java b/src/main/java/nl/requios/effortlessbuilding/CommonEvents.java index 5f2d84e..4318d0e 100644 --- a/src/main/java/nl/requios/effortlessbuilding/CommonEvents.java +++ b/src/main/java/nl/requios/effortlessbuilding/CommonEvents.java @@ -13,6 +13,7 @@ import net.minecraftforge.event.TickEvent; import net.minecraftforge.event.entity.player.PlayerEvent; import net.minecraftforge.event.level.BlockEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.fml.LogicalSide; import net.minecraftforge.fml.common.Mod.EventBusSubscriber; import nl.requios.effortlessbuilding.systems.UndoRedo; import nl.requios.effortlessbuilding.compatibility.CompatHelper; @@ -32,8 +33,9 @@ public class CommonEvents { @SubscribeEvent public static void onTick(TickEvent.LevelTickEvent event) { if (event.phase != TickEvent.Phase.START) return; + if (event.side == LogicalSide.CLIENT) return; - EffortlessBuilding.DELAYED_BLOCK_PLACER.tick(); + EffortlessBuilding.SERVER_BLOCK_PLACER.tick(); } //Cancel event if necessary. Nothing more, rest is handled on mouseclick @@ -128,4 +130,4 @@ public class CommonEvents { //TODO disable build mode and modifiers? } -} \ No newline at end of file +} diff --git a/src/main/java/nl/requios/effortlessbuilding/EffortlessBuilding.java b/src/main/java/nl/requios/effortlessbuilding/EffortlessBuilding.java index 0bc7b3c..42c782d 100644 --- a/src/main/java/nl/requios/effortlessbuilding/EffortlessBuilding.java +++ b/src/main/java/nl/requios/effortlessbuilding/EffortlessBuilding.java @@ -22,7 +22,6 @@ import nl.requios.effortlessbuilding.compatibility.CompatHelper; import nl.requios.effortlessbuilding.gui.DiamondRandomizerBagContainer; import nl.requios.effortlessbuilding.gui.GoldenRandomizerBagContainer; import nl.requios.effortlessbuilding.gui.RandomizerBagContainer; -import nl.requios.effortlessbuilding.systems.DelayedBlockPlacer; import nl.requios.effortlessbuilding.item.*; import nl.requios.effortlessbuilding.network.PacketHandler; import nl.requios.effortlessbuilding.proxy.ClientProxy; @@ -42,7 +41,6 @@ public class EffortlessBuilding { public static IProxy proxy = DistExecutor.unsafeRunForDist(() -> ClientProxy::new, () -> ServerProxy::new); public static final ServerBlockPlacer SERVER_BLOCK_PLACER = new ServerBlockPlacer(); - public static final DelayedBlockPlacer DELAYED_BLOCK_PLACER = new DelayedBlockPlacer(); //Registration private static final DeferredRegister ITEMS = DeferredRegister.create(ForgeRegistries.ITEMS, MODID); diff --git a/src/main/java/nl/requios/effortlessbuilding/buildmode/BuildModeEnum.java b/src/main/java/nl/requios/effortlessbuilding/buildmode/BuildModeEnum.java index 859f31a..0dabaf5 100644 --- a/src/main/java/nl/requios/effortlessbuilding/buildmode/BuildModeEnum.java +++ b/src/main/java/nl/requios/effortlessbuilding/buildmode/BuildModeEnum.java @@ -1,20 +1,21 @@ package nl.requios.effortlessbuilding.buildmode; +import nl.requios.effortlessbuilding.AllIcons; import nl.requios.effortlessbuilding.buildmode.buildmodes.*; public enum BuildModeEnum { - DISABLED("normal", new Disabled(), BuildModeCategoryEnum.BASIC), - SINGLE("normal_plus", new Single(), BuildModeCategoryEnum.BASIC, ModeOptions.OptionEnum.BUILD_SPEED), - LINE("line", new Line(), BuildModeCategoryEnum.BASIC /*, OptionEnum.THICKNESS*/), - WALL("wall", new Wall(), BuildModeCategoryEnum.BASIC, ModeOptions.OptionEnum.FILL), - FLOOR("floor", new Floor(), BuildModeCategoryEnum.BASIC, ModeOptions.OptionEnum.FILL), - CUBE("cube", new Cube(), BuildModeCategoryEnum.BASIC, ModeOptions.OptionEnum.CUBE_FILL), - DIAGONAL_LINE("diagonal_line", new DiagonalLine(), BuildModeCategoryEnum.DIAGONAL /*, OptionEnum.THICKNESS*/), - DIAGONAL_WALL("diagonal_wall", new DiagonalWall(), BuildModeCategoryEnum.DIAGONAL /*, OptionEnum.FILL*/), - SLOPE_FLOOR("slope_floor", new SlopeFloor(), BuildModeCategoryEnum.DIAGONAL, ModeOptions.OptionEnum.RAISED_EDGE), - CIRCLE("circle", new Circle(), BuildModeCategoryEnum.CIRCULAR, ModeOptions.OptionEnum.CIRCLE_START, ModeOptions.OptionEnum.FILL), - CYLINDER("cylinder", new Cylinder(), BuildModeCategoryEnum.CIRCULAR, ModeOptions.OptionEnum.CIRCLE_START, ModeOptions.OptionEnum.FILL), - SPHERE("sphere", new Sphere(), BuildModeCategoryEnum.CIRCULAR, ModeOptions.OptionEnum.CIRCLE_START, ModeOptions.OptionEnum.FILL); + DISABLED("normal", new Disabled(), BuildModeCategoryEnum.BASIC, AllIcons.I_DISABLE), + SINGLE("normal_plus", new Single(), BuildModeCategoryEnum.BASIC, AllIcons.I_SINGLE, ModeOptions.OptionEnum.BUILD_SPEED), + LINE("line", new Line(), BuildModeCategoryEnum.BASIC, AllIcons.I_LINE /*, OptionEnum.THICKNESS*/), + WALL("wall", new Wall(), BuildModeCategoryEnum.BASIC, AllIcons.I_WALL, ModeOptions.OptionEnum.FILL), + FLOOR("floor", new Floor(), BuildModeCategoryEnum.BASIC, AllIcons.I_FLOOR, ModeOptions.OptionEnum.FILL), + CUBE("cube", new Cube(), BuildModeCategoryEnum.BASIC, AllIcons.I_CUBE, ModeOptions.OptionEnum.CUBE_FILL), + DIAGONAL_LINE("diagonal_line", new DiagonalLine(), BuildModeCategoryEnum.DIAGONAL, AllIcons.I_DIAGONAL_LINE /*, OptionEnum.THICKNESS*/), + DIAGONAL_WALL("diagonal_wall", new DiagonalWall(), BuildModeCategoryEnum.DIAGONAL, AllIcons.I_DIAGONAL_WALL /*, OptionEnum.FILL*/), + SLOPE_FLOOR("slope_floor", new SlopeFloor(), BuildModeCategoryEnum.DIAGONAL, AllIcons.I_SLOPED_FLOOR, ModeOptions.OptionEnum.RAISED_EDGE), + CIRCLE("circle", new Circle(), BuildModeCategoryEnum.CIRCULAR, AllIcons.I_CIRCLE, ModeOptions.OptionEnum.CIRCLE_START, ModeOptions.OptionEnum.FILL), + CYLINDER("cylinder", new Cylinder(), BuildModeCategoryEnum.CIRCULAR, AllIcons.I_CYLINDER, ModeOptions.OptionEnum.CIRCLE_START, ModeOptions.OptionEnum.FILL), + SPHERE("sphere", new Sphere(), BuildModeCategoryEnum.CIRCULAR, AllIcons.I_SPHERE, ModeOptions.OptionEnum.CIRCLE_START, ModeOptions.OptionEnum.FILL); // PYRAMID("pyramid", new Pyramid(), BuildModeCategoryEnum.ROOF), // CONE("cone", new Cone(), BuildModeCategoryEnum.ROOF), // DOME("dome", new Dome(), BuildModeCategoryEnum.ROOF); @@ -22,12 +23,14 @@ public enum BuildModeEnum { private final String name; public final IBuildMode instance; public final BuildModeCategoryEnum category; + public final AllIcons icon; public final ModeOptions.OptionEnum[] options; - BuildModeEnum(String name, IBuildMode instance, BuildModeCategoryEnum category, ModeOptions.OptionEnum... options) { + BuildModeEnum(String name, IBuildMode instance, BuildModeCategoryEnum category, AllIcons icon, ModeOptions.OptionEnum... options) { this.name = name; this.instance = instance; this.category = category; + this.icon = icon; this.options = options; } diff --git a/src/main/java/nl/requios/effortlessbuilding/buildmode/ModeOptions.java b/src/main/java/nl/requios/effortlessbuilding/buildmode/ModeOptions.java index 1142b86..a7ccc6c 100644 --- a/src/main/java/nl/requios/effortlessbuilding/buildmode/ModeOptions.java +++ b/src/main/java/nl/requios/effortlessbuilding/buildmode/ModeOptions.java @@ -3,6 +3,7 @@ package nl.requios.effortlessbuilding.buildmode; import net.minecraft.world.entity.player.Player; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; +import nl.requios.effortlessbuilding.AllIcons; import nl.requios.effortlessbuilding.ClientEvents; import nl.requios.effortlessbuilding.EffortlessBuilding; import nl.requios.effortlessbuilding.EffortlessBuildingClient; @@ -104,46 +105,60 @@ public class ModeOptions { action != ActionEnum.OPEN_MODIFIER_SETTINGS && action != ActionEnum.OPEN_PLAYER_SETTINGS) { - EffortlessBuilding.logTranslate(player, "", action.name, "", true); + EffortlessBuilding.logTranslate(player, "", action.getNameKey(), "", true); } } public enum ActionEnum { - UNDO("effortlessbuilding.action.undo"), - REDO("effortlessbuilding.action.redo"), - OPEN_MODIFIER_SETTINGS("effortlessbuilding.action.open_modifier_settings"), - OPEN_PLAYER_SETTINGS("effortlessbuilding.action.open_player_settings"), + UNDO("undo", AllIcons.I_UNDO), + REDO("redo", AllIcons.I_REDO), + OPEN_MODIFIER_SETTINGS("open_modifier_settings", AllIcons.I_SETTINGS), + OPEN_PLAYER_SETTINGS("open_player_settings", AllIcons.I_SETTINGS), - REPLACE_ONLY_AIR("effortlessbuilding.action.replace_only_air"), - REPLACE_BLOCKS_AND_AIR("effortlessbuilding.action.replace_blocks_and_air"), - REPLACE_ONLY_BLOCKS("effortlessbuilding.action.replace_only_blocks"), - REPLACE_FILTERED_BY_OFFHAND("effortlessbuilding.action.replace_filtered_by_offhand"), - TOGGLE_PROTECT_TILE_ENTITIES("effortlessbuilding.action.toggle_protect_tile_entities"), + REPLACE_ONLY_AIR("replace_only_air", AllIcons.I_REPLACE), + REPLACE_BLOCKS_AND_AIR("replace_blocks_and_air", AllIcons.I_REPLACE), + REPLACE_ONLY_BLOCKS("replace_only_blocks", AllIcons.I_REPLACE), + REPLACE_FILTERED_BY_OFFHAND("replace_filtered_by_offhand", AllIcons.I_REPLACE), + TOGGLE_PROTECT_TILE_ENTITIES("toggle_protect_tile_entities", AllIcons.I_REPLACE), - NORMAL_SPEED("effortlessbuilding.action.normal_speed"), - FAST_SPEED("effortlessbuilding.action.fast_speed"), + NORMAL_SPEED("normal_speed", AllIcons.I_NORMAL_SPEED), + FAST_SPEED("fast_speed", AllIcons.I_FAST_SPEED), - FULL("effortlessbuilding.action.full"), - HOLLOW("effortlessbuilding.action.hollow"), + FULL("full", AllIcons.I_FILLED), + HOLLOW("hollow", AllIcons.I_HOLLOW), - CUBE_FULL("effortlessbuilding.action.full"), - CUBE_HOLLOW("effortlessbuilding.action.hollow"), - CUBE_SKELETON("effortlessbuilding.action.skeleton"), + CUBE_FULL("full", AllIcons.I_CUBE_FILLED), + CUBE_HOLLOW("hollow", AllIcons.I_CUBE_HOLLOW), + CUBE_SKELETON("skeleton", AllIcons.I_CUBE_SKELETON), - SHORT_EDGE("effortlessbuilding.action.short_edge"), - LONG_EDGE("effortlessbuilding.action.long_edge"), + SHORT_EDGE("short_edge", AllIcons.I_SHORT_EDGE), + LONG_EDGE("long_edge", AllIcons.I_LONG_EDGE), - THICKNESS_1("effortlessbuilding.action.thickness_1"), - THICKNESS_3("effortlessbuilding.action.thickness_3"), - THICKNESS_5("effortlessbuilding.action.thickness_5"), + THICKNESS_1("thickness_1", AllIcons.I_THICKNESS_1), + THICKNESS_3("thickness_3", AllIcons.I_THICKNESS_3), + THICKNESS_5("thickness_5", AllIcons.I_THICKNESS_5), - CIRCLE_START_CORNER("effortlessbuilding.action.start_corner"), - CIRCLE_START_CENTER("effortlessbuilding.action.start_center"); + CIRCLE_START_CORNER("start_corner", AllIcons.I_CIRCLE_START_CORNER), + CIRCLE_START_CENTER("start_center", AllIcons.I_CIRCLE_START_CENTER); public String name; + public AllIcons icon; - ActionEnum(String name) { + ActionEnum(String name, AllIcons icon) { this.name = name; + this.icon = icon; + } + + public String getName() { + return name; + } + + public String getNameKey() { + return "effortlessbuilding.action." + name; + } + + public String getDescriptionKey() { + return "effortlessbuilding.action." + name + ".description"; } } diff --git a/src/main/java/nl/requios/effortlessbuilding/buildmodifier/Array.java b/src/main/java/nl/requios/effortlessbuilding/buildmodifier/Array.java index dda4fb3..8e2377b 100644 --- a/src/main/java/nl/requios/effortlessbuilding/buildmodifier/Array.java +++ b/src/main/java/nl/requios/effortlessbuilding/buildmodifier/Array.java @@ -37,6 +37,7 @@ public class Array extends BaseModifier { var newBlockEntry = new BlockEntry(pos); newBlockEntry.copyRotationSettingsFrom(blockEntry); + blocks.add(newBlockEntry); } } } diff --git a/src/main/java/nl/requios/effortlessbuilding/buildmodifier/BuildModifiers.java b/src/main/java/nl/requios/effortlessbuilding/buildmodifier/BuildModifiers.java index 32dc5d1..ee9a3b7 100644 --- a/src/main/java/nl/requios/effortlessbuilding/buildmodifier/BuildModifiers.java +++ b/src/main/java/nl/requios/effortlessbuilding/buildmodifier/BuildModifiers.java @@ -1,33 +1,10 @@ package nl.requios.effortlessbuilding.buildmodifier; -import net.minecraft.nbt.CompoundTag; -import net.minecraft.nbt.NbtUtils; import net.minecraft.nbt.Tag; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.level.block.Blocks; import net.minecraft.world.entity.player.Player; -import net.minecraft.world.item.BlockItem; -import net.minecraft.world.item.context.BlockPlaceContext; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.item.context.UseOnContext; -import net.minecraft.core.Direction; -import net.minecraft.world.InteractionHand; -import net.minecraft.core.BlockPos; -import net.minecraft.world.phys.BlockHitResult; -import net.minecraft.world.phys.Vec3; -import net.minecraft.world.level.Level; -import nl.requios.effortlessbuilding.CommonConfig; import nl.requios.effortlessbuilding.EffortlessBuilding; -import nl.requios.effortlessbuilding.compatibility.CompatHelper; import nl.requios.effortlessbuilding.create.foundation.utility.NBTHelper; -import nl.requios.effortlessbuilding.systems.DelayedBlockPlacer; -import nl.requios.effortlessbuilding.systems.UndoRedo; import nl.requios.effortlessbuilding.utilities.BlockSet; -import nl.requios.effortlessbuilding.utilities.ReachHelper; -import nl.requios.effortlessbuilding.utilities.SurvivalHelper; -import nl.requios.effortlessbuilding.item.AbstractRandomizerBagItem; -import nl.requios.effortlessbuilding.utilities.UndoRedoBlockSet; import java.util.ArrayList; import java.util.Collections; diff --git a/src/main/java/nl/requios/effortlessbuilding/buildmodifier/Mirror.java b/src/main/java/nl/requios/effortlessbuilding/buildmodifier/Mirror.java index f5db9ef..5561f1a 100644 --- a/src/main/java/nl/requios/effortlessbuilding/buildmodifier/Mirror.java +++ b/src/main/java/nl/requios/effortlessbuilding/buildmodifier/Mirror.java @@ -1,5 +1,6 @@ package nl.requios.effortlessbuilding.buildmodifier; +import net.minecraft.client.Minecraft; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.NbtUtils; import net.minecraft.nbt.Tag; @@ -19,6 +20,13 @@ public class Mirror extends BaseModifier { public boolean drawLines = true; public boolean drawPlanes = true; + public Mirror() { + super(); + var player = Minecraft.getInstance().player; + if (player != null) + position = Vec3.atLowerCornerOf(Minecraft.getInstance().player.blockPosition()); + } + @Override public void findCoordinates(BlockSet blocks, Player player) { if (!(enabled && (mirrorX || mirrorY || mirrorZ))) return; @@ -43,6 +51,7 @@ public class Mirror extends BaseModifier { var newBlockEntry = new BlockEntry(newBlockPos); newBlockEntry.copyRotationSettingsFrom(blockEntry); newBlockEntry.mirrorX = !newBlockEntry.mirrorX; + blocks.add(newBlockEntry); if (mirrorY) performMirrorY(blocks, newBlockEntry); if (mirrorZ) performMirrorZ(blocks, newBlockEntry); @@ -58,6 +67,7 @@ public class Mirror extends BaseModifier { var newBlockEntry = new BlockEntry(newBlockPos); newBlockEntry.copyRotationSettingsFrom(blockEntry); newBlockEntry.mirrorY = !newBlockEntry.mirrorY; + blocks.add(newBlockEntry); if (mirrorZ) performMirrorZ(blocks, newBlockEntry); } @@ -72,6 +82,7 @@ public class Mirror extends BaseModifier { var newBlockEntry = new BlockEntry(newBlockPos); newBlockEntry.copyRotationSettingsFrom(blockEntry); newBlockEntry.mirrorZ = !newBlockEntry.mirrorZ; + blocks.add(newBlockEntry); } public boolean isWithinRange(BlockPos blockPos) { @@ -83,6 +94,29 @@ public class Mirror extends BaseModifier { public int getReach() { return radius * 2; //Change ModifierSettings#setReachUpgrade too } + + public void toggleMirrorAxis(int index) { + switch (index) { + case 0 -> mirrorX = !mirrorX; + case 1 -> mirrorY = !mirrorY; + case 2 -> mirrorZ = !mirrorZ; + } + } + + public boolean getMirrorAxis(int index) { + switch (index) { + case 0 -> { + return mirrorX; + } + case 1 -> { + return mirrorY; + } + case 2 -> { + return mirrorZ; + } + } + return false; + } @Override public CompoundTag serializeNBT() { diff --git a/src/main/java/nl/requios/effortlessbuilding/buildmodifier/RadialMirror.java b/src/main/java/nl/requios/effortlessbuilding/buildmodifier/RadialMirror.java index 944a175..9a0f7e3 100644 --- a/src/main/java/nl/requios/effortlessbuilding/buildmodifier/RadialMirror.java +++ b/src/main/java/nl/requios/effortlessbuilding/buildmodifier/RadialMirror.java @@ -73,6 +73,8 @@ public class RadialMirror extends BaseModifier { //rotate block double angleToCenter = Mth.atan2(relNewVec.x, relNewVec.z); //between -PI and PI rotateBlockEntry(newBlockEntry, angleToCenter, doAlternate); + + blocks.add(newBlockEntry); } } diff --git a/src/main/java/nl/requios/effortlessbuilding/create/foundation/gui/AbstractSimiScreen.java b/src/main/java/nl/requios/effortlessbuilding/create/foundation/gui/AbstractSimiScreen.java index cc71dfb..26d1b8f 100644 --- a/src/main/java/nl/requios/effortlessbuilding/create/foundation/gui/AbstractSimiScreen.java +++ b/src/main/java/nl/requios/effortlessbuilding/create/foundation/gui/AbstractSimiScreen.java @@ -12,6 +12,7 @@ import net.minecraft.client.gui.screens.Screen; import net.minecraft.network.chat.Component; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; +import nl.requios.effortlessbuilding.gui.buildmodifier.ModifiersScreenList; import java.util.Collection; import java.util.List; @@ -146,7 +147,13 @@ public abstract class AbstractSimiScreen extends Screen { int tty = simiWidget.lockedTooltipY == -1 ? mouseY : simiWidget.lockedTooltipY + simiWidget.y; renderComponentTooltip(ms, tooltip, ttx, tty); } + + //Added + if (widget instanceof ModifiersScreenList list) { + list.renderWindowForeground(ms, mouseX, mouseY, partialTicks); + } } + } protected void endFrame() {} diff --git a/src/main/java/nl/requios/effortlessbuilding/create/foundation/gui/widget/ScrollInput.java b/src/main/java/nl/requios/effortlessbuilding/create/foundation/gui/widget/ScrollInput.java index 44423b3..bb7e674 100644 --- a/src/main/java/nl/requios/effortlessbuilding/create/foundation/gui/widget/ScrollInput.java +++ b/src/main/java/nl/requios/effortlessbuilding/create/foundation/gui/widget/ScrollInput.java @@ -132,7 +132,8 @@ public class ScrollInput extends AbstractSimiWidget { onChanged(); } - return priorState != state; +// return priorState != state; + return true; //Changed } protected void clampState() { diff --git a/src/main/java/nl/requios/effortlessbuilding/create/foundation/utility/outliner/Outliner.java b/src/main/java/nl/requios/effortlessbuilding/create/foundation/utility/outliner/Outliner.java index c1df937..5588623 100644 --- a/src/main/java/nl/requios/effortlessbuilding/create/foundation/utility/outliner/Outliner.java +++ b/src/main/java/nl/requios/effortlessbuilding/create/foundation/utility/outliner/Outliner.java @@ -154,7 +154,7 @@ public class Outliner { public static class OutlineEntry { - static final int fadeTicks = 8; + static final int fadeTicks = 4; private Outline outline; private int ticksTillRemoval; 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 b793e18..3b10d16 100644 --- a/src/main/java/nl/requios/effortlessbuilding/gui/buildmode/RadialMenu.java +++ b/src/main/java/nl/requios/effortlessbuilding/gui/buildmode/RadialMenu.java @@ -19,6 +19,7 @@ import net.minecraft.resources.ResourceLocation; import net.minecraft.sounds.SoundEvents; import net.minecraft.sounds.SoundSource; import net.minecraft.util.RandomSource; +import nl.requios.effortlessbuilding.AllIcons; import nl.requios.effortlessbuilding.ClientEvents; import nl.requios.effortlessbuilding.EffortlessBuilding; import nl.requios.effortlessbuilding.EffortlessBuildingClient; @@ -296,9 +297,8 @@ public class RadialMenu extends Screen { final double x = (menuRegion.x1 + menuRegion.x2) * 0.5 * (ringOuterEdge * 0.55 + 0.45 * ringInnerEdge); final double y = (menuRegion.y1 + menuRegion.y2) * 0.5 * (ringOuterEdge * 0.55 + 0.45 * ringInnerEdge); - - RenderSystem.setShaderTexture(0, new ResourceLocation(EffortlessBuilding.MODID, "textures/icons/" + menuRegion.mode.name().toLowerCase() + ".png")); - blit(ms, (int) (middleX + x - 8), (int) (middleY + y - 8), 16, 16, 0, 0, 18, 18, 18, 18); + + menuRegion.mode.icon.render(ms, (int) (middleX + x - 8), (int) (middleY + y - 8)); } //Draw action icons @@ -307,8 +307,7 @@ public class RadialMenu extends Screen { final double x = (button.x1 + button.x2) / 2 + 0.01; final double y = (button.y1 + button.y2) / 2 + 0.01; - RenderSystem.setShaderTexture(0, new ResourceLocation(EffortlessBuilding.MODID, "textures/icons/" + button.action.name().toLowerCase() + ".png")); - blit(ms, (int) (middleX + x - 8), (int) (middleY + y - 8), 16, 16, 0, 0, 18, 18, 18, 18); + button.action.icon.render(ms, (int) (middleX + x - 8), (int) (middleY + y - 8)); } ms.popPose(); @@ -512,10 +511,10 @@ public class RadialMenu extends Screen { public MenuButton(final ActionEnum action, final double x, final double y, final Direction textSide) { - this.name = I18n.get(action.name); + this.name = I18n.get(action.getNameKey()); - if (I18n.exists(action.name + ".description")) { - this.description = I18n.get(action.name + ".description"); + if (I18n.exists(action.getDescriptionKey())) { + this.description = I18n.get(action.getDescriptionKey()); } this.action = action; diff --git a/src/main/java/nl/requios/effortlessbuilding/gui/buildmodifier/ArrayEntry.java b/src/main/java/nl/requios/effortlessbuilding/gui/buildmodifier/ArrayEntry.java index c113e02..4bd2377 100644 --- a/src/main/java/nl/requios/effortlessbuilding/gui/buildmodifier/ArrayEntry.java +++ b/src/main/java/nl/requios/effortlessbuilding/gui/buildmodifier/ArrayEntry.java @@ -1,74 +1,47 @@ package nl.requios.effortlessbuilding.gui.buildmodifier; import com.mojang.blaze3d.vertex.PoseStack; -import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.components.Widget; -import net.minecraft.client.gui.screens.Screen; -import net.minecraft.core.BlockPos; -import net.minecraft.network.chat.Component; import net.minecraft.ChatFormatting; +import net.minecraft.client.Minecraft; +import net.minecraft.network.chat.Component; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; import nl.requios.effortlessbuilding.AllGuiTextures; -import nl.requios.effortlessbuilding.EffortlessBuilding; import nl.requios.effortlessbuilding.buildmodifier.Array; import nl.requios.effortlessbuilding.buildmodifier.BaseModifier; -import nl.requios.effortlessbuilding.create.foundation.gui.AbstractSimiScreen; -import nl.requios.effortlessbuilding.create.foundation.gui.widget.Label; import nl.requios.effortlessbuilding.create.foundation.gui.widget.ScrollInput; -import nl.requios.effortlessbuilding.create.foundation.utility.Components; -import nl.requios.effortlessbuilding.create.foundation.utility.FontHelper; -import nl.requios.effortlessbuilding.gui.elements.GuiCheckBoxFixed; -import nl.requios.effortlessbuilding.gui.elements.GuiNumberField; -import nl.requios.effortlessbuilding.gui.elements.GuiScrollPane; +import nl.requios.effortlessbuilding.gui.elements.LabeledScrollInput; import nl.requios.effortlessbuilding.utilities.MathHelper; import nl.requios.effortlessbuilding.utilities.ReachHelper; -import java.util.ArrayList; -import java.util.List; import java.util.Vector; @OnlyIn(Dist.CLIENT) public class ArrayEntry extends BaseModifierEntry { protected Vector offsetInputs = new Vector<>(3); - protected Vector