From a6e1d49861f76f591468ca9f1733d00e22b5fd71 Mon Sep 17 00:00:00 2001 From: Bob Date: Wed, 20 Apr 2022 22:31:18 +0200 Subject: [PATCH] finished charger, nicer HUD overlay text --- src/main/java/com/hbm/blocks/ModBlocks.java | 2 +- .../com/hbm/blocks/generic/BarbedWire.java | 6 +- .../java/com/hbm/blocks/machine/Charger.java | 9 +- .../java/com/hbm/extprop/HbmPlayerProps.java | 8 +- .../handler/guncfg/GunDetonatorFactory.java | 3 +- .../com/hbm/handler/nei/FuelPoolHandler.java | 102 +----------------- .../handler/nei/SolidificationHandler.java | 2 - .../com/hbm/items/tool/ItemColtanCompass.java | 2 +- .../hbm/items/tool/ItemLaserDetonator.java | 4 +- .../java/com/hbm/items/tool/ItemWiring.java | 2 +- src/main/java/com/hbm/main/ClientProxy.java | 10 +- .../java/com/hbm/main/CraftingManager.java | 2 + .../java/com/hbm/main/ModEventHandler.java | 2 +- .../com/hbm/main/ModEventHandlerClient.java | 2 +- src/main/java/com/hbm/main/ServerProxy.java | 16 ++- .../com/hbm/packet/PlayerInformPacket.java | 9 +- .../hbm/render/tileentity/RenderCharger.java | 2 +- .../com/hbm/render/util/RenderInfoSystem.java | 47 ++++++-- .../tileentity/machine/TileEntityCharger.java | 38 +++++-- 19 files changed, 125 insertions(+), 143 deletions(-) diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index 2502fa972..f347d2abd 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -2012,7 +2012,7 @@ public class ModBlocks { barbed_wire_ultradeath = new BarbedWire(Material.iron).setBlockName("barbed_wire_ultradeath").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":barbed_wire_ultradeath_model"); spikes = new Spikes(Material.iron).setBlockName("spikes").setHardness(2.5F).setResistance(5.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":spikes"); - charger = new Charger(Material.iron).setBlockName("charger").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":charger"); + charger = new Charger(Material.iron).setBlockName("charger").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); tesla = new MachineTesla(Material.iron).setBlockName("tesla").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":tesla"); diff --git a/src/main/java/com/hbm/blocks/generic/BarbedWire.java b/src/main/java/com/hbm/blocks/generic/BarbedWire.java index b52d5ff46..4bd8aa73b 100644 --- a/src/main/java/com/hbm/blocks/generic/BarbedWire.java +++ b/src/main/java/com/hbm/blocks/generic/BarbedWire.java @@ -27,11 +27,11 @@ public class BarbedWire extends Block { public void onEntityCollidedWithBlock(World p_149670_1_, int x, int y, int z, Entity ent) { - //ent.setInWeb(); + ent.setInWeb(); - ent.motionX *= 0.25D; + ent.motionX *= 0.15D; ent.motionY *= 0.1D; - ent.motionZ *= 0.25D; + ent.motionZ *= 0.15D; if(this == ModBlocks.barbed_wire) { ent.attackEntityFrom(DamageSource.cactus, 2.0F); diff --git a/src/main/java/com/hbm/blocks/machine/Charger.java b/src/main/java/com/hbm/blocks/machine/Charger.java index 282a0b225..4ae72544b 100644 --- a/src/main/java/com/hbm/blocks/machine/Charger.java +++ b/src/main/java/com/hbm/blocks/machine/Charger.java @@ -60,7 +60,14 @@ public class Charger extends BlockContainer { @Override public void setBlockBoundsBasedOnState(IBlockAccess world, int x, int y, int z) { float f = 0.0625F; - this.setBlockBounds(5 * f, 0.25F, 5 * f, 11 * f, 0.75F, 11 * f); + + switch(world.getBlockMetadata(x, y, z)) { + case 2: this.setBlockBounds(5 * f, 0.25F, 12 * f, 11 * f, 0.75F, 1F); break; + case 3: this.setBlockBounds(5 * f, 0.25F, 0F, 11 * f, 0.75F, 4 * f); break; + case 4: this.setBlockBounds(12 * f, 0.25F, 5 * f, 1F, 0.75F, 11 * f); break; + case 5: this.setBlockBounds(0F, 0.25F, 5 * f, 4 * f, 0.75F, 11 * f); break; + default: this.setBlockBounds(5 * f, 0.25F, 5 * f, 11 * f, 0.75F, 11 * f); break; + } } @Override diff --git a/src/main/java/com/hbm/extprop/HbmPlayerProps.java b/src/main/java/com/hbm/extprop/HbmPlayerProps.java index f504db0b7..2e991b86e 100644 --- a/src/main/java/com/hbm/extprop/HbmPlayerProps.java +++ b/src/main/java/com/hbm/extprop/HbmPlayerProps.java @@ -60,17 +60,17 @@ public class HbmPlayerProps implements IExtendedEntityProperties { this.enableBackpack = !this.enableBackpack; if(this.enableBackpack) - MainRegistry.proxy.displayTooltip(EnumChatFormatting.GREEN + "Jetpack ON"); + MainRegistry.proxy.displayTooltip(EnumChatFormatting.GREEN + "Jetpack ON", MainRegistry.proxy.ID_JETPACK); else - MainRegistry.proxy.displayTooltip(EnumChatFormatting.RED + "Jetpack OFF"); + MainRegistry.proxy.displayTooltip(EnumChatFormatting.RED + "Jetpack OFF", MainRegistry.proxy.ID_JETPACK); } if(key == EnumKeybind.TOGGLE_HEAD) { this.enableHUD = !this.enableHUD; if(this.enableHUD) - MainRegistry.proxy.displayTooltip(EnumChatFormatting.GREEN + "HUD ON"); + MainRegistry.proxy.displayTooltip(EnumChatFormatting.GREEN + "HUD ON", MainRegistry.proxy.ID_HUD); else - MainRegistry.proxy.displayTooltip(EnumChatFormatting.RED + "HUD OFF"); + MainRegistry.proxy.displayTooltip(EnumChatFormatting.RED + "HUD OFF", MainRegistry.proxy.ID_HUD); } } diff --git a/src/main/java/com/hbm/handler/guncfg/GunDetonatorFactory.java b/src/main/java/com/hbm/handler/guncfg/GunDetonatorFactory.java index 6861e80ff..2d373c7ad 100644 --- a/src/main/java/com/hbm/handler/guncfg/GunDetonatorFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/GunDetonatorFactory.java @@ -8,6 +8,7 @@ import com.hbm.handler.BulletConfiguration; import com.hbm.handler.GunConfiguration; import com.hbm.interfaces.IBomb; import com.hbm.interfaces.IBomb.BombReturnCode; +import com.hbm.main.MainRegistry; import com.hbm.interfaces.IBulletImpactBehavior; import com.hbm.packet.PacketDispatcher; import com.hbm.packet.PlayerInformPacket; @@ -101,7 +102,7 @@ public class GunDetonatorFactory { if(ret.wasSuccessful() && bullet.shooter instanceof EntityPlayerMP) { EntityPlayerMP player = (EntityPlayerMP) bullet.shooter; world.playSoundAtEntity(player, "hbm:item.techBleep", 1.0F, 1.0F); - PacketDispatcher.wrapper.sendTo(new PlayerInformPacket(ChatBuilder.start("").nextTranslation(ret.getUnlocalizedMessage()).color(EnumChatFormatting.YELLOW).flush()), (EntityPlayerMP) player); + PacketDispatcher.wrapper.sendTo(new PlayerInformPacket(ChatBuilder.start("").nextTranslation(ret.getUnlocalizedMessage()).color(EnumChatFormatting.YELLOW).flush(), MainRegistry.proxy.ID_DETONATOR), (EntityPlayerMP) player); } } } diff --git a/src/main/java/com/hbm/handler/nei/FuelPoolHandler.java b/src/main/java/com/hbm/handler/nei/FuelPoolHandler.java index 6adfde2da..cdbce5b5c 100644 --- a/src/main/java/com/hbm/handler/nei/FuelPoolHandler.java +++ b/src/main/java/com/hbm/handler/nei/FuelPoolHandler.java @@ -1,108 +1,16 @@ package com.hbm.handler.nei; -import static codechicken.lib.gui.GuiDraw.drawTexturedModalRect; - -import java.util.Arrays; -import java.util.List; -import java.util.Map.Entry; - import com.hbm.blocks.ModBlocks; -import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.inventory.recipes.FuelPoolRecipes; -import com.hbm.lib.RefStrings; -import codechicken.nei.NEIServerUtils; -import codechicken.nei.PositionedStack; -import codechicken.nei.recipe.TemplateRecipeHandler; -import net.minecraft.item.ItemStack; +public class FuelPoolHandler extends NEIUniversalHandler { -public class FuelPoolHandler extends TemplateRecipeHandler { - - public class RecipeSet extends TemplateRecipeHandler.CachedRecipe { - - PositionedStack input; - PositionedStack output; - - public RecipeSet(ItemStack in, ItemStack out) { - this.input = new PositionedStack(in, 48, 24); - this.output = new PositionedStack(out, 102, 24); - } - - @Override - public List getIngredients() { - return getCycledIngredients(cycleticks / 48, Arrays.asList(input)); - } - - @Override - public PositionedStack getResult() { - return output; - } - - @Override - public List getOtherStacks() { - return Arrays.asList(new PositionedStack(new ItemStack(ModBlocks.machine_waste_drum), 75, 31)); - } + public FuelPoolHandler() { + super("Spent Fuel Pool Drum", ModBlocks.machine_waste_drum, FuelPoolRecipes.recipes); } @Override - public String getRecipeName() { - return "Spent Fuel Pool Drum"; - } - - @Override - public String getGuiTexture() { - return RefStrings.MODID + ":textures/gui/nei/gui_nei.png"; - } - - @Override - public void drawBackground(int recipe) { - super.drawBackground(recipe); - drawTexturedModalRect(47, 23, 5, 87, 18, 18); - drawTexturedModalRect(101, 23, 5, 87, 18, 18); - drawTexturedModalRect(74, 14, 59, 87, 18, 38); - } - - @Override - public void loadCraftingRecipes(String outputId, Object... results) { - - if(outputId.equals("ntmSpentDrum")) { - - for(Entry recipe : FuelPoolRecipes.recipes.entrySet()) { - this.arecipes.add(new RecipeSet(recipe.getKey().toStack(), recipe.getValue())); - } - - } else { - super.loadCraftingRecipes(outputId, results); - } - } - - @Override - public void loadCraftingRecipes(ItemStack result) { - - for(Entry recipe : FuelPoolRecipes.recipes.entrySet()) { - if(NEIServerUtils.areStacksSameTypeCrafting(recipe.getValue(), result)) { - this.arecipes.add(new RecipeSet(recipe.getKey().toStack(), recipe.getValue())); - } - } - } - - @Override - public void loadUsageRecipes(String inputId, Object... ingredients) { - - if(inputId.equals("ntmSpentDrum")) { - loadCraftingRecipes("ntmSpentDrum", new Object[0]); - } else { - super.loadUsageRecipes(inputId, ingredients); - } - } - - @Override - public void loadUsageRecipes(ItemStack ingredient) { - - for(Entry recipe : FuelPoolRecipes.recipes.entrySet()) { - if(NEIServerUtils.areStacksSameTypeCrafting(recipe.getKey().toStack(), ingredient)) { - this.arecipes.add(new RecipeSet(recipe.getKey().toStack(), recipe.getValue())); - } - } + public String getKey() { + return "ntmSpentDrum"; } } diff --git a/src/main/java/com/hbm/handler/nei/SolidificationHandler.java b/src/main/java/com/hbm/handler/nei/SolidificationHandler.java index 96a066b03..181f7dfa8 100644 --- a/src/main/java/com/hbm/handler/nei/SolidificationHandler.java +++ b/src/main/java/com/hbm/handler/nei/SolidificationHandler.java @@ -3,8 +3,6 @@ package com.hbm.handler.nei; import com.hbm.blocks.ModBlocks; import com.hbm.inventory.recipes.SolidificationRecipes; -import codechicken.nei.recipe.TemplateRecipeHandler; - public class SolidificationHandler extends NEIUniversalHandler { public SolidificationHandler() { diff --git a/src/main/java/com/hbm/items/tool/ItemColtanCompass.java b/src/main/java/com/hbm/items/tool/ItemColtanCompass.java index 7fbf14af9..0d2739cf9 100644 --- a/src/main/java/com/hbm/items/tool/ItemColtanCompass.java +++ b/src/main/java/com/hbm/items/tool/ItemColtanCompass.java @@ -34,7 +34,7 @@ public class ItemColtanCompass extends Item { lease = System.currentTimeMillis() + 1000; Vec3 vec = Vec3.createVectorHelper(entity.posX - lastX, 0, entity.posZ - lastZ); - MainRegistry.proxy.displayTooltip(((int) vec.lengthVector()) + "m"); + MainRegistry.proxy.displayTooltip(((int) vec.lengthVector()) + "m", MainRegistry.proxy.ID_COMPASS); } if(ItemColtanCompass.this.lease < System.currentTimeMillis()) { diff --git a/src/main/java/com/hbm/items/tool/ItemLaserDetonator.java b/src/main/java/com/hbm/items/tool/ItemLaserDetonator.java index 263c5510c..4fee946c8 100644 --- a/src/main/java/com/hbm/items/tool/ItemLaserDetonator.java +++ b/src/main/java/com/hbm/items/tool/ItemLaserDetonator.java @@ -47,11 +47,11 @@ public class ItemLaserDetonator extends Item implements IHoldableWeapon { MainRegistry.logger.log(Level.INFO, "[DET] Tried to detonate block at " + x + " / " + y + " / " + z + " by " + player.getDisplayName() + "!"); world.playSoundAtEntity(player, "hbm:item.techBleep", 1.0F, 1.0F); - PacketDispatcher.wrapper.sendTo(new PlayerInformPacket(ChatBuilder.start("").nextTranslation(ret.getUnlocalizedMessage()).color(ret.wasSuccessful() ? EnumChatFormatting.YELLOW : EnumChatFormatting.RED).flush()), (EntityPlayerMP) player); + PacketDispatcher.wrapper.sendTo(new PlayerInformPacket(ChatBuilder.start("").nextTranslation(ret.getUnlocalizedMessage()).color(ret.wasSuccessful() ? EnumChatFormatting.YELLOW : EnumChatFormatting.RED).flush(), MainRegistry.proxy.ID_DETONATOR), (EntityPlayerMP) player); } else { world.playSoundAtEntity(player, "hbm:item.techBoop", 1.0F, 1.0F); - PacketDispatcher.wrapper.sendTo(new PlayerInformPacket(ChatBuilder.start("").nextTranslation(BombReturnCode.ERROR_NO_BOMB.getUnlocalizedMessage()).color(EnumChatFormatting.RED).flush()), (EntityPlayerMP) player); + PacketDispatcher.wrapper.sendTo(new PlayerInformPacket(ChatBuilder.start("").nextTranslation(BombReturnCode.ERROR_NO_BOMB.getUnlocalizedMessage()).color(EnumChatFormatting.RED).flush(), MainRegistry.proxy.ID_DETONATOR), (EntityPlayerMP) player); } } else { diff --git a/src/main/java/com/hbm/items/tool/ItemWiring.java b/src/main/java/com/hbm/items/tool/ItemWiring.java index 04c8455af..fc694ee82 100644 --- a/src/main/java/com/hbm/items/tool/ItemWiring.java +++ b/src/main/java/com/hbm/items/tool/ItemWiring.java @@ -111,7 +111,7 @@ public class ItemWiring extends Item { entity.posY - stack.stackTagCompound.getInteger("y"), entity.posZ - stack.stackTagCompound.getInteger("z")); - MainRegistry.proxy.displayTooltip(((int) vec.lengthVector()) + "m"); + MainRegistry.proxy.displayTooltip(((int) vec.lengthVector()) + "m", MainRegistry.proxy.ID_CABLE); } } } diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index df9837621..14ae1a1f6 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -1625,12 +1625,14 @@ public class ClientProxy extends ServerProxy { @Override public void playSound(String sound, Object data) { } - + @Override - public void displayTooltip(String msg) { - //Minecraft.getMinecraft().ingameGUI.func_110326_a(msg, false); + public void displayTooltip(String msg, int time, int id) { - this.theInfoSystem.push(new InfoEntry(msg, 1000)); + if(id != 0) + this.theInfoSystem.push(new InfoEntry(msg, time), id); + else + this.theInfoSystem.push(new InfoEntry(msg, time)); } @Override diff --git a/src/main/java/com/hbm/main/CraftingManager.java b/src/main/java/com/hbm/main/CraftingManager.java index 653ebc302..8dd1dbdbc 100644 --- a/src/main/java/com/hbm/main/CraftingManager.java +++ b/src/main/java/com/hbm/main/CraftingManager.java @@ -871,6 +871,8 @@ public class CraftingManager { addShapelessAuto(new ItemStack(ModItems.book_guide, 1, BookType.RBMK.ordinal()), new Object[] { Items.book, Items.potato }); addShapelessAuto(new ItemStack(ModItems.book_guide, 1, BookType.HADRON.ordinal()), new Object[] { Items.book, ModItems.fuse }); addShapelessAuto(new ItemStack(ModItems.book_guide, 1, BookType.STARTER.ordinal()), new Object[] { Items.book, Items.iron_ingot }); + + addRecipeAuto(new ItemStack(ModBlocks.charger), new Object[] { "IGI", "ICI", "PDP", 'I', STEEL.ingot(), 'G', Items.glowstone_dust, 'C', ModBlocks.red_wire_coated, 'P', IRON.plate(), 'D', ModItems.coil_copper }); addShapelessAuto(new ItemStack(ModItems.holotape_image, 1, EnumHoloImage.HOLO_RESTORED.ordinal()), new Object[] { new ItemStack(ModItems.holotape_image, 1, EnumHoloImage.HOLO_DIGAMMA.ordinal()), KEY_TOOL_SCREWDRIVER, ModItems.ducttape, ModItems.armor_polish }); addShapelessAuto(new ItemStack(ModItems.holotape_damaged), new Object[] { DictFrame.fromOne(ModItems.holotape_image, EnumHoloImage.HOLO_RESTORED), ModBlocks.muffler, ModItems.crt_display, ModItems.gem_alexandrite /* placeholder for amplifier */ }); diff --git a/src/main/java/com/hbm/main/ModEventHandler.java b/src/main/java/com/hbm/main/ModEventHandler.java index fb18842c8..bb60e0c64 100644 --- a/src/main/java/com/hbm/main/ModEventHandler.java +++ b/src/main/java/com/hbm/main/ModEventHandler.java @@ -178,7 +178,7 @@ public class ModEventHandler { } if(MobConfig.enableDucks && 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); + PacketDispatcher.wrapper.sendTo(new PlayerInformPacket("Press O to Duck!", MainRegistry.proxy.ID_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 d7bea7ba1..3b83da3af 100644 --- a/src/main/java/com/hbm/main/ModEventHandlerClient.java +++ b/src/main/java/com/hbm/main/ModEventHandlerClient.java @@ -686,7 +686,7 @@ public class ModEventHandlerClient { } if(ArmorUtil.isWearingEmptyMask(mc.thePlayer)) { - MainRegistry.proxy.displayTooltip(EnumChatFormatting.RED + "Your mask has no filter!"); + MainRegistry.proxy.displayTooltip(EnumChatFormatting.RED + "Your mask has no filter!", MainRegistry.proxy.ID_FILTER); } } } diff --git a/src/main/java/com/hbm/main/ServerProxy.java b/src/main/java/com/hbm/main/ServerProxy.java index 8dfa85cbb..fb26309d9 100644 --- a/src/main/java/com/hbm/main/ServerProxy.java +++ b/src/main/java/com/hbm/main/ServerProxy.java @@ -10,6 +10,15 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; public class ServerProxy { + + //sort by estimated time of display. longer lasting ones should be sortet at the top. + public static final int ID_DUCK = 0; + public static final int ID_FILTER = 1; + public static final int ID_COMPASS = 2; + public static final int ID_CABLE = 3; + public static final int ID_JETPACK = 4; + public static final int ID_HUD = 5; + public static final int ID_DETONATOR = 6; public void registerRenderInfo() { } public void registerTileEntitySpecialRenderer() { } @@ -28,8 +37,11 @@ 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) { } + + public void displayTooltip(String msg, int id) { + displayTooltip(msg, 1000, id); + } + public void displayTooltip(String msg, int time, int id) { } public boolean getIsKeyPressed(EnumKeybind key) { return false; diff --git a/src/main/java/com/hbm/packet/PlayerInformPacket.java b/src/main/java/com/hbm/packet/PlayerInformPacket.java index 659f70a6d..2acf83998 100644 --- a/src/main/java/com/hbm/packet/PlayerInformPacket.java +++ b/src/main/java/com/hbm/packet/PlayerInformPacket.java @@ -15,22 +15,24 @@ public class PlayerInformPacket implements IMessage { boolean fancy; private String dmesg = ""; + private int id; private IChatComponent component; public PlayerInformPacket() { } - public PlayerInformPacket(String dmesg) { + public PlayerInformPacket(String dmesg, int id) { this.fancy = false; this.dmesg = dmesg; } - public PlayerInformPacket(IChatComponent component) { + public PlayerInformPacket(IChatComponent component, int id) { this.fancy = true; this.component = component; } @Override public void fromBytes(ByteBuf buf) { + id = buf.readInt(); fancy = buf.readBoolean(); if(!fancy) { @@ -42,6 +44,7 @@ public class PlayerInformPacket implements IMessage { @Override public void toBytes(ByteBuf buf) { + buf.writeInt(id); buf.writeBoolean(fancy); if(!fancy) { ByteBufUtils.writeUTF8String(buf, dmesg); @@ -57,7 +60,7 @@ public class PlayerInformPacket implements IMessage { public IMessage onMessage(PlayerInformPacket m, MessageContext ctx) { try { - MainRegistry.proxy.displayTooltip(m.fancy ? m.component.getFormattedText() : m.dmesg); + MainRegistry.proxy.displayTooltip(m.fancy ? m.component.getFormattedText() : m.dmesg, m.id); } catch (Exception x) { } return null; diff --git a/src/main/java/com/hbm/render/tileentity/RenderCharger.java b/src/main/java/com/hbm/render/tileentity/RenderCharger.java index f7ce54d3a..ed2b52bd5 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderCharger.java +++ b/src/main/java/com/hbm/render/tileentity/RenderCharger.java @@ -31,7 +31,7 @@ public class RenderCharger extends TileEntitySpecialRenderer { TileEntityCharger charger = (TileEntityCharger) tile; - double time = (charger.lastUsingTicks + (charger.lastUsingTicks - charger.lastUsingTicks) * interp) / (double) charger.delay; + double time = (charger.lastUsingTicks + (charger.usingTicks - charger.lastUsingTicks) * interp) / (double) charger.delay; double extend = Math.min(1, time * 2); double swivel = Math.max(0, (time - 0.5) * 2); diff --git a/src/main/java/com/hbm/render/util/RenderInfoSystem.java b/src/main/java/com/hbm/render/util/RenderInfoSystem.java index 405847c08..e91907868 100644 --- a/src/main/java/com/hbm/render/util/RenderInfoSystem.java +++ b/src/main/java/com/hbm/render/util/RenderInfoSystem.java @@ -14,12 +14,14 @@ import cpw.mods.fml.common.gameevent.TickEvent.ClientTickEvent; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.Gui; import net.minecraft.client.gui.ScaledResolution; +import net.minecraft.client.renderer.OpenGlHelper; +import net.minecraft.client.renderer.Tessellator; import net.minecraftforge.client.event.RenderGameOverlayEvent; import net.minecraftforge.client.event.RenderGameOverlayEvent.ElementType; public class RenderInfoSystem { - private static Random rand = new Random(); + private static int nextID = 1000; private static HashMap inbox = new HashMap(); private static HashMap messages = new HashMap(); @@ -36,6 +38,7 @@ public class RenderInfoSystem { if(entry.start + entry.millis < System.currentTimeMillis()) { messages.remove(key); + keys = new ArrayList(messages.keySet()); i--; } } @@ -46,17 +49,46 @@ public class RenderInfoSystem { if(event.type != ElementType.CROSSHAIRS) return; + + if(this.messages.isEmpty()) + return; Minecraft mc = Minecraft.getMinecraft(); ScaledResolution resolution = event.resolution; - - int pX = 15; //resolution.getScaledWidth() / 2 + 8; - int pZ = 15; //resolution.getScaledHeight() / 2; - List entries = new ArrayList(messages.entrySet()); + List entries = new ArrayList(messages.values()); Collections.sort(entries); GL11.glPushMatrix(); + GL11.glEnable(GL11.GL_BLEND); + OpenGlHelper.glBlendFunc(770, 771, 1, 0); + + int longest = 0; + + for(InfoEntry entry : messages.values()) { + int length = mc.fontRenderer.getStringWidth(entry.text); + + if(length > longest) + longest = length; + } + + int mode = 0; + + int pX = mode == 0 ? 15 : mode == 1 ? (resolution.getScaledWidth() - longest - 15) : mode == 2 ? (resolution.getScaledWidth() / 2 + 7) : (resolution.getScaledWidth() / 2 - longest - 6); + int pZ = mode == 0 ? 15 : mode == 1 ? 15 : resolution.getScaledHeight() / 2 + 7; + + int side = pX + 5 + longest; + int height = messages.size() * 10 + pZ + 2; + int z = 0; + + Tessellator tess = Tessellator.instance; + tess.startDrawingQuads(); + tess.setColorRGBA_F(0.5F, 0.5F, 0.5F, 0.5F); + tess.addVertex(pX - 5, pZ - 5, z); + tess.addVertex(pX - 5, height, z); + tess.addVertex(side, height, z); + tess.addVertex(side, pZ - 5, z); + tess.draw(); int off = 0; long now = System.currentTimeMillis(); @@ -65,7 +97,7 @@ public class RenderInfoSystem { int elapsed = (int) (now - entry.start); - int alpha = Math.min(510 * (entry.millis - elapsed) / entry.millis, 255); //smoothly scales down from 510 to 0, then caps at 255 + int alpha = Math.max(Math.min(510 * (entry.millis - elapsed) / entry.millis, 255), 5); //smoothly scales down from 510 to 0, then caps at 255 int color = entry.color + (alpha << 24 & -0xffffff); mc.fontRenderer.drawString(entry.text, pX, pZ + off, color); @@ -92,7 +124,6 @@ public class RenderInfoSystem { mc.fontRenderer.drawStringWithShadow(ex.getClass().getSimpleName(), pX, pZ + 10, 0xff0000); }*/ - GL11.glDisable(GL11.GL_BLEND); GL11.glColor3f(1F, 1F, 1F); GL11.glPopMatrix(); @@ -100,7 +131,7 @@ public class RenderInfoSystem { } public static void push(InfoEntry entry) { - push(entry, rand.nextInt()); //range is so large, collisions are unlikely and if they do occur, not a big deal + push(entry, nextID++); //range is so large, collisions are unlikely and if they do occur, not a big deal } public static void push(InfoEntry entry, int id) { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityCharger.java b/src/main/java/com/hbm/tileentity/machine/TileEntityCharger.java index a19bedc7d..c1f8294c5 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityCharger.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityCharger.java @@ -9,8 +9,6 @@ import com.hbm.tileentity.TileEntityLoadedBase; import api.hbm.energy.IBatteryItem; import api.hbm.energy.IEnergyUser; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; @@ -32,12 +30,12 @@ public class TileEntityCharger extends TileEntityLoadedBase implements IEnergyUs @Override public void updateEntity() { + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata()).getOpposite(); + if(!worldObj.isRemote) { - - ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata()); this.trySubscribe(worldObj, xCoord + dir.offsetX, yCoord, zCoord + dir.offsetZ, dir); - players = worldObj.getEntitiesWithinAABB(EntityPlayer.class, AxisAlignedBB.getBoundingBox(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5, xCoord + 0.5, yCoord + 0.5, zCoord + 0.5).expand(1, 0.5, 1)); + players = worldObj.getEntitiesWithinAABB(EntityPlayer.class, AxisAlignedBB.getBoundingBox(xCoord + 0.5, yCoord, zCoord + 0.5, xCoord + 0.5, yCoord + 0.5, zCoord + 0.5).expand(0.5, 0.0, 0.5)); charge = 0; @@ -54,22 +52,42 @@ public class TileEntityCharger extends TileEntityLoadedBase implements IEnergyUs } } + particles = worldObj.getTotalWorldTime() - lastOp < 4; + + if(particles) { + + if(worldObj.getTotalWorldTime() % 20 == 0) + worldObj.playSoundEffect(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5, "random.fizz", 0.2F, 0.5F); + } + NBTTagCompound data = new NBTTagCompound(); data.setLong("c", charge); - data.setBoolean("p", worldObj.getTotalWorldTime() - lastOp < 4); + data.setBoolean("p", particles); INBTPacketReceiver.networkPack(this, data, 50); } lastUsingTicks = usingTicks; - if(charge > 0 && usingTicks < delay) + if((charge > 0 || particles) && usingTicks < delay) { usingTicks++; - if(charge <= 0 && usingTicks > 0) + if(usingTicks == 2) + worldObj.playSoundEffect(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5, "tile.piston.out", 0.5F, 0.5F); + } + if((charge <= 0 && !particles) && usingTicks > 0) { usingTicks--; + if(usingTicks == 4) + worldObj.playSoundEffect(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5, "tile.piston.in", 0.5F, 0.5F); + } if(particles) { Random rand = worldObj.rand; - worldObj.spawnParticle("magicCrit", xCoord + 0.25 + rand.nextDouble() * 0.5, yCoord + rand.nextDouble() * 0.5, zCoord + 0.25 + rand.nextDouble() * 0.5, 0.0, 0.0, 0.0); + worldObj.spawnParticle("magicCrit", + xCoord + 0.5 + rand.nextDouble() * 0.0625 + dir.offsetX * 0.75, + yCoord + 0.1, + zCoord + 0.5 + rand.nextDouble() * 0.0625 + dir.offsetZ * 0.75, + -dir.offsetX + rand.nextGaussian() * 0.1, + 0, + -dir.offsetZ + rand.nextGaussian() * 0.1); } } @@ -110,7 +128,7 @@ public class TileEntityCharger extends TileEntityLoadedBase implements IEnergyUs IBatteryItem battery = (IBatteryItem) stack.getItem(); long toCharge = Math.min(battery.getMaxCharge() - battery.getCharge(stack), battery.getChargeRate()); - toCharge = Math.min(toCharge, power); + toCharge = Math.min(toCharge, power / 5); battery.chargeBattery(stack, toCharge); power -= toCharge; }