diff --git a/src/main/java/com/minelittlepony/unicopia/ability/magic/Caster.java b/src/main/java/com/minelittlepony/unicopia/ability/magic/Caster.java index 2efaf8c0..fd2900fb 100644 --- a/src/main/java/com/minelittlepony/unicopia/ability/magic/Caster.java +++ b/src/main/java/com/minelittlepony/unicopia/ability/magic/Caster.java @@ -1,7 +1,6 @@ package com.minelittlepony.unicopia.ability.magic; import java.util.Optional; -import java.util.UUID; import java.util.stream.Stream; import javax.annotation.Nullable; @@ -16,11 +15,10 @@ import net.minecraft.entity.LivingEntity; import net.minecraft.entity.damage.DamageSource; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Box; -import net.minecraft.util.math.Vec3d; import net.minecraft.world.World; /** - * Interface for any magically capable entities that can cast and persist spells. + * Interface for any magically capable entities that can cast or persist spells. */ public interface Caster extends Owned, Levelled, Affine, Magical, ParticleSource { @@ -76,13 +74,6 @@ public interface Caster extends Owned, Levelled, Affi return getOwner(); } - /** - * Gets the unique id associated with this caste. - */ - default UUID getUniqueId() { - return getEntity().getUuid(); - } - /** * gets the minecraft world */ @@ -112,14 +103,6 @@ public interface Caster extends Owned, Levelled, Affi return getEntity().getBlockPos(); } - /** - * Gets the center position where this caster is located. - */ - @Override - default Vec3d getOriginVector() { - return getEntity().getPos(); - } - default boolean subtractEnergyCost(double amount) { getOwner().damage(DamageSource.MAGIC, (int)amount/2); return getOwner().getHealth() > 0; diff --git a/src/main/java/com/minelittlepony/unicopia/ability/magic/Levelled.java b/src/main/java/com/minelittlepony/unicopia/ability/magic/Levelled.java index 2be67b2d..a2fe7ea1 100644 --- a/src/main/java/com/minelittlepony/unicopia/ability/magic/Levelled.java +++ b/src/main/java/com/minelittlepony/unicopia/ability/magic/Levelled.java @@ -4,26 +4,41 @@ package com.minelittlepony.unicopia.ability.magic; * Object with levelling capabilities. */ public interface Levelled { + static LevelStore fixed(int level) { + return new LevelStore() { + @Override + public int get() { + return level; + } - /** - * Maximum level this spell can reach or -1 for unlimited. - *
- * If a gem goes past this level it is more likely to explode. - */ - default int getMaxLevel() { - return 0; + @Override + public void set(int level) { + } + + @Override + public int getMax() { + return get(); + } + + }; } - default boolean canLevelUp() { - int max = getMaxLevel(); - return max < 0 || getCurrentLevel() < max; - } + LevelStore getLevel(); - int getCurrentLevel(); + interface LevelStore { + int getMax(); - void setCurrentLevel(int level); + int get(); - default void addLevels(int levels) { - setCurrentLevel(getCurrentLevel() + levels); + void set(int level); + + default boolean canLevelUp() { + int max = getMax(); + return max < 0 || get() < max; + } + + default void add(int levels) { + set(get() + levels); + } } } diff --git a/src/main/java/com/minelittlepony/unicopia/ability/magic/spell/AbstractRangedAreaSpell.java b/src/main/java/com/minelittlepony/unicopia/ability/magic/spell/AbstractRangedAreaSpell.java index 28b995d8..2abf0ccd 100644 --- a/src/main/java/com/minelittlepony/unicopia/ability/magic/spell/AbstractRangedAreaSpell.java +++ b/src/main/java/com/minelittlepony/unicopia/ability/magic/spell/AbstractRangedAreaSpell.java @@ -18,7 +18,7 @@ public abstract class AbstractRangedAreaSpell extends AbstractSpell implements A @Override public float getExhaustion(Caster caster) { float max = getMaxLevelCutOff(caster); - float current = caster.getCurrentLevel(); + float current = caster.getLevel().get(); if (current > max) { float maxEc = getMaxExhaustion(caster); diff --git a/src/main/java/com/minelittlepony/unicopia/ability/magic/spell/AttractiveSpell.java b/src/main/java/com/minelittlepony/unicopia/ability/magic/spell/AttractiveSpell.java index d7ee95d7..fcf8f20b 100644 --- a/src/main/java/com/minelittlepony/unicopia/ability/magic/spell/AttractiveSpell.java +++ b/src/main/java/com/minelittlepony/unicopia/ability/magic/spell/AttractiveSpell.java @@ -44,7 +44,7 @@ public class AttractiveSpell extends ShieldSpell { @Override public void render(Caster source) { - int range = 4 + (source.getCurrentLevel() * 2); + int range = 4 + (source.getLevel().get() * 2); Vec3d pos = source.getOriginVector(); source.spawnParticles(new Sphere(false, range), range * 9, p -> { @@ -54,7 +54,7 @@ public class AttractiveSpell extends ShieldSpell { @Override public double getDrawDropOffRange(Caster caster) { - return 10 + (caster.getCurrentLevel() * 2); + return 10 + (caster.getLevel().get() * 2); } @Override diff --git a/src/main/java/com/minelittlepony/unicopia/ability/magic/spell/AwkwardSpell.java b/src/main/java/com/minelittlepony/unicopia/ability/magic/spell/AwkwardSpell.java index 5a2860cd..64a0f409 100644 --- a/src/main/java/com/minelittlepony/unicopia/ability/magic/spell/AwkwardSpell.java +++ b/src/main/java/com/minelittlepony/unicopia/ability/magic/spell/AwkwardSpell.java @@ -44,7 +44,7 @@ public class AwkwardSpell extends AbstractSpell implements ThrowableSpell { @Override public void render(Caster source) { - source.spawnParticles(new Sphere(false, (1 + source.getCurrentLevel()) * 8), 10, pos -> { + source.spawnParticles(new Sphere(false, (1 + source.getLevel().get()) * 8), 10, pos -> { List names = new ArrayList<>(Registry.PARTICLE_TYPE.getIds()); diff --git a/src/main/java/com/minelittlepony/unicopia/ability/magic/spell/DisguiseSpell.java b/src/main/java/com/minelittlepony/unicopia/ability/magic/spell/DisguiseSpell.java index 22f86ba3..b48a526c 100644 --- a/src/main/java/com/minelittlepony/unicopia/ability/magic/spell/DisguiseSpell.java +++ b/src/main/java/com/minelittlepony/unicopia/ability/magic/spell/DisguiseSpell.java @@ -55,7 +55,7 @@ public class DisguiseSpell extends AbstractSpell implements AttachableSpell, Sup @Override public boolean isVulnerable(Caster otherSource, Spell other) { - return suppressionCounter <= otherSource.getCurrentLevel(); + return suppressionCounter <= otherSource.getLevel().get(); } @Override diff --git a/src/main/java/com/minelittlepony/unicopia/ability/magic/spell/FireSpell.java b/src/main/java/com/minelittlepony/unicopia/ability/magic/spell/FireSpell.java index f4c1e716..418f94f3 100644 --- a/src/main/java/com/minelittlepony/unicopia/ability/magic/spell/FireSpell.java +++ b/src/main/java/com/minelittlepony/unicopia/ability/magic/spell/FireSpell.java @@ -62,7 +62,7 @@ public class FireSpell extends AbstractRangedAreaSpell { @Override public void render(Caster source) { - source.spawnParticles(VISUAL_EFFECT_RANGE, source.getCurrentLevel() * 6, pos -> { + source.spawnParticles(VISUAL_EFFECT_RANGE, source.getLevel().get() * 6, pos -> { source.addParticle(ParticleTypes.LARGE_SMOKE, pos, Vec3d.ZERO); }); } diff --git a/src/main/java/com/minelittlepony/unicopia/ability/magic/spell/InfernoSpell.java b/src/main/java/com/minelittlepony/unicopia/ability/magic/spell/InfernoSpell.java index 2c2d058d..718fa5fd 100644 --- a/src/main/java/com/minelittlepony/unicopia/ability/magic/spell/InfernoSpell.java +++ b/src/main/java/com/minelittlepony/unicopia/ability/magic/spell/InfernoSpell.java @@ -36,7 +36,7 @@ public class InfernoSpell extends FireSpell { World w = source.getWorld(); if (!w.isClient) { - int radius = 4 + (source.getCurrentLevel() * 4); + int radius = 4 + (source.getLevel().get() * 4); Shape shape = new Sphere(false, radius); Vec3d origin = source.getOriginVector(); diff --git a/src/main/java/com/minelittlepony/unicopia/ability/magic/spell/NecromancySpell.java b/src/main/java/com/minelittlepony/unicopia/ability/magic/spell/NecromancySpell.java index b7c8f8a2..9c9714a9 100644 --- a/src/main/java/com/minelittlepony/unicopia/ability/magic/spell/NecromancySpell.java +++ b/src/main/java/com/minelittlepony/unicopia/ability/magic/spell/NecromancySpell.java @@ -52,7 +52,7 @@ public class NecromancySpell extends AbstractRangedAreaSpell { float additional = source.getWorld().getLocalDifficulty(source.getOrigin()).getLocalDifficulty(); - int radius = source.getCurrentLevel() + 1; + int radius = source.getLevel().get() + 1; Shape affectRegion = new Sphere(false, radius * 4); @@ -98,7 +98,7 @@ public class NecromancySpell extends AbstractRangedAreaSpell { @Override public void render(Caster source) { - Shape affectRegion = new Sphere(false, (1 + source.getCurrentLevel()) * 4); + Shape affectRegion = new Sphere(false, (1 + source.getLevel().get()) * 4); source.spawnParticles(affectRegion, 5, pos -> { if (!source.getWorld().isAir(new BlockPos(pos).down())) { diff --git a/src/main/java/com/minelittlepony/unicopia/ability/magic/spell/RevealingSpell.java b/src/main/java/com/minelittlepony/unicopia/ability/magic/spell/RevealingSpell.java index d76f8b3d..4adbda57 100644 --- a/src/main/java/com/minelittlepony/unicopia/ability/magic/spell/RevealingSpell.java +++ b/src/main/java/com/minelittlepony/unicopia/ability/magic/spell/RevealingSpell.java @@ -28,7 +28,7 @@ public class RevealingSpell extends AbstractSpell { @Override public void onPlaced(Caster source) { - source.setCurrentLevel(1); + source.getLevel().set(1); } @Override diff --git a/src/main/java/com/minelittlepony/unicopia/ability/magic/spell/ShieldSpell.java b/src/main/java/com/minelittlepony/unicopia/ability/magic/spell/ShieldSpell.java index f0c2e359..209019fe 100644 --- a/src/main/java/com/minelittlepony/unicopia/ability/magic/spell/ShieldSpell.java +++ b/src/main/java/com/minelittlepony/unicopia/ability/magic/spell/ShieldSpell.java @@ -61,7 +61,7 @@ public class ShieldSpell extends AbstractRangedAreaSpell implements AttachableSp int costMultiplier = applyEntities(source); if (costMultiplier > 0) { if (source.getOwner().age % 20 == 0) { - double cost = 4 + (source.getCurrentLevel() * 2); + double cost = 4 + (source.getLevel().get() * 2); cost *= costMultiplier / 5F; @@ -76,7 +76,7 @@ public class ShieldSpell extends AbstractRangedAreaSpell implements AttachableSp public double getDrawDropOffRange(Caster source) { float multiplier = (source.getOwner().isSneaking() ? 1 : 2); - return (4 + (source.getCurrentLevel() * 2)) / multiplier; + return (4 + (source.getLevel().get() * 2)) / multiplier; } @Override diff --git a/src/main/java/com/minelittlepony/unicopia/ability/magic/spell/SiphoningSpell.java b/src/main/java/com/minelittlepony/unicopia/ability/magic/spell/SiphoningSpell.java index a19cb0fd..84d20a57 100644 --- a/src/main/java/com/minelittlepony/unicopia/ability/magic/spell/SiphoningSpell.java +++ b/src/main/java/com/minelittlepony/unicopia/ability/magic/spell/SiphoningSpell.java @@ -35,7 +35,7 @@ public class SiphoningSpell extends AbstractRangedAreaSpell { @Override public boolean update(Caster source) { - int radius = 4 + source.getCurrentLevel(); + int radius = 4 + source.getLevel().get(); LivingEntity owner = source.getOwner(); @@ -92,7 +92,7 @@ public class SiphoningSpell extends AbstractRangedAreaSpell { e.damage(damage, e.getHealth() / 4); } } else { - e.heal((float)Math.min(0.5F * (1 + source.getCurrentLevel()), maxHealthGain * 0.6)); + e.heal((float)Math.min(0.5F * (1 + source.getLevel().get()), maxHealthGain * 0.6)); } }); } @@ -110,7 +110,7 @@ public class SiphoningSpell extends AbstractRangedAreaSpell { @Override public void render(Caster source) { - int radius = 4 + source.getCurrentLevel(); + int radius = 4 + source.getLevel().get(); Vec3d origin = source.getOriginVector(); int direction = source.getAffinity() == Affinity.GOOD ? 1 : -1; diff --git a/src/main/java/com/minelittlepony/unicopia/entity/Creature.java b/src/main/java/com/minelittlepony/unicopia/entity/Creature.java index 406dc938..b69762fd 100644 --- a/src/main/java/com/minelittlepony/unicopia/entity/Creature.java +++ b/src/main/java/com/minelittlepony/unicopia/entity/Creature.java @@ -5,6 +5,7 @@ import com.minelittlepony.unicopia.Race; import com.minelittlepony.unicopia.ability.magic.Affine; import com.minelittlepony.unicopia.ability.magic.AttachableSpell; import com.minelittlepony.unicopia.ability.magic.Caster; +import com.minelittlepony.unicopia.ability.magic.Levelled; import com.minelittlepony.unicopia.ability.magic.Spell; import com.minelittlepony.unicopia.ability.magic.spell.SpellRegistry; import com.minelittlepony.unicopia.network.EffectSync; @@ -19,6 +20,8 @@ public class Creature implements Equine, Caster { private static final TrackedData EFFECT = DataTracker.registerData(LivingEntity.class, TrackedDataHandlerRegistry.TAG_COMPOUND); + private static final LevelStore LEVELS = Levelled.fixed(0); + public static void boostrap() {} private final EffectSync effectDelegate = new EffectSync(this, EFFECT); @@ -80,12 +83,8 @@ public class Creature implements Equine, Caster { } @Override - public int getCurrentLevel() { - return 0; - } - - @Override - public void setCurrentLevel(int level) { + public LevelStore getLevel() { + return LEVELS; } @Override diff --git a/src/main/java/com/minelittlepony/unicopia/entity/behaviour/GhastBehaviour.java b/src/main/java/com/minelittlepony/unicopia/entity/behaviour/GhastBehaviour.java index fdc35fb6..c139c8aa 100644 --- a/src/main/java/com/minelittlepony/unicopia/entity/behaviour/GhastBehaviour.java +++ b/src/main/java/com/minelittlepony/unicopia/entity/behaviour/GhastBehaviour.java @@ -29,7 +29,7 @@ public class GhastBehaviour extends MobBehaviour { Vec3d rot = player.getEntity().getRotationVec(1); FireballEntity proj = new FireballEntity(entity.world, entity, rot.getX(), rot.getY(), rot.getZ()); - proj.explosionPower = entity.getFireballStrength() * (player.getCurrentLevel() + 1); + proj.explosionPower = entity.getFireballStrength() * (player.getLevel().get() + 1); proj.setOwner(player.getOwner()); proj.updatePosition( entity.getX() + rot.x * 4, diff --git a/src/main/java/com/minelittlepony/unicopia/entity/player/ManaContainer.java b/src/main/java/com/minelittlepony/unicopia/entity/player/ManaContainer.java index edf64d0e..efdb015a 100644 --- a/src/main/java/com/minelittlepony/unicopia/entity/player/ManaContainer.java +++ b/src/main/java/com/minelittlepony/unicopia/entity/player/ManaContainer.java @@ -48,15 +48,15 @@ public class ManaContainer implements MagicReserves { public void set(float value) { float diff = value - get(); if (diff < 0) { - if (pony.canLevelUp()) { - xp.add(-diff / (100 * (1 + pony.getCurrentLevel()))); + if (pony.getLevel().canLevelUp()) { + xp.add(-diff / (100 * (1 + pony.getLevel().get()))); if (xp.getPercentFill() >= 1) { - pony.addLevels(1); + pony.getLevel().add(1); xp.set(0); } } - value = get() + diff / (1 + pony.getCurrentLevel()); + value = get() + diff / (1 + pony.getLevel().get()); } super.set(value); diff --git a/src/main/java/com/minelittlepony/unicopia/entity/player/PlayerLevelStore.java b/src/main/java/com/minelittlepony/unicopia/entity/player/PlayerLevelStore.java new file mode 100644 index 00000000..9ff88bce --- /dev/null +++ b/src/main/java/com/minelittlepony/unicopia/entity/player/PlayerLevelStore.java @@ -0,0 +1,47 @@ +package com.minelittlepony.unicopia.entity.player; + +import com.minelittlepony.unicopia.ability.magic.Levelled; + +import net.minecraft.entity.data.DataTracker; +import net.minecraft.entity.data.TrackedData; +import net.minecraft.entity.data.TrackedDataHandlerRegistry; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.sound.SoundCategory; +import net.minecraft.sound.SoundEvents; +import net.minecraft.util.math.MathHelper; + +class PlayerLevelStore implements Levelled.LevelStore { + + private static final TrackedData LEVEL = DataTracker.registerData(PlayerEntity.class, TrackedDataHandlerRegistry.INTEGER); + + private final Pony pony; + + PlayerLevelStore(Pony pony) { + this.pony = pony; + pony.getEntity().getDataTracker().startTracking(LEVEL, 0); + } + + @Override + public void add(int levels) { + if (levels > 0) { + pony.getMagicalReserves().getMana().set(pony.getMagicalReserves().getEnergy().getMax()); + pony.getWorld().playSound(null, pony.getOrigin(), SoundEvents.ENTITY_PLAYER_LEVELUP, SoundCategory.PLAYERS, 1, 2); + } + Levelled.LevelStore.super.add(levels); + } + + @Override + public int getMax() { + return 3; + } + + @Override + public int get() { + return pony.getEntity().getDataTracker().get(LEVEL); + } + + @Override + public void set(int level) { + pony.getEntity().getDataTracker().set(LEVEL, MathHelper.clamp(level, 0, getMax())); + } +} 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 5d1becee..180a3e34 100644 --- a/src/main/java/com/minelittlepony/unicopia/entity/player/PlayerPhysics.java +++ b/src/main/java/com/minelittlepony/unicopia/entity/player/PlayerPhysics.java @@ -106,7 +106,7 @@ public class PlayerPhysics extends EntityPhysics implements Tickable, Moti entity.fallDistance = 0; - int level = pony.getCurrentLevel() + 1; + int level = pony.getLevel().get() + 1; if (ticksInAir > (level * 100)) { Bar mana = pony.getMagicalReserves().getMana(); @@ -158,7 +158,7 @@ public class PlayerPhysics extends EntityPhysics implements Tickable, Moti protected void moveFlying(Entity player, MutableVector velocity) { - float forward = 0.000015F * (1 + (pony.getCurrentLevel() / 10F)) * (float)Math.sqrt(getHorizontalMotion(player)); + float forward = 0.000015F * (1 + (pony.getLevel().get() / 10F)) * (float)Math.sqrt(getHorizontalMotion(player)); boolean sneak = !player.isSneaking(); // vertical drop due to gravity 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 ff81ff1d..a8c09812 100644 --- a/src/main/java/com/minelittlepony/unicopia/entity/player/Pony.java +++ b/src/main/java/com/minelittlepony/unicopia/entity/player/Pony.java @@ -45,13 +45,10 @@ import net.minecraft.nbt.CompoundTag; import net.minecraft.network.packet.s2c.play.EntityPassengersSetS2CPacket; import net.minecraft.server.network.ServerPlayerEntity; import net.minecraft.server.world.ServerWorld; -import net.minecraft.sound.SoundCategory; -import net.minecraft.sound.SoundEvents; import net.minecraft.text.Text; import net.minecraft.text.TranslatableText; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Direction; -import net.minecraft.util.math.MathHelper; import net.minecraft.util.math.Vec3d; public class Pony implements Caster, Equine, Transmittable, Copieable { @@ -63,8 +60,6 @@ public class Pony implements Caster, Equine, Transmi static final TrackedData MANA = DataTracker.registerData(PlayerEntity.class, TrackedDataHandlerRegistry.FLOAT); static final TrackedData XP = DataTracker.registerData(PlayerEntity.class, TrackedDataHandlerRegistry.FLOAT); - static final TrackedData LEVEL = DataTracker.registerData(PlayerEntity.class, TrackedDataHandlerRegistry.INTEGER); - private static final TrackedData EFFECT = DataTracker.registerData(PlayerEntity.class, TrackedDataHandlerRegistry.TAG_COMPOUND); private static final TrackedData HELD_EFFECT = DataTracker.registerData(PlayerEntity.class, TrackedDataHandlerRegistry.TAG_COMPOUND); @@ -73,6 +68,7 @@ public class Pony implements Caster, Equine, Transmi private final PlayerAttributes attributes = new PlayerAttributes(); private final PlayerCamera camera = new PlayerCamera(this); private final MagicReserves mana; + private final PlayerLevelStore levels; private final EffectSync effectDelegate = new EffectSync(this, EFFECT); @@ -94,11 +90,11 @@ public class Pony implements Caster, Equine, Transmi public Pony(PlayerEntity player) { this.entity = player; this.mana = new ManaContainer(this); + this.levels = new PlayerLevelStore(this); player.getDataTracker().startTracking(RACE, Race.HUMAN.ordinal()); player.getDataTracker().startTracking(EFFECT, new CompoundTag()); player.getDataTracker().startTracking(HELD_EFFECT, new CompoundTag()); - player.getDataTracker().startTracking(LEVEL, 0); } public static void registerAttributes(DefaultAttributeContainer.Builder builder) { @@ -138,6 +134,11 @@ public class Pony implements Caster, Equine, Transmi return mana; } + @Override + public LevelStore getLevel() { + return levels; + } + @Override public boolean isInvisible() { return invisible && hasSpell(); @@ -300,20 +301,6 @@ public class Pony implements Caster, Equine, Transmi prevLanded = entity.isOnGround(); } - @Override - public void addLevels(int levels) { - if (levels > 0) { - mana.getMana().set(mana.getEnergy().getMax()); - entity.world.playSound(null, getOrigin(), SoundEvents.ENTITY_PLAYER_LEVELUP, SoundCategory.PLAYERS, 1, 2); - } - Caster.super.addLevels(levels); - } - - @Override - public int getMaxLevel() { - return 3; - } - public Optional onImpact(float distance, float damageMultiplier) { float g = gravity.getGravityModifier(); @@ -445,16 +432,6 @@ public class Pony implements Caster, Equine, Transmi return entity; } - @Override - public int getCurrentLevel() { - return entity.getDataTracker().get(LEVEL); - } - - @Override - public void setCurrentLevel(int level) { - entity.getDataTracker().set(LEVEL, MathHelper.clamp(level, 0, getMaxLevel())); - } - public boolean isClientPlayer() { return InteractionManager.instance().isClientPlayer(getOwner()); } diff --git a/src/main/java/com/minelittlepony/unicopia/particle/ParticleSource.java b/src/main/java/com/minelittlepony/unicopia/particle/ParticleSource.java index a027529b..cb8e66f2 100644 --- a/src/main/java/com/minelittlepony/unicopia/particle/ParticleSource.java +++ b/src/main/java/com/minelittlepony/unicopia/particle/ParticleSource.java @@ -16,12 +16,14 @@ public interface ParticleSource extends ParticleSpawner { */ World getWorld(); + Entity getEntity(); + /** * Gets the center position where this caster is located. */ - Vec3d getOriginVector(); - - Entity getEntity(); + default Vec3d getOriginVector() { + return getEntity().getPos(); + } default void spawnParticles(ParticleEffect particleId, int count) { ParticleUtils.spawnParticles(particleId, getEntity(), count); diff --git a/src/main/java/com/minelittlepony/unicopia/projectile/MagicProjectileEntity.java b/src/main/java/com/minelittlepony/unicopia/projectile/MagicProjectileEntity.java index c0b8aac5..7d9cef80 100644 --- a/src/main/java/com/minelittlepony/unicopia/projectile/MagicProjectileEntity.java +++ b/src/main/java/com/minelittlepony/unicopia/projectile/MagicProjectileEntity.java @@ -4,6 +4,7 @@ import java.util.UUID; import com.minelittlepony.unicopia.Affinity; import com.minelittlepony.unicopia.ability.magic.Caster; +import com.minelittlepony.unicopia.ability.magic.Levelled; import com.minelittlepony.unicopia.ability.magic.Magical; import com.minelittlepony.unicopia.ability.magic.Spell; import com.minelittlepony.unicopia.ability.magic.ThrowableSpell; @@ -46,6 +47,7 @@ public class MagicProjectileEntity extends ThrownItemEntity implements Magical, private static final TrackedData DAMAGE = DataTracker.registerData(MagicProjectileEntity.class, TrackedDataHandlerRegistry.FLOAT); private static final TrackedData HYDROPHOBIC = DataTracker.registerData(MagicProjectileEntity.class, TrackedDataHandlerRegistry.BOOLEAN); private static final TrackedData EFFECT = DataTracker.registerData(MagicProjectileEntity.class, TrackedDataHandlerRegistry.TAG_COMPOUND); + private static final LevelStore LEVELS = Levelled.fixed(1); private final EffectSync effectDelegate = new EffectSync(this, EFFECT); @@ -101,12 +103,8 @@ public class MagicProjectileEntity extends ThrownItemEntity implements Magical, } @Override - public int getCurrentLevel() { - return 1; - } - - @Override - public void setCurrentLevel(int level) { + public LevelStore getLevel() { + return LEVELS; } @Override