@feedback Salut
=============== Cote Forge===============-|
Enregistrement du chanel
SimpleNetworkWrapper networML = NetworkRegistry.INSTANCE.newSimpleChannel("Nom Du Chanel");
networML.registerMessage(GenericMessage.Handle.class, GenericMessage.class, 80, Side.CLIENT);
(si tu as des bugs des crash quant tu recoit un msg change la valeur [80], par une autre)
GenericMessage.class
import io.netty.buffer.ByteBuf;
import io.netty.util.CharsetUtil;
import net.minecraftforge.fml.common.network.ByteBufUtils;
import net.minecraftforge.fml.common.network.simpleimpl.IMessage;
import net.minecraftforge.fml.common.network.simpleimpl.IMessageHandler;
import net.minecraftforge.fml.common.network.simpleimpl.MessageContext;
public class GenericMessage implements IMessage {
public static class Handle implements IMessageHandler<GenericMessage, IMessage> {
@Override
public IMessage onMessage(GenericMessage message, MessageContext ctx) {
OnReceiveMsg.receive(message.getMessage());
return null;
}
}
String s;
public GenericMessage() {
}
public GenericMessage(String s){
this.s = s;
}
@Override
public void fromBytes(ByteBuf buf) {
s = buf.toString(CharsetUtil.UTF_8);
}
public String getMessage() {
return s;
}
@Override
public void toBytes(ByteBuf buf) {
ByteBufUtils.writeUTF8String(buf,s);
}
}
Pour envoyer un message vers spigot
networML.sendToServer(new GenericMessage("MSG"));
Recuperer un msg envoyer depuis spigot
OnReceiveMsg.class
public class OnReceiveMsg {
public static void receive(String msg) {
String[] data = msg.split(";");
for(String text: data){
System.out.println(text);
}
}
=============== Cote Spigot ===============
Enregistrement du chanel
Bukkit.getMessenger().registerOutgoingPluginChannel(plugin, "Nom Du Chanel");
Bukkit.getMessenger().registerIncomingPluginChannel(plugin, "Nom Du Chanel", new PacketListener());
Pour envoyer un message vers Forge
player.sendPluginMessage(plugin, "Nom Du Chanel", text.getBytes());
Recuperer un msg envoyer depuis Forge
PacketListener.class
import org.bukkit.entity.Player;
import org.bukkit.plugin.messaging.PluginMessageListener;
public class PacketListener implements PluginMessageListener {
@Override
public void onPluginMessageReceived(String channel, Player player, byte[] bytes) {
try {
if (channel.equals("Nom Du Chanel")) {
String info = new String(bytes);
String[] data = info.split(";");
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
/!\ Le nom du chanel doit être le même dans spigot et forge.