Skip to content

Commit

Permalink
Fix plugin messages on Fabric platform (#1248)
Browse files Browse the repository at this point in the history
  • Loading branch information
IzzelAliz committed Mar 8, 2024
1 parent 07255c6 commit a8b1a43
Show file tree
Hide file tree
Showing 6 changed files with 22 additions and 17 deletions.
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package io.izzel.arclight.common.bridge.core.network.common;

import net.minecraft.network.FriendlyByteBuf;
import net.minecraft.network.protocol.common.custom.DiscardedPayload;
import net.minecraft.network.protocol.common.ServerboundCustomPayloadPacket;
import net.minecraft.server.level.ServerPlayer;
import org.bukkit.craftbukkit.v.CraftServer;
import org.bukkit.craftbukkit.v.entity.CraftPlayer;
Expand All @@ -22,7 +22,7 @@ public interface ServerCommonPacketListenerBridge {

void bridge$setPlayer(ServerPlayer player);

default FriendlyByteBuf bridge$getDiscardedData(DiscardedPayload payload) {
default FriendlyByteBuf bridge$getDiscardedData(ServerboundCustomPayloadPacket packet) {
// Todo: use Mixin to save vanilla payload data.
return null;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@
import net.minecraft.network.protocol.common.ClientboundDisconnectPacket;
import net.minecraft.network.protocol.common.ServerboundCustomPayloadPacket;
import net.minecraft.network.protocol.common.ServerboundResourcePackPacket;
import net.minecraft.network.protocol.common.custom.DiscardedPayload;
import net.minecraft.network.protocol.game.ClientboundSetDefaultSpawnPositionPacket;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.server.MinecraftServer;
Expand Down Expand Up @@ -191,8 +190,8 @@ protected Object evaluate() {

@Inject(method = "handleCustomPayload", at = @At("HEAD"))
private void arclight$customPayload(ServerboundCustomPayloadPacket packet, CallbackInfo ci) {
if (packet.payload() instanceof DiscardedPayload payload && bridge$getDiscardedData(payload) != null) {
var data = bridge$getDiscardedData(payload);
var data = bridge$getDiscardedData(packet);
if (data != null) {
var readerIndex = data.readerIndex();
var buf = new byte[data.readableBytes()];
data.readBytes(buf);
Expand All @@ -202,7 +201,7 @@ protected Object evaluate() {
return;
}
if (this.connection.isConnected()) {
if (payload.id().equals(CUSTOM_REGISTER)) {
if (packet.payload().id().equals(CUSTOM_REGISTER)) {
try {
String channels = new String(buf, StandardCharsets.UTF_8);
for (String channel : channels.split("\0")) {
Expand All @@ -214,7 +213,7 @@ protected Object evaluate() {
LOGGER.error("Couldn't register custom payload", ex);
this.bridge$disconnect("Invalid payload REGISTER!");
}
} else if (payload.id().equals(CUSTOM_UNREGISTER)) {
} else if (packet.payload().id().equals(CUSTOM_UNREGISTER)) {
try {
final String channels = new String(buf, StandardCharsets.UTF_8);
for (String channel : channels.split("\0")) {
Expand All @@ -228,7 +227,7 @@ protected Object evaluate() {
}
} else {
try {
this.bridge$getCraftServer().getMessenger().dispatchIncomingMessage(((ServerPlayerEntityBridge) this.bridge$getPlayer()).bridge$getBukkitEntity(), payload.id().toString(), buf);
this.bridge$getCraftServer().getMessenger().dispatchIncomingMessage(((ServerPlayerEntityBridge) this.bridge$getPlayer()).bridge$getBukkitEntity(), packet.payload().id().toString(), buf);
} catch (Exception ex) {
LOGGER.error("Couldn't dispatch custom payload", ex);
this.bridge$disconnect("Invalid custom payload!");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -198,9 +198,8 @@ public abstract class LivingEntityMixin extends EntityMixin implements LivingEnt
@Shadow protected abstract void actuallyHurt(DamageSource p_21240_, float p_21241_);
@Shadow public abstract void skipDropExperience();
@Shadow public abstract AttributeMap getAttributes();
// @formatter:on

@Shadow protected abstract void updateGlowingStatus();
// @formatter:on

public int expToDrop;
public boolean forceDrops;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,17 +1,23 @@
package io.izzel.arclight.fabric.mixin.core.network;

import io.izzel.arclight.common.bridge.core.network.common.ServerCommonPacketListenerBridge;
import net.fabricmc.fabric.impl.networking.payload.RetainedPayload;
import net.fabricmc.fabric.impl.networking.payload.UntypedPayload;
import net.minecraft.network.FriendlyByteBuf;
import net.minecraft.network.protocol.common.custom.DiscardedPayload;
import net.minecraft.network.protocol.common.ServerboundCustomPayloadPacket;
import net.minecraft.server.network.ServerCommonPacketListenerImpl;
import org.spongepowered.asm.mixin.Mixin;

@Mixin(ServerCommonPacketListenerImpl.class)
public abstract class ServerCommonPacketListenerImplMixin_Fabric implements ServerCommonPacketListenerBridge {

@Override
public FriendlyByteBuf bridge$getDiscardedData(DiscardedPayload payload) {
// Todo: Payload data.
public FriendlyByteBuf bridge$getDiscardedData(ServerboundCustomPayloadPacket packet) {
if (packet.payload() instanceof RetainedPayload r) {
return r.buf();
} else if (packet.payload() instanceof UntypedPayload r) {
return r.buffer();
}
return null;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import io.izzel.arclight.common.bridge.core.network.common.ServerCommonPacketListenerBridge;
import net.minecraft.network.FriendlyByteBuf;
import net.minecraft.network.protocol.common.ServerboundCustomPayloadPacket;
import net.minecraft.network.protocol.common.custom.DiscardedPayload;
import net.minecraft.server.network.ServerCommonPacketListenerImpl;
import org.spongepowered.asm.mixin.Mixin;
Expand All @@ -10,7 +11,7 @@
public abstract class ServerCommonPacketListenerImplMixin_Forge implements ServerCommonPacketListenerBridge {

@Override
public FriendlyByteBuf bridge$getDiscardedData(DiscardedPayload payload) {
return payload.data();
public FriendlyByteBuf bridge$getDiscardedData(ServerboundCustomPayloadPacket packet) {
return packet.getInternalData();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,15 @@

import io.izzel.arclight.common.bridge.core.network.common.ServerCommonPacketListenerBridge;
import net.minecraft.network.FriendlyByteBuf;
import net.minecraft.network.protocol.common.custom.DiscardedPayload;
import net.minecraft.network.protocol.common.ServerboundCustomPayloadPacket;
import net.minecraft.server.network.ServerCommonPacketListenerImpl;
import org.spongepowered.asm.mixin.Mixin;

@Mixin(ServerCommonPacketListenerImpl.class)
public abstract class ServerCommonPacketListenerImplMixin_NeoForge implements ServerCommonPacketListenerBridge {

@Override
public FriendlyByteBuf bridge$getDiscardedData(DiscardedPayload payload) {
public FriendlyByteBuf bridge$getDiscardedData(ServerboundCustomPayloadPacket packet) {
// Todo: Payload data.
return null;
}
Expand Down

0 comments on commit a8b1a43

Please sign in to comment.