[Feature] More Advancements
This commit is contained in:
parent
74faf97a93
commit
579f2a80ca
5 changed files with 63 additions and 6 deletions
|
@ -2,22 +2,24 @@ package org.betterx.betterend.advancements;
|
|||
|
||||
import org.betterx.betterend.BetterEnd;
|
||||
|
||||
import net.minecraft.advancements.CriteriaTriggers;
|
||||
import net.minecraft.advancements.critereon.EntityPredicate;
|
||||
import net.minecraft.advancements.critereon.PlayerTrigger;
|
||||
|
||||
import net.fabricmc.fabric.api.object.builder.v1.advancement.CriterionRegistry;
|
||||
|
||||
public class BECriteria {
|
||||
public static PlayerTrigger PORTAL_ON;
|
||||
public static PlayerTrigger PORTAL_TRAVEL;
|
||||
public static PlayerTrigger INFUSION_FINISHED;
|
||||
|
||||
public static PlayerTrigger.TriggerInstance PORTAL_ON_TRIGGER;
|
||||
public static PlayerTrigger.TriggerInstance PORTAL_TRAVEL_TRIGGER;
|
||||
public static PlayerTrigger.TriggerInstance INFUSION_FINISHED_TRIGGER;
|
||||
|
||||
|
||||
public static void register() {
|
||||
PORTAL_ON = CriterionRegistry.register(new PlayerTrigger(BetterEnd.makeID("portal_on")));
|
||||
PORTAL_TRAVEL = CriterionRegistry.register(new PlayerTrigger(BetterEnd.makeID("portal_travel")));
|
||||
PORTAL_ON = CriteriaTriggers.register(new PlayerTrigger(BetterEnd.makeID("portal_on")));
|
||||
PORTAL_TRAVEL = CriteriaTriggers.register(new PlayerTrigger(BetterEnd.makeID("portal_travel")));
|
||||
INFUSION_FINISHED = CriteriaTriggers.register(new PlayerTrigger(BetterEnd.makeID("infusion_finished")));
|
||||
|
||||
PORTAL_ON_TRIGGER = new PlayerTrigger.TriggerInstance(
|
||||
PORTAL_ON.getId(),
|
||||
|
@ -27,5 +29,9 @@ public class BECriteria {
|
|||
PORTAL_TRAVEL.getId(),
|
||||
EntityPredicate.Composite.ANY
|
||||
);
|
||||
INFUSION_FINISHED_TRIGGER = new PlayerTrigger.TriggerInstance(
|
||||
INFUSION_FINISHED.getId(),
|
||||
EntityPredicate.Composite.ANY
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -69,5 +69,36 @@ public class EndAdvancements {
|
|||
.requirements(RequirementsStrategy.AND)
|
||||
.rewardXP(1500)
|
||||
.buildAndRegister();
|
||||
|
||||
ResourceLocation allElytras = AdvancementManager.Builder
|
||||
.create(BetterEnd.makeID("all_elytras"))
|
||||
.parent(root)
|
||||
.startDisplay(EndItems.CRYSTALITE_ELYTRA)
|
||||
.frame(FrameType.GOAL)
|
||||
.endDisplay()
|
||||
.addInventoryChangedCriterion("vanilla", Items.ELYTRA)
|
||||
.addInventoryChangedCriterion("crystalite", EndItems.CRYSTALITE_ELYTRA)
|
||||
.addInventoryChangedCriterion("armored", EndItems.ARMORED_ELYTRA)
|
||||
.requirements(RequirementsStrategy.AND)
|
||||
.buildAndRegister();
|
||||
|
||||
ResourceLocation infusion = AdvancementManager.Builder
|
||||
.create(BetterEnd.makeID("infusion"))
|
||||
.parent(root)
|
||||
.startDisplay(EndBlocks.INFUSION_PEDESTAL)
|
||||
.endDisplay()
|
||||
.addInventoryChangedCriterion("infusion_pedestal", EndBlocks.INFUSION_PEDESTAL)
|
||||
.requirements(RequirementsStrategy.OR)
|
||||
.buildAndRegister();
|
||||
|
||||
ResourceLocation infusionFinished = AdvancementManager.Builder
|
||||
.create(BetterEnd.makeID("infusion_finished"))
|
||||
.parent(infusion)
|
||||
.startDisplay(Items.ENDER_EYE)
|
||||
.frame(FrameType.GOAL)
|
||||
.endDisplay()
|
||||
.addCriterion("finished", BECriteria.INFUSION_FINISHED_TRIGGER)
|
||||
.requirements(RequirementsStrategy.OR)
|
||||
.buildAndRegister();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package org.betterx.betterend.rituals;
|
||||
|
||||
import org.betterx.betterend.advancements.BECriteria;
|
||||
import org.betterx.betterend.blocks.entities.InfusionPedestalEntity;
|
||||
import org.betterx.betterend.blocks.entities.PedestalBlockEntity;
|
||||
import org.betterx.betterend.particle.InfusionParticleType;
|
||||
|
@ -15,6 +16,7 @@ import net.minecraft.world.entity.player.Player;
|
|||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.minecraft.world.level.block.entity.BlockEntity;
|
||||
import net.minecraft.world.phys.Vec3;
|
||||
|
||||
import java.awt.*;
|
||||
import java.util.Arrays;
|
||||
|
@ -111,6 +113,12 @@ public class InfusionRitual implements Container {
|
|||
if (progress == time) {
|
||||
clearContent();
|
||||
input.setItem(0, activeRecipe.assemble(this));
|
||||
if (world instanceof ServerLevel sl) {
|
||||
sl.getPlayers(p -> p.position()
|
||||
.subtract(new Vec3(worldPos.getX(), worldPos.getY(), worldPos.getZ()))
|
||||
.length() < 16)
|
||||
.forEach(p -> BECriteria.INFUSION_FINISHED.trigger(p));
|
||||
}
|
||||
reset();
|
||||
} else if (world instanceof ServerLevel) {
|
||||
ServerLevel serverLevel = (ServerLevel) world;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue