aboutsummaryrefslogtreecommitdiff
path: root/src/Java/gtPlusPlus/core
diff options
context:
space:
mode:
Diffstat (limited to 'src/Java/gtPlusPlus/core')
-rw-r--r--src/Java/gtPlusPlus/core/item/ModItems.java9
-rw-r--r--src/Java/gtPlusPlus/core/item/general/books/ItemBaseBook.java79
-rw-r--r--src/Java/gtPlusPlus/core/lib/CORE.java4
-rw-r--r--src/Java/gtPlusPlus/core/util/Utils.java60
-rw-r--r--src/Java/gtPlusPlus/core/util/nbt/NBTUtils.java10
5 files changed, 159 insertions, 3 deletions
diff --git a/src/Java/gtPlusPlus/core/item/ModItems.java b/src/Java/gtPlusPlus/core/item/ModItems.java
index 3cea650970..0f25481831 100644
--- a/src/Java/gtPlusPlus/core/item/ModItems.java
+++ b/src/Java/gtPlusPlus/core/item/ModItems.java
@@ -24,6 +24,7 @@ import gtPlusPlus.core.item.bauble.ModularBauble;
import gtPlusPlus.core.item.chemistry.CoalTar;
import gtPlusPlus.core.item.effects.RarityUncommon;
import gtPlusPlus.core.item.general.*;
+import gtPlusPlus.core.item.general.books.ItemBaseBook;
import gtPlusPlus.core.item.general.chassis.*;
import gtPlusPlus.core.item.general.throwables.ItemHydrofluoricAcidPotion;
import gtPlusPlus.core.item.general.throwables.ItemSulfuricAcidPotion;
@@ -43,6 +44,7 @@ import gtPlusPlus.core.util.debug.DEBUG_INIT;
import gtPlusPlus.core.util.fluid.FluidUtils;
import gtPlusPlus.core.util.item.ItemUtils;
import gtPlusPlus.core.util.materials.MaterialUtils;
+import net.minecraft.block.Block;
import net.minecraft.item.*;
import net.minecraft.item.Item.ToolMaterial;
import net.minecraft.util.EnumChatFormatting;
@@ -50,6 +52,7 @@ import net.minecraftforge.common.util.EnumHelper;
import net.minecraftforge.fluids.Fluid;
public final class ModItems {
+
public static ToolMaterial STABALLOY = EnumHelper.addToolMaterial("Staballoy", 3, 2500, 7, 1.0F, 18);
public static Item ZZZ_Empty;
@@ -236,9 +239,7 @@ public final class ModItems {
public static Item itemHydrofluoricPotion;
public static Item itemModularBauble;
-
-
-
+ public static Item itemCustomBook;
public static final void init(){
@@ -306,6 +307,8 @@ public final class ModItems {
itemHydrofluoricPotion = new ItemHydrofluoricAcidPotion("itemHydrofluoricPotion", "Thowable Vial of Hydrofluoric Acid", "They won't see this coming, nor anything after!").setTextureName(CORE.MODID + ":itemPotion");
//Start meta Item Generation
ItemsFoods.load();
+
+ itemCustomBook = new ItemBaseBook();
try{
diff --git a/src/Java/gtPlusPlus/core/item/general/books/ItemBaseBook.java b/src/Java/gtPlusPlus/core/item/general/books/ItemBaseBook.java
new file mode 100644
index 0000000000..c7bf2e821e
--- /dev/null
+++ b/src/Java/gtPlusPlus/core/item/general/books/ItemBaseBook.java
@@ -0,0 +1,79 @@
+package gtPlusPlus.core.item.general.books;
+
+import java.util.List;
+
+import gtPlusPlus.core.creative.AddToCreativeTab;
+import gtPlusPlus.core.lib.CORE;
+import gtPlusPlus.core.util.Utils;
+import gtPlusPlus.core.util.nbt.NBTUtils;
+import net.minecraft.creativetab.CreativeTabs;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.item.Item;
+import net.minecraft.item.ItemStack;
+import net.minecraft.item.ItemWritableBook;
+
+public class ItemBaseBook extends ItemWritableBook{
+
+ public ItemBaseBook(){
+ this.setCreativeTab(AddToCreativeTab.tabMisc);
+ this.setMaxStackSize(1);
+ this.setNoRepair();
+ this.setMaxDamage(Short.MAX_VALUE);
+ this.setTextureName(CORE.MODID+":"+"itemBook");
+ }
+
+ @Override
+ public void getSubItems(Item item, CreativeTabs tab, List list) {
+ for (int i = 0; i < Utils.getBookCount(); i ++) {
+ list.add(new ItemStack(item, 1, i));
+ }
+ }
+
+ @Override
+ public String getItemStackDisplayName(final ItemStack tItem) {
+ if (NBTUtils.hasKey(tItem, "mMeta")){
+ return NBTUtils.getBookTitle(tItem);
+ }
+ return "GT++ Storybook";
+ }
+
+ @Override
+ public boolean isDamageable() {
+ return false;
+ }
+
+ @Override
+ public void addInformation(ItemStack p_77624_1_, EntityPlayer p_77624_2_, List p_77624_3_, boolean p_77624_4_) {
+ // TODO Auto-generated method stub
+ super.addInformation(p_77624_1_, p_77624_2_, p_77624_3_, p_77624_4_);
+ }
+
+ @Override
+ public boolean isRepairable() {
+ return false;
+ }
+
+ @Override
+ public int getDamage(ItemStack stack) {
+ if (NBTUtils.hasKey(stack, "mMeta")){
+ return NBTUtils.getInteger(stack, "mMeta");
+ }
+ return 0;
+ }
+
+ @Override
+ public int getDisplayDamage(ItemStack stack) {
+ return 0;
+ }
+
+ @Override
+ public boolean showDurabilityBar(ItemStack stack) {
+ return false;
+ }
+
+ @Override
+ public void setDamage(ItemStack stack, int damage) {
+ NBTUtils.setInteger(stack, "mMeta", damage);
+ }
+
+}
diff --git a/src/Java/gtPlusPlus/core/lib/CORE.java b/src/Java/gtPlusPlus/core/lib/CORE.java
index b2e752f7e4..95c4c7e84a 100644
--- a/src/Java/gtPlusPlus/core/lib/CORE.java
+++ b/src/Java/gtPlusPlus/core/lib/CORE.java
@@ -1,6 +1,7 @@
package gtPlusPlus.core.lib;
import java.util.*;
+import java.util.concurrent.ConcurrentHashMap;
import com.mojang.authlib.GameProfile;
@@ -74,6 +75,9 @@ public class CORE {
public static final Map<UUID, Map<Integer, GT_MetaTileEntity_TesseractGenerator>> sTesseractGeneratorOwnershipMap = new HashMap<UUID, Map<Integer, GT_MetaTileEntity_TesseractGenerator>>();
public static final Map<UUID, Map<Integer, GT_MetaTileEntity_TesseractTerminal>> sTesseractTerminalOwnershipMap = new HashMap<UUID, Map<Integer, GT_MetaTileEntity_TesseractTerminal>>();
+ //Book List
+ public static final Map<String, ItemStack> sBookList = new ConcurrentHashMap<String, ItemStack>();
+
/**
* File Paths and Resource Paths
*/
diff --git a/src/Java/gtPlusPlus/core/util/Utils.java b/src/Java/gtPlusPlus/core/util/Utils.java
index 72124afae9..4d15c48097 100644
--- a/src/Java/gtPlusPlus/core/util/Utils.java
+++ b/src/Java/gtPlusPlus/core/util/Utils.java
@@ -13,24 +13,34 @@ import org.apache.logging.log4j.Logger;
import cpw.mods.fml.common.FMLCommonHandler;
import cpw.mods.fml.common.FMLLog;
import cpw.mods.fml.relauncher.FMLRelaunchLog;
+import gregtech.api.GregTech_API;
import gregtech.api.enums.Materials;
import gregtech.api.enums.TC_Aspects;
import gregtech.api.enums.TC_Aspects.TC_AspectStack;
+import gregtech.api.util.GT_LanguageManager;
+import gregtech.api.util.GT_Log;
+import gregtech.api.util.GT_Utility;
import gtPlusPlus.GTplusplus;
+import gtPlusPlus.core.item.ModItems;
import gtPlusPlus.core.lib.CORE;
import gtPlusPlus.core.material.Material;
import gtPlusPlus.core.proxy.ClientProxy;
import gtPlusPlus.core.util.fluid.FluidUtils;
import gtPlusPlus.core.util.item.ItemUtils;
import gtPlusPlus.core.util.math.MathUtils;
+import gtPlusPlus.core.util.nbt.NBTUtils;
import ic2.core.Ic2Items;
import ic2.core.init.InternalName;
import ic2.core.item.resources.ItemCell;
import net.minecraft.block.Block;
import net.minecraft.client.Minecraft;
import net.minecraft.entity.Entity;
+import net.minecraft.init.Items;
import net.minecraft.item.Item.ToolMaterial;
import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.nbt.NBTTagList;
+import net.minecraft.nbt.NBTTagString;
import net.minecraft.server.MinecraftServer;
import net.minecraft.util.ChatComponentText;
import net.minecraft.util.IChatComponent;
@@ -756,6 +766,56 @@ public class Utils {
}
}
+
+ private static int sBookCount = 0;
+ public static int getBookCount(){
+ return sBookCount;
+ }
+ public static ItemStack getWrittenBook(String aMapping, String aTitle, String aAuthor, String[] aPages) {
+ if (GT_Utility.isStringInvalid(aMapping))
+ return null;
+ ItemStack rStack = (ItemStack) CORE.sBookList.get(aMapping);
+ if (rStack != null)
+ return GT_Utility.copyAmount(1L, new Object[]{rStack});
+ if ((GT_Utility.isStringInvalid(aTitle)) || (GT_Utility.isStringInvalid(aAuthor)) || (aPages.length <= 0))
+ return null;
+ sBookCount += 1;
+ rStack = new ItemStack(ModItems.itemCustomBook, 1);
+ NBTTagCompound tNBT = new NBTTagCompound();
+ tNBT.setString("title", GT_LanguageManager.addStringLocalization(
+ new StringBuilder().append("Book.").append(aTitle).append(".Name").toString(), aTitle));
+ tNBT.setString("author", aAuthor);
+ NBTTagList tNBTList = new NBTTagList();
+ for (byte i = 0; i < aPages.length; i = (byte) (i + 1)) {
+ aPages[i] = GT_LanguageManager.addStringLocalization(
+ new StringBuilder().append("Book.").append(aTitle).append(".Page").append((i < 10)
+ ? new StringBuilder().append("0").append(i).toString()
+ : Byte.valueOf(i)).toString(),
+ aPages[i]);
+ if (i < 48) {
+ if (aPages[i].length() < 256)
+ tNBTList.appendTag(new NBTTagString(aPages[i]));
+ else
+ GT_Log.err.println(new StringBuilder().append("WARNING: String for written Book too long! -> ")
+ .append(aPages[i]).toString());
+ } else {
+ GT_Log.err.println(new StringBuilder().append("WARNING: Too much Pages for written Book! -> ")
+ .append(aTitle).toString());
+ break;
+ }
+ }
+ tNBTList.appendTag(new NBTTagString(new StringBuilder().append("Credits to ").append(aAuthor)
+ .append(" for writing this Book. This was Book Nr. ").append(sBookCount)
+ .append(" at its creation. Gotta get 'em all!").toString()));
+ tNBT.setTag("pages", tNBTList);
+ rStack.setTagCompound(tNBT);
+ GT_Log.out.println(new StringBuilder().append("GT_Mod: Added Book to Book List - Mapping: '").append(aMapping)
+ .append("' - Name: '").append(aTitle).append("' - Author: '").append(aAuthor).append("'")
+ .toString());
+ NBTUtils.setInteger(rStack, "mMeta", sBookCount);
+ CORE.sBookList.put(aMapping, rStack);
+ return GT_Utility.copy(new Object[]{rStack});
+ }
}
diff --git a/src/Java/gtPlusPlus/core/util/nbt/NBTUtils.java b/src/Java/gtPlusPlus/core/util/nbt/NBTUtils.java
index b023c64c77..3005c53f1b 100644
--- a/src/Java/gtPlusPlus/core/util/nbt/NBTUtils.java
+++ b/src/Java/gtPlusPlus/core/util/nbt/NBTUtils.java
@@ -250,4 +250,14 @@ public class NBTUtils {
return tNBT.getString(TAG_SOULBIND);
}
+ public static boolean hasKey(ItemStack stack, String key){
+ if (stack.hasTagCompound()) {
+ final NBTTagCompound itemData = stack.getTagCompound();
+ if (itemData.hasKey(key)){
+ return true;
+ }
+ }
+ return false;
+ }
+
}