Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

[SOLVED][1.6.4] Determine if no gui screens are open


coolAlias
 Share

Recommended Posts

I've got an item that writes to NBT while held on each Item update tick, but I only want it to update if no gui screens are open.

 

player.openContainer is never null; in normal gameplay ContainerPlayer is constantly open, which also happens to be open when the player's normal inventory is open.

 

FMLClientHandler.instance().getClient().inGameHasFocus would seem like a good choice, and it works when only running the regular client, but this crashes if run on the server (obviously) and I can't just run the Item update on the client side. So it would seem this option is not SMP compatible.

 

Am I just failing to see how to use these to solve my problem, or are there any other options that are SMP compatible?

Link to comment
Share on other sites

That's what my plan is, I was just hoping that I may have overlooked something that would obviate the need for an extra packet. It just seems like something that should be easily detectable with an instance of the player, even the server side version, but I have combed through the available methods and fields multiple times and come up with nada. Thanks, though.

Link to comment
Share on other sites

Thanks for the idea, but I just ended up using a packet:

// this is in the Item's onUpdate method:
if (isHeld) {
		if (entity instanceof EntityPlayer) {
			if (world.isRemote && Minecraft.getMinecraft().currentScreen == null) {
				PacketDispatcher.sendPacketToServer(new BombTickPacket().makePacket());
			}
		} else {
			tickBomb(stack, world, entity);
		}
	} else {
		stack.getTagCompound().setInteger("time", 0);
	}

As you can see, when held by a player, it does nothing if on the server side; instead, it checks for an open screen on the client side and if there isn't one, sends a packet telling the server to 'tick' the bomb, which is a method that has the same stuff that used to be in the onUpdate method.

 

It's a simple solution to a simple problem; I was just wondering if there wasn't another way to do it is all.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share



×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.