new datagen system for advancements

This commit is contained in:
J-onasJones 2024-10-04 19:37:12 +02:00
parent 6a655d7012
commit ef2c5ae188
8 changed files with 375 additions and 0 deletions

View file

@ -0,0 +1,34 @@
{
"parent": "minecraft:nec/root",
"criteria": {
"got_ak47": {
"conditions": {
"items": [
{
"items": "nec:ak_47"
}
]
},
"trigger": "minecraft:inventory_changed"
}
},
"display": {
"description": {
"translate": "advancements.nec.ak_47.description"
},
"hidden": true,
"icon": {
"count": 1,
"id": "nec:ak_47"
},
"title": {
"translate": "advancements.nec.ak_47.title"
}
},
"requirements": [
[
"got_ak47"
]
],
"sends_telemetry_event": true
}

View file

@ -0,0 +1,34 @@
{
"parent": "minecraft:nec/got_java_block",
"criteria": {
"got_bedrock": {
"conditions": {
"items": [
{
"items": "minecraft:bedrock"
}
]
},
"trigger": "minecraft:inventory_changed"
}
},
"display": {
"description": {
"translate": "advancements.story.bedrock.description"
},
"frame": "challenge",
"icon": {
"count": 1,
"id": "minecraft:bedrock"
},
"title": {
"translate": "advancements.story.bedrock.title"
}
},
"requirements": [
[
"got_bedrock"
]
],
"sends_telemetry_event": true
}

View file

@ -0,0 +1,37 @@
{
"parent": "minecraft:nec/root",
"criteria": {
"got_dirt_sword": {
"conditions": {
"items": [
{
"items": "nec:dirt_sword"
}
]
},
"trigger": "minecraft:inventory_changed"
}
},
"display": {
"description": {
"translate": "advancements.nec.dirt_sword.description"
},
"hidden": true,
"icon": {
"count": 1,
"id": "nec:dirt_sword"
},
"title": {
"translate": "advancements.nec.dirt_sword.title"
}
},
"requirements": [
[
"got_dirt_sword"
]
],
"rewards": {
"experience": 1000
},
"sends_telemetry_event": true
}

View file

@ -0,0 +1,34 @@
{
"parent": "minecraft:nec/root",
"criteria": {
"got_fletching_stairs": {
"conditions": {
"items": [
{
"items": "nec:fletching_stairs"
}
]
},
"trigger": "minecraft:inventory_changed"
}
},
"display": {
"description": {
"translate": "advancements.nec.fletching_stairs.description"
},
"hidden": true,
"icon": {
"count": 1,
"id": "nec:fletching_stairs"
},
"title": {
"translate": "advancements.nec.fletching_stairs.title"
}
},
"requirements": [
[
"got_fletching_stairs"
]
],
"sends_telemetry_event": true
}

View file

@ -0,0 +1,34 @@
{
"parent": "minecraft:nec/got_pocket_block",
"criteria": {
"got_java_block": {
"conditions": {
"items": [
{
"items": "nec:java_block"
}
]
},
"trigger": "minecraft:inventory_changed"
}
},
"display": {
"description": {
"translate": "advancements.nec.java_block.description"
},
"hidden": true,
"icon": {
"count": 1,
"id": "nec:java_block"
},
"title": {
"translate": "advancements.nec.java_block.title"
}
},
"requirements": [
[
"got_java_block"
]
],
"sends_telemetry_event": true
}

View file

@ -0,0 +1,34 @@
{
"parent": "minecraft:nec/root",
"criteria": {
"got_pocket_block": {
"conditions": {
"items": [
{
"items": "nec:pocket_block"
}
]
},
"trigger": "minecraft:inventory_changed"
}
},
"display": {
"description": {
"translate": "advancements.nec.pocket_block.description"
},
"hidden": true,
"icon": {
"count": 1,
"id": "nec:pocket_block"
},
"title": {
"translate": "advancements.nec.pocket_block.title"
}
},
"requirements": [
[
"got_pocket_block"
]
],
"sends_telemetry_event": true
}

View file

@ -0,0 +1,27 @@
{
"criteria": {
"nec_root": {
"trigger": "minecraft:tick"
}
},
"display": {
"announce_to_chat": false,
"description": {
"translate": "advancements.nec.root.description"
},
"icon": {
"count": 1,
"id": "minecraft:dirt"
},
"show_toast": false,
"title": {
"translate": "advancements.nec.root.title"
}
},
"requirements": [
[
"nec_root"
]
],
"sends_telemetry_event": true
}

View file

