[Changes] New method to add Item Triggers

This commit is contained in:
Frank 2022-12-10 15:17:36 +01:00
parent 03c92a8407
commit 4a9ddbe284

View file

@ -25,11 +25,9 @@ import net.minecraft.world.level.levelgen.structure.Structure;
import com.google.gson.Gson; import com.google.gson.Gson;
import com.google.gson.GsonBuilder; import com.google.gson.GsonBuilder;
import java.util.HashMap; import java.util.*;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.function.Consumer; import java.util.function.Consumer;
import java.util.stream.Collectors;
public class AdvancementManager { public class AdvancementManager {
static class OrderedBuilder extends Advancement.Builder { static class OrderedBuilder extends Advancement.Builder {
@ -322,6 +320,21 @@ public class AdvancementManager {
); );
} }
public Builder addInventoryChangedAnyCriterion(String name, ItemLike... items) {
InventoryChangeTrigger.TriggerInstance trigger =
InventoryChangeTrigger.TriggerInstance.hasItems(new ItemPredicate(
null,
Arrays.stream(items).map(i -> i.asItem()).collect(Collectors.toSet()),
MinMaxBounds.Ints.ANY,
MinMaxBounds.Ints.ANY,
EnchantmentPredicate.NONE,
EnchantmentPredicate.NONE,
null,
NbtPredicate.ANY
));
return addCriterion(name, trigger);
}
public Builder addInventoryChangedCriterion(String name, TagKey<Item> tag) { public Builder addInventoryChangedCriterion(String name, TagKey<Item> tag) {
return addCriterion( return addCriterion(
name, name,
@ -363,8 +376,8 @@ public class AdvancementManager {
} }
public Builder addWoodCriterion(WoodenComplexMaterial mat) { public Builder addWoodCriterion(WoodenComplexMaterial mat) {
return addInventoryChangedCriterion( return addInventoryChangedAnyCriterion(
mat.getBaseName(), "got_" + mat.getBaseName(),
mat.getBlock(WoodenComplexMaterial.BLOCK_LOG), mat.getBlock(WoodenComplexMaterial.BLOCK_LOG),
mat.getBlock(WoodenComplexMaterial.BLOCK_BARK), mat.getBlock(WoodenComplexMaterial.BLOCK_BARK),
mat.getBlock(WoodenComplexMaterial.BLOCK_PLANKS) mat.getBlock(WoodenComplexMaterial.BLOCK_PLANKS)