Fix compilation for older versions
This commit is contained in:
+26
-3
@@ -1,16 +1,17 @@
|
||||
package com.seibel.distanthorizons.common;
|
||||
|
||||
import com.seibel.distanthorizons.core.network.messages.PluginMessageRegistry;
|
||||
import com.seibel.distanthorizons.core.network.plugin.PluginChannelMessage;
|
||||
import com.seibel.distanthorizons.core.network.protocol.INetworkObject;
|
||||
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 io.netty.buffer.ByteBufAllocator;
|
||||
import net.minecraft.network.FriendlyByteBuf;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.server.level.ServerPlayer;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.function.Consumer;
|
||||
import java.util.Objects;
|
||||
|
||||
public abstract class AbstractPluginPacketSender implements IPluginPacketSender
|
||||
{
|
||||
@@ -27,4 +28,26 @@ public abstract class AbstractPluginPacketSender implements IPluginPacketSender
|
||||
@Override public abstract void sendPluginPacketClient(PluginChannelMessage message);
|
||||
public abstract void sendPluginPacketServer(ServerPlayer serverPlayer, PluginChannelMessage message);
|
||||
|
||||
@Nullable
|
||||
public static PluginChannelMessage decodeMessage(FriendlyByteBuf in)
|
||||
{
|
||||
if (in.readShort() != ModInfo.PROTOCOL_VERSION)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
PluginChannelMessage message = PluginMessageRegistry.INSTANCE.createMessage(in.readUnsignedShort());
|
||||
return INetworkObject.decodeToInstance(message, in);
|
||||
}
|
||||
|
||||
public static void encodeMessage(FriendlyByteBuf out, PluginChannelMessage message)
|
||||
{
|
||||
Objects.requireNonNull(message);
|
||||
|
||||
out.writeShort(ModInfo.PROTOCOL_VERSION);
|
||||
|
||||
out.writeShort(PluginMessageRegistry.INSTANCE.getMessageId(message));
|
||||
message.encode(out);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,5 +1,7 @@
|
||||
package com.seibel.distanthorizons.common;
|
||||
|
||||
#if MC_VER >= MC_1_20_6
|
||||
|
||||
import com.seibel.distanthorizons.core.network.messages.PluginMessageRegistry;
|
||||
import com.seibel.distanthorizons.core.network.plugin.PluginChannelMessage;
|
||||
import com.seibel.distanthorizons.core.network.protocol.INetworkObject;
|
||||
@@ -12,7 +14,9 @@ import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
public class CommonPacketPayload implements CustomPacketPayload
|
||||
public record CommonPacketPayload(
|
||||
@Nullable PluginChannelMessage message
|
||||
) implements CustomPacketPayload
|
||||
{
|
||||
public static final Type<CommonPacketPayload> TYPE = new Type<>(AbstractPluginPacketSender.WRAPPER_PACKET_RESOURCE);
|
||||
|
||||
@@ -23,15 +27,6 @@ public class CommonPacketPayload implements CustomPacketPayload
|
||||
return TYPE;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public PluginChannelMessage message;
|
||||
|
||||
|
||||
public CommonPacketPayload(@Nullable PluginChannelMessage message)
|
||||
{
|
||||
this.message = message;
|
||||
}
|
||||
|
||||
|
||||
public static class Codec implements StreamCodec<FriendlyByteBuf, CommonPacketPayload>
|
||||
{
|
||||
@@ -39,26 +34,17 @@ public class CommonPacketPayload implements CustomPacketPayload
|
||||
@Override
|
||||
public CommonPacketPayload decode(@NotNull FriendlyByteBuf in)
|
||||
{
|
||||
if (in.readShort() != ModInfo.PROTOCOL_VERSION)
|
||||
{
|
||||
return new CommonPacketPayload(null);
|
||||
}
|
||||
|
||||
PluginChannelMessage message = PluginMessageRegistry.INSTANCE.createMessage(in.readUnsignedShort());
|
||||
return new CommonPacketPayload(INetworkObject.decodeToInstance(message, in));
|
||||
return new CommonPacketPayload(AbstractPluginPacketSender.decodeMessage(in));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void encode(@NotNull FriendlyByteBuf out, CommonPacketPayload payload)
|
||||
{
|
||||
Objects.requireNonNull(payload.message);
|
||||
|
||||
out.writeShort(ModInfo.PROTOCOL_VERSION);
|
||||
|
||||
out.writeShort(PluginMessageRegistry.INSTANCE.getMessageId(payload.message));
|
||||
payload.message.encode(out);
|
||||
AbstractPluginPacketSender.encodeMessage(out, payload.message());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
@@ -20,7 +20,7 @@
|
||||
package com.seibel.distanthorizons.fabric;
|
||||
|
||||
import com.seibel.distanthorizons.common.AbstractModInitializer;
|
||||
import com.seibel.distanthorizons.common.CommonPacketPayload;
|
||||
import com.seibel.distanthorizons.common.AbstractPluginPacketSender;
|
||||
import com.seibel.distanthorizons.common.wrappers.McObjectConverter;
|
||||
import com.seibel.distanthorizons.common.wrappers.world.ClientLevelWrapper;
|
||||
import com.seibel.distanthorizons.core.api.internal.ClientApi;
|
||||
@@ -31,6 +31,7 @@ import com.seibel.distanthorizons.core.api.internal.SharedApi;
|
||||
import com.seibel.distanthorizons.core.dependencyInjection.ModAccessorInjector;
|
||||
import com.seibel.distanthorizons.core.dependencyInjection.SingletonInjector;
|
||||
import com.seibel.distanthorizons.core.logging.DhLoggerBuilder;
|
||||
import com.seibel.distanthorizons.core.network.plugin.PluginChannelMessage;
|
||||
import com.seibel.distanthorizons.core.wrapperInterfaces.minecraft.IMinecraftClientWrapper;
|
||||
import com.seibel.distanthorizons.core.wrapperInterfaces.modAccessor.ISodiumAccessor;
|
||||
import com.seibel.distanthorizons.core.wrapperInterfaces.world.IClientLevelWrapper;
|
||||
@@ -44,16 +45,23 @@ import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking;
|
||||
import net.fabricmc.fabric.api.client.rendering.v1.WorldRenderEvents;
|
||||
import net.fabricmc.fabric.api.event.player.AttackBlockCallback;
|
||||
import net.fabricmc.fabric.api.event.player.UseBlockCallback;
|
||||
import net.fabricmc.fabric.api.networking.v1.PayloadTypeRegistry;
|
||||
import net.fabricmc.fabric.api.networking.v1.PacketSender;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.gui.screens.TitleScreen;
|
||||
|
||||
#if MC_VER >= MC_1_20_6
|
||||
import com.seibel.distanthorizons.common.CommonPacketPayload;
|
||||
import net.fabricmc.fabric.api.networking.v1.PayloadTypeRegistry;
|
||||
#endif
|
||||
|
||||
#if MC_VER < MC_1_19_4
|
||||
import java.nio.FloatBuffer;
|
||||
#endif
|
||||
import java.util.HashSet;
|
||||
|
||||
import net.minecraft.client.multiplayer.ClientLevel;
|
||||
import net.minecraft.client.multiplayer.ClientPacketListener;
|
||||
import net.minecraft.network.FriendlyByteBuf;
|
||||
import net.minecraft.world.InteractionResult;
|
||||
import net.minecraft.world.level.chunk.ChunkAccess;
|
||||
import net.minecraft.world.phys.HitResult;
|
||||
@@ -224,16 +232,27 @@ public class FabricClientProxy implements AbstractModInitializer.IEventProxy
|
||||
// networking event //
|
||||
//==================//
|
||||
|
||||
#if MC_VER >= MC_1_20_6
|
||||
PayloadTypeRegistry.playC2S().register(CommonPacketPayload.TYPE, new CommonPacketPayload.Codec());
|
||||
PayloadTypeRegistry.playS2C().register(CommonPacketPayload.TYPE, new CommonPacketPayload.Codec());
|
||||
ClientPlayNetworking.registerGlobalReceiver(CommonPacketPayload.TYPE, (payload, context) ->
|
||||
{
|
||||
if (payload.message == null)
|
||||
if (payload.message() == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
ClientApi.INSTANCE.pluginMessageReceived(payload.message);
|
||||
ClientApi.INSTANCE.pluginMessageReceived(payload.message());
|
||||
});
|
||||
#else
|
||||
ClientPlayNetworking.registerGlobalReceiver(AbstractPluginPacketSender.PLUGIN_CHANNEL_RESOURCE, (client, handler, buffer, packetSender) ->
|
||||
{
|
||||
PluginChannelMessage message = AbstractPluginPacketSender.decodeMessage(buffer);
|
||||
if (message != null)
|
||||
{
|
||||
ClientApi.INSTANCE.pluginMessageReceived(message);
|
||||
}
|
||||
});
|
||||
#endif
|
||||
}
|
||||
|
||||
public void onKeyInput()
|
||||
|
||||
+18
-1
@@ -1,24 +1,41 @@
|
||||
package com.seibel.distanthorizons.fabric;
|
||||
|
||||
import com.seibel.distanthorizons.common.AbstractPluginPacketSender;
|
||||
import com.seibel.distanthorizons.common.CommonPacketPayload;
|
||||
import com.seibel.distanthorizons.core.network.plugin.PluginChannelMessage;
|
||||
import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking;
|
||||
import net.fabricmc.fabric.api.networking.v1.PacketByteBufs;
|
||||
import net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking;
|
||||
import net.minecraft.network.FriendlyByteBuf;
|
||||
import net.minecraft.server.level.ServerPlayer;
|
||||
|
||||
#if MC_VER >= MC_1_20_6
|
||||
import com.seibel.distanthorizons.common.CommonPacketPayload;
|
||||
#endif
|
||||
|
||||
public class FabricPluginPacketSender extends AbstractPluginPacketSender
|
||||
{
|
||||
@Override
|
||||
public void sendPluginPacketClient(PluginChannelMessage message)
|
||||
{
|
||||
#if MC_VER >= MC_1_20_6
|
||||
ClientPlayNetworking.send(new CommonPacketPayload(message));
|
||||
#else
|
||||
FriendlyByteBuf buffer = PacketByteBufs.create();
|
||||
AbstractPluginPacketSender.encodeMessage(buffer, message);
|
||||
ClientPlayNetworking.send(PLUGIN_CHANNEL_RESOURCE, buffer);
|
||||
#endif
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sendPluginPacketServer(ServerPlayer serverPlayer, PluginChannelMessage message)
|
||||
{
|
||||
#if MC_VER >= MC_1_20_6
|
||||
ServerPlayNetworking.send(serverPlayer, new CommonPacketPayload(message));
|
||||
#else
|
||||
FriendlyByteBuf buffer = PacketByteBufs.create();
|
||||
AbstractPluginPacketSender.encodeMessage(buffer, message);
|
||||
ServerPlayNetworking.send(serverPlayer, PLUGIN_CHANNEL_RESOURCE, buffer);
|
||||
#endif
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,14 +1,16 @@
|
||||
package com.seibel.distanthorizons.fabric;
|
||||
|
||||
import com.seibel.distanthorizons.common.AbstractModInitializer;
|
||||
import com.seibel.distanthorizons.common.CommonPacketPayload;
|
||||
import com.seibel.distanthorizons.common.AbstractPluginPacketSender;
|
||||
import com.seibel.distanthorizons.common.wrappers.chunk.ChunkWrapper;
|
||||
import com.seibel.distanthorizons.common.wrappers.misc.ServerPlayerWrapper;
|
||||
import com.seibel.distanthorizons.common.wrappers.world.ClientLevelWrapper;
|
||||
import com.seibel.distanthorizons.common.wrappers.world.ServerLevelWrapper;
|
||||
import com.seibel.distanthorizons.common.wrappers.worldGeneration.BatchGenerationEnvironment;
|
||||
import com.seibel.distanthorizons.core.api.internal.ClientApi;
|
||||
import com.seibel.distanthorizons.core.api.internal.ServerApi;
|
||||
import com.seibel.distanthorizons.core.logging.DhLoggerBuilder;
|
||||
import com.seibel.distanthorizons.core.network.plugin.PluginChannelMessage;
|
||||
import com.seibel.distanthorizons.core.wrapperInterfaces.world.IClientLevelWrapper;
|
||||
import com.seibel.distanthorizons.core.wrapperInterfaces.world.ILevelWrapper;
|
||||
import net.fabricmc.fabric.api.entity.event.v1.ServerEntityWorldChangeEvents;
|
||||
@@ -16,7 +18,6 @@ import net.fabricmc.fabric.api.event.lifecycle.v1.ServerChunkEvents;
|
||||
import net.fabricmc.fabric.api.event.lifecycle.v1.ServerLifecycleEvents;
|
||||
import net.fabricmc.fabric.api.event.lifecycle.v1.ServerTickEvents;
|
||||
import net.fabricmc.fabric.api.event.lifecycle.v1.ServerWorldEvents;
|
||||
import net.fabricmc.fabric.api.networking.v1.PayloadTypeRegistry;
|
||||
import net.fabricmc.fabric.api.networking.v1.ServerPlayConnectionEvents;
|
||||
import net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking;
|
||||
import net.minecraft.client.Minecraft;
|
||||
@@ -26,6 +27,11 @@ import net.minecraft.server.level.ServerLevel;
|
||||
import net.minecraft.server.level.ServerPlayer;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
|
||||
#if MC_VER >= MC_1_20_6
|
||||
import com.seibel.distanthorizons.common.CommonPacketPayload;
|
||||
import net.fabricmc.fabric.api.networking.v1.PayloadTypeRegistry;
|
||||
#endif
|
||||
|
||||
import java.util.function.Supplier;
|
||||
|
||||
/**
|
||||
@@ -156,16 +162,27 @@ public class FabricServerProxy implements AbstractModInitializer.IEventProxy
|
||||
|
||||
if (this.isDedicated)
|
||||
{
|
||||
#if MC_VER >= MC_1_20_6
|
||||
PayloadTypeRegistry.playC2S().register(CommonPacketPayload.TYPE, new CommonPacketPayload.Codec());
|
||||
PayloadTypeRegistry.playS2C().register(CommonPacketPayload.TYPE, new CommonPacketPayload.Codec());
|
||||
ServerPlayNetworking.registerGlobalReceiver(CommonPacketPayload.TYPE, (payload, context) ->
|
||||
{
|
||||
if (payload.message == null)
|
||||
if (payload.message() == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
ServerApi.INSTANCE.pluginMessageReceived(ServerPlayerWrapper.getWrapper(context.player()), payload.message);
|
||||
ServerApi.INSTANCE.pluginMessageReceived(ServerPlayerWrapper.getWrapper(context.player()), payload.message());
|
||||
});
|
||||
#else
|
||||
ServerPlayNetworking.registerGlobalReceiver(AbstractPluginPacketSender.PLUGIN_CHANNEL_RESOURCE, (server, serverPlayer, handler, buffer, packetSender) ->
|
||||
{
|
||||
PluginChannelMessage message = AbstractPluginPacketSender.decodeMessage(buffer);
|
||||
if (message != null)
|
||||
{
|
||||
ClientApi.INSTANCE.pluginMessageReceived(message);
|
||||
}
|
||||
});
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
package com.seibel.distanthorizons.forge;
|
||||
|
||||
import com.seibel.distanthorizons.common.AbstractPluginPacketSender;
|
||||
import com.seibel.distanthorizons.common.wrappers.misc.ServerPlayerWrapper;
|
||||
import com.seibel.distanthorizons.common.wrappers.network.AbstractPluginPacketSender;
|
||||
import com.seibel.distanthorizons.core.network.plugin.PluginChannelMessage;
|
||||
import com.seibel.distanthorizons.core.wrapperInterfaces.misc.IServerPlayerWrapper;
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import net.minecraft.network.FriendlyByteBuf;
|
||||
@@ -46,42 +47,48 @@ public class ForgePluginPacketSender extends AbstractPluginPacketSender
|
||||
);
|
||||
#endif
|
||||
|
||||
public static void setPacketHandler(Consumer<ByteBuf> consumer)
|
||||
public static void setPacketHandler(Consumer<PluginChannelMessage> consumer)
|
||||
{
|
||||
setPacketHandler((player, buffer) -> consumer.accept(buffer));
|
||||
}
|
||||
public static void setPacketHandler(BiConsumer<IServerPlayerWrapper, ByteBuf> consumer)
|
||||
public static void setPacketHandler(BiConsumer<IServerPlayerWrapper, PluginChannelMessage> consumer)
|
||||
{
|
||||
#if MC_VER >= MC_1_20_2
|
||||
PLUGIN_CHANNEL.messageBuilder(FriendlyByteBuf.class, 0)
|
||||
.encoder((buffer, mcBuffer) -> mcBuffer.writeBytes(buffer))
|
||||
.decoder(FriendlyByteBuf::new)
|
||||
.consumerNetworkThread((buffer, context) ->
|
||||
PLUGIN_CHANNEL.messageBuilder(PluginChannelMessage.class, 0)
|
||||
.encoder((message, out) -> AbstractPluginPacketSender.encodeMessage(out, message))
|
||||
.decoder(AbstractPluginPacketSender::decodeMessage)
|
||||
.consumerNetworkThread((message, context) ->
|
||||
{
|
||||
if (context.getSender() != null)
|
||||
if (message != null)
|
||||
{
|
||||
consumer.accept(ServerPlayerWrapper.getWrapper(context.getSender()), buffer);
|
||||
}
|
||||
else
|
||||
{
|
||||
consumer.accept(null, buffer);
|
||||
if (context.getSender() != null)
|
||||
{
|
||||
consumer.accept(ServerPlayerWrapper.getWrapper(context.getSender()), message);
|
||||
}
|
||||
else
|
||||
{
|
||||
consumer.accept(null, message);
|
||||
}
|
||||
}
|
||||
context.setPacketHandled(true);
|
||||
})
|
||||
.add();
|
||||
#else // < 1.20.2
|
||||
PLUGIN_CHANNEL.registerMessage(0, FriendlyByteBuf.class,
|
||||
(buffer, mcBuffer) -> mcBuffer.writeBytes(buffer),
|
||||
FriendlyByteBuf::new,
|
||||
(buffer, context) ->
|
||||
PLUGIN_CHANNEL.registerMessage(0, PluginChannelMessage.class,
|
||||
(message, out) -> AbstractPluginPacketSender.encodeMessage(out, message),
|
||||
AbstractPluginPacketSender::decodeMessage,
|
||||
(message, context) ->
|
||||
{
|
||||
if (context.get().getSender() != null)
|
||||
if (message != null)
|
||||
{
|
||||
consumer.accept(ServerPlayerWrapper.getWrapper(context.get().getSender()), buffer);
|
||||
}
|
||||
else
|
||||
{
|
||||
consumer.accept(null, buffer);
|
||||
if (context.get().getSender() != null)
|
||||
{
|
||||
consumer.accept(ServerPlayerWrapper.getWrapper(context.get().getSender()), message);
|
||||
}
|
||||
else
|
||||
{
|
||||
consumer.accept(null, message);
|
||||
}
|
||||
}
|
||||
context.get().setPacketHandled(true);
|
||||
}
|
||||
@@ -90,7 +97,7 @@ public class ForgePluginPacketSender extends AbstractPluginPacketSender
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void sendPluginPacketClient(FriendlyByteBuf buffer)
|
||||
public void sendPluginPacketClient(PluginChannelMessage buffer)
|
||||
{
|
||||
#if MC_VER >= MC_1_20_2
|
||||
PLUGIN_CHANNEL.send(buffer, PacketDistributor.SERVER.noArg());
|
||||
@@ -100,7 +107,7 @@ public class ForgePluginPacketSender extends AbstractPluginPacketSender
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void sendPluginPacketServer(ServerPlayer serverPlayer, FriendlyByteBuf buffer)
|
||||
public void sendPluginPacketServer(ServerPlayer serverPlayer, PluginChannelMessage buffer)
|
||||
{
|
||||
#if MC_VER >= MC_1_20_2
|
||||
PLUGIN_CHANNEL.send(buffer, PacketDistributor.PLAYER.with(serverPlayer));
|
||||
@@ -109,4 +116,4 @@ public class ForgePluginPacketSender extends AbstractPluginPacketSender
|
||||
#endif
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
+1
-1
@@ -48,7 +48,7 @@ versionStr=
|
||||
|
||||
# This defines what MC version Intellij will use for the preprocessor
|
||||
# and what version is used automatically by build and run commands
|
||||
mcVer=1.20.6
|
||||
mcVer=1.19.4
|
||||
|
||||
# Defines the maximum amount of memory Minecraft is allowed when run in a development environment
|
||||
#minecraftMemoryJavaArg="-Xmx4G"
|
||||
+1
-1
@@ -33,7 +33,7 @@ public class NeoforgePluginPacketSender extends AbstractPluginPacketSender
|
||||
.map(player -> player instanceof ServerPlayer ? (ServerPlayer) player : null)
|
||||
.map(ServerPlayerWrapper::getWrapper)
|
||||
.orElse(null);
|
||||
packetConsumer.accept(serverPlayer, payload.message);
|
||||
packetConsumer.accept(serverPlayer, payload.message());
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user