- 122
- 4
- 6
Здоров. Создал я gui для блока, а в нем кнопку которая меняет значение TileEntity. Но проблема в том что значение меняется только на клиенте, и для этого я написал пакет который должен срабатывать на сервере, но это не происходит
Сам пакет:
public class PacketUpdateGameConsole implements IMessage, IMessageHandler<PacketUpdateGameConsole, IMessage> {
private int timer;
private int points;
private int countTeams;
private int sizeTeam;
private int typeGame;
private int typeMap;
private boolean battleMode;
private boolean friendlyFire;
public PacketUpdateGameConsole() {}
public PacketUpdateGameConsole(int typeGame) {
this.typeGame = typeGame;
}
@Override public void fromBytes(ByteBuf buf) {
typeGame = buf.readInt();
}
@Override public void toBytes(ByteBuf buf) {
buf.writeInt(typeGame);
}
@Override public IMessage onMessage(PacketUpdateGameConsole message, MessageContext ctx) {
IThreadListener mainThread = (WorldServer) ctx.getServerHandler().player.world;
mainThread.addScheduledTask(new Runnable(){ public void run() {
TileEntity tile = ctx.getServerHandler().player.world.getTileEntity(ctx.getServerHandler().player.getPosition());
if (tile != null) {
if (tile instanceof TileGameConsole) {
TileGameConsole tgc = (TileGameConsole) tile;
tgc.setTypeGame(message.typeGame);
}
}
}});
return null;
}
}
рег пакета:
public class PacketHandler {
public static final SimpleNetworkWrapper INSTANCE = NetworkRegistry.INSTANCE.newSimpleChannel(Main.MOD_ID.toLowerCase());
public static void init() {
INSTANCE.registerMessage(PacketUpdateGameConsole.class, PacketUpdateGameConsole.class, 0, Side.SERVER);
}
}
активация по кнопке:
@Override protected void actionPerformed(GuiButton button) {
if (button == exit) mc.displayGuiScreen(null);
if (button == add_typegame) {
int typeGame = tileGameConsole.getTypeGame() + 1;
tileGameConsole.setTypeGame(typeGame);
sendUpdateGCPacket(typeGame);
}
}
private void sendUpdateGCPacket(int typeGame) {
PacketUpdateGameConsole packet = new PacketUpdateGameConsole(typeGame);
PacketHandler.INSTANCE.sendToServer(packet);
}
public class CommonProxy {
public void preInit(FMLPreInitializationEvent e) {
regEvent();
PacketHandler.init();
}
помогите кто знает в чем проблема? Может я делаю что-то не так?