mirror of
https://github.com/SquidDev-CC/CC-Tweaked
synced 2025-10-26 11:27:38 +00:00
Update to latest Forge
This fixes the issue with DeferredRegister crashing on non-wrapped registries.
This commit is contained in:
@@ -4,7 +4,7 @@
|
|||||||
# MC version is specified in gradle.properties, as we need that in settings.gradle.
|
# MC version is specified in gradle.properties, as we need that in settings.gradle.
|
||||||
fabric-api = "0.68.1+1.19.3"
|
fabric-api = "0.68.1+1.19.3"
|
||||||
fabric-loader = "0.14.11"
|
fabric-loader = "0.14.11"
|
||||||
forge = "44.0.0"
|
forge = "44.0.18"
|
||||||
forgeSpi = "6.0.0"
|
forgeSpi = "6.0.0"
|
||||||
mixin = "0.8.5"
|
mixin = "0.8.5"
|
||||||
parchment = "2022.11.27"
|
parchment = "2022.11.27"
|
||||||
@@ -15,14 +15,13 @@ asm = "9.3"
|
|||||||
autoService = "1.0.1"
|
autoService = "1.0.1"
|
||||||
checkerFramework = "3.12.0"
|
checkerFramework = "3.12.0"
|
||||||
cobalt = "0.5.8"
|
cobalt = "0.5.8"
|
||||||
fastutil = "8.5.6"
|
fastutil = "8.5.9"
|
||||||
guava = "31.0.1-jre"
|
guava = "31.1-jre"
|
||||||
jetbrainsAnnotations = "23.0.0"
|
jetbrainsAnnotations = "23.0.0"
|
||||||
jsr305 = "3.0.2"
|
jsr305 = "3.0.2"
|
||||||
kotlin = "1.7.10"
|
kotlin = "1.7.10"
|
||||||
kotlin-coroutines = "1.6.0"
|
kotlin-coroutines = "1.6.0"
|
||||||
logback = "1.2.11"
|
netty = "4.1.82.Final"
|
||||||
netty = "4.1.77.Final"
|
|
||||||
nightConfig = "3.6.5"
|
nightConfig = "3.6.5"
|
||||||
slf4j = "1.7.36"
|
slf4j = "1.7.36"
|
||||||
|
|
||||||
@@ -107,7 +106,7 @@ jqwik-engine = { module = "net.jqwik:jqwik-engine", version.ref = "jqwik" }
|
|||||||
junit-jupiter-api = { module = "org.junit.jupiter:junit-jupiter-api", version.ref = "junit" }
|
junit-jupiter-api = { module = "org.junit.jupiter:junit-jupiter-api", version.ref = "junit" }
|
||||||
junit-jupiter-engine = { module = "org.junit.jupiter:junit-jupiter-engine", version.ref = "junit" }
|
junit-jupiter-engine = { module = "org.junit.jupiter:junit-jupiter-engine", version.ref = "junit" }
|
||||||
junit-jupiter-params = { module = "org.junit.jupiter:junit-jupiter-params", version.ref = "junit" }
|
junit-jupiter-params = { module = "org.junit.jupiter:junit-jupiter-params", version.ref = "junit" }
|
||||||
logback = { module = "ch.qos.logback:logback-classic", version.ref = "logback" }
|
slf4j-simple = { module = "org.slf4j:slf4j-simple", version.ref = "slf4j" }
|
||||||
|
|
||||||
# Build tools
|
# Build tools
|
||||||
cctJavadoc = { module = "cc.tweaked:cct-javadoc", version.ref = "cctJavadoc" }
|
cctJavadoc = { module = "cc.tweaked:cct-javadoc", version.ref = "cctJavadoc" }
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ dependencies {
|
|||||||
|
|
||||||
testImplementation(libs.bundles.test)
|
testImplementation(libs.bundles.test)
|
||||||
testRuntimeOnly(libs.bundles.testRuntime)
|
testRuntimeOnly(libs.bundles.testRuntime)
|
||||||
testRuntimeOnly(libs.logback)
|
testRuntimeOnly(libs.slf4j.simple)
|
||||||
}
|
}
|
||||||
|
|
||||||
tasks.processResources {
|
tasks.processResources {
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ class TestHttpApi {
|
|||||||
@JvmStatic
|
@JvmStatic
|
||||||
@BeforeAll
|
@BeforeAll
|
||||||
fun before() {
|
fun before() {
|
||||||
CoreConfig.httpRules = listOf(AddressRule.parse("*", null, Action.ALLOW.toPartial()))
|
CoreConfig.httpRules = listOf(AddressRule.parse("*", OptionalInt.empty(), Action.ALLOW.toPartial()))
|
||||||
}
|
}
|
||||||
|
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
@@ -29,8 +29,8 @@ class TestHttpApi {
|
|||||||
fun after() {
|
fun after() {
|
||||||
CoreConfig.httpRules = Collections.unmodifiableList(
|
CoreConfig.httpRules = Collections.unmodifiableList(
|
||||||
listOf(
|
listOf(
|
||||||
AddressRule.parse("\$private", null, Action.DENY.toPartial()),
|
AddressRule.parse("\$private", OptionalInt.empty(), Action.DENY.toPartial()),
|
||||||
AddressRule.parse("*", null, Action.ALLOW.toPartial()),
|
AddressRule.parse("*", OptionalInt.empty(), Action.ALLOW.toPartial()),
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -65,9 +65,10 @@ import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
|
|||||||
import net.minecraftforge.items.wrapper.InvWrapper;
|
import net.minecraftforge.items.wrapper.InvWrapper;
|
||||||
import net.minecraftforge.items.wrapper.SidedInvWrapper;
|
import net.minecraftforge.items.wrapper.SidedInvWrapper;
|
||||||
import net.minecraftforge.network.NetworkHooks;
|
import net.minecraftforge.network.NetworkHooks;
|
||||||
|
import net.minecraftforge.registries.DeferredRegister;
|
||||||
import net.minecraftforge.registries.ForgeRegistry;
|
import net.minecraftforge.registries.ForgeRegistry;
|
||||||
import net.minecraftforge.registries.RegisterEvent;
|
|
||||||
import net.minecraftforge.registries.RegistryManager;
|
import net.minecraftforge.registries.RegistryManager;
|
||||||
|
import net.minecraftforge.registries.RegistryObject;
|
||||||
|
|
||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
@@ -99,7 +100,7 @@ public class PlatformHelperImpl implements PlatformHelper {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T> RegistrationHelper<T> createRegistrationHelper(ResourceKey<Registry<T>> registry) {
|
public <T> RegistrationHelper<T> createRegistrationHelper(ResourceKey<Registry<T>> registry) {
|
||||||
return new RegistrationHelperImpl<>(registry);
|
return new RegistrationHelperImpl<>(DeferredRegister.create(registry, ComputerCraftAPI.MOD_ID));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
@@ -366,55 +367,27 @@ public class PlatformHelperImpl implements PlatformHelper {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: Switch back to using a DeferredRegistry: Right now it's broken for some registry types.
|
private record RegistrationHelperImpl<T>(DeferredRegister<T> registry) implements RegistrationHelper<T> {
|
||||||
private static final class RegistrationHelperImpl<T> implements RegistrationHelper<T> {
|
|
||||||
private final ResourceKey<Registry<T>> registry;
|
|
||||||
private final List<RegistryEntryImpl<? extends T>> entries = new ArrayList<>();
|
|
||||||
|
|
||||||
private RegistrationHelperImpl(ResourceKey<Registry<T>> registry) {
|
|
||||||
this.registry = registry;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <U extends T> RegistryEntry<U> register(String name, Supplier<U> create) {
|
public <U extends T> RegistryEntry<U> register(String name, Supplier<U> create) {
|
||||||
var entry = new RegistryEntryImpl<>(new ResourceLocation(ComputerCraftAPI.MOD_ID, name), create);
|
return new RegistryEntryImpl<>(registry().register(name, create));
|
||||||
entries.add(entry);
|
|
||||||
return entry;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void register() {
|
public void register() {
|
||||||
FMLJavaModLoadingContext.get().getModEventBus().addListener((RegisterEvent event) -> {
|
registry().register(FMLJavaModLoadingContext.get().getModEventBus());
|
||||||
event.register(registry, helper -> {
|
|
||||||
for (var object : entries) object.register(helper);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static final class RegistryEntryImpl<T> implements RegistryEntry<T> {
|
private record RegistryEntryImpl<T>(RegistryObject<T> object) implements RegistryEntry<T> {
|
||||||
private final ResourceLocation id;
|
|
||||||
private final Supplier<T> supplier;
|
|
||||||
private @Nullable T instance;
|
|
||||||
|
|
||||||
RegistryEntryImpl(ResourceLocation id, Supplier<T> supplier) {
|
|
||||||
this.id = id;
|
|
||||||
this.supplier = supplier;
|
|
||||||
}
|
|
||||||
|
|
||||||
void register(RegisterEvent.RegisterHelper<? super T> registry) {
|
|
||||||
registry.register(id, instance = supplier.get());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ResourceLocation id() {
|
public ResourceLocation id() {
|
||||||
return id;
|
return object().getId();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public T get() {
|
public T get() {
|
||||||
if (instance == null) throw new IllegalStateException(id + " has not been constructed yet");
|
return object().get();
|
||||||
return instance;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user