diff --git a/src/main/java/com/minelittlepony/unicopia/entity/Creature.java b/src/main/java/com/minelittlepony/unicopia/entity/Creature.java index 5c8836a4..9fa5e676 100644 --- a/src/main/java/com/minelittlepony/unicopia/entity/Creature.java +++ b/src/main/java/com/minelittlepony/unicopia/entity/Creature.java @@ -40,7 +40,7 @@ public class Creature extends Living { targets.add(1, new WantItNeedItTargetGoal((MobEntity)entity)); goals.add(1, new WantItTakeItGoal((MobEntity)entity)); if (entity.getType().getSpawnGroup() == SpawnGroup.MONSTER) { - goals.add(2, new BreakHeartGoal((MobEntity)entity)); + goals.add(3, new BreakHeartGoal((MobEntity)entity)); } } diff --git a/src/main/java/com/minelittlepony/unicopia/entity/ai/BreakHeartGoal.java b/src/main/java/com/minelittlepony/unicopia/entity/ai/BreakHeartGoal.java index eda22f46..59b94ffe 100644 --- a/src/main/java/com/minelittlepony/unicopia/entity/ai/BreakHeartGoal.java +++ b/src/main/java/com/minelittlepony/unicopia/entity/ai/BreakHeartGoal.java @@ -31,7 +31,11 @@ public class BreakHeartGoal extends Goal { @Override public boolean canStart() { Optional item = VecHelper.findInRange(mob, mob.world, mob.getPos(), 16, - e -> !e.removed && e instanceof FloatingArtefactEntity && ((FloatingArtefactEntity)e).getStack().getItem() == UItems.CRYSTAL_HEART) + e -> !e.removed + && e instanceof FloatingArtefactEntity + && ((FloatingArtefactEntity)e).getStack().getItem() == UItems.CRYSTAL_HEART + && mob.getVisibilityCache().canSee(e) + ) .stream() .map(e -> (FloatingArtefactEntity)e) .sorted(Comparator.comparing((Entity e) -> mob.distanceTo(e))) @@ -73,7 +77,7 @@ public class BreakHeartGoal extends Goal { if (distance > reach && distance < 16) { speed = 1.23; } else if (distance < 225) { - speed = 0.6; + speed = 1.6; } mob.getNavigation().startMovingTo(target, speed); diff --git a/src/main/java/com/minelittlepony/unicopia/entity/player/PlayerPhysics.java b/src/main/java/com/minelittlepony/unicopia/entity/player/PlayerPhysics.java index 21fabe58..fdcef7d4 100644 --- a/src/main/java/com/minelittlepony/unicopia/entity/player/PlayerPhysics.java +++ b/src/main/java/com/minelittlepony/unicopia/entity/player/PlayerPhysics.java @@ -141,7 +141,12 @@ public class PlayerPhysics extends EntityPhysics implements Tickable, Moti if (ticksInAir++ > (level * 100)) { Bar mana = pony.getMagicalReserves().getMana(); - mana.add((float)-getHorizontalMotion(entity) * 20F / level); + float cost = (float)-getHorizontalMotion(entity) * 20F / level; + if (entity.isSneaking()) { + cost /= 10; + } + + mana.add(cost); if (mana.getPercentFill() < 0.2) { pony.getMagicalReserves().getExertion().add(2); @@ -237,8 +242,6 @@ public class PlayerPhysics extends EntityPhysics implements Tickable, Moti float bouncyness = EnchantmentHelper.getEquipmentLevel(UEnchantments.PADDED, player) * 6; - System.out.println(bouncyness); - if (distance > 0) { wallHitCooldown = 30; diff --git a/src/main/java/com/minelittlepony/unicopia/item/CrystalHeartItem.java b/src/main/java/com/minelittlepony/unicopia/item/CrystalHeartItem.java index 00f05454..ad00cfb4 100644 --- a/src/main/java/com/minelittlepony/unicopia/item/CrystalHeartItem.java +++ b/src/main/java/com/minelittlepony/unicopia/item/CrystalHeartItem.java @@ -10,6 +10,7 @@ import com.minelittlepony.unicopia.entity.FloatingArtefactEntity.State; import com.minelittlepony.unicopia.particle.FollowingParticleEffect; import com.minelittlepony.unicopia.particle.ParticleUtils; import com.minelittlepony.unicopia.particle.UParticles; +import com.minelittlepony.unicopia.util.MagicalDamageSource; import com.minelittlepony.unicopia.util.VecHelper; import net.minecraft.block.BlockState; @@ -19,7 +20,6 @@ import net.minecraft.entity.LivingEntity; import net.minecraft.entity.Saddleable; import net.minecraft.entity.SpawnGroup; import net.minecraft.entity.SpawnReason; -import net.minecraft.entity.damage.DamageSource; import net.minecraft.entity.mob.MobEntity; import net.minecraft.entity.passive.TameableEntity; import net.minecraft.entity.player.PlayerEntity; @@ -59,7 +59,7 @@ public class CrystalHeartItem extends Item implements FloatingArtefactEntity.Art if (world instanceof ServerWorld) { - FloatingArtefactEntity entity = UEntities.FLOATING_ARTEFACT.create((ServerWorld)world, context.getStack().getTag(), null, context.getPlayer(), blockPos, SpawnReason.SPAWN_EGG, true, true); + FloatingArtefactEntity entity = UEntities.FLOATING_ARTEFACT.create((ServerWorld)world, context.getStack().getTag(), null, context.getPlayer(), blockPos, SpawnReason.SPAWN_EGG, false, true); if (entity == null) { return ActionResult.FAIL; @@ -137,13 +137,14 @@ public class CrystalHeartItem extends Item implements FloatingArtefactEntity.Art } inputs.forEach(input -> { - input.damage(DamageSource.MAGIC, takes); + input.damage(MagicalDamageSource.create("feed"), takes); ParticleUtils.spawnParticles(new FollowingParticleEffect(UParticles.HEALTH_DRAIN, entity, 0.2F), input, 1); }); outputs.forEach(output -> { ParticleUtils.spawnParticles(new FollowingParticleEffect(UParticles.HEALTH_DRAIN, output, 0.2F), entity, 1); output.heal(gives); }); + entity.addSpin((int)gives); } } diff --git a/src/main/resources/assets/unicopia/textures/gui/ability/capture_cloud.png b/src/main/resources/assets/unicopia/textures/gui/ability/capture_cloud.png index 9c0dd5a0..7e3cfa37 100644 Binary files a/src/main/resources/assets/unicopia/textures/gui/ability/capture_cloud.png and b/src/main/resources/assets/unicopia/textures/gui/ability/capture_cloud.png differ