Skip to content

Commit 26ec04e

Browse files
committed
clean branch?
1 parent ee0fbdd commit 26ec04e

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

49 files changed

+385
-574
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
}
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
/*
2+
* This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client).
3+
* Copyright (c) Meteor Development.
4+
*/
5+
6+
package meteordevelopment.meteorclient.settings;
7+
8+
import com.google.common.base.Predicates;
9+
import net.minecraft.nbt.NbtCompound;
10+
import net.minecraft.registry.Registry;
11+
import net.minecraft.util.Identifier;
12+
13+
import java.util.function.Consumer;
14+
import java.util.function.Predicate;
15+
16+
public abstract class AbstractRegistryItemSetting<V> extends Setting<V> {
17+
public final Predicate<V> filter;
18+
public final Registry<V> registry;
19+
20+
protected AbstractRegistryItemSetting(String name, String description, V defaultValue, Consumer<V> onChanged, Consumer<Setting<V>> onModuleActivated, IVisible visible, Predicate<V> filter, Registry<V> registry) {
21+
super(name, description, defaultValue, onChanged, onModuleActivated, visible);
22+
23+
this.filter = filter;
24+
this.registry = registry;
25+
}
26+
27+
@Override
28+
protected final V parseImpl(String str) {
29+
return parseId(registry, str);
30+
}
31+
32+
@Override
33+
protected final boolean isValueValid(V value) {
34+
return value != null && filter.test(value);
35+
}
36+
37+
@Override
38+
public final Iterable<Identifier> getIdentifierSuggestions() {
39+
return registry.getIds();
40+
}
41+
42+
@Override
43+
protected final NbtCompound save(NbtCompound tag) {
44+
tag.putString("value", registry.getId(get()).toString());
45+
46+
return tag;
47+
}
48+
49+
@Override
50+
protected final V load(NbtCompound tag) {
51+
V value = registry.get(Identifier.of(tag.getString("value", "")));
52+
53+
if (!isValueValid(value)) {
54+
resetImpl();
55+
} else {
56+
this.value = value;
57+
}
58+
59+
return get();
60+
}
61+
62+
@SuppressWarnings("unchecked")
63+
protected static abstract class AbstractBuilder<B extends AbstractBuilder<B, V, S>, V, S extends AbstractRegistryItemSetting<V>> extends SettingBuilder<B, V, S> {
64+
protected Predicate<V> filter = Predicates.alwaysTrue();
65+
66+
protected AbstractBuilder() {
67+
super(null);
68+
}
69+
70+
public B filter(Predicate<V> filter) {
71+
this.filter = filter;
72+
return (B) this;
73+
}
74+
}
75+
76+
}
77+
Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
/*
2+
* This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client).
3+
* Copyright (c) Meteor Development.
4+
*/
5+
6+
package meteordevelopment.meteorclient.settings;
7+
8+
import net.minecraft.nbt.NbtCompound;
9+
import net.minecraft.nbt.NbtElement;
10+
import net.minecraft.nbt.NbtList;
11+
import net.minecraft.nbt.NbtString;
12+
import net.minecraft.registry.Registry;
13+
import net.minecraft.util.Identifier;
14+
import org.apache.commons.lang3.StringUtils;
15+
16+
import java.util.ArrayList;
17+
import java.util.Collection;
18+
import java.util.List;
19+
import java.util.function.Consumer;
20+
import java.util.function.Predicate;
21+
22+
public abstract class AbstractRegistryListSetting<C extends Collection<V>, V> extends Setting<C> {
23+
public final Predicate<V> filter;
24+
public final Registry<V> registry;
25+
26+
protected AbstractRegistryListSetting(String name, String description, C defaultValue, Consumer<C> onChanged, Consumer<Setting<C>> onModuleActivated, IVisible visible, Predicate<V> filter, Registry<V> registry) {
27+
super(name, description, defaultValue, onChanged, onModuleActivated, visible);
28+
this.filter = filter;
29+
this.registry = registry;
30+
}
31+
32+
protected abstract C transferCollection(Collection<V> from);
33+
34+
@Override
35+
public final void resetImpl() {
36+
value = transferCollection(defaultValue);
37+
}
38+
39+
@Override
40+
protected final C parseImpl(String str) {
41+
String[] values = StringUtils.split(str, ',');
42+
List<V> items = new ArrayList<>(values.length);
43+
44+
try {
45+
for (String string : values) {
46+
V value = parseId(this.registry, string);
47+
if (value != null && filter.test(value)) items.add(value);
48+
}
49+
} catch (Exception ignored) {}
50+
51+
return transferCollection(items);
52+
}
53+
54+
@Override
55+
protected boolean isValueValid(C value) {
56+
return true;
57+
}
58+
59+
@Override
60+
public final Iterable<Identifier> getIdentifierSuggestions() {
61+
return this.registry.getIds();
62+
}
63+
64+
@Override
65+
protected NbtCompound save(NbtCompound tag) {
66+
NbtList valueTag = new NbtList();
67+
for (V value : get()) {
68+
valueTag.add(NbtString.of(this.registry.getId(value).toString()));
69+
}
70+
tag.put("value", valueTag);
71+
72+
return tag;
73+
}
74+
75+
@Override
76+
protected C load(NbtCompound tag) {
77+
get().clear();
78+
79+
NbtList valueTag = tag.getListOrEmpty("value");
80+
for (NbtElement tagI : valueTag) {
81+
V value = this.registry.get(Identifier.of(tagI.asString().orElse("")));
82+
if (value == null) continue;
83+
84+
if (filter.test(value)) get().add(value);
85+
}
86+
87+
return get();
88+
}
89+
90+
}

0 commit comments

Comments
 (0)