Skip to content

Commit

Permalink
devperks update
Browse files Browse the repository at this point in the history
  • Loading branch information
dries007 committed Nov 3, 2014
1 parent ef5eed0 commit 0fc2dc7
Showing 1 changed file with 40 additions and 13 deletions.
53 changes: 40 additions & 13 deletions src/main/java/net/doubledoordev/d3core/util/DevPerks.java
Expand Up @@ -30,6 +30,7 @@

package net.doubledoordev.d3core.util;

import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import cpw.mods.fml.common.FMLCommonHandler;
Expand All @@ -39,6 +40,9 @@
import net.doubledoordev.d3core.D3Core;
import net.minecraft.entity.item.EntityItem;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.nbt.NBTTagList;
import net.minecraft.nbt.NBTTagString;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.event.entity.player.PlayerDropsEvent;
import net.minecraftforge.event.entity.player.PlayerEvent;
Expand Down Expand Up @@ -68,6 +72,35 @@ public DevPerks()
}
}

public static ItemStack getItemStackFromJson(JsonObject data, int defaultMeta, int defaultStacksize)
{
int meta = data.has("meta") ? data.get("meta").getAsInt() : defaultMeta;
int size = data.has("size") ? data.get("size").getAsInt() : defaultStacksize;
ItemStack stack = new ItemStack(GameData.getItemRegistry().getObject(data.get("name").getAsString()), size, meta);
if (data.has("display")) stack.setStackDisplayName(data.get("display").getAsString());
if (data.has("color"))
{
NBTTagCompound root = stack.getTagCompound();
if (root == null) root = new NBTTagCompound();
NBTTagCompound display = root.getCompoundTag("display");
display.setInteger("color", data.get("color").getAsInt());
root.setTag("display", display);
stack.setTagCompound(root);
}
if (data.has("lore"))
{
NBTTagCompound root = stack.getTagCompound();
if (root == null) root = new NBTTagCompound();
NBTTagCompound display = root.getCompoundTag("display");
NBTTagList lore = new NBTTagList();
for (JsonElement element : data.getAsJsonArray("lore")) lore.appendTag(new NBTTagString(element.getAsString()));
display.setTag("Lore", lore);
root.setTag("display", display);
stack.setTagCompound(root);
}
return stack;
}

/**
* Something other than capes for once
*/
Expand All @@ -83,10 +116,9 @@ public void nameFormatEvent(PlayerEvent.NameFormat event)
if (perk.has("displayname")) event.displayname = perk.get("displayname").getAsString();
if (perk.has("hat") && (event.entityPlayer.inventory.armorInventory[3] == null || event.entityPlayer.inventory.armorInventory[3].stackSize == 0))
{
JsonObject hat = perk.getAsJsonObject("hat");
String name = hat.get("name").getAsString();
int meta = hat.has("meta") ? hat.get("meta").getAsInt() : 0;
event.entityPlayer.inventory.armorInventory[3] = new ItemStack(GameData.getItemRegistry().getObject(name), 0, meta);
ItemStack hat = getItemStackFromJson(perk.getAsJsonObject("hat"), 0, 0);
hat.stackSize = 0;
event.entityPlayer.inventory.armorInventory[3] = hat;
}
}
}
Expand All @@ -107,10 +139,9 @@ public void cloneEvent(PlayerEvent.Clone event)
JsonObject perk = perks.getAsJsonObject(event.original.getCommandSenderName());
if (perk.has("hat") && (event.entityPlayer.inventory.armorInventory[3] == null || event.entityPlayer.inventory.armorInventory[3].stackSize == 0))
{
JsonObject hat = perk.getAsJsonObject("hat");
String name = hat.get("name").getAsString();
int meta = hat.has("meta") ? hat.get("meta").getAsInt() : 0;
event.entityPlayer.inventory.armorInventory[3] = new ItemStack(GameData.getItemRegistry().getObject(name), 0, meta);
ItemStack hat = getItemStackFromJson(perk.getAsJsonObject("hat"), 0, 0);
hat.stackSize = 0;
event.entityPlayer.inventory.armorInventory[3] = hat;
}
}
}
Expand All @@ -131,11 +162,7 @@ public void deathEvent(PlayerDropsEvent event)
JsonObject perk = perks.getAsJsonObject(event.entityPlayer.getCommandSenderName());
if (perk.has("drop"))
{
JsonObject drop = perk.getAsJsonObject("drop");
String name = drop.get("name").getAsString();
int meta = drop.has("meta") ? drop.get("meta").getAsInt() : 0;
int size = drop.has("size") ? drop.get("size").getAsInt() : 1;
event.drops.add(new EntityItem(event.entityPlayer.getEntityWorld(), event.entityPlayer.posX, event.entityPlayer.posY, event.entityPlayer.posZ, new ItemStack(GameData.getItemRegistry().getObject(name), size, meta)));
event.drops.add(new EntityItem(event.entityPlayer.getEntityWorld(), event.entityPlayer.posX, event.entityPlayer.posY, event.entityPlayer.posZ, getItemStackFromJson(perk.getAsJsonObject("drop"), 0, 1)));
}
}
}
Expand Down

0 comments on commit 0fc2dc7

Please sign in to comment.