Fix compilation

This commit is contained in:
s809
2024-06-02 20:00:16 +05:00
parent 1429ae5434
commit 7dfe0e4c50
9 changed files with 89 additions and 151 deletions
@@ -1,5 +1,6 @@
package com.seibel.distanthorizons.common.wrappers.network;
package com.seibel.distanthorizons.common;
import com.seibel.distanthorizons.core.network.plugin.PluginChannelMessage;
import com.seibel.distanthorizons.core.wrapperInterfaces.misc.IPluginPacketSender;
import com.seibel.distanthorizons.core.wrapperInterfaces.misc.IServerPlayerWrapper;
import com.seibel.distanthorizons.coreapi.ModInfo;
@@ -16,39 +17,14 @@ public abstract class AbstractPluginPacketSender implements IPluginPacketSender
public static final ResourceLocation PLUGIN_CHANNEL_RESOURCE = new ResourceLocation(ModInfo.RESOURCE_NAMESPACE, ModInfo.PLUGIN_CHANNEL_PATH);
public static final ResourceLocation WRAPPER_PACKET_RESOURCE = new ResourceLocation(ModInfo.RESOURCE_NAMESPACE, ModInfo.WRAPPER_PACKET_PATH);
@Override
public final void sendPluginPacketClient(Consumer<ByteBuf> encoder)
{
FriendlyByteBuf buffer = this.createBuffer(encoder);
this.sendPluginPacketClient(buffer);
}
@Override
public final void sendPluginPacketServer(IServerPlayerWrapper serverPlayer, Consumer<ByteBuf> encoder)
public final void sendPluginPacketServer(IServerPlayerWrapper serverPlayer, PluginChannelMessage message)
{
FriendlyByteBuf buffer = this.createBuffer(encoder);
this.sendPluginPacketServer((ServerPlayer) serverPlayer.getWrappedMcObject(), buffer);
this.sendPluginPacketServer((ServerPlayer) serverPlayer.getWrappedMcObject(), message);
}
private FriendlyByteBuf createBuffer(Consumer<ByteBuf> encoder)
{
FriendlyByteBuf buffer = new FriendlyByteBuf(ByteBufAllocator.DEFAULT.buffer());
if (this.shouldAddForgePacketId())
{
buffer.writeByte(0);
}
encoder.accept(buffer);
return buffer;
}
protected boolean shouldAddForgePacketId()
{
return false;
}
protected abstract void sendPluginPacketClient(FriendlyByteBuf buffer);
protected abstract void sendPluginPacketServer(ServerPlayer serverPlayer, FriendlyByteBuf buffer);
@Override public abstract void sendPluginPacketClient(PluginChannelMessage message);
public abstract void sendPluginPacketServer(ServerPlayer serverPlayer, PluginChannelMessage message);
}
@@ -1,9 +1,9 @@
package com.seibel.distanthorizons.fabric;
package com.seibel.distanthorizons.common;
import com.seibel.distanthorizons.common.AbstractPluginPacketSender;
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.coreapi.ModInfo;
import net.minecraft.network.FriendlyByteBuf;
import net.minecraft.network.codec.StreamCodec;
import net.minecraft.network.protocol.common.custom.CustomPacketPayload;
@@ -12,9 +12,9 @@ import org.jetbrains.annotations.Nullable;
import java.util.Objects;
public class FabricPacketPayload implements CustomPacketPayload
public class CommonPacketPayload implements CustomPacketPayload
{
public static final Type<FabricPacketPayload> TYPE = new Type<>(AbstractPluginPacketSender.WRAPPER_PACKET_RESOURCE);
public static final Type<CommonPacketPayload> TYPE = new Type<>(AbstractPluginPacketSender.WRAPPER_PACKET_RESOURCE);
@NotNull
@Override
@@ -27,27 +27,36 @@ public class FabricPacketPayload implements CustomPacketPayload
public PluginChannelMessage message;
public FabricPacketPayload(@Nullable PluginChannelMessage message)
public CommonPacketPayload(@Nullable PluginChannelMessage message)
{
this.message = message;
}
public static class Codec implements StreamCodec<FriendlyByteBuf, FabricPacketPayload>
public static class Codec implements StreamCodec<FriendlyByteBuf, CommonPacketPayload>
{
@NotNull
@Override
public FabricPacketPayload decode(FriendlyByteBuf in)
public CommonPacketPayload decode(@NotNull FriendlyByteBuf in)
{
return new FabricPacketPayload(
INetworkObject.decodeToInstance(PluginMessageRegistry.INSTANCE.createMessage(in.readUnsignedShort()), 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));
}
@Override
public void encode(FriendlyByteBuf out, FabricPacketPayload payload)
public void encode(@NotNull FriendlyByteBuf out, CommonPacketPayload payload)
{
Objects.requireNonNull(payload.message).encode(out);
Objects.requireNonNull(payload.message);
out.writeShort(ModInfo.PROTOCOL_VERSION);
out.writeShort(PluginMessageRegistry.INSTANCE.getMessageId(payload.message));
payload.message.encode(out);
}
}
@@ -19,18 +19,15 @@
package com.seibel.distanthorizons.fabric;
import com.mojang.blaze3d.systems.RenderSystem;
import com.mojang.blaze3d.vertex.PoseStack;
import com.seibel.distanthorizons.common.AbstractModInitializer;
import com.seibel.distanthorizons.common.CommonPacketPayload;
import com.seibel.distanthorizons.common.wrappers.McObjectConverter;
import com.seibel.distanthorizons.common.wrappers.network.AbstractPluginPacketSender;
import com.seibel.distanthorizons.common.wrappers.world.ClientLevelWrapper;
import com.seibel.distanthorizons.core.api.internal.ClientApi;
import com.mojang.blaze3d.platform.InputConstants;
import com.seibel.distanthorizons.common.wrappers.chunk.ChunkWrapper;
import com.seibel.distanthorizons.core.api.internal.SharedApi;
import com.seibel.distanthorizons.core.config.Config;
import com.seibel.distanthorizons.core.dependencyInjection.ModAccessorInjector;
import com.seibel.distanthorizons.core.dependencyInjection.SingletonInjector;
import com.seibel.distanthorizons.core.logging.DhLoggerBuilder;
@@ -39,7 +36,6 @@ import com.seibel.distanthorizons.core.wrapperInterfaces.modAccessor.ISodiumAcce
import com.seibel.distanthorizons.core.wrapperInterfaces.world.IClientLevelWrapper;
import com.seibel.distanthorizons.coreapi.util.math.Mat4f;
import com.seibel.distanthorizons.fabric.wrappers.modAccessor.SodiumAccessor;
import io.netty.buffer.ByteBuf;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientChunkEvents;
@@ -48,7 +44,7 @@ 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.PacketSender;
import net.fabricmc.fabric.api.networking.v1.PayloadTypeRegistry;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.screens.TitleScreen;
@@ -58,13 +54,10 @@ import java.nio.FloatBuffer;
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;
import org.apache.logging.log4j.Logger;
import org.joml.Matrix4f;
import org.lwjgl.glfw.GLFW;
/**
@@ -231,16 +224,16 @@ public class FabricClientProxy implements AbstractModInitializer.IEventProxy
// networking event //
//==================//
ClientPlayNetworking.registerGlobalReceiver(AbstractPluginPacketSender.PLUGIN_CHANNEL_RESOURCE,
(Minecraft client, ClientPacketListener handler, FriendlyByteBuf mcBuffer, PacketSender responseSender) ->
{
ByteBuf buffer = mcBuffer.asReadOnly();
// (Neo)Forge packet ID (Unused, always expected to be 0)
buffer.readByte();
ClientApi.INSTANCE.pluginMessageReceived(buffer);
});
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)
{
return;
}
ClientApi.INSTANCE.pluginMessageReceived(payload.message);
});
}
public void onKeyInput()
@@ -279,4 +272,4 @@ public class FabricClientProxy implements AbstractModInitializer.IEventProxy
this.previouslyPressKeyCodes = currentKeyDown;
}
}
}
@@ -1,29 +1,24 @@
package com.seibel.distanthorizons.fabric;
import com.seibel.distanthorizons.common.wrappers.network.AbstractPluginPacketSender;
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.ServerPlayNetworking;
import net.minecraft.network.FriendlyByteBuf;
import net.minecraft.server.level.ServerPlayer;
public class FabricPluginPacketSender extends AbstractPluginPacketSender
{
@Override
protected boolean shouldAddForgePacketId()
public void sendPluginPacketClient(PluginChannelMessage message)
{
return true;
ClientPlayNetworking.send(new CommonPacketPayload(message));
}
@Override
protected void sendPluginPacketClient(FriendlyByteBuf buffer)
public void sendPluginPacketServer(ServerPlayer serverPlayer, PluginChannelMessage message)
{
ClientPlayNetworking.send(PLUGIN_CHANNEL_RESOURCE, buffer);
ServerPlayNetworking.send(serverPlayer, new CommonPacketPayload(message));
}
@Override
protected void sendPluginPacketServer(ServerPlayer serverPlayer, FriendlyByteBuf buffer)
{
ServerPlayNetworking.send(serverPlayer, PLUGIN_CHANNEL_RESOURCE, buffer);
}
}
}
@@ -1,9 +1,9 @@
package com.seibel.distanthorizons.fabric;
import com.seibel.distanthorizons.common.AbstractModInitializer;
import com.seibel.distanthorizons.common.CommonPacketPayload;
import com.seibel.distanthorizons.common.wrappers.chunk.ChunkWrapper;
import com.seibel.distanthorizons.common.wrappers.misc.ServerPlayerWrapper;
import com.seibel.distanthorizons.common.wrappers.network.AbstractPluginPacketSender;
import com.seibel.distanthorizons.common.wrappers.world.ClientLevelWrapper;
import com.seibel.distanthorizons.common.wrappers.world.ServerLevelWrapper;
import com.seibel.distanthorizons.common.wrappers.worldGeneration.BatchGenerationEnvironment;
@@ -11,12 +11,12 @@ import com.seibel.distanthorizons.core.api.internal.ServerApi;
import com.seibel.distanthorizons.core.logging.DhLoggerBuilder;
import com.seibel.distanthorizons.core.wrapperInterfaces.world.IClientLevelWrapper;
import com.seibel.distanthorizons.core.wrapperInterfaces.world.ILevelWrapper;
import io.netty.buffer.ByteBuf;
import net.fabricmc.fabric.api.entity.event.v1.ServerEntityWorldChangeEvents;
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;
@@ -156,16 +156,17 @@ public class FabricServerProxy implements AbstractModInitializer.IEventProxy
if (this.isDedicated)
{
ServerPlayNetworking.registerGlobalReceiver(AbstractPluginPacketSender.PLUGIN_CHANNEL_RESOURCE, (server, serverPlayer, handler, friendlyByteBuf, responseSender) ->
PayloadTypeRegistry.playC2S().register(CommonPacketPayload.TYPE, new CommonPacketPayload.Codec());
PayloadTypeRegistry.playS2C().register(CommonPacketPayload.TYPE, new CommonPacketPayload.Codec());
ServerPlayNetworking.registerGlobalReceiver(CommonPacketPayload.TYPE, (payload, context) ->
{
ByteBuf nettyByteBuf = friendlyByteBuf.asReadOnly();
// (Neo)Forge packet ID (Unused, always expected to be 0)
nettyByteBuf.readByte();
ServerApi.INSTANCE.pluginMessageReceived(ServerPlayerWrapper.getWrapper(serverPlayer), nettyByteBuf);
if (payload.message == null)
{
return;
}
ServerApi.INSTANCE.pluginMessageReceived(ServerPlayerWrapper.getWrapper(context.player()), payload.message);
});
}
}
}
}
@@ -33,6 +33,7 @@ import com.seibel.distanthorizons.neoforge.wrappers.modAccessor.ModChecker;
import com.seibel.distanthorizons.neoforge.wrappers.modAccessor.OptifineAccessor;
import net.minecraft.commands.CommandSourceStack;
import net.minecraft.server.MinecraftServer;
import net.neoforged.bus.api.EventPriority;
import net.neoforged.bus.api.IEventBus;
import net.neoforged.fml.ModLoadingContext;
import net.neoforged.fml.common.Mod;
@@ -41,14 +42,14 @@ import net.neoforged.fml.event.lifecycle.FMLDedicatedServerSetupEvent;
import net.neoforged.neoforge.common.NeoForge;
import net.neoforged.neoforge.event.RegisterCommandsEvent;
import net.neoforged.neoforge.event.server.ServerStartingEvent;
import net.neoforged.neoforge.network.event.RegisterPayloadHandlerEvent;
import net.neoforged.neoforge.network.event.RegisterPayloadHandlersEvent;
import java.util.function.Consumer;
#if MC_VER < MC_1_20_6
import net.neoforged.neoforge.client.ConfigScreenHandler;
#else
import net.neoforged.neoforge.client.gui.IConfigScreenFactory;
import net.neoforged.neoforge.client.gui.IConfigScreenFactory;
#endif
/**
@@ -77,11 +78,11 @@ public class NeoforgeMain extends AbstractModInitializer
//============//
// networking //
//============//
public void registerNetworkingClient(RegisterPayloadHandlerEvent event)
public void registerNetworkingClient(RegisterPayloadHandlersEvent event)
{
NeoforgePluginPacketSender.setPacketHandler(event, ClientApi.INSTANCE::pluginMessageReceived);
}
public void registerNetworkingServer(RegisterPayloadHandlerEvent event)
public void registerNetworkingServer(RegisterPayloadHandlersEvent event)
{
NeoforgePluginPacketSender.setPacketHandler(event, ServerApi.INSTANCE::pluginMessageReceived);
}
@@ -1,88 +1,52 @@
package com.seibel.distanthorizons.neoforge;
import com.seibel.distanthorizons.common.CommonPacketPayload;
import com.seibel.distanthorizons.common.wrappers.misc.ServerPlayerWrapper;
import com.seibel.distanthorizons.common.wrappers.network.AbstractPluginPacketSender;
import com.seibel.distanthorizons.common.AbstractPluginPacketSender;
import com.seibel.distanthorizons.core.network.plugin.PluginChannelMessage;
import com.seibel.distanthorizons.core.wrapperInterfaces.misc.IServerPlayerWrapper;
import com.seibel.distanthorizons.coreapi.ModInfo;
import io.netty.buffer.ByteBuf;
import net.minecraft.network.FriendlyByteBuf;
import net.minecraft.network.protocol.common.custom.CustomPacketPayload;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.server.level.ServerPlayer;
import net.neoforged.neoforge.network.PacketDistributor;
import net.neoforged.neoforge.network.event.RegisterPayloadHandlerEvent;
import net.neoforged.neoforge.network.handling.PlayPayloadContext;
import net.neoforged.neoforge.network.registration.IPayloadRegistrar;
import org.jetbrains.annotations.NotNull;
import net.neoforged.neoforge.network.event.RegisterPayloadHandlersEvent;
import net.neoforged.neoforge.network.registration.PayloadRegistrar;
import java.util.Optional;
import java.util.function.BiConsumer;
import java.util.function.Consumer;
public class NeoforgePluginPacketSender extends AbstractPluginPacketSender
{
private static BiConsumer<IServerPlayerWrapper, ByteBuf> packetConsumer;
private static BiConsumer<IServerPlayerWrapper, PluginChannelMessage> packetConsumer;
public static void setPacketHandler(RegisterPayloadHandlerEvent event, Consumer<ByteBuf> consumer)
public static void setPacketHandler(RegisterPayloadHandlersEvent event, Consumer<PluginChannelMessage> consumer)
{
setPacketHandler(event, (player, buffer) -> consumer.accept(buffer));
}
public static void setPacketHandler(RegisterPayloadHandlerEvent event, BiConsumer<IServerPlayerWrapper, ByteBuf> consumer)
public static void setPacketHandler(RegisterPayloadHandlersEvent event, BiConsumer<IServerPlayerWrapper, PluginChannelMessage> consumer)
{
packetConsumer = consumer;
IPayloadRegistrar registrar = event.registrar(ModInfo.RESOURCE_NAMESPACE);
registrar.play(PacketWrapperPayload.ID, PacketWrapperPayload::createFrom, handler -> handler
.client(NeoforgePluginPacketSender::handlePacket)
.server(NeoforgePluginPacketSender::handlePacket))
.optional();
}
public static void handlePacket(PacketWrapperPayload data, PlayPayloadContext context)
{
ServerPlayerWrapper serverPlayer = context.player()
.map(player -> player instanceof ServerPlayer ? (ServerPlayer) player : null)
.map(ServerPlayerWrapper::getWrapper)
.orElse(null);
packetConsumer.accept(serverPlayer, data.buffer);
PayloadRegistrar registrar = event.registrar("1");
registrar.commonBidirectional(CommonPacketPayload.TYPE, new CommonPacketPayload.Codec(), (payload, context) ->
{
ServerPlayerWrapper serverPlayer = Optional.of(context.player())
.map(player -> player instanceof ServerPlayer ? (ServerPlayer) player : null)
.map(ServerPlayerWrapper::getWrapper)
.orElse(null);
packetConsumer.accept(serverPlayer, payload.message);
});
}
@Override
protected void sendPluginPacketClient(FriendlyByteBuf buffer)
public void sendPluginPacketClient(PluginChannelMessage message)
{
PacketDistributor.SERVER.noArg().send(new PacketWrapperPayload(buffer));
PacketDistributor.sendToServer(new CommonPacketPayload(message));
}
@Override
protected void sendPluginPacketServer(ServerPlayer serverPlayer, FriendlyByteBuf buffer)
public void sendPluginPacketServer(ServerPlayer serverPlayer, PluginChannelMessage message)
{
PacketDistributor.PLAYER.with(serverPlayer).send(new PacketWrapperPayload(buffer));
PacketDistributor.sendToPlayer(serverPlayer, new CommonPacketPayload(message));
}
public record PacketWrapperPayload(
ByteBuf buffer
) implements CustomPacketPayload
{
public static final ResourceLocation ID = AbstractPluginPacketSender.WRAPPER_PACKET_RESOURCE;
public static PacketWrapperPayload createFrom(FriendlyByteBuf buffer)
{
return new PacketWrapperPayload(buffer.readBytes(buffer.readableBytes()));
}
@Override
@NotNull
public ResourceLocation id()
{
return ID;
}
@Override
public void write(FriendlyByteBuf out)
{
this.buffer.resetReaderIndex();
out.writeBytes(this.buffer);
}
}
}
}
@@ -16,7 +16,6 @@ import net.minecraft.server.level.ServerPlayer;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.LevelAccessor;
import net.neoforged.neoforge.common.NeoForge;
import net.neoforged.neoforge.event.TickEvent;
import net.neoforged.neoforge.event.entity.player.PlayerEvent;
import net.neoforged.neoforge.event.level.ChunkEvent;
import net.neoforged.neoforge.event.level.LevelEvent;