From caafd75f18b22c104330bd0248fb060b854528c9 Mon Sep 17 00:00:00 2001 From: azzyy Date: Wed, 25 Sep 2024 08:46:07 -0500 Subject: [PATCH] Azuresque Dikeheart --- .../spectrum/api/item/AzureDikeItem.java | 8 +++- .../cca/azure_dike/AzureDikeProvider.java | 9 +++- .../items/trinkets/AzureDikeCoreItem.java | 43 ++++++++++++++++++ .../registries/SpectrumItemGroups.java | 1 + .../spectrum/registries/SpectrumItems.java | 2 + .../resources/assets/spectrum/lang/en_us.json | 4 ++ .../models/item/azuresque_dike_core.json | 6 +++ .../textures/item/azuresque_dike_core.png | Bin 0 -> 837 bytes .../get_substantial_azure_dike_charge.json | 16 +++++++ .../unlocks/trinkets/azuresque_dike_core.json | 28 ++++++++++++ .../trinkets/azuresque_dike_core.json | 33 ++++++++++++++ .../trinkets/azuresque_dike_core.json | 36 +++++++++++++++ .../data/trinkets/tags/items/chest/pin.json | 3 +- 13 files changed, 186 insertions(+), 3 deletions(-) create mode 100644 src/main/java/de/dafuqs/spectrum/items/trinkets/AzureDikeCoreItem.java create mode 100644 src/main/resources/assets/spectrum/models/item/azuresque_dike_core.json create mode 100755 src/main/resources/assets/spectrum/textures/item/azuresque_dike_core.png create mode 100644 src/main/resources/data/spectrum/advancements/hidden/get_substantial_azure_dike_charge.json create mode 100644 src/main/resources/data/spectrum/advancements/unlocks/trinkets/azuresque_dike_core.json create mode 100644 src/main/resources/data/spectrum/modonomicon/books/guidebook/entries/equipment/trinkets/azuresque_dike_core.json create mode 100644 src/main/resources/data/spectrum/recipes/fusion_shrine/trinkets/azuresque_dike_core.json diff --git a/src/main/java/de/dafuqs/spectrum/api/item/AzureDikeItem.java b/src/main/java/de/dafuqs/spectrum/api/item/AzureDikeItem.java index 2604ae89c4..8d34f745a5 100644 --- a/src/main/java/de/dafuqs/spectrum/api/item/AzureDikeItem.java +++ b/src/main/java/de/dafuqs/spectrum/api/item/AzureDikeItem.java @@ -23,6 +23,10 @@ default float azureDikeRechargeSpeedModifier(ItemStack stack) { default float rechargeDelayAfterDamageModifier(ItemStack stack) { return 1.0F; } + + default float maxAzureDikeMultiplier(ItemStack stack) { + return 1.0F; + } default void recalculate(LivingEntity livingEntity) { World world = livingEntity.getWorld(); @@ -34,19 +38,21 @@ default void recalculate(LivingEntity livingEntity) { int maxAzureDike = 0; float rechargeSpeedModifier = 1F; float rechargeDelayAfterDamageModifier = 1F; + float maxAzureDikeMultiplier = 1F; for (Pair pair : trinketComponent.get().getAllEquipped()) { ItemStack stack = pair.getRight(); if (pair.getRight().getItem() instanceof AzureDikeItem azureDikeItem) { maxAzureDike += azureDikeItem.maxAzureDike(stack); rechargeSpeedModifier += azureDikeItem.azureDikeRechargeSpeedModifier(stack) - 1; rechargeDelayAfterDamageModifier += azureDikeItem.rechargeDelayAfterDamageModifier(stack) - 1; + maxAzureDikeMultiplier += azureDikeItem.maxAzureDikeMultiplier(stack) - 1; } } int ticksPerPointOfRecharge = (int) Math.max(1, DefaultAzureDikeComponent.BASE_RECHARGE_DELAY_TICKS / rechargeSpeedModifier); int rechargeDelayTicksAfterGettingHit = (int) Math.max(1, DefaultAzureDikeComponent.BASE_RECHARGE_DELAY_TICKS_AFTER_DAMAGE / rechargeDelayAfterDamageModifier); - azureDikeComponent.set(maxAzureDike, ticksPerPointOfRecharge, rechargeDelayTicksAfterGettingHit, false); + azureDikeComponent.set(Math.round((maxAzureDike * maxAzureDikeMultiplier)), ticksPerPointOfRecharge, rechargeDelayTicksAfterGettingHit, false); } } } diff --git a/src/main/java/de/dafuqs/spectrum/cca/azure_dike/AzureDikeProvider.java b/src/main/java/de/dafuqs/spectrum/cca/azure_dike/AzureDikeProvider.java index 201e62b0ca..59509ac98e 100644 --- a/src/main/java/de/dafuqs/spectrum/cca/azure_dike/AzureDikeProvider.java +++ b/src/main/java/de/dafuqs/spectrum/cca/azure_dike/AzureDikeProvider.java @@ -1,6 +1,8 @@ package de.dafuqs.spectrum.cca.azure_dike; import de.dafuqs.spectrum.*; +import de.dafuqs.spectrum.registries.*; +import dev.emi.trinkets.api.*; import dev.onyxstudios.cca.api.v3.component.*; import net.minecraft.entity.*; @@ -16,7 +18,12 @@ public class AzureDikeProvider { * @return All damage that could not be protected from */ public static float absorbDamage(LivingEntity provider, float incomingDamage) { - return AZURE_DIKE_COMPONENT.get(provider).absorbDamage(incomingDamage); + var passedDamage = AZURE_DIKE_COMPONENT.get(provider).absorbDamage(incomingDamage); + + if (TrinketsApi.getTrinketComponent(provider).map(p -> p.isEquipped(SpectrumItems.AZURESQUE_DIKE_CORE)).orElse(false)) + return passedDamage * 2; + + return passedDamage; } public static float getAzureDikeCharges(LivingEntity provider) { diff --git a/src/main/java/de/dafuqs/spectrum/items/trinkets/AzureDikeCoreItem.java b/src/main/java/de/dafuqs/spectrum/items/trinkets/AzureDikeCoreItem.java new file mode 100644 index 0000000000..0c7a5fa997 --- /dev/null +++ b/src/main/java/de/dafuqs/spectrum/items/trinkets/AzureDikeCoreItem.java @@ -0,0 +1,43 @@ +package de.dafuqs.spectrum.items.trinkets; + +import net.minecraft.client.item.*; +import net.minecraft.item.*; +import net.minecraft.text.*; +import net.minecraft.world.*; +import org.jetbrains.annotations.*; + +import java.util.*; + +public class AzureDikeCoreItem extends AzureDikeTrinketItem { + + public AzureDikeCoreItem(Settings settings) { + super(settings); + } + + @Override + public int maxAzureDike(ItemStack stack) { + return 0; + } + + @Override + public float maxAzureDikeMultiplier(ItemStack stack) { + return 2F; + } + + @Override + public float rechargeDelayAfterDamageModifier(ItemStack stack) { + return 1.5F; + } + + @Override + public float azureDikeRechargeSpeedModifier(ItemStack stack) { + return 1.5F; + } + + @Override + public void appendTooltip(ItemStack stack, @Nullable World world, List tooltip, TooltipContext context) { + tooltip.add(Text.translatable("item.spectrum.azuresque_dike_core.tooltip")); + tooltip.add(Text.translatable("item.spectrum.azuresque_dike_core.tooltip2")); + tooltip.add(Text.translatable("item.spectrum.azuresque_dike_core.tooltip3")); + } +} diff --git a/src/main/java/de/dafuqs/spectrum/registries/SpectrumItemGroups.java b/src/main/java/de/dafuqs/spectrum/registries/SpectrumItemGroups.java index 2a1713615f..9fdab43b0d 100644 --- a/src/main/java/de/dafuqs/spectrum/registries/SpectrumItemGroups.java +++ b/src/main/java/de/dafuqs/spectrum/registries/SpectrumItemGroups.java @@ -142,6 +142,7 @@ public static void register() { entries.add(SpectrumItems.WEEPING_CIRCLET); entries.add(SpectrumItems.PUFF_CIRCLET); entries.add(SpectrumItems.WHISPY_CIRCLET); + entries.add(SpectrumItems.AZURESQUE_DIKE_CORE); entries.add(SpectrumItems.CIRCLET_OF_ARROGANCE); entries.add(SpectrumItems.AETHER_GRACED_NECTAR_GLOVES); entries.add(SpectrumItems.NEAT_RING); diff --git a/src/main/java/de/dafuqs/spectrum/registries/SpectrumItems.java b/src/main/java/de/dafuqs/spectrum/registries/SpectrumItems.java index 10f43a1d5d..530d18eac6 100644 --- a/src/main/java/de/dafuqs/spectrum/registries/SpectrumItems.java +++ b/src/main/java/de/dafuqs/spectrum/registries/SpectrumItems.java @@ -471,6 +471,7 @@ public Map getDefaultEnchantments() { public static final TakeOffBeltItem TAKE_OFF_BELT = new TakeOffBeltItem(IS.of(1, Rarity.UNCOMMON)); public static final Item AZURE_DIKE_BELT = new AzureDikeBeltItem(IS.of(1, Rarity.UNCOMMON)); public static final Item AZURE_DIKE_RING = new AzureDikeRingItem(IS.of(1, Rarity.UNCOMMON)); + public static final Item AZURESQUE_DIKE_CORE = new AzureDikeCoreItem(IS.of(1, Rarity.EPIC)); public static final InkDrainTrinketItem SHIELDGRASP_AMULET = new AzureDikeAmuletItem(IS.of(1, Rarity.UNCOMMON)); public static final InkDrainTrinketItem HEARTSINGERS_REWARD = new ExtraHealthRingItem(IS.of(1, Rarity.UNCOMMON)); public static final InkDrainTrinketItem GLOVES_OF_DAWNS_GRASP = new ExtraReachGlovesItem(IS.of(1, Rarity.UNCOMMON)); @@ -932,6 +933,7 @@ public static void registerTrinkets() { register("take_off_belt", TAKE_OFF_BELT, DyeColor.YELLOW); register("azure_dike_belt", AZURE_DIKE_BELT, DyeColor.BLUE); register("azure_dike_ring", AZURE_DIKE_RING, DyeColor.BLUE); + register("azuresque_dike_core", AZURESQUE_DIKE_CORE, DyeColor.WHITE); register("shieldgrasp_amulet", SHIELDGRASP_AMULET, DyeColor.BLUE); register("heartsingers_reward", HEARTSINGERS_REWARD, DyeColor.PINK); register("gloves_of_dawns_grasp", GLOVES_OF_DAWNS_GRASP, DyeColor.YELLOW); diff --git a/src/main/resources/assets/spectrum/lang/en_us.json b/src/main/resources/assets/spectrum/lang/en_us.json index 9eb73ba82f..f353b36d41 100644 --- a/src/main/resources/assets/spectrum/lang/en_us.json +++ b/src/main/resources/assets/spectrum/lang/en_us.json @@ -4099,6 +4099,10 @@ "item.spectrum.azure_dike_provider.tooltip": "§7Grants §a%d§7 units of §9Azure Dike", "item.spectrum.azure_dike_ring": "Azure Dike Ring", "item.spectrum.azure_dike_ring.tooltip": "§7Increases §9Azure Dike§7 charging", + "item.spectrum.azuresque_dike_core": "Azuresque Dike Core", + "item.spectrum.azuresque_dike_core.tooltip": "§7Empowers other sources of §9Azure Dike", + "item.spectrum.azuresque_dike_core.tooltip2": "§7Increases §9Azure Dike§7 charging and recovery speed", + "item.spectrum.azuresque_dike_core.tooltip3": "§7Doubles damage that cannot be absorbed", "item.spectrum.azurite_glass_ampoule": "Azurite Glass Ampoule", "item.spectrum.azurite_glass_ampoule.tooltip": "Summon spheres of Ink that home in on your enemies", "item.spectrum.bag_of_holding": "Bag of Holding", diff --git a/src/main/resources/assets/spectrum/models/item/azuresque_dike_core.json b/src/main/resources/assets/spectrum/models/item/azuresque_dike_core.json new file mode 100644 index 0000000000..0cd1ba9ace --- /dev/null +++ b/src/main/resources/assets/spectrum/models/item/azuresque_dike_core.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "spectrum:item/azuresque_dike_core" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/textures/item/azuresque_dike_core.png b/src/main/resources/assets/spectrum/textures/item/azuresque_dike_core.png new file mode 100755 index 0000000000000000000000000000000000000000..44e56657d9cafdb84b0a8395bb5514df21c17804 GIT binary patch literal 837 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-HD>VEXUr;uumf z=WVoiMzEvE+$lFY_PT147>8rQkk_W50yjNN;)H||tM?i^km-IpZ zZAu;&Z;2SL+hU@$Eot_GgR@$eIr`*IU8eWwn9F(9{J7(7F;DJpewBFdj-}icI@ zN>_3ne4eZS=j?0gXf4qw&81gTwAgC2tRJm%xiia)<>!1wwgT=4ZM%OQf3`N3^=`As z7B$Un?=#r%U3p;6xqi}1o)7!lcic;=K6l%kKgP?Gt%I@8{6Ma0Lil0*dHSsT_Nj9G z`Fg>-#_qfDkC*ctA8gMnV~F2a#rfe}a_j;7V~-A$zrV{m=i7vb3k5^@`pz>LHbgU+ z>r^+$7VXqO5ZtMIAl>uq?51=6s?##B{|~pYV?M%=$9QMM8^*Hg@~Fji>u(-<_(60t zr`hY^fWL>mzA>hPo$I!e{laJ4yRZFgq}b(n()-U%Qs0#N+!7iN8hfR~SNeXqci%nB&iEf!g_%6# zzf!65kB#py*IxX=JWOvr^S)(yx&`ag`3ve_`#spAUK9NOiMf+kCu5SsO7<9Z?k1zfn+;%|n!Nk{9wSsS7$iu>E#fkrSby&7;t-F!F<;S