diff --git a/src/main/java/com/minelittlepony/unicopia/client/render/WingsFeatureRenderer.java b/src/main/java/com/minelittlepony/unicopia/client/render/WingsFeatureRenderer.java index c749f5da..46593863 100644 --- a/src/main/java/com/minelittlepony/unicopia/client/render/WingsFeatureRenderer.java +++ b/src/main/java/com/minelittlepony/unicopia/client/render/WingsFeatureRenderer.java @@ -20,6 +20,7 @@ import net.minecraft.util.Identifier; public class WingsFeatureRenderer implements AccessoryFeatureRenderer.Feature { private static final Identifier ICARUS_WINGS = new Identifier("unicopia", "textures/models/wings/icarus.png"); + private static final Identifier ICARUS_WINGS_CORRUPTED = new Identifier("unicopia", "textures/models/wings/icarus_corrupted.png"); private static final Identifier PEGASUS_WINGS = new Identifier("unicopia", "textures/models/wings/pegasus.png"); private final WingsModel model = new WingsModel(); @@ -37,7 +38,7 @@ public class WingsFeatureRenderer implements AccessoryFe boolean icarus = UItems.PEGASUS_AMULET.isApplicable(entity); if (icarus || pegasus) { - Identifier texture = pegasus ? PEGASUS_WINGS : ICARUS_WINGS; + Identifier texture = pegasus ? PEGASUS_WINGS : entity.world.getDimension().isUltrawarm() ? ICARUS_WINGS_CORRUPTED : ICARUS_WINGS; VertexConsumer consumer = ItemRenderer.getArmorGlintConsumer(renderContext, RenderLayer.getEntityTranslucent(texture), false, false); model.setAngles(entity, context.getModel()); 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 081671d9..f0b10839 100644 --- a/src/main/java/com/minelittlepony/unicopia/entity/player/PlayerPhysics.java +++ b/src/main/java/com/minelittlepony/unicopia/entity/player/PlayerPhysics.java @@ -129,7 +129,7 @@ public class PlayerPhysics extends EntityPhysics implements Tickable, Moti if (type != lastFlightType && (lastFlightType.isArtifical() || type.isArtifical())) { ParticleUtils.spawnParticles(ParticleTypes.CLOUD, entity, 10); - entity.world.playSound(entity.getX(), entity.getY(), entity.getZ(), SoundEvents.BLOCK_BELL_RESONATE, SoundCategory.PLAYERS, 0.1125F, 1.5F, true); + entity.world.playSound(entity.getX(), entity.getY(), entity.getZ(), entity.world.getDimension().isUltrawarm() ? SoundEvents.BLOCK_BELL_USE : SoundEvents.BLOCK_BELL_RESONATE, SoundCategory.PLAYERS, 0.1125F, 1.5F, true); } entity.abilities.allowFlying = type.canFlyCreative(entity); @@ -195,10 +195,18 @@ public class PlayerPhysics extends EntityPhysics implements Tickable, Moti if (ticksInAir % 10 == 0 && !entity.world.isClient) { ItemStack stack = entity.getEquippedStack(EquipmentSlot.CHEST); + int damageInterval = 20; + int minDamage = 1; + float energyConsumed = 2 + (float)getHorizontalMotion(entity) / 10F; if (entity.world.hasRain(entity.getBlockPos())) { energyConsumed *= 3; } + if (entity.world.getDimension().isUltrawarm()) { + energyConsumed *= 4; + damageInterval /= 2; + minDamage *= 3; + } AmuletItem.consumeEnergy(stack, energyConsumed); @@ -206,8 +214,8 @@ public class PlayerPhysics extends EntityPhysics implements Tickable, Moti entity.world.playSoundFromEntity(null, entity, SoundEvents.BLOCK_CHAIN_STEP, SoundCategory.PLAYERS, 0.13F, 0.5F); } - if (entity.world.random.nextInt(20) == 0) { - stack.damage(1 + entity.world.random.nextInt(50), entity, e -> e.sendEquipmentBreakStatus(EquipmentSlot.CHEST)); + if (entity.world.random.nextInt(damageInterval) == 0) { + stack.damage(minDamage + entity.world.random.nextInt(50), entity, e -> e.sendEquipmentBreakStatus(EquipmentSlot.CHEST)); } if (!getFlightType().canFly()) { diff --git a/src/main/java/com/minelittlepony/unicopia/item/AmuletItem.java b/src/main/java/com/minelittlepony/unicopia/item/AmuletItem.java index def19750..f800f36a 100644 --- a/src/main/java/com/minelittlepony/unicopia/item/AmuletItem.java +++ b/src/main/java/com/minelittlepony/unicopia/item/AmuletItem.java @@ -61,7 +61,7 @@ public class AmuletItem extends WearableItem { && entity instanceof LivingEntity && ((LivingEntity) entity).getEquippedStack(EquipmentSlot.CHEST) == stack && isApplicable((LivingEntity)entity)) { - ParticleUtils.spawnParticles(ParticleTypes.COMPOSTER, entity, 1); + ParticleUtils.spawnParticles(entity.world.getDimension().isUltrawarm() ? ParticleTypes.SOUL_FIRE_FLAME : ParticleTypes.COMPOSTER, entity, 1); } } diff --git a/src/main/resources/assets/unicopia/textures/models/wings/icarus_corrupted.png b/src/main/resources/assets/unicopia/textures/models/wings/icarus_corrupted.png new file mode 100644 index 00000000..3dcc1eec Binary files /dev/null and b/src/main/resources/assets/unicopia/textures/models/wings/icarus_corrupted.png differ