mirror of
https://github.com/GTNewHorizons/MagicBees.git
synced 2026-11-14 01:04:21 +00:00
Updating to Forestry 2.0 API & whatnot.
*Hive Frames *Fixed problems with Ghastly bee *Better Thaumcraft Integration & fix for NBT Bee recipes
This commit is contained in:
1 parent
4125bbf647
commit
eafc34cb54
43 files changed
+1909
-739
No files matched your search
@@ -1,3 +1,3 @@
|
||||
#Build Number for ANT. Do not edit!
|
||||
#Sat Jan 19 14:32:46 PST 2013
|
||||
build.number=77
|
||||
#Sat Jan 26 13:19:10 PST 2013
|
||||
build.number=96
|
||||
@@ -16,8 +16,8 @@
|
||||
<property name="clientsrc.dir" value="${mcp.dir}/src/minecraft" />
|
||||
|
||||
<property name="mc.version" value="1.4.7"/>
|
||||
<property name="forge.version" value="6.6.0.491"/>
|
||||
<property name="thaumicbees.version" value="1.2.705"/>
|
||||
<property name="forge.version" value="6.6.0.507"/>
|
||||
<property name="thaumicbees.version" value="1.3.0"/>
|
||||
|
||||
<!-- for local deployment only, not used by main -->
|
||||
<property name="deploy.type" value="previews" />
|
||||
@@ -71,8 +71,7 @@
|
||||
<include name="forestry/api/**" />
|
||||
</fileset>
|
||||
<fileset dir="${thaumcraft.dir}/">
|
||||
<exclude name="**/resources/**" />
|
||||
<exclude name="**/sound/**" />
|
||||
<include name="thaumcraft/**" />
|
||||
</fileset>
|
||||
<fileset dir="${src.dir}/thaumicbees_src">
|
||||
<include name="**/thaumicbees/**" />
|
||||
@@ -122,8 +121,9 @@
|
||||
<include name="**/thaumicbees/**" />
|
||||
<include name="**/forestry/plugins/**" />
|
||||
|
||||
<exclude name="**/forestry/api/**" />
|
||||
<exclude name="**/thaumcraft/**" />
|
||||
<exclude name="forestry/api/**" />
|
||||
<exclude name="thaumcraft/**" />
|
||||
|
||||
</fileset>
|
||||
</copy>
|
||||
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 5.3 KiB After Width: | Height: | Size: 7.8 KiB |
@@ -1,9 +1,95 @@
|
||||
<?xml version="1.0" ?>
|
||||
<research>
|
||||
<name>Test Bees</name>
|
||||
<popupText>Magical Bees</popupText>
|
||||
<longText></longText>
|
||||
<page type="text">Test, test test.
|
||||
<project id="TBSTARTNODE">
|
||||
<name>Bees And Magic</name>
|
||||
<popupText>Across Fields and Forest</popupText>
|
||||
<longText>There is something about your world that makes you think trees and bees require more research.</longText>
|
||||
<page type="text">A recent breakthrough has given you information regarding Apiculture and Arborculture. Perhaps it isn't quite as mundane as it first seemed.
|
||||
|
||||
The potential exists for further study. All that is required is some creative thinking to apply new uses to old, familiar items.</page>
|
||||
</project>
|
||||
|
||||
<project id="STARKHINT">
|
||||
<name>Stark Bees</name>
|
||||
<popupText>Crossing two boundaries</popupText>
|
||||
<longText>The cursory investigation you have completed in the direction of Beekeeping has yielded fruit. Perhaps under the right conditions, you can find a bee mutation that will enable you to infuse them with magic.</longText>
|
||||
<page type="text">Even bees are susceptible to the influence of magic, some more than others.
|
||||
|
||||
Perhaps it would be possible to breed a bee from two species which are affected by Arcane or Supernatural powers. If such a species truly does exist, it could be possible that they could reveal additional secrets.</page>
|
||||
</project>
|
||||
|
||||
<project id="BEEINFUSION">
|
||||
<name>Thaumic Bees</name>
|
||||
<popupText>Magical Apiculture</popupText>
|
||||
<longText>Further research into this so-called Stark Bee has provided you with insight into how a bee may become infused with elemental energy, or the raw essence of magic itself.</longText>
|
||||
<page type="text">You have refined your previous theory regarding bees taking on aspects of elemental magic, and have come up with a way to attach elements to bees. It remains to be seen if this will be a benefit, or something you may regret in the future.
|
||||
|
||||
By placing a legendary Stark Bee into the Infusion Altar along with a charged shard of some kind, you will be able to imprint an aspect onto the insect. Unfortunately, it only seems to work with princesses or drones, as the Queens are too sensitive to undergo the infusion process.</page>
|
||||
<page type="infusioncrafting">BEEINFUSION1</page>
|
||||
<page type="infusioncrafting">BEEINFUSION2</page>
|
||||
<page type="infusioncrafting">BEEINFUSION3</page>
|
||||
<page type="infusioncrafting">BEEINFUSION4</page>
|
||||
<page type="infusioncrafting">BEEINFUSION5</page>
|
||||
<page type="infusioncrafting">BEEINFUSION6</page>
|
||||
<page type="infusioncrafting">BEEINFUSION7</page>
|
||||
<page type="infusioncrafting">BEEINFUSION8</page>
|
||||
<page type="infusioncrafting">BEEINFUSION9</page>
|
||||
<page type="infusioncrafting">BEEINFUSION0</page>
|
||||
</project>
|
||||
|
||||
<project id="FERTILIZER">
|
||||
<name>Concentrated Compound</name>
|
||||
<popupText>An Apatite for more...</popupText>
|
||||
<longText>You believe you can extend your reserves of apatite by enriching the crafted material with something that crops may appreciate.</longText>
|
||||
<page type="text">You have discovered a method to stretch your reserves of apatite to the limit through the use of magic. By infusing the mixture created by crushing the apatite crystals with dirt with the aspect of the Harvest, you can create additional reserves of it. This mixture is then diluted with sand to produce the normal variety of fertilizer.</page>
|
||||
<page type="infusioncrafting">FERTILIZER</page>
|
||||
</project>
|
||||
|
||||
<project id="HIVEFRAME">
|
||||
<name>Magic Frame</name>
|
||||
<popupText>A Different Frame of Bee</popupText>
|
||||
<longText>Continuing from your curiousity into these flying creatures, an idea has ocurred to you how to encourage them to work faster, coaxed along by the judicious use of magic applied to some existing beekeeping equipment.</longText>
|
||||
<page type="text">The simple frames known to all beekeepers, while effective, are flimsy and prone to breakage. With the help of magic, you have devised an improved design to function longer by enchanting it with reinforcing magic.
|
||||
|
||||
These improved versions can last several times longer than the basic frames, so long as there is sufficient aura in the area to feed the spells woven into the construction of the frame.</page>
|
||||
<page type="infusioncrafting">FRAMEMAGIC</page>
|
||||
</project>
|
||||
|
||||
<project id="HIVEFRAME2">
|
||||
<name>Resilient Frame</name>
|
||||
<popupText>Making it better...</popupText>
|
||||
<longText>Having come up with an idea for an improved Magical Frame, the next logical step would be to reinforce the design further, shielding it from all but the harshest wear and tear. The trade-off, of course, would be an increased consumption of aura during its operation.</longText>
|
||||
<page type="text">You have successfully created a design for a more durable Apiary Frame, the Resilient Frame. Like the Magic Frame, it will increase the bees' working speed and consume aura to offset received wear and tear. Unlike the Magic Frame, its expected lifespan is much longer, but its aura use is slightly higher. </page>
|
||||
<page type="infusioncrafting">FRAMERESILIENT</page>
|
||||
</project>
|
||||
|
||||
<project id="HIVEFRAMEGENTLE">
|
||||
<name>Gentle Frame</name>
|
||||
<popupText>You won't even notice I'm here.</popupText>
|
||||
<longText>Continuing from your curiosity into these flying creatures, an idea has occured to you how to encourage them to live slightly longer within the Apiaries. Perhaps if you could surround them with the essence of health, life, and the plants they love, you can realize this idea.</longText>
|
||||
<page type="text">The Gentle Frame extends the life expectancy of a working queen by roughly a half, and encourages the workers to move at a slightly increased pace. The end result is that the bees live longer, and produce more while they are alive.
|
||||
|
||||
Like the Magic Frame, the Gentle Frame also consumes small amounts of aura to maintain its enchantments, and has the negative side-effect of producing small amounts of flux in the surrounding aura now and again as the enchanted bees go about their work outside the hive. It's probably not enough to get too worried about, though.</page>
|
||||
<page type="infusioncrafting">FRAMEGENTLE</page>
|
||||
</project>
|
||||
|
||||
<project id="HIVEFRAMEMETA">
|
||||
<name>Metabolic Frame</name>
|
||||
<popupText>And One! And Two!</popupText>
|
||||
<longText>Additional bee research has yelded additional insight into their body structure, metabolism and life cycle. It is possible that you could create a frame to enhance their body processes.</longText>
|
||||
<page type="text">The Metabolic Frame enhances the rate at which bees metabolize food, resulting in a higher work speed. However, this makes their genetic structure somewhat unstable and prone to mutations. While this can be frustrating for some apiarists, other, more prepared beekeepers have been known to use the Metabolic Frames in their apiaries to encourage mutations in bee species.
|
||||
|
||||
Like the Magic Frame, this frame consumes aura to maintain its enchantments, and has the negative side-effect of producing some flux in the surrounding aura now and again as the enchanted bees go about their work. The Metabolic Frame consumes significantly more aura, as its enchantments are much more complex, and is not quite as durable as the Magic Frame is known to be.</page>
|
||||
<page type="infusioncrafting">FRAMEMETABOLIC</page>
|
||||
</project>
|
||||
|
||||
<project id="HIVEFRAMENECRO">
|
||||
<name>Necrotic Frame</name>
|
||||
<popupText>Doom And Gloom, For Bees!</popupText>
|
||||
<longText>After being stung by a bee, you concocted an idea to make them pay. Surely placing a frame infused with death and envenomed intents in a hive will teach them a lesson!</longText>
|
||||
<page type="text">Your vengeance-fuelled research has paid off, resulting in the knowledge of the Necrotic Frame. This frame, when placed in an Apiary, will cause the bees to become sluggish, reducing their work speed, and severely unhealthy, greatly diminishing the current generation's lifespan. However, it is prudent to ensure the enchantments in the frame only affect the current generation.
|
||||
|
||||
Like the Magic Frame, this frame consumes aura to maintain its enchantments. This is not your best work, however, and the frame's operation will produce significantly more flux in the surrounding area than your other frames.</page>
|
||||
<page type="infusioncrafting">FRAMENECROTIC</page>
|
||||
</project>
|
||||
|
||||
Lorem Ipsom something something.</page>
|
||||
</research>
|
||||
@@ -1,8 +1,110 @@
|
||||
package forestry.plugins;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
import net.minecraft.command.ICommand;
|
||||
import net.minecraft.world.World;
|
||||
import cpw.mods.fml.common.network.IGuiHandler;
|
||||
import forestry.api.core.IOreDictionaryHandler;
|
||||
import forestry.api.core.IPacketHandler;
|
||||
import forestry.api.core.IPickupHandler;
|
||||
import forestry.api.core.IPlugin;
|
||||
import forestry.api.core.IResupplyHandler;
|
||||
import forestry.api.core.ISaveEventHandler;
|
||||
import thaumicbees.bees.ThaumicBeesPlugin;
|
||||
|
||||
public class PluginThaumicBees extends ThaumicBeesPlugin
|
||||
public class PluginThaumicBees implements IPlugin
|
||||
{
|
||||
|
||||
@Override
|
||||
public boolean isAvailable()
|
||||
{
|
||||
// TODO Auto-generated method stub
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void preInit()
|
||||
{
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void doInit()
|
||||
{
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void postInit()
|
||||
{
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getDescription()
|
||||
{
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void generateSurface(World world, Random rand, int chunkX, int chunkZ)
|
||||
{
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public IGuiHandler getGuiHandler()
|
||||
{
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public IPacketHandler getPacketHandler()
|
||||
{
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public IPickupHandler getPickupHandler()
|
||||
{
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public IResupplyHandler getResupplyHandler()
|
||||
{
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ISaveEventHandler getSaveEventHandler()
|
||||
{
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public IOreDictionaryHandler getDictionaryHandler()
|
||||
{
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ICommand[] getConsoleCommands()
|
||||
{
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,85 @@
|
||||
package thaumicbees.bees;
|
||||
|
||||
import thaumcraft.api.AuraNode;
|
||||
import thaumcraft.api.ThaumcraftApi;
|
||||
import thaumicbees.block.BlockManager;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.world.World;
|
||||
import forestry.api.apiculture.IBeeGenome;
|
||||
import forestry.api.apiculture.IFlowerProvider;
|
||||
import forestry.api.genetics.IPollinatable;
|
||||
|
||||
public class FlowerProviderAuraNode implements IFlowerProvider
|
||||
{
|
||||
protected int nodeRange = 70;
|
||||
|
||||
@Override
|
||||
public boolean isAcceptedFlower(World world, IBeeGenome genome, int x, int y, int z)
|
||||
{
|
||||
return this.isNodeWithinRange(world, x, y, z);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isAcceptedPollinatable(World world, IPollinatable pollinatable)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean growFlower(World world, IBeeGenome genome, int x, int y, int z)
|
||||
{
|
||||
boolean flag = false;
|
||||
int blockDown = world.getBlockId(x, y - 1, z);
|
||||
if (world.isAirBlock(x, y, z) && (blockDown == Block.dirt.blockID || blockDown == Block.grass.blockID))
|
||||
{
|
||||
int rand = world.rand.nextInt(10);
|
||||
world.setBlockAndMetadataWithNotify(x, y, z, BlockManager.tcPlant.blockID, (rand >= 5) ? 2 : 3);
|
||||
System.out.println(x + ", " + y + ", " + ", " + z + " set to flower.");
|
||||
flag = true;
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getDescription()
|
||||
{
|
||||
return "Node";
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack[] affectProducts(World world, IBeeGenome genome, int x, int y, int z, ItemStack[] products)
|
||||
{
|
||||
return products;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack[] getItemStacks()
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
protected boolean isNodeWithinRange(World w, int x, int y, int z)
|
||||
{
|
||||
boolean nodeNearby = false;
|
||||
if (ThaumcraftApi.getClosestAuraWithinRange(w, x, y, z, this.nodeRange) >= 0)
|
||||
{
|
||||
nodeNearby = true;
|
||||
}
|
||||
return nodeNearby;
|
||||
}
|
||||
|
||||
protected AuraNode getNodeWithinRange(World w, int x, int y, int z)
|
||||
{
|
||||
AuraNode node = null;
|
||||
|
||||
int nodeId = ThaumcraftApi.getClosestAuraWithinRange(w, x, y, z, this.nodeRange);
|
||||
if (nodeId >= 0)
|
||||
{
|
||||
node = ThaumcraftApi.getNodeCopy(nodeId);
|
||||
}
|
||||
|
||||
return node;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,73 @@
|
||||
package thaumicbees.bees;
|
||||
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.world.World;
|
||||
import thaumcraft.api.AuraNode;
|
||||
import thaumcraft.api.EnumTag;
|
||||
import thaumcraft.api.ObjectTags;
|
||||
import thaumcraft.api.ThaumcraftApi;
|
||||
import thaumicbees.block.BlockManager;
|
||||
import thaumicbees.item.ItemManager;
|
||||
import forestry.api.apiculture.IBeeGenome;
|
||||
|
||||
public class FlowerProviderAuraNodePurify extends FlowerProviderAuraNode
|
||||
{
|
||||
@Override
|
||||
public boolean growFlower(World world, IBeeGenome genome, int x, int y, int z)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getDescription()
|
||||
{
|
||||
return "Node Purify";
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack[] affectProducts(World world, IBeeGenome genome, int x, int y, int z, ItemStack[] products)
|
||||
{
|
||||
AuraNode node = this.getNodeWithinRange(world, x, y, z);
|
||||
if (node != null)
|
||||
{
|
||||
int aspectCount = node.flux.tags.size();
|
||||
if (aspectCount > 0)
|
||||
{
|
||||
EnumTag selectedTag = node.flux.getAspectsSorted()[world.rand.nextInt(node.flux.tags.size())];
|
||||
node.flux.remove(selectedTag, 1);
|
||||
ThaumcraftApi.queueNodeChanges(node.key, 0, 0, false, new ObjectTags().add(selectedTag, -1), 0, 0, 0);
|
||||
products = addItemToProducts(products, new ItemStack(ItemManager.solidFlux, 1, selectedTag.id));
|
||||
}
|
||||
}
|
||||
return products;
|
||||
}
|
||||
|
||||
private ItemStack[] addItemToProducts(ItemStack[] products, ItemStack itemStack)
|
||||
{
|
||||
for (ItemStack stack : products)
|
||||
{
|
||||
if (stack.itemID == itemStack.itemID && stack.getItemDamage() == itemStack.getItemDamage())
|
||||
{
|
||||
if (stack.stackSize < stack.getItem().getItemStackLimit())
|
||||
{
|
||||
stack.stackSize += itemStack.stackSize;
|
||||
itemStack.stackSize = Math.max(stack.stackSize - stack.getItem().getItemStackLimit(), 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (itemStack.stackSize > 0)
|
||||
{
|
||||
ItemStack[] newProducts = new ItemStack[products.length + 1];
|
||||
for (int i = 0; i < products.length; ++i)
|
||||
{
|
||||
newProducts[i] = products[i];
|
||||
}
|
||||
newProducts[products.length] = itemStack;
|
||||
products = newProducts;
|
||||
}
|
||||
|
||||
return products;
|
||||
}
|
||||
}
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package thaumicbees.bees.genetics;
|
||||
package thaumicbees.bees;
|
||||
|
||||
import net.minecraft.world.World;
|
||||
|
||||
@@ -10,6 +10,7 @@ import forestry.api.genetics.IClassification.EnumClassLevel;
|
||||
import java.lang.reflect.Field;
|
||||
import java.util.Random;
|
||||
|
||||
import thaumcraft.api.EnumNodeType;
|
||||
import thaumcraft.api.EnumTag;
|
||||
import thaumcraft.api.ObjectTags;
|
||||
import thaumcraft.api.ThaumcraftApi;
|
||||
@@ -23,18 +24,17 @@ import thaumicbees.bees.genetics.AlleleInteger;
|
||||
import thaumicbees.bees.genetics.BeeGenomeManager;
|
||||
import thaumicbees.bees.genetics.BeeMutation;
|
||||
import thaumicbees.bees.genetics.BeeSpecies;
|
||||
import thaumicbees.bees.genetics.MoonPhase;
|
||||
import thaumicbees.compat.TCEntity;
|
||||
import thaumicbees.compat.TCShardType;
|
||||
import thaumicbees.compat.ThaumcraftCompat;
|
||||
import thaumicbees.compat.TCMiscResource;
|
||||
import thaumicbees.item.ItemComb;
|
||||
import thaumicbees.item.ItemManager;
|
||||
import thaumicbees.item.ItemComb.CombType;
|
||||
import thaumicbees.item.ItemDrop.DropType;
|
||||
import thaumicbees.item.ItemMiscResources.ResourceType;
|
||||
import thaumicbees.item.ItemPollen.PollenType;
|
||||
import thaumicbees.item.types.CombType;
|
||||
import thaumicbees.item.types.DropType;
|
||||
import thaumicbees.item.types.PollenType;
|
||||
import thaumicbees.item.types.ResourceType;
|
||||
import thaumicbees.main.ThaumicBees;
|
||||
import thaumicbees.thaumcraft.TCEntity;
|
||||
import thaumicbees.thaumcraft.TCMiscResource;
|
||||
import thaumicbees.thaumcraft.TCShardType;
|
||||
import thaumicbees.thaumcraft.ThaumcraftCompat;
|
||||
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.command.ICommand;
|
||||
@@ -43,7 +43,7 @@ import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.potion.Potion;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
public class ThaumicBeesPlugin implements IPlugin
|
||||
public class ThaumicBeesPlugin
|
||||
{
|
||||
private static int defaultBodyColour = 0xFF6E0D;
|
||||
private static int malevolentBodyColour = 0xe15236;
|
||||
@@ -87,10 +87,8 @@ public class ThaumicBeesPlugin implements IPlugin
|
||||
|
||||
Allele.flowerBookshelf = new AlleleFlower("flowerBookshelf", new FlowerProviderBookshelf(), true);
|
||||
Allele.flowerThaumcraft = new AlleleFlower("flowerThaumcraftPlant", new FlowerProviderThaumcraftFlower(), false);
|
||||
// TODO: Once TC API is out, write new provider for aura nodes
|
||||
Allele.flowerAuraNode = Allele.flowerThaumcraft;
|
||||
// TODO: Onec TC API is out, write provider to purify node
|
||||
Allele.flowerNodePurify = Allele.flowerThaumcraft;
|
||||
Allele.flowerAuraNode = new AlleleFlower("flowerAuraNode", new FlowerProviderAuraNode(), true);
|
||||
Allele.flowerNodePurify = new AlleleFlower("flowerAuraNodePurify", new FlowerProviderAuraNodePurify(), false);
|
||||
// TODO: Once TC API is out, write provider to flux up node
|
||||
Allele.flowerNodeFluxify = Allele.flowerThaumcraft;
|
||||
|
||||
@@ -99,7 +97,7 @@ public class ThaumicBeesPlugin implements IPlugin
|
||||
Allele.moveSpeed = new AlleleEffectPotion("effectMoveSpeed", "Swiftness", Potion.moveSpeed, 5, false);
|
||||
|
||||
Allele.spawnBrainyZombie = new AlleleEffectSpawnMob("effectBrainy", false, "Brainy", TCEntity.BRAINY_ZOMBIE.entityID);
|
||||
Allele.spawnBrainyZombie.setAggrosPlayerOnSpawn().setThrottle(800).setSpawnsOnPlayerNear(null);
|
||||
Allele.spawnBrainyZombie.setAggrosPlayerOnSpawn().setThrottle(800).setSpawnsOnPlayerNear(null).setMaxMobsInSpawnZone(2);
|
||||
|
||||
Allele.spawnBats = new AlleleEffectSpawnMob("effectBatty", false, "Batty", TCEntity.FIREBAT.entityID);
|
||||
Allele.spawnBats.setThrottle(300).setSpawnsOnPlayerNear("Bat");
|
||||
@@ -107,8 +105,8 @@ public class ThaumicBeesPlugin implements IPlugin
|
||||
Allele.spawnWisp = new AlleleEffectSpawnWisp("effectWispy", false, "Wispy", TCEntity.WISP.entityID);
|
||||
Allele.spawnWisp.setThrottle(1800);
|
||||
|
||||
//Allele.spawnGhast = new AlleleEffectSpawnMob("Ghast", false, "Ghastly", "Ghast");
|
||||
//Allele.spawnGhast.setThrottle(800);
|
||||
Allele.spawnGhast = new AlleleEffectSpawnMob("Ghast", false, "Ghastly", "Ghast");
|
||||
Allele.spawnGhast.setThrottle(2000).setChanceToSpawn(20).setMaxMobsInSpawnZone(1);
|
||||
}
|
||||
|
||||
private void setupBeeSpecies()
|
||||
@@ -268,7 +266,7 @@ public class ThaumicBeesPlugin implements IPlugin
|
||||
"azanorius", magical, 0,
|
||||
0xaa32fc, 0x7A489E, EnumTemperature.NORMAL, EnumHumidity.NORMAL,
|
||||
true, hideSpecies, true, true);
|
||||
Allele.Infused.addProduct(ItemManager.combs.getStackForType(ItemComb.CombType.INFUSED), 20);
|
||||
Allele.Infused.addProduct(ItemManager.combs.getStackForType(CombType.INFUSED), 20);
|
||||
Allele.Infused.setGenome(BeeGenomeManager.getTemplateInfused());
|
||||
breedingMgr.registerBeeTemplate(Allele.Infused.getGenome());
|
||||
|
||||
@@ -279,7 +277,7 @@ public class ThaumicBeesPlugin implements IPlugin
|
||||
"sensibilis", aware, 0,
|
||||
0xb0092e9, defaultBodyColour, EnumTemperature.NORMAL, EnumHumidity.NORMAL,
|
||||
false, hideSpecies, true, false);
|
||||
Allele.Aware.addProduct(ItemManager.combs.getStackForType(ItemComb.CombType.INTELLECT), 18);
|
||||
Allele.Aware.addProduct(ItemManager.combs.getStackForType(CombType.INTELLECT), 18);
|
||||
Allele.Aware.setGenome(BeeGenomeManager.getTemplateAware());
|
||||
breedingMgr.registerBeeTemplate(Allele.Aware.getGenome());
|
||||
|
||||
@@ -287,25 +285,25 @@ public class ThaumicBeesPlugin implements IPlugin
|
||||
"arcanus saecula", aware, 0,
|
||||
0x004c99, defaultBodyColour, EnumTemperature.NORMAL, EnumHumidity.NORMAL,
|
||||
false, hideSpecies, true, false);
|
||||
Allele.Vis.addProduct(ItemManager.combs.getStackForType(ItemComb.CombType.INTELLECT), 25);
|
||||
Allele.Vis.addProduct(ItemManager.combs.getStackForType(CombType.INTELLECT), 25);
|
||||
Allele.Vis.setGenome(BeeGenomeManager.getTemplateVis());
|
||||
breedingMgr.registerBeeTemplate(Allele.Vis.getGenome());
|
||||
|
||||
Allele.Pure = new BeeSpecies("Pure", "\"It's like a bee janitor!\"|MysteriousAges, Thaumaturge",
|
||||
"arcanus puritatem", aware, 0,
|
||||
0xb0092e9, defaultBodyColour, EnumTemperature.NORMAL, EnumHumidity.NORMAL,
|
||||
true, hideSpecies, false, false);
|
||||
Allele.Pure.addProduct(ItemManager.combs.getStackForType(ItemComb.CombType.INTELLECT), 20);
|
||||
Allele.Pure.setGenome(BeeGenomeManager.getTemplateAware());
|
||||
true, hideSpecies, true, false);
|
||||
Allele.Pure.addProduct(ItemManager.combs.getStackForType(CombType.INTELLECT), 20);
|
||||
Allele.Pure.setGenome(BeeGenomeManager.getTemplatePure());
|
||||
breedingMgr.registerBeeTemplate(Allele.Pure.getGenome());
|
||||
|
||||
Allele.Flux = new BeeSpecies("Flux", "\"I thought they would help clean up, but it only makes things worse!\"|Kreicus, Apprentice Thaumaturge",
|
||||
"arcanus labe", aware, 0,
|
||||
0x004c99, defaultBodyColour, EnumTemperature.NORMAL, EnumHumidity.NORMAL,
|
||||
true, hideSpecies, false, false);
|
||||
Allele.Flux.addProduct(ItemManager.combs.getStackForType(ItemComb.CombType.INTELLECT), 20);
|
||||
Allele.Flux.setGenome(BeeGenomeManager.getTemplateVis());
|
||||
breedingMgr.registerBeeTemplate(Allele.Flux.getGenome()); */
|
||||
true, hideSpecies, true, false);
|
||||
Allele.Flux.addProduct(ItemManager.combs.getStackForType(CombType.INTELLECT), 20);
|
||||
Allele.Flux.setGenome(BeeGenomeManager.getTemplateFlux());
|
||||
breedingMgr.registerBeeTemplate(Allele.Flux.getGenome());*/
|
||||
|
||||
IClassification malevolent = AlleleManager.alleleRegistry.createAndRegisterClassification(EnumClassLevel.GENUS, "malevolens", "Malevolens");
|
||||
malevolent.setParent(familyBee);
|
||||
@@ -314,15 +312,15 @@ public class ThaumicBeesPlugin implements IPlugin
|
||||
"malevolens", malevolent, 0,
|
||||
0x524827, malevolentBodyColour, EnumTemperature.NORMAL, EnumHumidity.NORMAL,
|
||||
false, hideSpecies, true, true);
|
||||
Allele.Skulking.addProduct(ItemManager.combs.getStackForType(ItemComb.CombType.SKULKING), 10);
|
||||
Allele.Skulking.addProduct(ItemManager.combs.getStackForType(CombType.SKULKING), 10);
|
||||
Allele.Skulking.setGenome(BeeGenomeManager.getTemplateSkulking());
|
||||
breedingMgr.registerBeeTemplate(Allele.Skulking.getGenome());
|
||||
|
||||
Allele.Brainy = new BeeSpecies("Brainy", "Their combs may be feotid and foul-smelling, but their intelligence is well-developed.|Apinomicon",
|
||||
Allele.Brainy = new BeeSpecies("Brainy", "Their combs may be fetid and foul-smelling, but their intelligence is well-developed.|Apinomicon",
|
||||
"cerebrum", malevolent, 0,
|
||||
0x83FF70, malevolentBodyColour, EnumTemperature.NORMAL, EnumHumidity.NORMAL,
|
||||
false, hideSpecies, true, true);
|
||||
Allele.Brainy.addProduct(ItemManager.combs.getStackForType(ItemComb.CombType.SKULKING), 10).addProduct(new ItemStack(Item.rottenFlesh), 6);
|
||||
Allele.Brainy.addProduct(ItemManager.combs.getStackForType(CombType.SKULKING), 10).addProduct(new ItemStack(Item.rottenFlesh), 6);
|
||||
Allele.Brainy.addSpecialty(new ItemStack(ItemManager.tcMiscResource, 1, TCMiscResource.ZOMBIE_BRAIN.ordinal()), 2);
|
||||
Allele.Brainy.setGenome(BeeGenomeManager.getTemplateBrainy());
|
||||
breedingMgr.registerBeeTemplate(Allele.Brainy.getGenome());
|
||||
@@ -353,19 +351,19 @@ public class ThaumicBeesPlugin implements IPlugin
|
||||
"chiroptera", malevolent, 0,
|
||||
0x27350d, malevolentBodyColour, EnumTemperature.NORMAL, EnumHumidity.NORMAL,
|
||||
false, hideSpecies, true, true);
|
||||
Allele.Batty.addProduct(ItemManager.combs.getStackForType(ItemComb.CombType.SKULKING), 10);
|
||||
Allele.Batty.addProduct(ItemManager.combs.getStackForType(CombType.SKULKING), 10);
|
||||
Allele.Batty.addSpecialty(new ItemStack(Item.gunpowder), 4);
|
||||
Allele.Batty.setGenome(BeeGenomeManager.getTemplateBatty());
|
||||
breedingMgr.registerBeeTemplate(Allele.Batty.getGenome());
|
||||
|
||||
/*Allele.Ghastly = new BeeSpecies("Ghastly", "\"*sigh*... Really, Myst?\"|Taveria",
|
||||
Allele.Ghastly = new BeeSpecies("Ghastly", "\"*sigh*... Really, Myst?\"|Taveria",
|
||||
"pallens", malevolent, 0,
|
||||
0xccccee, 0xbf877c, EnumTemperature.NORMAL, EnumHumidity.NORMAL,
|
||||
false, hideSpecies, true, false);
|
||||
Allele.Ghastly.addProduct(ItemManager.combs.getStackForType(ItemComb.CombType.SKULKING), 8);
|
||||
Allele.Ghastly.addProduct(ItemManager.combs.getStackForType(CombType.SKULKING), 8);
|
||||
Allele.Ghastly.addSpecialty(new ItemStack(Item.ghastTear), 2);
|
||||
Allele.Ghastly.setGenome(BeeGenomeManager.getTemplateGhastly());
|
||||
breedingMgr.registerBeeTemplate(Allele.Ghastly.getGenome());*/
|
||||
breedingMgr.registerBeeTemplate(Allele.Ghastly.getGenome());
|
||||
}
|
||||
|
||||
private void setupBeeMutations()
|
||||
@@ -379,18 +377,21 @@ public class ThaumicBeesPlugin implements IPlugin
|
||||
.setMoonPhaseBonus(MoonPhase.WANING_CRESCENT, MoonPhase.WAXING_CRESCENT, 1.5f);
|
||||
BeeMutation.Charmed = new BeeMutation(Allele.getBaseSpecies("Diligent"), Allele.getBaseSpecies("Valiant"), Allele.Charmed, 20);
|
||||
BeeMutation.Enchanted = new BeeMutation(Allele.Charmed, Allele.getBaseSpecies("Valiant"), Allele.Enchanted, 8);
|
||||
BeeMutation.Supernatural = new BeeMutation(Allele.Charmed, Allele.Enchanted, Allele.Supernatural, 8)
|
||||
.setMoonPhaseBonus(MoonPhase.WAXING_GIBBOUS, MoonPhase.WANING_GIBBOUS, 1.1f);
|
||||
BeeMutation.Supernatural = new BeeMutation(Allele.Charmed, Allele.Enchanted, Allele.Supernatural, 10)
|
||||
.setMoonPhaseBonus(MoonPhase.WAXING_GIBBOUS, MoonPhase.WANING_GIBBOUS, 1.5f);
|
||||
BeeMutation.Pupil = new BeeMutation(Allele.Arcane, Allele.Enchanted, Allele.Pupil, 10);
|
||||
BeeMutation.Scholarly = new BeeMutation(Allele.Pupil, Allele.Arcane, Allele.Scholarly, 8);
|
||||
BeeMutation.Savant = new BeeMutation(Allele.Pupil, Allele.Scholarly, Allele.Savant, 6);
|
||||
BeeMutation.Stark = new BeeMutation(Allele.Arcane, Allele.Supernatural, Allele.Stark, 8);
|
||||
|
||||
BeeMutation.Aware = new BeeMutation(Allele.getBaseSpecies("Demonic"), Allele.getBaseSpecies("Edenic"), Allele.Aware, 9);
|
||||
/*BeeMutation.Vis = new BeeMutation(Allele.Aware, Allele.Arcane, Allele.Vis, 7, false);
|
||||
/*BeeMutation.Vis = new BeeMutation(Allele.Aware, Allele.Arcane, Allele.Vis, 7)
|
||||
.setAuraNodeRequired(15);
|
||||
|
||||
BeeMutation.Pure = new BeeMutation(Allele.Vis, Allele.getBaseSpecies("Edenic"), Allele.Pure, 5, false);
|
||||
BeeMutation.Flux = new BeeMutation(Allele.Vis, Allele.getBaseSpecies("Edenic"), Allele.Flux, 5, false);*/
|
||||
BeeMutation.Pure = new BeeMutation(Allele.Vis, Allele.getBaseSpecies("Edenic"), Allele.Pure, 5)
|
||||
.setAuraNodeTypeRequired(5, EnumNodeType.PURE).setMoonPhaseBonus(MoonPhase.NEW, MoonPhase.NEW, 1.6f);
|
||||
BeeMutation.Flux = new BeeMutation(Allele.Vis, Allele.getBaseSpecies("Edenic"), Allele.Flux, 5)
|
||||
.setAuraNodeTypeRequired(30, EnumNodeType.UNSTABLE).setMoonPhaseBonus(MoonPhase.FULL, MoonPhase.FULL, 1.6f);*/
|
||||
|
||||
// Now we get into a little bit of branching...
|
||||
if (ThaumicBees.getInstanceConfig().ExtraBeesInstalled)
|
||||
@@ -399,7 +400,7 @@ public class ThaumicBeesPlugin implements IPlugin
|
||||
BeeMutation.Brainy = new BeeMutation(Allele.Skulking, Allele.getExtraSpecies("rotten"), Allele.Brainy, 12);
|
||||
BeeMutation.Gossamer = new BeeMutation(Allele.Skulking, Allele.getExtraSpecies("ancient"), Allele.Gossamer, 10);
|
||||
BeeMutation.Batty = new BeeMutation(Allele.Skulking, Allele.getExtraSpecies("rock"), Allele.Batty, 14);
|
||||
//BeeMutation.Ghastly = new BeeMutation(Allele.Skulking, Allele.getExtraSpecies("creeper"), Allele.Ghastly, 13);
|
||||
BeeMutation.Ghastly = new BeeMutation(Allele.Skulking, Allele.getExtraSpecies("creeper"), Allele.Ghastly, 13);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -407,58 +408,12 @@ public class ThaumicBeesPlugin implements IPlugin
|
||||
BeeMutation.Brainy = new BeeMutation(Allele.Skulking, Allele.getBaseSpecies("Sinister"), Allele.Brainy, 10);
|
||||
BeeMutation.Gossamer = new BeeMutation(Allele.Skulking, Allele.Supernatural, Allele.Gossamer, 10);
|
||||
BeeMutation.Batty = new BeeMutation(Allele.Skulking, Allele.getBaseSpecies("Frugal"), Allele.Batty, 11);
|
||||
//BeeMutation.Ghastly = new BeeMutation(Allele.Skulking, Allele.getBaseSpecies("Austere"), Allele.Ghastly, 13);
|
||||
BeeMutation.Ghastly = new BeeMutation(Allele.Skulking, Allele.getBaseSpecies("Austere"), Allele.Ghastly, 13);
|
||||
}
|
||||
BeeMutation.Gossamer.setMoonPhaseRestricted(MoonPhase.FULL, MoonPhase.WANING_CRESCENT);
|
||||
BeeMutation.Wispy = new BeeMutation(Allele.Gossamer, Allele.getBaseSpecies("Cultivated"), Allele.Wispy, 8);
|
||||
|
||||
}
|
||||
|
||||
public static void setupBeeInfusions(World world)
|
||||
{
|
||||
ItemStack starkDrone = Allele.Stark.getBeeItem(world, EnumBeeType.DRONE);
|
||||
ItemStack starkPrincess = Allele.Stark.getBeeItem(world, EnumBeeType.PRINCESS);
|
||||
ItemStack airDrone = Allele.Air.getBeeItem(world, EnumBeeType.DRONE);
|
||||
ItemStack airPrincess = Allele.Air.getBeeItem(world, EnumBeeType.PRINCESS);
|
||||
ItemStack waterDrone = Allele.Water.getBeeItem(world, EnumBeeType.DRONE);
|
||||
ItemStack waterPrincess = Allele.Water.getBeeItem(world, EnumBeeType.PRINCESS);
|
||||
ItemStack earthDrone = Allele.Earth.getBeeItem(world, EnumBeeType.DRONE);
|
||||
ItemStack earthPrincess = Allele.Earth.getBeeItem(world, EnumBeeType.PRINCESS);
|
||||
ItemStack fireDrone = Allele.Fire.getBeeItem(world, EnumBeeType.DRONE);
|
||||
ItemStack firePrincess = Allele.Fire.getBeeItem(world, EnumBeeType.PRINCESS);
|
||||
ItemStack magicDrone = Allele.Infused.getBeeItem(world, EnumBeeType.DRONE);
|
||||
ItemStack magicPrincess = Allele.Infused.getBeeItem(world, EnumBeeType.PRINCESS);
|
||||
|
||||
ObjectTags tags = (new ObjectTags()).add(EnumTag.WIND, 40).add(EnumTag.MOTION, 20);
|
||||
ThaumcraftApi.addShapelessInfusionCraftingRecipe("UTFT", 100, tags, airDrone, new Object[]
|
||||
{ starkDrone, new ItemStack(ItemManager.tcShard, 1, TCShardType.AIR.ordinal()) } );
|
||||
ThaumcraftApi.addShapelessInfusionCraftingRecipe("UTFT", 100, tags, airPrincess, new Object[]
|
||||
{ starkPrincess, new ItemStack(ItemManager.tcShard, 1, TCShardType.AIR.ordinal()) });
|
||||
|
||||
tags = (new ObjectTags()).add(EnumTag.FIRE, 40).add( EnumTag.POWER, 20);
|
||||
ThaumcraftApi.addShapelessInfusionCraftingRecipe("UTFT", 100, tags, fireDrone, new Object[]
|
||||
{ starkDrone, new ItemStack(ItemManager.tcShard, 1, TCShardType.FIRE.ordinal()) } );
|
||||
ThaumcraftApi.addShapelessInfusionCraftingRecipe("UTFT", 100, tags, firePrincess, new Object[]
|
||||
{ starkDrone, new ItemStack(ItemManager.tcShard, 1, TCShardType.FIRE.ordinal()) } );
|
||||
|
||||
tags = (new ObjectTags()).add(EnumTag.WATER, 40).add( EnumTag.COLD, 20);
|
||||
ThaumcraftApi.addShapelessInfusionCraftingRecipe("UTFT", 100, tags, waterDrone, new Object[]
|
||||
{ starkDrone, new ItemStack(ItemManager.tcShard, 1, TCShardType.WATER.ordinal()) } );
|
||||
ThaumcraftApi.addShapelessInfusionCraftingRecipe("UTFT", 100, tags, waterPrincess, new Object[]
|
||||
{ starkDrone, new ItemStack(ItemManager.tcShard, 1, TCShardType.WATER.ordinal()) } );
|
||||
|
||||
tags = (new ObjectTags()).add(EnumTag.EARTH, 40).add( EnumTag.ROCK, 20);
|
||||
ThaumcraftApi.addShapelessInfusionCraftingRecipe("UTFT", 100, tags, earthDrone, new Object[]
|
||||
{ starkDrone, new ItemStack(ItemManager.tcShard, 1, TCShardType.EARTH.ordinal()) } );
|
||||
ThaumcraftApi.addShapelessInfusionCraftingRecipe("UTFT", 100, tags, earthPrincess, new Object[]
|
||||
{ starkDrone, new ItemStack(ItemManager.tcShard, 1, TCShardType.EARTH.ordinal()) } );
|
||||
|
||||
tags = new ObjectTags().add(EnumTag.MAGIC, 40).add(EnumTag.FLUX, 20);
|
||||
ThaumcraftApi.addShapelessInfusionCraftingRecipe("UTFT", 100, tags, magicDrone, new Object[]
|
||||
{ starkDrone, new ItemStack(ItemManager.tcShard, 1, TCShardType.MAGIC.ordinal()) } );
|
||||
ThaumcraftApi.addShapelessInfusionCraftingRecipe("UTFT", 100, tags, magicPrincess, new Object[]
|
||||
{ starkDrone, new ItemStack(ItemManager.tcShard, 1, TCShardType.MAGIC.ordinal()) } );
|
||||
}
|
||||
|
||||
public String getDescription()
|
||||
{
|
||||
|
||||
@@ -27,9 +27,8 @@ public class Allele implements IAllele
|
||||
|
||||
public static BeeSpecies Aware;
|
||||
public static BeeSpecies Vis;
|
||||
/* Future bees pending TC3 API release.
|
||||
public static BeeSpecies Pure;
|
||||
public static BeeSpecies Flux; */
|
||||
public static BeeSpecies Flux;
|
||||
|
||||
public static BeeSpecies Skulking;
|
||||
public static BeeSpecies Brainy;
|
||||
|
||||
@@ -8,6 +8,7 @@ import net.minecraft.entity.Entity;
|
||||
import net.minecraft.entity.EntityList;
|
||||
import net.minecraft.entity.EntityLiving;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.util.AxisAlignedBB;
|
||||
import net.minecraft.world.World;
|
||||
import forestry.api.apiculture.IAlleleBeeEffect;
|
||||
import forestry.api.apiculture.IBeeGenome;
|
||||
@@ -21,6 +22,8 @@ public class AlleleEffectSpawnMob extends AlleleEffect
|
||||
protected String alternateMob;
|
||||
protected String mobName;
|
||||
protected int throttle;
|
||||
protected int chanceToSpawn;
|
||||
protected int maxMobsInArea;
|
||||
|
||||
public AlleleEffectSpawnMob(String id, boolean isDominant, String identifier, String mobToSpawn)
|
||||
{
|
||||
@@ -28,6 +31,8 @@ public class AlleleEffectSpawnMob extends AlleleEffect
|
||||
this.aggosOnPlayer = false;
|
||||
this.mobName = mobToSpawn;
|
||||
this.throttle = 200;
|
||||
this.chanceToSpawn = 100;
|
||||
this.maxMobsInArea = 6;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -61,41 +66,50 @@ public class AlleleEffectSpawnMob extends AlleleEffect
|
||||
{
|
||||
World w = housing.getWorld();
|
||||
|
||||
if (this.spawnsWhilePlayerNear)
|
||||
int roll = w.rand.nextInt(100);
|
||||
|
||||
if (roll <= this.chanceToSpawn)
|
||||
{
|
||||
List<Entity> entities = this.getEntitiesWithinRange(genome, housing);
|
||||
EntityPlayer target = null;
|
||||
for (Entity e : entities)
|
||||
if (this.spawnsWhilePlayerNear)
|
||||
{
|
||||
if (e instanceof EntityPlayer)
|
||||
List<Entity> entities = this.getEntitiesWithinRange(genome, housing);
|
||||
EntityPlayer target = null;
|
||||
for (Entity e : entities)
|
||||
{
|
||||
target = (EntityPlayer)e;
|
||||
// Check for wearing armor & cancel
|
||||
if (ItemArmorApiarist.getNumberPiecesWorn(target) >= 4)
|
||||
if (e instanceof EntityPlayer)
|
||||
{
|
||||
// Full armor suit is treated as "invisible."
|
||||
target = null;
|
||||
}
|
||||
else
|
||||
{
|
||||
break;
|
||||
target = (EntityPlayer)e;
|
||||
// Check for wearing armor & cancel
|
||||
if (ItemArmorApiarist.getNumberPiecesWorn(target) >= 4)
|
||||
{
|
||||
// Full armor suit is treated as "invisible."
|
||||
target = null;
|
||||
}
|
||||
else
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Let's spawn a mob. =D
|
||||
if (target != null)
|
||||
{
|
||||
storedData.setBoolean(0, !this.spawnMob(genome, target, w, housing, false));
|
||||
}
|
||||
else if (this.alternateMob != null)
|
||||
{
|
||||
storedData.setBoolean(0, !this.spawnMob(genome, null, w, housing, true));
|
||||
}
|
||||
}
|
||||
|
||||
// Let's spawn a mob. =D
|
||||
if (target != null)
|
||||
{
|
||||
storedData.setBoolean(0, !this.spawnMob(genome, target, w, housing, false));
|
||||
}
|
||||
else if (this.alternateMob != null)
|
||||
else
|
||||
{
|
||||
storedData.setBoolean(0, !this.spawnMob(genome, null, w, housing, true));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
storedData.setBoolean(0, !this.spawnMob(genome, null, w, housing, true));
|
||||
storedData.setBoolean(0, true);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -105,6 +119,7 @@ public class AlleleEffectSpawnMob extends AlleleEffect
|
||||
protected boolean spawnMob(IBeeGenome bee, EntityPlayer player, World world, IBeeHousing housing, boolean spawnAlternate)
|
||||
{
|
||||
boolean spawnedFlag = false;
|
||||
|
||||
|
||||
EntityLiving mob;
|
||||
if (spawnAlternate && this.alternateMob != null)
|
||||
@@ -115,23 +130,31 @@ public class AlleleEffectSpawnMob extends AlleleEffect
|
||||
{
|
||||
mob = (EntityLiving) EntityList.createEntityByName(this.mobName, world);
|
||||
}
|
||||
|
||||
|
||||
if (mob != null)
|
||||
{
|
||||
double pos[] = new double[3];
|
||||
pos[0] = housing.getXCoord() + (world.rand.nextDouble() * (bee.getTerritory()[0] * housing.getTerritoryModifier(bee)) - bee.getTerritory()[0] / 2);
|
||||
pos[1] = housing.getYCoord() + world.rand.nextInt(3) - 1;
|
||||
pos[2] = housing.getYCoord() + (world.rand.nextDouble() * (bee.getTerritory()[2] * housing.getTerritoryModifier(bee)) - bee.getTerritory()[2] / 2);
|
||||
double pos[] = this.randomMobSpawnCoords(world, bee, housing);
|
||||
|
||||
int entitiesCount = world.getEntitiesWithinAABB(mob.getClass(),
|
||||
AxisAlignedBB.getBoundingBox((int)pos[0], (int)pos[1], (int)pos[2], (int)pos[0] + 1, (int)pos[1] + 1, (int)pos[2] + 1)
|
||||
.expand(8.0D, 4.0D, 8.0D)).size();
|
||||
|
||||
mob.setLocationAndAngles(pos[0], pos[1], pos[2], world.rand.nextFloat() * 360f, 0f);
|
||||
// Success!
|
||||
spawnedFlag = world.spawnEntityInWorld(mob);
|
||||
if (this.aggosOnPlayer && player != null)
|
||||
mob.setPosition(pos[0], pos[1], pos[2]);
|
||||
mob.setAngles(world.rand.nextFloat() * 360f, 0f);
|
||||
|
||||
if (entitiesCount < this.maxMobsInArea && mob.getCanSpawnHere())
|
||||
{
|
||||
if (ItemArmorApiarist.getNumberPiecesWorn(player) < 4)
|
||||
if (mob.getCanSpawnHere())
|
||||
{
|
||||
// Protect fully suited player from initial murder intent.
|
||||
mob.setAttackTarget(player);
|
||||
spawnedFlag = world.spawnEntityInWorld(mob);
|
||||
if (this.aggosOnPlayer && player != null)
|
||||
{
|
||||
if (ItemArmorApiarist.getNumberPiecesWorn(player) < 4)
|
||||
{
|
||||
// Protect fully suited player from initial murder intent.
|
||||
mob.setAttackTarget(player);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -160,4 +183,27 @@ public class AlleleEffectSpawnMob extends AlleleEffect
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
public AlleleEffectSpawnMob setChanceToSpawn(int value)
|
||||
{
|
||||
this.chanceToSpawn = value;
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
public AlleleEffectSpawnMob setMaxMobsInSpawnZone(int value)
|
||||
{
|
||||
this.maxMobsInArea = value;
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
protected double[] randomMobSpawnCoords(World world, IBeeGenome bee, IBeeHousing housing)
|
||||
{
|
||||
double pos[] = new double[3];
|
||||
pos[0] = housing.getXCoord() + (world.rand.nextDouble() * (bee.getTerritory()[0] * housing.getTerritoryModifier(bee)) - bee.getTerritory()[0] / 2);
|
||||
pos[1] = housing.getYCoord() + world.rand.nextInt(3) - 1;
|
||||
pos[2] = housing.getZCoord() + (world.rand.nextDouble() * (bee.getTerritory()[2] * housing.getTerritoryModifier(bee)) - bee.getTerritory()[2] / 2);
|
||||
return pos;
|
||||
}
|
||||
}
|
||||
@@ -2,12 +2,18 @@ package thaumicbees.bees.genetics;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
|
||||
import cpw.mods.fml.common.FMLLog;
|
||||
|
||||
import thaumicbees.item.ItemArmorApiarist;
|
||||
import thaumicbees.thaumcraft.TCEntity;
|
||||
|
||||
import forestry.api.apiculture.IBeeGenome;
|
||||
import forestry.api.apiculture.IBeeHousing;
|
||||
|
||||
import net.minecraft.entity.EntityList;
|
||||
import net.minecraft.entity.EntityLiving;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.util.AxisAlignedBB;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
public class AlleleEffectSpawnWisp extends AlleleEffectSpawnMob
|
||||
@@ -37,30 +43,39 @@ public class AlleleEffectSpawnWisp extends AlleleEffectSpawnMob
|
||||
|
||||
if (mob != null)
|
||||
{
|
||||
double pos[] = new double[3];
|
||||
pos[0] = housing.getXCoord() + (world.rand.nextDouble() * (bee.getTerritory()[0] * housing.getTerritoryModifier(bee)) - bee.getTerritory()[0] / 2);
|
||||
pos[1] = housing.getYCoord() + world.rand.nextInt(3) - 1;
|
||||
pos[2] = housing.getYCoord() + (world.rand.nextDouble() * (bee.getTerritory()[2] * housing.getTerritoryModifier(bee)) - bee.getTerritory()[2] / 2);
|
||||
double pos[] = this.randomMobSpawnCoords(world, bee, housing);
|
||||
|
||||
mob.setLocationAndAngles(pos[0], pos[1], pos[2], world.rand.nextFloat() * 360f, 0f);
|
||||
int entitiesCount = world.getEntitiesWithinAABB(mob.getClass(),
|
||||
AxisAlignedBB.getBoundingBox((int)pos[0], (int)pos[1], (int)pos[2], (int)pos[0] + 1, (int)pos[1] + 1, (int)pos[2] + 1)
|
||||
.expand(8.0D, 4.0D, 8.0D)).size();
|
||||
|
||||
// Try some Reflection on TC code. This could be dangerous.
|
||||
try
|
||||
{
|
||||
Class wispEntity = Class.forName("thaumcraft.common.entities.EntityWisp");
|
||||
Field type = wispEntity.getDeclaredField("type");
|
||||
type.setByte(mob, wispTypes[world.rand.nextInt(wispTypes.length)]);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
|
||||
}
|
||||
mob.setPosition(pos[0], pos[1], pos[2]);
|
||||
mob.setAngles(world.rand.nextFloat() * 360f, 0f);
|
||||
|
||||
// Success!
|
||||
spawnedFlag = world.spawnEntityInWorld(mob);
|
||||
if (this.aggosOnPlayer && player != null)
|
||||
if (entitiesCount < this.maxMobsInArea && mob.getCanSpawnHere())
|
||||
{
|
||||
mob.setAttackTarget(player);
|
||||
// Try some Reflection on TC code. This could be dangerous.
|
||||
try
|
||||
{
|
||||
Class wispEntity = Class.forName(TCEntity.WISP.getClassName());
|
||||
Field type = wispEntity.getDeclaredField("type");
|
||||
type.setByte(mob, wispTypes[world.rand.nextInt(wispTypes.length)]);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
FMLLog.info("ThaumicBees is using an invalid classname: " + TCEntity.WISP.getClassName()
|
||||
+ " Please report this error in the thread if you see it.", (Object[])null);
|
||||
}
|
||||
|
||||
spawnedFlag = world.spawnEntityInWorld(mob);
|
||||
if (this.aggosOnPlayer && player != null)
|
||||
{
|
||||
if (ItemArmorApiarist.getNumberPiecesWorn(player) < 4)
|
||||
{
|
||||
// Protect fully suited player from initial murder intent.
|
||||
mob.setAttackTarget(player);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,7 +1,12 @@
|
||||
package thaumicbees.bees.genetics;
|
||||
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.nbt.NBTTagList;
|
||||
import forestry.api.apiculture.BeeManager;
|
||||
import forestry.api.apiculture.EnumBeeChromosome;
|
||||
import forestry.api.apiculture.EnumBeeType;
|
||||
import forestry.api.core.ItemInterface;
|
||||
import forestry.api.genetics.AlleleManager;
|
||||
import forestry.api.genetics.IAllele;
|
||||
|
||||
@@ -277,14 +282,13 @@ public class BeeGenomeManager
|
||||
return genome;
|
||||
}
|
||||
|
||||
// Future bees, pending TC3 API release.
|
||||
/*public static IAllele[] getTemplateVis()
|
||||
public static IAllele[] getTemplateVis()
|
||||
{
|
||||
IAllele[] genome = getTemplateBaseVis();
|
||||
|
||||
genome[EnumBeeChromosome.SPECIES.ordinal()] = Allele.Vis;
|
||||
genome[EnumBeeChromosome.SPEED.ordinal()] = Allele.getBaseAllele("speedSlow");
|
||||
genome[EnumBeeChromosome.FLOWERING.ordinal()] = Allele.getBaseAllele("speedSlower");
|
||||
genome[EnumBeeChromosome.FLOWERING.ordinal()] = Allele.getBaseAllele("floweringSlower");
|
||||
genome[EnumBeeChromosome.FLOWER_PROVIDER.ordinal()] = Allele.flowerAuraNode;
|
||||
|
||||
return genome;
|
||||
@@ -297,6 +301,7 @@ public class BeeGenomeManager
|
||||
genome[EnumBeeChromosome.SPECIES.ordinal()] = Allele.Pure;
|
||||
genome[EnumBeeChromosome.HUMIDITY_TOLERANCE.ordinal()] = Allele.getBaseAllele("toleranceNone");
|
||||
genome[EnumBeeChromosome.TEMPERATURE_TOLERANCE.ordinal()] = Allele.getBaseAllele("toleranceNone");
|
||||
genome[EnumBeeChromosome.FLOWERING.ordinal()] = Allele.getBaseAllele("floweringAverage");
|
||||
genome[EnumBeeChromosome.FLOWER_PROVIDER.ordinal()] = Allele.flowerNodePurify;
|
||||
|
||||
return genome;
|
||||
@@ -312,7 +317,7 @@ public class BeeGenomeManager
|
||||
genome[EnumBeeChromosome.FLOWER_PROVIDER.ordinal()] = Allele.flowerNodeFluxify;
|
||||
|
||||
return genome;
|
||||
}*/
|
||||
}
|
||||
|
||||
private static IAllele[] getTemplateBaseMalevolent()
|
||||
{
|
||||
@@ -392,10 +397,51 @@ public class BeeGenomeManager
|
||||
genome[EnumBeeChromosome.TEMPERATURE_TOLERANCE.ordinal()] = Allele.getBaseAllele("toleranceBoth1");
|
||||
genome[EnumBeeChromosome.NOCTURNAL.ordinal()] = Allele.getBaseAllele("boolTrue");
|
||||
genome[EnumBeeChromosome.TOLERANT_FLYER.ordinal()] = Allele.getBaseAllele("boolTrue");
|
||||
// Ghast spawning needs to be fixed. ):
|
||||
//genome[EnumBeeChromosome.EFFECT.ordinal()] = Allele.spawnGhast;
|
||||
genome[EnumBeeChromosome.FERTILITY.ordinal()] = Allele.getBaseAllele("fertilityLow");
|
||||
genome[EnumBeeChromosome.EFFECT.ordinal()] = Allele.spawnGhast;
|
||||
|
||||
return genome;
|
||||
}
|
||||
|
||||
public static ItemStack getBeeNBTForSpecies(BeeSpecies species, EnumBeeType beeType)
|
||||
{
|
||||
ItemStack taggedBee;
|
||||
switch (beeType)
|
||||
{
|
||||
case PRINCESS:
|
||||
taggedBee = ItemInterface.getItem("beePrincessGE");
|
||||
break;
|
||||
case QUEEN:
|
||||
taggedBee = ItemInterface.getItem("beeQueenGE");
|
||||
break;
|
||||
case DRONE:
|
||||
default:
|
||||
taggedBee = ItemInterface.getItem("beeDroneGE");
|
||||
break;
|
||||
}
|
||||
|
||||
NBTTagCompound tags = new NBTTagCompound();
|
||||
|
||||
addGeneToCompound(EnumBeeChromosome.SPECIES, species, tags);
|
||||
|
||||
taggedBee.setTagCompound(tags);
|
||||
|
||||
return taggedBee;
|
||||
}
|
||||
|
||||
private static void addGeneToCompound(EnumBeeChromosome gene, IAllele allele, NBTTagCompound compound)
|
||||
{
|
||||
NBTTagCompound geneRoot = new NBTTagCompound();
|
||||
compound.setTag("Genome", geneRoot);
|
||||
NBTTagList chromosomes = new NBTTagList();
|
||||
geneRoot.setTag("Chromosomes", chromosomes);
|
||||
|
||||
NBTTagCompound selectedGene = new NBTTagCompound();
|
||||
chromosomes.appendTag(selectedGene);
|
||||
|
||||
selectedGene.setByte("Slot", (byte)gene.ordinal());
|
||||
selectedGene.setString("UID0", allele.getUID());
|
||||
selectedGene.setString("UID1", allele.getUID());
|
||||
}
|
||||
|
||||
}
|
||||
@@ -5,6 +5,11 @@ import forestry.api.genetics.IAllele;
|
||||
import forestry.api.genetics.IGenome;
|
||||
import java.util.ArrayList;
|
||||
|
||||
import thaumcraft.api.AuraNode;
|
||||
import thaumcraft.api.EnumNodeType;
|
||||
import thaumcraft.api.ThaumcraftApi;
|
||||
import thaumicbees.bees.MoonPhase;
|
||||
|
||||
public class BeeMutation implements IBeeMutation
|
||||
{
|
||||
|
||||
@@ -41,6 +46,9 @@ public class BeeMutation implements IBeeMutation
|
||||
private MoonPhase moonPhaseStart;
|
||||
private MoonPhase moonPhaseEnd;
|
||||
private float moonPhaseMutationBonus;
|
||||
private boolean nodeRequired;
|
||||
private EnumNodeType nodeType;
|
||||
private double nodeRange;
|
||||
|
||||
public BeeMutation(IAlleleBeeSpecies species0, IAlleleBeeSpecies species1, BeeSpecies resultSpecies, int percentChance)
|
||||
{
|
||||
@@ -51,6 +59,7 @@ public class BeeMutation implements IBeeMutation
|
||||
this.isSecret = false;
|
||||
this.isMoonRestricted = false;
|
||||
this.moonPhaseMutationBonus = -1f;
|
||||
this.nodeType = null;
|
||||
|
||||
BeeManager.breedingManager.registerBeeMutation(this);
|
||||
}
|
||||
@@ -60,7 +69,7 @@ public class BeeMutation implements IBeeMutation
|
||||
int finalChance = 0;
|
||||
float chance = this.baseChance * 1f;
|
||||
|
||||
if (this.isPartner(allele0) && this.isPartner(allele1))
|
||||
if (this.arePartners(allele0, allele1))
|
||||
{
|
||||
// This mutation applies. Continue calculation.
|
||||
if (this.moonPhaseStart != null && this.moonPhaseEnd != null)
|
||||
@@ -80,6 +89,24 @@ public class BeeMutation implements IBeeMutation
|
||||
}
|
||||
}
|
||||
|
||||
if (this.nodeRequired)
|
||||
{
|
||||
int nodeId = ThaumcraftApi.getClosestAuraWithinRange(housing.getWorld(),
|
||||
housing.getXCoord(), housing.getYCoord(), housing.getZCoord(), this.nodeRange);
|
||||
if (nodeId >= 0 && this.nodeType != null)
|
||||
{
|
||||
AuraNode node = ThaumcraftApi.getNodeCopy(nodeId);
|
||||
if (node.type != this.nodeType)
|
||||
{
|
||||
chance = 0;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
chance = 0;
|
||||
}
|
||||
}
|
||||
|
||||
finalChance = Math.round(chance * BeeManager.breedingManager.getBeekeepingMode(housing.getWorld()).getMutationModifier((IBeeGenome) genome0, (IBeeGenome) genome1));
|
||||
}
|
||||
|
||||
@@ -119,6 +146,12 @@ public class BeeMutation implements IBeeMutation
|
||||
return val;
|
||||
}
|
||||
|
||||
public boolean arePartners(IAllele alleleA, IAllele alleleB)
|
||||
{
|
||||
return (this.parent1.getUID().equals(alleleA.getUID())) && this.parent2.getUID().equals(alleleB.getUID()) ||
|
||||
this.parent1.getUID().equals(alleleB.getUID()) && this.parent2.getUID().equals(alleleA.getUID());
|
||||
}
|
||||
|
||||
public BeeMutation setSecret()
|
||||
{
|
||||
this.isSecret = true;
|
||||
@@ -148,4 +181,19 @@ public class BeeMutation implements IBeeMutation
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
public BeeMutation setAuraNodeRequired(double range)
|
||||
{
|
||||
this.nodeRequired = true;
|
||||
this.nodeRange = range;
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
public BeeMutation setAuraNodeTypeRequired(double range, EnumNodeType type)
|
||||
{
|
||||
this.nodeType = type;
|
||||
|
||||
return this.setAuraNodeRequired(range);
|
||||
}
|
||||
}
|
||||
@@ -1,17 +0,0 @@
|
||||
package thaumicbees.compat;
|
||||
|
||||
public enum TCEntity
|
||||
{
|
||||
BRAINY_ZOMBIE("entBrainyZombie"),
|
||||
GIANT_BRAINY_ZOMBIE("entGiantBrainyZombie"),
|
||||
WISP("entWisp"),
|
||||
FIREBAT("entFirebat"),
|
||||
;
|
||||
|
||||
public String entityID;
|
||||
|
||||
private TCEntity(String id)
|
||||
{
|
||||
this.entityID = id;
|
||||
}
|
||||
}
|
||||
@@ -1,267 +0,0 @@
|
||||
package thaumicbees.compat;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.ArrayList;
|
||||
|
||||
import thaumcraft.api.EnumTag;
|
||||
import thaumcraft.api.ObjectTags;
|
||||
import thaumcraft.api.ThaumcraftApi;
|
||||
import thaumicbees.block.BlockManager;
|
||||
import thaumicbees.item.ItemComb;
|
||||
import thaumicbees.item.ItemManager;
|
||||
import thaumicbees.item.ItemMiscResources;
|
||||
import thaumicbees.item.ItemCapsule.Liquid;
|
||||
import thaumicbees.item.ItemComb.CombType;
|
||||
import thaumicbees.item.ItemDrop.DropType;
|
||||
import thaumicbees.item.ItemWax.WaxType;
|
||||
import thaumicbees.storage.BackpackDefinition;
|
||||
|
||||
import cpw.mods.fml.common.event.FMLInterModComms;
|
||||
import cpw.mods.fml.common.registry.GameRegistry;
|
||||
import forestry.api.core.BlockInterface;
|
||||
import forestry.api.core.ItemInterface;
|
||||
import forestry.api.storage.BackpackManager;
|
||||
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemBlock;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraftforge.common.Property;
|
||||
import net.minecraftforge.common.Configuration;
|
||||
|
||||
public class ThaumcraftCompat
|
||||
{
|
||||
|
||||
public static void parseThaumcraftConfig(String configPath)
|
||||
{
|
||||
Configuration tcConfig = new Configuration(new File(configPath + "/Thaumcraft.cfg"));
|
||||
Property p;
|
||||
|
||||
tcConfig.load();
|
||||
|
||||
// Load blocks out of the Thaumcraft config to get their IDs;
|
||||
p = tcConfig.getBlock("BlockCustomPlant", 0);
|
||||
BlockManager.tcPlant = Block.blocksList[p.getInt()];
|
||||
p = tcConfig.getBlock("BlockCandle", 0);
|
||||
BlockManager.tcCandle = Block.blocksList[ p.getInt()];
|
||||
p = tcConfig.getBlock("BlockCrystal", 0);
|
||||
BlockManager.tcCrystal = Block.blocksList[p.getInt()];
|
||||
p = tcConfig.getBlock("BlockMarker", 0);
|
||||
BlockManager.tcMarker = Block.blocksList[p.getInt()];
|
||||
p = tcConfig.getBlock("BlockJar", 0);
|
||||
BlockManager.tcJar = Block.blocksList[p.getInt()];
|
||||
p = tcConfig.getBlock("BlockMagicalLeaves", 0);
|
||||
BlockManager.tcLeaf = Block.blocksList[p.getInt()];
|
||||
p = tcConfig.getBlock("BlockMagicalLog", 0);
|
||||
BlockManager.tcLog = Block.blocksList[p.getInt()];
|
||||
p = tcConfig.getBlock("BlockSecure", 0);
|
||||
BlockManager.tcWarded = Block.blocksList[p.getInt()];
|
||||
|
||||
// Load items out of the Thaumcraft config to get their IDs.
|
||||
p = tcConfig.getItem("ItemEssence", 0);
|
||||
ItemManager.tcEssentiaBottle = Item.itemsList[p.getInt() + 256];
|
||||
p = tcConfig.getItem("ItemResource", 0);
|
||||
ItemManager.tcMiscResource = Item.itemsList[p.getInt() + 256];
|
||||
p = tcConfig.getItem("ItemShard", 0);
|
||||
ItemManager.tcShard = Item.itemsList[p.getInt() + 256];
|
||||
p = tcConfig.getItem("BlockJarFilledItem", 0);
|
||||
ItemManager.tcFilledJar = Item.itemsList[p.getInt() + 256];
|
||||
p = tcConfig.getItem("ItemGolemPlacer", 0);
|
||||
ItemManager.tcGolem = Item.itemsList[p.getInt() + 256];
|
||||
p = tcConfig.getItem("ItemEssence", 0);
|
||||
ItemManager.tcWispEssence = Item.itemsList[p.getInt() + 256];
|
||||
}
|
||||
|
||||
public static void setupBackpacks()
|
||||
{
|
||||
// Add all shards and Thaumium to miner's backpack
|
||||
String ids = ItemManager.tcShard.itemID + ":" + -1 + ";"
|
||||
+ ItemManager.tcMiscResource.itemID + ":" + TCMiscResource.THAUMIUM.ordinal();
|
||||
FMLInterModComms.sendMessage("Forestry", "add-backpack-items", "miner@" + ids);
|
||||
|
||||
// All resources go into Thaumaturge's backpack
|
||||
ids = ItemManager.tcMiscResource.itemID + ":" + -1 + ";"
|
||||
+ ItemManager.tcShard.itemID + ":" + -1 + ";"
|
||||
+ ItemManager.tcFilledJar.itemID + ":" + -1 + ";"
|
||||
+ BlockManager.tcCrystal.blockID + ":" + -1 + ";"
|
||||
+ BlockManager.tcJar.blockID + ":" + -1 + ";"
|
||||
+ ItemManager.tcGolem.itemID + ":" + -1;
|
||||
FMLInterModComms.sendMessage("Forestry", "add-backpack-items", "thaumaturge@" + ids);
|
||||
|
||||
// Add some plants & saplings to Forester's
|
||||
ids = BlockManager.tcPlant.blockID + ":" + "-1" + ";"
|
||||
+ BlockManager.tcLeaf.blockID + ":" + -1 + ";"
|
||||
+ BlockManager.tcLog.blockID + ":" + "-1";
|
||||
FMLInterModComms.sendMessage("Forestry", "add-backpack-items", "forester@" + ids);
|
||||
|
||||
// Add Wisp & brains to Hunter's
|
||||
ids = ItemManager.tcWispEssence.itemID + ":" + -1 + ";"
|
||||
+ ItemManager.tcMiscResource.itemID + ":" + TCMiscResource.ZOMBIE_BRAIN.ordinal();
|
||||
FMLInterModComms.sendMessage("Forestry", "add-backpack-items", "hunter@" + ids);
|
||||
|
||||
// Add Marker, warded stone, candle to builder
|
||||
ids = BlockManager.tcCandle.blockID + ":" + -1 + ";"
|
||||
+ BlockManager.tcMarker.blockID + ":" + -1 + ";"
|
||||
+ BlockManager.tcWarded.blockID + ":" + -1;
|
||||
FMLInterModComms.sendMessage("Forestry", "add-backpack-items", "builder@" + ids);
|
||||
}
|
||||
|
||||
public static void setupResearch()
|
||||
{
|
||||
// TODO: Get the path correct.
|
||||
//ThaumcraftApi.registerResearchXML(CommonProxy.TCBEES_RESEARCH + "/research.xml");
|
||||
}
|
||||
|
||||
public static void setupAspects()
|
||||
{
|
||||
ObjectTags tags;
|
||||
ItemStack itemStack;
|
||||
|
||||
tags = new ObjectTags().add(EnumTag.MAGIC, 2);
|
||||
ThaumcraftApi.registerObjectTag(ItemManager.wax.itemID, WaxType.MAGIC.ordinal(), tags);
|
||||
|
||||
tags = new ObjectTags().add(EnumTag.MAGIC, 1);
|
||||
ThaumcraftApi.registerObjectTag(ItemManager.drops.itemID, DropType.ENCHANTED.ordinal(), tags);
|
||||
tags = new ObjectTags().add(EnumTag.KNOWLEDGE, 1);
|
||||
ThaumcraftApi.registerObjectTag(ItemManager.drops.itemID, DropType.INTELLECT.ordinal(), tags);
|
||||
|
||||
tags = new ObjectTags().add(EnumTag.KNOWLEDGE, 3);
|
||||
ThaumcraftApi.registerObjectTag(ItemManager.miscResources.itemID, ItemMiscResources.ResourceType.LORE_FRAGMENT.ordinal(), tags);
|
||||
|
||||
tags = new ObjectTags().add(EnumTag.MAGIC, 1).add(EnumTag.INSECT, 2).add(EnumTag.CONTROL, 1);
|
||||
ThaumcraftApi.registerObjectTag(ItemManager.combs.itemID, ItemComb.CombType.STARK.ordinal(), tags);
|
||||
ThaumcraftApi.registerObjectTag(ItemManager.combs.itemID, ItemComb.CombType.AIRY.ordinal(), tags);
|
||||
ThaumcraftApi.registerObjectTag(ItemManager.combs.itemID, ItemComb.CombType.FIREY.ordinal(), tags);
|
||||
ThaumcraftApi.registerObjectTag(ItemManager.combs.itemID, ItemComb.CombType.WATERY.ordinal(), tags);
|
||||
ThaumcraftApi.registerObjectTag(ItemManager.combs.itemID, ItemComb.CombType.EARTHY.ordinal(), tags);
|
||||
ThaumcraftApi.registerObjectTag(ItemManager.combs.itemID, ItemComb.CombType.INFUSED.ordinal(), tags);
|
||||
|
||||
// Tagging capsules.
|
||||
tags = new ObjectTags().add(EnumTag.MAGIC, 2);
|
||||
ThaumcraftApi.registerComplexObjectTag(ItemManager.magicCapsule.itemID, -1, tags);
|
||||
|
||||
tags = new ObjectTags().add(EnumTag.MAGIC, 2).add(EnumTag.VOID, 2);
|
||||
ThaumcraftApi.registerObjectTag(ItemManager.magicCapsule.itemID, 0, tags);
|
||||
tags = new ObjectTags().add(EnumTag.MAGIC, 2).add(EnumTag.WATER, 2);
|
||||
ThaumcraftApi.registerObjectTag(ItemManager.magicCapsule.itemID, Liquid.WATER.ordinal(), tags);
|
||||
tags = new ObjectTags().add(EnumTag.MAGIC, 2).add(EnumTag.FIRE, 2);
|
||||
ThaumcraftApi.registerObjectTag(ItemManager.magicCapsule.itemID, Liquid.LAVA.ordinal(), tags);
|
||||
|
||||
// Tag some Forestry stuff.
|
||||
// Pulsating propolis
|
||||
itemStack = ItemInterface.getItem("propolis");
|
||||
tags = new ObjectTags().add(EnumTag.ELDRITCH, 1).add(EnumTag.CONTROL, 1);
|
||||
ThaumcraftApi.registerObjectTag(itemStack.itemID, 2 , tags);
|
||||
itemStack = ItemInterface.getItem("craftingMaterial");
|
||||
// 0: pulsatingDust
|
||||
// 1: "pulsatingMesh";
|
||||
tags = new ObjectTags().add(EnumTag.ELDRITCH, 2);
|
||||
ThaumcraftApi.registerObjectTag(itemStack.itemID, 1, tags);
|
||||
// 2: "silkWisp";
|
||||
// 3: "wovenSilk";
|
||||
// 4: "dissipationCharge";
|
||||
// 5: "iceShard";
|
||||
tags = new ObjectTags().add(EnumTag.COLD, 1);
|
||||
ThaumcraftApi.registerObjectTag(itemStack.itemID, 5, tags);
|
||||
|
||||
itemStack = ItemInterface.getItem("apatite");
|
||||
tags = new ObjectTags().add(EnumTag.CRYSTAL, 2);
|
||||
ThaumcraftApi.registerObjectTag(itemStack.itemID, itemStack.getItemDamage(), tags);
|
||||
|
||||
itemStack = ItemInterface.getItem("impregnatedCasing");
|
||||
tags = new ObjectTags().add(EnumTag.WOOD, 58).add(EnumTag.PLANT, 8);
|
||||
ThaumcraftApi.registerObjectTag(itemStack.itemID, itemStack.getItemDamage(), tags);
|
||||
|
||||
itemStack = ItemInterface.getItem("stickImpregnated");
|
||||
tags = new ObjectTags().add(EnumTag.WOOD, 8).add(EnumTag.PLANT, 2);
|
||||
ThaumcraftApi.registerObjectTag(itemStack.itemID, itemStack.getItemDamage(), tags);
|
||||
|
||||
itemStack = ItemInterface.getItem("peat");
|
||||
tags = new ObjectTags().add(EnumTag.POWER, 2).add(EnumTag.PLANT, 1).add(EnumTag.EARTH, 1);
|
||||
ThaumcraftApi.registerObjectTag(itemStack.itemID, itemStack.getItemDamage(), tags);
|
||||
|
||||
itemStack = ItemInterface.getItem("ash");
|
||||
tags = new ObjectTags().add(EnumTag.DESTRUCTION, 1).add(EnumTag.EXCHANGE, 1);
|
||||
ThaumcraftApi.registerObjectTag(itemStack.itemID, itemStack.getItemDamage(), tags);
|
||||
|
||||
itemStack = ItemInterface.getItem("honeyDrop");
|
||||
tags = new ObjectTags().add(EnumTag.EXCHANGE, 2).add(EnumTag.LIFE, 1);
|
||||
ThaumcraftApi.registerObjectTag(itemStack.itemID, itemStack.getItemDamage(), tags);
|
||||
|
||||
itemStack = ItemInterface.getItem("beeswax");
|
||||
tags = new ObjectTags().add(EnumTag.INSECT, 1).add(EnumTag.CONTROL, 2);
|
||||
ThaumcraftApi.registerObjectTag(itemStack.itemID, itemStack.getItemDamage(), tags);
|
||||
itemStack = ItemInterface.getItem("refractoryWax");
|
||||
tags = new ObjectTags().add(EnumTag.FIRE, 3);
|
||||
ThaumcraftApi.registerObjectTag(itemStack.itemID, itemStack.getItemDamage(), tags);
|
||||
itemStack = ItemInterface.getItem("phosphor");
|
||||
tags = new ObjectTags().add(EnumTag.FIRE, 2).add(EnumTag.DESTRUCTION, 1);
|
||||
ThaumcraftApi.registerObjectTag(itemStack.itemID, itemStack.getItemDamage(), tags);
|
||||
|
||||
itemStack = ItemInterface.getItem("waxCapsule");
|
||||
tags = new ObjectTags().add(EnumTag.CONTROL, 1).add(EnumTag.VOID, 1);
|
||||
ThaumcraftApi.registerObjectTag(itemStack.itemID, itemStack.getItemDamage(), tags);
|
||||
itemStack = ItemInterface.getItem("waxCapsuleWater");
|
||||
tags = new ObjectTags().add(EnumTag.CONTROL, 1).add(EnumTag.VOID, 1).add(EnumTag.WATER, 4);
|
||||
ThaumcraftApi.registerObjectTag(itemStack.itemID, itemStack.getItemDamage(), tags);
|
||||
|
||||
itemStack = ItemInterface.getItem("refractoryEmpty");
|
||||
tags = new ObjectTags().add(EnumTag.FIRE, 1).add(EnumTag.CONTROL, 1).add(EnumTag.VOID, 1);
|
||||
ThaumcraftApi.registerObjectTag(itemStack.itemID, itemStack.getItemDamage(), tags);
|
||||
itemStack = ItemInterface.getItem("refractoryWater");
|
||||
tags = new ObjectTags().add(EnumTag.FIRE, 1).add(EnumTag.VOID, 1).add(EnumTag.WATER, 4);
|
||||
ThaumcraftApi.registerObjectTag(itemStack.itemID, itemStack.getItemDamage(), tags);
|
||||
itemStack = ItemInterface.getItem("refractoryLava");
|
||||
tags = new ObjectTags().add(EnumTag.VOID, 1).add(EnumTag.FIRE, 7).add(EnumTag.WATER, 1).add(EnumTag.ROCK, 2);
|
||||
ThaumcraftApi.registerObjectTag(itemStack.itemID, itemStack.getItemDamage(), tags);
|
||||
|
||||
itemStack = ItemInterface.getItem("canEmpty");
|
||||
tags = new ObjectTags().add(EnumTag.METAL, 1).add(EnumTag.VOID, 1);
|
||||
ThaumcraftApi.registerObjectTag(itemStack.itemID, itemStack.getItemDamage(), tags);
|
||||
itemStack = ItemInterface.getItem("canWater");
|
||||
tags = new ObjectTags().add(EnumTag.METAL, 1).add(EnumTag.VOID, 1).add(EnumTag.WATER, 4);
|
||||
ThaumcraftApi.registerObjectTag(itemStack.itemID, itemStack.getItemDamage(), tags);
|
||||
itemStack = ItemInterface.getItem("canLava");
|
||||
tags = new ObjectTags().add(EnumTag.METAL, 1).add(EnumTag.VOID, 1).add(EnumTag.FIRE, 6).add(EnumTag.WATER, 1).add(EnumTag.ROCK, 2);
|
||||
ThaumcraftApi.registerObjectTag(itemStack.itemID, itemStack.getItemDamage(), tags);
|
||||
|
||||
itemStack = ItemInterface.getItem("beeComb");
|
||||
tags = new ObjectTags().add(EnumTag.INSECT, 2).add(EnumTag.TRAP, 2);
|
||||
ThaumcraftApi.registerObjectTag(itemStack.itemID, -1, tags); // ALL combs plox.
|
||||
ThaumcraftApi.registerObjectTag(ItemManager.combs.itemID, -1, tags);
|
||||
|
||||
itemStack = ItemManager.combs.getStackForType(CombType.OCCULT);
|
||||
tags = new ObjectTags().add(EnumTag.INSECT, 2).add(EnumTag.TRAP, 2).add(EnumTag.MAGIC, 2);
|
||||
ThaumcraftApi.registerObjectTag(itemStack.itemID, itemStack.getItemDamage(), tags);
|
||||
itemStack = ItemManager.combs.getStackForType(CombType.STARK);
|
||||
ThaumcraftApi.registerObjectTag(itemStack.itemID, itemStack.getItemDamage(), tags);
|
||||
|
||||
// Forestry's wood
|
||||
itemStack = BlockInterface.getBlock("log1");
|
||||
tags = new ObjectTags().add(EnumTag.WOOD, 8);
|
||||
ThaumcraftApi.registerComplexObjectTag(itemStack.itemID, -1, tags);
|
||||
itemStack = BlockInterface.getBlock("log2"); // Same tags
|
||||
ThaumcraftApi.registerComplexObjectTag(itemStack.itemID, -1, tags);
|
||||
itemStack = BlockInterface.getBlock("log3"); // Same tags.
|
||||
ThaumcraftApi.registerComplexObjectTag(itemStack.itemID, -1, tags);
|
||||
itemStack = BlockInterface.getBlock("log4"); // Still same tags.
|
||||
ThaumcraftApi.registerComplexObjectTag(itemStack.itemID, -1, tags);
|
||||
|
||||
itemStack = ItemInterface.getItem("sapling");
|
||||
tags = new ObjectTags().add(EnumTag.PLANT, 4).add(EnumTag.WOOD, 2);
|
||||
ThaumcraftApi.registerComplexObjectTag(itemStack.itemID, -1, tags);
|
||||
|
||||
// BEES!
|
||||
itemStack = ItemInterface.getItem("beeDroneGE");
|
||||
tags = new ObjectTags().add(EnumTag.INSECT, 1).add(EnumTag.FLIGHT, 2);
|
||||
ThaumcraftApi.registerComplexObjectTag(itemStack.itemID, -1, tags); // All drones
|
||||
|
||||
tags = new ObjectTags(itemStack.itemID, -1).add(EnumTag.VALUABLE, 4); // Get drone tags & add valuable
|
||||
itemStack = ItemInterface.getItem("beePrincessGE");
|
||||
ThaumcraftApi.registerComplexObjectTag(itemStack.itemID, -1, tags); // All princesses.
|
||||
|
||||
tags = new ObjectTags().add(EnumTag.VALUABLE, 8).add(EnumTag.INSECT, 2).add(EnumTag.FLIGHT, 4);
|
||||
itemStack = ItemInterface.getItem("beeQueenGE");
|
||||
ThaumcraftApi.registerComplexObjectTag(itemStack.itemID, -1, tags); //All queens.
|
||||
}
|
||||
}
|
||||
@@ -4,7 +4,10 @@ import java.util.List;
|
||||
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import forestry.api.core.Tabs;
|
||||
import forestry.api.recipes.RecipeManagers;
|
||||
import thaumicbees.item.types.CapsuleType;
|
||||
import thaumicbees.item.types.LiquidType;
|
||||
import thaumicbees.main.CommonProxy;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.creativetab.CreativeTabs;
|
||||
@@ -21,129 +24,33 @@ import net.minecraftforge.liquids.LiquidStack;
|
||||
|
||||
public class ItemCapsule extends Item
|
||||
{
|
||||
public enum Type
|
||||
{
|
||||
MAGIC("Magic Capsule", 2000, 0),
|
||||
;
|
||||
public String name;
|
||||
public int capacity;
|
||||
public int iconIdx;
|
||||
|
||||
private Type(String n, int c, int idx)
|
||||
{
|
||||
this.name = n;
|
||||
this.capacity = c;
|
||||
this.iconIdx = idx;
|
||||
}
|
||||
}
|
||||
private CapsuleType capsuleType;
|
||||
|
||||
public enum Liquid
|
||||
{ // Incidentally, Item meta is the liquid ID.
|
||||
EMPTY("", "Empty", 16),
|
||||
// Vanilla
|
||||
WATER("water", "Water", 17),
|
||||
LAVA("lava", "Lava", 18),
|
||||
// Forestry
|
||||
BIOMASS("biomass", "Biomass", 19),
|
||||
BIOFUEL("biofuel", "Biofuel", 20),
|
||||
// Buildcraft
|
||||
OIL("Oil", "Oil", 21),
|
||||
FUEL("Fuel", "Fuel", 22),
|
||||
// More Forestry
|
||||
SEEDOIL("seedoil", "Seed Oil", 23),
|
||||
HONEY("honey", "Honey", 24),
|
||||
JUICE("juice", "Juice", 25),
|
||||
CRUSHEDICE("ice", "Crushed Ice", 26),
|
||||
MILK("milk", "Milk", 27),
|
||||
// ExtraBees liquids
|
||||
ACID("acid", "Acid", 28),
|
||||
POISON("poison", "Poison", 29),
|
||||
LIQUIDNITROGEN("liquidNitrogen", "Liquid Nitrogen", 30),
|
||||
DNA("liquidDNA", "Liquid DNA", 31),
|
||||
// Railcraft
|
||||
CREOSOTEOIL("Creosote Oil", "Creosote Oil", 32),
|
||||
STEAM("Steam", "Steam", 33),
|
||||
;
|
||||
public String liquidID;
|
||||
public String displayName;
|
||||
public int iconIdx;
|
||||
public boolean available = false;
|
||||
|
||||
private Liquid(String l, String display, int idx)
|
||||
{
|
||||
this.liquidID = l;
|
||||
this.displayName = display;
|
||||
this.iconIdx = idx;
|
||||
}
|
||||
}
|
||||
|
||||
private Type capsuleType;
|
||||
|
||||
public ItemCapsule(Type type, int itemId)
|
||||
public ItemCapsule(CapsuleType type, int itemId)
|
||||
{
|
||||
super(itemId);
|
||||
this.capsuleType = type;
|
||||
this.setTextureFile(CommonProxy.TCBEES_LIQUIDS_IMAGE);
|
||||
this.setCreativeTab(CreativeTabs.tabMisc);
|
||||
this.setCreativeTab(Tabs.tabApiculture);
|
||||
this.setHasSubtypes(true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getItemDisplayName(ItemStack itemStack)
|
||||
{
|
||||
return Liquid.values()[itemStack.getItemDamage()].displayName + " " + this.capsuleType.name;
|
||||
return LiquidType.values()[itemStack.getItemDamage()].displayName + " " + this.capsuleType.name;
|
||||
}
|
||||
|
||||
public ItemStack getCapsuleForLiquid(Liquid l)
|
||||
public ItemStack getCapsuleForLiquid(LiquidType l)
|
||||
{
|
||||
return new ItemStack(this, 1, l.ordinal());
|
||||
}
|
||||
|
||||
public void setUpLiquids()
|
||||
{
|
||||
ItemStack empty = new ItemStack(this, 1, 0);
|
||||
ItemStack filled;
|
||||
LiquidStack liquid = null;
|
||||
|
||||
for (Liquid l : Liquid.values())
|
||||
{
|
||||
switch (l)
|
||||
{
|
||||
case EMPTY:
|
||||
liquid = null;
|
||||
break;
|
||||
case WATER:
|
||||
liquid = new LiquidStack(Block.waterStill, this.capsuleType.capacity);
|
||||
break;
|
||||
case LAVA:
|
||||
liquid = new LiquidStack(Block.lavaStill, this.capsuleType.capacity);
|
||||
break;
|
||||
default:
|
||||
liquid = LiquidDictionary.getLiquid(l.liquidID, this.capsuleType.capacity);
|
||||
break;
|
||||
}
|
||||
|
||||
if (liquid != null)
|
||||
{
|
||||
filled = new ItemStack(this, 1, l.ordinal());
|
||||
LiquidContainerRegistry.registerLiquid(new LiquidContainerData(liquid, filled, empty));
|
||||
|
||||
// Register with Squeezer/Bottler
|
||||
RecipeManagers.bottlerManager.addRecipe(5, liquid, empty, filled);
|
||||
RecipeManagers.squeezerManager.addRecipe(10, new ItemStack[] {filled} , liquid,
|
||||
ItemManager.wax.getStackForType(ItemWax.WaxType.MAGIC), 20);
|
||||
l.available = true;
|
||||
}
|
||||
}
|
||||
// Empty will be set to unavailable. Obviously, it always is.
|
||||
Liquid.EMPTY.available = true;
|
||||
}
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public void getSubItems(int par1, CreativeTabs tab, List itemList)
|
||||
{
|
||||
for (Liquid l : Liquid.values())
|
||||
for (LiquidType l : LiquidType.values())
|
||||
{
|
||||
if (l.available)
|
||||
{
|
||||
@@ -166,7 +73,7 @@ public class ItemCapsule extends Item
|
||||
int index = 0;
|
||||
if (pass == 0)
|
||||
{
|
||||
index = Liquid.values()[metadata].iconIdx;
|
||||
index = LiquidType.values()[metadata].iconIdx;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -2,52 +2,23 @@ package thaumicbees.item;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import thaumicbees.item.ItemPollen.PollenType;
|
||||
import thaumicbees.item.types.CombType;
|
||||
import thaumicbees.main.CommonProxy;
|
||||
import thaumicbees.main.ThaumicBees;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import forestry.api.core.Tabs;
|
||||
import net.minecraft.creativetab.CreativeTabs;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
|
||||
public class ItemComb extends Item
|
||||
{
|
||||
public enum CombType
|
||||
{
|
||||
OCCULT("Occult Comb", 0x6e1c6d, 0xff8fff, true),
|
||||
OTHERWORLDLY("Otherworldy Comb", 0x000056, 0x765cc1, true),
|
||||
PAPERY("Papery Comb", 0x503900, 0xbd9a30, true),
|
||||
STARK("Stark Comb", 0xB0B0BC, 0x6e6e79, false),
|
||||
AIRY("Airy Comb", 0xffff7e, 0x717600, false),
|
||||
FIREY("Firey Comb", 0xff3C01, 0x740002, false),
|
||||
WATERY("Watery Comb", 0x0090ff, 0x00308c, false),
|
||||
EARTHY("Earthy Comb", 0x00a000, 0x005100, false),
|
||||
INFUSED("Infused Comb", 0xaa32fc, 0x7A489E, false),
|
||||
INTELLECT("Memory Comb", 0x618fff, 0xb0092e9, false),
|
||||
SKULKING("Furtive Comb", 0x545454, 0xcda6cd, true),
|
||||
;
|
||||
|
||||
private CombType(String pName, int colourA, int colourB, boolean show)
|
||||
{
|
||||
this.name = pName;
|
||||
this.combColour = new int[2];
|
||||
this.combColour[0] = colourA;
|
||||
this.combColour[1] = colourB;
|
||||
|
||||
this.showInList = show;
|
||||
}
|
||||
|
||||
public final String name;
|
||||
public int[] combColour;
|
||||
public boolean showInList;
|
||||
}
|
||||
|
||||
public ItemComb(int itemID)
|
||||
{
|
||||
super(itemID);
|
||||
this.setTextureFile(CommonProxy.FORESTRY_GFX_ITEMS);
|
||||
this.setCreativeTab(CreativeTabs.tabMaterials);
|
||||
this.setCreativeTab(Tabs.tabApiculture);
|
||||
this.setHasSubtypes(true);
|
||||
}
|
||||
|
||||
|
||||
@@ -2,40 +2,23 @@ package thaumicbees.item;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import thaumicbees.item.ItemComb.CombType;
|
||||
import thaumicbees.item.ItemPollen.PollenType;
|
||||
import thaumicbees.item.types.DropType;
|
||||
import thaumicbees.main.CommonProxy;
|
||||
import thaumicbees.main.ThaumicBees;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import forestry.api.core.Tabs;
|
||||
import net.minecraft.creativetab.CreativeTabs;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
|
||||
public class ItemDrop extends Item
|
||||
{
|
||||
public enum DropType
|
||||
{
|
||||
ENCHANTED("Enchanting Drop", 0x6e1c6d, 0xff8fff),
|
||||
INTELLECT("Intellect Drop", 0x25914D, 0x18E072),
|
||||
;
|
||||
|
||||
private DropType(String pName, int colourA, int colourB)
|
||||
{
|
||||
this.name = pName;
|
||||
this.combColour[0] = colourA;
|
||||
this.combColour[1] = colourB;
|
||||
}
|
||||
|
||||
public final String name;
|
||||
public int[] combColour = new int[2];
|
||||
}
|
||||
|
||||
public ItemDrop(int itemID)
|
||||
{
|
||||
super(itemID);
|
||||
this.setTextureFile(CommonProxy.FORESTRY_GFX_ITEMS);
|
||||
this.setCreativeTab(CreativeTabs.tabMaterials);
|
||||
this.setCreativeTab(Tabs.tabApiculture);
|
||||
this.setHasSubtypes(true);
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,139 @@
|
||||
package thaumicbees.item;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import thaumcraft.api.AuraNode;
|
||||
import thaumcraft.api.EnumTag;
|
||||
import thaumcraft.api.ObjectTags;
|
||||
import thaumcraft.api.ThaumcraftApi;
|
||||
import thaumicbees.item.types.HiveFrameType;
|
||||
import thaumicbees.item.types.LiquidType;
|
||||
import thaumicbees.main.CommonProxy;
|
||||
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.world.World;
|
||||
import forestry.api.apiculture.IBee;
|
||||
import forestry.api.apiculture.IBeeGenome;
|
||||
import forestry.api.apiculture.IBeeHousing;
|
||||
import forestry.api.apiculture.IHiveFrame;
|
||||
|
||||
public class ItemMagicHiveFrame extends Item implements IHiveFrame
|
||||
{
|
||||
private HiveFrameType type;
|
||||
|
||||
public ItemMagicHiveFrame(int itemID, HiveFrameType frameType)
|
||||
{
|
||||
super(itemID);
|
||||
this.type = frameType;
|
||||
this.setMaxDamage(this.type.maxDamage);
|
||||
this.setTextureFile(CommonProxy.TCBEES_ITEMS_IMAGE);
|
||||
this.setIconIndex(this.type.iconIdx);
|
||||
this.setMaxStackSize(1);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getItemDisplayName(ItemStack itemStack)
|
||||
{
|
||||
return this.type.frameName;
|
||||
}
|
||||
|
||||
// --------- IHiveFrame functions -----------------------------------------
|
||||
|
||||
@Override
|
||||
public ItemStack frameUsed(IBeeHousing housing, ItemStack frame, IBee queen, int wear)
|
||||
{
|
||||
this.doFluxEffect(housing.getWorld(), housing.getXCoord(), housing.getYCoord(), housing.getZCoord());
|
||||
frame = this.doWear(housing.getWorld(), housing.getXCoord(), housing.getYCoord(), housing.getZCoord(), frame, wear);
|
||||
|
||||
return frame;
|
||||
}
|
||||
|
||||
private void doFluxEffect(World w, int x, int y, int z)
|
||||
{
|
||||
if (this.type.flux != null && w.rand.nextInt(5) <= 1)
|
||||
{
|
||||
ThaumcraftApi.addFluxToClosest(w, x, y, z, this.type.flux);
|
||||
}
|
||||
}
|
||||
|
||||
private ItemStack doWear(World w, int x, int y, int z, ItemStack frame, int wear)
|
||||
{
|
||||
int damage = wear;
|
||||
|
||||
if (this.type.auraPerUse > 0)
|
||||
{
|
||||
// Attempt to use aura for the frame.
|
||||
if (!ThaumcraftApi.decreaseClosestAura(w, x, y, z, this.type.auraPerUse, true))
|
||||
{
|
||||
// Insufficient aura, or no nearby node.
|
||||
damage = wear + this.type.auraPerUse;
|
||||
}
|
||||
}
|
||||
|
||||
frame.setItemDamage(frame.getItemDamage() + damage);
|
||||
|
||||
if (frame.getItemDamage() >= frame.getMaxDamage())
|
||||
{
|
||||
// Break!
|
||||
frame = null;
|
||||
}
|
||||
|
||||
return frame;
|
||||
}
|
||||
|
||||
@Override
|
||||
public float getTerritoryModifier(IBeeGenome genome)
|
||||
{
|
||||
return this.type.territoryMod;
|
||||
}
|
||||
|
||||
@Override
|
||||
public float getMutationModifier(IBeeGenome genome, IBeeGenome mate)
|
||||
{
|
||||
return this.type.mutationMod;
|
||||
}
|
||||
|
||||
@Override
|
||||
public float getLifespanModifier(IBeeGenome genome, IBeeGenome mate)
|
||||
{
|
||||
return this.type.lifespanMod;
|
||||
}
|
||||
|
||||
@Override
|
||||
public float getProductionModifier(IBeeGenome genome)
|
||||
{
|
||||
return this.type.productionMod;
|
||||
}
|
||||
|
||||
@Override
|
||||
public float getFloweringModifier(IBeeGenome genome)
|
||||
{
|
||||
return this.type.floweringMod;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isSealed()
|
||||
{
|
||||
return this.type.isSealed;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isSelfLighted()
|
||||
{
|
||||
return this.type.isLit;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isSunlightSimulated()
|
||||
{
|
||||
return this.type.isSunlit;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isHellish()
|
||||
{
|
||||
return this.type.isHellish;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,23 +1,29 @@
|
||||
package thaumicbees.item;
|
||||
|
||||
import cpw.mods.fml.common.FMLLog;
|
||||
import cpw.mods.fml.common.event.FMLInterModComms;
|
||||
import cpw.mods.fml.common.registry.GameRegistry;
|
||||
import cpw.mods.fml.common.registry.LanguageRegistry;
|
||||
import thaumicbees.compat.TCMiscResource;
|
||||
import thaumicbees.compat.TCShardType;
|
||||
import thaumicbees.compat.ThaumcraftCompat;
|
||||
import thaumicbees.item.ItemComb.CombType;
|
||||
import thaumicbees.item.ItemDrop.DropType;
|
||||
import thaumicbees.item.ItemMiscResources.ResourceType;
|
||||
import thaumicbees.item.ItemPropolis.PropolisType;
|
||||
import thaumicbees.item.ItemWax.WaxType;
|
||||
import thaumicbees.item.types.CapsuleType;
|
||||
import thaumicbees.item.types.CombType;
|
||||
import thaumicbees.item.types.DropType;
|
||||
import thaumicbees.item.types.HiveFrameType;
|
||||
import thaumicbees.item.types.PropolisType;
|
||||
import thaumicbees.item.types.ResourceType;
|
||||
import thaumicbees.item.types.WaxType;
|
||||
import thaumicbees.main.ThaumicBees;
|
||||
import thaumicbees.storage.BackpackDefinition;
|
||||
import thaumicbees.thaumcraft.TCMiscResource;
|
||||
import thaumicbees.thaumcraft.TCShardType;
|
||||
import thaumicbees.thaumcraft.ThaumcraftCompat;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraftforge.common.Configuration;
|
||||
import net.minecraftforge.common.Property;
|
||||
import net.minecraftforge.liquids.LiquidContainerData;
|
||||
import net.minecraftforge.liquids.LiquidContainerRegistry;
|
||||
import net.minecraftforge.liquids.LiquidDictionary;
|
||||
import net.minecraftforge.liquids.LiquidStack;
|
||||
import forestry.api.apiculture.BeeManager;
|
||||
import forestry.api.core.BlockInterface;
|
||||
@@ -33,10 +39,18 @@ public class ItemManager
|
||||
public static ItemPropolis propolis;
|
||||
public static ItemDrop drops;
|
||||
public static ItemPollen pollen;
|
||||
public static ItemSolidFlux solidFlux;
|
||||
public static ItemMiscResources miscResources;
|
||||
|
||||
//----- Liquid Capsules --------------------
|
||||
public static ItemCapsule magicCapsule;
|
||||
|
||||
//----- Apiary Frames ----------------------
|
||||
public static ItemMagicHiveFrame hiveFrameMagic;
|
||||
public static ItemMagicHiveFrame hiveFrameResilient;
|
||||
public static ItemMagicHiveFrame hiveFrameGentle;
|
||||
public static ItemMagicHiveFrame hiveFrameMetabolic;
|
||||
public static ItemMagicHiveFrame hiveFrameNecrotic;
|
||||
|
||||
//----- Thaumcraft Items -------------------
|
||||
public static Item tcFilledJar;
|
||||
@@ -74,10 +88,23 @@ public class ItemManager
|
||||
BackpackManager.backpackInterface.addBackpack(configFile.getItem("thaumaturgePack2", itemIDBase++).getInt(),
|
||||
def, EnumBackpackType.T2);
|
||||
// Add additional items from configs to backpack.
|
||||
FMLInterModComms.sendMessage("Forestry", "add-backpack-items", "thaumaturge@" + ThaumicBees.getInstanceConfig().ThaumaturgeExtraItems);
|
||||
if (ThaumicBees.getInstanceConfig().ThaumaturgeExtraItems.length() > 0)
|
||||
{
|
||||
FMLLog.info("Attempting to add extra items to Thaumaturge's backpack! If you get an error, check your ThaumicBees.conf.");
|
||||
FMLInterModComms.sendMessage("Forestry", "add-backpack-items", "thaumaturge@" + ThaumicBees.getInstanceConfig().ThaumaturgeExtraItems);
|
||||
}
|
||||
|
||||
|
||||
ItemManager.magicCapsule = new ItemCapsule(CapsuleType.MAGIC, configFile.getItem("magicCapsule", itemIDBase++).getInt());
|
||||
|
||||
ItemManager.magicCapsule = new ItemCapsule(ItemCapsule.Type.MAGIC, configFile.getItem("magicCapsule", itemIDBase++).getInt());
|
||||
ItemManager.pollen = new ItemPollen(configFile.getItem("pollen", itemIDBase++).getInt());
|
||||
ItemManager.solidFlux = new ItemSolidFlux(configFile.getItem("fluxCrystal", itemIDBase++).getInt());
|
||||
|
||||
ItemManager.hiveFrameMagic = new ItemMagicHiveFrame(configFile.getItem("frameMagic", itemIDBase++).getInt(), HiveFrameType.MAGIC);
|
||||
ItemManager.hiveFrameResilient = new ItemMagicHiveFrame(configFile.getItem("frameResilient", itemIDBase++).getInt(), HiveFrameType.RESILIENT);
|
||||
ItemManager.hiveFrameGentle = new ItemMagicHiveFrame(configFile.getItem("frameGentle", itemIDBase++).getInt(), HiveFrameType.GENTLE);
|
||||
ItemManager.hiveFrameMetabolic = new ItemMagicHiveFrame(configFile.getItem("frameMetabolic", itemIDBase++).getInt(), HiveFrameType.METABOLIC);
|
||||
ItemManager.hiveFrameNecrotic = new ItemMagicHiveFrame(configFile.getItem("frameNecrotic", itemIDBase++).getInt(), HiveFrameType.NECROTIC);
|
||||
}
|
||||
|
||||
public static void setupCrafting()
|
||||
@@ -88,36 +115,32 @@ public class ItemManager
|
||||
ItemStack output = new ItemStack(tcEssentiaBottle);
|
||||
output.stackSize = 8;
|
||||
GameRegistry.addRecipe(output, new Object[]
|
||||
{
|
||||
" C ", "GPG", "PGP",
|
||||
'G', ItemManager.wax,
|
||||
'C', Item.clay,
|
||||
'P', Block.thinGlass
|
||||
});
|
||||
{
|
||||
" C ", "GPG", "PGP",
|
||||
'G', ItemManager.wax,
|
||||
'C', Item.clay,
|
||||
'P', Block.thinGlass
|
||||
});
|
||||
|
||||
output = new ItemStack(tcEssentiaBottle);
|
||||
output.stackSize = 4;
|
||||
GameRegistry.addRecipe(output, new Object[]
|
||||
{
|
||||
" W ", "W W", " W ",
|
||||
'W', ItemManager.wax
|
||||
});
|
||||
GameRegistry.addRecipe(output, new Object[] {
|
||||
" W ", "W W", " W ",
|
||||
'W', ItemManager.wax
|
||||
});
|
||||
|
||||
// Magic capsules
|
||||
output = new ItemStack(magicCapsule); output.stackSize = 4;
|
||||
GameRegistry.addRecipe(output, new Object[]
|
||||
{
|
||||
"WWW",
|
||||
'W', ItemManager.wax.getStackForType(ItemWax.WaxType.MAGIC)
|
||||
});
|
||||
GameRegistry.addRecipe(output, new Object[] {
|
||||
"WWW",
|
||||
'W', ItemManager.wax.getStackForType(WaxType.MAGIC)
|
||||
});
|
||||
|
||||
output = new ItemStack(tcMiscResource, 1, TCMiscResource.KNOWLEDGE_FRAGMENT.ordinal());
|
||||
GameRegistry.addShapelessRecipe(output, new Object[]
|
||||
{
|
||||
ItemManager.miscResources.getStackForType(ResourceType.LORE_FRAGMENT),
|
||||
ItemManager.miscResources.getStackForType(ResourceType.LORE_FRAGMENT),
|
||||
ItemManager.miscResources.getStackForType(ResourceType.LORE_FRAGMENT),
|
||||
ItemManager.miscResources.getStackForType(ResourceType.LORE_FRAGMENT)
|
||||
});
|
||||
GameRegistry.addRecipe(output, new Object[] {
|
||||
"FF", "FF",
|
||||
'F', ItemManager.miscResources.getStackForType(ResourceType.LORE_FRAGMENT)
|
||||
});
|
||||
|
||||
// T1 Thaumaturge's backpack
|
||||
GameRegistry.addRecipe(new ItemStack(ItemManager.thaumaturgeBackpackT1), new Object[] {
|
||||
@@ -126,14 +149,37 @@ public class ItemManager
|
||||
'W', Block.cloth,
|
||||
'N', Item.goldNugget,
|
||||
'C', Block.chest
|
||||
});
|
||||
});
|
||||
|
||||
// Concentrated Fertilizer -> Forestry fertilizer
|
||||
inputStack = ItemManager.miscResources.getStackForType(ResourceType.EXTENDED_FERTILIZER);
|
||||
output = ItemInterface.getItem("fertilizerCompound");
|
||||
output.stackSize = 6;
|
||||
GameRegistry.addRecipe(output, new Object[] {
|
||||
" S ", " F ", " S ",
|
||||
'F', inputStack,
|
||||
'S', Block.sand
|
||||
});
|
||||
GameRegistry.addRecipe(output, new Object[] {
|
||||
" ", "SFS", " ",
|
||||
'F', inputStack,
|
||||
'S', Block.sand
|
||||
});
|
||||
|
||||
output = output.copy();
|
||||
output.stackSize = 12;
|
||||
GameRegistry.addRecipe(output, new Object[] {
|
||||
"aaa", "aFa", "aaa",
|
||||
'F', inputStack,
|
||||
'a', ItemInterface.getItem("ash")
|
||||
});
|
||||
|
||||
// "bottling" Intellect drops
|
||||
GameRegistry.addRecipe(new ItemStack(Item.expBottle), new Object[] {
|
||||
"DDD", "DBD", "DDD",
|
||||
'D', ItemManager.drops.getStackForType(DropType.INTELLECT),
|
||||
'B', Item.glassBottle
|
||||
});
|
||||
});
|
||||
|
||||
// 20 is the 'average' time to centrifuge a comb.
|
||||
RecipeManagers.centrifugeManager.addRecipe(20, ItemManager.combs.getStackForType(CombType.OCCULT),
|
||||
@@ -205,14 +251,17 @@ public class ItemManager
|
||||
"WXW", "WTW", "WWW",
|
||||
'X', Item.diamond,
|
||||
'W', inputStack,
|
||||
'T', new ItemStack(ItemManager.thaumaturgeBackpackT1) });
|
||||
'T', new ItemStack(ItemManager.thaumaturgeBackpackT1)
|
||||
});
|
||||
|
||||
output = BlockInterface.getBlock("candle");
|
||||
output.stackSize = 24;
|
||||
RecipeManagers.carpenterManager.addRecipe(30, new LiquidStack(Block.waterStill, 600), null, output, new Object[] {
|
||||
" S ", "WWW", "WWW",
|
||||
'W', ItemManager.wax,
|
||||
'S', Item.silk });
|
||||
'S', Item.silk
|
||||
});
|
||||
|
||||
output = BlockInterface.getBlock("candle");
|
||||
output.stackSize = 6;
|
||||
inputStack = ItemInterface.getItem("craftingMaterial");
|
||||
@@ -220,7 +269,8 @@ public class ItemManager
|
||||
RecipeManagers.carpenterManager.addRecipe(30, new LiquidStack(Block.waterStill, 600), null, output, new Object[] {
|
||||
"WSW",
|
||||
'W', ItemManager.wax,
|
||||
'S', inputStack });
|
||||
'S', inputStack
|
||||
});
|
||||
|
||||
output = ItemManager.miscResources.getStackForType(ResourceType.AROMATIC_LUMP, 2);
|
||||
RecipeManagers.carpenterManager.addRecipe(30, new LiquidStack(ItemInterface.getItem("liquidHoney").itemID, 1000), null, output, new Object[] {
|
||||
@@ -228,13 +278,14 @@ public class ItemManager
|
||||
'P', ItemInterface.getItem("pollen"),
|
||||
'J', ItemInterface.getItem("royalJelly"),
|
||||
'D', ItemManager.drops.getStackForType(DropType.ENCHANTED)
|
||||
});
|
||||
});
|
||||
|
||||
RecipeManagers.carpenterManager.addRecipe(30, new LiquidStack(ItemInterface.getItem("liquidHoney").itemID, 1000), null, output, new Object[] {
|
||||
" J ", "PDP", " J ",
|
||||
'P', ItemInterface.getItem("pollen"),
|
||||
'J', ItemInterface.getItem("royalJelly"),
|
||||
'D', ItemManager.drops.getStackForType(DropType.ENCHANTED)
|
||||
});
|
||||
});
|
||||
// Make Aromatic Lumps a swarmer inducer. Chance is /1000.
|
||||
BeeManager.inducers.put(output, 80);
|
||||
|
||||
@@ -243,7 +294,42 @@ public class ItemManager
|
||||
public static void postInit()
|
||||
{
|
||||
// Forestry liquids aren't registered until PostInit, that's why we wait until now to register them.
|
||||
ItemManager.magicCapsule.setUpLiquids();
|
||||
/*ItemStack empty = new ItemStack(this, 1, 0);
|
||||
ItemStack filled;
|
||||
LiquidStack liquid = null;
|
||||
|
||||
for (Liquid l : Liquid.values())
|
||||
{
|
||||
switch (l)
|
||||
{
|
||||
case EMPTY:
|
||||
liquid = null;
|
||||
break;
|
||||
case WATER:
|
||||
liquid = new LiquidStack(Block.waterStill, this.capsuleType.capacity);
|
||||
break;
|
||||
case LAVA:
|
||||
liquid = new LiquidStack(Block.lavaStill, this.capsuleType.capacity);
|
||||
break;
|
||||
default:
|
||||
liquid = LiquidDictionary.getLiquid(l.liquidID, this.capsuleType.capacity);
|
||||
break;
|
||||
}
|
||||
|
||||
if (liquid != null)
|
||||
{
|
||||
filled = new ItemStack(this, 1, l.ordinal());
|
||||
LiquidContainerRegistry.registerLiquid(new LiquidContainerData(liquid, filled, empty));
|
||||
|
||||
// Register with Squeezer/Bottler
|
||||
RecipeManagers.bottlerManager.addRecipe(5, liquid, empty, filled);
|
||||
RecipeManagers.squeezerManager.addRecipe(10, new ItemStack[] {filled} , liquid,
|
||||
ItemManager.wax.getStackForType(WaxType.MAGIC), 20);
|
||||
l.available = true;
|
||||
}
|
||||
}
|
||||
// Empty will be set to unavailable. Obviously, it always is.
|
||||
Liquid.EMPTY.available = true;*/
|
||||
}
|
||||
|
||||
}
|
||||
@@ -4,8 +4,8 @@ import java.util.List;
|
||||
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import thaumicbees.item.ItemPropolis.PropolisType;
|
||||
import thaumicbees.item.ItemWax.WaxType;
|
||||
import forestry.api.core.Tabs;
|
||||
import thaumicbees.item.types.ResourceType;
|
||||
import thaumicbees.main.CommonProxy;
|
||||
import net.minecraft.creativetab.CreativeTabs;
|
||||
import net.minecraft.item.Item;
|
||||
@@ -13,26 +13,11 @@ import net.minecraft.item.ItemStack;
|
||||
|
||||
public class ItemMiscResources extends Item
|
||||
{
|
||||
public enum ResourceType
|
||||
{
|
||||
LORE_FRAGMENT("Lore Fragment", 2),
|
||||
AROMATIC_LUMP("Aromatic Lump", 3),
|
||||
;
|
||||
|
||||
private ResourceType(String n, int i)
|
||||
{
|
||||
this.name = n;
|
||||
this.iconIdx = i;
|
||||
}
|
||||
public String name;
|
||||
public int iconIdx;
|
||||
}
|
||||
|
||||
public ItemMiscResources(int ID)
|
||||
{
|
||||
super(ID);
|
||||
this.setTextureFile(CommonProxy.TCBEES_ITEMS_IMAGE);
|
||||
this.setCreativeTab(CreativeTabs.tabMaterials);
|
||||
this.setCreativeTab(Tabs.tabApiculture);
|
||||
this.setHasSubtypes(true);
|
||||
}
|
||||
|
||||
@@ -53,7 +38,10 @@ public class ItemMiscResources extends Item
|
||||
super.getSubItems(id, tabs, list);
|
||||
for (ResourceType type : ResourceType.values())
|
||||
{
|
||||
list.add(this.getStackForType(type));
|
||||
if (type.showInList)
|
||||
{
|
||||
list.add(this.getStackForType(type));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -2,38 +2,23 @@ package thaumicbees.item;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import thaumicbees.item.ItemComb.CombType;
|
||||
import thaumicbees.item.types.PollenType;
|
||||
import thaumicbees.main.CommonProxy;
|
||||
import thaumicbees.main.ThaumicBees;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import forestry.api.core.Tabs;
|
||||
import net.minecraft.creativetab.CreativeTabs;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
|
||||
public class ItemPollen extends Item
|
||||
{
|
||||
public enum PollenType
|
||||
{
|
||||
UNUSUAL("Unusual Pollen", 0xA03059, 0xD8417B),
|
||||
;
|
||||
|
||||
private PollenType(String pName, int colourA, int colourB)
|
||||
{
|
||||
this.name = pName;
|
||||
this.combColour[0] = colourA;
|
||||
this.combColour[1] = colourB;
|
||||
}
|
||||
|
||||
public final String name;
|
||||
public int[] combColour = new int[2];
|
||||
}
|
||||
|
||||
public ItemPollen(int itemID)
|
||||
{
|
||||
super(itemID);
|
||||
this.setTextureFile(CommonProxy.FORESTRY_GFX_ITEMS);
|
||||
this.setCreativeTab(CreativeTabs.tabMaterials);
|
||||
this.setCreativeTab(Tabs.tabApiculture);
|
||||
this.setHasSubtypes(true);
|
||||
}
|
||||
public ItemStack getStackForType(PollenType type)
|
||||
|
||||
@@ -2,41 +2,22 @@ package thaumicbees.item;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import thaumicbees.item.ItemPollen.PollenType;
|
||||
import thaumicbees.item.ItemWax.WaxType;
|
||||
import thaumicbees.item.types.PropolisType;
|
||||
import thaumicbees.main.CommonProxy;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import forestry.api.core.Tabs;
|
||||
import net.minecraft.creativetab.CreativeTabs;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
|
||||
public class ItemPropolis extends Item
|
||||
{
|
||||
public enum PropolisType
|
||||
{
|
||||
STARK("Dull Propolis", 0xBBBBBB),
|
||||
AIR("Air Propolis", 0xA19E10),
|
||||
FIRE("Firey Propolis", 0x95132F),
|
||||
WATER("Watery Propolis", 0x1054A1),
|
||||
EARTH("Earthen Propolis", 0x00a000),
|
||||
INFUSED("Infused Propolis", 0xaa32fc),
|
||||
;
|
||||
|
||||
private PropolisType(String pName, int overlayColour)
|
||||
{
|
||||
this.name = pName;
|
||||
this.colour = overlayColour;
|
||||
}
|
||||
|
||||
public String name;
|
||||
public int colour;
|
||||
}
|
||||
|
||||
public ItemPropolis(int id)
|
||||
{
|
||||
super(id);
|
||||
this.setTextureFile(CommonProxy.FORESTRY_GFX_ITEMS);
|
||||
this.setCreativeTab(Tabs.tabApiculture);
|
||||
this.setIconIndex(98);
|
||||
this.setHasSubtypes(true);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,52 @@
|
||||
package thaumicbees.item;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import forestry.api.core.Tabs;
|
||||
import thaumcraft.api.EnumTag;
|
||||
import thaumicbees.main.CommonProxy;
|
||||
import net.minecraft.creativetab.CreativeTabs;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
|
||||
public class ItemSolidFlux extends Item
|
||||
{
|
||||
public ItemSolidFlux(int itemId)
|
||||
{
|
||||
super(itemId);
|
||||
this.setTextureFile(CommonProxy.TCBEES_ITEMS_IMAGE);
|
||||
this.setIconIndex(18);
|
||||
this.setCreativeTab(Tabs.tabApiculture);
|
||||
}
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public void getSubItems(int par1, CreativeTabs tab, List list)
|
||||
{
|
||||
for (EnumTag tag : EnumTag.values())
|
||||
{
|
||||
if (tag == EnumTag.UNKNOWN)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
list.add(new ItemStack(this.itemID, 1, tag.id));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getItemDisplayName(ItemStack stack)
|
||||
{
|
||||
return "Crystalized " + EnumTag.get(stack.getItemDamage()).name;
|
||||
}
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public int getColorFromItemStack(ItemStack stack, int pass)
|
||||
{
|
||||
return EnumTag.get(stack.getItemDamage()).color;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -2,41 +2,23 @@ package thaumicbees.item;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import thaumicbees.item.ItemComb.CombType;
|
||||
import thaumicbees.item.ItemDrop.DropType;
|
||||
import thaumicbees.item.ItemPollen.PollenType;
|
||||
import thaumicbees.item.types.WaxType;
|
||||
import thaumicbees.main.CommonProxy;
|
||||
import thaumicbees.main.ThaumicBees;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import forestry.api.core.Tabs;
|
||||
import net.minecraft.creativetab.CreativeTabs;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
|
||||
public class ItemWax extends Item
|
||||
{
|
||||
public enum WaxType
|
||||
{
|
||||
MAGIC("Magic Wax", false, 0xd242df),
|
||||
;
|
||||
|
||||
private WaxType(String n, boolean sp, int c)
|
||||
{
|
||||
this.name = n;
|
||||
this.sparkly = sp;
|
||||
this.colour = c;
|
||||
}
|
||||
|
||||
public String name;
|
||||
public boolean sparkly;
|
||||
public int colour;
|
||||
}
|
||||
|
||||
public ItemWax(int itemID)
|
||||
{
|
||||
super(itemID);
|
||||
this.setTextureFile(CommonProxy.TCBEES_ITEMS_IMAGE);
|
||||
this.setCreativeTab(CreativeTabs.tabMisc);
|
||||
this.setCreativeTab(Tabs.tabApiculture);
|
||||
this.setHasSubtypes(true);
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
package thaumicbees.item.types;
|
||||
|
||||
public enum CapsuleType
|
||||
{
|
||||
MAGIC("Magic Capsule", 2000, 0),
|
||||
;
|
||||
public String name;
|
||||
public int capacity;
|
||||
public int iconIdx;
|
||||
|
||||
private CapsuleType(String n, int c, int idx)
|
||||
{
|
||||
this.name = n;
|
||||
this.capacity = c;
|
||||
this.iconIdx = idx;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
package thaumicbees.item.types;
|
||||
|
||||
public enum CombType
|
||||
{
|
||||
OCCULT("Occult Comb", 0x6e1c6d, 0xff8fff, true),
|
||||
OTHERWORLDLY("Otherworldy Comb", 0x000056, 0x765cc1, true),
|
||||
PAPERY("Papery Comb", 0x503900, 0xbd9a30, true),
|
||||
STARK("Stark Comb", 0xB0B0BC, 0x6e6e79, false),
|
||||
AIRY("Airy Comb", 0xffff7e, 0x717600, false),
|
||||
FIREY("Firey Comb", 0xff3C01, 0x740002, false),
|
||||
WATERY("Watery Comb", 0x0090ff, 0x00308c, false),
|
||||
EARTHY("Earthy Comb", 0x00a000, 0x005100, false),
|
||||
INFUSED("Infused Comb", 0xaa32fc, 0x7A489E, false),
|
||||
INTELLECT("Memory Comb", 0x618fff, 0xb0092e9, false),
|
||||
SKULKING("Furtive Comb", 0x545454, 0xcda6cd, true),
|
||||
;
|
||||
|
||||
private CombType(String pName, int colourA, int colourB, boolean show)
|
||||
{
|
||||
this.name = pName;
|
||||
this.combColour = new int[2];
|
||||
this.combColour[0] = colourA;
|
||||
this.combColour[1] = colourB;
|
||||
|
||||
this.showInList = show;
|
||||
}
|
||||
|
||||
public final String name;
|
||||
public int[] combColour;
|
||||
public boolean showInList;
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
package thaumicbees.item.types;
|
||||
|
||||
public enum DropType
|
||||
{
|
||||
ENCHANTED("Enchanting Drop", 0x6e1c6d, 0xff8fff),
|
||||
INTELLECT("Intellect Drop", 0x25914D, 0x18E072),
|
||||
;
|
||||
|
||||
private DropType(String pName, int colourA, int colourB)
|
||||
{
|
||||
this.name = pName;
|
||||
this.combColour[0] = colourA;
|
||||
this.combColour[1] = colourB;
|
||||
}
|
||||
|
||||
public final String name;
|
||||
public int[] combColour = new int[2];
|
||||
}
|
||||
@@ -0,0 +1,66 @@
|
||||
package thaumicbees.item.types;
|
||||
|
||||
import thaumcraft.api.EnumTag;
|
||||
import thaumcraft.api.ObjectTags;
|
||||
|
||||
public enum HiveFrameType
|
||||
{
|
||||
MAGIC("Magic Frame", 32, 240, 1f, 1f, 1f, 2f, 2,
|
||||
null),
|
||||
RESILIENT("Resilient Frame", 33, 840, 1f, 1f, 1f, 2f, 2,
|
||||
new ObjectTags().add(EnumTag.ARMOR, 2)),
|
||||
GENTLE("Gentle Frame", 34, 200, 1f, 0.7f, 1.5f, 1.4f, 1,
|
||||
new ObjectTags().add(EnumTag.HEAL, 1).add(EnumTag.LIFE, 1)),
|
||||
METABOLIC("Metabolic Frame", 35, 120, 1f, 1.8f, 1f, 1.2f, 5,
|
||||
new ObjectTags().add(EnumTag.EXCHANGE, 2).add(EnumTag.MOTION, 1).add(EnumTag.FLUX, 1)),
|
||||
NECROTIC("Necrotic Frame", 36, 270, 1f, 1f, 0.4f, 0.75f, 1,
|
||||
new ObjectTags().add(EnumTag.DEATH, 6).add(EnumTag.POISON, 4)),
|
||||
;
|
||||
|
||||
private HiveFrameType(String name, int icon, int damage,
|
||||
float territory, float mutation, float lifespan, float production,
|
||||
int auraUse, ObjectTags fluxTags)
|
||||
{
|
||||
this(name, icon, damage, territory, mutation, lifespan, production, 1f, false, false, false, false, auraUse, fluxTags);
|
||||
}
|
||||
|
||||
private HiveFrameType(String name, int icon, int damage,
|
||||
float territory, float mutation, float lifespan, float production, float flowering,
|
||||
boolean sealed, boolean lit, boolean sunlit, boolean hellish,
|
||||
int auraUse, ObjectTags fluxTags)
|
||||
{
|
||||
this.frameName = name;
|
||||
this.iconIdx = icon;
|
||||
this.maxDamage = damage;
|
||||
|
||||
this.territoryMod = territory;
|
||||
this.mutationMod = mutation;
|
||||
this.lifespanMod = lifespan;
|
||||
this.productionMod = production;
|
||||
this.floweringMod = flowering;
|
||||
this.isSealed = sealed;
|
||||
this.isLit = lit;
|
||||
this.isSunlit = sunlit;
|
||||
this.isHellish = hellish;
|
||||
|
||||
this.auraPerUse = auraUse;
|
||||
this.flux = fluxTags;
|
||||
}
|
||||
|
||||
public String frameName;
|
||||
public int iconIdx;
|
||||
public int maxDamage;
|
||||
|
||||
public float territoryMod;
|
||||
public float mutationMod;
|
||||
public float lifespanMod;
|
||||
public float productionMod;
|
||||
public float floweringMod;
|
||||
public boolean isSealed;
|
||||
public boolean isLit;
|
||||
public boolean isSunlit;
|
||||
public boolean isHellish;
|
||||
|
||||
public ObjectTags flux;
|
||||
public int auraPerUse;
|
||||
}
|
||||
@@ -0,0 +1,50 @@
|
||||
package thaumicbees.item.types;
|
||||
|
||||
public enum LiquidType
|
||||
{
|
||||
// Incidentally, Item meta is the liquid ID.
|
||||
|
||||
// Args are: forgeLiquidID, Display Name, Icon idx
|
||||
EMPTY("", "Empty", 16),
|
||||
|
||||
// Vanilla
|
||||
WATER("water", "Water", 17),
|
||||
LAVA("lava", "Lava", 18),
|
||||
|
||||
// Forestry
|
||||
BIOMASS("biomass", "Biomass", 19),
|
||||
BIOFUEL("biofuel", "Biofuel", 20),
|
||||
|
||||
// Buildcraft
|
||||
OIL("Oil", "Oil", 21),
|
||||
FUEL("Fuel", "Fuel", 22),
|
||||
|
||||
// More Forestry
|
||||
SEEDOIL("seedoil", "Seed Oil", 23),
|
||||
HONEY("honey", "Honey", 24),
|
||||
JUICE("juice", "Juice", 25),
|
||||
CRUSHEDICE("ice", "Crushed Ice", 26),
|
||||
MILK("milk", "Milk", 27),
|
||||
|
||||
// ExtraBees liquids
|
||||
ACID("acid", "Acid", 28),
|
||||
POISON("poison", "Poison", 29),
|
||||
LIQUIDNITROGEN("liquidNitrogen", "Liquid Nitrogen", 30),
|
||||
DNA("liquidDNA", "Liquid DNA", 31),
|
||||
|
||||
// Railcraft
|
||||
CREOSOTEOIL("Creosote Oil", "Creosote Oil", 32),
|
||||
STEAM("Steam", "Steam", 33),
|
||||
;
|
||||
public String liquidID;
|
||||
public String displayName;
|
||||
public int iconIdx;
|
||||
public boolean available = false;
|
||||
|
||||
private LiquidType(String l, String display, int idx)
|
||||
{
|
||||
this.liquidID = l;
|
||||
this.displayName = display;
|
||||
this.iconIdx = idx;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
package thaumicbees.item.types;
|
||||
|
||||
public enum PollenType
|
||||
{
|
||||
UNUSUAL("Unusual Pollen", 0xA03059, 0xD8417B),
|
||||
;
|
||||
|
||||
private PollenType(String pName, int colourA, int colourB)
|
||||
{
|
||||
this.name = pName;
|
||||
this.combColour[0] = colourA;
|
||||
this.combColour[1] = colourB;
|
||||
}
|
||||
|
||||
public final String name;
|
||||
public int[] combColour = new int[2];
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
package thaumicbees.item.types;
|
||||
|
||||
public enum PropolisType
|
||||
{
|
||||
STARK("Dull Propolis", 0xBBBBBB),
|
||||
AIR("Air Propolis", 0xA19E10),
|
||||
FIRE("Firey Propolis", 0x95132F),
|
||||
WATER("Watery Propolis", 0x1054A1),
|
||||
EARTH("Earthen Propolis", 0x00a000),
|
||||
INFUSED("Infused Propolis", 0xaa32fc),
|
||||
;
|
||||
|
||||
private PropolisType(String pName, int overlayColour)
|
||||
{
|
||||
this.name = pName;
|
||||
this.colour = overlayColour;
|
||||
}
|
||||
|
||||
public String name;
|
||||
public int colour;
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
package thaumicbees.item.types;
|
||||
|
||||
public enum ResourceType
|
||||
{
|
||||
LORE_FRAGMENT("Lore Fragment", 2, true),
|
||||
AROMATIC_LUMP("Aromatic Lump", 3, true),
|
||||
EXTENDED_FERTILIZER("Concentrated Compound", 4, true),
|
||||
|
||||
// Dummy items for Thaumanomicon research icons.
|
||||
RESEARCH_BeeInfusion("Bee Infusion", 240, false),
|
||||
;
|
||||
|
||||
private ResourceType(String n, int i, boolean show)
|
||||
{
|
||||
this.name = n;
|
||||
this.iconIdx = i;
|
||||
this.showInList = show;
|
||||
}
|
||||
public String name;
|
||||
public int iconIdx;
|
||||
public boolean showInList;
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
package thaumicbees.item.types;
|
||||
|
||||
public enum WaxType
|
||||
{
|
||||
MAGIC("Magic Wax", false, 0xd242df),
|
||||
;
|
||||
|
||||
private WaxType(String n, boolean sp, int c)
|
||||
{
|
||||
this.name = n;
|
||||
this.sparkly = sp;
|
||||
this.colour = c;
|
||||
}
|
||||
|
||||
public String name;
|
||||
public boolean sparkly;
|
||||
public int colour;
|
||||
}
|
||||
@@ -1,5 +1,6 @@
|
||||
package thaumicbees.main;
|
||||
|
||||
import cpw.mods.fml.common.FMLLog;
|
||||
import cpw.mods.fml.common.Mod;
|
||||
import cpw.mods.fml.common.SidedProxy;
|
||||
import cpw.mods.fml.common.event.*;
|
||||
@@ -7,6 +8,7 @@ import cpw.mods.fml.common.registry.LanguageRegistry;
|
||||
import forestry.api.apiculture.EnumBeeType;
|
||||
import forestry.api.core.ItemInterface;
|
||||
|
||||
import java.io.InputStream;
|
||||
import java.io.PrintStream;
|
||||
import java.lang.reflect.Field;
|
||||
|
||||
@@ -22,10 +24,10 @@ import thaumcraft.api.*;
|
||||
import thaumicbees.bees.ThaumicBeesPlugin;
|
||||
import thaumicbees.bees.genetics.BeeSpecies;
|
||||
import thaumicbees.block.BlockManager;
|
||||
import thaumicbees.compat.ThaumcraftCompat;
|
||||
import thaumicbees.item.ItemComb;
|
||||
import thaumicbees.item.ItemWax;
|
||||
import thaumicbees.item.ItemManager;
|
||||
import thaumicbees.thaumcraft.ThaumcraftCompat;
|
||||
|
||||
@Mod(
|
||||
modid="ThaumicBees",
|
||||
@@ -46,12 +48,14 @@ public class ThaumicBees
|
||||
private String configsPath;
|
||||
private Configuration config;
|
||||
private ThaumicBeesConfiguration modConfig;
|
||||
private ThaumicBeesPlugin plugin;
|
||||
|
||||
public ThaumicBees()
|
||||
{
|
||||
this.modConfig = new ThaumicBeesConfiguration();
|
||||
|
||||
this.modConfig.ThaumcraftRecipesAdded = false;
|
||||
this.plugin = new ThaumicBeesPlugin();
|
||||
}
|
||||
|
||||
@Mod.PreInit
|
||||
@@ -63,6 +67,9 @@ public class ThaumicBees
|
||||
this.config.load();
|
||||
// Allow us to set up some extra stuff.
|
||||
this.modConfig.doMiscConfig(this.config);
|
||||
plugin.preInit();
|
||||
|
||||
ThaumcraftCompat.registerResearch();
|
||||
}
|
||||
|
||||
@Mod.Init
|
||||
@@ -82,14 +89,16 @@ public class ThaumicBees
|
||||
ItemManager.setupItems(this.config);
|
||||
this.config.save();
|
||||
|
||||
ItemManager.setupCrafting();
|
||||
|
||||
if (this.modConfig.AddThaumcraftItemsToBackpacks)
|
||||
{
|
||||
ThaumcraftCompat.setupBackpacks();
|
||||
}
|
||||
ThaumcraftCompat.setupResearch();
|
||||
ThaumcraftCompat.setupAspects();
|
||||
// Vanilla & Forestry mechanics setup
|
||||
ItemManager.setupCrafting();
|
||||
// Thaumcraft-specific crafting (Infusions, & Vis-needing)
|
||||
ThaumcraftCompat.setupCrafting();
|
||||
|
||||
ThaumcraftCompat.setupBackpacks();
|
||||
ThaumcraftCompat.setupItemAspects();
|
||||
|
||||
plugin.doInit();
|
||||
}
|
||||
|
||||
@Mod.PostInit
|
||||
@@ -100,6 +109,10 @@ public class ThaumicBees
|
||||
|
||||
// Forestry has init'd by this point.
|
||||
MinecraftForge.EVENT_BUS.register(this);
|
||||
|
||||
plugin.postInit();
|
||||
|
||||
ThaumcraftCompat.setupResearch();
|
||||
}
|
||||
|
||||
@ForgeSubscribe
|
||||
@@ -107,7 +120,7 @@ public class ThaumicBees
|
||||
{
|
||||
if (!this.modConfig.ThaumcraftRecipesAdded)
|
||||
{
|
||||
ThaumicBeesPlugin.setupBeeInfusions(event.world);
|
||||
ThaumcraftCompat.setupBeeInfusions(event.world);
|
||||
this.modConfig.ThaumcraftRecipesAdded = true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,6 +9,6 @@ public class VersionInfo
|
||||
|
||||
public static final String Logo = "/gfx/thaumicbees/logo.png";
|
||||
|
||||
public static final String Depends = "required-after:Forestry@[1.7.0.2,);required-after:Thaumcraft@[3.0.1c,)";
|
||||
public static final String Depends = "required-after:Forestry@[2.0.0.0,);required-after:Thaumcraft@[3.0.2b,);after:ExtraBees";
|
||||
|
||||
}
|
||||
@@ -0,0 +1,158 @@
|
||||
package thaumicbees.thaumcraft;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
|
||||
import forestry.api.apiculture.EnumBeeChromosome;
|
||||
import forestry.api.genetics.IAllele;
|
||||
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.inventory.IInventory;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTBase;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.nbt.NBTTagList;
|
||||
import thaumcraft.api.ObjectTags;
|
||||
import thaumcraft.api.ThaumcraftApi;
|
||||
import thaumcraft.api.ThaumcraftApiHelper;
|
||||
import thaumcraft.api.crafting.ShapelessInfusionCraftingRecipes;
|
||||
import thaumcraft.api.research.ResearchList;
|
||||
|
||||
public class ShapelessBeeInfusionCraftingRecipe extends ShapelessInfusionCraftingRecipes
|
||||
{
|
||||
private String alleleId;
|
||||
private byte alleleSlot;
|
||||
|
||||
/**
|
||||
* Creates & adds a Crafting recipe to Thaumcraft for our Stark bee infusions.
|
||||
*/
|
||||
public static void createNewRecipe(String key, String researchKey, ItemStack output, Object[] input,
|
||||
int auraCost, ObjectTags tags, IAllele allele, EnumBeeChromosome slot)
|
||||
{
|
||||
ArrayList<ItemStack> inputList = new ArrayList(input.length);
|
||||
for (Object item : input)
|
||||
{
|
||||
if (item instanceof ItemStack)
|
||||
{
|
||||
inputList.add(((ItemStack) item).copy());
|
||||
}
|
||||
else if (item instanceof Item)
|
||||
{
|
||||
inputList.add(new ItemStack((Item)item));
|
||||
}
|
||||
else if (item instanceof Block)
|
||||
{
|
||||
inputList.add(new ItemStack((Block)item));
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new RuntimeException("Invalid shapeless crafting recipe!");
|
||||
}
|
||||
}
|
||||
ThaumcraftApi.getCraftingRecipes().add(
|
||||
new ShapelessBeeInfusionCraftingRecipe(key, output, inputList, auraCost, tags, allele, slot)
|
||||
);
|
||||
ResearchList.craftingRecipesForResearch.put(researchKey, Arrays.asList(ThaumcraftApi.getCraftingRecipes().size()-1));
|
||||
}
|
||||
|
||||
private ShapelessBeeInfusionCraftingRecipe(String key, ItemStack output, List<ItemStack> itemList, int cost, ObjectTags tags,
|
||||
IAllele allele, EnumBeeChromosome slot)
|
||||
{
|
||||
super(key, output, itemList, cost, tags);
|
||||
|
||||
this.alleleId = allele.getUID();
|
||||
this.alleleSlot = (byte)slot.ordinal();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean matches(IInventory craftingInventory, EntityPlayer player)
|
||||
{
|
||||
// We'll remove items from the list as they are found.
|
||||
ArrayList<ItemStack> recipeItemsList = new ArrayList(this.recipeItems);
|
||||
|
||||
boolean invalidItemFound = false;
|
||||
|
||||
if (key.length() == 0 || (key.length() > 0 && ThaumcraftApiHelper.isResearchComplete(player.username, key)))
|
||||
{
|
||||
|
||||
for (int i = 0; i < 3 && !invalidItemFound; ++i)
|
||||
{
|
||||
for (int j = 0; j < 3 && !invalidItemFound; ++j)
|
||||
{
|
||||
ItemStack itemStack = ThaumcraftApiHelper.getStackInRowAndColumn(craftingInventory, j, i);
|
||||
|
||||
if (itemStack != null)
|
||||
{
|
||||
Iterator<ItemStack> itr = recipeItemsList.iterator();
|
||||
boolean currentItemInRecipe = false;
|
||||
|
||||
while (itr.hasNext())
|
||||
{
|
||||
ItemStack recipeItem = itr.next();
|
||||
|
||||
if (itemStack.itemID == recipeItem.itemID && (recipeItem.getItemDamage() == -1 || itemStack.getItemDamage() == recipeItem.getItemDamage()))
|
||||
{
|
||||
if (recipeItem.hasTagCompound())
|
||||
{
|
||||
currentItemInRecipe = this.hasMatchingChromosome(itemStack);
|
||||
}
|
||||
else
|
||||
{
|
||||
currentItemInRecipe = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (currentItemInRecipe)
|
||||
{
|
||||
itr.remove();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!currentItemInRecipe)
|
||||
{
|
||||
invalidItemFound = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return recipeItemsList.isEmpty() && !invalidItemFound;
|
||||
}
|
||||
|
||||
private boolean hasMatchingChromosome(ItemStack itemStack)
|
||||
{
|
||||
boolean genesMatch = false;
|
||||
|
||||
NBTTagCompound compoundRoot = itemStack.getTagCompound();
|
||||
if (compoundRoot.hasKey("Genome"))
|
||||
{
|
||||
NBTTagCompound genome = compoundRoot.getCompoundTag("Genome");
|
||||
if (genome.hasKey("Chromosomes"))
|
||||
{
|
||||
NBTTagList chromosomes = genome.getTagList("Chromosomes");
|
||||
|
||||
for (int i = 0; i < chromosomes.tagCount() && !genesMatch; ++i)
|
||||
{
|
||||
NBTTagCompound genes = (NBTTagCompound)chromosomes.tagAt(i);
|
||||
if (genes.hasKey("Slot") && genes.getByte("Slot") == this.alleleSlot)
|
||||
{
|
||||
if (genes.getString("UID0").equals(this.alleleId) && genes.getString("UID1").equals(this.alleleId))
|
||||
{
|
||||
genesMatch = true;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return genesMatch;
|
||||
}
|
||||
|
||||
}
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package thaumicbees.compat;
|
||||
package thaumicbees.thaumcraft;
|
||||
|
||||
public enum TCBlockPlant
|
||||
{
|
||||
@@ -0,0 +1,26 @@
|
||||
package thaumicbees.thaumcraft;
|
||||
|
||||
public enum TCEntity
|
||||
{
|
||||
BRAINY_ZOMBIE("entBrainyZombie", "EntityBrainyZombie"),
|
||||
GIANT_BRAINY_ZOMBIE("entGiantBrainyZombie", "EntityGiantBrainyZombie"),
|
||||
WISP("entWisp", "EntityWisp"),
|
||||
FIREBAT("entFirebat", "EntityFireBat"),
|
||||
;
|
||||
|
||||
private static String packageName = "thaumcraft.common.entities.monster.";
|
||||
|
||||
public String entityID;
|
||||
private String className;
|
||||
|
||||
private TCEntity(String id, String clazz)
|
||||
{
|
||||
this.entityID = id;
|
||||
this.className = clazz;
|
||||
}
|
||||
|
||||
public String getClassName()
|
||||
{
|
||||
return packageName + this.className;
|
||||
}
|
||||
}
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package thaumicbees.compat;
|
||||
package thaumicbees.thaumcraft;
|
||||
|
||||
public enum TCMiscResource
|
||||
{
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package thaumicbees.compat;
|
||||
package thaumicbees.thaumcraft;
|
||||
|
||||
public enum TCShardType
|
||||
{
|
||||
@@ -0,0 +1,468 @@
|
||||
package thaumicbees.thaumcraft;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.ArrayList;
|
||||
|
||||
import thaumcraft.api.EnumTag;
|
||||
import thaumcraft.api.ObjectTags;
|
||||
import thaumcraft.api.ThaumcraftApi;
|
||||
import thaumcraft.api.research.ResearchItem;
|
||||
import thaumcraft.api.research.ResearchList;
|
||||
import thaumicbees.bees.genetics.Allele;
|
||||
import thaumicbees.bees.genetics.BeeGenomeManager;
|
||||
import thaumicbees.block.BlockManager;
|
||||
import thaumicbees.item.ItemComb;
|
||||
import thaumicbees.item.ItemManager;
|
||||
import thaumicbees.item.ItemMiscResources;
|
||||
import thaumicbees.item.types.CombType;
|
||||
import thaumicbees.item.types.DropType;
|
||||
import thaumicbees.item.types.LiquidType;
|
||||
import thaumicbees.item.types.ResourceType;
|
||||
import thaumicbees.item.types.WaxType;
|
||||
import thaumicbees.main.CommonProxy;
|
||||
import thaumicbees.main.ThaumicBees;
|
||||
import thaumicbees.storage.BackpackDefinition;
|
||||
|
||||
import cpw.mods.fml.common.event.FMLInterModComms;
|
||||
import cpw.mods.fml.common.registry.GameRegistry;
|
||||
import forestry.api.apiculture.EnumBeeChromosome;
|
||||
import forestry.api.apiculture.EnumBeeType;
|
||||
import forestry.api.core.BlockInterface;
|
||||
import forestry.api.core.ItemInterface;
|
||||
import forestry.api.storage.BackpackManager;
|
||||
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemBlock;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.common.Property;
|
||||
import net.minecraftforge.common.Configuration;
|
||||
|
||||
public class ThaumcraftCompat
|
||||
{
|
||||
|
||||
public static void parseThaumcraftConfig(String configPath)
|
||||
{
|
||||
Configuration tcConfig = new Configuration(new File(configPath + "/Thaumcraft.cfg"));
|
||||
Property p;
|
||||
|
||||
tcConfig.load();
|
||||
|
||||
// Load blocks out of the Thaumcraft config to get their IDs;
|
||||
p = tcConfig.getBlock("BlockCustomPlant", 0);
|
||||
BlockManager.tcPlant = Block.blocksList[p.getInt()];
|
||||
p = tcConfig.getBlock("BlockCandle", 0);
|
||||
BlockManager.tcCandle = Block.blocksList[ p.getInt()];
|
||||
p = tcConfig.getBlock("BlockCrystal", 0);
|
||||
BlockManager.tcCrystal = Block.blocksList[p.getInt()];
|
||||
p = tcConfig.getBlock("BlockMarker", 0);
|
||||
BlockManager.tcMarker = Block.blocksList[p.getInt()];
|
||||
p = tcConfig.getBlock("BlockJar", 0);
|
||||
BlockManager.tcJar = Block.blocksList[p.getInt()];
|
||||
p = tcConfig.getBlock("BlockMagicalLeaves", 0);
|
||||
BlockManager.tcLeaf = Block.blocksList[p.getInt()];
|
||||
p = tcConfig.getBlock("BlockMagicalLog", 0);
|
||||
BlockManager.tcLog = Block.blocksList[p.getInt()];
|
||||
p = tcConfig.getBlock("BlockSecure", 0);
|
||||
BlockManager.tcWarded = Block.blocksList[p.getInt()];
|
||||
|
||||
// Load items out of the Thaumcraft config to get their IDs.
|
||||
p = tcConfig.getItem("ItemEssence", 0);
|
||||
ItemManager.tcEssentiaBottle = Item.itemsList[p.getInt() + 256];
|
||||
p = tcConfig.getItem("ItemResource", 0);
|
||||
ItemManager.tcMiscResource = Item.itemsList[p.getInt() + 256];
|
||||
p = tcConfig.getItem("ItemShard", 0);
|
||||
ItemManager.tcShard = Item.itemsList[p.getInt() + 256];
|
||||
p = tcConfig.getItem("BlockJarFilledItem", 0);
|
||||
ItemManager.tcFilledJar = Item.itemsList[p.getInt() + 256];
|
||||
p = tcConfig.getItem("ItemGolemPlacer", 0);
|
||||
ItemManager.tcGolem = Item.itemsList[p.getInt() + 256];
|
||||
p = tcConfig.getItem("ItemEssence", 0);
|
||||
ItemManager.tcWispEssence = Item.itemsList[p.getInt() + 256];
|
||||
}
|
||||
|
||||
public static void setupBackpacks()
|
||||
{
|
||||
if (ThaumicBees.getInstanceConfig().AddThaumcraftItemsToBackpacks)
|
||||
{
|
||||
// Add all shards and Thaumium to miner's backpack
|
||||
String ids = ItemManager.tcShard.itemID + ":" + -1 + ";"
|
||||
+ ItemManager.tcMiscResource.itemID + ":" + TCMiscResource.THAUMIUM.ordinal();
|
||||
FMLInterModComms.sendMessage("Forestry", "add-backpack-items", "miner@" + ids);
|
||||
|
||||
// All resources go into Thaumaturge's backpack
|
||||
ids = ItemManager.tcMiscResource.itemID + ":" + -1 + ";"
|
||||
+ ItemManager.tcShard.itemID + ":" + -1 + ";"
|
||||
+ ItemManager.tcFilledJar.itemID + ":" + -1 + ";"
|
||||
+ BlockManager.tcCrystal.blockID + ":" + -1 + ";"
|
||||
+ BlockManager.tcJar.blockID + ":" + -1 + ";"
|
||||
+ ItemManager.tcGolem.itemID + ":" + -1;
|
||||
FMLInterModComms.sendMessage("Forestry", "add-backpack-items", "thaumaturge@" + ids);
|
||||
|
||||
// Add some plants & saplings to Forester's
|
||||
ids = BlockManager.tcPlant.blockID + ":" + "-1" + ";"
|
||||
+ BlockManager.tcLeaf.blockID + ":" + -1 + ";"
|
||||
+ BlockManager.tcLog.blockID + ":" + "-1";
|
||||
FMLInterModComms.sendMessage("Forestry", "add-backpack-items", "forester@" + ids);
|
||||
|
||||
// Add Wisp & brains to Hunter's
|
||||
ids = ItemManager.tcWispEssence.itemID + ":" + -1 + ";"
|
||||
+ ItemManager.tcMiscResource.itemID + ":" + TCMiscResource.ZOMBIE_BRAIN.ordinal();
|
||||
FMLInterModComms.sendMessage("Forestry", "add-backpack-items", "hunter@" + ids);
|
||||
|
||||
// Add Marker, warded stone, candle to builder
|
||||
ids = BlockManager.tcCandle.blockID + ":" + -1 + ";"
|
||||
+ BlockManager.tcMarker.blockID + ":" + -1 + ";"
|
||||
+ BlockManager.tcWarded.blockID + ":" + -1;
|
||||
FMLInterModComms.sendMessage("Forestry", "add-backpack-items", "builder@" + ids);
|
||||
}
|
||||
}
|
||||
|
||||
public static void setupItemAspects()
|
||||
{
|
||||
ObjectTags tags;
|
||||
ItemStack itemStack;
|
||||
|
||||
tags = new ObjectTags().add(EnumTag.MAGIC, 2);
|
||||
ThaumcraftApi.registerObjectTag(ItemManager.wax.itemID, WaxType.MAGIC.ordinal(), tags);
|
||||
|
||||
tags = new ObjectTags().add(EnumTag.MAGIC, 1);
|
||||
ThaumcraftApi.registerObjectTag(ItemManager.drops.itemID, DropType.ENCHANTED.ordinal(), tags);
|
||||
tags = new ObjectTags().add(EnumTag.KNOWLEDGE, 1);
|
||||
ThaumcraftApi.registerObjectTag(ItemManager.drops.itemID, DropType.INTELLECT.ordinal(), tags);
|
||||
|
||||
tags = new ObjectTags().add(EnumTag.KNOWLEDGE, 3);
|
||||
ThaumcraftApi.registerObjectTag(ItemManager.miscResources.itemID, ResourceType.LORE_FRAGMENT.ordinal(), tags);
|
||||
|
||||
tags = new ObjectTags().add(EnumTag.MAGIC, 1).add(EnumTag.INSECT, 2).add(EnumTag.CONTROL, 1);
|
||||
ThaumcraftApi.registerObjectTag(ItemManager.combs.itemID, CombType.STARK.ordinal(), tags);
|
||||
ThaumcraftApi.registerObjectTag(ItemManager.combs.itemID, CombType.AIRY.ordinal(), tags);
|
||||
ThaumcraftApi.registerObjectTag(ItemManager.combs.itemID, CombType.FIREY.ordinal(), tags);
|
||||
ThaumcraftApi.registerObjectTag(ItemManager.combs.itemID, CombType.WATERY.ordinal(), tags);
|
||||
ThaumcraftApi.registerObjectTag(ItemManager.combs.itemID, CombType.EARTHY.ordinal(), tags);
|
||||
ThaumcraftApi.registerObjectTag(ItemManager.combs.itemID, CombType.INFUSED.ordinal(), tags);
|
||||
|
||||
// Tagging capsules.
|
||||
tags = new ObjectTags().add(EnumTag.MAGIC, 2);
|
||||
ThaumcraftApi.registerComplexObjectTag(ItemManager.magicCapsule.itemID, -1, tags);
|
||||
|
||||
tags = new ObjectTags().add(EnumTag.MAGIC, 2).add(EnumTag.VOID, 2);
|
||||
ThaumcraftApi.registerObjectTag(ItemManager.magicCapsule.itemID, 0, tags);
|
||||
tags = new ObjectTags().add(EnumTag.MAGIC, 2).add(EnumTag.WATER, 2);
|
||||
ThaumcraftApi.registerObjectTag(ItemManager.magicCapsule.itemID, LiquidType.WATER.ordinal(), tags);
|
||||
tags = new ObjectTags().add(EnumTag.MAGIC, 2).add(EnumTag.FIRE, 2);
|
||||
ThaumcraftApi.registerObjectTag(ItemManager.magicCapsule.itemID, LiquidType.LAVA.ordinal(), tags);
|
||||
|
||||
for (EnumTag tag : EnumTag.values())
|
||||
{
|
||||
if (tag == EnumTag.UNKNOWN)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
tags = new ObjectTags().add(tag, 1);
|
||||
ThaumcraftApi.registerObjectTag(ItemManager.solidFlux.itemID, tag.id, tags);
|
||||
}
|
||||
|
||||
// Tag some Forestry stuff.
|
||||
// Pulsating propolis
|
||||
itemStack = ItemInterface.getItem("propolis");
|
||||
tags = new ObjectTags().add(EnumTag.ELDRITCH, 1).add(EnumTag.CONTROL, 1);
|
||||
ThaumcraftApi.registerObjectTag(itemStack.itemID, 2 , tags);
|
||||
itemStack = ItemInterface.getItem("craftingMaterial");
|
||||
// 0: pulsatingDust
|
||||
// 1: "pulsatingMesh";
|
||||
tags = new ObjectTags().add(EnumTag.ELDRITCH, 2);
|
||||
ThaumcraftApi.registerObjectTag(itemStack.itemID, 1, tags);
|
||||
// 2: "silkWisp";
|
||||
// 3: "wovenSilk";
|
||||
// 4: "dissipationCharge";
|
||||
// 5: "iceShard";
|
||||
tags = new ObjectTags().add(EnumTag.COLD, 1);
|
||||
ThaumcraftApi.registerObjectTag(itemStack.itemID, 5, tags);
|
||||
|
||||
itemStack = ItemInterface.getItem("apatite");
|
||||
tags = new ObjectTags().add(EnumTag.CRYSTAL, 2);
|
||||
ThaumcraftApi.registerObjectTag(itemStack.itemID, itemStack.getItemDamage(), tags);
|
||||
|
||||
itemStack = ItemInterface.getItem("impregnatedCasing");
|
||||
tags = new ObjectTags().add(EnumTag.WOOD, 58).add(EnumTag.PLANT, 8);
|
||||
ThaumcraftApi.registerObjectTag(itemStack.itemID, itemStack.getItemDamage(), tags);
|
||||
|
||||
itemStack = ItemInterface.getItem("stickImpregnated");
|
||||
tags = new ObjectTags().add(EnumTag.WOOD, 8).add(EnumTag.PLANT, 2);
|
||||
ThaumcraftApi.registerObjectTag(itemStack.itemID, itemStack.getItemDamage(), tags);
|
||||
|
||||
itemStack = ItemInterface.getItem("peat");
|
||||
tags = new ObjectTags().add(EnumTag.POWER, 2).add(EnumTag.PLANT, 1).add(EnumTag.EARTH, 1);
|
||||
ThaumcraftApi.registerObjectTag(itemStack.itemID, itemStack.getItemDamage(), tags);
|
||||
|
||||
itemStack = ItemInterface.getItem("ash");
|
||||
tags = new ObjectTags().add(EnumTag.DESTRUCTION, 1).add(EnumTag.EXCHANGE, 1);
|
||||
ThaumcraftApi.registerObjectTag(itemStack.itemID, itemStack.getItemDamage(), tags);
|
||||
|
||||
itemStack = ItemInterface.getItem("honeyDrop");
|
||||
tags = new ObjectTags().add(EnumTag.EXCHANGE, 2).add(EnumTag.LIFE, 1);
|
||||
ThaumcraftApi.registerObjectTag(itemStack.itemID, itemStack.getItemDamage(), tags);
|
||||
|
||||
itemStack = ItemInterface.getItem("beeswax");
|
||||
tags = new ObjectTags().add(EnumTag.INSECT, 1).add(EnumTag.CONTROL, 2);
|
||||
ThaumcraftApi.registerObjectTag(itemStack.itemID, itemStack.getItemDamage(), tags);
|
||||
itemStack = ItemInterface.getItem("refractoryWax");
|
||||
tags = new ObjectTags().add(EnumTag.FIRE, 3);
|
||||
ThaumcraftApi.registerObjectTag(itemStack.itemID, itemStack.getItemDamage(), tags);
|
||||
itemStack = ItemInterface.getItem("phosphor");
|
||||
tags = new ObjectTags().add(EnumTag.FIRE, 2).add(EnumTag.DESTRUCTION, 1);
|
||||
ThaumcraftApi.registerObjectTag(itemStack.itemID, itemStack.getItemDamage(), tags);
|
||||
|
||||
itemStack = ItemInterface.getItem("waxCapsule");
|
||||
tags = new ObjectTags().add(EnumTag.CONTROL, 1).add(EnumTag.VOID, 1);
|
||||
ThaumcraftApi.registerObjectTag(itemStack.itemID, itemStack.getItemDamage(), tags);
|
||||
itemStack = ItemInterface.getItem("waxCapsuleWater");
|
||||
tags = new ObjectTags().add(EnumTag.CONTROL, 1).add(EnumTag.VOID, 1).add(EnumTag.WATER, 4);
|
||||
ThaumcraftApi.registerObjectTag(itemStack.itemID, itemStack.getItemDamage(), tags);
|
||||
|
||||
itemStack = ItemInterface.getItem("refractoryEmpty");
|
||||
tags = new ObjectTags().add(EnumTag.FIRE, 1).add(EnumTag.CONTROL, 1).add(EnumTag.VOID, 1);
|
||||
ThaumcraftApi.registerObjectTag(itemStack.itemID, itemStack.getItemDamage(), tags);
|
||||
itemStack = ItemInterface.getItem("refractoryWater");
|
||||
tags = new ObjectTags().add(EnumTag.FIRE, 1).add(EnumTag.VOID, 1).add(EnumTag.WATER, 4);
|
||||
ThaumcraftApi.registerObjectTag(itemStack.itemID, itemStack.getItemDamage(), tags);
|
||||
itemStack = ItemInterface.getItem("refractoryLava");
|
||||
tags = new ObjectTags().add(EnumTag.VOID, 1).add(EnumTag.FIRE, 7).add(EnumTag.WATER, 1).add(EnumTag.ROCK, 2);
|
||||
ThaumcraftApi.registerObjectTag(itemStack.itemID, itemStack.getItemDamage(), tags);
|
||||
|
||||
itemStack = ItemInterface.getItem("canEmpty");
|
||||
tags = new ObjectTags().add(EnumTag.METAL, 1).add(EnumTag.VOID, 1);
|
||||
ThaumcraftApi.registerObjectTag(itemStack.itemID, itemStack.getItemDamage(), tags);
|
||||
itemStack = ItemInterface.getItem("canWater");
|
||||
tags = new ObjectTags().add(EnumTag.METAL, 1).add(EnumTag.VOID, 1).add(EnumTag.WATER, 4);
|
||||
ThaumcraftApi.registerObjectTag(itemStack.itemID, itemStack.getItemDamage(), tags);
|
||||
itemStack = ItemInterface.getItem("canLava");
|
||||
tags = new ObjectTags().add(EnumTag.METAL, 1).add(EnumTag.VOID, 1).add(EnumTag.FIRE, 6).add(EnumTag.WATER, 1).add(EnumTag.ROCK, 2);
|
||||
ThaumcraftApi.registerObjectTag(itemStack.itemID, itemStack.getItemDamage(), tags);
|
||||
|
||||
itemStack = ItemInterface.getItem("beeComb");
|
||||
tags = new ObjectTags().add(EnumTag.INSECT, 2).add(EnumTag.TRAP, 2);
|
||||
ThaumcraftApi.registerObjectTag(itemStack.itemID, -1, tags); // ALL combs plox.
|
||||
ThaumcraftApi.registerObjectTag(ItemManager.combs.itemID, -1, tags);
|
||||
|
||||
itemStack = ItemManager.combs.getStackForType(CombType.OCCULT);
|
||||
tags = new ObjectTags().add(EnumTag.INSECT, 2).add(EnumTag.TRAP, 2).add(EnumTag.MAGIC, 2);
|
||||
ThaumcraftApi.registerObjectTag(itemStack.itemID, itemStack.getItemDamage(), tags);
|
||||
itemStack = ItemManager.combs.getStackForType(CombType.STARK);
|
||||
ThaumcraftApi.registerObjectTag(itemStack.itemID, itemStack.getItemDamage(), tags);
|
||||
|
||||
itemStack = ItemInterface.getItem("ambrosia");
|
||||
tags = new ObjectTags().add(EnumTag.LIFE, 2).add(EnumTag.HEAL, 4);
|
||||
|
||||
// Forestry's wood
|
||||
itemStack = BlockInterface.getBlock("log1");
|
||||
tags = new ObjectTags().add(EnumTag.WOOD, 8);
|
||||
ThaumcraftApi.registerComplexObjectTag(itemStack.itemID, -1, tags);
|
||||
itemStack = BlockInterface.getBlock("log2"); // Same tags
|
||||
ThaumcraftApi.registerComplexObjectTag(itemStack.itemID, -1, tags);
|
||||
itemStack = BlockInterface.getBlock("log3"); // Same tags.
|
||||
ThaumcraftApi.registerComplexObjectTag(itemStack.itemID, -1, tags);
|
||||
itemStack = BlockInterface.getBlock("log4"); // Still same tags.
|
||||
ThaumcraftApi.registerComplexObjectTag(itemStack.itemID, -1, tags);
|
||||
|
||||
itemStack = ItemInterface.getItem("sapling");
|
||||
tags = new ObjectTags().add(EnumTag.PLANT, 4).add(EnumTag.WOOD, 2);
|
||||
ThaumcraftApi.registerComplexObjectTag(itemStack.itemID, -1, tags);
|
||||
|
||||
// BEES!
|
||||
itemStack = ItemInterface.getItem("beeDroneGE");
|
||||
tags = new ObjectTags().add(EnumTag.INSECT, 1).add(EnumTag.FLIGHT, 2);
|
||||
ThaumcraftApi.registerComplexObjectTag(itemStack.itemID, -1, tags); // All drones
|
||||
|
||||
tags = new ObjectTags(itemStack.itemID, -1).add(EnumTag.VALUABLE, 4); // Get drone tags & add valuable
|
||||
itemStack = ItemInterface.getItem("beePrincessGE");
|
||||
ThaumcraftApi.registerComplexObjectTag(itemStack.itemID, -1, tags); // All princesses.
|
||||
|
||||
tags = new ObjectTags().add(EnumTag.VALUABLE, 8).add(EnumTag.INSECT, 2).add(EnumTag.FLIGHT, 4);
|
||||
itemStack = ItemInterface.getItem("beeQueenGE");
|
||||
ThaumcraftApi.registerComplexObjectTag(itemStack.itemID, -1, tags); //All queens.
|
||||
}
|
||||
|
||||
public static void setupResearch()
|
||||
{
|
||||
ObjectTags tags = new ObjectTags().add(EnumTag.WOOD, 2).add(EnumTag.INSECT, 2);
|
||||
ResearchItem startNode = new ResearchItem("TBSTARTNODE", tags, 10, 0, Block.sapling)
|
||||
.registerResearchItem();
|
||||
|
||||
tags = new ObjectTags().add(EnumTag.INSECT, 9).add(EnumTag.MAGIC, 2).add(EnumTag.FLUX, 2);
|
||||
ResearchItem starkHint = new ResearchItem("STARKHINT", tags, 5, 2, ItemInterface.getItem("beeQueenGE"))
|
||||
.setParents(startNode)
|
||||
.registerResearchItem();
|
||||
|
||||
tags = new ObjectTags().add(EnumTag.INSECT, 15).add(EnumTag.MAGIC, 5).add(EnumTag.WATER, 5).add(EnumTag.EARTH, 5)
|
||||
.add(EnumTag.WIND, 5).add(EnumTag.FIRE, 5);
|
||||
ResearchItem beeInfusion = new ResearchItem("BEEINFUSION", tags, 5, 3, ItemManager.miscResources.getStackForType(ResourceType.RESEARCH_BeeInfusion))
|
||||
.setParents(starkHint, ResearchList.getResearch("UTFT")).setHidden()
|
||||
.registerResearchItem();
|
||||
|
||||
tags = new ObjectTags().add(EnumTag.CROP, 20).add(EnumTag.EARTH, 10).add(EnumTag.WATER, 2);
|
||||
ResearchItem fertilizer = new ResearchItem("FERTILIZER", tags, 16, 0, ItemInterface.getItem("apatite"))
|
||||
.setParents(startNode)
|
||||
.registerResearchItem();
|
||||
|
||||
tags = new ObjectTags().add(EnumTag.WOOD, 10).add(EnumTag.TOOL, 5).add(EnumTag.INSECT, 15).add(EnumTag.BEAST, 2)
|
||||
.add(EnumTag.MAGIC, 5);
|
||||
ResearchItem magicFrame = new ResearchItem("HIVEFRAME", tags, 10, -2, ItemManager.hiveFrameMagic)
|
||||
.setParents(startNode)
|
||||
.registerResearchItem();
|
||||
|
||||
tags = new ObjectTags().add(EnumTag.TOOL, 5).add(EnumTag.INSECT, 15).add(EnumTag.ARMOR, 5).add(EnumTag.EXCHANGE, 6)
|
||||
.add(EnumTag.MAGIC, 8);
|
||||
ResearchItem magicFrame2 = new ResearchItem("HIVEFRAME2", tags, 8, -2, ItemManager.hiveFrameResilient)
|
||||
.setParents(magicFrame).setHidden()
|
||||
.registerResearchItem();
|
||||
|
||||
tags = new ObjectTags().add(EnumTag.TOOL, 5).add(EnumTag.INSECT, 15).add(EnumTag.LIFE, 5).add(EnumTag.EXCHANGE, 6)
|
||||
.add(EnumTag.HEAL, 2).add(EnumTag.FLOWER, 6);
|
||||
ResearchItem gentleFrame = new ResearchItem("HIVEFRAMEGENTLE", tags, 12, -2, ItemManager.hiveFrameGentle)
|
||||
.setParents(magicFrame).setHidden()
|
||||
.registerResearchItem();
|
||||
|
||||
tags = new ObjectTags().add(EnumTag.TOOL, 5).add(EnumTag.INSECT, 15).add(EnumTag.LIFE, 12).add(EnumTag.EXCHANGE, 6)
|
||||
.add(EnumTag.MAGIC, 8).add(EnumTag.MOTION, 5);
|
||||
ResearchItem metabolicFrame = new ResearchItem("HIVEFRAMEMETA", tags, 9, -3, ItemManager.hiveFrameMetabolic)
|
||||
.setParents(magicFrame).setHidden()
|
||||
.registerResearchItem();
|
||||
|
||||
tags = new ObjectTags().add(EnumTag.TOOL, 5).add(EnumTag.INSECT, 15).add(EnumTag.DEATH, 15).add(EnumTag.EXCHANGE, 6)
|
||||
.add(EnumTag.MAGIC, 8).add(EnumTag.POISON, 6);
|
||||
ResearchItem necroticFrame = new ResearchItem("HIVEFRAMENECRO", tags, 11, -3, ItemManager.hiveFrameNecrotic)
|
||||
.setParents(magicFrame).setHidden()
|
||||
.registerResearchItem();
|
||||
|
||||
/*ItemStack iconStack = BlockInterface.getBlock("soil");
|
||||
tags = new ObjectTags().add(EnumTag.EARTH, 10).add(EnumTag.WOOD, 4);
|
||||
ResearchItem humus = new ResearchItem("HUMUS", tags, 9, -1, iconStack)
|
||||
.setParents(startNode)
|
||||
.registerResearchItem();
|
||||
|
||||
iconStack = BlockInterface.getBlock("soil");
|
||||
iconStack.setItemDamage(1);
|
||||
tags = new ObjectTags().add(EnumTag.EARTH, 10).add(EnumTag.WATER, 4).add(EnumTag.CROP, 4);
|
||||
ResearchItem bogEarth = new ResearchItem("BOGEARTH", tags, 9, -1, iconStack)
|
||||
.setParents(startNode)
|
||||
.registerResearchItem();*/
|
||||
}
|
||||
|
||||
public static void setupCrafting()
|
||||
{
|
||||
ItemStack output = ItemManager.miscResources.getStackForType(ResourceType.EXTENDED_FERTILIZER);
|
||||
ItemStack inputA = ItemInterface.getItem("apatite");
|
||||
ObjectTags tags = (new ObjectTags()).add(EnumTag.CROP, 12);
|
||||
output.stackSize = 2;
|
||||
ThaumcraftApi.addShapelessInfusionCraftingRecipe("FERTILIZER", "FERTILIZER", 5, tags, output, new Object[] {
|
||||
inputA
|
||||
});
|
||||
|
||||
output = new ItemStack(ItemManager.hiveFrameMagic);
|
||||
inputA = ItemInterface.getItem("frameUntreated");
|
||||
tags = new ObjectTags().add(EnumTag.WOOD, 4).add(EnumTag.INSECT, 8);
|
||||
ThaumcraftApi.addShapelessInfusionCraftingRecipe("HIVEFRAME", "FRAMEMAGIC", 50, tags, output, new Object[] {
|
||||
inputA
|
||||
});
|
||||
|
||||
output = new ItemStack(ItemManager.hiveFrameResilient);
|
||||
tags = new ObjectTags().add(EnumTag.WOOD, 12).add(EnumTag.INSECT, 8).add(EnumTag.EXCHANGE, 12);
|
||||
ThaumcraftApi.addInfusionCraftingRecipe("HIVEFRAME2", "FRAMERESILIENT", 50, tags, output, new Object[] {
|
||||
" i ", "ifi", " i ",
|
||||
'f', ItemManager.hiveFrameMagic,
|
||||
'i', Item.ingotIron
|
||||
});
|
||||
|
||||
output = new ItemStack(ItemManager.hiveFrameGentle);
|
||||
tags = new ObjectTags().add(EnumTag.WOOD, 4).add(EnumTag.INSECT, 8).add(EnumTag.HEAL, 12);
|
||||
ThaumcraftApi.addInfusionCraftingRecipe("HIVEFRAMEGENTLE", "FRAMEGENTLE", 50, tags, output, new Object[] {
|
||||
"www", "wFw", "www",
|
||||
'F', inputA,
|
||||
'w', ItemInterface.getItem("beeswax")
|
||||
|
||||
});
|
||||
|
||||
output = new ItemStack(ItemManager.hiveFrameMetabolic);
|
||||
tags = new ObjectTags().add(EnumTag.WOOD, 4).add(EnumTag.INSECT, 8).add(EnumTag.LIFE, 8).add(EnumTag.FLESH, 8)
|
||||
.add(EnumTag.EXCHANGE, 8);
|
||||
ThaumcraftApi.addShapelessInfusionCraftingRecipe("HIVEFRAMEMETA", "FRAMEMETABOLIC", 50, tags, output, new Object[] {
|
||||
Item.magmaCream,
|
||||
inputA
|
||||
});
|
||||
|
||||
output = new ItemStack(ItemManager.hiveFrameNecrotic);
|
||||
tags = new ObjectTags().add(EnumTag.WOOD, 4).add(EnumTag.INSECT, 8).add(EnumTag.EXCHANGE, 12).add(EnumTag.DEATH, 10)
|
||||
.add(EnumTag.POISON, 5);
|
||||
ThaumcraftApi.addInfusionCraftingRecipe("HIVEFRAMENECRO", "FRAMENECROTIC", 50, tags, output, new Object[] {
|
||||
" S ", "SxS", " S ",
|
||||
'S', Item.rottenFlesh,
|
||||
'x', inputA
|
||||
});
|
||||
}
|
||||
|
||||
public static void setupBeeInfusions(World world)
|
||||
{
|
||||
ItemStack drone = BeeGenomeManager.getBeeNBTForSpecies(Allele.Stark, EnumBeeType.DRONE);
|
||||
ItemStack princess = BeeGenomeManager.getBeeNBTForSpecies(Allele.Stark, EnumBeeType.PRINCESS);
|
||||
ItemStack airDrone = Allele.Air.getBeeItem(world, EnumBeeType.DRONE);
|
||||
ItemStack airPrincess = Allele.Air.getBeeItem(world, EnumBeeType.PRINCESS);
|
||||
ItemStack waterDrone = Allele.Water.getBeeItem(world, EnumBeeType.DRONE);
|
||||
ItemStack waterPrincess = Allele.Water.getBeeItem(world, EnumBeeType.PRINCESS);
|
||||
ItemStack earthDrone = Allele.Earth.getBeeItem(world, EnumBeeType.DRONE);
|
||||
ItemStack earthPrincess = Allele.Earth.getBeeItem(world, EnumBeeType.PRINCESS);
|
||||
ItemStack fireDrone = Allele.Fire.getBeeItem(world, EnumBeeType.DRONE);
|
||||
ItemStack firePrincess = Allele.Fire.getBeeItem(world, EnumBeeType.PRINCESS);
|
||||
ItemStack magicDrone = Allele.Infused.getBeeItem(world, EnumBeeType.DRONE);
|
||||
ItemStack magicPrincess = Allele.Infused.getBeeItem(world, EnumBeeType.PRINCESS);
|
||||
|
||||
String researchKey = "BEEINFUSION";
|
||||
|
||||
ObjectTags tags = (new ObjectTags()).add(EnumTag.WIND, 40).add(EnumTag.MOTION, 20);
|
||||
ShapelessBeeInfusionCraftingRecipe.createNewRecipe(researchKey, "BEEINFUSION1", airDrone,
|
||||
new ItemStack[] { drone, new ItemStack(ItemManager.tcShard, 1, TCShardType.AIR.ordinal())},
|
||||
100, tags, Allele.Stark, EnumBeeChromosome.SPECIES);
|
||||
ShapelessBeeInfusionCraftingRecipe.createNewRecipe(researchKey, "BEEINFUSION2", airPrincess,
|
||||
new ItemStack[] { princess , new ItemStack(ItemManager.tcShard, 1, TCShardType.AIR.ordinal()) },
|
||||
100, tags, Allele.Stark, EnumBeeChromosome.SPECIES);
|
||||
|
||||
tags = (new ObjectTags()).add(EnumTag.FIRE, 40).add( EnumTag.POWER, 20);
|
||||
ShapelessBeeInfusionCraftingRecipe.createNewRecipe(researchKey, "BEEINFUSION3", fireDrone, new Object[]
|
||||
{ drone, new ItemStack(ItemManager.tcShard, 1, TCShardType.FIRE.ordinal()) },
|
||||
100, tags, Allele.Stark, EnumBeeChromosome.SPECIES);
|
||||
ShapelessBeeInfusionCraftingRecipe.createNewRecipe(researchKey, "BEEINFUSION4", firePrincess, new Object[]
|
||||
{ princess, new ItemStack(ItemManager.tcShard, 1, TCShardType.FIRE.ordinal()) },
|
||||
100, tags, Allele.Stark, EnumBeeChromosome.SPECIES);
|
||||
|
||||
tags = (new ObjectTags()).add(EnumTag.WATER, 40).add( EnumTag.COLD, 20);
|
||||
ShapelessBeeInfusionCraftingRecipe.createNewRecipe(researchKey, "BEEINFUSION5", waterDrone, new Object[]
|
||||
{ drone, new ItemStack(ItemManager.tcShard, 1, TCShardType.WATER.ordinal()) },
|
||||
100, tags, Allele.Stark, EnumBeeChromosome.SPECIES);
|
||||
ShapelessBeeInfusionCraftingRecipe.createNewRecipe(researchKey, "BEEINFUSION6", waterPrincess, new Object[]
|
||||
{ princess, new ItemStack(ItemManager.tcShard, 1, TCShardType.WATER.ordinal()) },
|
||||
100, tags, Allele.Stark, EnumBeeChromosome.SPECIES);
|
||||
|
||||
tags = (new ObjectTags()).add(EnumTag.EARTH, 40).add( EnumTag.ROCK, 20);
|
||||
ShapelessBeeInfusionCraftingRecipe.createNewRecipe(researchKey, "BEEINFUSION7", earthDrone, new Object[]
|
||||
{ drone, new ItemStack(ItemManager.tcShard, 1, TCShardType.EARTH.ordinal()) },
|
||||
100, tags, Allele.Stark, EnumBeeChromosome.SPECIES);
|
||||
ShapelessBeeInfusionCraftingRecipe.createNewRecipe(researchKey, "BEEINFUSION8", earthPrincess, new Object[]
|
||||
{ princess, new ItemStack(ItemManager.tcShard, 1, TCShardType.EARTH.ordinal()) },
|
||||
100, tags, Allele.Stark, EnumBeeChromosome.SPECIES);
|
||||
|
||||
tags = new ObjectTags().add(EnumTag.MAGIC, 40).add(EnumTag.FLUX, 20);
|
||||
ShapelessBeeInfusionCraftingRecipe.createNewRecipe(researchKey, "BEEINFUSION9", magicDrone, new Object[]
|
||||
{ drone, new ItemStack(ItemManager.tcShard, 1, TCShardType.MAGIC.ordinal()) },
|
||||
100, tags, Allele.Stark, EnumBeeChromosome.SPECIES);
|
||||
ShapelessBeeInfusionCraftingRecipe.createNewRecipe(researchKey, "BEEINFUSION0", magicPrincess, new Object[]
|
||||
{ princess, new ItemStack(ItemManager.tcShard, 1, TCShardType.MAGIC.ordinal()) },
|
||||
100, tags, Allele.Stark, EnumBeeChromosome.SPECIES);
|
||||
}
|
||||
|
||||
public static void registerResearch()
|
||||
{
|
||||
ThaumcraftApi.registerResearchXML(CommonProxy.TCBEES_RESEARCH + "research.xml");
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user