summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorOnyxDarkKnight <sor1n.iliutza16@gmail.com>2015-04-26 17:39:03 +0100
committerOnyxDarkKnight <sor1n.iliutza16@gmail.com>2015-04-26 17:39:03 +0100
commitd13dec851885e075aa67c68dc0a459f3b428db49 (patch)
tree28266412ebb4b30ed4ff7671897d96b6af5f819c /src
parente5d92a544eda969a8b29a626cf111de803706d0e (diff)
Jewelrycraft 2 ready for alpha release! Yaaay :D
Diffstat (limited to 'src')
-rw-r--r--src/main/java/darkknight/jewelrycraft/api/Curse.java7
-rw-r--r--src/main/java/darkknight/jewelrycraft/api/ModifierEffects.java3
-rw-r--r--src/main/java/darkknight/jewelrycraft/client/Page.java2
-rw-r--r--src/main/java/darkknight/jewelrycraft/client/gui/GuiGuide.java4
-rw-r--r--src/main/java/darkknight/jewelrycraft/client/gui/GuiTabBlocks.java8
-rw-r--r--src/main/java/darkknight/jewelrycraft/client/gui/GuiTabItems.java10
-rw-r--r--src/main/java/darkknight/jewelrycraft/client/gui/GuiTabModifiers.java23
-rw-r--r--src/main/java/darkknight/jewelrycraft/curses/CurseHumbleBundle.java53
-rw-r--r--src/main/java/darkknight/jewelrycraft/curses/CurseList.java10
-rw-r--r--src/main/java/darkknight/jewelrycraft/curses/CurseVampireHunger.java26
-rw-r--r--src/main/java/darkknight/jewelrycraft/effects/EffectEnderPearl.java95
-rw-r--r--src/main/java/darkknight/jewelrycraft/effects/EffectFeather.java26
-rw-r--r--src/main/java/darkknight/jewelrycraft/effects/EffectObsidian.java102
-rw-r--r--src/main/java/darkknight/jewelrycraft/effects/EffectsList.java14
-rw-r--r--src/main/java/darkknight/jewelrycraft/events/BlockEventHandler.java29
-rw-r--r--src/main/java/darkknight/jewelrycraft/events/EntityEventHandler.java6
-rw-r--r--src/main/java/darkknight/jewelrycraft/events/ScreenHandler.java2
-rw-r--r--src/main/java/darkknight/jewelrycraft/item/ItemBaseJewelry.java6
-rw-r--r--src/main/java/darkknight/jewelrycraft/item/render/ItemRender.java2
-rw-r--r--src/main/java/darkknight/jewelrycraft/tileentity/renders/TileEntityMidasTouchRender.java7
20 files changed, 392 insertions, 43 deletions
diff --git a/src/main/java/darkknight/jewelrycraft/api/Curse.java b/src/main/java/darkknight/jewelrycraft/api/Curse.java
index 618f5ae..bba11e3 100644
--- a/src/main/java/darkknight/jewelrycraft/api/Curse.java
+++ b/src/main/java/darkknight/jewelrycraft/api/Curse.java
@@ -9,6 +9,7 @@ import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.world.World;
import net.minecraftforge.client.event.RenderHandEvent;
import net.minecraftforge.client.event.RenderPlayerEvent;
+import net.minecraftforge.event.world.BlockEvent;
public class Curse
{
@@ -117,6 +118,12 @@ public class Curse
public void playerHandRender(EntityPlayer player, RenderHandEvent event)
{}
+ public void onBlockItemsDrop(EntityPlayer player, BlockEvent.HarvestDropsEvent event)
+ {}
+
+ public void onBlockDestroyed(EntityPlayer player, BlockEvent.BreakEvent event)
+ {}
+
public boolean itemToss()
{
return false;
diff --git a/src/main/java/darkknight/jewelrycraft/api/ModifierEffects.java b/src/main/java/darkknight/jewelrycraft/api/ModifierEffects.java
index 1b930c9..ded92c0 100644
--- a/src/main/java/darkknight/jewelrycraft/api/ModifierEffects.java
+++ b/src/main/java/darkknight/jewelrycraft/api/ModifierEffects.java
@@ -82,4 +82,7 @@ public class ModifierEffects
*/
public void onPlayerAttacked(ItemStack item, EntityPlayer player, DamageSource source, Item jewelry, float amount)
{}
+
+ public void onPlayerDead(ItemStack item, EntityPlayer player, DamageSource source, Item jewelry)
+ {}
}
diff --git a/src/main/java/darkknight/jewelrycraft/client/Page.java b/src/main/java/darkknight/jewelrycraft/client/Page.java
index f6973a9..d117fb7 100644
--- a/src/main/java/darkknight/jewelrycraft/client/Page.java
+++ b/src/main/java/darkknight/jewelrycraft/client/Page.java
@@ -154,7 +154,7 @@ public class Page
GL11.glEnable(GL11.GL_BLEND);
GL11.glEnable(GL12.GL_RESCALE_NORMAL);
GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
- if (showName) gui.getFont().drawString(EnumChatFormatting.DARK_BLUE + "\u00a7n" + item.getDisplayName(), x + Math.abs(70 - gui.getFont().getStringWidth(item.getDisplayName()) / 2) - 10, y + 2, 0);
+ if (showName) gui.getFont().drawString(EnumChatFormatting.DARK_BLUE + "\u00a7n" + item.getDisplayName().substring(0, item.getDisplayName().length() > 23?23:item.getDisplayName().length()), x + Math.abs(70 - gui.getFont().getStringWidth(item.getDisplayName()) / 2) - 10, y + 2, 0);
GL11.glColor4f(1, 1, 1, 1);
gui.renderItem(item, x + 13 + imgX, y + 18 + imgY, size, rotate, 0, 0, 0);
drawText(gui, text, x + txtX, y + txtY);
diff --git a/src/main/java/darkknight/jewelrycraft/client/gui/GuiGuide.java b/src/main/java/darkknight/jewelrycraft/client/gui/GuiGuide.java
index 34a5c3d..2e97a02 100644
--- a/src/main/java/darkknight/jewelrycraft/client/gui/GuiGuide.java
+++ b/src/main/java/darkknight/jewelrycraft/client/gui/GuiGuide.java
@@ -84,10 +84,10 @@ public class GuiGuide extends GuiContainer
activeTab.drawBackground(this, i, j, page + 1);
ArrayList<String> text = new ArrayList<String>();
text.add(Integer.toString(page));
- drawHoveringText(text, guiLeft - 10 + 20 - text.get(0).length(), guiTop + 150 + 20, fontRendererObj);
+ drawHoveringText(text, guiLeft - 10 + 20 - text.get(0).length(), guiTop + 150 + 25, fontRendererObj);
text.remove(Integer.toString(page));
text.add(Integer.toString(page + 1));
- drawHoveringText(text, guiLeft - 10 + 20 + 147 - text.get(0).length(), guiTop + 150 + 20, fontRendererObj);
+ drawHoveringText(text, guiLeft - 10 + 20 + 147 - text.get(0).length(), guiTop + 150 + 25, fontRendererObj);
for(int tab = 0; tab < tabs.length; tab++)
renderItem(tabs[tab].getIcon(), guiLeft - 52, guiTop + 26 + tab * 19, activeTab.getIcon());
}
diff --git a/src/main/java/darkknight/jewelrycraft/client/gui/GuiTabBlocks.java b/src/main/java/darkknight/jewelrycraft/client/gui/GuiTabBlocks.java
index 8ba6c6a..11a5158 100644
--- a/src/main/java/darkknight/jewelrycraft/client/gui/GuiTabBlocks.java
+++ b/src/main/java/darkknight/jewelrycraft/client/gui/GuiTabBlocks.java
@@ -132,7 +132,11 @@ public class GuiTabBlocks extends GuiTab
Page.addCraftingRecipeTextPage(gui, gui.getLeft() + xPos, gui.getTop(), false, text, x, y, true, new ItemStack(BlockList.shadowEye), new ItemStack(Blocks.stonebrick), new ItemStack(Blocks.stained_hardened_clay, 1, 15), new ItemStack(Blocks.stonebrick), new ItemStack(Blocks.stained_hardened_clay, 1, 15), new ItemStack(Items.ender_eye), new ItemStack(Blocks.stained_hardened_clay, 1, 15), new ItemStack(Blocks.stonebrick), new ItemStack(Blocks.stained_hardened_clay, 1, 15), new ItemStack(Blocks.stonebrick));
break;
case 22:
- text = "though, for He sees everything. To see how to create the ritual look in the Ritual tab.";
+ text = "though, for He sees everything. To see how to create the ritual look in the Ritual tab. One you created the ritual, simple place a piece of jewelery in the middle pedestal and your modifiers of choice in the other ones (you don't need to put an item in every single pedestal). After";
+ Page.addTextPage(gui, gui.getLeft() + xPos, gui.getTop(), text);
+ break;
+ case 23:
+ text = "you do that simply right click the eye to activate the ritual. Be careful not to leave the premise or you'll die! When the ritual is done, Shift+Right Click on the central hand pedestal to retrieve your newly modified item!";
Page.addTextPage(gui, gui.getLeft() + xPos, gui.getTop(), text);
break;
default:
@@ -146,7 +150,7 @@ public class GuiTabBlocks extends GuiTab
@Override
public int getMaxPages()
{
- return 21;
+ return 23;
}
/**
diff --git a/src/main/java/darkknight/jewelrycraft/client/gui/GuiTabItems.java b/src/main/java/darkknight/jewelrycraft/client/gui/GuiTabItems.java
index 37012d9..6d7ee04 100644
--- a/src/main/java/darkknight/jewelrycraft/client/gui/GuiTabItems.java
+++ b/src/main/java/darkknight/jewelrycraft/client/gui/GuiTabItems.java
@@ -125,6 +125,14 @@ public class GuiTabItems extends GuiTab
text = "These buckets contain molten metal. To obtain one simply Right Click a full Smelter to get a bucket. You can pour the metal, other than that it has no use. You can place the molten metal back in a Smelter by Right Clicking one with it.";
Page.addImageTextPage(gui, gui.getLeft() + xPos, gui.getTop() - 5, item, text, 40f, 0, 0, true, 45, 10, true);
break;
+ case 16:
+ text = "This item is a creative only item! Right click it while in creative mode to open a GUI. Place a piece of jewelery inside the slot, select what you want to add, then click on 'Add Items'. If you selected Modifiers, you can select multiple";
+ Page.addImageTextPage(gui, gui.getLeft() + xPos, gui.getTop() - 5, new ItemStack(ItemList.jewelryModifier), text, 40f, 0, 0, true, 45, 10, true);
+ break;
+ case 17:
+ text = "items at once. The 'Item' button is to add an Item to a Golden Object, which can not be obtained normally. This tool can be really useful, especially for those who want to test the mod and can't wait for the normal processes to finish (Smelter, Jewelers Table, Ritual).";
+ Page.addTextPage(gui, gui.getLeft() + xPos, gui.getTop(), text);
+ break;
default:
;
}
@@ -136,7 +144,7 @@ public class GuiTabItems extends GuiTab
@Override
public int getMaxPages()
{
- return 15;
+ return 17;
}
/**
diff --git a/src/main/java/darkknight/jewelrycraft/client/gui/GuiTabModifiers.java b/src/main/java/darkknight/jewelrycraft/client/gui/GuiTabModifiers.java
index 614c152..79f7e92 100644
--- a/src/main/java/darkknight/jewelrycraft/client/gui/GuiTabModifiers.java
+++ b/src/main/java/darkknight/jewelrycraft/client/gui/GuiTabModifiers.java
@@ -1,5 +1,6 @@
package darkknight.jewelrycraft.client.gui;
+import net.minecraft.init.Blocks;
import net.minecraft.init.Items;
import net.minecraft.item.ItemStack;
import darkknight.jewelrycraft.client.Page;
@@ -35,20 +36,32 @@ public class GuiTabModifiers extends GuiTab
switch(page)
{
case 1:
- text = "Although you can add anything as a modifier, only some objects have an effect. In this tab you can find all of modifiers that have a use and what they do, in the form of a story/riddle/poem. However different jewellery have different effects for the same modifier.";
+ text = "Although you can add anything as a modifier, only some objects have an effect. In this tab you can find all modifiers that have a use and what they do, in the form of a story/riddle/poem. However, different jewellery have different effects for the same modifier.";
Page.addTextPage(gui, gui.getLeft() + xPos, gui.getTop(), text);
break;
case 2:
text = "The ancient ones talked about a rising fire in your heart. Fret do not, for flames do not burn, but water might sting a turn. Watch your step, do not be cocky, for its protection is a bit sloppy.";
- Page.addImageTextPage(gui, gui.getLeft() + xPos, gui.getTop() - 7, new ItemStack(Items.blaze_powder), text, 40f, true);
+ Page.addImageTextPage(gui, gui.getLeft() + xPos, gui.getTop() - 10, new ItemStack(Items.blaze_powder), text, 40f, true);
break;
case 3:
text = "Light and swift as a feather can be good all together. Enemies miss and get confused, this power can be abused. Against an arrow you can't compare, so move around, don't just stare. Fire is your enemy and weakness is the penalty.";
- Page.addImageTextPage(gui, gui.getLeft() + xPos, gui.getTop() - 7, new ItemStack(Items.feather), text, 40f, true);
+ Page.addImageTextPage(gui, gui.getLeft() + xPos, gui.getTop() - 10, new ItemStack(Items.feather), text, 40f, true);
break;
case 4:
text = "Endermen may tolerate you, end portals are near too, you may find ore that is true. But be careful, for the power may make you dizzy, blind you if you're a sissy, worsen your vision if you're unaware and shift positions everywhere.";
- Page.addImageTextPage(gui, gui.getLeft() + xPos, gui.getTop() - 7, new ItemStack(Items.ender_eye), text, 40f, true);
+ Page.addImageTextPage(gui, gui.getLeft() + xPos, gui.getTop() - 10, new ItemStack(Items.ender_eye), text, 40f, true);
+ break;
+ case 5:
+ text = "Through the power of a pearl arrows don't know where to go. In confusion they can explode, making you a helpless toad. But if an enemy hits, they get damaged like a blitz. You may be weaker, water is bad, but you get saved if health is weak like a lilly pad.";
+ Page.addImageTextPage(gui, gui.getLeft() + xPos, gui.getTop() - 10, new ItemStack(Items.ender_pearl), text, 40f, true);
+ break;
+ case 6:
+ text = "Toughest stone made on Earth, falling damage is absurd. Deal more damage, more protection, anvils and arrows need inspection. But after long and hard abuse, the stone is starting to get loose. You are weak and heavy, sink like a ship, arrows need only one";
+ Page.addImageTextPage(gui, gui.getLeft() + xPos, gui.getTop() - 10, new ItemStack(Blocks.obsidian), text, 40f, true);
+ break;
+ case 7:
+ text = "hit, deal less damage overall, don't abuse its power now.";
+ Page.addTextPage(gui, gui.getLeft() + xPos, gui.getTop(), text);
break;
}
}
@@ -59,7 +72,7 @@ public class GuiTabModifiers extends GuiTab
@Override
public int getMaxPages()
{
- return 4;
+ return 7;
}
/**
diff --git a/src/main/java/darkknight/jewelrycraft/curses/CurseHumbleBundle.java b/src/main/java/darkknight/jewelrycraft/curses/CurseHumbleBundle.java
new file mode 100644
index 0000000..21007a7
--- /dev/null
+++ b/src/main/java/darkknight/jewelrycraft/curses/CurseHumbleBundle.java
@@ -0,0 +1,53 @@
+/**
+ *
+ */
+package darkknight.jewelrycraft.curses;
+
+import java.util.ArrayList;
+import net.minecraft.entity.Entity;
+import net.minecraft.entity.item.EntityItem;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.init.Blocks;
+import net.minecraft.item.Item;
+import net.minecraft.item.ItemStack;
+import net.minecraft.world.World;
+import net.minecraftforge.event.world.BlockEvent;
+import darkknight.jewelrycraft.api.Curse;
+
+/**
+ * @author Sorin
+ *
+ */
+public class CurseHumbleBundle extends Curse
+{
+ protected CurseHumbleBundle(String name, int txtID, String texturepack)
+ {
+ super(name, txtID, texturepack);
+ }
+
+ @Override
+ public void entityDropItems(EntityPlayer player, Entity target, ArrayList<EntityItem> drops)
+ {
+ for(EntityItem item: drops){
+ ItemStack drop = item.getEntityItem().copy();
+ target.entityDropItem(drop, 0.5F);
+ }
+ }
+
+ public void onBlockItemsDrop(EntityPlayer player, BlockEvent.HarvestDropsEvent event)
+ {
+ for(ItemStack item: event.drops){
+ ItemStack drop = item.copy();
+ if(drop.getItem() != Item.getItemFromBlock(event.block)) dropItem(event.world, event.x, event.y, event.z, drop);
+ }
+ }
+
+ public void dropItem(World world, double x, double y, double z, ItemStack stack)
+ {
+ EntityItem entityitem = new EntityItem(world, x + 0.5D, y + 0.5D, z + 0.5D, stack);
+ entityitem.motionX = 0;
+ entityitem.motionZ = 0;
+ entityitem.motionY = 0.11000000298023224D;
+ world.spawnEntityInWorld(entityitem);
+ }
+}
diff --git a/src/main/java/darkknight/jewelrycraft/curses/CurseList.java b/src/main/java/darkknight/jewelrycraft/curses/CurseList.java
index acaafd0..cc8cbc6 100644
--- a/src/main/java/darkknight/jewelrycraft/curses/CurseList.java
+++ b/src/main/java/darkknight/jewelrycraft/curses/CurseList.java
@@ -30,10 +30,10 @@ public class CurseList
midasTouch = new CurseMidasTouch(Variables.MODNAME + ":" + "Midas Touch", 5, Variables.MODID + "_curses_0");
rabbitsPaw = new CurseRabbitsPaw(Variables.MODNAME + ":" + "Rabbit's Paw", 6, Variables.MODID + "_curses_0");
pentagram = new CursePentagram(Variables.MODNAME + ":" + "Pentagram", 7, Variables.MODID + "_curses_0");
-// vampireHunger = new CurseMidasTouch(8, Variables.MODNAME + ":" + "Vampire Hunger", 8, 0);
-// humbleBundle = new CurseMidasTouch(9, Variables.MODNAME + ":" + "Humble Bundle", 9, 0);
-// deathsTouch = new CurseMidasTouch(10, Variables.MODNAME + ":" + "Deaths Touch", 10, 0);
-// antichrist = new CurseMidasTouch(11, Variables.MODNAME + ":" + "Antichrist", 11, 0);
-// moneyEqualsPower = new CurseMidasTouch(12, Variables.MODNAME + ":" + "Money Equals Power", 12, 0);
+ vampireHunger = new CurseVampireHunger(Variables.MODNAME + ":" + "Vampire Hunger", 8, Variables.MODID + "_curses_0");
+ humbleBundle = new CurseHumbleBundle(Variables.MODNAME + ":" + "Humble Bundle", 9, Variables.MODID + "_curses_0");
+// deathsTouch = new CurseMidasTouch(Variables.MODNAME + ":" + "Deaths Touch", 10, Variables.MODID + "_curses_0");
+// antichrist = new CurseMidasTouch(Variables.MODNAME + ":" + "Antichrist", 11, Variables.MODID + "_curses_0");
+// moneyEqualsPower = new CurseMidasTouch(Variables.MODNAME + ":" + "Money Equals Power", 12, Variables.MODID + "_curses_0");
}
}
diff --git a/src/main/java/darkknight/jewelrycraft/curses/CurseVampireHunger.java b/src/main/java/darkknight/jewelrycraft/curses/CurseVampireHunger.java
new file mode 100644
index 0000000..08b5a65
--- /dev/null
+++ b/src/main/java/darkknight/jewelrycraft/curses/CurseVampireHunger.java
@@ -0,0 +1,26 @@
+/**
+ *
+ */
+package darkknight.jewelrycraft.curses;
+
+import net.minecraft.entity.Entity;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.world.World;
+import darkknight.jewelrycraft.api.Curse;
+
+/**
+ * @author Sorin
+ *
+ */
+public class CurseVampireHunger extends Curse
+{
+ protected CurseVampireHunger(String name, int txtID, String texturepack)
+ {
+ super(name, txtID, texturepack);
+ }
+
+ public void attackedByPlayerAction(World world, EntityPlayer player, Entity target)
+ {
+ if(player.shouldHeal() && rand.nextInt(5) == 0) player.heal(1F);
+ }
+}
diff --git a/src/main/java/darkknight/jewelrycraft/effects/EffectEnderPearl.java b/src/main/java/darkknight/jewelrycraft/effects/EffectEnderPearl.java
new file mode 100644
index 0000000..531a1c1
--- /dev/null
+++ b/src/main/java/darkknight/jewelrycraft/effects/EffectEnderPearl.java
@@ -0,0 +1,95 @@
+package darkknight.jewelrycraft.effects;
+
+import java.util.Iterator;
+import java.util.List;
+import net.minecraft.entity.Entity;
+import net.minecraft.entity.item.EntityTNTPrimed;
+import net.minecraft.entity.monster.EntityEnderman;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.entity.projectile.EntityArrow;
+import net.minecraft.init.Items;
+import net.minecraft.item.Item;
+import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.potion.Potion;
+import net.minecraft.potion.PotionEffect;
+import net.minecraft.util.AxisAlignedBB;
+import net.minecraft.util.DamageSource;
+import darkknight.jewelrycraft.api.ModifierEffects;
+import darkknight.jewelrycraft.item.ItemBracelet;
+import darkknight.jewelrycraft.item.ItemEarrings;
+import darkknight.jewelrycraft.item.ItemNecklace;
+import darkknight.jewelrycraft.item.ItemRing;
+import darkknight.jewelrycraft.util.JewelryNBT;
+import darkknight.jewelrycraft.util.PlayerUtils;
+import darkknight.jewelrycraft.util.Variables;
+
+public class EffectEnderPearl extends ModifierEffects
+{
+ public EffectEnderPearl()
+ {
+ super(new ItemStack(Items.ender_pearl));
+ }
+
+ @Override
+ public void action(ItemStack item, EntityPlayer player, Item jewelry)
+ {
+ boolean exists = JewelryNBT.doesModifierExist(item, modifier);
+ NBTTagCompound playerInfo = PlayerUtils.getModPlayerPersistTag(player, Variables.MODID);
+ if (jewelry instanceof ItemEarrings && exists){
+ AxisAlignedBB axisalignedbb = player.boundingBox.expand(2.0D, 2.0D, 2.0D);
+ List list = player.worldObj.getEntitiesWithinAABB(EntityArrow.class, axisalignedbb);
+ if (!player.worldObj.isRemote && list != null && !list.isEmpty()){
+ Iterator iterator = list.iterator();
+ while (iterator.hasNext()){
+ EntityArrow arrow = (EntityArrow)iterator.next();
+ if (arrow.shootingEntity == null || !(arrow.shootingEntity.equals(player)))
+ // Negative earrings
+ if (rand.nextInt(30) == 0){
+ arrow.worldObj.createExplosion(new EntityTNTPrimed(arrow.worldObj), arrow.posX, arrow.posY, arrow.posZ, 2F, true);
+ arrow.setDead();
+ }
+ // Positive earrings
+ else arrow.setPosition(arrow.posX + rand.nextInt(16) - rand.nextInt(16), arrow.posY + rand.nextInt(16), arrow.posZ + rand.nextInt(16) - rand.nextInt(16));
+ }
+ }
+ }
+ // Negative Necklace
+ if (jewelry instanceof ItemNecklace && exists) player.addPotionEffect(new PotionEffect(Potion.resistance.id, 60, -10, true));
+ // Negative bracelet
+ if (jewelry instanceof ItemBracelet && exists && player.isInWater()) player.setPositionAndUpdate(player.posX + rand.nextInt(16) - rand.nextInt(16), player.posY + rand.nextInt(4), player.posZ + rand.nextInt(16) - rand.nextInt(16));
+ }
+
+ @Override
+ public void onPlayerAttacked(ItemStack item, EntityPlayer player, DamageSource source, Item jewelry, float amount)
+ {
+ boolean exists = JewelryNBT.doesModifierExist(item, modifier);
+ NBTTagCompound playerInfo = PlayerUtils.getModPlayerPersistTag(player, Variables.MODID);
+ // Positive Necklace
+ if (jewelry instanceof ItemNecklace && exists && source.getEntity() != null) source.getEntity().attackEntityFrom(source, amount);
+ // Positive bracelet
+ if (jewelry instanceof ItemBracelet && exists && !player.worldObj.isRemote){
+ int id = player.worldObj.provider.dimensionId;
+ if (player.getHealth() <= 6F) if (player.getBedLocation(id) != null) player.setPositionAndUpdate(player.getBedLocation(id).posX, player.getBedLocation(id).posY, player.getBedLocation(id).posZ);
+ else player.setPositionAndUpdate(player.worldObj.getSpawnPoint().posX, player.worldObj.getSpawnPoint().posY, player.worldObj.getSpawnPoint().posZ);
+ }
+ }
+
+ public void onEntityAttacked(ItemStack item, EntityPlayer player, Entity target, Item jewelry, float amount)
+ {
+ boolean exists = JewelryNBT.doesModifierExist(item, modifier);
+ NBTTagCompound playerInfo = PlayerUtils.getModPlayerPersistTag(player, Variables.MODID);
+ NBTTagCompound enemyData = target.getEntityData();
+ if (jewelry instanceof ItemRing && exists){
+ // Negative ring
+ if (target instanceof EntityEnderman) player.addPotionEffect(new PotionEffect(Potion.weakness.id, 400, 2, true));
+ // Positive ring
+ else target.setPosition(target.posX + rand.nextInt(16) - rand.nextInt(16), target.posY + rand.nextInt(4), target.posZ + rand.nextInt(16) - rand.nextInt(16));
+ }
+ }
+
+ public boolean onEntityAttackedCacellable(ItemStack item, EntityPlayer player, Entity target, Item jewelry, float amount)
+ {
+ return false;
+ }
+}
diff --git a/src/main/java/darkknight/jewelrycraft/effects/EffectFeather.java b/src/main/java/darkknight/jewelrycraft/effects/EffectFeather.java
index 3a68957..c9cdf06 100644
--- a/src/main/java/darkknight/jewelrycraft/effects/EffectFeather.java
+++ b/src/main/java/darkknight/jewelrycraft/effects/EffectFeather.java
@@ -65,18 +65,20 @@ public class EffectFeather extends ModifierEffects
boolean exists = JewelryNBT.doesModifierExist(item, modifier);
NBTTagCompound playerInfo = PlayerUtils.getModPlayerPersistTag(player, Variables.MODID);
NBTTagCompound enemyData = target.getEntityData();
- if (jewelry instanceof ItemRing && exists && enemyData.getInteger("reAttacked") == 0){
- // Negative ring
- enemyData.setInteger("reAttacked", enemyData.getInteger("reAttacked") + 1);
- target.attackEntityFrom(DamageSource.causePlayerDamage(player), amount / (2F + (JewelryNBT.numberOfModifiers(item)-1)*0.1F));
- // Positive ring
- if (rand.nextInt(2) == 0){
- enemyData.setInteger("stunTime", 51 - JewelryNBT.numberOfModifiers(item));
- enemyData.setBoolean("stunned", true);
+ if (jewelry instanceof ItemRing && exists){
+ if (enemyData.getInteger("reAttacked") == 0){
+ // Negative ring
+ enemyData.setInteger("reAttacked", enemyData.getInteger("reAttacked") + 1);
+ target.attackEntityFrom(DamageSource.causePlayerDamage(player), amount / (2F + (JewelryNBT.numberOfModifiers(item) - 1) * 0.1F));
+ // Positive ring
+ if (rand.nextInt(2) == 0){
+ enemyData.setInteger("stunTime", 51 - JewelryNBT.numberOfModifiers(item));
+ enemyData.setBoolean("stunned", true);
+ }
+ playerInfo.setBoolean("weakDamage", true);
}
- playerInfo.setBoolean("weakDamage", true);
+ if (enemyData.getInteger("reAttacked") == 1) enemyData.setInteger("reAttacked", 0);
}
- if (enemyData.getInteger("reAttacked") == 1) enemyData.setInteger("reAttacked", 0);
}
@Override
@@ -90,8 +92,8 @@ public class EffectFeather extends ModifierEffects
playerInfo.setBoolean("negateDamage", true);
}
// Negative necklace
- if (jewelry instanceof ItemNecklace && exists && (source == DamageSource.inFire || source == DamageSource.onFire || source == DamageSource.lava) && source != DamageSourceList.weak) player.attackEntityFrom(DamageSourceList.weak, amount * (3F + (JewelryNBT.numberOfModifiers(item) - 1)*0.1F));
+ if (jewelry instanceof ItemNecklace && exists && (source == DamageSource.inFire || source == DamageSource.onFire || source == DamageSource.lava) && source != DamageSourceList.weak) player.attackEntityFrom(DamageSourceList.weak, amount * (3F + (JewelryNBT.numberOfModifiers(item) - 1) * 0.1F));
// Negative earrings
- if (jewelry instanceof ItemEarrings && exists && source.damageType.equals("arrow") && source != DamageSourceList.weak) player.attackEntityFrom(DamageSourceList.weak, amount * (2F + (JewelryNBT.numberOfModifiers(item) - 1)*0.1F));
+ if (jewelry instanceof ItemEarrings && exists && source.damageType.equals("arrow") && source != DamageSourceList.weak) player.attackEntityFrom(DamageSourceList.weak, amount * (2F + (JewelryNBT.numberOfModifiers(item) - 1) * 0.1F));
}
}
diff --git a/src/main/java/darkknight/jewelrycraft/effects/EffectObsidian.java b/src/main/java/darkknight/jewelrycraft/effects/EffectObsidian.java
new file mode 100644
index 0000000..68c502d
--- /dev/null
+++ b/src/main/java/darkknight/jewelrycraft/effects/EffectObsidian.java
@@ -0,0 +1,102 @@
+package darkknight.jewelrycraft.effects;
+
+import net.minecraft.entity.Entity;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.init.Blocks;
+import net.minecraft.item.Item;
+import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.potion.Potion;
+import net.minecraft.potion.PotionEffect;
+import net.minecraft.util.DamageSource;
+import darkknight.jewelrycraft.api.ModifierEffects;
+import darkknight.jewelrycraft.damage.DamageSourceList;
+import darkknight.jewelrycraft.item.ItemBracelet;
+import darkknight.jewelrycraft.item.ItemEarrings;
+import darkknight.jewelrycraft.item.ItemNecklace;
+import darkknight.jewelrycraft.item.ItemRing;
+import darkknight.jewelrycraft.util.JewelryNBT;
+import darkknight.jewelrycraft.util.PlayerUtils;
+import darkknight.jewelrycraft.util.Variables;
+
+public class EffectObsidian extends ModifierEffects
+{
+ public EffectObsidian()
+ {
+ super(new ItemStack(Blocks.obsidian));
+ }
+
+ @Override
+ public void action(ItemStack item, EntityPlayer player, Item jewelry)
+ {
+ boolean exists = JewelryNBT.doesModifierExist(item, modifier);
+ NBTTagCompound playerInfo = PlayerUtils.getModPlayerPersistTag(player, Variables.MODID);
+ if (jewelry instanceof ItemNecklace && exists){
+ // Positive necklace
+ player.addPotionEffect(new PotionEffect(Potion.resistance.id, 60, 2, true));
+ // Negative necklace
+ if (player.isInWater() && !player.capabilities.isCreativeMode){
+ double slowAmount = 0.2D + (JewelryNBT.numberOfModifiers(item) - 1) * 0.05D;
+ player.motionX *= slowAmount;
+ player.motionY *= slowAmount;
+ player.motionZ *= slowAmount;
+ player.motionY = -0.5D;
+ if (rand.nextInt(50) == 0) player.attackEntityFrom(DamageSourceList.weak, 2F);
+ }
+ }
+ // Negative bracelet
+ if (jewelry instanceof ItemBracelet && exists && playerInfo.hasKey("falls") && playerInfo.getInteger("falls") >= 300) player.addPotionEffect(new PotionEffect(Potion.moveSlowdown.id, 60, 1, true));
+ // Negative ring
+ if (jewelry instanceof ItemRing && exists && playerInfo.hasKey("strikes") && playerInfo.getInteger("strikes") >= 200){
+ player.addPotionEffect(new PotionEffect(Potion.weakness.id, 60, 0, true));
+ player.addPotionEffect(new PotionEffect(Potion.digSlowdown.id, 60, 1, true));
+ }
+ }
+
+ @Override
+ public void onPlayerAttacked(ItemStack item, EntityPlayer player, DamageSource source, Item jewelry, float amount)
+ {
+ boolean exists = JewelryNBT.doesModifierExist(item, modifier);
+ NBTTagCompound playerInfo = PlayerUtils.getModPlayerPersistTag(player, Variables.MODID);
+ if (jewelry instanceof ItemEarrings && exists && (source == DamageSource.anvil || source.damageType.equals("arrow"))){
+ if (playerInfo.hasKey("protected")) playerInfo.setInteger("protected", playerInfo.getInteger("protected") + 1);
+ else playerInfo.setInteger("protected", 1);
+ // Positive && Negative earrings
+ if (playerInfo.getInteger("protected") < 200) playerInfo.setBoolean("negateDamage", true);
+ else player.attackEntityFrom(DamageSourceList.weak, player.getHealth() * 3F);
+ }
+ if (jewelry instanceof ItemBracelet && exists && source == DamageSource.fall){
+ if (playerInfo.hasKey("falls")) playerInfo.setInteger("falls", playerInfo.getInteger("falls") + 1);
+ else playerInfo.setInteger("falls", 1);
+ // Positive bracelet
+ if (playerInfo.getInteger("falls") < 300) playerInfo.setBoolean("negateDamage", true);
+ }
+ }
+
+ public void onPlayerDead(ItemStack item, EntityPlayer player, DamageSource source, Item jewelry)
+ {
+ NBTTagCompound playerInfo = PlayerUtils.getModPlayerPersistTag(player, Variables.MODID);
+ playerInfo.setInteger("falls", 0);
+ playerInfo.setInteger("strikes", 0);
+ playerInfo.setInteger("protected", 0);
+ }
+
+ public void onEntityAttacked(ItemStack item, EntityPlayer player, Entity target, Item jewelry, float amount)
+ {
+ boolean exists = JewelryNBT.doesModifierExist(item, modifier);
+ NBTTagCompound playerInfo = PlayerUtils.getModPlayerPersistTag(player, Variables.MODID);
+ NBTTagCompound enemyData = target.getEntityData();
+ // Positive ring
+ if (jewelry instanceof ItemRing && exists && playerInfo.getInteger("strikes") < 200 && !player.worldObj.isRemote){
+ if (enemyData.getInteger("reAttacked") == 0){
+ if (playerInfo.hasKey("strikes")) playerInfo.setInteger("strikes", playerInfo.getInteger("strikes") + 1);
+ else playerInfo.setInteger("strikes", 1);
+ // Negative ring
+ enemyData.setInteger("reAttacked", enemyData.getInteger("reAttacked") + 1);
+ target.attackEntityFrom(DamageSource.causePlayerDamage(player), amount * 2F);
+ playerInfo.setBoolean("weakDamage", true);
+ }
+ if (enemyData.getInteger("reAttacked") == 1) enemyData.setInteger("reAttacked", 0);
+ }
+ }
+}
diff --git a/src/main/java/darkknight/jewelrycraft/effects/EffectsList.java b/src/main/java/darkknight/jewelrycraft/effects/EffectsList.java
index b30fa0c..b49d647 100644
--- a/src/main/java/darkknight/jewelrycraft/effects/EffectsList.java
+++ b/src/main/java/darkknight/jewelrycraft/effects/EffectsList.java
@@ -5,19 +5,17 @@ import darkknight.jewelrycraft.api.ModifierEffects;
public class EffectsList
{
- private static ModifierEffects blazePowder, enderEye, feather;
- private static boolean isInitialized = false;
+ private static ModifierEffects blazePowder, enderEye, feather, enderPearl, obsidian;
/**
* @param e
*/
public static void postInit(FMLPostInitializationEvent e)
{
- if (!isInitialized){
- blazePowder = new EffectBlazePowder();
- enderEye = new EffectEnderEye();
- feather = new EffectFeather();
- isInitialized = true;
- }
+ blazePowder = new EffectBlazePowder();
+ enderEye = new EffectEnderEye();
+ feather = new EffectFeather();
+ enderPearl = new EffectEnderPearl();
+ obsidian = new EffectObsidian();
}
}
diff --git a/src/main/java/darkknight/jewelrycraft/events/BlockEventHandler.java b/src/main/java/darkknight/jewelrycraft/events/BlockEventHandler.java
index 3cd8084..a5ae240 100644
--- a/src/main/java/darkknight/jewelrycraft/events/BlockEventHandler.java
+++ b/src/main/java/darkknight/jewelrycraft/events/BlockEventHandler.java
@@ -4,14 +4,19 @@
package darkknight.jewelrycraft.events;
import net.minecraft.entity.item.EntityItem;
+import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Items;
import net.minecraft.item.ItemPickaxe;
import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.world.World;
import net.minecraftforge.event.world.BlockEvent;
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
+import darkknight.jewelrycraft.api.Curse;
import darkknight.jewelrycraft.block.BlockMidasTouch;
import darkknight.jewelrycraft.tileentity.TileEntityMidasTouch;
+import darkknight.jewelrycraft.util.PlayerUtils;
+import darkknight.jewelrycraft.util.Variables;
/**
* @author Sorin
@@ -21,10 +26,26 @@ public class BlockEventHandler
@SubscribeEvent
public void onBlockDestroyed(BlockEvent.BreakEvent event)
{
- ItemStack item = event.getPlayer().inventory.getCurrentItem();
- if (event.block instanceof BlockMidasTouch && item != null && item.getItem().getHarvestLevel(item, "pickaxe") >= event.block.getHarvestLevel(event.blockMetadata)){
- TileEntityMidasTouch te = (TileEntityMidasTouch)event.world.getTileEntity(event.x, event.y, event.z);
- if (te.target != null) dropItem(te.getWorldObj(), te.xCoord, te.yCoord, te.zCoord, new ItemStack(Items.gold_nugget, (int)(te.target.width * te.target.height * 100), 0));
+ if (event.getPlayer() != null){
+ ItemStack item = event.getPlayer().inventory.getCurrentItem();
+ if (event.block instanceof BlockMidasTouch && item != null && item.getItem().getHarvestLevel(item, "pickaxe") >= event.block.getHarvestLevel(event.blockMetadata)){
+ TileEntityMidasTouch te = (TileEntityMidasTouch)event.world.getTileEntity(event.x, event.y, event.z);
+ if (te.target != null) dropItem(te.getWorldObj(), te.xCoord, te.yCoord, te.zCoord, new ItemStack(Items.gold_nugget, (int)(te.target.width * te.target.height * 100), 0));
+ }
+ NBTTagCompound playerInfo = PlayerUtils.getModPlayerPersistTag(event.getPlayer(), Variables.MODID);
+ for(Curse curse: Curse.getCurseList())
+ if (playerInfo.getInteger(curse.getName()) > 0) curse.onBlockDestroyed(event.getPlayer(), event);
+ }
+ }
+
+ @SubscribeEvent
+ public void onBlockItemsDrop(BlockEvent.HarvestDropsEvent event)
+ {
+ EntityPlayer player = event.harvester;
+ if (player != null){
+ NBTTagCompound playerInfo = PlayerUtils.getModPlayerPersistTag(player, Variables.MODID);
+ for(Curse curse: Curse.getCurseList())
+ if (playerInfo.getInteger(curse.getName()) > 0) curse.onBlockItemsDrop(player, event);
}
}
diff --git a/src/main/java/darkknight/jewelrycraft/events/EntityEventHandler.java b/src/main/java/darkknight/jewelrycraft/events/EntityEventHandler.java
index 61d0955..9b6e9c7 100644
--- a/src/main/java/darkknight/jewelrycraft/events/EntityEventHandler.java
+++ b/src/main/java/darkknight/jewelrycraft/events/EntityEventHandler.java
@@ -381,6 +381,12 @@ public class EntityEventHandler
for(Curse curse: Curse.getCurseList())
if (playerInfo.getInteger(curse.getName()) > 0) curse.playerDeathAction(player.worldObj, player);
+ 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 (item != null) ((ItemBaseJewelry)item.getItem()).onPlayerDead(item, player, event.source);
+ }
}
if (event.entity instanceof EntityPlayer && !(event.entity instanceof EntityPlayerMP)) JewelrycraftMod.netWrapper.sendToServer(new PacketRequestPlayerInfo());
}
diff --git a/src/main/java/darkknight/jewelrycraft/events/ScreenHandler.java b/src/main/java/darkknight/jewelrycraft/events/ScreenHandler.java
index 88ce504..badbfa9 100644
--- a/src/main/java/darkknight/jewelrycraft/events/ScreenHandler.java
+++ b/src/main/java/darkknight/jewelrycraft/events/ScreenHandler.java
@@ -51,7 +51,7 @@ public class ScreenHandler extends Gui
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
GL11.glDisable(GL11.GL_LIGHTING);
GL11.glScalef(0.45f, 0.45f, 0.0f);
- drawTexturedModalRect(28, 18 + (size + 26) * count, tag % size * size, tag / size * size, size, size);
+ drawTexturedModalRect(28, 18 + (size + 26) * count, tag % 8 * size, tag / 8 * size, size, size);
GL11.glPopMatrix();
count++;
}
diff --git a/src/main/java/darkknight/jewelrycraft/item/ItemBaseJewelry.java b/src/main/java/darkknight/jewelrycraft/item/ItemBaseJewelry.java
index bbd247c..0d97e22 100644
--- a/src/main/java/darkknight/jewelrycraft/item/ItemBaseJewelry.java
+++ b/src/main/java/darkknight/jewelrycraft/item/ItemBaseJewelry.java
@@ -258,4 +258,10 @@ public abstract class ItemBaseJewelry extends Item
{
for(ModifierEffects mod: ModifierEffects.getEffects()) mod.onEntityAttacked(item, player, target, this, amount);
}
+
+ public void onPlayerDead(ItemStack stack, EntityPlayer player, DamageSource source)
+ {
+ for(ModifierEffects mod: ModifierEffects.getEffects())
+ mod.onPlayerDead(stack, player, source, this);
+ }
}
diff --git a/src/main/java/darkknight/jewelrycraft/item/render/ItemRender.java b/src/main/java/darkknight/jewelrycraft/item/render/ItemRender.java
index 36d6113..165624d 100644
--- a/src/main/java/darkknight/jewelrycraft/item/render/ItemRender.java
+++ b/src/main/java/darkknight/jewelrycraft/item/render/ItemRender.java
@@ -580,7 +580,7 @@ public class ItemRender implements IItemRenderer
if (autoAnimate) GL11.glTranslatef(17F, 0.0F, 0.0F);
else{
GL11.glTranslatef(tran, 0.0F, 0.0F);
- tran+=0.0001F;
+ tran+=0.0004F;
if(tran >= 360F) tran = 0F;
}
GL11.glRotatef(-30.0F, 0.0F, 0.0F, 1.0F);
diff --git a/src/main/java/darkknight/jewelrycraft/tileentity/renders/TileEntityMidasTouchRender.java b/src/main/java/darkknight/jewelrycraft/tileentity/renders/TileEntityMidasTouchRender.java
index bac8e8e..286780f 100644
--- a/src/main/java/darkknight/jewelrycraft/tileentity/renders/TileEntityMidasTouchRender.java
+++ b/src/main/java/darkknight/jewelrycraft/tileentity/renders/TileEntityMidasTouchRender.java
@@ -1,9 +1,9 @@
package darkknight.jewelrycraft.tileentity.renders;
-import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.entity.RenderManager;
import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
import net.minecraft.entity.EntityLiving;
+import net.minecraft.entity.passive.EntityPig;
import net.minecraft.tileentity.TileEntity;
import org.lwjgl.opengl.GL11;
import darkknight.jewelrycraft.tileentity.TileEntityMidasTouch;
@@ -22,6 +22,11 @@ public class TileEntityMidasTouchRender extends TileEntitySpecialRenderer
GL11.glColor3f(1.0F, 1.0F, 0.0F);
RenderManager.instance.renderEntityWithPosYaw(target, midas.xCoord - RenderManager.instance.renderPosX, midas.yCoord - RenderManager.instance.renderPosY, midas.zCoord - RenderManager.instance.renderPosZ, 0F, 1F);
}
+ else{
+ GL11.glTranslatef(0.5F, 0.0F, 0.5F);
+ GL11.glColor3f(1.0F, 1.0F, 0.0F);
+ RenderManager.instance.renderEntityWithPosYaw(new EntityPig(te.getWorldObj()), midas.xCoord - RenderManager.instance.renderPosX, midas.yCoord - RenderManager.instance.renderPosY, midas.zCoord - RenderManager.instance.renderPosZ, 0F, 1F);
+ }
GL11.glPopMatrix();
}
}