Skip to content

Commit

Permalink
Azuresque Dikeheart
Browse files Browse the repository at this point in the history
  • Loading branch information
Azzyypaaras committed Sep 25, 2024
1 parent 4b325be commit caafd75
Show file tree
Hide file tree
Showing 13 changed files with 186 additions and 3 deletions.
8 changes: 7 additions & 1 deletion src/main/java/de/dafuqs/spectrum/api/item/AzureDikeItem.java
Original file line number Diff line number Diff line change
Expand Up @@ -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();
Expand All @@ -34,19 +38,21 @@ default void recalculate(LivingEntity livingEntity) {
int maxAzureDike = 0;
float rechargeSpeedModifier = 1F;
float rechargeDelayAfterDamageModifier = 1F;
float maxAzureDikeMultiplier = 1F;
for (Pair<SlotReference, ItemStack> 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);
}
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -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.*;

Expand All @@ -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) {
Expand Down
Original file line number Diff line number Diff line change
@@ -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<Text> 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"));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -471,6 +471,7 @@ public Map<Enchantment, Integer> 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));
Expand Down Expand Up @@ -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);
Expand Down
4 changes: 4 additions & 0 deletions src/main/resources/assets/spectrum/lang/en_us.json
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"parent": "minecraft:item/generated",
"textures": {
"layer0": "spectrum:item/azuresque_dike_core"
}
}
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
{
"criteria": {
"criteria": {
"max_azure_dike_charge": {
"trigger": "spectrum:azure_dike_charge_change",
"new_charges": {
"min": 30
}
},
"gotten_previous": {
"trigger":"revelationary:advancement_gotten",
"conditions": { "advancement_identifier": "spectrum:midgame/get_azure_dike_charge" }
}
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
{
"criteria": {
"collected_aether_vestiges": {
"trigger": "revelationary:advancement_gotten",
"conditions": {
"advancement_identifier": "spectrum:lategame/collect_aether_vestiges"
}
},
"collected_moonstone_core": {
"trigger": "revelationary:advancement_gotten",
"conditions": {
"advancement_identifier": "spectrum:lategame/collect_moonstone_core"
}
},
"collected_downstone_fragments": {
"trigger": "revelationary:advancement_gotten",
"conditions": {
"advancement_identifier": "spectrum:lategame/collect_downstone_fragments"
}
},
"got_large_amounts_of_dike": {
"trigger": "revelationary:advancement_gotten",
"conditions": {
"advancement_identifier": "spectrum:hidden/get_substantial_azure_dike_charge"
}
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
{
"name": "item.spectrum.azuresque_dike_core",
"condition": {
"type": "modonomicon:advancement",
"advancement_id": "spectrum:unlocks/trinkets/azuresque_dike_core"
},
"icon": "spectrum:azuresque_dike_core",
"category": "spectrum:equipment",
"hide_while_locked": true,
"parents": [
{
"entry": "spectrum:equipment/trinkets/base_trinkets",
"line_enabled": false
}
],
"background_u_index": 0,
"background_v_index": 1,
"x": 10,
"y": -3,
"pages": [
{
"type": "modonomicon:text",
"text": "book.spectrum.guidebook.azuresque_dike_core.page0.text",
"title": "item.spectrum.azuresque_dike_core"
},
{
"type": "spectrum:fusion_shrine_crafting",
"text": "book.spectrum.guidebook.azuresque_dike_core.page1.text",
"title": "container.spectrum.rei.fusion_recipe",
"recipe_id": "spectrum:fusion_shrine/trinkets/azuresque_dike_core"
}
]
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
{
"type": "spectrum:fusion_shrine",
"time": 1200,
"experience": 20.0,
"fluid": {
"fluid": "spectrum:liquid_crystal"
},
"ingredients": [
{
"item": "spectrum:downstone_fragments",
"count": 4
},
{
"item": "spectrum:aether_vestiges"
},
{
"item": "spectrum:moonstone_core"
},
{
"item": "spectrum:refined_azurite",
"count": 16
},
{
"item": "spectrum:blue_pigment",
"count": 16
}
],
"result": {
"item": "spectrum:azuresque_dike_core"
},
"required_advancement": "spectrum:unlocks/trinkets/azuresque_dike_core",
"world_conditions": [],
"start_crafting_effect": "nothing",
"during_crafting_effects": [],
"finish_crafting_effect": "single_visual_explosion_on_shrine"
}
3 changes: 2 additions & 1 deletion src/main/resources/data/trinkets/tags/items/chest/pin.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
"replace": false,
"values": [
"spectrum:radiance_pin",
"spectrum:gleaming_pin"
"spectrum:gleaming_pin",
"spectrum:azuresque_dike_core"
]
}

0 comments on commit caafd75

Please sign in to comment.