|
1 | 1 | package limonblaze.originsclasses.common.apoli.power;
|
2 | 2 |
|
3 | 3 | import io.github.edwinmindcraft.apoli.api.component.IPowerContainer;
|
4 |
| -import io.github.edwinmindcraft.apoli.api.power.configuration.ConfiguredEntityCondition; |
5 | 4 | import io.github.edwinmindcraft.apoli.api.power.configuration.ConfiguredItemCondition;
|
6 | 5 | import io.github.edwinmindcraft.apoli.api.power.configuration.ConfiguredPower;
|
7 | 6 | import io.github.edwinmindcraft.apoli.api.power.factory.PowerFactory;
|
8 | 7 | import limonblaze.originsclasses.common.apoli.configuration.ModifyCraftedFoodConfiguration;
|
| 8 | +import limonblaze.originsclasses.common.event.ModifyCraftResultEvent; |
9 | 9 | import limonblaze.originsclasses.common.registry.OriginsClassesPowers;
|
10 | 10 | import limonblaze.originsclasses.util.NbtUtils;
|
11 |
| -import net.minecraft.nbt.CompoundTag; |
12 | 11 | import net.minecraft.nbt.ListTag;
|
13 |
| -import net.minecraft.nbt.Tag; |
14 |
| -import net.minecraft.world.entity.ai.attributes.AttributeModifier; |
| 12 | +import net.minecraft.nbt.StringTag; |
15 | 13 | import net.minecraft.world.entity.player.Player;
|
16 | 14 | import net.minecraft.world.item.ItemStack;
|
17 |
| - |
18 |
| -import java.util.List; |
| 15 | +import net.minecraft.world.level.Level; |
19 | 16 |
|
20 | 17 | public class ModifyCraftedFoodPower extends PowerFactory<ModifyCraftedFoodConfiguration> {
|
21 | 18 |
|
22 | 19 | public ModifyCraftedFoodPower() {
|
23 | 20 | super(ModifyCraftedFoodConfiguration.CODEC);
|
24 | 21 | }
|
25 | 22 |
|
26 |
| - public static void modifyCrafted(Player player, ItemStack stack) { |
27 |
| - List<ModifyCraftedFoodConfiguration> configs = IPowerContainer.getPowers(player, OriginsClassesPowers.MODIFY_CRAFTED_FOOD.get()) |
28 |
| - .stream() |
29 |
| - .filter(cp -> check(cp, player, stack)) |
30 |
| - .map(ConfiguredPower::getConfiguration) |
31 |
| - .toList(); |
32 |
| - ListTag foodModifierTag = new ListTag(); |
33 |
| - configs.stream() |
34 |
| - .flatMap(config -> config.foodModifiers().getContent().stream()) |
35 |
| - .forEach(modifier -> foodModifierTag.add(modifier.save())); |
36 |
| - ListTag saturationModifierTag = new ListTag(); |
37 |
| - configs.stream() |
38 |
| - .flatMap(config -> config.saturationModifiers().getContent().stream()) |
39 |
| - .forEach(modifier -> saturationModifierTag.add(modifier.save())); |
40 |
| - CompoundTag originsClassesTag = stack.getOrCreateTagElement(NbtUtils.ORIGINS_CLASSES); |
41 |
| - if(!foodModifierTag.isEmpty()) originsClassesTag.put(NbtUtils.FOOD_MODIFIERS, foodModifierTag); |
42 |
| - if(!saturationModifierTag.isEmpty()) originsClassesTag.put(NbtUtils.SATURATION_MODIFIERS, saturationModifierTag); |
43 |
| - } |
44 |
| - |
45 |
| - public static boolean check(ConfiguredPower<ModifyCraftedFoodConfiguration, ModifyCraftedFoodPower> cp, Player player, ItemStack stack) { |
46 |
| - return ConfiguredItemCondition.check(cp.getConfiguration().itemCondition(), player.level, stack) && |
47 |
| - ConfiguredEntityCondition.check(cp.getConfiguration().entityCondition(), player); |
| 23 | + public static boolean check(ConfiguredPower<ModifyCraftedFoodConfiguration, ModifyCraftedFoodPower> cp, Level level, ItemStack stack, ModifyCraftResultEvent.CraftingResultType type) { |
| 24 | + return cp.getConfiguration().craftingResultTypes().contains(type) && ConfiguredItemCondition.check(cp.getConfiguration().itemCondition(), level, stack); |
48 | 25 | }
|
49 | 26 |
|
50 |
| - public static List<AttributeModifier> getModifiers(ItemStack stack, String key) { |
51 |
| - return NbtUtils.getOriginsClassesData(stack, key, Tag.TAG_COMPOUND) |
52 |
| - .stream() |
53 |
| - .map(tag -> (CompoundTag)tag) |
54 |
| - .map(AttributeModifier::load) |
55 |
| - .toList(); |
| 27 | + public static void modify(Player player, ItemStack stack, ModifyCraftResultEvent.CraftingResultType type) { |
| 28 | + ListTag tag = new ListTag(); |
| 29 | + IPowerContainer.getPowers(player, OriginsClassesPowers.MODIFY_CRAFTED_FOOD.get()).stream() |
| 30 | + .filter(cp -> check(cp, player.level, stack, type)) |
| 31 | + .forEach(cp -> tag.add(StringTag.valueOf(cp.getConfiguration().modifyFoodPower().power().toString()))); |
| 32 | + if(!tag.isEmpty()) stack.getOrCreateTagElement(NbtUtils.ORIGINS_CLASSES).put(NbtUtils.MODIFY_FOOD_POWERS, tag); |
56 | 33 | }
|
57 | 34 |
|
58 | 35 | }
|
0 commit comments