[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 org.betterx.betterend.BetterEnd;
|
||||||
|
|
||||||
|
import net.minecraft.advancements.CriteriaTriggers;
|
||||||
import net.minecraft.advancements.critereon.EntityPredicate;
|
import net.minecraft.advancements.critereon.EntityPredicate;
|
||||||
import net.minecraft.advancements.critereon.PlayerTrigger;
|
import net.minecraft.advancements.critereon.PlayerTrigger;
|
||||||
|
|
||||||
import net.fabricmc.fabric.api.object.builder.v1.advancement.CriterionRegistry;
|
|
||||||
|
|
||||||
public class BECriteria {
|
public class BECriteria {
|
||||||
public static PlayerTrigger PORTAL_ON;
|
public static PlayerTrigger PORTAL_ON;
|
||||||
public static PlayerTrigger PORTAL_TRAVEL;
|
public static PlayerTrigger PORTAL_TRAVEL;
|
||||||
|
public static PlayerTrigger INFUSION_FINISHED;
|
||||||
|
|
||||||
public static PlayerTrigger.TriggerInstance PORTAL_ON_TRIGGER;
|
public static PlayerTrigger.TriggerInstance PORTAL_ON_TRIGGER;
|
||||||
public static PlayerTrigger.TriggerInstance PORTAL_TRAVEL_TRIGGER;
|
public static PlayerTrigger.TriggerInstance PORTAL_TRAVEL_TRIGGER;
|
||||||
|
public static PlayerTrigger.TriggerInstance INFUSION_FINISHED_TRIGGER;
|
||||||
|
|
||||||
|
|
||||||
public static void register() {
|
public static void register() {
|
||||||
PORTAL_ON = CriterionRegistry.register(new PlayerTrigger(BetterEnd.makeID("portal_on")));
|
PORTAL_ON = CriteriaTriggers.register(new PlayerTrigger(BetterEnd.makeID("portal_on")));
|
||||||
PORTAL_TRAVEL = CriterionRegistry.register(new PlayerTrigger(BetterEnd.makeID("portal_travel")));
|
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_TRIGGER = new PlayerTrigger.TriggerInstance(
|
||||||
PORTAL_ON.getId(),
|
PORTAL_ON.getId(),
|
||||||
|
@ -27,5 +29,9 @@ public class BECriteria {
|
||||||
PORTAL_TRAVEL.getId(),
|
PORTAL_TRAVEL.getId(),
|
||||||
EntityPredicate.Composite.ANY
|
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)
|
.requirements(RequirementsStrategy.AND)
|
||||||
.rewardXP(1500)
|
.rewardXP(1500)
|
||||||
.buildAndRegister();
|
.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;
|
package org.betterx.betterend.rituals;
|
||||||
|
|
||||||
|
import org.betterx.betterend.advancements.BECriteria;
|
||||||
import org.betterx.betterend.blocks.entities.InfusionPedestalEntity;
|
import org.betterx.betterend.blocks.entities.InfusionPedestalEntity;
|
||||||
import org.betterx.betterend.blocks.entities.PedestalBlockEntity;
|
import org.betterx.betterend.blocks.entities.PedestalBlockEntity;
|
||||||
import org.betterx.betterend.particle.InfusionParticleType;
|
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.item.ItemStack;
|
||||||
import net.minecraft.world.level.Level;
|
import net.minecraft.world.level.Level;
|
||||||
import net.minecraft.world.level.block.entity.BlockEntity;
|
import net.minecraft.world.level.block.entity.BlockEntity;
|
||||||
|
import net.minecraft.world.phys.Vec3;
|
||||||
|
|
||||||
import java.awt.*;
|
import java.awt.*;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
@ -111,6 +113,12 @@ public class InfusionRitual implements Container {
|
||||||
if (progress == time) {
|
if (progress == time) {
|
||||||
clearContent();
|
clearContent();
|
||||||
input.setItem(0, activeRecipe.assemble(this));
|
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();
|
reset();
|
||||||
} else if (world instanceof ServerLevel) {
|
} else if (world instanceof ServerLevel) {
|
||||||
ServerLevel serverLevel = (ServerLevel) world;
|
ServerLevel serverLevel = (ServerLevel) world;
|
||||||
|
|
|
@ -650,5 +650,11 @@
|
||||||
"advancements.betterend.portal_on.title": "Wege der Ewigkeit",
|
"advancements.betterend.portal_on.title": "Wege der Ewigkeit",
|
||||||
"advancements.betterend.portal_on.description": "Entfache ein ewiges Portal",
|
"advancements.betterend.portal_on.description": "Entfache ein ewiges Portal",
|
||||||
"advancements.betterend.all_the_biomes.title": "Ein Neues Ende",
|
"advancements.betterend.all_the_biomes.title": "Ein Neues Ende",
|
||||||
"advancements.betterend.all_the_biomes.description": "Besuche alle BetterEnd Biome"
|
"advancements.betterend.all_the_biomes.description": "Besuche alle BetterEnd Biome",
|
||||||
|
"advancements.betterend.all_elytras.title": "Flugshow",
|
||||||
|
"advancements.betterend.all_elytras.description": "Besitze alle Elytra Varianten",
|
||||||
|
"advancements.betterend.infusion.title": "Elementarmagie",
|
||||||
|
"advancements.betterend.infusion.description": "Erhalte eine Elementarsockel",
|
||||||
|
"advancements.betterend.infusion_finished.title": "Unendliche Möglichkeiten",
|
||||||
|
"advancements.betterend.infusion_finished.description": "Sei dabei wenn ein Elementarritual abgeschlossen wird."
|
||||||
}
|
}
|
||||||
|
|
|
@ -850,5 +850,11 @@
|
||||||
"advancements.betterend.portal_travel.title": "Eternal Ways",
|
"advancements.betterend.portal_travel.title": "Eternal Ways",
|
||||||
"advancements.betterend.portal_travel.description": "Reise auf uralten Pfaden und benutze ein ewiges Portal",
|
"advancements.betterend.portal_travel.description": "Reise auf uralten Pfaden und benutze ein ewiges Portal",
|
||||||
"advancements.betterend.all_the_biomes.title": "A New Ending",
|
"advancements.betterend.all_the_biomes.title": "A New Ending",
|
||||||
"advancements.betterend.all_the_biomes.description": "Visit all BetterEnd Biomes"
|
"advancements.betterend.all_the_biomes.description": "Visit all BetterEnd Biomes",
|
||||||
|
"advancements.betterend.all_elytras.title": "Airshow",
|
||||||
|
"advancements.betterend.all_elytras.description": "Own all Elytra variants",
|
||||||
|
"advancements.betterend.infusion.title": "Old Rituals",
|
||||||
|
"advancements.betterend.infusion.description": "Obtain an Infusion Pedestal",
|
||||||
|
"advancements.betterend.infusion_finished.title": "Neverending Magic",
|
||||||
|
"advancements.betterend.infusion_finished.description": "Be close to an Infusion Ritual when it is finished"
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue