Jump to content
View in the app

A better way to browse. Learn more.

Forge Forums

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Featured Replies

Posted

Hello guys!

 

I'm new to forge-modding, and I'm having some trouble figuring out how to check if a player crosses a "border".

 

So far I've tried this

public void tickPlayer(PlayerTickEvent event) {
    	double xmax = 10;
    	double xmin = -10;
    	double zmax = 10;
    	double zmin = -10;
    	
    	double bxmax = 15;
    	double bxmin = -15;
    	double bzmax = 15;
    	double bzmin = -15;
    	
    	if((event.player.posX >= xmax || event.player.posZ >= zmax) && (event.player.posX <= bxmax || event.player.posZ <= bzmax)) {
    		event.player.setGameType(GameType.SURVIVAL);
    	}
    	if((event.player.posX <= xmin || event.player.posZ <= zmin) && (event.player.posX >= bxmin || event.player.posZ >= bzmin)) {
    		event.player.setGameType(GameType.SURVIVAL);
    	}
    }

 

and this

public boolean onPlayerExitArea(EntityPlayer player) {
    	
    	double xmax = 10;
    	double xmin = -10;
    	double zmax = 10;
    	double zmin = -10;
    	
    	double bxmax = 15;
    	double bxmin = -15;
    	double bzmax = 15;
    	double bzmin = -15;
    	
    	if((player.posX >= xmax || player.posZ >= zmax) && (player.posX <= bxmax || player.posZ <= bzmax)) {
    		player.setGameType(GameType.SURVIVAL);
    	}
    	if((player.posX <= xmin || player.posZ <= zmin) && (player.posX >= bxmin || player.posZ >= bzmin)) {
    		player.setGameType(GameType.SURVIVAL);
    	}
	return false;
    	
    }

 

Neither of these seem to have any effect, but I've been searching around for about an hour now, and I can't find any reference to go by.

 

Thanks in advance

Troelsen

  • Author

Where are you calling tickPlayer resp. onPlayerExitArea?

 

Thanks for your response!

 

I'm not quite sure I understand what you mean.

 

What I'm trying to do is to set up a square, where you can move freely in creative mode, but when you leave, you'll go survival.

 

However, I'm not really sure how the PlayerTickEvent works, and if that's even the right way to go.

 

I need some sort of update, but I don't know which is the most serverfriendly one.

 

Again, I'm sorry if I come off as blank, I'm new here.

  • Author

You showed two methods. If you do not call them, the code inside them will never be executed (how would it?). So: Where do you call these methods?

 

Oh right. I'm trying to call it in my preInit, I can't seem to do so, though.

  • Author

Thanks for pointing that out.

I've now created an EventHandler class, which seems to have fixed the problem.

 

My gamemode is changed whenever I leave the 20x20 square, it is however, spammed at every tick, which I guess makes sense.

 

Is there a way to check if the player is already in survivalmode, using event.player from tickEvent?

I can't seem to find anything linked with gametype except for setGameType

 

Thanks a ton!

If you look at the implementation of

EntityPlayer#setGameType

in

EntityPlayerMP

, you'll see that it calls

ItemInWorldManager#setGameType

.

ItemInWorldManager

actually stores the

GameType

, so get the player's current

GameType

from their

ItemInWorldManager

instance.

Please don't PM me to ask for help. Asking your question in a public thread preserves it for people who are having the same problem in the future.

  • Author

If you look at the implementation of

EntityPlayer#setGameType

in

EntityPlayerMP

, you'll see that it calls

ItemInWorldManager#setGameType

.

ItemInWorldManager

actually stores the

GameType

, so get the player's current

GameType

from their

ItemInWorldManager

instance.

 

I'm sorry if I come off as a complete fool, but how would I go about grabbing that in this method?

 

@SubscribeEvent
    public void tickEvent(PlayerTickEvent event) {
    	
    	
    	
    	double xmax = 10;
    	double xmin = -10;
    	double zmax = 10;
    	double zmin = -10;
    	
    	double bxmax = 15;
    	double bxmin = -15;
    	double bzmax = 15;
    	double bzmin = -15;
    	
    	if((event.player.posX >= xmax || event.player.posZ >= zmax) && (event.player.posX <= bxmax || event.player.posZ <= bzmax)) {
    		event.player.setGameType(GameType.SURVIVAL);
    	}
    	if((event.player.posX <= xmin || event.player.posZ <= zmin) && (event.player.posX >= bxmin || event.player.posZ >= bzmin)) {
    		event.player.setGameType(GameType.SURVIVAL);
    	}
    	
    	
    }

 

 

EDIT:

 

event.player.capabilities.isCreativeMode seemed to work just fine.

 

Thanks for helping me out you two :3

Guest
This topic is now closed to further replies.

Important Information

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

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.