Skip to content

Commit 4e86c2b

Browse files
committed
migration
I think BlockSetting and ItemSetting can be removed...
1 parent 6ddd0a3 commit 4e86c2b

File tree

4 files changed

+78
-118
lines changed

4 files changed

+78
-118
lines changed

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

Lines changed: 71 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,5 +5,75 @@
55

66
package meteordevelopment.meteorclient.settings;
77

8-
public abstract class AbstractRegistryItemSetting {
8+
import net.minecraft.nbt.NbtCompound;
9+
import net.minecraft.registry.Registry;
10+
import net.minecraft.util.Identifier;
11+
12+
import java.util.function.Consumer;
13+
import java.util.function.Predicate;
14+
15+
public abstract class AbstractRegistryItemSetting<V> extends Setting<V> {
16+
public final Predicate<V> filter;
17+
public final Registry<V> registry;
18+
19+
protected AbstractRegistryItemSetting(String name, String description, V defaultValue, Consumer<V> onChanged, Consumer<Setting<V>> onModuleActivated, IVisible visible, Predicate<V> filter, Registry<V> registry) {
20+
super(name, description, defaultValue, onChanged, onModuleActivated, visible);
21+
22+
this.filter = filter;
23+
this.registry = registry;
24+
}
25+
26+
@Override
27+
protected final V parseImpl(String str) {
28+
return parseId(registry, str);
29+
}
30+
31+
@Override
32+
protected final boolean isValueValid(V value) {
33+
return filter == null || filter.test(value);
34+
}
35+
36+
@Override
37+
public final Iterable<Identifier> getIdentifierSuggestions() {
38+
return registry.getIds();
39+
}
40+
41+
@Override
42+
protected final NbtCompound save(NbtCompound tag) {
43+
tag.putString("value", registry.getId(get()).toString());
44+
45+
return tag;
46+
}
47+
48+
@Override
49+
protected final V load(NbtCompound tag) {
50+
value = registry.get(Identifier.of(tag.getString("value", "")));
51+
52+
if (filter != null && !filter.test(value)) {
53+
for (V t : registry) {
54+
if (filter.test(t)) {
55+
value = t;
56+
break;
57+
}
58+
}
59+
}
60+
61+
return get();
62+
}
63+
64+
@SuppressWarnings("unchecked")
65+
protected static abstract class AbstractBuilder<B extends AbstractBuilder<B, V, S>, V, S extends AbstractRegistryItemSetting<V>> extends SettingBuilder<B, V, S> {
66+
protected Predicate<V> filter;
67+
68+
protected AbstractBuilder() {
69+
super(null);
70+
}
71+
72+
public B filter(Predicate<V> filter) {
73+
this.filter = filter;
74+
return (B) this;
75+
}
76+
}
77+
978
}
79+

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

Lines changed: 3 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -6,72 +6,17 @@
66
package meteordevelopment.meteorclient.settings;
77

88
import net.minecraft.block.Block;
9-
import net.minecraft.nbt.NbtCompound;
109
import net.minecraft.registry.Registries;
11-
import net.minecraft.util.Identifier;
1210

1311
import java.util.function.Consumer;
1412
import java.util.function.Predicate;
1513

16-
public class BlockSetting extends Setting<Block> {
17-
public final Predicate<Block> filter;
18-
14+
public class BlockSetting extends AbstractRegistryItemSetting<Block> {
1915
public BlockSetting(String name, String description, Block defaultValue, Consumer<Block> onChanged, Consumer<Setting<Block>> onModuleActivated, IVisible visible, Predicate<Block> filter) {
20-
super(name, description, defaultValue, onChanged, onModuleActivated, visible);
21-
22-
this.filter = filter;
23-
}
24-
25-
@Override
26-
protected Block parseImpl(String str) {
27-
return parseId(Registries.BLOCK, str);
28-
}
29-
30-
@Override
31-
protected boolean isValueValid(Block value) {
32-
return filter == null || filter.test(value);
33-
}
34-
35-
@Override
36-
public Iterable<Identifier> getIdentifierSuggestions() {
37-
return Registries.BLOCK.getIds();
38-
}
39-
40-
@Override
41-
protected NbtCompound save(NbtCompound tag) {
42-
tag.putString("value", Registries.BLOCK.getId(get()).toString());
43-
44-
return tag;
16+
super(name, description, defaultValue, onChanged, onModuleActivated, visible, filter, Registries.BLOCK);
4517
}
4618

47-
@Override
48-
protected Block load(NbtCompound tag) {
49-
value = Registries.BLOCK.get(Identifier.of(tag.getString("value", "")));
50-
51-
if (filter != null && !filter.test(value)) {
52-
for (Block block : Registries.BLOCK) {
53-
if (filter.test(block)) {
54-
value = block;
55-
break;
56-
}
57-
}
58-
}
59-
60-
return get();
61-
}
62-
63-
public static class Builder extends SettingBuilder<Builder, Block, BlockSetting> {
64-
private Predicate<Block> filter;
65-
66-
public Builder() {
67-
super(null);
68-
}
69-
70-
public Builder filter(Predicate<Block> filter) {
71-
this.filter = filter;
72-
return this;
73-
}
74-
19+
public static class Builder extends AbstractBuilder<Builder, Block, BlockSetting> {
7520
@Override
7621
public BlockSetting build() {
7722
return new BlockSetting(name, description, defaultValue, onChanged, onModuleActivated, visible, filter);

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

Lines changed: 3 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -6,72 +6,17 @@
66
package meteordevelopment.meteorclient.settings;
77

88
import net.minecraft.item.Item;
9-
import net.minecraft.nbt.NbtCompound;
109
import net.minecraft.registry.Registries;
11-
import net.minecraft.util.Identifier;
1210

1311
import java.util.function.Consumer;
1412
import java.util.function.Predicate;
1513

16-
public class ItemSetting extends Setting<Item> {
17-
public final Predicate<Item> filter;
18-
14+
public class ItemSetting extends AbstractRegistryItemSetting<Item> {
1915
public ItemSetting(String name, String description, Item defaultValue, Consumer<Item> onChanged, Consumer<Setting<Item>> onModuleActivated, IVisible visible, Predicate<Item> filter) {
20-
super(name, description, defaultValue, onChanged, onModuleActivated, visible);
21-
22-
this.filter = filter;
23-
}
24-
25-
@Override
26-
protected Item parseImpl(String str) {
27-
return parseId(Registries.ITEM, str);
28-
}
29-
30-
@Override
31-
protected boolean isValueValid(Item value) {
32-
return filter == null || filter.test(value);
33-
}
34-
35-
@Override
36-
public Iterable<Identifier> getIdentifierSuggestions() {
37-
return Registries.ITEM.getIds();
38-
}
39-
40-
@Override
41-
public NbtCompound save(NbtCompound tag) {
42-
tag.putString("value", Registries.ITEM.getId(get()).toString());
43-
44-
return tag;
16+
super(name, description, defaultValue, onChanged, onModuleActivated, visible, filter, Registries.ITEM);
4517
}
4618

47-
@Override
48-
public Item load(NbtCompound tag) {
49-
value = Registries.ITEM.get(Identifier.of(tag.getString("value","")));
50-
51-
if (filter != null && !filter.test(value)) {
52-
for (Item item : Registries.ITEM) {
53-
if (filter.test(item)) {
54-
value = item;
55-
break;
56-
}
57-
}
58-
}
59-
60-
return get();
61-
}
62-
63-
public static class Builder extends SettingBuilder<Builder, Item, ItemSetting> {
64-
private Predicate<Item> filter;
65-
66-
public Builder() {
67-
super(null);
68-
}
69-
70-
public Builder filter(Predicate<Item> filter) {
71-
this.filter = filter;
72-
return this;
73-
}
74-
19+
public static class Builder extends AbstractBuilder<Builder, Item, ItemSetting> {
7520
@Override
7621
public ItemSetting build() {
7722
return new ItemSetting(name, description, defaultValue, onChanged, onModuleActivated, visible, filter);

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,7 @@ public static <T> T parseId(Registry<T> registry, String name) {
158158

159159
Identifier id;
160160
if (name.contains(":")) id = Identifier.of(name);
161-
else id = Identifier.of("minecraft", name);
161+
else id = Identifier.ofVanilla(name);
162162
if (registry.containsId(id)) return registry.get(id);
163163

164164
return null;

0 commit comments

Comments
 (0)