Skip to content

Commit

Permalink
made damage from magical projectiles consistent with vanilla
Browse files Browse the repository at this point in the history
  • Loading branch information
CammiePone committed Jan 2, 2024
1 parent f68889a commit 14cbb9e
Show file tree
Hide file tree
Showing 4 changed files with 17 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -4,19 +4,29 @@
import net.minecraft.entity.Entity;
import net.minecraft.entity.damage.DamageSource;
import net.minecraft.entity.damage.DamageType;
import net.minecraft.entity.projectile.ProjectileEntity;
import net.minecraft.registry.RegistryKey;
import net.minecraft.registry.RegistryKeys;
import net.minecraft.world.World;
import org.jetbrains.annotations.Nullable;

public class ArcanusDamageTypes {
public static final RegistryKey<DamageType> MAGIC = RegistryKey.of(RegistryKeys.DAMAGE_TYPE, Arcanus.id("magic"));
public static final RegistryKey<DamageType> MAGIC_PROJECTILE = RegistryKey.of(RegistryKeys.DAMAGE_TYPE, Arcanus.id("magic_projectile"));

public static DamageSource getMagicDamage(Entity source) {
return create(source.getWorld(), MAGIC, source);
}

public static DamageSource create(World world, RegistryKey<DamageType> key, @Nullable Entity attacker) {
public static DamageSource getMagicDamage(ProjectileEntity source, @Nullable Entity attacker) {
return create(source.getWorld(), MAGIC_PROJECTILE, source, attacker);
}

public static DamageSource create(World world, RegistryKey<DamageType> key, Entity attacker) {
return new DamageSource(world.getRegistryManager().get(RegistryKeys.DAMAGE_TYPE).getHolderOrThrow(key), attacker);
}

public static DamageSource create(World world, RegistryKey<DamageType> key, ProjectileEntity source, @Nullable Entity attacker) {
return new DamageSource(world.getRegistryManager().get(RegistryKeys.DAMAGE_TYPE).getHolderOrThrow(key), source, attacker);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,9 @@
import dev.cammiescorner.arcanuscontinuum.common.registry.ArcanusSpellComponents;
import net.minecraft.entity.Entity;
import net.minecraft.entity.LivingEntity;
import net.minecraft.entity.projectile.ProjectileEntity;
import net.minecraft.item.ItemStack;
import net.minecraft.registry.tag.DamageTypeTags;
import net.minecraft.util.hit.EntityHitResult;
import net.minecraft.util.hit.HitResult;
import net.minecraft.world.World;
Expand All @@ -28,12 +30,12 @@ public void effect(@Nullable LivingEntity caster, @Nullable Entity sourceEntity,
Entity entity = entityHit.getEntity();
float damage = 1.5F;

if(entity instanceof Targetable targetable && targetable.arcanuscontinuum$canBeTargeted()) {
if(caster != null && entity instanceof Targetable targetable && targetable.arcanuscontinuum$canBeTargeted()) {
if(entity.isWet() && effects.contains(ArcanusSpellComponents.ELECTRIC.get()))
damage *= 2F;

entity.timeUntilRegen = 0;
entity.damage(ArcanusDamageTypes.getMagicDamage(caster), (float) (damage * effects.stream().filter(ArcanusSpellComponents.DAMAGE::is).count() * potency));
entity.damage(sourceEntity instanceof ProjectileEntity projectile ? ArcanusDamageTypes.getMagicDamage(projectile, caster) : ArcanusDamageTypes.getMagicDamage(caster), (float) (damage * effects.stream().filter(ArcanusSpellComponents.DAMAGE::is).count() * potency));
}
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"exhaustion": 0.0,
"exhaustion": 0.2,
"message_id": "arcanuscontinuum.magic",
"scaling": "when_caused_by_living_non_player"
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"exhaustion": 0.0,
"exhaustion": 0.2,
"message_id": "arcanuscontinuum.magic",
"scaling": "when_caused_by_living_non_player"
}

0 comments on commit 14cbb9e

Please sign in to comment.