From 525129bf45ffe24af3018c9d7acc8a9dcc0ff57d Mon Sep 17 00:00:00 2001 From: SammySemicolon <69329424+SammySemicolon@users.noreply.github.com> Date: Fri, 1 Dec 2023 02:11:24 +0100 Subject: [PATCH] Fix damage type thing --- .../resources/assets/malum/lang/en_us.json | 2 ++ .../models/item/soul_stained_steel_lash.json | 6 ++++ .../data/forge/tags/damage_type/is_magic.json | 5 +++ src/main/java/com/sammy/malum/MalumMod.java | 1 + .../renderer/block/MoteOfManaRenderer.java | 3 +- .../malum/common/effect/GluttonyEffect.java | 13 ------- .../malum/common/effect/RejectedEffect.java | 4 +-- .../enchantment/HauntedEnchantment.java | 4 +-- .../enchantment/ReboundEnchantment.java | 33 +++++++++--------- .../boomerang/ScytheBoomerangEntity.java | 9 ++--- .../night_terror/NightTerrorSeekerEntity.java | 4 +-- .../entity/nitrate/EthericExplosion.java | 6 ++-- .../curios/rotten/CurioStarvedBelt.java | 3 +- .../curios/rotten/CurioVoraciousRing.java | 22 ++++++------ .../curiosities/weapons/MalumScytheItem.java | 7 ++-- .../weapons/unique/TyrvingItem.java | 5 ++- .../common/spiritrite/WickedRiteType.java | 6 ++-- .../greater/EldritchWickedRiteType.java | 10 +++--- .../compability/create/CreateCompat.java | 4 +-- .../com/sammy/malum/config/CommonConfig.java | 2 +- .../malum/core/events/RuntimeEvents.java | 1 - .../core/handlers/SpiritHarvestHandler.java | 4 +-- .../core/handlers/TouchOfDarknessHandler.java | 2 +- .../com/sammy/malum/data/DataGenerators.java | 3 +- .../sammy/malum/data/MalumDamageTypeTags.java | 25 +++++++++++++ .../java/com/sammy/malum/data/MalumLang.java | 10 +++--- ...eRegistry.java => DamageTypeRegistry.java} | 2 +- .../malum/textures/item/lamplighters_wand.png | Bin 447 -> 0 bytes .../malum/textures/item/mephitic_edge.png | Bin 522 -> 0 bytes .../textures/item/mephitic_edge_huge.png | Bin 1089 -> 0 bytes .../item/soul_stained_steel_stave.png | Bin 0 -> 378 bytes .../assets/malum/textures/particle/saw.png | Bin 0 -> 237 bytes .../malum/spirit_data/entity/phantom.json | 4 +-- 33 files changed, 109 insertions(+), 91 deletions(-) create mode 100644 src/generated/resources/assets/malum/models/item/soul_stained_steel_lash.json create mode 100644 src/generated/resources/data/forge/tags/damage_type/is_magic.json create mode 100644 src/main/java/com/sammy/malum/data/MalumDamageTypeTags.java rename src/main/java/com/sammy/malum/registry/common/{DamageSourceRegistry.java => DamageTypeRegistry.java} (97%) delete mode 100644 src/main/resources/assets/malum/textures/item/lamplighters_wand.png delete mode 100644 src/main/resources/assets/malum/textures/item/mephitic_edge.png delete mode 100644 src/main/resources/assets/malum/textures/item/mephitic_edge_huge.png create mode 100644 src/main/resources/assets/malum/textures/item/soul_stained_steel_stave.png create mode 100644 src/main/resources/assets/malum/textures/particle/saw.png diff --git a/src/generated/resources/assets/malum/lang/en_us.json b/src/generated/resources/assets/malum/lang/en_us.json index 77bbf864e..7a37ba945 100644 --- a/src/generated/resources/assets/malum/lang/en_us.json +++ b/src/generated/resources/assets/malum/lang/en_us.json @@ -254,6 +254,7 @@ "enchantment.malum.spirit_plunder": "Spirit Plunder", "enchantment.malum.spirit_plunder.desc": "Increases the amount of spirits created when shattering a soul.", "entity.malum.etheric_nitrate": "Etheric Nitrate", + "entity.malum.lash": "Lash", "entity.malum.natural_spirit": "Natural Spirit", "entity.malum.night_terror": "Night Terror", "entity.malum.runewood_boat": "Runewood Boat", @@ -399,6 +400,7 @@ "item.malum.soul_stained_steel_hoe": "Soulstained Steel Hoe", "item.malum.soul_stained_steel_ingot": "Soulstained Steel Ingot", "item.malum.soul_stained_steel_knife": "Soulstained Steel Knife", + "item.malum.soul_stained_steel_lash": "Soulstained Steel Lash", "item.malum.soul_stained_steel_leggings": "Soulstained Steel Leggings", "item.malum.soul_stained_steel_nugget": "Soulstained Steel Nugget", "item.malum.soul_stained_steel_pickaxe": "Soulstained Steel Pickaxe", diff --git a/src/generated/resources/assets/malum/models/item/soul_stained_steel_lash.json b/src/generated/resources/assets/malum/models/item/soul_stained_steel_lash.json new file mode 100644 index 000000000..d7aa6a97b --- /dev/null +++ b/src/generated/resources/assets/malum/models/item/soul_stained_steel_lash.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/handheld", + "textures": { + "layer0": "malum:item/soul_stained_steel_lash" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/damage_type/is_magic.json b/src/generated/resources/data/forge/tags/damage_type/is_magic.json new file mode 100644 index 000000000..6d4cc0c7a --- /dev/null +++ b/src/generated/resources/data/forge/tags/damage_type/is_magic.json @@ -0,0 +1,5 @@ +{ + "values": [ + "malum:voodoo" + ] +} \ No newline at end of file diff --git a/src/main/java/com/sammy/malum/MalumMod.java b/src/main/java/com/sammy/malum/MalumMod.java index 684b48851..4ff527705 100644 --- a/src/main/java/com/sammy/malum/MalumMod.java +++ b/src/main/java/com/sammy/malum/MalumMod.java @@ -1,5 +1,6 @@ package com.sammy.malum; +import com.mojang.blaze3d.systems.*; import com.sammy.malum.compability.create.CreateCompat; import com.sammy.malum.compability.farmersdelight.FarmersDelightCompat; import com.sammy.malum.config.ClientConfig; diff --git a/src/main/java/com/sammy/malum/client/renderer/block/MoteOfManaRenderer.java b/src/main/java/com/sammy/malum/client/renderer/block/MoteOfManaRenderer.java index 047748100..e234dac7b 100644 --- a/src/main/java/com/sammy/malum/client/renderer/block/MoteOfManaRenderer.java +++ b/src/main/java/com/sammy/malum/client/renderer/block/MoteOfManaRenderer.java @@ -81,7 +81,8 @@ public static void applyWobble(Vector3f[] offsets, float initialOffset) { public static void applyWobble(Vector3f[] offsets, float initialOffset, float strength) { float value = initialOffset; for (Vector3f vector3f : offsets) { - float sine = Mth.sin((float) (Minecraft.getInstance().level.getGameTime() / 10.0F + (value * Math.PI * 2))) * strength; + double time = ((Minecraft.getInstance().level.getGameTime() / 40.0F) % Math.PI * 2); + float sine = Mth.sin((float) (time + (value * Math.PI * 2))) * strength; vector3f.add(sine, -sine, sine); value += 0.25f; } diff --git a/src/main/java/com/sammy/malum/common/effect/GluttonyEffect.java b/src/main/java/com/sammy/malum/common/effect/GluttonyEffect.java index bc6e4da9d..88010cd69 100644 --- a/src/main/java/com/sammy/malum/common/effect/GluttonyEffect.java +++ b/src/main/java/com/sammy/malum/common/effect/GluttonyEffect.java @@ -35,19 +35,6 @@ public static void canApplyPotion(MobEffectEvent.Applicable event) { } } - public static void finishEating(LivingEntityUseItemEvent.Finish event) { - ItemStack stack = event.getResultStack(); - if (stack.is(GROSS_FOODS)) { - LivingEntity entity = event.getEntity(); - MobEffectInstance effect = entity.getEffect(MobEffectRegistry.GLUTTONY.get()); - if (effect != null) { - EntityHelper.extendEffect(effect, entity, 200, 1000); - Level level = entity.level(); - level.playSound(null, entity.blockPosition(), SoundRegistry.HUNGRY_BELT_FEEDS.get(), SoundSource.PLAYERS, 1.7f, 1.2f + level.random.nextFloat() * 0.5f); - } - } - } - @Override public void applyEffectTick(LivingEntity entityLivingBaseIn, int amplifier) { if (entityLivingBaseIn instanceof Player player) { diff --git a/src/main/java/com/sammy/malum/common/effect/RejectedEffect.java b/src/main/java/com/sammy/malum/common/effect/RejectedEffect.java index b1d547ca4..cc44667ca 100644 --- a/src/main/java/com/sammy/malum/common/effect/RejectedEffect.java +++ b/src/main/java/com/sammy/malum/common/effect/RejectedEffect.java @@ -2,7 +2,7 @@ import com.sammy.malum.common.capability.MalumLivingEntityDataCapability; import com.sammy.malum.core.handlers.TouchOfDarknessHandler; -import com.sammy.malum.registry.common.DamageSourceRegistry; +import com.sammy.malum.registry.common.DamageTypeRegistry; import net.minecraft.world.effect.MobEffect; import net.minecraft.world.effect.MobEffectCategory; import net.minecraft.world.entity.LivingEntity; @@ -21,7 +21,7 @@ public void applyEffectTick(LivingEntity pLivingEntity, int pAmplifier) { TouchOfDarknessHandler handler = MalumLivingEntityDataCapability.getCapability(pLivingEntity).touchOfDarknessHandler; handler.afflict(20); if (pLivingEntity.level().getGameTime() % 60L == 0) { - pLivingEntity.hurt(DamageSourceRegistry.create(pLivingEntity.level(), DamageSourceRegistry.VOODOO), 1); + pLivingEntity.hurt(DamageTypeRegistry.create(pLivingEntity.level(), DamageTypeRegistry.VOODOO), 1); } } diff --git a/src/main/java/com/sammy/malum/common/enchantment/HauntedEnchantment.java b/src/main/java/com/sammy/malum/common/enchantment/HauntedEnchantment.java index 9e66a07f9..270dc45d7 100644 --- a/src/main/java/com/sammy/malum/common/enchantment/HauntedEnchantment.java +++ b/src/main/java/com/sammy/malum/common/enchantment/HauntedEnchantment.java @@ -1,6 +1,6 @@ package com.sammy.malum.common.enchantment; -import com.sammy.malum.registry.common.DamageSourceRegistry; +import com.sammy.malum.registry.common.DamageTypeRegistry; import com.sammy.malum.registry.common.item.EnchantmentRegistry; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.EquipmentSlot; @@ -17,7 +17,7 @@ public void doPostAttack(LivingEntity user, Entity target, int level) { if (target instanceof LivingEntity entity) { if (entity.isAlive()) { entity.invulnerableTime = 0; - entity.hurt(DamageSourceRegistry.create(user.level(), DamageSourceRegistry.VOODOO, user), level + 1); + entity.hurt(DamageTypeRegistry.create(user.level(), DamageTypeRegistry.VOODOO, user), level + 1); } } super.doPostAttack(user, target, level); diff --git a/src/main/java/com/sammy/malum/common/enchantment/ReboundEnchantment.java b/src/main/java/com/sammy/malum/common/enchantment/ReboundEnchantment.java index 278338d03..d9c449f14 100644 --- a/src/main/java/com/sammy/malum/common/enchantment/ReboundEnchantment.java +++ b/src/main/java/com/sammy/malum/common/enchantment/ReboundEnchantment.java @@ -26,26 +26,25 @@ public int getMaxLevel() { } public static void onRightClickItem(PlayerInteractEvent.RightClickItem event) { - if (true) { - Player player = event.getEntity(); - ItemStack stack = event.getItemStack(); - if (EnchantmentHelper.getItemEnchantmentLevel(EnchantmentRegistry.REBOUND.get(), stack) > 0) { - Level level = player.level(); - if (!level.isClientSide) { - player.setItemInHand(event.getHand(), ItemStack.EMPTY); - float baseDamage = (float) player.getAttributes().getValue(Attributes.ATTACK_DAMAGE); - float magicDamage = (float) player.getAttributes().getValue(LodestoneAttributeRegistry.MAGIC_DAMAGE.get()); + Player player = event.getEntity(); + ItemStack stack = event.getItemStack(); + if (EnchantmentHelper.getItemEnchantmentLevel(EnchantmentRegistry.REBOUND.get(), stack) > 0) { + Level level = player.level(); + if (!level.isClientSide) { + player.setItemInHand(event.getHand(), ItemStack.EMPTY); + float baseDamage = (float) player.getAttributes().getValue(Attributes.ATTACK_DAMAGE); + float magicDamage = (float) player.getAttributes().getValue(LodestoneAttributeRegistry.MAGIC_DAMAGE.get()); - int slot = event.getHand() == InteractionHand.OFF_HAND ? player.getInventory().getContainerSize() - 1 : player.getInventory().selected; - ScytheBoomerangEntity entity = new ScytheBoomerangEntity(level, player.position().x, player.position().y + player.getBbHeight() / 2f, player.position().z); - entity.setData(player, baseDamage, magicDamage, slot); - entity.setItem(stack); + int slot = event.getHand() == InteractionHand.OFF_HAND ? player.getInventory().getContainerSize() - 1 : player.getInventory().selected; + ScytheBoomerangEntity entity = new ScytheBoomerangEntity(level, player.position().x, player.position().y + player.getBbHeight() / 2f, player.position().z); + entity.setData(player, baseDamage, magicDamage, slot); + entity.setItem(stack); - entity.shootFromRotation(player, player.getXRot(), player.getYRot(), 0.0F, (float) (1.5F + player.getAttributeValue(AttributeRegistry.SCYTHE_PROFICIENCY.get()) * 0.125f), 0F); - level.addFreshEntity(entity); - } - player.awardStat(Stats.ITEM_USED.get(stack.getItem())); + entity.shootFromRotation(player, player.getXRot(), player.getYRot(), 0.0F, (float) (1.5F + player.getAttributeValue(AttributeRegistry.SCYTHE_PROFICIENCY.get()) * 0.125f), 0F); + level.addFreshEntity(entity); } + player.awardStat(Stats.ITEM_USED.get(stack.getItem())); } } + } \ No newline at end of file diff --git a/src/main/java/com/sammy/malum/common/entity/boomerang/ScytheBoomerangEntity.java b/src/main/java/com/sammy/malum/common/entity/boomerang/ScytheBoomerangEntity.java index f7d364755..089d2195a 100644 --- a/src/main/java/com/sammy/malum/common/entity/boomerang/ScytheBoomerangEntity.java +++ b/src/main/java/com/sammy/malum/common/entity/boomerang/ScytheBoomerangEntity.java @@ -1,7 +1,7 @@ package com.sammy.malum.common.entity.boomerang; import com.sammy.malum.common.item.curiosities.weapons.MalumScytheItem; -import com.sammy.malum.registry.common.DamageSourceRegistry; +import com.sammy.malum.registry.common.DamageTypeRegistry; import com.sammy.malum.registry.common.SoundRegistry; import com.sammy.malum.registry.common.entity.EntityRegistry; import com.sammy.malum.registry.common.item.EnchantmentRegistry; @@ -126,7 +126,7 @@ protected void onHitEntity(EntityHitResult result) { if (magicDamage > 0) { if (livingentity.isAlive()) { livingentity.invulnerableTime = 0; - livingentity.hurt(DamageSourceRegistry.create(level(), DamageSourceRegistry.VOODOO, scytheOwner), magicDamage); + livingentity.hurt(DamageTypeRegistry.create(level(), DamageTypeRegistry.VOODOO, scytheOwner), magicDamage); } } @@ -212,11 +212,6 @@ public void shootFromRotation(Entity shooter, float rotationPitch, float rotatio this.setDeltaMovement(this.getDeltaMovement().add(vec3.x, 0, vec3.z)); } - @Override - public Packet getAddEntityPacket() { - return NetworkHooks.getEntitySpawningPacket(this); - } - @Override public boolean isNoGravity() { return true; diff --git a/src/main/java/com/sammy/malum/common/entity/night_terror/NightTerrorSeekerEntity.java b/src/main/java/com/sammy/malum/common/entity/night_terror/NightTerrorSeekerEntity.java index d76ac8231..ecde5dea0 100644 --- a/src/main/java/com/sammy/malum/common/entity/night_terror/NightTerrorSeekerEntity.java +++ b/src/main/java/com/sammy/malum/common/entity/night_terror/NightTerrorSeekerEntity.java @@ -1,6 +1,6 @@ package com.sammy.malum.common.entity.night_terror; -import com.sammy.malum.registry.common.DamageSourceRegistry; +import com.sammy.malum.registry.common.DamageTypeRegistry; import com.sammy.malum.registry.common.SoundRegistry; import com.sammy.malum.registry.common.entity.EntityRegistry; import net.minecraft.nbt.CompoundTag; @@ -110,7 +110,7 @@ protected void onHitEntity(EntityHitResult result) { if (level().isClientSide) { return; } - DamageSource source = DamageSourceRegistry.create(level(), DamageSourceRegistry.VOODOO, scytheOwner); + DamageSource source = DamageTypeRegistry.create(level(), DamageTypeRegistry.VOODOO, scytheOwner); target.hurt(source, magicDamage); if (age < fadeoutStart) { fadeoutStart += 4; diff --git a/src/main/java/com/sammy/malum/common/entity/nitrate/EthericExplosion.java b/src/main/java/com/sammy/malum/common/entity/nitrate/EthericExplosion.java index 6e6d382f9..acd3f8362 100644 --- a/src/main/java/com/sammy/malum/common/entity/nitrate/EthericExplosion.java +++ b/src/main/java/com/sammy/malum/common/entity/nitrate/EthericExplosion.java @@ -1,6 +1,6 @@ package com.sammy.malum.common.entity.nitrate; -import com.sammy.malum.registry.common.DamageSourceRegistry; +import com.sammy.malum.registry.common.DamageTypeRegistry; import net.minecraft.core.BlockPos; import net.minecraft.world.damagesource.DamageSource; import net.minecraft.world.entity.Entity; @@ -39,9 +39,9 @@ public EthericExplosion(Level pLevel, @Nullable Entity pSource, @Nullable Damage @Override public DamageSource getDamageSource() { if (getDirectSourceEntity() != null) { - return DamageSourceRegistry.create(getDirectSourceEntity().level(), DamageSourceRegistry.VOODOO, getDirectSourceEntity()); + return DamageTypeRegistry.create(getDirectSourceEntity().level(), DamageTypeRegistry.VOODOO, getDirectSourceEntity()); } - return DamageSourceRegistry.create(getDirectSourceEntity().level(), DamageSourceRegistry.VOODOO); + return DamageTypeRegistry.create(getDirectSourceEntity().level(), DamageTypeRegistry.VOODOO); } public static void processExplosion(ExplosionEvent.Detonate event) { diff --git a/src/main/java/com/sammy/malum/common/item/curiosities/curios/rotten/CurioStarvedBelt.java b/src/main/java/com/sammy/malum/common/item/curiosities/curios/rotten/CurioStarvedBelt.java index d4fcce690..4a9b0ae7b 100644 --- a/src/main/java/com/sammy/malum/common/item/curiosities/curios/rotten/CurioStarvedBelt.java +++ b/src/main/java/com/sammy/malum/common/item/curiosities/curios/rotten/CurioStarvedBelt.java @@ -35,9 +35,8 @@ public void pickupSpirit(LivingEntity collector, ItemStack stack, double arcaneR MobEffect gluttony = MobEffectRegistry.GLUTTONY.get(); MobEffectInstance effect = collector.getEffect(gluttony); if (effect == null) { - collector.addEffect(new MobEffectInstance(gluttony, 100 + (int) (arcaneResonance * 100), 0, true, true, true)); + collector.addEffect(new MobEffectInstance(gluttony, 600 + (int) (arcaneResonance * 600), 0, true, true, true)); } else { - EntityHelper.extendEffect(effect, collector, 50, 200 + (int) (arcaneResonance * 200)); EntityHelper.amplifyEffect(effect, collector, 1, 9); } Level level = collector.level(); diff --git a/src/main/java/com/sammy/malum/common/item/curiosities/curios/rotten/CurioVoraciousRing.java b/src/main/java/com/sammy/malum/common/item/curiosities/curios/rotten/CurioVoraciousRing.java index dac13fa22..6c3f6fb80 100644 --- a/src/main/java/com/sammy/malum/common/item/curiosities/curios/rotten/CurioVoraciousRing.java +++ b/src/main/java/com/sammy/malum/common/item/curiosities/curios/rotten/CurioVoraciousRing.java @@ -2,18 +2,18 @@ import com.google.common.collect.Multimap; import com.sammy.malum.common.item.curiosities.curios.MalumCurioItem; -import com.sammy.malum.registry.common.MobEffectRegistry; +import com.sammy.malum.registry.common.*; import com.sammy.malum.registry.common.item.ItemRegistry; +import net.minecraft.sounds.*; import net.minecraft.world.effect.MobEffectInstance; import net.minecraft.world.effect.MobEffects; -import net.minecraft.world.entity.ai.attributes.Attribute; -import net.minecraft.world.entity.ai.attributes.AttributeModifier; -import net.minecraft.world.entity.ai.attributes.Attributes; +import net.minecraft.world.entity.*; +import net.minecraft.world.entity.ai.attributes.*; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.*; import net.minecraftforge.event.entity.living.LivingEntityUseItemEvent; -import team.lodestar.lodestone.helpers.CurioHelper; -import team.lodestar.lodestone.helpers.EntityHelper; +import team.lodestar.lodestone.helpers.*; import top.theillusivec4.curios.api.SlotContext; import static com.sammy.malum.registry.common.item.ItemTagRegistry.GROSS_FOODS; @@ -39,21 +39,23 @@ public static void accelerateEating(LivingEntityUseItemEvent.Start event) { } } } - public static void finishEating(LivingEntityUseItemEvent.Finish event) { if (event.getEntity() instanceof Player player) { ItemStack stack = event.getResultStack(); if (CurioHelper.hasCurioEquipped(player, ItemRegistry.RING_OF_DESPERATE_VORACITY.get())) { if (stack.is(GROSS_FOODS)) { + double arcaneResonance = player.getAttribute(AttributeRegistry.ARCANE_RESONANCE.get()).getValue(); + Level level = player.level(); MobEffectInstance gluttony = player.getEffect(MobEffectRegistry.GLUTTONY.get()); + MobEffectInstance hunger = player.getEffect(MobEffects.HUNGER); if (gluttony != null) { - player.getFoodData().eat(1, 0.25f * (gluttony.amplifier + 1)); + EntityHelper.extendEffect(gluttony, player, 300, 600 + (int) (arcaneResonance * 600)); } - player.getFoodData().eat(1, 1f); - MobEffectInstance hunger = player.getEffect(MobEffects.HUNGER); if (hunger != null) { EntityHelper.shortenEffect(hunger, player, 150); } + player.getFoodData().eat(1, 1f); + level.playSound(null, player.blockPosition(), SoundRegistry.HUNGRY_BELT_FEEDS.get(), SoundSource.PLAYERS, 1.7f, RandomHelper.randomBetween(level.random, 0.8f, 1.2f)); } } } diff --git a/src/main/java/com/sammy/malum/common/item/curiosities/weapons/MalumScytheItem.java b/src/main/java/com/sammy/malum/common/item/curiosities/weapons/MalumScytheItem.java index 39b444a26..ece8deaa5 100644 --- a/src/main/java/com/sammy/malum/common/item/curiosities/weapons/MalumScytheItem.java +++ b/src/main/java/com/sammy/malum/common/item/curiosities/weapons/MalumScytheItem.java @@ -3,7 +3,7 @@ import com.sammy.malum.common.entity.boomerang.ScytheBoomerangEntity; import com.sammy.malum.core.systems.item.IMalumEventResponderItem; import com.sammy.malum.registry.client.ParticleRegistry; -import com.sammy.malum.registry.common.DamageSourceRegistry; +import com.sammy.malum.registry.common.DamageTypeRegistry; import com.sammy.malum.registry.common.SoundRegistry; import com.sammy.malum.registry.common.item.ItemRegistry; import net.minecraft.core.particles.SimpleParticleType; @@ -12,7 +12,6 @@ import net.minecraft.sounds.SoundEvents; import net.minecraft.util.Mth; import net.minecraft.world.damagesource.DamageSource; -import net.minecraft.world.damagesource.DamageTypes; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; @@ -46,7 +45,7 @@ public void hurtEvent(LivingHurtEvent event, LivingEntity attacker, LivingEntity attacker.level().playSound(null, target.getX(), target.getY(), target.getZ(), sound, attacker.getSoundSource(), 1, 1); } - if (!canSweep || event.getSource().is(LodestoneDamageTypeTags.IS_MAGIC) || event.getSource().getMsgId().equals(DamageSourceRegistry.SCYTHE_SWEEP_IDENTIFIER)) { + if (!canSweep || event.getSource().is(LodestoneDamageTypeTags.IS_MAGIC) || event.getSource().getMsgId().equals(DamageTypeRegistry.SCYTHE_SWEEP_IDENTIFIER)) { return; } int level = EnchantmentHelper.getEnchantmentLevel(Enchantments.SWEEPING_EDGE, attacker); @@ -54,7 +53,7 @@ public void hurtEvent(LivingHurtEvent event, LivingEntity attacker, LivingEntity target.level().getEntities(attacker, target.getBoundingBox().inflate(1 + level * 0.25f)).forEach(e -> { if (e instanceof LivingEntity livingEntity) { if (livingEntity.isAlive()) { - livingEntity.hurt((DamageSourceRegistry.create(attacker.level(), DamageSourceRegistry.SCYTHE_SWEEP, attacker)), damage); + livingEntity.hurt((DamageTypeRegistry.create(attacker.level(), DamageTypeRegistry.SCYTHE_SWEEP, attacker)), damage); livingEntity.knockback(0.4F, Mth.sin(attacker.getYRot() * ((float) Math.PI / 180F)), (-Mth.cos(attacker.getYRot() * ((float) Math.PI / 180F)))); } } diff --git a/src/main/java/com/sammy/malum/common/item/curiosities/weapons/unique/TyrvingItem.java b/src/main/java/com/sammy/malum/common/item/curiosities/weapons/unique/TyrvingItem.java index 4a14b92e5..710cfc5cc 100644 --- a/src/main/java/com/sammy/malum/common/item/curiosities/weapons/unique/TyrvingItem.java +++ b/src/main/java/com/sammy/malum/common/item/curiosities/weapons/unique/TyrvingItem.java @@ -3,12 +3,11 @@ import com.sammy.malum.common.packets.particle.curiosities.rite.generic.MajorEntityEffectParticlePacket; import com.sammy.malum.core.helper.SpiritHelper; import com.sammy.malum.core.systems.item.IMalumEventResponderItem; -import com.sammy.malum.registry.common.DamageSourceRegistry; +import com.sammy.malum.registry.common.DamageTypeRegistry; import com.sammy.malum.registry.common.SoundRegistry; import com.sammy.malum.registry.common.SpiritTypeRegistry; import net.minecraft.server.level.ServerLevel; import net.minecraft.sounds.SoundSource; -import net.minecraft.world.damagesource.DamageTypes; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; @@ -39,7 +38,7 @@ public void hurtEvent(LivingHurtEvent event, LivingEntity attacker, LivingEntity if (target.isAlive()) { target.invulnerableTime = 0; - target.hurt(DamageSourceRegistry.create(attacker.level(), DamageSourceRegistry.VOODOO, attacker), spiritCount); + target.hurt(DamageTypeRegistry.create(attacker.level(), DamageTypeRegistry.VOODOO, attacker), spiritCount); } attacker.level().playSound(null, target.blockPosition(), SoundRegistry.VOID_SLASH.get(), SoundSource.PLAYERS, 1, 1f + target.level().random.nextFloat() * 0.25f); MALUM_CHANNEL.send(PacketDistributor.TRACKING_ENTITY.with(() -> target), new MajorEntityEffectParticlePacket(SpiritTypeRegistry.ELDRITCH_SPIRIT.getPrimaryColor(), target.getX(), target.getY() + target.getBbHeight() / 2, target.getZ())); diff --git a/src/main/java/com/sammy/malum/common/spiritrite/WickedRiteType.java b/src/main/java/com/sammy/malum/common/spiritrite/WickedRiteType.java index 837cbf157..9142cdac3 100644 --- a/src/main/java/com/sammy/malum/common/spiritrite/WickedRiteType.java +++ b/src/main/java/com/sammy/malum/common/spiritrite/WickedRiteType.java @@ -4,7 +4,7 @@ import com.sammy.malum.core.systems.rites.MalumRiteEffect; import com.sammy.malum.core.systems.rites.MalumRiteType; -import com.sammy.malum.registry.common.DamageSourceRegistry; +import com.sammy.malum.registry.common.DamageTypeRegistry; import com.sammy.malum.registry.common.ParticleEffectTypeRegistry; import com.sammy.malum.visual_effects.networked.data.ColorEffectData; import net.minecraft.world.effect.MobEffectInstance; @@ -27,9 +27,9 @@ public MalumRiteEffect getNaturalRiteEffect() { @Override public void doRiteEffect(TotemBaseBlockEntity totemBase) { getNearbyEntities(totemBase, LivingEntity.class, e -> !(e instanceof Player)).forEach(e -> { - if (e.getHealth() > 2.5f && !e.isInvulnerableTo(DamageSourceRegistry.create(e.level(), DamageSourceRegistry.VOODOO))) { + if (e.getHealth() > 2.5f && !e.isInvulnerableTo(DamageTypeRegistry.create(e.level(), DamageTypeRegistry.VOODOO))) { ParticleEffectTypeRegistry.HEXING_SMOKE.createEntityEffect(e, new ColorEffectData(WICKED_SPIRIT.getPrimaryColor())); - e.hurt(DamageSourceRegistry.create(e.level(), DamageSourceRegistry.VOODOO), 2); + e.hurt(DamageTypeRegistry.create(e.level(), DamageTypeRegistry.VOODOO), 2); } }); } diff --git a/src/main/java/com/sammy/malum/common/spiritrite/greater/EldritchWickedRiteType.java b/src/main/java/com/sammy/malum/common/spiritrite/greater/EldritchWickedRiteType.java index fcf397934..4f3d6599e 100644 --- a/src/main/java/com/sammy/malum/common/spiritrite/greater/EldritchWickedRiteType.java +++ b/src/main/java/com/sammy/malum/common/spiritrite/greater/EldritchWickedRiteType.java @@ -4,7 +4,7 @@ import com.sammy.malum.common.packets.particle.curiosities.rite.generic.MajorEntityEffectParticlePacket; import com.sammy.malum.core.systems.rites.MalumRiteEffect; import com.sammy.malum.core.systems.rites.MalumRiteType; -import com.sammy.malum.registry.common.DamageSourceRegistry; +import com.sammy.malum.registry.common.DamageTypeRegistry; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.animal.Animal; import net.minecraft.world.entity.player.Player; @@ -27,9 +27,9 @@ public MalumRiteEffect getNaturalRiteEffect() { @Override public void doRiteEffect(TotemBaseBlockEntity totemBase) { getNearbyEntities(totemBase, LivingEntity.class, e -> !(e instanceof Player)).forEach(e -> { - if (e.getHealth() <= 2.5f && !e.isInvulnerableTo(DamageSourceRegistry.create(e.level(), DamageSourceRegistry.VOODOO))) { + if (e.getHealth() <= 2.5f && !e.isInvulnerableTo(DamageTypeRegistry.create(e.level(), DamageTypeRegistry.VOODOO))) { MALUM_CHANNEL.send(PacketDistributor.TRACKING_ENTITY.with(() -> e), new MajorEntityEffectParticlePacket(getEffectSpirit().getPrimaryColor(), e.getX(), e.getY() + e.getBbHeight() / 2f, e.getZ())); - e.hurt(DamageSourceRegistry.create(e.level(), DamageSourceRegistry.VOODOO), 10f); + e.hurt(DamageTypeRegistry.create(e.level(), DamageTypeRegistry.VOODOO), 10f); } }); } @@ -41,7 +41,7 @@ public MalumRiteEffect getCorruptedEffect() { return new MalumRiteEffect(MalumRiteEffect.MalumRiteEffectCategory.LIVING_ENTITY_EFFECT) { @Override public void doRiteEffect(TotemBaseBlockEntity totemBase) { - Map, List> animalMap = getNearbyEntities(totemBase, Animal.class, e -> e.getAge() > 0 && !e.isInvulnerableTo(DamageSourceRegistry.create(e.level(), DamageSourceRegistry.VOODOO))).collect(Collectors.groupingBy(Animal::getClass)); + Map, List> animalMap = getNearbyEntities(totemBase, Animal.class, e -> e.getAge() > 0 && !e.isInvulnerableTo(DamageTypeRegistry.create(e.level(), DamageTypeRegistry.VOODOO))).collect(Collectors.groupingBy(Animal::getClass)); for (List animals : animalMap.values()) { if (animals.size() < 20) { return; @@ -49,7 +49,7 @@ public void doRiteEffect(TotemBaseBlockEntity totemBase) { int maxKills = animals.size() - 20; animals.removeIf(Animal::isInLove); for (Animal entity : animals) { - entity.hurt(DamageSourceRegistry.create(entity.level(), DamageSourceRegistry.VOODOO), entity.getMaxHealth()); + entity.hurt(DamageTypeRegistry.create(entity.level(), DamageTypeRegistry.VOODOO), entity.getMaxHealth()); MALUM_CHANNEL.send(PacketDistributor.TRACKING_ENTITY.with(() -> entity), new MajorEntityEffectParticlePacket(WICKED_SPIRIT.getPrimaryColor(), entity.getX(), entity.getY() + entity.getBbHeight() / 2f, entity.getZ())); if (maxKills-- <= 0) { return; diff --git a/src/main/java/com/sammy/malum/compability/create/CreateCompat.java b/src/main/java/com/sammy/malum/compability/create/CreateCompat.java index ac7c5a7f9..5d224f86a 100644 --- a/src/main/java/com/sammy/malum/compability/create/CreateCompat.java +++ b/src/main/java/com/sammy/malum/compability/create/CreateCompat.java @@ -1,6 +1,6 @@ package com.sammy.malum.compability.create; -import com.sammy.malum.registry.common.DamageSourceRegistry; +import com.sammy.malum.registry.common.DamageTypeRegistry; import com.simibubi.create.content.equipment.potatoCannon.PotatoProjectileEntity; import net.minecraft.world.damagesource.DamageSource; import net.minecraft.world.entity.LivingEntity; @@ -25,7 +25,7 @@ public static void convertCaramelToMagicDamage(LivingHurtEvent event) { if (event.getSource().getDirectEntity() instanceof PotatoProjectileEntity potatoProjectile) { LivingEntity target = event.getEntity(); ItemStack item = potatoProjectile.getItem(); - DamageSource damageSource = event.getSource().getEntity() instanceof Player player ? DamageSourceRegistry.create(player.level(), DamageSourceRegistry.VOODOO, player) : DamageSourceRegistry.create(target.level(), DamageSourceRegistry.VOODOO); + DamageSource damageSource = event.getSource().getEntity() instanceof Player player ? DamageTypeRegistry.create(player.level(), DamageTypeRegistry.VOODOO, player) : DamageTypeRegistry.create(target.level(), DamageTypeRegistry.VOODOO); if (item.getItem().equals(UNHOLY_CARAMEL.get()) || item.getItem().equals(HOLY_CARAMEL.get())) { event.setCanceled(true); target.invulnerableTime = 0; diff --git a/src/main/java/com/sammy/malum/config/CommonConfig.java b/src/main/java/com/sammy/malum/config/CommonConfig.java index e1bfad681..3925e4b3a 100644 --- a/src/main/java/com/sammy/malum/config/CommonConfig.java +++ b/src/main/java/com/sammy/malum/config/CommonConfig.java @@ -36,7 +36,7 @@ public class CommonConfig extends LodestoneConfig { .defineInRange("soulWardMagic", 0.1f, 0, 1))); public static ConfigValueHolder SOUL_WARD_RATE = new ConfigValueHolder<>(MALUM, "common/spirit/affinity/soul_ward", (builder -> builder.comment("Base time in ticks it takes for one point of soul ward to recover.") - .define("soulWardRate", 60))); + .define("soulWardRate", 100))); public CommonConfig(ForgeConfigSpec.Builder builder) { super(MALUM, "common", builder); diff --git a/src/main/java/com/sammy/malum/core/events/RuntimeEvents.java b/src/main/java/com/sammy/malum/core/events/RuntimeEvents.java index 1188964c7..78f078ba7 100644 --- a/src/main/java/com/sammy/malum/core/events/RuntimeEvents.java +++ b/src/main/java/com/sammy/malum/core/events/RuntimeEvents.java @@ -167,7 +167,6 @@ public static void onStartUsingItem(LivingEntityUseItemEvent.Start event) { @SubscribeEvent public static void onFinishUsingItem(LivingEntityUseItemEvent.Finish event) { CurioVoraciousRing.finishEating(event); - GluttonyEffect.finishEating(event); } @SubscribeEvent diff --git a/src/main/java/com/sammy/malum/core/handlers/SpiritHarvestHandler.java b/src/main/java/com/sammy/malum/core/handlers/SpiritHarvestHandler.java index 155ffa9f4..e917aa6d1 100644 --- a/src/main/java/com/sammy/malum/core/handlers/SpiritHarvestHandler.java +++ b/src/main/java/com/sammy/malum/core/handlers/SpiritHarvestHandler.java @@ -9,7 +9,7 @@ import com.sammy.malum.core.systems.item.IMalumEventResponderItem; import com.sammy.malum.core.systems.spirit.MalumEntitySpiritData; import com.sammy.malum.registry.common.AttributeRegistry; -import com.sammy.malum.registry.common.DamageSourceRegistry; +import com.sammy.malum.registry.common.DamageTypeRegistry; import net.minecraft.core.NonNullList; import net.minecraft.server.level.ServerLevel; import net.minecraft.sounds.SoundEvents; @@ -48,7 +48,7 @@ public static void shatterSoul(LivingDeathEvent event) { if (attacker == null) { attacker = target.getLastHurtByMob(); } - if (attacker == null && source.getMsgId().equals(DamageSourceRegistry.VOODOO_IDENTIFIER)) { + if (attacker == null && source.getMsgId().equals(DamageTypeRegistry.VOODOO_IDENTIFIER)) { SpiritHelper.createSpiritEntities(event.getEntity()); return; } diff --git a/src/main/java/com/sammy/malum/core/handlers/TouchOfDarknessHandler.java b/src/main/java/com/sammy/malum/core/handlers/TouchOfDarknessHandler.java index 77d798a4e..ad2e2aab0 100644 --- a/src/main/java/com/sammy/malum/core/handlers/TouchOfDarknessHandler.java +++ b/src/main/java/com/sammy/malum/core/handlers/TouchOfDarknessHandler.java @@ -202,7 +202,7 @@ public void reject(LivingEntity livingEntity) { if (!livingEntity.level().isClientSide) { PacketRegistry.MALUM_CHANNEL.send(PacketDistributor.TRACKING_ENTITY_AND_SELF.with(() -> livingEntity), new VoidRejectionPacket(livingEntity.getId())); ParticleEffectTypeRegistry.WEEPING_WELL_REACTS.createEntityEffect(livingEntity); - livingEntity.hurt(DamageSourceRegistry.create(livingEntity.level(), DamageSourceRegistry.VOODOO), 4); + livingEntity.hurt(DamageTypeRegistry.create(livingEntity.level(), DamageTypeRegistry.VOODOO), 4); livingEntity.level().playSound(null, livingEntity.blockPosition(), SoundRegistry.VOID_REJECTION.get(), SoundSource.HOSTILE, 2f, Mth.nextFloat(livingEntity.getRandom(), 0.5f, 0.8f)); } livingEntity.addEffect(new MobEffectInstance(MobEffectRegistry.REJECTED.get(), 400, 0)); diff --git a/src/main/java/com/sammy/malum/data/DataGenerators.java b/src/main/java/com/sammy/malum/data/DataGenerators.java index 5be114b7f..26f6f4a75 100644 --- a/src/main/java/com/sammy/malum/data/DataGenerators.java +++ b/src/main/java/com/sammy/malum/data/DataGenerators.java @@ -24,11 +24,9 @@ public class DataGenerators { public static void gatherData(GatherDataEvent event) { DataGenerator generator = event.getGenerator(); PackOutput output = generator.getPackOutput(); - generator.addProvider(event.includeServer(), new MalumRecipes(output)); CompletableFuture provider = event.getLookupProvider(); ExistingFileHelper helper = event.getExistingFileHelper(); - MalumItemModels itemModelsProvider = new MalumItemModels(output, helper); MalumBlockTags blockTagsProvider = new MalumBlockTags(output, provider, helper); @@ -42,6 +40,7 @@ public static void gatherData(GatherDataEvent event) { generator.addProvider(event.includeServer(), new MalumRecipes(output)); generator.addProvider(event.includeServer(), new MalumBiomeTags(output, provider, helper)); + generator.addProvider(event.includeServer(), new MalumDamageTypeTags(output, provider, helper)); generator.addProvider(event.includeServer(), new RegistryDataGenerator(output, provider)); generator.addProvider(event.includeClient(), new MalumLang(output)); diff --git a/src/main/java/com/sammy/malum/data/MalumDamageTypeTags.java b/src/main/java/com/sammy/malum/data/MalumDamageTypeTags.java new file mode 100644 index 000000000..2c5f90904 --- /dev/null +++ b/src/main/java/com/sammy/malum/data/MalumDamageTypeTags.java @@ -0,0 +1,25 @@ +package com.sammy.malum.data; + +import com.sammy.malum.*; +import com.sammy.malum.registry.common.*; +import net.minecraft.core.HolderLookup.*; +import net.minecraft.data.*; +import net.minecraft.data.tags.*; +import net.minecraft.world.damagesource.*; +import net.minecraftforge.common.data.*; +import team.lodestar.lodestone.*; +import team.lodestar.lodestone.registry.common.tag.*; + +import java.util.concurrent.*; + +public class MalumDamageTypeTags extends DamageTypeTagsProvider { + + public MalumDamageTypeTags(PackOutput pOutput, CompletableFuture pProvider, ExistingFileHelper existingFileHelper) { + super(pOutput, pProvider, MalumMod.MALUM, existingFileHelper); + } + + @Override + protected void addTags(Provider pProvider) { + tag(LodestoneDamageTypeTags.IS_MAGIC).add(DamageTypeRegistry.VOODOO); + } +} diff --git a/src/main/java/com/sammy/malum/data/MalumLang.java b/src/main/java/com/sammy/malum/data/MalumLang.java index 2717f19e5..1ba4c3b64 100644 --- a/src/main/java/com/sammy/malum/data/MalumLang.java +++ b/src/main/java/com/sammy/malum/data/MalumLang.java @@ -7,7 +7,7 @@ import com.sammy.malum.core.systems.item.ISoulContainerItem; import com.sammy.malum.core.systems.rites.*; import com.sammy.malum.core.systems.spirit.MalumSpiritType; -import com.sammy.malum.registry.common.DamageSourceRegistry; +import com.sammy.malum.registry.common.DamageTypeRegistry; import com.sammy.malum.registry.common.MobEffectRegistry; import com.sammy.malum.registry.common.SpiritRiteRegistry; import com.sammy.malum.registry.common.SpiritTypeRegistry; @@ -582,10 +582,10 @@ protected void addTranslations() { add("enchantment.malum.rebound.desc", "Allows the item to be thrown much like a boomerang, cooldown decreases with tier."); add("enchantment.malum.spirit_plunder.desc", "Increases the amount of spirits created when shattering a soul."); - add("death.attack." + DamageSourceRegistry.VOODOO_IDENTIFIER, "%s's soul shattered"); - add("death.attack." + DamageSourceRegistry.VOODOO_IDENTIFIER + ".player", "%s's soul was shattered by %s"); - add("death.attack." + DamageSourceRegistry.SCYTHE_SWEEP_IDENTIFIER, "%s was sliced in twain"); - add("death.attack." + DamageSourceRegistry.SCYTHE_SWEEP_IDENTIFIER + ".player", "%s was sliced in twain by %s"); + add("death.attack." + DamageTypeRegistry.VOODOO_IDENTIFIER, "%s's soul shattered"); + add("death.attack." + DamageTypeRegistry.VOODOO_IDENTIFIER + ".player", "%s's soul was shattered by %s"); + add("death.attack." + DamageTypeRegistry.SCYTHE_SWEEP_IDENTIFIER, "%s was sliced in twain"); + add("death.attack." + DamageTypeRegistry.SCYTHE_SWEEP_IDENTIFIER + ".player", "%s was sliced in twain by %s"); addEffectDescription(MobEffectRegistry.GAIAN_BULWARK, "You are protected by an earthen bulwark, increasing your armor."); addEffectDescription(MobEffectRegistry.EARTHEN_MIGHT, "Your fists and tools are reinforced with earth, increasing your overall damage."); diff --git a/src/main/java/com/sammy/malum/registry/common/DamageSourceRegistry.java b/src/main/java/com/sammy/malum/registry/common/DamageTypeRegistry.java similarity index 97% rename from src/main/java/com/sammy/malum/registry/common/DamageSourceRegistry.java rename to src/main/java/com/sammy/malum/registry/common/DamageTypeRegistry.java index 668c293cc..4d3a4f21b 100644 --- a/src/main/java/com/sammy/malum/registry/common/DamageSourceRegistry.java +++ b/src/main/java/com/sammy/malum/registry/common/DamageTypeRegistry.java @@ -10,7 +10,7 @@ import javax.annotation.Nullable; -public class DamageSourceRegistry { +public class DamageTypeRegistry { public static final String VOODOO_IDENTIFIER = "voodoo"; public static final String SCYTHE_SWEEP_IDENTIFIER = "scythe_sweep"; diff --git a/src/main/resources/assets/malum/textures/item/lamplighters_wand.png b/src/main/resources/assets/malum/textures/item/lamplighters_wand.png deleted file mode 100644 index 0132a148a120ec62ab7d704adef8e33ab72a2c95..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 447 zcmV;w0YLtVP) zNF@a+MIYu26s1-?DY93ha{(S20`Xr7Jq z0_k%gsA6JaTZjA#=xOgLOj%YT%oG6t@{9eLJXjYH1Hh-MVpM9_?Z)!%c<~Zcfsv>< z^QTRf0ZjF|TF_>4v7>dnf$uf;r z#VYO;SE61sAGk^-adCTXERm4WPA^XG??jR`#NRb=G8!qGc^W#9CCU^|M8z}>+1#gY zltmaiuqtMe9F9MV#{^oH8u30HjT!>QhwtS{bJ_o@a52%$RF*}tWwtAK{0kyR^w=F> pN!+otpufzbL;~c)YEw(WU)OP}b)tv7V*mgE07*qoM6N<$f&dW=!(#vd diff --git a/src/main/resources/assets/malum/textures/item/mephitic_edge.png b/src/main/resources/assets/malum/textures/item/mephitic_edge.png deleted file mode 100644 index a37eb3bb5fdff5844fc233c333d5c8a8fa9854bd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 522 zcmV+l0`>igP)OgFmS}+47QD+^+peLh%)r?C|9xyZ=UB)o?aV|qJS0G%? zk=uJ2;U;No_@lTY%d`xvFe^hIOrKu&8%(db(#jysF2b<>`e_Cf1CXtTIraXBQw;VJ z5n!pQt+rr84&R;$=HoR09^*w7~)fISwU;KK}@YsrxG#p8kBp@Z+a5 z!@(CT7~oz&_dLjuum{r^O#e%PrKTCSfercme+`(QYtqAzxU~Sc0U$*-s?PrdHBG@b zo_qTYta0V@6<}ADw@WdEtZXA}fS{-VgM)}FSaZzTDu%Ofcp0V}hcK)TU4!2MknM_6 z0t})Yf?&d~A;9I;9w+lc9m?6$883 zQ-+_Xq#2B72Ed(&OCyQ_Ag6)SJ}7WNi30?Xor%v7jLbx=Mwp=h$%?ycz?h-+00000 MNkvXXu0mjf0KT>5X#fBK diff --git a/src/main/resources/assets/malum/textures/item/mephitic_edge_huge.png b/src/main/resources/assets/malum/textures/item/mephitic_edge_huge.png deleted file mode 100644 index f1dad8c76ca94417f1036aee6d06987af2f3ea18..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1089 zcmV-H1it%;P)rkNGl1v1o>n8=DK35o1NbP*~l3K9yF9#S79te39S z)kK3rg>GcpJ%XtW&C0Z#lF}?N{$+bOHfN;qO#9`W*?Z1j-~QLyYps6J8Od=6y7cB< z&0W2_tDign*Zx=cLjvrXu^f{_$GF`0@!L0!wf(nFI^NxdaY;ULe5$Srvqz+hvAopo zrxt|26^s@{DXItOwscxB!t@40gEW4uVI$`HuEet!m!0gn4WRW2VU!~I2WFxA!cSSQ z{`d|t!J|YC8V{b@fmzR&^>F7++YPa82!Ikvi%7bt{Arm29 zfihiOdks(DKJW~{-w@WNJ0&g@gz0QNPQ_U;#m_9pAAYgH{u8LHe=QJ(6;M9r=KIX0 zpb`q=c+Fig+SX-7kaqxTKXohPJJ3e}x(0_CcL6sfM9J_>**vAG2zB;*C{8*eDm-hb zm-&WHEBpsQKsY*n%tO_O)5Za2n&&yL>(2V?vUx#dP7jFkS9xgbY)90vQL^6L(Ta^z zbCFTH*)ssK;U?MG*48S9<~%LJ%W0cX+w==rG1;<42ysVeySU)o5-Tica*P9T(@CL` zT^Uge96{Fbt^2eQ!5JvCRU*tgT-K8Bq@ys}BJUmrP!OiDaF~4qLBw{(nw^iB z#RHJC^@QhK5IABaMi26lD5nCH*ekXXc?XZm-OqhljBR5xB=}h5=zpea!+C%wr2;At zRfN;XmdmFRG2{^%f3%1qj0u&ZRbes=K;x7?Axq7|8KP$jQ!#_txbSD%JZADXgz~5)6 ztg+UsGCgs07z(Nn{TqO4omfm1F^%(zF@4h4Eg#-HAXH6vOlV%Tos+B6J1M}AYSv!D zvD(|>M-HBf^0qeHVQ>HJXe9KE_GPZeEg%5PD6^tK=F!#iR$&8GI^n*0-JNp5lEZG~(w!GL(*Z{cZefJ;+I4LnO?7PQc zSq3o>uM5DM4Xha$=59sU4%H0O2ouEW1(4>64+9u<{a=ICHSH8-Q2D{YFkRIJ%>VHH z9mAC;=fQfh8epN2`+wGhNeq{f0%(O*2!krGAXsGA)w9GI08+f$uae>E&o^L=w?DsU zxc}%LTr*A=fFx{Go&TFDDKbd2i!iLeej4m-5eZ2KUN%k?LvThT$bdjiQ-%X?Zo@U` z$QZ)Y1Ku!z*^bT0=;;Ql3t$Ey2NtdbhhYFnGYdaEgORWlN@x=_0HhJ5NKjM&99_iN z4vz(xt+L#lV2d7q{m$^_#dDPC!s`N1=qk!7F}#2M0UTW*01IVY8c~umw&)?G5hf1+ Y@voo}*i%y}00000NkvXXu0mjf0O>cK&;S4c literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/malum/textures/particle/saw.png b/src/main/resources/assets/malum/textures/particle/saw.png new file mode 100644 index 0000000000000000000000000000000000000000..bcb52d74d51b10e8d5f6e9195423bf6f5719d5a8 GIT binary patch literal 237 zcmV-<0qN&bcW`1!yW-Yg9_15CZXAARD0fYbcx~A%5hX2LQdf0i<~C z9igka6L3m;0uLp!2a<#`wKmp?On?~20CZp4LE~^MZXV!>uqAe%BgVLG)Nz&9-Zd3p nZvmCy0?kRia!kKm_XqHFZ2=7n1pNR2002ovPDHLkV1fVuIb~cO literal 0 HcmV?d00001 diff --git a/src/main/resources/data/malum/spirit_data/entity/phantom.json b/src/main/resources/data/malum/spirit_data/entity/phantom.json index 7836849bb..1b6e73f9a 100644 --- a/src/main/resources/data/malum/spirit_data/entity/phantom.json +++ b/src/main/resources/data/malum/spirit_data/entity/phantom.json @@ -8,11 +8,11 @@ }, { "spirit": "wicked", - "count": 1 + "count": 2 }, { "spirit": "aerial", - "count": 1 + "count": 2 } ] }