mirror of
https://github.com/MinecraftForge/MinecraftForge.git
synced 2026-11-12 08:17:35 +00:00
[1.19.X] Adding more precise events for Advancements (#8360)
This commit is contained in:
1 parent
a2b35cae92
commit
db14cbb0e0
6 files changed
+211
-1
No files matched your search
@@ -1030,6 +1030,10 @@ public class ForgeHooks
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated See {@link ForgeEventFactory#onAdvancementEarnedEvent} and {@link ForgeEventFactory#onAdvancementProgressedEvent}
|
||||
*/
|
||||
@Deprecated(forRemoval = true, since = "1.19.2")
|
||||
public static void onAdvancement(ServerPlayer player, Advancement advancement)
|
||||
{
|
||||
MinecraftForge.EVENT_BUS.post(new AdvancementEvent(player, advancement));
|
||||
|
||||
@@ -13,6 +13,9 @@ import java.util.function.Consumer;
|
||||
import com.mojang.authlib.GameProfile;
|
||||
|
||||
import com.mojang.brigadier.CommandDispatcher;
|
||||
|
||||
import net.minecraft.advancements.Advancement;
|
||||
import net.minecraft.advancements.AdvancementProgress;
|
||||
import net.minecraft.commands.CommandBuildContext;
|
||||
import net.minecraft.server.MinecraftServer;
|
||||
import net.minecraft.server.ReloadableServerResources;
|
||||
@@ -97,6 +100,9 @@ import net.minecraftforge.event.entity.living.LivingPackSizeEvent;
|
||||
import net.minecraftforge.event.entity.living.LivingSpawnEvent;
|
||||
import net.minecraftforge.event.entity.living.LivingSpawnEvent.AllowDespawn;
|
||||
import net.minecraftforge.event.entity.living.ZombieEvent.SummonAidEvent;
|
||||
import net.minecraftforge.event.entity.player.AdvancementEvent.AdvancementEarnEvent;
|
||||
import net.minecraftforge.event.entity.player.AdvancementEvent.AdvancementProgressEvent;
|
||||
import net.minecraftforge.event.entity.player.AdvancementEvent.AdvancementProgressEvent.ProgressType;
|
||||
import net.minecraftforge.event.entity.player.ArrowLooseEvent;
|
||||
import net.minecraftforge.event.entity.player.ArrowNockEvent;
|
||||
import net.minecraftforge.event.entity.player.BonemealEvent;
|
||||
@@ -129,6 +135,8 @@ import net.minecraftforge.event.level.LevelEvent;
|
||||
import net.minecraftforge.eventbus.api.Event;
|
||||
import net.minecraftforge.eventbus.api.Event.Result;
|
||||
import net.minecraftforge.fml.LogicalSide;
|
||||
|
||||
import org.jetbrains.annotations.ApiStatus;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
@@ -820,4 +828,16 @@ public class ForgeEventFactory
|
||||
return WeightedRandomList.create();
|
||||
return WeightedRandomList.create(event.getSpawnerDataList());
|
||||
}
|
||||
|
||||
@ApiStatus.Internal
|
||||
public static void onAdvancementEarnedEvent(Player player, Advancement earned)
|
||||
{
|
||||
MinecraftForge.EVENT_BUS.post(new AdvancementEarnEvent(player, earned));
|
||||
}
|
||||
|
||||
@ApiStatus.Internal
|
||||
public static void onAdvancementProgressedEvent(Player player, Advancement progressed, AdvancementProgress advancementProgress, String criterion, ProgressType progressType)
|
||||
{
|
||||
MinecraftForge.EVENT_BUS.post(new AdvancementProgressEvent(player, progressed, advancementProgress, criterion, progressType));
|
||||
}
|
||||
}
|
||||
@@ -6,6 +6,7 @@
|
||||
package net.minecraftforge.event.entity.player;
|
||||
|
||||
import net.minecraft.advancements.Advancement;
|
||||
import net.minecraft.advancements.AdvancementProgress;
|
||||
import net.minecraft.world.entity.player.Player;
|
||||
import net.minecraftforge.common.MinecraftForge;
|
||||
|
||||
@@ -17,7 +18,9 @@ import net.minecraftforge.common.MinecraftForge;
|
||||
* This event does not have a result. {@link HasResult}<br>
|
||||
* <br>
|
||||
* This event is fired on the {@link MinecraftForge#EVENT_BUS}.
|
||||
* @deprecated Use {@link net.minecraftforge.event.entity.player.AdvancementEvent.AdvancementEarnEvent} and {@link net.minecraftforge.event.entity.player.AdvancementEvent.AdvancementProgressEvent} instead
|
||||
*/
|
||||
@Deprecated(since = "1.19.2")
|
||||
public class AdvancementEvent extends PlayerEvent
|
||||
{
|
||||
private final Advancement advancement;
|
||||
@@ -32,4 +35,106 @@ public class AdvancementEvent extends PlayerEvent
|
||||
{
|
||||
return advancement;
|
||||
}
|
||||
|
||||
/**
|
||||
* Fired when the player earns an advancement. An advancement is earned once its requirements are complete.
|
||||
*
|
||||
* <p>Note that advancements may be hidden from the player or used in background mechanics, such as recipe
|
||||
* advancements for unlocking recipes in the recipe book.</p>
|
||||
*
|
||||
* <p>This event is not {@linkplain net.minecraftforge.eventbus.api.Cancelable cancellable}, and does not {@linkplain HasResult have a result}.</p>
|
||||
*
|
||||
* <p>This event is fired on the {@linkplain MinecraftForge#EVENT_BUS main Forge event bus},
|
||||
* only on the {@linkplain net.minecraftforge.fml.LogicalSide#SERVER logical server}.</p>
|
||||
*
|
||||
* @see AdvancementProgress#isDone()
|
||||
*/
|
||||
//todo: should extend AdvancementEvent in 1.20
|
||||
public static class AdvancementEarnEvent extends PlayerEvent
|
||||
{
|
||||
private final Advancement advancement;
|
||||
|
||||
public AdvancementEarnEvent(Player player, Advancement earned)
|
||||
{
|
||||
super(player);
|
||||
this.advancement = earned;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* {@return the advancement that was earned}
|
||||
*/
|
||||
public Advancement getAdvancement()
|
||||
{
|
||||
return advancement;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Fired when the player's progress on an advancement criterion is granted or revoked.
|
||||
*
|
||||
* <p>This event is not {@linkplain net.minecraftforge.eventbus.api.Cancelable cancellable}, and does not {@linkplain HasResult have a result}.</p>
|
||||
*
|
||||
* <p>This event is fired on the {@linkplain MinecraftForge#EVENT_BUS main Forge event bus},
|
||||
* only on the {@linkplain net.minecraftforge.fml.LogicalSide#SERVER logical server}.</p>
|
||||
*
|
||||
* @see AdvancementEarnEvent
|
||||
* @see net.minecraft.server.PlayerAdvancements#award(Advancement, String)
|
||||
* @see net.minecraft.server.PlayerAdvancements#revoke(Advancement, String)
|
||||
*/
|
||||
//todo: should extend AdvancementEvent in 1.20
|
||||
public static class AdvancementProgressEvent extends PlayerEvent
|
||||
{
|
||||
private final Advancement advancement;
|
||||
private final AdvancementProgress advancementProgress;
|
||||
private final String criterionName;
|
||||
private final AdvancementEvent.AdvancementProgressEvent.ProgressType progressType;
|
||||
|
||||
public AdvancementProgressEvent(Player player, Advancement progressed, AdvancementProgress advancementProgress, String criterionName, AdvancementEvent.AdvancementProgressEvent.ProgressType progressType)
|
||||
{
|
||||
super(player);
|
||||
this.advancement = progressed;
|
||||
this.advancementProgress = advancementProgress;
|
||||
this.criterionName = criterionName;
|
||||
this.progressType = progressType;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* {@return The advancement that was progressed}
|
||||
*/
|
||||
public Advancement getAdvancement()
|
||||
{
|
||||
return advancement;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@return the progress of the advancement}
|
||||
*/
|
||||
public AdvancementProgress getAdvancementProgress()
|
||||
{
|
||||
return advancementProgress;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@return name of the criterion that was progressed}
|
||||
*/
|
||||
public String getCriterionName()
|
||||
{
|
||||
return criterionName;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@return The type of progress for the criterion in this event}
|
||||
*/
|
||||
public ProgressType getProgressType()
|
||||
{
|
||||
return progressType;
|
||||
}
|
||||
|
||||
public enum ProgressType
|
||||
{
|
||||
GRANT, REVOKE
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user