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");
Registry.createRegistry();
// force Registry static initializer to be called
Registry.dummy();
CREATIVE_TAB = new CreativeModeTab("otm") {
@Override

View File

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

View File

@ -167,7 +167,7 @@ public class AndroidResearchBuilder {
var list = new ArrayList<AndroidResearchType<?>>();
for (var entry : prerequisites) {
var get = Registry.ANDROID_RESEARCH().getValue(entry);
var get = Registry.ANDROID_RESEARCH.getValue(entry);
if (get != null) {
list.add(get);
@ -179,7 +179,7 @@ public class AndroidResearchBuilder {
resolved_preq = List.copyOf(list);
for (var entry : feature_results) {
var get = Registry.ANDROID_FEATURES().getValue(entry.id);
var get = Registry.ANDROID_FEATURES.getValue(entry.id);
if (get != null) {
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) {
var list = new ArrayList<AndroidResearchType<?>>();
for (var type : Registry.ANDROID_RESEARCH()) {
for (var type : Registry.ANDROID_RESEARCH) {
if (type.getBlockedBy().contains(this)) {
list.add(type);
}
@ -46,7 +46,7 @@ public class AndroidResearchType<T extends AndroidResearch> extends ForgeRegistr
if (unlocks == null) {
var list = new ArrayList<AndroidResearchType<?>>();
for (var type : Registry.ANDROID_RESEARCH()) {
for (var type : Registry.ANDROID_RESEARCH) {
if (type.getPrerequisites().contains(this)) {
list.add(type);
}

View File

@ -237,7 +237,7 @@ public class AndroidCapability implements ICapabilityProvider, IAndroidCapabilit
for (var _tag : features_nbt) {
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)) {
var feature = get_feature.factory(this);

View File

@ -82,7 +82,7 @@ public class AndroidCapabilityPlayer extends AndroidCapability {
for (var _tag : list) {
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) {
var instance = research.factory(this);

View File

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

View File

@ -26,7 +26,7 @@ public record AndroidFeaturePacket(boolean is_added, AndroidFeatureType<?> featu
public void write(FriendlyByteBuf buffer) {
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) {
@ -50,7 +50,7 @@ public record AndroidFeaturePacket(boolean is_added, AndroidFeatureType<?> featu
public static AndroidFeaturePacket read(FriendlyByteBuf buffer) {
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);
}

View File

@ -20,12 +20,12 @@ public record AndroidResearchPacket(AndroidResearchType<?> type, CompoundTag pay
}
public void write(FriendlyByteBuf buffer) {
buffer.writeInt(Registry.ANDROID_RESEARCH().getID(type));
buffer.writeInt(Registry.ANDROID_RESEARCH.getID(type));
buffer.writeNbt(payload);
}
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) {

View File

@ -23,7 +23,7 @@ public record AndroidResearchRequestPacket(AndroidResearchType<?> research) {
}
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) {
@ -40,6 +40,6 @@ public record AndroidResearchRequestPacket(AndroidResearchType<?> research) {
}
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())));
}
}