From 3eb8c7a8fca3f22475d53e30f0b90a6737f313fa Mon Sep 17 00:00:00 2001 From: bculkin2442 Date: Thu, 24 May 2018 15:53:20 -0400 Subject: Initial commit --- .../tileentities/TileEntityCrystal.java | 56 +++++++ .../tileentities/TileEntityCrystalStand.java | 41 +++++ .../fyresmodjam/tileentities/TileEntityPillar.java | 179 +++++++++++++++++++++ .../fyresmodjam/tileentities/TileEntityTrap.java | 162 +++++++++++++++++++ .../renderers/TileEntityCrystalRenderer.java | 72 +++++++++ .../renderers/TileEntityCrystalStandRenderer.java | 57 +++++++ .../renderers/TileEntityPillarRenderer.java | 70 ++++++++ .../renderers/TileEntityTrapRenderer.java | 92 +++++++++++ 8 files changed, 729 insertions(+) create mode 100755 YWD/src/main/java/fyresmodjam/tileentities/TileEntityCrystal.java create mode 100755 YWD/src/main/java/fyresmodjam/tileentities/TileEntityCrystalStand.java create mode 100755 YWD/src/main/java/fyresmodjam/tileentities/TileEntityPillar.java create mode 100755 YWD/src/main/java/fyresmodjam/tileentities/TileEntityTrap.java create mode 100755 YWD/src/main/java/fyresmodjam/tileentities/renderers/TileEntityCrystalRenderer.java create mode 100755 YWD/src/main/java/fyresmodjam/tileentities/renderers/TileEntityCrystalStandRenderer.java create mode 100755 YWD/src/main/java/fyresmodjam/tileentities/renderers/TileEntityPillarRenderer.java create mode 100755 YWD/src/main/java/fyresmodjam/tileentities/renderers/TileEntityTrapRenderer.java (limited to 'YWD/src/main/java/fyresmodjam/tileentities') diff --git a/YWD/src/main/java/fyresmodjam/tileentities/TileEntityCrystal.java b/YWD/src/main/java/fyresmodjam/tileentities/TileEntityCrystal.java new file mode 100755 index 0000000..3960f45 --- /dev/null +++ b/YWD/src/main/java/fyresmodjam/tileentities/TileEntityCrystal.java @@ -0,0 +1,56 @@ +package fyresmodjam.tileentities; + +import java.util.Random; + +import fyresmodjam.items.ItemCrystal; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.network.NetworkManager; +import net.minecraft.network.Packet; +import net.minecraft.network.play.server.S35PacketUpdateTileEntity; +import net.minecraft.tileentity.TileEntity; + +public class TileEntityCrystal extends TileEntity { + public TileEntityCrystal() { + } + + public static Random random = new Random(); + + @Override + public void updateEntity() { + super.updateEntity(); + + if (random.nextInt(4) == 0) { + worldObj.spawnParticle( + ItemCrystal.particleNames[getBlockMetadata() + % ItemCrystal.particleNames.length], + xCoord + random.nextFloat(), + yCoord + random.nextFloat(), + zCoord + random.nextFloat(), 0.0f, + 0.0f, 0.0f); + } + } + + @Override + public void writeToNBT(NBTTagCompound par1NBTTagCompound) { + super.writeToNBT(par1NBTTagCompound); + } + + @Override + public void readFromNBT(NBTTagCompound par1NBTTagCompound) { + super.readFromNBT(par1NBTTagCompound); + } + + @Override + public Packet getDescriptionPacket() { + NBTTagCompound tag = new NBTTagCompound(); + writeToNBT(tag); + return new S35PacketUpdateTileEntity(xCoord, yCoord, + zCoord, 1, tag); + } + + @Override + public void onDataPacket(NetworkManager net, + S35PacketUpdateTileEntity pkt) { + readFromNBT(pkt.func_148857_g()); + } +} diff --git a/YWD/src/main/java/fyresmodjam/tileentities/TileEntityCrystalStand.java b/YWD/src/main/java/fyresmodjam/tileentities/TileEntityCrystalStand.java new file mode 100755 index 0000000..e0ce64e --- /dev/null +++ b/YWD/src/main/java/fyresmodjam/tileentities/TileEntityCrystalStand.java @@ -0,0 +1,41 @@ +package fyresmodjam.tileentities; + +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.network.NetworkManager; +import net.minecraft.network.Packet; +import net.minecraft.network.play.server.S35PacketUpdateTileEntity; +import net.minecraft.tileentity.TileEntity; + +public class TileEntityCrystalStand extends TileEntity { + public TileEntityCrystalStand() { + } + + @Override + public void updateEntity() { + super.updateEntity(); + } + + @Override + public void writeToNBT(NBTTagCompound par1NBTTagCompound) { + super.writeToNBT(par1NBTTagCompound); + } + + @Override + public void readFromNBT(NBTTagCompound par1NBTTagCompound) { + super.readFromNBT(par1NBTTagCompound); + } + + @Override + public Packet getDescriptionPacket() { + NBTTagCompound tag = new NBTTagCompound(); + writeToNBT(tag); + return new S35PacketUpdateTileEntity(xCoord, yCoord, + zCoord, 1, tag); + } + + @Override + public void onDataPacket(NetworkManager net, + S35PacketUpdateTileEntity pkt) { + readFromNBT(pkt.func_148857_g()); + } +} diff --git a/YWD/src/main/java/fyresmodjam/tileentities/TileEntityPillar.java b/YWD/src/main/java/fyresmodjam/tileentities/TileEntityPillar.java new file mode 100755 index 0000000..bf36e06 --- /dev/null +++ b/YWD/src/main/java/fyresmodjam/tileentities/TileEntityPillar.java @@ -0,0 +1,179 @@ +package fyresmodjam.tileentities; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import fyresmodjam.ModjamMod; +import fyresmodjam.blessings.BlessingUtils; +import fyresmodjam.misc.ConfigData; +import net.minecraft.client.Minecraft; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.network.NetworkManager; +import net.minecraft.network.Packet; +import net.minecraft.network.play.server.S35PacketUpdateTileEntity; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.world.EnumSkyBlock; + +public class TileEntityPillar extends TileEntity { + /* + * @formatter:off + + public static String[] validBlessings = { + "Miner", + "Lumberjack", + "Warrior", + "Hunter", + "Swamp", + "Thief", + "Ninja", + "Mechanic", + "Alchemist", + "Scout", + "Guardian", + "Vampire", + "Inferno", + "Diver", + "Berserker", + "Loner", + "Paratrooper", + "Porcupine", + "Looter", + "Scholar", + "Thick-Skinned" + }; + + public static String[] validMobBlessings = { + "Warrior", + "Hunter", + "Swamp", + "Guardian", + "Vampire", + "Inferno", + "Loner", + "Paratrooper", + "Porcupine", + "Thick-Skinned" + }; + + public static String[] blessingDescriptions = { + "+25% breaking speed on stone and iron blocks, and +20% damage with pickaxes", + "+25% breaking speed on wooden blocks, and +15% damage with axes", + "+20% melee damage", + "+20% projectile damage", + "Attacks will slow enemies", + "Enemies have a chance to drop gold nuggets", + "While sneaking, you are invisble, and attacks on enemies with full health" + + " do double damage", + "@@\u00A7ePASSIVE - \u00A7oYou disarm traps 3x as often and have" + + " 2x the chance to salvage disarmed traps" + + ".@@\u00A7eACTIVE - \u00A7oOnce per day, you may disarm and" + + " salvage target trap for free", + "All potions act like wildcard potions", + "You can see traps without sneaking, but take 25% more damage from traps", + "Take 20% less damage from all sources", + "Heal 7% of damage dealt to enemies and, in direct sunlight," + + " you take 20% more damage and deal 20% less damage", + "You don't take fire damage and do +35% damage while on fire," + + " but take damage when wet", + "You can breathe underwater", + "@@\u00A7ePASSIVE - \u00A7oKills are added as berserk charges. (10 max)" + + "@@\u00A7eACTIVE - \u00A7o" + + "Turn on/off berserk mode. While berserk mode is active," + + " you do 30% more damage," + + " and expend a counter every 2 seconds", + "The lower your health, the higher your damage, to a maximum of +35%", + "You don't take fall damage", + "Melee attackers take received damage", + "Enemies have a chance to drop dungeon loot", + "Do bonus damage with weapons you are familiar with, and" + + " against enemies you are familiar with", + "Reduce damage taken by 2 points (1 heart)" }; + + + * @formatter:on + */ + + public String blessing = null; + + public TileEntityPillar() { + } + + @Override + public void updateEntity() { + super.updateEntity(); + + if (worldObj.isRemote) { + spawnParticles(); + + if (ConfigData.pillarGlow) { + worldObj.updateLightByType( + EnumSkyBlock.Block, xCoord, + yCoord, zCoord); + } + } + } + + @SideOnly(Side.CLIENT) + public void spawnParticles() { + EntityPlayer player = Minecraft.getMinecraft().thePlayer; + + if (player != null && BlessingUtils.hasBlessing(player) + && BlessingUtils.hasBlessing(player, + blessing)) { + for (int i = 0; i < 2; i++) { + worldObj.spawnParticle("portal", xCoord + + ModjamMod.r.nextDouble(), + yCoord + ModjamMod.r + .nextDouble() + * 2, + zCoord + ModjamMod.r + .nextDouble(), + (ModjamMod.r.nextDouble() + - 0.5D) + * 2.0D, + -ModjamMod.r.nextDouble(), + (ModjamMod.r.nextDouble() + - 0.5D) + * 2.0D); + } + } + } + + @Override + public void writeToNBT(NBTTagCompound par1NBTTagCompound) { + super.writeToNBT(par1NBTTagCompound); + if (blessing == null) { + blessing = BlessingUtils.getPlayerBlessing(); + } + par1NBTTagCompound.setString("Blessing", blessing); + } + + @Override + public void readFromNBT(NBTTagCompound par1NBTTagCompound) { + super.readFromNBT(par1NBTTagCompound); + blessing = par1NBTTagCompound.hasKey("Blessing") + ? par1NBTTagCompound.getString("Blessing") + : BlessingUtils.getPlayerBlessing(); + } + + @Override + public Packet getDescriptionPacket() { + NBTTagCompound tag = new NBTTagCompound(); + writeToNBT(tag); + return new S35PacketUpdateTileEntity(xCoord, yCoord, + zCoord, 1, tag); + } + + @Override + public void onDataPacket(NetworkManager net, + S35PacketUpdateTileEntity pkt) { + readFromNBT(pkt.func_148857_g()); + } + + @Override + @SideOnly(Side.CLIENT) + public AxisAlignedBB getRenderBoundingBox() { + return INFINITE_EXTENT_AABB; + } +} \ No newline at end of file diff --git a/YWD/src/main/java/fyresmodjam/tileentities/TileEntityTrap.java b/YWD/src/main/java/fyresmodjam/tileentities/TileEntityTrap.java new file mode 100755 index 0000000..2353adb --- /dev/null +++ b/YWD/src/main/java/fyresmodjam/tileentities/TileEntityTrap.java @@ -0,0 +1,162 @@ +package fyresmodjam.tileentities; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import fyresmodjam.ModjamMod; +import fyresmodjam.blessings.BlessingUtils; +import fyresmodjam.handlers.NewPacketHandler; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.network.NetworkManager; +import net.minecraft.network.Packet; +import net.minecraft.network.play.server.S35PacketUpdateTileEntity; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.AxisAlignedBB; + +public class TileEntityTrap extends TileEntity { + + public static String[] settings = { + "invisible to and damages all but player", + "visible to all and damages all but player", + "visible to all and only damages mobs", + "decorative" + }; + + public String placedBy = null; + public int setting = 0; + + public TileEntityTrap() { + } + + @Override + public void updateEntity() { + super.updateEntity(); + + if (worldObj.isRemote) { + spawnParticles(); + } + } + + @Override + public void writeToNBT(NBTTagCompound par1NBTTagCompound) { + super.writeToNBT(par1NBTTagCompound); + + if (placedBy != null) { + par1NBTTagCompound.setString("PlacedBy", placedBy); + } + par1NBTTagCompound.setInteger("Setting", + setting % settings.length); + } + + @Override + public void readFromNBT(NBTTagCompound par1NBTTagCompound) { + super.readFromNBT(par1NBTTagCompound); + + if (par1NBTTagCompound.hasKey("PlacedBy")) { + placedBy = par1NBTTagCompound + .getString("PlacedBy"); + } else { + placedBy = null; + } + + if (par1NBTTagCompound.hasKey("Setting")) { + setting = par1NBTTagCompound.getInteger("Setting") + % settings.length; + } + } + + @Override + public Packet getDescriptionPacket() { + NBTTagCompound tag = new NBTTagCompound(); + writeToNBT(tag); + return new S35PacketUpdateTileEntity(xCoord, yCoord, + zCoord, 1, tag); + } + + @Override + public void onDataPacket(NetworkManager net, + S35PacketUpdateTileEntity pkt) { + readFromNBT(pkt.func_148857_g()); + } + + @Override + @SideOnly(Side.CLIENT) + public AxisAlignedBB getRenderBoundingBox() { + return INFINITE_EXTENT_AABB; + } + + @Override + @SideOnly(Side.CLIENT) + public double getMaxRenderDistanceSquared() { + EntityPlayer player = Minecraft.getMinecraft().thePlayer; + return (player != null && (player.getCommandSenderName() + .equals(placedBy) || setting != 0)) + ? 4096.0F + : 36.0F; + } + + @SideOnly(Side.CLIENT) + public void spawnParticles() { + EntityPlayer player = Minecraft.getMinecraft().thePlayer; + int type = worldObj.getBlockMetadata(xCoord, yCoord, + zCoord); + + if (player != null + && (!NewPacketHandler.trapsDisabled + || placedBy != null) + && (player.getCommandSenderName() + .equals(placedBy) + || player.isSneaking() + || setting != 0 + || (BlessingUtils + .hasBlessing(player, + "MarkScouting"))) + && getDistanceFrom( + TileEntityRendererDispatcher.staticPlayerX, + TileEntityRendererDispatcher.staticPlayerY, + TileEntityRendererDispatcher.staticPlayerZ) < (player + .getCommandSenderName() + .equals(placedBy) + ? 4096 + : 36.0F)) { + if (type == 1) { + if (ModjamMod.r.nextInt(5) == 0) { + worldObj.spawnParticle("smoke", + xCoord + 0.5F, + yCoord + 0.175F, + zCoord + 0.5F, + (ModjamMod.r.nextFloat() + - 0.5F) + / 16, + ModjamMod.r.nextFloat() + / 16, + (ModjamMod.r.nextFloat() + - 0.5F) + / 16); + } + worldObj.spawnParticle("flame", + xCoord + 0.5F, + yCoord + 0.175F, + zCoord + 0.5F, 0.0F, 0.0F, + 0.0F); + } else if (type == 2) { + for (int i = 0; i < 3; i++) { + worldObj.spawnParticle("smoke", + xCoord + 0.5F, + yCoord + 0.175F, + zCoord + 0.5F, + (ModjamMod.r.nextFloat() + - 0.5F) + / 16, + ModjamMod.r.nextFloat() + / 16, + (ModjamMod.r.nextFloat() + - 0.5F) + / 16); + } + } + } + } +} \ No newline at end of file diff --git a/YWD/src/main/java/fyresmodjam/tileentities/renderers/TileEntityCrystalRenderer.java b/YWD/src/main/java/fyresmodjam/tileentities/renderers/TileEntityCrystalRenderer.java new file mode 100755 index 0000000..7d64e51 --- /dev/null +++ b/YWD/src/main/java/fyresmodjam/tileentities/renderers/TileEntityCrystalRenderer.java @@ -0,0 +1,72 @@ +package fyresmodjam.tileentities.renderers; + +import java.awt.Color; + +import org.lwjgl.opengl.GL11; + +import fyresmodjam.ModjamMod; +import fyresmodjam.items.ItemCrystal; +import fyresmodjam.models.ModelCrystal; +import fyresmodjam.tileentities.TileEntityCrystal; +import net.minecraft.block.Block; +import net.minecraft.client.renderer.OpenGlHelper; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.ResourceLocation; +import net.minecraft.world.World; + +public class TileEntityCrystalRenderer extends TileEntitySpecialRenderer { + + private ModelCrystal modelCrystal = new ModelCrystal(); + + public static ResourceLocation texture = new ResourceLocation( + "fyresmodjam", "textures/blocks/crystal.png"); + + @Override + public void renderTileEntityAt(TileEntity tileentity, double d0, + double d1, double d2, float f) { + GL11.glPushMatrix(); + GL11.glTranslatef((float) d0, (float) d1, (float) d2); + + TileEntityCrystal crystal = (TileEntityCrystal) tileentity; + Block block = ModjamMod.crystal; + World world = crystal.getWorldObj(); + + Tessellator tessellator = Tessellator.instance; + float f2 = block.getMixedBrightnessForBlock(world, + crystal.xCoord, crystal.yCoord, + crystal.zCoord); + int l = world.getLightBrightnessForSkyBlocks( + crystal.xCoord, crystal.yCoord, + crystal.zCoord, 0); + int l1 = l % 65536; + int l2 = l / 65536; + tessellator.setColorOpaque_F(f2, f2, f2); + OpenGlHelper.setLightmapTextureCoords( + OpenGlHelper.lightmapTexUnit, l1, l2); + + float f3 = world.getWorldInfo().getWorldTime() % 20 + / 20.0F; + GL11.glTranslatef(0.5F, + -0.4F + (f3 > 0.5F ? 0.25F - 0.25F * f3 + : 0.25F * f3), + 0.5F); + + GL11.glRotatef((float) world.getWorldInfo().getWorldTime() + % 360, 0.0F, 1.0F, 0.0F); + + Color color = ItemCrystal.colors[crystal.getBlockMetadata() + % ItemCrystal.colors.length]; + GL11.glColor3f(color.getRed() / 255.0F, + color.getGreen() / 255.0F, + color.getBlue() / 255.0F); + + bindTexture(texture); + modelCrystal.render(null, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, + 0.0625F); + + GL11.glPopMatrix(); + } + +} diff --git a/YWD/src/main/java/fyresmodjam/tileentities/renderers/TileEntityCrystalStandRenderer.java b/YWD/src/main/java/fyresmodjam/tileentities/renderers/TileEntityCrystalStandRenderer.java new file mode 100755 index 0000000..55873f9 --- /dev/null +++ b/YWD/src/main/java/fyresmodjam/tileentities/renderers/TileEntityCrystalStandRenderer.java @@ -0,0 +1,57 @@ +package fyresmodjam.tileentities.renderers; + +import org.lwjgl.opengl.GL11; + +import fyresmodjam.ModjamMod; +import fyresmodjam.models.ModelCrystalStand; +import fyresmodjam.tileentities.TileEntityCrystalStand; +import net.minecraft.block.Block; +import net.minecraft.client.renderer.OpenGlHelper; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.ResourceLocation; +import net.minecraft.world.World; + +public class TileEntityCrystalStandRenderer + extends TileEntitySpecialRenderer { + + private ModelCrystalStand model = new ModelCrystalStand(); + + public static ResourceLocation texture = new ResourceLocation( + "fyresmodjam", + "textures/blocks/crystal_stand.png"); + + @Override + public void renderTileEntityAt(TileEntity tileentity, double d0, + double d1, double d2, float f) { + GL11.glPushMatrix(); + GL11.glTranslatef((float) d0, (float) d1, (float) d2); + + TileEntityCrystalStand crystalStand = (TileEntityCrystalStand) tileentity; + Block block = ModjamMod.crystalStand; + World world = crystalStand.getWorldObj(); + + Tessellator tessellator = Tessellator.instance; + float f2 = block.getMixedBrightnessForBlock(world, + crystalStand.xCoord, crystalStand.yCoord, + crystalStand.zCoord); + int l = world.getLightBrightnessForSkyBlocks( + crystalStand.xCoord, crystalStand.yCoord, + crystalStand.zCoord, 0); + int l1 = l % 65536; + int l2 = l / 65536; + tessellator.setColorOpaque_F(f2, f2, f2); + OpenGlHelper.setLightmapTextureCoords( + OpenGlHelper.lightmapTexUnit, l1, l2); + + GL11.glTranslatef(0.5F, 1.5F, 0.5F); + GL11.glRotatef(180.0F, 1.0F, 0.0F, 0.0F); + + bindTexture(texture); + model.render(null, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); + + GL11.glPopMatrix(); + } + +} diff --git a/YWD/src/main/java/fyresmodjam/tileentities/renderers/TileEntityPillarRenderer.java b/YWD/src/main/java/fyresmodjam/tileentities/renderers/TileEntityPillarRenderer.java new file mode 100755 index 0000000..7d38d20 --- /dev/null +++ b/YWD/src/main/java/fyresmodjam/tileentities/renderers/TileEntityPillarRenderer.java @@ -0,0 +1,70 @@ +package fyresmodjam.tileentities.renderers; + +import org.lwjgl.opengl.GL11; + +import fyresmodjam.ModjamMod; +import fyresmodjam.models.ModelPillar; +import fyresmodjam.tileentities.TileEntityPillar; +import net.minecraft.block.Block; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.OpenGlHelper; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.ResourceLocation; +import net.minecraft.world.World; + +public class TileEntityPillarRenderer extends TileEntitySpecialRenderer { + private ModelPillar modelPillar = new ModelPillar(); + + public static ResourceLocation[] textures = { + new ResourceLocation("fyresmodjam", + "textures/blocks/pillar.png"), + new ResourceLocation("fyresmodjam", + "textures/blocks/pillarActive.png") + }; + + @Override + public void renderTileEntityAt(TileEntity tileEntity, double d, + double d1, double d2, float f) { + GL11.glPushMatrix(); + GL11.glTranslatef((float) d, (float) d1, (float) d2); + TileEntityPillar tileEntityYour = (TileEntityPillar) tileEntity; + renderBlockYour(tileEntityYour, tileEntity.getWorldObj(), + tileEntity.xCoord, tileEntity.yCoord, + tileEntity.zCoord, ModjamMod.blockPillar); + GL11.glPopMatrix(); + } + + public void renderBlockYour(TileEntityPillar tl, World world, + int i, int j, int k, Block block) { + Tessellator tessellator = Tessellator.instance; + float f = block.getMixedBrightnessForBlock(world, i, j, k); + int l = world.getLightBrightnessForSkyBlocks(i, j, k, 0); + int l1 = l % 65536; + int l2 = l / 65536; + tessellator.setColorOpaque_F(f, f, f); + OpenGlHelper.setLightmapTextureCoords( + OpenGlHelper.lightmapTexUnit, l1, l2); + + EntityPlayer player = Minecraft.getMinecraft().thePlayer; + boolean active = player != null + && player.getEntityData() + .hasKey("Blessing") + && player.getEntityData() + .getString("Blessing") + .equals(tl.blessing); + + GL11.glPushMatrix(); + + GL11.glRotatef(180.0F, 1.0F, 0.0F, 0.0F); + GL11.glTranslatef(0.5F, -1.5F, -0.5F); + + bindTexture(!active ? textures[0] : textures[1]); + modelPillar.render((Entity) null, 0.0F, 0.0F, 0.0F, 0.0F, + 0.0F, 0.0625F); + GL11.glPopMatrix(); + } +} \ No newline at end of file diff --git a/YWD/src/main/java/fyresmodjam/tileentities/renderers/TileEntityTrapRenderer.java b/YWD/src/main/java/fyresmodjam/tileentities/renderers/TileEntityTrapRenderer.java new file mode 100755 index 0000000..c66f06a --- /dev/null +++ b/YWD/src/main/java/fyresmodjam/tileentities/renderers/TileEntityTrapRenderer.java @@ -0,0 +1,92 @@ +package fyresmodjam.tileentities.renderers; + +import org.lwjgl.opengl.GL11; + +import fyresmodjam.ModjamMod; +import fyresmodjam.blocks.BlockTrap; +import fyresmodjam.handlers.NewPacketHandler; +import fyresmodjam.models.ModelSpikes; +import fyresmodjam.models.ModelTrap2; +import fyresmodjam.tileentities.TileEntityTrap; +import net.minecraft.block.Block; +import net.minecraft.client.Minecraft; +import net.minecraft.client.model.ModelBase; +import net.minecraft.client.renderer.OpenGlHelper; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.ResourceLocation; +import net.minecraft.world.World; + +public class TileEntityTrapRenderer extends TileEntitySpecialRenderer { + + private ModelBase[] models = { + new ModelSpikes(), new ModelTrap2(), + new ModelTrap2() + }; + + public static ResourceLocation[] textures = { + new ResourceLocation("fyresmodjam", + "textures/blocks/spikes.png"), + new ResourceLocation("fyresmodjam", + "textures/blocks/trap2.png"), + new ResourceLocation("fyresmodjam", + "textures/blocks/trap3.png") + }; + + @Override + public void renderTileEntityAt(TileEntity tileEntity, double d, + double d1, double d2, float f) { + GL11.glPushMatrix(); + GL11.glTranslatef((float) d, (float) d1, (float) d2); + TileEntityTrap tileEntityYour = (TileEntityTrap) tileEntity; + renderBlockYour(tileEntityYour, tileEntity.getWorldObj(), + tileEntity.xCoord, tileEntity.yCoord, + tileEntity.zCoord, ModjamMod.blockTrap); + GL11.glPopMatrix(); + } + + public void renderBlockYour(TileEntityTrap tl, World world, int i, + int j, int k, Block block) { + Tessellator tessellator = Tessellator.instance; + float f = block.getMixedBrightnessForBlock(world, i, j, k); + int l = world.getLightBrightnessForSkyBlocks(i, j, k, 0); + int l1 = l % 65536; + int l2 = l / 65536; + tessellator.setColorOpaque_F(f, f, f); + OpenGlHelper.setLightmapTextureCoords( + OpenGlHelper.lightmapTexUnit, l1, l2); + + EntityPlayer player = Minecraft.getMinecraft().thePlayer; + boolean active = player != null + && (!NewPacketHandler.trapsDisabled + || tl.placedBy != null) + && (player.getCommandSenderName() + .equals(tl.placedBy) + || tl.setting != 0 + || player.isSneaking() + || (player.getEntityData() + .hasKey("Blessing") + && player.getEntityData() + .getString("Blessing") + .equals("Scout"))); + + int type = world.getBlockMetadata(i, j, k); + + if (active) { + GL11.glPushMatrix(); + + GL11.glRotatef(180.0F, 1.0F, 0.0F, 0.0F); + GL11.glTranslatef(0.5F, -1.5F, -0.5F); + + bindTexture(textures[type % BlockTrap.trapTypes]); + models[type % BlockTrap.trapTypes].render( + (Entity) null, 0.0F, 0.0F, 0.0F, + 0.0F, 0.0F, 0.0625F); + + GL11.glPopMatrix(); + } + } +} \ No newline at end of file -- cgit v1.2.3