package org.valkyrienskies.mod.common.network; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.IThreadListener; import net.minecraft.world.World; import net.minecraftforge.fml.common.network.simpleimpl.IMessage; import net.minecraftforge.fml.common.network.simpleimpl.IMessageHandler; import net.minecraftforge.fml.common.network.simpleimpl.MessageContext; import org.valkyrienskies.mod.client.gui.IVSTileGui; public class VSGuiButtonHandler implements IMessageHandler<VSGuiButtonMessage, IMessage> { @Override public IMessage onMessage(VSGuiButtonMessage message, MessageContext ctx) { IThreadListener mainThread = ctx.getServerHandler().server; mainThread.addScheduledTask(() -> { World playerWorld = ctx.getServerHandler().player.world; TileEntity tileEntity = playerWorld.getTileEntity(message.getTileEntityPos()); if (tileEntity == null) { // Nothing there, ignore this message return; } int buttonId = message.getButtonId(); // Tell the tile entity that this player tried pressing the given button. if (tileEntity instanceof IVSTileGui) { ((IVSTileGui) tileEntity).onButtonPress(buttonId, ctx.getServerHandler().player); } }); return null; } }