Skip to content

Commit 9c1d658

Browse files
committed
other lists
1 parent 7fa3d1d commit 9c1d658

File tree

5 files changed

+26
-212
lines changed

5 files changed

+26
-212
lines changed

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ public final Iterable<Identifier> getIdentifierSuggestions() {
6262
}
6363

6464
@Override
65-
protected final NbtCompound save(NbtCompound tag) {
65+
protected NbtCompound save(NbtCompound tag) {
6666
NbtList valueTag = new NbtList();
6767
for (V value : get()) {
6868
valueTag.add(NbtString.of(this.registry.getId(value).toString()));
@@ -73,7 +73,7 @@ protected final NbtCompound save(NbtCompound tag) {
7373
}
7474

7575
@Override
76-
protected final C load(NbtCompound tag) {
76+
protected C load(NbtCompound tag) {
7777
get().clear();
7878

7979
NbtList valueTag = tag.getListOrEmpty("value");

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

Lines changed: 6 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -15,53 +15,26 @@
1515

1616
import java.util.ArrayList;
1717
import java.util.Arrays;
18+
import java.util.Collection;
1819
import java.util.List;
1920
import java.util.function.Consumer;
2021
import java.util.function.Predicate;
2122

22-
public class ItemListSetting extends Setting<List<Item>> {
23-
public final Predicate<Item> filter;
23+
public class ItemListSetting extends AbstractRegistryListSetting<List<Item>, Item> {
2424
private final boolean bypassFilterWhenSavingAndLoading;
2525

2626
public ItemListSetting(String name, String description, List<Item> defaultValue, Consumer<List<Item>> onChanged, Consumer<Setting<List<Item>>> onModuleActivated, IVisible visible, Predicate<Item> filter, boolean bypassFilterWhenSavingAndLoading) {
27-
super(name, description, defaultValue, onChanged, onModuleActivated, visible);
28-
29-
this.filter = filter;
27+
super(name, description, defaultValue, onChanged, onModuleActivated, visible, filter, Registries.ITEM);
3028
this.bypassFilterWhenSavingAndLoading = bypassFilterWhenSavingAndLoading;
3129
}
3230

3331
@Override
34-
protected List<Item> parseImpl(String str) {
35-
String[] values = str.split(",");
36-
List<Item> items = new ArrayList<>(values.length);
37-
38-
try {
39-
for (String value : values) {
40-
Item item = parseId(Registries.ITEM, value);
41-
if (item != null && (filter == null || filter.test(item))) items.add(item);
42-
}
43-
} catch (Exception ignored) {}
44-
45-
return items;
46-
}
47-
48-
@Override
49-
public void resetImpl() {
50-
value = new ArrayList<>(defaultValue);
51-
}
52-
53-
@Override
54-
protected boolean isValueValid(List<Item> value) {
55-
return true;
56-
}
57-
58-
@Override
59-
public Iterable<Identifier> getIdentifierSuggestions() {
60-
return Registries.ITEM.getIds();
32+
protected List<Item> transferCollection(Collection<Item> from) {
33+
return new ArrayList<>(from);
6134
}
6235

6336
@Override
64-
public NbtCompound save(NbtCompound tag) {
37+
protected NbtCompound save(NbtCompound tag) {
6538
NbtList valueTag = new NbtList();
6639
for (Item item : get()) {
6740
if (bypassFilterWhenSavingAndLoading || (filter == null || filter.test(item))) valueTag.add(NbtString.of(Registries.ITEM.getId(item).toString()));

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

Lines changed: 6 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -5,78 +5,24 @@
55

66
package meteordevelopment.meteorclient.settings;
77

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.particle.ParticleEffect;
8+
import com.google.common.base.Predicates;
139
import net.minecraft.particle.ParticleType;
1410
import net.minecraft.registry.Registries;
15-
import net.minecraft.util.Identifier;
1611

1712
import java.util.ArrayList;
1813
import java.util.Arrays;
14+
import java.util.Collection;
1915
import java.util.List;
2016
import java.util.function.Consumer;
2117

22-
public class ParticleTypeListSetting extends Setting<List<ParticleType<?>>> {
18+
public class ParticleTypeListSetting extends AbstractRegistryListSetting<List<ParticleType<?>>, ParticleType<?>> {
2319
public ParticleTypeListSetting(String name, String description, List<ParticleType<?>> defaultValue, Consumer<List<ParticleType<?>>> onChanged, Consumer<Setting<List<ParticleType<?>>>> onModuleActivated, IVisible visible) {
24-
super(name, description, defaultValue, onChanged, onModuleActivated, visible);
20+
super(name, description, defaultValue, onChanged, onModuleActivated, visible, Predicates.alwaysTrue(), Registries.PARTICLE_TYPE);
2521
}
2622

2723
@Override
28-
public void resetImpl() {
29-
value = new ArrayList<>(defaultValue);
30-
}
31-
32-
@Override
33-
protected List<ParticleType<?>> parseImpl(String str) {
34-
String[] values = str.split(",");
35-
List<ParticleType<?>> particleTypes = new ArrayList<>(values.length);
36-
37-
try {
38-
for (String value : values) {
39-
ParticleType<?> particleType = parseId(Registries.PARTICLE_TYPE, value);
40-
if (particleType instanceof ParticleEffect) particleTypes.add(particleType);
41-
}
42-
} catch (Exception ignored) {}
43-
44-
return particleTypes;
45-
}
46-
47-
@Override
48-
protected boolean isValueValid(List<ParticleType<?>> value) {
49-
return true;
50-
}
51-
52-
@Override
53-
public Iterable<Identifier> getIdentifierSuggestions() {
54-
return Registries.PARTICLE_TYPE.getIds();
55-
}
56-
57-
@Override
58-
public NbtCompound save(NbtCompound tag) {
59-
NbtList valueTag = new NbtList();
60-
for (ParticleType<?> particleType : get()) {
61-
Identifier id = Registries.PARTICLE_TYPE.getId(particleType);
62-
if (id != null) valueTag.add(NbtString.of(id.toString()));
63-
}
64-
tag.put("value", valueTag);
65-
66-
return tag;
67-
}
68-
69-
@Override
70-
public List<ParticleType<?>> load(NbtCompound tag) {
71-
get().clear();
72-
73-
NbtList valueTag = tag.getListOrEmpty("value");
74-
for (NbtElement tagI : valueTag) {
75-
ParticleType<?> particleType = Registries.PARTICLE_TYPE.get(Identifier.of(tagI.asString().orElse("")));
76-
if (particleType != null) get().add(particleType);
77-
}
78-
79-
return get();
24+
protected List<ParticleType<?>> transferCollection(Collection<ParticleType<?>> from) {
25+
return new ArrayList<>(from);
8026
}
8127

8228
public static class Builder extends SettingBuilder<Builder, List<ParticleType<?>>, ParticleTypeListSetting> {

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

Lines changed: 6 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -5,76 +5,24 @@
55

66
package meteordevelopment.meteorclient.settings;
77

8-
import net.minecraft.nbt.NbtCompound;
9-
import net.minecraft.nbt.NbtElement;
10-
import net.minecraft.nbt.NbtList;
11-
import net.minecraft.nbt.NbtString;
8+
import com.google.common.base.Predicates;
129
import net.minecraft.registry.Registries;
1310
import net.minecraft.sound.SoundEvent;
14-
import net.minecraft.util.Identifier;
1511

1612
import java.util.ArrayList;
1713
import java.util.Arrays;
14+
import java.util.Collection;
1815
import java.util.List;
1916
import java.util.function.Consumer;
2017

21-
public class SoundEventListSetting extends Setting<List<SoundEvent>> {
18+
public class SoundEventListSetting extends AbstractRegistryListSetting<List<SoundEvent>, SoundEvent> {
2219
public SoundEventListSetting(String name, String description, List<SoundEvent> defaultValue, Consumer<List<SoundEvent>> onChanged, Consumer<Setting<List<SoundEvent>>> onModuleActivated, IVisible visible) {
23-
super(name, description, defaultValue, onChanged, onModuleActivated, visible);
20+
super(name, description, defaultValue, onChanged, onModuleActivated, visible, Predicates.alwaysTrue(), Registries.SOUND_EVENT);
2421
}
2522

2623
@Override
27-
public void resetImpl() {
28-
value = new ArrayList<>(defaultValue);
29-
}
30-
31-
@Override
32-
protected List<SoundEvent> parseImpl(String str) {
33-
String[] values = str.split(",");
34-
List<SoundEvent> sounds = new ArrayList<>(values.length);
35-
36-
try {
37-
for (String value : values) {
38-
SoundEvent sound = parseId(Registries.SOUND_EVENT, value);
39-
if (sound != null) sounds.add(sound);
40-
}
41-
} catch (Exception ignored) {}
42-
43-
return sounds;
44-
}
45-
46-
@Override
47-
protected boolean isValueValid(List<SoundEvent> value) {
48-
return true;
49-
}
50-
51-
@Override
52-
public Iterable<Identifier> getIdentifierSuggestions() {
53-
return Registries.SOUND_EVENT.getIds();
54-
}
55-
56-
@Override
57-
public NbtCompound save(NbtCompound tag) {
58-
NbtList valueTag = new NbtList();
59-
for (SoundEvent sound : get()) {
60-
Identifier id = Registries.SOUND_EVENT.getId(sound);
61-
if (id != null) valueTag.add(NbtString.of(id.toString()));
62-
}
63-
tag.put("value", valueTag);
64-
65-
return tag;
66-
}
67-
68-
@Override
69-
public List<SoundEvent> load(NbtCompound tag) {
70-
get().clear();
71-
72-
for (NbtElement tagI : tag.getListOrEmpty("value")) {
73-
SoundEvent soundEvent = Registries.SOUND_EVENT.get(Identifier.of(tagI.asString().orElse("")));
74-
if (soundEvent != null) get().add(soundEvent);
75-
}
76-
77-
return get();
24+
protected List<SoundEvent> transferCollection(Collection<SoundEvent> from) {
25+
return new ArrayList<>(from);
7826
}
7927

8028
public static class Builder extends SettingBuilder<Builder, List<SoundEvent>, SoundEventListSetting> {

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

Lines changed: 6 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -5,77 +5,24 @@
55

66
package meteordevelopment.meteorclient.settings;
77

8+
import com.google.common.base.Predicates;
89
import net.minecraft.entity.effect.StatusEffect;
9-
import net.minecraft.nbt.NbtCompound;
10-
import net.minecraft.nbt.NbtElement;
11-
import net.minecraft.nbt.NbtList;
12-
import net.minecraft.nbt.NbtString;
1310
import net.minecraft.registry.Registries;
14-
import net.minecraft.util.Identifier;
1511

1612
import java.util.ArrayList;
1713
import java.util.Arrays;
14+
import java.util.Collection;
1815
import java.util.List;
1916
import java.util.function.Consumer;
2017

21-
public class StatusEffectListSetting extends Setting<List<StatusEffect>> {
18+
public class StatusEffectListSetting extends AbstractRegistryListSetting<List<StatusEffect>, StatusEffect> {
2219
public StatusEffectListSetting(String name, String description, List<StatusEffect> defaultValue, Consumer<List<StatusEffect>> onChanged, Consumer<Setting<List<StatusEffect>>> onModuleActivated, IVisible visible) {
23-
super(name, description, defaultValue, onChanged, onModuleActivated, visible);
20+
super(name, description, defaultValue, onChanged, onModuleActivated, visible, Predicates.alwaysTrue(), Registries.STATUS_EFFECT);
2421
}
2522

2623
@Override
27-
public void resetImpl() {
28-
value = new ArrayList<>(defaultValue);
29-
}
30-
31-
@Override
32-
protected List<StatusEffect> parseImpl(String str) {
33-
String[] values = str.split(",");
34-
List<StatusEffect> effects = new ArrayList<>(values.length);
35-
36-
try {
37-
for (String value : values) {
38-
StatusEffect effect = parseId(Registries.STATUS_EFFECT, value);
39-
if (effect != null) effects.add(effect);
40-
}
41-
} catch (Exception ignored) {}
42-
43-
return effects;
44-
}
45-
46-
@Override
47-
protected boolean isValueValid(List<StatusEffect> value) {
48-
return true;
49-
}
50-
51-
@Override
52-
public Iterable<Identifier> getIdentifierSuggestions() {
53-
return Registries.STATUS_EFFECT.getIds();
54-
}
55-
56-
@Override
57-
public NbtCompound save(NbtCompound tag) {
58-
NbtList valueTag = new NbtList();
59-
60-
for (StatusEffect effect : get()) {
61-
Identifier id = Registries.STATUS_EFFECT.getId(effect);
62-
if (id != null) valueTag.add(NbtString.of(id.toString()));
63-
}
64-
tag.put("value", valueTag);
65-
66-
return tag;
67-
}
68-
69-
@Override
70-
public List<StatusEffect> load(NbtCompound tag) {
71-
get().clear();
72-
73-
for (NbtElement tagI : tag.getListOrEmpty("value")) {
74-
StatusEffect effect = Registries.STATUS_EFFECT.get(Identifier.of(tagI.asString().orElse("")));
75-
if (effect != null) get().add(effect);
76-
}
77-
78-
return get();
24+
protected List<StatusEffect> transferCollection(Collection<StatusEffect> from) {
25+
return new ArrayList<>(from);
7926
}
8027

8128
public static class Builder extends SettingBuilder<Builder, List<StatusEffect>, StatusEffectListSetting> {

0 commit comments

Comments
 (0)