diff --git a/lang/en_US.xml b/lang/en_US.xml new file mode 100644 index 0000000..31bec94 --- /dev/null +++ b/lang/en_US.xml @@ -0,0 +1,191 @@ + + + + + Handful of Jelly Babies + Thaumium Scoop + Thaumium Grafter + + + Greatwood Planks + Greatwood Slab + Silverwood Planks + Silverwood Slab + + + Occult Comb + Otherworldy Comb + Papery Comb + Stark Comb + Airy Comb + Firey Comb + Watery Comb + Earthy Comb + Infused Comb + Memory Comb + Furtive Comb + + + Magic Wax + + + Enchanting Drop + Intellect Drop + + + Unusual Pollen + Phased Pollen + + + Dull Propolis + Breezey Propolis + Burning Propolis + Flowing Propolis + Stony Propolis + Infused Propolis + + + Lore Fragment + Aromatic Lump + Concentrated Compound + Crystalized %s Aspect + + + Magic Frame + Resilient Frame + Gentle Frame + Metabolic Frame + Necrotic Frame + Temporal Frame + + + Magic Capsule + Void Capsule + + + Empty + Water + Lava + Biomass + Empty + Oil + Fuel + Seed Oil + Honey + Juice + Ice + Milk + Acid + Poison + Liquid Nitrogen + Liquid DNA + Creosote Oil + Steam + + + Full Moon + Waning Gibbous + Waxing Gibbous + Waning Half + Waxing Half + Waning Crescent + Waxing Crescent + New Moon + + + Thaumaturge's Backpack + + + Esoteric + An unusual crossbreed which seems to have magical properties.|Apinomicon + Mysterious + These bees have been to the end of the world and back, and their power has grown.|Apinomicon + Arcane + "Their produce is charged with magic."|Azanor, Master Thaumaturge + Charmed + Your first experiments in Thaumaturgical Apiculture have yielded fruit. Buzzing fruit.|Apinomicon + Enchanted + Successive generations of Charmed bees have reinforced their connection to the unknown.|Apinomicon + Supernatural + These bees walk the line between this world and the unseen.|Apinomicon + Pupil + "What does that bee want with my paper?!|Yorae, Librarian + Scholarly + "I can't be sure, but I think they might be smarter than me..."|Yorae, Librarian + Savant + lim(x^(i / pi)/ log(e * 7 - ln(32/x^-pi))). Solve for honey.|Note found on Yorae's desk + Stark + "These are unusually attracted to shards. This warrents further investigation."|Azanor, Master Thaumaturge + Aura + "They work so fast it's breathtaking."|Sengir, Mad Apiarist + Ignis + Caution: Contents of hive extremely hot.|Warning label on Azanor's apiary + Aqua + "I tried to breed them once, but that was a wash."|MysteriousAges, Apprentice Thaumaturge + Solum + "You're really gonna dig these bees, but watch out - they bore quite easily."|MysteriousAges, Apprentice Comedian + Praecantatio + Beekeeping is magic!|Apinomicon, Preface + Aware + "They can see into your soul!"|Florastar, Expert Beekeeper + Vis + "They can feel changes in the aura, but are not yet able to affect it."|Azanor, research notes + Pure + "It's like a bee janitor!"|MysteriousAges, Thaumaturge + Flux + "I thought they would help clean up, but it only makes things worse!"|Kreicus, Apprentice Thaumaturge + Node + Having undergone a freak mutation, these bees now attract magic to them.|Apinomicon + Skulking + These bees have become xenophobic and bad-tempered. Use caution.|Apinomicon + Brainy + Their combs may be fetid and foul-smelling, but their intelligence is well-developed.|Apinomicon + Gossamer + As they work, they seem to fade out from light for brief moments.|Apinomicon + Wispy + Their language is garbled and unintelligible. It is probable they are speaking to unnatural beings.|Apinomicon + Batty + They tend to attract bats to their hives through means unknown.|Apinomicon + Ghastly + "*sigh*... Really, Myst?"|Taveria + Timely + "An apiarist is never late. He arrives precicely when he means to!"|Sengir, Mad Apiarist + Lordly + They live in peace, within the sight of the Eye of Harmony|Tattered Remains of ancient Apinomicon + Doctoral + "Would you like a Jelly Baby?"|Passing stranger with a great scarf and a blue box + + + Cleansing + Mining + Swiftness + Time Warp + Aura Attract + Brainy + Batty + Wispy + Ghastly + Books + Magic Flowers + Node + Purify Node + Fluxify Node + + + Arcane + + Supernatural + + Scholarly + + Thaumic + + Skulking + + Vis + + Time + + + + \ No newline at end of file diff --git a/thaumicbees_res/build.xml b/thaumicbees_res/build.xml index 2689bc4..b4be508 100644 --- a/thaumicbees_res/build.xml +++ b/thaumicbees_res/build.xml @@ -17,7 +17,7 @@ - + @@ -74,13 +74,14 @@ + - + @@ -88,7 +89,6 @@ - @@ -120,6 +120,7 @@ + @@ -134,12 +135,15 @@ - - + + + + + + + + + diff --git a/thaumicbees_res/changelog.txt b/thaumicbees_res/changelog.txt index b4022ef..43f416b 100644 --- a/thaumicbees_res/changelog.txt +++ b/thaumicbees_res/changelog.txt @@ -1,6 +1,16 @@ +1.4.3a +Changed Version info embedded in mod to match format supported by Version checking. Will need to make this more robust in the future. +Fixed bug with Thaumium Grafter not being enchantable. + +1.4.3 +Added automatic version-checking for ThaumicBees! From this version on, when a new version becomes available, it will notify you in-game. Notifications can be switched off via a config file option. +Fixed missing aspects on Extra Bees combs. + 1.4.2 -Added Void Capsules - hold up to 8 buckets of liquid with one! It's a waterproof bag of holding! +Added Void Capsules - hold up to 8 buckets of liquid with one! It's a waterproof bag of holding! Plus stacking. Fix: Added Greatwood & Silverwood slabs to the ore dictionary so they should work as normal. +Added Thaumium Scoop - 30 uses, can be enchanted with Repair. +Added Thaumium Grafter - 15 uses, can be enchanted with Repair. 1.4.1 Added Greatwood and Silverwood planks. Since Greatwood and Silverwood are tougher than other trees, you'll need some extra machinery. To obtain these, jam a log of the appropriate tree into a Forestry carpenter and provide a half bucket of water. @@ -15,6 +25,7 @@ Thaumaturge's Backpack now require Amber rather than Gold Nuggets. Due to popular complaint, the Bees & Magic node now requires Unified Thaumic Field Theory to unlock. Moving all kinds of string contstants out of code into Localization files. Also fixed crazy aspects showing up on things that shouldn't have those aspects. +ACTUALLY fixed issue with untyped node mutations failing. 1.3.0d Fixed an issue with mutations requiring a non-specific type of node to fail. diff --git a/thaumicbees_res/lang/thaumicbees/en_US.xml b/thaumicbees_res/lang/thaumicbees/en_US.xml index 8287645..31bec94 100644 --- a/thaumicbees_res/lang/thaumicbees/en_US.xml +++ b/thaumicbees_res/lang/thaumicbees/en_US.xml @@ -11,7 +11,6 @@ Greatwood Slab Silverwood Planks Silverwood Slab - Magic Apiary Occult Comb diff --git a/thaumicbees_res/mcmod.info b/thaumicbees_res/mcmod.info index c7f4d96..a9ea1bf 100644 --- a/thaumicbees_res/mcmod.info +++ b/thaumicbees_res/mcmod.info @@ -1,11 +1,12 @@ [ { "modid": "ThaumicBees", + "version": "@VERSION@ - @BUILD_NUMBER", "name": "ThaumicBees", "url": "http://bit.ly/XFDvLY", "description": "Crossover mod for Forestry and Thaumcraft. Magic bees & more.", "authors": [ "MysteriousAges" ], - "credits": "Thanks to Sengir and Azanor for awesome mods! Also thanks to Binnie and Florastar. (:", + "credits": "SirSengir, Azanor, Binnie & the Forestry Dev peeps", "logoFile": "/gfx/thaumicbees/logo.png" } ] \ No newline at end of file diff --git a/thaumicbees_src/thaumicbees/block/BlockMagicApiary.java b/thaumicbees_src/thaumicbees/block/BlockMagicApiary.java deleted file mode 100644 index 02a23ef..0000000 --- a/thaumicbees_src/thaumicbees/block/BlockMagicApiary.java +++ /dev/null @@ -1,73 +0,0 @@ -package thaumicbees.block; - -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import thaumicbees.main.CommonProxy; -import thaumicbees.block.TileEntityMagicApiary; -import net.minecraft.block.Block; -import net.minecraft.block.material.Material; -import net.minecraft.entity.EntityLiving; -import net.minecraft.item.ItemStack; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.world.IBlockAccess; -import net.minecraft.world.World; -import forestry.api.apiculture.IBee; -import forestry.api.apiculture.IBeeGenome; -import forestry.api.apiculture.IBeeHousing; -import forestry.api.core.EnumHumidity; -import forestry.api.core.EnumTemperature; - -public class BlockMagicApiary extends Block -{ - public BlockMagicApiary(int par1) - { - super(par1, Material.wood); - this.setTextureFile(CommonProxy.TCBEES_ITEMS_IMAGE); - this.setBlockName("Magic Apiary"); - this.blockIndexInTexture = 50; - this.setHardness(2f); - this.setResistance(5f); - } - - @Override - @SideOnly(Side.CLIENT) - public int getBlockTexture(IBlockAccess worldAccess, int x, int y, int z, int side) - { - int texture = 50; - if (side == 0) - { - texture = 51; - } - else if (side == 1) - { - TileEntityMagicApiary tileInfo = (TileEntityMagicApiary)worldAccess.getBlockTileEntity(x, y, z); - if (tileInfo != null && tileInfo.isMaster()) - { - texture = 52; - } - else - { - texture = 51; - } - } - return texture; - } - - public int getBlockTextureFromSideAndMetadata(int side, int meta) - { - int texture = 50; - if (side == 0 || side == 1) - { - texture = 51; - } - return texture; - } - - @Override - public void onBlockPlacedBy(World world, int x, int y, int z, EntityLiving entity) - { - super.onBlockPlacedBy(world, x, y, z, entity); - - // Validate block arrangement - } -} diff --git a/thaumicbees_src/thaumicbees/block/LogicMagicApiary.java b/thaumicbees_src/thaumicbees/block/LogicMagicApiary.java deleted file mode 100644 index f7fd94c..0000000 --- a/thaumicbees_src/thaumicbees/block/LogicMagicApiary.java +++ /dev/null @@ -1,273 +0,0 @@ -package thaumicbees.block; - -import java.util.ArrayList; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.nbt.NBTTagList; -import net.minecraft.world.World; -import net.minecraft.world.biome.BiomeGenBase; -import net.mysteriousages.utils.GenericInventory; -import forestry.api.apiculture.BeeManager; -import forestry.api.apiculture.IBee; -import forestry.api.apiculture.IBeeGenome; -import forestry.api.apiculture.IBeeHousing; -import forestry.api.apiculture.IBeekeepingLogic; -import forestry.api.core.EnumHumidity; -import forestry.api.core.EnumTemperature; -import thaumicbees.main.utils.compat.ForestryHelper; - -public class LogicMagicApiary implements IBeeHousing -{ - private TileEntityMagicApiary parent; - private String ownerName; - private BiomeGenBase biome; - private IBeekeepingLogic beeLogic; - private GenericInventory tileInventory; - private ArrayList inventoryOverflow; - - private static final int SLOT_ID_QUEEN = 0; - private static final int SLOT_ID_DRONE = 1; - private static final int SLOT_ID_FRAME = 2; - private static final int SLOT_LENGTH_FRAME = 2; - private static final int SLOT_ID_PRODUCE = 4; - private static final int SLOT_LENGTH_PRODUCE = 6; - - public LogicMagicApiary(TileEntityMagicApiary master) - { - this.parent = master; - this.beeLogic = BeeManager.breedingManager.createBeekeepingLogic(this); - this.tileInventory = new GenericInventory("MagicApiary", 11); - } - - public TileEntityMagicApiary getParent() - { - return parent; - } - - public void setOwner(EntityPlayer player) - { - this.ownerName = player.username; - } - - public String getOwner() - { - return this.ownerName; - } - - public void writeToNBT(NBTTagCompound tag) - { - NBTTagCompound beeTag = new NBTTagCompound(); - this.beeLogic.writeToNBT(beeTag); - tag.setTag("BeeLogic", beeTag); - tag.setString("Owner", this.ownerName); - NBTTagCompound inventory = new NBTTagCompound(); - this.tileInventory.writeToNBT(inventory); - tag.setTag("Inventory", inventory); - - if (this.inventoryOverflow.size() > 0) - { - NBTTagList overflow = new NBTTagList(); - for (int i = 0; i < this.inventoryOverflow.size(); ++i) - { - NBTTagCompound itemTag = new NBTTagCompound(); - this.inventoryOverflow.get(i).writeToNBT(itemTag); - overflow.appendTag(itemTag); - } - } - - } - - public void readFromNBT(NBTTagCompound tag) - { - - } - - @Override - public float getTerritoryModifier(IBeeGenome genome) - { - return 1f; - } - - @Override - public float getMutationModifier(IBeeGenome genome, IBeeGenome mate) - { - return 1f; - } - - @Override - public float getLifespanModifier(IBeeGenome genome, IBeeGenome mate) - { - return 1f; - } - - @Override - public float getProductionModifier(IBeeGenome genome) - { - return 2f; - } - - @Override - public float getFloweringModifier(IBeeGenome genome) - { - return 1f; - } - - @Override - public boolean isSealed() - { - return false; - } - - @Override - public boolean isSelfLighted() - { - return false; - } - - @Override - public boolean isSunlightSimulated() - { - return false; - } - - @Override - public boolean isHellish() - { - return false; - } - - @Override - public void onQueenChange(ItemStack queen) - { - // TODO Auto-generated method stub - - } - - @Override - public void wearOutEquipment(int amount) - { - // TODO Auto-generated method stub - - } - - @Override - public void onQueenDeath(IBee queen) - { - // TODO Auto-generated method stub - - } - - @Override - public void onPostQueenDeath(IBee queen) - { - // TODO Auto-generated method stub - - } - - @Override - public int getXCoord() - { - return parent.xCoord; - } - - @Override - public int getYCoord() - { - return parent.yCoord; - } - - @Override - public int getZCoord() - { - return parent.zCoord; - } - - @Override - public ItemStack getQueen() - { - // TODO Auto-generated method stub - return null; - } - - @Override - public ItemStack getDrone() - { - // TODO Auto-generated method stub - return null; - } - - @Override - public void setQueen(ItemStack itemstack) - { - // TODO Auto-generated method stub - - } - - @Override - public void setDrone(ItemStack itemstack) - { - // TODO Auto-generated method stub - - } - - @Override - public int getBiomeId() - { - return this.biome.biomeID; - } - - @Override - public EnumTemperature getTemperature() - { - return ForestryHelper.getEnumTemperatureFromValue(this.biome.temperature); - } - - @Override - public EnumHumidity getHumidity() - { - return ForestryHelper.getEnumHumidityFromValue(this.biome.rainfall); - } - - @Override - public World getWorld() - { - return this.getWorld(); - } - - @Override - public String getOwnerName() - { - return parent.getOwner(); - } - - @Override - public void setErrorState(int state) - { - // TODO Auto-generated method stub - - } - - @Override - public int getErrorOrdinal() - { - // TODO Auto-generated method stub - return 0; - } - - @Override - public boolean canBreed() - { - // TODO Auto-generated method stub - return false; - } - - @Override - public boolean addProduct(ItemStack product, boolean all) - { - // TODO Auto-generated method stub - return false; - } - -} diff --git a/thaumicbees_src/thaumicbees/block/TileEntityMagicApiary.java b/thaumicbees_src/thaumicbees/block/TileEntityMagicApiary.java deleted file mode 100644 index 73d1635..0000000 --- a/thaumicbees_src/thaumicbees/block/TileEntityMagicApiary.java +++ /dev/null @@ -1,97 +0,0 @@ -package thaumicbees.block; - -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.world.World; -import forestry.api.apiculture.IBee; -import forestry.api.apiculture.IBeeGenome; -import forestry.api.apiculture.IBeeHousing; -import forestry.api.core.EnumHumidity; -import forestry.api.core.EnumTemperature; - -public class TileEntityMagicApiary extends TileEntity -{ - private String owner; - private LogicMagicApiary logic; - private int masterX; - private int masterY; - private int masterZ; - - public TileEntityMagicApiary(World w) - { - this.setWorldObj(w); - } - - public void setValid(TileEntityMagicApiary masterEntity) - { - this.logic = masterEntity.logic; - this.masterX = masterEntity.xCoord; - this.masterY = masterEntity.yCoord; - this.masterZ = masterEntity.zCoord; - } - - public String getOwner() - { - return this.owner; - } - - public boolean isValidStructure() - { - return false; - } - - public boolean isMaster() - { - boolean flag = false; - - if (this.logic != null) - { - flag = this.logic.getParent() == this; - } - - return flag; - } - - public LogicMagicApiary getLogic() - { - return this.logic; - } - - @Override - public void readFromNBT(NBTTagCompound tagRoot) - { - super.readFromNBT(tagRoot); - this.owner = tagRoot.getString("Owner"); - if (tagRoot.hasKey("Logic")) - { - this.logic = new LogicMagicApiary(this); - this.logic.readFromNBT(tagRoot.getCompoundTag("Logic")); - } - else - { - this.masterX = tagRoot.getInteger("MasterX"); - this.masterY = tagRoot.getInteger("MasterY"); - this.masterZ = tagRoot.getInteger("MasterZ"); - } - } - - @Override - public void writeToNBT(NBTTagCompound tagRoot) - { - super.writeToNBT(tagRoot); - tagRoot.setString("Owner", this.owner); - if (this.isMaster()) - { - NBTTagCompound logicTag = new NBTTagCompound(); - this.logic.writeToNBT(logicTag); - tagRoot.setTag("Logic", logicTag); - } - else - { - tagRoot.setInteger("MasterX", this.masterX); - tagRoot.setInteger("MasterY", this.masterY); - tagRoot.setInteger("MasterZ", this.masterZ); - } - } -} diff --git a/thaumicbees_src/thaumicbees/item/ItemThaumiumGrafter.java b/thaumicbees_src/thaumicbees/item/ItemThaumiumGrafter.java index 5da5ebb..ae16fb7 100644 --- a/thaumicbees_src/thaumicbees/item/ItemThaumiumGrafter.java +++ b/thaumicbees_src/thaumicbees/item/ItemThaumiumGrafter.java @@ -16,15 +16,15 @@ import net.minecraftforge.common.ForgeHooks; public class ItemThaumiumGrafter extends Item implements IVisRepairable, IToolGrafter { - public ItemThaumiumGrafter(int id) { super(id); - this.setCreativeTab(forestry.api.core.Tabs.tabArboriculture); - this.setMaxDamage(25); - this.setTextureFile(CommonProxy.TCBEES_ITEMS_IMAGE); + this.setMaxStackSize(1); + this.setMaxDamage(15); this.setIconIndex(21); + this.setTextureFile(CommonProxy.TCBEES_ITEMS_IMAGE); this.setItemName("tb.thaumiumGrafter"); + this.setCreativeTab(forestry.api.core.Tabs.tabArboriculture); } @Override diff --git a/thaumicbees_src/thaumicbees/main/Config.java b/thaumicbees_src/thaumicbees/main/Config.java index 489c7bc..0f879b5 100644 --- a/thaumicbees_src/thaumicbees/main/Config.java +++ b/thaumicbees_src/thaumicbees/main/Config.java @@ -2,10 +2,8 @@ package thaumicbees.main; import java.io.File; -import thaumicbees.block.BlockMagicApiary; import thaumicbees.block.BlockPlanks; import thaumicbees.block.BlockWoodSlab; -import thaumicbees.block.TileEntityMagicApiary; import thaumicbees.item.ItemCapsule; import thaumicbees.item.ItemComb; import thaumicbees.item.ItemDrop; @@ -58,13 +56,13 @@ public class Config public boolean BeeInfusionsAdded; public boolean ExtraBeesInstalled; public boolean AddThaumcraftItemsToBackpacks; + public boolean SkipUpdateCheck; public String ThaumaturgeExtraItems; public int capsuleStackSizeMax; public static BlockPlanks planksWood; public static BlockWoodSlab slabWoodHalf; public static BlockWoodSlab slabWoodFull; - public static BlockMagicApiary magicApiary; public static ItemComb combs; public static ItemWax wax; @@ -162,14 +160,11 @@ public class Config OreDictionary.registerOre("slabWood", new ItemStack(slabWoodHalf, 1, -1)); blockIdBase++; // Stair - - /*magicApiary = new BlockMagicApiary(tbConfig.getBlock("magicApiary", blockIdBase++).getInt()); - GameRegistry.registerBlock(magicApiary, "tb.magicApiary");*/ } public void registerTileEntities() { - TileEntity.addMapping(TileEntityMagicApiary.class, "MagicApiary"); + } public void setupItems() @@ -270,6 +265,10 @@ public class Config p.comment = "Allows you to edit the stack size of the capsules in ThaumicBees if using GregTech, \n" + "or the reduced capsule size in Forestry & Railcraft. Default: 64"; this.capsuleStackSizeMax = p.getInt(); + + p = tbConfig.get("general", "disableVersionCheck", false); + p.comment = "Set to true to stop ThaumicBees from checking for updates."; + this.SkipUpdateCheck = p.getBoolean(false); } } diff --git a/thaumicbees_src/thaumicbees/main/ThaumicBees.java b/thaumicbees_src/thaumicbees/main/ThaumicBees.java index 3201716..c56b5cd 100644 --- a/thaumicbees_src/thaumicbees/main/ThaumicBees.java +++ b/thaumicbees_src/thaumicbees/main/ThaumicBees.java @@ -20,7 +20,7 @@ import forestry.api.core.ItemInterface; name="Thaumic Bees", useMetadata=true, acceptedMinecraftVersions=VersionInfo.MCVersion, - version=VersionInfo.Version, + version=VersionInfo.Version + " - " + VersionInfo.Build, dependencies=VersionInfo.Depends ) public class ThaumicBees @@ -91,6 +91,8 @@ public class ThaumicBees MinecraftForge.EVENT_BUS.register(this); CompatabilityManager.setupResearch(); + + VersionInfo.doVersionCheck(); } public static Config getConfig() diff --git a/thaumicbees_src/thaumicbees/main/utils/CompatabilityManager.java b/thaumicbees_src/thaumicbees/main/utils/CompatabilityManager.java index 1188f5d..0100583 100644 --- a/thaumicbees_src/thaumicbees/main/utils/CompatabilityManager.java +++ b/thaumicbees_src/thaumicbees/main/utils/CompatabilityManager.java @@ -24,6 +24,7 @@ import thaumicbees.item.types.WaxType; import thaumicbees.main.CommonProxy; import thaumicbees.main.Config; import thaumicbees.main.ThaumicBees; +import thaumicbees.main.utils.compat.ExtraBeesHelper; import thaumicbees.main.utils.compat.ForestryHelper; import thaumicbees.main.utils.compat.ThaumcraftHelper; import thaumicbees.main.utils.compat.ForestryHelper.CircuitBoard; @@ -51,6 +52,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.world.World; import net.minecraftforge.common.Property; import net.minecraftforge.common.Configuration; +import net.minecraftforge.oredict.OreDictionary; public class CompatabilityManager { @@ -158,17 +160,20 @@ public class CompatabilityManager tags = new ObjectTags().add(EnumTag.INSECT, 2).add(EnumTag.TRAP, 2); ThaumcraftApi.registerObjectTag(Config.combs.itemID, -1, tags); - - itemStack = Config.combs.getStackForType(CombType.OCCULT); - tags = new ObjectTags().add(EnumTag.INSECT, 2).add(EnumTag.TRAP, 2).add(EnumTag.MAGIC, 2); + tags = new ObjectTags(Config.combs.itemID, -1).add(EnumTag.MAGIC, 2); ThaumcraftApi.registerObjectTag(Config.combs.itemID, CombType.OCCULT.ordinal(), tags); ThaumcraftApi.registerObjectTag(Config.combs.itemID, CombType.OTHERWORLDLY.ordinal(), tags); ThaumcraftApi.registerObjectTag(Config.combs.itemID, CombType.STARK.ordinal(), tags); - ThaumcraftApi.registerObjectTag(Config.combs.itemID, CombType.AIRY.ordinal(), tags); - ThaumcraftApi.registerObjectTag(Config.combs.itemID, CombType.FIREY.ordinal(), tags); - ThaumcraftApi.registerObjectTag(Config.combs.itemID, CombType.WATERY.ordinal(), tags); - ThaumcraftApi.registerObjectTag(Config.combs.itemID, CombType.EARTHY.ordinal(), tags); + tags = new ObjectTags(Config.combs.itemID, -1).add(EnumTag.MAGIC, 4); ThaumcraftApi.registerObjectTag(Config.combs.itemID, CombType.INFUSED.ordinal(), tags); + tags = new ObjectTags(Config.combs.itemID, -1).add(EnumTag.MAGIC, 2).add(EnumTag.MOTION, 2); + ThaumcraftApi.registerObjectTag(Config.combs.itemID, CombType.AIRY.ordinal(), tags); + tags = new ObjectTags(Config.combs.itemID, -1).add(EnumTag.MAGIC, 2).add(EnumTag.POWER, 2); + ThaumcraftApi.registerObjectTag(Config.combs.itemID, CombType.FIREY.ordinal(), tags); + tags = new ObjectTags(Config.combs.itemID, -1).add(EnumTag.MAGIC, 2).add(EnumTag.COLD, 2); + ThaumcraftApi.registerObjectTag(Config.combs.itemID, CombType.WATERY.ordinal(), tags); + tags = new ObjectTags(Config.combs.itemID, -1).add(EnumTag.MAGIC, 2).add(EnumTag.ROCK, 2); + ThaumcraftApi.registerObjectTag(Config.combs.itemID, CombType.EARTHY.ordinal(), tags); // Tagging capsules. tags = new ObjectTags().add(EnumTag.VOID, 2).add(EnumTag.MAGIC, 2); @@ -403,6 +408,31 @@ public class CompatabilityManager { ItemStack itemStack; ObjectTags tags; + + try // One try block suffices. If we can't get one item, it's probably safe to assume we can't get any others. + { + itemStack = getExtraBeeItem("comb"); + tags = new ObjectTags().add(EnumTag.INSECT, 2).add(EnumTag.TRAP, 2); + ThaumcraftApi.registerObjectTag(itemStack.itemID, -1, tags); + tags = new ObjectTags(itemStack.itemID, -1).add(EnumTag.POWER, 2); + ThaumcraftApi.registerObjectTag(itemStack.itemID, ExtraBeesHelper.CombType.OIL.ordinal(), tags); + ThaumcraftApi.registerObjectTag(itemStack.itemID, ExtraBeesHelper.CombType.COAL.ordinal(), tags); + ThaumcraftApi.registerObjectTag(itemStack.itemID, ExtraBeesHelper.CombType.FUEL.ordinal(), tags); + ThaumcraftApi.registerObjectTag(itemStack.itemID, ExtraBeesHelper.CombType.ALCOHOL.ordinal(), tags); + ThaumcraftApi.registerObjectTag(itemStack.itemID, ExtraBeesHelper.CombType.REDSTONE.ordinal(), tags); + ThaumcraftApi.registerObjectTag(itemStack.itemID, ExtraBeesHelper.CombType.URANIUM.ordinal(), tags); + tags = new ObjectTags(itemStack.itemID, -1).add(EnumTag.POISON, 2); + ThaumcraftApi.registerObjectTag(itemStack.itemID, ExtraBeesHelper.CombType.VENOMOUS.ordinal(), tags); + + itemStack = getExtraBeeItem("propolis"); + tags = new ObjectTags().add(EnumTag.CONTROL, 1); + ThaumcraftApi.registerObjectTag(itemStack.itemID, -1, tags); + + itemStack = getExtraBeeItem("honeyDrop"); + tags = new ObjectTags().add(EnumTag.EXCHANGE, 2).add(EnumTag.LIFE, 1); + ThaumcraftApi.registerObjectTag(itemStack.itemID, -1, tags); + } + catch (NullPointerException e) { } } private static void setupItemAspectsOreDict() diff --git a/thaumicbees_src/thaumicbees/main/utils/TickHandlerVersion.java b/thaumicbees_src/thaumicbees/main/utils/TickHandlerVersion.java new file mode 100644 index 0000000..e47ed25 --- /dev/null +++ b/thaumicbees_src/thaumicbees/main/utils/TickHandlerVersion.java @@ -0,0 +1,102 @@ +package thaumicbees.main.utils; + +import java.util.ArrayList; +import java.util.EnumSet; + +import net.minecraft.entity.player.EntityPlayer; +import cpw.mods.fml.common.IScheduledTickHandler; +import cpw.mods.fml.common.TickType; + +public class TickHandlerVersion implements IScheduledTickHandler +{ + + public static TickHandlerVersion instance = new TickHandlerVersion(); + + private static ArrayList modVersionInfo = new ArrayList(); + private static boolean initialized; + private static boolean sent; + private static int modIndex = 0; + + public static boolean initialize() + { + if (initialized) + { + return false; + } + initialized = true; + return true; + } + + public static boolean isInitialized() + { + return initialized; + } + + public static boolean registerModVersionInfo(VersionInfo info) + { + if (modVersionInfo.contains(info)) + { + return false; + } + modVersionInfo.add(info); + return true; + } + + @Override + public void tickStart(EnumSet type, Object... tickData) + { + if (sent) + { + return; + } + + if (modIndex < modVersionInfo.size()) + { + VersionInfo anInfo = modVersionInfo.get(modIndex); + + if (anInfo.isNewVersionAvailable()) + { + EntityPlayer player = (EntityPlayer) tickData[0]; + player.sendChatToPlayer("[" + anInfo.modName + "] A new version is available: " + anInfo.getLatestVersion()); + player.sendChatToPlayer(anInfo.getVersionDescription()); + } + modIndex += 1; + } + else + { + sent = true; + } + } + + @Override + public void tickEnd(EnumSet type, Object... tickData) + { + + } + + @Override + public EnumSet ticks() + { + if (TickHandlerVersion.sent) + { + return EnumSet.noneOf(TickType.class); + } + return EnumSet.of(TickType.PLAYER); + } + + @Override + public String getLabel() + { + return "thaumicbees.version"; + } + + @Override + public int nextTickSpacing() + { + if (!sent) + { + return 200; + } + return 72000; + } +} \ No newline at end of file diff --git a/thaumicbees_src/thaumicbees/main/utils/VersionInfo.java b/thaumicbees_src/thaumicbees/main/utils/VersionInfo.java index a62062b..d7688f1 100644 --- a/thaumicbees_src/thaumicbees/main/utils/VersionInfo.java +++ b/thaumicbees_src/thaumicbees/main/utils/VersionInfo.java @@ -1,14 +1,254 @@ package thaumicbees.main.utils; +import java.io.BufferedReader; +import java.io.InputStreamReader; +import java.net.HttpURLConnection; +import java.net.URL; +import java.util.ArrayList; +import java.util.logging.Level; +import java.util.logging.Logger; + +import thaumicbees.main.ThaumicBees; + +import cpw.mods.fml.common.FMLLog; +import cpw.mods.fml.common.registry.TickRegistry; +import cpw.mods.fml.relauncher.Side; + +/** + * Using some of the VersionInfo code from cofh. (Thanks, Lemming!) + * @author MysteriousAges + * + */ public class VersionInfo { - public static final String Version = "@MODVERSION@"; - public static final String MCVersion = "@MCVERSION@"; + public static final String Version = "1.4.3"; public static final String Build = "@BUILD_NUMBER@"; - + public static final String MCVersion = "@MCVERSION@"; + public static final String VersionURL = "http://bit.ly/thaumicbeeversion"; + public static final String Logo = "/gfx/thaumicbees/logo.png"; - + public static final String Depends = "required-after:Forestry;required-after:Thaumcraft@[3.0.3,);after:ExtraBees"; + boolean criticalUpdate; + boolean newVersion; + boolean newMinecraftVersion; + boolean versionCheckComplete; + + String latestModVersion; + String latestMCVersion = MCVersion; + String description = ""; + + String modName; + String modVersion; + String releaseURL; + Logger modLogger = FMLLog.getLogger(); + + public static int[] parseVersion(String rawVersion) + { + ArrayList versionTokens = new ArrayList(); + String[] tokens = rawVersion.trim().split("\\."); + + for (int i = 0; i < tokens.length; ++i) + { + tokens[i] = tokens[i].trim(); + if (tokens[i].matches("[0-9]+")) + { + versionTokens.add(Integer.valueOf(tokens[i])); + } + else if (tokens[i].matches("[0-9]+[a-z]")) + { + String numberString = tokens[i].substring(0, tokens[i].length()-1); + versionTokens.add(Integer.valueOf(numberString)); + versionTokens.add(Character.getNumericValue(tokens[i].charAt(tokens[i].length()-1))); + } + } + + // Can't use versionTokens.toArray 'cause that returns an Integer[], not int[] + int[] value = new int[versionTokens.size()]; + for (int i = 0; i < value.length; ++i) + { + value[i] = versionTokens.get(i).intValue(); + } + return value; + } + + /* VERSION COMPARISON */ + public static boolean beforeTargetVersion(String version, String target) + { + boolean result = false; + int[] versionTokens = parseVersion(version); + int[] targetTokens = parseVersion(target); + + for (int i = 0; i < versionTokens.length; ++i) + { + if (versionTokens[i] < targetTokens[i]) + { + result = true; + break; + } + else if (versionTokens[i] > targetTokens[i]) + { + result = false; + break; + } + + if (i == versionTokens.length-1 && versionTokens.length < targetTokens.length) + { + // If the versions compared are the same, but target has an extra token, it's probably a "letter" build + // and is ahead of this one. + result = true; + } + } + + return result; + } + + public static boolean afterTargetVersion(String version, String target) + { + boolean result = false; + int[] versionTokens = parseVersion(version); + int[] targetTokens = parseVersion(target); + + for (int i = 0; i < versionTokens.length; ++i) + { + if (versionTokens[i] > targetTokens[i]) + { + result = true; + break; + } + } + + return result; + } + + public VersionInfo(String name, String version, String url) + { + modName = name; + modVersion = latestModVersion = version; + releaseURL = url; + } + + public VersionInfo(String name, String version, String url, Logger logger) + { + modName = name; + modVersion = latestModVersion = version; + releaseURL = url; + modLogger = logger; + } + + public void checkForNewVersion() + { + Thread versionCheckThread = new VersionCheckThread(); + versionCheckThread.start(); + } + + public String getCurrentVersion() + { + return modVersion; + } + + public String getLatestVersion() + { + return latestModVersion; + } + + public String getLatestMCVersion() + { + return latestMCVersion; + } + + public String getVersionDescription() + { + return description; + } + + public boolean isCriticalUpdate() + { + return criticalUpdate; + } + + public boolean isNewVersionAvailable() + { + return newVersion; + } + + public boolean isMinecraftOutdated() + { + return newMinecraftVersion; + } + + public boolean isVersionCheckComplete() + { + return versionCheckComplete; + } + + /* VERSION CHECK THREAD CLASS */ + private class VersionCheckThread extends Thread + { + @Override + public void run() + { + try + { + String location = VersionURL; + + HttpURLConnection connection = null; + + // Used to "dereference" any location headers we may get. + while (location != null && !location.isEmpty()) + { + URL url = new URL(location); + connection = (HttpURLConnection) url.openConnection(); + connection.setRequestProperty("User-Agent", + "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.60 Safari/537.17"); + connection.connect(); + location = connection.getHeaderField("Location"); + } + + BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream())); + latestModVersion = reader.readLine(); + criticalUpdate = Boolean.parseBoolean(reader.readLine()); + latestMCVersion = reader.readLine(); + description = reader.readLine(); + reader.close(); + + if (beforeTargetVersion(modVersion, latestModVersion)) + { + modLogger.log(Level.INFO, "An updated version of " + modName + " is available: " + latestModVersion + "."); + newVersion = true; + if (criticalUpdate) + { + modLogger.log(Level.INFO, "This update has been marked as CRITICAL and will ignore notification suppression."); + } + if (beforeTargetVersion(MCVersion, latestMCVersion)) + { + newMinecraftVersion = true; + modLogger.log(Level.INFO, "This update is for Minecraft " + latestMCVersion + "."); + } + } + + } + catch (Exception e) + { + modLogger.log(Level.WARNING, "Version Check Failed: " + e.getMessage()); + } + versionCheckComplete = true; + } + } + + public static void doVersionCheck() + { + if (!ThaumicBees.getConfig().SkipUpdateCheck) + { + VersionInfo main = new VersionInfo("ThaumicBees", Version, VersionURL); + TickHandlerVersion.registerModVersionInfo(main); + TickHandlerVersion.initialize(); + TickRegistry.registerScheduledTickHandler(TickHandlerVersion.instance, Side.CLIENT); + + VersionCheckThread thread = main.new VersionCheckThread(); + thread.start(); + } + } } diff --git a/thaumicbees_src/thaumicbees/main/utils/compat/ExtraBeesHelper.java b/thaumicbees_src/thaumicbees/main/utils/compat/ExtraBeesHelper.java new file mode 100644 index 0000000..3f7d220 --- /dev/null +++ b/thaumicbees_src/thaumicbees/main/utils/compat/ExtraBeesHelper.java @@ -0,0 +1,91 @@ +package thaumicbees.main.utils.compat; + +public class ExtraBeesHelper +{ + + public enum CombType + { + BARREN, + ROTTEN, + BONE, + OIL, + COAL, + FUEL, + WATER, + MILK, + FRUIT, + SEED, + ALCOHOL, + STONE, + REDSTONE, + RESIN, + IC2, + IRON, + GOLD, + COPPER, + TIN, + SILVER, + BRONZE, + URANIUM, + CLAY, + OLD, + FUNGAL, + CREOSOTE, + LATEX, + ACIDIC, + VENOMOUS, + SLIME, + BLAZE, + COFFEE, + GLACIAL, + MINT, + CITRUS, + PEAT, + SHADOW, + LEAD, + BRASS, + ELECTRUM, + ZINC, + TITANIUM, + TUNGSTEN, + STEEL, + IRIDIUM, + PLATINUM, + LAPIS, + SODALITE, + PYRITE, + BAUXITE, + CINNABAR, + SPHALERITE, + EMERALD, + RUBY, + SAPPHIRE, + OLIVINE, + DIAMOND, + RED, + YELLOW, + BLUE, + GREEN, + BLACK, + WHITE, + BROWN, + ORANGE, + CYAN, + PURPLE, + GRAY, + LIGHTBLUE, + PINK, + LIMEGREEN, + MAGENTA, + LIGHTGRAY, + NICKEL, + INVAR, + GLOWSTONE, + SALTPETER, + PULP, + MULCH, + COMPOST, + SAWDUST, + ; + } +}