From 9c21467ebb77f63636a6e1bccc9893b28b36c59e Mon Sep 17 00:00:00 2001 From: Sollace Date: Tue, 25 Sep 2018 00:22:04 +0200 Subject: [PATCH] Added flying sounds, added a hud element to show flight experience --- .../com/minelittlepony/unicopia/USounds.java | 15 +++++ .../com/minelittlepony/unicopia/Unicopia.java | 35 ++++++++-- .../unicopia/hud/FlightExperienceBar.java | 62 +++++++++++++++++ .../unicopia/hud/IHudElement.java | 9 +++ .../com/minelittlepony/unicopia/hud/UHud.java | 63 ++++++++++++++++++ .../unicopia/player/IGravity.java | 9 +++ .../unicopia/player/IPlayer.java | 2 + .../unicopia/player/PlayerCapabilities.java | 5 ++ .../player/PlayerGravityDelegate.java | 35 ++++++++-- .../resources/assets/unicopia/sounds.json | 12 ++++ .../assets/unicopia/sounds/wing/dash1.ogg | Bin 0 -> 8276 bytes .../assets/unicopia/sounds/wing/land1.ogg | Bin 0 -> 10095 bytes .../assets/unicopia/sounds/wing/wing0.ogg | Bin 0 -> 5832 bytes .../assets/unicopia/sounds/wing/wing1.ogg | Bin 0 -> 7913 bytes .../assets/unicopia/sounds/wing/wing2.ogg | Bin 0 -> 8968 bytes .../assets/unicopia/sounds/wing/wing3.ogg | Bin 0 -> 8810 bytes 16 files changed, 237 insertions(+), 10 deletions(-) create mode 100644 src/main/java/com/minelittlepony/unicopia/USounds.java create mode 100644 src/main/java/com/minelittlepony/unicopia/hud/FlightExperienceBar.java create mode 100644 src/main/java/com/minelittlepony/unicopia/hud/IHudElement.java create mode 100644 src/main/java/com/minelittlepony/unicopia/hud/UHud.java create mode 100644 src/main/java/com/minelittlepony/unicopia/player/IGravity.java create mode 100644 src/main/resources/assets/unicopia/sounds.json create mode 100644 src/main/resources/assets/unicopia/sounds/wing/dash1.ogg create mode 100644 src/main/resources/assets/unicopia/sounds/wing/land1.ogg create mode 100644 src/main/resources/assets/unicopia/sounds/wing/wing0.ogg create mode 100644 src/main/resources/assets/unicopia/sounds/wing/wing1.ogg create mode 100644 src/main/resources/assets/unicopia/sounds/wing/wing2.ogg create mode 100644 src/main/resources/assets/unicopia/sounds/wing/wing3.ogg diff --git a/src/main/java/com/minelittlepony/unicopia/USounds.java b/src/main/java/com/minelittlepony/unicopia/USounds.java new file mode 100644 index 00000000..4d86db3d --- /dev/null +++ b/src/main/java/com/minelittlepony/unicopia/USounds.java @@ -0,0 +1,15 @@ +package com.minelittlepony.unicopia; + +import net.minecraft.util.ResourceLocation; +import net.minecraft.util.SoundEvent; +import net.minecraftforge.registries.IForgeRegistry; + +public class USounds { + + public static final SoundEvent WING_FLAP = new SoundEvent(new ResourceLocation(Unicopia.MODID, "wing_flap")) + .setRegistryName(Unicopia.MODID, "wing_flap"); + + static void init(IForgeRegistry registry) { + registry.registerAll(WING_FLAP); + } +} diff --git a/src/main/java/com/minelittlepony/unicopia/Unicopia.java b/src/main/java/com/minelittlepony/unicopia/Unicopia.java index d5399520..ae69f42a 100644 --- a/src/main/java/com/minelittlepony/unicopia/Unicopia.java +++ b/src/main/java/com/minelittlepony/unicopia/Unicopia.java @@ -7,8 +7,11 @@ import net.minecraft.item.EnumAction; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.item.crafting.IRecipe; +import net.minecraft.util.SoundEvent; import net.minecraftforge.client.event.ColorHandlerEvent; import net.minecraftforge.client.event.FOVUpdateEvent; +import net.minecraftforge.client.event.RenderGameOverlayEvent; +import net.minecraftforge.client.event.RenderGameOverlayEvent.ElementType; import net.minecraftforge.event.RegistryEvent; import net.minecraftforge.event.entity.item.ItemTossEvent; import net.minecraftforge.event.entity.player.PlayerDropsEvent; @@ -36,10 +39,12 @@ import com.minelittlepony.unicopia.client.particle.EntityMagicFX; import com.minelittlepony.unicopia.client.particle.EntityRaindropFX; import com.minelittlepony.unicopia.client.particle.Particles; import com.minelittlepony.unicopia.command.Commands; +import com.minelittlepony.unicopia.hud.UHud; import com.minelittlepony.unicopia.input.Keyboard; import com.minelittlepony.unicopia.network.MsgPlayerAbility; import com.minelittlepony.unicopia.network.MsgPlayerCapabilities; import com.minelittlepony.unicopia.network.MsgRequestCapabilities; +import com.minelittlepony.unicopia.player.IPlayer; import com.minelittlepony.unicopia.player.PlayerSpeciesList; import com.minelittlepony.unicopia.power.PowersRegistry; import com.minelittlepony.pony.data.IPony; @@ -86,9 +91,7 @@ public class Unicopia { @EventHandler public void init(FMLInitializationEvent event) { - channel = JumpingCastle.subscribeTo(MODID, () -> { - channel.send(new MsgRequestCapabilities(Minecraft.getMinecraft().player, clientPlayerRace), Target.SERVER); - }) + channel = JumpingCastle.subscribeTo(MODID, () -> {}) .listenFor(MsgRequestCapabilities.class) .listenFor(MsgPlayerCapabilities.class) .listenFor(MsgPlayerAbility.class); @@ -119,10 +122,15 @@ public class Unicopia { } @SubscribeEvent - public static void registerRecipesStatic(RegistryEvent.Register event) { + public static void registerSounds(RegistryEvent.Register event) { UItems.registerRecipes(event.getRegistry()); } + @SubscribeEvent + public static void registerRecipesStatic(RegistryEvent.Register event) { + USounds.init(event.getRegistry()); + } + @SubscribeEvent public static void registerEntitiesStatic(RegistryEvent.Register event) { UEntities.init(event.getRegistry()); @@ -133,7 +141,7 @@ public class Unicopia { public static void onGameTick(TickEvent.ClientTickEvent event) { Race newRace = getclientPlayerRace(); - if (newRace != clientPlayerRace) { + if (newRace != clientPlayerRace && Minecraft.getMinecraft().player != null) { clientPlayerRace = newRace; channel.send(new MsgRequestCapabilities(Minecraft.getMinecraft().player, clientPlayerRace), Target.SERVER); @@ -200,6 +208,23 @@ public class Unicopia { Commands.init(event); } + @SideOnly(Side.CLIENT) + @SubscribeEvent + public static void onRenderHud(RenderGameOverlayEvent.Post event) { + if (event.getType() != ElementType.ALL) { + return; + } + + if (UClient.isClientSide()) { + Minecraft mc = Minecraft.getMinecraft(); + if (mc.player != null && mc.world != null) { + IPlayer player = PlayerSpeciesList.instance().getPlayer(mc.player); + + UHud.instance.renderHud(player, event.getResolution()); + } + } + } + @SubscribeEvent public static void onPlayerRightClick(PlayerInteractEvent.RightClickItem event) { // Why won't you run!? diff --git a/src/main/java/com/minelittlepony/unicopia/hud/FlightExperienceBar.java b/src/main/java/com/minelittlepony/unicopia/hud/FlightExperienceBar.java new file mode 100644 index 00000000..a309109b --- /dev/null +++ b/src/main/java/com/minelittlepony/unicopia/hud/FlightExperienceBar.java @@ -0,0 +1,62 @@ +package com.minelittlepony.unicopia.hud; + +import com.minelittlepony.unicopia.player.IPlayer; + +import net.minecraft.client.gui.Gui; +import net.minecraft.util.ResourceLocation; + +class FlightExperienceBar implements IHudElement { + + static final ResourceLocation TEXTURE = new ResourceLocation("textures/gui/bars.png"); + + @Override + public boolean shouldRender(IPlayer player) { + return player.getPlayerSpecies().canFly() + && player.getGravity().isFlying(); + } + + @Override + public void renderHud(UHud context) { + float xp = context.player.getGravity().getFlightExperience(); + float length = context.player.getGravity().getFlightDuration(); + + context.mc.getTextureManager().bindTexture(TEXTURE); + int x = (context.width - 184) / 2; + int y = context.height - 29; + + int xpFill = (int)Math.floor(xp * 184); + int xpBuff = (int)Math.floor((184 - xpFill) * length); + + Gui.drawModalRectWithCustomSizedTexture(x, y, 0, 0, 256, 5, 256, 256); + Gui.drawModalRectWithCustomSizedTexture(x, y, 0, 5, xpFill, 5, 256, 256); + + + Gui.drawModalRectWithCustomSizedTexture(x + xpFill, y, xpFill, 10, xpBuff, 5, 256, 256); + + // context.fonts.drawStringWithShadow("Flight experience: " + context.player.getFlightExperience(), 0, 0, 0xFFFFFF); + } + + +} + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/java/com/minelittlepony/unicopia/hud/IHudElement.java b/src/main/java/com/minelittlepony/unicopia/hud/IHudElement.java new file mode 100644 index 00000000..eb91feda --- /dev/null +++ b/src/main/java/com/minelittlepony/unicopia/hud/IHudElement.java @@ -0,0 +1,9 @@ +package com.minelittlepony.unicopia.hud; + +import com.minelittlepony.unicopia.player.IPlayer; + +public interface IHudElement { + void renderHud(UHud context); + + boolean shouldRender(IPlayer player); +} diff --git a/src/main/java/com/minelittlepony/unicopia/hud/UHud.java b/src/main/java/com/minelittlepony/unicopia/hud/UHud.java new file mode 100644 index 00000000..384bf07a --- /dev/null +++ b/src/main/java/com/minelittlepony/unicopia/hud/UHud.java @@ -0,0 +1,63 @@ +package com.minelittlepony.unicopia.hud; + +import java.util.ArrayList; +import java.util.List; + +import org.lwjgl.opengl.GL11; + +import com.minelittlepony.unicopia.player.IPlayer; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.FontRenderer; +import net.minecraft.client.gui.Gui; +import net.minecraft.client.gui.ScaledResolution; +import net.minecraft.client.renderer.GlStateManager; + +public class UHud extends Gui { + + public static final UHud instance = new UHud(); + + private List elements = new ArrayList<>(); + + Minecraft mc = Minecraft.getMinecraft(); + + FontRenderer fonts = mc.fontRenderer; + + IPlayer player; + + int width; + + int height; + + private UHud() { + elements.add(new FlightExperienceBar()); + } + + public void renderHud(IPlayer player, ScaledResolution resolution) { + this.width = resolution.getScaledWidth(); + this.height = resolution.getScaledHeight(); + this.player = player; + + elements.forEach(this::renderElement); + } + + private void renderElement(IHudElement element) { + if (!element.shouldRender(player)) { + return; + } + + GL11.glPushAttrib(GL11.GL_ALL_ATTRIB_BITS); + + GlStateManager.pushMatrix(); + GlStateManager.disableLighting(); + GlStateManager.color(1, 1, 1, 1); + + element.renderHud(this); + + GlStateManager.popMatrix(); + + GL11.glPopAttrib(); + + } + +} diff --git a/src/main/java/com/minelittlepony/unicopia/player/IGravity.java b/src/main/java/com/minelittlepony/unicopia/player/IGravity.java new file mode 100644 index 00000000..c8cb6ebd --- /dev/null +++ b/src/main/java/com/minelittlepony/unicopia/player/IGravity.java @@ -0,0 +1,9 @@ +package com.minelittlepony.unicopia.player; + +public interface IGravity { + boolean isFlying(); + + float getFlightExperience(); + + float getFlightDuration(); +} diff --git a/src/main/java/com/minelittlepony/unicopia/player/IPlayer.java b/src/main/java/com/minelittlepony/unicopia/player/IPlayer.java index 77420446..ee3f0c6c 100644 --- a/src/main/java/com/minelittlepony/unicopia/player/IPlayer.java +++ b/src/main/java/com/minelittlepony/unicopia/player/IPlayer.java @@ -15,6 +15,8 @@ public interface IPlayer extends ICaster, IRaceContainer { return powers; } + @Override + public IGravity getGravity() { + return gravity; + } + @Override public boolean isClientPlayer() { return UClient.isClientSide() && diff --git a/src/main/java/com/minelittlepony/unicopia/player/PlayerGravityDelegate.java b/src/main/java/com/minelittlepony/unicopia/player/PlayerGravityDelegate.java index 21eeff72..e69aa40a 100644 --- a/src/main/java/com/minelittlepony/unicopia/player/PlayerGravityDelegate.java +++ b/src/main/java/com/minelittlepony/unicopia/player/PlayerGravityDelegate.java @@ -1,6 +1,7 @@ package com.minelittlepony.unicopia.player; import com.minelittlepony.unicopia.InbtSerialisable; +import com.minelittlepony.unicopia.USounds; import net.minecraft.block.Block; import net.minecraft.block.SoundType; @@ -16,14 +17,14 @@ import net.minecraft.util.SoundEvent; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.MathHelper; -class PlayerGravityDelegate implements IUpdatable, InbtSerialisable { +class PlayerGravityDelegate implements IUpdatable, IGravity, InbtSerialisable { private final IPlayer player; private static final float MAXIMUM_FLIGHT_EXPERIENCE = 500; - private int ticksInAir = 0; - private float flightExperience = 0; + public int ticksInAir = 0; + public float flightExperience = 0; public boolean isFlying = false; @@ -53,8 +54,8 @@ class PlayerGravityDelegate implements IUpdatable, InbtSerialisabl entity.addExhaustion(exhaustion * (1 - flightExperience)); - if (ticksInAir > 2000) { - ticksInAir = 1; + if (ticksInAir >= MAXIMUM_FLIGHT_EXPERIENCE) { + ticksInAir = 0; addFlightExperience(entity); entity.playSound(SoundEvents.ENTITY_GUARDIAN_FLOP, 1, 1); } @@ -64,8 +65,17 @@ class PlayerGravityDelegate implements IUpdatable, InbtSerialisabl entity.motionX += - forward * MathHelper.sin(entity.rotationYaw * 0.017453292F); entity.motionY -= 0.05F - ((entity.motionX * entity.motionX) + (entity.motionZ + entity.motionZ)) / 100; entity.motionZ += forward * MathHelper.cos(entity.rotationYaw * 0.017453292F); + + if (ticksInAir > 0 && ticksInAir % 12 == 0) { + entity.playSound(USounds.WING_FLAP, 0.1F, 1); + } } else { + if (ticksInAir != 0) { + entity.playSound(USounds.WING_FLAP, 0.04F, 1); + } + ticksInAir = 0; + flightExperience *= 0.9991342; } } } @@ -144,4 +154,19 @@ class PlayerGravityDelegate implements IUpdatable, InbtSerialisabl flightExperience = compound.getFloat("flightExperience"); isFlying = compound.getBoolean("isFlying"); } + + @Override + public boolean isFlying() { + return isFlying; + } + + @Override + public float getFlightExperience() { + return flightExperience / MAXIMUM_FLIGHT_EXPERIENCE; + } + + @Override + public float getFlightDuration() { + return ticksInAir / MAXIMUM_FLIGHT_EXPERIENCE; + } } diff --git a/src/main/resources/assets/unicopia/sounds.json b/src/main/resources/assets/unicopia/sounds.json new file mode 100644 index 00000000..74e0fc99 --- /dev/null +++ b/src/main/resources/assets/unicopia/sounds.json @@ -0,0 +1,12 @@ +{ + "wing_flap": { + "category": "player", + "subtitle": "unicopia.subtitle.flap_wings", + "sounds": [ + "unicopia:wing/wing0", + "unicopia:wing/wing1", + "unicopia:wing/wing2", + "unicopia:wing/wing3" + ] + } +} \ No newline at end of file diff --git a/src/main/resources/assets/unicopia/sounds/wing/dash1.ogg b/src/main/resources/assets/unicopia/sounds/wing/dash1.ogg new file mode 100644 index 0000000000000000000000000000000000000000..c9a764dd977edc85fed190ba12d534e22511d5a4 GIT binary patch literal 8276 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 K9ee}=@V@|4ct}wI literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/unicopia/sounds/wing/land1.ogg b/src/main/resources/assets/unicopia/sounds/wing/land1.ogg new file mode 100644 index 0000000000000000000000000000000000000000..75ce0a19737e0e21c25c38cea956beded1141278 GIT binary patch literal 10095 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/unicopia/sounds/wing/wing0.ogg b/src/main/resources/assets/unicopia/sounds/wing/wing0.ogg new file mode 100644 index 0000000000000000000000000000000000000000..0258b040d51abeffe9a2bbfb9a8493a59d43d7bd GIT binary patch literal 5832 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/unicopia/sounds/wing/wing2.ogg b/src/main/resources/assets/unicopia/sounds/wing/wing2.ogg new file mode 100644 index 0000000000000000000000000000000000000000..284482aab55e136272db2ed3117f07842308066a GIT binary patch literal 8968 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 RinjZwwo_gj0bo`h{1=avG=TsB literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/unicopia/sounds/wing/wing3.ogg b/src/main/resources/assets/unicopia/sounds/wing/wing3.ogg new file mode 100644 index 0000000000000000000000000000000000000000..d4f09a30d044591f00cca8b8183625b101b48ac4 GIT binary patch literal 8810 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