Skip to content

Commit

Permalink
All: Attempt to fix all known bugs.
Browse files Browse the repository at this point in the history
  • Loading branch information
EdwinMindcraft committed Aug 19, 2022
1 parent 7604dce commit 7927c61
Show file tree
Hide file tree
Showing 4 changed files with 21 additions and 22 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,10 @@

import io.github.apace100.calio.resource.OrderedResourceListenerManager;
import io.github.edwinmindcraft.calio.api.CalioAPI;
import io.github.edwinmindcraft.calio.common.registry.CalioDynamicRegistryManager;
import net.minecraft.server.packs.PackType;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.client.event.ClientPlayerNetworkEvent;
import net.minecraftforge.client.event.RegisterClientReloadListenersEvent;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.common.Mod;
Expand All @@ -14,4 +16,9 @@ public class CalioClientEventHandler {
public void addClientResources(RegisterClientReloadListenersEvent event) {
OrderedResourceListenerManager.getInstance().addResources(PackType.CLIENT_RESOURCES, event::registerReloadListener);
}

@SubscribeEvent
public void onDisconnecting(ClientPlayerNetworkEvent.LoggingOut event) {
CalioDynamicRegistryManager.removeClientInstance();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,18 @@

import net.minecraft.client.Minecraft;
import net.minecraft.core.RegistryAccess;
import net.minecraftforge.server.ServerLifecycleHooks;
import org.jetbrains.annotations.Nullable;

public class ClientHelper {

public static boolean isServerContext(@Nullable RegistryAccess access) {
Minecraft instance = Minecraft.getInstance();
//This is wrong in a data context, and annotations are busted;
//noinspection ConstantConditions
if (instance == null) return true; // Data Context
if (instance.getConnection() == null) return true; // Outside a world
if (ServerLifecycleHooks.getCurrentServer() == null) return false; // No server.
return access != null && access != instance.getConnection().registryAccess();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ public static void onServerReload(AddReloadListenerEvent event) {
@SubscribeEvent
public static void onServerStopped(ServerStoppedEvent event) {
CalioAPI.LOGGER.info("Removing Dynamic Registries for: " + event.getServer());
CalioDynamicRegistryManager.removeInstance(event.getServer().registryAccess());
CalioDynamicRegistryManager.removeServerInstance();
}

@SubscribeEvent
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,13 +29,9 @@
import net.minecraft.server.packs.resources.ResourceManager;
import net.minecraft.util.GsonHelper;
import net.minecraft.util.profiling.ProfilerFiller;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.fml.DistExecutor;
import net.minecraftforge.fml.ModList;
import net.minecraftforge.fml.ModLoader;
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
import net.minecraftforge.network.PacketDistributor;
import org.apache.commons.lang3.Validate;
import org.apache.commons.lang3.tuple.Pair;
Expand All @@ -59,8 +55,6 @@
public class CalioDynamicRegistryManager implements ICalioDynamicRegistryManager {
private static final Gson GSON = new GsonBuilder().create();
private static final int FILE_SUFFIX_LENGTH = ".json".length();

private static final Map<RegistryAccess, CalioDynamicRegistryManager> INSTANCES = new ConcurrentHashMap<>();
private static CalioDynamicRegistryManager clientInstance = null;
private static CalioDynamicRegistryManager serverInstance = null;
private boolean lock;
Expand Down Expand Up @@ -184,33 +178,27 @@ public static boolean isServerContext(RegistryAccess access) {
}

public static CalioDynamicRegistryManager getInstance(RegistryAccess server) {
if (isServerContext(server))
return addInstance(server);
return isServerContext(server) ? getServerInstance() : getClientInstance();
}

public static CalioDynamicRegistryManager getClientInstance() {
if (clientInstance == null)
initializeClient();
clientInstance = new CalioDynamicRegistryManager();
return clientInstance;
}

private static CalioDynamicRegistryManager addInstance(RegistryAccess server) {
public static CalioDynamicRegistryManager getServerInstance() {
if (serverInstance == null)
serverInstance = new CalioDynamicRegistryManager();
return serverInstance;//INSTANCES.computeIfAbsent(server, s -> new CalioDynamicRegistryManager());
return serverInstance;
}

public static void removeInstance(RegistryAccess server) {
//INSTANCES.remove(server);
public static void removeServerInstance() {
serverInstance = null;
}

@OnlyIn(Dist.CLIENT)
public static void initializeClient() {
clientInstance = new CalioDynamicRegistryManager();
}

@OnlyIn(Dist.CLIENT)
public static void setClientInstance(CalioDynamicRegistryManager clientInstance) {
CalioDynamicRegistryManager.clientInstance = clientInstance;
public static void removeClientInstance() {
clientInstance = null;
}

public static CalioDynamicRegistryManager decode(FriendlyByteBuf buffer) {
Expand Down

0 comments on commit 7927c61

Please sign in to comment.