Skip to content

Commit 9b90875

Browse files
committed
list -> set
1 parent 9c1d658 commit 9b90875

37 files changed

+178
-199
lines changed

src/main/java/meteordevelopment/meteorclient/commands/commands/SwarmCommand.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636

3737
import java.util.List;
3838
import java.util.Random;
39+
import java.util.Set;
3940

4041
public class SwarmCommand extends Command {
4142

@@ -212,7 +213,7 @@ else if (swarm.isWorker()) {
212213
swarm.host.sendMessage(context.getInput());
213214
}
214215
else if (swarm.isWorker()) {
215-
Modules.get().get(InfinityMiner.class).targetBlocks.set(List.of(context.getArgument("target", BlockStateArgument.class).getBlockState().getBlock()));
216+
Modules.get().get(InfinityMiner.class).targetBlocks.set(Set.of(context.getArgument("target", BlockStateArgument.class).getBlockState().getBlock()));
216217
runInfinityMiner();
217218
}
218219
}
@@ -228,8 +229,8 @@ else if (swarm.isWorker()) {
228229
swarm.host.sendMessage(context.getInput());
229230
}
230231
else if (swarm.isWorker()) {
231-
Modules.get().get(InfinityMiner.class).targetBlocks.set(List.of(context.getArgument("target", BlockStateArgument.class).getBlockState().getBlock()));
232-
Modules.get().get(InfinityMiner.class).repairBlocks.set(List.of(context.getArgument("repair", BlockStateArgument.class).getBlockState().getBlock()));
232+
Modules.get().get(InfinityMiner.class).targetBlocks.set(Set.of(context.getArgument("target", BlockStateArgument.class).getBlockState().getBlock()));
233+
Modules.get().get(InfinityMiner.class).repairBlocks.set(Set.of(context.getArgument("repair", BlockStateArgument.class).getBlockState().getBlock()));
233234
runInfinityMiner();
234235
}
235236
}

src/main/java/meteordevelopment/meteorclient/pathing/BaritoneSettings.java

