Skip to content

Commit 2db6de1

Browse files
committed
Expose chemical registries as defaulted registries so that they provide better nullability markers for things like get
1 parent 47ca1e8 commit 2db6de1

File tree

12 files changed

+30
-62
lines changed

12 files changed

+30
-62
lines changed

src/api/java/mekanism/api/MekanismAPI.java

Lines changed: 18 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import mekanism.api.recipes.ingredients.chemical.IPigmentIngredient;
1818
import mekanism.api.recipes.ingredients.chemical.ISlurryIngredient;
1919
import mekanism.api.robit.RobitSkin;
20+
import net.minecraft.core.DefaultedRegistry;
2021
import net.minecraft.core.Registry;
2122
import net.minecraft.resources.ResourceKey;
2223
import net.minecraft.resources.ResourceLocation;
@@ -59,6 +60,13 @@ private static <T> ResourceKey<Registry<MapCodec<? extends T>>> codecRegistryKey
5960
return ResourceKey.createRegistryKey(rl(path));
6061
}
6162

63+
/**
64+
* Constant location representing the name all empty chemicals will be registered under.
65+
*
66+
* @since 10.6.0
67+
*/
68+
public static final ResourceLocation EMPTY_CHEMICAL_NAME = rl("empty");
69+
6270
/**
6371
* Gets the {@link ResourceKey} representing the name of the Registry for {@link Gas gases}.
6472
*
@@ -143,8 +151,8 @@ private static <T> ResourceKey<Registry<MapCodec<? extends T>>> codecRegistryKey
143151
* @see #GAS_REGISTRY_NAME
144152
* @since 10.5.0
145153
*/
146-
public static final Registry<Gas> GAS_REGISTRY = new RegistryBuilder<>(GAS_REGISTRY_NAME)
147-
.defaultKey(rl("empty"))
154+
public static final DefaultedRegistry<Gas> GAS_REGISTRY = (DefaultedRegistry<Gas>) new RegistryBuilder<>(GAS_REGISTRY_NAME)
155+
.defaultKey(EMPTY_CHEMICAL_NAME)
148156
.sync(true)
149157
.create();
150158
/**
@@ -162,8 +170,8 @@ private static <T> ResourceKey<Registry<MapCodec<? extends T>>> codecRegistryKey
162170
* @see #INFUSE_TYPE_REGISTRY_NAME
163171
* @since 10.5.0
164172
*/
165-
public static final Registry<InfuseType> INFUSE_TYPE_REGISTRY = new RegistryBuilder<>(INFUSE_TYPE_REGISTRY_NAME)
166-
.defaultKey(rl("empty"))
173+
public static final DefaultedRegistry<InfuseType> INFUSE_TYPE_REGISTRY = (DefaultedRegistry<InfuseType>) new RegistryBuilder<>(INFUSE_TYPE_REGISTRY_NAME)
174+
.defaultKey(EMPTY_CHEMICAL_NAME)
167175
.sync(true)
168176
.create();
169177
/**
@@ -181,8 +189,8 @@ private static <T> ResourceKey<Registry<MapCodec<? extends T>>> codecRegistryKey
181189
* @see #PIGMENT_REGISTRY_NAME
182190
* @since 10.5.0
183191
*/
184-
public static final Registry<Pigment> PIGMENT_REGISTRY = new RegistryBuilder<>(PIGMENT_REGISTRY_NAME)
185-
.defaultKey(rl("empty"))
192+
public static final DefaultedRegistry<Pigment> PIGMENT_REGISTRY = (DefaultedRegistry<Pigment>) new RegistryBuilder<>(PIGMENT_REGISTRY_NAME)
193+
.defaultKey(EMPTY_CHEMICAL_NAME)
186194
.sync(true)
187195
.create();
188196
/**
@@ -200,8 +208,8 @@ private static <T> ResourceKey<Registry<MapCodec<? extends T>>> codecRegistryKey
200208
* @see #SLURRY_REGISTRY_NAME
201209
* @since 10.5.0
202210
*/
203-
public static final Registry<Slurry> SLURRY_REGISTRY = new RegistryBuilder<>(SLURRY_REGISTRY_NAME)
204-
.defaultKey(rl("empty"))
211+
public static final DefaultedRegistry<Slurry> SLURRY_REGISTRY = (DefaultedRegistry<Slurry>) new RegistryBuilder<>(SLURRY_REGISTRY_NAME)
212+
.defaultKey(EMPTY_CHEMICAL_NAME)
205213
.sync(true)
206214
.create();
207215
/**
@@ -228,14 +236,8 @@ private static <T> ResourceKey<Registry<MapCodec<? extends T>>> codecRegistryKey
228236
* @see #ROBIT_SKIN_SERIALIZER_REGISTRY_NAME
229237
* @since 10.5.0
230238
*/
231-
public static final Registry<MapCodec<? extends RobitSkin>> ROBIT_SKIN_SERIALIZER_REGISTRY = new RegistryBuilder<>(ROBIT_SKIN_SERIALIZER_REGISTRY_NAME).create();
232-
233-
/**
234-
* Constant location representing the name all empty chemicals will be registered under.
235-
*
236-
* @since 10.6.0
237-
*/
238-
public static final ResourceLocation EMPTY_CHEMICAL_NAME = new ResourceLocation(MEKANISM_MODID, "empty");
239+
public static final Registry<MapCodec<? extends RobitSkin>> ROBIT_SKIN_SERIALIZER_REGISTRY = new RegistryBuilder<>(ROBIT_SKIN_SERIALIZER_REGISTRY_NAME)
240+
.create();
239241

