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.

[1.15.2] How to check whether a player has a certain advancement?

Featured Replies

Posted

I want to play a sound when an item is picked up (EntityItemPickup), but only if a certain advancement has been already get.

It seems I can use ServerPlayerEntity and get the advancements from there, with the help of AdvancementManager:


 

PlayerEntity player = event.getPlayer();
World world = player.getEntityWorld();
AdvancementManager manager = new AdvancementManager();
if(world.isRemote){
	boolean flag = ((ServerPlayerEntity) player).getAdvancements().getProgress(manager.getAdvancement(new ResourceLocation("minecraft:story/mine_diamond"))).isDone();
	if(!flag){
		#play the sound
	}
}

The flag doesn't seem to be working. How do I refer to the advancements of the client efficiently? Is this the correct way? Perhaps the resource location is not working- how do I get the correct resource?

 

Alternatively, is there any event for when the player gets a specific achievement?

if(world.isRemote){

 

Not sure if you actually want to run this on the client, clients could lie about what advancements are completed, and/or won't be in sync with the server advancements. Of course playing a sound would definitely occur on the client, but logic checks should probably be done server-side.

 

Beyond that, I haven't tried doing this myself, so I am unsure how to go about it. If I have some time to tinker I might check it out and if I find out anything, I'll come back and post. :)

Edited by Ugdhar

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
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

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.