@ -0,0 +1,141 @@
package me.jonasjones.nec.datagen;
import net.fabricmc.fabric.api.datagen.v1.DataGeneratorEntrypoint;
import net.fabricmc.fabric.api.datagen.v1.FabricDataGenerator;
import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput;
import net.fabricmc.fabric.api.datagen.v1.provider.FabricAdvancementProvider;
import net.minecraft.advancement.*;
import java.util.concurrent.CompletableFuture;
import java.util.function.Consumer;
import net.minecraft.advancement.criterion.AbstractCriterion;
import net.minecraft.advancement.criterion.ConsumeItemCriterion;
import net.minecraft.advancement.criterion.InventoryChangedCriterion;
import net.minecraft.advancement.criterion.TickCriterion;
import net.minecraft.item.Items;
import net.minecraft.registry.RegistryWrapper;
import net.minecraft.text.Text;
import net.minecraft.util.Identifier;
import static me.jonasjones.nec.block.ModBlocks.*;
import static me.jonasjones.nec.item.ModItems.AK47_ITEM;
import static me.jonasjones.nec.item.ModItems.DIRT_SWORD_ITEM;
public class NecDataGen implements DataGeneratorEntrypoint {
@Override
public void onInitializeDataGenerator(FabricDataGenerator fabricDataGenerator) {
FabricDataGenerator.Pack pack = fabricDataGenerator.createPack();
pack.addProvider(AdvancementsProvider::new);
}
static class AdvancementsProvider extends FabricAdvancementProvider {
protected AdvancementsProvider(FabricDataOutput output, CompletableFuture<RegistryWrapper.WrapperLookup> registryLookup) {
super(output, registryLookup);
}
@Override
public void generateAdvancement(RegistryWrapper.WrapperLookup registryLookup, Consumer<AdvancementEntry> consumer) {
AdvancementEntry rootAdvancement = Advancement.Builder.create()
.display(
Items.DIRT, // The display icon
Text.translatable("advancements.nec.root.title"), // The title
Text.translatable("advancements.nec.root.description"), // The description//new Identifier("textures/gui/advancements/backgrounds/adventure.png","textures/gui/advancements/backgrounds/adventure.png"), // Background image used
null,
AdvancementFrame.TASK, // Options: TASK, CHALLENGE, GOAL
false, // Show toast top right
false, // Announce to chat
false // Hidden in the advancement tab
)
// The first string used in criterion is the name referenced by other advancements when they want to have 'requirements'
.criterion("nec_root", TickCriterion.Conditions.createTick())
.build(consumer, "nec" + "/root");
AdvancementEntry gotDirtSwordAdvancement = Advancement.Builder.create().parent(rootAdvancement)
.display(
DIRT_SWORD_ITEM,
Text.translatable("advancements.nec.dirt_sword.title"),
Text.translatable("advancements.nec.dirt_sword.description"),
null, // children to parent advancements don't need a background set
AdvancementFrame.TASK,
true,
true,
true
)
.rewards(AdvancementRewards.Builder.experience(1000))
.criterion("got_dirt_sword", InventoryChangedCriterion.Conditions.items(DIRT_SWORD_ITEM))
.build(consumer, "nec" + "/got_dirt_sword");
AdvancementEntry gotAK47Advancement = Advancement.Builder.create().parent(rootAdvancement)
.display(
AK47_ITEM,
Text.translatable("advancements.nec.ak_47.title"),
Text.translatable("advancements.nec.ak_47.description"),
null, // children to parent advancements don't need a background set
AdvancementFrame.TASK,
true,
true,
true
)
.criterion("got_ak47", InventoryChangedCriterion.Conditions.items(AK47_ITEM))
.build(consumer, "nec" + "/got_ak47");
AdvancementEntry gotPocketBlockAdvancement = Advancement.Builder.create().parent(rootAdvancement)
.display(
POCKET_BLOCK_ITEM,
Text.translatable("advancements.nec.pocket_block.title"),
Text.translatable("advancements.nec.pocket_block.description"),
null, // children to parent advancements don't need a background set
AdvancementFrame.TASK,
true,
true,
true
)
.criterion("got_pocket_block", InventoryChangedCriterion.Conditions.items(POCKET_BLOCK_ITEM))
.build(consumer, "nec" + "/got_pocket_block");
AdvancementEntry gotJavaBlockAdvancement = Advancement.Builder.create().parent(gotPocketBlockAdvancement)
.display(
JAVA_BLOCK,
Text.translatable("advancements.nec.java_block.title"),
Text.translatable("advancements.nec.java_block.description"),
null, // children to parent advancements don't need a background set
AdvancementFrame.TASK,
true,
true,
true
)
.criterion("got_java_block", InventoryChangedCriterion.Conditions.items(JAVA_BLOCK))
.build(consumer, "nec" + "/got_java_block");
AdvancementEntry gotBedrockAdvancement = Advancement.Builder.create().parent(gotJavaBlockAdvancement)
.display(
Items.BEDROCK,
Text.translatable("advancements.story.bedrock.title"),
Text.translatable("advancements.story.bedrock.description"),
null,
AdvancementFrame.CHALLENGE,
true,
true,
false
)
.criterion("got_bedrock", InventoryChangedCriterion.Conditions.items(Items.BEDROCK))
.build(consumer, "nec" + "/got_bedrock");
AdvancementEntry gotFletchingStairsAdvancement = Advancement.Builder.create().parent(rootAdvancement)
.display(
FLETCHING_STAIRS_TIEM,
Text.translatable("advancements.nec.fletching_stairs.title"),
Text.translatable("advancements.nec.fletching_stairs.description"),
null, // children to parent advancements don't need a background set
AdvancementFrame.TASK,
true,
true,
true
)
.criterion("got_fletching_stairs", InventoryChangedCriterion.Conditions.items(FLETCHING_STAIRS_TIEM))
.build(consumer, "nec" + "/got_fletching_stairs");
}
}
}