240242
//TODO: Potentially define these with DeferredHolder for purposes of fully defining them outside of the API
241243
// would have some minor issues with how the empty stacks are declared

src/api/java/mekanism/api/chemical/Chemical.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@
2020
import mekanism.api.chemical.slurry.Slurry;
2121
import mekanism.api.providers.IChemicalProvider;
2222
import mekanism.api.text.TextComponentUtil;
23+
import net.minecraft.core.DefaultedRegistry;
2324
import net.minecraft.core.Holder;
24-
import net.minecraft.core.Registry;
2525
import net.minecraft.network.RegistryFriendlyByteBuf;
2626
import net.minecraft.network.chat.Component;
2727
import net.minecraft.network.codec.StreamCodec;
@@ -273,9 +273,8 @@ public Holder<CHEMICAL> getAsHolder() {
273273
public abstract boolean isEmptyType();
274274

275275
@Override
276-
@SuppressWarnings({"ConstantConditions", "unchecked"})
276+
@SuppressWarnings("unchecked")
277277
public ResourceLocation getRegistryName() {
278-
//May be null if called before the object is registered
279278
return getRegistry().getKey((CHEMICAL) this);
280279
}
281280

@@ -286,5 +285,5 @@ public ResourceLocation getRegistryName() {
286285
*
287286
* @since 10.5.0
288287
*/
289-
protected abstract Registry<CHEMICAL> getRegistry();
288+
protected abstract DefaultedRegistry<CHEMICAL> getRegistry();
290289
}

src/api/java/mekanism/api/chemical/ChemicalStack.java

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -231,11 +231,6 @@ protected ChemicalStack(@Nullable Void unused) {
231231
this.chemical = null;
232232
}
233233

234-
/**
235-
* Registry the chemical is a part of.
236-
*/
237-
protected abstract Registry<CHEMICAL> getRegistry();
238-
239234
/**
240235
* Helper ot get the empty version of this chemical.
241236
*/

src/api/java/mekanism/api/chemical/gas/Gas.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import mekanism.api.chemical.Chemical;
77
import mekanism.api.providers.IGasProvider;
88
import net.minecraft.Util;
9-
import net.minecraft.core.Registry;
9+
import net.minecraft.core.DefaultedRegistry;
1010
import net.minecraft.network.RegistryFriendlyByteBuf;
1111
import net.minecraft.network.codec.ByteBufCodecs;
1212
import net.minecraft.network.codec.StreamCodec;
@@ -47,7 +47,7 @@ public final boolean isEmptyType() {
4747
}
4848

4949
@Override
50-
protected final Registry<Gas> getRegistry() {
50+
protected final DefaultedRegistry<Gas> getRegistry() {
5151
return MekanismAPI.GAS_REGISTRY;
5252
}
5353

src/api/java/mekanism/api/chemical/gas/GasStack.java

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010
import net.minecraft.core.Holder;
1111
import net.minecraft.core.HolderLookup;
1212
import net.minecraft.core.HolderLookup.Provider;
13-
import net.minecraft.core.Registry;
1413
import net.minecraft.nbt.CompoundTag;
1514
import net.minecraft.nbt.NbtOps;
1615
import net.minecraft.nbt.Tag;
@@ -136,11 +135,6 @@ public static GasStack parseOptional(HolderLookup.Provider lookupProvider, Compo
136135
return tag.isEmpty() ? EMPTY : parse(lookupProvider, tag).orElse(EMPTY);
137136
}
138137

139-
@Override
140-
protected Registry<Gas> getRegistry() {
141-
return MekanismAPI.GAS_REGISTRY;
142-
}
143-
144138
@Override
145139
protected Gas getEmptyChemical() {
146140
return MekanismAPI.EMPTY_GAS;

src/api/java/mekanism/api/chemical/infuse/InfuseType.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import mekanism.api.chemical.Chemical;
77
import mekanism.api.providers.IInfuseTypeProvider;
88
import net.minecraft.Util;
9-
import net.minecraft.core.Registry;
9+
import net.minecraft.core.DefaultedRegistry;
1010
import net.minecraft.network.RegistryFriendlyByteBuf;
1111
import net.minecraft.network.codec.ByteBufCodecs;
1212
import net.minecraft.network.codec.StreamCodec;
@@ -42,7 +42,7 @@ public final boolean isEmptyType() {
4242
}
4343

4444
@Override
45-
protected final Registry<InfuseType> getRegistry() {
45+
protected final DefaultedRegistry<InfuseType> getRegistry() {
4646
return MekanismAPI.INFUSE_TYPE_REGISTRY;
4747
}
4848

src/api/java/mekanism/api/chemical/infuse/InfusionStack.java

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010
import net.minecraft.core.Holder;
1111
import net.minecraft.core.HolderLookup;
1212
import net.minecraft.core.HolderLookup.Provider;
13-
import net.minecraft.core.Registry;
1413
import net.minecraft.nbt.CompoundTag;
1514
import net.minecraft.nbt.NbtOps;
1615
import net.minecraft.nbt.Tag;
@@ -131,11 +130,6 @@ public static InfusionStack parseOptional(HolderLookup.Provider lookupProvider,
131130
return tag.isEmpty() ? EMPTY : parse(lookupProvider, tag).orElse(EMPTY);
132131
}
133132

134-
@Override
135-
protected Registry<InfuseType> getRegistry() {
136-
return MekanismAPI.INFUSE_TYPE_REGISTRY;
137-
}
138-
139133
@Override
140134
protected InfuseType getEmptyChemical() {
141135
return MekanismAPI.EMPTY_INFUSE_TYPE;

src/api/java/mekanism/api/chemical/pigment/Pigment.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import mekanism.api.chemical.Chemical;
77
import mekanism.api.providers.IPigmentProvider;
88
import net.minecraft.Util;
9-
import net.minecraft.core.Registry;
9+
import net.minecraft.core.DefaultedRegistry;
1010
import net.minecraft.network.RegistryFriendlyByteBuf;
1111
import net.minecraft.network.codec.ByteBufCodecs;
1212
import net.minecraft.network.codec.StreamCodec;
@@ -45,7 +45,7 @@ public final boolean isEmptyType() {
4545
}
4646

4747
@Override
48-
protected final Registry<Pigment> getRegistry() {
48+
protected final DefaultedRegistry<Pigment> getRegistry() {
4949
return MekanismAPI.PIGMENT_REGISTRY;
5050
}
5151

src/api/java/mekanism/api/chemical/pigment/PigmentStack.java

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010
import net.minecraft.core.Holder;
1111
import net.minecraft.core.HolderLookup;
1212
import net.minecraft.core.HolderLookup.Provider;
13-
import net.minecraft.core.Registry;
1413
import net.minecraft.nbt.CompoundTag;
1514
import net.minecraft.nbt.NbtOps;
1615
import net.minecraft.nbt.Tag;
@@ -131,11 +130,6 @@ public static PigmentStack parseOptional(HolderLookup.Provider lookupProvider, C
131130
return tag.isEmpty() ? EMPTY : parse(lookupProvider, tag).orElse(EMPTY);
132131
}
133132

134-
@Override
135-
protected Registry<Pigment> getRegistry() {
136-
return MekanismAPI.PIGMENT_REGISTRY;
137-
}
138-
139133
@Override
140134
protected Pigment getEmptyChemical() {
141135
return MekanismAPI.EMPTY_PIGMENT;

src/api/java/mekanism/api/chemical/slurry/Slurry.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import mekanism.api.chemical.Chemical;
77
import mekanism.api.providers.ISlurryProvider;
88
import net.minecraft.Util;
9-
import net.minecraft.core.Registry;
9+
import net.minecraft.core.DefaultedRegistry;
1010
import net.minecraft.network.RegistryFriendlyByteBuf;
1111
import net.minecraft.network.codec.ByteBufCodecs;
1212
import net.minecraft.network.codec.StreamCodec;
@@ -52,7 +52,7 @@ public final boolean isEmptyType() {
5252
}
5353

5454
@Override
55-
protected final Registry<Slurry> getRegistry() {
55+
protected final DefaultedRegistry<Slurry> getRegistry() {
5656
return MekanismAPI.SLURRY_REGISTRY;
5757
}
5858

0 commit comments

Comments
 (0)