Clean up package structure

This commit is contained in:
s809
2024-06-26 23:57:37 +05:00
parent 8d110e22dd
commit a0efe44e8d
30 changed files with 135 additions and 150 deletions
@@ -24,7 +24,7 @@ import com.seibel.distanthorizons.api.enums.rendering.EDhApiRenderPass;
import com.seibel.distanthorizons.api.methods.events.abstractEvents.*;
import com.seibel.distanthorizons.api.methods.events.sharedParameterObjects.DhApiRenderParam;
import com.seibel.distanthorizons.core.config.Config;
import com.seibel.distanthorizons.core.network.plugin.PluginChannelMessage;
import com.seibel.distanthorizons.core.network.messages.NetworkMessage;
import com.seibel.distanthorizons.coreapi.ModInfo;
import com.seibel.distanthorizons.api.enums.rendering.EDhApiDebugRendering;
import com.seibel.distanthorizons.api.enums.rendering.EDhApiRendererMode;
@@ -330,7 +330,7 @@ public class ClientApi
// networking //
//============//
public void pluginMessageReceived(@NotNull PluginChannelMessage message)
public void pluginMessageReceived(@NotNull NetworkMessage message)
{
this.pluginChannelApi.session.tryHandleMessage(message);
}
@@ -5,9 +5,9 @@ import com.seibel.distanthorizons.core.dependencyInjection.SingletonInjector;
import com.seibel.distanthorizons.core.level.IKeyedClientLevelManager;
import com.seibel.distanthorizons.core.level.IServerKeyedClientLevel;
import com.seibel.distanthorizons.core.logging.ConfigBasedLogger;
import com.seibel.distanthorizons.core.network.messages.plugin.PluginCloseEvent;
import com.seibel.distanthorizons.core.network.messages.plugin.CurrentLevelKeyMessage;
import com.seibel.distanthorizons.core.network.plugin.PluginChannelSession;
import com.seibel.distanthorizons.core.network.event.PluginCloseEvent;
import com.seibel.distanthorizons.core.network.messages.base.CurrentLevelKeyMessage;
import com.seibel.distanthorizons.core.network.session.Session;
import com.seibel.distanthorizons.core.wrapperInterfaces.minecraft.IMinecraftClientWrapper;
import com.seibel.distanthorizons.core.wrapperInterfaces.world.IClientLevelWrapper;
import org.apache.logging.log4j.LogManager;
@@ -29,7 +29,7 @@ public class ClientPluginChannelApi
private final Consumer<IClientLevelWrapper> levelUnloadHandler;
private final Consumer<IServerKeyedClientLevel> multiverseLevelLoadHandler;
public PluginChannelSession session;
public Session session;
public boolean allowLevelAutoload()
@@ -45,7 +45,7 @@ public class ClientPluginChannelApi
this.multiverseLevelLoadHandler = levelLoadHandler;
}
public void onJoin(@NonNull PluginChannelSession session)
public void onJoin(@NonNull Session session)
{
Objects.requireNonNull(session);
this.session = session;
@@ -21,7 +21,7 @@ package com.seibel.distanthorizons.core.api.internal;
import com.seibel.distanthorizons.api.methods.events.abstractEvents.DhApiLevelLoadEvent;
import com.seibel.distanthorizons.api.methods.events.abstractEvents.DhApiLevelUnloadEvent;
import com.seibel.distanthorizons.core.network.plugin.PluginChannelMessage;
import com.seibel.distanthorizons.core.network.messages.NetworkMessage;
import com.seibel.distanthorizons.core.wrapperInterfaces.misc.IServerPlayerWrapper;
import com.seibel.distanthorizons.coreapi.DependencyInjection.ApiEventInjector;
import com.seibel.distanthorizons.core.world.AbstractDhWorld;
@@ -174,7 +174,7 @@ public class ServerApi
}
}
public void pluginMessageReceived(IServerPlayerWrapper player, @NotNull PluginChannelMessage message)
public void pluginMessageReceived(IServerPlayerWrapper player, @NotNull NetworkMessage message)
{
IDhServerWorld serverWorld = SharedApi.getIDhServerWorld();
if (serverWorld instanceof DhServerWorld) // TODO add support for DhClientServerWorld's (lan worlds) as well
@@ -31,11 +31,10 @@ import com.seibel.distanthorizons.core.generation.WorldRemoteGenerationQueue;
import com.seibel.distanthorizons.core.logging.DhLoggerBuilder;
import com.seibel.distanthorizons.core.multiplayer.client.ClientNetworkState;
import com.seibel.distanthorizons.core.multiplayer.client.FullDataRefreshQueue;
import com.seibel.distanthorizons.core.network.ScopedNetworkEventSource;
import com.seibel.distanthorizons.core.network.messages.plugin.fullData.FullDataPartialUpdateMessage;
import com.seibel.distanthorizons.core.network.event.ScopedNetworkEventSource;
import com.seibel.distanthorizons.core.network.messages.fullData.FullDataPartialUpdateMessage;
import com.seibel.distanthorizons.core.pos.DhBlockPos;
import com.seibel.distanthorizons.core.pos.DhBlockPos2D;
import com.seibel.distanthorizons.core.pos.DhSectionPos;
import com.seibel.distanthorizons.core.render.renderer.DebugRenderer;
import com.seibel.distanthorizons.core.wrapperInterfaces.block.IBlockStateWrapper;
import com.seibel.distanthorizons.core.wrapperInterfaces.minecraft.IMinecraftClientWrapper;
@@ -27,14 +27,13 @@ import com.seibel.distanthorizons.core.multiplayer.server.ServerPlayerState;
import com.seibel.distanthorizons.core.multiplayer.server.RemotePlayerConnectionHandler;
import com.seibel.distanthorizons.core.network.exceptions.InvalidLevelException;
import com.seibel.distanthorizons.core.network.exceptions.RequestRejectedException;
import com.seibel.distanthorizons.core.network.messages.plugin.ILevelRelatedMessage;
import com.seibel.distanthorizons.core.network.messages.plugin.base.CancelMessage;
import com.seibel.distanthorizons.core.network.messages.plugin.fullData.FullDataSourceRequestMessage;
import com.seibel.distanthorizons.core.network.messages.plugin.fullData.FullDataSourceResponseMessage;
import com.seibel.distanthorizons.core.network.messages.plugin.fullData.FullDataPartialUpdateMessage;
import com.seibel.distanthorizons.core.network.plugin.PluginChannelMessage;
import com.seibel.distanthorizons.core.network.plugin.PluginChannelSession;
import com.seibel.distanthorizons.core.network.plugin.TrackableMessage;
import com.seibel.distanthorizons.core.network.messages.ILevelRelatedMessage;
import com.seibel.distanthorizons.core.network.messages.requests.CancelMessage;
import com.seibel.distanthorizons.core.network.messages.fullData.FullDataSourceRequestMessage;
import com.seibel.distanthorizons.core.network.messages.fullData.FullDataSourceResponseMessage;
import com.seibel.distanthorizons.core.network.messages.fullData.FullDataPartialUpdateMessage;
import com.seibel.distanthorizons.core.network.messages.NetworkMessage;
import com.seibel.distanthorizons.core.network.messages.TrackableMessage;
import com.seibel.distanthorizons.core.pos.DhBlockPos2D;
import com.seibel.distanthorizons.core.logging.DhLoggerBuilder;
import com.seibel.distanthorizons.core.pos.DhSectionPos;
@@ -178,7 +177,7 @@ public class DhServerLevel extends AbstractDhLevel implements IDhServerLevel
public <T extends PluginChannelMessage> Consumer<T> currentLevelOnly(Consumer<T> next)
public <T extends NetworkMessage> Consumer<T> currentLevelOnly(Consumer<T> next)
{
return msg ->
{
@@ -10,9 +10,9 @@ import com.seibel.distanthorizons.core.logging.ConfigBasedSpamLogger;
import com.seibel.distanthorizons.core.network.exceptions.InvalidLevelException;
import com.seibel.distanthorizons.core.network.exceptions.RateLimitedException;
import com.seibel.distanthorizons.core.network.exceptions.RequestRejectedException;
import com.seibel.distanthorizons.core.network.exceptions.SessionClosedException;
import com.seibel.distanthorizons.core.network.messages.plugin.fullData.FullDataSourceRequestMessage;
import com.seibel.distanthorizons.core.network.messages.plugin.fullData.FullDataSourceResponseMessage;
import com.seibel.distanthorizons.core.network.session.SessionClosedException;
import com.seibel.distanthorizons.core.network.messages.fullData.FullDataSourceRequestMessage;
import com.seibel.distanthorizons.core.network.messages.fullData.FullDataSourceResponseMessage;
import com.seibel.distanthorizons.core.pos.DhBlockPos2D;
import com.seibel.distanthorizons.core.pos.DhSectionPos;
import com.seibel.distanthorizons.core.render.renderer.DebugRenderer;
@@ -2,13 +2,12 @@ package com.seibel.distanthorizons.core.multiplayer.client;
import com.seibel.distanthorizons.core.config.Config;
import com.seibel.distanthorizons.core.logging.ConfigBasedLogger;
import com.seibel.distanthorizons.core.logging.f3.F3Screen;
import com.seibel.distanthorizons.core.multiplayer.config.MultiplayerConfig;
import com.seibel.distanthorizons.core.multiplayer.config.MultiplayerConfigChangeListener;
import com.seibel.distanthorizons.core.network.ScopedNetworkEventSource;
import com.seibel.distanthorizons.core.network.messages.plugin.PluginCloseEvent;
import com.seibel.distanthorizons.core.network.messages.plugin.session.RemotePlayerConfigMessage;
import com.seibel.distanthorizons.core.network.plugin.PluginChannelSession;
import com.seibel.distanthorizons.core.network.event.ScopedNetworkEventSource;
import com.seibel.distanthorizons.core.network.event.PluginCloseEvent;
import com.seibel.distanthorizons.core.network.messages.base.RemotePlayerConfigMessage;
import com.seibel.distanthorizons.core.network.session.Session;
import org.apache.logging.log4j.LogManager;
import java.io.Closeable;
@@ -19,7 +18,7 @@ public class ClientNetworkState implements Closeable
protected static final ConfigBasedLogger LOGGER = new ConfigBasedLogger(LogManager.getLogger(),
() -> Config.Client.Advanced.Logging.logNetworkEvent.get());
private final PluginChannelSession session = new PluginChannelSession(null);
private final Session session = new Session(null);
private EServerSupportStatus serverSupportStatus = EServerSupportStatus.NONE;
@@ -32,7 +31,7 @@ public class ClientNetworkState implements Closeable
* Returns the client used by this instance. <p>
* If you need to subscribe to any packet events, create an instance of {@link ScopedNetworkEventSource} using the returned instance.
*/
public PluginChannelSession getSession() { return this.session; }
public Session getSession() { return this.session; }
/**
* Constructs a new instance.
@@ -1,7 +1,7 @@
package com.seibel.distanthorizons.core.multiplayer.config;
import com.google.common.base.MoreObjects;
import com.seibel.distanthorizons.core.network.protocol.INetworkObject;
import com.seibel.distanthorizons.core.network.INetworkObject;
import io.netty.buffer.ByteBuf;
public abstract class AbstractMultiplayerConfig implements INetworkObject
@@ -1,7 +1,7 @@
package com.seibel.distanthorizons.core.multiplayer.server;
import com.seibel.distanthorizons.core.network.plugin.PluginChannelMessage;
import com.seibel.distanthorizons.core.network.plugin.PluginChannelSession;
import com.seibel.distanthorizons.core.network.messages.NetworkMessage;
import com.seibel.distanthorizons.core.network.session.Session;
import com.seibel.distanthorizons.core.wrapperInterfaces.misc.IServerPlayerWrapper;
import java.util.Queue;
@@ -12,15 +12,15 @@ import java.util.concurrent.ConcurrentMap;
public class RemotePlayerConnectionHandler
{
private final ConcurrentMap<IServerPlayerWrapper, ServerPlayerState> connectedPlayers = new ConcurrentHashMap<>();
private final ConcurrentMap<IServerPlayerWrapper, Queue<PluginChannelMessage>> messageQueue = new ConcurrentHashMap<>();
private final ConcurrentMap<IServerPlayerWrapper, Queue<NetworkMessage>> messageQueue = new ConcurrentHashMap<>();
public void handlePluginMessage(IServerPlayerWrapper player, PluginChannelMessage message)
public void handlePluginMessage(IServerPlayerWrapper player, NetworkMessage message)
{
ServerPlayerState playerState = this.connectedPlayers.get(player);
if (playerState != null)
{
PluginChannelSession session = playerState.session;
Session session = playerState.session;
message.setSession(session);
session.tryHandleMessage(message);
}
@@ -45,11 +45,11 @@ public class RemotePlayerConnectionHandler
ServerPlayerState state = new ServerPlayerState(serverPlayer);
this.connectedPlayers.put(serverPlayer, state);
Queue<PluginChannelMessage> queuedMessages = this.messageQueue.get(serverPlayer);
Queue<NetworkMessage> queuedMessages = this.messageQueue.get(serverPlayer);
if (queuedMessages != null)
{
PluginChannelSession session = state.session;
for (PluginChannelMessage message : queuedMessages)
Session session = state.session;
for (NetworkMessage message : queuedMessages)
{
message.setSession(session);
session.tryHandleMessage(message);
@@ -3,12 +3,12 @@ package com.seibel.distanthorizons.core.multiplayer.server;
import com.seibel.distanthorizons.core.level.DhServerLevel;
import com.seibel.distanthorizons.core.multiplayer.config.MultiplayerConfig;
import com.seibel.distanthorizons.core.multiplayer.config.MultiplayerConfigChangeListener;
import com.seibel.distanthorizons.core.network.messages.plugin.CurrentLevelKeyMessage;
import com.seibel.distanthorizons.core.network.messages.plugin.session.RemotePlayerConfigMessage;
import com.seibel.distanthorizons.core.network.messages.plugin.PluginCloseEvent;
import com.seibel.distanthorizons.core.network.messages.base.CurrentLevelKeyMessage;
import com.seibel.distanthorizons.core.network.messages.base.RemotePlayerConfigMessage;
import com.seibel.distanthorizons.core.network.event.PluginCloseEvent;
import com.seibel.distanthorizons.core.network.exceptions.RateLimitedException;
import com.seibel.distanthorizons.core.network.messages.plugin.fullData.FullDataSourceRequestMessage;
import com.seibel.distanthorizons.core.network.plugin.PluginChannelSession;
import com.seibel.distanthorizons.core.network.messages.fullData.FullDataSourceRequestMessage;
import com.seibel.distanthorizons.core.network.session.Session;
import com.seibel.distanthorizons.core.util.ratelimiting.SupplierBasedRateAndConcurrencyLimiter;
import com.seibel.distanthorizons.core.wrapperInterfaces.misc.IServerPlayerWrapper;
import org.jetbrains.annotations.NotNull;
@@ -19,7 +19,7 @@ import static com.seibel.distanthorizons.core.config.Config.Client.Advanced.Mult
public class ServerPlayerState
{
public final PluginChannelSession session;
public final Session session;
public IServerPlayerWrapper serverPlayer() { return this.session.serverPlayer; }
@NotNull
@@ -41,7 +41,7 @@ public class ServerPlayerState
public ServerPlayerState(IServerPlayerWrapper serverPlayer)
{
this.session = new PluginChannelSession(serverPlayer);
this.session = new Session(serverPlayer);
this.session.registerHandler(RemotePlayerConfigMessage.class, remotePlayerConfigMessage ->
{
@@ -17,7 +17,7 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.seibel.distanthorizons.core.network.protocol;
package com.seibel.distanthorizons.core.network;
import io.netty.buffer.ByteBuf;
import org.jetbrains.annotations.Contract;
@@ -17,17 +17,16 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.seibel.distanthorizons.core.network;
package com.seibel.distanthorizons.core.network.event;
import com.seibel.distanthorizons.core.config.Config;
import com.seibel.distanthorizons.core.logging.ConfigBasedLogger;
import com.seibel.distanthorizons.core.network.exceptions.SessionClosedException;
import com.seibel.distanthorizons.core.network.messages.PluginMessageRegistry;
import com.seibel.distanthorizons.core.network.messages.plugin.base.CancelMessage;
import com.seibel.distanthorizons.core.network.messages.plugin.base.ExceptionMessage;
import com.seibel.distanthorizons.core.network.messages.plugin.PluginCloseEvent;
import com.seibel.distanthorizons.core.network.plugin.PluginChannelMessage;
import com.seibel.distanthorizons.core.network.plugin.TrackableMessage;
import com.seibel.distanthorizons.core.network.messages.NetworkMessage;
import com.seibel.distanthorizons.core.network.messages.TrackableMessage;
import com.seibel.distanthorizons.core.network.messages.MessageRegistry;
import com.seibel.distanthorizons.core.network.session.SessionClosedException;
import com.seibel.distanthorizons.core.network.messages.requests.CancelMessage;
import com.seibel.distanthorizons.core.network.messages.requests.ExceptionMessage;
import com.seibel.distanthorizons.coreapi.ModInfo;
import org.apache.logging.log4j.LogManager;
@@ -44,23 +43,23 @@ public abstract class NetworkEventSource
{
private static final ConfigBasedLogger LOGGER = new ConfigBasedLogger(LogManager.getLogger(),
() -> Config.Client.Advanced.Logging.logNetworkEvent.get());
protected final ConcurrentMap<Class<? extends PluginChannelMessage>, Set<Consumer<PluginChannelMessage>>> handlers = new ConcurrentHashMap<>();
protected final ConcurrentMap<Class<? extends NetworkMessage>, Set<Consumer<NetworkMessage>>> handlers = new ConcurrentHashMap<>();
private final ConcurrentMap<Long, FutureResponseData> pendingFutures = new ConcurrentHashMap<>();
protected boolean hasHandler(Class<? extends PluginChannelMessage> handlerClass)
protected boolean hasHandler(Class<? extends NetworkMessage> handlerClass)
{
return this.handlers.containsKey(handlerClass);
}
protected void handleMessage(PluginChannelMessage message)
protected void handleMessage(NetworkMessage message)
{
boolean handled = false;
Set<Consumer<PluginChannelMessage>> handlerList = this.handlers.get(message.getClass());
Set<Consumer<NetworkMessage>> handlerList = this.handlers.get(message.getClass());
if (handlerList != null)
{
for (Consumer<PluginChannelMessage> handler : handlerList)
for (Consumer<NetworkMessage> handler : handlerList)
{
handled = true;
handler.accept(message);
@@ -96,7 +95,7 @@ public abstract class NetworkEventSource
}
}
public <T extends PluginChannelMessage> void registerHandler(Class<T> handlerClass, Consumer<T> handlerImplementation)
public <T extends NetworkMessage> void registerHandler(Class<T> handlerClass, Consumer<T> handlerImplementation)
{
//noinspection unchecked
this.handlers.computeIfAbsent(handlerClass, missingHandlerClass ->
@@ -104,14 +103,14 @@ public abstract class NetworkEventSource
// Will throw if the handler class is not found
if (handlerClass != PluginCloseEvent.class)
{
PluginMessageRegistry.INSTANCE.getMessageId(handlerClass);
MessageRegistry.INSTANCE.getMessageId(handlerClass);
}
return new HashSet<>();
})
.add((Consumer<PluginChannelMessage>) handlerImplementation);
.add((Consumer<NetworkMessage>) handlerImplementation);
}
protected <T extends PluginChannelMessage> void removeHandler(Class<T> handlerClass, Consumer<T> handlerImplementation)
protected <T extends NetworkMessage> void removeHandler(Class<T> handlerClass, Consumer<T> handlerImplementation)
{
this.handlers.computeIfAbsent(handlerClass, missingHandlerClass -> new HashSet<>())
.remove(handlerImplementation);
@@ -1,13 +1,12 @@
package com.seibel.distanthorizons.core.network.messages.plugin;
package com.seibel.distanthorizons.core.network.event;
import com.seibel.distanthorizons.core.network.plugin.PluginChannelMessage;
import com.seibel.distanthorizons.core.network.protocol.INetworkObject;
import com.seibel.distanthorizons.core.network.messages.NetworkMessage;
import io.netty.buffer.ByteBuf;
/**
* This is not a "real" message, and only used to indicate a disconnection.
*/
public class PluginCloseEvent extends PluginChannelMessage
public class PluginCloseEvent extends NetworkMessage
{
@Override
public void encode(ByteBuf out) { throw new UnsupportedOperationException(this.getClass().getSimpleName() + " is not a real message, and cannot be sent."); }
@@ -17,10 +17,9 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.seibel.distanthorizons.core.network;
package com.seibel.distanthorizons.core.network.event;
import com.seibel.distanthorizons.core.network.plugin.PluginChannelMessage;
import com.seibel.distanthorizons.core.network.protocol.INetworkObject;
import com.seibel.distanthorizons.core.network.messages.NetworkMessage;
import java.util.function.Consumer;
@@ -36,7 +35,7 @@ public final class ScopedNetworkEventSource extends NetworkEventSource
}
@Override
public <T extends PluginChannelMessage> void registerHandler(Class<T> handlerClass, Consumer<T> handlerImplementation)
public <T extends NetworkMessage> void registerHandler(Class<T> handlerClass, Consumer<T> handlerImplementation)
{
if (this.isClosed)
{
@@ -55,7 +54,7 @@ public final class ScopedNetworkEventSource extends NetworkEventSource
public void close()
{
this.isClosed = true;
for (Class<? extends PluginChannelMessage> handlerClass : this.handlers.keySet())
for (Class<? extends NetworkMessage> handlerClass : this.handlers.keySet())
{
this.parent.removeHandler(handlerClass, this::handleMessage);
}
@@ -1,4 +1,4 @@
package com.seibel.distanthorizons.core.network.messages.plugin;
package com.seibel.distanthorizons.core.network.messages;
import com.seibel.distanthorizons.core.wrapperInterfaces.world.ILevelWrapper;
@@ -21,30 +21,29 @@ package com.seibel.distanthorizons.core.network.messages;
import com.google.common.collect.BiMap;
import com.google.common.collect.HashBiMap;
import com.seibel.distanthorizons.core.network.messages.plugin.CurrentLevelKeyMessage;
import com.seibel.distanthorizons.core.network.messages.plugin.base.CancelMessage;
import com.seibel.distanthorizons.core.network.messages.plugin.base.CloseReasonMessage;
import com.seibel.distanthorizons.core.network.messages.plugin.base.ExceptionMessage;
import com.seibel.distanthorizons.core.network.messages.plugin.fullData.FullDataPartialUpdateMessage;
import com.seibel.distanthorizons.core.network.messages.plugin.fullData.FullDataSourceRequestMessage;
import com.seibel.distanthorizons.core.network.messages.plugin.fullData.FullDataSourceResponseMessage;
import com.seibel.distanthorizons.core.network.messages.plugin.session.RemotePlayerConfigMessage;
import com.seibel.distanthorizons.core.network.plugin.PluginChannelMessage;
import com.seibel.distanthorizons.core.network.messages.base.CurrentLevelKeyMessage;
import com.seibel.distanthorizons.core.network.messages.base.RemotePlayerConfigMessage;
import com.seibel.distanthorizons.core.network.messages.requests.CancelMessage;
import com.seibel.distanthorizons.core.network.messages.base.CloseReasonMessage;
import com.seibel.distanthorizons.core.network.messages.requests.ExceptionMessage;
import com.seibel.distanthorizons.core.network.messages.fullData.FullDataPartialUpdateMessage;
import com.seibel.distanthorizons.core.network.messages.fullData.FullDataSourceRequestMessage;
import com.seibel.distanthorizons.core.network.messages.fullData.FullDataSourceResponseMessage;
import java.util.HashMap;
import java.util.Map;
import java.util.function.Supplier;
public class PluginMessageRegistry
public class MessageRegistry
{
public static final PluginMessageRegistry INSTANCE = new PluginMessageRegistry();
public static final MessageRegistry INSTANCE = new MessageRegistry();
private final Map<Integer, Supplier<? extends PluginChannelMessage>> idToSupplier = new HashMap<>();
private final BiMap<Class<? extends PluginChannelMessage>, Integer> classToId = HashBiMap.create();
private final Map<Integer, Supplier<? extends NetworkMessage>> idToSupplier = new HashMap<>();
private final BiMap<Class<? extends NetworkMessage>, Integer> classToId = HashBiMap.create();
private PluginMessageRegistry()
private MessageRegistry()
{
// Note: Messages must have parameterless constructors
@@ -69,14 +68,14 @@ public class PluginMessageRegistry
protected <T extends PluginChannelMessage> void registerMessage(Class<T> clazz, Supplier<T> supplier)
protected <T extends NetworkMessage> void registerMessage(Class<T> clazz, Supplier<T> supplier)
{
int id = this.idToSupplier.size() + 1;
this.idToSupplier.put(id, supplier);
this.classToId.put(clazz, id);
}
public PluginChannelMessage createMessage(int messageId) throws IllegalArgumentException
public NetworkMessage createMessage(int messageId) throws IllegalArgumentException
{
try
{
@@ -88,12 +87,12 @@ public class PluginMessageRegistry
}
}
public int getMessageId(PluginChannelMessage message)
public int getMessageId(NetworkMessage message)
{
return this.getMessageId(message.getClass());
}
public int getMessageId(Class<? extends PluginChannelMessage> messageClass)
public int getMessageId(Class<? extends NetworkMessage> messageClass)
{
try
{
@@ -1,22 +1,23 @@
package com.seibel.distanthorizons.core.network.plugin;
package com.seibel.distanthorizons.core.network.messages;
import com.google.common.base.MoreObjects;
import com.seibel.distanthorizons.core.network.protocol.INetworkObject;
import com.seibel.distanthorizons.core.network.INetworkObject;
import com.seibel.distanthorizons.core.network.session.Session;
import com.seibel.distanthorizons.core.wrapperInterfaces.misc.IServerPlayerWrapper;
public abstract class PluginChannelMessage implements INetworkObject
public abstract class NetworkMessage implements INetworkObject
{
public PluginChannelSession session = null;
public Session session = null;
public IServerPlayerWrapper serverPlayer() { return this.session.serverPlayer; }
public boolean warnWhenUnhandled() { return true; }
public PluginChannelSession getConnection()
public Session getConnection()
{
return this.session;
}
public void setSession(PluginChannelSession connection)
public void setSession(Session connection)
{
if (this.session != null)
{
@@ -17,20 +17,18 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.seibel.distanthorizons.core.network.plugin;
package com.seibel.distanthorizons.core.network.messages;
import com.google.common.base.MoreObjects;
import com.google.common.collect.MapMaker;
import com.seibel.distanthorizons.core.api.internal.SharedApi;
import com.seibel.distanthorizons.core.network.messages.plugin.base.ExceptionMessage;
import com.seibel.distanthorizons.core.network.messages.requests.ExceptionMessage;
import com.seibel.distanthorizons.core.world.EWorldEnvironment;
import io.netty.buffer.ByteBuf;
import java.util.Objects;
import java.util.concurrent.ConcurrentMap;
import java.util.concurrent.atomic.AtomicInteger;
public abstract class TrackableMessage extends PluginChannelMessage
public abstract class TrackableMessage extends NetworkMessage
{
private static final AtomicInteger lastId = new AtomicInteger();
// 32 bits - Context ID (not transmitted)
@@ -17,13 +17,13 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.seibel.distanthorizons.core.network.messages.plugin.base;
package com.seibel.distanthorizons.core.network.messages.base;
import com.google.common.base.MoreObjects;
import com.seibel.distanthorizons.core.network.plugin.PluginChannelMessage;
import com.seibel.distanthorizons.core.network.messages.NetworkMessage;
import io.netty.buffer.ByteBuf;
public class CloseReasonMessage extends PluginChannelMessage
public class CloseReasonMessage extends NetworkMessage
{
public String reason;
@@ -1,10 +1,10 @@
package com.seibel.distanthorizons.core.network.messages.plugin;
package com.seibel.distanthorizons.core.network.messages.base;
import com.google.common.base.MoreObjects;
import com.seibel.distanthorizons.core.network.plugin.PluginChannelMessage;
import com.seibel.distanthorizons.core.network.messages.NetworkMessage;
import io.netty.buffer.ByteBuf;
public class CurrentLevelKeyMessage extends PluginChannelMessage
public class CurrentLevelKeyMessage extends NetworkMessage
{
public String levelKey;
@@ -17,16 +17,16 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.seibel.distanthorizons.core.network.messages.plugin.session;
package com.seibel.distanthorizons.core.network.messages.base;
import com.google.common.base.MoreObjects;
import com.seibel.distanthorizons.core.multiplayer.config.AbstractMultiplayerConfig;
import com.seibel.distanthorizons.core.multiplayer.config.MultiplayerConfig;
import com.seibel.distanthorizons.core.network.plugin.PluginChannelMessage;
import com.seibel.distanthorizons.core.network.protocol.INetworkObject;
import com.seibel.distanthorizons.core.network.INetworkObject;
import com.seibel.distanthorizons.core.network.messages.NetworkMessage;
import io.netty.buffer.ByteBuf;
public class RemotePlayerConfigMessage extends PluginChannelMessage
public class RemotePlayerConfigMessage extends NetworkMessage
{
public AbstractMultiplayerConfig payload;
@@ -17,22 +17,22 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.seibel.distanthorizons.core.network.messages.plugin.fullData;
package com.seibel.distanthorizons.core.network.messages.fullData;
import com.google.common.base.MoreObjects;
import com.seibel.distanthorizons.api.enums.config.EDhApiDataCompressionMode;
import com.seibel.distanthorizons.core.config.Config;
import com.seibel.distanthorizons.core.dataObjects.fullData.sources.FullDataSourceV2;
import com.seibel.distanthorizons.core.network.messages.plugin.ILevelRelatedMessage;
import com.seibel.distanthorizons.core.network.plugin.PluginChannelMessage;
import com.seibel.distanthorizons.core.network.protocol.INetworkObject;
import com.seibel.distanthorizons.core.network.messages.ILevelRelatedMessage;
import com.seibel.distanthorizons.core.network.messages.NetworkMessage;
import com.seibel.distanthorizons.core.network.INetworkObject;
import com.seibel.distanthorizons.core.sql.dto.FullDataSourceV2DTO;
import com.seibel.distanthorizons.core.wrapperInterfaces.world.ILevelWrapper;
import io.netty.buffer.ByteBuf;
import java.io.IOException;
public class FullDataPartialUpdateMessage extends PluginChannelMessage implements ILevelRelatedMessage
public class FullDataPartialUpdateMessage extends NetworkMessage implements ILevelRelatedMessage
{
private String levelName;
@Override
@@ -17,13 +17,11 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.seibel.distanthorizons.core.network.messages.plugin.fullData;
package com.seibel.distanthorizons.core.network.messages.fullData;
import com.google.common.base.MoreObjects;
import com.seibel.distanthorizons.core.network.messages.plugin.ILevelRelatedMessage;
import com.seibel.distanthorizons.core.network.plugin.TrackableMessage;
import com.seibel.distanthorizons.core.network.protocol.INetworkObject;
import com.seibel.distanthorizons.core.pos.DhSectionPos;
import com.seibel.distanthorizons.core.network.messages.ILevelRelatedMessage;
import com.seibel.distanthorizons.core.network.messages.TrackableMessage;
import com.seibel.distanthorizons.core.wrapperInterfaces.world.ILevelWrapper;
import io.netty.buffer.ByteBuf;
@@ -17,14 +17,14 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.seibel.distanthorizons.core.network.messages.plugin.fullData;
package com.seibel.distanthorizons.core.network.messages.fullData;
import com.google.common.base.MoreObjects;
import com.seibel.distanthorizons.api.enums.config.EDhApiDataCompressionMode;
import com.seibel.distanthorizons.core.config.Config;
import com.seibel.distanthorizons.core.dataObjects.fullData.sources.FullDataSourceV2;
import com.seibel.distanthorizons.core.network.plugin.TrackableMessage;
import com.seibel.distanthorizons.core.network.protocol.INetworkObject;
import com.seibel.distanthorizons.core.network.messages.TrackableMessage;
import com.seibel.distanthorizons.core.network.INetworkObject;
import com.seibel.distanthorizons.core.sql.dto.FullDataSourceV2DTO;
import io.netty.buffer.ByteBuf;
import org.jetbrains.annotations.Nullable;
@@ -17,9 +17,9 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.seibel.distanthorizons.core.network.messages.plugin.base;
package com.seibel.distanthorizons.core.network.messages.requests;
import com.seibel.distanthorizons.core.network.plugin.TrackableMessage;
import com.seibel.distanthorizons.core.network.messages.TrackableMessage;
import io.netty.buffer.ByteBuf;
public class CancelMessage extends TrackableMessage
@@ -17,14 +17,14 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.seibel.distanthorizons.core.network.messages.plugin.base;
package com.seibel.distanthorizons.core.network.messages.requests;
import com.google.common.base.MoreObjects;
import com.seibel.distanthorizons.core.network.exceptions.InvalidLevelException;
import com.seibel.distanthorizons.core.network.exceptions.InvalidSectionPosException;
import com.seibel.distanthorizons.core.network.exceptions.RateLimitedException;
import com.seibel.distanthorizons.core.network.exceptions.RequestRejectedException;
import com.seibel.distanthorizons.core.network.plugin.TrackableMessage;
import com.seibel.distanthorizons.core.network.messages.TrackableMessage;
import io.netty.buffer.ByteBuf;
import java.util.ArrayList;
@@ -1,23 +1,21 @@
package com.seibel.distanthorizons.core.network.plugin;
package com.seibel.distanthorizons.core.network.session;
import com.seibel.distanthorizons.core.config.Config;
import com.seibel.distanthorizons.core.dependencyInjection.SingletonInjector;
import com.seibel.distanthorizons.core.logging.ConfigBasedLogger;
import com.seibel.distanthorizons.core.network.NetworkEventSource;
import com.seibel.distanthorizons.core.network.messages.PluginMessageRegistry;
import com.seibel.distanthorizons.core.network.messages.plugin.PluginCloseEvent;
import com.seibel.distanthorizons.core.network.event.NetworkEventSource;
import com.seibel.distanthorizons.core.network.event.PluginCloseEvent;
import com.seibel.distanthorizons.core.network.messages.NetworkMessage;
import com.seibel.distanthorizons.core.network.messages.TrackableMessage;
import com.seibel.distanthorizons.core.wrapperInterfaces.misc.IPluginPacketSender;
import com.seibel.distanthorizons.core.wrapperInterfaces.misc.IServerPlayerWrapper;
import com.seibel.distanthorizons.coreapi.ModInfo;
import io.netty.buffer.ByteBuf;
import org.apache.logging.log4j.LogManager;
import org.jetbrains.annotations.Nullable;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.atomic.AtomicReference;
import java.util.function.Consumer;
public class PluginChannelSession extends NetworkEventSource
public class Session extends NetworkEventSource
{
private static final ConfigBasedLogger LOGGER = new ConfigBasedLogger(LogManager.getLogger(),
() -> Config.Client.Advanced.Logging.logNetworkEvent.get());
@@ -36,13 +34,13 @@ public class PluginChannelSession extends NetworkEventSource
@Nullable
public final IServerPlayerWrapper serverPlayer;
public PluginChannelSession(@Nullable IServerPlayerWrapper serverPlayer)
public Session(@Nullable IServerPlayerWrapper serverPlayer)
{
this.serverPlayer = serverPlayer;
}
public void tryHandleMessage(PluginChannelMessage message)
public void tryHandleMessage(NetworkMessage message)
{
if (this.closeReason.get() != null)
{
@@ -70,7 +68,7 @@ public class PluginChannelSession extends NetworkEventSource
return responseFuture;
}
public void sendMessage(PluginChannelMessage message)
public void sendMessage(NetworkMessage message)
{
LOGGER.debug("Sending message: {}", message);
@@ -1,4 +1,4 @@
package com.seibel.distanthorizons.core.network.exceptions;
package com.seibel.distanthorizons.core.network.session;
import java.io.IOException;
@@ -26,7 +26,7 @@ import com.seibel.distanthorizons.api.enums.worldGeneration.EDhApiWorldGeneratio
import com.seibel.distanthorizons.core.dataObjects.fullData.FullDataPointIdMap;
import com.seibel.distanthorizons.core.dataObjects.fullData.sources.FullDataSourceV2;
import com.seibel.distanthorizons.core.pos.DhSectionPos;
import com.seibel.distanthorizons.core.network.protocol.INetworkObject;
import com.seibel.distanthorizons.core.network.INetworkObject;
import com.seibel.distanthorizons.core.util.FullDataPointUtil;
import com.seibel.distanthorizons.core.util.LodUtil;
import com.seibel.distanthorizons.core.util.objects.DataCorruptedException;
@@ -1,14 +1,11 @@
package com.seibel.distanthorizons.core.wrapperInterfaces.misc;
import com.seibel.distanthorizons.core.network.plugin.PluginChannelMessage;
import com.seibel.distanthorizons.core.network.messages.NetworkMessage;
import com.seibel.distanthorizons.coreapi.interfaces.dependencyInjection.IBindable;
import io.netty.buffer.ByteBuf;
import java.util.function.Consumer;
public interface IPluginPacketSender extends IBindable
{
void sendPluginPacketClient(PluginChannelMessage message);
void sendPluginPacketServer(IServerPlayerWrapper serverPlayer, PluginChannelMessage message);
void sendPluginPacketClient(NetworkMessage message);
void sendPluginPacketServer(IServerPlayerWrapper serverPlayer, NetworkMessage message);
}