Lines changed: 69 additions & 73 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
import baritone.api.BaritoneAPI;
99
import baritone.api.utils.SettingsUtil;
10+
import it.unimi.dsi.fastutil.objects.ReferenceOpenHashSet;
1011
import meteordevelopment.meteorclient.settings.*;
1112
import meteordevelopment.meteorclient.utils.render.color.SettingColor;
1213
import net.minecraft.block.Block;
@@ -88,24 +89,24 @@ private void createWrappers() {
8889

8990
Object value = setting.value;
9091

91-
if (value instanceof Boolean) {
92-
Setting<Boolean> wrapper = sgBool.add(new BoolSetting.Builder()
93-
.name(setting.getName())
94-
.description(getDescription(setting.getName()))
95-
.defaultValue((boolean) setting.defaultValue)
96-
.onChanged(aBoolean -> setting.value = aBoolean)
97-
.onModuleActivated(booleanSetting -> booleanSetting.set((Boolean) setting.value))
98-
.build()
99-
);
92+
switch (value) {
93+
case Boolean b -> {
94+
Setting<Boolean> wrapper = sgBool.add(new BoolSetting.Builder()
95+
.name(setting.getName())
96+
.description(getDescription(setting.getName()))
97+
.defaultValue((boolean) setting.defaultValue)
98+
.onChanged(aBoolean -> setting.value = aBoolean)
99+
.onModuleActivated(booleanSetting -> booleanSetting.set((Boolean) setting.value))
100+
.build()
101+
);
100102

101-
switch (wrapper.name) {
102-
case "assumeWalkOnWater" -> walkOnWater = wrapper;
103-
case "assumeWalkOnLava" -> walkOnLava = wrapper;
104-
case "assumeStep" -> step = wrapper;
103+
switch (wrapper.name) {
104+
case "assumeWalkOnWater" -> walkOnWater = wrapper;
105+
case "assumeWalkOnLava" -> walkOnLava = wrapper;
106+
case "assumeStep" -> step = wrapper;
107+
}
105108
}
106-
}
107-
else if (value instanceof Double) {
108-
sgDouble.add(new DoubleSetting.Builder()
109+
case Double v -> sgDouble.add(new DoubleSetting.Builder()
109110
.name(setting.getName())
110111
.description(getDescription(setting.getName()))
111112
.defaultValue((double) setting.defaultValue)
@@ -115,9 +116,7 @@ else if (value instanceof Double) {
115116
.onModuleActivated(doubleSetting -> doubleSetting.set((Double) setting.value))
116117
.build()
117118
);
118-
}
119-
else if (value instanceof Float) {
120-
sgDouble.add(new DoubleSetting.Builder()
119+
case Float v -> sgDouble.add(new DoubleSetting.Builder()
121120
.name(setting.getName())
122121
.description(getDescription(setting.getName()))
123122
.defaultValue(((Float) setting.defaultValue).doubleValue())
@@ -127,82 +126,79 @@ else if (value instanceof Float) {
127126
.onModuleActivated(doubleSetting -> doubleSetting.set(((Float) setting.value).doubleValue()))
128127
.build()
129128
);
130-
}
131-
else if (value instanceof Integer) {
132-
Setting<Integer> wrapper = sgInt.add(new IntSetting.Builder()
133-
.name(setting.getName())
134-
.description(getDescription(setting.getName()))
135-
.defaultValue((int) setting.defaultValue)
136-
.onChanged(integer -> setting.value = integer)
137-
.onModuleActivated(integerSetting -> integerSetting.set((Integer) setting.value))
138-
.build()
139-
);
129+
case Integer i -> {
130+
Setting<Integer> wrapper = sgInt.add(new IntSetting.Builder()
131+
.name(setting.getName())
132+
.description(getDescription(setting.getName()))
133+
.defaultValue((int) setting.defaultValue)
134+
.onChanged(integer -> setting.value = integer)
135+
.onModuleActivated(integerSetting -> integerSetting.set((Integer) setting.value))
136+
.build()
137+
);
140138

141-
if (wrapper.name.equals("maxFallHeightNoWater")) {
142-
noFall = new BoolSetting.Builder()
143-
.name(wrapper.name)
144-
.description(wrapper.description)
145-
.defaultValue(false)
146-
.onChanged(aBoolean -> wrapper.set(aBoolean ? 159159 : wrapper.getDefaultValue()))
147-
.onModuleActivated(booleanSetting -> booleanSetting.set(wrapper.get() >= 255))
148-
.build();
139+
if (wrapper.name.equals("maxFallHeightNoWater")) {
140+
noFall = new BoolSetting.Builder()
141+
.name(wrapper.name)
142+
.description(wrapper.description)
143+
.defaultValue(false)
144+
.onChanged(aBoolean -> wrapper.set(aBoolean ? 159159 : wrapper.getDefaultValue()))
145+
.onModuleActivated(booleanSetting -> booleanSetting.set(wrapper.get() >= 255))
146+
.build();
147+
}
149148
}
150-
}
151-
else if (value instanceof Long) {
152-
sgInt.add(new IntSetting.Builder()
149+
case Long l -> sgInt.add(new IntSetting.Builder()
153150
.name(setting.getName())
154151
.description(getDescription(setting.getName()))
155152
.defaultValue(((Long) setting.defaultValue).intValue())
156153
.onChanged(integer -> setting.value = integer.longValue())
157154
.onModuleActivated(integerSetting -> integerSetting.set(((Long) setting.value).intValue()))
158155
.build()
159156
);
160-
}
161-
else if (value instanceof String) {
162-
sgString.add(new StringSetting.Builder()
157+
case String s -> sgString.add(new StringSetting.Builder()
163158
.name(setting.getName())
164159
.description(getDescription(setting.getName()))
165160
.defaultValue((String) setting.defaultValue)
166161
.onChanged(string -> setting.value = string)
167162
.onModuleActivated(stringSetting -> stringSetting.set((String) setting.value))
168163
.build()
169164
);
170-
}
171-
else if (value instanceof Color) {
172-
Color c = (Color) setting.value;
173-
174-
sgColor.add(new ColorSetting.Builder()
175-
.name(setting.getName())
176-
.description(getDescription(setting.getName()))
177-
.defaultValue(new SettingColor(c.getRed(), c.getGreen(), c.getBlue(), c.getAlpha()))
178-
.onChanged(color -> setting.value = new Color(color.r, color.g, color.b, color.a))
179-
.onModuleActivated(colorSetting -> colorSetting.set(new SettingColor(c.getRed(), c.getGreen(), c.getBlue(), c.getAlpha())))
180-
.build()
181-
);
182-
}
183-
else if (value instanceof List) {
184-
Type listType = ((ParameterizedType) field.getGenericType()).getActualTypeArguments()[0];
185-
Type type = ((ParameterizedType) listType).getActualTypeArguments()[0];
165+
case Color color1 -> {
166+
Color c = (Color) setting.value;
186167

187-
if (type == Block.class) {
188-
sgBlockLists.add(new BlockListSetting.Builder()
168+
sgColor.add(new ColorSetting.Builder()
189169
.name(setting.getName())
190170
.description(getDescription(setting.getName()))
191-
.defaultValue((List<Block>) setting.defaultValue)
192-
.onChanged(blockList -> setting.value = blockList)
193-
.onModuleActivated(blockListSetting -> blockListSetting.set((List<Block>) setting.value))
171+
.defaultValue(new SettingColor(c.getRed(), c.getGreen(), c.getBlue(), c.getAlpha()))
172+
.onChanged(color -> setting.value = new Color(color.r, color.g, color.b, color.a))
173+
.onModuleActivated(colorSetting -> colorSetting.set(new SettingColor(c.getRed(), c.getGreen(), c.getBlue(), c.getAlpha())))
194174
.build()
195175
);
196176
}
197-
else if (type == Item.class) {
198-
sgItemLists.add(new ItemListSetting.Builder()
199-
.name(setting.getName())
200-
.description(getDescription(setting.getName()))
201-
.defaultValue((List<Item>) setting.defaultValue)
202-
.onChanged(itemList -> setting.value = itemList)
203-
.onModuleActivated(itemListSetting -> itemListSetting.set((List<Item>) setting.value))
204-
.build()
205-
);
177+
case List list -> {
178+
Type listType = ((ParameterizedType) field.getGenericType()).getActualTypeArguments()[0];
179+
Type type = ((ParameterizedType) listType).getActualTypeArguments()[0];
180+
181+
if (type == Block.class) {
182+
sgBlockLists.add(new BlockListSetting.Builder()
183+
.name(setting.getName())
184+
.description(getDescription(setting.getName()))
185+
.defaultValue(new ReferenceOpenHashSet<>((List<Block>) setting.defaultValue))
186+
.onChanged(blockList -> setting.value = blockList)
187+
.onModuleActivated(blockListSetting -> blockListSetting.set(new ReferenceOpenHashSet<>((List<Block>) setting.value)))
188+
.build()
189+
);
190+
} else if (type == Item.class) {
191+
sgItemLists.add(new ItemListSetting.Builder()
192+
.name(setting.getName())
193+
.description(getDescription(setting.getName()))
194+
.defaultValue(new ReferenceOpenHashSet<>((List<Item>) setting.defaultValue))
195+
.onChanged(itemList -> setting.value = itemList)
196+
.onModuleActivated(itemListSetting -> itemListSetting.set(new ReferenceOpenHashSet<>((List<Item>) setting.value)))
197+
.build()
198+
);
199+
}
200+
}
201+
case null, default -> {
206202
}
207203
}
208204
}

src/main/java/meteordevelopment/meteorclient/settings/AbstractRegistryListSetting.java

Lines changed: 0 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -86,26 +86,4 @@ protected C load(NbtCompound tag) {
8686
return get();
8787
}
8888

89-
// public static class Builder extends SettingBuilder<BlockListSetting.Builder, List<Block>, BlockListSetting> {
90-
// private Predicate<Block> filter;
91-
//
92-
// public Builder() {
93-
// super(new ArrayList<>(0));
94-
// }
95-
//
96-
// public BlockListSetting.Builder defaultValue(Block... defaults) {
97-
// return defaultValue(defaults != null ? Arrays.asList(defaults) : new ArrayList<>());
98-
// }
99-
//
100-
// public BlockListSetting.Builder filter(Predicate<Block> filter) {
101-
// this.filter = filter;
102-
// return this;
103-
// }
104-
//
105-
// @Override
106-
// public BlockListSetting build() {
107-
// return new BlockListSetting(name, description, defaultValue, onChanged, onModuleActivated, filter, visible);
108-
// }
109-
// }
110-
11189
}

src/main/java/meteordevelopment/meteorclient/settings/BlockListSetting.java

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,35 +5,34 @@
55

66
package meteordevelopment.meteorclient.settings;
77

8+
import it.unimi.dsi.fastutil.objects.ReferenceOpenHashSet;
89
import net.minecraft.block.Block;
910
import net.minecraft.registry.Registries;
1011

11-
import java.util.ArrayList;
12-
import java.util.Arrays;
1312
import java.util.Collection;
14-
import java.util.List;
13+
import java.util.Set;
1514
import java.util.function.Consumer;
1615
import java.util.function.Predicate;
1716

18-
public class BlockListSetting extends AbstractRegistryListSetting<List<Block>, Block> {
19-
public BlockListSetting(String name, String description, List<Block> defaultValue, Consumer<List<Block>> onChanged, Consumer<Setting<List<Block>>> onModuleActivated, Predicate<Block> filter, IVisible visible) {
17+
public class BlockListSetting extends AbstractRegistryListSetting<Set<Block>, Block> {
18+
public BlockListSetting(String name, String description, Set<Block> defaultValue, Consumer<Set<Block>> onChanged, Consumer<Setting<Set<Block>>> onModuleActivated, Predicate<Block> filter, IVisible visible) {
2019
super(name, description, defaultValue, onChanged, onModuleActivated, visible, filter, Registries.BLOCK);
2120
}
2221

2322
@Override
24-
protected List<Block> transferCollection(Collection<Block> from) {
25-
return new ArrayList<>(from);
23+
protected Set<Block> transferCollection(Collection<Block> from) {
24+
return new ReferenceOpenHashSet<>(from);
2625
}
2726

28-
public static class Builder extends SettingBuilder<Builder, List<Block>, BlockListSetting> {
27+
public static class Builder extends SettingBuilder<Builder, Set<Block>, BlockListSetting> {
2928
private Predicate<Block> filter;
3029

3130
public Builder() {
32-
super(new ArrayList<>(0));
31+
super(new ReferenceOpenHashSet<>(0));
3332
}
3433

3534
public Builder defaultValue(Block... defaults) {
36-
return defaultValue(defaults != null ? Arrays.asList(defaults) : new ArrayList<>());
35+
return defaultValue(defaults != null ? ReferenceOpenHashSet.of(defaults) : new ReferenceOpenHashSet<>());
3736
}
3837

3938
public Builder filter(Predicate<Block> filter) {

src/main/java/meteordevelopment/meteorclient/settings/EnumSetting.java

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -5,43 +5,39 @@
55

66
package meteordevelopment.meteorclient.settings;
77

8+
import it.unimi.dsi.fastutil.objects.Object2ObjectRBTreeMap;
89
import net.minecraft.nbt.NbtCompound;
910

10-
import java.util.ArrayList;
1111
import java.util.List;
12+
import java.util.Map;
1213
import java.util.function.Consumer;
1314

1415
public class EnumSetting<T extends Enum<?>> extends Setting<T> {
15-
private final T[] values;
16-
17-
private final List<String> suggestions;
16+
private final Map<String, T> nameToValueMap = new Object2ObjectRBTreeMap<>(String.CASE_INSENSITIVE_ORDER);
1817

1918
@SuppressWarnings("unchecked")
2019
public EnumSetting(String name, String description, T defaultValue, Consumer<T> onChanged, Consumer<Setting<T>> onModuleActivated, IVisible visible) {
2120
super(name, description, defaultValue, onChanged, onModuleActivated, visible);
2221

23-
values = (T[]) defaultValue.getDeclaringClass().getEnumConstants();
24-
suggestions = new ArrayList<>(values.length);
25-
for (T value : values) suggestions.add(value.toString());
22+
for (Object t : defaultValue.getDeclaringClass().getEnumConstants()) {
23+
nameToValueMap.put(t.toString(), (T) t);
24+
}
2625
}
2726

2827
@Override
2928
protected T parseImpl(String str) {
30-
for (T possibleValue : values) {
31-
if (str.equalsIgnoreCase(possibleValue.toString())) return possibleValue;
32-
}
33-
34-
return null;
29+
return nameToValueMap.get(str);
3530
}
3631

3732
@Override
3833
protected boolean isValueValid(T value) {
3934
return true;
4035
}
4136

37+
@SuppressWarnings("unchecked")
4238
@Override
4339
public List<String> getSuggestions() {
44-
return suggestions;
40+
return (List<String>) (Object) List.of(nameToValueMap.keySet().toArray());
4541
}
4642

4743
@Override

0 commit comments

Comments
 (0)