From dede0dbfe68e15e908fcc544ac5e64cf7529a635 Mon Sep 17 00:00:00 2001 From: Merennor <105452638+Merennor@users.noreply.github.com> Date: Sun, 26 Oct 2025 10:20:09 +0200 Subject: [PATCH] Fix crash on start (due to new changes) and fix typos like "Scren" --- .../modules/render/ItemHighlightPlus.java | 8 +-- .../modules/ItemHighlightMixin.java | 4 +- .../settings/items/ESPItemData.java | 10 +-- .../settings/items/ESPItemDataScreen.java | 55 +++++++++++------ ...htItemData.java => HighlightItemData.java} | 27 ++++---- .../items/HighlightItemDataScreen.java | 61 +++++++++++++++++++ .../settings/items/HiglightItemDataScren.java | 52 ---------------- 7 files changed, 121 insertions(+), 96 deletions(-) rename src/main/java/nekiplay/meteorplus/settings/items/{HiglightItemData.java => HighlightItemData.java} (55%) create mode 100644 src/main/java/nekiplay/meteorplus/settings/items/HighlightItemDataScreen.java delete mode 100644 src/main/java/nekiplay/meteorplus/settings/items/HiglightItemDataScren.java diff --git a/src/main/java/nekiplay/meteorplus/features/modules/render/ItemHighlightPlus.java b/src/main/java/nekiplay/meteorplus/features/modules/render/ItemHighlightPlus.java index d7c264a..2315a01 100644 --- a/src/main/java/nekiplay/meteorplus/features/modules/render/ItemHighlightPlus.java +++ b/src/main/java/nekiplay/meteorplus/features/modules/render/ItemHighlightPlus.java @@ -8,7 +8,7 @@ import meteordevelopment.meteorclient.systems.modules.Module; import meteordevelopment.meteorclient.utils.render.color.SettingColor; import nekiplay.meteorplus.MeteorPlusAddon; -import nekiplay.meteorplus.settings.items.HiglightItemData; +import nekiplay.meteorplus.settings.items.HighlightItemData; import nekiplay.meteorplus.settings.items.ItemDataSetting; import net.minecraft.item.Item; import net.minecraft.item.Items; @@ -31,17 +31,17 @@ public ItemHighlightPlus() { .build() ); - public final Setting defaultBlockConfig = sgGeneral.add(new GenericSetting.Builder() + public final Setting defaultBlockConfig = sgGeneral.add(new GenericSetting.Builder() .name("whitelist-default-config") .description("Default item config.") .defaultValue( - new HiglightItemData( + new HighlightItemData( new SettingColor(0, 255, 200, 25) ) ) .build() ); - public final Setting> itemsConfigs = sgGeneral.add(new ItemDataSetting.Builder() + public final Setting> itemsConfigs = sgGeneral.add(new ItemDataSetting.Builder() .name("whitelist-items-configs") .description("Config for each highlight.") .defaultData(defaultBlockConfig) diff --git a/src/main/java/nekiplay/meteorplus/mixin/meteorclient/modules/ItemHighlightMixin.java b/src/main/java/nekiplay/meteorplus/mixin/meteorclient/modules/ItemHighlightMixin.java index bf0d77b..ba6012e 100644 --- a/src/main/java/nekiplay/meteorplus/mixin/meteorclient/modules/ItemHighlightMixin.java +++ b/src/main/java/nekiplay/meteorplus/mixin/meteorclient/modules/ItemHighlightMixin.java @@ -4,7 +4,7 @@ import meteordevelopment.meteorclient.systems.modules.Modules; import meteordevelopment.meteorclient.systems.modules.render.ItemHighlight; import nekiplay.meteorplus.features.modules.render.ItemHighlightPlus; -import nekiplay.meteorplus.settings.items.HiglightItemData; +import nekiplay.meteorplus.settings.items.HighlightItemData; import net.minecraft.item.ItemStack; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; @@ -20,7 +20,7 @@ private void getColor(ItemStack stack, CallbackInfoReturnable cir) { ItemHighlightPlus itemHighlightPlus = Modules.get().get(ItemHighlightPlus.class); if (itemHighlightPlus != null && itemHighlightPlus.isActive()) { if (itemHighlightPlus.whitelist.get().contains(stack.getItem().asItem())) { - HiglightItemData espItemData = itemHighlightPlus.itemsConfigs.get().get(stack.getItem()); + HighlightItemData espItemData = itemHighlightPlus.itemsConfigs.get().get(stack.getItem()); if (espItemData != null) { cir.setReturnValue(espItemData.Color.getPacked()); } diff --git a/src/main/java/nekiplay/meteorplus/settings/items/ESPItemData.java b/src/main/java/nekiplay/meteorplus/settings/items/ESPItemData.java index cd70ce2..372cc3e 100644 --- a/src/main/java/nekiplay/meteorplus/settings/items/ESPItemData.java +++ b/src/main/java/nekiplay/meteorplus/settings/items/ESPItemData.java @@ -2,16 +2,16 @@ import meteordevelopment.meteorclient.gui.GuiTheme; import meteordevelopment.meteorclient.gui.WidgetScreen; -import meteordevelopment.meteorclient.gui.utils.IScreenFactory; +import meteordevelopment.meteorclient.settings.GenericSetting; import meteordevelopment.meteorclient.renderer.ShapeMode; +import meteordevelopment.meteorclient.settings.IGeneric; import meteordevelopment.meteorclient.utils.misc.IChangeable; import meteordevelopment.meteorclient.utils.misc.ICopyable; -import meteordevelopment.meteorclient.utils.misc.ISerializable; import meteordevelopment.meteorclient.utils.render.color.SettingColor; import net.minecraft.item.Item; import net.minecraft.nbt.NbtCompound; -public class ESPItemData implements ICopyable, ISerializable, IChangeable, IItemData, IScreenFactory { +public class ESPItemData implements IGeneric, IChangeable, IItemData { public ShapeMode shapeMode; public SettingColor lineColor; public SettingColor sideColor; @@ -36,8 +36,8 @@ public WidgetScreen createScreen(GuiTheme theme, Item block, ItemDataSetting setting) { + return new ESPItemDataScreen(theme, this, setting); } @Override diff --git a/src/main/java/nekiplay/meteorplus/settings/items/ESPItemDataScreen.java b/src/main/java/nekiplay/meteorplus/settings/items/ESPItemDataScreen.java index f5daa79..425713b 100644 --- a/src/main/java/nekiplay/meteorplus/settings/items/ESPItemDataScreen.java +++ b/src/main/java/nekiplay/meteorplus/settings/items/ESPItemDataScreen.java @@ -6,18 +6,25 @@ import meteordevelopment.meteorclient.settings.*; import meteordevelopment.meteorclient.utils.render.color.SettingColor; import net.minecraft.item.Item; +import org.jetbrains.annotations.Nullable; public class ESPItemDataScreen extends WindowScreen { private final ESPItemData blockData; - private final Item block; - private final ItemDataSetting setting; + private final Setting setting; + private final @Nullable Runnable firstChangeConsumer; public ESPItemDataScreen(GuiTheme theme, ESPItemData blockData, Item block, ItemDataSetting setting) { + this(theme, blockData, setting, () -> setting.get().put(block, blockData)); + } + public ESPItemDataScreen(GuiTheme theme, ESPItemData blockData, GenericSetting setting) { + this(theme, blockData, setting, null); + } + private ESPItemDataScreen(GuiTheme theme, ESPItemData blockData, Setting setting, @Nullable Runnable firstChangeConsumer) { super(theme, "Configure Items"); this.blockData = blockData; - this.block = block; this.setting = setting; + this.firstChangeConsumer = firstChangeConsumer; } @Override @@ -32,8 +39,10 @@ public void initWidgets() { .defaultValue(ShapeMode.Lines) .onModuleActivated(shapeModeSetting -> shapeModeSetting.set(blockData.shapeMode)) .onChanged(shapeMode -> { - blockData.shapeMode = shapeMode; - changed(blockData, block, setting); + if (blockData.shapeMode != shapeMode) { + blockData.shapeMode = shapeMode; + onChanged(); + } }) .build() ); @@ -42,10 +51,12 @@ public void initWidgets() { .name("line-color") .description("Color of lines.") .defaultValue(new SettingColor(0, 255, 200)) - .onModuleActivated(settingColorSetting -> settingColorSetting.set(blockData.lineColor)) + .onModuleActivated(settingColorSetting -> settingColorSetting.get().set(blockData.lineColor)) .onChanged(settingColor -> { - blockData.lineColor.set(settingColor); - changed(blockData, block, setting); + if (!blockData.lineColor.equals(settingColor)) { + blockData.lineColor.set(settingColor); + onChanged(); + } }) .build() ); @@ -54,10 +65,12 @@ public void initWidgets() { .name("side-color") .description("Color of sides.") .defaultValue(new SettingColor(0, 255, 200, 25)) - .onModuleActivated(settingColorSetting -> settingColorSetting.set(blockData.sideColor)) + .onModuleActivated(settingColorSetting -> settingColorSetting.get().set(blockData.sideColor)) .onChanged(settingColor -> { - blockData.sideColor.set(settingColor); - changed(blockData, block, setting); + if (!blockData.sideColor.equals(settingColor)) { + blockData.sideColor.set(settingColor); + onChanged(); + } }) .build() ); @@ -68,8 +81,10 @@ public void initWidgets() { .defaultValue(true) .onModuleActivated(booleanSetting -> booleanSetting.set(blockData.tracer)) .onChanged(aBoolean -> { - blockData.tracer = aBoolean; - changed(blockData, block, setting); + if (blockData.tracer != aBoolean) { + blockData.tracer = aBoolean; + onChanged(); + } }) .build() ); @@ -80,8 +95,10 @@ public void initWidgets() { .defaultValue(new SettingColor(0, 255, 200, 125)) .onModuleActivated(settingColorSetting -> settingColorSetting.set(blockData.tracerColor)) .onChanged(settingColor -> { - blockData.tracerColor = settingColor; - changed(blockData, block, setting); + if (!blockData.tracerColor.equals(settingColor)) { + blockData.tracerColor.set(settingColor); + onChanged(); + } }) .build() ); @@ -90,12 +107,12 @@ public void initWidgets() { add(theme.settings(settings)).expandX(); } - private void changed(ESPItemData blockData, Item block, ItemDataSetting setting) { - if (!blockData.isChanged() && block != null && setting != null) { - setting.get().put(block, blockData); - setting.onChanged(); + private void onChanged() { + if (!blockData.isChanged() && firstChangeConsumer != null) { + firstChangeConsumer.run(); } + setting.onChanged(); blockData.changed(); } } diff --git a/src/main/java/nekiplay/meteorplus/settings/items/HiglightItemData.java b/src/main/java/nekiplay/meteorplus/settings/items/HighlightItemData.java similarity index 55% rename from src/main/java/nekiplay/meteorplus/settings/items/HiglightItemData.java rename to src/main/java/nekiplay/meteorplus/settings/items/HighlightItemData.java index 148354b..a600cd5 100644 --- a/src/main/java/nekiplay/meteorplus/settings/items/HiglightItemData.java +++ b/src/main/java/nekiplay/meteorplus/settings/items/HighlightItemData.java @@ -1,32 +1,31 @@ package nekiplay.meteorplus.settings.items; import meteordevelopment.meteorclient.gui.GuiTheme; -import meteordevelopment.meteorclient.gui.WidgetScreen; -import meteordevelopment.meteorclient.gui.utils.IScreenFactory; +import meteordevelopment.meteorclient.gui.WidgetScreen; +import meteordevelopment.meteorclient.settings.GenericSetting; import meteordevelopment.meteorclient.renderer.ShapeMode; +import meteordevelopment.meteorclient.settings.IGeneric; import meteordevelopment.meteorclient.utils.misc.IChangeable; -import meteordevelopment.meteorclient.utils.misc.ICopyable; -import meteordevelopment.meteorclient.utils.misc.ISerializable; import meteordevelopment.meteorclient.utils.render.color.SettingColor; import net.minecraft.item.Item; import net.minecraft.nbt.NbtCompound; -public class HiglightItemData implements ICopyable, ISerializable, IChangeable, IItemData, IScreenFactory { +public class HighlightItemData implements IGeneric, IChangeable, IItemData { public SettingColor Color; private boolean changed; - public HiglightItemData(SettingColor color) { + public HighlightItemData(SettingColor color) { this.Color = color; } @Override - public WidgetScreen createScreen(GuiTheme theme, Item block, ItemDataSetting setting) { - return new HiglightItemDataScren(theme, this, block, setting); + public WidgetScreen createScreen(GuiTheme theme, Item block, ItemDataSetting setting) { + return new HighlightItemDataScreen(theme, this, block, setting); } @Override - public WidgetScreen createScreen(GuiTheme theme) { - return new HiglightItemDataScren(theme, this, null, null); + public WidgetScreen createScreen(GuiTheme theme, GenericSetting setting) { + return new HighlightItemDataScreen(theme, this, setting); } @Override @@ -43,7 +42,7 @@ public void tickRainbow() { } @Override - public HiglightItemData set(HiglightItemData value) { + public HighlightItemData set(HighlightItemData value) { Color.set(value.Color); changed = value.changed; @@ -51,8 +50,8 @@ public HiglightItemData set(HiglightItemData value) { } @Override - public HiglightItemData copy() { - return new HiglightItemData(new SettingColor(Color)); + public HighlightItemData copy() { + return new HighlightItemData(new SettingColor(Color)); } @Override @@ -66,7 +65,7 @@ public NbtCompound toTag() { } @Override - public HiglightItemData fromTag(NbtCompound tag) { + public HighlightItemData fromTag(NbtCompound tag) { Color.fromTag(tag.getCompound("color").get()); changed = tag.getBoolean("changed").get(); diff --git a/src/main/java/nekiplay/meteorplus/settings/items/HighlightItemDataScreen.java b/src/main/java/nekiplay/meteorplus/settings/items/HighlightItemDataScreen.java new file mode 100644 index 0000000..f4c39af --- /dev/null +++ b/src/main/java/nekiplay/meteorplus/settings/items/HighlightItemDataScreen.java @@ -0,0 +1,61 @@ +package nekiplay.meteorplus.settings.items; + +import meteordevelopment.meteorclient.gui.GuiTheme; +import meteordevelopment.meteorclient.gui.WindowScreen; +import meteordevelopment.meteorclient.renderer.ShapeMode; +import meteordevelopment.meteorclient.settings.*; +import meteordevelopment.meteorclient.utils.render.color.SettingColor; +import net.minecraft.item.Item; +import org.jetbrains.annotations.Nullable; + +public class HighlightItemDataScreen extends WindowScreen { + private final HighlightItemData blockData; + private final Setting setting; + private final @Nullable Runnable firstChangeConsumer; + + public HighlightItemDataScreen(GuiTheme theme, HighlightItemData blockData, Item block, ItemDataSetting setting) { + this(theme, blockData, setting, () -> setting.get().put(block, blockData)); + } + public HighlightItemDataScreen(GuiTheme theme, HighlightItemData blockData, GenericSetting setting) { + this(theme, blockData, setting, null); + } + private HighlightItemDataScreen(GuiTheme theme, HighlightItemData blockData, Setting setting, @Nullable Runnable firstChangeConsumer) { + super(theme, "Configure Items"); + + this.blockData = blockData; + this.setting = setting; + this.firstChangeConsumer = firstChangeConsumer; + } + + @Override + public void initWidgets() { + Settings settings = new Settings(); + SettingGroup sgGeneral = settings.getDefaultGroup(); + + sgGeneral.add(new ColorSetting.Builder() + .name("color") + .description("Color of item.") + .defaultValue(new SettingColor(0, 255, 200)) + .onModuleActivated(settingColorSetting -> settingColorSetting.get().set(blockData.Color)) + .onChanged(settingColor -> { + if (!blockData.Color.equals(settingColor)) { + blockData.Color.set(settingColor); + onChanged(); + } + }) + .build() + ); + + settings.onActivated(); + add(theme.settings(settings)).expandX(); + } + + private void onChanged() { + if (!blockData.isChanged() && firstChangeConsumer != null) { + firstChangeConsumer.run(); + } + + setting.onChanged(); + blockData.changed(); + } +} diff --git a/src/main/java/nekiplay/meteorplus/settings/items/HiglightItemDataScren.java b/src/main/java/nekiplay/meteorplus/settings/items/HiglightItemDataScren.java deleted file mode 100644 index b3594e8..0000000 --- a/src/main/java/nekiplay/meteorplus/settings/items/HiglightItemDataScren.java +++ /dev/null @@ -1,52 +0,0 @@ -package nekiplay.meteorplus.settings.items; - -import meteordevelopment.meteorclient.gui.GuiTheme; -import meteordevelopment.meteorclient.gui.WindowScreen; -import meteordevelopment.meteorclient.renderer.ShapeMode; -import meteordevelopment.meteorclient.settings.*; -import meteordevelopment.meteorclient.utils.render.color.SettingColor; -import net.minecraft.item.Item; - -public class HiglightItemDataScren extends WindowScreen { - private final HiglightItemData blockData; - private final Item block; - private final ItemDataSetting setting; - - public HiglightItemDataScren(GuiTheme theme, HiglightItemData blockData, Item block, ItemDataSetting setting) { - super(theme, "Configure Items"); - - this.blockData = blockData; - this.block = block; - this.setting = setting; - } - - @Override - public void initWidgets() { - Settings settings = new Settings(); - SettingGroup sgGeneral = settings.getDefaultGroup(); - - sgGeneral.add(new ColorSetting.Builder() - .name("color") - .description("Color of item.") - .defaultValue(new SettingColor(0, 255, 200)) - .onModuleActivated(settingColorSetting -> settingColorSetting.set(blockData.Color)) - .onChanged(settingColor -> { - blockData.Color.set(settingColor); - changed(blockData, block, setting); - }) - .build() - ); - - settings.onActivated(); - add(theme.settings(settings)).expandX(); - } - - private void changed(HiglightItemData blockData, Item block, ItemDataSetting setting) { - if (!blockData.isChanged() && block != null && setting != null) { - setting.get().put(block, blockData); - setting.onChanged(); - } - - blockData.changed(); - } -}