refactor and rename
This commit is contained in:
+3
-1
@@ -203,7 +203,9 @@ subprojects { p ->
|
||||
// SVG
|
||||
shadowMe("com.formdev:svgSalamander:${rootProject.svgSalamander_version}")
|
||||
shadowMe("com.formdev:flatlaf-extras:${rootProject.flatlaf_version}")
|
||||
|
||||
|
||||
// Netty
|
||||
shadowMe("io.netty:netty-all:4.1.94.Final")
|
||||
|
||||
// Remember, for lwjgl dependancies that arent included in Minecraft, you need to also need to add it to the ShadowJar thing
|
||||
shadowMe("org.lwjgl:lwjgl-jawt:3.2.2") {
|
||||
|
||||
+3
-3
@@ -20,9 +20,9 @@
|
||||
package com.seibel.distanthorizons.common.wrappers;
|
||||
|
||||
import com.seibel.distanthorizons.common.wrappers.gui.LangWrapper;
|
||||
import com.seibel.distanthorizons.common.wrappers.level.EnhancedServerManager;
|
||||
import com.seibel.distanthorizons.common.wrappers.level.KeyedClientLevelManager;
|
||||
import com.seibel.distanthorizons.common.wrappers.minecraft.MinecraftDedicatedServerWrapper;
|
||||
import com.seibel.distanthorizons.core.level.IEnhancedServerManager;
|
||||
import com.seibel.distanthorizons.core.level.IKeyedClientLevelManager;
|
||||
import com.seibel.distanthorizons.core.wrapperInterfaces.config.ILangWrapper;
|
||||
import com.seibel.distanthorizons.common.wrappers.minecraft.MinecraftClientWrapper;
|
||||
import com.seibel.distanthorizons.common.wrappers.minecraft.MinecraftRenderWrapper;
|
||||
@@ -51,7 +51,7 @@ public class DependencySetup {
|
||||
SingletonInjector.INSTANCE.bind(ILangWrapper.class, LangWrapper.INSTANCE);
|
||||
SingletonInjector.INSTANCE.bind(IVersionConstants.class, VersionConstants.INSTANCE);
|
||||
SingletonInjector.INSTANCE.bind(IWrapperFactory.class, WrapperFactory.INSTANCE);
|
||||
SingletonInjector.INSTANCE.bind(IEnhancedServerManager.class, EnhancedServerManager.INSTANCE);
|
||||
SingletonInjector.INSTANCE.bind(IKeyedClientLevelManager.class, KeyedClientLevelManager.INSTANCE);
|
||||
DependencySetupDoneCheck.isDone = true;
|
||||
}
|
||||
|
||||
|
||||
-33
@@ -1,33 +0,0 @@
|
||||
package com.seibel.distanthorizons.common.wrappers.level;
|
||||
|
||||
import com.seibel.distanthorizons.common.wrappers.world.ClientLevelWrapper;
|
||||
import com.seibel.distanthorizons.core.level.IServerEnhancedClientLevel;
|
||||
import com.seibel.distanthorizons.core.level.IEnhancedServerManager;
|
||||
import com.seibel.distanthorizons.core.wrapperInterfaces.world.ILevelWrapper;
|
||||
import net.minecraft.client.multiplayer.ClientLevel;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
public class EnhancedServerManager implements IEnhancedServerManager {
|
||||
|
||||
public static EnhancedServerManager INSTANCE = new EnhancedServerManager();
|
||||
|
||||
@Override
|
||||
public void registerServerEnhancedLevel(IServerEnhancedClientLevel clientLevel) {
|
||||
ClientLevelWrapper.setWrappedLevel(clientLevel);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public IServerEnhancedClientLevel getServerEnhancedLevel(ILevelWrapper level, String worldKey) {
|
||||
Objects.requireNonNull(level);
|
||||
Objects.requireNonNull(worldKey);
|
||||
return new ServerEnhancedClientLevel((ClientLevel) level.getWrappedMcObject(), worldKey);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setUseOverrideWrapper(boolean useOverrideWrapper) {
|
||||
ClientLevelWrapper.setUseOverrideWrapper(useOverrideWrapper);
|
||||
}
|
||||
}
|
||||
+54
@@ -0,0 +1,54 @@
|
||||
package com.seibel.distanthorizons.common.wrappers.level;
|
||||
|
||||
import com.seibel.distanthorizons.common.wrappers.world.ClientLevelWrapper;
|
||||
import com.seibel.distanthorizons.core.level.IServerKeyedClientLevel;
|
||||
import com.seibel.distanthorizons.core.level.IKeyedClientLevelManager;
|
||||
import com.seibel.distanthorizons.core.wrapperInterfaces.world.IClientLevelWrapper;
|
||||
import com.seibel.distanthorizons.core.wrapperInterfaces.world.ILevelWrapper;
|
||||
import net.minecraft.client.multiplayer.ClientLevel;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
public class KeyedClientLevelManager implements IKeyedClientLevelManager
|
||||
{
|
||||
public static final KeyedClientLevelManager INSTANCE = new KeyedClientLevelManager();
|
||||
|
||||
/** This is set and managed by the ClientApi for servers with support for DH. */
|
||||
private IServerKeyedClientLevel overrideWrapper = null;
|
||||
private boolean useOverrideWrapper = false;
|
||||
|
||||
|
||||
//=============//
|
||||
// constructor //
|
||||
//=============//
|
||||
|
||||
private KeyedClientLevelManager() { }
|
||||
|
||||
|
||||
|
||||
//======================//
|
||||
// level override logic //
|
||||
//======================//
|
||||
|
||||
@Override
|
||||
public void setServerKeyedLevel(IServerKeyedClientLevel clientLevel) { this.overrideWrapper = clientLevel; }
|
||||
@Override
|
||||
public IServerKeyedClientLevel getOverrideWrapper() { return this.overrideWrapper; }
|
||||
|
||||
@Override
|
||||
public IServerKeyedClientLevel getServerKeyedLevel(ILevelWrapper level, String serverLevelKey)
|
||||
{
|
||||
Objects.requireNonNull(level);
|
||||
Objects.requireNonNull(serverLevelKey);
|
||||
return new ServerKeyedClientLevel((ClientLevel) level.getWrappedMcObject(), serverLevelKey);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void setUseOverrideWrapper(boolean useOverrideWrapper) { this.useOverrideWrapper = useOverrideWrapper; }
|
||||
@Override
|
||||
public boolean getUseOverrideWrapper() { return this.useOverrideWrapper; }
|
||||
|
||||
|
||||
|
||||
}
|
||||
-20
@@ -1,20 +0,0 @@
|
||||
package com.seibel.distanthorizons.common.wrappers.level;
|
||||
|
||||
import com.seibel.distanthorizons.common.wrappers.world.ClientLevelWrapper;
|
||||
import com.seibel.distanthorizons.core.level.IServerEnhancedClientLevel;
|
||||
import net.minecraft.client.multiplayer.ClientLevel;
|
||||
|
||||
public class ServerEnhancedClientLevel extends ClientLevelWrapper implements IServerEnhancedClientLevel {
|
||||
|
||||
private final String serverKey;
|
||||
|
||||
public ServerEnhancedClientLevel(ClientLevel level, String serverKey) {
|
||||
super(level);
|
||||
this.serverKey = serverKey;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getServerWorldKey() {
|
||||
return this.serverKey;
|
||||
}
|
||||
}
|
||||
+21
@@ -0,0 +1,21 @@
|
||||
package com.seibel.distanthorizons.common.wrappers.level;
|
||||
|
||||
import com.seibel.distanthorizons.common.wrappers.world.ClientLevelWrapper;
|
||||
import com.seibel.distanthorizons.core.level.IServerKeyedClientLevel;
|
||||
import net.minecraft.client.multiplayer.ClientLevel;
|
||||
|
||||
public class ServerKeyedClientLevel extends ClientLevelWrapper implements IServerKeyedClientLevel
|
||||
{
|
||||
/** A unique identifier (generally the level's name) for differentiating multiverse levels */
|
||||
private final String serverLevelKey;
|
||||
|
||||
public ServerKeyedClientLevel(ClientLevel level, String serverLevelKey)
|
||||
{
|
||||
super(level);
|
||||
this.serverLevelKey = serverLevelKey;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getServerLevelKey() { return this.serverLevelKey; }
|
||||
|
||||
}
|
||||
-26
@@ -1,26 +0,0 @@
|
||||
package com.seibel.distanthorizons.common.wrappers.minecraft;
|
||||
|
||||
import com.seibel.distanthorizons.core.wrapperInterfaces.minecraft.IFriendlyByteBuf;
|
||||
import net.minecraft.network.FriendlyByteBuf;
|
||||
|
||||
import java.nio.charset.Charset;
|
||||
|
||||
public class FriendlyByteBufWrapper implements IFriendlyByteBuf
|
||||
{
|
||||
private final FriendlyByteBuf buf;
|
||||
|
||||
public FriendlyByteBufWrapper(FriendlyByteBuf buf) {
|
||||
this.buf = buf;
|
||||
}
|
||||
|
||||
@Override
|
||||
public short readShort()
|
||||
{
|
||||
return buf.readShort();
|
||||
}
|
||||
|
||||
public CharSequence readCharSequence(int length, Charset charset)
|
||||
{
|
||||
return buf.readCharSequence(length, charset);
|
||||
}
|
||||
}
|
||||
+3
-4
@@ -180,7 +180,7 @@ public class MinecraftClientWrapper implements IMinecraftClientWrapper, IMinecra
|
||||
return null;
|
||||
}
|
||||
|
||||
return ClientLevelWrapper.getOriginalWrapper(mc.level);
|
||||
return ClientLevelWrapper.getWrapperIgnoringOverride(this.mc.level);
|
||||
}
|
||||
|
||||
/** Please move over to getInstallationDirectory() */
|
||||
@@ -263,7 +263,6 @@ public class MinecraftClientWrapper implements IMinecraftClientWrapper, IMinecra
|
||||
}
|
||||
|
||||
@Override
|
||||
public void execute(Runnable runnable) {
|
||||
mc.execute(runnable);
|
||||
}
|
||||
public void executeOnRenderThread(Runnable runnable) { this.mc.execute(runnable); }
|
||||
|
||||
}
|
||||
|
||||
+60
-60
@@ -8,6 +8,8 @@ import com.seibel.distanthorizons.common.wrappers.block.BlockStateWrapper;
|
||||
import com.seibel.distanthorizons.common.wrappers.block.cache.ClientBlockDetailMap;
|
||||
import com.seibel.distanthorizons.common.wrappers.chunk.ChunkWrapper;
|
||||
import com.seibel.distanthorizons.common.wrappers.minecraft.MinecraftClientWrapper;
|
||||
import com.seibel.distanthorizons.core.dependencyInjection.SingletonInjector;
|
||||
import com.seibel.distanthorizons.core.level.IKeyedClientLevelManager;
|
||||
import com.seibel.distanthorizons.core.logging.DhLoggerBuilder;
|
||||
import com.seibel.distanthorizons.core.pos.DhBlockPos;
|
||||
import com.seibel.distanthorizons.core.pos.DhChunkPos;
|
||||
@@ -28,59 +30,48 @@ import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
/**
|
||||
*
|
||||
* @version 2023-6-3
|
||||
*/
|
||||
public class ClientLevelWrapper implements IClientLevelWrapper
|
||||
{
|
||||
private static final Logger LOGGER = DhLoggerBuilder.getLogger(ClientLevelWrapper.class.getSimpleName());
|
||||
private static final ConcurrentHashMap<ClientLevel, ClientLevelWrapper>
|
||||
levelWrapperMap = new ConcurrentHashMap<>();
|
||||
|
||||
/**
|
||||
* This is set and managed by the ClientApi for servers with support for DH.
|
||||
*/
|
||||
private static IClientLevelWrapper overrideWrapper = null;
|
||||
private static boolean useOverrideWrapper = false;
|
||||
|
||||
public static void setWrappedLevel(IClientLevelWrapper wrapper) {
|
||||
overrideWrapper = wrapper;
|
||||
}
|
||||
|
||||
public static void setUseOverrideWrapper(boolean useOverrideWrapper) {
|
||||
ClientLevelWrapper.useOverrideWrapper = useOverrideWrapper;
|
||||
}
|
||||
|
||||
public static IClientLevelWrapper getWrapper(ClientLevel level) {
|
||||
if(useOverrideWrapper) {
|
||||
return overrideWrapper;
|
||||
}
|
||||
return getOriginalWrapper(level);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the original level wrapper, regardless of whether or not the server is overriding the
|
||||
* level wrapper.
|
||||
* @param level
|
||||
* @return
|
||||
*/
|
||||
public static IClientLevelWrapper getOriginalWrapper(ClientLevel level) {
|
||||
return levelWrapperMap.computeIfAbsent(level, ClientLevelWrapper::new);
|
||||
}
|
||||
public static void closeWrapper(ClientLevel level)
|
||||
{
|
||||
levelWrapperMap.remove(level);
|
||||
}
|
||||
|
||||
protected ClientLevelWrapper(ClientLevel level) {
|
||||
this.level = level;
|
||||
}
|
||||
|
||||
|
||||
final ClientLevel level;
|
||||
ClientBlockDetailMap blockMap = new ClientBlockDetailMap(this);
|
||||
@Nullable
|
||||
private static final ConcurrentHashMap<ClientLevel, ClientLevelWrapper> LEVEL_WRAPPER_BY_CLIENT_LEVEL = new ConcurrentHashMap<>();
|
||||
private static final IKeyedClientLevelManager KEYED_CLIENT_LEVEL_MANAGER = SingletonInjector.INSTANCE.get(IKeyedClientLevelManager.class);
|
||||
|
||||
private final ClientLevel level;
|
||||
private final ClientBlockDetailMap blockMap = new ClientBlockDetailMap(this);
|
||||
|
||||
|
||||
|
||||
//=============//
|
||||
// constructor //
|
||||
//=============//
|
||||
|
||||
protected ClientLevelWrapper(ClientLevel level) { this.level = level; }
|
||||
|
||||
|
||||
|
||||
//===============//
|
||||
// wrapper logic //
|
||||
//===============//
|
||||
|
||||
public static IClientLevelWrapper getWrapper(ClientLevel level)
|
||||
{
|
||||
// used if the client is connected to a server that defines the currently loaded level
|
||||
if (KEYED_CLIENT_LEVEL_MANAGER.getUseOverrideWrapper())
|
||||
{
|
||||
return KEYED_CLIENT_LEVEL_MANAGER.getOverrideWrapper();
|
||||
}
|
||||
|
||||
return getWrapperIgnoringOverride(level);
|
||||
}
|
||||
public static IClientLevelWrapper getWrapperIgnoringOverride(ClientLevel level)
|
||||
{
|
||||
return LEVEL_WRAPPER_BY_CLIENT_LEVEL.computeIfAbsent(level, ClientLevelWrapper::new);
|
||||
}
|
||||
|
||||
public static void closeLevel(ClientLevel level) { LEVEL_WRAPPER_BY_CLIENT_LEVEL.remove(level); }
|
||||
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public IServerLevelWrapper tryGetServerSideWrapper()
|
||||
{
|
||||
@@ -118,12 +109,18 @@ public class ClientLevelWrapper implements IClientLevelWrapper
|
||||
}
|
||||
}
|
||||
public static void cleanCheck() {
|
||||
if (!levelWrapperMap.isEmpty()) {
|
||||
LOGGER.warn("{} client levels havn't been freed!", levelWrapperMap.size());
|
||||
levelWrapperMap.clear();
|
||||
if (!LEVEL_WRAPPER_BY_CLIENT_LEVEL.isEmpty()) {
|
||||
LOGGER.warn("{} client levels havn't been freed!", LEVEL_WRAPPER_BY_CLIENT_LEVEL.size());
|
||||
LEVEL_WRAPPER_BY_CLIENT_LEVEL.clear();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
//====================//
|
||||
// base level methods //
|
||||
//====================//
|
||||
|
||||
@Override
|
||||
public int computeBaseColor(DhBlockPos pos, IBiomeWrapper biome, IBlockStateWrapper blockState) {
|
||||
return blockMap.getColor(((BlockStateWrapper)blockState).blockState,
|
||||
@@ -212,11 +209,14 @@ public class ClientLevelWrapper implements IClientLevelWrapper
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
if(level == null) {
|
||||
return "Wrapped{null}";
|
||||
}
|
||||
return "Wrapped{" + level.toString() + "@" + getDimensionType().getDimensionName() + "}";
|
||||
}
|
||||
public String toString()
|
||||
{
|
||||
if (this.level == null)
|
||||
{
|
||||
return "Wrapped{null}";
|
||||
}
|
||||
|
||||
return "Wrapped{" + this.level.toString() + "@" + this.getDimensionType().getDimensionName() + "}";
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+1
-1
Submodule coreSubProjects updated: 55f39996cb...2b0ee29a8c
@@ -2,7 +2,6 @@ package com.seibel.distanthorizons.fabric;
|
||||
|
||||
import com.seibel.distanthorizons.common.networking.Networking;
|
||||
import com.seibel.distanthorizons.common.wrappers.chunk.ChunkWrapper;
|
||||
import com.seibel.distanthorizons.common.wrappers.minecraft.FriendlyByteBufWrapper;
|
||||
import com.seibel.distanthorizons.common.wrappers.world.ClientLevelWrapper;
|
||||
import com.seibel.distanthorizons.common.wrappers.world.ServerLevelWrapper;
|
||||
import com.seibel.distanthorizons.common.wrappers.worldGeneration.BatchGenerationEnvironment;
|
||||
@@ -131,11 +130,11 @@ public class FabricServerProxy
|
||||
});
|
||||
// ServerChunkSaveEvent - Done in MixinChunkMap
|
||||
|
||||
ClientPlayNetworking.registerGlobalReceiver(new ResourceLocation("distant_horizons", "world_control"),
|
||||
(Minecraft client, ClientPacketListener handler, FriendlyByteBuf buf, PacketSender responseSender) ->
|
||||
{
|
||||
ClientApi.INSTANCE.serverMessageReceived(new FriendlyByteBufWrapper(buf));
|
||||
});
|
||||
ClientPlayNetworking.registerGlobalReceiver(new ResourceLocation("distant_horizons", "world_control"), // TODO move these strings into a constant somewhere
|
||||
(Minecraft client, ClientPacketListener handler, FriendlyByteBuf byteBuffer, PacketSender responseSender) ->
|
||||
{
|
||||
ClientApi.INSTANCE.serverMessageReceived(byteBuffer);
|
||||
});
|
||||
}
|
||||
|
||||
// This just exists here for testing purposes, it'll be removed in the future
|
||||
|
||||
Reference in New Issue
Block a user