Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -31,17 +31,17 @@ public ItemHighlightPlus() {
.build()
);

public final Setting<HiglightItemData> defaultBlockConfig = sgGeneral.add(new GenericSetting.Builder<HiglightItemData>()
public final Setting<HighlightItemData> defaultBlockConfig = sgGeneral.add(new GenericSetting.Builder<HighlightItemData>()
.name("whitelist-default-config")
.description("Default item config.")
.defaultValue(
new HiglightItemData(
new HighlightItemData(
new SettingColor(0, 255, 200, 25)
)
)
.build()
);
public final Setting<Map<Item, HiglightItemData>> itemsConfigs = sgGeneral.add(new ItemDataSetting.Builder<HiglightItemData>()
public final Setting<Map<Item, HighlightItemData>> itemsConfigs = sgGeneral.add(new ItemDataSetting.Builder<HighlightItemData>()
.name("whitelist-items-configs")
.description("Config for each highlight.")
.defaultData(defaultBlockConfig)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -20,7 +20,7 @@ private void getColor(ItemStack stack, CallbackInfoReturnable<Integer> 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());
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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<ESPItemData>, ISerializable<ESPItemData>, IChangeable, IItemData<ESPItemData>, IScreenFactory {
public class ESPItemData implements IGeneric<ESPItemData>, IChangeable, IItemData<ESPItemData> {
public ShapeMode shapeMode;
public SettingColor lineColor;
public SettingColor sideColor;
Expand All @@ -36,8 +36,8 @@ public WidgetScreen createScreen(GuiTheme theme, Item block, ItemDataSetting<ESP
}

@Override
public WidgetScreen createScreen(GuiTheme theme) {
return new ESPItemDataScreen(theme, this, null, null);
public WidgetScreen createScreen(GuiTheme theme, GenericSetting<ESPItemData> setting) {
return new ESPItemDataScreen(theme, this, setting);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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<ESPItemData> setting;
private final Setting<?> setting;
private final @Nullable Runnable firstChangeConsumer;

public ESPItemDataScreen(GuiTheme theme, ESPItemData blockData, Item block, ItemDataSetting<ESPItemData> setting) {
this(theme, blockData, setting, () -> setting.get().put(block, blockData));
}
public ESPItemDataScreen(GuiTheme theme, ESPItemData blockData, GenericSetting<ESPItemData> 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
Expand All @@ -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()
);
Expand All @@ -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()
);
Expand All @@ -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()
);
Expand All @@ -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()
);
Expand All @@ -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()
);
Expand All @@ -90,12 +107,12 @@ public void initWidgets() {
add(theme.settings(settings)).expandX();
}

private void changed(ESPItemData blockData, Item block, ItemDataSetting<ESPItemData> 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();
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -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<HiglightItemData>, ISerializable<HiglightItemData>, IChangeable, IItemData<HiglightItemData>, IScreenFactory {
public class HighlightItemData implements IGeneric<HighlightItemData>, IChangeable, IItemData<HighlightItemData> {
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<HiglightItemData> setting) {
return new HiglightItemDataScren(theme, this, block, setting);
public WidgetScreen createScreen(GuiTheme theme, Item block, ItemDataSetting<HighlightItemData> 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<HighlightItemData> setting) {
return new HighlightItemDataScreen(theme, this, setting);
}

@Override
Expand All @@ -43,16 +42,16 @@ public void tickRainbow() {
}

@Override
public HiglightItemData set(HiglightItemData value) {
public HighlightItemData set(HighlightItemData value) {
Color.set(value.Color);
changed = value.changed;

return this;
}

@Override
public HiglightItemData copy() {
return new HiglightItemData(new SettingColor(Color));
public HighlightItemData copy() {
return new HighlightItemData(new SettingColor(Color));
}

@Override
Expand All @@ -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();

Expand Down
Original file line number Diff line number Diff line change
@@ -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<HighlightItemData> setting) {
this(theme, blockData, setting, () -> setting.get().put(block, blockData));
}
public HighlightItemDataScreen(GuiTheme theme, HighlightItemData blockData, GenericSetting<HighlightItemData> 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();
}
}

This file was deleted.