Files
meatballcraft/scripts/mixin/BetterP2P.zs
T
ZHAY10086 c2c6446c77 update
2025-10-17 17:03:15 +08:00

66 lines
2.2 KiB
Plaintext

#loader mixin
import native.java.util.UUID;
import native.net.minecraftforge.fml.common.network.simpleimpl.IMessage;
import native.net.minecraftforge.fml.common.network.simpleimpl.MessageContext;
import native.com.projecturanus.betterp2p.network.ModNetwork;
import native.com.projecturanus.betterp2p.network.PlayerRequest;
import native.com.projecturanus.betterp2p.network.packet.C2SLinkP2P;
import native.com.projecturanus.betterp2p.network.packet.C2SUnlinkP2P;
import native.com.projecturanus.betterp2p.network.packet.S2COpenGui;
#mixin {value: "com.projecturanus.betterp2p.network.packet.ServerLinkP2PHandler"}
zenClass MixinServerLinkP2PHandler {
#mixin Overwrite
function onMessage(message as C2SLinkP2P, ctx as MessageContext) as IMessage {
if (isNull(message.input) || isNull(message.output)) {
return null;
}
var player = ctx.serverHandler.player;
var states as PlayerRequest[UUID] = ModNetwork.INSTANCE.getPlayerState();
var state = states[player.uniqueID];
if (isNull(state)) {
return null;
}
if (!isNull(player.server)) {
player.server.addScheduledTask(function() {
var result = state.gridCache.linkP2P(message.input, message.output);
if (!isNull(result)) {
ModNetwork.INSTANCE.requestP2PUpdate(player);
}
});
}
return null;
}
}
#mixin {value: "com.projecturanus.betterp2p.network.packet.ServerUnlinkP2PHandler"}
zenClass MixinServerUnlinkP2PHandler {
#mixin Overwrite
function onMessage(message as C2SUnlinkP2P, ctx as MessageContext) as S2COpenGui {
if (isNull(message.p2p)) {
return null;
}
var player = ctx.serverHandler.player;
var states as PlayerRequest[UUID] = ModNetwork.INSTANCE.getPlayerState();
var state = states[player.uniqueID];
if (isNull(state)) {
return null;
}
if (!isNull(player.server)) {
player.server.addScheduledTask(function() {
state.gridCache.unlinkP2P(message.p2p);
ModNetwork.INSTANCE.requestP2PUpdate(player);
});
}
return null;
}
}