diff options
| author | OnyxDarkKnight <sor1n.iliutza16@gmail.com> | 2015-02-21 21:31:16 +0000 |
|---|---|---|
| committer | OnyxDarkKnight <sor1n.iliutza16@gmail.com> | 2015-02-21 21:31:16 +0000 |
| commit | 420faddca46e70e3a70def168fb4e452ef193b0d (patch) | |
| tree | 247e334012e4bf9e4fa6d42718bf601ce6bd42d9 /java/darkknight/jewelrycraft/events | |
| parent | 3f4c717de5ebc9b942d65ae45ac87c43bdf8a31b (diff) | |
Added just a butt ton of stuff, also thanks to pau101 for helping me with the Hand Pedestal animation :)
Diffstat (limited to 'java/darkknight/jewelrycraft/events')
5 files changed, 396 insertions, 181 deletions
diff --git a/java/darkknight/jewelrycraft/events/BucketHandler.java b/java/darkknight/jewelrycraft/events/BucketHandler.java index a7b40cd..871f26e 100644 --- a/java/darkknight/jewelrycraft/events/BucketHandler.java +++ b/java/darkknight/jewelrycraft/events/BucketHandler.java @@ -9,9 +9,7 @@ package darkknight.jewelrycraft.events; import java.util.HashMap; import java.util.Map; - import net.minecraft.block.Block; -import net.minecraft.client.Minecraft; import net.minecraft.init.Blocks; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; @@ -26,54 +24,56 @@ import darkknight.jewelrycraft.util.JewelryNBT; public class BucketHandler { - public static BucketHandler INSTANCE = new BucketHandler(); public Map<Block, Item> buckets = new HashMap<Block, Item>(); + /** + * + */ private BucketHandler() - { - } + {} + /** + * @param event + */ @SubscribeEvent public void onBucketFill(FillBucketEvent event) - { - ItemStack result = fillCustomBucket(event.world, event.target); - if (result == null) return; + { + ItemStack result = fillCustomBucket(event.world, event.target); + if (result == null) return; event.result = result; event.setResult(Result.ALLOW); } + /** + * @param world + * @param pos + * @return + */ private ItemStack fillCustomBucket(World world, MovingObjectPosition pos) - { + { Block block = world.getBlock(pos.blockX, pos.blockY, pos.blockZ); Item bucket = buckets.get(block); - - if (bucket != null && world.getBlock(pos.blockX, pos.blockY, pos.blockZ) != Blocks.air && world.getBlock(pos.blockX, pos.blockY, pos.blockZ) instanceof BlockMoltenMetal) - { + if (bucket != null && world.getBlock(pos.blockX, pos.blockY, pos.blockZ) != Blocks.air && world.getBlock(pos.blockX, pos.blockY, pos.blockZ) instanceof BlockMoltenMetal){ world.setBlockToAir(pos.blockX, pos.blockY, pos.blockZ); ItemStack item = new ItemStack(bucket); String ingotData = JewelrycraftMod.saveData.getString(pos.blockX + " " + pos.blockY + " " + pos.blockZ + " " + world.provider.dimensionId); - if (ingotData != null && ingotData != "") - { + if (ingotData != null && ingotData != ""){ String[] splitData = ingotData.split(":"); - if (splitData.length == 3) - { - int itemID, itemDamage, color; - try - { + if (splitData.length == 3){ + int itemID, itemDamage; + try{ itemID = Integer.parseInt(splitData[0]); itemDamage = Integer.parseInt(splitData[1]); - color = Integer.parseInt(splitData[2]); + Integer.parseInt(splitData[2]); JewelryNBT.addMetal(item, new ItemStack(Item.getItemById(itemID), 1, itemDamage)); } - catch (Exception e) - { + catch(Exception e){ e.printStackTrace(); } } } return item; - } - else return null; + }else return null; } }
\ No newline at end of file diff --git a/java/darkknight/jewelrycraft/events/EntityEventHandler.java b/java/darkknight/jewelrycraft/events/EntityEventHandler.java index 7229318..9231ada 100644 --- a/java/darkknight/jewelrycraft/events/EntityEventHandler.java +++ b/java/darkknight/jewelrycraft/events/EntityEventHandler.java @@ -5,27 +5,40 @@ import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; - +import java.util.Iterator; +import java.util.List; +import java.util.Random; import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLiving; +import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.item.ItemStack; import net.minecraft.nbt.CompressedStreamTools; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.ChatComponentText; +import net.minecraft.util.MathHelper; import net.minecraftforge.client.event.EntityViewRenderEvent; import net.minecraftforge.event.entity.EntityJoinWorldEvent; +import net.minecraftforge.event.entity.item.ItemTossEvent; +import net.minecraftforge.event.entity.living.LivingAttackEvent; import net.minecraftforge.event.entity.living.LivingDeathEvent; import net.minecraftforge.event.entity.living.LivingEvent.LivingUpdateEvent; +import net.minecraftforge.event.entity.living.LivingFallEvent; import net.minecraftforge.event.entity.player.PlayerEvent; import net.minecraftforge.event.world.WorldEvent; - import org.lwjgl.opengl.GL11; - import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.common.eventhandler.SubscribeEvent; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import darkknight.jewelrycraft.JewelrycraftMod; +import darkknight.jewelrycraft.curses.Curse; +import darkknight.jewelrycraft.damage.DamageSourceList; +import darkknight.jewelrycraft.entities.EntityHalfHeart; +import darkknight.jewelrycraft.entities.EntityHeart; +import darkknight.jewelrycraft.item.ItemBaseJewelry; import darkknight.jewelrycraft.item.ItemList; import darkknight.jewelrycraft.network.PacketClearColorCache; import darkknight.jewelrycraft.network.PacketRequestPlayerInfo; @@ -36,185 +49,342 @@ import darkknight.jewelrycraft.util.PlayerUtils; /** * Code taken from OpenBlocks */ - public class EntityEventHandler { - + /** + * @param event + */ @SubscribeEvent public void onEntityJoinWorld(EntityJoinWorldEvent event) { - if (event.entity instanceof EntityPlayerMP) JewelrycraftMod.netWrapper.sendTo(new PacketClearColorCache(), (EntityPlayerMP) event.entity); - + if (event.entity instanceof EntityPlayerMP) JewelrycraftMod.netWrapper.sendTo(new PacketClearColorCache(), (EntityPlayerMP)event.entity); + if (event.entity instanceof EntityPlayer && !(event.entity instanceof EntityPlayerMP)) JewelrycraftMod.netWrapper.sendToServer(new PacketRequestPlayerInfo()); final Entity entity = event.entity; - - if (!event.world.isRemote && entity instanceof EntityPlayer) - { - EntityPlayer player = (EntityPlayer) entity; + if (!event.world.isRemote && entity instanceof EntityPlayer){ + EntityPlayer player = (EntityPlayer)entity; NBTTagCompound persistTag = PlayerUtils.getModPlayerPersistTag(player, "Jewelrycraft"); - boolean shouldGiveManual = ItemList.guide != null && !persistTag.getBoolean("givenGuide"); - if (shouldGiveManual) - { + if (shouldGiveManual){ ItemStack manual = new ItemStack(ItemList.guide); if (!player.inventory.addItemStackToInventory(manual)) BlockUtils.dropItemStackInWorld(player.worldObj, player.posX, player.posY, player.posZ, manual); persistTag.setBoolean("givenGuide", true); } - boolean render = persistTag.getBoolean("fancyRender"); JewelrycraftMod.fancyRender = render; + for(Curse curse: Curse.getCurseList()) + if (!persistTag.hasKey(curse.getName())) persistTag.setInteger(curse.getName(), 0); } - JewelrycraftMod.netWrapper.sendToServer(new PacketRequestPlayerInfo()); } + /** + * @param event + */ @SubscribeEvent public void onEntityUpdate(LivingUpdateEvent event) { - final Entity entity = event.entity; - if (entity instanceof EntityPlayer) - { - EntityPlayer player = (EntityPlayer) entity; + Entity entity = event.entity; + if (entity instanceof EntityPlayer){ + EntityPlayer player = (EntityPlayer)entity; NBTTagCompound playerInfo = PlayerUtils.getModPlayerPersistTag(player, "Jewelrycraft"); playerInfo.setBoolean("fancyRender", JewelrycraftMod.fancyRender); - if (!player.worldObj.isRemote) - { -// System.out.println(playerInfo.getInteger("curseTime") + " " + playerInfo.getBoolean("reselectCurses")); - if (playerInfo.hasKey("reselectCurses") && !playerInfo.getBoolean("reselectCurses")) - { - playerInfo.setInteger("curseTime", playerInfo.getInteger("curseTime") - 100); + if (!player.worldObj.isRemote){ + if (playerInfo.hasKey("reselectCurses") && !playerInfo.getBoolean("reselectCurses")){ + playerInfo.setInteger("curseTime", playerInfo.getInteger("curseTime") - 10000); if (playerInfo.getInteger("curseTime") <= 0) playerInfo.setBoolean("reselectCurses", true); } + if (playerInfo.hasKey("playerCursePointsChanged") && playerInfo.getBoolean("playerCursePointsChanged")){ + int points = playerInfo.getInteger("cursePoints"); + for(int i = 0; i <= 5; i++) + if (points > i * 750) addCurse(player, playerInfo, ("curse" + i).toString()); + if (!playerInfo.hasKey("curseTime") || !playerInfo.hasKey("reselectCurses") || playerInfo.getBoolean("reselectCurses")){ + playerInfo.setInteger("curseTime", 23000); + playerInfo.setBoolean("reselectCurses", false); + } + JewelrycraftMod.netWrapper.sendToServer(new PacketRequestPlayerInfo()); + } + for(int i = 0; i < 18; i++) + if (playerInfo.hasKey("ext" + i)){ + NBTTagCompound nbt = (NBTTagCompound)playerInfo.getTag("ext" + i); + ItemStack item = ItemStack.loadItemStackFromNBT(nbt); + ((ItemBaseJewelry)item.getItem()).action(item, player); + } + if (playerInfo.getBoolean("playerCursePointsChanged")) playerInfo.setBoolean("playerCursePointsChanged", false); +// for(Curse curse: Curse.getCurseList()) +// if (playerInfo.getInteger(curse.getName()) > 0) curse.action(player.worldObj, player); + } + } + } + + /** + * @param event + */ + @SubscribeEvent + public void onEntityAttacked(LivingAttackEvent event) + { + Entity entity = event.entityLiving; + if (entity instanceof EntityPlayer && !(event.source.getEntity() instanceof EntityPlayer)){ + EntityPlayer player = (EntityPlayer)entity; + NBTTagCompound playerInfo = PlayerUtils.getModPlayerPersistTag(player, "Jewelrycraft"); + if (!player.worldObj.isRemote) for(int i = 0; i < 18; i++) + if (playerInfo.hasKey("ext" + i)){ + NBTTagCompound nbt = (NBTTagCompound)playerInfo.getTag("ext" + i); + ItemStack item = ItemStack.loadItemStackFromNBT(nbt); + if (((ItemBaseJewelry)item.getItem()).onPlayerAttackedCacellable(item, player, event.source, event.ammount)){ + event.setCanceled(true); + break; + } + ((ItemBaseJewelry)item.getItem()).onPlayerAttacked(item, player, event.source, event.ammount); + } + if (!player.worldObj.isRemote && player.getHealth() != player.prevHealth){ + if (playerInfo.getFloat("WhiteHeart") > 0){ + playerInfo.setFloat("WhiteHeart", 0f); + JewelrycraftMod.netWrapper.sendToServer(new PacketRequestPlayerInfo()); + } + if (playerInfo.getFloat("BlueHeart") > 0){ + float damage = playerInfo.getFloat("BlueHeart") - event.ammount; + if (damage >= 0){ + playerInfo.setFloat("BlueHeart", damage); + JewelrycraftMod.netWrapper.sendToServer(new PacketRequestPlayerInfo()); + player.heal(event.ammount); + }else{ + playerInfo.setFloat("BlueHeart", 0f); + JewelrycraftMod.netWrapper.sendToServer(new PacketRequestPlayerInfo()); + player.heal(Math.abs(damage)); + } + }else if (playerInfo.getFloat("BlackHeart") > 0){ + AxisAlignedBB axisalignedbb = player.boundingBox.expand(2.0D, 0.0D, 2.0D); + List enemies = player.worldObj.getEntitiesWithinAABBExcludingEntity(player, axisalignedbb); + if (enemies != null && !enemies.isEmpty()){ + Iterator iterator = enemies.iterator(); + while (iterator.hasNext()){ + Entity enemy = (Entity)iterator.next(); + enemy.attackEntityFrom(DamageSourceList.blackHeart, 5f * event.ammount); + } + } + float damage = playerInfo.getFloat("BlackHeart") - event.ammount; + if (damage >= 0){ + playerInfo.setFloat("BlackHeart", damage); + JewelrycraftMod.netWrapper.sendToServer(new PacketRequestPlayerInfo()); + player.heal(event.ammount); + }else{ + playerInfo.setFloat("BlackHeart", 0f); + JewelrycraftMod.netWrapper.sendToServer(new PacketRequestPlayerInfo()); + player.heal(Math.abs(damage)); + } + } + JewelrycraftMod.netWrapper.sendToServer(new PacketRequestPlayerInfo()); } + }else if (event.source.getEntity() instanceof EntityPlayer){ + EntityPlayer player = (EntityPlayer)event.source.getEntity(); + NBTTagCompound playerInfo = PlayerUtils.getModPlayerPersistTag(player, "Jewelrycraft"); + if (!player.worldObj.isRemote) for(int i = 0; i < 18; i++) + if (playerInfo.hasKey("ext" + i)){ + NBTTagCompound nbt = (NBTTagCompound)playerInfo.getTag("ext" + i); + ItemStack item = ItemStack.loadItemStackFromNBT(nbt); + ((ItemBaseJewelry)item.getItem()).onEntityAttackedCacellable(item, player, entity, event.ammount); + ((ItemBaseJewelry)item.getItem()).onEntityAttacked(item, player, entity, event.ammount); + } } } + /** + * @param event + */ @SubscribeEvent public void onPlayerRespawn(PlayerEvent.Clone event) { EntityPlayer player = event.entityPlayer; - if (!player.worldObj.isRemote) - { + if (!player.worldObj.isRemote){ NBTTagCompound playerInfo = PlayerUtils.getModPlayerPersistTag(player, "Jewelrycraft"); - if (playerInfo.hasKey("cursePoints") && playerInfo.getInteger("cursePoints") > 0) - { + if (playerInfo.hasKey("cursePoints") && playerInfo.getInteger("cursePoints") > 0){ int points = playerInfo.getInteger("cursePoints"); - addCurse(player, playerInfo, "curse1"); - if (points > 50) addCurse(player, playerInfo, "curse2"); - if(!playerInfo.hasKey("curseTime") || !playerInfo.hasKey("reselectCurses") || playerInfo.getBoolean("reselectCurses")) - { + for(int i = 0; i <= 5; i++) + if (points > i * 750) addCurse(player, playerInfo, ("curse" + i).toString()); + if (!playerInfo.hasKey("curseTime") || !playerInfo.hasKey("reselectCurses") || playerInfo.getBoolean("reselectCurses")){ playerInfo.setInteger("curseTime", 23000); playerInfo.setBoolean("reselectCurses", false); } } } - JewelrycraftMod.netWrapper.sendToServer(new PacketRequestPlayerInfo()); + if (event.entity instanceof EntityPlayer && !(event.entity instanceof EntityPlayerMP)) JewelrycraftMod.netWrapper.sendToServer(new PacketRequestPlayerInfo()); + } + + @SubscribeEvent + public void onPlayerFall(LivingFallEvent event) + { + Entity entity = event.entity; + if (entity instanceof EntityPlayer){ + EntityPlayer player = (EntityPlayer)entity; + NBTTagCompound playerInfo = PlayerUtils.getModPlayerPersistTag(player, "Jewelrycraft"); + if (!player.worldObj.isRemote) for(int i = 0; i < 18; i++) + if (playerInfo.hasKey("ext" + i)){ + NBTTagCompound nbt = (NBTTagCompound)playerInfo.getTag("ext" + i); + ItemStack item = ItemStack.loadItemStackFromNBT(nbt); + if (((ItemBaseJewelry)item.getItem()).onPlayerFall(item, player)){ + event.setCanceled(true); + break; + } + } + } } + /** + * @param player + * @param playerInfo + * @param curse + */ public void addCurse(EntityPlayer player, NBTTagCompound playerInfo, String curse) { - if ((!playerInfo.hasKey(curse) || playerInfo.getInteger(curse) == -1) && JewelrycraftUtil.availableCurseNames.size() > 0) - { - String name = JewelrycraftUtil.availableCurseNames.get(JewelrycraftUtil.rand.nextInt(JewelrycraftUtil.availableCurseNames.size())); - int grade = player.worldObj.rand.nextInt(2); - playerInfo.setByte(name, (byte) grade); - JewelrycraftUtil.availableCurseNames.remove(JewelrycraftUtil.curseValues.get(name)); + if ((!playerInfo.hasKey(curse) || playerInfo.getInteger(curse) == 0) && Curse.availableCurses.size() > 0){ + int no = JewelrycraftUtil.rand.nextInt(Curse.availableCurses.size()); + Curse cur = Curse.availableCurses.get(no); + int grade = 1 + player.worldObj.rand.nextInt(2); + playerInfo.setInteger(cur.getName(), grade); + Curse.availableCurses.remove(cur); playerInfo.setInteger(curse, grade); } } + public static void addCurse(EntityPlayer player, NBTTagCompound playerInfo, String curseNo, int curseID) + { + if ((!playerInfo.hasKey(curseNo) || playerInfo.getInteger(curseNo) <= 0) && Curse.availableCurses.size() > 0){ + Curse cur = Curse.availableCurses.get(curseID); + int grade = 1 + player.worldObj.rand.nextInt(2); + playerInfo.setInteger(cur.getName(), grade); + Curse.availableCurses.remove(cur); + playerInfo.setInteger(curseNo, grade); + } + } + + @SubscribeEvent + public void itemToss(ItemTossEvent event) + { + NBTTagCompound playerInfo = PlayerUtils.getModPlayerPersistTag(event.player, "Jewelrycraft"); + for(Curse curse: Curse.getCurseList()) + if (playerInfo.getInteger(curse.getName()) > 0 && curse.itemToss()){ + EntityItem entityitem = new EntityItem(event.player.worldObj, event.player.posX + 0.5D, event.player.posY + 0.5D, event.player.posZ + 0.5D, event.entityItem.getEntityItem()); + entityitem.motionX = 0; + entityitem.motionZ = 0; + entityitem.motionY = 0.11000000298023224D; + event.player.worldObj.spawnEntityInWorld(entityitem); + event.player.addChatComponentMessage(new ChatComponentText("<" + event.player.getDisplayName() + "> This is MY item! MINE! I will NEVER give it to you! Mine! Mine! MINE!")); + event.setCanceled(true); + } + } + + /** + * @param event + */ @SubscribeEvent public void playerFileSave(PlayerEvent.SaveToFile event) { - JewelrycraftMod.netWrapper.sendToServer(new PacketRequestPlayerInfo()); + if (event.entity instanceof EntityPlayer && !(event.entity instanceof EntityPlayerMP)) JewelrycraftMod.netWrapper.sendToServer(new PacketRequestPlayerInfo()); } + /** + * @param event + */ @SubscribeEvent public void onEntityDead(LivingDeathEvent event) { final Entity entity = event.entity; - if (!entity.worldObj.isRemote && entity instanceof EntityPlayer) - { - EntityPlayer player = (EntityPlayer) entity; + Random rand = new Random(); + String[] types = {"Red", "Blue", "White", "Black"}; + if (!entity.worldObj.isRemote && !(entity instanceof EntityPlayer) && entity instanceof EntityLiving){ + EntityLiving live = (EntityLiving)entity; + String type = types[rand.nextInt(4)]; + if (rand.nextInt(6) == 0){ + if (type == "White"){ + EntityHeart h = new EntityHalfHeart(live.worldObj); + h.setType(type); + h.setLocationAndAngles(live.posX, live.posY, live.posZ, MathHelper.wrapAngleTo180_float(rand.nextFloat() * 360.0F), 0.0F); + live.worldObj.spawnEntityInWorld(h); + }else{ + for(int i = 1; i <= 1 + rand.nextInt(1 + (int)(live.getMaxHealth() / 20)); i++){ + EntityHeart[] hearts = {new EntityHeart(live.worldObj), new EntityHalfHeart(entity.worldObj)}; + EntityHeart h = hearts[rand.nextInt(2)]; + h.setType(type); + h.setLocationAndAngles(live.posX, live.posY, live.posZ, MathHelper.wrapAngleTo180_float(rand.nextFloat() * 360.0F), 0.0F); + live.worldObj.spawnEntityInWorld(h); + } + } + } + } + if (!entity.worldObj.isRemote && entity instanceof EntityPlayer){ + EntityPlayer player = (EntityPlayer)entity; NBTTagCompound playerInfo = PlayerUtils.getModPlayerPersistTag(player, "Jewelrycraft"); - if (playerInfo.hasKey("reselectCurses") && playerInfo.getBoolean("reselectCurses")) - { - for (String l : JewelrycraftUtil.curseValues.keySet()) - if (playerInfo.getInteger(l) == 0 || playerInfo.getInteger("Deaths") == 2) playerInfo.setByte(l, (byte) -1); - for (int i = 1; i <= 2; i++) - if ((playerInfo.hasKey(("curse" + i).toString()) && playerInfo.getInteger(("curse" + i).toString()) == 0) || playerInfo.getInteger("Deaths") == 2) playerInfo.setInteger(("curse" + i).toString(), -1); - JewelrycraftUtil.availableCurseNames.putAll(JewelrycraftUtil.curseNames); + if (playerInfo.hasKey("reselectCurses") && playerInfo.getBoolean("reselectCurses")){ + for(Curse l: Curse.getCurseList()){ + if (playerInfo.getInteger(l.getName()) == 1){ + playerInfo.setInteger(l.getName(), 0); + if(!Curse.availableCurses.contains(l)) Curse.availableCurses.add(l); + }else if (playerInfo.getInteger(l.getName()) >= 2) playerInfo.setInteger(l.getName(), 1); + } + for(int i = 0; i <= 5; i++) + if (playerInfo.hasKey(("curse" + i).toString())) + playerInfo.setInteger(("curse" + i).toString(), playerInfo.getInteger(("curse" + i).toString()) == 1 ? 0:1); + + JewelrycraftMod.netWrapper.sendToServer(new PacketRequestPlayerInfo()); } - if (!playerInfo.hasKey("Deaths") || playerInfo.getInteger("Deaths") == 2) playerInfo.setInteger("Deaths", 0); - playerInfo.setInteger("Deaths", playerInfo.getInteger("Deaths") + 1); } - JewelrycraftMod.netWrapper.sendToServer(new PacketRequestPlayerInfo()); + if (event.entity instanceof EntityPlayer && !(event.entity instanceof EntityPlayerMP)) JewelrycraftMod.netWrapper.sendToServer(new PacketRequestPlayerInfo()); } + /** + * @param event + */ @SubscribeEvent public void onWorldLoad(WorldEvent.Load event) { - if (!event.world.isRemote) - { + if (!event.world.isRemote){ new File(JewelrycraftMod.dir + File.separator + "Jewelrycraft").mkdirs(); JewelrycraftMod.liquidsConf = new File(JewelrycraftMod.dir + File.separator + "Jewelrycraft", "JLP" + event.world.getWorldInfo().getWorldName() + ".cfg"); - try - { + try{ if (!JewelrycraftMod.liquidsConf.exists()) JewelrycraftMod.liquidsConf.createNewFile(); } - catch (IOException e) - { + catch(IOException e){ e.printStackTrace(); } } - - if (FMLCommonHandler.instance().getEffectiveSide().isServer()) - { - try - { - if (JewelrycraftMod.liquidsConf.exists()) JewelrycraftMod.saveData = CompressedStreamTools.readCompressed(new FileInputStream(JewelrycraftMod.liquidsConf)); - } - catch (EOFException e) - { - e.printStackTrace(); - } - catch (IOException e) - { - e.printStackTrace(); - } + if (FMLCommonHandler.instance().getEffectiveSide().isServer()) try{ + if (JewelrycraftMod.liquidsConf.exists()) JewelrycraftMod.saveData = CompressedStreamTools.readCompressed(new FileInputStream(JewelrycraftMod.liquidsConf)); + } + catch(EOFException e){ + e.printStackTrace(); + } + catch(IOException e){ + e.printStackTrace(); } - JewelrycraftMod.netWrapper.sendToServer(new PacketRequestPlayerInfo()); - } + /** + * @param event + */ @SubscribeEvent public void onWorldSave(WorldEvent.Save event) { - if (FMLCommonHandler.instance().getEffectiveSide().isServer()) - { - try - { - if (JewelrycraftMod.liquidsConf.exists()) CompressedStreamTools.writeCompressed(JewelrycraftMod.saveData, new FileOutputStream(JewelrycraftMod.liquidsConf)); - } - catch (EOFException e) - { - e.printStackTrace(); - } - catch (IOException e) - { - e.printStackTrace(); - } + if (FMLCommonHandler.instance().getEffectiveSide().isServer()) try{ + if (JewelrycraftMod.liquidsConf.exists()) CompressedStreamTools.writeCompressed(JewelrycraftMod.saveData, new FileOutputStream(JewelrycraftMod.liquidsConf)); + } + catch(EOFException e){ + e.printStackTrace(); + } + catch(IOException e){ + e.printStackTrace(); } } + /** + * @param event + */ @SubscribeEvent - @SideOnly(Side.CLIENT) + @SideOnly (Side.CLIENT) public void fogColors(EntityViewRenderEvent.FogColors event) { - if (event.entity instanceof EntityPlayer) - { - EntityPlayer player = (EntityPlayer) event.entity; + if (event.entity instanceof EntityPlayer){ + EntityPlayer player = (EntityPlayer)event.entity; NBTTagCompound persistTag = PlayerUtils.getModPlayerPersistTag(player, "Jewelrycraft"); - if (persistTag.getBoolean("nearStartedRitual")) - { + if (persistTag.getBoolean("nearStartedRitual")){ event.red = 0f; event.green = 0f; event.blue = 0f; @@ -223,22 +393,25 @@ public class EntityEventHandler if (event.isCancelable()) event.setCanceled(true); } + /** + * @param event + */ @SubscribeEvent - @SideOnly(Side.CLIENT) + @SideOnly (Side.CLIENT) public void fogDensity(EntityViewRenderEvent.FogDensity event) - { - } + {} + /** + * @param event + */ @SubscribeEvent - @SideOnly(Side.CLIENT) + @SideOnly (Side.CLIENT) public void renderFog(EntityViewRenderEvent.RenderFogEvent event) { - if (event.entity instanceof EntityPlayer) - { - EntityPlayer player = (EntityPlayer) event.entity; + if (event.entity instanceof EntityPlayer){ + EntityPlayer player = (EntityPlayer)event.entity; NBTTagCompound persistTag = PlayerUtils.getModPlayerPersistTag(player, "Jewelrycraft"); - if (persistTag.getBoolean("nearStartedRitual")) - { + if (persistTag.getBoolean("nearStartedRitual")){ GL11.glFogi(GL11.GL_FOG_MODE, GL11.GL_EXP); GL11.glFogf(GL11.GL_FOG_DENSITY, 0.6F); } diff --git a/java/darkknight/jewelrycraft/events/KeyBindings.java b/java/darkknight/jewelrycraft/events/KeyBindings.java index 462be0c..a032047 100644 --- a/java/darkknight/jewelrycraft/events/KeyBindings.java +++ b/java/darkknight/jewelrycraft/events/KeyBindings.java @@ -1,14 +1,10 @@ package darkknight.jewelrycraft.events; -import net.minecraft.client.Minecraft; import net.minecraft.client.settings.KeyBinding; - import org.lwjgl.input.Keyboard; - import cpw.mods.fml.client.registry.ClientRegistry; import cpw.mods.fml.common.eventhandler.SubscribeEvent; import cpw.mods.fml.common.gameevent.InputEvent; -import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import darkknight.jewelrycraft.JewelrycraftMod; import darkknight.jewelrycraft.network.PacketKeyPressEvent; @@ -17,12 +13,18 @@ public class KeyBindings public static KeyBinding render = new KeyBinding("Pretty Render", Keyboard.KEY_Z, "Jewelrycraft"); public static KeyBinding inventory = new KeyBinding("Jewelry Inventory", Keyboard.KEY_J, "Jewelrycraft"); + /** + * + */ public KeyBindings() { ClientRegistry.registerKeyBinding(render); ClientRegistry.registerKeyBinding(inventory); } + /** + * @param event + */ @SubscribeEvent public void onKeyInput(InputEvent.KeyInputEvent event) { diff --git a/java/darkknight/jewelrycraft/events/PlayerRenderHandler.java b/java/darkknight/jewelrycraft/events/PlayerRenderHandler.java new file mode 100644 index 0000000..c66a07a --- /dev/null +++ b/java/darkknight/jewelrycraft/events/PlayerRenderHandler.java @@ -0,0 +1,20 @@ +package darkknight.jewelrycraft.events; + +import net.minecraft.client.Minecraft; +import net.minecraftforge.client.event.RenderPlayerEvent; +import cpw.mods.fml.common.eventhandler.SubscribeEvent; +import darkknight.jewelrycraft.model.ModelMask; +import darkknight.jewelrycraft.tileentity.renders.MaskRender; + +public class PlayerRenderHandler +{ + ModelMask maskModel = new ModelMask(); + MaskRender mask = new MaskRender(); + + @SubscribeEvent + public void renderScreen(RenderPlayerEvent.Pre event) + { +// if (event.entityPlayer.equals(Minecraft.getMinecraft().thePlayer)) mask.doRender(event.entityPlayer, 0F, 0F, 0F, event.entityPlayer.rotationPitch, event.entityPlayer.rotationYawHead); + // mask.renderTileEntityAt(null, event.x, event.entity.rotationPitch, event.entity.rotationYawHead, 0F); + } +} diff --git a/java/darkknight/jewelrycraft/events/ScreenHandler.java b/java/darkknight/jewelrycraft/events/ScreenHandler.java index 237a452..4d8013d 100644 --- a/java/darkknight/jewelrycraft/events/ScreenHandler.java +++ b/java/darkknight/jewelrycraft/events/ScreenHandler.java @@ -1,76 +1,96 @@ package darkknight.jewelrycraft.events; -import java.awt.Color; - import net.minecraft.client.Minecraft; import net.minecraft.client.gui.Gui; import net.minecraft.client.gui.GuiChat; import net.minecraft.client.gui.ScaledResolution; -import net.minecraft.client.settings.KeyBinding; -import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.MathHelper; import net.minecraft.util.ResourceLocation; import net.minecraftforge.client.event.RenderGameOverlayEvent; import net.minecraftforge.client.event.RenderGameOverlayEvent.ElementType; - -import org.lwjgl.input.Keyboard; import org.lwjgl.opengl.GL11; - -import cpw.mods.fml.client.FMLClientHandler; -import cpw.mods.fml.client.registry.ClientRegistry; import cpw.mods.fml.common.eventhandler.SubscribeEvent; -import cpw.mods.fml.common.gameevent.InputEvent.KeyInputEvent; -import darkknight.jewelrycraft.JewelrycraftMod; -import darkknight.jewelrycraft.config.ConfigHandler; -import darkknight.jewelrycraft.network.PacketRequestPlayerInfo; -import darkknight.jewelrycraft.util.JewelrycraftUtil; -import darkknight.jewelrycraft.util.PlayerUtils; +import darkknight.jewelrycraft.curses.Curse; public class ScreenHandler extends Gui { private Minecraft mc; - public static NBTTagCompound tagCache; public static int cooldown; + static ResourceLocation texture; + static ResourceLocation hearts = new ResourceLocation("jewelrycraft", "textures/gui/hearts.png"); - public ScreenHandler(Minecraft mc) + public ScreenHandler(Minecraft mc, ResourceLocation tex) { super(); this.mc = mc; + texture = tex; } @SubscribeEvent public void renderScreen(RenderGameOverlayEvent event) { - if (event.isCancelable() || event.type != ElementType.ALL || tagCache == null) return; - mc.renderEngine.bindTexture(new ResourceLocation("jewelrycraft", "textures/gui/curses.png")); - int count = 0; - for (String l : JewelrycraftUtil.curseValues.keySet()) - if (tagCache.getByte(l) > -1){ - int tag = JewelrycraftUtil.curseValues.get(l); - int size = 16; - this.drawRect(0, (size + 6) * count, 24 + mc.fontRenderer.getStringWidth(l.split(":")[1]), 4 + (size + 6) * count + 16, 0xaf000000); - this.drawRect(2, 2 + (size + 6) * count, 22 + mc.fontRenderer.getStringWidth(l.split(":")[1]), 2 + (size + 6) * count + 16, 0x95700064); - count++; - } - count = 0; - for (String l : JewelrycraftUtil.curseValues.keySet()) - if (tagCache.getByte(l) > -1){ - int tag = JewelrycraftUtil.curseValues.get(l); - int size = 16; - GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); - GL11.glDisable(GL11.GL_LIGHTING); - this.drawTexturedModalRect(2, 2 + (size + 6) * count, tag % size * size, tag / size * size, size, size); - count++; + if (event.isCancelable() || event.type != ElementType.ALL || tagCache == null) return; + if (!mc.gameSettings.showDebugInfo && !(mc.currentScreen instanceof GuiChat)){ + int count = 0; + int size = 32; + ScaledResolution resolution = new ScaledResolution(mc, mc.displayWidth, mc.displayHeight); + if (tagCache.hasKey("cursePoints") && tagCache.getInteger("cursePoints") > 0){ + mc.renderEngine.bindTexture(texture); + for(Curse curse: Curse.getCurseList()){ + if (tagCache.hasKey(curse.getName()) && tagCache.getInteger(curse.getName()) > 0){ + Gui.drawRect(0, (size / 2 + 6) * count, 24 + mc.fontRenderer.getStringWidth(curse.getName().split(":")[1]), 4 + (size / 2 + 6) * count + 16, 0xaf000000); + Gui.drawRect(2, 2 + (size / 2 + 6) * count, 22 + mc.fontRenderer.getStringWidth(curse.getName().split(":")[1]), 2 + (size / 2 + 6) * count + 16, 0x95700064); + count++; + } + } + count = 0; + for(Curse curse: Curse.getCurseList()) + if (tagCache.hasKey(curse.getName()) && tagCache.getInteger(curse.getName()) > 0){ + int tag = curse.getID(); + GL11.glPushMatrix(); + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + GL11.glDisable(GL11.GL_LIGHTING); + GL11.glScalef(0.5f, 0.5f, 0.0f); + drawTexturedModalRect(4, 4 + (size + 12) * count, tag % size * size, tag / size * size, size, size); + GL11.glPopMatrix(); + count++; + } + count = 0; + size = 16; + for(Curse curse: Curse.getCurseList()) + if (tagCache.hasKey(curse.getName()) && tagCache.getInteger(curse.getName()) > 0){ + int tag = curse.getID(); + mc.fontRenderer.drawStringWithShadow(curse.getName().split(":")[1], 20, 7 + (size + 6) * count, 16777215); + if (tagCache.getInteger(curse.getName()) == 2){ + mc.renderEngine.bindTexture(hearts); + GL11.glPushMatrix(); + GL11.glEnable(GL11.GL_BLEND); + GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); + GL11.glColor4f(1f, 1f, 1f, 0.5f); + drawTexturedModalRect(15 + mc.fontRenderer.getStringWidth(curse.getName().split(":")[1]), 8 + (size + 6) * count, 3 * size, 0, size, size); + GL11.glPopMatrix(); + } + count++; + } + } + mc.renderEngine.bindTexture(hearts); + count = 0; + if (tagCache.getFloat("BlueHeart") > 0){ + for(int i = 0; i < (int)tagCache.getFloat("BlueHeart") / 2; i++) + drawTexturedModalRect(2 + 13 * i, resolution.getScaledHeight() / 2 - 25 + 16 * count, 0 * size, 0 * size, size, size); + if (tagCache.getFloat("BlueHeart") % 2 != 0) drawTexturedModalRect(2 + 13 * ((int)tagCache.getFloat("BlueHeart") / 2), resolution.getScaledHeight() / 2 - 25 + 16 * count, 0 * size, 1 * size, size, size); + } + count++; + if (tagCache.getFloat("BlackHeart") > 0){ + for(int i = 0; i < MathHelper.ceiling_float_int((tagCache.getFloat("BlackHeart")) / 2.0F); i++) + drawTexturedModalRect(2 + 13 * i, resolution.getScaledHeight() / 2 - 25 + 16 * count, 1 * size, 0 * size, size, size); + if (tagCache.getFloat("BlackHeart") % 2 != 0) drawTexturedModalRect(2 + 13 * ((int)tagCache.getFloat("BlackHeart") / 2), resolution.getScaledHeight() / 2 - 25 + 16 * count, 1 * size, 1 * size, size, size); } - count = 0; - for (String l : JewelrycraftUtil.curseValues.keySet()) - if (tagCache.getByte(l) > -1){ - int tag = JewelrycraftUtil.curseValues.get(l); - int size = 16; - mc.fontRenderer.drawStringWithShadow(l.split(":")[1], 20, 7 + (size + 6) * count, 16777215); - if(tagCache.getByte(l) == 1) mc.fontRenderer.drawStringWithShadow("Leech", mc.fontRenderer.getStringWidth(l.split(":")[1]) + 25, 7 + (size + 6) * count, 16777215); - count++; - } + count++; + if (tagCache.getFloat("WhiteHeart") > 0) + drawTexturedModalRect(2, resolution.getScaledHeight() / 2 - 25 + 16 * count, 2 * size, 1 * size, size, size); + } } }
\ No newline at end of file |
