Make registries be statically initialized

This commit is contained in:
DBotThePony 2021-09-02 14:21:47 +07:00
parent bd02a3186d
commit ac0c72abb1
Signed by: DBot
GPG Key ID: DCC23B5715498507
10 changed files with 20 additions and 27 deletions

View File

@ -69,7 +69,8 @@ public class OverdriveThatMatters {
// LOGGER.info("Registered event handlers"); // LOGGER.info("Registered event handlers");
Registry.createRegistry(); // force Registry static initializer to be called
Registry.dummy();
CREATIVE_TAB = new CreativeModeTab("otm") { CREATIVE_TAB = new CreativeModeTab("otm") {
@Override @Override

View File

@ -51,20 +51,10 @@ public class Registry {
DAMAGE_EVENT_HORIZON.bypassMagic().bypassArmor(); DAMAGE_EVENT_HORIZON.bypassMagic().bypassArmor();
} }
private static ForgeRegistry<AndroidFeatureType<?>> ANDROID_FEATURES; public static final ForgeRegistry<AndroidFeatureType<?>> ANDROID_FEATURES;
private static ForgeRegistry<AndroidResearchType<?>> ANDROID_RESEARCH; public static final ForgeRegistry<AndroidResearchType<?>> ANDROID_RESEARCH;
public static ForgeRegistry<AndroidFeatureType<?>> ANDROID_FEATURES() {
return ANDROID_FEATURES;
}
public static ForgeRegistry<AndroidResearchType<?>> ANDROID_RESEARCH() {
return ANDROID_RESEARCH;
}
public static void createRegistry() {
if (ANDROID_FEATURES != null)
throw new IllegalStateException("Already has registry");
static {
var builder = new RegistryBuilder<AndroidFeatureType<?>>(); var builder = new RegistryBuilder<AndroidFeatureType<?>>();
builder.setName(new ResourceLocation(OverdriveThatMatters.MOD_ID, "android_features")); builder.setName(new ResourceLocation(OverdriveThatMatters.MOD_ID, "android_features"));
@ -80,6 +70,8 @@ public class Registry {
ANDROID_RESEARCH = (ForgeRegistry<AndroidResearchType<?>>) builder2.create(); ANDROID_RESEARCH = (ForgeRegistry<AndroidResearchType<?>>) builder2.create();
} }
public static void dummy() {}
private static <T> Class<T> c(Class<?> cls) { return (Class<T>) cls; } private static <T> Class<T> c(Class<?> cls) { return (Class<T>) cls; }
record CrateProps(MaterialColor color, ResourceLocation name) { record CrateProps(MaterialColor color, ResourceLocation name) {

View File

@ -167,7 +167,7 @@ public class AndroidResearchBuilder {
var list = new ArrayList<AndroidResearchType<?>>(); var list = new ArrayList<AndroidResearchType<?>>();
for (var entry : prerequisites) { for (var entry : prerequisites) {
var get = Registry.ANDROID_RESEARCH().getValue(entry); var get = Registry.ANDROID_RESEARCH.getValue(entry);
if (get != null) { if (get != null) {
list.add(get); list.add(get);
@ -179,7 +179,7 @@ public class AndroidResearchBuilder {
resolved_preq = List.copyOf(list); resolved_preq = List.copyOf(list);
for (var entry : feature_results) { for (var entry : feature_results) {
var get = Registry.ANDROID_FEATURES().getValue(entry.id); var get = Registry.ANDROID_FEATURES.getValue(entry.id);
if (get != null) { if (get != null) {
resolved_features.add(new ResolvedFeature(get, entry.level, entry.callback)); resolved_features.add(new ResolvedFeature(get, entry.level, entry.callback));

View File

@ -27,7 +27,7 @@ public class AndroidResearchType<T extends AndroidResearch> extends ForgeRegistr
if (blocking == null) { if (blocking == null) {
var list = new ArrayList<AndroidResearchType<?>>(); var list = new ArrayList<AndroidResearchType<?>>();
for (var type : Registry.ANDROID_RESEARCH()) { for (var type : Registry.ANDROID_RESEARCH) {
if (type.getBlockedBy().contains(this)) { if (type.getBlockedBy().contains(this)) {
list.add(type); list.add(type);
} }
@ -46,7 +46,7 @@ public class AndroidResearchType<T extends AndroidResearch> extends ForgeRegistr
if (unlocks == null) { if (unlocks == null) {
var list = new ArrayList<AndroidResearchType<?>>(); var list = new ArrayList<AndroidResearchType<?>>();
for (var type : Registry.ANDROID_RESEARCH()) { for (var type : Registry.ANDROID_RESEARCH) {
if (type.getPrerequisites().contains(this)) { if (type.getPrerequisites().contains(this)) {
list.add(type); list.add(type);
} }

View File

@ -237,7 +237,7 @@ public class AndroidCapability implements ICapabilityProvider, IAndroidCapabilit
for (var _tag : features_nbt) { for (var _tag : features_nbt) {
if (_tag instanceof CompoundTag tag) { if (_tag instanceof CompoundTag tag) {
var get_feature = Registry.ANDROID_FEATURES().getValue(new ResourceLocation(tag.getString("id"))); var get_feature = Registry.ANDROID_FEATURES.getValue(new ResourceLocation(tag.getString("id")));
if (get_feature != null && get_feature.isApplicable(this)) { if (get_feature != null && get_feature.isApplicable(this)) {
var feature = get_feature.factory(this); var feature = get_feature.factory(this);

View File

@ -82,7 +82,7 @@ public class AndroidCapabilityPlayer extends AndroidCapability {
for (var _tag : list) { for (var _tag : list) {
if (_tag instanceof CompoundTag tag) { if (_tag instanceof CompoundTag tag) {
var research = Registry.ANDROID_RESEARCH().getValue(new ResourceLocation(tag.getString("id"))); var research = Registry.ANDROID_RESEARCH.getValue(new ResourceLocation(tag.getString("id")));
if (research != null) { if (research != null) {
var instance = research.factory(this); var instance = research.factory(this);

View File

@ -180,7 +180,7 @@ public class AndroidStationScreen extends MatteryScreen<AndroidStationMenu> impl
Arrays.fill(rows, null); Arrays.fill(rows, null);
next_x = 0; next_x = 0;
for (var research : Registry.ANDROID_RESEARCH().getValues()) { for (var research : Registry.ANDROID_RESEARCH.getValues()) {
if (research.getPrerequisites().size() == 0) { if (research.getPrerequisites().size() == 0) {
dive(cap, research, 0); dive(cap, research, 0);
float max = 0; float max = 0;

View File

@ -26,7 +26,7 @@ public record AndroidFeaturePacket(boolean is_added, AndroidFeatureType<?> featu
public void write(FriendlyByteBuf buffer) { public void write(FriendlyByteBuf buffer) {
buffer.writeBoolean(is_added); buffer.writeBoolean(is_added);
buffer.writeInt(Registry.ANDROID_FEATURES().getID(feature)); buffer.writeInt(Registry.ANDROID_FEATURES.getID(feature));
} }
public void play(Supplier<NetworkEvent.Context> context) { public void play(Supplier<NetworkEvent.Context> context) {
@ -50,7 +50,7 @@ public record AndroidFeaturePacket(boolean is_added, AndroidFeatureType<?> featu
public static AndroidFeaturePacket read(FriendlyByteBuf buffer) { public static AndroidFeaturePacket read(FriendlyByteBuf buffer) {
var is_added = buffer.readBoolean(); var is_added = buffer.readBoolean();
var feature = Objects.requireNonNull(Registry.ANDROID_FEATURES().getValue(buffer.readInt())); var feature = Objects.requireNonNull(Registry.ANDROID_FEATURES.getValue(buffer.readInt()));
return new AndroidFeaturePacket(is_added, feature); return new AndroidFeaturePacket(is_added, feature);
} }

View File

@ -20,12 +20,12 @@ public record AndroidResearchPacket(AndroidResearchType<?> type, CompoundTag pay
} }
public void write(FriendlyByteBuf buffer) { public void write(FriendlyByteBuf buffer) {
buffer.writeInt(Registry.ANDROID_RESEARCH().getID(type)); buffer.writeInt(Registry.ANDROID_RESEARCH.getID(type));
buffer.writeNbt(payload); buffer.writeNbt(payload);
} }
public static AndroidResearchPacket read(FriendlyByteBuf buffer) { public static AndroidResearchPacket read(FriendlyByteBuf buffer) {
return new AndroidResearchPacket(Registry.ANDROID_RESEARCH().getValue(buffer.readInt()), buffer.readNbt()); return new AndroidResearchPacket(Registry.ANDROID_RESEARCH.getValue(buffer.readInt()), buffer.readNbt());
} }
public void play(Supplier<NetworkEvent.Context> context) { public void play(Supplier<NetworkEvent.Context> context) {

View File

@ -23,7 +23,7 @@ public record AndroidResearchRequestPacket(AndroidResearchType<?> research) {
} }
public void write(FriendlyByteBuf buffer) { public void write(FriendlyByteBuf buffer) {
buffer.writeInt(Registry.ANDROID_RESEARCH().getID(research)); buffer.writeInt(Registry.ANDROID_RESEARCH.getID(research));
} }
public void play(Supplier<NetworkEvent.Context> context) { public void play(Supplier<NetworkEvent.Context> context) {
@ -40,6 +40,6 @@ public record AndroidResearchRequestPacket(AndroidResearchType<?> research) {
} }
public static AndroidResearchRequestPacket read(FriendlyByteBuf buffer) { public static AndroidResearchRequestPacket read(FriendlyByteBuf buffer) {
return new AndroidResearchRequestPacket(Objects.requireNonNull(Registry.ANDROID_RESEARCH().getValue(buffer.readInt()))); return new AndroidResearchRequestPacket(Objects.requireNonNull(Registry.ANDROID_RESEARCH.getValue(buffer.readInt())));
} }
} }