diff --git a/src/main/java/assets/hbm/lang/de_DE.lang b/src/main/java/assets/hbm/lang/de_DE.lang index af27107bf..cda5726e4 100644 --- a/src/main/java/assets/hbm/lang/de_DE.lang +++ b/src/main/java/assets/hbm/lang/de_DE.lang @@ -248,6 +248,7 @@ death.attack.tauBlast=%1$s lud die XVL1456 zu lange auf und wurde in Stücke ger death.attack.teleporter=%1$s wurde ins Nichts teleportiert. entity.entity_cyber_crab.name=Cyber-Krabbe +entity.entity_fucc_a_ducc.name=Ente entity.entity_mob_hunter_chopper.name=Jagdschrauber entity.entity_mob_mask_man.name=Maskenmann entity.entity_mob_nuclear_creeper.name=Nuklearer Creeper diff --git a/src/main/java/assets/hbm/lang/en_US.lang b/src/main/java/assets/hbm/lang/en_US.lang index dbb78e968..adc3cf2af 100644 --- a/src/main/java/assets/hbm/lang/en_US.lang +++ b/src/main/java/assets/hbm/lang/en_US.lang @@ -248,6 +248,7 @@ death.attack.tauBlast=%1$s charged the XVL1456 for too long and was blown into p death.attack.teleporter=%1$s was teleported into nothingness. entity.entity_cyber_crab.name=Cyber Crab +entity.entity_fucc_a_ducc.name=Duck entity.entity_mob_hunter_chopper.name=Hunter Chopper entity.entity_mob_mask_man.name=Mask Man entity.entity_mob_nuclear_creeper.name=Nuclear Creeper diff --git a/src/main/java/assets/hbm/sounds.json b/src/main/java/assets/hbm/sounds.json index 810a76174..0a4c86bc4 100644 --- a/src/main/java/assets/hbm/sounds.json +++ b/src/main/java/assets/hbm/sounds.json @@ -156,6 +156,7 @@ "entity.planeCrash": {"category": "hostile", "sounds": [{"name": "entity/planeCrash", "stream": false}]}, "entity.planeShotDown": {"category": "hostile", "sounds": [{"name": "entity/planeShotDown", "stream": false}]}, "entity.cybercrab": {"category": "hostile", "sounds": ["entity/radio_random1", "entity/radio_random2", "entity/radio_random3", "entity/radio_random4", "entity/radio_random5", "entity/radio_random6", "entity/radio_random7", "entity/radio_random8", "entity/radio_random9", "entity/radio_random10", "entity/radio_random11", "entity/radio_random12", "entity/radio_random13", "entity/radio_random14", "entity/radio_random15"]}, + "entity.ducc": {"category": "neutral", "sounds": ["entity/ducc1", "entity/ducc2"]}, "potatos.random": {"category": "player", "sounds": ["potatos/randResponse0", "potatos/randResponse1", "potatos/randResponse2", "potatos/randResponse3", "potatos/randResponse4", "potatos/randResponse5", "potatos/randResponse6", "potatos/randResponse7"]}, diff --git a/src/main/java/assets/hbm/sounds/entity/ducc1.ogg b/src/main/java/assets/hbm/sounds/entity/ducc1.ogg new file mode 100644 index 000000000..3709c6dc2 Binary files /dev/null and b/src/main/java/assets/hbm/sounds/entity/ducc1.ogg differ diff --git a/src/main/java/assets/hbm/sounds/entity/ducc2.ogg b/src/main/java/assets/hbm/sounds/entity/ducc2.ogg new file mode 100644 index 000000000..3d31f00d2 Binary files /dev/null and b/src/main/java/assets/hbm/sounds/entity/ducc2.ogg differ diff --git a/src/main/java/assets/hbm/textures/entity/duck.png b/src/main/java/assets/hbm/textures/entity/duck.png new file mode 100644 index 000000000..515955323 Binary files /dev/null and b/src/main/java/assets/hbm/textures/entity/duck.png differ diff --git a/src/main/java/assets/hbm/textures/gui/machine/gui_cyclotron.png b/src/main/java/assets/hbm/textures/gui/machine/gui_cyclotron.png new file mode 100644 index 000000000..5d1e9e4b1 Binary files /dev/null and b/src/main/java/assets/hbm/textures/gui/machine/gui_cyclotron.png differ diff --git a/src/main/java/assets/hbm/textures/models/weapons/thompson.png b/src/main/java/assets/hbm/textures/models/weapons/thompson.png new file mode 100644 index 000000000..956d4a29f Binary files /dev/null and b/src/main/java/assets/hbm/textures/models/weapons/thompson.png differ diff --git a/src/main/java/com/hbm/entity/mob/EntityDuck.java b/src/main/java/com/hbm/entity/mob/EntityDuck.java new file mode 100644 index 000000000..953994844 --- /dev/null +++ b/src/main/java/com/hbm/entity/mob/EntityDuck.java @@ -0,0 +1,30 @@ +package com.hbm.entity.mob; + +import net.minecraft.entity.EntityAgeable; +import net.minecraft.entity.passive.EntityChicken; +import net.minecraft.world.World; + +public class EntityDuck extends EntityChicken { + + public EntityDuck(World world) { + super(world); + } + + protected String getLivingSound() { + return "hbm:entity.ducc"; + } + + protected String getHurtSound() { + return "hbm:entity.ducc"; + } + + protected String getDeathSound() { + return "hbm:entity.ducc"; + } + + public EntityDuck createChild(EntityAgeable entity) + { + return new EntityDuck(this.worldObj); + } + +} diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index 682b3fc0f..1435a9963 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -1,6 +1,7 @@ package com.hbm.main; import net.minecraft.client.Minecraft; +import net.minecraft.client.model.ModelChicken; import net.minecraft.client.particle.EntityCloudFX; import net.minecraft.client.particle.EntityFX; import net.minecraft.client.particle.EntityFlameFX; @@ -439,6 +440,7 @@ public class ClientProxy extends ServerProxy { RenderingRegistry.registerEntityRenderingHandler(EntityBallsOTronSegment.class, new RenderBalls()); RenderingRegistry.registerEntityRenderingHandler(EntityBOTPrimeHead.class, new RenderWormHead()); RenderingRegistry.registerEntityRenderingHandler(EntityBOTPrimeBody.class, new RenderWormBody()); + RenderingRegistry.registerEntityRenderingHandler(EntityDuck.class, new RenderDuck(new ModelChicken(), 0.3F)); //"particles" RenderingRegistry.registerEntityRenderingHandler(EntitySmokeFX.class, new MultiCloudRenderer(new Item[] { ModItems.smoke1, ModItems.smoke2, ModItems.smoke3, ModItems.smoke4, ModItems.smoke5, ModItems.smoke6, ModItems.smoke7, ModItems.smoke8 })); RenderingRegistry.registerEntityRenderingHandler(EntityBSmokeFX.class, new MultiCloudRenderer(new Item[] { ModItems.b_smoke1, ModItems.b_smoke2, ModItems.b_smoke3, ModItems.b_smoke4, ModItems.b_smoke5, ModItems.b_smoke6, ModItems.b_smoke7, ModItems.b_smoke8 })); @@ -778,5 +780,11 @@ public class ClientProxy extends ServerProxy { public void playSound(String sound, Object data) { } + + @Override + public void displayTooltip(String msg) { + + Minecraft.getMinecraft().ingameGUI.func_110326_a(msg, false); + } } diff --git a/src/main/java/com/hbm/main/MainRegistry.java b/src/main/java/com/hbm/main/MainRegistry.java index d8a5e5ae3..856e496e9 100644 --- a/src/main/java/com/hbm/main/MainRegistry.java +++ b/src/main/java/com/hbm/main/MainRegistry.java @@ -576,6 +576,7 @@ public class MainRegistry { EntityRegistry.registerGlobalEntityID(EntityTeslaCrab.class, "entity_tesla_crab", EntityRegistry.findGlobalUniqueEntityId(), 0xAAAAAA, 0x440000); EntityRegistry.registerGlobalEntityID(EntityTaintCrab.class, "entity_taint_crab", EntityRegistry.findGlobalUniqueEntityId(), 0xAAAAAA, 0xFF00FF); EntityRegistry.registerGlobalEntityID(EntityMaskMan.class, "entity_mob_mask_man", EntityRegistry.findGlobalUniqueEntityId(), 0x818572, 0xC7C1B7); + EntityRegistry.registerGlobalEntityID(EntityDuck.class, "entity_fucc_a_ducc", EntityRegistry.findGlobalUniqueEntityId(), 0xd0d0d0, 0xFFBF00); // EntityRegistry.registerGlobalEntityID(EntityBOTPrimeHead.class, // "entity_balls_o_tron_mk0", EntityRegistry.findGlobalUniqueEntityId(), diff --git a/src/main/java/com/hbm/main/ModEventHandler.java b/src/main/java/com/hbm/main/ModEventHandler.java index 173707e13..25ead1bc4 100644 --- a/src/main/java/com/hbm/main/ModEventHandler.java +++ b/src/main/java/com/hbm/main/ModEventHandler.java @@ -28,6 +28,7 @@ import com.hbm.lib.Library; import com.hbm.lib.ModDamageSource; import com.hbm.lib.RefStrings; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.PlayerInformPacket; import com.hbm.packet.RadSurveyPacket; import com.hbm.saveddata.AuxSavedData; import com.hbm.saveddata.RadiationSavedData; @@ -86,6 +87,9 @@ public class ModEventHandler if(VersionChecker.newVersion) { event.player.addChatMessage(new ChatComponentText(EnumChatFormatting.YELLOW + "New version " + VersionChecker.versionNumber + " is available!")); } + + if(event.player instanceof EntityPlayerMP && !event.player.getEntityData().getCompoundTag(EntityPlayer.PERSISTED_NBT_TAG).getBoolean("hasDucked")) + PacketDispatcher.wrapper.sendTo(new PlayerInformPacket("Press O to Duck!"), (EntityPlayerMP)event.player); } } diff --git a/src/main/java/com/hbm/main/ModEventHandlerClient.java b/src/main/java/com/hbm/main/ModEventHandlerClient.java index 508c9c04f..082a3c64d 100644 --- a/src/main/java/com/hbm/main/ModEventHandlerClient.java +++ b/src/main/java/com/hbm/main/ModEventHandlerClient.java @@ -2,6 +2,8 @@ package com.hbm.main; import java.util.List; +import org.lwjgl.input.Keyboard; + import com.hbm.config.GeneralConfig; import com.hbm.entity.mob.EntityHunterChopper; import com.hbm.entity.projectile.EntityChopperMine; @@ -16,6 +18,7 @@ import com.hbm.items.ModItems; import com.hbm.items.weapon.ItemGunBase; import com.hbm.lib.Library; import com.hbm.lib.RefStrings; +import com.hbm.packet.AuxButtonPacket; import com.hbm.packet.GunButtonPacket; import com.hbm.packet.PacketDispatcher; import com.hbm.render.anim.HbmAnimations; @@ -127,39 +130,15 @@ public class ModEventHandlerClient { if(time > animation.animation.getDuration()) HbmAnimations.hotbar[i] = null; } - - /*if(event.type == ElementType.CROSSHAIRS) { - if(player.ticksExisted < 200) { - - if(annoyanceToken) { - FontRenderer font = Minecraft.getMinecraft().fontRenderer; - - ScaledResolution resolution = event.resolution; - int pX = resolution.getScaledWidth() / 2; - int pZ = resolution.getScaledHeight() / 2; - - String msg = "PLEASE"; - font.drawStringWithShadow(msg, pX - font.getStringWidth(msg) / 2, pZ - 40, 0xffffff); - msg = "THIS IS A DEVELOPMENT VERSION"; - if(player.ticksExisted > 30) font.drawStringWithShadow(msg, pX - font.getStringWidth(msg) / 2, pZ - 20, 0xffffff); - msg = "OBVIOUSLY SOME THINGS AREN'T GOING TO WORK"; - if(player.ticksExisted > 60) font.drawStringWithShadow(msg, pX - font.getStringWidth(msg) / 2, pZ, 0xffffff); - msg = "PLEASE AT LEAST TRY TO REMEMBER THAT"; - if(player.ticksExisted > 90) font.drawStringWithShadow(msg, pX - font.getStringWidth(msg) / 2, pZ + 20, 0xffffff); - msg = "FOR THE LOVE OF GOD"; - if(player.ticksExisted > 120) font.drawStringWithShadow(msg, pX - font.getStringWidth(msg) / 2, pZ + 40, 0xb00000); - } - - } else { - - if(annoyanceToken) - annoyanceToken = false; - } - }*/ + if(!ducked && Keyboard.isKeyDown(Keyboard.KEY_O)) { + + ducked = true; + PacketDispatcher.wrapper.sendToServer(new AuxButtonPacket(0, 0, 0, 999, 0)); + } } - public static boolean annoyanceToken = true; + public static boolean ducked = false; @SubscribeEvent public void preRenderEvent(RenderPlayerEvent.Pre event) { diff --git a/src/main/java/com/hbm/main/ServerProxy.java b/src/main/java/com/hbm/main/ServerProxy.java index 3f07bbb5e..f8cb4f0e5 100644 --- a/src/main/java/com/hbm/main/ServerProxy.java +++ b/src/main/java/com/hbm/main/ServerProxy.java @@ -23,4 +23,6 @@ public class ServerProxy { public AudioWrapper getLoopedSound(String sound, float x, float y, float z, float volume, float pitch) { return null; } public void playSound(String sound, Object data) { } + + public void displayTooltip(String msg) { } } \ No newline at end of file diff --git a/src/main/java/com/hbm/packet/AuxButtonPacket.java b/src/main/java/com/hbm/packet/AuxButtonPacket.java index 09e451dd2..dab810a22 100644 --- a/src/main/java/com/hbm/packet/AuxButtonPacket.java +++ b/src/main/java/com/hbm/packet/AuxButtonPacket.java @@ -1,5 +1,6 @@ package com.hbm.packet; +import com.hbm.entity.mob.EntityDuck; import com.hbm.handler.FluidTypeHandler.FluidType; import com.hbm.items.weapon.ItemMissile.PartSize; import com.hbm.tileentity.TileEntityMachineBase; @@ -22,7 +23,9 @@ import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; import cpw.mods.fml.common.network.simpleimpl.MessageContext; import io.netty.buffer.ByteBuf; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.Vec3; public class AuxButtonPacket implements IMessage { @@ -273,6 +276,29 @@ public class AuxButtonPacket implements IMessage { base.handleButtonPacket(m.value, m.id); } + //why make new packets when you can just abuse and uglify the existing ones? + if(te == null && m.value == 999) { + + NBTTagCompound perDat = p.getEntityData().getCompoundTag(EntityPlayer.PERSISTED_NBT_TAG); + + if(!perDat.getBoolean("hasDucked")) { + EntityDuck ducc = new EntityDuck(p.worldObj); + ducc.setPosition(p.posX, p.posY + p.eyeHeight, p.posZ); + + Vec3 vec = p.getLookVec(); + ducc.motionX = vec.xCoord; + ducc.motionY = vec.yCoord; + ducc.motionZ = vec.zCoord; + + p.worldObj.spawnEntityInWorld(ducc); + p.worldObj.playSoundAtEntity(p, "hbm:entity.ducc", 1.0F, 1.0F); + + perDat.setBoolean("hasDucked", true); + + p.getEntityData().setTag(EntityPlayer.PERSISTED_NBT_TAG, perDat); + } + } + //} catch (Exception x) { } return null; diff --git a/src/main/java/com/hbm/packet/PacketDispatcher.java b/src/main/java/com/hbm/packet/PacketDispatcher.java index 552dd52fb..fd42085cb 100644 --- a/src/main/java/com/hbm/packet/PacketDispatcher.java +++ b/src/main/java/com/hbm/packet/PacketDispatcher.java @@ -95,6 +95,8 @@ public class PacketDispatcher { wrapper.registerMessage(SatCoordPacket.Handler.class, SatCoordPacket.class, i++, Side.SERVER); //Triggers gun animations of the client wrapper.registerMessage(GunAnimationPacket.Handler.class, GunAnimationPacket.class, i++, Side.CLIENT); + //Sends a funi text to display like a music disc announcement + wrapper.registerMessage(PlayerInformPacket.Handler.class, PlayerInformPacket.class, i++, Side.CLIENT); } } diff --git a/src/main/java/com/hbm/packet/PlayerInformPacket.java b/src/main/java/com/hbm/packet/PlayerInformPacket.java new file mode 100644 index 000000000..50c3f4a70 --- /dev/null +++ b/src/main/java/com/hbm/packet/PlayerInformPacket.java @@ -0,0 +1,52 @@ +package com.hbm.packet; + +import com.hbm.main.MainRegistry; + +import cpw.mods.fml.common.network.ByteBufUtils; +import cpw.mods.fml.common.network.simpleimpl.IMessage; +import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; +import cpw.mods.fml.common.network.simpleimpl.MessageContext; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; + +public class PlayerInformPacket implements IMessage { + + String dmesg = ""; + + public PlayerInformPacket() + { + + } + + public PlayerInformPacket(String dmesg) + { + this.dmesg = dmesg; + } + + @Override + public void fromBytes(ByteBuf buf) { + + dmesg = ByteBufUtils.readUTF8String(buf); + } + + @Override + public void toBytes(ByteBuf buf) { + + ByteBufUtils.writeUTF8String(buf, dmesg); + } + + public static class Handler implements IMessageHandler { + + @Override + @SideOnly(Side.CLIENT) + public IMessage onMessage(PlayerInformPacket m, MessageContext ctx) { + try { + + MainRegistry.proxy.displayTooltip(m.dmesg); + + } catch (Exception x) { } + return null; + } + } +} diff --git a/src/main/java/com/hbm/render/entity/mob/RenderDuck.java b/src/main/java/com/hbm/render/entity/mob/RenderDuck.java new file mode 100644 index 000000000..fbc8f095c --- /dev/null +++ b/src/main/java/com/hbm/render/entity/mob/RenderDuck.java @@ -0,0 +1,21 @@ +package com.hbm.render.entity.mob; + +import com.hbm.lib.RefStrings; + +import net.minecraft.client.model.ModelBase; +import net.minecraft.client.renderer.entity.RenderChicken; +import net.minecraft.entity.passive.EntityChicken; +import net.minecraft.util.ResourceLocation; + +public class RenderDuck extends RenderChicken { + + public static final ResourceLocation ducc = new ResourceLocation(RefStrings.MODID, "textures/entity/duck.png"); + + public RenderDuck(ModelBase p_i1252_1_, float p_i1252_2_) { + super(p_i1252_1_, p_i1252_2_); + } + + protected ResourceLocation getEntityTexture(EntityChicken p_110775_1_) { + return ducc; + } +} diff --git a/src/main/java/com/hbm/render/util/RenderScreenOverlay.java b/src/main/java/com/hbm/render/util/RenderScreenOverlay.java index 4d131b75d..e418ecd3c 100644 --- a/src/main/java/com/hbm/render/util/RenderScreenOverlay.java +++ b/src/main/java/com/hbm/render/util/RenderScreenOverlay.java @@ -18,7 +18,6 @@ import net.minecraft.util.ResourceLocation; public class RenderScreenOverlay { private static final ResourceLocation misc = new ResourceLocation(RefStrings.MODID + ":textures/misc/overlay_misc.png"); - private static final ResourceLocation hud = new ResourceLocation("textures/gui/widgets.png"); private static final RenderItem itemRenderer = RenderItem.getInstance(); private static long lastSurvey;