From 2f6ffe43a9027fa848cfedd5a23e519bfe4f5bcb Mon Sep 17 00:00:00 2001 From: Sollace Date: Thu, 28 May 2020 18:27:30 +0200 Subject: [PATCH] Some terminology changes and cleanup --- .../ability/ChangelingDisguiseAbility.java | 6 +- .../ability/UnicornCastingAbility.java | 8 +- .../client/render/model/GemEntityModel.java | 6 +- .../unicopia/command/DisguiseCommand.java | 6 +- .../unicopia/entity/Creature.java | 30 +++----- .../unicopia/entity/ProjectileEntity.java | 51 ++++++------- .../unicopia/entity/SpearEntity.java | 4 +- .../unicopia/entity/SpellcastEntity.java | 76 +++++++++---------- .../entity/player/PlayerDimensions.java | 10 +-- .../entity/player/PlayerInventory.java | 24 +++--- .../unicopia/entity/player/PlayerPhysics.java | 6 +- .../unicopia/entity/player/Pony.java | 54 ++++++------- .../unicopia/item/AlicornAmuletItem.java | 4 +- .../unicopia/item/BagOfHoldingItem.java | 4 +- .../unicopia/item/CursedMagicGemItem.java | 8 +- .../unicopia/item/EnchantedStaffItem.java | 6 +- .../unicopia/item/MagicGemItem.java | 16 ++-- .../unicopia/magic/AddictiveMagicalItem.java | 7 -- ...dMagicEffect.java => AttachableSpell.java} | 2 +- .../minelittlepony/unicopia/magic/Caster.java | 31 +++++--- .../unicopia/magic/CasterUtils.java | 6 +- ...agicEffect.java => DispenceableSpell.java} | 2 +- .../unicopia/magic/EtherialListener.java | 2 +- .../{HeldMagicEffect.java => HeldSpell.java} | 2 +- .../magic/{MagicEffect.java => Spell.java} | 4 +- .../unicopia/magic/Suppressable.java | 2 +- ...edMagicEffect.java => ThrowableSpell.java} | 2 +- .../magic/item/AddictiveMagicitem.java | 10 +++ .../CastableMagicItem.java} | 18 +++-- .../{MagicalItem.java => item/MagicItem.java} | 7 +- .../magic/spell/AbstractRangedAreaSpell.java | 4 +- .../unicopia/magic/spell/AbstractSpell.java | 4 +- .../unicopia/magic/spell/AttractiveSpell.java | 4 +- .../unicopia/magic/spell/AwkwardSpell.java | 4 +- .../magic/spell/ChangelingTrapSpell.java | 10 +-- .../unicopia/magic/spell/ChargingSpell.java | 6 +- .../unicopia/magic/spell/DarknessSpell.java | 4 +- .../unicopia/magic/spell/DisguiseSpell.java | 10 +-- .../magic/spell/FaithfulAssistantSpell.java | 12 +-- .../unicopia/magic/spell/FireSpell.java | 4 +- .../unicopia/magic/spell/FlameSpell.java | 4 +- .../unicopia/magic/spell/GenericSpell.java | 4 +- .../unicopia/magic/spell/GlowingSpell.java | 4 +- .../unicopia/magic/spell/IceSpell.java | 4 +- .../unicopia/magic/spell/PortalSpell.java | 14 ++-- .../unicopia/magic/spell/RevealingSpell.java | 2 +- .../unicopia/magic/spell/ScorchSpell.java | 6 +- .../unicopia/magic/spell/ShieldSpell.java | 4 +- .../unicopia/magic/spell/SpellRegistry.java | 40 +++++----- .../client/MixinEntityRenderDispatcher.java | 2 +- .../unicopia/network/EffectSync.java | 8 +- .../unicopia/particles/ParticleHandle.java | 4 +- .../recipe/ingredient/SpellPredicate.java | 4 +- .../util/projectile/AdvancedProjectile.java | 4 +- 54 files changed, 286 insertions(+), 294 deletions(-) delete mode 100644 src/main/java/com/minelittlepony/unicopia/magic/AddictiveMagicalItem.java rename src/main/java/com/minelittlepony/unicopia/magic/{AttachedMagicEffect.java => AttachableSpell.java} (91%) rename src/main/java/com/minelittlepony/unicopia/magic/{DispenceableMagicEffect.java => DispenceableSpell.java} (92%) rename src/main/java/com/minelittlepony/unicopia/magic/{HeldMagicEffect.java => HeldSpell.java} (87%) rename src/main/java/com/minelittlepony/unicopia/magic/{MagicEffect.java => Spell.java} (96%) rename src/main/java/com/minelittlepony/unicopia/magic/{TossedMagicEffect.java => ThrowableSpell.java} (96%) create mode 100644 src/main/java/com/minelittlepony/unicopia/magic/item/AddictiveMagicitem.java rename src/main/java/com/minelittlepony/unicopia/magic/{Castable.java => item/CastableMagicItem.java} (74%) rename src/main/java/com/minelittlepony/unicopia/magic/{MagicalItem.java => item/MagicItem.java} (62%) diff --git a/src/main/java/com/minelittlepony/unicopia/ability/ChangelingDisguiseAbility.java b/src/main/java/com/minelittlepony/unicopia/ability/ChangelingDisguiseAbility.java index 4a43d8da..60a96975 100644 --- a/src/main/java/com/minelittlepony/unicopia/ability/ChangelingDisguiseAbility.java +++ b/src/main/java/com/minelittlepony/unicopia/ability/ChangelingDisguiseAbility.java @@ -54,7 +54,7 @@ public class ChangelingDisguiseAbility extends ChangelingFeedAbility { if (looked instanceof PlayerEntity) { looked = Pony.of((PlayerEntity)looked) - .getEffect(DisguiseSpell.class) + .getSpell(DisguiseSpell.class) .map(DisguiseSpell::getDisguise) .orElse(looked); } @@ -67,10 +67,10 @@ public class ChangelingDisguiseAbility extends ChangelingFeedAbility { player.getEntityWorld().playSound(null, player.getBlockPos(), SoundEvents.ENTITY_PARROT_IMITATE_RAVAGER, SoundCategory.PLAYERS, 1.4F, 0.4F); - iplayer.getEffect(DisguiseSpell.class).orElseGet(() -> { + iplayer.getSpell(DisguiseSpell.class).orElseGet(() -> { DisguiseSpell disc = new DisguiseSpell(); - iplayer.setEffect(disc); + iplayer.setSpell(disc); return disc; }).setDisguise(looked); diff --git a/src/main/java/com/minelittlepony/unicopia/ability/UnicornCastingAbility.java b/src/main/java/com/minelittlepony/unicopia/ability/UnicornCastingAbility.java index 9caff0d3..744349c4 100644 --- a/src/main/java/com/minelittlepony/unicopia/ability/UnicornCastingAbility.java +++ b/src/main/java/com/minelittlepony/unicopia/ability/UnicornCastingAbility.java @@ -42,9 +42,9 @@ public class UnicornCastingAbility implements Ability { @Override public void apply(Pony player, Hit data) { - if (player.hasEffect()) { - String current = player.getEffect().getName(); - player.setEffect(Streams.stream(player.getOwner().getItemsHand()) + if (player.hasSpell()) { + String current = player.getSpell().getName(); + player.setSpell(Streams.stream(player.getOwner().getItemsHand()) .map(SpellRegistry::getKeyFromStack) .filter(i -> i != null && !current.equals(i)) .map(SpellRegistry.instance()::getSpellFromName) @@ -52,7 +52,7 @@ public class UnicornCastingAbility implements Ability { .findFirst() .orElse(null)); } else { - player.setEffect(Streams.stream(player.getOwner().getItemsHand()) + player.setSpell(Streams.stream(player.getOwner().getItemsHand()) .map(SpellRegistry.instance()::getSpellFrom) .filter(i -> i != null) .findFirst() diff --git a/src/main/java/com/minelittlepony/unicopia/client/render/model/GemEntityModel.java b/src/main/java/com/minelittlepony/unicopia/client/render/model/GemEntityModel.java index d0e88c26..8d072a45 100644 --- a/src/main/java/com/minelittlepony/unicopia/client/render/model/GemEntityModel.java +++ b/src/main/java/com/minelittlepony/unicopia/client/render/model/GemEntityModel.java @@ -5,7 +5,7 @@ import javax.annotation.Nullable; import com.minelittlepony.unicopia.entity.SpellcastEntity; import com.minelittlepony.unicopia.item.UItems; import com.minelittlepony.unicopia.magic.Affinity; -import com.minelittlepony.unicopia.magic.MagicEffect; +import com.minelittlepony.unicopia.magic.Spell; import com.minelittlepony.unicopia.magic.spell.SpellRegistry; import com.minelittlepony.util.Color; @@ -25,7 +25,7 @@ public class GemEntityModel extends EntityModel { private ModelPart body; @Nullable - private MagicEffect effect; + private Spell effect; public GemEntityModel() { textureWidth = 256; @@ -37,7 +37,7 @@ public class GemEntityModel extends EntityModel { @Override public void setAngles(SpellcastEntity entity, float limbAngle, float limbDistance, float customAngle, float headYaw, float headPitch) { - effect = entity.hasEffect() ? entity.getEffect() : null; + effect = entity.hasSpell() ? entity.getSpell() : null; float floatOffset = MathHelper.sin((entity.age + customAngle) / 10 + entity.hoverStart) / 10 + 0.1F; diff --git a/src/main/java/com/minelittlepony/unicopia/command/DisguiseCommand.java b/src/main/java/com/minelittlepony/unicopia/command/DisguiseCommand.java index 8a2655a8..f75ec99e 100644 --- a/src/main/java/com/minelittlepony/unicopia/command/DisguiseCommand.java +++ b/src/main/java/com/minelittlepony/unicopia/command/DisguiseCommand.java @@ -60,10 +60,10 @@ public class DisguiseCommand { throw FAILED_EXCEPTION.create(); } - DisguiseSpell effect = iplayer.getEffect(DisguiseSpell.class, true); + DisguiseSpell effect = iplayer.getSpell(DisguiseSpell.class, true); if (effect == null) { - iplayer.setEffect(new DisguiseSpell().setDisguise(entity)); + iplayer.setSpell(new DisguiseSpell().setDisguise(entity)); } else { effect.setDisguise(entity); } @@ -82,7 +82,7 @@ public class DisguiseCommand { static int reveal(ServerCommandSource source, PlayerEntity player) { Pony iplayer = Pony.of(player); - iplayer.getEffect(DisguiseSpell.class).ifPresent(disguise -> { + iplayer.getSpell(DisguiseSpell.class).ifPresent(disguise -> { disguise.onDestroyed(iplayer); }); diff --git a/src/main/java/com/minelittlepony/unicopia/entity/Creature.java b/src/main/java/com/minelittlepony/unicopia/entity/Creature.java index a3867fd8..01c8b498 100644 --- a/src/main/java/com/minelittlepony/unicopia/entity/Creature.java +++ b/src/main/java/com/minelittlepony/unicopia/entity/Creature.java @@ -3,9 +3,9 @@ package com.minelittlepony.unicopia.entity; import com.minelittlepony.unicopia.Race; import com.minelittlepony.unicopia.magic.Affinity; import com.minelittlepony.unicopia.magic.Affine; -import com.minelittlepony.unicopia.magic.AttachedMagicEffect; +import com.minelittlepony.unicopia.magic.AttachableSpell; import com.minelittlepony.unicopia.magic.Caster; -import com.minelittlepony.unicopia.magic.MagicEffect; +import com.minelittlepony.unicopia.magic.Spell; import com.minelittlepony.unicopia.magic.spell.SpellRegistry; import com.minelittlepony.unicopia.network.EffectSync; @@ -48,24 +48,14 @@ public class Creature implements Ponylike, Caster { } @Override - public void setEffect(MagicEffect effect) { - effectDelegate.set(effect); - } - - @Override - public T getEffect(Class type, boolean update) { - return effectDelegate.get(type, update); - } - - @Override - public boolean hasEffect() { - return effectDelegate.has(); + public EffectSync getPrimarySpellSlot() { + return effectDelegate; } @Override public void tick() { - if (hasEffect()) { - AttachedMagicEffect effect = getEffect(AttachedMagicEffect.class, true); + if (hasSpell()) { + AttachableSpell effect = getSpell(AttachableSpell.class, true); if (effect != null) { if (entity.getEntityWorld().isClient()) { @@ -73,7 +63,7 @@ public class Creature implements Ponylike, Caster { } if (!effect.updateOnPerson(this)) { - setEffect(null); + setSpell(null); } } } @@ -108,10 +98,10 @@ public class Creature implements Ponylike, Caster { @Override public void toNBT(CompoundTag compound) { - MagicEffect effect = getEffect(); + Spell effect = getSpell(); if (effect != null) { - compound.put("effect", SpellRegistry.instance().serializeEffectToNBT(effect)); + compound.put("effect", SpellRegistry.toNBT(effect)); } physics.toNBT(compound); } @@ -119,7 +109,7 @@ public class Creature implements Ponylike, Caster { @Override public void fromNBT(CompoundTag compound) { if (compound.contains("effect")) { - setEffect(SpellRegistry.instance().createEffectFromNBT(compound.getCompound("effect"))); + setSpell(SpellRegistry.instance().createEffectFromNBT(compound.getCompound("effect"))); } physics.fromNBT(compound); } diff --git a/src/main/java/com/minelittlepony/unicopia/entity/ProjectileEntity.java b/src/main/java/com/minelittlepony/unicopia/entity/ProjectileEntity.java index 8ca249de..df1ac8fd 100644 --- a/src/main/java/com/minelittlepony/unicopia/entity/ProjectileEntity.java +++ b/src/main/java/com/minelittlepony/unicopia/entity/ProjectileEntity.java @@ -5,8 +5,8 @@ import java.util.UUID; import com.minelittlepony.unicopia.magic.Affinity; import com.minelittlepony.unicopia.magic.Caster; import com.minelittlepony.unicopia.magic.EtherialListener; -import com.minelittlepony.unicopia.magic.MagicEffect; -import com.minelittlepony.unicopia.magic.TossedMagicEffect; +import com.minelittlepony.unicopia.magic.Spell; +import com.minelittlepony.unicopia.magic.ThrowableSpell; import com.minelittlepony.unicopia.magic.spell.SpellRegistry; import com.minelittlepony.unicopia.network.Channel; import com.minelittlepony.unicopia.network.EffectSync; @@ -114,7 +114,7 @@ public class ProjectileEntity extends ThrownItemEntity implements IMagicals, Adv @Override public Affinity getAffinity() { - return hasEffect() ? Affinity.NEUTRAL : getEffect().getAffinity(); + return hasSpell() ? Affinity.NEUTRAL : getSpell().getAffinity(); } @Override @@ -123,29 +123,24 @@ public class ProjectileEntity extends ThrownItemEntity implements IMagicals, Adv } @Override - public void setEffect(TossedMagicEffect effect) { - setEffect((MagicEffect)effect); + public void setEffect(ThrowableSpell effect) { + setSpell(effect); } @Override - public void setEffect(MagicEffect effect) { - effectDelegate.set(effect); + public EffectSync getPrimarySpellSlot() { + return effectDelegate; + } + + @Override + public void setSpell(Spell effect) { + Caster.super.setSpell(effect); if (effect != null) { effect.onPlaced(this); } } - @Override - public T getEffect(Class type, boolean update) { - return effectDelegate.get(type, update); - } - - @Override - public boolean hasEffect() { - return effectDelegate.has(); - } - @Override public void setThrowDamage(float damage) { getDataTracker().set(DAMAGE, Math.max(0, damage)); @@ -181,21 +176,21 @@ public class ProjectileEntity extends ThrownItemEntity implements IMagicals, Adv setNoGravity(false); } - if (hasEffect()) { + if (hasSpell()) { if (lastBlockPos == null || !lastBlockPos.equals(getBlockPos())) { - notifyNearbySpells(getEffect(), lastBlockPos, 6, EtherialListener.REMOVED); + notifyNearbySpells(getSpell(), lastBlockPos, 6, EtherialListener.REMOVED); lastBlockPos = getBlockPos(); - notifyNearbySpells(getEffect(), 6, EtherialListener.ADDED); + notifyNearbySpells(getSpell(), 6, EtherialListener.ADDED); } - if (getEffect().isDead()) { + if (getSpell().isDead()) { remove(); } else { - getEffect().update(this); + getSpell().update(this); } if (world.isClient()) { - getEffect().render(this); + getSpell().render(this); } } @@ -248,7 +243,7 @@ public class ProjectileEntity extends ThrownItemEntity implements IMagicals, Adv super.readCustomDataFromTag(compound); if (compound.contains("effect")) { - setEffect(SpellRegistry.instance().createEffectFromNBT(compound.getCompound("effect"))); + setSpell(SpellRegistry.instance().createEffectFromNBT(compound.getCompound("effect"))); } } @@ -256,8 +251,8 @@ public class ProjectileEntity extends ThrownItemEntity implements IMagicals, Adv public void writeCustomDataToTag(CompoundTag compound) { super.writeCustomDataToTag(compound); - if (hasEffect()) { - compound.put("effect", SpellRegistry.instance().serializeEffectToNBT(getEffect())); + if (hasSpell()) { + compound.put("effect", SpellRegistry.toNBT(getSpell())); } } @@ -281,8 +276,8 @@ public class ProjectileEntity extends ThrownItemEntity implements IMagicals, Adv ((TossableItem)item).onImpact(this, hit.getBlockPos(), world.getBlockState(hit.getBlockPos())); } - if (hasEffect()) { - MagicEffect effect = getEffect(); + if (hasSpell()) { + Spell effect = getSpell(); if (effect instanceof Tossable) { ((Tossable)effect).onImpact(this, hit.getBlockPos(), world.getBlockState(hit.getBlockPos())); diff --git a/src/main/java/com/minelittlepony/unicopia/entity/SpearEntity.java b/src/main/java/com/minelittlepony/unicopia/entity/SpearEntity.java index c9e1005b..45edda83 100644 --- a/src/main/java/com/minelittlepony/unicopia/entity/SpearEntity.java +++ b/src/main/java/com/minelittlepony/unicopia/entity/SpearEntity.java @@ -1,6 +1,6 @@ package com.minelittlepony.unicopia.entity; -import com.minelittlepony.unicopia.magic.TossedMagicEffect; +import com.minelittlepony.unicopia.magic.ThrowableSpell; import com.minelittlepony.unicopia.util.MagicalDamageSource; import com.minelittlepony.unicopia.util.projectile.AdvancedProjectile; @@ -184,6 +184,6 @@ public class SpearEntity extends ArrowEntity implements AdvancedProjectile { } @Override - public void setEffect(TossedMagicEffect effect) { + public void setEffect(ThrowableSpell effect) { } } diff --git a/src/main/java/com/minelittlepony/unicopia/entity/SpellcastEntity.java b/src/main/java/com/minelittlepony/unicopia/entity/SpellcastEntity.java index 2cf86edc..79c83940 100644 --- a/src/main/java/com/minelittlepony/unicopia/entity/SpellcastEntity.java +++ b/src/main/java/com/minelittlepony/unicopia/entity/SpellcastEntity.java @@ -10,10 +10,10 @@ import com.minelittlepony.unicopia.Race; import com.minelittlepony.unicopia.ducks.PickedItemSupplier; import com.minelittlepony.unicopia.item.UItems; import com.minelittlepony.unicopia.magic.Affinity; -import com.minelittlepony.unicopia.magic.Castable; import com.minelittlepony.unicopia.magic.Caster; import com.minelittlepony.unicopia.magic.EtherialListener; -import com.minelittlepony.unicopia.magic.MagicEffect; +import com.minelittlepony.unicopia.magic.Spell; +import com.minelittlepony.unicopia.magic.item.CastableMagicItem; import com.minelittlepony.unicopia.magic.spell.SpellRegistry; import com.minelittlepony.unicopia.network.EffectSync; @@ -96,8 +96,13 @@ public class SpellcastEntity extends MobEntityWithAi implements IMagicals, Caste } @Override - public void setEffect(@Nullable MagicEffect effect) { - effectDelegate.set(effect); + public EffectSync getPrimarySpellSlot() { + return effectDelegate; + } + + @Override + public void setSpell(@Nullable Spell effect) { + Caster.super.setSpell(effect); if (effect != null) { effect.onPlaced(this); @@ -109,17 +114,6 @@ public class SpellcastEntity extends MobEntityWithAi implements IMagicals, Caste return race.canCast(); } - @Nullable - @Override - public T getEffect(@Nullable Class type, boolean update) { - return effectDelegate.get(type, update); - } - - @Override - public boolean hasEffect() { - return effectDelegate.has(); - } - @Override protected void initDataTracker() { super.initDataTracker(); @@ -131,7 +125,7 @@ public class SpellcastEntity extends MobEntityWithAi implements IMagicals, Caste @Override public ItemStack getPickedStack() { - return SpellRegistry.instance().enchantStack(new ItemStack(getItem()), getEffect().getName()); + return SpellRegistry.instance().enchantStack(new ItemStack(getItem()), getSpell().getName()); } protected Item getItem() { @@ -168,8 +162,8 @@ public class SpellcastEntity extends MobEntityWithAi implements IMagicals, Caste } protected void displayTick() { - if (hasEffect()) { - getEffect().render(this); + if (hasSpell()) { + getSpell().render(this); } } @@ -180,17 +174,17 @@ public class SpellcastEntity extends MobEntityWithAi implements IMagicals, Caste displayTick(); } - if (!hasEffect()) { + if (!hasSpell()) { remove(); } else { - if (getEffect().isDead()) { + if (getSpell().isDead()) { remove(); onDeath(); } else { - getEffect().update(this); + getSpell().update(this); } - if (getEffect().allowAI()) { + if (getSpell().allowAI()) { super.tickMovement(); } } @@ -200,13 +194,13 @@ public class SpellcastEntity extends MobEntityWithAi implements IMagicals, Caste playSpawnEffects(); } - if (!world.isClient && hasEffect()) { - float exhaustionChance = getEffect().getExhaustion(this); + if (!world.isClient && hasSpell()) { + float exhaustionChance = getSpell().getExhaustion(this); if (exhaustionChance == 0 || world.random.nextInt((int)(exhaustionChance / 500)) == 0) { addLevels(-1); } else if (world.random.nextInt((int)(exhaustionChance * 500)) == 0) { - setEffect(null); + setSpell(null); } else if (world.random.nextInt((int)(exhaustionChance * 3500)) == 0) { world.createExplosion(this, getX(), getY(), getZ(), getCurrentLevel()/2, DestructionType.BREAK); remove(); @@ -223,7 +217,7 @@ public class SpellcastEntity extends MobEntityWithAi implements IMagicals, Caste public EntityDimensions getDimensions(EntityPose pose) { EntityDimensions dims = super.getDimensions(pose); - if (hasEffect() && getEffect().allowAI()) { + if (hasSpell() && getSpell().allowAI()) { return EntityDimensions.changing(dims.width, 1.5F); } @@ -257,8 +251,8 @@ public class SpellcastEntity extends MobEntityWithAi implements IMagicals, Caste int level = getCurrentLevel(); ItemStack stack = new ItemStack(getItem(), level + 1); - if (hasEffect()) { - SpellRegistry.instance().enchantStack(stack, getEffect().getName()); + if (hasSpell()) { + SpellRegistry.instance().enchantStack(stack, getSpell().getName()); } dropStack(stack, 0); @@ -267,8 +261,8 @@ public class SpellcastEntity extends MobEntityWithAi implements IMagicals, Caste @Override public void remove() { - if (hasEffect()) { - getEffect().onDestroyed(this); + if (hasSpell()) { + getSpell().onDestroyed(this); } super.remove(); } @@ -279,8 +273,8 @@ public class SpellcastEntity extends MobEntityWithAi implements IMagicals, Caste ItemStack currentItem = player.getStackInHand(Hand.MAIN_HAND); if (currentItem != null - && currentItem.getItem() instanceof Castable - && ((Castable)currentItem.getItem()).canFeed(this, currentItem) + && currentItem.getItem() instanceof CastableMagicItem + && ((CastableMagicItem)currentItem.getItem()).canFeed(this, currentItem) && tryLevelUp(currentItem)) { if (!player.abilities.creativeMode) { @@ -299,8 +293,8 @@ public class SpellcastEntity extends MobEntityWithAi implements IMagicals, Caste } public boolean tryLevelUp(ItemStack stack) { - if (hasEffect() && SpellRegistry.stackHasEnchantment(stack)) { - if (!getEffect().getName().contentEquals(SpellRegistry.getKeyFromStack(stack))) { + if (hasSpell() && SpellRegistry.stackHasEnchantment(stack)) { + if (!getSpell().getName().contentEquals(SpellRegistry.getKeyFromStack(stack))) { return false; } @@ -316,7 +310,7 @@ public class SpellcastEntity extends MobEntityWithAi implements IMagicals, Caste @Override public int getMaxLevel() { - return hasEffect() ? getEffect().getMaxLevelCutOff(this) : 0; + return hasSpell() ? getSpell().getMaxLevelCutOff(this) : 0; } @Override @@ -347,7 +341,7 @@ public class SpellcastEntity extends MobEntityWithAi implements IMagicals, Caste setCurrentLevel(compound.getInt("level")); if (compound.contains("effect")) { - setEffect(SpellRegistry.instance().createEffectFromNBT(compound.getCompound("effect"))); + setSpell(SpellRegistry.instance().createEffectFromNBT(compound.getCompound("effect"))); } } @@ -359,15 +353,15 @@ public class SpellcastEntity extends MobEntityWithAi implements IMagicals, Caste compound.putInt("level", getCurrentLevel()); getOwnerId().ifPresent(id -> compound.putUuid("owner", id)); - if (hasEffect()) { - compound.put("effect", SpellRegistry.instance().serializeEffectToNBT(getEffect())); + if (hasSpell()) { + compound.put("effect", SpellRegistry.toNBT(getSpell())); } } @Override - public void onNearbySpellChange(Caster source, MagicEffect effect, int newState) { - if (hasEffect()) { - EtherialListener listener = getEffect(EtherialListener.class, true); + public void onNearbySpellChange(Caster source, Spell effect, int newState) { + if (hasSpell()) { + EtherialListener listener = getSpell(EtherialListener.class, true); if (listener != null) { listener.onNearbySpellChange(source, effect, newState); } diff --git a/src/main/java/com/minelittlepony/unicopia/entity/player/PlayerDimensions.java b/src/main/java/com/minelittlepony/unicopia/entity/player/PlayerDimensions.java index c045b525..bfe1e1a5 100644 --- a/src/main/java/com/minelittlepony/unicopia/entity/player/PlayerDimensions.java +++ b/src/main/java/com/minelittlepony/unicopia/entity/player/PlayerDimensions.java @@ -1,7 +1,7 @@ package com.minelittlepony.unicopia.entity.player; import com.minelittlepony.unicopia.ability.HeightPredicate; -import com.minelittlepony.unicopia.magic.MagicEffect; +import com.minelittlepony.unicopia.magic.Spell; import net.minecraft.entity.EntityDimensions; import net.minecraft.entity.EntityPose; @@ -61,8 +61,8 @@ public final class PlayerDimensions { } private float calculateTargetEyeHeight() { - if (pony.hasEffect()) { - MagicEffect effect = pony.getEffect(); + if (pony.hasSpell()) { + Spell effect = pony.getSpell(); if (!effect.isDead() && effect instanceof HeightPredicate) { float val = ((HeightPredicate)effect).getTargetEyeHeight(pony); if (val > 0) { @@ -79,8 +79,8 @@ public final class PlayerDimensions { } private float calculateTargetBodyHeight() { - if (pony.hasEffect()) { - MagicEffect effect = pony.getEffect(); + if (pony.hasSpell()) { + Spell effect = pony.getSpell(); if (!effect.isDead() && effect instanceof HeightPredicate) { float val = ((HeightPredicate)effect).getTargetBodyHeight(pony); if (val > 0) { diff --git a/src/main/java/com/minelittlepony/unicopia/entity/player/PlayerInventory.java b/src/main/java/com/minelittlepony/unicopia/entity/player/PlayerInventory.java index 5c2bcd09..e4873ff7 100644 --- a/src/main/java/com/minelittlepony/unicopia/entity/player/PlayerInventory.java +++ b/src/main/java/com/minelittlepony/unicopia/entity/player/PlayerInventory.java @@ -6,8 +6,8 @@ import java.util.Map; import com.google.common.collect.Maps; import com.minelittlepony.unicopia.container.HeavyInventory; import com.minelittlepony.unicopia.item.MagicGemItem; -import com.minelittlepony.unicopia.magic.AddictiveMagicalItem; -import com.minelittlepony.unicopia.magic.MagicalItem; +import com.minelittlepony.unicopia.magic.item.AddictiveMagicitem; +import com.minelittlepony.unicopia.magic.item.MagicItem; import com.minelittlepony.unicopia.util.NbtSerialisable; import net.minecraft.item.Item; @@ -20,7 +20,7 @@ import net.minecraft.util.Tickable; import net.minecraft.util.registry.Registry; public class PlayerInventory implements Tickable, NbtSerialisable { - private final Map dependencies = Maps.newHashMap(); + private final Map dependencies = Maps.newHashMap(); private final Pony player; @@ -36,7 +36,7 @@ public class PlayerInventory implements Tickable, NbtSerialisable { * * Bad things might happen when it's removed. */ - public synchronized void enforceDependency(AddictiveMagicalItem item) { + public synchronized void enforceDependency(AddictiveMagicitem item) { if (dependencies.containsKey(item)) { dependencies.get(item).reinforce(); } else { @@ -47,7 +47,7 @@ public class PlayerInventory implements Tickable, NbtSerialisable { /** * Returns how long the player has been wearing the given item. */ - public synchronized int getTicksAttached(AddictiveMagicalItem item) { + public synchronized int getTicksAttached(AddictiveMagicitem item) { if (dependencies.containsKey(item)) { return dependencies.get(item).ticksAttached; } @@ -60,7 +60,7 @@ public class PlayerInventory implements Tickable, NbtSerialisable { * * Zero means not dependent at all / not wearing. */ - public synchronized float getNeedfulness(AddictiveMagicalItem item) { + public synchronized float getNeedfulness(AddictiveMagicitem item) { if (dependencies.containsKey(item)) { return dependencies.get(item).needfulness; } @@ -72,10 +72,10 @@ public class PlayerInventory implements Tickable, NbtSerialisable { public synchronized void tick() { carryingWeight = HeavyInventory.getContentsTotalWorth(player.getOwner().inventory, false); - Iterator> iterator = dependencies.entrySet().iterator(); + Iterator> iterator = dependencies.entrySet().iterator(); while (iterator.hasNext()) { - Map.Entry entry = iterator.next(); + Map.Entry entry = iterator.next(); Entry item = entry.getValue(); @@ -90,7 +90,7 @@ public class PlayerInventory implements Tickable, NbtSerialisable { /** * Checks if the player is wearing the specified magical artifact. */ - public boolean isWearing(MagicalItem item) { + public boolean isWearing(MagicItem item) { for (ItemStack i : player.getOwner().getArmorItems()) { if (!i.isEmpty() && i.getItem() == item) { return true; @@ -147,13 +147,13 @@ public class PlayerInventory implements Tickable, NbtSerialisable { float needfulness = 1; - AddictiveMagicalItem item; + AddictiveMagicitem item; Entry() { } - Entry(AddictiveMagicalItem key) { + Entry(AddictiveMagicitem key) { this.item = key; } @@ -186,7 +186,7 @@ public class PlayerInventory implements Tickable, NbtSerialisable { Item item = Registry.ITEM.get(new Identifier(compound.getString("item"))); - this.item = item instanceof AddictiveMagicalItem ? (AddictiveMagicalItem)item : null; + this.item = item instanceof AddictiveMagicitem ? (AddictiveMagicitem)item : null; } } } diff --git a/src/main/java/com/minelittlepony/unicopia/entity/player/PlayerPhysics.java b/src/main/java/com/minelittlepony/unicopia/entity/player/PlayerPhysics.java index d07470ab..fe96af50 100644 --- a/src/main/java/com/minelittlepony/unicopia/entity/player/PlayerPhysics.java +++ b/src/main/java/com/minelittlepony/unicopia/entity/player/PlayerPhysics.java @@ -6,7 +6,7 @@ import com.minelittlepony.unicopia.Race; import com.minelittlepony.unicopia.USounds; import com.minelittlepony.unicopia.ability.FlightPredicate; import com.minelittlepony.unicopia.entity.EntityPhysics; -import com.minelittlepony.unicopia.magic.MagicEffect; +import com.minelittlepony.unicopia.magic.Spell; import com.minelittlepony.unicopia.particles.MagicParticleEffect; import com.minelittlepony.unicopia.util.NbtSerialisable; import com.minelittlepony.unicopia.util.MutableVector; @@ -56,8 +56,8 @@ public class PlayerPhysics extends EntityPhysics implements Tickable, Moti return true; } - if (pony.hasEffect()) { - MagicEffect effect = pony.getEffect(); + if (pony.hasSpell()) { + Spell effect = pony.getSpell(); if (!effect.isDead() && effect instanceof FlightPredicate) { return ((FlightPredicate)effect).checkCanFly(pony); } diff --git a/src/main/java/com/minelittlepony/unicopia/entity/player/Pony.java b/src/main/java/com/minelittlepony/unicopia/entity/player/Pony.java index 07f6e741..1a4c3853 100644 --- a/src/main/java/com/minelittlepony/unicopia/entity/player/Pony.java +++ b/src/main/java/com/minelittlepony/unicopia/entity/player/Pony.java @@ -12,11 +12,11 @@ import com.minelittlepony.unicopia.entity.Physics; import com.minelittlepony.unicopia.entity.Ponylike; import com.minelittlepony.unicopia.entity.Trap; import com.minelittlepony.unicopia.magic.Affinity; -import com.minelittlepony.unicopia.magic.AttachedMagicEffect; +import com.minelittlepony.unicopia.magic.AttachableSpell; import com.minelittlepony.unicopia.magic.Caster; -import com.minelittlepony.unicopia.magic.HeldMagicEffect; -import com.minelittlepony.unicopia.magic.MagicEffect; -import com.minelittlepony.unicopia.magic.MagicalItem; +import com.minelittlepony.unicopia.magic.HeldSpell; +import com.minelittlepony.unicopia.magic.Spell; +import com.minelittlepony.unicopia.magic.item.MagicItem; import com.minelittlepony.unicopia.magic.spell.SpellRegistry; import com.minelittlepony.unicopia.network.Channel; import com.minelittlepony.unicopia.network.EffectSync; @@ -112,7 +112,7 @@ public class Pony implements Caster, Ponylike, Trans @Override public boolean isInvisible() { - return invisible && hasEffect(); + return invisible && hasSpell(); } @Override @@ -121,14 +121,14 @@ public class Pony implements Caster, Ponylike, Trans } @Nullable - public HeldMagicEffect getHeldEffect(ItemStack stack) { + public HeldSpell getHeldSpell(ItemStack stack) { if (!getSpecies().canCast()) { heldEffectDelegate.set(null); return null; } - HeldMagicEffect heldEffect = heldEffectDelegate.get(HeldMagicEffect.class, true); + HeldSpell heldEffect = heldEffectDelegate.get(HeldSpell.class, true); if (heldEffect == null || !heldEffect.getName().equals(SpellRegistry.getKeyFromStack(stack))) { heldEffect = SpellRegistry.instance().getHeldFrom(stack); @@ -219,8 +219,8 @@ public class Pony implements Caster, Ponylike, Trans public void tick() { gravity.tick(); - if (hasEffect()) { - AttachedMagicEffect effect = getEffect(AttachedMagicEffect.class, true); + if (hasSpell()) { + AttachableSpell effect = getSpell(AttachableSpell.class, true); if (effect != null) { if (entity.getEntityWorld().isClient()) { @@ -228,17 +228,17 @@ public class Pony implements Caster, Ponylike, Trans } if (!effect.updateOnPerson(this)) { - setEffect(null); + setSpell(null); } } } ItemStack stack = entity.getStackInHand(Hand.MAIN_HAND); - HeldMagicEffect effect = getHeldEffect(stack); + HeldSpell effect = getHeldSpell(stack); if (effect != null) { - Affinity affinity = stack.getItem() instanceof MagicalItem ? ((MagicalItem)stack.getItem()).getAffinity(stack) : Affinity.NEUTRAL; + Affinity affinity = stack.getItem() instanceof MagicItem ? ((MagicItem)stack.getItem()).getAffinity(stack) : Affinity.NEUTRAL; effect.updateInHand(this, affinity); } @@ -270,8 +270,8 @@ public class Pony implements Caster, Ponylike, Trans @Override public boolean onProjectileImpact(ProjectileEntity projectile) { - if (hasEffect()) { - MagicEffect effect = getEffect(); + if (hasSpell()) { + Spell effect = getSpell(); if (!effect.isDead() && effect.handleProjectileImpact(projectile)) { return true; } @@ -340,10 +340,10 @@ public class Pony implements Caster, Ponylike, Trans compound.put("powers", powers.toNBT()); compound.put("gravity", gravity.toNBT()); - MagicEffect effect = getEffect(); + Spell effect = getSpell(); if (effect != null) { - compound.put("effect", SpellRegistry.instance().serializeEffectToNBT(effect)); + compound.put("effect", SpellRegistry.toNBT(effect)); } pageStates.toNBT(compound); @@ -364,28 +364,22 @@ public class Pony implements Caster, Ponylike, Trans } public void copyFrom(Pony oldPlayer) { - setEffect(oldPlayer.getEffect()); + setSpell(oldPlayer.getSpell()); setSpecies(oldPlayer.getSpecies()); setDirty(); } @Override - public void setEffect(@Nullable MagicEffect effect) { - effectDelegate.set(effect); + public EffectSync getPrimarySpellSlot() { + return effectDelegate; + } + + @Override + public void setSpell(@Nullable Spell effect) { + Caster.super.setSpell(effect); setDirty(); } - @Override - public boolean hasEffect() { - return effectDelegate.has(); - } - - @Nullable - @Override - public T getEffect(@Nullable Class type, boolean update) { - return effectDelegate.get(type, update); - } - @Override public void setOwner(PlayerEntity owner) { } diff --git a/src/main/java/com/minelittlepony/unicopia/item/AlicornAmuletItem.java b/src/main/java/com/minelittlepony/unicopia/item/AlicornAmuletItem.java index 60c0bc46..7defd614 100644 --- a/src/main/java/com/minelittlepony/unicopia/item/AlicornAmuletItem.java +++ b/src/main/java/com/minelittlepony/unicopia/item/AlicornAmuletItem.java @@ -12,7 +12,7 @@ import com.minelittlepony.unicopia.entity.ItemImpl; import com.minelittlepony.unicopia.entity.player.MagicReserves; import com.minelittlepony.unicopia.entity.player.Pony; import com.minelittlepony.unicopia.magic.Affinity; -import com.minelittlepony.unicopia.magic.AddictiveMagicalItem; +import com.minelittlepony.unicopia.magic.item.AddictiveMagicitem; import com.minelittlepony.unicopia.util.MagicalDamageSource; import com.minelittlepony.unicopia.util.VecHelper; @@ -48,7 +48,7 @@ import net.minecraft.world.LocalDifficulty; import net.minecraft.world.World; import net.minecraft.world.explosion.Explosion.DestructionType; -public class AlicornAmuletItem extends ArmorItem implements AddictiveMagicalItem, ItemImpl.TickableItem { +public class AlicornAmuletItem extends ArmorItem implements AddictiveMagicitem, ItemImpl.TickableItem { private static final UUID[] MODIFIERS = new UUID[] { UUID.fromString("845DB27C-C624-495F-8C9F-6020A9A58B6B"), diff --git a/src/main/java/com/minelittlepony/unicopia/item/BagOfHoldingItem.java b/src/main/java/com/minelittlepony/unicopia/item/BagOfHoldingItem.java index bb801222..9264b43f 100644 --- a/src/main/java/com/minelittlepony/unicopia/item/BagOfHoldingItem.java +++ b/src/main/java/com/minelittlepony/unicopia/item/BagOfHoldingItem.java @@ -10,7 +10,7 @@ import com.minelittlepony.unicopia.container.BagOfHoldingInventory; import com.minelittlepony.unicopia.container.UContainers; import com.minelittlepony.unicopia.entity.IMagicals; import com.minelittlepony.unicopia.magic.Affinity; -import com.minelittlepony.unicopia.magic.MagicalItem; +import com.minelittlepony.unicopia.magic.item.MagicItem; import com.minelittlepony.unicopia.util.VecHelper; import net.fabricmc.fabric.api.container.ContainerProviderRegistry; @@ -37,7 +37,7 @@ import net.minecraft.util.math.Box; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; -public class BagOfHoldingItem extends Item implements MagicalItem { +public class BagOfHoldingItem extends Item implements MagicItem { public BagOfHoldingItem(Settings settings) { super(settings); diff --git a/src/main/java/com/minelittlepony/unicopia/item/CursedMagicGemItem.java b/src/main/java/com/minelittlepony/unicopia/item/CursedMagicGemItem.java index 01d1b69a..01ffe709 100644 --- a/src/main/java/com/minelittlepony/unicopia/item/CursedMagicGemItem.java +++ b/src/main/java/com/minelittlepony/unicopia/item/CursedMagicGemItem.java @@ -2,8 +2,8 @@ package com.minelittlepony.unicopia.item; import com.minelittlepony.unicopia.magic.Affinity; import com.minelittlepony.unicopia.magic.CastResult; -import com.minelittlepony.unicopia.magic.DispenceableMagicEffect; -import com.minelittlepony.unicopia.magic.MagicEffect; +import com.minelittlepony.unicopia.magic.DispenceableSpell; +import com.minelittlepony.unicopia.magic.Spell; import com.minelittlepony.unicopia.util.MagicalDamageSource; import net.minecraft.item.ItemStack; @@ -20,7 +20,7 @@ public class CursedMagicGemItem extends MagicGemItem { } @Override - public CastResult onDispenseSpell(BlockPointer source, ItemStack stack, DispenceableMagicEffect effect) { + public CastResult onDispenseSpell(BlockPointer source, ItemStack stack, DispenceableSpell effect) { BlockPos pos = source.getBlockPos(); World world = source.getWorld(); @@ -41,7 +41,7 @@ public class CursedMagicGemItem extends MagicGemItem { } @Override - public CastResult onCastSpell(ItemUsageContext context, MagicEffect effect) { + public CastResult onCastSpell(ItemUsageContext context, Spell effect) { CastResult result = super.onCastSpell(context, effect); if (result != CastResult.NONE) { diff --git a/src/main/java/com/minelittlepony/unicopia/item/EnchantedStaffItem.java b/src/main/java/com/minelittlepony/unicopia/item/EnchantedStaffItem.java index fb30289d..037184fb 100644 --- a/src/main/java/com/minelittlepony/unicopia/item/EnchantedStaffItem.java +++ b/src/main/java/com/minelittlepony/unicopia/item/EnchantedStaffItem.java @@ -11,7 +11,7 @@ import com.minelittlepony.unicopia.magic.Affinity; import com.minelittlepony.unicopia.magic.CasterUtils; import com.minelittlepony.unicopia.magic.Affine; import com.minelittlepony.unicopia.magic.Caster; -import com.minelittlepony.unicopia.magic.TossedMagicEffect; +import com.minelittlepony.unicopia.magic.ThrowableSpell; import com.minelittlepony.unicopia.util.projectile.TossableItem; import net.minecraft.block.BlockState; @@ -34,9 +34,9 @@ import net.minecraft.world.World; public class EnchantedStaffItem extends StaffItem implements Affine, TossableItem { @Nonnull - private final TossedMagicEffect effect; + private final ThrowableSpell effect; - public EnchantedStaffItem(Settings settings, @Nonnull TossedMagicEffect effect) { + public EnchantedStaffItem(Settings settings, @Nonnull ThrowableSpell effect) { super(settings.maxDamage(500)); this.effect = effect; diff --git a/src/main/java/com/minelittlepony/unicopia/item/MagicGemItem.java b/src/main/java/com/minelittlepony/unicopia/item/MagicGemItem.java index 51999ca1..b4d917ee 100644 --- a/src/main/java/com/minelittlepony/unicopia/item/MagicGemItem.java +++ b/src/main/java/com/minelittlepony/unicopia/item/MagicGemItem.java @@ -8,11 +8,11 @@ import com.minelittlepony.unicopia.EquinePredicates; import com.minelittlepony.unicopia.entity.SpellcastEntity; import com.minelittlepony.unicopia.magic.Affinity; import com.minelittlepony.unicopia.magic.CastResult; -import com.minelittlepony.unicopia.magic.Castable; -import com.minelittlepony.unicopia.magic.DispenceableMagicEffect; +import com.minelittlepony.unicopia.magic.DispenceableSpell; import com.minelittlepony.unicopia.magic.Dispensable; -import com.minelittlepony.unicopia.magic.MagicEffect; +import com.minelittlepony.unicopia.magic.Spell; import com.minelittlepony.unicopia.magic.Useable; +import com.minelittlepony.unicopia.magic.item.CastableMagicItem; import com.minelittlepony.unicopia.magic.spell.SpellRegistry; import com.minelittlepony.unicopia.util.VecHelper; @@ -35,7 +35,7 @@ import net.minecraft.util.Rarity; import net.minecraft.util.TypedActionResult; import net.minecraft.world.World; -public class MagicGemItem extends Item implements Castable { +public class MagicGemItem extends Item implements CastableMagicItem { public MagicGemItem(Settings settings) { super(settings); @@ -48,7 +48,7 @@ public class MagicGemItem extends Item implements Castable { } @Override - public CastResult onDispenseSpell(BlockPointer source, ItemStack stack, DispenceableMagicEffect effect) { + public CastResult onDispenseSpell(BlockPointer source, ItemStack stack, DispenceableSpell effect) { Direction facing = source.getBlockState().get(DispenserBlock.FACING); BlockPos pos = source.getBlockPos().offset(facing); @@ -56,7 +56,7 @@ public class MagicGemItem extends Item implements Castable { } @Override - public CastResult onCastSpell(ItemUsageContext context, MagicEffect effect) { + public CastResult onCastSpell(ItemUsageContext context, Spell effect) { if (effect instanceof Useable) { return ((Useable)effect).onUse(context, getAffinity(context.getStack())); } @@ -81,7 +81,7 @@ public class MagicGemItem extends Item implements Castable { return ActionResult.FAIL; } - MagicEffect effect = SpellRegistry.instance().getSpellFrom(stack); + Spell effect = SpellRegistry.instance().getSpellFrom(stack); if (effect == null) { return ActionResult.FAIL; @@ -186,7 +186,7 @@ public class MagicGemItem extends Item implements Castable { @Override public boolean canFeed(SpellcastEntity entity, ItemStack stack) { - MagicEffect effect = entity.getEffect(); + Spell effect = entity.getSpell(); return effect != null && entity.getAffinity() == getAffinity() diff --git a/src/main/java/com/minelittlepony/unicopia/magic/AddictiveMagicalItem.java b/src/main/java/com/minelittlepony/unicopia/magic/AddictiveMagicalItem.java deleted file mode 100644 index 149ac8be..00000000 --- a/src/main/java/com/minelittlepony/unicopia/magic/AddictiveMagicalItem.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.minelittlepony.unicopia.magic; - -import com.minelittlepony.unicopia.entity.player.Pony; - -public interface AddictiveMagicalItem extends MagicalItem { - void onRemoved(Pony player, float needfulness); -} diff --git a/src/main/java/com/minelittlepony/unicopia/magic/AttachedMagicEffect.java b/src/main/java/com/minelittlepony/unicopia/magic/AttachableSpell.java similarity index 91% rename from src/main/java/com/minelittlepony/unicopia/magic/AttachedMagicEffect.java rename to src/main/java/com/minelittlepony/unicopia/magic/AttachableSpell.java index b7d3bb8e..eb543d8e 100644 --- a/src/main/java/com/minelittlepony/unicopia/magic/AttachedMagicEffect.java +++ b/src/main/java/com/minelittlepony/unicopia/magic/AttachableSpell.java @@ -3,7 +3,7 @@ package com.minelittlepony.unicopia.magic; /** * A magic effect that does something when attached to an entity. */ -public interface AttachedMagicEffect extends MagicEffect { +public interface AttachableSpell extends Spell { /** * Called every tick when attached to a player. * diff --git a/src/main/java/com/minelittlepony/unicopia/magic/Caster.java b/src/main/java/com/minelittlepony/unicopia/magic/Caster.java index 09c515ae..ba555314 100644 --- a/src/main/java/com/minelittlepony/unicopia/magic/Caster.java +++ b/src/main/java/com/minelittlepony/unicopia/magic/Caster.java @@ -9,6 +9,7 @@ import javax.annotation.Nullable; import com.minelittlepony.unicopia.AwaitTickQueue; import com.minelittlepony.unicopia.entity.IMagicals; import com.minelittlepony.unicopia.entity.Owned; +import com.minelittlepony.unicopia.network.EffectSync; import com.minelittlepony.unicopia.particles.ParticleSource; import com.minelittlepony.unicopia.util.VecHelper; @@ -25,14 +26,18 @@ import net.minecraft.world.World; */ public interface Caster extends Owned, Levelled, Affine, IMagicals, ParticleSource { - void setEffect(@Nullable MagicEffect effect); + EffectSync getPrimarySpellSlot(); + + default void setSpell(@Nullable Spell spell) { + getPrimarySpellSlot().set(spell); + } /** * Gets the active effect for this caster. */ @Nullable - default MagicEffect getEffect(boolean update) { - return getEffect(null, update); + default Spell getSpell(boolean update) { + return getSpell(null, update); } /** @@ -40,19 +45,21 @@ public interface Caster extends Owned, Levelled, Affi * Returns null if no such effect exists for this caster. */ @Nullable - T getEffect(@Nullable Class type, boolean update); + default T getSpell(@Nullable Class type, boolean update) { + return getPrimarySpellSlot().get(type, update); + } /** * Gets the active effect for this caster updating it if needed. */ @Nullable - default MagicEffect getEffect() { - return getEffect(true); + default Spell getSpell() { + return getSpell(true); } @SuppressWarnings("unchecked") - default Optional getEffect(Class type) { - MagicEffect effect = getEffect(); + default Optional getSpell(Class type) { + Spell effect = getSpell(); if (effect == null || effect.isDead() || !type.isAssignableFrom(effect.getClass())) { return Optional.empty(); @@ -64,7 +71,9 @@ public interface Caster extends Owned, Levelled, Affi /** * Returns true if this caster has an active effect attached to it. */ - boolean hasEffect(); + default boolean hasSpell() { + return getPrimarySpellSlot().has(); + } /** * Gets the entity directly responsible for casting. @@ -136,7 +145,7 @@ public interface Caster extends Owned, Levelled, Affi return VecHelper.findAllEntitiesInRange(getEntity(), getWorld(), getOrigin(), radius); } - default void notifyNearbySpells(MagicEffect sender, BlockPos origin, double radius, int newState) { + default void notifyNearbySpells(Spell sender, BlockPos origin, double radius, int newState) { AwaitTickQueue.enqueueTask(w -> { VecHelper.findAllEntitiesInRange(getEntity(), getWorld(), origin, radius).filter(i -> i instanceof EtherialListener).forEach(i -> { ((EtherialListener)i).onNearbySpellChange(this, sender, newState); @@ -144,7 +153,7 @@ public interface Caster extends Owned, Levelled, Affi }); } - default void notifyNearbySpells(MagicEffect sender, double radius, int newState) { + default void notifyNearbySpells(Spell sender, double radius, int newState) { notifyNearbySpells(sender, getOrigin(), radius, newState); } } diff --git a/src/main/java/com/minelittlepony/unicopia/magic/CasterUtils.java b/src/main/java/com/minelittlepony/unicopia/magic/CasterUtils.java index 7a38b7f5..42564e03 100644 --- a/src/main/java/com/minelittlepony/unicopia/magic/CasterUtils.java +++ b/src/main/java/com/minelittlepony/unicopia/magic/CasterUtils.java @@ -50,10 +50,10 @@ public class CasterUtils { .map(Optional::get); } - static Optional toMagicEffect(Class type, @Nullable Entity entity) { + static Optional toMagicEffect(Class type, @Nullable Entity entity) { return toCaster(entity) - .filter(Caster::hasEffect) - .map(caster -> caster.getEffect(type, false)) + .filter(Caster::hasSpell) + .map(caster -> caster.getSpell(type, false)) .filter(e -> !e.isDead()); } diff --git a/src/main/java/com/minelittlepony/unicopia/magic/DispenceableMagicEffect.java b/src/main/java/com/minelittlepony/unicopia/magic/DispenceableSpell.java similarity index 92% rename from src/main/java/com/minelittlepony/unicopia/magic/DispenceableMagicEffect.java rename to src/main/java/com/minelittlepony/unicopia/magic/DispenceableSpell.java index 389d013c..05a90667 100644 --- a/src/main/java/com/minelittlepony/unicopia/magic/DispenceableMagicEffect.java +++ b/src/main/java/com/minelittlepony/unicopia/magic/DispenceableSpell.java @@ -7,7 +7,7 @@ import net.minecraft.util.math.Direction; /** * Represents an object with an action to perform when dispensed from a dispenser. */ -public interface DispenceableMagicEffect extends MagicEffect { +public interface DispenceableSpell extends Spell { /** * Called when dispensed. diff --git a/src/main/java/com/minelittlepony/unicopia/magic/EtherialListener.java b/src/main/java/com/minelittlepony/unicopia/magic/EtherialListener.java index 5d2431c1..a2d0580d 100644 --- a/src/main/java/com/minelittlepony/unicopia/magic/EtherialListener.java +++ b/src/main/java/com/minelittlepony/unicopia/magic/EtherialListener.java @@ -14,5 +14,5 @@ public interface EtherialListener { * @param effect The spell that dispatched the event * @param state The new state */ - void onNearbySpellChange(Caster source, MagicEffect effect, int state); + void onNearbySpellChange(Caster source, Spell effect, int state); } diff --git a/src/main/java/com/minelittlepony/unicopia/magic/HeldMagicEffect.java b/src/main/java/com/minelittlepony/unicopia/magic/HeldSpell.java similarity index 87% rename from src/main/java/com/minelittlepony/unicopia/magic/HeldMagicEffect.java rename to src/main/java/com/minelittlepony/unicopia/magic/HeldSpell.java index 253e451e..1726cb7b 100644 --- a/src/main/java/com/minelittlepony/unicopia/magic/HeldMagicEffect.java +++ b/src/main/java/com/minelittlepony/unicopia/magic/HeldSpell.java @@ -5,7 +5,7 @@ import com.minelittlepony.unicopia.entity.player.Pony; /** * Represents a passive spell that does something when held in the player's hand. */ -public interface HeldMagicEffect extends MagicEffect { +public interface HeldSpell extends Spell { /** * Called every tick when held in a player's inventory. * diff --git a/src/main/java/com/minelittlepony/unicopia/magic/MagicEffect.java b/src/main/java/com/minelittlepony/unicopia/magic/Spell.java similarity index 96% rename from src/main/java/com/minelittlepony/unicopia/magic/MagicEffect.java rename to src/main/java/com/minelittlepony/unicopia/magic/Spell.java index 205fe127..a12769b4 100644 --- a/src/main/java/com/minelittlepony/unicopia/magic/MagicEffect.java +++ b/src/main/java/com/minelittlepony/unicopia/magic/Spell.java @@ -8,7 +8,7 @@ import net.minecraft.entity.projectile.ProjectileEntity; /** * Interface for a magic spells */ -public interface MagicEffect extends NbtSerialisable, Affine { +public interface Spell extends NbtSerialisable, Affine { /** * Gets the name used to identify this effect. @@ -102,7 +102,7 @@ public interface MagicEffect extends NbtSerialisable, Affine { /** * Returns a new, deep-copied instance of this spell. */ - default MagicEffect copy() { + default Spell copy() { return SpellRegistry.instance().copyInstance(this); } } diff --git a/src/main/java/com/minelittlepony/unicopia/magic/Suppressable.java b/src/main/java/com/minelittlepony/unicopia/magic/Suppressable.java index 829d524a..11fa2114 100644 --- a/src/main/java/com/minelittlepony/unicopia/magic/Suppressable.java +++ b/src/main/java/com/minelittlepony/unicopia/magic/Suppressable.java @@ -13,7 +13,7 @@ public interface Suppressable { /** * Returns true if this spell can be suppressed by the given other spell and caster. */ - boolean isVulnerable(Caster otherSource, MagicEffect other); + boolean isVulnerable(Caster otherSource, Spell other); /** * Event triggered when this effect is suppressed. diff --git a/src/main/java/com/minelittlepony/unicopia/magic/TossedMagicEffect.java b/src/main/java/com/minelittlepony/unicopia/magic/ThrowableSpell.java similarity index 96% rename from src/main/java/com/minelittlepony/unicopia/magic/TossedMagicEffect.java rename to src/main/java/com/minelittlepony/unicopia/magic/ThrowableSpell.java index 21cbabcf..3f1277ae 100644 --- a/src/main/java/com/minelittlepony/unicopia/magic/TossedMagicEffect.java +++ b/src/main/java/com/minelittlepony/unicopia/magic/ThrowableSpell.java @@ -20,7 +20,7 @@ import net.minecraft.world.World; /** * Magic effects that can be thrown. */ -public interface TossedMagicEffect extends MagicEffect, Tossable> { +public interface ThrowableSpell extends Spell, Tossable> { @Override default SoundEvent getThrowSound(Caster caster) { diff --git a/src/main/java/com/minelittlepony/unicopia/magic/item/AddictiveMagicitem.java b/src/main/java/com/minelittlepony/unicopia/magic/item/AddictiveMagicitem.java new file mode 100644 index 00000000..9dce27cf --- /dev/null +++ b/src/main/java/com/minelittlepony/unicopia/magic/item/AddictiveMagicitem.java @@ -0,0 +1,10 @@ +package com.minelittlepony.unicopia.magic.item; + +import com.minelittlepony.unicopia.entity.player.Pony; + +/** + * A magical item with addictive properties. + */ +public interface AddictiveMagicitem extends MagicItem { + void onRemoved(Pony player, float needfulness); +} diff --git a/src/main/java/com/minelittlepony/unicopia/magic/Castable.java b/src/main/java/com/minelittlepony/unicopia/magic/item/CastableMagicItem.java similarity index 74% rename from src/main/java/com/minelittlepony/unicopia/magic/Castable.java rename to src/main/java/com/minelittlepony/unicopia/magic/item/CastableMagicItem.java index f1291c0a..71659c5f 100644 --- a/src/main/java/com/minelittlepony/unicopia/magic/Castable.java +++ b/src/main/java/com/minelittlepony/unicopia/magic/item/CastableMagicItem.java @@ -1,7 +1,11 @@ -package com.minelittlepony.unicopia.magic; +package com.minelittlepony.unicopia.magic.item; import com.minelittlepony.unicopia.entity.SpellcastEntity; import com.minelittlepony.unicopia.entity.UEntities; +import com.minelittlepony.unicopia.magic.CastResult; +import com.minelittlepony.unicopia.magic.DispenceableSpell; +import com.minelittlepony.unicopia.magic.Dispensable; +import com.minelittlepony.unicopia.magic.Spell; import com.minelittlepony.unicopia.magic.spell.SpellRegistry; import net.minecraft.item.ItemStack; @@ -12,11 +16,11 @@ import net.minecraft.util.math.BlockPointer; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; -public interface Castable extends MagicalItem, Dispensable { +public interface CastableMagicItem extends MagicItem, Dispensable { @Override default TypedActionResult dispenseStack(BlockPointer source, ItemStack stack) { - DispenceableMagicEffect effect = SpellRegistry.instance().getDispenseActionFrom(stack); + DispenceableSpell effect = SpellRegistry.instance().getDispenseActionFrom(stack); if (effect == null) { return new TypedActionResult<>(ActionResult.FAIL, stack); @@ -37,22 +41,22 @@ public interface Castable extends MagicalItem, Dispensable { return new TypedActionResult<>(ActionResult.SUCCESS, stack); } - CastResult onDispenseSpell(BlockPointer source, ItemStack stack, DispenceableMagicEffect effect); + CastResult onDispenseSpell(BlockPointer source, ItemStack stack, DispenceableSpell effect); - CastResult onCastSpell(ItemUsageContext context, MagicEffect effect); + CastResult onCastSpell(ItemUsageContext context, Spell effect); boolean canFeed(SpellcastEntity spell, ItemStack stack); /** * Called to cast a spell. The result is an entity spawned with the spell attached. */ - default SpellcastEntity castContainedSpell(World world, BlockPos pos, ItemStack stack, MagicEffect effect) { + default SpellcastEntity castContainedSpell(World world, BlockPos pos, ItemStack stack, Spell effect) { SpellcastEntity spell = new SpellcastEntity(UEntities.MAGIC_SPELL, world); spell.setAffinity(getAffinity(stack)); spell.updatePositionAndAngles(pos.getX() + 0.5, pos.getY() + 0.5, pos.getZ() + 0.5, 0, 0); world.spawnEntity(spell); - spell.setEffect(effect); + spell.setSpell(effect); return spell; } diff --git a/src/main/java/com/minelittlepony/unicopia/magic/MagicalItem.java b/src/main/java/com/minelittlepony/unicopia/magic/item/MagicItem.java similarity index 62% rename from src/main/java/com/minelittlepony/unicopia/magic/MagicalItem.java rename to src/main/java/com/minelittlepony/unicopia/magic/item/MagicItem.java index d77913fe..fd9d7b3a 100644 --- a/src/main/java/com/minelittlepony/unicopia/magic/MagicalItem.java +++ b/src/main/java/com/minelittlepony/unicopia/magic/item/MagicItem.java @@ -1,8 +1,11 @@ -package com.minelittlepony.unicopia.magic; +package com.minelittlepony.unicopia.magic.item; + +import com.minelittlepony.unicopia.magic.Affine; +import com.minelittlepony.unicopia.magic.Affinity; import net.minecraft.item.ItemStack; -public interface MagicalItem extends Affine { +public interface MagicItem extends Affine { /** * Gets the affinity of this magical artifact. Either good, bad, or unaligned. * What this returns may have effects on the behaviour of certain spells and effects. diff --git a/src/main/java/com/minelittlepony/unicopia/magic/spell/AbstractRangedAreaSpell.java b/src/main/java/com/minelittlepony/unicopia/magic/spell/AbstractRangedAreaSpell.java index 863f53ce..d11278a2 100644 --- a/src/main/java/com/minelittlepony/unicopia/magic/spell/AbstractRangedAreaSpell.java +++ b/src/main/java/com/minelittlepony/unicopia/magic/spell/AbstractRangedAreaSpell.java @@ -1,9 +1,9 @@ package com.minelittlepony.unicopia.magic.spell; -import com.minelittlepony.unicopia.magic.AttachedMagicEffect; +import com.minelittlepony.unicopia.magic.AttachableSpell; import com.minelittlepony.unicopia.magic.Caster; -public abstract class AbstractRangedAreaSpell extends AbstractSpell implements AttachedMagicEffect { +public abstract class AbstractRangedAreaSpell extends AbstractSpell implements AttachableSpell { @Override public int getMaxLevelCutOff(Caster source) { diff --git a/src/main/java/com/minelittlepony/unicopia/magic/spell/AbstractSpell.java b/src/main/java/com/minelittlepony/unicopia/magic/spell/AbstractSpell.java index 9335354d..f4bd2fee 100644 --- a/src/main/java/com/minelittlepony/unicopia/magic/spell/AbstractSpell.java +++ b/src/main/java/com/minelittlepony/unicopia/magic/spell/AbstractSpell.java @@ -1,11 +1,11 @@ package com.minelittlepony.unicopia.magic.spell; import com.minelittlepony.unicopia.magic.Caster; -import com.minelittlepony.unicopia.magic.MagicEffect; +import com.minelittlepony.unicopia.magic.Spell; import net.minecraft.nbt.CompoundTag; -public abstract class AbstractSpell implements MagicEffect { +public abstract class AbstractSpell implements Spell { protected boolean isDead; protected boolean isDirty; diff --git a/src/main/java/com/minelittlepony/unicopia/magic/spell/AttractiveSpell.java b/src/main/java/com/minelittlepony/unicopia/magic/spell/AttractiveSpell.java index 2c63267a..14441512 100644 --- a/src/main/java/com/minelittlepony/unicopia/magic/spell/AttractiveSpell.java +++ b/src/main/java/com/minelittlepony/unicopia/magic/spell/AttractiveSpell.java @@ -9,7 +9,7 @@ import com.minelittlepony.unicopia.entity.player.Pony; import com.minelittlepony.unicopia.magic.Affinity; import com.minelittlepony.unicopia.magic.Caster; import com.minelittlepony.unicopia.magic.EtherialListener; -import com.minelittlepony.unicopia.magic.MagicEffect; +import com.minelittlepony.unicopia.magic.Spell; import com.minelittlepony.unicopia.particles.MagicParticleEffect; import com.minelittlepony.unicopia.util.MagicalDamageSource; import com.minelittlepony.unicopia.util.NbtSerialisable; @@ -103,7 +103,7 @@ public class AttractiveSpell extends ShieldSpell implements EtherialListener { } @Override - public void onNearbySpellChange(Caster source, MagicEffect effect, int newState) { + public void onNearbySpellChange(Caster source, Spell effect, int newState) { if (effect instanceof ChargingSpell && !isDead()) { if (newState == ADDED) { if (homingPos == null) { diff --git a/src/main/java/com/minelittlepony/unicopia/magic/spell/AwkwardSpell.java b/src/main/java/com/minelittlepony/unicopia/magic/spell/AwkwardSpell.java index 44d63d75..761fbaa9 100644 --- a/src/main/java/com/minelittlepony/unicopia/magic/spell/AwkwardSpell.java +++ b/src/main/java/com/minelittlepony/unicopia/magic/spell/AwkwardSpell.java @@ -9,7 +9,7 @@ import com.minelittlepony.unicopia.magic.Affinity; import com.minelittlepony.unicopia.magic.CastResult; import com.minelittlepony.unicopia.magic.CasterUtils; import com.minelittlepony.unicopia.magic.Caster; -import com.minelittlepony.unicopia.magic.TossedMagicEffect; +import com.minelittlepony.unicopia.magic.ThrowableSpell; import com.minelittlepony.unicopia.magic.Useable; import com.minelittlepony.unicopia.util.shape.Sphere; import com.mojang.brigadier.StringReader; @@ -30,7 +30,7 @@ import net.minecraft.util.math.Vec3d; import net.minecraft.util.registry.Registry; import net.minecraft.world.World; -public class AwkwardSpell extends AbstractSpell implements TossedMagicEffect, Useable { +public class AwkwardSpell extends AbstractSpell implements ThrowableSpell, Useable { @Override public String getName() { diff --git a/src/main/java/com/minelittlepony/unicopia/magic/spell/ChangelingTrapSpell.java b/src/main/java/com/minelittlepony/unicopia/magic/spell/ChangelingTrapSpell.java index 3bedeb5e..db8e90db 100644 --- a/src/main/java/com/minelittlepony/unicopia/magic/spell/ChangelingTrapSpell.java +++ b/src/main/java/com/minelittlepony/unicopia/magic/spell/ChangelingTrapSpell.java @@ -9,9 +9,9 @@ import com.minelittlepony.unicopia.entity.IMagicals; import com.minelittlepony.unicopia.entity.UEntities; import com.minelittlepony.unicopia.magic.Affinity; import com.minelittlepony.unicopia.magic.CasterUtils; -import com.minelittlepony.unicopia.magic.AttachedMagicEffect; +import com.minelittlepony.unicopia.magic.AttachableSpell; import com.minelittlepony.unicopia.magic.Caster; -import com.minelittlepony.unicopia.magic.TossedMagicEffect; +import com.minelittlepony.unicopia.magic.ThrowableSpell; import com.minelittlepony.unicopia.util.WorldEvent; import net.minecraft.block.BlockState; @@ -32,7 +32,7 @@ import net.minecraft.sound.SoundEvents; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Direction; -public class ChangelingTrapSpell extends AbstractSpell implements TossedMagicEffect, AttachedMagicEffect { +public class ChangelingTrapSpell extends AbstractSpell implements ThrowableSpell, AttachableSpell { private BlockPos previousTrappedPosition; @@ -179,10 +179,10 @@ public class ChangelingTrapSpell extends AbstractSpell implements TossedMagicEff protected void entrap(Caster e) { - ChangelingTrapSpell existing = e.getEffect(ChangelingTrapSpell.class, true); + ChangelingTrapSpell existing = e.getSpell(ChangelingTrapSpell.class, true); if (existing == null) { - e.setEffect(copy()); + e.setSpell(copy()); } else { existing.enforce(e); } diff --git a/src/main/java/com/minelittlepony/unicopia/magic/spell/ChargingSpell.java b/src/main/java/com/minelittlepony/unicopia/magic/spell/ChargingSpell.java index 1f93ca44..455864dd 100644 --- a/src/main/java/com/minelittlepony/unicopia/magic/spell/ChargingSpell.java +++ b/src/main/java/com/minelittlepony/unicopia/magic/spell/ChargingSpell.java @@ -4,7 +4,7 @@ import com.minelittlepony.unicopia.entity.SpellcastEntity; import com.minelittlepony.unicopia.magic.Affinity; import com.minelittlepony.unicopia.magic.Caster; import com.minelittlepony.unicopia.magic.EtherialListener; -import com.minelittlepony.unicopia.magic.MagicEffect; +import com.minelittlepony.unicopia.magic.Spell; import com.minelittlepony.unicopia.particles.MagicParticleEffect; import com.minelittlepony.unicopia.util.shape.Shape; import com.minelittlepony.unicopia.util.shape.Line; @@ -33,7 +33,7 @@ public class ChargingSpell extends AbstractLinkedSpell implements EtherialListen @Override protected boolean canTargetEntity(SpellcastEntity e) { - return e.hasEffect(); + return e.hasSpell(); } @Override @@ -86,7 +86,7 @@ public class ChargingSpell extends AbstractLinkedSpell implements EtherialListen } @Override - public void onNearbySpellChange(Caster source, MagicEffect effect, int newState) { + public void onNearbySpellChange(Caster source, Spell effect, int newState) { if (effect instanceof AttractiveSpell && !isDead()) { setDead(); setDirty(true); diff --git a/src/main/java/com/minelittlepony/unicopia/magic/spell/DarknessSpell.java b/src/main/java/com/minelittlepony/unicopia/magic/spell/DarknessSpell.java index 9bc41a94..43f0d31e 100644 --- a/src/main/java/com/minelittlepony/unicopia/magic/spell/DarknessSpell.java +++ b/src/main/java/com/minelittlepony/unicopia/magic/spell/DarknessSpell.java @@ -210,7 +210,7 @@ public class DarknessSpell extends AbstractLinkedSpell { public boolean isAreaOccupied(Caster source, Vec3d pos) { if (source.getWorld().isAir(new BlockPos(pos).down())) { return source.findAllSpellsInRange(100).anyMatch(spell -> { - ShieldSpell effect = spell.getEffect(ShieldSpell.class, false); + ShieldSpell effect = spell.getSpell(ShieldSpell.class, false); if (effect != null) { return pos.distanceTo(spell.getOriginVector()) <= effect.getDrawDropOffRange(spell); @@ -254,6 +254,6 @@ public class DarknessSpell extends AbstractLinkedSpell { @Override protected boolean canTargetEntity(SpellcastEntity e) { - return e.hasEffect() && "light".equals(e.getEffect().getName()); + return e.hasSpell() && "light".equals(e.getSpell().getName()); } } diff --git a/src/main/java/com/minelittlepony/unicopia/magic/spell/DisguiseSpell.java b/src/main/java/com/minelittlepony/unicopia/magic/spell/DisguiseSpell.java index 406a37cd..1005e419 100644 --- a/src/main/java/com/minelittlepony/unicopia/magic/spell/DisguiseSpell.java +++ b/src/main/java/com/minelittlepony/unicopia/magic/spell/DisguiseSpell.java @@ -13,9 +13,9 @@ import com.minelittlepony.unicopia.entity.Owned; import com.minelittlepony.unicopia.entity.player.Pony; import com.minelittlepony.unicopia.magic.Affinity; import com.minelittlepony.unicopia.magic.CasterUtils; -import com.minelittlepony.unicopia.magic.AttachedMagicEffect; +import com.minelittlepony.unicopia.magic.AttachableSpell; import com.minelittlepony.unicopia.magic.Caster; -import com.minelittlepony.unicopia.magic.MagicEffect; +import com.minelittlepony.unicopia.magic.Spell; import com.minelittlepony.unicopia.magic.Suppressable; import com.minelittlepony.unicopia.particles.MagicParticleEffect; import com.minelittlepony.unicopia.particles.UParticles; @@ -45,7 +45,7 @@ import net.minecraft.entity.vehicle.MinecartEntity; import net.minecraft.item.ItemStack; import net.minecraft.nbt.CompoundTag; -public class DisguiseSpell extends AbstractSpell implements AttachedMagicEffect, Suppressable, FlightPredicate, HeightPredicate { +public class DisguiseSpell extends AbstractSpell implements AttachableSpell, Suppressable, FlightPredicate, HeightPredicate { @Nonnull private String entityId = ""; @@ -79,7 +79,7 @@ public class DisguiseSpell extends AbstractSpell implements AttachedMagicEffect, } @Override - public boolean isVulnerable(Caster otherSource, MagicEffect other) { + public boolean isVulnerable(Caster otherSource, Spell other) { return suppressionCounter <= otherSource.getCurrentLevel(); } @@ -189,7 +189,7 @@ public class DisguiseSpell extends AbstractSpell implements AttachedMagicEffect, return; } - CasterUtils.toCaster(entity).ifPresent(c -> c.setEffect(null)); + CasterUtils.toCaster(entity).ifPresent(c -> c.setSpell(null)); if (source.isClient()) { source.getWorld().spawnEntity(entity); diff --git a/src/main/java/com/minelittlepony/unicopia/magic/spell/FaithfulAssistantSpell.java b/src/main/java/com/minelittlepony/unicopia/magic/spell/FaithfulAssistantSpell.java index 4f65e471..2831fd13 100644 --- a/src/main/java/com/minelittlepony/unicopia/magic/spell/FaithfulAssistantSpell.java +++ b/src/main/java/com/minelittlepony/unicopia/magic/spell/FaithfulAssistantSpell.java @@ -6,7 +6,7 @@ import com.minelittlepony.unicopia.entity.FollowCasterGoal; import com.minelittlepony.unicopia.entity.SpellcastEntity; import com.minelittlepony.unicopia.magic.Affinity; import com.minelittlepony.unicopia.magic.Caster; -import com.minelittlepony.unicopia.magic.MagicEffect; +import com.minelittlepony.unicopia.magic.Spell; import net.minecraft.entity.ai.goal.SwimGoal; import net.minecraft.nbt.CompoundTag; @@ -25,7 +25,7 @@ public class FaithfulAssistantSpell extends AbstractSpell { private static final Box EFFECT_BOUNDS = new Box(-2, -2, -2, 2, 2, 2); @Nullable - private MagicEffect piggyBackSpell; + private Spell piggyBackSpell; @Override public String getName() { @@ -87,11 +87,11 @@ public class FaithfulAssistantSpell extends AbstractSpell { source.getWorld().getEntities(source.getEntity(), bb, e -> e instanceof SpellcastEntity).stream() .map(i -> (SpellcastEntity)i) - .filter(i -> i.hasEffect() && !(i.getEffect() instanceof FaithfulAssistantSpell)) + .filter(i -> i.hasSpell() && !(i.getSpell() instanceof FaithfulAssistantSpell)) .findFirst().ifPresent(i -> { - piggyBackSpell = i.getEffect().copy(); + piggyBackSpell = i.getSpell().copy(); piggyBackSpell.onPlaced(source); - i.setEffect(null); + i.setSpell(null); setDirty(true); }); } @@ -115,7 +115,7 @@ public class FaithfulAssistantSpell extends AbstractSpell { super.toNBT(compound); if (piggyBackSpell != null) { - compound.put("effect", SpellRegistry.instance().serializeEffectToNBT(piggyBackSpell)); + compound.put("effect", SpellRegistry.toNBT(piggyBackSpell)); } } diff --git a/src/main/java/com/minelittlepony/unicopia/magic/spell/FireSpell.java b/src/main/java/com/minelittlepony/unicopia/magic/spell/FireSpell.java index d7cdeb49..14da9ead 100644 --- a/src/main/java/com/minelittlepony/unicopia/magic/spell/FireSpell.java +++ b/src/main/java/com/minelittlepony/unicopia/magic/spell/FireSpell.java @@ -8,7 +8,7 @@ import com.minelittlepony.unicopia.entity.IMagicals; import com.minelittlepony.unicopia.magic.Affinity; import com.minelittlepony.unicopia.magic.CastResult; import com.minelittlepony.unicopia.magic.Caster; -import com.minelittlepony.unicopia.magic.DispenceableMagicEffect; +import com.minelittlepony.unicopia.magic.DispenceableSpell; import com.minelittlepony.unicopia.magic.Useable; import com.minelittlepony.unicopia.util.MagicalDamageSource; import com.minelittlepony.unicopia.util.PosHelper; @@ -41,7 +41,7 @@ import net.minecraft.world.World; /** * Simple fire spell that triggers an effect when used on a block. */ -public class FireSpell extends AbstractRangedAreaSpell implements Useable, DispenceableMagicEffect { +public class FireSpell extends AbstractRangedAreaSpell implements Useable, DispenceableSpell { private static final Shape VISUAL_EFFECT_RANGE = new Sphere(false, 0.5); private static final Shape EFFECT_RANGE = new Sphere(false, 4); diff --git a/src/main/java/com/minelittlepony/unicopia/magic/spell/FlameSpell.java b/src/main/java/com/minelittlepony/unicopia/magic/spell/FlameSpell.java index f8c28872..6b6dccb1 100644 --- a/src/main/java/com/minelittlepony/unicopia/magic/spell/FlameSpell.java +++ b/src/main/java/com/minelittlepony/unicopia/magic/spell/FlameSpell.java @@ -3,13 +3,13 @@ package com.minelittlepony.unicopia.magic.spell; import com.minelittlepony.unicopia.entity.player.Pony; import com.minelittlepony.unicopia.magic.Affinity; import com.minelittlepony.unicopia.magic.Caster; -import com.minelittlepony.unicopia.magic.HeldMagicEffect; +import com.minelittlepony.unicopia.magic.HeldSpell; import net.minecraft.entity.damage.DamageSource; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.sound.SoundEvents; -public class FlameSpell extends AbstractSpell implements HeldMagicEffect { +public class FlameSpell extends AbstractSpell implements HeldSpell { @Override public String getName() { diff --git a/src/main/java/com/minelittlepony/unicopia/magic/spell/GenericSpell.java b/src/main/java/com/minelittlepony/unicopia/magic/spell/GenericSpell.java index 409aab95..8b0a7d4f 100644 --- a/src/main/java/com/minelittlepony/unicopia/magic/spell/GenericSpell.java +++ b/src/main/java/com/minelittlepony/unicopia/magic/spell/GenericSpell.java @@ -4,7 +4,7 @@ import java.util.function.Supplier; import com.minelittlepony.unicopia.magic.Affinity; import com.minelittlepony.unicopia.magic.Caster; -import com.minelittlepony.unicopia.magic.MagicEffect; +import com.minelittlepony.unicopia.magic.Spell; import com.minelittlepony.unicopia.particles.MagicParticleEffect; public class GenericSpell extends AbstractSpell { @@ -15,7 +15,7 @@ public class GenericSpell extends AbstractSpell { private final Affinity affinity; - static Supplier factory(String name, int tint, Affinity affinity) { + static Supplier factory(String name, int tint, Affinity affinity) { return () -> new GenericSpell(name, tint, affinity); } diff --git a/src/main/java/com/minelittlepony/unicopia/magic/spell/GlowingSpell.java b/src/main/java/com/minelittlepony/unicopia/magic/spell/GlowingSpell.java index d767fa43..af367c80 100644 --- a/src/main/java/com/minelittlepony/unicopia/magic/spell/GlowingSpell.java +++ b/src/main/java/com/minelittlepony/unicopia/magic/spell/GlowingSpell.java @@ -3,7 +3,7 @@ package com.minelittlepony.unicopia.magic.spell; import com.minelittlepony.unicopia.entity.player.Pony; import com.minelittlepony.unicopia.magic.Affinity; import com.minelittlepony.unicopia.magic.Caster; -import com.minelittlepony.unicopia.magic.HeldMagicEffect; +import com.minelittlepony.unicopia.magic.HeldSpell; import net.minecraft.nbt.CompoundTag; import net.minecraft.util.math.BlockPos; @@ -12,7 +12,7 @@ import net.minecraft.world.World; import net.minecraft.world.chunk.light.ChunkBlockLightProvider; import net.minecraft.world.chunk.light.ChunkLightingView; -public class GlowingSpell extends GenericSpell implements HeldMagicEffect { +public class GlowingSpell extends GenericSpell implements HeldSpell { private BlockPos lastPos; private Caster source; diff --git a/src/main/java/com/minelittlepony/unicopia/magic/spell/IceSpell.java b/src/main/java/com/minelittlepony/unicopia/magic/spell/IceSpell.java index aeaab62f..5da71181 100644 --- a/src/main/java/com/minelittlepony/unicopia/magic/spell/IceSpell.java +++ b/src/main/java/com/minelittlepony/unicopia/magic/spell/IceSpell.java @@ -7,7 +7,7 @@ import com.minelittlepony.unicopia.blockstate.StateMaps; import com.minelittlepony.unicopia.magic.Affinity; import com.minelittlepony.unicopia.magic.CastResult; import com.minelittlepony.unicopia.magic.Caster; -import com.minelittlepony.unicopia.magic.DispenceableMagicEffect; +import com.minelittlepony.unicopia.magic.DispenceableSpell; import com.minelittlepony.unicopia.magic.Useable; import com.minelittlepony.unicopia.util.MagicalDamageSource; import com.minelittlepony.unicopia.util.PosHelper; @@ -32,7 +32,7 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Direction; import net.minecraft.world.World; -public class IceSpell extends AbstractRangedAreaSpell implements Useable, DispenceableMagicEffect { +public class IceSpell extends AbstractRangedAreaSpell implements Useable, DispenceableSpell { private final int rad = 3; private final Shape effect_range = new Sphere(false, rad); diff --git a/src/main/java/com/minelittlepony/unicopia/magic/spell/PortalSpell.java b/src/main/java/com/minelittlepony/unicopia/magic/spell/PortalSpell.java index 3c2216b9..ddd18374 100644 --- a/src/main/java/com/minelittlepony/unicopia/magic/spell/PortalSpell.java +++ b/src/main/java/com/minelittlepony/unicopia/magic/spell/PortalSpell.java @@ -12,7 +12,7 @@ import com.minelittlepony.unicopia.entity.player.Pony; import com.minelittlepony.unicopia.magic.Affinity; import com.minelittlepony.unicopia.magic.CastResult; import com.minelittlepony.unicopia.magic.Caster; -import com.minelittlepony.unicopia.magic.MagicEffect; +import com.minelittlepony.unicopia.magic.Spell; import com.minelittlepony.unicopia.magic.Useable; import com.minelittlepony.unicopia.particles.MagicParticleEffect; import com.minelittlepony.unicopia.util.NbtSerialisable; @@ -84,7 +84,7 @@ public class PortalSpell extends AbstractRangedAreaSpell implements Useable { destinationId = null; destinationPos = null; - getDestinationPortal().ifPresent(MagicEffect::setDead); + getDestinationPortal().ifPresent(Spell::setDead); } private PortalSpell bridge; @@ -112,18 +112,18 @@ public class PortalSpell extends AbstractRangedAreaSpell implements Useable { Pony prop = Pony.of(context.getPlayer()); - PortalSpell other = prop.getEffect(PortalSpell.class, true); + PortalSpell other = prop.getSpell(PortalSpell.class, true); if (other != null) { other.getActualInstance().setDestinationPortal(this); if (!context.getWorld().isClient) { - prop.setEffect(null); + prop.setSpell(null); } } else { if (!context.getWorld().isClient) { bridge = (PortalSpell)copy(); - prop.setEffect(bridge); + prop.setSpell(bridge); } } @@ -234,7 +234,7 @@ public class PortalSpell extends AbstractRangedAreaSpell implements Useable { } if (i instanceof SpellcastEntity) { - MagicEffect effect = ((SpellcastEntity) i).getEffect(); + Spell effect = ((SpellcastEntity) i).getSpell(); if (effect instanceof PortalSpell) { return (PortalSpell)effect; @@ -272,7 +272,7 @@ public class PortalSpell extends AbstractRangedAreaSpell implements Useable { } if (i instanceof SpellcastEntity) { - MagicEffect effect = ((SpellcastEntity) i).getEffect(); + Spell effect = ((SpellcastEntity) i).getSpell(); if (effect instanceof PortalSpell) { sibling = (PortalSpell)effect; diff --git a/src/main/java/com/minelittlepony/unicopia/magic/spell/RevealingSpell.java b/src/main/java/com/minelittlepony/unicopia/magic/spell/RevealingSpell.java index f4dd24ab..3a95a683 100644 --- a/src/main/java/com/minelittlepony/unicopia/magic/spell/RevealingSpell.java +++ b/src/main/java/com/minelittlepony/unicopia/magic/spell/RevealingSpell.java @@ -32,7 +32,7 @@ public class RevealingSpell extends AbstractSpell { @Override public boolean update(Caster source) { source.findAllSpellsInRange(15).forEach(e -> { - Suppressable spell = e.getEffect(Suppressable.class, false); + Suppressable spell = e.getSpell(Suppressable.class, false); if (spell != null && spell.isVulnerable(source, this)) { spell.onSuppressed(source); diff --git a/src/main/java/com/minelittlepony/unicopia/magic/spell/ScorchSpell.java b/src/main/java/com/minelittlepony/unicopia/magic/spell/ScorchSpell.java index d4ff9820..ec0441ea 100644 --- a/src/main/java/com/minelittlepony/unicopia/magic/spell/ScorchSpell.java +++ b/src/main/java/com/minelittlepony/unicopia/magic/spell/ScorchSpell.java @@ -5,7 +5,7 @@ import javax.annotation.Nullable; import com.minelittlepony.unicopia.blockstate.StateMaps; import com.minelittlepony.unicopia.magic.Affinity; import com.minelittlepony.unicopia.magic.Caster; -import com.minelittlepony.unicopia.magic.TossedMagicEffect; +import com.minelittlepony.unicopia.magic.ThrowableSpell; import com.minelittlepony.unicopia.particles.MagicParticleEffect; import com.minelittlepony.unicopia.util.PosHelper; import com.minelittlepony.unicopia.util.projectile.AdvancedProjectile; @@ -17,7 +17,7 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Vec3d; import net.minecraft.world.explosion.Explosion.DestructionType; -public class ScorchSpell extends FireSpell implements TossedMagicEffect { +public class ScorchSpell extends FireSpell implements ThrowableSpell { @Override public String getName() { @@ -68,7 +68,7 @@ public class ScorchSpell extends FireSpell implements TossedMagicEffect { @Override @Nullable public AdvancedProjectile toss(Caster caster) { - AdvancedProjectile projectile = TossedMagicEffect.super.toss(caster); + AdvancedProjectile projectile = ThrowableSpell.super.toss(caster); if (projectile != null) { projectile.setGravity(false); diff --git a/src/main/java/com/minelittlepony/unicopia/magic/spell/ShieldSpell.java b/src/main/java/com/minelittlepony/unicopia/magic/spell/ShieldSpell.java index 148e73e1..28b28951 100644 --- a/src/main/java/com/minelittlepony/unicopia/magic/spell/ShieldSpell.java +++ b/src/main/java/com/minelittlepony/unicopia/magic/spell/ShieldSpell.java @@ -6,7 +6,7 @@ import java.util.stream.Collectors; import com.minelittlepony.unicopia.EquinePredicates; import com.minelittlepony.unicopia.entity.player.Pony; import com.minelittlepony.unicopia.magic.Affinity; -import com.minelittlepony.unicopia.magic.AttachedMagicEffect; +import com.minelittlepony.unicopia.magic.AttachableSpell; import com.minelittlepony.unicopia.magic.Caster; import com.minelittlepony.unicopia.particles.MagicParticleEffect; import com.minelittlepony.unicopia.particles.ParticleHandle; @@ -20,7 +20,7 @@ import net.minecraft.entity.player.PlayerEntity; import net.minecraft.sound.SoundEvents; import net.minecraft.util.math.Vec3d; -public class ShieldSpell extends AbstractRangedAreaSpell implements AttachedMagicEffect { +public class ShieldSpell extends AbstractRangedAreaSpell implements AttachableSpell { private final ParticleHandle particlEffect = new ParticleHandle(); diff --git a/src/main/java/com/minelittlepony/unicopia/magic/spell/SpellRegistry.java b/src/main/java/com/minelittlepony/unicopia/magic/spell/SpellRegistry.java index 41dc8417..e4a13fc8 100644 --- a/src/main/java/com/minelittlepony/unicopia/magic/spell/SpellRegistry.java +++ b/src/main/java/com/minelittlepony/unicopia/magic/spell/SpellRegistry.java @@ -12,9 +12,9 @@ import javax.annotation.Nullable; import javax.annotation.concurrent.Immutable; import com.minelittlepony.unicopia.magic.Affinity; -import com.minelittlepony.unicopia.magic.DispenceableMagicEffect; -import com.minelittlepony.unicopia.magic.HeldMagicEffect; -import com.minelittlepony.unicopia.magic.MagicEffect; +import com.minelittlepony.unicopia.magic.DispenceableSpell; +import com.minelittlepony.unicopia.magic.HeldSpell; +import com.minelittlepony.unicopia.magic.Spell; import com.minelittlepony.unicopia.magic.Useable; import net.minecraft.item.ItemStack; @@ -54,7 +54,7 @@ public class SpellRegistry { } @Nullable - public MagicEffect getSpellFromName(String name) { + public Spell getSpellFromName(String name) { if (entries.containsKey(name)) { return entries.get(name).create(); } @@ -63,14 +63,14 @@ public class SpellRegistry { } @SuppressWarnings("unchecked") - public T copyInstance(T effect) { - return (T)createEffectFromNBT(serializeEffectToNBT(effect)); + public T copyInstance(T effect) { + return (T)createEffectFromNBT(toNBT(effect)); } @Nullable - public MagicEffect createEffectFromNBT(CompoundTag compound) { + public Spell createEffectFromNBT(CompoundTag compound) { if (compound.contains("effect_id")) { - MagicEffect effect = getSpellFromName(compound.getString("effect_id")); + Spell effect = getSpellFromName(compound.getString("effect_id")); if (effect != null) { effect.fromNBT(compound); @@ -82,7 +82,7 @@ public class SpellRegistry { return null; } - public CompoundTag serializeEffectToNBT(MagicEffect effect) { + public static CompoundTag toNBT(Spell effect) { CompoundTag compound = effect.toNBT(); compound.putString("effect_id", effect.getName()); @@ -95,7 +95,7 @@ public class SpellRegistry { } @Nullable - public DispenceableMagicEffect getDispenseActionFrom(ItemStack stack) { + public DispenceableSpell getDispenseActionFrom(ItemStack stack) { return getEntryFromStack(stack).map(Entry::dispensable).orElse(null); } @@ -105,16 +105,16 @@ public class SpellRegistry { } @Nullable - public HeldMagicEffect getHeldFrom(ItemStack stack) { + public HeldSpell getHeldFrom(ItemStack stack) { return getEntryFromStack(stack).map(Entry::holdable).orElse(null); } @Nullable - public MagicEffect getSpellFrom(ItemStack stack) { + public Spell getSpellFrom(ItemStack stack) { return getSpellFromName(getKeyFromStack(stack)); } - public void register(Supplier factory) { + public void register(Supplier factory) { try { new Entry<>(factory); } catch (Exception e) { @@ -174,7 +174,7 @@ public class SpellRegistry { } @Immutable - class Entry { + class Entry { final Supplier factory; final int color; @@ -190,9 +190,9 @@ public class SpellRegistry { this.factory = factory; this.color = inst.getTint(); - this.canDispense = inst instanceof DispenceableMagicEffect; + this.canDispense = inst instanceof DispenceableSpell; this.canUse = inst instanceof Useable; - this.canHold = inst instanceof HeldMagicEffect; + this.canHold = inst instanceof HeldSpell; this.affinity = inst.getAffinity(); if (inst.isCraftable()) { @@ -212,20 +212,20 @@ public class SpellRegistry { return (Useable)create(); } - HeldMagicEffect holdable() { + HeldSpell holdable() { if (!canHold) { return null; } - return (HeldMagicEffect)create(); + return (HeldSpell)create(); } - DispenceableMagicEffect dispensable() { + DispenceableSpell dispensable() { if (!canDispense) { return null; } - return (DispenceableMagicEffect)create(); + return (DispenceableSpell)create(); } T create() { diff --git a/src/main/java/com/minelittlepony/unicopia/mixin/client/MixinEntityRenderDispatcher.java b/src/main/java/com/minelittlepony/unicopia/mixin/client/MixinEntityRenderDispatcher.java index 3a3f29f2..6f1b0f23 100644 --- a/src/main/java/com/minelittlepony/unicopia/mixin/client/MixinEntityRenderDispatcher.java +++ b/src/main/java/com/minelittlepony/unicopia/mixin/client/MixinEntityRenderDispatcher.java @@ -34,7 +34,7 @@ abstract class MixinEntityRenderDispatcher { WorldRenderDelegate.INSTANCE.beforeEntityRender(pony, matrices, x, y, z); - DisguiseSpell effect = pony.getEffect(DisguiseSpell.class, true); + DisguiseSpell effect = pony.getSpell(DisguiseSpell.class, true); if (effect == null || effect.isDead()) { return; diff --git a/src/main/java/com/minelittlepony/unicopia/network/EffectSync.java b/src/main/java/com/minelittlepony/unicopia/network/EffectSync.java index e9f1f21e..668d9a94 100644 --- a/src/main/java/com/minelittlepony/unicopia/network/EffectSync.java +++ b/src/main/java/com/minelittlepony/unicopia/network/EffectSync.java @@ -3,7 +3,7 @@ package com.minelittlepony.unicopia.network; import javax.annotation.Nullable; import com.minelittlepony.unicopia.magic.Caster; -import com.minelittlepony.unicopia.magic.MagicEffect; +import com.minelittlepony.unicopia.magic.Spell; import com.minelittlepony.unicopia.magic.spell.SpellRegistry; import net.minecraft.entity.data.TrackedData; @@ -19,7 +19,7 @@ import net.minecraft.nbt.CompoundTag; public class EffectSync { @Nullable - private MagicEffect effect; + private Spell effect; private final Caster owned; @@ -93,7 +93,7 @@ public class EffectSync { return null; } - public void set(@Nullable MagicEffect effect) { + public void set(@Nullable Spell effect) { if (this.effect != null && this.effect != effect) { this.effect.setDead(); } @@ -102,7 +102,7 @@ public class EffectSync { if (effect == null) { owned.getEntity().getDataTracker().set(param, new CompoundTag()); } else { - owned.getEntity().getDataTracker().set(param, SpellRegistry.instance().serializeEffectToNBT(effect)); + owned.getEntity().getDataTracker().set(param, SpellRegistry.toNBT(effect)); } } } diff --git a/src/main/java/com/minelittlepony/unicopia/particles/ParticleHandle.java b/src/main/java/com/minelittlepony/unicopia/particles/ParticleHandle.java index 6d3e5074..314e9e8f 100644 --- a/src/main/java/com/minelittlepony/unicopia/particles/ParticleHandle.java +++ b/src/main/java/com/minelittlepony/unicopia/particles/ParticleHandle.java @@ -57,7 +57,7 @@ public class ParticleHandle { public void attach(Caster caster) { this.linked = true; this.caster = Optional.of(caster); - effect = caster.getEffect(false).getName(); + effect = caster.getSpell(false).getName(); } public boolean linked() { @@ -68,7 +68,7 @@ public class ParticleHandle { caster = caster.filter(c -> { Entity e = c.getEntity(); - return c.hasEffect() && c.getEffect(false).getName().equals(effect) && e != null && c.getWorld().getEntityById(e.getEntityId()) != null; + return c.hasSpell() && c.getSpell(false).getName().equals(effect) && e != null && c.getWorld().getEntityById(e.getEntityId()) != null; }); if (!caster.isPresent()) { action.run(); diff --git a/src/main/java/com/minelittlepony/unicopia/recipe/ingredient/SpellPredicate.java b/src/main/java/com/minelittlepony/unicopia/recipe/ingredient/SpellPredicate.java index e1152c36..6df116ca 100644 --- a/src/main/java/com/minelittlepony/unicopia/recipe/ingredient/SpellPredicate.java +++ b/src/main/java/com/minelittlepony/unicopia/recipe/ingredient/SpellPredicate.java @@ -5,7 +5,7 @@ import java.util.stream.Stream; import com.google.gson.JsonObject; import com.minelittlepony.unicopia.item.UItems; -import com.minelittlepony.unicopia.magic.MagicEffect; +import com.minelittlepony.unicopia.magic.Spell; import com.minelittlepony.unicopia.magic.spell.SpellRegistry; import com.minelittlepony.unicopia.recipe.Utils; @@ -17,7 +17,7 @@ import net.minecraft.util.PacketByteBuf; * Appends that spell to the output when crafting. */ class SpellPredicate implements Predicate { - private final MagicEffect spell; + private final Spell spell; SpellPredicate(String spell) { this.spell = Utils.require(SpellRegistry.instance().getSpellFromName(spell), "Unknown spell tag '" + spell + "'"); diff --git a/src/main/java/com/minelittlepony/unicopia/util/projectile/AdvancedProjectile.java b/src/main/java/com/minelittlepony/unicopia/util/projectile/AdvancedProjectile.java index 15fc77db..0f731af2 100644 --- a/src/main/java/com/minelittlepony/unicopia/util/projectile/AdvancedProjectile.java +++ b/src/main/java/com/minelittlepony/unicopia/util/projectile/AdvancedProjectile.java @@ -1,6 +1,6 @@ package com.minelittlepony.unicopia.util.projectile; -import com.minelittlepony.unicopia.magic.TossedMagicEffect; +import com.minelittlepony.unicopia.magic.ThrowableSpell; import net.minecraft.entity.Entity; import net.minecraft.entity.LivingEntity; @@ -16,7 +16,7 @@ public interface AdvancedProjectile extends Projectile { void setOwner(LivingEntity owner); - void setEffect(TossedMagicEffect effect); + void setEffect(ThrowableSpell effect); void setThrowDamage(float damage);