diff --git a/src/main/java/vazkii/botania/client/core/handler/BaubleRenderHandler.java b/src/main/java/vazkii/botania/client/core/handler/BaubleRenderHandler.java index 72942ad10..9654aa62b 100644 --- a/src/main/java/vazkii/botania/client/core/handler/BaubleRenderHandler.java +++ b/src/main/java/vazkii/botania/client/core/handler/BaubleRenderHandler.java @@ -57,8 +57,12 @@ public final class BaubleRenderHandler { private void dispatchRenders(InventoryBaubles inv, RenderPlayerEvent event, RenderType type) { for(int i = 0; i < inv.getSizeInventory(); i++) { ItemStack stack = inv.getStackInSlot(i); - if(stack != null && stack.getItem() instanceof IBaubleRender) + if(stack != null && stack.getItem() instanceof IBaubleRender) { + GL11.glPushMatrix(); + GL11.glColor4f(1F, 1F, 1F, 1F); ((IBaubleRender) stack.getItem()).onPlayerBaubleRender(stack, event, type); + GL11.glPopMatrix(); + } } } diff --git a/src/main/java/vazkii/botania/client/lib/LibResources.java b/src/main/java/vazkii/botania/client/lib/LibResources.java index 124d86a4f..eced4486a 100644 --- a/src/main/java/vazkii/botania/client/lib/LibResources.java +++ b/src/main/java/vazkii/botania/client/lib/LibResources.java @@ -95,6 +95,9 @@ public final class LibResources { public static final String MODEL_TINY_POTATO = PREFIX_MODEL + "tinyPotato.png"; public static final String MODEL_SPAWNER_CLAW = PREFIX_MODEL + "spawnerClaw.png"; public static final String MODEL_BREWERY = PREFIX_MODEL + "brewery.png"; + public static final String MODEL_TRAVEL_BELT = PREFIX_MODEL + "travelBelt.png"; + public static final String MODEL_SUPER_TRAVEL_BELT = PREFIX_MODEL + "superTravelBelt.png"; + public static final String MODEL_KNOCKBACK_BELT = PREFIX_MODEL + "knockbackBelt.png"; public static final String MODEL_CAPE = "/assets/botania/textures/model/cape.png"; diff --git a/src/main/java/vazkii/botania/common/item/equipment/bauble/ItemBloodPendant.java b/src/main/java/vazkii/botania/common/item/equipment/bauble/ItemBloodPendant.java index 1e1f06a57..73661e08e 100644 --- a/src/main/java/vazkii/botania/common/item/equipment/bauble/ItemBloodPendant.java +++ b/src/main/java/vazkii/botania/common/item/equipment/bauble/ItemBloodPendant.java @@ -14,7 +14,14 @@ package vazkii.botania.common.item.equipment.bauble; import java.awt.Color; import java.util.List; +import org.lwjgl.opengl.GL11; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.ItemRenderer; +import net.minecraft.client.renderer.OpenGlHelper; +import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.client.renderer.texture.TextureMap; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; @@ -27,11 +34,14 @@ import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.IIcon; import net.minecraft.util.StatCollector; import net.minecraft.world.World; +import net.minecraftforge.client.event.RenderPlayerEvent; import baubles.api.BaubleType; import vazkii.botania.api.BotaniaAPI; import vazkii.botania.api.brew.Brew; import vazkii.botania.api.brew.IBrewContainer; import vazkii.botania.api.brew.IBrewItem; +import vazkii.botania.api.item.IBaubleRender; +import vazkii.botania.api.item.IBaubleRender.Helper; import vazkii.botania.api.mana.IManaUsingItem; import vazkii.botania.api.mana.ManaItemHandler; import vazkii.botania.client.core.handler.ClientTickHandler; @@ -41,7 +51,7 @@ import vazkii.botania.common.item.ModItems; import vazkii.botania.common.item.brew.ItemBrewBase; import vazkii.botania.common.lib.LibItemNames; -public class ItemBloodPendant extends ItemBauble implements IBrewContainer, IBrewItem, IManaUsingItem { +public class ItemBloodPendant extends ItemBauble implements IBrewContainer, IBrewItem, IManaUsingItem, IBaubleRender { private static final String TAG_BREW_KEY = "brewKey"; @@ -64,8 +74,8 @@ public class ItemBloodPendant extends ItemBauble implements IBrewContainer, IBre @Override public void registerIcons(IIconRegister par1IconRegister) { - icons = new IIcon[2]; - for(int i = 0; i < 2; i++) + icons = new IIcon[4]; + for(int i = 0; i < 4; i++) icons[i] = IconHelper.forItem(par1IconRegister, this, i); } @@ -177,4 +187,32 @@ public class ItemBloodPendant extends ItemBauble implements IBrewContainer, IBre return getBrew(stack) != BotaniaAPI.fallbackBrew; } + @Override + public void onPlayerBaubleRender(ItemStack stack, RenderPlayerEvent event, RenderType type) { + if(type == RenderType.BODY) { + Minecraft.getMinecraft().renderEngine.bindTexture(TextureMap.locationItemsTexture); + Helper.rotateIfSneaking(event.entityPlayer); + boolean armor = event.entityPlayer.getCurrentArmor(2) != null; + GL11.glRotatef(180F, 1F, 0F, 0F); + GL11.glTranslatef(-0.26F, -0.4F, armor ? 0.2F : 0.15F); + GL11.glScalef(0.5F, 0.5F, 0.5F); + + for(int i = 2; i < 4; i++) { + IIcon icon = icons[i]; + float f = icon.getMinU(); + float f1 = icon.getMaxU(); + float f2 = icon.getMinV(); + float f3 = icon.getMaxV(); + ItemRenderer.renderItemIn2D(Tessellator.instance, f1, f2, f, f3, icon.getIconWidth(), icon.getIconHeight(), 1F / 32F); + + Color color = new Color(getColorFromItemStack(stack, 1)); + GL11.glColor3ub((byte) color.getRed(), (byte) color.getGreen(), (byte) color.getBlue()); + int light = 15728880; + int lightmapX = light % 65536; + int lightmapY = light / 65536; + OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, lightmapX, lightmapY); + } + } + } + } diff --git a/src/main/java/vazkii/botania/common/item/equipment/bauble/ItemDivaCharm.java b/src/main/java/vazkii/botania/common/item/equipment/bauble/ItemDivaCharm.java index 8d17047f1..f5bb764a0 100644 --- a/src/main/java/vazkii/botania/common/item/equipment/bauble/ItemDivaCharm.java +++ b/src/main/java/vazkii/botania/common/item/equipment/bauble/ItemDivaCharm.java @@ -13,14 +13,24 @@ package vazkii.botania.common.item.equipment.bauble; import java.util.List; +import org.lwjgl.opengl.GL11; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.ItemRenderer; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.client.renderer.texture.TextureMap; import net.minecraft.entity.EntityLiving; import net.minecraft.entity.monster.EntityCreeper; import net.minecraft.entity.monster.IMob; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.util.AxisAlignedBB; +import net.minecraftforge.client.event.RenderPlayerEvent; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.event.entity.living.LivingHurtEvent; +import vazkii.botania.api.item.IBaubleRender; +import vazkii.botania.api.item.IBaubleRender.Helper; +import vazkii.botania.api.item.IBaubleRender.RenderType; import vazkii.botania.api.mana.IManaUsingItem; import vazkii.botania.api.mana.ManaItemHandler; import vazkii.botania.common.Botania; @@ -31,8 +41,10 @@ import baubles.api.BaubleType; import baubles.common.lib.PlayerHandler; import cpw.mods.fml.common.eventhandler.SubscribeEvent; import cpw.mods.fml.relauncher.ReflectionHelper; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; -public class ItemDivaCharm extends ItemBauble implements IManaUsingItem { +public class ItemDivaCharm extends ItemBauble implements IManaUsingItem, IBaubleRender { public ItemDivaCharm() { super(LibItemNames.DIVA_CHARM); @@ -83,5 +95,24 @@ public class ItemDivaCharm extends ItemBauble implements IManaUsingItem { public boolean usesMana(ItemStack stack) { return true; } + + @Override + @SideOnly(Side.CLIENT) + public void onPlayerBaubleRender(ItemStack stack, RenderPlayerEvent event, RenderType type) { + if(type == RenderType.HEAD) { + float f = itemIcon.getMinU(); + float f1 = itemIcon.getMaxU(); + float f2 = itemIcon.getMinV(); + float f3 = itemIcon.getMaxV(); + boolean armor = event.entityPlayer.getCurrentArmor(3) != null; + Helper.translateToHeadLevel(event.entityPlayer); + Minecraft.getMinecraft().renderEngine.bindTexture(TextureMap.locationItemsTexture); + GL11.glRotatef(90F, 0F, 1F, 0F); + GL11.glRotatef(180F, 1F, 0F, 0F); + GL11.glTranslatef(-0.4F, 0.1F, armor ? -0.35F : -0.3F); + GL11.glScalef(0.5F, 0.5F, 0.5F); + ItemRenderer.renderItemIn2D(Tessellator.instance, f1, f2, f, f3, itemIcon.getIconWidth(), itemIcon.getIconHeight(), 1F / 16F); + } + } } diff --git a/src/main/java/vazkii/botania/common/item/equipment/bauble/ItemGoldenLaurel.java b/src/main/java/vazkii/botania/common/item/equipment/bauble/ItemGoldenLaurel.java index d5bc72d88..98b5d702b 100644 --- a/src/main/java/vazkii/botania/common/item/equipment/bauble/ItemGoldenLaurel.java +++ b/src/main/java/vazkii/botania/common/item/equipment/bauble/ItemGoldenLaurel.java @@ -11,20 +11,32 @@ */ package vazkii.botania.common.item.equipment.bauble; +import org.lwjgl.opengl.GL11; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.ItemRenderer; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.client.renderer.texture.TextureMap; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.potion.Potion; import net.minecraft.potion.PotionEffect; import net.minecraft.util.ChatComponentTranslation; +import net.minecraftforge.client.event.RenderPlayerEvent; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.event.entity.living.LivingDeathEvent; +import vazkii.botania.api.item.IBaubleRender; +import vazkii.botania.api.item.IBaubleRender.Helper; +import vazkii.botania.api.item.IBaubleRender.RenderType; import vazkii.botania.common.lib.LibItemNames; import baubles.api.BaubleType; import baubles.common.lib.PlayerHandler; import cpw.mods.fml.common.eventhandler.EventPriority; import cpw.mods.fml.common.eventhandler.SubscribeEvent; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; -public class ItemGoldenLaurel extends ItemBauble { +public class ItemGoldenLaurel extends ItemBauble implements IBaubleRender { public ItemGoldenLaurel() { super(LibItemNames.GOLDEN_LAUREL); @@ -52,4 +64,27 @@ public class ItemGoldenLaurel extends ItemBauble { public BaubleType getBaubleType(ItemStack itemstack) { return BaubleType.AMULET; } + + @Override + @SideOnly(Side.CLIENT) + public void onPlayerBaubleRender(ItemStack stack, RenderPlayerEvent event, RenderType type) { + if(type == RenderType.HEAD) { + float f = itemIcon.getMinU(); + float f1 = itemIcon.getMaxU(); + float f2 = itemIcon.getMinV(); + float f3 = itemIcon.getMaxV(); + boolean armor = event.entityPlayer.getCurrentArmor(3) != null; + Helper.translateToHeadLevel(event.entityPlayer); + Minecraft.getMinecraft().renderEngine.bindTexture(TextureMap.locationItemsTexture); + GL11.glRotatef(180F, 0F, 0F, 1F); + GL11.glRotatef(90F, 0F, 1F, 0F); + GL11.glRotatef(-100F, 1F, 0F, 0F); + GL11.glTranslatef(-0.5F, -0.55F, 0.3F); + if(armor) { + GL11.glScalef(1.1F, 1.1F, 1F); + GL11.glTranslatef(-0.05F, -0.1F, 0F); + } + ItemRenderer.renderItemIn2D(Tessellator.instance, f1, f2, f, f3, itemIcon.getIconWidth(), itemIcon.getIconHeight(), 1F / 32F); + } + } } diff --git a/src/main/java/vazkii/botania/common/item/equipment/bauble/ItemIcePendant.java b/src/main/java/vazkii/botania/common/item/equipment/bauble/ItemIcePendant.java index c6e1cc6b5..fa787f7dd 100644 --- a/src/main/java/vazkii/botania/common/item/equipment/bauble/ItemIcePendant.java +++ b/src/main/java/vazkii/botania/common/item/equipment/bauble/ItemIcePendant.java @@ -11,24 +11,42 @@ */ package vazkii.botania.common.item.equipment.bauble; +import java.awt.Color; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; +import org.lwjgl.opengl.GL11; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.material.Material; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.ItemRenderer; +import net.minecraft.client.renderer.OpenGlHelper; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.client.renderer.texture.TextureMap; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; import net.minecraft.item.ItemStack; import net.minecraft.util.ChunkCoordinates; +import net.minecraft.util.IIcon; import net.minecraft.util.MathHelper; import net.minecraft.world.World; +import net.minecraftforge.client.event.RenderPlayerEvent; +import vazkii.botania.api.item.IBaubleRender; +import vazkii.botania.api.item.IBaubleRender.Helper; +import vazkii.botania.api.item.IBaubleRender.RenderType; +import vazkii.botania.client.core.helper.IconHelper; import vazkii.botania.common.lib.LibItemNames; import baubles.api.BaubleType; -public class ItemIcePendant extends ItemBauble { +public class ItemIcePendant extends ItemBauble implements IBaubleRender { + IIcon gemIcon; public static Map> playerIceBlocks = new HashMap(); public ItemIcePendant() { @@ -40,6 +58,12 @@ public class ItemIcePendant extends ItemBauble { return BaubleType.AMULET; } + @Override + public void registerIcons(IIconRegister par1IconRegister) { + super.registerIcons(par1IconRegister); + gemIcon = IconHelper.forItem(par1IconRegister, this, "Gem"); + } + @Override public void onWornTick(ItemStack stack, EntityLivingBase entity) { super.onWornTick(stack, entity); @@ -91,6 +115,25 @@ public class ItemIcePendant extends ItemBauble { ice.tick(player.worldObj, removers); } + @Override + public void onPlayerBaubleRender(ItemStack stack, RenderPlayerEvent event, RenderType type) { + if(type == RenderType.BODY) { + Minecraft.getMinecraft().renderEngine.bindTexture(TextureMap.locationItemsTexture); + Helper.rotateIfSneaking(event.entityPlayer); + boolean armor = event.entityPlayer.getCurrentArmor(2) != null; + GL11.glRotatef(180F, 1F, 0F, 0F); + GL11.glTranslatef(-0.36F, -0.3F, armor ? 0.2F : 0.15F); + GL11.glRotatef(-45F, 0F, 0F, 1F); + GL11.glScalef(0.5F, 0.5F, 0.5F); + + float f = gemIcon.getMinU(); + float f1 = gemIcon.getMaxU(); + float f2 = gemIcon.getMinV(); + float f3 = gemIcon.getMaxV(); + ItemRenderer.renderItemIn2D(Tessellator.instance, f1, f2, f, f3, gemIcon.getIconWidth(), gemIcon.getIconHeight(), 1F / 32F); + } + } + class IceRemover { int time = 30; diff --git a/src/main/java/vazkii/botania/common/item/equipment/bauble/ItemKnockbackBelt.java b/src/main/java/vazkii/botania/common/item/equipment/bauble/ItemKnockbackBelt.java index 52f35f541..45ab23021 100644 --- a/src/main/java/vazkii/botania/common/item/equipment/bauble/ItemKnockbackBelt.java +++ b/src/main/java/vazkii/botania/common/item/equipment/bauble/ItemKnockbackBelt.java @@ -13,16 +13,32 @@ package vazkii.botania.common.item.equipment.bauble; import java.util.UUID; +import org.lwjgl.opengl.GL11; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.model.ModelBiped; import net.minecraft.entity.SharedMonsterAttributes; import net.minecraft.entity.ai.attributes.AttributeModifier; import net.minecraft.item.ItemStack; +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.client.event.RenderPlayerEvent; +import vazkii.botania.api.item.IBaubleRender; +import vazkii.botania.api.item.IBaubleRender.Helper; +import vazkii.botania.api.item.IBaubleRender.RenderType; +import vazkii.botania.client.lib.LibResources; import vazkii.botania.common.lib.LibItemNames; import baubles.api.BaubleType; import com.google.common.collect.Multimap; -public class ItemKnockbackBelt extends ItemBaubleModifier { +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +public class ItemKnockbackBelt extends ItemBaubleModifier implements IBaubleRender { + + private static final ResourceLocation texture = new ResourceLocation(LibResources.MODEL_KNOCKBACK_BELT); + private static final ModelBiped model = new ModelBiped(); + public ItemKnockbackBelt() { super(LibItemNames.KNOCKBACK_BELT); } @@ -36,5 +52,20 @@ public class ItemKnockbackBelt extends ItemBaubleModifier { void fillModifiers(Multimap attributes) { attributes.put(SharedMonsterAttributes.knockbackResistance.getAttributeUnlocalizedName(), new AttributeModifier(new UUID(2745708 /** Random number **/, 43743), "Bauble modifier", 1, 0)); } + + @Override + @SideOnly(Side.CLIENT) + public void onPlayerBaubleRender(ItemStack stack, RenderPlayerEvent event, RenderType type) { + if(type == RenderType.BODY) { + Minecraft.getMinecraft().renderEngine.bindTexture(texture); + Helper.rotateIfSneaking(event.entityPlayer); + boolean armor = event.entityPlayer.getCurrentArmor(1) != null; + GL11.glTranslatef(0F, 0.1F, 0F); + + float s = (armor ? 1.3F : 1.05F) / 16F; + GL11.glScalef(s, s, s); + model.bipedBody.render(1F); + } + } } diff --git a/src/main/java/vazkii/botania/common/item/equipment/bauble/ItemLavaPendant.java b/src/main/java/vazkii/botania/common/item/equipment/bauble/ItemLavaPendant.java index 3fad823a3..b55cb7467 100644 --- a/src/main/java/vazkii/botania/common/item/equipment/bauble/ItemLavaPendant.java +++ b/src/main/java/vazkii/botania/common/item/equipment/bauble/ItemLavaPendant.java @@ -11,13 +11,27 @@ */ package vazkii.botania.common.item.equipment.bauble; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.ItemRenderer; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.client.renderer.texture.TextureMap; import net.minecraft.entity.EntityLivingBase; import net.minecraft.item.ItemStack; +import net.minecraft.util.IIcon; +import net.minecraftforge.client.event.RenderPlayerEvent; + +import org.lwjgl.opengl.GL11; + +import vazkii.botania.api.item.IBaubleRender; +import vazkii.botania.client.core.helper.IconHelper; import vazkii.botania.common.lib.LibItemNames; import baubles.api.BaubleType; -public class ItemLavaPendant extends ItemBauble { +public class ItemLavaPendant extends ItemBauble implements IBaubleRender { + IIcon gemIcon; + public ItemLavaPendant() { super(LibItemNames.LAVA_PENDANT); } @@ -33,4 +47,29 @@ public class ItemLavaPendant extends ItemBauble { return BaubleType.AMULET; } + @Override + public void registerIcons(IIconRegister par1IconRegister) { + super.registerIcons(par1IconRegister); + gemIcon = IconHelper.forItem(par1IconRegister, this, "Gem"); + } + + @Override + public void onPlayerBaubleRender(ItemStack stack, RenderPlayerEvent event, RenderType type) { + if(type == RenderType.BODY) { + Minecraft.getMinecraft().renderEngine.bindTexture(TextureMap.locationItemsTexture); + Helper.rotateIfSneaking(event.entityPlayer); + boolean armor = event.entityPlayer.getCurrentArmor(2) != null; + GL11.glRotatef(180F, 1F, 0F, 0F); + GL11.glTranslatef(-0.36F, -0.24F, armor ? 0.2F : 0.15F); + GL11.glRotatef(-45F, 0F, 0F, 1F); + GL11.glScalef(0.5F, 0.5F, 0.5F); + + float f = gemIcon.getMinU(); + float f1 = gemIcon.getMaxU(); + float f2 = gemIcon.getMinV(); + float f3 = gemIcon.getMaxV(); + ItemRenderer.renderItemIn2D(Tessellator.instance, f1, f2, f, f3, gemIcon.getIconWidth(), gemIcon.getIconHeight(), 1F / 32F); + } + } + } diff --git a/src/main/java/vazkii/botania/common/item/equipment/bauble/ItemSuperLavaPendant.java b/src/main/java/vazkii/botania/common/item/equipment/bauble/ItemSuperLavaPendant.java index 418f0579d..79aec3e55 100644 --- a/src/main/java/vazkii/botania/common/item/equipment/bauble/ItemSuperLavaPendant.java +++ b/src/main/java/vazkii/botania/common/item/equipment/bauble/ItemSuperLavaPendant.java @@ -11,16 +11,31 @@ */ package vazkii.botania.common.item.equipment.bauble; +import org.lwjgl.opengl.GL11; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.ItemRenderer; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.client.renderer.texture.TextureMap; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.item.ItemStack; +import net.minecraft.util.IIcon; +import net.minecraftforge.client.event.RenderPlayerEvent; +import vazkii.botania.api.item.IBaubleRender; +import vazkii.botania.api.item.IBaubleRender.Helper; +import vazkii.botania.api.item.IBaubleRender.RenderType; +import vazkii.botania.client.core.helper.IconHelper; import vazkii.botania.common.lib.LibItemNames; import vazkii.botania.common.lib.LibObfuscation; import baubles.api.BaubleType; import cpw.mods.fml.relauncher.ReflectionHelper; -public class ItemSuperLavaPendant extends ItemBauble { +public class ItemSuperLavaPendant extends ItemBauble implements IBaubleRender { + IIcon gemIcon; + public ItemSuperLavaPendant() { super(LibItemNames.SUPER_LAVA_PENDANT); } @@ -43,4 +58,29 @@ public class ItemSuperLavaPendant extends ItemBauble { public BaubleType getBaubleType(ItemStack itemstack) { return BaubleType.AMULET; } + + @Override + public void registerIcons(IIconRegister par1IconRegister) { + super.registerIcons(par1IconRegister); + gemIcon = IconHelper.forItem(par1IconRegister, this, "Gem"); + } + + @Override + public void onPlayerBaubleRender(ItemStack stack, RenderPlayerEvent event, RenderType type) { + if(type == RenderType.BODY) { + Minecraft.getMinecraft().renderEngine.bindTexture(TextureMap.locationItemsTexture); + Helper.rotateIfSneaking(event.entityPlayer); + boolean armor = event.entityPlayer.getCurrentArmor(2) != null; + GL11.glRotatef(180F, 1F, 0F, 0F); + GL11.glTranslatef(-0.36F, -0.24F, armor ? 0.2F : 0.15F); + GL11.glRotatef(-45F, 0F, 0F, 1F); + GL11.glScalef(0.5F, 0.5F, 0.5F); + + float f = gemIcon.getMinU(); + float f1 = gemIcon.getMaxU(); + float f2 = gemIcon.getMinV(); + float f3 = gemIcon.getMaxV(); + ItemRenderer.renderItemIn2D(Tessellator.instance, f1, f2, f, f3, gemIcon.getIconWidth(), gemIcon.getIconHeight(), 1F / 32F); + } + } } diff --git a/src/main/java/vazkii/botania/common/item/equipment/bauble/ItemSuperTravelBelt.java b/src/main/java/vazkii/botania/common/item/equipment/bauble/ItemSuperTravelBelt.java index db91272be..8e1eb1fdb 100644 --- a/src/main/java/vazkii/botania/common/item/equipment/bauble/ItemSuperTravelBelt.java +++ b/src/main/java/vazkii/botania/common/item/equipment/bauble/ItemSuperTravelBelt.java @@ -11,11 +11,20 @@ */ package vazkii.botania.common.item.equipment.bauble; +import net.minecraft.util.ResourceLocation; +import vazkii.botania.client.lib.LibResources; import vazkii.botania.common.lib.LibItemNames; public class ItemSuperTravelBelt extends ItemTravelBelt { + private static final ResourceLocation texture = new ResourceLocation(LibResources.MODEL_SUPER_TRAVEL_BELT); + public ItemSuperTravelBelt() { super(LibItemNames.SUPER_TRAVEL_BELT, 0.085F, 0.3F, 4F); } + + @Override + public ResourceLocation getRenderTexture() { + return texture; + } } diff --git a/src/main/java/vazkii/botania/common/item/equipment/bauble/ItemTravelBelt.java b/src/main/java/vazkii/botania/common/item/equipment/bauble/ItemTravelBelt.java index fed7fe0cc..b71db04e2 100644 --- a/src/main/java/vazkii/botania/common/item/equipment/bauble/ItemTravelBelt.java +++ b/src/main/java/vazkii/botania/common/item/equipment/bauble/ItemTravelBelt.java @@ -11,19 +11,32 @@ */ package vazkii.botania.common.item.equipment.bauble; +import org.lwjgl.opengl.GL11; + import net.minecraft.block.material.Material; +import net.minecraft.client.Minecraft; +import net.minecraft.client.model.ModelBiped; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.client.event.RenderPlayerEvent; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.event.entity.living.LivingEvent.LivingJumpEvent; +import vazkii.botania.api.item.IBaubleRender; +import vazkii.botania.client.lib.LibResources; import vazkii.botania.common.lib.LibItemNames; import baubles.api.BaubleType; import baubles.common.lib.PlayerHandler; import cpw.mods.fml.common.eventhandler.SubscribeEvent; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; -public class ItemTravelBelt extends ItemBauble { +public class ItemTravelBelt extends ItemBauble implements IBaubleRender { + private static final ResourceLocation texture = new ResourceLocation(LibResources.MODEL_TRAVEL_BELT); + private static final ModelBiped model = new ModelBiped(); + final float speed; final float jump; final float fallBuffer; @@ -84,4 +97,24 @@ public class ItemTravelBelt extends ItemBauble { player.stepHeight = 0.5F; } + @SideOnly(Side.CLIENT) + ResourceLocation getRenderTexture() { + return texture; + } + + @Override + @SideOnly(Side.CLIENT) + public void onPlayerBaubleRender(ItemStack stack, RenderPlayerEvent event, RenderType type) { + if(type == RenderType.BODY) { + Minecraft.getMinecraft().renderEngine.bindTexture(getRenderTexture()); + Helper.rotateIfSneaking(event.entityPlayer); + boolean armor = event.entityPlayer.getCurrentArmor(1) != null; + GL11.glTranslatef(0F, 0.1F, 0F); + + float s = (armor ? 1.3F : 1.05F) / 16F; + GL11.glScalef(s, s, s); + model.bipedBody.render(1F); + } + } + } diff --git a/src/main/resources/assets/botania/textures/items/bloodPendant2.png b/src/main/resources/assets/botania/textures/items/bloodPendant2.png new file mode 100644 index 000000000..a980b9c5f Binary files /dev/null and b/src/main/resources/assets/botania/textures/items/bloodPendant2.png differ diff --git a/src/main/resources/assets/botania/textures/items/bloodPendant3.png b/src/main/resources/assets/botania/textures/items/bloodPendant3.png new file mode 100644 index 000000000..bc7cfef1e Binary files /dev/null and b/src/main/resources/assets/botania/textures/items/bloodPendant3.png differ diff --git a/src/main/resources/assets/botania/textures/items/icePendant.png b/src/main/resources/assets/botania/textures/items/icePendant.png index 7c921c989..12a44963c 100644 Binary files a/src/main/resources/assets/botania/textures/items/icePendant.png and b/src/main/resources/assets/botania/textures/items/icePendant.png differ diff --git a/src/main/resources/assets/botania/textures/items/icePendantGem.png b/src/main/resources/assets/botania/textures/items/icePendantGem.png new file mode 100644 index 000000000..e2bc9e51b Binary files /dev/null and b/src/main/resources/assets/botania/textures/items/icePendantGem.png differ diff --git a/src/main/resources/assets/botania/textures/items/lavaPendantGem.png b/src/main/resources/assets/botania/textures/items/lavaPendantGem.png new file mode 100644 index 000000000..629b3e68a Binary files /dev/null and b/src/main/resources/assets/botania/textures/items/lavaPendantGem.png differ diff --git a/src/main/resources/assets/botania/textures/items/superLavaPendantGem.png b/src/main/resources/assets/botania/textures/items/superLavaPendantGem.png new file mode 100644 index 000000000..b1ef35e09 Binary files /dev/null and b/src/main/resources/assets/botania/textures/items/superLavaPendantGem.png differ diff --git a/src/main/resources/assets/botania/textures/model/knockbackBelt.png b/src/main/resources/assets/botania/textures/model/knockbackBelt.png new file mode 100644 index 000000000..b1e4415aa Binary files /dev/null and b/src/main/resources/assets/botania/textures/model/knockbackBelt.png differ diff --git a/src/main/resources/assets/botania/textures/model/superTravelBelt.png b/src/main/resources/assets/botania/textures/model/superTravelBelt.png new file mode 100644 index 000000000..0391c51fd Binary files /dev/null and b/src/main/resources/assets/botania/textures/model/superTravelBelt.png differ diff --git a/src/main/resources/assets/botania/textures/model/travelBelt.png b/src/main/resources/assets/botania/textures/model/travelBelt.png new file mode 100644 index 000000000..450452e25 Binary files /dev/null and b/src/main/resources/assets/botania/textures/model/travelBelt.png differ