public class ExtendedPlayer implements IExtendedEntityProperties {
public final static String EXT_PROP_NAME = "ExtendedPlayer";
private final EntityPlayer player;
private int currentMana, maxMana;
public ExtendedPlayer(EntityPlayer player)
{
this.player = player;
this.currentMana = this.maxMana = 100;
}
public static final void register(EntityPlayer player)
{
player.registerExtendedProperties(ExtendedPlayer.EXT_PROP_NAME, new ExtendedPlayer(player));
}
public static final ExtendedPlayer get(EntityPlayer player)
{
return (ExtendedPlayer) player.getExtendedProperties(EXT_PROP_NAME);
}
@Override
public void saveNBTData(NBTTagCompound compound) {
NBTTagCompound properties = new NBTTagCompound();
properties.setInteger("CurrentMana", this.currentMana);
properties.setInteger("MaxMana", this.maxMana);
compound.setTag(EXT_PROP_NAME, properties);
}
@Override
public void loadNBTData(NBTTagCompound compound) {
NBTTagCompound properties = (NBTTagCompound) compound.getTag(EXT_PROP_NAME);
this.currentMana = properties.getInteger("CurrentMana");
this.maxMana = properties.getInteger("MaxMana");
System.out.println("[TUT PROPS] Mana from NBT: " + this.currentMana + "/" + this.maxMana);
}
@Override
public void init(Entity entity, World world) {
}
public boolean consumeMana(int amount)
{
boolean sufficient = amount <= this.currentMana;
this.currentMana -= (amount < this.currentMana ? amount : this.currentMana);
return sufficient;
}
public void replenishMana()
{
this.currentMana = this.maxMana;
}
public float getMaxMana() {
return this.maxMana;
}
public Object getCurrentMana() {
return this.currentMana;
}
}
@SideOnly(Side.CLIENT)
public class GuiManaBar extends Gui {
private Minecraft mc;
private static final ResourceLocation texturepath = new ResourceLocation("magicproject", "textures/gui/mana_bar.png");
public GuiManaBar(Minecraft mc)
{
super();
this.mc = mc;
}
@SubscribeEvent(priority = EventPriority.NORMAL)
public void onRenderExperienceBar(RenderGameOverlayEvent event)
{
if (event.isCancelable() || event.type != RenderGameOverlayEvent.ElementType.EXPERIENCE)
{
return;
}
ExtendedPlayer props = ExtendedPlayer.get(this.mc.thePlayer);
if (props == null || props.getMaxMana() == 0)
{
return;
}
int xPos = 2;
int yPos = 2;
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
GL11.glDisable(GL11.GL_LIGHTING);
this.mc.getTextureManager().bindTexture(texturepath);
this.drawTexturedModalRect(xPos, yPos, 0, 0, 50, 4);
int manabarwidth = (int)(((float) props.getCurrentMana() / props.getMaxMana()) * 50);
System.out.println("[GUI MANA] Current mana bar width: " + manabarwidth);
this.drawTexturedModalRect(xPos, yPos + 1, 0, 4, manabarwidth, 2);
}
}
@Mod.EventHandler
public static void postInit(FMLPostInitializationEvent event) {
if (FMLCommonHandler.instance().getEffectiveSide().isClient())
MinecraftForge.EVENT_BUS.register(new GuiManaBar(Minecraft.getMinecraft()));
}