Fix Forge
This commit is contained in:
+20
-3
@@ -4,19 +4,31 @@ import com.seibel.distanthorizons.core.wrapperInterfaces.misc.IPluginPacketSende
|
||||
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;
|
||||
|
||||
public abstract class AbstractPluginPacketSender implements IPluginPacketSender
|
||||
{
|
||||
public static final ResourceLocation PLUGIN_CHANNEL_RESOURCE = new ResourceLocation(ModInfo.RESOURCE_NAMESPACE, ModInfo.PLUGIN_CHANNEL_PATH);
|
||||
|
||||
|
||||
@Override
|
||||
public final void sendPluginPacket(@Nullable IServerPlayerWrapper serverPlayer, ByteBuf buffer)
|
||||
public final void sendPluginPacket(@Nullable IServerPlayerWrapper serverPlayer, Consumer<ByteBuf> encoder)
|
||||
{
|
||||
FriendlyByteBuf buffer = new FriendlyByteBuf(ByteBufAllocator.DEFAULT.buffer());
|
||||
|
||||
if (this.shouldAddForgePacketId())
|
||||
{
|
||||
buffer.writeByte(0);
|
||||
}
|
||||
|
||||
encoder.accept(buffer);
|
||||
|
||||
if (serverPlayer != null)
|
||||
{
|
||||
this.sendPluginPacketServer((ServerPlayer) serverPlayer.getWrappedMcObject(), buffer);
|
||||
@@ -27,7 +39,12 @@ public abstract class AbstractPluginPacketSender implements IPluginPacketSender
|
||||
}
|
||||
}
|
||||
|
||||
protected abstract void sendPluginPacketServer(ServerPlayer serverPlayer, ByteBuf buffer);
|
||||
protected abstract void sendPluginPacketClient(ByteBuf buffer);
|
||||
protected boolean shouldAddForgePacketId()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
protected abstract void sendPluginPacketServer(ServerPlayer serverPlayer, FriendlyByteBuf buffer);
|
||||
protected abstract void sendPluginPacketClient(FriendlyByteBuf buffer);
|
||||
|
||||
}
|
||||
|
||||
+1
-1
Submodule coreSubProjects updated: e008eb8a13...af2f0e8582
+10
-18
@@ -1,8 +1,6 @@
|
||||
package com.seibel.distanthorizons.fabric;
|
||||
|
||||
import com.seibel.distanthorizons.common.wrappers.network.AbstractPluginPacketSender;
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import io.netty.buffer.PooledByteBufAllocator;
|
||||
import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking;
|
||||
import net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking;
|
||||
import net.minecraft.network.FriendlyByteBuf;
|
||||
@@ -11,27 +9,21 @@ import net.minecraft.server.level.ServerPlayer;
|
||||
public class FabricPluginPacketSender extends AbstractPluginPacketSender
|
||||
{
|
||||
@Override
|
||||
protected void sendPluginPacketClient(ByteBuf buffer)
|
||||
protected boolean shouldAddForgePacketId()
|
||||
{
|
||||
FriendlyByteBuf mcBuffer = new FriendlyByteBuf(PooledByteBufAllocator.DEFAULT.buffer());
|
||||
|
||||
// (Neo)Forge packet ID (Unused, always expected to be 0)
|
||||
mcBuffer.writeByte(0);
|
||||
|
||||
mcBuffer.writeBytes(buffer);
|
||||
ClientPlayNetworking.send(PLUGIN_CHANNEL_RESOURCE, mcBuffer);
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void sendPluginPacketServer(ServerPlayer serverPlayer, ByteBuf buffer)
|
||||
protected void sendPluginPacketClient(FriendlyByteBuf buffer)
|
||||
{
|
||||
FriendlyByteBuf mcBuffer = new FriendlyByteBuf(buffer);
|
||||
|
||||
// (Neo)Forge packet ID (Unused, always expected to be 0)
|
||||
mcBuffer.writeByte(0);
|
||||
|
||||
mcBuffer.writeBytes(buffer);
|
||||
ServerPlayNetworking.send(serverPlayer, PLUGIN_CHANNEL_RESOURCE, mcBuffer);
|
||||
ClientPlayNetworking.send(PLUGIN_CHANNEL_RESOURCE, buffer);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void sendPluginPacketServer(ServerPlayer serverPlayer, FriendlyByteBuf buffer)
|
||||
{
|
||||
ServerPlayNetworking.send(serverPlayer, PLUGIN_CHANNEL_RESOURCE, buffer);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
package com.seibel.distanthorizons.forge;
|
||||
|
||||
import com.seibel.distanthorizons.common.wrappers.misc.ServerPlayerWrapper;
|
||||
import com.seibel.distanthorizons.common.wrappers.network.AbstractPluginPacketSender;
|
||||
import com.seibel.distanthorizons.core.wrapperInterfaces.misc.IServerPlayerWrapper;
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import net.minecraft.network.FriendlyByteBuf;
|
||||
import net.minecraft.server.level.ServerPlayer;
|
||||
@@ -9,6 +11,8 @@ import net.minecraftforge.network.PacketDistributor;
|
||||
#if MC_VER >= MC_1_20_2
|
||||
import net.minecraftforge.network.ChannelBuilder;
|
||||
import net.minecraftforge.network.SimpleChannel;
|
||||
import org.apache.commons.lang3.ObjectUtils;
|
||||
import org.checkerframework.checker.nullness.qual.Nullable;
|
||||
#elif MC_VER >= MC_1_18_2
|
||||
import net.minecraftforge.network.NetworkRegistry;
|
||||
import net.minecraftforge.network.simple.SimpleChannel;
|
||||
@@ -20,6 +24,7 @@ import net.minecraftforge.fml.network.NetworkRegistry;
|
||||
import net.minecraftforge.fml.network.simple.SimpleChannel;
|
||||
#endif
|
||||
|
||||
import java.util.Optional;
|
||||
import java.util.function.BiConsumer;
|
||||
import java.util.function.Consumer;
|
||||
|
||||
@@ -45,28 +50,39 @@ public class ForgePluginPacketSender extends AbstractPluginPacketSender
|
||||
{
|
||||
setPacketHandler((player, buffer) -> consumer.accept(buffer));
|
||||
}
|
||||
public static void setPacketHandler(BiConsumer<ServerPlayer, ByteBuf> consumer)
|
||||
public static void setPacketHandler(BiConsumer<IServerPlayerWrapper, ByteBuf> consumer)
|
||||
{
|
||||
#if MC_VER >= MC_1_20_2
|
||||
PLUGIN_CHANNEL.messageBuilder(ByteBuf.class, 0)
|
||||
PLUGIN_CHANNEL.messageBuilder(FriendlyByteBuf.class, 0)
|
||||
.encoder((buffer, mcBuffer) -> mcBuffer.writeBytes(buffer))
|
||||
.decoder(FriendlyByteBuf::asReadOnly)
|
||||
.decoder(FriendlyByteBuf::new)
|
||||
.consumerNetworkThread((buffer, context) ->
|
||||
{
|
||||
consumer.accept(context.getSender(), buffer);
|
||||
if (context.getSender() != null)
|
||||
{
|
||||
consumer.accept(ServerPlayerWrapper.getWrapper(context.getSender()), buffer);
|
||||
}
|
||||
else
|
||||
{
|
||||
consumer.accept(null, buffer);
|
||||
}
|
||||
context.setPacketHandled(true);
|
||||
})
|
||||
.add();
|
||||
#else // < 1.20.2
|
||||
PLUGIN_CHANNEL.registerMessage(0, ByteBuf.class,
|
||||
// encoder
|
||||
PLUGIN_CHANNEL.registerMessage(0, FriendlyByteBuf.class,
|
||||
(buffer, mcBuffer) -> mcBuffer.writeBytes(buffer),
|
||||
// decoder
|
||||
FriendlyByteBuf::asReadOnly,
|
||||
// message consumer
|
||||
FriendlyByteBuf::new,
|
||||
(buffer, context) ->
|
||||
{
|
||||
consumer.accept(context.get().getSender(), buffer);
|
||||
if (context.get().getSender() != null)
|
||||
{
|
||||
consumer.accept(ServerPlayerWrapper.getWrapper(context.get().getSender()), buffer);
|
||||
}
|
||||
else
|
||||
{
|
||||
consumer.accept(null, buffer);
|
||||
}
|
||||
context.get().setPacketHandled(true);
|
||||
}
|
||||
);
|
||||
@@ -74,7 +90,7 @@ public class ForgePluginPacketSender extends AbstractPluginPacketSender
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void sendPluginPacketClient(ByteBuf buffer)
|
||||
protected void sendPluginPacketClient(FriendlyByteBuf buffer)
|
||||
{
|
||||
#if MC_VER >= MC_1_20_2
|
||||
PLUGIN_CHANNEL.send(buffer, PacketDistributor.SERVER.noArg());
|
||||
@@ -84,7 +100,7 @@ public class ForgePluginPacketSender extends AbstractPluginPacketSender
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void sendPluginPacketServer(ServerPlayer serverPlayer, ByteBuf buffer)
|
||||
protected void sendPluginPacketServer(ServerPlayer serverPlayer, FriendlyByteBuf buffer)
|
||||
{
|
||||
#if MC_VER >= MC_1_20_2
|
||||
PLUGIN_CHANNEL.send(buffer, PacketDistributor.PLAYER.with(serverPlayer));
|
||||
|
||||
@@ -6,6 +6,7 @@ import com.seibel.distanthorizons.common.wrappers.chunk.ChunkWrapper;
|
||||
import com.seibel.distanthorizons.common.wrappers.misc.ServerPlayerWrapper;
|
||||
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.wrapperInterfaces.chunk.IChunkWrapper;
|
||||
@@ -59,7 +60,6 @@ public class ForgeServerProxy implements AbstractModInitializer.IEventProxy
|
||||
#endif
|
||||
|
||||
private final ServerApi serverApi = ServerApi.INSTANCE;
|
||||
private static final Logger LOGGER = DhLoggerBuilder.getLogger();
|
||||
private final boolean isDedicated;
|
||||
public static Supplier<Boolean> isGenerationThreadChecker = null;
|
||||
|
||||
@@ -69,6 +69,10 @@ public class ForgeServerProxy implements AbstractModInitializer.IEventProxy
|
||||
public void registerEvents()
|
||||
{
|
||||
MinecraftForge.EVENT_BUS.register(this);
|
||||
if (this.isDedicated)
|
||||
{
|
||||
ForgePluginPacketSender.setPacketHandler(ServerApi.INSTANCE::pluginMessageReceived);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user