From d773e5214c5308bbd461f558b9e17a4839027d5e Mon Sep 17 00:00:00 2001 From: OnyxDarkKnight Date: Thu, 9 Jul 2015 21:33:49 +0100 Subject: - Pentagram now reduces the total health the victim has instead of damaging it (this is to prevent getting infinite hearts); - Fixed server-client sync issues (thanks domi) --- .../jewelrycraft/client/gui/GuiCurseInfo.java | 2 +- .../jewelrycraft/curses/CursePentagram.java | 2 +- .../darkknight/jewelrycraft/entities/EntityHeart.java | 10 +++++++--- .../jewelrycraft/events/EntityEventHandler.java | 19 ++++++++++--------- .../jewelrycraft/events/PlayerRenderHandler.java | 14 +++++++------- 5 files changed, 26 insertions(+), 21 deletions(-) (limited to 'src') diff --git a/src/main/java/darkknight/jewelrycraft/client/gui/GuiCurseInfo.java b/src/main/java/darkknight/jewelrycraft/client/gui/GuiCurseInfo.java index 2b3faa0..59f5e91 100644 --- a/src/main/java/darkknight/jewelrycraft/client/gui/GuiCurseInfo.java +++ b/src/main/java/darkknight/jewelrycraft/client/gui/GuiCurseInfo.java @@ -78,7 +78,7 @@ public class GuiCurseInfo extends GuiContainer { if (playerInfo.getInteger(curse.getName()) > 0) { mc.renderEngine.bindTexture(Variables.MISC_TEXTURE); drawTexturedModalRect(guiLeft + 43, guiTop + 5 + (size - 8) * ind, 0, 32, 112, 22); - if (playerInfo.getInteger(curse.getName()) == 1) { + if (playerInfo.getInteger(curse.getName()) == 2) { GL11.glPushMatrix(); GL11.glEnable(GL11.GL_BLEND); GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); diff --git a/src/main/java/darkknight/jewelrycraft/curses/CursePentagram.java b/src/main/java/darkknight/jewelrycraft/curses/CursePentagram.java index faefe84..730542a 100644 --- a/src/main/java/darkknight/jewelrycraft/curses/CursePentagram.java +++ b/src/main/java/darkknight/jewelrycraft/curses/CursePentagram.java @@ -37,7 +37,7 @@ public class CursePentagram extends Curse { if (!world.isRemote) { for (Object entity : world.getEntitiesWithinAABBExcludingEntity(player, AxisAlignedBB.getBoundingBox(player.boundingBox.minX - 0.5F, player.boundingBox.minY, player.boundingBox.minZ - 0.5F, player.boundingBox.maxX + 0.5F, player.boundingBox.maxY, player.boundingBox.maxZ + 0.5F))) { if (entity instanceof EntityLivingBase && rand.nextInt(40) == 0) { - ((EntityLivingBase) entity).attackEntityFrom(DamageSourceList.shadows, 2f); + ((EntityLivingBase) entity).getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(((EntityLivingBase) entity).getMaxHealth() - 2f);//attackEntityFrom(DamageSourceList.shadows, 2f); if (player.shouldHeal()) player.heal(2F); else player.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(player.getMaxHealth() + 2f); } diff --git a/src/main/java/darkknight/jewelrycraft/entities/EntityHeart.java b/src/main/java/darkknight/jewelrycraft/entities/EntityHeart.java index aa8f5c8..793fcd5 100644 --- a/src/main/java/darkknight/jewelrycraft/entities/EntityHeart.java +++ b/src/main/java/darkknight/jewelrycraft/entities/EntityHeart.java @@ -8,6 +8,7 @@ import net.minecraft.entity.EntityLiving; import net.minecraft.entity.EnumCreatureAttribute; import net.minecraft.entity.SharedMonsterAttributes; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; import cpw.mods.fml.relauncher.Side; @@ -15,6 +16,7 @@ import cpw.mods.fml.relauncher.SideOnly; import darkknight.jewelrycraft.JewelrycraftMod; import darkknight.jewelrycraft.config.ConfigHandler; import darkknight.jewelrycraft.network.PacketRequestPlayerInfo; +import darkknight.jewelrycraft.network.PacketSendClientPlayerInfo; import darkknight.jewelrycraft.util.JewelrycraftUtil; import darkknight.jewelrycraft.util.PlayerUtils; import darkknight.jewelrycraft.util.Variables; @@ -70,12 +72,14 @@ public class EntityHeart extends EntityLiving { } } else if (getType().equals("White") && playerInfo.getFloat("WhiteHeart") > 0.1F) { playerInfo.setFloat(getType() + "Heart", 0F); - player.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(player.getMaxHealth() + playerInfo.getFloat("WhiteHeart")); + player.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(player.getMaxHealth() + 2f); + JewelrycraftMod.netWrapper.sendTo(new PacketSendClientPlayerInfo(playerInfo), (EntityPlayerMP)player); +// player.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(player.getMaxHealth() + playerInfo.getFloat("WhiteHeart")); this.setDead(); } else if (!getType().equals("Red")) { if(playerInfo.hasKey(getType() + "Heart")) playerInfo.setFloat(getType() + "Heart", playerInfo.getFloat(getType() + "Heart") + getQuantity()); - else playerInfo.setFloat(getType() + "Heart", getQuantity()); - JewelrycraftMod.netWrapper.sendToServer(new PacketRequestPlayerInfo()); + else playerInfo.setFloat(getType() + "Heart", getQuantity()); + JewelrycraftMod.netWrapper.sendTo(new PacketSendClientPlayerInfo(playerInfo), (EntityPlayerMP)player); this.setDead(); } } diff --git a/src/main/java/darkknight/jewelrycraft/events/EntityEventHandler.java b/src/main/java/darkknight/jewelrycraft/events/EntityEventHandler.java index 0419c7f..ce2bb25 100644 --- a/src/main/java/darkknight/jewelrycraft/events/EntityEventHandler.java +++ b/src/main/java/darkknight/jewelrycraft/events/EntityEventHandler.java @@ -50,6 +50,7 @@ import darkknight.jewelrycraft.item.ItemBaseJewelry; import darkknight.jewelrycraft.item.ItemList; import darkknight.jewelrycraft.network.PacketClearColorCache; import darkknight.jewelrycraft.network.PacketRequestPlayerInfo; +import darkknight.jewelrycraft.network.PacketSendClientPlayerInfo; import darkknight.jewelrycraft.network.PacketSendServerPlayersInfo; import darkknight.jewelrycraft.potions.PotionList; import darkknight.jewelrycraft.random.WeightedRandomCurse; @@ -147,7 +148,7 @@ public class EntityEventHandler { playerInfo.setInteger("curseTime", 23000); playerInfo.setBoolean("reselectCurses", false); } - JewelrycraftMod.netWrapper.sendToServer(new PacketRequestPlayerInfo()); + JewelrycraftMod.netWrapper.sendTo(new PacketSendClientPlayerInfo(playerInfo), (EntityPlayerMP)player); if (addedCurses) { JewelrycraftMod.netWrapper.sendToAll(new PacketSendServerPlayersInfo()); player.addChatMessage(new ChatComponentText(StatCollector.translateToLocal("curse." + Variables.MODID + ".activated"))); @@ -211,13 +212,13 @@ public class EntityEventHandler { if (!player.worldObj.isRemote && !player.capabilities.isCreativeMode && (float) player.hurtResistantTime <= (float) player.maxHurtResistantTime / 2.0F && !event.source.isUnblockable()) { if (playerInfo.getFloat("WhiteHeart") > 0) { playerInfo.setFloat("WhiteHeart", 0f); - JewelrycraftMod.netWrapper.sendToServer(new PacketRequestPlayerInfo()); + JewelrycraftMod.netWrapper.sendTo(new PacketSendClientPlayerInfo(playerInfo), (EntityPlayerMP)player); } if (playerInfo.getFloat("BlueHeart") > 0) { float damage = playerInfo.getFloat("BlueHeart") - event.ammount; if (damage >= 0) playerInfo.setFloat("BlueHeart", damage); else playerInfo.setFloat("BlueHeart", 0f); - JewelrycraftMod.netWrapper.sendToServer(new PacketRequestPlayerInfo()); + JewelrycraftMod.netWrapper.sendTo(new PacketSendClientPlayerInfo(playerInfo), (EntityPlayerMP)player); if (damage < 0) { System.out.println(damage); player.attackEntityFrom(event.source, Math.abs(damage)); @@ -239,7 +240,7 @@ public class EntityEventHandler { float damage = playerInfo.getFloat("BlackHeart") - event.ammount; if (damage >= 0) playerInfo.setFloat("BlackHeart", damage); else playerInfo.setFloat("BlackHeart", 0f); - JewelrycraftMod.netWrapper.sendToServer(new PacketRequestPlayerInfo()); + JewelrycraftMod.netWrapper.sendTo(new PacketSendClientPlayerInfo(playerInfo), (EntityPlayerMP)player); if (damage < 0) player.attackEntityFrom(event.source, Math.abs(damage)); player.hurtResistantTime = player.maxHurtResistantTime; player.hurtTime = player.maxHurtTime = 10; @@ -307,13 +308,12 @@ public class EntityEventHandler { } } } - if (event.entity instanceof EntityPlayer && !(event.entity instanceof EntityPlayerMP)) JewelrycraftMod.netWrapper.sendToServer(new PacketRequestPlayerInfo()); + //if (event.entity instanceof EntityPlayer && !(event.entity instanceof EntityPlayerMP)) JewelrycraftMod.netWrapper.sendToServer(new PacketRequestPlayerInfo()); if (!player.worldObj.isRemote) { - JewelrycraftMod.netWrapper.sendToServer(new PacketRequestPlayerInfo()); + NBTTagCompound playerInfo = PlayerUtils.getModPlayerPersistTag(player, Variables.MODID); + JewelrycraftMod.netWrapper.sendTo(new PacketSendClientPlayerInfo(playerInfo), (EntityPlayerMP)player); if (addedCurses) { JewelrycraftMod.netWrapper.sendToAll(new PacketSendServerPlayersInfo()); - // player.openGui(JewelrycraftMod.instance, 4, player.worldObj, - // 0, 0, 0); addedCurses = false; } } @@ -330,8 +330,9 @@ public class EntityEventHandler { playerInfo.setInteger(cur.getName(), 1); Curse.availableCurses.remove(cur); addedCurses = true; - JewelrycraftMod.netWrapper.sendToServer(new PacketRequestPlayerInfo()); +// JewelrycraftMod.netWrapper.sendToServer(new PacketRequestPlayerInfo()); JewelrycraftMod.netWrapper.sendToAll(new PacketSendServerPlayersInfo()); + JewelrycraftMod.netWrapper.sendTo(new PacketSendClientPlayerInfo(playerInfo), (EntityPlayerMP)player); } } diff --git a/src/main/java/darkknight/jewelrycraft/events/PlayerRenderHandler.java b/src/main/java/darkknight/jewelrycraft/events/PlayerRenderHandler.java index cb4b8c8..0ff7be6 100644 --- a/src/main/java/darkknight/jewelrycraft/events/PlayerRenderHandler.java +++ b/src/main/java/darkknight/jewelrycraft/events/PlayerRenderHandler.java @@ -58,11 +58,11 @@ public class PlayerRenderHandler { EntityPlayer player = players.next(); NBTTagCompound playerInfo = (NBTTagCompound) playersInfo.getTag(player.getDisplayName()); if (ConfigHandler.CURSES_ENABLED) for (Curse curse : Curse.getCurseList()) - if (curse.canCurseBeActivated(player.worldObj) && playerInfo.getInteger(curse.getName()) > 0 && event.entityPlayer.getDisplayName().equals(player.getDisplayName()) && playerInfo.getInteger("cursePoints") > 0) curse.playerRender(player, event); + if (curse != null && curse.canCurseBeActivated(player.worldObj) && playerInfo != null && curse.getName() != null && playerInfo.getInteger(curse.getName()) > 0 && event.entityPlayer != null && player != null && event.entityPlayer.getDisplayName().equals(player.getDisplayName()) && playerInfo.getInteger("cursePoints") > 0) curse.playerRender(player, event); int no = 0; ModelRenderer arm = rightArm; for (int i = 0; i <= 9; i++) - if (playerInfo.hasKey("ext" + i) && event.entityPlayer.getDisplayName().equals(player.getDisplayName())) { + if (playerInfo != null && event.entityPlayer != null && player != null && playerInfo.hasKey("ext" + i) && event.entityPlayer.getDisplayName().equals(player.getDisplayName())) { gem = -1; ingot = -1; if (no > 4) arm = leftArm; @@ -101,13 +101,13 @@ public class PlayerRenderHandler { no++; } for (int i = 10; i <= 13; i++) - if (playerInfo.hasKey("ext" + i) && event.entityPlayer.getDisplayName().equals(player.getDisplayName())) { + if (playerInfo != null && event.entityPlayer != null && player != null && playerInfo.hasKey("ext" + i) && event.entityPlayer.getDisplayName().equals(player.getDisplayName())) { NBTTagCompound nbt = (NBTTagCompound) playerInfo.getTag("ext" + i); ItemStack item = ItemStack.loadItemStackFromNBT(nbt); if (JewelryNBT.ingot(item) != null) ingotColor[i - 10] = JewelrycraftUtil.getColor(JewelryNBT.ingot(item)); if (JewelryNBT.gem(item) != null) gemColor[i - 10] = JewelrycraftUtil.getColor(JewelryNBT.gem(item)); } - if ((playerInfo.hasKey("ext10") || playerInfo.hasKey("ext11")) && event.entityPlayer.getDisplayName().equals(player.getDisplayName())) { + if (playerInfo != null && event.entityPlayer != null && player != null && (playerInfo.hasKey("ext10") || playerInfo.hasKey("ext11")) && event.entityPlayer.getDisplayName().equals(player.getDisplayName())) { GL11.glPushMatrix(); GL11.glColor4f(1, 1, 1, 1); if (Loader.isModLoaded("alpaca") /*&& fiskfille.alpaca.AlpacaAPI.isAlpacaClient(event.entityPlayer)*/) { @@ -127,7 +127,7 @@ public class PlayerRenderHandler { bracelet.doRender(event.entityPlayer, (float) ingotColor[0], (float) gemColor[0], (float) ingotColor[1], (float) gemColor[1], 0.0F); GL11.glPopMatrix(); } - if ((playerInfo.hasKey("ext12") || playerInfo.hasKey("ext13")) && event.entityPlayer.getDisplayName().equals(player.getDisplayName())) { + if (playerInfo != null && event.entityPlayer != null && player != null && (playerInfo.hasKey("ext12") || playerInfo.hasKey("ext13")) && event.entityPlayer.getDisplayName().equals(player.getDisplayName())) { GL11.glPushMatrix(); GL11.glColor4f(1, 1, 1, 1); if (Loader.isModLoaded("alpaca") /*&& fiskfille.alpaca.AlpacaAPI.isAlpacaClient(event.entityPlayer)*/) { @@ -149,7 +149,7 @@ public class PlayerRenderHandler { } no = 0; for (int i = 14; i <= 16; i++) - if (playerInfo.hasKey("ext" + i) && event.entityPlayer.getDisplayName().equals(player.getDisplayName())) { + if (playerInfo != null && event.entityPlayer != null && player != null && playerInfo.hasKey("ext" + i) && event.entityPlayer.getDisplayName().equals(player.getDisplayName())) { gem = -1; ingot = -1; NBTTagCompound nbt = (NBTTagCompound) playerInfo.getTag("ext" + i); @@ -175,7 +175,7 @@ public class PlayerRenderHandler { GL11.glPopMatrix(); no++; } - if (playerInfo.hasKey("ext17") && event.entityPlayer.getDisplayName().equals(player.getDisplayName())) { + if (playerInfo != null && event.entityPlayer != null && player != null && playerInfo.hasKey("ext17") && event.entityPlayer.getDisplayName().equals(player.getDisplayName())) { gem = -1; ingot = -1; NBTTagCompound nbt = (NBTTagCompound) playerInfo.getTag("ext17"); -- cgit v1.2.3