PacketThreadUtil.checkThreadAndEnqueue( pack, handler, ( (EntityPlayerMP) player ).getServer() ); callState.call( pack );
/** * Returns the current thread based on side during message handling, * used for ensuring that the message is being handled by the main thread */ public IThreadListener getThreadFromContext(MessageContext ctx) { return ctx.getServerHandler().player.getServer(); }
public IThreadListener getThreadFromContext(MessageContext ctx) { return ctx.getServerHandler().player.getServer(); }
@Override public IMessage handleMessage(MessageContext context) { context.getServerHandler().player.getServer().addScheduledTask(new Runnable() { @Override public void run() { DropoffHandler.restock(context.getServerHandler().player, filtered); } }); return null; }
@Override public IMessage handleMessage(MessageContext context) { context.getServerHandler().player.getServer().addScheduledTask(new Runnable() { @Override public void run() { DropoffHandler.dropoff(context.getServerHandler().player, smart, useContainer); } }); return null; }
/** * Changes the dimension a player is in, in a safe way. This will make sure the player is * teleported to the dimension and all the correct packets are sent to keep the client in * sync. It also gets around teleporter code which in some cases will crash the server. * * @param player The player to change the dimension of. * @param dimension The dimension to send the player to. */ public static void changeDimension (EntityPlayerMP player, int dimension) { changeDimension(player, dimension, player.getServer().getPlayerList()); }
@Override public IMessage onMessage(ColossalCratePage message, MessageContext ctx) { final EntityPlayerMP player = ctx.getServerHandler().player; player.getServer().addScheduledTask(new Runnable() { public void run() { if (player.openContainer instanceof ContainerColossalCrate) ((ContainerColossalCrate) player.openContainer).changePage(message.page); } }); return null; }
@Override public IMessage onMessage(PacketBeetleRamAttack message, MessageContext ctx) { final EntityPlayerMP player = ctx.getServerHandler().player; player.getServer().addScheduledTask(new Runnable() { public void run() { if (player.isRiding() && player.getRidingEntity() instanceof EntityRhinoBeetle) { ((EntityRhinoBeetle) player.getRidingEntity()).setRamming(message.ramming); return; } } }); return null; } }
private static void buildSyncSet(EntityPlayerMP player) { if(syncedAdvancements == null) { AdvancementManager manager = player.getServer().getAdvancementManager(); Iterable<Advancement> allAdvancements = manager.getAdvancements(); syncedAdvancements = new ArrayList<>(); for(Advancement a : allAdvancements) if(trackedNamespaces.contains(a.getId().getResourceDomain())) syncedAdvancements.add(a.getId()); } }
@Override public IMessage handleMessage(MessageContext context) { EntityPlayerMP player = context.getServerHandler().player; player.getServer().addScheduledTask(() -> LinkItems.linkItem(player, stack)); return null; }
@Override public IMessage onMessage(final MessageSyncEntityToServer message, MessageContext ctx) { // Know it will be on the server so make it thread-safe final EntityPlayerMP thePlayer = (EntityPlayerMP) MainMod.proxy.getPlayerEntityFromContext(ctx); thePlayer.getServer().addScheduledTask( new Runnable() { @Override public void run() { IModEntity theEntity = (IModEntity) thePlayer.world.getEntityByID(message.entityId); theEntity.setSyncDataCompound(message.entitySyncDataCompound); // DEBUG System.out.println("MessageSyncEnitityToClient onMessage(), entity ID = " + message.entityId); return; } }); return null; // no response in this case } }
@Override public IMessage handleMessage(MessageContext context) { EntityPlayerMP player = context.getServerHandler().player; player.getServer().addScheduledTask(() -> { if(open) player.openGui(Quark.instance, LibGuiIDs.BACKPACK, player.world, 0, 0, 0); else player.openContainer = player.inventoryContainer; }); return null; }
@Override public IMessage handleMessage(MessageContext context) { EntityPlayerMP player = context.getServerHandler().player; player.getServer().addScheduledTask(() -> { Container container = player.openContainer; if(container instanceof ContainerMatrixEnchanting) { TileMatrixEnchanter enchanter = ((ContainerMatrixEnchanting) container).enchanter; enchanter.onOperation(player, operation, arg0, arg1, arg2); } }); return null; }
@Override public IMessage onMessage(final MessageToServer message, MessageContext ctx) { // DEBUG System.out.println(String.format("Received %s from %s", message.text, MainMod.proxy.getPlayerEntityFromContext(ctx).getDisplayName())); // Know it will be on the server so make it thread-safe final EntityPlayerMP thePlayer = (EntityPlayerMP) MainMod.proxy.getPlayerEntityFromContext(ctx); thePlayer.getServer().addScheduledTask( new Runnable() { @Override public void run() { return; } }); return null; // no response in this case } }
@Override public IMessage onMessage(PacketGliderPowered message, MessageContext ctx) { final EntityPlayerMP player = ctx.getServerHandler().player; ItemStack chestplate = player.inventory.armorInventory.get(2); player.getServer().addScheduledTask(new Runnable() { public void run() { if (!chestplate.isEmpty() && chestplate.getItem() == ModItems.GLIDER_CHESTPLATE_POWERED) { if (!chestplate.hasTagCompound()) chestplate.setTagCompound(new NBTTagCompound()); chestplate.getTagCompound().setBoolean("isPowered", message.isPowered); } } }); return null; }
@Override public IMessage onMessage(PacketGlider message, MessageContext ctx) { final EntityPlayerMP player = ctx.getServerHandler().player; ItemStack chestplate = player.inventory.armorInventory.get(2); player.getServer().addScheduledTask(new Runnable() { public void run() { if (!chestplate.isEmpty() && chestplate.getItem() == ModItems.GLIDER_CHESTPLATE) { if (!chestplate.hasTagCompound()) chestplate.setTagCompound(new NBTTagCompound()); chestplate.getTagCompound().setBoolean("isGliding", message.isGliding); System.out.println("Gliding: " + message.isGliding); } } }); return null; } }
public static void syncPlayer(EntityPlayerMP player, boolean showToast) { PlayerAdvancements advancements = player.getAdvancements(); if(advancements == null) return; AdvancementManager manager = player.getServer().getAdvancementManager(); List<String> completed = new LinkedList<>(); for(ResourceLocation res : syncedAdvancements) { Advancement adv = manager.getAdvancement(res); AdvancementProgress p = advancements.getProgress(adv); if(p.isDone()) completed.add(res.toString()); } String[] completedArr = completed.toArray(new String[0]); NetworkHandler.INSTANCE.sendTo(new MessageSyncAdvancements(completedArr, showToast), player); }
@SubscribeEvent public void onPacket(FMLNetworkEvent.ServerCustomPacketEvent event) { PacketBuffer packetBuffer = new PacketBuffer(event.getPacket().payload()); EntityPlayerMP player = ((NetHandlerPlayServer) event.getHandler()).player; try { byte packetIdOrdinal = packetBuffer.readByte(); PacketIdServer packetId = PacketIdServer.VALUES[packetIdOrdinal]; IPacketJeiHandler packetHandler = serverHandlers.get(packetId); checkThreadAndEnqueue(packetHandler, packetBuffer, player, player.getServer()); } catch (RuntimeException ex) { Log.get().error("Packet error", ex); } }
@Override public IMessage onMessage(PacketChiselMode message, MessageContext ctx) { ctx.getServerHandler().player.getServer().addScheduledTask(() -> { ItemStack stack = ctx.getServerHandler().player.inventory.getStackInSlot(message.slot); if (stack.getItem() instanceof IChiselItem && ((IChiselItem) stack.getItem()).supportsMode(ctx.getServerHandler().player, stack, message.mode)) { NBTUtil.setChiselMode(stack, message.mode); } }); return null; } }
@Override public IMessage onMessage(TerrariumHandshakeMessage message, MessageContext ctx) { if (ctx.side.isServer()) { EntityPlayerMP player = ctx.getServerHandler().player; MinecraftServer server = player.getServer(); if (server == null) { return null; } TerrariumWorldData worldData = server.getWorld(0).getCapability(TerrariumCapabilities.worldDataCapability, null); if (worldData != null) { Terrarium.PROXY.scheduleTask(ctx, () -> TerrariumHandshakeTracker.markPlayerFriendly(player)); return new TerrariumHandshakeMessage(worldData.getSettings()); } } else { Terrarium.PROXY.scheduleTask(ctx, () -> TerrariumHandshakeTracker.provideSettings(Terrarium.PROXY.getWorld(ctx), message.settings)); } return null; } }