diff --git a/src/main/java/com/minelittlepony/unicopia/Config.java b/src/main/java/com/minelittlepony/unicopia/Config.java index 78f33f14..4dd17418 100644 --- a/src/main/java/com/minelittlepony/unicopia/Config.java +++ b/src/main/java/com/minelittlepony/unicopia/Config.java @@ -21,11 +21,11 @@ public class Config { .setPrettyPrinting() .create(); - public static Config instance() { + public static Config getInstance() { return instance; } - public static void init(Path directory) { + static void init(Path directory) { Path file = directory.resolve("unicopia.json"); try { diff --git a/src/main/java/com/minelittlepony/unicopia/EquinePredicates.java b/src/main/java/com/minelittlepony/unicopia/EquinePredicates.java index 1ab2b50c..6ba7b8fa 100644 --- a/src/main/java/com/minelittlepony/unicopia/EquinePredicates.java +++ b/src/main/java/com/minelittlepony/unicopia/EquinePredicates.java @@ -1,6 +1,8 @@ package com.minelittlepony.unicopia; import com.google.common.base.Predicate; +import com.minelittlepony.unicopia.entity.Ponylike; +import com.minelittlepony.unicopia.entity.player.Pony; import net.minecraft.entity.Entity; import net.minecraft.entity.ItemEntity; @@ -8,11 +10,11 @@ import net.minecraft.entity.player.PlayerEntity; public interface EquinePredicates { Predicate INTERACT_WITH_CLOUDS = player -> { - return player != null && SpeciesList.instance().getPlayer(player).getSpecies().canInteractWithClouds(); + return player != null && Pony.of(player).getSpecies().canInteractWithClouds(); }; Predicate MAGI = entity -> { - return entity instanceof PlayerEntity && SpeciesList.instance().getPlayer((PlayerEntity)entity).getSpecies().canCast(); + return entity instanceof PlayerEntity && Pony.of((PlayerEntity)entity).getSpecies().canCast(); }; Predicate ITEMS = entity -> { @@ -20,7 +22,7 @@ public interface EquinePredicates { }; Predicate ITEM_INTERACT_WITH_CLOUDS = item -> { - return ITEMS.test(item) && SpeciesList.instance().getEntity(item).getSpecies().canInteractWithClouds(); + return ITEMS.test(item) && Ponylike.of(item).getSpecies().canInteractWithClouds(); }; Predicate ENTITY_INTERACT_WITH_CLOUDS = entity -> { @@ -32,7 +34,7 @@ public interface EquinePredicates { Predicate BUGGY = entity -> { return entity instanceof PlayerEntity - && SpeciesList.instance().getPlayer((PlayerEntity)entity).getSpecies() == Race.CHANGELING; + && Pony.of((PlayerEntity)entity).getSpecies() == Race.CHANGELING; }; static PlayerEntity getPlayerFromEntity(Entity entity) { diff --git a/src/main/java/com/minelittlepony/unicopia/Race.java b/src/main/java/com/minelittlepony/unicopia/Race.java index ffbf1524..afd460cf 100644 --- a/src/main/java/com/minelittlepony/unicopia/Race.java +++ b/src/main/java/com/minelittlepony/unicopia/Race.java @@ -5,6 +5,8 @@ import java.util.Map; import com.google.common.base.Strings; +import net.minecraft.entity.player.PlayerEntity; + public enum Race { /** * The default, unset race. @@ -66,6 +68,28 @@ public enum Race { return String.format("unicopia.race.%s", name().toLowerCase()); } + + public boolean isPermitted(PlayerEntity sender) { + if (isOp() && (sender == null || !sender.abilities.creativeMode)) { + return false; + } + + return isDefault() || Config.getInstance().getSpeciesWhiteList().isEmpty() || Config.getInstance().getSpeciesWhiteList().contains(this); + } + + public Race validate(PlayerEntity sender) { + if (!isPermitted(sender)) { + if (this == EARTH) { + return HUMAN; + } + + return EARTH.validate(sender); + } + + return this; + } + + public boolean equals(String s) { return name().equalsIgnoreCase(s) || getTranslationKey().equalsIgnoreCase(s); diff --git a/src/main/java/com/minelittlepony/unicopia/SpeciesList.java b/src/main/java/com/minelittlepony/unicopia/SpeciesList.java deleted file mode 100644 index ad82d0b4..00000000 --- a/src/main/java/com/minelittlepony/unicopia/SpeciesList.java +++ /dev/null @@ -1,77 +0,0 @@ -package com.minelittlepony.unicopia; - -import java.util.Optional; -import javax.annotation.Nullable; - -import com.minelittlepony.unicopia.Config; -import com.minelittlepony.unicopia.ducks.RaceContainerHolder; -import com.minelittlepony.unicopia.entity.IEntity; -import com.minelittlepony.unicopia.entity.player.IPlayer; - -import net.minecraft.entity.Entity; -import net.minecraft.entity.player.PlayerEntity; - -public class SpeciesList { - - private static final SpeciesList instance = new SpeciesList(); - - public static SpeciesList instance() { - return instance; - } - - public boolean whiteListRace(Race race) { - boolean result = Config.instance().getSpeciesWhiteList().add(race); - - Config.instance().save(); - - return result; - } - - public boolean unwhiteListRace(Race race) { - boolean result = Config.instance().getSpeciesWhiteList().remove(race); - - Config.instance().save(); - - return result; - } - - public boolean speciesPermitted(Race race, PlayerEntity sender) { - if (race.isOp() && (sender == null || !sender.abilities.creativeMode)) { - return false; - } - - return race.isDefault() || Config.instance().getSpeciesWhiteList().isEmpty() || Config.instance().getSpeciesWhiteList().contains(race); - } - - public Race validate(Race race, PlayerEntity sender) { - if (!speciesPermitted(race, sender)) { - race = Race.EARTH; - - if (!speciesPermitted(race, sender)) { - race = Race.HUMAN; - } - } - - return race; - } - - @Nullable - public IPlayer getPlayer(@Nullable PlayerEntity player) { - return this.getEntity(player); - } - - @Nullable - public T getEntity(Entity entity) { - return this.getForEntity(entity) - .map(RaceContainerHolder::getRaceContainer) - .orElse(null); - } - - @SuppressWarnings("unchecked") - public Optional> getForEntity(Entity entity) { - if (entity instanceof RaceContainerHolder) { - return Optional.of(((RaceContainerHolder)entity)); - } - return Optional.empty(); - } -} diff --git a/src/main/java/com/minelittlepony/unicopia/ability/Ability.java b/src/main/java/com/minelittlepony/unicopia/ability/Ability.java index 0624379e..0db330b0 100644 --- a/src/main/java/com/minelittlepony/unicopia/ability/Ability.java +++ b/src/main/java/com/minelittlepony/unicopia/ability/Ability.java @@ -5,7 +5,7 @@ import javax.annotation.Nullable; import com.google.gson.annotations.Expose; import com.minelittlepony.unicopia.IKeyBinding; import com.minelittlepony.unicopia.Race; -import com.minelittlepony.unicopia.entity.player.IPlayer; +import com.minelittlepony.unicopia.entity.player.Pony; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; @@ -20,12 +20,12 @@ public interface Ability extends IKeyBinding { /** * Returns the number of ticks the player must hold the ability key to trigger this ability. */ - int getWarmupTime(IPlayer player); + int getWarmupTime(Pony player); /** * Returns the number of ticks allowed for cooldown */ - int getCooldownTime(IPlayer player); + int getCooldownTime(Pony player); /** * Called to check preconditions for activating the ability. @@ -34,7 +34,7 @@ public interface Ability extends IKeyBinding { * @param player The player * @return True to allow activation */ - default boolean canActivate(World w, IPlayer player) { + default boolean canActivate(World w, Pony player) { return true; } @@ -51,7 +51,7 @@ public interface Ability extends IKeyBinding { * @return Data to be sent, or null if activation failed */ @Nullable - T tryActivate(IPlayer player); + T tryActivate(Pony player); Class getPackageType(); @@ -62,19 +62,19 @@ public interface Ability extends IKeyBinding { * @param player The player that triggered the ability * @param data Data previously sent from the client */ - void apply(IPlayer player, T data); + void apply(Pony player, T data); /** * Called every tick until the warmup timer runs out. * @param player The current player */ - void preApply(IPlayer player); + void preApply(Pony player); /** * Called every tick until the cooldown timer runs out. * @param player The current player */ - void postApply(IPlayer player); + void postApply(Pony player); public interface IData { diff --git a/src/main/java/com/minelittlepony/unicopia/ability/ChangelingDisguiseAbility.java b/src/main/java/com/minelittlepony/unicopia/ability/ChangelingDisguiseAbility.java index b8e0234b..91ac2450 100644 --- a/src/main/java/com/minelittlepony/unicopia/ability/ChangelingDisguiseAbility.java +++ b/src/main/java/com/minelittlepony/unicopia/ability/ChangelingDisguiseAbility.java @@ -6,10 +6,9 @@ import javax.annotation.Nullable; import org.lwjgl.glfw.GLFW; import com.minelittlepony.unicopia.Race; -import com.minelittlepony.unicopia.SpeciesList; import com.minelittlepony.unicopia.UParticles; import com.minelittlepony.unicopia.entity.InAnimate; -import com.minelittlepony.unicopia.entity.player.IPlayer; +import com.minelittlepony.unicopia.entity.player.Pony; import com.minelittlepony.unicopia.magic.spell.DisguiseSpell; import com.minelittlepony.unicopia.util.VecHelper; @@ -42,12 +41,12 @@ public class ChangelingDisguiseAbility extends ChangelingFeedAbility { @Nullable @Override - public Hit tryActivate(IPlayer player) { + public Hit tryActivate(Pony player) { return new Hit(); } @Override - public void apply(IPlayer iplayer, Hit data) { + public void apply(Pony iplayer, Hit data) { PlayerEntity player = iplayer.getOwner(); HitResult trace = VecHelper.getObjectMouseOver(player, 10, 1); @@ -65,7 +64,7 @@ public class ChangelingDisguiseAbility extends ChangelingFeedAbility { looked = ((EntityHitResult)trace).getEntity(); if (looked instanceof PlayerEntity) { - looked = SpeciesList.instance().getPlayer((PlayerEntity)looked) + looked = Pony.of((PlayerEntity)looked) .getEffect(DisguiseSpell.class) .map(DisguiseSpell::getDisguise) .orElse(looked); @@ -90,13 +89,13 @@ public class ChangelingDisguiseAbility extends ChangelingFeedAbility { } @Override - public void preApply(IPlayer player) { + public void preApply(Pony player) { player.addEnergy(2); player.spawnParticles(UParticles.CHANGELING_MAGIC, 5); } @Override - public void postApply(IPlayer player) { + public void postApply(Pony player) { player.setEnergy(0); player.spawnParticles(UParticles.CHANGELING_MAGIC, 5); } diff --git a/src/main/java/com/minelittlepony/unicopia/ability/ChangelingFeedAbility.java b/src/main/java/com/minelittlepony/unicopia/ability/ChangelingFeedAbility.java index 00b63148..52081bc0 100644 --- a/src/main/java/com/minelittlepony/unicopia/ability/ChangelingFeedAbility.java +++ b/src/main/java/com/minelittlepony/unicopia/ability/ChangelingFeedAbility.java @@ -8,7 +8,7 @@ import javax.annotation.Nullable; import org.lwjgl.glfw.GLFW; import com.minelittlepony.unicopia.Race; -import com.minelittlepony.unicopia.entity.player.IPlayer; +import com.minelittlepony.unicopia.entity.player.Pony; import com.minelittlepony.unicopia.util.MagicalDamageSource; import com.minelittlepony.unicopia.util.VecHelper; @@ -41,12 +41,12 @@ public class ChangelingFeedAbility implements Ability { } @Override - public int getWarmupTime(IPlayer player) { + public int getWarmupTime(Pony player) { return 5; } @Override - public int getCooldownTime(IPlayer player) { + public int getCooldownTime(Pony player) { return canFeed(player) ? 15 : 80; } @@ -57,7 +57,7 @@ public class ChangelingFeedAbility implements Ability { @Nullable @Override - public Hit tryActivate(IPlayer player) { + public Hit tryActivate(Pony player) { if (canFeed(player)) { if (!getTargets(player).isEmpty()) { return new Hit(); @@ -67,7 +67,7 @@ public class ChangelingFeedAbility implements Ability { return null; } - private boolean canFeed(IPlayer player) { + private boolean canFeed(Pony player) { return player.getOwner().getHealth() < player.getOwner().getHealthMaximum() || player.getOwner().canConsume(false); } @@ -86,7 +86,7 @@ public class ChangelingFeedAbility implements Ability { return Hit.class; } - protected List getTargets(IPlayer player) { + protected List getTargets(Pony player) { List list = VecHelper.getWithinRange(player.getOwner(), 3, this::canDrain); Entity looked = VecHelper.getLookedAtEntity(player.getOwner(), 17); @@ -98,7 +98,7 @@ public class ChangelingFeedAbility implements Ability { } @Override - public void apply(IPlayer iplayer, Hit data) { + public void apply(Pony iplayer, Hit data) { PlayerEntity player = iplayer.getOwner(); float maximumHealthGain = player.getHealthMaximum() - player.getHealth(); @@ -156,12 +156,12 @@ public class ChangelingFeedAbility implements Ability { } @Override - public void preApply(IPlayer player) { + public void preApply(Pony player) { player.addExertion(6); } @Override - public void postApply(IPlayer player) { + public void postApply(Pony player) { player.spawnParticles(ParticleTypes.HEART, 1); } } diff --git a/src/main/java/com/minelittlepony/unicopia/ability/ChangelingTrapAbility.java b/src/main/java/com/minelittlepony/unicopia/ability/ChangelingTrapAbility.java index df401c83..17eb164e 100644 --- a/src/main/java/com/minelittlepony/unicopia/ability/ChangelingTrapAbility.java +++ b/src/main/java/com/minelittlepony/unicopia/ability/ChangelingTrapAbility.java @@ -5,7 +5,7 @@ import javax.annotation.Nullable; import org.lwjgl.glfw.GLFW; import com.minelittlepony.unicopia.Race; -import com.minelittlepony.unicopia.entity.player.IPlayer; +import com.minelittlepony.unicopia.entity.player.Pony; import com.minelittlepony.unicopia.magic.spell.ChangelingTrapSpell; public class ChangelingTrapAbility implements Ability { @@ -21,12 +21,12 @@ public class ChangelingTrapAbility implements Ability { } @Override - public int getWarmupTime(IPlayer player) { + public int getWarmupTime(Pony player) { return 0; } @Override - public int getCooldownTime(IPlayer player) { + public int getCooldownTime(Pony player) { return 30; } @@ -37,7 +37,7 @@ public class ChangelingTrapAbility implements Ability { @Nullable @Override - public Hit tryActivate(IPlayer player) { + public Hit tryActivate(Pony player) { return new Hit(); } @@ -47,17 +47,17 @@ public class ChangelingTrapAbility implements Ability { } @Override - public void apply(IPlayer player, Hit data) { + public void apply(Pony player, Hit data) { new ChangelingTrapSpell().toss(player); } @Override - public void preApply(IPlayer player) { + public void preApply(Pony player) { } @Override - public void postApply(IPlayer player) { + public void postApply(Pony player) { } } diff --git a/src/main/java/com/minelittlepony/unicopia/ability/EarthPonyGrowAbility.java b/src/main/java/com/minelittlepony/unicopia/ability/EarthPonyGrowAbility.java index 3ac3a52a..bd13dcf3 100644 --- a/src/main/java/com/minelittlepony/unicopia/ability/EarthPonyGrowAbility.java +++ b/src/main/java/com/minelittlepony/unicopia/ability/EarthPonyGrowAbility.java @@ -4,7 +4,7 @@ import org.lwjgl.glfw.GLFW; import com.minelittlepony.unicopia.Race; import com.minelittlepony.unicopia.UParticles; -import com.minelittlepony.unicopia.entity.player.IPlayer; +import com.minelittlepony.unicopia.entity.player.Pony; import com.minelittlepony.unicopia.util.VecHelper; import net.minecraft.block.BlockState; @@ -33,12 +33,12 @@ public class EarthPonyGrowAbility implements Ability { } @Override - public int getWarmupTime(IPlayer player) { + public int getWarmupTime(Pony player) { return 10; } @Override - public int getCooldownTime(IPlayer player) { + public int getCooldownTime(Pony player) { return 50; } @@ -48,7 +48,7 @@ public class EarthPonyGrowAbility implements Ability { } @Override - public Pos tryActivate(IPlayer player) { + public Pos tryActivate(Pony player) { HitResult ray = VecHelper.getObjectMouseOver(player.getOwner(), 3, 1); if (ray instanceof BlockHitResult && ray.getType() == HitResult.Type.BLOCK) { @@ -64,7 +64,7 @@ public class EarthPonyGrowAbility implements Ability { } @Override - public void apply(IPlayer player, Pos data) { + public void apply(Pony player, Pos data) { int count = 0; for (BlockPos pos : BlockPos.iterate( @@ -91,7 +91,7 @@ public class EarthPonyGrowAbility implements Ability { } @Override - public void preApply(IPlayer player) { + public void preApply(Pony player) { player.addExertion(3); if (player.getWorld().isClient()) { @@ -100,7 +100,7 @@ public class EarthPonyGrowAbility implements Ability { } @Override - public void postApply(IPlayer player) { + public void postApply(Pony player) { } } diff --git a/src/main/java/com/minelittlepony/unicopia/ability/EarthPonyStompAbility.java b/src/main/java/com/minelittlepony/unicopia/ability/EarthPonyStompAbility.java index 234dd74b..e8cf8d4a 100644 --- a/src/main/java/com/minelittlepony/unicopia/ability/EarthPonyStompAbility.java +++ b/src/main/java/com/minelittlepony/unicopia/ability/EarthPonyStompAbility.java @@ -7,15 +7,14 @@ import org.lwjgl.glfw.GLFW; import com.google.common.collect.Lists; import com.google.gson.annotations.Expose; import com.minelittlepony.unicopia.Race; -import com.minelittlepony.unicopia.SpeciesList; -import com.minelittlepony.unicopia.entity.player.IPlayer; +import com.minelittlepony.unicopia.entity.player.Pony; import com.minelittlepony.unicopia.item.AppleItem; import com.minelittlepony.unicopia.util.AwaitTickQueue; import com.minelittlepony.unicopia.util.MagicalDamageSource; import com.minelittlepony.unicopia.util.PosHelper; import com.minelittlepony.unicopia.util.VecHelper; import com.minelittlepony.unicopia.util.WorldEvent; -import com.minelittlepony.unicopia.util.shape.IShape; +import com.minelittlepony.unicopia.util.shape.Shape; import com.minelittlepony.unicopia.util.shape.Sphere; import net.minecraft.block.Block; @@ -63,12 +62,12 @@ public class EarthPonyStompAbility implements Ability { } @Override - public int getWarmupTime(IPlayer player) { + public int getWarmupTime(Pony player) { return 0; } @Override - public int getCooldownTime(IPlayer player) { + public int getCooldownTime(Pony player) { return 10; } @@ -44,7 +44,7 @@ public class PegasusCarryAbility implements Ability { } @Override - public Hit tryActivate(IPlayer player) { + public Hit tryActivate(Pony player) { return new Hit(); } @@ -66,7 +66,7 @@ public class PegasusCarryAbility implements Ability { } @Override - public void apply(IPlayer iplayer, Hit data) { + public void apply(Pony iplayer, Hit data) { PlayerEntity player = iplayer.getOwner(); LivingEntity rider = findRider(player, iplayer.getWorld()); @@ -82,11 +82,11 @@ public class PegasusCarryAbility implements Ability { } @Override - public void preApply(IPlayer player) { + public void preApply(Pony player) { } @Override - public void postApply(IPlayer player) { + public void postApply(Pony player) { } public interface IPickupImmuned { diff --git a/src/main/java/com/minelittlepony/unicopia/ability/PegasusCloudInteractionAbility.java b/src/main/java/com/minelittlepony/unicopia/ability/PegasusCloudInteractionAbility.java index b7ad95ac..5d30383c 100644 --- a/src/main/java/com/minelittlepony/unicopia/ability/PegasusCloudInteractionAbility.java +++ b/src/main/java/com/minelittlepony/unicopia/ability/PegasusCloudInteractionAbility.java @@ -6,7 +6,7 @@ import org.lwjgl.glfw.GLFW; import com.minelittlepony.unicopia.Race; import com.minelittlepony.unicopia.UParticles; -import com.minelittlepony.unicopia.entity.player.IPlayer; +import com.minelittlepony.unicopia.entity.player.Pony; import com.minelittlepony.unicopia.util.VecHelper; import net.minecraft.entity.Entity; @@ -24,12 +24,12 @@ public class PegasusCloudInteractionAbility implements Ability } @Override - public int getWarmupTime(IPlayer player) { + public int getWarmupTime(Pony player) { return 10; } @Override - public int getCooldownTime(IPlayer player) { + public int getCooldownTime(Pony player) { return 5; } @@ -39,7 +39,7 @@ public class PegasusCloudInteractionAbility implements Ability } @Override - public Numeric tryActivate(IPlayer player) { + public Numeric tryActivate(Pony player) { return findTarget(player).map(cloud -> { Numeric data = new Numeric(player.getOwner().inventory.selectedSlot + 1); cloud.handlePegasusInteration(data.type); @@ -54,13 +54,13 @@ public class PegasusCloudInteractionAbility implements Ability } @Override - public void apply(IPlayer player, Numeric data) { + public void apply(Pony player, Numeric data) { findTarget(player).ifPresent(cloud -> { cloud.handlePegasusInteration(data.type); }); } - protected Optional findTarget(IPlayer player) { + protected Optional findTarget(Pony player) { if (player.getOwner().hasVehicle() && player.getOwner().getVehicle() instanceof ICloudEntity) { return Optional.ofNullable((ICloudEntity)player.getOwner().getVehicle()); } @@ -75,12 +75,12 @@ public class PegasusCloudInteractionAbility implements Ability } @Override - public void preApply(IPlayer player) { + public void preApply(Pony player) { player.spawnParticles(UParticles.UNICORN_MAGIC, 10); } @Override - public void postApply(IPlayer player) { + public void postApply(Pony player) { player.spawnParticles(UParticles.RAIN_DROPS, 5); } diff --git a/src/main/java/com/minelittlepony/unicopia/ability/UnicornCastingAbility.java b/src/main/java/com/minelittlepony/unicopia/ability/UnicornCastingAbility.java index 9b92ff71..d7a12fa4 100644 --- a/src/main/java/com/minelittlepony/unicopia/ability/UnicornCastingAbility.java +++ b/src/main/java/com/minelittlepony/unicopia/ability/UnicornCastingAbility.java @@ -4,7 +4,7 @@ import org.lwjgl.glfw.GLFW; import com.minelittlepony.unicopia.Race; import com.minelittlepony.unicopia.UParticles; -import com.minelittlepony.unicopia.entity.player.IPlayer; +import com.minelittlepony.unicopia.entity.player.Pony; import com.minelittlepony.unicopia.magic.spell.ShieldSpell; /** @@ -24,12 +24,12 @@ public class UnicornCastingAbility implements Ability { } @Override - public int getWarmupTime(IPlayer player) { + public int getWarmupTime(Pony player) { return 20; } @Override - public int getCooldownTime(IPlayer player) { + public int getCooldownTime(Pony player) { return 0; } @@ -39,7 +39,7 @@ public class UnicornCastingAbility implements Ability { } @Override - public Hit tryActivate(IPlayer player) { + public Hit tryActivate(Pony player) { return new Hit(); } @@ -49,7 +49,7 @@ public class UnicornCastingAbility implements Ability { } @Override - public void apply(IPlayer player, Hit data) { + public void apply(Pony player, Hit data) { // TODO: A way to pick the active effect if (player.getEffect() instanceof ShieldSpell) { player.setEffect(null); @@ -59,12 +59,12 @@ public class UnicornCastingAbility implements Ability { } @Override - public void preApply(IPlayer player) { + public void preApply(Pony player) { player.spawnParticles(UParticles.UNICORN_MAGIC, 5); } @Override - public void postApply(IPlayer player) { + public void postApply(Pony player) { player.spawnParticles(UParticles.UNICORN_MAGIC, 5); } } diff --git a/src/main/java/com/minelittlepony/unicopia/ability/UnicornTeleportAbility.java b/src/main/java/com/minelittlepony/unicopia/ability/UnicornTeleportAbility.java index 3c4ae930..e7c8af89 100644 --- a/src/main/java/com/minelittlepony/unicopia/ability/UnicornTeleportAbility.java +++ b/src/main/java/com/minelittlepony/unicopia/ability/UnicornTeleportAbility.java @@ -4,7 +4,7 @@ import org.lwjgl.glfw.GLFW; import com.minelittlepony.unicopia.Race; import com.minelittlepony.unicopia.UParticles; -import com.minelittlepony.unicopia.entity.player.IPlayer; +import com.minelittlepony.unicopia.entity.player.Pony; import com.minelittlepony.unicopia.util.VecHelper; import net.minecraft.block.Block; @@ -40,12 +40,12 @@ public class UnicornTeleportAbility implements Ability { } @Override - public int getWarmupTime(IPlayer player) { + public int getWarmupTime(Pony player) { return 20; } @Override - public int getCooldownTime(IPlayer player) { + public int getCooldownTime(Pony player) { return 50; } @@ -55,7 +55,7 @@ public class UnicornTeleportAbility implements Ability { } @Override - public Pos tryActivate(IPlayer player) { + public Pos tryActivate(Pony player) { HitResult ray = VecHelper.getObjectMouseOver(player.getOwner(), 100, 1); World w = player.getWorld(); @@ -115,7 +115,7 @@ public class UnicornTeleportAbility implements Ability { } @Override - public void apply(IPlayer iplayer, Pos data) { + public void apply(Pony iplayer, Pos data) { iplayer.getWorld().playSound(null, iplayer.getOrigin(), SoundEvents.ENTITY_ITEM_PICKUP, SoundCategory.PLAYERS, 1, 1); PlayerEntity player = iplayer.getOwner(); @@ -164,13 +164,13 @@ public class UnicornTeleportAbility implements Ability { } @Override - public void preApply(IPlayer player) { + public void preApply(Pony player) { player.addExertion(3); player.spawnParticles(UParticles.UNICORN_MAGIC, 5); } @Override - public void postApply(IPlayer player) { + public void postApply(Pony player) { player.spawnParticles(UParticles.UNICORN_MAGIC, 5); } } diff --git a/src/main/java/com/minelittlepony/unicopia/block/ChiselledChitinBlock.java b/src/main/java/com/minelittlepony/unicopia/block/ChiselledChitinBlock.java index 84d356a1..a3fa71bb 100644 --- a/src/main/java/com/minelittlepony/unicopia/block/ChiselledChitinBlock.java +++ b/src/main/java/com/minelittlepony/unicopia/block/ChiselledChitinBlock.java @@ -3,9 +3,8 @@ package com.minelittlepony.unicopia.block; import javax.annotation.Nullable; import com.minelittlepony.unicopia.Race; -import com.minelittlepony.unicopia.SpeciesList; import com.minelittlepony.unicopia.UMaterials; -import com.minelittlepony.unicopia.entity.player.IPlayer; +import com.minelittlepony.unicopia.entity.player.Pony; import net.fabricmc.fabric.api.block.FabricBlockSettings; import net.minecraft.block.Block; @@ -60,7 +59,7 @@ public class ChiselledChitinBlock extends Block { public float calcBlockBreakingDelta(BlockState state, PlayerEntity player, BlockView worldIn, BlockPos pos) { float hardness = super.calcBlockBreakingDelta(state, player, worldIn, pos); - IPlayer iplayer = SpeciesList.instance().getPlayer(player); + Pony iplayer = Pony.of(player); Race race = iplayer.getSpecies(); if (race == Race.CHANGELING) { diff --git a/src/main/java/com/minelittlepony/unicopia/block/ChitinBlock.java b/src/main/java/com/minelittlepony/unicopia/block/ChitinBlock.java index 8624e018..7cde8028 100644 --- a/src/main/java/com/minelittlepony/unicopia/block/ChitinBlock.java +++ b/src/main/java/com/minelittlepony/unicopia/block/ChitinBlock.java @@ -1,9 +1,8 @@ package com.minelittlepony.unicopia.block; import com.minelittlepony.unicopia.Race; -import com.minelittlepony.unicopia.SpeciesList; import com.minelittlepony.unicopia.UMaterials; -import com.minelittlepony.unicopia.entity.player.IPlayer; +import com.minelittlepony.unicopia.entity.player.Pony; import net.fabricmc.fabric.api.block.FabricBlockSettings; import net.minecraft.block.Block; @@ -43,7 +42,7 @@ public class ChitinBlock extends Block { public float calcBlockBreakingDelta(BlockState state, PlayerEntity player, BlockView world, BlockPos pos) { float hardness = super.calcBlockBreakingDelta(state, player, world, pos); - IPlayer iplayer = SpeciesList.instance().getPlayer(player); + Pony iplayer = Pony.of(player); Race race = iplayer.getSpecies(); if (race == Race.CHANGELING) { diff --git a/src/main/java/com/minelittlepony/unicopia/block/FruitLeavesBlock.java b/src/main/java/com/minelittlepony/unicopia/block/FruitLeavesBlock.java index 1ee25176..c3a7cbd3 100644 --- a/src/main/java/com/minelittlepony/unicopia/block/FruitLeavesBlock.java +++ b/src/main/java/com/minelittlepony/unicopia/block/FruitLeavesBlock.java @@ -5,8 +5,8 @@ import java.util.function.Function; import javax.annotation.Nonnull; -import com.minelittlepony.unicopia.SpeciesList; import com.minelittlepony.unicopia.ducks.Colourful; +import com.minelittlepony.unicopia.entity.player.Pony; import net.fabricmc.fabric.api.block.FabricBlockSettings; import net.minecraft.block.Block; @@ -84,7 +84,7 @@ public class FruitLeavesBlock extends LeavesBlock implements Colourful { public boolean activate(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockHitResult hit) { ItemStack stack = player.getStackInHand(hand); - if (SpeciesList.instance().getPlayer(player).getSpecies().canUseEarth()) { + if (Pony.of(player).getSpecies().canUseEarth()) { if (stack.isEmpty()) { if (state.get(HEAVY)) { diff --git a/src/main/java/com/minelittlepony/unicopia/block/HiveWallBlock.java b/src/main/java/com/minelittlepony/unicopia/block/HiveWallBlock.java index ac9dd0f9..85f217d1 100644 --- a/src/main/java/com/minelittlepony/unicopia/block/HiveWallBlock.java +++ b/src/main/java/com/minelittlepony/unicopia/block/HiveWallBlock.java @@ -5,13 +5,12 @@ import java.util.Random; import com.google.common.collect.Maps; import com.minelittlepony.unicopia.Race; -import com.minelittlepony.unicopia.SpeciesList; import com.minelittlepony.unicopia.UBlocks; import com.minelittlepony.unicopia.UMaterials; import com.minelittlepony.unicopia.USounds; -import com.minelittlepony.unicopia.entity.player.IPlayer; +import com.minelittlepony.unicopia.entity.player.Pony; import com.minelittlepony.unicopia.util.PosHelper; -import com.minelittlepony.unicopia.util.shape.IShape; +import com.minelittlepony.unicopia.util.shape.Shape; import com.minelittlepony.unicopia.util.shape.Sphere; import net.fabricmc.fabric.api.block.FabricBlockSettings; @@ -43,7 +42,7 @@ public class HiveWallBlock extends FallingBlock { public static final EnumProperty STATE = EnumProperty.of("state", State.class); public static final EnumProperty AXIS = EnumProperty.of("axis", Axis.class); - private static final IShape shape = new Sphere(false, 1.5); + private static final Shape shape = new Sphere(false, 1.5); @SuppressWarnings("deprecation") public HiveWallBlock() { @@ -185,7 +184,7 @@ public class HiveWallBlock extends FallingBlock { @Override public void onSteppedOn(World world, BlockPos pos, Entity entity) { if (entity instanceof PlayerEntity) { - IPlayer player = SpeciesList.instance().getPlayer((PlayerEntity)entity); + Pony player = Pony.of((PlayerEntity)entity); if (player.getSpecies() != Race.CHANGELING && !world.isClient) { if (((isEmptySpace(world, pos.down()) || canFallThrough(world.getBlockState(pos.down()))) && pos.getY() >= 0)) { @@ -206,7 +205,7 @@ public class HiveWallBlock extends FallingBlock { public boolean activate(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockHitResult hit) { if (hand == Hand.MAIN_HAND && player.getStackInHand(hand).isEmpty()) { - IPlayer iplayer = SpeciesList.instance().getPlayer(player); + Pony iplayer = Pony.of(player); if (iplayer.getSpecies() == Race.CHANGELING) { retreat(world, pos); diff --git a/src/main/java/com/minelittlepony/unicopia/client/KeyBindingsHandler.java b/src/main/java/com/minelittlepony/unicopia/client/KeyBindingsHandler.java index 3f550483..55c4906b 100644 --- a/src/main/java/com/minelittlepony/unicopia/client/KeyBindingsHandler.java +++ b/src/main/java/com/minelittlepony/unicopia/client/KeyBindingsHandler.java @@ -4,10 +4,9 @@ import java.util.HashSet; import java.util.Set; import com.minelittlepony.unicopia.IKeyBinding; -import com.minelittlepony.unicopia.SpeciesList; import com.minelittlepony.unicopia.UnicopiaCore; import com.minelittlepony.unicopia.ability.Abilities; -import com.minelittlepony.unicopia.entity.player.IPlayer; +import com.minelittlepony.unicopia.entity.player.Pony; import net.fabricmc.fabric.api.client.keybinding.FabricKeyBinding; import net.fabricmc.fabric.api.client.keybinding.KeyBindingRegistry; @@ -39,7 +38,7 @@ class KeyBindingsHandler { || client.player == null) { return; } - IPlayer iplayer = SpeciesList.instance().getPlayer(client.player); + Pony iplayer = Pony.of(client.player); for (KeyBinding i : bindings) { if (i.isPressed()) { diff --git a/src/main/java/com/minelittlepony/unicopia/client/UnicopiaCoreClient.java b/src/main/java/com/minelittlepony/unicopia/client/UnicopiaCoreClient.java index b06e15cd..3ae9c86f 100644 --- a/src/main/java/com/minelittlepony/unicopia/client/UnicopiaCoreClient.java +++ b/src/main/java/com/minelittlepony/unicopia/client/UnicopiaCoreClient.java @@ -10,13 +10,12 @@ import com.minelittlepony.jumpingcastle.api.Target; import com.minelittlepony.unicopia.Config; import com.minelittlepony.unicopia.InteractionManager; import com.minelittlepony.unicopia.Race; -import com.minelittlepony.unicopia.SpeciesList; import com.minelittlepony.unicopia.UBlocks; import com.minelittlepony.unicopia.UnicopiaCore; import com.minelittlepony.unicopia.ability.Abilities; import com.minelittlepony.unicopia.client.render.DisguiseRenderer; import com.minelittlepony.unicopia.ducks.Colourful; -import com.minelittlepony.unicopia.entity.player.IPlayer; +import com.minelittlepony.unicopia.entity.player.Pony; import com.minelittlepony.unicopia.item.UItems; import com.minelittlepony.unicopia.magic.spell.SpellRegistry; import com.minelittlepony.unicopia.network.MsgRequestCapabilities; @@ -55,7 +54,7 @@ public class UnicopiaCoreClient extends InteractionManager implements ClientModI private static Race clientPlayerRace = getclientPlayerRace(); private static Race getclientPlayerRace() { - if (!Config.instance().ignoresMineLittlePony() + if (!Config.getInstance().ignoresMineLittlePony() && MinecraftClient.getInstance().player != null) { Race race = MineLPConnector.getPlayerPonyRace(); @@ -65,7 +64,7 @@ public class UnicopiaCoreClient extends InteractionManager implements ClientModI } - return Config.instance().getPrefferedRace(); + return Config.getInstance().getPrefferedRace(); } @Override @@ -87,7 +86,7 @@ public class UnicopiaCoreClient extends InteractionManager implements ClientModI return false; } - return IPlayer.equal(MinecraftClient.getInstance().player, player); + return Pony.equal(MinecraftClient.getInstance().player, player); } @Override @@ -97,7 +96,7 @@ public class UnicopiaCoreClient extends InteractionManager implements ClientModI public void postRenderEntity(Entity entity) { if (entity instanceof PlayerEntity) { - IPlayer iplayer = SpeciesList.instance().getPlayer((PlayerEntity)entity); + Pony iplayer = Pony.of((PlayerEntity)entity); if (iplayer.getGravity().getGravitationConstant() < 0) { GlStateManager.translated(0, entity.getDimensions(entity.getPose()).height, 0); @@ -115,7 +114,7 @@ public class UnicopiaCoreClient extends InteractionManager implements ClientModI } if (entity instanceof PlayerEntity) { - IPlayer iplayer = SpeciesList.instance().getPlayer((PlayerEntity)entity); + Pony iplayer = Pony.of((PlayerEntity)entity); if (iplayer.getGravity().getGravitationConstant() < 0) { GlStateManager.scalef(1, -1, 1); diff --git a/src/main/java/com/minelittlepony/unicopia/client/gui/ClientHooks.java b/src/main/java/com/minelittlepony/unicopia/client/gui/ClientHooks.java index 1dfec699..282eea53 100644 --- a/src/main/java/com/minelittlepony/unicopia/client/gui/ClientHooks.java +++ b/src/main/java/com/minelittlepony/unicopia/client/gui/ClientHooks.java @@ -1,11 +1,12 @@ package com.minelittlepony.unicopia.client.gui; -import com.minelittlepony.unicopia.SpeciesList; import com.minelittlepony.unicopia.client.gui.UHud; +import com.minelittlepony.unicopia.entity.player.Pony; import com.mojang.blaze3d.platform.GlStateManager; import net.minecraft.client.MinecraftClient; +// TODO: forge events class ClientHooks { public static void beforePreRenderHud() { GlStateManager.pushMatrix(); @@ -13,7 +14,7 @@ class ClientHooks { MinecraftClient client = MinecraftClient.getInstance(); if (client.player != null && client.world != null) { - UHud.instance.repositionElements(SpeciesList.instance().getPlayer(client.player), client.window, true); + UHud.instance.repositionElements(Pony.of(client.player), client.window, true); } } @@ -22,7 +23,7 @@ class ClientHooks { MinecraftClient client = MinecraftClient.getInstance(); if (client.player != null && client.world != null) { - UHud.instance.renderHud(SpeciesList.instance().getPlayer(client.player), client.window); + UHud.instance.renderHud(Pony.of(client.player), client.window); } GlStateManager.popMatrix(); diff --git a/src/main/java/com/minelittlepony/unicopia/client/gui/FlightExperienceBar.java b/src/main/java/com/minelittlepony/unicopia/client/gui/FlightExperienceBar.java index 004ac580..525cf258 100644 --- a/src/main/java/com/minelittlepony/unicopia/client/gui/FlightExperienceBar.java +++ b/src/main/java/com/minelittlepony/unicopia/client/gui/FlightExperienceBar.java @@ -1,6 +1,6 @@ package com.minelittlepony.unicopia.client.gui; -import com.minelittlepony.unicopia.entity.player.IPlayer; +import com.minelittlepony.unicopia.entity.player.Pony; import com.mojang.blaze3d.platform.GlStateManager; import net.minecraft.client.gui.DrawableHelper; @@ -11,7 +11,7 @@ class FlightExperienceBar extends DrawableHelper implements IHudElement { static final Identifier TEXTURE = new Identifier("textures/gui/bars.png"); @Override - public boolean shouldRender(IPlayer player) { + public boolean shouldRender(Pony player) { return player.getSpecies().canFly() && !player.getOwner().abilities.creativeMode; } diff --git a/src/main/java/com/minelittlepony/unicopia/client/gui/IHudElement.java b/src/main/java/com/minelittlepony/unicopia/client/gui/IHudElement.java index 1e34d5b8..cb021b98 100644 --- a/src/main/java/com/minelittlepony/unicopia/client/gui/IHudElement.java +++ b/src/main/java/com/minelittlepony/unicopia/client/gui/IHudElement.java @@ -1,6 +1,6 @@ package com.minelittlepony.unicopia.client.gui; -import com.minelittlepony.unicopia.entity.player.IPlayer; +import com.minelittlepony.unicopia.entity.player.Pony; public interface IHudElement { @@ -8,5 +8,5 @@ public interface IHudElement { void renderHud(UHud context); - boolean shouldRender(IPlayer player); + boolean shouldRender(Pony player); } diff --git a/src/main/java/com/minelittlepony/unicopia/container/SpellBookScreen.java b/src/main/java/com/minelittlepony/unicopia/client/gui/SpellBookScreen.java similarity index 90% rename from src/main/java/com/minelittlepony/unicopia/container/SpellBookScreen.java rename to src/main/java/com/minelittlepony/unicopia/client/gui/SpellBookScreen.java index 1da4ee34..5e83869b 100644 --- a/src/main/java/com/minelittlepony/unicopia/container/SpellBookScreen.java +++ b/src/main/java/com/minelittlepony/unicopia/client/gui/SpellBookScreen.java @@ -1,16 +1,16 @@ -package com.minelittlepony.unicopia.container; +package com.minelittlepony.unicopia.client.gui; import org.lwjgl.opengl.GL11; import com.minelittlepony.common.client.gui.element.Button; -import com.minelittlepony.unicopia.SpeciesList; import com.minelittlepony.unicopia.UnicopiaCore; +import com.minelittlepony.unicopia.container.SpellBookContainer; import com.minelittlepony.unicopia.container.SpellBookContainer.SpellbookSlot; import com.minelittlepony.unicopia.enchanting.IPageUnlockListener; import com.minelittlepony.unicopia.enchanting.Page; import com.minelittlepony.unicopia.enchanting.PageState; import com.minelittlepony.unicopia.enchanting.Pages; -import com.minelittlepony.unicopia.entity.player.IPlayer; +import com.minelittlepony.unicopia.entity.player.Pony; import com.mojang.blaze3d.platform.GlStateManager; import net.minecraft.client.gui.screen.ingame.AbstractContainerScreen; @@ -26,7 +26,7 @@ public class SpellBookScreen extends AbstractContainerScreen public static final Identifier spellBookGuiTextures = new Identifier("unicopia", "textures/gui/container/book.png"); - private IPlayer playerExtension; + private Pony player; private PageButton nextPage; private PageButton prevPage; @@ -41,7 +41,7 @@ public class SpellBookScreen extends AbstractContainerScreen containerWidth = 405; containerHeight = 219; - playerExtension = SpeciesList.instance().getPlayer(player); + this.player = Pony.of(player); } @Override @@ -63,11 +63,11 @@ public class SpellBookScreen extends AbstractContainerScreen onPageChange(); - if (playerExtension.hasPageStateRelative(currentPage, PageState.UNREAD, Page::next)) { + if (player.getPages().hasPageStateRelative(currentPage, PageState.UNREAD, Page::next)) { nextPage.triggerShake(); } - if (playerExtension.hasPageStateRelative(currentPage, PageState.UNREAD, Page::prev)) { + if (player.getPages().hasPageStateRelative(currentPage, PageState.UNREAD, Page::prev)) { prevPage.triggerShake(); } } @@ -76,8 +76,8 @@ public class SpellBookScreen extends AbstractContainerScreen prevPage.setEnabled(currentPage.getIndex() > 0); nextPage.setEnabled(currentPage.getIndex() < Pages.instance().getTotalPages() - 1); - if (playerExtension.getPageState(currentPage) == PageState.UNREAD) { - playerExtension.setPageState(currentPage, PageState.READ); + if (player.getPages().getPageState(currentPage) == PageState.UNREAD) { + player.getPages().setPageState(currentPage, PageState.READ); } } @@ -152,7 +152,7 @@ public class SpellBookScreen extends AbstractContainerScreen minecraft.getTextureManager().bindTexture(spellBookGuiTextures); blit(left + 147, top + 49, 407, 2, 100, 101, 512, 256); - if (playerExtension.getPageState(currentPage) != PageState.LOCKED) { + if (player.getPages().getPageState(currentPage) != PageState.LOCKED) { Identifier texture = currentPage.getTexture(); if (minecraft.getTextureManager().getTexture(texture) != MissingSprite.getMissingSpriteTexture()) { @@ -161,7 +161,7 @@ public class SpellBookScreen extends AbstractContainerScreen minecraft.getTextureManager().bindTexture(texture); blit(left, top, 0, 0, containerWidth, containerHeight, 512, 256); } else { - if (playerExtension.getWorld().random.nextInt(100) == 0) { + if (player.getWorld().random.nextInt(100) == 0) { UnicopiaCore.LOGGER.fatal("Missing texture " + texture); } } diff --git a/src/main/java/com/minelittlepony/unicopia/client/gui/UHud.java b/src/main/java/com/minelittlepony/unicopia/client/gui/UHud.java index a9499c68..00a9bdb8 100644 --- a/src/main/java/com/minelittlepony/unicopia/client/gui/UHud.java +++ b/src/main/java/com/minelittlepony/unicopia/client/gui/UHud.java @@ -5,7 +5,7 @@ import java.util.List; import org.lwjgl.opengl.GL11; -import com.minelittlepony.unicopia.entity.player.IPlayer; +import com.minelittlepony.unicopia.entity.player.Pony; import com.mojang.blaze3d.platform.GlStateManager; import net.minecraft.client.MinecraftClient; @@ -22,7 +22,7 @@ public class UHud { TextRenderer fonts = mc.textRenderer; - IPlayer player; + Pony player; int width; @@ -34,7 +34,7 @@ public class UHud { elements.add(new FlightExperienceBar()); } - public void renderHud(IPlayer player, Window resolution) { + public void renderHud(Pony player, Window resolution) { this.width = resolution.getScaledWidth(); this.height = resolution.getScaledHeight(); this.player = player; @@ -43,7 +43,7 @@ public class UHud { elements.forEach(this::renderElement); } - public void repositionElements(IPlayer player, Window window, boolean begin) { + public void repositionElements(Pony player, Window window, boolean begin) { this.width = window.getScaledWidth(); this.height = window.getScaledHeight(); this.player = player; diff --git a/src/main/java/com/minelittlepony/unicopia/client/mixin/MixinCamera.java b/src/main/java/com/minelittlepony/unicopia/client/mixin/MixinCamera.java index 62ba03a4..7d7c2a89 100644 --- a/src/main/java/com/minelittlepony/unicopia/client/mixin/MixinCamera.java +++ b/src/main/java/com/minelittlepony/unicopia/client/mixin/MixinCamera.java @@ -5,7 +5,7 @@ import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; -import com.minelittlepony.unicopia.SpeciesList; +import com.minelittlepony.unicopia.entity.player.Pony; import com.minelittlepony.unicopia.entity.player.PlayerCamera; import net.minecraft.client.MinecraftClient; @@ -24,7 +24,7 @@ abstract class MixinCamera { PlayerEntity player = MinecraftClient.getInstance().player; if (player != null) { - PlayerCamera view = SpeciesList.instance().getPlayer(player).getCamera(); + PlayerCamera view = Pony.of(player).getCamera(); //event.setRoll(view.calculateRoll()); pitch = view.calculatePitch(pitch); diff --git a/src/main/java/com/minelittlepony/unicopia/client/mixin/MixinGameRenderer.java b/src/main/java/com/minelittlepony/unicopia/client/mixin/MixinGameRenderer.java index 22d7f57e..1d7422a4 100644 --- a/src/main/java/com/minelittlepony/unicopia/client/mixin/MixinGameRenderer.java +++ b/src/main/java/com/minelittlepony/unicopia/client/mixin/MixinGameRenderer.java @@ -5,7 +5,7 @@ import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; -import com.minelittlepony.unicopia.SpeciesList; +import com.minelittlepony.unicopia.entity.player.Pony; import net.minecraft.client.MinecraftClient; import net.minecraft.client.render.Camera; @@ -18,7 +18,7 @@ abstract class MixinGameRenderer implements AutoCloseable, SynchronousResourceRe at = @At("RETURN"), cancellable = true) private void onGetFov(Camera camera, float f, boolean z, CallbackInfoReturnable info) { - info.setReturnValue(SpeciesList.instance().getPlayer(MinecraftClient.getInstance().player) + info.setReturnValue(Pony.of(MinecraftClient.getInstance().player) .getCamera() .calculateFieldOfView(info.getReturnValue())); } diff --git a/src/main/java/com/minelittlepony/unicopia/client/mixin/MixinKeyboardInput.java b/src/main/java/com/minelittlepony/unicopia/client/mixin/MixinKeyboardInput.java index 0c82a53a..978472ae 100644 --- a/src/main/java/com/minelittlepony/unicopia/client/mixin/MixinKeyboardInput.java +++ b/src/main/java/com/minelittlepony/unicopia/client/mixin/MixinKeyboardInput.java @@ -5,8 +5,7 @@ import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -import com.minelittlepony.unicopia.SpeciesList; -import com.minelittlepony.unicopia.entity.player.IPlayer; +import com.minelittlepony.unicopia.entity.player.Pony; import net.minecraft.client.MinecraftClient; import net.minecraft.client.input.Input; @@ -16,7 +15,7 @@ import net.minecraft.client.input.KeyboardInput; abstract class MixinKeyboardInput extends Input { @Inject(method = "tick(ZZ)V", at = @At("RETURN")) private void onTick(boolean one, boolean two, CallbackInfo info) { - IPlayer player = SpeciesList.instance().getPlayer(MinecraftClient.getInstance().player); + Pony player = Pony.of(MinecraftClient.getInstance().player); if (player.getGravity().getGravitationConstant() < 0) { boolean tmp = pressingLeft; diff --git a/src/main/java/com/minelittlepony/unicopia/client/mixin/MixinMouse.java b/src/main/java/com/minelittlepony/unicopia/client/mixin/MixinMouse.java index 385bf9e7..c3bb7f12 100644 --- a/src/main/java/com/minelittlepony/unicopia/client/mixin/MixinMouse.java +++ b/src/main/java/com/minelittlepony/unicopia/client/mixin/MixinMouse.java @@ -7,7 +7,7 @@ import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -import com.minelittlepony.unicopia.SpeciesList; +import com.minelittlepony.unicopia.entity.player.Pony; import net.minecraft.client.MinecraftClient; import net.minecraft.client.Mouse; @@ -23,7 +23,7 @@ abstract class MixinMouse { @Inject(method = "updateMouse()V", at = @At("HEAD")) private void onUpdateMouse(CallbackInfo info) { - if (SpeciesList.instance().getPlayer(client.player).getGravity().getGravitationConstant() < 0) { + if (Pony.of(client.player).getGravity().getGravitationConstant() < 0) { cursorDeltaX = -cursorDeltaX; cursorDeltaY = -cursorDeltaY; } diff --git a/src/main/java/com/minelittlepony/unicopia/client/particle/SphereParticle.java b/src/main/java/com/minelittlepony/unicopia/client/particle/SphereParticle.java index 69f25bd2..2b590e2b 100644 --- a/src/main/java/com/minelittlepony/unicopia/client/particle/SphereParticle.java +++ b/src/main/java/com/minelittlepony/unicopia/client/particle/SphereParticle.java @@ -16,11 +16,11 @@ import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GL14; import com.minelittlepony.unicopia.client.render.SphereModel; -import com.minelittlepony.unicopia.magic.ICaster; -import com.minelittlepony.unicopia.util.particles.ParticleConnection.IAttachableParticle; +import com.minelittlepony.unicopia.magic.Caster; +import com.minelittlepony.unicopia.util.particles.ParticleConnection.AttachableParticle; import com.mojang.blaze3d.platform.GlStateManager; -public class SphereParticle extends Particle implements IAttachableParticle { +public class SphereParticle extends Particle implements AttachableParticle { protected float red; protected float green; @@ -29,7 +29,7 @@ public class SphereParticle extends Particle implements IAttachableParticle { protected float radius; - private ICaster caster; + private Caster caster; private static final SphereModel model = new SphereModel(); @@ -63,7 +63,7 @@ public class SphereParticle extends Particle implements IAttachableParticle { } @Override - public void attachTo(ICaster caster) { + public void attachTo(Caster caster) { setMaxAge(50000); this.caster = caster; } diff --git a/src/main/java/com/minelittlepony/unicopia/client/render/DisguiseRenderer.java b/src/main/java/com/minelittlepony/unicopia/client/render/DisguiseRenderer.java index 0fe9d12b..11983dc1 100644 --- a/src/main/java/com/minelittlepony/unicopia/client/render/DisguiseRenderer.java +++ b/src/main/java/com/minelittlepony/unicopia/client/render/DisguiseRenderer.java @@ -1,6 +1,6 @@ package com.minelittlepony.unicopia.client.render; -import com.minelittlepony.unicopia.entity.player.IPlayer; +import com.minelittlepony.unicopia.entity.player.Pony; import com.minelittlepony.unicopia.magic.spell.DisguiseSpell; import net.minecraft.client.MinecraftClient; @@ -46,7 +46,7 @@ public class DisguiseRenderer { renderDisguise(renderMan, entity, x, y, z); } - public boolean renderDisguiseToGui(IPlayer player) { + public boolean renderDisguiseToGui(Pony player) { DisguiseSpell effect = player.getEffect(DisguiseSpell.class, false); if (effect == null || effect.isDead()) { diff --git a/src/main/java/com/minelittlepony/unicopia/command/DisguiseCommand.java b/src/main/java/com/minelittlepony/unicopia/command/DisguiseCommand.java index 0668a7a6..395e04e0 100644 --- a/src/main/java/com/minelittlepony/unicopia/command/DisguiseCommand.java +++ b/src/main/java/com/minelittlepony/unicopia/command/DisguiseCommand.java @@ -2,8 +2,7 @@ package com.minelittlepony.unicopia.command; import java.util.function.Function; -import com.minelittlepony.unicopia.SpeciesList; -import com.minelittlepony.unicopia.entity.player.IPlayer; +import com.minelittlepony.unicopia.entity.player.Pony; import com.minelittlepony.unicopia.magic.spell.DisguiseSpell; import com.mojang.brigadier.CommandDispatcher; import com.mojang.brigadier.builder.LiteralArgumentBuilder; @@ -53,7 +52,7 @@ public class DisguiseCommand { nbt = nbt.method_10553(); nbt.putString("id", id.toString()); - IPlayer iplayer = SpeciesList.instance().getPlayer(player); + Pony iplayer = Pony.of(player); Entity entity = EntityType.loadEntityWithPassengers(nbt, source.getWorld(), Function.identity()); @@ -82,7 +81,7 @@ public class DisguiseCommand { } static int reveal(ServerCommandSource source, PlayerEntity player) { - IPlayer iplayer = SpeciesList.instance().getPlayer(player); + Pony iplayer = Pony.of(player); iplayer.getEffect(DisguiseSpell.class).ifPresent(disguise -> { disguise.setDead(); }); diff --git a/src/main/java/com/minelittlepony/unicopia/command/GravityCommand.java b/src/main/java/com/minelittlepony/unicopia/command/GravityCommand.java index abd56528..3abcf561 100644 --- a/src/main/java/com/minelittlepony/unicopia/command/GravityCommand.java +++ b/src/main/java/com/minelittlepony/unicopia/command/GravityCommand.java @@ -1,7 +1,6 @@ package com.minelittlepony.unicopia.command; -import com.minelittlepony.unicopia.SpeciesList; -import com.minelittlepony.unicopia.entity.player.IPlayer; +import com.minelittlepony.unicopia.entity.player.Pony; import com.mojang.brigadier.CommandDispatcher; import com.mojang.brigadier.arguments.FloatArgumentType; import com.mojang.brigadier.builder.LiteralArgumentBuilder; @@ -37,7 +36,7 @@ class GravityCommand { static int get(ServerCommandSource source, PlayerEntity player, boolean isSelf) { String translationKey = "commands.gravity.get"; - IPlayer iplayer = SpeciesList.instance().getPlayer(player); + Pony iplayer = Pony.of(player); float gravity = iplayer.getGravity().getGravitationConstant(); @@ -53,7 +52,7 @@ class GravityCommand { static int set(ServerCommandSource source, PlayerEntity player, float gravity, boolean isSelf) { String translationKey = "commands.gravity.set"; - IPlayer iplayer = SpeciesList.instance().getPlayer(player); + Pony iplayer = Pony.of(player); iplayer.getGravity().setGraviationConstant(gravity); iplayer.sendCapabilities(true); diff --git a/src/main/java/com/minelittlepony/unicopia/command/RacelistCommand.java b/src/main/java/com/minelittlepony/unicopia/command/RacelistCommand.java index 92d66efb..b2e415b3 100644 --- a/src/main/java/com/minelittlepony/unicopia/command/RacelistCommand.java +++ b/src/main/java/com/minelittlepony/unicopia/command/RacelistCommand.java @@ -1,9 +1,9 @@ package com.minelittlepony.unicopia.command; -import java.util.function.BiFunction; +import java.util.function.Function; +import com.minelittlepony.unicopia.Config; import com.minelittlepony.unicopia.Race; -import com.minelittlepony.unicopia.SpeciesList; import com.mojang.brigadier.CommandDispatcher; import com.mojang.brigadier.builder.LiteralArgumentBuilder; @@ -21,20 +21,32 @@ class RacelistCommand { builder.then(CommandManager.literal("allow") .then(CommandManager.argument("race", new RaceArgument()) - .executes(context -> toggle(context.getSource(), context.getSource().getPlayer(), context.getArgument("race", Race.class), "allowed", SpeciesList::unwhiteListRace)) + .executes(context -> toggle(context.getSource(), context.getSource().getPlayer(), context.getArgument("race", Race.class), "allowed", race -> { + boolean result = Config.getInstance().getSpeciesWhiteList().remove(race); + + Config.getInstance().save(); + + return result; + })) )); builder.then(CommandManager.literal("disallow") .then(CommandManager.argument("race", new RaceArgument()) - .executes(context -> toggle(context.getSource(), context.getSource().getPlayer(), context.getArgument("race", Race.class), "disallowed", SpeciesList::whiteListRace)) + .executes(context -> toggle(context.getSource(), context.getSource().getPlayer(), context.getArgument("race", Race.class), "disallowed", race -> { + boolean result = Config.getInstance().getSpeciesWhiteList().add(race); + + Config.getInstance().save(); + + return result; + })) )); dispatcher.register(builder); } - static int toggle(ServerCommandSource source, ServerPlayerEntity player, Race race, String action, BiFunction func) { + static int toggle(ServerCommandSource source, ServerPlayerEntity player, Race race, String action, Function func) { String translationKey = "commands.racelist." + action; - if (!func.apply(SpeciesList.instance(), race)) { + if (!func.apply(race)) { translationKey += ".failed"; } diff --git a/src/main/java/com/minelittlepony/unicopia/command/SpeciesCommand.java b/src/main/java/com/minelittlepony/unicopia/command/SpeciesCommand.java index 68aefab9..d4a5b8b8 100644 --- a/src/main/java/com/minelittlepony/unicopia/command/SpeciesCommand.java +++ b/src/main/java/com/minelittlepony/unicopia/command/SpeciesCommand.java @@ -1,7 +1,7 @@ package com.minelittlepony.unicopia.command; import com.minelittlepony.unicopia.Race; -import com.minelittlepony.unicopia.SpeciesList; +import com.minelittlepony.unicopia.entity.player.Pony; import com.mojang.brigadier.CommandDispatcher; import com.mojang.brigadier.builder.LiteralArgumentBuilder; @@ -46,8 +46,8 @@ class SpeciesCommand { static int set(ServerCommandSource source, PlayerEntity player, Race race, boolean isSelf) { - if (SpeciesList.instance().speciesPermitted(race, player)) { - SpeciesList.instance().getPlayer(player).setSpecies(race); + if (race.isPermitted(player)) { + Pony.of(player).setSpecies(race); Text formattedName = new TranslatableText(race.name().toLowerCase()); @@ -67,7 +67,7 @@ class SpeciesCommand { } static int get(ServerCommandSource source, PlayerEntity player, boolean isSelf) { - Race spec = SpeciesList.instance().getPlayer(player).getSpecies(); + Race spec = Pony.of(player).getSpecies(); String name = "commands.race.tell."; name += isSelf ? "self" : "other"; @@ -91,7 +91,7 @@ class SpeciesCommand { boolean first = true; for (Race i : Race.values()) { - if (!i.isDefault() && SpeciesList.instance().speciesPermitted(i, player)) { + if (!i.isDefault() && i.isPermitted(player)) { message.append(new TranslatableText((!first ? "\n" : "") + " - " + i.name().toLowerCase())); first = false; } diff --git a/src/main/java/com/minelittlepony/unicopia/container/BagOfHoldingInventory.java b/src/main/java/com/minelittlepony/unicopia/container/BagOfHoldingInventory.java index 7f03285c..9dc1303c 100644 --- a/src/main/java/com/minelittlepony/unicopia/container/BagOfHoldingInventory.java +++ b/src/main/java/com/minelittlepony/unicopia/container/BagOfHoldingInventory.java @@ -6,9 +6,9 @@ import java.util.Optional; import java.util.function.BiFunction; import com.minelittlepony.unicopia.advancement.BOHDeathCriterion; -import com.minelittlepony.unicopia.magic.IMagicalItem; +import com.minelittlepony.unicopia.magic.MagicalItem; import com.minelittlepony.unicopia.util.HeavyInventoryUtils; -import com.minelittlepony.unicopia.util.InbtSerialisable; +import com.minelittlepony.unicopia.util.NbtSerialisable; import com.minelittlepony.unicopia.util.MagicalDamageSource; import net.minecraft.block.Block; @@ -36,7 +36,7 @@ import net.minecraft.world.explosion.Explosion.DestructionType; import net.minecraft.world.loot.context.LootContext; import net.minecraft.world.loot.context.LootContextParameters; -public class BagOfHoldingInventory extends BasicInventory implements InbtSerialisable { +public class BagOfHoldingInventory extends BasicInventory implements NbtSerialisable { public static final int NBT_COMPOUND = 10; public static final int MIN_SIZE = 18; @@ -159,7 +159,7 @@ public class BagOfHoldingInventory extends BasicInventory implements InbtSeriali // TODO: tag for items that are invalid for the inventory of holding || stack.getItem() instanceof BlockItem && (((BlockItem)stack.getItem()).getBlock() instanceof ShulkerBoxBlock) || (compound != null && compound.containsKey("invalid")) - || (stack.getItem() instanceof IMagicalItem && ((IMagicalItem) stack.getItem()).hasInnerSpace()); + || (stack.getItem() instanceof MagicalItem && ((MagicalItem) stack.getItem()).hasInnerSpace()); } protected boolean isIllegalBlock(Block block) { diff --git a/src/main/java/com/minelittlepony/unicopia/container/SpellBookContainer.java b/src/main/java/com/minelittlepony/unicopia/container/SpellBookContainer.java index 02b0da12..4b024af7 100644 --- a/src/main/java/com/minelittlepony/unicopia/container/SpellBookContainer.java +++ b/src/main/java/com/minelittlepony/unicopia/container/SpellBookContainer.java @@ -3,8 +3,8 @@ package com.minelittlepony.unicopia.container; import javax.annotation.Nonnull; import com.minelittlepony.unicopia.EquinePredicates; -import com.minelittlepony.unicopia.SpeciesList; import com.minelittlepony.unicopia.enchanting.IPageUnlockListener; +import com.minelittlepony.unicopia.entity.player.Pony; import com.minelittlepony.unicopia.magic.spell.SpellRegistry; import com.minelittlepony.unicopia.util.AwaitTickQueue; @@ -65,7 +65,7 @@ public class SpellBookContainer extends Container { addSlot(new SpellbookSlot(craftMatrix, 2, 175, 134)); addSlot(new SpellbookSlot(craftMatrix, 3, 226, 120)); addSlot(new SpellbookSlot(craftMatrix, 4, 227, 65)); - addSlot(resultSlot = new SpellbookResultSlot(listener, SpeciesList.instance().getPlayer(player), craftMatrix, craftResult, 0, 191, 92)); + addSlot(resultSlot = new SpellbookResultSlot(listener, Pony.of(player), craftMatrix, craftResult, 0, 191, 92)); } @Override @@ -161,7 +161,7 @@ public class SpellBookContainer extends Container { return EquinePredicates.MAGI.test(player); } - static class SpellbookSlot extends Slot { + public static class SpellbookSlot extends Slot { public SpellbookSlot(Inventory inventoryIn, int index, int xPosition, int yPosition) { super(inventoryIn, index, xPosition, yPosition); diff --git a/src/main/java/com/minelittlepony/unicopia/container/SpellbookResultSlot.java b/src/main/java/com/minelittlepony/unicopia/container/SpellbookResultSlot.java index 1a7a9d86..50b381b8 100644 --- a/src/main/java/com/minelittlepony/unicopia/container/SpellbookResultSlot.java +++ b/src/main/java/com/minelittlepony/unicopia/container/SpellbookResultSlot.java @@ -1,8 +1,8 @@ package com.minelittlepony.unicopia.container; -import com.minelittlepony.unicopia.enchanting.IPageOwner; import com.minelittlepony.unicopia.enchanting.IPageUnlockListener; import com.minelittlepony.unicopia.enchanting.SpellCraftingEvent; +import com.minelittlepony.unicopia.entity.player.Pony; import com.minelittlepony.unicopia.item.MagicGemItem; import com.minelittlepony.unicopia.magic.spell.SpellRegistry; @@ -15,16 +15,16 @@ import net.minecraft.util.DefaultedList; public class SpellbookResultSlot extends SpellBookContainer.SpellbookSlot { - private final IPageOwner owner; + private final Pony player; private final SpellBookInventory craftMatrix; private IPageUnlockListener listener; private boolean crafted; - public SpellbookResultSlot(IPageUnlockListener listener, IPageOwner owner, SpellBookInventory craftMatric, Inventory inventory, int index, int xPosition, int yPosition) { + public SpellbookResultSlot(IPageUnlockListener listener, Pony player, SpellBookInventory craftMatric, Inventory inventory, int index, int xPosition, int yPosition) { super(inventory, index, xPosition, yPosition); - this.owner = owner; + this.player = player; this.listener = listener; craftMatrix = craftMatric; } @@ -85,7 +85,7 @@ public class SpellbookResultSlot extends SpellBookContainer.SpellbookSlot { @Override protected void onCrafted(ItemStack stack) { - SpellCraftingEvent.trigger(owner, stack, listener); + SpellCraftingEvent.trigger(player.getPages(), stack, listener); } @Override diff --git a/src/main/java/com/minelittlepony/unicopia/ducks/IItemEntity.java b/src/main/java/com/minelittlepony/unicopia/ducks/IItemEntity.java index 16aeb73d..10f234f0 100644 --- a/src/main/java/com/minelittlepony/unicopia/ducks/IItemEntity.java +++ b/src/main/java/com/minelittlepony/unicopia/ducks/IItemEntity.java @@ -2,7 +2,7 @@ package com.minelittlepony.unicopia.ducks; import com.minelittlepony.unicopia.entity.ItemEntityCapabilities; -public interface IItemEntity extends RaceContainerHolder { +public interface IItemEntity extends PonyContainer { int getAge(); diff --git a/src/main/java/com/minelittlepony/unicopia/ducks/PonyContainer.java b/src/main/java/com/minelittlepony/unicopia/ducks/PonyContainer.java new file mode 100644 index 00000000..a6599583 --- /dev/null +++ b/src/main/java/com/minelittlepony/unicopia/ducks/PonyContainer.java @@ -0,0 +1,37 @@ +package com.minelittlepony.unicopia.ducks; + +import java.util.Optional; + +import javax.annotation.Nullable; + +import com.minelittlepony.unicopia.entity.Ponylike; +import com.minelittlepony.unicopia.magic.Caster; + +import net.minecraft.entity.Entity; +import net.minecraft.entity.LivingEntity; + +public interface PonyContainer { + + Ponylike create(); + + T get(); + + @SuppressWarnings("unchecked") + @Nullable + default Caster getCaster() { + T ientity = get(); + + if (ientity instanceof Caster) { + return (Caster)ientity; + } + return null; + } + + @SuppressWarnings("unchecked") + static Optional> of(Entity entity) { + if (entity instanceof PonyContainer) { + return Optional.of(((PonyContainer)entity)); + } + return Optional.empty(); + } +} diff --git a/src/main/java/com/minelittlepony/unicopia/ducks/RaceContainerHolder.java b/src/main/java/com/minelittlepony/unicopia/ducks/RaceContainerHolder.java deleted file mode 100644 index 0eed09a0..00000000 --- a/src/main/java/com/minelittlepony/unicopia/ducks/RaceContainerHolder.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.minelittlepony.unicopia.ducks; - -import javax.annotation.Nullable; - -import com.minelittlepony.unicopia.entity.IEntity; -import com.minelittlepony.unicopia.magic.ICaster; - -import net.minecraft.entity.LivingEntity; - -public interface RaceContainerHolder { - T getRaceContainer(); - - @SuppressWarnings("unchecked") - @Nullable - default ICaster getCaster() { - T ientity = getRaceContainer(); - - if (ientity instanceof ICaster) { - return (ICaster)ientity; - } - return null; - } - - IEntity createRaceContainer(); -} diff --git a/src/main/java/com/minelittlepony/unicopia/enchanting/CompoundCondition.java b/src/main/java/com/minelittlepony/unicopia/enchanting/CompoundCondition.java index 8d8d2e02..d0258b05 100644 --- a/src/main/java/com/minelittlepony/unicopia/enchanting/CompoundCondition.java +++ b/src/main/java/com/minelittlepony/unicopia/enchanting/CompoundCondition.java @@ -35,7 +35,7 @@ public class CompoundCondition implements IUnlockCondition { } @Override - public boolean matches(IPageOwner owner, IUnlockEvent event) { + public boolean matches(PageOwner owner, IUnlockEvent event) { return operation.test.apply(conditions.stream(), condition -> condition.accepts(event) && condition.matches(owner, event)); } diff --git a/src/main/java/com/minelittlepony/unicopia/enchanting/IUnlockCondition.java b/src/main/java/com/minelittlepony/unicopia/enchanting/IUnlockCondition.java index 48fb4b71..0cdfb476 100644 --- a/src/main/java/com/minelittlepony/unicopia/enchanting/IUnlockCondition.java +++ b/src/main/java/com/minelittlepony/unicopia/enchanting/IUnlockCondition.java @@ -20,7 +20,7 @@ public interface IUnlockCondition { * @param prop PlayerExtension for the player doing the crafting * @param stack ItemStack crafted */ - boolean matches(IPageOwner owner, T event); + boolean matches(PageOwner owner, T event); default void require(JsonObject json, String memberName) { if (!json.has(memberName)) { diff --git a/src/main/java/com/minelittlepony/unicopia/enchanting/Page.java b/src/main/java/com/minelittlepony/unicopia/enchanting/Page.java index dae83de2..2f2da7a1 100644 --- a/src/main/java/com/minelittlepony/unicopia/enchanting/Page.java +++ b/src/main/java/com/minelittlepony/unicopia/enchanting/Page.java @@ -21,7 +21,7 @@ public interface Page extends Comparable { * Tests unlock conditions for this page. * Returns true if the owner is permitted to read this page. */ - boolean canUnlock(IPageOwner owner, IUnlockEvent event); + boolean canUnlock(PageOwner owner, IUnlockEvent event); /** * Gets the texture. diff --git a/src/main/java/com/minelittlepony/unicopia/enchanting/PageInstance.java b/src/main/java/com/minelittlepony/unicopia/enchanting/PageInstance.java index 42accd06..90e933c3 100644 --- a/src/main/java/com/minelittlepony/unicopia/enchanting/PageInstance.java +++ b/src/main/java/com/minelittlepony/unicopia/enchanting/PageInstance.java @@ -76,7 +76,7 @@ class PageInstance implements Page { } @Override - public boolean canUnlock(IPageOwner owner, IUnlockEvent event) { + public boolean canUnlock(PageOwner owner, IUnlockEvent event) { return condition == null || condition.accepts(event) && condition.matches(owner, event); } diff --git a/src/main/java/com/minelittlepony/unicopia/enchanting/IPageOwner.java b/src/main/java/com/minelittlepony/unicopia/enchanting/PageOwner.java similarity index 95% rename from src/main/java/com/minelittlepony/unicopia/enchanting/IPageOwner.java rename to src/main/java/com/minelittlepony/unicopia/enchanting/PageOwner.java index 6519d951..bfc6d2a7 100644 --- a/src/main/java/com/minelittlepony/unicopia/enchanting/IPageOwner.java +++ b/src/main/java/com/minelittlepony/unicopia/enchanting/PageOwner.java @@ -13,7 +13,7 @@ import net.minecraft.util.Identifier; * Interface for things that own and can unlock pages. * */ -public interface IPageOwner extends Transmittable { +public interface PageOwner extends Transmittable { @Nonnull Map getPageStates(); diff --git a/src/main/java/com/minelittlepony/unicopia/enchanting/PageStateCondition.java b/src/main/java/com/minelittlepony/unicopia/enchanting/PageStateCondition.java index ea2096b8..cd7d04a0 100644 --- a/src/main/java/com/minelittlepony/unicopia/enchanting/PageStateCondition.java +++ b/src/main/java/com/minelittlepony/unicopia/enchanting/PageStateCondition.java @@ -19,7 +19,7 @@ public class PageStateCondition implements IUnlockCondition { } @Override - public boolean matches(IPageOwner owner, IUnlockEvent event) { + public boolean matches(PageOwner owner, IUnlockEvent event) { Page ipage = Pages.instance().getByName(page); if (ipage != null) { diff --git a/src/main/java/com/minelittlepony/unicopia/enchanting/Pages.java b/src/main/java/com/minelittlepony/unicopia/enchanting/Pages.java index 0e1114ba..16372cd9 100644 --- a/src/main/java/com/minelittlepony/unicopia/enchanting/Pages.java +++ b/src/main/java/com/minelittlepony/unicopia/enchanting/Pages.java @@ -118,13 +118,13 @@ public class Pages extends JsonDataLoader implements IdentifiableResourceReloadL return pages.values().stream().map(Page.class::cast).filter(predicate); } - public void triggerUnlockEvent(IPageOwner owner, IUnlockEvent event, @Nullable IPageUnlockListener unlockListener) { + public void triggerUnlockEvent(PageOwner owner, IUnlockEvent event, @Nullable IPageUnlockListener unlockListener) { pages.values().stream() .filter(page -> page.canUnlock(owner, event)) .forEach(page -> unlockPage(owner, page, unlockListener)); } - public void unlockPage(IPageOwner owner, Page page, @Nullable IPageUnlockListener unlockListener) { + public void unlockPage(PageOwner owner, Page page, @Nullable IPageUnlockListener unlockListener) { if (owner.getPageState(page).isLocked()) { if (unlockListener == null || unlockListener.onPageUnlocked(page)) { owner.setPageState(page, PageState.UNREAD); diff --git a/src/main/java/com/minelittlepony/unicopia/enchanting/SpellCraftingEvent.java b/src/main/java/com/minelittlepony/unicopia/enchanting/SpellCraftingEvent.java index 1574c112..719e7ae5 100644 --- a/src/main/java/com/minelittlepony/unicopia/enchanting/SpellCraftingEvent.java +++ b/src/main/java/com/minelittlepony/unicopia/enchanting/SpellCraftingEvent.java @@ -16,7 +16,7 @@ import net.minecraft.item.ItemStack; */ public class SpellCraftingEvent { - public static void trigger(IPageOwner owner, ItemStack stack, @Nullable IPageUnlockListener unlockListener) { + public static void trigger(PageOwner owner, ItemStack stack, @Nullable IPageUnlockListener unlockListener) { Pages.instance().triggerUnlockEvent(owner, new Event(stack), unlockListener); } @@ -49,7 +49,7 @@ public class SpellCraftingEvent { } @Override - public boolean matches(IPageOwner prop, Event event) { + public boolean matches(PageOwner prop, Event event) { if (!event.stack.isEmpty() && event.stack.getItem() instanceof MagicGemItem) { return ((MagicGemItem)event.stack.getItem()).getAffinity() == affinity && SpellRegistry.getKeyFromStack(event.stack).equals(spell); diff --git a/src/main/java/com/minelittlepony/unicopia/entity/CloudEntity.java b/src/main/java/com/minelittlepony/unicopia/entity/CloudEntity.java index d80a17d0..71f03259 100644 --- a/src/main/java/com/minelittlepony/unicopia/entity/CloudEntity.java +++ b/src/main/java/com/minelittlepony/unicopia/entity/CloudEntity.java @@ -6,10 +6,10 @@ import javax.annotation.Nullable; import com.minelittlepony.unicopia.EquinePredicates; import com.minelittlepony.unicopia.Race; -import com.minelittlepony.unicopia.SpeciesList; import com.minelittlepony.unicopia.UBlocks; import com.minelittlepony.unicopia.UParticles; import com.minelittlepony.unicopia.ability.PegasusCloudInteractionAbility.ICloudEntity; +import com.minelittlepony.unicopia.entity.player.Pony; import com.minelittlepony.unicopia.item.UItems; import com.minelittlepony.unicopia.util.particles.ParticleEmitter; @@ -329,7 +329,7 @@ public class CloudEntity extends FlyingEntity implements ICloudEntity, InAnimate player.horizontalSpeed = (float)(player.horizontalSpeed + MathHelper.sqrt(difX * difX + difZ * difZ) * 0.6); player.distanceWalked = (float)(player.distanceWalked + MathHelper.sqrt(difX * difX + difY * difY + difZ * difZ) * 0.6); - if (SpeciesList.instance().getPlayer(player).stepOnCloud()) { + if (Pony.of(player).stepOnCloud()) { BlockSoundGroup soundtype = BlockSoundGroup.WOOL; player.playSound(soundtype.getStepSound(), soundtype.getVolume() * 0.15F, soundtype.getPitch()); } @@ -506,7 +506,7 @@ public class CloudEntity extends FlyingEntity implements ICloudEntity, InAnimate public ItemEntity dropItem(ItemConvertible stack, int amount) { ItemEntity item = super.dropItem(stack, amount); - SpeciesList.instance().getEntity(item).setSpecies(Race.PEGASUS); + Ponylike.of(item).setSpecies(Race.PEGASUS); item.setNoGravity(true); item.setVelocity(0, 0, 0); diff --git a/src/main/java/com/minelittlepony/unicopia/entity/CuccoonEntity.java b/src/main/java/com/minelittlepony/unicopia/entity/CuccoonEntity.java index 597ab84b..1a5a064e 100644 --- a/src/main/java/com/minelittlepony/unicopia/entity/CuccoonEntity.java +++ b/src/main/java/com/minelittlepony/unicopia/entity/CuccoonEntity.java @@ -7,9 +7,9 @@ import javax.annotation.Nullable; import com.google.common.collect.Lists; import com.minelittlepony.unicopia.EquinePredicates; import com.minelittlepony.unicopia.Race; -import com.minelittlepony.unicopia.SpeciesList; import com.minelittlepony.unicopia.UParticles; import com.minelittlepony.unicopia.USounds; +import com.minelittlepony.unicopia.entity.player.Pony; import com.minelittlepony.unicopia.util.MagicalDamageSource; import net.minecraft.block.Blocks; @@ -156,7 +156,7 @@ public class CuccoonEntity extends LivingEntity implements IMagicals, InAnimate if (player.canConsume(false) || player.getHealth() < player.getHealthMaximum()) { DamageSource d = MagicalDamageSource.causePlayerDamage("feed", player); - SpeciesList.instance().getPlayer(player).spawnParticles(UParticles.CHANGELING_MAGIC, 7); + Pony.of(player).spawnParticles(UParticles.CHANGELING_MAGIC, 7); if (passenger instanceof LivingEntity) { if (player.hasStatusEffect(StatusEffects.NAUSEA)) { diff --git a/src/main/java/com/minelittlepony/unicopia/entity/ai/FollowCasterGoal.java b/src/main/java/com/minelittlepony/unicopia/entity/FollowCasterGoal.java similarity index 94% rename from src/main/java/com/minelittlepony/unicopia/entity/ai/FollowCasterGoal.java rename to src/main/java/com/minelittlepony/unicopia/entity/FollowCasterGoal.java index 7eeb0d47..3de32b71 100644 --- a/src/main/java/com/minelittlepony/unicopia/entity/ai/FollowCasterGoal.java +++ b/src/main/java/com/minelittlepony/unicopia/entity/FollowCasterGoal.java @@ -1,8 +1,8 @@ -package com.minelittlepony.unicopia.entity.ai; +package com.minelittlepony.unicopia.entity; import java.util.EnumSet; -import com.minelittlepony.unicopia.magic.ICaster; +import com.minelittlepony.unicopia.magic.Caster; import net.minecraft.block.BlockState; import net.minecraft.entity.LivingEntity; @@ -19,7 +19,7 @@ import net.minecraft.world.ViewableWorld; public class FollowCasterGoal extends Goal { - protected final ICaster caster; + protected final Caster caster; protected final MobEntity entity; @@ -38,7 +38,7 @@ public class FollowCasterGoal extends Goal { private float oldWaterCost; - public FollowCasterGoal(ICaster caster, double followSpeed, float minDist, float maxDist) { + public FollowCasterGoal(Caster caster, double followSpeed, float minDist, float maxDist) { this.caster = caster; this.entity = (MobEntity)caster.getEntity(); diff --git a/src/main/java/com/minelittlepony/unicopia/entity/LivingEntityCapabilities.java b/src/main/java/com/minelittlepony/unicopia/entity/LivingEntityCapabilities.java index 4ae627a7..d1fa2f03 100644 --- a/src/main/java/com/minelittlepony/unicopia/entity/LivingEntityCapabilities.java +++ b/src/main/java/com/minelittlepony/unicopia/entity/LivingEntityCapabilities.java @@ -2,10 +2,10 @@ package com.minelittlepony.unicopia.entity; import com.minelittlepony.unicopia.Race; import com.minelittlepony.unicopia.magic.Affinity; -import com.minelittlepony.unicopia.magic.IAffine; -import com.minelittlepony.unicopia.magic.IAttachedEffect; -import com.minelittlepony.unicopia.magic.ICaster; -import com.minelittlepony.unicopia.magic.IMagicEffect; +import com.minelittlepony.unicopia.magic.Affine; +import com.minelittlepony.unicopia.magic.AttachedMagicEffect; +import com.minelittlepony.unicopia.magic.Caster; +import com.minelittlepony.unicopia.magic.MagicEffect; import com.minelittlepony.unicopia.magic.spell.SpellRegistry; import com.minelittlepony.unicopia.network.EffectSync; @@ -15,7 +15,7 @@ import net.minecraft.entity.data.TrackedData; import net.minecraft.entity.data.TrackedDataHandlerRegistry; import net.minecraft.nbt.CompoundTag; -public class LivingEntityCapabilities implements RaceContainer, ICaster { +public class LivingEntityCapabilities implements RaceContainer, Caster { private static final TrackedData EFFECT = DataTracker.registerData(LivingEntity.class, TrackedDataHandlerRegistry.TAG_COMPOUND); @@ -41,12 +41,12 @@ public class LivingEntityCapabilities implements RaceContainer, IC } @Override - public void setEffect(IMagicEffect effect) { + public void setEffect(MagicEffect effect) { effectDelegate.set(effect); } @Override - public T getEffect(Class type, boolean update) { + public T getEffect(Class type, boolean update) { return effectDelegate.get(type, update); } @@ -58,7 +58,7 @@ public class LivingEntityCapabilities implements RaceContainer, IC @Override public void onUpdate() { if (hasEffect()) { - IAttachedEffect effect = getEffect(IAttachedEffect.class, true); + AttachedMagicEffect effect = getEffect(AttachedMagicEffect.class, true); if (effect != null) { if (entity.getEntityWorld().isClient()) { @@ -98,15 +98,15 @@ public class LivingEntityCapabilities implements RaceContainer, IC @Override public Affinity getAffinity() { - if (getOwner() instanceof IAffine) { - return ((IAffine)getOwner()).getAffinity(); + if (getOwner() instanceof Affine) { + return ((Affine)getOwner()).getAffinity(); } return Affinity.NEUTRAL; } @Override public void toNBT(CompoundTag compound) { - IMagicEffect effect = getEffect(); + MagicEffect effect = getEffect(); if (effect != null) { compound.put("effect", SpellRegistry.instance().serializeEffectToNBT(effect)); diff --git a/src/main/java/com/minelittlepony/unicopia/entity/IEntity.java b/src/main/java/com/minelittlepony/unicopia/entity/Ponylike.java similarity index 71% rename from src/main/java/com/minelittlepony/unicopia/entity/IEntity.java rename to src/main/java/com/minelittlepony/unicopia/entity/Ponylike.java index 8a7575d3..b8dc64b5 100644 --- a/src/main/java/com/minelittlepony/unicopia/entity/IEntity.java +++ b/src/main/java/com/minelittlepony/unicopia/entity/Ponylike.java @@ -1,12 +1,16 @@ package com.minelittlepony.unicopia.entity; -import com.minelittlepony.unicopia.Race; -import com.minelittlepony.unicopia.util.InbtSerialisable; +import javax.annotation.Nullable; +import com.minelittlepony.unicopia.Race; +import com.minelittlepony.unicopia.ducks.PonyContainer; +import com.minelittlepony.unicopia.util.NbtSerialisable; + +import net.minecraft.entity.Entity; import net.minecraft.entity.projectile.ProjectileEntity; import net.minecraft.item.ItemStack; -public interface IEntity extends InbtSerialisable, Updatable { +public interface Ponylike extends NbtSerialisable, Updatable { Race getSpecies(); void setSpecies(Race race); @@ -56,4 +60,11 @@ public interface IEntity extends InbtSerialisable, Updatable { default void onJump() { } + + @Nullable + static T of(Entity entity) { + return PonyContainer.of(entity) + .map(PonyContainer::get) + .orElse(null); + } } diff --git a/src/main/java/com/minelittlepony/unicopia/entity/ProjectileEntity.java b/src/main/java/com/minelittlepony/unicopia/entity/ProjectileEntity.java index 153e674d..acaefb75 100644 --- a/src/main/java/com/minelittlepony/unicopia/entity/ProjectileEntity.java +++ b/src/main/java/com/minelittlepony/unicopia/entity/ProjectileEntity.java @@ -3,14 +3,14 @@ package com.minelittlepony.unicopia.entity; import java.util.UUID; import com.minelittlepony.unicopia.magic.Affinity; -import com.minelittlepony.unicopia.magic.ICaster; -import com.minelittlepony.unicopia.magic.IMagicEffect; -import com.minelittlepony.unicopia.magic.ITossedEffect; +import com.minelittlepony.unicopia.magic.Caster; +import com.minelittlepony.unicopia.magic.MagicEffect; +import com.minelittlepony.unicopia.magic.TossedMagicEffect; import com.minelittlepony.unicopia.magic.spell.SpellRegistry; import com.minelittlepony.unicopia.network.EffectSync; -import com.minelittlepony.unicopia.util.projectile.IAdvancedProjectile; -import com.minelittlepony.unicopia.util.projectile.ITossable; -import com.minelittlepony.unicopia.util.projectile.ITossableItem; +import com.minelittlepony.unicopia.util.projectile.AdvancedProjectile; +import com.minelittlepony.unicopia.util.projectile.Tossable; +import com.minelittlepony.unicopia.util.projectile.TossableItem; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityType; @@ -39,7 +39,7 @@ import net.minecraft.world.World; * * Can also carry a spell if needed. */ -public class ProjectileEntity extends ThrownItemEntity implements IMagicals, IAdvancedProjectile, ICaster { +public class ProjectileEntity extends ThrownItemEntity implements IMagicals, AdvancedProjectile, Caster { private static final TrackedData DAMAGE = DataTracker.registerData(ProjectileEntity.class, TrackedDataHandlerRegistry.FLOAT); private static final TrackedData HYDROPHOBIC = DataTracker.registerData(ProjectileEntity.class, TrackedDataHandlerRegistry.BOOLEAN); @@ -116,12 +116,12 @@ public class ProjectileEntity extends ThrownItemEntity implements IMagicals, IAd } @Override - public void setEffect(ITossedEffect effect) { - setEffect((IMagicEffect)effect); + public void setEffect(TossedMagicEffect effect) { + setEffect((MagicEffect)effect); } @Override - public void setEffect(IMagicEffect effect) { + public void setEffect(MagicEffect effect) { effectDelegate.set(effect); if (effect != null) { @@ -130,7 +130,7 @@ public class ProjectileEntity extends ThrownItemEntity implements IMagicals, IAd } @Override - public T getEffect(Class type, boolean update) { + public T getEffect(Class type, boolean update) { return effectDelegate.get(type, update); } @@ -260,15 +260,15 @@ public class ProjectileEntity extends ThrownItemEntity implements IMagicals, IAd protected void onHitBlock(BlockHitResult hit) { Item item = getItem().getItem(); - if (item instanceof ITossableItem) { - ((ITossableItem)item).onImpact(this, hit.getBlockPos(), world.getBlockState(hit.getBlockPos())); + if (item instanceof TossableItem) { + ((TossableItem)item).onImpact(this, hit.getBlockPos(), world.getBlockState(hit.getBlockPos())); } if (hasEffect()) { - IMagicEffect effect = getEffect(); + MagicEffect effect = getEffect(); - if (effect instanceof ITossable) { - ((ITossable)effect).onImpact(this, hit.getBlockPos(), world.getBlockState(hit.getBlockPos())); + if (effect instanceof Tossable) { + ((Tossable)effect).onImpact(this, hit.getBlockPos(), world.getBlockState(hit.getBlockPos())); } } } @@ -276,7 +276,7 @@ public class ProjectileEntity extends ThrownItemEntity implements IMagicals, IAd protected void onHitEntity(EntityHitResult hit) { Entity entity = hit.getEntity(); - if (entity instanceof IAdvancedProjectile) { + if (entity instanceof AdvancedProjectile) { return; } diff --git a/src/main/java/com/minelittlepony/unicopia/entity/RaceContainer.java b/src/main/java/com/minelittlepony/unicopia/entity/RaceContainer.java index 5acda09e..458a07b0 100644 --- a/src/main/java/com/minelittlepony/unicopia/entity/RaceContainer.java +++ b/src/main/java/com/minelittlepony/unicopia/entity/RaceContainer.java @@ -7,6 +7,6 @@ import net.minecraft.entity.Entity; * * @param The type of owner */ -public interface RaceContainer extends IEntity { +public interface RaceContainer extends Ponylike { } diff --git a/src/main/java/com/minelittlepony/unicopia/entity/SpearEntity.java b/src/main/java/com/minelittlepony/unicopia/entity/SpearEntity.java index c2b5abba..7fc72204 100644 --- a/src/main/java/com/minelittlepony/unicopia/entity/SpearEntity.java +++ b/src/main/java/com/minelittlepony/unicopia/entity/SpearEntity.java @@ -1,8 +1,8 @@ package com.minelittlepony.unicopia.entity; -import com.minelittlepony.unicopia.magic.ITossedEffect; +import com.minelittlepony.unicopia.magic.TossedMagicEffect; import com.minelittlepony.unicopia.util.MagicalDamageSource; -import com.minelittlepony.unicopia.util.projectile.IAdvancedProjectile; +import com.minelittlepony.unicopia.util.projectile.AdvancedProjectile; import net.minecraft.client.network.packet.GameStateChangeS2CPacket; import net.minecraft.enchantment.EnchantmentHelper; @@ -25,7 +25,7 @@ import net.minecraft.util.math.MathHelper; import net.minecraft.util.math.Vec3d; import net.minecraft.world.World; -public class SpearEntity extends ArrowEntity implements IAdvancedProjectile { +public class SpearEntity extends ArrowEntity implements AdvancedProjectile { private static final TrackedData ITEM = DataTracker.registerData(SpearEntity.class, TrackedDataHandlerRegistry.ITEM_STACK); @@ -184,6 +184,6 @@ public class SpearEntity extends ArrowEntity implements IAdvancedProjectile { } @Override - public void setEffect(ITossedEffect effect) { + public void setEffect(TossedMagicEffect effect) { } } diff --git a/src/main/java/com/minelittlepony/unicopia/entity/SpellcastEntity.java b/src/main/java/com/minelittlepony/unicopia/entity/SpellcastEntity.java index 3b0ea9e6..6083cb2c 100644 --- a/src/main/java/com/minelittlepony/unicopia/entity/SpellcastEntity.java +++ b/src/main/java/com/minelittlepony/unicopia/entity/SpellcastEntity.java @@ -9,9 +9,9 @@ import com.minelittlepony.unicopia.EquinePredicates; import com.minelittlepony.unicopia.Race; import com.minelittlepony.unicopia.item.UItems; import com.minelittlepony.unicopia.magic.Affinity; -import com.minelittlepony.unicopia.magic.ICastable; -import com.minelittlepony.unicopia.magic.ICaster; -import com.minelittlepony.unicopia.magic.IMagicEffect; +import com.minelittlepony.unicopia.magic.Castable; +import com.minelittlepony.unicopia.magic.Caster; +import com.minelittlepony.unicopia.magic.MagicEffect; import com.minelittlepony.unicopia.magic.spell.SpellRegistry; import com.minelittlepony.unicopia.network.EffectSync; @@ -43,7 +43,7 @@ import net.minecraft.world.GameRules; import net.minecraft.world.World; import net.minecraft.world.explosion.Explosion.DestructionType; -public class SpellcastEntity extends MobEntityWithAi implements IMagicals, ICaster, InAnimate { +public class SpellcastEntity extends MobEntityWithAi implements IMagicals, Caster, InAnimate { private LivingEntity owner = null; @@ -99,7 +99,7 @@ public class SpellcastEntity extends MobEntityWithAi implements IMagicals, ICast } @Override - public void setEffect(@Nullable IMagicEffect effect) { + public void setEffect(@Nullable MagicEffect effect) { effectDelegate.set(effect); if (effect != null) { @@ -114,7 +114,7 @@ public class SpellcastEntity extends MobEntityWithAi implements IMagicals, ICast @Nullable @Override - public T getEffect(@Nullable Class type, boolean update) { + public T getEffect(@Nullable Class type, boolean update) { return effectDelegate.get(type, update); } @@ -294,8 +294,8 @@ public class SpellcastEntity extends MobEntityWithAi implements IMagicals, ICast ItemStack currentItem = player.getStackInHand(Hand.MAIN_HAND); if (currentItem != null - && currentItem.getItem() instanceof ICastable - && ((ICastable)currentItem.getItem()).canFeed(this, currentItem) + && currentItem.getItem() instanceof Castable + && ((Castable)currentItem.getItem()).canFeed(this, currentItem) && tryLevelUp(currentItem)) { if (!player.abilities.creativeMode) { diff --git a/src/main/java/com/minelittlepony/unicopia/entity/player/AbilityDelegate.java b/src/main/java/com/minelittlepony/unicopia/entity/player/AbilityDelegate.java index 3fec004e..e6fc3d21 100644 --- a/src/main/java/com/minelittlepony/unicopia/entity/player/AbilityDelegate.java +++ b/src/main/java/com/minelittlepony/unicopia/entity/player/AbilityDelegate.java @@ -10,13 +10,13 @@ import com.minelittlepony.unicopia.ability.Ability; import com.minelittlepony.unicopia.ability.Abilities; import com.minelittlepony.unicopia.entity.Updatable; import com.minelittlepony.unicopia.network.MsgPlayerAbility; -import com.minelittlepony.unicopia.util.InbtSerialisable; +import com.minelittlepony.unicopia.util.NbtSerialisable; import net.minecraft.nbt.CompoundTag; -class AbilityDelegate implements AbilityReceiver, Updatable, InbtSerialisable { +class AbilityDelegate implements AbilityReceiver, Updatable, NbtSerialisable { - private final IPlayer player; + private final Pony player; /** * Ticks of warmup before an ability is triggered. @@ -36,7 +36,7 @@ class AbilityDelegate implements AbilityReceiver, Updatable, InbtSerialisable { @Nullable private Ability activeAbility = null; - public AbilityDelegate(IPlayer player) { + public AbilityDelegate(Pony player) { this.player = player; } diff --git a/src/main/java/com/minelittlepony/unicopia/entity/player/GravityDelegate.java b/src/main/java/com/minelittlepony/unicopia/entity/player/GravityDelegate.java index 2848a2b4..7cdac83a 100644 --- a/src/main/java/com/minelittlepony/unicopia/entity/player/GravityDelegate.java +++ b/src/main/java/com/minelittlepony/unicopia/entity/player/GravityDelegate.java @@ -9,9 +9,9 @@ import com.minelittlepony.unicopia.ability.FlightPredicate; import com.minelittlepony.unicopia.ability.HeightPredicate; import com.minelittlepony.unicopia.entity.FlightControl; import com.minelittlepony.unicopia.entity.Updatable; -import com.minelittlepony.unicopia.magic.IMagicEffect; +import com.minelittlepony.unicopia.magic.MagicEffect; import com.minelittlepony.unicopia.mixin.MixinEntity; -import com.minelittlepony.unicopia.util.InbtSerialisable; +import com.minelittlepony.unicopia.util.NbtSerialisable; import com.minelittlepony.unicopia.util.MutableVector; import net.minecraft.entity.Entity; @@ -24,9 +24,9 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.MathHelper; import net.minecraft.util.math.Vec3d; -public class GravityDelegate implements Updatable, FlightControl, InbtSerialisable, FlightPredicate, HeightPredicate { +public class GravityDelegate implements Updatable, FlightControl, NbtSerialisable, FlightPredicate, HeightPredicate { - private final IPlayer player; + private final Pony player; private static final float MAXIMUM_FLIGHT_EXPERIENCE = 1500; @@ -41,18 +41,18 @@ public class GravityDelegate implements Updatable, FlightControl, InbtSerialisab private float gravity = 0; - public GravityDelegate(IPlayer player) { + public GravityDelegate(Pony player) { this.player = player; } @Override - public boolean checkCanFly(IPlayer player) { + public boolean checkCanFly(Pony player) { if (player.getOwner().abilities.creativeMode) { return true; } if (player.hasEffect()) { - IMagicEffect effect = player.getEffect(); + MagicEffect effect = player.getEffect(); if (!effect.isDead() && effect instanceof FlightPredicate) { return ((FlightPredicate)effect).checkCanFly(player); } @@ -61,14 +61,14 @@ public class GravityDelegate implements Updatable, FlightControl, InbtSerialisab return player.getSpecies().canFly(); } - protected boolean isRainboom(IPlayer player) { + protected boolean isRainboom(Pony player) { return Math.sqrt(getHorizontalMotion(player.getOwner())) > 0.4F; } @Override - public float getTargetEyeHeight(IPlayer player) { + public float getTargetEyeHeight(Pony player) { if (player.hasEffect()) { - IMagicEffect effect = player.getEffect(); + MagicEffect effect = player.getEffect(); if (!effect.isDead() && effect instanceof HeightPredicate) { float val = ((HeightPredicate)effect).getTargetEyeHeight(player); if (val > 0) { @@ -85,9 +85,9 @@ public class GravityDelegate implements Updatable, FlightControl, InbtSerialisab } @Override - public float getTargetBodyHeight(IPlayer player) { + public float getTargetBodyHeight(Pony player) { if (player.hasEffect()) { - IMagicEffect effect = player.getEffect(); + MagicEffect effect = player.getEffect(); if (!effect.isDead() && effect instanceof HeightPredicate) { float val = ((HeightPredicate)effect).getTargetBodyHeight(player); if (val > 0) { diff --git a/src/main/java/com/minelittlepony/unicopia/entity/player/PlayerCamera.java b/src/main/java/com/minelittlepony/unicopia/entity/player/PlayerCamera.java index 5d234c43..2c40682f 100644 --- a/src/main/java/com/minelittlepony/unicopia/entity/player/PlayerCamera.java +++ b/src/main/java/com/minelittlepony/unicopia/entity/player/PlayerCamera.java @@ -6,11 +6,11 @@ import net.minecraft.util.math.Vec3d; public class PlayerCamera extends MotionCompositor { - private final IPlayer player; + private final Pony player; private double baseRoll = 0; - public PlayerCamera(IPlayer player) { + public PlayerCamera(Pony player) { this.player = player; } diff --git a/src/main/java/com/minelittlepony/unicopia/entity/player/PlayerCapabilities.java b/src/main/java/com/minelittlepony/unicopia/entity/player/PlayerImpl.java similarity index 89% rename from src/main/java/com/minelittlepony/unicopia/entity/player/PlayerCapabilities.java rename to src/main/java/com/minelittlepony/unicopia/entity/player/PlayerImpl.java index e78e5bab..af0e4f96 100644 --- a/src/main/java/com/minelittlepony/unicopia/entity/player/PlayerCapabilities.java +++ b/src/main/java/com/minelittlepony/unicopia/entity/player/PlayerImpl.java @@ -1,23 +1,20 @@ package com.minelittlepony.unicopia.entity.player; -import java.util.Map; - import javax.annotation.Nullable; import com.minelittlepony.unicopia.Race; -import com.minelittlepony.unicopia.SpeciesList; import com.minelittlepony.unicopia.UEffects; import com.minelittlepony.unicopia.UTags; import com.minelittlepony.unicopia.UnicopiaCore; import com.minelittlepony.unicopia.ability.AbilityReceiver; -import com.minelittlepony.unicopia.enchanting.PageState; +import com.minelittlepony.unicopia.enchanting.PageOwner; import com.minelittlepony.unicopia.entity.FlightControl; import com.minelittlepony.unicopia.entity.Trap; import com.minelittlepony.unicopia.magic.Affinity; -import com.minelittlepony.unicopia.magic.IAttachedEffect; -import com.minelittlepony.unicopia.magic.IHeldEffect; -import com.minelittlepony.unicopia.magic.IMagicEffect; -import com.minelittlepony.unicopia.magic.IMagicalItem; +import com.minelittlepony.unicopia.magic.AttachedMagicEffect; +import com.minelittlepony.unicopia.magic.HeldMagicEffect; +import com.minelittlepony.unicopia.magic.MagicEffect; +import com.minelittlepony.unicopia.magic.MagicalItem; import com.minelittlepony.unicopia.magic.spell.SpellRegistry; import com.minelittlepony.unicopia.network.EffectSync; import com.minelittlepony.unicopia.network.MsgPlayerCapabilities; @@ -42,13 +39,12 @@ import net.minecraft.nbt.CompoundTag; import net.minecraft.server.network.ServerPlayerEntity; import net.minecraft.text.TranslatableText; import net.minecraft.util.Hand; -import net.minecraft.util.Identifier; import net.minecraft.util.Unit; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Vec3d; import net.minecraft.world.Difficulty; -public class PlayerCapabilities implements IPlayer { +public class PlayerImpl implements Pony { private static final TrackedData PLAYER_RACE = DataTracker.registerData(PlayerEntity.class, TrackedDataHandlerRegistry.INTEGER); private static final TrackedData ENERGY = DataTracker.registerData(PlayerEntity.class, TrackedDataHandlerRegistry.FLOAT); @@ -81,7 +77,7 @@ public class PlayerCapabilities implements IPlayer { private boolean invisible = false; - public PlayerCapabilities(PlayerEntity player) { + public PlayerImpl(PlayerEntity player) { this.entity = player; player.getDataTracker().startTracking(PLAYER_RACE, Race.EARTH.ordinal()); @@ -102,7 +98,7 @@ public class PlayerCapabilities implements IPlayer { @Override public void setSpecies(Race race) { - race = SpeciesList.instance().validate(race, entity); + race = race.validate(entity); entity.getDataTracker().set(PLAYER_RACE, race.ordinal()); @@ -145,7 +141,7 @@ public class PlayerCapabilities implements IPlayer { @Nullable @Override - public IHeldEffect getHeldEffect(ItemStack stack) { + public HeldMagicEffect getHeldEffect(ItemStack stack) { if (!getSpecies().canCast()) { heldEffectDelegate.set(null); @@ -153,7 +149,7 @@ public class PlayerCapabilities implements IPlayer { return null; } - IHeldEffect heldEffect = heldEffectDelegate.get(IHeldEffect.class, true); + HeldMagicEffect heldEffect = heldEffectDelegate.get(HeldMagicEffect.class, true); if (heldEffect == null || !heldEffect.getName().equals(SpellRegistry.getKeyFromStack(stack))) { heldEffect = SpellRegistry.instance().getHeldFrom(stack); @@ -193,6 +189,11 @@ public class PlayerCapabilities implements IPlayer { return powers; } + @Override + public PageOwner getPages() { + return pageStates; + } + @Override public GravityDelegate getGravity() { return gravity; @@ -247,7 +248,7 @@ public class PlayerCapabilities implements IPlayer { gravity.onUpdate(); if (hasEffect()) { - IAttachedEffect effect = getEffect(IAttachedEffect.class, true); + AttachedMagicEffect effect = getEffect(AttachedMagicEffect.class, true); if (effect != null) { if (entity.getEntityWorld().isClient()) { @@ -262,10 +263,10 @@ public class PlayerCapabilities implements IPlayer { ItemStack stack = entity.getStackInHand(Hand.MAIN_HAND); - IHeldEffect effect = getHeldEffect(stack); + HeldMagicEffect effect = getHeldEffect(stack); if (effect != null) { - Affinity affinity = stack.getItem() instanceof IMagicalItem ? ((IMagicalItem)stack.getItem()).getAffinity(stack) : Affinity.NEUTRAL; + Affinity affinity = stack.getItem() instanceof MagicalItem ? ((MagicalItem)stack.getItem()).getAffinity(stack) : Affinity.NEUTRAL; effect.updateInHand(this, affinity); } @@ -299,7 +300,7 @@ public class PlayerCapabilities implements IPlayer { @Override public boolean onProjectileImpact(ProjectileEntity projectile) { if (hasEffect()) { - IMagicEffect effect = getEffect(); + MagicEffect effect = getEffect(); if (!effect.isDead() && effect.handleProjectileImpact(projectile)) { return true; } @@ -346,7 +347,7 @@ public class PlayerCapabilities implements IPlayer { return Either.left(SleepFailureReason.OTHER_PROBLEM); } - if (findAllSpellsInRange(10).anyMatch(c -> c instanceof IPlayer && ((IPlayer)c).getInventory().matches(UTags.CURSED_ARTEFACTS))) { + if (findAllSpellsInRange(10).anyMatch(c -> c instanceof Pony && ((Pony)c).getInventory().matches(UTags.CURSED_ARTEFACTS))) { return Either.left(SleepFailureReason.NOT_SAFE); } @@ -391,7 +392,7 @@ public class PlayerCapabilities implements IPlayer { compound.put("powers", powers.toNBT()); compound.put("gravity", gravity.toNBT()); - IMagicEffect effect = getEffect(); + MagicEffect effect = getEffect(); if (effect != null) { compound.put("effect", SpellRegistry.instance().serializeEffectToNBT(effect)); @@ -415,13 +416,13 @@ public class PlayerCapabilities implements IPlayer { } @Override - public void copyFrom(IPlayer oldPlayer) { + public void copyFrom(Pony oldPlayer) { setEffect(oldPlayer.getEffect()); setSpecies(oldPlayer.getSpecies()); } @Override - public void setEffect(@Nullable IMagicEffect effect) { + public void setEffect(@Nullable MagicEffect effect) { effectDelegate.set(effect); sendCapabilities(true); @@ -434,7 +435,7 @@ public class PlayerCapabilities implements IPlayer { @Nullable @Override - public T getEffect(@Nullable Class type, boolean update) { + public T getEffect(@Nullable Class type, boolean update) { return effectDelegate.get(type, update); } @@ -456,9 +457,4 @@ public class PlayerCapabilities implements IPlayer { public void setCurrentLevel(int level) { } - @Override - public Map getPageStates() { - return pageStates.getPageStates(); - } - } 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 07406578..cf9bdb66 100644 --- a/src/main/java/com/minelittlepony/unicopia/entity/player/PlayerInventory.java +++ b/src/main/java/com/minelittlepony/unicopia/entity/player/PlayerInventory.java @@ -5,9 +5,9 @@ import java.util.Map; import com.google.common.collect.Maps; import com.minelittlepony.unicopia.entity.Updatable; -import com.minelittlepony.unicopia.magic.IDependable; -import com.minelittlepony.unicopia.magic.IMagicalItem; -import com.minelittlepony.unicopia.util.InbtSerialisable; +import com.minelittlepony.unicopia.magic.AddictiveMagicalItem; +import com.minelittlepony.unicopia.magic.MagicalItem; +import com.minelittlepony.unicopia.util.NbtSerialisable; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; @@ -17,12 +17,12 @@ import net.minecraft.tag.Tag; import net.minecraft.util.Identifier; import net.minecraft.util.registry.Registry; -public class PlayerInventory implements Updatable, InbtSerialisable { - private final Map dependencies = Maps.newHashMap(); +public class PlayerInventory implements Updatable, NbtSerialisable { + private final Map dependencies = Maps.newHashMap(); - private final IPlayer player; + private final Pony player; - PlayerInventory(IPlayer player) { + PlayerInventory(Pony player) { this.player = player; } @@ -32,7 +32,7 @@ public class PlayerInventory implements Updatable, InbtSerialisable { * * Bad things might happen when it's removed. */ - public synchronized void enforceDependency(IDependable item) { + public synchronized void enforceDependency(AddictiveMagicalItem item) { if (dependencies.containsKey(item)) { dependencies.get(item).reinforce(); } else { @@ -43,7 +43,7 @@ public class PlayerInventory implements Updatable, InbtSerialisable { /** * Returns how long the player has been wearing the given item. */ - public synchronized int getTicksAttached(IDependable item) { + public synchronized int getTicksAttached(AddictiveMagicalItem item) { if (dependencies.containsKey(item)) { return dependencies.get(item).ticksAttached; } @@ -56,7 +56,7 @@ public class PlayerInventory implements Updatable, InbtSerialisable { * * Zero means not dependent at all / not wearing. */ - public synchronized float getNeedfulness(IDependable item) { + public synchronized float getNeedfulness(AddictiveMagicalItem item) { if (dependencies.containsKey(item)) { return dependencies.get(item).needfulness; } @@ -67,10 +67,10 @@ public class PlayerInventory implements Updatable, InbtSerialisable { @Override public synchronized void onUpdate() { - 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(); @@ -85,7 +85,7 @@ public class PlayerInventory implements Updatable, InbtSerialisable { /** * Checks if the player is wearing the specified magical artifact. */ - public boolean isWearing(IMagicalItem item) { + public boolean isWearing(MagicalItem item) { for (ItemStack i : player.getOwner().getArmorItems()) { if (!i.isEmpty() && i.getItem() == item) { return true; @@ -131,18 +131,18 @@ public class PlayerInventory implements Updatable, InbtSerialisable { }); } - class Entry implements Updatable, InbtSerialisable { + class Entry implements Updatable, NbtSerialisable { int ticksAttached = 0; float needfulness = 1; - IDependable item; + AddictiveMagicalItem item; Entry() { } - Entry(IDependable key) { + Entry(AddictiveMagicalItem key) { this.item = key; } @@ -175,7 +175,7 @@ public class PlayerInventory implements Updatable, InbtSerialisable { Item item = Registry.ITEM.get(new Identifier(compound.getString("item"))); - this.item = item instanceof IDependable ? (IDependable)item : null; + this.item = item instanceof AddictiveMagicalItem ? (AddictiveMagicalItem)item : null; } } } diff --git a/src/main/java/com/minelittlepony/unicopia/entity/player/PlayerPageStats.java b/src/main/java/com/minelittlepony/unicopia/entity/player/PlayerPageStats.java index 7602729a..95fc941b 100644 --- a/src/main/java/com/minelittlepony/unicopia/entity/player/PlayerPageStats.java +++ b/src/main/java/com/minelittlepony/unicopia/entity/player/PlayerPageStats.java @@ -3,14 +3,14 @@ package com.minelittlepony.unicopia.entity.player; import java.util.HashMap; import java.util.Map; -import com.minelittlepony.unicopia.enchanting.IPageOwner; +import com.minelittlepony.unicopia.enchanting.PageOwner; import com.minelittlepony.unicopia.enchanting.PageState; -import com.minelittlepony.unicopia.util.InbtSerialisable; +import com.minelittlepony.unicopia.util.NbtSerialisable; import net.minecraft.nbt.CompoundTag; import net.minecraft.util.Identifier; -public class PlayerPageStats implements InbtSerialisable, IPageOwner { +public class PlayerPageStats implements NbtSerialisable, PageOwner { private final Map pageStates = new HashMap<>(); @Override @@ -23,7 +23,6 @@ public class PlayerPageStats implements InbtSerialisable, IPageOwner { } - @Override public void toNBT(CompoundTag compound) { if (!pageStates.isEmpty()) { diff --git a/src/main/java/com/minelittlepony/unicopia/entity/player/IPlayer.java b/src/main/java/com/minelittlepony/unicopia/entity/player/Pony.java similarity index 85% rename from src/main/java/com/minelittlepony/unicopia/entity/player/IPlayer.java rename to src/main/java/com/minelittlepony/unicopia/entity/player/Pony.java index a5e59fd6..0154858c 100644 --- a/src/main/java/com/minelittlepony/unicopia/entity/player/IPlayer.java +++ b/src/main/java/com/minelittlepony/unicopia/entity/player/Pony.java @@ -4,11 +4,12 @@ import javax.annotation.Nullable; import com.minelittlepony.unicopia.InteractionManager; import com.minelittlepony.unicopia.ability.AbilityReceiver; -import com.minelittlepony.unicopia.enchanting.IPageOwner; +import com.minelittlepony.unicopia.enchanting.PageOwner; import com.minelittlepony.unicopia.entity.FlightControl; +import com.minelittlepony.unicopia.entity.Ponylike; import com.minelittlepony.unicopia.entity.RaceContainer; -import com.minelittlepony.unicopia.magic.ICaster; -import com.minelittlepony.unicopia.magic.IHeldEffect; +import com.minelittlepony.unicopia.magic.Caster; +import com.minelittlepony.unicopia.magic.HeldMagicEffect; import com.minelittlepony.unicopia.network.Transmittable; import com.minelittlepony.util.IInterpolator; import com.mojang.authlib.GameProfile; @@ -24,7 +25,7 @@ import net.minecraft.util.math.BlockPos; * * This is the core of unicopia. */ -public interface IPlayer extends ICaster, RaceContainer, Transmittable, IPageOwner { +public interface Pony extends Caster, RaceContainer, Transmittable { /** * Gets the player's magical abilities delegate responsible for all spell casting and persisting/updating. @@ -56,6 +57,8 @@ public interface IPlayer extends ICaster, RaceContainer, RaceContainer, RaceContainer, RaceContainerof(player); + } + static boolean equal(GameProfile one, GameProfile two) { return one == two || (one != null && two != null && one.getId().equals(two.getId())); } diff --git a/src/main/java/com/minelittlepony/unicopia/gas/CloudBlock.java b/src/main/java/com/minelittlepony/unicopia/gas/CloudBlock.java index 2c7de267..57a3513f 100644 --- a/src/main/java/com/minelittlepony/unicopia/gas/CloudBlock.java +++ b/src/main/java/com/minelittlepony/unicopia/gas/CloudBlock.java @@ -3,8 +3,8 @@ package com.minelittlepony.unicopia.gas; import java.util.Random; import com.minelittlepony.unicopia.CloudType; -import com.minelittlepony.unicopia.SpeciesList; import com.minelittlepony.unicopia.UBlocks; +import com.minelittlepony.unicopia.entity.player.Pony; import com.minelittlepony.unicopia.item.MossItem; import com.minelittlepony.unicopia.util.HoeUtil; @@ -116,6 +116,6 @@ public class CloudBlock extends Block implements Gas, HoeUtil.Tillable { @Override public boolean canTill(ItemUsageContext context) { - return context.getPlayer() == null || SpeciesList.instance().getPlayer(context.getPlayer()).getSpecies().canInteractWithClouds(); + return context.getPlayer() == null || Pony.of(context.getPlayer()).getSpecies().canInteractWithClouds(); } } diff --git a/src/main/java/com/minelittlepony/unicopia/item/AlicornAmuletItem.java b/src/main/java/com/minelittlepony/unicopia/item/AlicornAmuletItem.java index 91a3e6c2..a5eabfd6 100644 --- a/src/main/java/com/minelittlepony/unicopia/item/AlicornAmuletItem.java +++ b/src/main/java/com/minelittlepony/unicopia/item/AlicornAmuletItem.java @@ -6,12 +6,11 @@ import java.util.UUID; import javax.annotation.Nullable; import com.google.common.collect.Multimap; -import com.minelittlepony.unicopia.SpeciesList; import com.minelittlepony.unicopia.ducks.IItemEntity; import com.minelittlepony.unicopia.entity.ItemEntityCapabilities; -import com.minelittlepony.unicopia.entity.player.IPlayer; +import com.minelittlepony.unicopia.entity.player.Pony; import com.minelittlepony.unicopia.magic.Affinity; -import com.minelittlepony.unicopia.magic.IDependable; +import com.minelittlepony.unicopia.magic.AddictiveMagicalItem; import com.minelittlepony.unicopia.util.AwaitTickQueue; import com.minelittlepony.unicopia.util.MagicalDamageSource; import com.minelittlepony.unicopia.util.VecHelper; @@ -48,7 +47,7 @@ import net.minecraft.world.LocalDifficulty; import net.minecraft.world.World; import net.minecraft.world.explosion.Explosion.DestructionType; -public class AlicornAmuletItem extends ArmorItem implements IDependable, ItemEntityCapabilities.TickableItem { +public class AlicornAmuletItem extends ArmorItem implements AddictiveMagicalItem, ItemEntityCapabilities.TickableItem { private static final UUID[] MODIFIERS = new UUID[] { UUID.fromString("845DB27C-C624-495F-8C9F-6020A9A58B6B"), @@ -70,7 +69,7 @@ public class AlicornAmuletItem extends ArmorItem implements IDependable, ItemEnt @Override public ActionResult onGroundTick(IItemEntity item) { - ItemEntity entity = item.getRaceContainer().getOwner(); + ItemEntity entity = item.get().getOwner(); World world = entity.world; @@ -119,7 +118,7 @@ public class AlicornAmuletItem extends ArmorItem implements IDependable, ItemEnt @Override public void appendTooltip(ItemStack stack, @Nullable World world, List tooltip, TooltipContext context) { - IPlayer iplayer = SpeciesList.instance().getPlayer(MinecraftClient.getInstance().player); + Pony iplayer = Pony.of(MinecraftClient.getInstance().player); if (iplayer != null) { int attachedTime = iplayer.getInventory().getTicksAttached(this); @@ -160,7 +159,7 @@ public class AlicornAmuletItem extends ArmorItem implements IDependable, ItemEnt player.getHungerManager().add(1, 0); } - IPlayer iplayer = SpeciesList.instance().getPlayer(player); + Pony iplayer = Pony.of(player); float attachedTime = iplayer.getInventory().getTicksAttached(this); @@ -227,7 +226,7 @@ public class AlicornAmuletItem extends ArmorItem implements IDependable, ItemEnt } @Override - public void onRemoved(IPlayer player, float needfulness) { + public void onRemoved(Pony player, float needfulness) { float attachedTime = player.getInventory().getTicksAttached(this) / 100F; diff --git a/src/main/java/com/minelittlepony/unicopia/item/AppleItem.java b/src/main/java/com/minelittlepony/unicopia/item/AppleItem.java index 987b0a71..7574873f 100644 --- a/src/main/java/com/minelittlepony/unicopia/item/AppleItem.java +++ b/src/main/java/com/minelittlepony/unicopia/item/AppleItem.java @@ -69,7 +69,7 @@ public class AppleItem extends Item implements Toxic, ItemEntityCapabilities.Tic @Override public ActionResult onGroundTick(IItemEntity item) { - ItemEntity entity = item.getRaceContainer().getOwner(); + ItemEntity entity = item.get().getOwner(); if (!entity.removed && item.getAge() > item.getPickupDelay()) { diff --git a/src/main/java/com/minelittlepony/unicopia/item/BagOfHoldingItem.java b/src/main/java/com/minelittlepony/unicopia/item/BagOfHoldingItem.java index f5471d4d..79a6dd06 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.UContainers; import com.minelittlepony.unicopia.container.BagOfHoldingContainer; import com.minelittlepony.unicopia.container.BagOfHoldingInventory; import com.minelittlepony.unicopia.magic.Affinity; -import com.minelittlepony.unicopia.magic.IMagicalItem; +import com.minelittlepony.unicopia.magic.MagicalItem; 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 IMagicalItem { +public class BagOfHoldingItem extends Item implements MagicalItem { public BagOfHoldingItem() { super(new Settings().maxCount(1).group(ItemGroup.TRANSPORTATION)); diff --git a/src/main/java/com/minelittlepony/unicopia/item/CloudPlacerItem.java b/src/main/java/com/minelittlepony/unicopia/item/CloudPlacerItem.java index cb63361e..bd2e2272 100644 --- a/src/main/java/com/minelittlepony/unicopia/item/CloudPlacerItem.java +++ b/src/main/java/com/minelittlepony/unicopia/item/CloudPlacerItem.java @@ -1,7 +1,7 @@ package com.minelittlepony.unicopia.item; import com.minelittlepony.unicopia.entity.CloudEntity; -import com.minelittlepony.unicopia.magic.IDispensable; +import com.minelittlepony.unicopia.magic.Dispensable; import net.minecraft.block.DispenserBlock; import net.minecraft.entity.EntityType; @@ -20,7 +20,7 @@ import net.minecraft.util.math.Position; import net.minecraft.world.RayTraceContext; import net.minecraft.world.World; -public class CloudPlacerItem extends Item implements IDispensable { +public class CloudPlacerItem extends Item implements Dispensable { private final EntityType cloudSupplier; diff --git a/src/main/java/com/minelittlepony/unicopia/item/CursedMagicGemItem.java b/src/main/java/com/minelittlepony/unicopia/item/CursedMagicGemItem.java index 1f01716c..3d45ec6b 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.IDispenceable; -import com.minelittlepony.unicopia.magic.IMagicEffect; +import com.minelittlepony.unicopia.magic.DispenceableMagicEffect; +import com.minelittlepony.unicopia.magic.MagicEffect; import com.minelittlepony.unicopia.util.MagicalDamageSource; import net.minecraft.item.ItemStack; @@ -16,7 +16,7 @@ import net.minecraft.world.explosion.Explosion.DestructionType; public class CursedMagicGemItem extends MagicGemItem { @Override - public CastResult onDispenseSpell(BlockPointer source, ItemStack stack, IDispenceable effect) { + public CastResult onDispenseSpell(BlockPointer source, ItemStack stack, DispenceableMagicEffect effect) { BlockPos pos = source.getBlockPos(); World world = source.getWorld(); @@ -37,7 +37,7 @@ public class CursedMagicGemItem extends MagicGemItem { } @Override - public CastResult onCastSpell(ItemUsageContext context, IMagicEffect effect) { + public CastResult onCastSpell(ItemUsageContext context, MagicEffect 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 e29cb2b5..22521570 100644 --- a/src/main/java/com/minelittlepony/unicopia/item/EnchantedStaffItem.java +++ b/src/main/java/com/minelittlepony/unicopia/item/EnchantedStaffItem.java @@ -6,14 +6,13 @@ import javax.annotation.Nonnull; import javax.annotation.Nullable; import com.minelittlepony.unicopia.EquinePredicates; -import com.minelittlepony.unicopia.SpeciesList; -import com.minelittlepony.unicopia.entity.player.IPlayer; +import com.minelittlepony.unicopia.entity.player.Pony; import com.minelittlepony.unicopia.magic.Affinity; import com.minelittlepony.unicopia.magic.CasterUtils; -import com.minelittlepony.unicopia.magic.IAffine; -import com.minelittlepony.unicopia.magic.ICaster; -import com.minelittlepony.unicopia.magic.ITossedEffect; -import com.minelittlepony.unicopia.util.projectile.ITossableItem; +import com.minelittlepony.unicopia.magic.Affine; +import com.minelittlepony.unicopia.magic.Caster; +import com.minelittlepony.unicopia.magic.TossedMagicEffect; +import com.minelittlepony.unicopia.util.projectile.TossableItem; import net.minecraft.block.BlockState; import net.minecraft.client.item.TooltipContext; @@ -34,12 +33,12 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Vec3d; import net.minecraft.world.World; -public class EnchantedStaffItem extends StaffItem implements IAffine, ITossableItem { +public class EnchantedStaffItem extends StaffItem implements Affine, TossableItem { @Nonnull - private final ITossedEffect effect; + private final TossedMagicEffect effect; - public EnchantedStaffItem(Settings settings, @Nonnull ITossedEffect effect) { + public EnchantedStaffItem(Settings settings, @Nonnull TossedMagicEffect effect) { super(settings.maxDamage(500)); this.effect = effect; @@ -131,7 +130,7 @@ public class EnchantedStaffItem extends StaffItem implements IAffine, ITossableI @Override public void toss(World world, ItemStack stack, PlayerEntity player) { - IPlayer iplayer = SpeciesList.instance().getPlayer(player); + Pony iplayer = Pony.of(player); iplayer.subtractEnergyCost(4); effect.toss(iplayer); @@ -140,7 +139,7 @@ public class EnchantedStaffItem extends StaffItem implements IAffine, ITossableI } @Override - public void onImpact(ICaster caster, BlockPos pos, BlockState state) { + public void onImpact(Caster caster, BlockPos pos, BlockState state) { effect.onImpact(caster, pos, state); } diff --git a/src/main/java/com/minelittlepony/unicopia/item/ExtendedShearsItem.java b/src/main/java/com/minelittlepony/unicopia/item/ExtendedShearsItem.java index 6e8c54e2..734f317e 100644 --- a/src/main/java/com/minelittlepony/unicopia/item/ExtendedShearsItem.java +++ b/src/main/java/com/minelittlepony/unicopia/item/ExtendedShearsItem.java @@ -2,7 +2,7 @@ package com.minelittlepony.unicopia.item; import javax.annotation.Nullable; -import com.minelittlepony.unicopia.magic.IDispensable; +import com.minelittlepony.unicopia.magic.Dispensable; import net.minecraft.block.BlockState; import net.minecraft.block.DispenserBlock; @@ -50,7 +50,7 @@ public class ExtendedShearsItem extends ShearsItem { public ExtendedShearsItem() { super(new Item.Settings().maxDamage(238).group(ItemGroup.TOOLS)); - vanillaDispenserBehaviour = IDispensable.getBehaviorForItem(new ItemStack(Items.SHEARS)); + vanillaDispenserBehaviour = Dispensable.getBehaviorForItem(new ItemStack(Items.SHEARS)); DispenserBlock.registerBehavior(Items.SHEARS, dispenserBehavior); DispenserBlock.registerBehavior(this, dispenserBehavior); } diff --git a/src/main/java/com/minelittlepony/unicopia/item/MagicGemItem.java b/src/main/java/com/minelittlepony/unicopia/item/MagicGemItem.java index 91090c38..03cef3df 100644 --- a/src/main/java/com/minelittlepony/unicopia/item/MagicGemItem.java +++ b/src/main/java/com/minelittlepony/unicopia/item/MagicGemItem.java @@ -8,10 +8,10 @@ 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.ICastable; -import com.minelittlepony.unicopia.magic.IDispenceable; -import com.minelittlepony.unicopia.magic.IMagicEffect; -import com.minelittlepony.unicopia.magic.IUseable; +import com.minelittlepony.unicopia.magic.Castable; +import com.minelittlepony.unicopia.magic.DispenceableMagicEffect; +import com.minelittlepony.unicopia.magic.MagicEffect; +import com.minelittlepony.unicopia.magic.Useable; import com.minelittlepony.unicopia.magic.spell.SpellRegistry; import com.minelittlepony.unicopia.util.VecHelper; @@ -34,7 +34,7 @@ import net.minecraft.util.Rarity; import net.minecraft.util.TypedActionResult; import net.minecraft.world.World; -public class MagicGemItem extends Item implements ICastable { +public class MagicGemItem extends Item implements Castable { public MagicGemItem() { super(new Settings() @@ -50,7 +50,7 @@ public class MagicGemItem extends Item implements ICastable { } @Override - public CastResult onDispenseSpell(BlockPointer source, ItemStack stack, IDispenceable effect) { + public CastResult onDispenseSpell(BlockPointer source, ItemStack stack, DispenceableMagicEffect effect) { Direction facing = source.getBlockState().get(DispenserBlock.FACING); BlockPos pos = source.getBlockPos().offset(facing); @@ -58,9 +58,9 @@ public class MagicGemItem extends Item implements ICastable { } @Override - public CastResult onCastSpell(ItemUsageContext context, IMagicEffect effect) { - if (effect instanceof IUseable) { - return ((IUseable)effect).onUse(context, getAffinity(context.getStack())); + public CastResult onCastSpell(ItemUsageContext context, MagicEffect effect) { + if (effect instanceof Useable) { + return ((Useable)effect).onUse(context, getAffinity(context.getStack())); } return CastResult.PLACE; @@ -83,7 +83,7 @@ public class MagicGemItem extends Item implements ICastable { return ActionResult.FAIL; } - IMagicEffect effect = SpellRegistry.instance().getSpellFrom(stack); + MagicEffect effect = SpellRegistry.instance().getSpellFrom(stack); if (effect == null) { return ActionResult.FAIL; @@ -123,7 +123,7 @@ public class MagicGemItem extends Item implements ICastable { return new TypedActionResult<>(ActionResult.FAIL, stack); } - IUseable effect = SpellRegistry.instance().getUseActionFrom(stack); + Useable effect = SpellRegistry.instance().getUseActionFrom(stack); if (effect != null) { CastResult result = effect.onUse(stack, getAffinity(stack), player, world, VecHelper.getLookedAtEntity(player, 5)); @@ -188,7 +188,7 @@ public class MagicGemItem extends Item implements ICastable { @Override public boolean canFeed(SpellcastEntity entity, ItemStack stack) { - IMagicEffect effect = entity.getEffect(); + MagicEffect effect = entity.getEffect(); return effect != null && entity.getAffinity() == getAffinity() diff --git a/src/main/java/com/minelittlepony/unicopia/item/MossItem.java b/src/main/java/com/minelittlepony/unicopia/item/MossItem.java index 58e2f259..c24ab0aa 100644 --- a/src/main/java/com/minelittlepony/unicopia/item/MossItem.java +++ b/src/main/java/com/minelittlepony/unicopia/item/MossItem.java @@ -2,7 +2,7 @@ package com.minelittlepony.unicopia.item; import javax.annotation.Nullable; -import com.minelittlepony.unicopia.SpeciesList; +import com.minelittlepony.unicopia.entity.player.Pony; import com.minelittlepony.unicopia.toxin.ToxicItem; import com.minelittlepony.unicopia.toxin.Toxicity; import com.minelittlepony.unicopia.util.collection.ReversableStateMapList; @@ -50,7 +50,7 @@ public class MossItem extends ToxicItem { int amount = 1; - if (player != null && SpeciesList.instance().getPlayer(player).getSpecies().canUseEarth()) { + if (player != null && Pony.of(player).getSpecies().canUseEarth()) { amount = world.random.nextInt(4); } diff --git a/src/main/java/com/minelittlepony/unicopia/item/RottenTomatoItem.java b/src/main/java/com/minelittlepony/unicopia/item/RottenTomatoItem.java index 395a4241..3c89994d 100644 --- a/src/main/java/com/minelittlepony/unicopia/item/RottenTomatoItem.java +++ b/src/main/java/com/minelittlepony/unicopia/item/RottenTomatoItem.java @@ -1,8 +1,8 @@ package com.minelittlepony.unicopia.item; -import com.minelittlepony.unicopia.SpeciesList; -import com.minelittlepony.unicopia.magic.ICaster; -import com.minelittlepony.unicopia.util.projectile.ITossableItem; +import com.minelittlepony.unicopia.entity.player.Pony; +import com.minelittlepony.unicopia.magic.Caster; +import com.minelittlepony.unicopia.util.projectile.TossableItem; import net.minecraft.block.BlockState; import net.minecraft.block.Material; @@ -17,7 +17,7 @@ import net.minecraft.util.TypedActionResult; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; -public class RottenTomatoItem extends TomatoItem implements ITossableItem { +public class RottenTomatoItem extends TomatoItem implements TossableItem { public RottenTomatoItem(int hunger, float saturation) { super(hunger, saturation); @@ -40,7 +40,7 @@ public class RottenTomatoItem extends TomatoItem implements ITossableItem { protected boolean isSickening(ItemStack stack, PlayerEntity player) { return canBeThrown(stack) - && !SpeciesList.instance().getPlayer(player).getSpecies().canUseEarth(); + && !Pony.of(player).getSpecies().canUseEarth(); } @Override @@ -61,7 +61,7 @@ public class RottenTomatoItem extends TomatoItem implements ITossableItem { } @Override - public void onImpact(ICaster caster, BlockPos pos, BlockState state) { + public void onImpact(Caster caster, BlockPos pos, BlockState state) { if (caster.isLocal() && state.getMaterial() == Material.GLASS) { caster.getWorld().breakBlock(pos, true); } diff --git a/src/main/java/com/minelittlepony/unicopia/item/SpearItem.java b/src/main/java/com/minelittlepony/unicopia/item/SpearItem.java index 6ae61d46..832a3517 100644 --- a/src/main/java/com/minelittlepony/unicopia/item/SpearItem.java +++ b/src/main/java/com/minelittlepony/unicopia/item/SpearItem.java @@ -3,9 +3,9 @@ package com.minelittlepony.unicopia.item; import javax.annotation.Nullable; import com.minelittlepony.unicopia.entity.SpearEntity; -import com.minelittlepony.unicopia.magic.ICaster; -import com.minelittlepony.unicopia.util.projectile.IAdvancedProjectile; -import com.minelittlepony.unicopia.util.projectile.ITossableItem; +import com.minelittlepony.unicopia.magic.Caster; +import com.minelittlepony.unicopia.util.projectile.AdvancedProjectile; +import com.minelittlepony.unicopia.util.projectile.TossableItem; import net.minecraft.block.BlockState; import net.minecraft.entity.EquipmentSlot; @@ -21,7 +21,7 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Position; import net.minecraft.world.World; -public class SpearItem extends Item implements ITossableItem { +public class SpearItem extends Item implements TossableItem { public SpearItem(Settings settings) { super(settings); @@ -84,18 +84,18 @@ public class SpearItem extends Item implements ITossableItem { @Nullable @Override - public IAdvancedProjectile createProjectile(World world, PlayerEntity player) { + public AdvancedProjectile createProjectile(World world, PlayerEntity player) { return new SpearEntity(world, player); } @Nullable @Override - public IAdvancedProjectile createProjectile(World world, Position pos) { + public AdvancedProjectile createProjectile(World world, Position pos) { return null; } @Override - public void onImpact(ICaster caster, BlockPos pos, BlockState state) { + public void onImpact(Caster caster, BlockPos pos, BlockState state) { } } diff --git a/src/main/java/com/minelittlepony/unicopia/item/SpellbookItem.java b/src/main/java/com/minelittlepony/unicopia/item/SpellbookItem.java index 7d251b81..f6b16f08 100644 --- a/src/main/java/com/minelittlepony/unicopia/item/SpellbookItem.java +++ b/src/main/java/com/minelittlepony/unicopia/item/SpellbookItem.java @@ -5,7 +5,7 @@ import javax.annotation.Nullable; import com.minelittlepony.unicopia.EquinePredicates; import com.minelittlepony.unicopia.UEntities; import com.minelittlepony.unicopia.entity.SpellbookEntity; -import com.minelittlepony.unicopia.magic.IDispensable; +import com.minelittlepony.unicopia.magic.Dispensable; import net.minecraft.block.DispenserBlock; import net.minecraft.entity.player.PlayerEntity; @@ -21,7 +21,7 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Direction; import net.minecraft.world.World; -public class SpellbookItem extends BookItem implements IDispensable { +public class SpellbookItem extends BookItem implements Dispensable { public SpellbookItem() { super(new Item.Settings() diff --git a/src/main/java/com/minelittlepony/unicopia/item/SugaryItem.java b/src/main/java/com/minelittlepony/unicopia/item/SugaryItem.java index 76f9a05c..ee7a9985 100644 --- a/src/main/java/com/minelittlepony/unicopia/item/SugaryItem.java +++ b/src/main/java/com/minelittlepony/unicopia/item/SugaryItem.java @@ -1,6 +1,6 @@ package com.minelittlepony.unicopia.item; -import com.minelittlepony.unicopia.SpeciesList; +import com.minelittlepony.unicopia.entity.player.Pony; import net.minecraft.entity.LivingEntity; import net.minecraft.entity.player.PlayerEntity; @@ -20,7 +20,7 @@ public class SugaryItem extends Item { @Override public ItemStack finishUsing(ItemStack stack, World world, LivingEntity entity) { if (sugarAmount != 0 && entity instanceof PlayerEntity) { - SpeciesList.instance().getPlayer((PlayerEntity)entity).addEnergy(sugarAmount); + Pony.of((PlayerEntity)entity).addEnergy(sugarAmount); } return super.finishUsing(stack, world, entity); diff --git a/src/main/java/com/minelittlepony/unicopia/magic/AddictiveMagicalItem.java b/src/main/java/com/minelittlepony/unicopia/magic/AddictiveMagicalItem.java new file mode 100644 index 00000000..149ac8be --- /dev/null +++ b/src/main/java/com/minelittlepony/unicopia/magic/AddictiveMagicalItem.java @@ -0,0 +1,7 @@ +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/IAffine.java b/src/main/java/com/minelittlepony/unicopia/magic/Affine.java similarity index 88% rename from src/main/java/com/minelittlepony/unicopia/magic/IAffine.java rename to src/main/java/com/minelittlepony/unicopia/magic/Affine.java index 7b04fd22..df90885a 100644 --- a/src/main/java/com/minelittlepony/unicopia/magic/IAffine.java +++ b/src/main/java/com/minelittlepony/unicopia/magic/Affine.java @@ -3,7 +3,7 @@ package com.minelittlepony.unicopia.magic; /** * Interface for things that have an affine alignment. */ -public interface IAffine { +public interface Affine { /** * Gets the current alignment. * Good/Bad/Neutral diff --git a/src/main/java/com/minelittlepony/unicopia/magic/IAttachedEffect.java b/src/main/java/com/minelittlepony/unicopia/magic/AttachedMagicEffect.java similarity index 73% rename from src/main/java/com/minelittlepony/unicopia/magic/IAttachedEffect.java rename to src/main/java/com/minelittlepony/unicopia/magic/AttachedMagicEffect.java index 35f1b1b9..bb01edb8 100644 --- a/src/main/java/com/minelittlepony/unicopia/magic/IAttachedEffect.java +++ b/src/main/java/com/minelittlepony/unicopia/magic/AttachedMagicEffect.java @@ -1,13 +1,13 @@ package com.minelittlepony.unicopia.magic; -public interface IAttachedEffect extends IMagicEffect { +public interface AttachedMagicEffect extends MagicEffect { /** * Called every tick when attached to a player. * * @param source The entity we are currently attached to. * @return true to keep alive */ - boolean updateOnPerson(ICaster caster); + boolean updateOnPerson(Caster caster); /** * Called every tick when attached to a player. Used to apply particle effects. @@ -15,5 +15,5 @@ public interface IAttachedEffect extends IMagicEffect { * * @param source The entity we are currently attached to. */ - default void renderOnPerson(ICaster source) {} + default void renderOnPerson(Caster source) {} } diff --git a/src/main/java/com/minelittlepony/unicopia/magic/ICastable.java b/src/main/java/com/minelittlepony/unicopia/magic/Castable.java similarity index 84% rename from src/main/java/com/minelittlepony/unicopia/magic/ICastable.java rename to src/main/java/com/minelittlepony/unicopia/magic/Castable.java index 10a2d067..0b3ce024 100644 --- a/src/main/java/com/minelittlepony/unicopia/magic/ICastable.java +++ b/src/main/java/com/minelittlepony/unicopia/magic/Castable.java @@ -11,11 +11,11 @@ import net.minecraft.util.math.BlockPointer; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; -public interface ICastable extends IMagicalItem, IDispensable { +public interface Castable extends MagicalItem, Dispensable { @Override default TypedActionResult dispenseStack(BlockPointer source, ItemStack stack) { - IDispenceable effect = SpellRegistry.instance().getDispenseActionFrom(stack); + DispenceableMagicEffect effect = SpellRegistry.instance().getDispenseActionFrom(stack); if (effect == null) { return new TypedActionResult<>(ActionResult.FAIL, stack); @@ -36,16 +36,16 @@ public interface ICastable extends IMagicalItem, IDispensable { return new TypedActionResult<>(ActionResult.SUCCESS, stack); } - CastResult onDispenseSpell(BlockPointer source, ItemStack stack, IDispenceable effect); + CastResult onDispenseSpell(BlockPointer source, ItemStack stack, DispenceableMagicEffect effect); - CastResult onCastSpell(ItemUsageContext context, IMagicEffect effect); + CastResult onCastSpell(ItemUsageContext context, MagicEffect 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, IMagicEffect effect) { + default SpellcastEntity castContainedSpell(World world, BlockPos pos, ItemStack stack, MagicEffect effect) { SpellcastEntity spell = new SpellcastEntity(null, world); spell.setAffinity(getAffinity(stack)); diff --git a/src/main/java/com/minelittlepony/unicopia/magic/ICaster.java b/src/main/java/com/minelittlepony/unicopia/magic/Caster.java similarity index 83% rename from src/main/java/com/minelittlepony/unicopia/magic/ICaster.java rename to src/main/java/com/minelittlepony/unicopia/magic/Caster.java index 15a1a291..54dca826 100644 --- a/src/main/java/com/minelittlepony/unicopia/magic/ICaster.java +++ b/src/main/java/com/minelittlepony/unicopia/magic/Caster.java @@ -21,15 +21,15 @@ import net.minecraft.world.World; /** * Interface for any magically capable entities that can cast and persist spells. */ -public interface ICaster extends Owned, ILevelled, IAffine, IMagicals, ParticleSource { +public interface Caster extends Owned, Levelled, Affine, IMagicals, ParticleSource { - void setEffect(@Nullable IMagicEffect effect); + void setEffect(@Nullable MagicEffect effect); /** * Gets the active effect for this caster. */ @Nullable - default IMagicEffect getEffect(boolean update) { + default MagicEffect getEffect(boolean update) { return getEffect(null, update); } @@ -38,19 +38,19 @@ public interface ICaster extends Owned, ILevelled, IA * Returns null if no such effect exists for this caster. */ @Nullable - T getEffect(@Nullable Class type, boolean update); + T getEffect(@Nullable Class type, boolean update); /** * Gets the active effect for this caster updating it if needed. */ @Nullable - default IMagicEffect getEffect() { + default MagicEffect getEffect() { return getEffect(true); } @SuppressWarnings("unchecked") - default Optional getEffect(Class type) { - IMagicEffect effect = getEffect(); + default Optional getEffect(Class type) { + MagicEffect effect = getEffect(); if (effect == null || effect.isDead() || !type.isAssignableFrom(effect.getClass())) { return Optional.empty(); @@ -122,11 +122,11 @@ public interface ICaster extends Owned, ILevelled, IA return getOwner().getHealth() > 0; } - default Stream> findAllSpellsInRange(double radius) { + default Stream> findAllSpellsInRange(double radius) { return CasterUtils.findAllSpellsInRange(this, radius); } - default Stream> findAllSpellsInRange(Box bb) { + default Stream> findAllSpellsInRange(Box bb) { return CasterUtils.findAllSpellsInRange(this, bb); } diff --git a/src/main/java/com/minelittlepony/unicopia/magic/CasterUtils.java b/src/main/java/com/minelittlepony/unicopia/magic/CasterUtils.java index 60113ec2..01c30d09 100644 --- a/src/main/java/com/minelittlepony/unicopia/magic/CasterUtils.java +++ b/src/main/java/com/minelittlepony/unicopia/magic/CasterUtils.java @@ -7,8 +7,7 @@ import javax.annotation.Nullable; import com.google.common.collect.Streams; import com.minelittlepony.unicopia.EquinePredicates; -import com.minelittlepony.unicopia.SpeciesList; -import com.minelittlepony.unicopia.ducks.RaceContainerHolder; +import com.minelittlepony.unicopia.ducks.PonyContainer; import com.minelittlepony.unicopia.entity.IMagicals; import com.minelittlepony.unicopia.magic.spell.SpellRegistry; @@ -22,7 +21,7 @@ public class CasterUtils { /** * Finds all surrounding spells withing range from the given caster. */ - public static Stream> findAllSpellsInRange(ICaster source, double radius) { + public static Stream> findAllSpellsInRange(Caster source, double radius) { BlockPos origin = source.getOrigin(); @@ -32,7 +31,7 @@ public class CasterUtils { Box bb = new Box(begin, end); return source.getWorld().getEntities(source.getEntity(), bb, e -> - !e.removed && (e instanceof ICaster || e instanceof PlayerEntity) + !e.removed && (e instanceof Caster || e instanceof PlayerEntity) ).stream().filter(e -> { double dist = e.squaredDistanceTo(origin.getX(), origin.getY(), origin.getZ()); double dist2 = e.squaredDistanceTo(origin.getX(), origin.getY() - e.getStandingEyeHeight(), origin.getZ()); @@ -44,16 +43,16 @@ public class CasterUtils { .map(Optional::get); } - static Stream> findAllSpellsInRange(ICaster source, Box bb) { - return source.getWorld().getEntities(source.getEntity(), bb, e -> !e.removed && (e instanceof ICaster || EquinePredicates.MAGI.test(e))).stream() + static Stream> findAllSpellsInRange(Caster source, Box bb) { + return source.getWorld().getEntities(source.getEntity(), bb, e -> !e.removed && (e instanceof Caster || EquinePredicates.MAGI.test(e))).stream() .map(CasterUtils::toCaster) .filter(o -> o.isPresent() && o.get() != source) .map(Optional::get); } - static Optional toMagicEffect(Class type, @Nullable Entity entity) { + static Optional toMagicEffect(Class type, @Nullable Entity entity) { return toCaster(entity) - .filter(ICaster::hasEffect) + .filter(Caster::hasEffect) .map(caster -> caster.getEffect(type, false)) .filter(e -> !e.isDead()); } @@ -71,14 +70,13 @@ public class CasterUtils { /** * Attempts to convert the passed entity into a caster using all the known methods. */ - public static Optional> toCaster(@Nullable Entity entity) { - if (entity instanceof ICaster) { - return Optional.of((ICaster)entity); + public static Optional> toCaster(@Nullable Entity entity) { + if (entity instanceof Caster) { + return Optional.of((Caster)entity); } if (entity instanceof LivingEntity && !(entity instanceof IMagicals)) { - return SpeciesList.instance().getForEntity(entity) - .map(RaceContainerHolder::getCaster); + return PonyContainer.of(entity).map(PonyContainer::getCaster); } return Optional.empty(); diff --git a/src/main/java/com/minelittlepony/unicopia/magic/IDispenceable.java b/src/main/java/com/minelittlepony/unicopia/magic/DispenceableMagicEffect.java similarity index 92% rename from src/main/java/com/minelittlepony/unicopia/magic/IDispenceable.java rename to src/main/java/com/minelittlepony/unicopia/magic/DispenceableMagicEffect.java index 51ed490f..389d013c 100644 --- a/src/main/java/com/minelittlepony/unicopia/magic/IDispenceable.java +++ b/src/main/java/com/minelittlepony/unicopia/magic/DispenceableMagicEffect.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 IDispenceable extends IMagicEffect { +public interface DispenceableMagicEffect extends MagicEffect { /** * Called when dispensed. diff --git a/src/main/java/com/minelittlepony/unicopia/magic/IDispensable.java b/src/main/java/com/minelittlepony/unicopia/magic/Dispensable.java similarity index 98% rename from src/main/java/com/minelittlepony/unicopia/magic/IDispensable.java rename to src/main/java/com/minelittlepony/unicopia/magic/Dispensable.java index 572cdf99..fa81b24e 100644 --- a/src/main/java/com/minelittlepony/unicopia/magic/IDispensable.java +++ b/src/main/java/com/minelittlepony/unicopia/magic/Dispensable.java @@ -11,7 +11,7 @@ import net.minecraft.util.ActionResult; import net.minecraft.util.TypedActionResult; import net.minecraft.util.math.BlockPointer; -public interface IDispensable { +public interface Dispensable { /** * Enables dispensing behaviours for this item. */ diff --git a/src/main/java/com/minelittlepony/unicopia/magic/IHeldEffect.java b/src/main/java/com/minelittlepony/unicopia/magic/HeldMagicEffect.java similarity index 62% rename from src/main/java/com/minelittlepony/unicopia/magic/IHeldEffect.java rename to src/main/java/com/minelittlepony/unicopia/magic/HeldMagicEffect.java index 83d32728..253e451e 100644 --- a/src/main/java/com/minelittlepony/unicopia/magic/IHeldEffect.java +++ b/src/main/java/com/minelittlepony/unicopia/magic/HeldMagicEffect.java @@ -1,15 +1,15 @@ package com.minelittlepony.unicopia.magic; -import com.minelittlepony.unicopia.entity.player.IPlayer; +import com.minelittlepony.unicopia.entity.player.Pony; /** * Represents a passive spell that does something when held in the player's hand. */ -public interface IHeldEffect extends IMagicEffect { +public interface HeldMagicEffect extends MagicEffect { /** * Called every tick when held in a player's inventory. * * @param source The entity we are currently attached to. */ - void updateInHand(IPlayer caster, Affinity affinity); + void updateInHand(Pony caster, Affinity affinity); } diff --git a/src/main/java/com/minelittlepony/unicopia/magic/IDependable.java b/src/main/java/com/minelittlepony/unicopia/magic/IDependable.java deleted file mode 100644 index 23eb6607..00000000 --- a/src/main/java/com/minelittlepony/unicopia/magic/IDependable.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.minelittlepony.unicopia.magic; - -import com.minelittlepony.unicopia.entity.player.IPlayer; - -public interface IDependable extends IMagicalItem { - void onRemoved(IPlayer player, float needfulness); -} diff --git a/src/main/java/com/minelittlepony/unicopia/magic/ILevelled.java b/src/main/java/com/minelittlepony/unicopia/magic/Levelled.java similarity index 95% rename from src/main/java/com/minelittlepony/unicopia/magic/ILevelled.java rename to src/main/java/com/minelittlepony/unicopia/magic/Levelled.java index 19ae0586..a02fd85a 100644 --- a/src/main/java/com/minelittlepony/unicopia/magic/ILevelled.java +++ b/src/main/java/com/minelittlepony/unicopia/magic/Levelled.java @@ -3,7 +3,7 @@ package com.minelittlepony.unicopia.magic; /** * Object with levelling capabilities. */ -public interface ILevelled { +public interface Levelled { /** * Maximum level this spell can reach or -1 for unlimited. diff --git a/src/main/java/com/minelittlepony/unicopia/magic/IMagicEffect.java b/src/main/java/com/minelittlepony/unicopia/magic/MagicEffect.java similarity index 82% rename from src/main/java/com/minelittlepony/unicopia/magic/IMagicEffect.java rename to src/main/java/com/minelittlepony/unicopia/magic/MagicEffect.java index b2bb739b..d7c84f85 100644 --- a/src/main/java/com/minelittlepony/unicopia/magic/IMagicEffect.java +++ b/src/main/java/com/minelittlepony/unicopia/magic/MagicEffect.java @@ -1,14 +1,14 @@ package com.minelittlepony.unicopia.magic; import com.minelittlepony.unicopia.magic.spell.SpellRegistry; -import com.minelittlepony.unicopia.util.InbtSerialisable; +import com.minelittlepony.unicopia.util.NbtSerialisable; import net.minecraft.entity.projectile.ProjectileEntity; /** * Interface for a magic spells */ -public interface IMagicEffect extends InbtSerialisable, IAffine { +public interface MagicEffect extends NbtSerialisable, Affine { /** * Gets the name used to identify this effect. @@ -49,19 +49,19 @@ public interface IMagicEffect extends InbtSerialisable, IAffine { * Gets the highest level this spell can be safely operated at. * Gems may go higher, however chance of explosion/exhaustion increases with every level. */ - int getMaxLevelCutOff(ICaster caster); + int getMaxLevelCutOff(Caster caster); - float getMaxExhaustion(ICaster caster); + float getMaxExhaustion(Caster caster); /** * Gets the chances of this effect turning into an innert gem or exploding. */ - float getExhaustion(ICaster caster); + float getExhaustion(Caster caster); /** * Called when first attached to a gem. */ - default void onPlaced(ICaster caster) { + default void onPlaced(Caster caster) { } @@ -75,7 +75,7 @@ public interface IMagicEffect extends InbtSerialisable, IAffine { * * @param source The entity we are currently attached to. */ - boolean update(ICaster source); + boolean update(Caster source); /** * Called every tick when attached to an entity to produce particle effects. @@ -83,7 +83,7 @@ public interface IMagicEffect extends InbtSerialisable, IAffine { * * @param source The entity we are attached to. */ - void render(ICaster source); + void render(Caster source); /** * Return true to allow the gem update and move. @@ -95,7 +95,7 @@ public interface IMagicEffect extends InbtSerialisable, IAffine { /** * Returns a new, deep-copied instance of this spell. */ - default IMagicEffect copy() { + default MagicEffect copy() { return SpellRegistry.instance().copyInstance(this); } } diff --git a/src/main/java/com/minelittlepony/unicopia/magic/IMagicalItem.java b/src/main/java/com/minelittlepony/unicopia/magic/MagicalItem.java similarity index 92% rename from src/main/java/com/minelittlepony/unicopia/magic/IMagicalItem.java rename to src/main/java/com/minelittlepony/unicopia/magic/MagicalItem.java index 0910c6f7..083a960e 100644 --- a/src/main/java/com/minelittlepony/unicopia/magic/IMagicalItem.java +++ b/src/main/java/com/minelittlepony/unicopia/magic/MagicalItem.java @@ -2,7 +2,7 @@ package com.minelittlepony.unicopia.magic; import net.minecraft.item.ItemStack; -public interface IMagicalItem extends IAffine { +public interface MagicalItem extends Affine { /** * If true this item serves as host to its own inner dimensional space. * Bag of Holding will explode if you try to store items of this kind inside of it. diff --git a/src/main/java/com/minelittlepony/unicopia/magic/ISuppressable.java b/src/main/java/com/minelittlepony/unicopia/magic/SuppressableEffect.java similarity index 70% rename from src/main/java/com/minelittlepony/unicopia/magic/ISuppressable.java rename to src/main/java/com/minelittlepony/unicopia/magic/SuppressableEffect.java index 12f57da7..689bf4df 100644 --- a/src/main/java/com/minelittlepony/unicopia/magic/ISuppressable.java +++ b/src/main/java/com/minelittlepony/unicopia/magic/SuppressableEffect.java @@ -3,7 +3,7 @@ package com.minelittlepony.unicopia.magic; /** * Magic effects that can be suppressed by other nearby effects. */ -public interface ISuppressable extends IMagicEffect { +public interface SuppressableEffect extends MagicEffect { /** * Returns true if this spell is currently still suppressed. @@ -13,10 +13,10 @@ public interface ISuppressable extends IMagicEffect { /** * Returns true if this spell can be suppressed by the given other spell and caster. */ - boolean isVulnerable(ICaster otherSource, IMagicEffect other); + boolean isVulnerable(Caster otherSource, MagicEffect other); /** * Event triggered when this effect is suppressed. */ - void onSuppressed(ICaster otherSource); + void onSuppressed(Caster otherSource); } diff --git a/src/main/java/com/minelittlepony/unicopia/magic/ITossedEffect.java b/src/main/java/com/minelittlepony/unicopia/magic/TossedMagicEffect.java similarity index 78% rename from src/main/java/com/minelittlepony/unicopia/magic/ITossedEffect.java rename to src/main/java/com/minelittlepony/unicopia/magic/TossedMagicEffect.java index 079a29d9..92f0e711 100644 --- a/src/main/java/com/minelittlepony/unicopia/magic/ITossedEffect.java +++ b/src/main/java/com/minelittlepony/unicopia/magic/TossedMagicEffect.java @@ -5,8 +5,8 @@ import javax.annotation.Nullable; import com.minelittlepony.unicopia.entity.ProjectileEntity; import com.minelittlepony.unicopia.item.UItems; import com.minelittlepony.unicopia.magic.spell.SpellRegistry; -import com.minelittlepony.unicopia.util.projectile.IAdvancedProjectile; -import com.minelittlepony.unicopia.util.projectile.ITossable; +import com.minelittlepony.unicopia.util.projectile.AdvancedProjectile; +import com.minelittlepony.unicopia.util.projectile.Tossable; import net.minecraft.entity.Entity; import net.minecraft.item.Item; @@ -19,17 +19,17 @@ import net.minecraft.world.World; /** * Magic effects that can be thrown. */ -public interface ITossedEffect extends IMagicEffect, ITossable> { +public interface TossedMagicEffect extends MagicEffect, Tossable> { @Override - default SoundEvent getThrowSound(ICaster caster) { + default SoundEvent getThrowSound(Caster caster) { return SoundEvents.ITEM_CHORUS_FRUIT_TELEPORT; } /** * Gets the appearance to be used when projecting this spell. */ - default ItemStack getCastAppearance(ICaster caster) { + default ItemStack getCastAppearance(Caster caster) { Item item = getAffinity() == Affinity.BAD ? UItems.curse : UItems.spell; return SpellRegistry.instance().enchantStack(new ItemStack(item), getName()); @@ -41,7 +41,7 @@ public interface ITossedEffect extends IMagicEffect, ITossable> { * Returns the resulting projectile entity for customization (or null if on the client). */ @Nullable - default IAdvancedProjectile toss(ICaster caster) { + default AdvancedProjectile toss(Caster caster) { World world = caster.getWorld(); Entity entity = caster.getOwner(); @@ -49,7 +49,7 @@ public interface ITossedEffect extends IMagicEffect, ITossable> { world.playSound(null, entity.x, entity.y, entity.z, getThrowSound(caster), SoundCategory.NEUTRAL, 0.7F, 0.4F / (world.random.nextFloat() * 0.4F + 0.8F)); if (caster.isLocal()) { - IAdvancedProjectile projectile = new ProjectileEntity(null, world, caster.getOwner()); + AdvancedProjectile projectile = new ProjectileEntity(null, world, caster.getOwner()); projectile.setItem(getCastAppearance(caster)); projectile.setThrowDamage(getThrowDamage(caster)); diff --git a/src/main/java/com/minelittlepony/unicopia/magic/IUseable.java b/src/main/java/com/minelittlepony/unicopia/magic/Useable.java similarity index 98% rename from src/main/java/com/minelittlepony/unicopia/magic/IUseable.java rename to src/main/java/com/minelittlepony/unicopia/magic/Useable.java index a6b48aa8..1bf50219 100644 --- a/src/main/java/com/minelittlepony/unicopia/magic/IUseable.java +++ b/src/main/java/com/minelittlepony/unicopia/magic/Useable.java @@ -12,7 +12,7 @@ import net.minecraft.world.World; * Interface for right-click actions. * */ -public interface IUseable { +public interface Useable { /** * Triggered when the player right clicks a block diff --git a/src/main/java/com/minelittlepony/unicopia/magic/spell/AbstractAttachableSpell.java b/src/main/java/com/minelittlepony/unicopia/magic/spell/AbstractAttachableSpell.java index 9dd53b43..e50c13cf 100644 --- a/src/main/java/com/minelittlepony/unicopia/magic/spell/AbstractAttachableSpell.java +++ b/src/main/java/com/minelittlepony/unicopia/magic/spell/AbstractAttachableSpell.java @@ -6,7 +6,7 @@ import javax.annotation.Nonnull; import javax.annotation.Nullable; import com.minelittlepony.unicopia.entity.SpellcastEntity; -import com.minelittlepony.unicopia.magic.ICaster; +import com.minelittlepony.unicopia.magic.Caster; import net.minecraft.entity.Entity; import net.minecraft.nbt.CompoundTag; @@ -43,7 +43,7 @@ public abstract class AbstractAttachableSpell extends AbstractSpell { } @Nullable - protected SpellcastEntity getTarget(ICaster source) { + protected SpellcastEntity getTarget(Caster source) { if (targettedEntity == null && targettedEntityId != null) { Entity e = ((ServerWorld)source.getWorld()).getEntity(targettedEntityId); @@ -63,7 +63,7 @@ public abstract class AbstractAttachableSpell extends AbstractSpell { } @Override - public boolean update(ICaster source) { + public boolean update(Caster source) { if (source.getWorld() instanceof ServerWorld) { if (searching) { @@ -76,7 +76,7 @@ public abstract class AbstractAttachableSpell extends AbstractSpell { return !isDead(); } - protected void searchForTarget(ICaster source) { + protected void searchForTarget(Caster source) { BlockPos origin = source.getOrigin(); source.getWorld().getEntities(source.getEntity(), getSearchArea(source), e -> { @@ -88,7 +88,7 @@ public abstract class AbstractAttachableSpell extends AbstractSpell { .ifPresent(this::setTarget); } - protected abstract Box getSearchArea(ICaster source); + protected abstract Box getSearchArea(Caster source); protected abstract boolean canTargetEntity(SpellcastEntity e); 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 eecf1340..d12e8152 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.ICaster; -import com.minelittlepony.unicopia.magic.IMagicEffect; +import com.minelittlepony.unicopia.magic.Caster; +import com.minelittlepony.unicopia.magic.MagicEffect; import net.minecraft.nbt.CompoundTag; -public abstract class AbstractSpell implements IMagicEffect { +public abstract class AbstractSpell implements MagicEffect { protected boolean isDead; protected boolean isDirty; @@ -36,17 +36,17 @@ public abstract class AbstractSpell implements IMagicEffect { } @Override - public int getMaxLevelCutOff(ICaster source) { + public int getMaxLevelCutOff(Caster source) { return 1; } @Override - public float getMaxExhaustion(ICaster caster) { + public float getMaxExhaustion(Caster caster) { return 1; } @Override - public float getExhaustion(ICaster caster) { + public float getExhaustion(Caster caster) { return 0; } @@ -64,17 +64,17 @@ public abstract class AbstractSpell implements IMagicEffect { public static abstract class RangedAreaSpell extends AbstractSpell { @Override - public int getMaxLevelCutOff(ICaster source) { + public int getMaxLevelCutOff(Caster source) { return 17; } @Override - public float getMaxExhaustion(ICaster caster) { + public float getMaxExhaustion(Caster caster) { return 1000; } @Override - public float getExhaustion(ICaster caster) { + public float getExhaustion(Caster caster) { float max = getMaxLevelCutOff(caster); float current = caster.getCurrentLevel(); 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 61f82dab..17332cf3 100644 --- a/src/main/java/com/minelittlepony/unicopia/magic/spell/AttractiveSpell.java +++ b/src/main/java/com/minelittlepony/unicopia/magic/spell/AttractiveSpell.java @@ -1,9 +1,9 @@ package com.minelittlepony.unicopia.magic.spell; -import com.minelittlepony.unicopia.SpeciesList; import com.minelittlepony.unicopia.UParticles; +import com.minelittlepony.unicopia.entity.player.Pony; import com.minelittlepony.unicopia.magic.Affinity; -import com.minelittlepony.unicopia.magic.ICaster; +import com.minelittlepony.unicopia.magic.Caster; import com.minelittlepony.unicopia.util.MagicalDamageSource; import com.minelittlepony.unicopia.util.shape.Sphere; @@ -30,7 +30,7 @@ public class AttractiveSpell extends ShieldSpell { } @Override - public void render(ICaster source) { + public void render(Caster source) { int range = 4 + (source.getCurrentLevel() * 2); Vec3d pos = source.getOriginVector(); @@ -40,18 +40,18 @@ public class AttractiveSpell extends ShieldSpell { } @Override - public double getDrawDropOffRange(ICaster caster) { + public double getDrawDropOffRange(Caster caster) { return 10 + (caster.getCurrentLevel() * 2); } @Override - protected void applyRadialEffect(ICaster source, Entity target, double distance, double radius) { + protected void applyRadialEffect(Caster source, Entity target, double distance, double radius) { Vec3d pos = source.getOriginVector(); double force = 2.5F / distance; if (source.getAffinity() != Affinity.BAD && target instanceof PlayerEntity) { - force *= calculateAdjustedForce(SpeciesList.instance().getPlayer((PlayerEntity)target)); + force *= calculateAdjustedForce(Pony.of((PlayerEntity)target)); } if (source.getAffinity() == Affinity.BAD && source.getWorld().random.nextInt(4500) == 0) { 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 45feb678..ebf0d89b 100644 --- a/src/main/java/com/minelittlepony/unicopia/magic/spell/AwkwardSpell.java +++ b/src/main/java/com/minelittlepony/unicopia/magic/spell/AwkwardSpell.java @@ -8,9 +8,9 @@ import javax.annotation.Nullable; import com.minelittlepony.unicopia.magic.Affinity; import com.minelittlepony.unicopia.magic.CastResult; import com.minelittlepony.unicopia.magic.CasterUtils; -import com.minelittlepony.unicopia.magic.ICaster; -import com.minelittlepony.unicopia.magic.ITossedEffect; -import com.minelittlepony.unicopia.magic.IUseable; +import com.minelittlepony.unicopia.magic.Caster; +import com.minelittlepony.unicopia.magic.TossedMagicEffect; +import com.minelittlepony.unicopia.magic.Useable; import com.minelittlepony.unicopia.util.shape.Sphere; import com.mojang.brigadier.StringReader; import com.mojang.brigadier.exceptions.CommandSyntaxException; @@ -29,7 +29,7 @@ import net.minecraft.util.math.MathHelper; import net.minecraft.util.registry.Registry; import net.minecraft.world.World; -public class AwkwardSpell extends AbstractSpell implements ITossedEffect, IUseable { +public class AwkwardSpell extends AbstractSpell implements TossedMagicEffect, Useable { @Override public String getName() { @@ -47,12 +47,12 @@ public class AwkwardSpell extends AbstractSpell implements ITossedEffect, IUseab } @Override - public boolean update(ICaster source) { + public boolean update(Caster source) { return true; } @Override - public void render(ICaster source) { + public void render(Caster source) { source.spawnParticles(new Sphere(false, (1 + source.getCurrentLevel()) * 8), 10, pos -> { List names = new ArrayList<>(Registry.PARTICLE_TYPE.getIds()); @@ -81,7 +81,7 @@ public class AwkwardSpell extends AbstractSpell implements ITossedEffect, IUseab } @Override - public void onImpact(ICaster caster, BlockPos pos, BlockState state) { + public void onImpact(Caster caster, BlockPos pos, BlockState state) { // noop } 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 685f21eb..4f37418c 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.CuccoonEntity; import com.minelittlepony.unicopia.entity.IMagicals; import com.minelittlepony.unicopia.magic.Affinity; import com.minelittlepony.unicopia.magic.CasterUtils; -import com.minelittlepony.unicopia.magic.IAttachedEffect; -import com.minelittlepony.unicopia.magic.ICaster; -import com.minelittlepony.unicopia.magic.ITossedEffect; +import com.minelittlepony.unicopia.magic.AttachedMagicEffect; +import com.minelittlepony.unicopia.magic.Caster; +import com.minelittlepony.unicopia.magic.TossedMagicEffect; import com.minelittlepony.unicopia.util.WorldEvent; import net.minecraft.block.BlockState; @@ -32,7 +32,7 @@ import net.minecraft.util.TagHelper; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Direction; -public class ChangelingTrapSpell extends AbstractSpell implements ITossedEffect, IAttachedEffect { +public class ChangelingTrapSpell extends AbstractSpell implements TossedMagicEffect, AttachedMagicEffect { private BlockPos previousTrappedPosition; @@ -54,22 +54,22 @@ public class ChangelingTrapSpell extends AbstractSpell implements ITossedEffect, } @Override - public SoundEvent getThrowSound(ICaster caster) { + public SoundEvent getThrowSound(Caster caster) { return USounds.SLIME_RETRACT; } @Override - public ItemStack getCastAppearance(ICaster caster) { + public ItemStack getCastAppearance(Caster caster) { return new ItemStack(Items.SLIME_BALL); } - private boolean checkStruggleCondition(ICaster caster) { + private boolean checkStruggleCondition(Caster caster) { return !caster.getOrigin().equals(previousTrappedPosition) || (!(caster.getOwner() instanceof PlayerEntity) && caster.getWorld().random.nextInt(20) == 0); } @Override - public boolean updateOnPerson(ICaster caster) { + public boolean updateOnPerson(Caster caster) { LivingEntity entity = caster.getOwner(); if (entity.getVelocity().y > 0) { @@ -144,17 +144,17 @@ public class ChangelingTrapSpell extends AbstractSpell implements ITossedEffect, } @Override - public boolean update(ICaster source) { + public boolean update(Caster source) { return !source.getEntity().hasVehicle(); } @Override - public void render(ICaster source) { + public void render(Caster source) { source.spawnParticles(ParticleTypes.DRIPPING_LAVA, 1); } @Override - public void renderOnPerson(ICaster source) { + public void renderOnPerson(Caster source) { render(source); } @@ -163,7 +163,7 @@ public class ChangelingTrapSpell extends AbstractSpell implements ITossedEffect, return Affinity.BAD; } - public void enforce(ICaster caster) { + public void enforce(Caster caster) { struggleCounter = 10; if (caster.isLocal() && caster.getWorld().random.nextInt(3) == 0) { @@ -178,7 +178,7 @@ public class ChangelingTrapSpell extends AbstractSpell implements ITossedEffect, setDirty(true); } - protected void entrap(ICaster e) { + protected void entrap(Caster e) { ChangelingTrapSpell existing = e.getEffect(ChangelingTrapSpell.class, true); @@ -196,7 +196,7 @@ public class ChangelingTrapSpell extends AbstractSpell implements ITossedEffect, } @Override - public void onImpact(ICaster caster, BlockPos pos, BlockState state) { + public void onImpact(Caster caster, BlockPos pos, BlockState state) { if (caster.isLocal()) { caster.findAllEntitiesInRange(5) .filter(this::canAffect) 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 fee369d4..2ba52d4e 100644 --- a/src/main/java/com/minelittlepony/unicopia/magic/spell/ChargingSpell.java +++ b/src/main/java/com/minelittlepony/unicopia/magic/spell/ChargingSpell.java @@ -2,8 +2,8 @@ package com.minelittlepony.unicopia.magic.spell; import com.minelittlepony.unicopia.entity.SpellcastEntity; import com.minelittlepony.unicopia.magic.Affinity; -import com.minelittlepony.unicopia.magic.ICaster; -import com.minelittlepony.unicopia.util.shape.IShape; +import com.minelittlepony.unicopia.magic.Caster; +import com.minelittlepony.unicopia.util.shape.Shape; import com.minelittlepony.unicopia.util.shape.Line; import net.minecraft.util.math.Box; @@ -34,19 +34,19 @@ public class ChargingSpell extends AbstractAttachableSpell { } @Override - protected Box getSearchArea(ICaster source) { + protected Box getSearchArea(Caster source) { return searchArea.offset(source.getOriginVector()); } @Override - public void render(ICaster source) { + public void render(Caster source) { if (source.getWorld().random.nextInt(4 + source.getCurrentLevel() * 4) == 0) { SpellcastEntity target = getTarget(source); if (target != null) { Vec3d start = source.getEntity().getPos(); - IShape line = new Line(start, target.getPos()); + Shape line = new Line(start, target.getPos()); source.spawnParticles(line, (int)line.getVolumeOfSpawnableSpace(), pos -> { // TODO: ParticleTypeRegistry @@ -58,7 +58,7 @@ public class ChargingSpell extends AbstractAttachableSpell { } @Override - public boolean update(ICaster source) { + public boolean update(Caster source) { super.update(source); if (!searching) { 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 b4fc72f6..f93c0c61 100644 --- a/src/main/java/com/minelittlepony/unicopia/magic/spell/DarknessSpell.java +++ b/src/main/java/com/minelittlepony/unicopia/magic/spell/DarknessSpell.java @@ -7,10 +7,10 @@ import com.minelittlepony.unicopia.UParticles; import com.minelittlepony.unicopia.entity.SpellcastEntity; import com.minelittlepony.unicopia.magic.Affinity; import com.minelittlepony.unicopia.magic.CasterUtils; -import com.minelittlepony.unicopia.magic.ICaster; +import com.minelittlepony.unicopia.magic.Caster; import com.minelittlepony.unicopia.util.MagicalDamageSource; import com.minelittlepony.unicopia.util.PosHelper; -import com.minelittlepony.unicopia.util.shape.IShape; +import com.minelittlepony.unicopia.util.shape.Shape; import com.minelittlepony.unicopia.util.shape.Sphere; import net.minecraft.block.BlockState; @@ -60,7 +60,7 @@ public class DarknessSpell extends AbstractAttachableSpell { } @Override - public void onPlaced(ICaster caster) { + public void onPlaced(Caster caster) { if (caster.getEntity() instanceof SpellcastEntity) { SpellcastEntity living = (SpellcastEntity)caster.getEntity(); @@ -70,7 +70,7 @@ public class DarknessSpell extends AbstractAttachableSpell { } @Override - public boolean update(ICaster source) { + public boolean update(Caster source) { super.update(source); int soundChance = 15; @@ -99,7 +99,7 @@ public class DarknessSpell extends AbstractAttachableSpell { return !isDead(); } - private void applyBlocks(ICaster source, int radius) { + private void applyBlocks(Caster source, int radius) { for (BlockPos pos : PosHelper.getAllInRegionMutable(source.getOrigin(), new Sphere(false, radius))) { if (source.getWorld().random.nextInt(500) == 0) { BlockState state = source.getWorld().getBlockState(pos); @@ -117,20 +117,20 @@ public class DarknessSpell extends AbstractAttachableSpell { } } - private void applyEntities(ICaster source, int radius, Consumer consumer) { + private void applyEntities(Caster source, int radius, Consumer consumer) { source.findAllEntitiesInRange(radius * 1.5F) .filter(e -> e instanceof LivingEntity) .map(LivingEntity.class::cast) .forEach(consumer); } - private void applyLight(ICaster source, LivingEntity entity) { + private void applyLight(Caster source, LivingEntity entity) { if (entity.getHealth() < entity.getHealthMaximum()) { entity.heal(1); } } - private void applyDark(ICaster source, LivingEntity entity) { + private void applyDark(Caster source, LivingEntity entity) { if (isAreaOccupied(source, entity.getPosVector())) { return; @@ -171,7 +171,7 @@ public class DarknessSpell extends AbstractAttachableSpell { } @Override - public void render(ICaster source) { + public void render(Caster source) { int radius = 7 + (source.getCurrentLevel() * 3); boolean tamed = hasTarget(); @@ -182,7 +182,7 @@ public class DarknessSpell extends AbstractAttachableSpell { radius /= 3; } - IShape shape = new Sphere(false, radius); + Shape shape = new Sphere(false, radius); source.spawnParticles(shape, radius * 6, pos -> { spawnSphere(source, pos, tint, searching ? 4 : 2); @@ -203,7 +203,7 @@ public class DarknessSpell extends AbstractAttachableSpell { return e instanceof LivingEntity && CasterUtils.isHoldingEffect("light", e); } - public boolean isAreaOccupied(ICaster source, Vec3d pos) { + 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); @@ -219,7 +219,7 @@ public class DarknessSpell extends AbstractAttachableSpell { return false; } - public void spawnSphere(ICaster source, Vec3d pos, int tint, int maxSize) { + public void spawnSphere(Caster source, Vec3d pos, int tint, int maxSize) { if (isAreaOccupied(source, pos)) { return; } @@ -244,7 +244,7 @@ public class DarknessSpell extends AbstractAttachableSpell { } @Override - protected Box getSearchArea(ICaster source) { + protected Box getSearchArea(Caster source) { return searchArea.offset(source.getOriginVector()); } 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 b74b9a9a..6bf1ccb2 100644 --- a/src/main/java/com/minelittlepony/unicopia/magic/spell/DisguiseSpell.java +++ b/src/main/java/com/minelittlepony/unicopia/magic/spell/DisguiseSpell.java @@ -7,18 +7,17 @@ import javax.annotation.Nullable; import com.minelittlepony.unicopia.InteractionManager; import com.minelittlepony.unicopia.Race; -import com.minelittlepony.unicopia.SpeciesList; import com.minelittlepony.unicopia.UParticles; import com.minelittlepony.unicopia.ability.FlightPredicate; import com.minelittlepony.unicopia.ability.HeightPredicate; import com.minelittlepony.unicopia.entity.Owned; -import com.minelittlepony.unicopia.entity.player.IPlayer; +import com.minelittlepony.unicopia.entity.player.Pony; import com.minelittlepony.unicopia.magic.Affinity; import com.minelittlepony.unicopia.magic.CasterUtils; -import com.minelittlepony.unicopia.magic.IAttachedEffect; -import com.minelittlepony.unicopia.magic.ICaster; -import com.minelittlepony.unicopia.magic.IMagicEffect; -import com.minelittlepony.unicopia.magic.ISuppressable; +import com.minelittlepony.unicopia.magic.AttachedMagicEffect; +import com.minelittlepony.unicopia.magic.Caster; +import com.minelittlepony.unicopia.magic.MagicEffect; +import com.minelittlepony.unicopia.magic.SuppressableEffect; import com.minelittlepony.unicopia.util.projectile.ProjectileUtil; import com.mojang.authlib.GameProfile; @@ -45,7 +44,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.CompoundTag; import net.minecraft.util.math.MathHelper; -public class DisguiseSpell extends AbstractSpell implements IAttachedEffect, ISuppressable, FlightPredicate, HeightPredicate { +public class DisguiseSpell extends AbstractSpell implements AttachedMagicEffect, SuppressableEffect, FlightPredicate, HeightPredicate { @Nonnull private String entityId = ""; @@ -79,12 +78,12 @@ public class DisguiseSpell extends AbstractSpell implements IAttachedEffect, ISu } @Override - public boolean isVulnerable(ICaster otherSource, IMagicEffect other) { + public boolean isVulnerable(Caster otherSource, MagicEffect other) { return suppressionCounter <= otherSource.getCurrentLevel(); } @Override - public void onSuppressed(ICaster otherSource) { + public void onSuppressed(Caster otherSource) { suppressionCounter = 100; setDirty(true); } @@ -146,7 +145,7 @@ public class DisguiseSpell extends AbstractSpell implements IAttachedEffect, ISu return entityNbt; } - protected synchronized void createPlayer(CompoundTag nbt, GameProfile profile, ICaster source) { + protected synchronized void createPlayer(CompoundTag nbt, GameProfile profile, Caster source) { removeDisguise(); entity = InteractionManager.instance().createPlayer(source.getEntity(), profile); @@ -158,7 +157,7 @@ public class DisguiseSpell extends AbstractSpell implements IAttachedEffect, ISu onEntityLoaded(source); } - protected void checkAndCreateDisguiseEntity(ICaster source) { + protected void checkAndCreateDisguiseEntity(Caster source) { if (entity == null && entityNbt != null) { CompoundTag nbt = entityNbt; entityNbt = null; @@ -184,7 +183,7 @@ public class DisguiseSpell extends AbstractSpell implements IAttachedEffect, ISu } } - protected void onEntityLoaded(ICaster source) { + protected void onEntityLoaded(Caster source) { if (entity == null) { return; } @@ -304,20 +303,20 @@ public class DisguiseSpell extends AbstractSpell implements IAttachedEffect, ISu } @Override - public boolean updateOnPerson(ICaster caster) { + public boolean updateOnPerson(Caster caster) { return update(caster); } @Override - public boolean update(ICaster source) { + public boolean update(Caster source) { LivingEntity owner = source.getOwner(); if (getSuppressed()) { suppressionCounter--; owner.setInvisible(false); - if (source instanceof IPlayer) { - ((IPlayer)source).setInvisible(false); + if (source instanceof Pony) { + ((Pony)source).setInvisible(false); } if (entity != null) { @@ -335,9 +334,9 @@ public class DisguiseSpell extends AbstractSpell implements IAttachedEffect, ISu } if (entity == null) { - if (source instanceof IPlayer) { + if (source instanceof Pony) { owner.setInvisible(false); - ((IPlayer) source).setInvisible(false); + ((Pony) source).setInvisible(false); } return false; @@ -370,8 +369,8 @@ public class DisguiseSpell extends AbstractSpell implements IAttachedEffect, ISu shulker.setAttachedBlock(null); - if (source.isClient() && source instanceof IPlayer) { - IPlayer player = (IPlayer)source; + if (source.isClient() && source instanceof Pony) { + Pony player = (Pony)source; float peekAmount = 0.3F; @@ -393,8 +392,8 @@ public class DisguiseSpell extends AbstractSpell implements IAttachedEffect, ISu entity.pitch = 0; } - if (source instanceof IPlayer) { - IPlayer player = (IPlayer)source; + if (source instanceof Pony) { + Pony player = (Pony)source; player.setInvisible(true); source.getOwner().setInvisible(true); @@ -404,7 +403,7 @@ public class DisguiseSpell extends AbstractSpell implements IAttachedEffect, ISu } if (entity instanceof PlayerEntity) { - entity.getDataTracker().set(Player.getModelBitFlag(), owner.getDataTracker().get(Player.getModelBitFlag())); + entity.getDataTracker().set(PlayerAccess.getModelBitFlag(), owner.getDataTracker().get(PlayerAccess.getModelBitFlag())); } if (player.isClientPlayer() && InteractionManager.instance().getViewMode() == 0) { @@ -425,7 +424,7 @@ public class DisguiseSpell extends AbstractSpell implements IAttachedEffect, ISu } @Override - public void render(ICaster source) { + public void render(Caster source) { if (getSuppressed()) { source.spawnParticles(UParticles.UNICORN_MAGIC, 5); source.spawnParticles(UParticles.CHANGELING_MAGIC, 5); @@ -473,14 +472,14 @@ public class DisguiseSpell extends AbstractSpell implements IAttachedEffect, ISu } @Override - public boolean checkCanFly(IPlayer player) { + public boolean checkCanFly(Pony player) { if (entity == null || !player.getSpecies().canFly()) { return false; } if (entity instanceof Owned) { @SuppressWarnings("unchecked") - IPlayer iplayer = SpeciesList.instance().getPlayer(((Owned)entity).getOwner()); + Pony iplayer = Pony.of(((Owned)entity).getOwner()); return iplayer != null && iplayer.getSpecies().canFly(); } @@ -494,7 +493,7 @@ public class DisguiseSpell extends AbstractSpell implements IAttachedEffect, ISu } @Override - public float getTargetEyeHeight(IPlayer player) { + public float getTargetEyeHeight(Pony player) { if (entity != null && !getSuppressed()) { if (entity instanceof FallingBlockEntity) { return 0.5F; @@ -505,7 +504,7 @@ public class DisguiseSpell extends AbstractSpell implements IAttachedEffect, ISu } @Override - public float getTargetBodyHeight(IPlayer player) { + public float getTargetBodyHeight(Pony player) { if (entity != null && !getSuppressed()) { if (entity instanceof FallingBlockEntity) { return 0.9F; @@ -527,8 +526,8 @@ public class DisguiseSpell extends AbstractSpell implements IAttachedEffect, ISu || entity instanceof FallingBlockEntity; } - static abstract class Player extends PlayerEntity { - public Player() { super(null, null); } + static abstract class PlayerAccess extends PlayerEntity { + public PlayerAccess() { super(null, null); } static TrackedData getModelBitFlag() { return PLAYER_MODEL_BIT_MASK; } 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 06187bb2..355fcfa6 100644 --- a/src/main/java/com/minelittlepony/unicopia/magic/spell/FaithfulAssistantSpell.java +++ b/src/main/java/com/minelittlepony/unicopia/magic/spell/FaithfulAssistantSpell.java @@ -2,11 +2,11 @@ package com.minelittlepony.unicopia.magic.spell; import javax.annotation.Nullable; +import com.minelittlepony.unicopia.entity.FollowCasterGoal; import com.minelittlepony.unicopia.entity.SpellcastEntity; -import com.minelittlepony.unicopia.entity.ai.FollowCasterGoal; import com.minelittlepony.unicopia.magic.Affinity; -import com.minelittlepony.unicopia.magic.ICaster; -import com.minelittlepony.unicopia.magic.IMagicEffect; +import com.minelittlepony.unicopia.magic.Caster; +import com.minelittlepony.unicopia.magic.MagicEffect; import net.minecraft.entity.ai.goal.SwimGoal; import net.minecraft.nbt.CompoundTag; @@ -22,7 +22,7 @@ public class FaithfulAssistantSpell extends AbstractSpell { private static final Box EFFECT_BOUNDS = new Box(-2, -2, -2, 2, 2, 2); @Nullable - private IMagicEffect piggyBackSpell; + private MagicEffect piggyBackSpell; @Override public String getName() { @@ -65,20 +65,20 @@ public class FaithfulAssistantSpell extends AbstractSpell { @SuppressWarnings("unchecked") @Override - public void onPlaced(ICaster caster) { + public void onPlaced(Caster caster) { if (caster.getEntity() instanceof SpellcastEntity) { SpellcastEntity living = (SpellcastEntity)caster.getEntity(); living.getNavigation().setCanSwim(false); living.getGoals().add(1, new SwimGoal(living)); - living.getGoals().add(2, new FollowCasterGoal<>((ICaster)caster, 1, 4, 70)); + living.getGoals().add(2, new FollowCasterGoal<>((Caster)caster, 1, 4, 70)); living.setPosition(living.x, living.y, living.z); } } @Override - public boolean update(ICaster source) { + public boolean update(Caster source) { if (piggyBackSpell == null) { Box bb = EFFECT_BOUNDS.offset(source.getOriginVector()); @@ -101,7 +101,7 @@ public class FaithfulAssistantSpell extends AbstractSpell { } @Override - public void render(ICaster source) { + public void render(Caster source) { if (piggyBackSpell != null) { piggyBackSpell.render(source); } 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 16d9b8f8..4b15900e 100644 --- a/src/main/java/com/minelittlepony/unicopia/magic/spell/FireSpell.java +++ b/src/main/java/com/minelittlepony/unicopia/magic/spell/FireSpell.java @@ -6,15 +6,15 @@ import com.minelittlepony.unicopia.EquinePredicates; import com.minelittlepony.unicopia.entity.IMagicals; import com.minelittlepony.unicopia.magic.Affinity; import com.minelittlepony.unicopia.magic.CastResult; -import com.minelittlepony.unicopia.magic.ICaster; -import com.minelittlepony.unicopia.magic.IDispenceable; -import com.minelittlepony.unicopia.magic.IUseable; +import com.minelittlepony.unicopia.magic.Caster; +import com.minelittlepony.unicopia.magic.DispenceableMagicEffect; +import com.minelittlepony.unicopia.magic.Useable; import com.minelittlepony.unicopia.util.MagicalDamageSource; import com.minelittlepony.unicopia.util.PosHelper; import com.minelittlepony.unicopia.util.VecHelper; -import com.minelittlepony.unicopia.util.collection.IStateMapping; +import com.minelittlepony.unicopia.util.collection.StateMapping; import com.minelittlepony.unicopia.util.collection.StateMapList; -import com.minelittlepony.unicopia.util.shape.IShape; +import com.minelittlepony.unicopia.util.shape.Shape; import com.minelittlepony.unicopia.util.shape.Sphere; import net.minecraft.block.Block; @@ -41,12 +41,12 @@ import net.minecraft.util.math.Direction; import net.minecraft.util.math.Vec3d; import net.minecraft.world.World; -public class FireSpell extends AbstractSpell.RangedAreaSpell implements IUseable, IDispenceable { +public class FireSpell extends AbstractSpell.RangedAreaSpell implements Useable, DispenceableMagicEffect { public final StateMapList affected = new StateMapList(); - private static final IShape visual_effect_region = new Sphere(false, 0.5); - private static final IShape effect_range = new Sphere(false, 4); + private static final Shape visual_effect_region = new Sphere(false, 0.5); + private static final Shape effect_range = new Sphere(false, 4); public FireSpell() { affected.removeBlock(s -> s.getBlock() == Blocks.SNOW || s.getBlock() == Blocks.SNOW_BLOCK); @@ -60,7 +60,7 @@ public class FireSpell extends AbstractSpell.RangedAreaSpell implements IUseable affected.replaceBlock(Blocks.INFESTED_MOSSY_STONE_BRICKS, Blocks.INFESTED_STONE_BRICKS); affected.replaceBlock(Blocks.PODZOL, Blocks.COARSE_DIRT); affected.setProperty(Blocks.FARMLAND, FarmlandBlock.MOISTURE, 0); - affected.add(IStateMapping.build( + affected.add(StateMapping.build( s -> s.getBlock() == Blocks.DIRT, s -> (Math.random() <= 0.15 ? Blocks.COARSE_DIRT.getDefaultState() : s))); } @@ -81,12 +81,12 @@ public class FireSpell extends AbstractSpell.RangedAreaSpell implements IUseable } @Override - public boolean update(ICaster source) { + public boolean update(Caster source) { return false; } @Override - public void render(ICaster source) { + public void render(Caster source) { source.spawnParticles(visual_effect_region, source.getCurrentLevel() * 6, pos -> { source.addParticle(ParticleTypes.LARGE_SMOKE, pos, Vec3d.ZERO); }); 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 2591023d..f8c28872 100644 --- a/src/main/java/com/minelittlepony/unicopia/magic/spell/FlameSpell.java +++ b/src/main/java/com/minelittlepony/unicopia/magic/spell/FlameSpell.java @@ -1,15 +1,15 @@ package com.minelittlepony.unicopia.magic.spell; -import com.minelittlepony.unicopia.entity.player.IPlayer; +import com.minelittlepony.unicopia.entity.player.Pony; import com.minelittlepony.unicopia.magic.Affinity; -import com.minelittlepony.unicopia.magic.ICaster; -import com.minelittlepony.unicopia.magic.IHeldEffect; +import com.minelittlepony.unicopia.magic.Caster; +import com.minelittlepony.unicopia.magic.HeldMagicEffect; import net.minecraft.entity.damage.DamageSource; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.sound.SoundEvents; -public class FlameSpell extends AbstractSpell implements IHeldEffect { +public class FlameSpell extends AbstractSpell implements HeldMagicEffect { @Override public String getName() { @@ -27,16 +27,16 @@ public class FlameSpell extends AbstractSpell implements IHeldEffect { } @Override - public boolean update(ICaster source) { + public boolean update(Caster source) { return false; } @Override - public void render(ICaster source) { + public void render(Caster source) { } @Override - public void updateInHand(IPlayer caster, Affinity affinity) { + public void updateInHand(Pony caster, Affinity affinity) { PlayerEntity player = caster.getOwner(); if (player.age % 15 == 0) { 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 33f0f966..dbd05c9b 100644 --- a/src/main/java/com/minelittlepony/unicopia/magic/spell/GenericSpell.java +++ b/src/main/java/com/minelittlepony/unicopia/magic/spell/GenericSpell.java @@ -3,8 +3,8 @@ package com.minelittlepony.unicopia.magic.spell; import java.util.function.Supplier; import com.minelittlepony.unicopia.magic.Affinity; -import com.minelittlepony.unicopia.magic.ICaster; -import com.minelittlepony.unicopia.magic.IMagicEffect; +import com.minelittlepony.unicopia.magic.Caster; +import com.minelittlepony.unicopia.magic.MagicEffect; public class GenericSpell extends AbstractSpell { @@ -14,7 +14,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); } @@ -35,12 +35,12 @@ public class GenericSpell extends AbstractSpell { } @Override - public boolean update(ICaster source) { + public boolean update(Caster source) { return true; } @Override - public void render(ICaster source) { + public void render(Caster source) { // TODO: ParticleTypeRegistry // source.spawnParticles(UParticles.UNICORN_MAGIC, 1, getTint()); } 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 bbdfb8fa..f08c140e 100644 --- a/src/main/java/com/minelittlepony/unicopia/magic/spell/GlowingSpell.java +++ b/src/main/java/com/minelittlepony/unicopia/magic/spell/GlowingSpell.java @@ -1,9 +1,9 @@ package com.minelittlepony.unicopia.magic.spell; -import com.minelittlepony.unicopia.entity.player.IPlayer; +import com.minelittlepony.unicopia.entity.player.Pony; import com.minelittlepony.unicopia.magic.Affinity; -import com.minelittlepony.unicopia.magic.ICaster; -import com.minelittlepony.unicopia.magic.IHeldEffect; +import com.minelittlepony.unicopia.magic.Caster; +import com.minelittlepony.unicopia.magic.HeldMagicEffect; import net.minecraft.nbt.CompoundTag; import net.minecraft.util.math.BlockPos; @@ -12,17 +12,17 @@ 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 IHeldEffect { +public class GlowingSpell extends GenericSpell implements HeldMagicEffect { private BlockPos lastPos; - private ICaster source; + private Caster source; public GlowingSpell() { super("light", 0xF7FACB, Affinity.GOOD); } @Override - public void onPlaced(ICaster caster) { + public void onPlaced(Caster caster) { this.source = caster; } @@ -44,14 +44,14 @@ public class GlowingSpell extends GenericSpell implements IHeldEffect { } @Override - public void updateInHand(IPlayer caster, Affinity affinity) { + public void updateInHand(Pony caster, Affinity affinity) { if (caster.getSpecies().canCast()) { update(caster); } } @Override - public boolean update(ICaster source) { + public boolean update(Caster source) { this.source = source; BlockPos pos = source.getOrigin().down(); 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 00a25fd3..89eb892c 100644 --- a/src/main/java/com/minelittlepony/unicopia/magic/spell/IceSpell.java +++ b/src/main/java/com/minelittlepony/unicopia/magic/spell/IceSpell.java @@ -5,15 +5,15 @@ import javax.annotation.Nullable; import com.minelittlepony.unicopia.UMaterials; import com.minelittlepony.unicopia.magic.Affinity; import com.minelittlepony.unicopia.magic.CastResult; -import com.minelittlepony.unicopia.magic.ICaster; -import com.minelittlepony.unicopia.magic.IDispenceable; -import com.minelittlepony.unicopia.magic.IUseable; +import com.minelittlepony.unicopia.magic.Caster; +import com.minelittlepony.unicopia.magic.DispenceableMagicEffect; +import com.minelittlepony.unicopia.magic.Useable; import com.minelittlepony.unicopia.util.MagicalDamageSource; import com.minelittlepony.unicopia.util.PosHelper; import com.minelittlepony.unicopia.util.VecHelper; -import com.minelittlepony.unicopia.util.collection.IStateMapping; +import com.minelittlepony.unicopia.util.collection.StateMapping; import com.minelittlepony.unicopia.util.collection.StateMapList; -import com.minelittlepony.unicopia.util.shape.IShape; +import com.minelittlepony.unicopia.util.shape.Shape; import com.minelittlepony.unicopia.util.shape.Sphere; import net.minecraft.block.Block; @@ -35,18 +35,18 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Direction; import net.minecraft.world.World; -public class IceSpell extends AbstractSpell.RangedAreaSpell implements IUseable, IDispenceable { +public class IceSpell extends AbstractSpell.RangedAreaSpell implements Useable, DispenceableMagicEffect { public final StateMapList affected = new StateMapList(); public IceSpell() { - affected.add(IStateMapping.build( + affected.add(StateMapping.build( s -> s.getMaterial() == Material.WATER, s -> Blocks.ICE.getDefaultState())); - affected.add(IStateMapping.build( + affected.add(StateMapping.build( s -> s.getMaterial() == Material.LAVA, s -> Blocks.OBSIDIAN.getDefaultState())); - affected.add(IStateMapping.build( + affected.add(StateMapping.build( s -> s.getBlock() == Blocks.SNOW, s -> { s = s.cycle(SnowBlock.LAYERS); @@ -61,7 +61,7 @@ public class IceSpell extends AbstractSpell.RangedAreaSpell implements IUseable, } private final int rad = 3; - private final IShape effect_range = new Sphere(false, rad); + private final Shape effect_range = new Sphere(false, rad); @Override public String getName() { @@ -79,12 +79,12 @@ public class IceSpell extends AbstractSpell.RangedAreaSpell implements IUseable, } @Override - public boolean update(ICaster source) { + public boolean update(Caster source) { return false; } @Override - public void render(ICaster source) { + public void render(Caster source) { } @Override diff --git a/src/main/java/com/minelittlepony/unicopia/magic/spell/InfernoSpell.java b/src/main/java/com/minelittlepony/unicopia/magic/spell/InfernoSpell.java index da888663..be118cb5 100644 --- a/src/main/java/com/minelittlepony/unicopia/magic/spell/InfernoSpell.java +++ b/src/main/java/com/minelittlepony/unicopia/magic/spell/InfernoSpell.java @@ -2,11 +2,11 @@ package com.minelittlepony.unicopia.magic.spell; import com.minelittlepony.unicopia.magic.Affinity; import com.minelittlepony.unicopia.magic.CastResult; -import com.minelittlepony.unicopia.magic.ICaster; +import com.minelittlepony.unicopia.magic.Caster; import com.minelittlepony.unicopia.util.MagicalDamageSource; -import com.minelittlepony.unicopia.util.collection.IStateMapping; +import com.minelittlepony.unicopia.util.collection.StateMapping; import com.minelittlepony.unicopia.util.collection.StateMapList; -import com.minelittlepony.unicopia.util.shape.IShape; +import com.minelittlepony.unicopia.util.shape.Shape; import com.minelittlepony.unicopia.util.shape.Sphere; import net.minecraft.block.BlockState; @@ -27,22 +27,22 @@ public class InfernoSpell extends FireSpell { public final StateMapList hellFireAffected = new StateMapList(); public InfernoSpell() { - hellFireAffected.add(IStateMapping.build( + hellFireAffected.add(StateMapping.build( s -> s.getBlock() == Blocks.GRASS || s.getBlock() == Blocks.DIRT || s.getBlock() == Blocks.STONE, s -> Blocks.NETHERRACK.getDefaultState())); hellFireAffected.replaceBlock(Blocks.SAND, Blocks.SOUL_SAND); hellFireAffected.replaceBlock(Blocks.GRAVEL, Blocks.SOUL_SAND); - hellFireAffected.add(IStateMapping.build( + hellFireAffected.add(StateMapping.build( s -> s.getMaterial() == Material.WATER, s -> Blocks.OBSIDIAN.getDefaultState())); - hellFireAffected.add(IStateMapping.build( + hellFireAffected.add(StateMapping.build( s -> s.getBlock() instanceof PlantBlock, s -> Blocks.NETHER_WART.getDefaultState())); - hellFireAffected.add(IStateMapping.build( + hellFireAffected.add(StateMapping.build( s -> (s.getBlock() != Blocks.NETHER_QUARTZ_ORE) && (s.getBlock() instanceof OreBlock), s -> Blocks.NETHER_QUARTZ_ORE.getDefaultState())); } @@ -68,12 +68,12 @@ public class InfernoSpell extends FireSpell { } @Override - public boolean update(ICaster source) { + public boolean update(Caster source) { World w = source.getWorld(); if (!w.isClient) { int radius = 4 + (source.getCurrentLevel() * 4); - IShape shape = new Sphere(false, radius); + Shape shape = new Sphere(false, radius); Vec3d origin = source.getOriginVector(); diff --git a/src/main/java/com/minelittlepony/unicopia/magic/spell/NecromancySpell.java b/src/main/java/com/minelittlepony/unicopia/magic/spell/NecromancySpell.java index 981e868d..eb7440be 100644 --- a/src/main/java/com/minelittlepony/unicopia/magic/spell/NecromancySpell.java +++ b/src/main/java/com/minelittlepony/unicopia/magic/spell/NecromancySpell.java @@ -4,10 +4,10 @@ import java.util.List; import com.google.common.collect.Lists; import com.minelittlepony.unicopia.magic.Affinity; -import com.minelittlepony.unicopia.magic.ICaster; +import com.minelittlepony.unicopia.magic.Caster; import com.minelittlepony.unicopia.util.VecHelper; import com.minelittlepony.unicopia.util.WorldEvent; -import com.minelittlepony.unicopia.util.shape.IShape; +import com.minelittlepony.unicopia.util.shape.Shape; import com.minelittlepony.unicopia.util.shape.Sphere; import net.minecraft.entity.EntityType; @@ -43,7 +43,7 @@ public class NecromancySpell extends AbstractSpell.RangedAreaSpell { } @Override - public boolean update(ICaster source) { + public boolean update(Caster source) { if (source.getWorld().isClient || source.getWorld().getDifficulty() == Difficulty.PEACEFUL) { return true; @@ -54,7 +54,7 @@ public class NecromancySpell extends AbstractSpell.RangedAreaSpell { int radius = source.getCurrentLevel() + 1; - IShape affectRegion = new Sphere(false, radius * 4); + Shape affectRegion = new Sphere(false, radius * 4); if (source.getWorld().random.nextInt(100) != 0) { return true; @@ -84,7 +84,7 @@ public class NecromancySpell extends AbstractSpell.RangedAreaSpell { return true; } - protected void spawnMonster(ICaster source, Vec3d pos) { + protected void spawnMonster(Caster source, Vec3d pos) { int index = (int)MathHelper.nextDouble(source.getWorld().random, 0, spawns.size()); LivingEntity zombie = spawns.get(index).create(source.getWorld()); zombie.setPosition(pos.x, pos.y, pos.z); @@ -97,8 +97,8 @@ public class NecromancySpell extends AbstractSpell.RangedAreaSpell { } @Override - public void render(ICaster source) { - IShape affectRegion = new Sphere(false, (1 + source.getCurrentLevel()) * 4); + public void render(Caster source) { + Shape affectRegion = new Sphere(false, (1 + source.getCurrentLevel()) * 4); source.spawnParticles(affectRegion, 5, pos -> { if (!source.getWorld().isAir(new BlockPos(pos).down())) { 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 0234b2b6..a4d3e636 100644 --- a/src/main/java/com/minelittlepony/unicopia/magic/spell/PortalSpell.java +++ b/src/main/java/com/minelittlepony/unicopia/magic/spell/PortalSpell.java @@ -6,17 +6,16 @@ import java.util.UUID; import javax.annotation.Nullable; -import com.minelittlepony.unicopia.SpeciesList; import com.minelittlepony.unicopia.entity.IMagicals; import com.minelittlepony.unicopia.entity.SpellcastEntity; -import com.minelittlepony.unicopia.entity.player.IPlayer; +import com.minelittlepony.unicopia.entity.player.Pony; import com.minelittlepony.unicopia.magic.Affinity; import com.minelittlepony.unicopia.magic.CastResult; -import com.minelittlepony.unicopia.magic.ICaster; -import com.minelittlepony.unicopia.magic.IMagicEffect; -import com.minelittlepony.unicopia.magic.IUseable; -import com.minelittlepony.unicopia.util.InbtSerialisable; -import com.minelittlepony.unicopia.util.shape.IShape; +import com.minelittlepony.unicopia.magic.Caster; +import com.minelittlepony.unicopia.magic.MagicEffect; +import com.minelittlepony.unicopia.magic.Useable; +import com.minelittlepony.unicopia.util.NbtSerialisable; +import com.minelittlepony.unicopia.util.shape.Shape; import com.minelittlepony.unicopia.util.shape.Sphere; import net.minecraft.entity.Entity; @@ -32,11 +31,11 @@ import net.minecraft.util.math.Direction; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; -public class PortalSpell extends AbstractSpell.RangedAreaSpell implements IUseable { +public class PortalSpell extends AbstractSpell.RangedAreaSpell implements Useable { - private static final IShape portalZone_X = new Sphere(true, 1, 0, 2, 1); - private static final IShape portalZone_Y = new Sphere(true, 1, 2, 0, 2); - private static final IShape portalZone_Z = new Sphere(true, 1, 1, 2, 0); + private static final Shape portalZone_X = new Sphere(true, 1, 0, 2, 1); + private static final Shape portalZone_Y = new Sphere(true, 1, 2, 0, 2); + private static final Shape portalZone_Z = new Sphere(true, 1, 1, 2, 0); private static final Box TELEPORT_BOUNDS_VERT = new Box(-1, -0.5, -1, 1, 0.5, 1); private static final Box TELEPORT_BOUNDS = new Box(-0.5, -0.5, -0.5, 0.5, 3, 0.5); @@ -83,13 +82,13 @@ public class PortalSpell extends AbstractSpell.RangedAreaSpell implements IUseab destinationId = null; destinationPos = null; - getDestinationPortal().ifPresent(IMagicEffect::setDead); + getDestinationPortal().ifPresent(MagicEffect::setDead); } private PortalSpell bridge; @Override - public void onPlaced(ICaster caster) { + public void onPlaced(Caster caster) { world = caster.getWorld(); casterId = caster.getUniqueId(); position = caster.getOrigin(); @@ -109,7 +108,7 @@ public class PortalSpell extends AbstractSpell.RangedAreaSpell implements IUseab position = context.getBlockPos().offset(context.getSide()); axis = context.getPlayerFacing().getAxis(); - IPlayer prop = SpeciesList.instance().getPlayer(context.getPlayer()); + Pony prop = Pony.of(context.getPlayer()); PortalSpell other = prop.getEffect(PortalSpell.class, true); if (other != null) { @@ -148,7 +147,7 @@ public class PortalSpell extends AbstractSpell.RangedAreaSpell implements IUseab } @Override - public boolean update(ICaster source) { + public boolean update(Caster source) { if (!source.getWorld().isClient) { getDestinationPortal().ifPresent(dest -> source.getWorld().getEntities(Entity.class, getTeleportBounds().offset(source.getOrigin())).stream() @@ -160,14 +159,14 @@ public class PortalSpell extends AbstractSpell.RangedAreaSpell implements IUseab } @Override - public void render(ICaster source) { + public void render(Caster source) { // TODO: ParticleTypeRegistry /*source.spawnParticles(getPortalZone(), 10, pos -> { ParticleTypeRegistry.getTnstance().spawnParticle(UParticles.UNICORN_MAGIC, false, pos, 0, 0, 0, getTint()); });*/ } - public IShape getPortalZone() { + public Shape getPortalZone() { switch (axis) { case X: return portalZone_X; default: @@ -188,7 +187,7 @@ public class PortalSpell extends AbstractSpell.RangedAreaSpell implements IUseab return !(i instanceof IMagicals) && i.portalCooldown == 0; } - protected void teleportEntity(ICaster source, PortalSpell dest, Entity i) { + protected void teleportEntity(Caster source, PortalSpell dest, Entity i) { Direction.Axis xi = i.getHorizontalFacing().getAxis(); if (axis != Direction.Axis.Y && xi != axis) { @@ -234,7 +233,7 @@ public class PortalSpell extends AbstractSpell.RangedAreaSpell implements IUseab } if (i instanceof SpellcastEntity) { - IMagicEffect effect = ((SpellcastEntity) i).getEffect(); + MagicEffect effect = ((SpellcastEntity) i).getEffect(); if (effect instanceof PortalSpell) { return (PortalSpell)effect; @@ -272,7 +271,7 @@ public class PortalSpell extends AbstractSpell.RangedAreaSpell implements IUseab } if (i instanceof SpellcastEntity) { - IMagicEffect effect = ((SpellcastEntity) i).getEffect(); + MagicEffect effect = ((SpellcastEntity) i).getEffect(); if (effect instanceof PortalSpell) { sibling = (PortalSpell)effect; @@ -295,7 +294,7 @@ public class PortalSpell extends AbstractSpell.RangedAreaSpell implements IUseab super.toNBT(compound); if (destinationPos != null) { - compound.put("destination", InbtSerialisable.writeBlockPos(destinationPos)); + compound.put("destination", NbtSerialisable.writeBlockPos(destinationPos)); } if (casterId != null) { @@ -314,7 +313,7 @@ public class PortalSpell extends AbstractSpell.RangedAreaSpell implements IUseab super.fromNBT(compound); if (compound.containsKey("destination")) { - destinationPos = InbtSerialisable.readBlockPos(compound.getCompound("destination")); + destinationPos = NbtSerialisable.readBlockPos(compound.getCompound("destination")); } if (compound.containsKey("casterId")) { 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 0e4cb95a..ceab7fe0 100644 --- a/src/main/java/com/minelittlepony/unicopia/magic/spell/RevealingSpell.java +++ b/src/main/java/com/minelittlepony/unicopia/magic/spell/RevealingSpell.java @@ -2,9 +2,9 @@ package com.minelittlepony.unicopia.magic.spell; import com.minelittlepony.unicopia.UParticles; import com.minelittlepony.unicopia.magic.Affinity; -import com.minelittlepony.unicopia.magic.ICaster; -import com.minelittlepony.unicopia.magic.ISuppressable; -import com.minelittlepony.unicopia.util.shape.IShape; +import com.minelittlepony.unicopia.magic.Caster; +import com.minelittlepony.unicopia.magic.SuppressableEffect; +import com.minelittlepony.unicopia.util.shape.Shape; import com.minelittlepony.unicopia.util.shape.Sphere; import net.minecraft.sound.SoundCategory; @@ -25,14 +25,14 @@ public class RevealingSpell extends AbstractSpell { } @Override - public void onPlaced(ICaster source) { + public void onPlaced(Caster source) { source.setCurrentLevel(1); } @Override - public boolean update(ICaster source) { + public boolean update(Caster source) { source.findAllSpellsInRange(15).forEach(e -> { - ISuppressable spell = e.getEffect(ISuppressable.class, false); + SuppressableEffect spell = e.getEffect(SuppressableEffect.class, false); if (spell != null && spell.isVulnerable(source, this)) { spell.onSuppressed(source); @@ -44,8 +44,8 @@ public class RevealingSpell extends AbstractSpell { } @Override - public void render(ICaster source) { - IShape area = new Sphere(false, 15); + public void render(Caster source) { + Shape area = new Sphere(false, 15); source.spawnParticles(area, 5, pos -> { source.addParticle(UParticles.UNICORN_MAGIC, pos, Vec3d.ZERO); // getTint() 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 272c7cc3..084bcf9c 100644 --- a/src/main/java/com/minelittlepony/unicopia/magic/spell/ScorchSpell.java +++ b/src/main/java/com/minelittlepony/unicopia/magic/spell/ScorchSpell.java @@ -4,10 +4,10 @@ import javax.annotation.Nullable; import com.minelittlepony.unicopia.UParticles; import com.minelittlepony.unicopia.magic.Affinity; -import com.minelittlepony.unicopia.magic.ICaster; -import com.minelittlepony.unicopia.magic.ITossedEffect; +import com.minelittlepony.unicopia.magic.Caster; +import com.minelittlepony.unicopia.magic.TossedMagicEffect; import com.minelittlepony.unicopia.util.PosHelper; -import com.minelittlepony.unicopia.util.projectile.IAdvancedProjectile; +import com.minelittlepony.unicopia.util.projectile.AdvancedProjectile; import com.minelittlepony.unicopia.util.shape.Sphere; import net.minecraft.block.BlockState; @@ -15,7 +15,7 @@ import net.minecraft.particle.ParticleTypes; import net.minecraft.util.math.BlockPos; import net.minecraft.world.explosion.Explosion.DestructionType; -public class ScorchSpell extends FireSpell implements ITossedEffect { +public class ScorchSpell extends FireSpell implements TossedMagicEffect { @Override public String getName() { @@ -33,7 +33,7 @@ public class ScorchSpell extends FireSpell implements ITossedEffect { } @Override - public boolean update(ICaster source) { + public boolean update(Caster source) { BlockPos pos = PosHelper.findSolidGroundAt(source.getWorld(), source.getOrigin()); @@ -54,7 +54,7 @@ public class ScorchSpell extends FireSpell implements ITossedEffect { } @Override - public void render(ICaster source) { + public void render(Caster source) { source.spawnParticles(ParticleTypes.FLAME, 3); source.spawnParticles(UParticles.UNICORN_MAGIC, 3); // getTint() } @@ -66,8 +66,8 @@ public class ScorchSpell extends FireSpell implements ITossedEffect { @Override @Nullable - public IAdvancedProjectile toss(ICaster caster) { - IAdvancedProjectile projectile = ITossedEffect.super.toss(caster); + public AdvancedProjectile toss(Caster caster) { + AdvancedProjectile projectile = TossedMagicEffect.super.toss(caster); if (projectile != null) { projectile.setGravity(false); @@ -77,7 +77,7 @@ public class ScorchSpell extends FireSpell implements ITossedEffect { } @Override - public void onImpact(ICaster caster, BlockPos pos, BlockState state) { + public void onImpact(Caster caster, BlockPos pos, BlockState state) { if (caster.isLocal()) { caster.getWorld().createExplosion(caster.getOwner(), pos.getX(), pos.getY(), pos.getZ(), 2, DestructionType.DESTROY); } 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 80820b06..be0358fd 100644 --- a/src/main/java/com/minelittlepony/unicopia/magic/spell/ShieldSpell.java +++ b/src/main/java/com/minelittlepony/unicopia/magic/spell/ShieldSpell.java @@ -4,12 +4,11 @@ import java.util.List; import java.util.stream.Collectors; import com.minelittlepony.unicopia.EquinePredicates; -import com.minelittlepony.unicopia.SpeciesList; import com.minelittlepony.unicopia.UParticles; -import com.minelittlepony.unicopia.entity.player.IPlayer; +import com.minelittlepony.unicopia.entity.player.Pony; import com.minelittlepony.unicopia.magic.Affinity; -import com.minelittlepony.unicopia.magic.IAttachedEffect; -import com.minelittlepony.unicopia.magic.ICaster; +import com.minelittlepony.unicopia.magic.AttachedMagicEffect; +import com.minelittlepony.unicopia.magic.Caster; import com.minelittlepony.unicopia.util.particles.ParticleConnection; import com.minelittlepony.unicopia.util.projectile.ProjectileUtil; import com.minelittlepony.unicopia.util.shape.Sphere; @@ -20,7 +19,7 @@ import net.minecraft.entity.player.PlayerEntity; import net.minecraft.sound.SoundEvents; import net.minecraft.util.math.Vec3d; -public class ShieldSpell extends AbstractSpell.RangedAreaSpell implements IAttachedEffect { +public class ShieldSpell extends AbstractSpell.RangedAreaSpell implements AttachedMagicEffect { private final ParticleConnection particlEffect = new ParticleConnection(); @@ -40,12 +39,12 @@ public class ShieldSpell extends AbstractSpell.RangedAreaSpell implements IAttac } @Override - public void renderOnPerson(ICaster source) { + public void renderOnPerson(Caster source) { render(source); } @Override - public void render(ICaster source) { + public void render(Caster source) { float radius = 4 + (source.getCurrentLevel() * 2); source.spawnParticles(new Sphere(true, radius), (int)(radius * 6), pos -> { @@ -61,7 +60,7 @@ public class ShieldSpell extends AbstractSpell.RangedAreaSpell implements IAttac } @Override - public boolean updateOnPerson(ICaster source) { + public boolean updateOnPerson(Caster source) { int costMultiplier = applyEntities(source); if (costMultiplier > 0) { if (source.getOwner().age % 20 == 0) { @@ -79,17 +78,17 @@ public class ShieldSpell extends AbstractSpell.RangedAreaSpell implements IAttac return !isDead(); } - public double getDrawDropOffRange(ICaster source) { + public double getDrawDropOffRange(Caster source) { return 4 + (source.getCurrentLevel() * 2); } @Override - public boolean update(ICaster source) { + public boolean update(Caster source) { applyEntities(source); return true; } - protected int applyEntities(ICaster source) { + protected int applyEntities(Caster source) { double radius = getDrawDropOffRange(source); Entity owner = source.getOwner(); @@ -115,7 +114,7 @@ public class ShieldSpell extends AbstractSpell.RangedAreaSpell implements IAttac return targets.size(); } - protected void applyRadialEffect(ICaster source, Entity target, double distance, double radius) { + protected void applyRadialEffect(Caster source, Entity target, double distance, double radius) { Vec3d pos = source.getOriginVector(); if (ProjectileUtil.isProjectile(target)) { @@ -131,7 +130,7 @@ public class ShieldSpell extends AbstractSpell.RangedAreaSpell implements IAttac double force = Math.max(0.1, radius / 4); if (source.getAffinity() != Affinity.BAD && target instanceof PlayerEntity) { - force *= calculateAdjustedForce(SpeciesList.instance().getPlayer((PlayerEntity)target)); + force *= calculateAdjustedForce(Pony.of((PlayerEntity)target)); } else { force *= 0.75; } @@ -156,7 +155,7 @@ public class ShieldSpell extends AbstractSpell.RangedAreaSpell implements IAttac /** * Returns a force to apply based on the given player's given race. */ - protected double calculateAdjustedForce(IPlayer player) { + protected double calculateAdjustedForce(Pony player) { double force = 0.75; if (player.getSpecies().canUseEarth()) { diff --git a/src/main/java/com/minelittlepony/unicopia/magic/spell/SiphoningSpell.java b/src/main/java/com/minelittlepony/unicopia/magic/spell/SiphoningSpell.java index 8ef97ea4..36736f1f 100644 --- a/src/main/java/com/minelittlepony/unicopia/magic/spell/SiphoningSpell.java +++ b/src/main/java/com/minelittlepony/unicopia/magic/spell/SiphoningSpell.java @@ -4,10 +4,9 @@ import java.util.List; import java.util.stream.Collectors; import com.minelittlepony.unicopia.Race; -import com.minelittlepony.unicopia.SpeciesList; -import com.minelittlepony.unicopia.entity.player.IPlayer; +import com.minelittlepony.unicopia.entity.player.Pony; import com.minelittlepony.unicopia.magic.Affinity; -import com.minelittlepony.unicopia.magic.ICaster; +import com.minelittlepony.unicopia.magic.Caster; import com.minelittlepony.unicopia.util.MagicalDamageSource; import com.minelittlepony.unicopia.util.shape.Sphere; @@ -31,7 +30,7 @@ public class SiphoningSpell extends AbstractSpell.RangedAreaSpell { } @Override - public boolean update(ICaster source) { + public boolean update(Caster source) { int radius = 4 + source.getCurrentLevel(); @@ -57,7 +56,7 @@ public class SiphoningSpell extends AbstractSpell.RangedAreaSpell { float dealt = Math.min(e.getHealth(), attackAmount); if (e instanceof PlayerEntity) { - IPlayer player = SpeciesList.instance().getPlayer((PlayerEntity)e); + Pony player = Pony.of((PlayerEntity)e); Race race = player.getSpecies(); @@ -107,7 +106,7 @@ public class SiphoningSpell extends AbstractSpell.RangedAreaSpell { } @Override - public void render(ICaster source) { + public void render(Caster source) { int radius = 4 + source.getCurrentLevel(); Vec3d origin = source.getOriginVector(); 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 a0e65212..c6ab8ecf 100644 --- a/src/main/java/com/minelittlepony/unicopia/magic/spell/SpellRegistry.java +++ b/src/main/java/com/minelittlepony/unicopia/magic/spell/SpellRegistry.java @@ -12,10 +12,10 @@ import javax.annotation.Nullable; import javax.annotation.concurrent.Immutable; import com.minelittlepony.unicopia.magic.Affinity; -import com.minelittlepony.unicopia.magic.IDispenceable; -import com.minelittlepony.unicopia.magic.IHeldEffect; -import com.minelittlepony.unicopia.magic.IMagicEffect; -import com.minelittlepony.unicopia.magic.IUseable; +import com.minelittlepony.unicopia.magic.DispenceableMagicEffect; +import com.minelittlepony.unicopia.magic.HeldMagicEffect; +import com.minelittlepony.unicopia.magic.MagicEffect; +import com.minelittlepony.unicopia.magic.Useable; import net.minecraft.item.ItemStack; import net.minecraft.nbt.CompoundTag; @@ -54,7 +54,7 @@ public class SpellRegistry { } @Nullable - public IMagicEffect getSpellFromName(String name) { + public MagicEffect 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) { + public T copyInstance(T effect) { return (T)createEffectFromNBT(serializeEffectToNBT(effect)); } @Nullable - public IMagicEffect createEffectFromNBT(CompoundTag compound) { + public MagicEffect createEffectFromNBT(CompoundTag compound) { if (compound.containsKey("effect_id")) { - IMagicEffect effect = getSpellFromName(compound.getString("effect_id")); + MagicEffect effect = getSpellFromName(compound.getString("effect_id")); if (effect != null) { effect.fromNBT(compound); @@ -82,7 +82,7 @@ public class SpellRegistry { return null; } - public CompoundTag serializeEffectToNBT(IMagicEffect effect) { + public CompoundTag serializeEffectToNBT(MagicEffect effect) { CompoundTag compound = effect.toNBT(); compound.putString("effect_id", effect.getName()); @@ -95,26 +95,26 @@ public class SpellRegistry { } @Nullable - public IDispenceable getDispenseActionFrom(ItemStack stack) { + public DispenceableMagicEffect getDispenseActionFrom(ItemStack stack) { return getEntryFromStack(stack).map(Entry::dispensable).orElse(null); } @Nullable - public IUseable getUseActionFrom(ItemStack stack) { + public Useable getUseActionFrom(ItemStack stack) { return getEntryFromStack(stack).map(Entry::useable).orElse(null); } @Nullable - public IHeldEffect getHeldFrom(ItemStack stack) { + public HeldMagicEffect getHeldFrom(ItemStack stack) { return getEntryFromStack(stack).map(Entry::holdable).orElse(null); } @Nullable - public IMagicEffect getSpellFrom(ItemStack stack) { + public MagicEffect 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 IDispenceable; - this.canUse = inst instanceof IUseable; - this.canHold = inst instanceof IHeldEffect; + this.canDispense = inst instanceof DispenceableMagicEffect; + this.canUse = inst instanceof Useable; + this.canHold = inst instanceof HeldMagicEffect; this.affinity = inst.getAffinity(); if (inst.isCraftable()) { @@ -204,28 +204,28 @@ public class SpellRegistry { entries.put(inst.getName(), this); } - IUseable useable() { + Useable useable() { if (!canUse) { return null; } - return (IUseable)create(); + return (Useable)create(); } - IHeldEffect holdable() { + HeldMagicEffect holdable() { if (!canHold) { return null; } - return (IHeldEffect)create(); + return (HeldMagicEffect)create(); } - IDispenceable dispensable() { + DispenceableMagicEffect dispensable() { if (!canDispense) { return null; } - return (IDispenceable)create(); + return (DispenceableMagicEffect)create(); } T create() { diff --git a/src/main/java/com/minelittlepony/unicopia/mixin/MixinItemEntity.java b/src/main/java/com/minelittlepony/unicopia/mixin/MixinItemEntity.java index 374f9178..68fb21a2 100644 --- a/src/main/java/com/minelittlepony/unicopia/mixin/MixinItemEntity.java +++ b/src/main/java/com/minelittlepony/unicopia/mixin/MixinItemEntity.java @@ -15,17 +15,17 @@ import net.minecraft.entity.ItemEntity; @Mixin(ItemEntity.class) public abstract class MixinItemEntity extends Entity implements IItemEntity { - private final ItemEntityCapabilities caster = createRaceContainer(); + private final ItemEntityCapabilities caster = create(); private MixinItemEntity() { super(null, null); } @Override - public ItemEntityCapabilities createRaceContainer() { + public ItemEntityCapabilities create() { return new ItemEntityCapabilities((ItemEntity)(Object)this); } @Override - public ItemEntityCapabilities getRaceContainer() { + public ItemEntityCapabilities get() { return caster; } diff --git a/src/main/java/com/minelittlepony/unicopia/mixin/MixinLivingEntity.java b/src/main/java/com/minelittlepony/unicopia/mixin/MixinLivingEntity.java index edbb10a8..516259d9 100644 --- a/src/main/java/com/minelittlepony/unicopia/mixin/MixinLivingEntity.java +++ b/src/main/java/com/minelittlepony/unicopia/mixin/MixinLivingEntity.java @@ -6,27 +6,27 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; -import com.minelittlepony.unicopia.ducks.RaceContainerHolder; -import com.minelittlepony.unicopia.entity.IEntity; +import com.minelittlepony.unicopia.ducks.PonyContainer; +import com.minelittlepony.unicopia.entity.Ponylike; import com.minelittlepony.unicopia.entity.LivingEntityCapabilities; import net.minecraft.entity.Entity; import net.minecraft.entity.LivingEntity; @Mixin(LivingEntity.class) -public abstract class MixinLivingEntity extends Entity implements RaceContainerHolder { +public abstract class MixinLivingEntity extends Entity implements PonyContainer { - private final IEntity caster = createRaceContainer(); + private final Ponylike caster = create(); private MixinLivingEntity() { super(null, null); } @Override - public IEntity createRaceContainer() { + public Ponylike create() { return new LivingEntityCapabilities((LivingEntity)(Object)this); } @Override - public IEntity getRaceContainer() { + public Ponylike get() { return caster; } diff --git a/src/main/java/com/minelittlepony/unicopia/mixin/MixinPlayerEntity.java b/src/main/java/com/minelittlepony/unicopia/mixin/MixinPlayerEntity.java index d9136837..c6970eaa 100644 --- a/src/main/java/com/minelittlepony/unicopia/mixin/MixinPlayerEntity.java +++ b/src/main/java/com/minelittlepony/unicopia/mixin/MixinPlayerEntity.java @@ -7,11 +7,10 @@ import org.spongepowered.asm.mixin.injection.ModifyArg; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; -import com.minelittlepony.unicopia.SpeciesList; -import com.minelittlepony.unicopia.ducks.RaceContainerHolder; -import com.minelittlepony.unicopia.entity.IEntity; -import com.minelittlepony.unicopia.entity.player.IPlayer; -import com.minelittlepony.unicopia.entity.player.PlayerCapabilities; +import com.minelittlepony.unicopia.ducks.PonyContainer; +import com.minelittlepony.unicopia.entity.Ponylike; +import com.minelittlepony.unicopia.entity.player.Pony; +import com.minelittlepony.unicopia.entity.player.PlayerImpl; import com.mojang.datafixers.util.Either; import net.minecraft.entity.ItemEntity; @@ -23,19 +22,19 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.world.GameMode; @Mixin(PlayerEntity.class) -public abstract class MixinPlayerEntity extends LivingEntity implements RaceContainerHolder { +public abstract class MixinPlayerEntity extends LivingEntity implements PonyContainer { private MixinPlayerEntity() { super(null, null); } @Override - public IEntity createRaceContainer() { - return new PlayerCapabilities((PlayerEntity)(Object)this); + public Ponylike create() { + return new PlayerImpl((PlayerEntity)(Object)this); } @ModifyArg(method = "Lnet/minecraft/entity/LivingEntity;handleFallDamage(FF)V", at = @At("HEAD"), index = 0) private float onHandleFallDamage(float distance) { - return getRaceContainer().onImpact(distance); + return get().onImpact(distance); } @Inject(method = "trySleep(Lnet/minecraft/util/math/BlockPos;)Lcom/mojang/datafixers/util/Either;", @@ -43,7 +42,7 @@ public abstract class MixinPlayerEntity extends LivingEntity implements RaceCont cancellable = true) private void onTrySleep(BlockPos pos, CallbackInfoReturnable> info) { if (!world.isClient) { - Either result = getRaceContainer().trySleep(pos); + Either result = get().trySleep(pos); result.ifLeft(reason -> info.setReturnValue(result)); } @@ -52,14 +51,14 @@ public abstract class MixinPlayerEntity extends LivingEntity implements RaceCont @Inject(method = "dropItem(Lnet/minecraft/item/ItemStack;ZZ)Lnet/minecraft/entity/ItemEntity;", at = @At("HEAD")) private void onDropItem(ItemStack itemStack_1, boolean a, boolean b, CallbackInfoReturnable info) { - SpeciesList.instance().getForEntity(info.getReturnValue()).ifPresent(o -> { - o.getRaceContainer().setSpecies(getRaceContainer().getSpecies()); + PonyContainer.of(info.getReturnValue()).ifPresent(o -> { + o.get().setSpecies(get().getSpecies()); }); } @Inject(method = "setGameMode(Lnet/minecraft/world/GameMode;)V", at = @At("RETURN")) public void setGameMode(GameMode mode, CallbackInfo info) { - getRaceContainer().setSpecies(getRaceContainer().getSpecies()); + get().setSpecies(get().getSpecies()); } } diff --git a/src/main/java/com/minelittlepony/unicopia/mixin/MixinProjectileEntity.java b/src/main/java/com/minelittlepony/unicopia/mixin/MixinProjectileEntity.java index 8e7019bb..8ffb0fab 100644 --- a/src/main/java/com/minelittlepony/unicopia/mixin/MixinProjectileEntity.java +++ b/src/main/java/com/minelittlepony/unicopia/mixin/MixinProjectileEntity.java @@ -5,7 +5,7 @@ import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -import com.minelittlepony.unicopia.SpeciesList; +import com.minelittlepony.unicopia.ducks.PonyContainer; import net.minecraft.entity.Entity; import net.minecraft.entity.projectile.Projectile; @@ -21,9 +21,8 @@ public abstract class MixinProjectileEntity extends Entity implements Projectile at = @At("HEAD"), cancellable = true) private void onOnEntityHit(EntityHitResult hit, CallbackInfo info) { - SpeciesList.instance().getForEntity(hit.getEntity()) - .ifPresent(container -> { - if (container.getRaceContainer().onProjectileImpact((ProjectileEntity)(Object)this)) { + PonyContainer.of(hit.getEntity()).ifPresent(container -> { + if (container.get().onProjectileImpact((ProjectileEntity)(Object)this)) { info.cancel(); } }); diff --git a/src/main/java/com/minelittlepony/unicopia/network/EffectSync.java b/src/main/java/com/minelittlepony/unicopia/network/EffectSync.java index fdefea27..116ea4f7 100644 --- a/src/main/java/com/minelittlepony/unicopia/network/EffectSync.java +++ b/src/main/java/com/minelittlepony/unicopia/network/EffectSync.java @@ -2,8 +2,8 @@ package com.minelittlepony.unicopia.network; import javax.annotation.Nullable; -import com.minelittlepony.unicopia.magic.ICaster; -import com.minelittlepony.unicopia.magic.IMagicEffect; +import com.minelittlepony.unicopia.magic.Caster; +import com.minelittlepony.unicopia.magic.MagicEffect; import com.minelittlepony.unicopia.magic.spell.SpellRegistry; import net.minecraft.entity.data.TrackedData; @@ -19,13 +19,13 @@ import net.minecraft.nbt.CompoundTag; public class EffectSync { @Nullable - private IMagicEffect effect; + private MagicEffect effect; - private final ICaster owned; + private final Caster owned; private final TrackedData param; - public EffectSync(ICaster owned, TrackedData param) { + public EffectSync(Caster owned, TrackedData param) { this.owned = owned; this.param = param; } @@ -55,7 +55,7 @@ public class EffectSync { } @SuppressWarnings("unchecked") - public E get(Class type, boolean update) { + public E get(Class type, boolean update) { if (!update) { if (effect == null || type == null || type.isAssignableFrom(effect.getClass())) { return (E)effect; @@ -93,7 +93,7 @@ public class EffectSync { return null; } - public void set(@Nullable IMagicEffect effect) { + public void set(@Nullable MagicEffect effect) { if (this.effect != null && this.effect != effect) { this.effect.setDead(); } diff --git a/src/main/java/com/minelittlepony/unicopia/network/MsgPlayerAbility.java b/src/main/java/com/minelittlepony/unicopia/network/MsgPlayerAbility.java index 54fa29b9..0a81947b 100644 --- a/src/main/java/com/minelittlepony/unicopia/network/MsgPlayerAbility.java +++ b/src/main/java/com/minelittlepony/unicopia/network/MsgPlayerAbility.java @@ -7,10 +7,9 @@ import com.google.gson.GsonBuilder; import com.google.gson.annotations.Expose; import com.minelittlepony.jumpingcastle.api.Channel; import com.minelittlepony.jumpingcastle.api.Message; -import com.minelittlepony.unicopia.SpeciesList; import com.minelittlepony.unicopia.ability.Ability; import com.minelittlepony.unicopia.ability.Abilities; -import com.minelittlepony.unicopia.entity.player.IPlayer; +import com.minelittlepony.unicopia.entity.player.Pony; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.server.MinecraftServer; @@ -38,7 +37,7 @@ public class MsgPlayerAbility implements Message, Message.Handler void apply(Ability power, Channel channel) { MinecraftServer server = channel.getServer(); - IPlayer player = SpeciesList.instance().getPlayer(server.getPlayerManager().getPlayer(senderId)); + Pony player = Pony.of(server.getPlayerManager().getPlayer(senderId)); if (player == null) { return; } diff --git a/src/main/java/com/minelittlepony/unicopia/network/MsgPlayerCapabilities.java b/src/main/java/com/minelittlepony/unicopia/network/MsgPlayerCapabilities.java index 30d8321f..dd900b4d 100644 --- a/src/main/java/com/minelittlepony/unicopia/network/MsgPlayerCapabilities.java +++ b/src/main/java/com/minelittlepony/unicopia/network/MsgPlayerCapabilities.java @@ -11,9 +11,8 @@ import com.google.gson.annotations.Expose; import com.minelittlepony.jumpingcastle.api.Channel; import com.minelittlepony.jumpingcastle.api.Message; import com.minelittlepony.unicopia.Race; -import com.minelittlepony.unicopia.SpeciesList; import com.minelittlepony.unicopia.UnicopiaCore; -import com.minelittlepony.unicopia.entity.player.IPlayer; +import com.minelittlepony.unicopia.entity.player.Pony; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.server.MinecraftServer; @@ -36,7 +35,7 @@ public class MsgPlayerCapabilities implements Message, Message.Handler 0) { try (ByteArrayInputStream input = new ByteArrayInputStream(compoundTag)) { diff --git a/src/main/java/com/minelittlepony/unicopia/network/MsgRequestCapabilities.java b/src/main/java/com/minelittlepony/unicopia/network/MsgRequestCapabilities.java index 80d2d942..1fca1342 100644 --- a/src/main/java/com/minelittlepony/unicopia/network/MsgRequestCapabilities.java +++ b/src/main/java/com/minelittlepony/unicopia/network/MsgRequestCapabilities.java @@ -6,9 +6,8 @@ import com.google.gson.annotations.Expose; import com.minelittlepony.jumpingcastle.api.Channel; import com.minelittlepony.jumpingcastle.api.Message; import com.minelittlepony.unicopia.Race; -import com.minelittlepony.unicopia.SpeciesList; import com.minelittlepony.unicopia.UnicopiaCore; -import com.minelittlepony.unicopia.entity.player.IPlayer; +import com.minelittlepony.unicopia.entity.player.Pony; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.server.MinecraftServer; @@ -30,7 +29,7 @@ public class MsgRequestCapabilities implements Message, Message.Handler use(World world, PlayerEntity player, Hand hand) { - Race race = SpeciesList.instance().getPlayer(player).getSpecies(); + Race race = Pony.of(player).getSpecies(); if (race.isDefault() || race == Race.CHANGELING) { return new TypedActionResult<>(ActionResult.FAIL, player.getStackInHand(hand)); diff --git a/src/main/java/com/minelittlepony/unicopia/toxin/ToxicItem.java b/src/main/java/com/minelittlepony/unicopia/toxin/ToxicItem.java index 6baedc10..b2ecd4a1 100644 --- a/src/main/java/com/minelittlepony/unicopia/toxin/ToxicItem.java +++ b/src/main/java/com/minelittlepony/unicopia/toxin/ToxicItem.java @@ -5,8 +5,8 @@ import java.util.List; import javax.annotation.Nullable; import com.minelittlepony.unicopia.Race; -import com.minelittlepony.unicopia.SpeciesList; import com.minelittlepony.unicopia.UEffects; +import com.minelittlepony.unicopia.entity.player.Pony; import net.minecraft.client.item.TooltipContext; import net.minecraft.entity.LivingEntity; @@ -60,7 +60,7 @@ public class ToxicItem extends Item implements Toxic, Toxin { super.finishUsing(stack, world, entity); if (entity instanceof PlayerEntity) { - Race race = SpeciesList.instance().getPlayer((PlayerEntity)entity).getSpecies(); + Race race = Pony.of((PlayerEntity)entity).getSpecies(); Toxicity toxicity = (race.isDefault() || race == Race.CHANGELING) ? Toxicity.LETHAL : getToxicity(stack); addSecondaryEffects((PlayerEntity)entity, toxicity, stack); @@ -71,7 +71,7 @@ public class ToxicItem extends Item implements Toxic, Toxin { @Override public TypedActionResult use(World world, PlayerEntity player, Hand hand) { - Race race = SpeciesList.instance().getPlayer(player).getSpecies(); + Race race = Pony.of(player).getSpecies(); if (race.isDefault() || race == Race.CHANGELING) { return new TypedActionResult<>(ActionResult.FAIL, player.getStackInHand(hand)); diff --git a/src/main/java/com/minelittlepony/unicopia/util/InbtSerialisable.java b/src/main/java/com/minelittlepony/unicopia/util/NbtSerialisable.java similarity index 96% rename from src/main/java/com/minelittlepony/unicopia/util/InbtSerialisable.java rename to src/main/java/com/minelittlepony/unicopia/util/NbtSerialisable.java index 8e58e752..7dc746db 100644 --- a/src/main/java/com/minelittlepony/unicopia/util/InbtSerialisable.java +++ b/src/main/java/com/minelittlepony/unicopia/util/NbtSerialisable.java @@ -3,7 +3,7 @@ package com.minelittlepony.unicopia.util; import net.minecraft.nbt.CompoundTag; import net.minecraft.util.math.BlockPos; -public interface InbtSerialisable { +public interface NbtSerialisable { /** * Called to save this to nbt to persist state on file or to transmit over the network * diff --git a/src/main/java/com/minelittlepony/unicopia/util/PosHelper.java b/src/main/java/com/minelittlepony/unicopia/util/PosHelper.java index 2eef2b6b..d67b2f68 100644 --- a/src/main/java/com/minelittlepony/unicopia/util/PosHelper.java +++ b/src/main/java/com/minelittlepony/unicopia/util/PosHelper.java @@ -6,7 +6,7 @@ import java.util.function.Predicate; import java.util.stream.Stream; import com.google.common.collect.Lists; -import com.minelittlepony.unicopia.util.shape.IShape; +import com.minelittlepony.unicopia.util.shape.Shape; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Direction; @@ -60,7 +60,7 @@ public class PosHelper { }); } - public static Iterators getAllInRegionMutable(BlockPos origin, IShape shape) { + public static Iterators getAllInRegionMutable(BlockPos origin, Shape shape) { Iterator iter = BlockPos.iterate( origin.add(new BlockPos(shape.getLowerBound())), origin.add(new BlockPos(shape.getUpperBound())) diff --git a/src/main/java/com/minelittlepony/unicopia/util/collection/ReversableStateMapList.java b/src/main/java/com/minelittlepony/unicopia/util/collection/ReversableStateMapList.java index 8dd91e75..0cb2eb17 100644 --- a/src/main/java/com/minelittlepony/unicopia/util/collection/ReversableStateMapList.java +++ b/src/main/java/com/minelittlepony/unicopia/util/collection/ReversableStateMapList.java @@ -9,7 +9,7 @@ public class ReversableStateMapList extends StateMapList { return inverse; } - public boolean add(IStateMapping mapping) { + public boolean add(StateMapping mapping) { inverse.add(mapping.inverse()); return super.add(mapping); } diff --git a/src/main/java/com/minelittlepony/unicopia/util/collection/StateMapList.java b/src/main/java/com/minelittlepony/unicopia/util/collection/StateMapList.java index 8ec83ff7..f37a88bc 100644 --- a/src/main/java/com/minelittlepony/unicopia/util/collection/StateMapList.java +++ b/src/main/java/com/minelittlepony/unicopia/util/collection/StateMapList.java @@ -14,23 +14,23 @@ import net.minecraft.state.property.Property; * A collection of block-state mappings. * */ -public class StateMapList extends ArrayList { +public class StateMapList extends ArrayList { private static final long serialVersionUID = 2602772651960588745L; public void removeBlock(Predicate mapper) { - add(IStateMapping.removeBlock(mapper)); + add(StateMapping.removeBlock(mapper)); } public void replaceBlock(Block from, Block to) { - add(IStateMapping.replaceBlock(from, to)); + add(StateMapping.replaceBlock(from, to)); } public > void replaceProperty(Block block, Property property, T from, T to) { - add(IStateMapping.replaceProperty(block, property, from, to)); + add(StateMapping.replaceProperty(block, property, from, to)); } public > void setProperty(Block block, Property property, T to) { - add(IStateMapping.setProperty(block, property, to)); + add(StateMapping.setProperty(block, property, to)); } /** @@ -53,7 +53,7 @@ public class StateMapList extends ArrayList { */ @Nonnull public BlockState getConverted(@Nonnull BlockState state) { - for (IStateMapping i : this) { + for (StateMapping i : this) { if (i.test(state)) { return i.apply(state); } diff --git a/src/main/java/com/minelittlepony/unicopia/util/collection/IStateMapping.java b/src/main/java/com/minelittlepony/unicopia/util/collection/StateMapping.java similarity index 70% rename from src/main/java/com/minelittlepony/unicopia/util/collection/IStateMapping.java rename to src/main/java/com/minelittlepony/unicopia/util/collection/StateMapping.java index 0565a1b8..821957e9 100644 --- a/src/main/java/com/minelittlepony/unicopia/util/collection/IStateMapping.java +++ b/src/main/java/com/minelittlepony/unicopia/util/collection/StateMapping.java @@ -10,41 +10,41 @@ import net.minecraft.block.BlockState; import net.minecraft.block.Blocks; import net.minecraft.state.property.Property; -public interface IStateMapping extends Predicate, Function { +public interface StateMapping extends Predicate, Function { - static IStateMapping removeBlock(Predicate mapper) { + static StateMapping removeBlock(Predicate mapper) { return build( mapper, s -> Blocks.AIR.getDefaultState()); } - static IStateMapping replaceBlock(Block from, Block to) { + static StateMapping replaceBlock(Block from, Block to) { return build( s -> s.getBlock() == from, s -> to.getDefaultState(), s -> replaceBlock(to, from)); } - static > IStateMapping replaceProperty(Block block, Property property, T from, T to) { + static > StateMapping replaceProperty(Block block, Property property, T from, T to) { return build( s -> s.getBlock() == block && s.get(property) == from, s -> s.with(property, to), s -> replaceProperty(block, property, to, from)); } - static > IStateMapping setProperty(Block block, Property property, T to) { + static > StateMapping setProperty(Block block, Property property, T to) { return build( s -> s.getBlock() == block, s -> s.with(property, to)); } - static IStateMapping build(Predicate predicate, Function converter) { + static StateMapping build(Predicate predicate, Function converter) { return build(predicate, converter, s -> s); } - static IStateMapping build(Predicate predicate, Function converter, Function inverter) { - return new IStateMapping() { - private IStateMapping inverse; + static StateMapping build(Predicate predicate, Function converter, Function inverter) { + return new StateMapping() { + private StateMapping inverse; @Override public boolean test(BlockState state) { @@ -57,7 +57,7 @@ public interface IStateMapping extends Predicate, Function, Function particleEffect = Optional.empty(); + private Optional particleEffect = Optional.empty(); - public Optional ifMissing(ICaster source, Supplier> constructor) { - particleEffect.filter(IAttachableParticle::isStillAlive).orElseGet(() -> { + public Optional ifMissing(Caster source, Supplier> constructor) { + particleEffect.filter(AttachableParticle::isStillAlive).orElseGet(() -> { particleEffect = constructor.get(); particleEffect.ifPresent(p -> p.attachTo(source)); return null; @@ -22,11 +22,11 @@ public class ParticleConnection { return particleEffect; } - public interface IAttachableParticle { + public interface AttachableParticle { boolean isStillAlive(); - void attachTo(ICaster caster); + void attachTo(Caster caster); void setAttribute(int key, Object value); } diff --git a/src/main/java/com/minelittlepony/unicopia/util/particles/ParticleSource.java b/src/main/java/com/minelittlepony/unicopia/util/particles/ParticleSource.java index cca28e7c..99b48551 100644 --- a/src/main/java/com/minelittlepony/unicopia/util/particles/ParticleSource.java +++ b/src/main/java/com/minelittlepony/unicopia/util/particles/ParticleSource.java @@ -2,7 +2,7 @@ package com.minelittlepony.unicopia.util.particles; import java.util.function.Consumer; -import com.minelittlepony.unicopia.util.shape.IShape; +import com.minelittlepony.unicopia.util.shape.Shape; import net.minecraft.entity.Entity; import net.minecraft.particle.ParticleEffect; @@ -27,7 +27,7 @@ public interface ParticleSource { ParticleUtils.spawnParticles(particleId, getEntity(), count); } - default void spawnParticles(IShape area, int count, Consumer particleSpawner) { + default void spawnParticles(Shape area, int count, Consumer particleSpawner) { Vec3d pos = getOriginVector(); area.randomPoints(count, getWorld().random).stream() diff --git a/src/main/java/com/minelittlepony/unicopia/util/particles/ParticleUtils.java b/src/main/java/com/minelittlepony/unicopia/util/particles/ParticleUtils.java index a52708d4..abdc08dc 100644 --- a/src/main/java/com/minelittlepony/unicopia/util/particles/ParticleUtils.java +++ b/src/main/java/com/minelittlepony/unicopia/util/particles/ParticleUtils.java @@ -1,6 +1,6 @@ package com.minelittlepony.unicopia.util.particles; -import com.minelittlepony.unicopia.util.shape.IShape; +import com.minelittlepony.unicopia.util.shape.Shape; import com.minelittlepony.unicopia.util.shape.Sphere; import net.minecraft.entity.Entity; @@ -15,7 +15,7 @@ public final class ParticleUtils { double halfDist = entity.getStandingEyeHeight() / 1.5; double middle = entity.getBoundingBox().minY + halfDist; - IShape shape = new Sphere(false, (float)halfDist + entity.getWidth()); + Shape shape = new Sphere(false, (float)halfDist + entity.getWidth()); shape.randomPoints(count, entity.world.random).forEach(point -> { entity.world.addParticle(particleId, diff --git a/src/main/java/com/minelittlepony/unicopia/util/projectile/IAdvancedProjectile.java b/src/main/java/com/minelittlepony/unicopia/util/projectile/AdvancedProjectile.java similarity index 83% rename from src/main/java/com/minelittlepony/unicopia/util/projectile/IAdvancedProjectile.java rename to src/main/java/com/minelittlepony/unicopia/util/projectile/AdvancedProjectile.java index 23f2f45e..15fc77db 100644 --- a/src/main/java/com/minelittlepony/unicopia/util/projectile/IAdvancedProjectile.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.ITossedEffect; +import com.minelittlepony.unicopia.magic.TossedMagicEffect; import net.minecraft.entity.Entity; import net.minecraft.entity.LivingEntity; @@ -8,7 +8,7 @@ import net.minecraft.entity.projectile.Projectile; import net.minecraft.item.ItemStack; import net.minecraft.world.World; -public interface IAdvancedProjectile extends Projectile { +public interface AdvancedProjectile extends Projectile { void setGravity(boolean gravity); @@ -16,7 +16,7 @@ public interface IAdvancedProjectile extends Projectile { void setOwner(LivingEntity owner); - void setEffect(ITossedEffect effect); + void setEffect(TossedMagicEffect effect); void setThrowDamage(float damage); diff --git a/src/main/java/com/minelittlepony/unicopia/util/projectile/ITossable.java b/src/main/java/com/minelittlepony/unicopia/util/projectile/Tossable.java similarity index 80% rename from src/main/java/com/minelittlepony/unicopia/util/projectile/ITossable.java rename to src/main/java/com/minelittlepony/unicopia/util/projectile/Tossable.java index 5a8f5cd1..d740a151 100644 --- a/src/main/java/com/minelittlepony/unicopia/util/projectile/ITossable.java +++ b/src/main/java/com/minelittlepony/unicopia/util/projectile/Tossable.java @@ -1,18 +1,18 @@ package com.minelittlepony.unicopia.util.projectile; -import com.minelittlepony.unicopia.magic.ICaster; +import com.minelittlepony.unicopia.magic.Caster; import net.minecraft.block.BlockState; import net.minecraft.sound.SoundEvent; import net.minecraft.sound.SoundEvents; import net.minecraft.util.math.BlockPos; -public interface ITossable { +public interface Tossable { /** * Called once the projectile lands either hitting the ground or an entity. */ - void onImpact(ICaster caster, BlockPos pos, BlockState state); + void onImpact(Caster caster, BlockPos pos, BlockState state); /** * The sound made when thrown. diff --git a/src/main/java/com/minelittlepony/unicopia/util/projectile/ITossableItem.java b/src/main/java/com/minelittlepony/unicopia/util/projectile/TossableItem.java similarity index 85% rename from src/main/java/com/minelittlepony/unicopia/util/projectile/ITossableItem.java rename to src/main/java/com/minelittlepony/unicopia/util/projectile/TossableItem.java index d6c24471..cdd57552 100644 --- a/src/main/java/com/minelittlepony/unicopia/util/projectile/ITossableItem.java +++ b/src/main/java/com/minelittlepony/unicopia/util/projectile/TossableItem.java @@ -3,7 +3,7 @@ package com.minelittlepony.unicopia.util.projectile; import javax.annotation.Nullable; import com.minelittlepony.unicopia.entity.ProjectileEntity; -import com.minelittlepony.unicopia.magic.IDispensable; +import com.minelittlepony.unicopia.magic.Dispensable; import net.minecraft.block.DispenserBlock; import net.minecraft.entity.Entity; @@ -18,7 +18,7 @@ import net.minecraft.util.math.Direction; import net.minecraft.util.math.Position; import net.minecraft.world.World; -public interface ITossableItem extends ITossable, IDispensable { +public interface TossableItem extends Tossable, Dispensable { default boolean canBeThrown(ItemStack stack) { return true; @@ -40,12 +40,12 @@ public interface ITossableItem extends ITossable, IDispensable { } @Nullable - default IAdvancedProjectile createProjectile(World world, PlayerEntity player) { + default AdvancedProjectile createProjectile(World world, PlayerEntity player) { return new ProjectileEntity(null, world, player); } @Nullable - default IAdvancedProjectile createProjectile(World world, Position pos) { + default AdvancedProjectile createProjectile(World world, Position pos) { return new ProjectileEntity(null, world, pos.getX(), pos.getY(), pos.getZ()); } @@ -54,7 +54,7 @@ public interface ITossableItem extends ITossable, IDispensable { world.playSound(null, player.x, player.y, player.z, getThrowSound(itemstack), SoundCategory.NEUTRAL, 0.5F, 0.4F / (world.random.nextFloat() * 0.4F + 0.8F)); if (!world.isClient) { - IAdvancedProjectile projectile = createProjectile(world, player); + AdvancedProjectile projectile = createProjectile(world, player); if (projectile == null) { return; @@ -75,7 +75,7 @@ public interface ITossableItem extends ITossable, IDispensable { } default ItemStack toss(World world, Position pos, Direction facing, ItemStack stack) { - IAdvancedProjectile projectile = createProjectile(world, pos); + AdvancedProjectile projectile = createProjectile(world, pos); if (projectile == null) { return stack; diff --git a/src/main/java/com/minelittlepony/unicopia/util/shape/Line.java b/src/main/java/com/minelittlepony/unicopia/util/shape/Line.java index c1c4e24d..a9b0e5f3 100644 --- a/src/main/java/com/minelittlepony/unicopia/util/shape/Line.java +++ b/src/main/java/com/minelittlepony/unicopia/util/shape/Line.java @@ -9,7 +9,7 @@ import net.minecraft.util.math.Vec3d; * A lonely Line. The simplest form of shape. * */ -public class Line implements IShape { +public class Line implements Shape { double len; diff --git a/src/main/java/com/minelittlepony/unicopia/util/shape/IShape.java b/src/main/java/com/minelittlepony/unicopia/util/shape/Shape.java similarity index 96% rename from src/main/java/com/minelittlepony/unicopia/util/shape/IShape.java rename to src/main/java/com/minelittlepony/unicopia/util/shape/Shape.java index 3261b545..b0cc7e9c 100644 --- a/src/main/java/com/minelittlepony/unicopia/util/shape/IShape.java +++ b/src/main/java/com/minelittlepony/unicopia/util/shape/Shape.java @@ -11,7 +11,7 @@ import net.minecraft.util.math.Vec3d; * *Interface for a 3d shape, used for spawning particles in a designated area (or anything else you need shapes for). */ -public interface IShape { +public interface Shape { /** * Rotates this shape around it's center. @@ -21,7 +21,7 @@ public interface IShape { * * @return This Shape */ - IShape setRotation(float u, float v); + Shape setRotation(float u, float v); /** * Get the volume of space filled by this shape, or the surface area if hollow. diff --git a/src/main/java/com/minelittlepony/unicopia/util/shape/Sphere.java b/src/main/java/com/minelittlepony/unicopia/util/shape/Sphere.java index 5c3f497d..047db6e7 100644 --- a/src/main/java/com/minelittlepony/unicopia/util/shape/Sphere.java +++ b/src/main/java/com/minelittlepony/unicopia/util/shape/Sphere.java @@ -9,7 +9,7 @@ import java.util.Random; * A sphere, or 2d circle of you so desire. * */ -public class Sphere implements IShape { +public class Sphere implements Shape { protected final Vec3d stretch; private final boolean hollow;