aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDraknyte1 <Draknyte1@hotmail.com>2016-01-20 14:24:34 +1000
committerDraknyte1 <Draknyte1@hotmail.com>2016-01-20 14:24:34 +1000
commit869c206c4fcc8001bd2e1d66f704290331813835 (patch)
tree96735ce8fe4665e2759c3374221d6f06f4527df2
parentec2c72827f01dd4bb2174137f1ab162f9ddaab62 (diff)
downloadGT5-Unofficial-869c206c4fcc8001bd2e1d66f704290331813835.tar.gz
GT5-Unofficial-869c206c4fcc8001bd2e1d66f704290331813835.tar.bz2
GT5-Unofficial-869c206c4fcc8001bd2e1d66f704290331813835.zip
Initial Commit
-rw-r--r--.classpath14
-rw-r--r--.gradle/2.0/taskArtifacts/cache.properties1
-rw-r--r--.gradle/2.0/taskArtifacts/cache.properties.lockbin0 -> 17 bytes
-rw-r--r--.gradle/2.0/taskArtifacts/fileHashes.binbin0 -> 138983 bytes
-rw-r--r--.gradle/2.0/taskArtifacts/fileSnapshots.binbin0 -> 285565 bytes
-rw-r--r--.gradle/2.0/taskArtifacts/outputFileStates.binbin0 -> 19142 bytes
-rw-r--r--.gradle/2.0/taskArtifacts/taskArtifacts.binbin0 -> 33063 bytes
-rw-r--r--.gradle/gradle.log37
-rw-r--r--.project17
-rw-r--r--.settings/org.eclipse.jdt.core.prefs12
-rw-r--r--asm/ccl_modular/net#minecraft#block#Block.txt8911
-rw-r--r--asm/ccl_modular/net#minecraft#block#BlockFire.txt2450
-rw-r--r--asm/ccl_modular/net#minecraft#client#gui#inventory#GuiContainer.txt2920
-rw-r--r--banned-ips.json1
-rw-r--r--banned-players.json1
-rw-r--r--bin/assets/miscutils/lang/en_US.lang53
-rw-r--r--bin/assets/miscutils/textures/blocks/blockBloodSteel.pngbin0 -> 3078 bytes
-rw-r--r--bin/assets/miscutils/textures/blocks/blockStaballoy.pngbin0 -> 3328 bytes
-rw-r--r--bin/assets/miscutils/textures/items/itemBufferCore.pngbin0 -> 4047 bytes
-rw-r--r--bin/assets/miscutils/textures/items/itemIngotBloodSteel.pngbin0 -> 2965 bytes
-rw-r--r--bin/assets/miscutils/textures/items/itemIngotStaballoy.pngbin0 -> 2976 bytes
-rw-r--r--bin/assets/miscutils/textures/items/itemPlateBedrockium.pngbin0 -> 2948 bytes
-rw-r--r--bin/assets/miscutils/textures/items/itemPlateBloodSteel.pngbin0 -> 3052 bytes
-rw-r--r--bin/assets/miscutils/textures/items/itemPlateBlutonium.pngbin0 -> 2939 bytes
-rw-r--r--bin/assets/miscutils/textures/items/itemPlateCompressedIron.pngbin0 -> 2948 bytes
-rw-r--r--bin/assets/miscutils/textures/items/itemPlateConductiveIron.pngbin0 -> 2968 bytes
-rw-r--r--bin/assets/miscutils/textures/items/itemPlateCyanite.pngbin0 -> 2936 bytes
-rw-r--r--bin/assets/miscutils/textures/items/itemPlateDarkSteel.pngbin0 -> 2941 bytes
-rw-r--r--bin/assets/miscutils/textures/items/itemPlateDimensionShard.pngbin0 -> 3190 bytes
-rw-r--r--bin/assets/miscutils/textures/items/itemPlateElectricalSteel.pngbin0 -> 2950 bytes
-rw-r--r--bin/assets/miscutils/textures/items/itemPlateElectricalSteel2.pngbin0 -> 2947 bytes
-rw-r--r--bin/assets/miscutils/textures/items/itemPlateEnergeticAlloy.pngbin0 -> 2968 bytes
-rw-r--r--bin/assets/miscutils/textures/items/itemPlateLudicrite.pngbin0 -> 2939 bytes
-rw-r--r--bin/assets/miscutils/textures/items/itemPlatePulsatingIron.pngbin0 -> 2973 bytes
-rw-r--r--bin/assets/miscutils/textures/items/itemPlateRedstoneAlloy.pngbin0 -> 2965 bytes
-rw-r--r--bin/assets/miscutils/textures/items/itemPlateSoularium.pngbin0 -> 2973 bytes
-rw-r--r--bin/assets/miscutils/textures/items/itemPlateStaballoy.pngbin0 -> 3051 bytes
-rw-r--r--bin/assets/miscutils/textures/items/itemPlateVibrantAlloy.pngbin0 -> 2963 bytes
-rw-r--r--bin/assets/miscutils/textures/items/itemPlateVoidMetal.pngbin0 -> 3103 bytes
-rw-r--r--bin/assets/miscutils/textures/items/itemStaballoyPickaxe.pngbin0 -> 3186 bytes
-rw-r--r--bin/binnie/Binnie.classbin0 -> 1358 bytes
-rw-r--r--bin/binnie/Constants.classbin0 -> 574 bytes
-rw-r--r--bin/binnie/core/AbstractMod.classbin0 -> 5237 bytes
-rw-r--r--bin/binnie/core/BinnieCore$PacketHandler.classbin0 -> 742 bytes
-rw-r--r--bin/binnie/core/BinnieCore.classbin0 -> 8038 bytes
-rw-r--r--bin/binnie/core/IInitializable.classbin0 -> 179 bytes
-rw-r--r--bin/binnie/core/ManagerBase.classbin0 -> 652 bytes
-rw-r--r--bin/binnie/core/block/BlockMetadata.classbin0 -> 7143 bytes
-rw-r--r--bin/binnie/core/block/IBlockMetadata.classbin0 -> 586 bytes
-rw-r--r--bin/binnie/core/block/IMultipassBlock.classbin0 -> 196 bytes
-rw-r--r--bin/binnie/core/block/ItemMetadata.classbin0 -> 3084 bytes
-rw-r--r--bin/binnie/core/block/ItemMetadataRenderer.classbin0 -> 2740 bytes
-rw-r--r--bin/binnie/core/block/MultipassBlockRenderer.classbin0 -> 3666 bytes
-rw-r--r--bin/binnie/core/block/MultipassItemRenderer.classbin0 -> 2964 bytes
-rw-r--r--bin/binnie/core/block/TileEntityMetadata.classbin0 -> 3938 bytes
-rw-r--r--bin/binnie/core/circuits/BinnieCircuit.classbin0 -> 3483 bytes
-rw-r--r--bin/binnie/core/circuits/BinnieCircuitLayout.classbin0 -> 1575 bytes
-rw-r--r--bin/binnie/core/genetics/BeeBreedingSystem.classbin0 -> 4718 bytes
-rw-r--r--bin/binnie/core/genetics/BeeModifierLogic.classbin0 -> 2008 bytes
-rw-r--r--bin/binnie/core/genetics/BreedingSystem.classbin0 -> 19608 bytes
-rw-r--r--bin/binnie/core/genetics/EnumBeeBooleanModifier.classbin0 -> 1230 bytes
-rw-r--r--bin/binnie/core/genetics/EnumBeeModifier.classbin0 -> 1921 bytes
-rw-r--r--bin/binnie/core/genetics/FlowerBreedingSystem.classbin0 -> 4462 bytes
-rw-r--r--bin/binnie/core/genetics/ForestryAllele$BeeSpecies.classbin0 -> 3821 bytes
-rw-r--r--bin/binnie/core/genetics/ForestryAllele$Bool.classbin0 -> 1877 bytes
-rw-r--r--bin/binnie/core/genetics/ForestryAllele$Fertility.classbin0 -> 1848 bytes
-rw-r--r--bin/binnie/core/genetics/ForestryAllele$Flowering.classbin0 -> 2053 bytes
-rw-r--r--bin/binnie/core/genetics/ForestryAllele$Growth.classbin0 -> 1683 bytes
-rw-r--r--bin/binnie/core/genetics/ForestryAllele$Int.classbin0 -> 2162 bytes
-rw-r--r--bin/binnie/core/genetics/ForestryAllele$Lifespan.classbin0 -> 2103 bytes
-rw-r--r--bin/binnie/core/genetics/ForestryAllele$Maturation.classbin0 -> 2009 bytes
-rw-r--r--bin/binnie/core/genetics/ForestryAllele$Saplings.classbin0 -> 2176 bytes
-rw-r--r--bin/binnie/core/genetics/ForestryAllele$Sappiness.classbin0 -> 1998 bytes
-rw-r--r--bin/binnie/core/genetics/ForestryAllele$Size.classbin0 -> 1965 bytes
-rw-r--r--bin/binnie/core/genetics/ForestryAllele$Speed.classbin0 -> 1966 bytes
-rw-r--r--bin/binnie/core/genetics/ForestryAllele$Territory.classbin0 -> 1853 bytes
-rw-r--r--bin/binnie/core/genetics/ForestryAllele$TreeHeight.classbin0 -> 2166 bytes
-rw-r--r--bin/binnie/core/genetics/ForestryAllele$Yield.classbin0 -> 2072 bytes
-rw-r--r--bin/binnie/core/genetics/ForestryAllele.classbin0 -> 1345 bytes
-rw-r--r--bin/binnie/core/genetics/Gene.classbin0 -> 2687 bytes
-rw-r--r--bin/binnie/core/genetics/IAlleleProvider.classbin0 -> 188 bytes
-rw-r--r--bin/binnie/core/genetics/IBreedingMessage$BranchDiscovered.classbin0 -> 2758 bytes
-rw-r--r--bin/binnie/core/genetics/IBreedingMessage$EpithetGained.classbin0 -> 1618 bytes
-rw-r--r--bin/binnie/core/genetics/IBreedingMessage$MessageSpeciesDiscovered.classbin0 -> 2590 bytes
-rw-r--r--bin/binnie/core/genetics/IBreedingMessage.classbin0 -> 541 bytes
-rw-r--r--bin/binnie/core/genetics/IItemStackRepresentitive.classbin0 -> 222 bytes
-rw-r--r--bin/binnie/core/genetics/ManagerGenetics$ComparatorAllele.classbin0 -> 1134 bytes
-rw-r--r--bin/binnie/core/genetics/ManagerGenetics.classbin0 -> 4934 bytes
-rw-r--r--bin/binnie/core/genetics/MothBreedingSystem.classbin0 -> 2275 bytes
-rw-r--r--bin/binnie/core/genetics/Tolerance.classbin0 -> 3469 bytes
-rw-r--r--bin/binnie/core/genetics/TreeBreedingSystem.classbin0 -> 4513 bytes
-rw-r--r--bin/binnie/core/genetics/VirtualBeeHousing.classbin0 -> 4643 bytes
-rw-r--r--bin/binnie/core/genetics/VirtualHousing.classbin0 -> 3077 bytes
-rw-r--r--bin/binnie/core/genetics/VirtualMothHousing.classbin0 -> 2617 bytes
-rw-r--r--bin/binnie/core/gui/BinnieCoreGUI.classbin0 -> 2876 bytes
-rw-r--r--bin/binnie/core/gui/BinnieGUIHandler.classbin0 -> 2550 bytes
-rw-r--r--bin/binnie/core/gui/IBinnieGUID.classbin0 -> 318 bytes
-rw-r--r--bin/binnie/core/item/IItemEnum.classbin0 -> 286 bytes
-rw-r--r--bin/binnie/core/item/IItemMisc.classbin0 -> 493 bytes
-rw-r--r--bin/binnie/core/item/ItemFieldKit.classbin0 -> 3690 bytes
-rw-r--r--bin/binnie/core/item/ItemGenesis.classbin0 -> 2180 bytes
-rw-r--r--bin/binnie/core/item/ItemMisc.classbin0 -> 3619 bytes
-rw-r--r--bin/binnie/core/item/ManagerItem.classbin0 -> 704 bytes
-rw-r--r--bin/binnie/core/item/ModuleItems.classbin0 -> 1791 bytes
-rw-r--r--bin/binnie/core/language/ManagerLanguage.classbin0 -> 2571 bytes
-rw-r--r--bin/binnie/core/liquid/BinnieFluid.classbin0 -> 923 bytes
-rw-r--r--bin/binnie/core/liquid/FluidContainer.classbin0 -> 2466 bytes
-rw-r--r--bin/binnie/core/liquid/IFluidType.classbin0 -> 542 bytes
-rw-r--r--bin/binnie/core/liquid/ILiquidType.classbin0 -> 183 bytes
-rw-r--r--bin/binnie/core/liquid/ItemFluidContainer.classbin0 -> 3978 bytes
-rw-r--r--bin/binnie/core/liquid/ManagerLiquid.classbin0 -> 4358 bytes
-rw-r--r--bin/binnie/core/machines/BlockMachine$IMachineTexturedFaces.classbin0 -> 292 bytes
-rw-r--r--bin/binnie/core/machines/BlockMachine.classbin0 -> 8370 bytes
-rw-r--r--bin/binnie/core/machines/IBlockMachine.classbin0 -> 241 bytes
-rw-r--r--bin/binnie/core/machines/IMachine.classbin0 -> 780 bytes
-rw-r--r--bin/binnie/core/machines/IMachineType.classbin0 -> 319 bytes
-rw-r--r--bin/binnie/core/machines/IOwnable.classbin0 -> 231 bytes
-rw-r--r--bin/binnie/core/machines/ItemMachine.classbin0 -> 1071 bytes
-rw-r--r--bin/binnie/core/machines/Machine.classbin0 -> 6706 bytes
-rw-r--r--bin/binnie/core/machines/MachineComponent.classbin0 -> 2417 bytes
-rw-r--r--bin/binnie/core/machines/MachineGroup.classbin0 -> 4995 bytes
-rw-r--r--bin/binnie/core/machines/MachinePackage.classbin0 -> 2405 bytes
-rw-r--r--bin/binnie/core/machines/MachineRendererBlock.classbin0 -> 1443 bytes
-rw-r--r--bin/binnie/core/machines/MachineUtil.classbin0 -> 7527 bytes
-rw-r--r--bin/binnie/core/machines/ManagerMachine.classbin0 -> 5246 bytes
-rw-r--r--bin/binnie/core/machines/ModelBlock.classbin0 -> 1685 bytes
-rw-r--r--bin/binnie/core/machines/RendererMachine.classbin0 -> 3576 bytes
-rw-r--r--bin/binnie/core/machines/TileEntityMachine.classbin0 -> 3423 bytes
-rw-r--r--bin/binnie/core/machines/base/DefaultInventory.classbin0 -> 2292 bytes
-rw-r--r--bin/binnie/core/machines/base/DefaultPower.classbin0 -> 2067 bytes
-rw-r--r--bin/binnie/core/machines/base/DefaultTankContainer.classbin0 -> 2695 bytes
-rw-r--r--bin/binnie/core/machines/base/TileEntityMachineBase.classbin0 -> 8316 bytes
-rw-r--r--bin/binnie/core/machines/component/ComponentRecipe.classbin0 -> 533 bytes
-rw-r--r--bin/binnie/core/machines/component/IBuildcraft$ActionProvider.classbin0 -> 424 bytes
-rw-r--r--bin/binnie/core/machines/component/IBuildcraft$TriggerProvider.classbin0 -> 369 bytes
-rw-r--r--bin/binnie/core/machines/component/IBuildcraft.classbin0 -> 335 bytes
-rw-r--r--bin/binnie/core/machines/component/IComponentRecipe.classbin0 -> 280 bytes
-rw-r--r--bin/binnie/core/machines/component/IInteraction$ChunkUnload.classbin0 -> 272 bytes
-rw-r--r--bin/binnie/core/machines/component/IInteraction$Invalidation.classbin0 -> 275 bytes
-rw-r--r--bin/binnie/core/machines/component/IInteraction$RightClick.classbin0 -> 341 bytes
-rw-r--r--bin/binnie/core/machines/component/IInteraction.classbin0 -> 408 bytes
-rw-r--r--bin/binnie/core/machines/component/IRender$DisplayTick.classbin0 -> 439 bytes
-rw-r--r--bin/binnie/core/machines/component/IRender$RandomDisplayTick.classbin0 -> 457 bytes
-rw-r--r--bin/binnie/core/machines/component/IRender$Render.classbin0 -> 433 bytes
-rw-r--r--bin/binnie/core/machines/component/IRender.classbin0 -> 385 bytes
-rw-r--r--bin/binnie/core/machines/inventory/AccessDirection.classbin0 -> 2404 bytes
-rw-r--r--bin/binnie/core/machines/inventory/BaseSlot.classbin0 -> 5113 bytes
-rw-r--r--bin/binnie/core/machines/inventory/ComponentChargedSlots.classbin0 -> 1775 bytes
-rw-r--r--bin/binnie/core/machines/inventory/ComponentInventory.classbin0 -> 722 bytes
-rw-r--r--bin/binnie/core/machines/inventory/ComponentInventorySlots.classbin0 -> 9621 bytes
-rw-r--r--bin/binnie/core/machines/inventory/ComponentInventoryTransfer$Condition.classbin0 -> 727 bytes
-rw-r--r--bin/binnie/core/machines/inventory/ComponentInventoryTransfer$Restock.classbin0 -> 2451 bytes
-rw-r--r--bin/binnie/core/machines/inventory/ComponentInventoryTransfer$Storage.classbin0 -> 2787 bytes
-rw-r--r--bin/binnie/core/machines/inventory/ComponentInventoryTransfer$Transfer.classbin0 -> 1765 bytes
-rw-r--r--bin/binnie/core/machines/inventory/ComponentInventoryTransfer.classbin0 -> 2733 bytes
-rw-r--r--bin/binnie/core/machines/inventory/ComponentTankContainer.classbin0 -> 8478 bytes
-rw-r--r--bin/binnie/core/machines/inventory/IChargedSlots.classbin0 -> 215 bytes
-rw-r--r--bin/binnie/core/machines/inventory/IInventoryMachine.classbin0 -> 293 bytes
-rw-r--r--bin/binnie/core/machines/inventory/IInventorySlots.classbin0 -> 542 bytes
-rw-r--r--bin/binnie/core/machines/inventory/IValidatedInventory.classbin0 -> 220 bytes
-rw-r--r--bin/binnie/core/machines/inventory/IValidatedTankContainer.classbin0 -> 266 bytes
-rw-r--r--bin/binnie/core/machines/inventory/InventorySlot$Type.classbin0 -> 1231 bytes
-rw-r--r--bin/binnie/core/machines/inventory/InventorySlot.classbin0 -> 5499 bytes
-rw-r--r--bin/binnie/core/machines/inventory/MachineSide.classbin0 -> 2944 bytes
-rw-r--r--bin/binnie/core/machines/inventory/SetList.classbin0 -> 1659 bytes
-rw-r--r--bin/binnie/core/machines/inventory/SidedAccess.classbin0 -> 3570 bytes
-rw-r--r--bin/binnie/core/machines/inventory/SlotValidator$Individual.classbin0 -> 1293 bytes
-rw-r--r--bin/binnie/core/machines/inventory/SlotValidator$Item.classbin0 -> 1127 bytes
-rw-r--r--bin/binnie/core/machines/inventory/SlotValidator.classbin0 -> 1230 bytes
-rw-r--r--bin/binnie/core/machines/inventory/TankSlot.classbin0 -> 4400 bytes
-rw-r--r--bin/binnie/core/machines/inventory/TankValidator$Basic.classbin0 -> 1253 bytes
-rw-r--r--bin/binnie/core/machines/inventory/TankValidator.classbin0 -> 743 bytes
-rw-r--r--bin/binnie/core/machines/inventory/TransferHandler.classbin0 -> 7027 bytes
-rw-r--r--bin/binnie/core/machines/inventory/Validator.classbin0 -> 583 bytes
-rw-r--r--bin/binnie/core/machines/inventory/ValidatorIcon.classbin0 -> 1330 bytes
-rw-r--r--bin/binnie/core/machines/network/INetwork$GuiNBT.classbin0 -> 376 bytes
-rw-r--r--bin/binnie/core/machines/network/INetwork$RecieveGuiNBT.classbin0 -> 384 bytes
-rw-r--r--bin/binnie/core/machines/network/INetwork$SendGuiNBT.classbin0 -> 361 bytes
-rw-r--r--bin/binnie/core/machines/network/INetwork$TilePacketSync.classbin0 -> 314 bytes
-rw-r--r--bin/binnie/core/machines/network/INetwork.classbin0 -> 455 bytes
-rw-r--r--bin/binnie/core/machines/power/ComponentPowerReceptor.classbin0 -> 4216 bytes
-rw-r--r--bin/binnie/core/machines/power/ComponentProcess.classbin0 -> 1867 bytes
-rw-r--r--bin/binnie/core/machines/power/ComponentProcessIndefinate.classbin0 -> 2213 bytes
-rw-r--r--bin/binnie/core/machines/power/ComponentProcessSetCost.classbin0 -> 861 bytes
-rw-r--r--bin/binnie/core/machines/power/ErrorState$InsufficientLiquid.classbin0 -> 1119 bytes
-rw-r--r--bin/binnie/core/machines/power/ErrorState$InsufficientPower.classbin0 -> 1034 bytes
-rw-r--r--bin/binnie/core/machines/power/ErrorState$InvalidItem.classbin0 -> 1297 bytes
-rw-r--r--bin/binnie/core/machines/power/ErrorState$InvalidRecipe.classbin0 -> 1105 bytes
-rw-r--r--bin/binnie/core/machines/power/ErrorState$Item.classbin0 -> 1033 bytes
-rw-r--r--bin/binnie/core/machines/power/ErrorState$NoItem.classbin0 -> 1251 bytes
-rw-r--r--bin/binnie/core/machines/power/ErrorState$NoSpace.classbin0 -> 1087 bytes
-rw-r--r--bin/binnie/core/machines/power/ErrorState$Tank.classbin0 -> 1033 bytes
-rw-r--r--bin/binnie/core/machines/power/ErrorState$TankSpace.classbin0 -> 1092 bytes
-rw-r--r--bin/binnie/core/machines/power/ErrorState.classbin0 -> 3228 bytes
-rw-r--r--bin/binnie/core/machines/power/IErrorStateSource.classbin0 -> 226 bytes
-rw-r--r--bin/binnie/core/machines/power/IPoweredMachine.classbin0 -> 613 bytes
-rw-r--r--bin/binnie/core/machines/power/IProcess.classbin0 -> 345 bytes
-rw-r--r--bin/binnie/core/machines/power/IProcessTimed.classbin0 -> 346 bytes
-rw-r--r--bin/binnie/core/machines/power/ITankMachine.classbin0 -> 585 bytes
-rw-r--r--bin/binnie/core/machines/power/PowerInfo.classbin0 -> 1714 bytes
-rw-r--r--bin/binnie/core/machines/power/PowerInterface.classbin0 -> 2310 bytes
-rw-r--r--bin/binnie/core/machines/power/PowerSystem.classbin0 -> 2335 bytes
-rw-r--r--bin/binnie/core/machines/power/ProcessInfo.classbin0 -> 2113 bytes
-rw-r--r--bin/binnie/core/machines/power/TankInfo.classbin0 -> 2941 bytes
-rw-r--r--bin/binnie/core/machines/storage/Compartment$PackageCompartment.classbin0 -> 1644 bytes
-rw-r--r--bin/binnie/core/machines/storage/Compartment.classbin0 -> 3223 bytes
-rw-r--r--bin/binnie/core/machines/storage/CompartmentTab.classbin0 -> 2769 bytes
-rw-r--r--bin/binnie/core/machines/storage/ComponentBinnieCoreGUI.classbin0 -> 838 bytes
-rw-r--r--bin/binnie/core/machines/storage/ComponentCompartmentInventory.classbin0 -> 1907 bytes
-rw-r--r--bin/binnie/core/machines/storage/ControlColourSelector.classbin0 -> 2363 bytes
-rw-r--r--bin/binnie/core/machines/storage/MachineRendererCompartment.classbin0 -> 2243 bytes
-rw-r--r--bin/binnie/core/machines/storage/ModelCompartment.classbin0 -> 4075 bytes
-rw-r--r--bin/binnie/core/machines/storage/ModuleStorage.classbin0 -> 3033 bytes
-rw-r--r--bin/binnie/core/machines/storage/StandardCompartment$PackageCompartment.classbin0 -> 1972 bytes
-rw-r--r--bin/binnie/core/machines/storage/StandardCompartment$PackageCompartmentBronze.classbin0 -> 2012 bytes
-rw-r--r--bin/binnie/core/machines/storage/StandardCompartment$PackageCompartmentCopper.classbin0 -> 2012 bytes
-rw-r--r--bin/binnie/core/machines/storage/StandardCompartment$PackageCompartmentDiamond.classbin0 -> 2015 bytes
-rw-r--r--bin/binnie/core/machines/storage/StandardCompartment$PackageCompartmentGold.classbin0 -> 2006 bytes
-rw-r--r--bin/binnie/core/machines/storage/StandardCompartment$PackageCompartmentIron.classbin0 -> 2005 bytes
-rw-r--r--bin/binnie/core/machines/storage/StandardCompartment.classbin0 -> 1029 bytes
-rw-r--r--bin/binnie/core/machines/storage/WindowCompartment.classbin0 -> 8389 bytes
-rw-r--r--bin/binnie/core/machines/storage/WindowTest.classbin0 -> 1350 bytes
-rw-r--r--bin/binnie/core/machines/transfer/TransferHandler.classbin0 -> 330 bytes
-rw-r--r--bin/binnie/core/machines/transfer/TransferRequest$TransferSlot.classbin0 -> 634 bytes
-rw-r--r--bin/binnie/core/machines/transfer/TransferRequest.classbin0 -> 11431 bytes
-rw-r--r--bin/binnie/core/mod/config/BinnieConfiguration.classbin0 -> 804 bytes
-rw-r--r--bin/binnie/core/mod/config/BinnieItemData.classbin0 -> 601 bytes
-rw-r--r--bin/binnie/core/mod/config/ConfigFile.classbin0 -> 346 bytes
-rw-r--r--bin/binnie/core/mod/config/ConfigProperty$Type.classbin0 -> 708 bytes
-rw-r--r--bin/binnie/core/mod/config/ConfigProperty.classbin0 -> 628 bytes
-rw-r--r--bin/binnie/core/mod/config/ConfigurationMain.classbin0 -> 456 bytes
-rw-r--r--bin/binnie/core/mod/config/ConfigurationMods.classbin0 -> 987 bytes
-rw-r--r--bin/binnie/core/mod/config/ManagerConfig.classbin0 -> 4028 bytes
-rw-r--r--bin/binnie/core/mod/config/PropBoolean$PropertyBoolean.classbin0 -> 1471 bytes
-rw-r--r--bin/binnie/core/mod/config/PropBoolean.classbin0 -> 609 bytes
-rw-r--r--bin/binnie/core/mod/config/PropDouble$PropertyDouble.classbin0 -> 1455 bytes
-rw-r--r--bin/binnie/core/mod/config/PropDouble.classbin0 -> 603 bytes
-rw-r--r--bin/binnie/core/mod/config/PropInteger$PropertyInteger.classbin0 -> 1471 bytes
-rw-r--r--bin/binnie/core/mod/config/PropInteger.classbin0 -> 609 bytes
-rw-r--r--bin/binnie/core/mod/config/PropPercentage$PropertyPercentage.classbin0 -> 1510 bytes
-rw-r--r--bin/binnie/core/mod/config/PropPercentage.classbin0 -> 1113 bytes
-rw-r--r--bin/binnie/core/mod/config/PropertyBase.classbin0 -> 4093 bytes
-rw-r--r--bin/binnie/core/mod/parser/FieldParser.classbin0 -> 1985 bytes
-rw-r--r--bin/binnie/core/mod/parser/ItemParser.classbin0 -> 1374 bytes
-rw-r--r--bin/binnie/core/multiblock/BlockMultiblockMachine.classbin0 -> 1143 bytes
-rw-r--r--bin/binnie/core/multiblock/TileEntityMultiblockMachine.classbin0 -> 1183 bytes
-rw-r--r--bin/binnie/core/network/BinnieCorePacketID.classbin0 -> 1640 bytes
-rw-r--r--bin/binnie/core/network/BinniePacketHandler.classbin0 -> 2294 bytes
-rw-r--r--bin/binnie/core/network/INetworkedEntity.classbin0 -> 230 bytes
-rw-r--r--bin/binnie/core/network/IOrdinaled.classbin0 -> 145 bytes
-rw-r--r--bin/binnie/core/network/IPacketID.classbin0 -> 280 bytes
-rw-r--r--bin/binnie/core/network/IPacketProvider.classbin0 -> 235 bytes
-rw-r--r--bin/binnie/core/network/packet/IPacket.classbin0 -> 177 bytes
-rw-r--r--bin/binnie/core/network/packet/IPacketLocation.classbin0 -> 278 bytes
-rw-r--r--bin/binnie/core/network/packet/IndexInPayload.classbin0 -> 514 bytes
-rw-r--r--bin/binnie/core/network/packet/MachinePayload.classbin0 -> 2400 bytes
-rw-r--r--bin/binnie/core/network/packet/MessageBase.classbin0 -> 2242 bytes
-rw-r--r--bin/binnie/core/network/packet/MessageBinnie.classbin0 -> 1243 bytes
-rw-r--r--bin/binnie/core/network/packet/MessageContainerUpdate.classbin0 -> 652 bytes
-rw-r--r--bin/binnie/core/network/packet/MessageCoordinates.classbin0 -> 1883 bytes
-rw-r--r--bin/binnie/core/network/packet/MessageCraftGUI.classbin0 -> 816 bytes
-rw-r--r--bin/binnie/core/network/packet/MessageMetadata.classbin0 -> 1242 bytes
-rw-r--r--bin/binnie/core/network/packet/MessageNBT.classbin0 -> 1506 bytes
-rw-r--r--bin/binnie/core/network/packet/MessageTileNBT.classbin0 -> 2281 bytes
-rw-r--r--bin/binnie/core/network/packet/MessageUpdate.classbin0 -> 3604 bytes
-rw-r--r--bin/binnie/core/network/packet/PacketPayload.classbin0 -> 2314 bytes
-rw-r--r--bin/binnie/core/proxy/BinnieModProxy.classbin0 -> 3243 bytes
-rw-r--r--bin/binnie/core/proxy/BinnieProxy.classbin0 -> 6061 bytes
-rw-r--r--bin/binnie/core/proxy/BinnieProxyClient.classbin0 -> 6800 bytes
-rw-r--r--bin/binnie/core/proxy/BinnieProxyServer.classbin0 -> 363 bytes
-rw-r--r--bin/binnie/core/proxy/IBinnieModProxy.classbin0 -> 583 bytes
-rw-r--r--bin/binnie/core/proxy/IBinnieProxy.classbin0 -> 1374 bytes
-rw-r--r--bin/binnie/core/proxy/IProxyCore.classbin0 -> 153 bytes
-rw-r--r--bin/binnie/core/resource/BinnieIcon.classbin0 -> 2037 bytes
-rw-r--r--bin/binnie/core/resource/BinnieResource.classbin0 -> 1613 bytes
-rw-r--r--bin/binnie/core/resource/IBinnieTexture.classbin0 -> 193 bytes
-rw-r--r--bin/binnie/core/resource/ManagerResource.classbin0 -> 2785 bytes
-rw-r--r--bin/binnie/core/resource/ResourceType.classbin0 -> 1517 bytes
-rw-r--r--bin/binnie/core/texture/BinnieCoreTexture.classbin0 -> 2372 bytes
-rw-r--r--bin/binnie/core/texture/TextureManager.classbin0 -> 700 bytes
-rw-r--r--bin/binnie/core/triggers/ActionProvider.classbin0 -> 1630 bytes
-rw-r--r--bin/binnie/core/triggers/BinnieAction.classbin0 -> 3183 bytes
-rw-r--r--bin/binnie/core/triggers/BinnieTrigger.classbin0 -> 4044 bytes
-rw-r--r--bin/binnie/core/triggers/ModuleTrigger.classbin0 -> 3246 bytes
-rw-r--r--bin/binnie/core/triggers/TriggerData.classbin0 -> 999 bytes
-rw-r--r--bin/binnie/core/triggers/TriggerInventory.classbin0 -> 735 bytes
-rw-r--r--bin/binnie/core/triggers/TriggerPower.classbin0 -> 2239 bytes
-rw-r--r--bin/binnie/core/triggers/TriggerProvider.classbin0 -> 1850 bytes
-rw-r--r--bin/binnie/core/triggers/TriggerWorking.classbin0 -> 1783 bytes
-rw-r--r--bin/binnie/core/util/FluidStackSet.classbin0 -> 3972 bytes
-rw-r--r--bin/binnie/core/util/IValidator.classbin0 -> 240 bytes
-rw-r--r--bin/binnie/core/util/ItemStackSet.classbin0 -> 3883 bytes
-rw-r--r--bin/binnie/core/util/UniqueFluidStackSet.classbin0 -> 2074 bytes
-rw-r--r--bin/binnie/core/util/UniqueItemStackSet.classbin0 -> 1030 bytes
-rw-r--r--bin/binnie/craftgui/binniecore/WindowFieldKit$StyleSheetPunnett.classbin0 -> 3648 bytes
-rw-r--r--bin/binnie/craftgui/binniecore/WindowFieldKit.classbin0 -> 8702 bytes
-rw-r--r--bin/binnie/craftgui/binniecore/WindowGenesis.classbin0 -> 4104 bytes
-rw-r--r--bin/binnie/craftgui/botany/ControlColourDisplay.classbin0 -> 2077 bytes
-rw-r--r--bin/binnie/craftgui/botany/ControlColourMixBox$Type.classbin0 -> 913 bytes
-rw-r--r--bin/binnie/craftgui/botany/ControlColourMixBox.classbin0 -> 1229 bytes
-rw-r--r--bin/binnie/craftgui/botany/ControlColourMixItem.classbin0 -> 2217 bytes
-rw-r--r--bin/binnie/craftgui/botany/ControlColourMixSymbol.classbin0 -> 1487 bytes
-rw-r--r--bin/binnie/craftgui/botany/ControlColourOption.classbin0 -> 1018 bytes
-rw-r--r--bin/binnie/craftgui/botany/PageColourMix.classbin0 -> 1565 bytes
-rw-r--r--bin/binnie/craftgui/botany/PageColourMixResultant.classbin0 -> 1601 bytes
-rw-r--r--bin/binnie/craftgui/botany/PageSpeciesFlowerGenome.classbin0 -> 2175 bytes
-rw-r--r--bin/binnie/craftgui/botany/WindowBotanistDatabase$FlowerMode.classbin0 -> 2018 bytes
-rw-r--r--bin/binnie/craftgui/botany/WindowBotanistDatabase.classbin0 -> 3354 bytes
-rw-r--r--bin/binnie/craftgui/controls/ControlCheckbox.classbin0 -> 2802 bytes
-rw-r--r--bin/binnie/craftgui/controls/ControlText.classbin0 -> 2737 bytes
-rw-r--r--bin/binnie/craftgui/controls/ControlTextCentered.classbin0 -> 1125 bytes
-rw-r--r--bin/binnie/craftgui/controls/ControlTextEdit.classbin0 -> 2047 bytes
-rw-r--r--bin/binnie/craftgui/controls/IControlSelection.classbin0 -> 483 bytes
-rw-r--r--bin/binnie/craftgui/controls/IControlSelectionOption.classbin0 -> 273 bytes
-rw-r--r--bin/binnie/craftgui/controls/button/ControlButton.classbin0 -> 2337 bytes
-rw-r--r--bin/binnie/craftgui/controls/button/ControlEnumButton.classbin0 -> 2268 bytes
-rw-r--r--bin/binnie/craftgui/controls/button/ControlToggleButton.classbin0 -> 607 bytes
-rw-r--r--bin/binnie/craftgui/controls/core/Control.classbin0 -> 3032 bytes
-rw-r--r--bin/binnie/craftgui/controls/core/IControlIndexed.classbin0 -> 192 bytes
-rw-r--r--bin/binnie/craftgui/controls/core/IControlValue.classbin0 -> 384 bytes
-rw-r--r--bin/binnie/craftgui/controls/core/IControlValues.classbin0 -> 479 bytes
-rw-r--r--bin/binnie/craftgui/controls/listbox/ControlList.classbin0 -> 5895 bytes
-rw-r--r--bin/binnie/craftgui/controls/listbox/ControlListBox.classbin0 -> 2682 bytes
-rw-r--r--bin/binnie/craftgui/controls/listbox/ControlOption.classbin0 -> 2723 bytes
-rw-r--r--bin/binnie/craftgui/controls/listbox/ControlTextOption.classbin0 -> 1666 bytes
-rw-r--r--bin/binnie/craftgui/controls/page/ControlPage.classbin0 -> 1689 bytes
-rw-r--r--bin/binnie/craftgui/controls/page/ControlPages.classbin0 -> 2382 bytes
-rw-r--r--bin/binnie/craftgui/controls/scroll/ControlScroll.classbin0 -> 983 bytes
-rw-r--r--bin/binnie/craftgui/controls/scroll/ControlScrollBar.classbin0 -> 1419 bytes
-rw-r--r--bin/binnie/craftgui/controls/scroll/ControlScrollableContent.classbin0 -> 2311 bytes
-rw-r--r--bin/binnie/craftgui/controls/scroll/IControlScrollable.classbin0 -> 337 bytes
-rw-r--r--bin/binnie/craftgui/controls/tab/ControlTab.classbin0 -> 4970 bytes
-rw-r--r--bin/binnie/craftgui/controls/tab/ControlTabBar.classbin0 -> 2461 bytes
-rw-r--r--bin/binnie/craftgui/core/Attribute.classbin0 -> 1277 bytes
-rw-r--r--bin/binnie/craftgui/core/CraftGUI.classbin0 -> 440 bytes
-rw-r--r--bin/binnie/craftgui/core/ITooltip.classbin0 -> 175 bytes
-rw-r--r--bin/binnie/craftgui/core/ITooltipHelp.classbin0 -> 187 bytes
-rw-r--r--bin/binnie/craftgui/core/ITopLevelWidget.classbin0 -> 615 bytes
-rw-r--r--bin/binnie/craftgui/core/IWidget.classbin0 -> 2508 bytes
-rw-r--r--bin/binnie/craftgui/core/IWidgetAttribute.classbin0 -> 134 bytes
-rw-r--r--bin/binnie/craftgui/core/RenderStage.classbin0 -> 1103 bytes
-rw-r--r--bin/binnie/craftgui/core/Tooltip$ITooltipType.classbin0 -> 209 bytes
-rw-r--r--bin/binnie/craftgui/core/Tooltip$Type.classbin0 -> 1375 bytes
-rw-r--r--bin/binnie/craftgui/core/Tooltip.classbin0 -> 3160 bytes
-rw-r--r--bin/binnie/craftgui/core/TopLevelWidget.classbin0 -> 3554 bytes
-rw-r--r--bin/binnie/craftgui/core/Widget.classbin0 -> 12431 bytes
-rw-r--r--bin/binnie/craftgui/core/geometry/CraftGUIUtil$1.classbin0 -> 1088 bytes
-rw-r--r--bin/binnie/craftgui/core/geometry/CraftGUIUtil$2.classbin0 -> 1085 bytes
-rw-r--r--bin/binnie/craftgui/core/geometry/CraftGUIUtil.classbin0 -> 3433 bytes
-rw-r--r--bin/binnie/craftgui/core/geometry/IArea.classbin0 -> 3979 bytes
-rw-r--r--bin/binnie/craftgui/core/geometry/IBorder.classbin0 -> 3419 bytes
-rw-r--r--bin/binnie/craftgui/core/geometry/IPoint.classbin0 -> 2138 bytes
-rw-r--r--bin/binnie/craftgui/core/geometry/Position.classbin0 -> 1808 bytes
-rw-r--r--bin/binnie/craftgui/core/geometry/TextJustification.classbin0 -> 1837 bytes
-rw-r--r--bin/binnie/craftgui/core/renderer/Renderer.classbin0 -> 9351 bytes
-rw-r--r--bin/binnie/craftgui/core/renderer/TextureType.classbin0 -> 1093 bytes
-rw-r--r--bin/binnie/craftgui/events/Event.classbin0 -> 672 bytes
-rw-r--r--bin/binnie/craftgui/events/EventButtonClicked$Handler.classbin0 -> 707 bytes
-rw-r--r--bin/binnie/craftgui/events/EventButtonClicked.classbin0 -> 520 bytes
-rw-r--r--bin/binnie/craftgui/events/EventCycleChanged.classbin0 -> 585 bytes
-rw-r--r--bin/binnie/craftgui/events/EventHandler$Origin.classbin0 -> 1654 bytes
-rw-r--r--bin/binnie/craftgui/events/EventHandler.classbin0 -> 1700 bytes
-rw-r--r--bin/binnie/craftgui/events/EventKey$Down$Handler.classbin0 -> 883 bytes
-rw-r--r--bin/binnie/craftgui/events/EventKey$Down.classbin0 -> 766 bytes
-rw-r--r--bin/binnie/craftgui/events/EventKey$Up$Handler.classbin0 -> 873 bytes
-rw-r--r--bin/binnie/craftgui/events/EventKey$Up.classbin0 -> 758 bytes
-rw-r--r--bin/binnie/craftgui/events/EventKey.classbin0 -> 823 bytes
-rw-r--r--bin/binnie/craftgui/events/EventMouse$Button.classbin0 -> 1409 bytes
-rw-r--r--bin/binnie/craftgui/events/EventMouse$Down$Handler.classbin0 -> 1301 bytes
-rw-r--r--bin/binnie/craftgui/events/EventMouse$Down.classbin0 -> 1246 bytes
-rw-r--r--bin/binnie/craftgui/events/EventMouse$Drag$Handler.classbin0 -> 1301 bytes
-rw-r--r--bin/binnie/craftgui/events/EventMouse$Drag.classbin0 -> 1241 bytes
-rw-r--r--bin/binnie/craftgui/events/EventMouse$Move$Handler.classbin0 -> 1301 bytes
-rw-r--r--bin/binnie/craftgui/events/EventMouse$Move.classbin0 -> 1376 bytes
-rw-r--r--bin/binnie/craftgui/events/EventMouse$Up$Handler.classbin0 -> 1291 bytes
-rw-r--r--bin/binnie/craftgui/events/EventMouse$Up.classbin0 -> 1238 bytes
-rw-r--r--bin/binnie/craftgui/events/EventMouse$Wheel$Handler.classbin0 -> 1306 bytes
-rw-r--r--bin/binnie/craftgui/events/EventMouse$Wheel.classbin0 -> 1295 bytes
-rw-r--r--bin/binnie/craftgui/events/EventMouse.classbin0 -> 779 bytes
-rw-r--r--bin/binnie/craftgui/events/EventTextEdit$Handler.classbin0 -> 677 bytes
-rw-r--r--bin/binnie/craftgui/events/EventTextEdit.classbin0 -> 708 bytes
-rw-r--r--bin/binnie/craftgui/events/EventToggleButtonClicked.classbin0 -> 608 bytes
-rw-r--r--bin/binnie/craftgui/events/EventValueChanged$Handler.classbin0 -> 701 bytes
-rw-r--r--bin/binnie/craftgui/events/EventValueChanged.classbin0 -> 1004 bytes
-rw-r--r--bin/binnie/craftgui/events/EventValuesChanged.classbin0 -> 911 bytes
-rw-r--r--bin/binnie/craftgui/events/EventWidget$ChangeColour$Handler.classbin0 -> 2294 bytes
-rw-r--r--bin/binnie/craftgui/events/EventWidget$ChangeColour.classbin0 -> 2164 bytes
-rw-r--r--bin/binnie/craftgui/events/EventWidget$ChangeOffset$Handler.classbin0 -> 2294 bytes
-rw-r--r--bin/binnie/craftgui/events/EventWidget$ChangeOffset.classbin0 -> 2164 bytes
-rw-r--r--bin/binnie/craftgui/events/EventWidget$ChangePosition$Handler.classbin0 -> 2304 bytes
-rw-r--r--bin/binnie/craftgui/events/EventWidget$ChangePosition.classbin0 -> 2172 bytes
-rw-r--r--bin/binnie/craftgui/events/EventWidget$ChangeSize$Handler.classbin0 -> 2284 bytes
-rw-r--r--bin/binnie/craftgui/events/EventWidget$ChangeSize.classbin0 -> 2156 bytes
-rw-r--r--bin/binnie/craftgui/events/EventWidget$Disable$Handler.classbin0 -> 2269 bytes
-rw-r--r--bin/binnie/craftgui/events/EventWidget$Disable.classbin0 -> 2144 bytes
-rw-r--r--bin/binnie/craftgui/events/EventWidget$Enable$Handler.classbin0 -> 2264 bytes
-rw-r--r--bin/binnie/craftgui/events/EventWidget$Enable.classbin0 -> 2140 bytes
-rw-r--r--bin/binnie/craftgui/events/EventWidget$EndDrag$Handler.classbin0 -> 2269 bytes
-rw-r--r--bin/binnie/craftgui/events/EventWidget$EndDrag.classbin0 -> 2144 bytes
-rw-r--r--bin/binnie/craftgui/events/EventWidget$EndMouseOver$Handler.classbin0 -> 2294 bytes
-rw-r--r--bin/binnie/craftgui/events/EventWidget$EndMouseOver.classbin0 -> 2164 bytes
-rw-r--r--bin/binnie/craftgui/events/EventWidget$GainFocus$Handler.classbin0 -> 2279 bytes
-rw-r--r--bin/binnie/craftgui/events/EventWidget$GainFocus.classbin0 -> 2152 bytes
-rw-r--r--bin/binnie/craftgui/events/EventWidget$Hide$Handler.classbin0 -> 2254 bytes
-rw-r--r--bin/binnie/craftgui/events/EventWidget$Hide.classbin0 -> 2132 bytes
-rw-r--r--bin/binnie/craftgui/events/EventWidget$LoseFocus$Handler.classbin0 -> 2279 bytes
-rw-r--r--bin/binnie/craftgui/events/EventWidget$LoseFocus.classbin0 -> 2152 bytes
-rw-r--r--bin/binnie/craftgui/events/EventWidget$Show$Handler.classbin0 -> 2254 bytes
-rw-r--r--bin/binnie/craftgui/events/EventWidget$Show.classbin0 -> 2132 bytes
-rw-r--r--bin/binnie/craftgui/events/EventWidget$StartDrag$Handler.classbin0 -> 2279 bytes
-rw-r--r--bin/binnie/craftgui/events/EventWidget$StartDrag.classbin0 -> 2263 bytes
-rw-r--r--bin/binnie/craftgui/events/EventWidget$StartMouseOver$Handler.classbin0 -> 2304 bytes
-rw-r--r--bin/binnie/craftgui/events/EventWidget$StartMouseOver.classbin0 -> 2172 bytes
-rw-r--r--bin/binnie/craftgui/events/EventWidget.classbin0 -> 1412 bytes
-rw-r--r--bin/binnie/craftgui/extratrees/dictionary/ControlBlockIconDisplay.classbin0 -> 1097 bytes
-rw-r--r--bin/binnie/craftgui/extratrees/dictionary/ControlBreweryProgress.classbin0 -> 1573 bytes
-rw-r--r--bin/binnie/craftgui/extratrees/dictionary/ControlDistilleryProgress.classbin0 -> 2007 bytes
-rw-r--r--bin/binnie/craftgui/extratrees/dictionary/ControlFruitPressProgress.classbin0 -> 1233 bytes
-rw-r--r--bin/binnie/craftgui/extratrees/dictionary/ControlLumbermillProgress.classbin0 -> 1225 bytes
-rw-r--r--bin/binnie/craftgui/extratrees/dictionary/ControlRecipeSlot.classbin0 -> 1241 bytes
-rw-r--r--bin/binnie/craftgui/extratrees/dictionary/ControlTileSelect$ControlTile.classbin0 -> 4151 bytes
-rw-r--r--bin/binnie/craftgui/extratrees/dictionary/ControlTileSelect.classbin0 -> 4577 bytes
-rw-r--r--bin/binnie/craftgui/extratrees/dictionary/DialogBreweryRecipe.classbin0 -> 640 bytes
-rw-r--r--bin/binnie/craftgui/extratrees/dictionary/PageFruit.classbin0 -> 1706 bytes
-rw-r--r--bin/binnie/craftgui/extratrees/dictionary/PagePlanksOverview.classbin0 -> 1829 bytes
-rw-r--r--bin/binnie/craftgui/extratrees/dictionary/PagePlanksTrees.classbin0 -> 1226 bytes
-rw-r--r--bin/binnie/craftgui/extratrees/dictionary/PageSpeciesImage.classbin0 -> 1305 bytes
-rw-r--r--bin/binnie/craftgui/extratrees/dictionary/PageSpeciesTreeGenome.classbin0 -> 1070 bytes
-rw-r--r--bin/binnie/craftgui/extratrees/dictionary/PageWood.classbin0 -> 1198 bytes
-rw-r--r--bin/binnie/craftgui/extratrees/dictionary/WindowArboristDatabase$TreeMode.classbin0 -> 1992 bytes
-rw-r--r--bin/binnie/craftgui/extratrees/dictionary/WindowArboristDatabase.classbin0 -> 3331 bytes
-rw-r--r--bin/binnie/craftgui/extratrees/dictionary/WindowBrewery.classbin0 -> 3984 bytes
-rw-r--r--bin/binnie/craftgui/extratrees/dictionary/WindowDistillery.classbin0 -> 2982 bytes
-rw-r--r--bin/binnie/craftgui/extratrees/dictionary/WindowLepidopteristDatabase.classbin0 -> 2468 bytes
-rw-r--r--bin/binnie/craftgui/extratrees/dictionary/WindowLumbermill.classbin0 -> 3610 bytes
-rw-r--r--bin/binnie/craftgui/extratrees/dictionary/WindowPress.classbin0 -> 4225 bytes
-rw-r--r--bin/binnie/craftgui/extratrees/dictionary/WindowSetSquare.classbin0 -> 1597 bytes
-rw-r--r--bin/binnie/craftgui/extratrees/dictionary/WindowWoodworker.classbin0 -> 3727 bytes
-rw-r--r--bin/binnie/craftgui/extratrees/kitchen/ControlDropDownMenu.classbin0 -> 569 bytes
-rw-r--r--bin/binnie/craftgui/extratrees/kitchen/ControlDropdownButton.classbin0 -> 820 bytes
-rw-r--r--bin/binnie/craftgui/extratrees/kitchen/ControlFluidDisplay.classbin0 -> 4004 bytes
-rw-r--r--bin/binnie/craftgui/extratrees/kitchen/ControlSlotFluid.classbin0 -> 3291 bytes
-rw-r--r--bin/binnie/craftgui/extratrees/kitchen/ControlSlotGlassware.classbin0 -> 1759 bytes
-rw-r--r--bin/binnie/craftgui/extratrees/kitchen/ControlTankSlot.classbin0 -> 1721 bytes
-rw-r--r--bin/binnie/craftgui/extratrees/kitchen/WindowBottleRack.classbin0 -> 2083 bytes
-rw-r--r--bin/binnie/craftgui/genetics/machine/ControlGene.classbin0 -> 2572 bytes
-rw-r--r--bin/binnie/craftgui/genetics/machine/ControlGeneScroll.classbin0 -> 1923 bytes
-rw-r--r--bin/binnie/craftgui/genetics/machine/ControlProcessTemporary.classbin0 -> 1505 bytes
-rw-r--r--bin/binnie/craftgui/genetics/machine/ControlSequencerProgress.classbin0 -> 2499 bytes
-rw-r--r--bin/binnie/craftgui/genetics/machine/ControlSplicerProgress.classbin0 -> 2663 bytes
-rw-r--r--bin/binnie/craftgui/genetics/machine/WindowAcclimatiser.classbin0 -> 3457 bytes
-rw-r--r--bin/binnie/craftgui/genetics/machine/WindowAnalyser.classbin0 -> 4069 bytes
-rw-r--r--bin/binnie/craftgui/genetics/machine/WindowGeneBank$ChromosomeType.classbin0 -> 3804 bytes
-rw-r--r--bin/binnie/craftgui/genetics/machine/WindowGeneBank.classbin0 -> 6962 bytes
-rw-r--r--bin/binnie/craftgui/genetics/machine/WindowGeneBankNEI.classbin0 -> 709 bytes
-rw-r--r--bin/binnie/craftgui/genetics/machine/WindowGeneProject.classbin0 -> 1405 bytes
-rw-r--r--bin/binnie/craftgui/genetics/machine/WindowGenepool.classbin0 -> 3694 bytes
-rw-r--r--bin/binnie/craftgui/genetics/machine/WindowGenomeAssembler.classbin0 -> 1488 bytes
-rw-r--r--bin/binnie/craftgui/genetics/machine/WindowIncubator.classbin0 -> 3988 bytes
-rw-r--r--bin/binnie/craftgui/genetics/machine/WindowInoculator.classbin0 -> 4861 bytes
-rw-r--r--bin/binnie/craftgui/genetics/machine/WindowIsolator.classbin0 -> 4376 bytes
-rw-r--r--bin/binnie/craftgui/genetics/machine/WindowMachine.classbin0 -> 1006 bytes
-rw-r--r--bin/binnie/craftgui/genetics/machine/WindowPolymeriser.classbin0 -> 4052 bytes
-rw-r--r--bin/binnie/craftgui/genetics/machine/WindowSequencer.classbin0 -> 4518 bytes
-rw-r--r--bin/binnie/craftgui/genetics/machine/WindowSplicer.classbin0 -> 4671 bytes
-rw-r--r--bin/binnie/craftgui/minecraft/ContainerCraftGUI.classbin0 -> 15809 bytes
-rw-r--r--bin/binnie/craftgui/minecraft/CustomSlot.classbin0 -> 2387 bytes
-rw-r--r--bin/binnie/craftgui/minecraft/Dialog.classbin0 -> 1533 bytes
-rw-r--r--bin/binnie/craftgui/minecraft/EnumColor.classbin0 -> 2607 bytes
-rw-r--r--bin/binnie/craftgui/minecraft/GUIIcon.classbin0 -> 2770 bytes
-rw-r--r--bin/binnie/craftgui/minecraft/GuiCraftGUI.classbin0 -> 4514 bytes
-rw-r--r--bin/binnie/craftgui/minecraft/IMachineInformation.classbin0 -> 193 bytes
-rw-r--r--bin/binnie/craftgui/minecraft/IMinecraftTooltip.classbin0 -> 249 bytes
-rw-r--r--bin/binnie/craftgui/minecraft/IWindowAffectsShiftClick.classbin0 -> 231 bytes
-rw-r--r--bin/binnie/craftgui/minecraft/InventoryType.classbin0 -> 1180 bytes
-rw-r--r--bin/binnie/craftgui/minecraft/ListMap.classbin0 -> 4964 bytes
-rw-r--r--bin/binnie/craftgui/minecraft/MinecraftGUI$PanelType.classbin0 -> 854 bytes
-rw-r--r--bin/binnie/craftgui/minecraft/MinecraftGUI.classbin0 -> 410 bytes
-rw-r--r--bin/binnie/craftgui/minecraft/MinecraftTooltip$Type.classbin0 -> 1367 bytes
-rw-r--r--bin/binnie/craftgui/minecraft/MinecraftTooltip$TypeColour.classbin0 -> 2430 bytes
-rw-r--r--bin/binnie/craftgui/minecraft/MinecraftTooltip.classbin0 -> 1181 bytes
-rw-r--r--bin/binnie/craftgui/minecraft/ModuleCraftGUI.classbin0 -> 720 bytes
-rw-r--r--bin/binnie/craftgui/minecraft/Window.classbin0 -> 5056 bytes
-rw-r--r--bin/binnie/craftgui/minecraft/WindowInventory.classbin0 -> 4535 bytes
-rw-r--r--bin/binnie/craftgui/minecraft/control/ControlEnergyBar.classbin0 -> 2028 bytes
-rw-r--r--bin/binnie/craftgui/minecraft/control/ControlErrorState.classbin0 -> 4837 bytes
-rw-r--r--bin/binnie/craftgui/minecraft/control/ControlHelp.classbin0 -> 2000 bytes
-rw-r--r--bin/binnie/craftgui/minecraft/control/ControlIconDisplay.classbin0 -> 1082 bytes
-rw-r--r--bin/binnie/craftgui/minecraft/control/ControlImage.classbin0 -> 1171 bytes
-rw-r--r--bin/binnie/craftgui/minecraft/control/ControlInfo.classbin0 -> 1930 bytes
-rw-r--r--bin/binnie/craftgui/minecraft/control/ControlItemDisplay.classbin0 -> 3833 bytes
-rw-r--r--bin/binnie/craftgui/minecraft/control/ControlLiquidTank.classbin0 -> 1836 bytes
-rw-r--r--bin/binnie/craftgui/minecraft/control/ControlMachineProgress.classbin0 -> 763 bytes
-rw-r--r--bin/binnie/craftgui/minecraft/control/ControlPlayerInventory.classbin0 -> 3322 bytes
-rw-r--r--bin/binnie/craftgui/minecraft/control/ControlPowerSystem.classbin0 -> 2253 bytes
-rw-r--r--bin/binnie/craftgui/minecraft/control/ControlProgress.classbin0 -> 1818 bytes
-rw-r--r--bin/binnie/craftgui/minecraft/control/ControlProgressBase.classbin0 -> 3679 bytes
-rw-r--r--bin/binnie/craftgui/minecraft/control/ControlSlide.classbin0 -> 5967 bytes
-rw-r--r--bin/binnie/craftgui/minecraft/control/ControlSlot.classbin0 -> 9488 bytes
-rw-r--r--bin/binnie/craftgui/minecraft/control/ControlSlotArray.classbin0 -> 3335 bytes
-rw-r--r--bin/binnie/craftgui/minecraft/control/ControlSlotBase.classbin0 -> 3066 bytes
-rw-r--r--bin/binnie/craftgui/minecraft/control/ControlSlotCharge.classbin0 -> 2697 bytes
-rw-r--r--bin/binnie/craftgui/minecraft/control/ControlTabIcon.classbin0 -> 2444 bytes
-rw-r--r--bin/binnie/craftgui/minecraft/control/ControlUser.classbin0 -> 2017 bytes
-rw-r--r--bin/binnie/craftgui/minecraft/control/EnumHighlighting.classbin0 -> 1282 bytes
-rw-r--r--bin/binnie/craftgui/minecraft/render/MinecraftTexture.classbin0 -> 553 bytes
-rw-r--r--bin/binnie/craftgui/minecraft/render/RenderCommand.classbin0 -> 511 bytes
-rw-r--r--bin/binnie/craftgui/mod/database/ControlBranchBox.classbin0 -> 1356 bytes
-rw-r--r--bin/binnie/craftgui/mod/database/ControlBranchBoxOption.classbin0 -> 1489 bytes
-rw-r--r--bin/binnie/craftgui/mod/database/ControlBreedingProgress.classbin0 -> 2310 bytes
-rw-r--r--bin/binnie/craftgui/mod/database/ControlDatabaseIndividualDisplay.classbin0 -> 2405 bytes
-rw-r--r--bin/binnie/craftgui/mod/database/ControlItemStackOption.classbin0 -> 2740 bytes
-rw-r--r--bin/binnie/craftgui/mod/database/ControlMutationBox$Type.classbin0 -> 1259 bytes
-rw-r--r--bin/binnie/craftgui/mod/database/ControlMutationBox.classbin0 -> 3527 bytes
-rw-r--r--bin/binnie/craftgui/mod/database/ControlMutationItem.classbin0 -> 3603 bytes
-rw-r--r--bin/binnie/craftgui/mod/database/ControlMutationSymbol.classbin0 -> 4382 bytes
-rw-r--r--bin/binnie/craftgui/mod/database/ControlSpeciesBox.classbin0 -> 1774 bytes
-rw-r--r--bin/binnie/craftgui/mod/database/ControlSpeciexBoxOption.classbin0 -> 3389 bytes
-rw-r--r--bin/binnie/craftgui/mod/database/DatabaseTab.classbin0 -> 1385 bytes
-rw-r--r--bin/binnie/craftgui/mod/database/EnumDiscoveryState.classbin0 -> 1246 bytes
-rw-r--r--bin/binnie/craftgui/mod/database/IDatabaseMode.classbin0 -> 177 bytes
-rw-r--r--bin/binnie/craftgui/mod/database/PageAbstract.classbin0 -> 1078 bytes
-rw-r--r--bin/binnie/craftgui/mod/database/PageBranch.classbin0 -> 636 bytes
-rw-r--r--bin/binnie/craftgui/mod/database/PageBranchOverview.classbin0 -> 3601 bytes
-rw-r--r--bin/binnie/craftgui/mod/database/PageBranchSpecies$1.classbin0 -> 1648 bytes
-rw-r--r--bin/binnie/craftgui/mod/database/PageBranchSpecies.classbin0 -> 2207 bytes
-rw-r--r--bin/binnie/craftgui/mod/database/PageBreeder.classbin0 -> 1257 bytes
-rw-r--r--bin/binnie/craftgui/mod/database/PageBreederStats.classbin0 -> 1121 bytes
-rw-r--r--bin/binnie/craftgui/mod/database/PageSpecies.classbin0 -> 638 bytes
-rw-r--r--bin/binnie/craftgui/mod/database/PageSpeciesClassification.classbin0 -> 3333 bytes
-rw-r--r--bin/binnie/craftgui/mod/database/PageSpeciesMutations.classbin0 -> 1606 bytes
-rw-r--r--bin/binnie/craftgui/mod/database/PageSpeciesOverview.classbin0 -> 4566 bytes
-rw-r--r--bin/binnie/craftgui/mod/database/PageSpeciesResultant.classbin0 -> 1614 bytes
-rw-r--r--bin/binnie/craftgui/mod/database/WindowAbstractDatabase$Mode.classbin0 -> 2916 bytes
-rw-r--r--bin/binnie/craftgui/mod/database/WindowAbstractDatabase$ModeWidgets.classbin0 -> 3351 bytes
-rw-r--r--bin/binnie/craftgui/mod/database/WindowAbstractDatabase.classbin0 -> 6903 bytes
-rw-r--r--bin/binnie/craftgui/resource/IStyleSheet.classbin0 -> 206 bytes
-rw-r--r--bin/binnie/craftgui/resource/StyleSheet.classbin0 -> 983 bytes
-rw-r--r--bin/binnie/craftgui/resource/StyleSheetManager$DefaultStyleSheet.classbin0 -> 841 bytes
-rw-r--r--bin/binnie/craftgui/resource/StyleSheetManager.classbin0 -> 942 bytes
-rw-r--r--bin/binnie/craftgui/resource/Texture.classbin0 -> 4276 bytes
-rw-r--r--bin/binnie/craftgui/resource/minecraft/CraftGUIResourceManager.classbin0 -> 7435 bytes
-rw-r--r--bin/binnie/craftgui/resource/minecraft/CraftGUITexture.classbin0 -> 4505 bytes
-rw-r--r--bin/binnie/craftgui/resource/minecraft/CraftGUITextureSheet.classbin0 -> 2171 bytes
-rw-r--r--bin/binnie/craftgui/resource/minecraft/PaddedTexture.classbin0 -> 1367 bytes
-rw-r--r--bin/binnie/craftgui/resource/minecraft/ParsedTextureSheet.classbin0 -> 961 bytes
-rw-r--r--bin/binnie/craftgui/resource/minecraft/StandardTexture.classbin0 -> 1697 bytes
-rw-r--r--bin/binnie/craftgui/window/Panel$IPanelType.classbin0 -> 203 bytes
-rw-r--r--bin/binnie/craftgui/window/Panel.classbin0 -> 1722 bytes
-rw-r--r--bin/binnie/extrabees/ExtraBees$PacketHandler.classbin0 -> 557 bytes
-rw-r--r--bin/binnie/extrabees/ExtraBees.classbin0 -> 3678 bytes
-rw-r--r--bin/binnie/extrabees/apiary/ComponentBeeModifier.classbin0 -> 2547 bytes
-rw-r--r--bin/binnie/extrabees/apiary/ComponentExtraBeeGUI.classbin0 -> 832 bytes
-rw-r--r--bin/binnie/extrabees/apiary/EnumHiveFrame.classbin0 -> 2589 bytes
-rw-r--r--bin/binnie/extrabees/apiary/IndustrialFrame.classbin0 -> 5063 bytes
-rw-r--r--bin/binnie/extrabees/apiary/ItemHiveFrame.classbin0 -> 3793 bytes
-rw-r--r--bin/binnie/extrabees/apiary/ItemIndustrialFrame.classbin0 -> 2783 bytes
-rw-r--r--bin/binnie/extrabees/apiary/ModuleApiary.classbin0 -> 2345 bytes
-rw-r--r--bin/binnie/extrabees/apiary/TileExtraBeeAlveary.classbin0 -> 10341 bytes
-rw-r--r--bin/binnie/extrabees/apiary/machine/AlvearyFrame$ComponentFrameModifier.classbin0 -> 3730 bytes
-rw-r--r--bin/binnie/extrabees/apiary/machine/AlvearyFrame$PackageAlvearyFrame.classbin0 -> 2122 bytes
-rw-r--r--bin/binnie/extrabees/apiary/machine/AlvearyFrame$SlotValidatorFrame.classbin0 -> 1292 bytes
-rw-r--r--bin/binnie/extrabees/apiary/machine/AlvearyFrame.classbin0 -> 748 bytes
-rw-r--r--bin/binnie/extrabees/apiary/machine/AlvearyHatchery$ComponentFrameModifier.classbin0 -> 3171 bytes
-rw-r--r--bin/binnie/extrabees/apiary/machine/AlvearyHatchery$PackageAlvearyHatchery.classbin0 -> 2319 bytes
-rw-r--r--bin/binnie/extrabees/apiary/machine/AlvearyHatchery$SlotValidatorLarvae.classbin0 -> 1667 bytes
-rw-r--r--bin/binnie/extrabees/apiary/machine/AlvearyHatchery.classbin0 -> 794 bytes
-rw-r--r--bin/binnie/extrabees/apiary/machine/AlvearyLighting$ComponentLighting.classbin0 -> 928 bytes
-rw-r--r--bin/binnie/extrabees/apiary/machine/AlvearyLighting$PackageAlvearyLighting.classbin0 -> 1174 bytes
-rw-r--r--bin/binnie/extrabees/apiary/machine/AlvearyLighting.classbin0 -> 565 bytes
-rw-r--r--bin/binnie/extrabees/apiary/machine/AlvearyMachine$AlvearyPackage.classbin0 -> 1813 bytes
-rw-r--r--bin/binnie/extrabees/apiary/machine/AlvearyMachine.classbin0 -> 3627 bytes
-rw-r--r--bin/binnie/extrabees/apiary/machine/AlvearyMutator$ComponentMutatorModifier.classbin0 -> 1837 bytes
-rw-r--r--bin/binnie/extrabees/apiary/machine/AlvearyMutator$PackageAlvearyMutator.classbin0 -> 2154 bytes
-rw-r--r--bin/binnie/extrabees/apiary/machine/AlvearyMutator$SlotValidatorMutator.classbin0 -> 1210 bytes
-rw-r--r--bin/binnie/extrabees/apiary/machine/AlvearyMutator.classbin0 -> 2333 bytes
-rw-r--r--bin/binnie/extrabees/apiary/machine/AlvearyRainShield$ComponentRainShield.classbin0 -> 937 bytes
-rw-r--r--bin/binnie/extrabees/apiary/machine/AlvearyRainShield$PackageAlvearyRainShield.classbin0 -> 1194 bytes
-rw-r--r--bin/binnie/extrabees/apiary/machine/AlvearyRainShield.classbin0 -> 583 bytes
-rw-r--r--bin/binnie/extrabees/apiary/machine/AlvearyStimulator$CircuitType.classbin0 -> 2471 bytes
-rw-r--r--bin/binnie/extrabees/apiary/machine/AlvearyStimulator$ComponentStimulatorModifier.classbin0 -> 2767 bytes
-rw-r--r--bin/binnie/extrabees/apiary/machine/AlvearyStimulator$PackageAlvearyStimulator.classbin0 -> 1230 bytes
-rw-r--r--bin/binnie/extrabees/apiary/machine/AlvearyStimulator$SlotValidatorCircuit.classbin0 -> 1167 bytes
-rw-r--r--bin/binnie/extrabees/apiary/machine/AlvearyStimulator$StimulatorCircuit.classbin0 -> 2318 bytes
-rw-r--r--bin/binnie/extrabees/apiary/machine/AlvearyStimulator.classbin0 -> 1317 bytes
-rw-r--r--bin/binnie/extrabees/apiary/machine/AlvearyTransmission$ComponentTransmission.classbin0 -> 2849 bytes
-rw-r--r--bin/binnie/extrabees/apiary/machine/AlvearyTransmission$PackageAlvearyTransmission.classbin0 -> 1327 bytes
-rw-r--r--bin/binnie/extrabees/apiary/machine/AlvearyTransmission.classbin0 -> 601 bytes
-rw-r--r--bin/binnie/extrabees/config/ConfigurationMachines.classbin0 -> 1059 bytes
-rw-r--r--bin/binnie/extrabees/config/ConfigurationMain.classbin0 -> 966 bytes
-rw-r--r--bin/binnie/extrabees/core/ExtraBeeGUID.classbin0 -> 1890 bytes
-rw-r--r--bin/binnie/extrabees/core/ExtraBeeItems.classbin0 -> 2727 bytes
-rw-r--r--bin/binnie/extrabees/core/ExtraBeeTexture.classbin0 -> 2893 bytes
-rw-r--r--bin/binnie/extrabees/core/ModuleCore.classbin0 -> 1066 bytes
-rw-r--r--bin/binnie/extrabees/genetics/ExtraBeeMutation$MutationRequirement.classbin0 -> 694 bytes
-rw-r--r--bin/binnie/extrabees/genetics/ExtraBeeMutation$RequirementBiomeType.classbin0 -> 1913 bytes
-rw-r--r--bin/binnie/extrabees/genetics/ExtraBeeMutation$RequirementPerson.classbin0 -> 1622 bytes
-rw-r--r--bin/binnie/extrabees/genetics/ExtraBeeMutation.classbin0 -> 10376 bytes
-rw-r--r--bin/binnie/extrabees/genetics/ExtraBeesBranch.classbin0 -> 11238 bytes
-rw-r--r--bin/binnie/extrabees/genetics/ExtraBeesFlowers.classbin0 -> 3923 bytes
-rw-r--r--bin/binnie/extrabees/genetics/ExtraBeesSpecies$State.classbin0 -> 4508 bytes
-rw-r--r--bin/binnie/extrabees/genetics/ExtraBeesSpecies.classbin0 -> 18524 bytes
-rw-r--r--bin/binnie/extrabees/genetics/ModuleGenetics.classbin0 -> 4470 bytes
-rw-r--r--bin/binnie/extrabees/genetics/effect/BlockEctoplasm.classbin0 -> 1825 bytes
-rw-r--r--bin/binnie/extrabees/genetics/effect/EntityBeeLightning.classbin0 -> 2528 bytes
-rw-r--r--bin/binnie/extrabees/genetics/effect/ExtraBeesEffect$Birthday.classbin0 -> 1289 bytes
-rw-r--r--bin/binnie/extrabees/genetics/effect/ExtraBeesEffect.classbin0 -> 4825 bytes
-rw-r--r--bin/binnie/extrabees/genetics/effect/FireworkCreator$Firework.classbin0 -> 2943 bytes
-rw-r--r--bin/binnie/extrabees/genetics/effect/FireworkCreator$Shape.classbin0 -> 1412 bytes
-rw-r--r--bin/binnie/extrabees/genetics/effect/FireworkCreator.classbin0 -> 517 bytes
-rw-r--r--bin/binnie/extrabees/genetics/items/ItemDictionary.classbin0 -> 3597 bytes
-rw-r--r--bin/binnie/extrabees/genetics/items/ItemPunnettSquare.classbin0 -> 2191 bytes
-rw-r--r--bin/binnie/extrabees/gui/WindowAlvearyFrame.classbin0 -> 1310 bytes
-rw-r--r--bin/binnie/extrabees/gui/WindowAlvearyHatchery.classbin0 -> 1322 bytes
-rw-r--r--bin/binnie/extrabees/gui/WindowAlvearyIndustrialFrame.classbin0 -> 1350 bytes
-rw-r--r--bin/binnie/extrabees/gui/WindowAlvearyMutator.classbin0 -> 1318 bytes
-rw-r--r--bin/binnie/extrabees/gui/WindowAlvearyStimulator.classbin0 -> 1330 bytes
-rw-r--r--bin/binnie/extrabees/gui/database/ControlBiomes.classbin0 -> 3680 bytes
-rw-r--r--bin/binnie/extrabees/gui/database/ControlClimateBar.classbin0 -> 4028 bytes
-rw-r--r--bin/binnie/extrabees/gui/database/ControlProductsBox$Product.classbin0 -> 973 bytes
-rw-r--r--bin/binnie/extrabees/gui/database/ControlProductsBox$Type.classbin0 -> 898 bytes
-rw-r--r--bin/binnie/extrabees/gui/database/ControlProductsBox.classbin0 -> 1529 bytes
-rw-r--r--bin/binnie/extrabees/gui/database/ControlProductsItem.classbin0 -> 3014 bytes
-rw-r--r--bin/binnie/extrabees/gui/database/PageSpeciesClimate.classbin0 -> 1679 bytes
-rw-r--r--bin/binnie/extrabees/gui/database/PageSpeciesGenome.classbin0 -> 6622 bytes
-rw-r--r--bin/binnie/extrabees/gui/database/PageSpeciesProducts.classbin0 -> 1888 bytes
-rw-r--r--bin/binnie/extrabees/gui/database/WindowApiaristDatabase$BranchesTab.classbin0 -> 961 bytes
-rw-r--r--bin/binnie/extrabees/gui/database/WindowApiaristDatabase$SpeciesTab.classbin0 -> 1053 bytes
-rw-r--r--bin/binnie/extrabees/gui/database/WindowApiaristDatabase.classbin0 -> 1643 bytes
-rw-r--r--bin/binnie/extrabees/gui/punnett/ControlChromosome.classbin0 -> 2493 bytes
-rw-r--r--bin/binnie/extrabees/gui/punnett/ControlPunnett.classbin0 -> 4458 bytes
-rw-r--r--bin/binnie/extrabees/gui/punnett/ExtraBeeGUITexture.classbin0 -> 1143 bytes
-rw-r--r--bin/binnie/extrabees/gui/punnett/WindowPunnettSquare$StyleSheetPunnett.classbin0 -> 877 bytes
-rw-r--r--bin/binnie/extrabees/gui/punnett/WindowPunnettSquare.classbin0 -> 1877 bytes
-rw-r--r--bin/binnie/extrabees/liquids/ExtraBeeLiquid.classbin0 -> 3696 bytes
-rw-r--r--bin/binnie/extrabees/liquids/ModuleLiquids.classbin0 -> 926 bytes
-rw-r--r--bin/binnie/extrabees/products/EnumHoneyComb.classbin0 -> 10564 bytes
-rw-r--r--bin/binnie/extrabees/products/EnumHoneyDrop.classbin0 -> 5640 bytes
-rw-r--r--bin/binnie/extrabees/products/EnumPropolis.classbin0 -> 4016 bytes
-rw-r--r--bin/binnie/extrabees/products/ItemHoneyComb$VanillaComb.classbin0 -> 1378 bytes
-rw-r--r--bin/binnie/extrabees/products/ItemHoneyComb.classbin0 -> 1963 bytes
-rw-r--r--bin/binnie/extrabees/products/ItemHoneyCrystal.classbin0 -> 2313 bytes
-rw-r--r--bin/binnie/extrabees/products/ItemHoneyCrystalEmpty.classbin0 -> 1537 bytes
-rw-r--r--bin/binnie/extrabees/products/ItemHoneyDrop.classbin0 -> 2327 bytes
-rw-r--r--bin/binnie/extrabees/products/ItemProduct.classbin0 -> 1846 bytes
-rw-r--r--bin/binnie/extrabees/products/ItemPropolis.classbin0 -> 1946 bytes
-rw-r--r--bin/binnie/extrabees/products/ModuleProducts.classbin0 -> 893 bytes
-rw-r--r--bin/binnie/extrabees/proxy/ExtraBeesProxy.classbin0 -> 451 bytes
-rw-r--r--bin/binnie/extrabees/proxy/ExtraBeesProxyClient.classbin0 -> 352 bytes
-rw-r--r--bin/binnie/extrabees/proxy/ExtraBeesProxyServer.classbin0 -> 352 bytes
-rw-r--r--bin/binnie/extrabees/worldgen/BlockExtraBeeHive.classbin0 -> 5349 bytes
-rw-r--r--bin/binnie/extrabees/worldgen/EnumHiveType.classbin0 -> 1332 bytes
-rw-r--r--bin/binnie/extrabees/worldgen/HiveDrop.classbin0 -> 3810 bytes
-rw-r--r--bin/binnie/extrabees/worldgen/ItemBeehive.classbin0 -> 1977 bytes
-rw-r--r--bin/binnie/extrabees/worldgen/MaterialBeehive.classbin0 -> 701 bytes
-rw-r--r--bin/binnie/extrabees/worldgen/ModuleGeneration.classbin0 -> 3189 bytes
-rw-r--r--bin/binnie/extrabees/worldgen/WorldGenHiveNether.classbin0 -> 1991 bytes
-rw-r--r--bin/binnie/extrabees/worldgen/WorldGenHiveRock.classbin0 -> 1460 bytes
-rw-r--r--bin/binnie/extrabees/worldgen/WorldGenHiveWater.classbin0 -> 1829 bytes
-rw-r--r--bin/mcmod.info19
-rw-r--r--bin/miscutil/MiscUtils.classbin0 -> 3286 bytes
-rw-r--r--bin/miscutil/core/CommonProxy.classbin0 -> 1992 bytes
-rw-r--r--bin/miscutil/core/block/AdvancedBlock.classbin0 -> 2187 bytes
-rw-r--r--bin/miscutil/core/block/BasicBlock.classbin0 -> 1556 bytes
-rw-r--r--bin/miscutil/core/block/ModBlocks.classbin0 -> 1118 bytes
-rw-r--r--bin/miscutil/core/commands/CommandMath.classbin0 -> 6393 bytes
-rw-r--r--bin/miscutil/core/commands/CommandUtils.classbin0 -> 691 bytes
-rw-r--r--bin/miscutil/core/creativetabs/MiscUtilCreativeTabBlock.classbin0 -> 753 bytes
-rw-r--r--bin/miscutil/core/creativetabs/MiscUtilCreativeTabMachines.classbin0 -> 763 bytes
-rw-r--r--bin/miscutil/core/creativetabs/MiscUtilCreativeTabMisc.classbin0 -> 632 bytes
-rw-r--r--bin/miscutil/core/creativetabs/MiscUtilCreativeTabTools.classbin0 -> 636 bytes
-rw-r--r--bin/miscutil/core/creativetabs/TMCreativeTabs.classbin0 -> 883 bytes
-rw-r--r--bin/miscutil/core/gui/GUI_Bat_Buf$NextPageButton.classbin0 -> 1768 bytes
-rw-r--r--bin/miscutil/core/gui/GUI_Bat_Buf.classbin0 -> 5195 bytes
-rw-r--r--bin/miscutil/core/gui/GUI_Battery_Buffer.classbin0 -> 692 bytes
-rw-r--r--bin/miscutil/core/gui/GUI_Tool_Builder.classbin0 -> 309 bytes
-rw-r--r--bin/miscutil/core/gui/Gui_No_Inventory_Base.classbin0 -> 701 bytes
-rw-r--r--bin/miscutil/core/gui/ModGUI.classbin0 -> 440 bytes
-rw-r--r--bin/miscutil/core/handler/CraftingManager.classbin0 -> 548 bytes
-rw-r--r--bin/miscutil/core/handler/GuiHandler.classbin0 -> 1749 bytes
-rw-r--r--bin/miscutil/core/handler/ResourceHandler.classbin0 -> 2033 bytes
-rw-r--r--bin/miscutil/core/item/BaseMetaItemTool.classbin0 -> 311 bytes
-rw-r--r--bin/miscutil/core/item/EntityTeleportFX.classbin0 -> 5507 bytes
-rw-r--r--bin/miscutil/core/item/ModItems.classbin0 -> 5887 bytes
-rw-r--r--bin/miscutil/core/item/effects/RarityEffect.classbin0 -> 1110 bytes
-rw-r--r--bin/miscutil/core/item/effects/RarityEpic.classbin0 -> 1102 bytes
-rw-r--r--bin/miscutil/core/item/effects/RarityRare.classbin0 -> 1102 bytes
-rw-r--r--bin/miscutil/core/item/effects/RarityUncommon.classbin0 -> 865 bytes
-rw-r--r--bin/miscutil/core/item/materials/MaterialHandler.classbin0 -> 369 bytes
-rw-r--r--bin/miscutil/core/item/tool/bloodsteel/BloodSteelArmor.classbin0 -> 2444 bytes
-rw-r--r--bin/miscutil/core/item/tool/bloodsteel/BloodSteelAxe.classbin0 -> 569 bytes
-rw-r--r--bin/miscutil/core/item/tool/bloodsteel/BloodSteelHoe.classbin0 -> 569 bytes
-rw-r--r--bin/miscutil/core/item/tool/bloodsteel/BloodSteelPickaxe.classbin0 -> 585 bytes
-rw-r--r--bin/miscutil/core/item/tool/bloodsteel/BloodSteelSpade.classbin0 -> 577 bytes
-rw-r--r--bin/miscutil/core/item/tool/bloodsteel/BloodSteelSword.classbin0 -> 577 bytes
-rw-r--r--bin/miscutil/core/item/tool/staballoy/StaballoyPickaxe.classbin0 -> 1019 bytes
-rw-r--r--bin/miscutil/core/lib/Strings$GUI_ENUM.classbin0 -> 1272 bytes
-rw-r--r--bin/miscutil/core/lib/Strings.classbin0 -> 653 bytes
-rw-r--r--bin/miscutil/core/proxy/ClientProxy.classbin0 -> 1244 bytes
-rw-r--r--bin/miscutil/core/proxy/ServerProxy.classbin0 -> 938 bytes
-rw-r--r--bin/miscutil/core/tileentities/ModTileEntities.classbin0 -> 494 bytes
-rw-r--r--bin/miscutil/core/util/Benchmark.classbin0 -> 4673 bytes
-rw-r--r--bin/miscutil/core/util/Utils.classbin0 -> 2084 bytes
-rw-r--r--bin/miscutil/gregtech/energy/IC2ElectricItem.classbin0 -> 447 bytes
-rw-r--r--bin/miscutil/gregtech/energy/IC2ElectricItemManager.classbin0 -> 643 bytes
-rw-r--r--bin/miscutil/gregtech/enums/AddExtraOreDict.classbin0 -> 861 bytes
-rw-r--r--bin/miscutil/gregtech/enums/ExtraOreDictNames.classbin0 -> 1053 bytes
-rw-r--r--bin/miscutil/gregtech/enums/GregtechItemList.classbin0 -> 8710 bytes
-rw-r--r--bin/miscutil/gregtech/init/InitGregtech.classbin0 -> 696 bytes
-rw-r--r--bin/miscutil/gregtech/init/machines/GregtechCobbleGenerator.classbin0 -> 4700 bytes
-rw-r--r--bin/miscutil/gregtech/init/machines/GregtechEnergyBuffer.classbin0 -> 5932 bytes
-rw-r--r--bin/miscutil/gregtech/interfaces/GregtechItemContainer.classbin0 -> 1075 bytes
-rw-r--r--bin/miscutil/gregtech/metatileentity/implementations/GregtechMetaCreativeEnergyBuffer.classbin0 -> 10501 bytes
-rw-r--r--bin/miscutil/gregtech/metatileentity/implementations/GregtechMetaEnergyBuffer.classbin0 -> 14298 bytes
-rw-r--r--bin/miscutil/gregtech/metatileentity/implementations/GregtechMetaTileEntity.classbin0 -> 2055 bytes
-rw-r--r--bin/miscutil/gregtech/metatileentity/implementations/GregtechSteelBoiler.classbin0 -> 9393 bytes
-rw-r--r--bin/miscutil/gregtech/util/IMessage.classbin0 -> 1105 bytes
-rw-r--r--bin/miscutil/gregtech/util/VanillaChatCommandSender.classbin0 -> 529 bytes
-rw-r--r--build.gradle43
-rw-r--r--config/CodeChickenCore.cfg27
-rw-r--r--config/CodeChickenLib.cfg8
-rw-r--r--config/enderio/AlloySmelterRecipes_Core.xml444
-rw-r--r--config/enderio/AlloySmelterRecipes_User.xml31
-rw-r--r--config/enderio/EnchanterRecipes_Core.xml137
-rw-r--r--config/enderio/EnchanterRecipes_User.xml27
-rw-r--r--config/enderio/EnderIO.cfg876
-rw-r--r--config/enderio/OreDictionaryPreferences_Core.xml120
-rw-r--r--config/enderio/OreDictionaryPreferences_User.xml5
-rw-r--r--config/enderio/PainterPaintSources_Core.xml42
-rw-r--r--config/enderio/PainterPaintSources_User.xml14
-rw-r--r--config/enderio/PoweredSpawnerConfig_Core.json50
-rw-r--r--config/enderio/PoweredSpawnerConfig_User.json9
-rw-r--r--config/enderio/SAGMillRecipes_Core.xml2456
-rw-r--r--config/enderio/SAGMillRecipes_User.xml107
-rw-r--r--config/enderio/SliceAndSpliceRecipes_Core.xml72
-rw-r--r--config/enderio/SliceAndSpliceRecipes_User.xml3
-rw-r--r--config/enderio/VatRecipes_Core.xml113
-rw-r--r--config/enderio/VatRecipes_User.xml3
-rw-r--r--config/forge.cfg57
-rw-r--r--config/forgeChunkLoading.cfg47
-rw-r--r--config/splash.properties14
-rw-r--r--crash-reports/crash-2015-09-03_01.03.17-client.txt137
-rw-r--r--crash-reports/crash-2015-09-03_02.31.22-client.txt138
-rw-r--r--crash-reports/crash-2015-09-03_03.55.55-client.txt142
-rw-r--r--crash-reports/crash-2015-09-03_04.00.57-client.txt142
-rw-r--r--crash-reports/crash-2015-09-03_04.08.04-client.txt136
-rw-r--r--crash-reports/crash-2015-09-03_04.10.26-client.txt136
-rw-r--r--crash-reports/crash-2015-09-03_06.06.01-server.txt81
-rw-r--r--crash-reports/crash-2015-09-03_06.06.02-client.txt106
-rw-r--r--crash-reports/crash-2015-09-03_06.08.01-client.txt106
-rw-r--r--crash-reports/crash-2015-09-03_06.08.01-server.txt81
-rw-r--r--crash-reports/crash-2015-09-06_16.12.20-client.txt106
-rw-r--r--crash-reports/crash-2015-09-06_16.15.28-client.txt106
-rw-r--r--crash-reports/crash-2015-09-06_16.17.17-client.txt106
-rw-r--r--crash-reports/crash-2015-09-06_16.20.14-client.txt106
-rw-r--r--crash-reports/crash-2015-09-06_16.22.49-client.txt106
-rw-r--r--crash-reports/crash-2015-09-06_16.28.30-client.txt106
-rw-r--r--crash-reports/crash-2015-09-06_16.30.30-server.txt75
-rw-r--r--crash-reports/crash-2015-09-06_16.31.12-server.txt75
-rw-r--r--crash-reports/crash-2015-09-06_16.40.22-server.txt75
-rw-r--r--crash-reports/crash-2015-09-06_17.03.21-server.txt81
-rw-r--r--crash-reports/crash-2015-09-06_17.03.22-client.txt106
-rw-r--r--crash-reports/crash-2015-09-06_20.17.28-server.txt81
-rw-r--r--crash-reports/crash-2015-09-07_11.42.37-server.txt81
-rw-r--r--crash-reports/crash-2015-10-05_13.10.06-client.txt122
-rw-r--r--crash-reports/crash-2015-10-12_15.00.35-client.txt122
-rw-r--r--crash-reports/crash-2015-10-12_15.01.20-client.txt122
-rw-r--r--crash-reports/crash-2015-10-12_15.06.04-client.txt122
-rw-r--r--eula.txt3
-rw-r--r--gradle/wrapper/gradle-wrapper.jarbin0 -> 51017 bytes
-rw-r--r--gradle/wrapper/gradle-wrapper.properties6
-rw-r--r--gradlew164
-rw-r--r--gradlew.bat90
-rw-r--r--hs_err_pid16588.log389
-rw-r--r--logs/2015-08-25-1.log.gzbin0 -> 390 bytes
-rw-r--r--logs/2015-08-25-2.log.gzbin0 -> 652 bytes
-rw-r--r--logs/2015-08-25-3.log.gzbin0 -> 384 bytes
-rw-r--r--logs/2015-08-25-4.log.gzbin0 -> 702 bytes
-rw-r--r--logs/2015-08-25-5.log.gzbin0 -> 528 bytes
-rw-r--r--logs/2015-08-25-6.log.gzbin0 -> 397 bytes
-rw-r--r--logs/2015-08-25-7.log.gzbin0 -> 391 bytes
-rw-r--r--logs/2015-08-28-1.log.gzbin0 -> 618 bytes
-rw-r--r--logs/2015-08-28-2.log.gzbin0 -> 336 bytes
-rw-r--r--logs/2015-08-28-3.log.gzbin0 -> 610 bytes
-rw-r--r--logs/2015-08-28-4.log.gzbin0 -> 333 bytes
-rw-r--r--logs/2015-08-28-5.log.gzbin0 -> 607 bytes
-rw-r--r--logs/2015-08-28-6.log.gzbin0 -> 798 bytes
-rw-r--r--logs/2015-08-28-7.log.gzbin0 -> 610 bytes
-rw-r--r--logs/2015-08-29-1.log.gzbin0 -> 607 bytes
-rw-r--r--logs/2015-08-30-1.log.gzbin0 -> 619 bytes
-rw-r--r--logs/2015-08-30-2.log.gzbin0 -> 334 bytes
-rw-r--r--logs/2015-08-30-3.log.gzbin0 -> 375 bytes
-rw-r--r--logs/2015-08-31-1.log.gzbin0 -> 325 bytes
-rw-r--r--logs/2015-08-31-2.log.gzbin0 -> 612 bytes
-rw-r--r--logs/2015-08-31-3.log.gzbin0 -> 610 bytes
-rw-r--r--logs/2015-09-01-1.log.gzbin0 -> 592 bytes
-rw-r--r--logs/2015-09-01-2.log.gzbin0 -> 593 bytes
-rw-r--r--logs/2015-09-01-3.log.gzbin0 -> 680 bytes
-rw-r--r--logs/2015-09-02-1.log.gzbin0 -> 635 bytes
-rw-r--r--logs/2015-09-02-2.log.gzbin0 -> 638 bytes
-rw-r--r--logs/2015-09-02-3.log.gzbin0 -> 629 bytes
-rw-r--r--logs/2015-09-02-4.log.gzbin0 -> 592 bytes
-rw-r--r--logs/2015-09-02-5.log.gzbin0 -> 608 bytes
-rw-r--r--logs/2015-09-02-6.log.gzbin0 -> 600 bytes
-rw-r--r--logs/2015-09-02-7.log.gzbin0 -> 595 bytes
-rw-r--r--logs/2015-09-03-1.log.gzbin0 -> 1622 bytes
-rw-r--r--logs/2015-09-03-2.log.gzbin0 -> 722 bytes
-rw-r--r--logs/2015-09-03-3.log.gzbin0 -> 766 bytes
-rw-r--r--logs/2015-09-03-4.log.gzbin0 -> 590 bytes
-rw-r--r--logs/2015-09-03-5.log.gzbin0 -> 594 bytes
-rw-r--r--logs/2015-09-03-6.log.gzbin0 -> 607 bytes
-rw-r--r--logs/2015-09-03-7.log.gzbin0 -> 588 bytes
-rw-r--r--logs/2015-09-04-1.log.gzbin0 -> 593 bytes
-rw-r--r--logs/2015-09-04-2.log.gzbin0 -> 1222 bytes
-rw-r--r--logs/2015-09-06-1.log.gzbin0 -> 1776 bytes
-rw-r--r--logs/2015-09-06-2.log.gzbin0 -> 1746 bytes
-rw-r--r--logs/2015-09-06-3.log.gzbin0 -> 1584 bytes
-rw-r--r--logs/2015-09-06-4.log.gzbin0 -> 1334 bytes
-rw-r--r--logs/2015-09-06-5.log.gzbin0 -> 1631 bytes
-rw-r--r--logs/2015-09-06-6.log.gzbin0 -> 1590 bytes
-rw-r--r--logs/2015-09-06-7.log.gzbin0 -> 1617 bytes
-rw-r--r--logs/2015-09-07-1.log.gzbin0 -> 1741 bytes
-rw-r--r--logs/2015-09-07-2.log.gzbin0 -> 1258 bytes
-rw-r--r--logs/2015-09-07-3.log.gzbin0 -> 1607 bytes
-rw-r--r--logs/2015-09-07-4.log.gzbin0 -> 1698 bytes
-rw-r--r--logs/2015-09-07-5.log.gzbin0 -> 1598 bytes
-rw-r--r--logs/2015-09-07-6.log.gzbin0 -> 1702 bytes
-rw-r--r--logs/2015-09-07-7.log.gzbin0 -> 581 bytes
-rw-r--r--logs/2015-10-05-1.log.gzbin0 -> 889 bytes
-rw-r--r--logs/2015-10-05-2.log.gzbin0 -> 1422 bytes
-rw-r--r--logs/2015-10-05-3.log.gzbin0 -> 609 bytes
-rw-r--r--logs/2015-10-12-1.log.gzbin0 -> 330 bytes
-rw-r--r--logs/2015-10-12-2.log.gzbin0 -> 328 bytes
-rw-r--r--logs/2015-10-12-3.log.gzbin0 -> 292 bytes
-rw-r--r--logs/2015-10-12-4.log.gzbin0 -> 291 bytes
-rw-r--r--logs/2015-10-12-5.log.gzbin0 -> 328 bytes
-rw-r--r--logs/2015-10-12-6.log.gzbin0 -> 326 bytes
-rw-r--r--logs/2015-10-12-7.log.gzbin0 -> 325 bytes
-rw-r--r--logs/2015-10-13-1.log.gzbin0 -> 326 bytes
-rw-r--r--logs/2015-10-13-2.log.gzbin0 -> 325 bytes
-rw-r--r--logs/fml-client-1.log75
-rw-r--r--logs/fml-client-2.log757
-rw-r--r--logs/fml-client-3.log756
-rw-r--r--logs/fml-client-latest.log450
-rw-r--r--logs/fml-junk-earlystartup.log1230
-rw-r--r--logs/fml-server-1.log491
-rw-r--r--logs/fml-server-2.log489
-rw-r--r--logs/fml-server-3.log505
-rw-r--r--logs/fml-server-latest.log639
-rw-r--r--logs/latest.log11
-rw-r--r--ops.json7
-rw-r--r--options.txt96
-rw-r--r--replay_pid16588.log5346
-rw-r--r--saves/New World------/DIM-1/data/villages.datbin0 -> 56 bytes
-rw-r--r--saves/New World------/DIM-1/forcedchunks.datbin0 -> 22 bytes
-rw-r--r--saves/New World------/DIM1/data/villages.datbin0 -> 56 bytes
-rw-r--r--saves/New World------/DIM1/forcedchunks.datbin0 -> 22 bytes
-rw-r--r--saves/New World------/data/villages.datbin0 -> 56 bytes
-rw-r--r--saves/New World------/forcedchunks.datbin0 -> 22 bytes
-rw-r--r--saves/New World------/level.datbin0 -> 5418 bytes
-rw-r--r--saves/New World------/level.dat_mcrbin0 -> 4788 bytes
-rw-r--r--saves/New World------/level.dat_oldbin0 -> 5418 bytes
-rw-r--r--saves/New World------/playerdata/5652713c-668e-47f3-853a-3fa959a9dfd3.datbin0 -> 647 bytes
-rw-r--r--saves/New World------/region/r.-1.0.mcabin0 -> 1925120 bytes
-rw-r--r--saves/New World------/region/r.0.0.mcabin0 -> 1384448 bytes
-rw-r--r--saves/New World------/session.lockbin0 -> 8 bytes
-rw-r--r--saves/New World------/stats/5652713c-668e-47f3-853a-3fa959a9dfd3.json1
-rw-r--r--saves/New World------20151005-132002.zipbin0 -> 2236527 bytes
-rw-r--r--saves/New World-----/DIM-1/data/villages.datbin0 -> 56 bytes
-rw-r--r--saves/New World-----/DIM-1/forcedchunks.datbin0 -> 22 bytes
-rw-r--r--saves/New World-----/DIM1/data/villages.datbin0 -> 56 bytes
-rw-r--r--saves/New World-----/DIM1/forcedchunks.datbin0 -> 22 bytes
-rw-r--r--saves/New World-----/data/Mineshaft.datbin0 -> 5426 bytes
-rw-r--r--saves/New World-----/data/villages.datbin0 -> 56 bytes
-rw-r--r--saves/New World-----/forcedchunks.datbin0 -> 22 bytes
-rw-r--r--saves/New World-----/level.datbin0 -> 5423 bytes
-rw-r--r--saves/New World-----/level.dat_mcrbin0 -> 5135 bytes
-rw-r--r--saves/New World-----/level.dat_oldbin0 -> 5423 bytes
-rw-r--r--saves/New World-----/playerdata/5652713c-668e-47f3-853a-3fa959a9dfd3.datbin0 -> 605 bytes
-rw-r--r--saves/New World-----/region/r.0.0.mcabin0 -> 3289088 bytes
-rw-r--r--saves/New World-----/session.lockbin0 -> 8 bytes
-rw-r--r--saves/New World-----/stats/5652713c-668e-47f3-853a-3fa959a9dfd3.json1
-rw-r--r--saves/New World----/DIM-1/data/villages.datbin0 -> 55 bytes
-rw-r--r--saves/New World----/DIM-1/forcedchunks.datbin0 -> 22 bytes
-rw-r--r--saves/New World----/DIM1/data/villages.datbin0 -> 55 bytes
-rw-r--r--saves/New World----/DIM1/forcedchunks.datbin0 -> 22 bytes
-rw-r--r--saves/New World----/data/Mineshaft.datbin0 -> 4769 bytes
-rw-r--r--saves/New World----/data/villages.datbin0 -> 55 bytes
-rw-r--r--saves/New World----/forcedchunks.datbin0 -> 22 bytes
-rw-r--r--saves/New World----/level.datbin0 -> 5709 bytes
-rw-r--r--saves/New World----/level.dat_mcrbin0 -> 5134 bytes
-rw-r--r--saves/New World----/level.dat_oldbin0 -> 5707 bytes
-rw-r--r--saves/New World----/playerdata/5652713c-668e-47f3-853a-3fa959a9dfd3.datbin0 -> 604 bytes
-rw-r--r--saves/New World----/region/r.-1.0.mcabin0 -> 24576 bytes
-rw-r--r--saves/New World----/region/r.0.0.mcabin0 -> 3366912 bytes
-rw-r--r--saves/New World----/session.lockbin0 -> 8 bytes
-rw-r--r--saves/New World----/stats/5652713c-668e-47f3-853a-3fa959a9dfd3.json1
-rw-r--r--saves/New World----20150907-111329.zipbin0 -> 2103467 bytes
-rw-r--r--saves/New World---/DIM-1/data/villages.datbin0 -> 56 bytes
-rw-r--r--saves/New World---/DIM-1/forcedchunks.datbin0 -> 22 bytes
-rw-r--r--saves/New World---/DIM1/data/villages.datbin0 -> 56 bytes
-rw-r--r--saves/New World---/DIM1/forcedchunks.datbin0 -> 22 bytes
-rw-r--r--saves/New World---/data/Mineshaft.datbin0 -> 2150 bytes
-rw-r--r--saves/New World---/data/Temple.datbin0 -> 182 bytes
-rw-r--r--saves/New World---/data/villages.datbin0 -> 56 bytes
-rw-r--r--saves/New World---/forcedchunks.datbin0 -> 22 bytes
-rw-r--r--saves/New World---/level.datbin0 -> 5931 bytes
-rw-r--r--saves/New World---/level.dat_mcrbin0 -> 5235 bytes
-rw-r--r--saves/New World---/level.dat_oldbin0 -> 5932 bytes
-rw-r--r--saves/New World---/playerdata/05d3c308-6531-310d-988c-a6164eaf800d.datbin0 -> 700 bytes
-rw-r--r--saves/New World---/playerdata/18b3a035-3e67-34ed-889e-932160306e4f.datbin0 -> 614 bytes
-rw-r--r--saves/New World---/playerdata/27630cc8-9d92-34f7-8c10-85caa979d8b3.datbin0 -> 655 bytes
-rw-r--r--saves/New World---/playerdata/38ee4029-e397-3902-8d79-d6c4d51a8fef.datbin0 -> 641 bytes
-rw-r--r--saves/New World---/playerdata/5b6052a7-6bab-33d6-92c2-a3d77755ef06.datbin0 -> 702 bytes
-rw-r--r--saves/New World---/playerdata/6116e2fa-a2e7-3242-8217-a93e1a963211.datbin0 -> 699 bytes
-rw-r--r--saves/New World---/playerdata/66212eae-12d0-33f7-bd64-547255e16b3f.datbin0 -> 626 bytes
-rw-r--r--saves/New World---/playerdata/7fef5833-06c9-398a-84c0-fbd3a81ff548.datbin0 -> 716 bytes
-rw-r--r--saves/New World---/playerdata/909ca267-1200-3a4b-b154-ac49c5d6bf14.datbin0 -> 653 bytes
-rw-r--r--saves/New World---/playerdata/9bfc7d2e-b7d2-36ba-8889-dc94b2f1b428.datbin0 -> 644 bytes
-rw-r--r--saves/New World---/playerdata/9f706b9c-a5d7-3950-a693-97c335e2631f.datbin0 -> 642 bytes
-rw-r--r--saves/New World---/playerdata/a7d84b43-620c-3be0-bbc6-d96e040e37ab.datbin0 -> 710 bytes
-rw-r--r--saves/New World---/playerdata/ad4a30d4-53bd-30c6-b482-5d77fb42b2d7.datbin0 -> 643 bytes
-rw-r--r--saves/New World---/playerdata/c72e77a5-a3ff-38a0-b468-253b21a4bd27.datbin0 -> 704 bytes
-rw-r--r--saves/New World---/playerdata/cb84ed39-e436-34ce-8360-3a854fcf8ae6.datbin0 -> 644 bytes
-rw-r--r--saves/New World---/playerdata/e6f6e71e-f1b8-32cb-a47d-066aff706ad2.datbin0 -> 700 bytes
-rw-r--r--saves/New World---/playerdata/eb662411-185a-3694-b480-0c259ae00075.datbin0 -> 643 bytes
-rw-r--r--saves/New World---/region/r.-1.0.mcabin0 -> 212992 bytes
-rw-r--r--saves/New World---/region/r.0.0.mcabin0 -> 2990080 bytes
-rw-r--r--saves/New World---/session.lockbin0 -> 8 bytes
-rw-r--r--saves/New World---/stats/05d3c308-6531-310d-988c-a6164eaf800d.json1
-rw-r--r--saves/New World---/stats/18b3a035-3e67-34ed-889e-932160306e4f.json1
-rw-r--r--saves/New World---/stats/27630cc8-9d92-34f7-8c10-85caa979d8b3.json1
-rw-r--r--saves/New World---/stats/38ee4029-e397-3902-8d79-d6c4d51a8fef.json1
-rw-r--r--saves/New World---/stats/5b6052a7-6bab-33d6-92c2-a3d77755ef06.json1
-rw-r--r--saves/New World---/stats/6116e2fa-a2e7-3242-8217-a93e1a963211.json1
-rw-r--r--saves/New World---/stats/66212eae-12d0-33f7-bd64-547255e16b3f.json1
-rw-r--r--saves/New World---/stats/7fef5833-06c9-398a-84c0-fbd3a81ff548.json1
-rw-r--r--saves/New World---/stats/909ca267-1200-3a4b-b154-ac49c5d6bf14.json1
-rw-r--r--saves/New World---/stats/9bfc7d2e-b7d2-36ba-8889-dc94b2f1b428.json1
-rw-r--r--saves/New World---/stats/9f706b9c-a5d7-3950-a693-97c335e2631f.json1
-rw-r--r--saves/New World---/stats/a7d84b43-620c-3be0-bbc6-d96e040e37ab.json1
-rw-r--r--saves/New World---/stats/ad4a30d4-53bd-30c6-b482-5d77fb42b2d7.json1
-rw-r--r--saves/New World---/stats/c72e77a5-a3ff-38a0-b468-253b21a4bd27.json1
-rw-r--r--saves/New World---/stats/cb84ed39-e436-34ce-8360-3a854fcf8ae6.json1
-rw-r--r--saves/New World---/stats/e6f6e71e-f1b8-32cb-a47d-066aff706ad2.json1
-rw-r--r--saves/New World---/stats/eb662411-185a-3694-b480-0c259ae00075.json1
-rw-r--r--saves/New World---20150906-160601.zipbin0 -> 2839674 bytes
-rw-r--r--saves/New World--/DIM-1/data/villages.datbin0 -> 56 bytes
-rw-r--r--saves/New World--/DIM-1/forcedchunks.datbin0 -> 22 bytes
-rw-r--r--saves/New World--/DIM1/data/villages.datbin0 -> 56 bytes
-rw-r--r--saves/New World--/DIM1/forcedchunks.datbin0 -> 22 bytes
-rw-r--r--saves/New World--/data/Mineshaft.datbin0 -> 3441 bytes
-rw-r--r--saves/New World--/data/villages.datbin0 -> 56 bytes
-rw-r--r--saves/New World--/forcedchunks.datbin0 -> 22 bytes
-rw-r--r--saves/New World--/level.datbin0 -> 5928 bytes
-rw-r--r--saves/New World--/level.dat_mcrbin0 -> 5183 bytes
-rw-r--r--saves/New World--/level.dat_oldbin0 -> 5929 bytes
-rw-r--r--saves/New World--/playerdata/13e3d50f-de22-3147-8516-e5bdfb7eb52c.datbin0 -> 692 bytes
-rw-r--r--saves/New World--/playerdata/18b3a035-3e67-34ed-889e-932160306e4f.datbin0 -> 666 bytes
-rw-r--r--saves/New World--/playerdata/1b8d41ee-20e2-3849-a434-0d774a740ae1.datbin0 -> 686 bytes
-rw-r--r--saves/New World--/playerdata/218a3571-b707-3992-b46a-db90429dc7f7.datbin0 -> 665 bytes
-rw-r--r--saves/New World--/playerdata/24a37f0a-2af1-3ac4-9024-e5424f979e18.datbin0 -> 667 bytes
-rw-r--r--saves/New World--/playerdata/26d3a8a7-c365-3f1b-98bd-1e86d16aa724.datbin0 -> 692 bytes
-rw-r--r--saves/New World--/playerdata/3b1946fe-c2d1-3fab-8b74-bd39d8b52fb4.datbin0 -> 688 bytes
-rw-r--r--saves/New World--/playerdata/5652713c-668e-47f3-853a-3fa959a9dfd3.datbin0 -> 683 bytes
-rw-r--r--saves/New World--/playerdata/56a50a28-2026-3b27-8279-243e3ff82a5a.datbin0 -> 663 bytes
-rw-r--r--saves/New World--/playerdata/588419cf-d7d5-3f7b-8fe7-89996b3b7551.datbin0 -> 691 bytes
-rw-r--r--saves/New World--/playerdata/5d36a45e-9473-37e3-8760-623ba7be7a5c.datbin0 -> 663 bytes
-rw-r--r--saves/New World--/playerdata/84e9e4f6-df8d-3fc9-b2c7-0eb3b9531d39.datbin0 -> 668 bytes
-rw-r--r--saves/New World--/playerdata/a7507e7e-f998-31cf-a2de-0cc0fd0a4de6.datbin0 -> 690 bytes
-rw-r--r--saves/New World--/playerdata/ad4a30d4-53bd-30c6-b482-5d77fb42b2d7.datbin0 -> 664 bytes
-rw-r--r--saves/New World--/playerdata/b743052f-5855-37e7-a97b-fd551acafef4.datbin0 -> 666 bytes
-rw-r--r--saves/New World--/playerdata/b7afed14-2796-3101-8914-97746139b82d.datbin0 -> 661 bytes
-rw-r--r--saves/New World--/playerdata/ca1bc45b-4820-318c-8fd3-5eba4f447561.datbin0 -> 684 bytes
-rw-r--r--saves/New World--/playerdata/cdc68907-d5a3-31ac-b4e8-b157ad0dd513.datbin0 -> 667 bytes
-rw-r--r--saves/New World--/playerdata/e5bad5ae-87fa-3676-b10f-8a571200822c.datbin0 -> 678 bytes
-rw-r--r--saves/New World--/playerdata/e5f3c748-0ea0-3a62-b5e9-4fef46853cc3.datbin0 -> 689 bytes
-rw-r--r--saves/New World--/playerdata/e664a043-6e9c-3d0d-9b38-cc385e35aba9.datbin0 -> 664 bytes
-rw-r--r--saves/New World--/playerdata/eb662411-185a-3694-b480-0c259ae00075.datbin0 -> 691 bytes
-rw-r--r--saves/New World--/playerdata/f0737fb5-4d0f-3bee-a039-92e456a5cc2e.datbin0 -> 695 bytes
-rw-r--r--saves/New World--/playerdata/fcd8643a-136f-38b6-9c1f-4f5463ba5d9d.datbin0 -> 673 bytes
-rw-r--r--saves/New World--/region/r.-1.0.mcabin0 -> 237568 bytes
-rw-r--r--saves/New World--/region/r.0.0.mcabin0 -> 3719168 bytes
-rw-r--r--saves/New World--/session.lockbin0 -> 8 bytes
-rw-r--r--saves/New World--/stats/13e3d50f-de22-3147-8516-e5bdfb7eb52c.json1
-rw-r--r--saves/New World--/stats/18b3a035-3e67-34ed-889e-932160306e4f.json1
-rw-r--r--saves/New World--/stats/1b8d41ee-20e2-3849-a434-0d774a740ae1.json1
-rw-r--r--saves/New World--/stats/218a3571-b707-3992-b46a-db90429dc7f7.json1
-rw-r--r--saves/New World--/stats/24a37f0a-2af1-3ac4-9024-e5424f979e18.json1
-rw-r--r--saves/New World--/stats/26d3a8a7-c365-3f1b-98bd-1e86d16aa724.json1
-rw-r--r--saves/New World--/stats/3b1946fe-c2d1-3fab-8b74-bd39d8b52fb4.json1
-rw-r--r--saves/New World--/stats/5652713c-668e-47f3-853a-3fa959a9dfd3.json1
-rw-r--r--saves/New World--/stats/56a50a28-2026-3b27-8279-243e3ff82a5a.json1
-rw-r--r--saves/New World--/stats/588419cf-d7d5-3f7b-8fe7-89996b3b7551.json1
-rw-r--r--saves/New World--/stats/5d36a45e-9473-37e3-8760-623ba7be7a5c.json1
-rw-r--r--saves/New World--/stats/84e9e4f6-df8d-3fc9-b2c7-0eb3b9531d39.json1
-rw-r--r--saves/New World--/stats/a7507e7e-f998-31cf-a2de-0cc0fd0a4de6.json1
-rw-r--r--saves/New World--/stats/ad4a30d4-53bd-30c6-b482-5d77fb42b2d7.json1
-rw-r--r--saves/New World--/stats/b743052f-5855-37e7-a97b-fd551acafef4.json1
-rw-r--r--saves/New World--/stats/b7afed14-2796-3101-8914-97746139b82d.json1
-rw-r--r--saves/New World--/stats/ca1bc45b-4820-318c-8fd3-5eba4f447561.json1
-rw-r--r--saves/New World--/stats/cdc68907-d5a3-31ac-b4e8-b157ad0dd513.json1
-rw-r--r--saves/New World--/stats/e5bad5ae-87fa-3676-b10f-8a571200822c.json1
-rw-r--r--saves/New World--/stats/e5f3c748-0ea0-3a62-b5e9-4fef46853cc3.json1
-rw-r--r--saves/New World--/stats/e664a043-6e9c-3d0d-9b38-cc385e35aba9.json1
-rw-r--r--saves/New World--/stats/eb662411-185a-3694-b480-0c259ae00075.json1
-rw-r--r--saves/New World--/stats/f0737fb5-4d0f-3bee-a039-92e456a5cc2e.json1
-rw-r--r--saves/New World--/stats/fcd8643a-136f-38b6-9c1f-4f5463ba5d9d.json1
-rw-r--r--saves/New World--20150828-152510.zipbin0 -> 1706806 bytes
-rw-r--r--saves/New World--20150828-152730.zipbin0 -> 1805266 bytes
-rw-r--r--saves/New World--20150828-153745.zipbin0 -> 1831137 bytes
-rw-r--r--saves/New World--20150828-155212.zipbin0 -> 1941446 bytes
-rw-r--r--saves/New World--20150831-213540.zipbin0 -> 2130220 bytes
-rw-r--r--saves/New World--20150901-172556.zipbin0 -> 2137253 bytes
-rw-r--r--saves/New World--20150902-195402.zipbin0 -> 2884196 bytes
-rw-r--r--saves/New World--20150903-004254.zipbin0 -> 3028045 bytes
-rw-r--r--saves/New World--20150903-010421.zipbin0 -> 3029305 bytes
-rw-r--r--saves/New World--20150903-012109.zipbin0 -> 3030639 bytes
-rw-r--r--saves/New World-/DIM-1/data/villages.datbin0 -> 56 bytes
-rw-r--r--saves/New World-/DIM-1/forcedchunks.datbin0 -> 22 bytes
-rw-r--r--saves/New World-/DIM1/data/villages.datbin0 -> 56 bytes
-rw-r--r--saves/New World-/DIM1/forcedchunks.datbin0 -> 22 bytes
-rw-r--r--saves/New World-/data/Mineshaft.datbin0 -> 4616 bytes
-rw-r--r--saves/New World-/data/Temple.datbin0 -> 209 bytes
-rw-r--r--saves/New World-/data/Village.datbin0 -> 848 bytes
-rw-r--r--saves/New World-/data/villages.datbin0 -> 56 bytes
-rw-r--r--saves/New World-/enderio/dimensionalTransceiver.json1
-rw-r--r--saves/New World-/forcedchunks.datbin0 -> 22 bytes
-rw-r--r--saves/New World-/level.datbin0 -> 6230 bytes
-rw-r--r--saves/New World-/level.dat_mcrbin0 -> 6466 bytes
-rw-r--r--saves/New World-/level.dat_oldbin0 -> 6230 bytes
-rw-r--r--saves/New World-/playerdata/5652713c-668e-47f3-853a-3fa959a9dfd3.datbin0 -> 739 bytes
-rw-r--r--saves/New World-/region/r.-1.0.mcabin0 -> 3481600 bytes
-rw-r--r--saves/New World-/region/r.-1.1.mcabin0 -> 643072 bytes
-rw-r--r--saves/New World-/region/r.0.0.mcabin0 -> 413696 bytes
-rw-r--r--saves/New World-/region/r.0.1.mcabin0 -> 24576 bytes
-rw-r--r--saves/New World-/session.lockbin0 -> 8 bytes
-rw-r--r--saves/New World-/stats/5652713c-668e-47f3-853a-3fa959a9dfd3.json1
-rw-r--r--saves/New World-/uptime.txt21
-rw-r--r--saves/New World-20150903-043620.zipbin0 -> 1497860 bytes
-rw-r--r--saves/New World/DIM-1/data/villages.datbin0 -> 56 bytes
-rw-r--r--saves/New World/DIM-1/forcedchunks.datbin0 -> 22 bytes
-rw-r--r--saves/New World/DIM1/data/villages.datbin0 -> 56 bytes
-rw-r--r--saves/New World/DIM1/forcedchunks.datbin0 -> 22 bytes
-rw-r--r--saves/New World/data/Mineshaft.datbin0 -> 7573 bytes
-rw-r--r--saves/New World/data/villages.datbin0 -> 56 bytes
-rw-r--r--saves/New World/forcedchunks.datbin0 -> 22 bytes
-rw-r--r--saves/New World/level.datbin0 -> 5793 bytes
-rw-r--r--saves/New World/level.dat_mcrbin0 -> 4719 bytes
-rw-r--r--saves/New World/level.dat_oldbin0 -> 5794 bytes
-rw-r--r--saves/New World/playerdata/5652713c-668e-47f3-853a-3fa959a9dfd3.datbin0 -> 639 bytes
-rw-r--r--saves/New World/region/r.0.-1.mcabin0 -> 1163264 bytes
-rw-r--r--saves/New World/region/r.0.0.mcabin0 -> 1871872 bytes
-rw-r--r--saves/New World/session.lockbin0 -> 8 bytes
-rw-r--r--saves/New World/stats/5652713c-668e-47f3-853a-3fa959a9dfd3.json1
-rw-r--r--saves/New World/uptime.txt21
-rw-r--r--server.properties33
-rw-r--r--servers.datbin0 -> 61 bytes
-rw-r--r--src/Java/binnie/Binnie.java24
-rw-r--r--src/Java/binnie/Constants.java11
-rw-r--r--src/Java/binnie/core/AbstractMod.java158
-rw-r--r--src/Java/binnie/core/BinnieCore.java259
-rw-r--r--src/Java/binnie/core/IInitializable.java10
-rw-r--r--src/Java/binnie/core/ManagerBase.java19
-rw-r--r--src/Java/binnie/core/Mods.java1
-rw-r--r--src/Java/binnie/core/block/BlockMetadata.java138
-rw-r--r--src/Java/binnie/core/block/IBlockMetadata.java21
-rw-r--r--src/Java/binnie/core/block/IMultipassBlock.java8
-rw-r--r--src/Java/binnie/core/block/ItemMetadata.java67
-rw-r--r--src/Java/binnie/core/block/ItemMetadataRenderer.java64
-rw-r--r--src/Java/binnie/core/block/MultipassBlockRenderer.java106
-rw-r--r--src/Java/binnie/core/block/MultipassItemRenderer.java78
-rw-r--r--src/Java/binnie/core/block/TileEntityMetadata.java116
-rw-r--r--src/Java/binnie/core/circuits/BinnieCircuit.java80
-rw-r--r--src/Java/binnie/core/circuits/BinnieCircuitLayout.java37
-rw-r--r--src/Java/binnie/core/genetics/BeeBreedingSystem.java125
-rw-r--r--src/Java/binnie/core/genetics/BeeModifierLogic.java47
-rw-r--r--src/Java/binnie/core/genetics/BreedingSystem.java558
-rw-r--r--src/Java/binnie/core/genetics/EnumBeeBooleanModifier.java8
-rw-r--r--src/Java/binnie/core/genetics/EnumBeeModifier.java17
-rw-r--r--src/Java/binnie/core/genetics/FlowerBreedingSystem.java129
-rw-r--r--src/Java/binnie/core/genetics/ForestryAllele.java211
-rw-r--r--src/Java/binnie/core/genetics/Gene.java128
-rw-r--r--src/Java/binnie/core/genetics/IAlleleProvider.java8
-rw-r--r--src/Java/binnie/core/genetics/IBreedingMessage.java124
-rw-r--r--src/Java/binnie/core/genetics/IItemStackRepresentitive.java8
-rw-r--r--src/Java/binnie/core/genetics/ManagerGenetics.java298
-rw-r--r--src/Java/binnie/core/genetics/MothBreedingSystem.java138
-rw-r--r--src/Java/binnie/core/genetics/Tolerance.java48
-rw-r--r--src/Java/binnie/core/genetics/TreeBreedingSystem.java303
-rw-r--r--src/Java/binnie/core/genetics/VirtualBeeHousing.java111
-rw-r--r--src/Java/binnie/core/genetics/VirtualHousing.java98
-rw-r--r--src/Java/binnie/core/genetics/VirtualMothHousing.java33
-rw-r--r--src/Java/binnie/core/gui/BinnieCoreGUI.java54
-rw-r--r--src/Java/binnie/core/gui/BinnieGUIHandler.java54
-rw-r--r--src/Java/binnie/core/gui/IBinnieGUID.java13
-rw-r--r--src/Java/binnie/core/item/IItemEnum.java14
-rw-r--r--src/Java/binnie/core/item/IItemMisc.java19
-rw-r--r--src/Java/binnie/core/item/ItemFieldKit.java82
-rw-r--r--src/Java/binnie/core/item/ItemGenesis.java42
-rw-r--r--src/Java/binnie/core/item/ItemMisc.java81
-rw-r--r--src/Java/binnie/core/item/ManagerItem.java11
-rw-r--r--src/Java/binnie/core/item/ModuleItems.java75
-rw-r--r--src/Java/binnie/core/language/ManagerLanguage.java59
-rw-r--r--src/Java/binnie/core/liquid/BinnieFluid.java32
-rw-r--r--src/Java/binnie/core/liquid/FluidContainer.java95
-rw-r--r--src/Java/binnie/core/liquid/IFluidType.java28
-rw-r--r--src/Java/binnie/core/liquid/ILiquidType.java7
-rw-r--r--src/Java/binnie/core/liquid/ItemFluidContainer.java179
-rw-r--r--src/Java/binnie/core/liquid/ManagerLiquid.java80
-rw-r--r--src/Java/binnie/core/machines/BlockMachine.java181
-rw-r--r--src/Java/binnie/core/machines/IBlockMachine.java8
-rw-r--r--src/Java/binnie/core/machines/IMachine.java25
-rw-r--r--src/Java/binnie/core/machines/IMachineType.java11
-rw-r--r--src/Java/binnie/core/machines/IOwnable.java10
-rw-r--r--src/Java/binnie/core/machines/ItemMachine.java29
-rw-r--r--src/Java/binnie/core/machines/Machine.java320
-rw-r--r--src/Java/binnie/core/machines/MachineComponent.java61
-rw-r--r--src/Java/binnie/core/machines/MachineGroup.java113
-rw-r--r--src/Java/binnie/core/machines/MachinePackage.java74
-rw-r--r--src/Java/binnie/core/machines/MachineRendererBlock.java41
-rw-r--r--src/Java/binnie/core/machines/MachineUtil.java216
-rw-r--r--src/Java/binnie/core/machines/ManagerMachine.java108
-rw-r--r--src/Java/binnie/core/machines/ModelBlock.java42
-rw-r--r--src/Java/binnie/core/machines/RendererMachine.java68
-rw-r--r--src/Java/binnie/core/machines/TileEntityMachine.java112
-rw-r--r--src/Java/binnie/core/machines/base/DefaultInventory.java82
-rw-r--r--src/Java/binnie/core/machines/base/DefaultPower.java71
-rw-r--r--src/Java/binnie/core/machines/base/DefaultTankContainer.java79
-rw-r--r--src/Java/binnie/core/machines/base/TileEntityMachineBase.java262
-rw-r--r--src/Java/binnie/core/machines/component/ComponentRecipe.java14
-rw-r--r--src/Java/binnie/core/machines/component/IBuildcraft.java20
-rw-r--r--src/Java/binnie/core/machines/component/IComponentRecipe.java12
-rw-r--r--src/Java/binnie/core/machines/component/IInteraction.java22
-rw-r--r--src/Java/binnie/core/machines/component/IRender.java28
-rw-r--r--src/Java/binnie/core/machines/inventory/AccessDirection.java97
-rw-r--r--src/Java/binnie/core/machines/inventory/BaseSlot.java148
-rw-r--r--src/Java/binnie/core/machines/inventory/ComponentChargedSlots.java117
-rw-r--r--src/Java/binnie/core/machines/inventory/ComponentInventory.java22
-rw-r--r--src/Java/binnie/core/machines/inventory/ComponentInventorySlots.java247
-rw-r--r--src/Java/binnie/core/machines/inventory/ComponentInventoryTransfer.java161
-rw-r--r--src/Java/binnie/core/machines/inventory/ComponentTankContainer.java207
-rw-r--r--src/Java/binnie/core/machines/inventory/IChargedSlots.java10
-rw-r--r--src/Java/binnie/core/machines/inventory/IInventoryMachine.java8
-rw-r--r--src/Java/binnie/core/machines/inventory/IInventorySlots.java14
-rw-r--r--src/Java/binnie/core/machines/inventory/IValidatedInventory.java9
-rw-r--r--src/Java/binnie/core/machines/inventory/IValidatedTankContainer.java10
-rw-r--r--src/Java/binnie/core/machines/inventory/InventorySlot.java115
-rw-r--r--src/Java/binnie/core/machines/inventory/MachineSide.java79
-rw-r--r--src/Java/binnie/core/machines/inventory/SetList.java36
-rw-r--r--src/Java/binnie/core/machines/inventory/SidedAccess.java106
-rw-r--r--src/Java/binnie/core/machines/inventory/SlotValidator.java68
-rw-r--r--src/Java/binnie/core/machines/inventory/TankSlot.java58
-rw-r--r--src/Java/binnie/core/machines/inventory/TankValidator.java33
-rw-r--r--src/Java/binnie/core/machines/inventory/TransferHandler.java227
-rw-r--r--src/Java/binnie/core/machines/inventory/Validator.java9
-rw-r--r--src/Java/binnie/core/machines/inventory/ValidatorIcon.java25
-rw-r--r--src/Java/binnie/core/machines/network/INetwork.java30
-rw-r--r--src/Java/binnie/core/machines/power/ComponentPowerReceptor.java191
-rw-r--r--src/Java/binnie/core/machines/power/ComponentProcess.java90
-rw-r--r--src/Java/binnie/core/machines/power/ComponentProcessIndefinate.java120
-rw-r--r--src/Java/binnie/core/machines/power/ComponentProcessSetCost.java27
-rw-r--r--src/Java/binnie/core/machines/power/ErrorState.java187
-rw-r--r--src/Java/binnie/core/machines/power/IErrorStateSource.java8
-rw-r--r--src/Java/binnie/core/machines/power/IPoweredMachine.java14
-rw-r--r--src/Java/binnie/core/machines/power/IProcess.java13
-rw-r--r--src/Java/binnie/core/machines/power/IProcessTimed.java13
-rw-r--r--src/Java/binnie/core/machines/power/ITankMachine.java20
-rw-r--r--src/Java/binnie/core/machines/power/PowerInfo.java41
-rw-r--r--src/Java/binnie/core/machines/power/PowerInterface.java90
-rw-r--r--src/Java/binnie/core/machines/power/PowerSystem.java44
-rw-r--r--src/Java/binnie/core/machines/power/ProcessInfo.java67
-rw-r--r--src/Java/binnie/core/machines/power/TankInfo.java76
-rw-r--r--src/Java/binnie/core/machines/storage/Compartment.java65
-rw-r--r--src/Java/binnie/core/machines/storage/CompartmentTab.java77
-rw-r--r--src/Java/binnie/core/machines/storage/ComponentBinnieCoreGUI.java28
-rw-r--r--src/Java/binnie/core/machines/storage/ComponentCompartmentInventory.java128
-rw-r--r--src/Java/binnie/core/machines/storage/ControlColourSelector.java47
-rw-r--r--src/Java/binnie/core/machines/storage/MachineRendererCompartment.java50
-rw-r--r--src/Java/binnie/core/machines/storage/ModelCompartment.java171
-rw-r--r--src/Java/binnie/core/machines/storage/ModuleStorage.java39
-rw-r--r--src/Java/binnie/core/machines/storage/StandardCompartment.java142
-rw-r--r--src/Java/binnie/core/machines/storage/WindowCompartment.java594
-rw-r--r--src/Java/binnie/core/machines/storage/WindowTest.java40
-rw-r--r--src/Java/binnie/core/machines/transfer/TransferHandler.java3
-rw-r--r--src/Java/binnie/core/machines/transfer/TransferRequest.java419
-rw-r--r--src/Java/binnie/core/mod/config/BinnieConfiguration.java21
-rw-r--r--src/Java/binnie/core/mod/config/BinnieItemData.java15
-rw-r--r--src/Java/binnie/core/mod/config/ConfigFile.java11
-rw-r--r--src/Java/binnie/core/mod/config/ConfigProperty.java26
-rw-r--r--src/Java/binnie/core/mod/config/ConfigurationMain.java4
-rw-r--r--src/Java/binnie/core/mod/config/ConfigurationMods.java18
-rw-r--r--src/Java/binnie/core/mod/config/ManagerConfig.java71
-rw-r--r--src/Java/binnie/core/mod/config/PropBoolean.java38
-rw-r--r--src/Java/binnie/core/mod/config/PropDouble.java38
-rw-r--r--src/Java/binnie/core/mod/config/PropInteger.java38
-rw-r--r--src/Java/binnie/core/mod/config/PropPercentage.java43
-rw-r--r--src/Java/binnie/core/mod/config/PropertyBase.java72
-rw-r--r--src/Java/binnie/core/mod/parser/FieldParser.java55
-rw-r--r--src/Java/binnie/core/mod/parser/ItemParser.java24
-rw-r--r--src/Java/binnie/core/multiblock/BlockMultiblockMachine.java27
-rw-r--r--src/Java/binnie/core/multiblock/TileEntityMultiblockMachine.java37
-rw-r--r--src/Java/binnie/core/network/BinnieCorePacketID.java77
-rw-r--r--src/Java/binnie/core/network/BinniePacketHandler.java43
-rw-r--r--src/Java/binnie/core/network/INetworkedEntity.java10
-rw-r--r--src/Java/binnie/core/network/IOrdinaled.java6
-rw-r--r--src/Java/binnie/core/network/IPacketID.java10
-rw-r--r--src/Java/binnie/core/network/IPacketProvider.java8
-rw-r--r--src/Java/binnie/core/network/packet/IPacket.java8
-rw-r--r--src/Java/binnie/core/network/packet/IPacketLocation.java15
-rw-r--r--src/Java/binnie/core/network/packet/IndexInPayload.java15
-rw-r--r--src/Java/binnie/core/network/packet/MachinePayload.java77
-rw-r--r--src/Java/binnie/core/network/packet/MessageBase.java69
-rw-r--r--src/Java/binnie/core/network/packet/MessageBinnie.java40
-rw-r--r--src/Java/binnie/core/network/packet/MessageContainerUpdate.java17
-rw-r--r--src/Java/binnie/core/network/packet/MessageCoordinates.java59
-rw-r--r--src/Java/binnie/core/network/packet/MessageCraftGUI.java18
-rw-r--r--src/Java/binnie/core/network/packet/MessageMetadata.java36
-rw-r--r--src/Java/binnie/core/network/packet/MessageNBT.java49
-rw-r--r--src/Java/binnie/core/network/packet/MessageTileNBT.java82
-rw-r--r--src/Java/binnie/core/network/packet/MessageUpdate.java92
-rw-r--r--src/Java/binnie/core/network/packet/PacketPayload.java70
-rw-r--r--src/Java/binnie/core/proxy/BinnieModProxy.java67
-rw-r--r--src/Java/binnie/core/proxy/BinnieProxy.java156
-rw-r--r--src/Java/binnie/core/proxy/BinnieProxyClient.java158
-rw-r--r--src/Java/binnie/core/proxy/BinnieProxyServer.java6
-rw-r--r--src/Java/binnie/core/proxy/IBinnieModProxy.java21
-rw-r--r--src/Java/binnie/core/proxy/IBinnieProxy.java54
-rw-r--r--src/Java/binnie/core/proxy/IProxyCore.java7
-rw-r--r--src/Java/binnie/core/resource/BinnieIcon.java47
-rw-r--r--src/Java/binnie/core/resource/BinnieResource.java38
-rw-r--r--src/Java/binnie/core/resource/IBinnieTexture.java6
-rw-r--r--src/Java/binnie/core/resource/ManagerResource.java48
-rw-r--r--src/Java/binnie/core/resource/ResourceType.java18
-rw-r--r--src/Java/binnie/core/texture/BinnieCoreTexture.java28
-rw-r--r--src/Java/binnie/core/texture/TextureManager.java15
-rw-r--r--src/Java/binnie/core/triggers/ActionProvider.java38
-rw-r--r--src/Java/binnie/core/triggers/BinnieAction.java88
-rw-r--r--src/Java/binnie/core/triggers/BinnieTrigger.java116
-rw-r--r--src/Java/binnie/core/triggers/ModuleTrigger.java45
-rw-r--r--src/Java/binnie/core/triggers/TriggerData.java37
-rw-r--r--src/Java/binnie/core/triggers/TriggerInventory.java11
-rw-r--r--src/Java/binnie/core/triggers/TriggerPower.java48
-rw-r--r--src/Java/binnie/core/triggers/TriggerProvider.java57
-rw-r--r--src/Java/binnie/core/triggers/TriggerWorking.java47
-rw-r--r--src/Java/binnie/core/util/FluidStackSet.java128
-rw-r--r--src/Java/binnie/core/util/IValidator.java6
-rw-r--r--src/Java/binnie/core/util/ItemStackSet.java128
-rw-r--r--src/Java/binnie/core/util/UniqueFluidStackSet.java28
-rw-r--r--src/Java/binnie/core/util/UniqueItemStackSet.java28
-rw-r--r--src/Java/binnie/craftgui/binniecore/WindowFieldKit.java334
-rw-r--r--src/Java/binnie/craftgui/binniecore/WindowGenesis.java264
-rw-r--r--src/Java/binnie/craftgui/botany/ControlColourDisplay.java47
-rw-r--r--src/Java/binnie/craftgui/botany/ControlColourMixBox.java31
-rw-r--r--src/Java/binnie/craftgui/botany/ControlColourMixItem.java37
-rw-r--r--src/Java/binnie/craftgui/botany/ControlColourMixSymbol.java58
-rw-r--r--src/Java/binnie/craftgui/botany/ControlColourOption.java38
-rw-r--r--src/Java/binnie/craftgui/botany/PageColourMix.java40
-rw-r--r--src/Java/binnie/craftgui/botany/PageColourMixResultant.java40
-rw-r--r--src/Java/binnie/craftgui/botany/PageSpeciesFlowerGenome.java137
-rw-r--r--src/Java/binnie/craftgui/botany/WindowBotanistDatabase.java103
-rw-r--r--src/Java/binnie/craftgui/controls/ControlCheckbox.java75
-rw-r--r--src/Java/binnie/craftgui/controls/ControlText.java50
-rw-r--r--src/Java/binnie/craftgui/controls/ControlTextCentered.java15
-rw-r--r--src/Java/binnie/craftgui/controls/ControlTextEdit.java154
-rw-r--r--src/Java/binnie/craftgui/controls/IControlSelection.java10
-rw-r--r--src/Java/binnie/craftgui/controls/IControlSelectionOption.java6
-rw-r--r--src/Java/binnie/craftgui/controls/button/ControlButton.java70
-rw-r--r--src/Java/binnie/craftgui/controls/button/ControlEnumButton.java61
-rw-r--r--src/Java/binnie/craftgui/controls/button/ControlToggleButton.java21
-rw-r--r--src/Java/binnie/craftgui/controls/core/Control.java85
-rw-r--r--src/Java/binnie/craftgui/controls/core/IControlIndexed.java8
-rw-r--r--src/Java/binnie/craftgui/controls/core/IControlValue.java11
-rw-r--r--src/Java/binnie/craftgui/controls/core/IControlValues.java11
-rw-r--r--src/Java/binnie/craftgui/controls/listbox/ControlList.java146
-rw-r--r--src/Java/binnie/craftgui/controls/listbox/ControlListBox.java76
-rw-r--r--src/Java/binnie/craftgui/controls/listbox/ControlOption.java73
-rw-r--r--src/Java/binnie/craftgui/controls/listbox/ControlTextOption.java37
-rw-r--r--src/Java/binnie/craftgui/controls/page/ControlPage.java36
-rw-r--r--src/Java/binnie/craftgui/controls/page/ControlPages.java57
-rw-r--r--src/Java/binnie/craftgui/controls/scroll/ControlScroll.java22
-rw-r--r--src/Java/binnie/craftgui/controls/scroll/ControlScrollBar.java94
-rw-r--r--src/Java/binnie/craftgui/controls/scroll/ControlScrollableContent.java134
-rw-r--r--src/Java/binnie/craftgui/controls/scroll/IControlScrollable.java17
-rw-r--r--src/Java/binnie/craftgui/controls/tab/ControlTab.java128
-rw-r--r--src/Java/binnie/craftgui/controls/tab/ControlTabBar.java86
-rw-r--r--src/Java/binnie/craftgui/core/Attribute.java9
-rw-r--r--src/Java/binnie/craftgui/core/CraftGUI.java10
-rw-r--r--src/Java/binnie/craftgui/core/ITooltip.java6
-rw-r--r--src/Java/binnie/craftgui/core/ITooltipHelp.java6
-rw-r--r--src/Java/binnie/craftgui/core/ITopLevelWidget.java29
-rw-r--r--src/Java/binnie/craftgui/core/IWidget.java138
-rw-r--r--src/Java/binnie/craftgui/core/IWidgetAttribute.java3
-rw-r--r--src/Java/binnie/craftgui/core/RenderStage.java8
-rw-r--r--src/Java/binnie/craftgui/core/Tooltip.java84
-rw-r--r--src/Java/binnie/craftgui/core/TopLevelWidget.java248
-rw-r--r--src/Java/binnie/craftgui/core/Widget.java499
-rw-r--r--src/Java/binnie/craftgui/core/geometry/CraftGUIUtil.java77
-rw-r--r--src/Java/binnie/craftgui/core/geometry/IArea.java143
-rw-r--r--src/Java/binnie/craftgui/core/geometry/IBorder.java126
-rw-r--r--src/Java/binnie/craftgui/core/geometry/IPoint.java83
-rw-r--r--src/Java/binnie/craftgui/core/geometry/Position.java41
-rw-r--r--src/Java/binnie/craftgui/core/geometry/TextJustification.java25
-rw-r--r--src/Java/binnie/craftgui/core/renderer/Renderer.java252
-rw-r--r--src/Java/binnie/craftgui/core/renderer/TextureType.java8
-rw-r--r--src/Java/binnie/craftgui/events/Event.java23
-rw-r--r--src/Java/binnie/craftgui/events/EventButtonClicked.java21
-rw-r--r--src/Java/binnie/craftgui/events/EventCycleChanged.java20
-rw-r--r--src/Java/binnie/craftgui/events/EventHandler.java53
-rw-r--r--src/Java/binnie/craftgui/events/EventKey.java63
-rw-r--r--src/Java/binnie/craftgui/events/EventMouse.java156
-rw-r--r--src/Java/binnie/craftgui/events/EventTextEdit.java21
-rw-r--r--src/Java/binnie/craftgui/events/EventToggleButtonClicked.java20
-rw-r--r--src/Java/binnie/craftgui/events/EventValueChanged.java29
-rw-r--r--src/Java/binnie/craftgui/events/EventValuesChanged.java20
-rw-r--r--src/Java/binnie/craftgui/events/EventWidget.java272
-rw-r--r--src/Java/binnie/craftgui/extratrees/dictionary/ControlBlockIconDisplay.java25
-rw-r--r--src/Java/binnie/craftgui/extratrees/dictionary/ControlBreweryProgress.java115
-rw-r--r--src/Java/binnie/craftgui/extratrees/dictionary/ControlDistilleryProgress.java104
-rw-r--r--src/Java/binnie/craftgui/extratrees/dictionary/ControlFruitPressProgress.java90
-rw-r--r--src/Java/binnie/craftgui/extratrees/dictionary/ControlLumbermillProgress.java96
-rw-r--r--src/Java/binnie/craftgui/extratrees/dictionary/ControlRecipeSlot.java42
-rw-r--r--src/Java/binnie/craftgui/extratrees/dictionary/ControlTileSelect.java197
-rw-r--r--src/Java/binnie/craftgui/extratrees/dictionary/DialogBreweryRecipe.java17
-rw-r--r--src/Java/binnie/craftgui/extratrees/dictionary/PageFruit.java47
-rw-r--r--src/Java/binnie/craftgui/extratrees/dictionary/PagePlanksOverview.java103
-rw-r--r--src/Java/binnie/craftgui/extratrees/dictionary/PagePlanksTrees.java40
-rw-r--r--src/Java/binnie/craftgui/extratrees/dictionary/PageSpeciesImage.java31
-rw-r--r--src/Java/binnie/craftgui/extratrees/dictionary/PageSpeciesTreeGenome.java175
-rw-r--r--src/Java/binnie/craftgui/extratrees/dictionary/PageWood.java40
-rw-r--r--src/Java/binnie/craftgui/extratrees/dictionary/WindowArboristDatabase.java133
-rw-r--r--src/Java/binnie/craftgui/extratrees/dictionary/WindowBrewery.java61
-rw-r--r--src/Java/binnie/craftgui/extratrees/dictionary/WindowDistillery.java59
-rw-r--r--src/Java/binnie/craftgui/extratrees/dictionary/WindowLepidopteristDatabase.java57
-rw-r--r--src/Java/binnie/craftgui/extratrees/dictionary/WindowLumbermill.java56
-rw-r--r--src/Java/binnie/craftgui/extratrees/dictionary/WindowPress.java77
-rw-r--r--src/Java/binnie/craftgui/extratrees/dictionary/WindowSetSquare.java35
-rw-r--r--src/Java/binnie/craftgui/extratrees/dictionary/WindowWoodworker.java110
-rw-r--r--src/Java/binnie/craftgui/extratrees/kitchen/ControlDropDownMenu.java18
-rw-r--r--src/Java/binnie/craftgui/extratrees/kitchen/ControlDropdownButton.java36
-rw-r--r--src/Java/binnie/craftgui/extratrees/kitchen/ControlFluidDisplay.java103
-rw-r--r--src/Java/binnie/craftgui/extratrees/kitchen/ControlSlotFluid.java77
-rw-r--r--src/Java/binnie/craftgui/extratrees/kitchen/ControlSlotGlassware.java35
-rw-r--r--src/Java/binnie/craftgui/extratrees/kitchen/ControlTankSlot.java49
-rw-r--r--src/Java/binnie/craftgui/extratrees/kitchen/WindowBottleRack.java48
-rw-r--r--src/Java/binnie/craftgui/genetics/machine/ControlGene.java101
-rw-r--r--src/Java/binnie/craftgui/genetics/machine/ControlGeneScroll.java97
-rw-r--r--src/Java/binnie/craftgui/genetics/machine/ControlProcessTemporary.java27
-rw-r--r--src/Java/binnie/craftgui/genetics/machine/ControlSequencerProgress.java64
-rw-r--r--src/Java/binnie/craftgui/genetics/machine/ControlSplicerProgress.java60
-rw-r--r--src/Java/binnie/craftgui/genetics/machine/WindowAcclimatiser.java80
-rw-r--r--src/Java/binnie/craftgui/genetics/machine/WindowAnalyser.java110
-rw-r--r--src/Java/binnie/craftgui/genetics/machine/WindowGeneBank.java256
-rw-r--r--src/Java/binnie/craftgui/genetics/machine/WindowGeneBankNEI.java14
-rw-r--r--src/Java/binnie/craftgui/genetics/machine/WindowGeneProject.java32
-rw-r--r--src/Java/binnie/craftgui/genetics/machine/WindowGenepool.java96
-rw-r--r--src/Java/binnie/craftgui/genetics/machine/WindowGenomeAssembler.java37
-rw-r--r--src/Java/binnie/craftgui/genetics/machine/WindowIncubator.java99
-rw-r--r--src/Java/binnie/craftgui/genetics/machine/WindowInoculator.java107
-rw-r--r--src/Java/binnie/craftgui/genetics/machine/WindowIsolator.java116
-rw-r--r--src/Java/binnie/craftgui/genetics/machine/WindowMachine.java22
-rw-r--r--src/Java/binnie/craftgui/genetics/machine/WindowPolymeriser.java101
-rw-r--r--src/Java/binnie/craftgui/genetics/machine/WindowSequencer.java116
-rw-r--r--src/Java/binnie/craftgui/genetics/machine/WindowSplicer.java93
-rw-r--r--src/Java/binnie/craftgui/minecraft/ContainerCraftGUI.java549
-rw-r--r--src/Java/binnie/craftgui/minecraft/CustomSlot.java54
-rw-r--r--src/Java/binnie/craftgui/minecraft/Dialog.java53
-rw-r--r--src/Java/binnie/craftgui/minecraft/EnumColor.java32
-rw-r--r--src/Java/binnie/craftgui/minecraft/GUIIcon.java30
-rw-r--r--src/Java/binnie/craftgui/minecraft/GuiCraftGUI.java605
-rw-r--r--src/Java/binnie/craftgui/minecraft/IMachineInformation.java6
-rw-r--r--src/Java/binnie/craftgui/minecraft/IMinecraftTooltip.java9
-rw-r--r--src/Java/binnie/craftgui/minecraft/IWindowAffectsShiftClick.java8
-rw-r--r--src/Java/binnie/craftgui/minecraft/InventoryType.java8
-rw-r--r--src/Java/binnie/craftgui/minecraft/ListMap.java149
-rw-r--r--src/Java/binnie/craftgui/minecraft/MinecraftGUI.java14
-rw-r--r--src/Java/binnie/craftgui/minecraft/MinecraftTooltip.java63
-rw-r--r--src/Java/binnie/craftgui/minecraft/ModuleCraftGUI.java18
-rw-r--r--src/Java/binnie/craftgui/minecraft/Window.java338
-rw-r--r--src/Java/binnie/craftgui/minecraft/WindowInventory.java144
-rw-r--r--src/Java/binnie/craftgui/minecraft/control/ControlEnergyBar.java161
-rw-r--r--src/Java/binnie/craftgui/minecraft/control/ControlErrorState.java113
-rw-r--r--src/Java/binnie/craftgui/minecraft/control/ControlHelp.java41
-rw-r--r--src/Java/binnie/craftgui/minecraft/control/ControlIconDisplay.java25
-rw-r--r--src/Java/binnie/craftgui/minecraft/control/ControlImage.java25
-rw-r--r--src/Java/binnie/craftgui/minecraft/control/ControlInfo.java38
-rw-r--r--src/Java/binnie/craftgui/minecraft/control/ControlItemDisplay.java98
-rw-r--r--src/Java/binnie/craftgui/minecraft/control/ControlLiquidTank.java223
-rw-r--r--src/Java/binnie/craftgui/minecraft/control/ControlMachineProgress.java14
-rw-r--r--src/Java/binnie/craftgui/minecraft/control/ControlPlayerInventory.java108
-rw-r--r--src/Java/binnie/craftgui/minecraft/control/ControlPowerSystem.java39
-rw-r--r--src/Java/binnie/craftgui/minecraft/control/ControlProgress.java30
-rw-r--r--src/Java/binnie/craftgui/minecraft/control/ControlProgressBase.java100
-rw-r--r--src/Java/binnie/craftgui/minecraft/control/ControlSlide.java113
-rw-r--r--src/Java/binnie/craftgui/minecraft/control/ControlSlot.java221
-rw-r--r--src/Java/binnie/craftgui/minecraft/control/ControlSlotArray.java76
-rw-r--r--src/Java/binnie/craftgui/minecraft/control/ControlSlotBase.java77
-rw-r--r--src/Java/binnie/craftgui/minecraft/control/ControlSlotCharge.java43
-rw-r--r--src/Java/binnie/craftgui/minecraft/control/ControlTabIcon.java47
-rw-r--r--src/Java/binnie/craftgui/minecraft/control/ControlUser.java41
-rw-r--r--src/Java/binnie/craftgui/minecraft/control/EnumHighlighting.java28
-rw-r--r--src/Java/binnie/craftgui/minecraft/render/MinecraftTexture.java10
-rw-r--r--src/Java/binnie/craftgui/minecraft/render/RenderCommand.java16
-rw-r--r--src/Java/binnie/craftgui/mod/database/ControlBranchBox.java20
-rw-r--r--src/Java/binnie/craftgui/mod/database/ControlBranchBoxOption.java14
-rw-r--r--src/Java/binnie/craftgui/mod/database/ControlBreedingProgress.java41
-rw-r--r--src/Java/binnie/craftgui/mod/database/ControlDatabaseIndividualDisplay.java120
-rw-r--r--src/Java/binnie/craftgui/mod/database/ControlItemStackOption.java38
-rw-r--r--src/Java/binnie/craftgui/mod/database/ControlMutationBox.java71
-rw-r--r--src/Java/binnie/craftgui/mod/database/ControlMutationItem.java51
-rw-r--r--src/Java/binnie/craftgui/mod/database/ControlMutationSymbol.java80
-rw-r--r--src/Java/binnie/craftgui/mod/database/ControlSpeciesBox.java55
-rw-r--r--src/Java/binnie/craftgui/mod/database/ControlSpeciexBoxOption.java42
-rw-r--r--src/Java/binnie/craftgui/mod/database/DatabaseTab.java32
-rw-r--r--src/Java/binnie/craftgui/mod/database/EnumDiscoveryState.java8
-rw-r--r--src/Java/binnie/craftgui/mod/database/IDatabaseMode.java6
-rw-r--r--src/Java/binnie/craftgui/mod/database/PageAbstract.java16
-rw-r--r--src/Java/binnie/craftgui/mod/database/PageBranch.java13
-rw-r--r--src/Java/binnie/craftgui/mod/database/PageBranchOverview.java67
-rw-r--r--src/Java/binnie/craftgui/mod/database/PageBranchSpecies.java43
-rw-r--r--src/Java/binnie/craftgui/mod/database/PageBreeder.java51
-rw-r--r--src/Java/binnie/craftgui/mod/database/PageBreederStats.java23
-rw-r--r--src/Java/binnie/craftgui/mod/database/PageSpecies.java13
-rw-r--r--src/Java/binnie/craftgui/mod/database/PageSpeciesClassification.java54
-rw-r--r--src/Java/binnie/craftgui/mod/database/PageSpeciesMutations.java27
-rw-r--r--src/Java/binnie/craftgui/mod/database/PageSpeciesOverview.java88
-rw-r--r--src/Java/binnie/craftgui/mod/database/PageSpeciesResultant.java27
-rw-r--r--src/Java/binnie/craftgui/mod/database/WindowAbstractDatabase.java314
-rw-r--r--src/Java/binnie/craftgui/resource/IStyleSheet.java6
-rw-r--r--src/Java/binnie/craftgui/resource/StyleSheet.java18
-rw-r--r--src/Java/binnie/craftgui/resource/StyleSheetManager.java28
-rw-r--r--src/Java/binnie/craftgui/resource/Texture.java128
-rw-r--r--src/Java/binnie/craftgui/resource/minecraft/CraftGUIResourceManager.java155
-rw-r--r--src/Java/binnie/craftgui/resource/minecraft/CraftGUITexture.java18
-rw-r--r--src/Java/binnie/craftgui/resource/minecraft/CraftGUITextureSheet.java33
-rw-r--r--src/Java/binnie/craftgui/resource/minecraft/PaddedTexture.java21
-rw-r--r--src/Java/binnie/craftgui/resource/minecraft/ParsedTextureSheet.java25
-rw-r--r--src/Java/binnie/craftgui/resource/minecraft/StandardTexture.java36
-rw-r--r--src/Java/binnie/craftgui/window/Panel.java58
-rw-r--r--src/Java/binnie/extrabees/ExtraBees.java123
-rw-r--r--src/Java/binnie/extrabees/apiary/ComponentBeeModifier.java88
-rw-r--r--src/Java/binnie/extrabees/apiary/ComponentExtraBeeGUI.java28
-rw-r--r--src/Java/binnie/extrabees/apiary/EnumHiveFrame.java140
-rw-r--r--src/Java/binnie/extrabees/apiary/IndustrialFrame.java141
-rw-r--r--src/Java/binnie/extrabees/apiary/ItemHiveFrame.java100
-rw-r--r--src/Java/binnie/extrabees/apiary/ItemIndustrialFrame.java66
-rw-r--r--src/Java/binnie/extrabees/apiary/ModuleApiary.java96
-rw-r--r--src/Java/binnie/extrabees/apiary/TileExtraBeeAlveary.java355
-rw-r--r--src/Java/binnie/extrabees/apiary/machine/AlvearyFrame.java125
-rw-r--r--src/Java/binnie/extrabees/apiary/machine/AlvearyHatchery.java106
-rw-r--r--src/Java/binnie/extrabees/apiary/machine/AlvearyLighting.java41
-rw-r--r--src/Java/binnie/extrabees/apiary/machine/AlvearyMachine.java66
-rw-r--r--src/Java/binnie/extrabees/apiary/machine/AlvearyMutator.java125
-rw-r--r--src/Java/binnie/extrabees/apiary/machine/AlvearyRainShield.java41
-rw-r--r--src/Java/binnie/extrabees/apiary/machine/AlvearyStimulator.java430
-rw-r--r--src/Java/binnie/extrabees/apiary/machine/AlvearyTransmission.java81
-rw-r--r--src/Java/binnie/extrabees/config/ConfigurationMachines.java17
-rw-r--r--src/Java/binnie/extrabees/config/ConfigurationMain.java26
-rw-r--r--src/Java/binnie/extrabees/core/ExtraBeeGUID.java54
-rw-r--r--src/Java/binnie/extrabees/core/ExtraBeeItems.java172
-rw-r--r--src/Java/binnie/extrabees/core/ExtraBeeTexture.java28
-rw-r--r--src/Java/binnie/extrabees/core/ModuleCore.java19
-rw-r--r--src/Java/binnie/extrabees/genetics/ExtraBeeMutation.java478
-rw-r--r--src/Java/binnie/extrabees/genetics/ExtraBeesBranch.java313
-rw-r--r--src/Java/binnie/extrabees/genetics/ExtraBeesFlowers.java202
-rw-r--r--src/Java/binnie/extrabees/genetics/ExtraBeesSpecies.java1139
-rw-r--r--src/Java/binnie/extrabees/genetics/ModuleGenetics.java88
-rw-r--r--src/Java/binnie/extrabees/genetics/effect/BlockEctoplasm.java42
-rw-r--r--src/Java/binnie/extrabees/genetics/effect/EntityBeeLightning.java68
-rw-r--r--src/Java/binnie/extrabees/genetics/effect/ExtraBeesEffect.java585
-rw-r--r--src/Java/binnie/extrabees/genetics/effect/FireworkCreator.java83
-rw-r--r--src/Java/binnie/extrabees/genetics/items/ItemDictionary.java73
-rw-r--r--src/Java/binnie/extrabees/genetics/items/ItemPunnettSquare.java41
-rw-r--r--src/Java/binnie/extrabees/gui/WindowAlvearyFrame.java53
-rw-r--r--src/Java/binnie/extrabees/gui/WindowAlvearyHatchery.java54
-rw-r--r--src/Java/binnie/extrabees/gui/WindowAlvearyIndustrialFrame.java53
-rw-r--r--src/Java/binnie/extrabees/gui/WindowAlvearyMutator.java78
-rw-r--r--src/Java/binnie/extrabees/gui/WindowAlvearyStimulator.java56
-rw-r--r--src/Java/binnie/extrabees/gui/database/ControlBiomes.java75
-rw-r--r--src/Java/binnie/extrabees/gui/database/ControlClimateBar.java153
-rw-r--r--src/Java/binnie/extrabees/gui/database/ControlProductsBox.java92
-rw-r--r--src/Java/binnie/extrabees/gui/database/ControlProductsItem.java44
-rw-r--r--src/Java/binnie/extrabees/gui/database/PageSpeciesClimate.java36
-rw-r--r--src/Java/binnie/extrabees/gui/database/PageSpeciesGenome.java206
-rw-r--r--src/Java/binnie/extrabees/gui/database/PageSpeciesProducts.java38
-rw-r--r--src/Java/binnie/extrabees/gui/database/WindowApiaristDatabase.java83
-rw-r--r--src/Java/binnie/extrabees/gui/punnett/ControlChromosome.java49
-rw-r--r--src/Java/binnie/extrabees/gui/punnett/ControlPunnett.java86
-rw-r--r--src/Java/binnie/extrabees/gui/punnett/ExtraBeeGUITexture.java8
-rw-r--r--src/Java/binnie/extrabees/gui/punnett/WindowPunnettSquare.java67
-rw-r--r--src/Java/binnie/extrabees/liquids/ExtraBeeLiquid.java80
-rw-r--r--src/Java/binnie/extrabees/liquids/ModuleLiquids.java19
-rw-r--r--src/Java/binnie/extrabees/products/EnumHoneyComb.java109
-rw-r--r--src/Java/binnie/extrabees/products/EnumHoneyDrop.java72
-rw-r--r--src/Java/binnie/extrabees/products/EnumPropolis.java65
-rw-r--r--src/Java/binnie/extrabees/products/ItemHoneyComb.java335
-rw-r--r--src/Java/binnie/extrabees/products/ItemHoneyCrystal.java51
-rw-r--r--src/Java/binnie/extrabees/products/ItemHoneyCrystalEmpty.java30
-rw-r--r--src/Java/binnie/extrabees/products/ItemHoneyDrop.java55
-rw-r--r--src/Java/binnie/extrabees/products/ItemProduct.java44
-rw-r--r--src/Java/binnie/extrabees/products/ItemPropolis.java35
-rw-r--r--src/Java/binnie/extrabees/products/ModuleProducts.java43
-rw-r--r--src/Java/binnie/extrabees/proxy/ExtraBeesProxy.java13
-rw-r--r--src/Java/binnie/extrabees/proxy/ExtraBeesProxyClient.java5
-rw-r--r--src/Java/binnie/extrabees/proxy/ExtraBeesProxyServer.java5
-rw-r--r--src/Java/binnie/extrabees/worldgen/BlockExtraBeeHive.java109
-rw-r--r--src/Java/binnie/extrabees/worldgen/EnumHiveType.java14
-rw-r--r--src/Java/binnie/extrabees/worldgen/HiveDrop.java65
-rw-r--r--src/Java/binnie/extrabees/worldgen/ItemBeehive.java37
-rw-r--r--src/Java/binnie/extrabees/worldgen/MaterialBeehive.java20
-rw-r--r--src/Java/binnie/extrabees/worldgen/ModuleGeneration.java85
-rw-r--r--src/Java/binnie/extrabees/worldgen/WorldGenHiveNether.java33
-rw-r--r--src/Java/binnie/extrabees/worldgen/WorldGenHiveRock.java27
-rw-r--r--src/Java/binnie/extrabees/worldgen/WorldGenHiveWater.java31
-rw-r--r--src/Java/mcmod.info19
-rw-r--r--src/Java/miscutil/MiscUtils.java118
-rw-r--r--src/Java/miscutil/core/CommonProxy.java70
-rw-r--r--src/Java/miscutil/core/block/AdvancedBlock.java31
-rw-r--r--src/Java/miscutil/core/block/BasicBlock.java22
-rw-r--r--src/Java/miscutil/core/block/ModBlocks.java90
-rw-r--r--src/Java/miscutil/core/commands/CommandMath.java195
-rw-r--r--src/Java/miscutil/core/commands/CommandUtils.java20
-rw-r--r--src/Java/miscutil/core/creativetabs/MiscUtilCreativeTabBlock.java18
-rw-r--r--src/Java/miscutil/core/creativetabs/MiscUtilCreativeTabMachines.java18
-rw-r--r--src/Java/miscutil/core/creativetabs/MiscUtilCreativeTabMisc.java18
-rw-r--r--src/Java/miscutil/core/creativetabs/MiscUtilCreativeTabTools.java18
-rw-r--r--src/Java/miscutil/core/creativetabs/TMCreativeTabs.java20
-rw-r--r--src/Java/miscutil/core/gui/GUI_Bat_Buf.java247
-rw-r--r--src/Java/miscutil/core/gui/GUI_Battery_Buffer.java51
-rw-r--r--src/Java/miscutil/core/gui/GUI_Tool_Builder.java5
-rw-r--r--src/Java/miscutil/core/gui/Gui_No_Inventory_Base.java51
-rw-r--r--src/Java/miscutil/core/gui/ModGUI.java15
-rw-r--r--src/Java/miscutil/core/handler/CraftingManager.java21
-rw-r--r--src/Java/miscutil/core/handler/GuiHandler.java39
-rw-r--r--src/Java/miscutil/core/handler/ResourceHandler.java83
-rw-r--r--src/Java/miscutil/core/item/BaseMetaItemTool.java5
-rw-r--r--src/Java/miscutil/core/item/EntityTeleportFX.java236
-rw-r--r--src/Java/miscutil/core/item/ModItems.java311
-rw-r--r--src/Java/miscutil/core/item/effects/RarityEffect.java41
-rw-r--r--src/Java/miscutil/core/item/effects/RarityEpic.java28
-rw-r--r--src/Java/miscutil/core/item/effects/RarityRare.java28
-rw-r--r--src/Java/miscutil/core/item/effects/RarityUncommon.java22
-rw-r--r--src/Java/miscutil/core/item/materials/MaterialHandler.java9
-rw-r--r--src/Java/miscutil/core/item/tool/bloodsteel/BloodSteelArmor.java56
-rw-r--r--src/Java/miscutil/core/item/tool/bloodsteel/BloodSteelAxe.java12
-rw-r--r--src/Java/miscutil/core/item/tool/bloodsteel/BloodSteelHoe.java12
-rw-r--r--src/Java/miscutil/core/item/tool/bloodsteel/BloodSteelPickaxe.java12
-rw-r--r--src/Java/miscutil/core/item/tool/bloodsteel/BloodSteelSpade.java12
-rw-r--r--src/Java/miscutil/core/item/tool/bloodsteel/BloodSteelSword.java12
-rw-r--r--src/Java/miscutil/core/item/tool/staballoy/StaballoyPickaxe.java14
-rw-r--r--src/Java/miscutil/core/lib/Strings.java19
-rw-r--r--src/Java/miscutil/core/proxy/ClientProxy.java42
-rw-r--r--src/Java/miscutil/core/proxy/ServerProxy.java28
-rw-r--r--src/Java/miscutil/core/tileentities/ModTileEntities.java13
-rw-r--r--src/Java/miscutil/core/util/Benchmark.java153
-rw-r--r--src/Java/miscutil/core/util/Utils.java61
-rw-r--r--src/Java/miscutil/gregtech/energy/IC2ElectricItem.java55
-rw-r--r--src/Java/miscutil/gregtech/energy/IC2ElectricItemManager.java95
-rw-r--r--src/Java/miscutil/gregtech/enums/AddExtraOreDict.java16
-rw-r--r--src/Java/miscutil/gregtech/enums/ExtraOreDictNames.java5
-rw-r--r--src/Java/miscutil/gregtech/enums/GregtechItemList.java153
-rw-r--r--src/Java/miscutil/gregtech/init/InitGregtech.java23
-rw-r--r--src/Java/miscutil/gregtech/init/machines/GregtechCobbleGenerator.java51
-rw-r--r--src/Java/miscutil/gregtech/init/machines/GregtechEnergyBuffer.java88
-rw-r--r--src/Java/miscutil/gregtech/interfaces/GregtechItemContainer.java24
-rw-r--r--src/Java/miscutil/gregtech/metatileentity/implementations/GregtechMetaCreativeEnergyBuffer.java261
-rw-r--r--src/Java/miscutil/gregtech/metatileentity/implementations/GregtechMetaEnergyBuffer.java401
-rw-r--r--src/Java/miscutil/gregtech/metatileentity/implementations/GregtechMetaTileEntity.java65
-rw-r--r--src/Java/miscutil/gregtech/metatileentity/implementations/GregtechSteelBoiler.java290
-rw-r--r--src/Java/miscutil/gregtech/util/IMessage.java21
-rw-r--r--src/Java/miscutil/gregtech/util/VanillaChatCommandSender.java35
-rw-r--r--src/resources/assets/miscutils/lang/en_US.lang53
-rw-r--r--src/resources/assets/miscutils/textures/blocks/blockBloodSteel.pngbin0 -> 3078 bytes
-rw-r--r--src/resources/assets/miscutils/textures/blocks/blockStaballoy.pngbin0 -> 3328 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/itemBufferCore.pngbin0 -> 4047 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/itemIngotBloodSteel.pngbin0 -> 2965 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/itemIngotStaballoy.pngbin0 -> 2976 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/itemPlateBedrockium.pngbin0 -> 2948 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/itemPlateBloodSteel.pngbin0 -> 3052 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/itemPlateBlutonium.pngbin0 -> 2939 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/itemPlateCompressedIron.pngbin0 -> 2948 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/itemPlateConductiveIron.pngbin0 -> 2968 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/itemPlateCyanite.pngbin0 -> 2936 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/itemPlateDarkSteel.pngbin0 -> 2941 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/itemPlateDimensionShard.pngbin0 -> 3190 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/itemPlateElectricalSteel.pngbin0 -> 2950 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/itemPlateElectricalSteel2.pngbin0 -> 2947 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/itemPlateEnergeticAlloy.pngbin0 -> 2968 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/itemPlateLudicrite.pngbin0 -> 2939 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/itemPlatePulsatingIron.pngbin0 -> 2973 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/itemPlateRedstoneAlloy.pngbin0 -> 2965 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/itemPlateSoularium.pngbin0 -> 2973 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/itemPlateStaballoy.pngbin0 -> 3051 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/itemPlateVibrantAlloy.pngbin0 -> 2963 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/itemPlateVoidMetal.pngbin0 -> 3103 bytes
-rw-r--r--src/resources/assets/miscutils/textures/items/itemStaballoyPickaxe.pngbin0 -> 3186 bytes
-rw-r--r--usercache.json1
-rw-r--r--usernamecache.json40
-rw-r--r--whitelist.json1
-rw-r--r--world-20151005-130119.zipbin0 -> 2749482 bytes
-rw-r--r--world/DIM-1/data/villages.datbin0 -> 56 bytes
-rw-r--r--world/DIM-1/forcedchunks.datbin0 -> 22 bytes
-rw-r--r--world/DIM1/data/villages.datbin0 -> 56 bytes
-rw-r--r--world/DIM1/forcedchunks.datbin0 -> 22 bytes
-rw-r--r--world/data/Temple.datbin0 -> 306 bytes
-rw-r--r--world/data/Village.datbin0 -> 957 bytes
-rw-r--r--world/data/villages.datbin0 -> 56 bytes
-rw-r--r--world/forcedchunks.datbin0 -> 22 bytes
-rw-r--r--world/level.datbin0 -> 5267 bytes
-rw-r--r--world/level.dat_oldbin0 -> 5267 bytes
-rw-r--r--world/playerdata/5652713c-668e-47f3-853a-3fa959a9dfd3.datbin0 -> 613 bytes
-rw-r--r--world/region/r.-1.-1.mcabin0 -> 905216 bytes
-rw-r--r--world/region/r.-1.0.mcabin0 -> 380928 bytes
-rw-r--r--world/region/r.0.-1.mcabin0 -> 2138112 bytes
-rw-r--r--world/region/r.0.0.mcabin0 -> 1343488 bytes
-rw-r--r--world/session.lockbin0 -> 8 bytes
-rw-r--r--world/stats/5652713c-668e-47f3-853a-3fa959a9dfd3.json1
-rw-r--r--world/uptime.txt21
1618 files changed, 74250 insertions, 0 deletions
diff --git a/.classpath b/.classpath
new file mode 100644
index 0000000000..df3a6e66dc
--- /dev/null
+++ b/.classpath
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" path="src/Java"/>
+ <classpathentry kind="src" path="src/resources"/>
+ <classpathentry exported="true" kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7"/>
+ <classpathentry combineaccessrules="false" kind="src" path="/Forge"/>
+ <classpathentry combineaccessrules="false" kind="src" path="/Gregtech"/>
+ <classpathentry kind="lib" path="/Gregtech/libs/dev/industrialcraft-2-2.2.720-experimental-dev.jar"/>
+ <classpathentry kind="lib" path="mods/GlassPane-1.0.jar"/>
+ <classpathentry kind="lib" path="mods/GUIAPI-1.0.5.jar"/>
+ <classpathentry kind="lib" path="mods/buildcraft-6.4.15.jar"/>
+ <classpathentry kind="lib" path="mods/forestry_1.7.10-3.5.6.15.jar"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/.gradle/2.0/taskArtifacts/cache.properties b/.gradle/2.0/taskArtifacts/cache.properties
new file mode 100644
index 0000000000..febe9db0c3
--- /dev/null
+++ b/.gradle/2.0/taskArtifacts/cache.properties
@@ -0,0 +1 @@
+#Sun Aug 30 18:52:36 AEST 2015
diff --git a/.gradle/2.0/taskArtifacts/cache.properties.lock b/.gradle/2.0/taskArtifacts/cache.properties.lock
new file mode 100644
index 0000000000..3bbd163365
--- /dev/null
+++ b/.gradle/2.0/taskArtifacts/cache.properties.lock
Binary files differ
diff --git a/.gradle/2.0/taskArtifacts/fileHashes.bin b/.gradle/2.0/taskArtifacts/fileHashes.bin
new file mode 100644
index 0000000000..24aa01aeb7
--- /dev/null
+++ b/.gradle/2.0/taskArtifacts/fileHashes.bin
Binary files differ
diff --git a/.gradle/2.0/taskArtifacts/fileSnapshots.bin b/.gradle/2.0/taskArtifacts/fileSnapshots.bin
new file mode 100644
index 0000000000..75b1762ca5
--- /dev/null
+++ b/.gradle/2.0/taskArtifacts/fileSnapshots.bin
Binary files differ
diff --git a/.gradle/2.0/taskArtifacts/outputFileStates.bin b/.gradle/2.0/taskArtifacts/outputFileStates.bin
new file mode 100644
index 0000000000..67f9ec1b08
--- /dev/null
+++ b/.gradle/2.0/taskArtifacts/outputFileStates.bin
Binary files differ
diff --git a/.gradle/2.0/taskArtifacts/taskArtifacts.bin b/.gradle/2.0/taskArtifacts/taskArtifacts.bin
new file mode 100644
index 0000000000..4fa996c90e
--- /dev/null
+++ b/.gradle/2.0/taskArtifacts/taskArtifacts.bin
Binary files differ
diff --git a/.gradle/gradle.log b/.gradle/gradle.log
new file mode 100644
index 0000000000..2d3e34601e
--- /dev/null
+++ b/.gradle/gradle.log
@@ -0,0 +1,37 @@
+****************************
+ Powered By MCP:
+ http://modcoderpack.com/
+ Searge, ProfMobius, Fesh0r,
+ R4wk, ZeuX, IngisKahn, bspkrs
+ MCP Data version : unknown
+****************************
+:compileApiJava UP-TO-DATE
+:processApiResources UP-TO-DATE
+:apiClasses UP-TO-DATE
+:sourceMainJava
+:compileJavawarning: [options] bootstrap class path not set in conjunction with -source 1.7
+Note: Some input files use or override a deprecated API.
+Note: Recompile with -Xlint:deprecation for details.
+Note: C:\eclipse\workspace\MiscUtil_quick\build\sources\java\miscutil\core\gui\GUI_Bat_Buf.java uses unchecked or unsafe operations.
+Note: Recompile with -Xlint:unchecked for details.
+1 warning
+
+:processResources
+:classes
+:jar
+:compileTestJava UP-TO-DATE
+:processTestResources UP-TO-DATE
+:testClasses UP-TO-DATE
+:test UP-TO-DATE
+:extractMcpData UP-TO-DATE
+:getVersionJson
+:extractUserDev UP-TO-DATE
+:genSrgs SKIPPED
+:reobf
+:assemble
+:check UP-TO-DATE
+:build
+
+BUILD SUCCESSFUL
+
+Total time: 3 mins 24.488 secs
diff --git a/.project b/.project
new file mode 100644
index 0000000000..83e4b55001
--- /dev/null
+++ b/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>MiscUtilsX</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000000..d17b6724d1
--- /dev/null
+++ b/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,12 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.7
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.7
diff --git a/asm/ccl_modular/net#minecraft#block#Block.txt b/asm/ccl_modular/net#minecraft#block#Block.txt
new file mode 100644
index 0000000000..e3cad6be83
--- /dev/null
+++ b/asm/ccl_modular/net#minecraft#block#Block.txt
@@ -0,0 +1,8911 @@
+// class version 50.0 (50)
+// access flags 0x21
+public class net/minecraft/block/Block {
+
+ // compiled from: Block.java
+ // access flags 0x1008
+ static synthetic INNERCLASS net/minecraft/block/Block$6 null null
+ // access flags 0x9
+ public static INNERCLASS net/minecraft/block/Block$SoundType net/minecraft/block/Block SoundType
+ // access flags 0x0
+ INNERCLASS net/minecraft/block/Block$5 null null
+ // access flags 0x0
+ INNERCLASS net/minecraft/block/Block$4 null null
+ // access flags 0x8
+ static INNERCLASS net/minecraft/block/Block$3 null null
+ // access flags 0x8
+ static INNERCLASS net/minecraft/block/Block$2 null null
+ // access flags 0x8
+ static INNERCLASS net/minecraft/block/Block$1 null null
+ // access flags 0x4019
+ public final static enum INNERCLASS net/minecraft/block/BlockPressurePlate$Sensitivity net/minecraft/block/BlockPressurePlate Sensitivity
+
+ // access flags 0x19
+ public final static Lnet/minecraft/util/RegistryNamespaced; blockRegistry
+
+ // access flags 0x2
+ private Lnet/minecraft/creativetab/CreativeTabs; displayOnCreativeTab
+
+ // access flags 0x4
+ protected Ljava/lang/String; textureName
+
+ // access flags 0x19
+ public final static Lnet/minecraft/block/Block$SoundType; soundTypeStone
+
+ // access flags 0x19
+ public final static Lnet/minecraft/block/Block$SoundType; soundTypeWood
+
+ // access flags 0x19
+ public final static Lnet/minecraft/block/Block$SoundType; soundTypeGravel
+
+ // access flags 0x19
+ public final static Lnet/minecraft/block/Block$SoundType; soundTypeGrass
+
+ // access flags 0x19
+ public final static Lnet/minecraft/block/Block$SoundType; soundTypePiston
+
+ // access flags 0x19
+ public final static Lnet/minecraft/block/Block$SoundType; soundTypeMetal
+
+ // access flags 0x19
+ public final static Lnet/minecraft/block/Block$SoundType; soundTypeGlass
+
+ // access flags 0x19
+ public final static Lnet/minecraft/block/Block$SoundType; soundTypeCloth
+
+ // access flags 0x19
+ public final static Lnet/minecraft/block/Block$SoundType; soundTypeSand
+
+ // access flags 0x19
+ public final static Lnet/minecraft/block/Block$SoundType; soundTypeSnow
+
+ // access flags 0x19
+ public final static Lnet/minecraft/block/Block$SoundType; soundTypeLadder
+
+ // access flags 0x19
+ public final static Lnet/minecraft/block/Block$SoundType; soundTypeAnvil
+
+ // access flags 0x4
+ protected Z opaque
+
+ // access flags 0x4
+ protected I lightOpacity
+
+ // access flags 0x4
+ protected Z canBlockGrass
+
+ // access flags 0x4
+ protected I lightValue
+
+ // access flags 0x4
+ protected Z useNeighborBrightness
+
+ // access flags 0x4
+ protected F blockHardness
+
+ // access flags 0x4
+ protected F blockResistance
+
+ // access flags 0x4
+ protected Z blockConstructorCalled
+
+ // access flags 0x4
+ protected Z enableStats
+
+ // access flags 0x4
+ protected Z needsRandomTick
+
+ // access flags 0x4
+ protected Z isBlockContainer
+
+ // access flags 0x4
+ protected D minX
+
+ // access flags 0x4
+ protected D minY
+
+ // access flags 0x4
+ protected D minZ
+
+ // access flags 0x4
+ protected D maxX
+
+ // access flags 0x4
+ protected D maxY
+
+ // access flags 0x4
+ protected D maxZ
+
+ // access flags 0x1
+ public Lnet/minecraft/block/Block$SoundType; stepSound
+
+ // access flags 0x1
+ public F blockParticleGravity
+
+ // access flags 0x14
+ protected final Lnet/minecraft/block/material/Material; blockMaterial
+
+ // access flags 0x1
+ public F slipperiness
+
+ // access flags 0x2
+ private Ljava/lang/String; unlocalizedName
+
+ // access flags 0x4
+ protected Lnet/minecraft/util/IIcon; blockIcon
+ @Lcpw/mods/fml/relauncher/SideOnly;(value=Lcpw/mods/fml/relauncher/Side;.CLIENT)
+
+ // access flags 0x1A
+ private final static Ljava/lang/String; __OBFID = "CL_00000199"
+
+ // access flags 0x11
+ // signature Lcpw/mods/fml/common/registry/RegistryDelegate<Lnet/minecraft/block/Block;>;
+ // declaration: cpw.mods.fml.common.registry.RegistryDelegate<net.minecraft.block.Block>
+ public final Lcpw/mods/fml/common/registry/RegistryDelegate; delegate
+
+ // access flags 0x4
+ // signature Ljava/lang/ThreadLocal<Lnet/minecraft/entity/player/EntityPlayer;>;
+ // declaration: java.lang.ThreadLocal<net.minecraft.entity.player.EntityPlayer>
+ protected Ljava/lang/ThreadLocal; harvesters
+
+ // access flags 0x2
+ // signature Ljava/lang/ThreadLocal<Ljava/lang/Integer;>;
+ // declaration: java.lang.ThreadLocal<java.lang.Integer>
+ private Ljava/lang/ThreadLocal; silk_check_meta
+
+ // access flags 0x2
+ private Z isTileProvider
+
+ // access flags 0x2
+ private [Ljava/lang/String; harvestTool
+
+ // access flags 0x2
+ private [I harvestLevel
+
+ // access flags 0x4
+ // signature Ljava/lang/ThreadLocal<Ljava/lang/Boolean;>;
+ // declaration: java.lang.ThreadLocal<java.lang.Boolean>
+ protected Ljava/lang/ThreadLocal; captureDrops
+
+ // access flags 0x4
+ // signature Ljava/lang/ThreadLocal<Ljava/util/List<Lnet/minecraft/item/ItemStack;>;>;
+ // declaration: java.lang.ThreadLocal<java.util.List<net.minecraft.item.ItemStack>>
+ protected Ljava/lang/ThreadLocal; capturedDrops
+
+ // access flags 0x9
+ public static getIdFromBlock(Lnet/minecraft/block/Block;)I
+ L0
+ LINENUMBER 162 L0
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ ALOAD 0
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.getIDForObject (Ljava/lang/Object;)I
+ IRETURN
+ L1
+ LOCALVARIABLE p_149682_0_ Lnet/minecraft/block/Block; L0 L1 0
+ MAXSTACK = 2
+ MAXLOCALS = 1
+
+ // access flags 0x9
+ public static getBlockById(I)Lnet/minecraft/block/Block;
+ L0
+ LINENUMBER 167 L0
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ ILOAD 0
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.getObjectById (I)Ljava/lang/Object;
+ CHECKCAST net/minecraft/block/Block
+ ASTORE 1
+ L1
+ LINENUMBER 168 L1
+ ALOAD 1
+ IFNONNULL L2
+ GETSTATIC net/minecraft/init/Blocks.air : Lnet/minecraft/block/Block;
+ GOTO L3
+ L2
+ FRAME FULL [I net/minecraft/block/Block] []
+ ALOAD 1
+ L3
+ FRAME FULL [I net/minecraft/block/Block] [net/minecraft/block/Block]
+ ARETURN
+ L4
+ LOCALVARIABLE p_149729_0_ I L0 L4 0
+ LOCALVARIABLE ret Lnet/minecraft/block/Block; L1 L4 1
+ MAXSTACK = 2
+ MAXLOCALS = 2
+
+ // access flags 0x9
+ public static getBlockFromItem(Lnet/minecraft/item/Item;)Lnet/minecraft/block/Block;
+ L0
+ LINENUMBER 173 L0
+ ALOAD 0
+ INVOKESTATIC net/minecraft/item/Item.getIdFromItem (Lnet/minecraft/item/Item;)I
+ INVOKESTATIC net/minecraft/block/Block.getBlockById (I)Lnet/minecraft/block/Block;
+ ARETURN
+ L1
+ LOCALVARIABLE p_149634_0_ Lnet/minecraft/item/Item; L0 L1 0
+ MAXSTACK = 1
+ MAXLOCALS = 1
+
+ // access flags 0x9
+ public static getBlockFromName(Ljava/lang/String;)Lnet/minecraft/block/Block;
+ TRYCATCHBLOCK L0 L1 L2 java/lang/NumberFormatException
+ L3
+ LINENUMBER 178 L3
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ ALOAD 0
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.containsKey (Ljava/lang/String;)Z
+ IFEQ L0
+ L4
+ LINENUMBER 180 L4
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ ALOAD 0
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.getObject (Ljava/lang/String;)Ljava/lang/Object;
+ CHECKCAST net/minecraft/block/Block
+ ARETURN
+ L0
+ LINENUMBER 186 L0
+ FRAME FULL [java/lang/String] []
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ ALOAD 0
+ INVOKESTATIC java/lang/Integer.parseInt (Ljava/lang/String;)I
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.getObjectById (I)Ljava/lang/Object;
+ CHECKCAST net/minecraft/block/Block
+ L1
+ ARETURN
+ L2
+ LINENUMBER 188 L2
+ FRAME FULL [java/lang/String] [java/lang/NumberFormatException]
+ ASTORE 1
+ L5
+ LINENUMBER 190 L5
+ ACONST_NULL
+ ARETURN
+ L6
+ LOCALVARIABLE numberformatexception Ljava/lang/NumberFormatException; L5 L6 1
+ LOCALVARIABLE p_149684_0_ Ljava/lang/String; L3 L6 0
+ MAXSTACK = 2
+ MAXLOCALS = 2
+
+ // access flags 0x1
+ public func_149730_j()Z
+ L0
+ LINENUMBER 197 L0
+ ALOAD 0
+ GETFIELD net/minecraft/block/Block.opaque : Z
+ IRETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L1 0
+ MAXSTACK = 1
+ MAXLOCALS = 1
+
+ // access flags 0x1
+ public getLightOpacity()I
+ L0
+ LINENUMBER 202 L0
+ ALOAD 0
+ GETFIELD net/minecraft/block/Block.lightOpacity : I
+ IRETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L1 0
+ MAXSTACK = 1
+ MAXLOCALS = 1
+
+ // access flags 0x1
+ public getCanBlockGrass()Z
+ @Lcpw/mods/fml/relauncher/SideOnly;(value=Lcpw/mods/fml/relauncher/Side;.CLIENT)
+ L0
+ LINENUMBER 208 L0
+ ALOAD 0
+ GETFIELD net/minecraft/block/Block.canBlockGrass : Z
+ IRETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L1 0
+ MAXSTACK = 1
+ MAXLOCALS = 1
+
+ // access flags 0x1
+ public getLightValue()I
+ L0
+ LINENUMBER 216 L0
+ ALOAD 0
+ GETFIELD net/minecraft/block/Block.lightValue : I
+ IRETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L1 0
+ MAXSTACK = 1
+ MAXLOCALS = 1
+
+ // access flags 0x1
+ public getUseNeighborBrightness()Z
+ L0
+ LINENUMBER 224 L0
+ ALOAD 0
+ GETFIELD net/minecraft/block/Block.useNeighborBrightness : Z
+ IRETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L1 0
+ MAXSTACK = 1
+ MAXLOCALS = 1
+
+ // access flags 0x1
+ public getMaterial()Lnet/minecraft/block/material/Material;
+ L0
+ LINENUMBER 229 L0
+ ALOAD 0
+ GETFIELD net/minecraft/block/Block.blockMaterial : Lnet/minecraft/block/material/Material;
+ ARETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L1 0
+ MAXSTACK = 1
+ MAXLOCALS = 1
+
+ // access flags 0x1
+ public getMapColor(I)Lnet/minecraft/block/material/MapColor;
+ L0
+ LINENUMBER 234 L0
+ ALOAD 0
+ INVOKEVIRTUAL net/minecraft/block/Block.getMaterial ()Lnet/minecraft/block/material/Material;
+ INVOKEVIRTUAL net/minecraft/block/material/Material.getMaterialMapColor ()Lnet/minecraft/block/material/MapColor;
+ ARETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L1 0
+ LOCALVARIABLE p_149728_1_ I L0 L1 1
+ MAXSTACK = 1
+ MAXLOCALS = 2
+
+ // access flags 0x9
+ public static registerBlocks()V
+ L0
+ LINENUMBER 239 L0
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ ICONST_0
+ LDC "air"
+ NEW net/minecraft/block/BlockAir
+ DUP
+ INVOKESPECIAL net/minecraft/block/BlockAir.<init> ()V
+ LDC "air"
+ INVOKEVIRTUAL net/minecraft/block/BlockAir.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L1
+ LINENUMBER 240 L1
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ ICONST_1
+ LDC "stone"
+ NEW net/minecraft/block/BlockStone
+ DUP
+ INVOKESPECIAL net/minecraft/block/BlockStone.<init> ()V
+ LDC 1.5
+ INVOKEVIRTUAL net/minecraft/block/BlockStone.setHardness (F)Lnet/minecraft/block/Block;
+ LDC 10.0
+ INVOKEVIRTUAL net/minecraft/block/Block.setResistance (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypePiston : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC "stone"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ LDC "stone"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L2
+ LINENUMBER 241 L2
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ ICONST_2
+ LDC "grass"
+ NEW net/minecraft/block/BlockGrass
+ DUP
+ INVOKESPECIAL net/minecraft/block/BlockGrass.<init> ()V
+ LDC 0.6
+ INVOKEVIRTUAL net/minecraft/block/BlockGrass.setHardness (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypeGrass : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC "grass"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ LDC "grass"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L3
+ LINENUMBER 242 L3
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ ICONST_3
+ LDC "dirt"
+ NEW net/minecraft/block/BlockDirt
+ DUP
+ INVOKESPECIAL net/minecraft/block/BlockDirt.<init> ()V
+ LDC 0.5
+ INVOKEVIRTUAL net/minecraft/block/BlockDirt.setHardness (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypeGravel : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC "dirt"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ LDC "dirt"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L4
+ LINENUMBER 243 L4
+ NEW net/minecraft/block/Block
+ DUP
+ GETSTATIC net/minecraft/block/material/Material.rock : Lnet/minecraft/block/material/Material;
+ INVOKESPECIAL net/minecraft/block/Block.<init> (Lnet/minecraft/block/material/Material;)V
+ FCONST_2
+ INVOKEVIRTUAL net/minecraft/block/Block.setHardness (F)Lnet/minecraft/block/Block;
+ LDC 10.0
+ INVOKEVIRTUAL net/minecraft/block/Block.setResistance (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypePiston : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC "stonebrick"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/creativetab/CreativeTabs.tabBlock : Lnet/minecraft/creativetab/CreativeTabs;
+ INVOKEVIRTUAL net/minecraft/block/Block.setCreativeTab (Lnet/minecraft/creativetab/CreativeTabs;)Lnet/minecraft/block/Block;
+ LDC "cobblestone"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ ASTORE 0
+ L5
+ LINENUMBER 244 L5
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ ICONST_4
+ LDC "cobblestone"
+ ALOAD 0
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L6
+ LINENUMBER 245 L6
+ NEW net/minecraft/block/BlockWood
+ DUP
+ INVOKESPECIAL net/minecraft/block/BlockWood.<init> ()V
+ FCONST_2
+ INVOKEVIRTUAL net/minecraft/block/BlockWood.setHardness (F)Lnet/minecraft/block/Block;
+ LDC 5.0
+ INVOKEVIRTUAL net/minecraft/block/Block.setResistance (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypeWood : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC "wood"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ LDC "planks"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ ASTORE 1
+ L7
+ LINENUMBER 246 L7
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ ICONST_5
+ LDC "planks"
+ ALOAD 1
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L8
+ LINENUMBER 247 L8
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ BIPUSH 6
+ LDC "sapling"
+ NEW net/minecraft/block/BlockSapling
+ DUP
+ INVOKESPECIAL net/minecraft/block/BlockSapling.<init> ()V
+ FCONST_0
+ INVOKEVIRTUAL net/minecraft/block/BlockSapling.setHardness (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypeGrass : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC "sapling"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ LDC "sapling"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L9
+ LINENUMBER 248 L9
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ BIPUSH 7
+ LDC "bedrock"
+ NEW net/minecraft/block/Block
+ DUP
+ GETSTATIC net/minecraft/block/material/Material.rock : Lnet/minecraft/block/material/Material;
+ INVOKESPECIAL net/minecraft/block/Block.<init> (Lnet/minecraft/block/material/Material;)V
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockUnbreakable ()Lnet/minecraft/block/Block;
+ LDC 6000000.0
+ INVOKEVIRTUAL net/minecraft/block/Block.setResistance (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypePiston : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC "bedrock"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/block/Block.disableStats ()Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/creativetab/CreativeTabs.tabBlock : Lnet/minecraft/creativetab/CreativeTabs;
+ INVOKEVIRTUAL net/minecraft/block/Block.setCreativeTab (Lnet/minecraft/creativetab/CreativeTabs;)Lnet/minecraft/block/Block;
+ LDC "bedrock"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L10
+ LINENUMBER 249 L10
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ BIPUSH 8
+ LDC "flowing_water"
+ NEW net/minecraft/block/BlockDynamicLiquid
+ DUP
+ GETSTATIC net/minecraft/block/material/Material.water : Lnet/minecraft/block/material/Material;
+ INVOKESPECIAL net/minecraft/block/BlockDynamicLiquid.<init> (Lnet/minecraft/block/material/Material;)V
+ LDC 100.0
+ INVOKEVIRTUAL net/minecraft/block/BlockDynamicLiquid.setHardness (F)Lnet/minecraft/block/Block;
+ ICONST_3
+ INVOKEVIRTUAL net/minecraft/block/Block.setLightOpacity (I)Lnet/minecraft/block/Block;
+ LDC "water"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/block/Block.disableStats ()Lnet/minecraft/block/Block;
+ LDC "water_flow"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L11
+ LINENUMBER 250 L11
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ BIPUSH 9
+ LDC "water"
+ NEW net/minecraft/block/BlockStaticLiquid
+ DUP
+ GETSTATIC net/minecraft/block/material/Material.water : Lnet/minecraft/block/material/Material;
+ INVOKESPECIAL net/minecraft/block/BlockStaticLiquid.<init> (Lnet/minecraft/block/material/Material;)V
+ LDC 100.0
+ INVOKEVIRTUAL net/minecraft/block/BlockStaticLiquid.setHardness (F)Lnet/minecraft/block/Block;
+ ICONST_3
+ INVOKEVIRTUAL net/minecraft/block/Block.setLightOpacity (I)Lnet/minecraft/block/Block;
+ LDC "water"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/block/Block.disableStats ()Lnet/minecraft/block/Block;
+ LDC "water_still"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L12
+ LINENUMBER 251 L12
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ BIPUSH 10
+ LDC "flowing_lava"
+ NEW net/minecraft/block/BlockDynamicLiquid
+ DUP
+ GETSTATIC net/minecraft/block/material/Material.lava : Lnet/minecraft/block/material/Material;
+ INVOKESPECIAL net/minecraft/block/BlockDynamicLiquid.<init> (Lnet/minecraft/block/material/Material;)V
+ LDC 100.0
+ INVOKEVIRTUAL net/minecraft/block/BlockDynamicLiquid.setHardness (F)Lnet/minecraft/block/Block;
+ FCONST_1
+ INVOKEVIRTUAL net/minecraft/block/Block.setLightLevel (F)Lnet/minecraft/block/Block;
+ LDC "lava"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/block/Block.disableStats ()Lnet/minecraft/block/Block;
+ LDC "lava_flow"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L13
+ LINENUMBER 252 L13
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ BIPUSH 11
+ LDC "lava"
+ NEW net/minecraft/block/BlockStaticLiquid
+ DUP
+ GETSTATIC net/minecraft/block/material/Material.lava : Lnet/minecraft/block/material/Material;
+ INVOKESPECIAL net/minecraft/block/BlockStaticLiquid.<init> (Lnet/minecraft/block/material/Material;)V
+ LDC 100.0
+ INVOKEVIRTUAL net/minecraft/block/BlockStaticLiquid.setHardness (F)Lnet/minecraft/block/Block;
+ FCONST_1
+ INVOKEVIRTUAL net/minecraft/block/Block.setLightLevel (F)Lnet/minecraft/block/Block;
+ LDC "lava"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/block/Block.disableStats ()Lnet/minecraft/block/Block;
+ LDC "lava_still"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L14
+ LINENUMBER 253 L14
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ BIPUSH 12
+ LDC "sand"
+ NEW net/minecraft/block/BlockSand
+ DUP
+ INVOKESPECIAL net/minecraft/block/BlockSand.<init> ()V
+ LDC 0.5
+ INVOKEVIRTUAL net/minecraft/block/BlockSand.setHardness (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypeSand : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC "sand"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ LDC "sand"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L15
+ LINENUMBER 254 L15
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ BIPUSH 13
+ LDC "gravel"
+ NEW net/minecraft/block/BlockGravel
+ DUP
+ INVOKESPECIAL net/minecraft/block/BlockGravel.<init> ()V
+ LDC 0.6
+ INVOKEVIRTUAL net/minecraft/block/BlockGravel.setHardness (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypeGravel : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC "gravel"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ LDC "gravel"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L16
+ LINENUMBER 255 L16
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ BIPUSH 14
+ LDC "gold_ore"
+ NEW net/minecraft/block/BlockOre
+ DUP
+ INVOKESPECIAL net/minecraft/block/BlockOre.<init> ()V
+ LDC 3.0
+ INVOKEVIRTUAL net/minecraft/block/BlockOre.setHardness (F)Lnet/minecraft/block/Block;
+ LDC 5.0
+ INVOKEVIRTUAL net/minecraft/block/Block.setResistance (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypePiston : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC "oreGold"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ LDC "gold_ore"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L17
+ LINENUMBER 256 L17
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ BIPUSH 15
+ LDC "iron_ore"
+ NEW net/minecraft/block/BlockOre
+ DUP
+ INVOKESPECIAL net/minecraft/block/BlockOre.<init> ()V
+ LDC 3.0
+ INVOKEVIRTUAL net/minecraft/block/BlockOre.setHardness (F)Lnet/minecraft/block/Block;
+ LDC 5.0
+ INVOKEVIRTUAL net/minecraft/block/Block.setResistance (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypePiston : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC "oreIron"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ LDC "iron_ore"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L18
+ LINENUMBER 257 L18
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ BIPUSH 16
+ LDC "coal_ore"
+ NEW net/minecraft/block/BlockOre
+ DUP
+ INVOKESPECIAL net/minecraft/block/BlockOre.<init> ()V
+ LDC 3.0
+ INVOKEVIRTUAL net/minecraft/block/BlockOre.setHardness (F)Lnet/minecraft/block/Block;
+ LDC 5.0
+ INVOKEVIRTUAL net/minecraft/block/Block.setResistance (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypePiston : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC "oreCoal"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ LDC "coal_ore"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L19
+ LINENUMBER 258 L19
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ BIPUSH 17
+ LDC "log"
+ NEW net/minecraft/block/BlockOldLog
+ DUP
+ INVOKESPECIAL net/minecraft/block/BlockOldLog.<init> ()V
+ LDC "log"
+ INVOKEVIRTUAL net/minecraft/block/BlockOldLog.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ LDC "log"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L20
+ LINENUMBER 259 L20
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ BIPUSH 18
+ LDC "leaves"
+ NEW net/minecraft/block/BlockOldLeaf
+ DUP
+ INVOKESPECIAL net/minecraft/block/BlockOldLeaf.<init> ()V
+ LDC "leaves"
+ INVOKEVIRTUAL net/minecraft/block/BlockOldLeaf.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ LDC "leaves"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L21
+ LINENUMBER 260 L21
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ BIPUSH 19
+ LDC "sponge"
+ NEW net/minecraft/block/BlockSponge
+ DUP
+ INVOKESPECIAL net/minecraft/block/BlockSponge.<init> ()V
+ LDC 0.6
+ INVOKEVIRTUAL net/minecraft/block/BlockSponge.setHardness (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypeGrass : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC "sponge"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ LDC "sponge"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L22
+ LINENUMBER 261 L22
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ BIPUSH 20
+ LDC "glass"
+ NEW net/minecraft/block/BlockGlass
+ DUP
+ GETSTATIC net/minecraft/block/material/Material.glass : Lnet/minecraft/block/material/Material;
+ ICONST_0
+ INVOKESPECIAL net/minecraft/block/BlockGlass.<init> (Lnet/minecraft/block/material/Material;Z)V
+ LDC 0.3
+ INVOKEVIRTUAL net/minecraft/block/BlockGlass.setHardness (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypeGlass : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC "glass"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ LDC "glass"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L23
+ LINENUMBER 262 L23
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ BIPUSH 21
+ LDC "lapis_ore"
+ NEW net/minecraft/block/BlockOre
+ DUP
+ INVOKESPECIAL net/minecraft/block/BlockOre.<init> ()V
+ LDC 3.0
+ INVOKEVIRTUAL net/minecraft/block/BlockOre.setHardness (F)Lnet/minecraft/block/Block;
+ LDC 5.0
+ INVOKEVIRTUAL net/minecraft/block/Block.setResistance (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypePiston : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC "oreLapis"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ LDC "lapis_ore"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L24
+ LINENUMBER 263 L24
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ BIPUSH 22
+ LDC "lapis_block"
+ NEW net/minecraft/block/BlockCompressed
+ DUP
+ GETSTATIC net/minecraft/block/material/MapColor.lapisColor : Lnet/minecraft/block/material/MapColor;
+ INVOKESPECIAL net/minecraft/block/BlockCompressed.<init> (Lnet/minecraft/block/material/MapColor;)V
+ LDC 3.0
+ INVOKEVIRTUAL net/minecraft/block/BlockCompressed.setHardness (F)Lnet/minecraft/block/Block;
+ LDC 5.0
+ INVOKEVIRTUAL net/minecraft/block/Block.setResistance (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypePiston : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC "blockLapis"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/creativetab/CreativeTabs.tabBlock : Lnet/minecraft/creativetab/CreativeTabs;
+ INVOKEVIRTUAL net/minecraft/block/Block.setCreativeTab (Lnet/minecraft/creativetab/CreativeTabs;)Lnet/minecraft/block/Block;
+ LDC "lapis_block"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L25
+ LINENUMBER 264 L25
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ BIPUSH 23
+ LDC "dispenser"
+ NEW net/minecraft/block/BlockDispenser
+ DUP
+ INVOKESPECIAL net/minecraft/block/BlockDispenser.<init> ()V
+ LDC 3.5
+ INVOKEVIRTUAL net/minecraft/block/BlockDispenser.setHardness (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypePiston : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC "dispenser"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ LDC "dispenser"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L26
+ LINENUMBER 265 L26
+ NEW net/minecraft/block/BlockSandStone
+ DUP
+ INVOKESPECIAL net/minecraft/block/BlockSandStone.<init> ()V
+ GETSTATIC net/minecraft/block/Block.soundTypePiston : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/BlockSandStone.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC 0.8
+ INVOKEVIRTUAL net/minecraft/block/Block.setHardness (F)Lnet/minecraft/block/Block;
+ LDC "sandStone"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ LDC "sandstone"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ ASTORE 2
+ L27
+ LINENUMBER 266 L27
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ BIPUSH 24
+ LDC "sandstone"
+ ALOAD 2
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L28
+ LINENUMBER 267 L28
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ BIPUSH 25
+ LDC "noteblock"
+ NEW net/minecraft/block/BlockNote
+ DUP
+ INVOKESPECIAL net/minecraft/block/BlockNote.<init> ()V
+ LDC 0.8
+ INVOKEVIRTUAL net/minecraft/block/BlockNote.setHardness (F)Lnet/minecraft/block/Block;
+ LDC "musicBlock"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ LDC "noteblock"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L29
+ LINENUMBER 268 L29
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ BIPUSH 26
+ LDC "bed"
+ NEW net/minecraft/block/BlockBed
+ DUP
+ INVOKESPECIAL net/minecraft/block/BlockBed.<init> ()V
+ LDC 0.2
+ INVOKEVIRTUAL net/minecraft/block/BlockBed.setHardness (F)Lnet/minecraft/block/Block;
+ LDC "bed"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/block/Block.disableStats ()Lnet/minecraft/block/Block;
+ LDC "bed"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L30
+ LINENUMBER 269 L30
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ BIPUSH 27
+ LDC "golden_rail"
+ NEW net/minecraft/block/BlockRailPowered
+ DUP
+ INVOKESPECIAL net/minecraft/block/BlockRailPowered.<init> ()V
+ LDC 0.7
+ INVOKEVIRTUAL net/minecraft/block/BlockRailPowered.setHardness (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypeMetal : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC "goldenRail"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ LDC "rail_golden"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L31
+ LINENUMBER 270 L31
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ BIPUSH 28
+ LDC "detector_rail"
+ NEW net/minecraft/block/BlockRailDetector
+ DUP
+ INVOKESPECIAL net/minecraft/block/BlockRailDetector.<init> ()V
+ LDC 0.7
+ INVOKEVIRTUAL net/minecraft/block/BlockRailDetector.setHardness (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypeMetal : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC "detectorRail"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ LDC "rail_detector"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L32
+ LINENUMBER 271 L32
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ BIPUSH 29
+ LDC "sticky_piston"
+ NEW net/minecraft/block/BlockPistonBase
+ DUP
+ ICONST_1
+ INVOKESPECIAL net/minecraft/block/BlockPistonBase.<init> (Z)V
+ LDC "pistonStickyBase"
+ INVOKEVIRTUAL net/minecraft/block/BlockPistonBase.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L33
+ LINENUMBER 272 L33
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ BIPUSH 30
+ LDC "web"
+ NEW net/minecraft/block/BlockWeb
+ DUP
+ INVOKESPECIAL net/minecraft/block/BlockWeb.<init> ()V
+ ICONST_1
+ INVOKEVIRTUAL net/minecraft/block/BlockWeb.setLightOpacity (I)Lnet/minecraft/block/Block;
+ LDC 4.0
+ INVOKEVIRTUAL net/minecraft/block/Block.setHardness (F)Lnet/minecraft/block/Block;
+ LDC "web"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ LDC "web"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L34
+ LINENUMBER 273 L34
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ BIPUSH 31
+ LDC "tallgrass"
+ NEW net/minecraft/block/BlockTallGrass
+ DUP
+ INVOKESPECIAL net/minecraft/block/BlockTallGrass.<init> ()V
+ FCONST_0
+ INVOKEVIRTUAL net/minecraft/block/BlockTallGrass.setHardness (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypeGrass : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC "tallgrass"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L35
+ LINENUMBER 274 L35
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ BIPUSH 32
+ LDC "deadbush"
+ NEW net/minecraft/block/BlockDeadBush
+ DUP
+ INVOKESPECIAL net/minecraft/block/BlockDeadBush.<init> ()V
+ FCONST_0
+ INVOKEVIRTUAL net/minecraft/block/BlockDeadBush.setHardness (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypeGrass : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC "deadbush"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ LDC "deadbush"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L36
+ LINENUMBER 275 L36
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ BIPUSH 33
+ LDC "piston"
+ NEW net/minecraft/block/BlockPistonBase
+ DUP
+ ICONST_0
+ INVOKESPECIAL net/minecraft/block/BlockPistonBase.<init> (Z)V
+ LDC "pistonBase"
+ INVOKEVIRTUAL net/minecraft/block/BlockPistonBase.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L37
+ LINENUMBER 276 L37
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ BIPUSH 34
+ LDC "piston_head"
+ NEW net/minecraft/block/BlockPistonExtension
+ DUP
+ INVOKESPECIAL net/minecraft/block/BlockPistonExtension.<init> ()V
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L38
+ LINENUMBER 277 L38
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ BIPUSH 35
+ LDC "wool"
+ NEW net/minecraft/block/BlockColored
+ DUP
+ GETSTATIC net/minecraft/block/material/Material.cloth : Lnet/minecraft/block/material/Material;
+ INVOKESPECIAL net/minecraft/block/BlockColored.<init> (Lnet/minecraft/block/material/Material;)V
+ LDC 0.8
+ INVOKEVIRTUAL net/minecraft/block/BlockColored.setHardness (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypeCloth : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC "cloth"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ LDC "wool_colored"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L39
+ LINENUMBER 278 L39
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ BIPUSH 36
+ LDC "piston_extension"
+ NEW net/minecraft/block/BlockPistonMoving
+ DUP
+ INVOKESPECIAL net/minecraft/block/BlockPistonMoving.<init> ()V
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L40
+ LINENUMBER 279 L40
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ BIPUSH 37
+ LDC "yellow_flower"
+ NEW net/minecraft/block/BlockFlower
+ DUP
+ ICONST_0
+ INVOKESPECIAL net/minecraft/block/BlockFlower.<init> (I)V
+ FCONST_0
+ INVOKEVIRTUAL net/minecraft/block/BlockFlower.setHardness (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypeGrass : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC "flower1"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ LDC "flower_dandelion"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L41
+ LINENUMBER 280 L41
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ BIPUSH 38
+ LDC "red_flower"
+ NEW net/minecraft/block/BlockFlower
+ DUP
+ ICONST_1
+ INVOKESPECIAL net/minecraft/block/BlockFlower.<init> (I)V
+ FCONST_0
+ INVOKEVIRTUAL net/minecraft/block/BlockFlower.setHardness (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypeGrass : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC "flower2"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ LDC "flower_rose"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L42
+ LINENUMBER 281 L42
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ BIPUSH 39
+ LDC "brown_mushroom"
+ NEW net/minecraft/block/BlockMushroom
+ DUP
+ INVOKESPECIAL net/minecraft/block/BlockMushroom.<init> ()V
+ FCONST_0
+ INVOKEVIRTUAL net/minecraft/block/BlockMushroom.setHardness (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypeGrass : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC 0.125
+ INVOKEVIRTUAL net/minecraft/block/Block.setLightLevel (F)Lnet/minecraft/block/Block;
+ LDC "mushroom"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ LDC "mushroom_brown"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L43
+ LINENUMBER 282 L43
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ BIPUSH 40
+ LDC "red_mushroom"
+ NEW net/minecraft/block/BlockMushroom
+ DUP
+ INVOKESPECIAL net/minecraft/block/BlockMushroom.<init> ()V
+ FCONST_0
+ INVOKEVIRTUAL net/minecraft/block/BlockMushroom.setHardness (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypeGrass : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC "mushroom"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ LDC "mushroom_red"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L44
+ LINENUMBER 283 L44
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ BIPUSH 41
+ LDC "gold_block"
+ NEW net/minecraft/block/BlockCompressed
+ DUP
+ GETSTATIC net/minecraft/block/material/MapColor.goldColor : Lnet/minecraft/block/material/MapColor;
+ INVOKESPECIAL net/minecraft/block/BlockCompressed.<init> (Lnet/minecraft/block/material/MapColor;)V
+ LDC 3.0
+ INVOKEVIRTUAL net/minecraft/block/BlockCompressed.setHardness (F)Lnet/minecraft/block/Block;
+ LDC 10.0
+ INVOKEVIRTUAL net/minecraft/block/Block.setResistance (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypeMetal : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC "blockGold"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ LDC "gold_block"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L45
+ LINENUMBER 284 L45
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ BIPUSH 42
+ LDC "iron_block"
+ NEW net/minecraft/block/BlockCompressed
+ DUP
+ GETSTATIC net/minecraft/block/material/MapColor.ironColor : Lnet/minecraft/block/material/MapColor;
+ INVOKESPECIAL net/minecraft/block/BlockCompressed.<init> (Lnet/minecraft/block/material/MapColor;)V
+ LDC 5.0
+ INVOKEVIRTUAL net/minecraft/block/BlockCompressed.setHardness (F)Lnet/minecraft/block/Block;
+ LDC 10.0
+ INVOKEVIRTUAL net/minecraft/block/Block.setResistance (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypeMetal : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC "blockIron"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ LDC "iron_block"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L46
+ LINENUMBER 285 L46
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ BIPUSH 43
+ LDC "double_stone_slab"
+ NEW net/minecraft/block/BlockStoneSlab
+ DUP
+ ICONST_1
+ INVOKESPECIAL net/minecraft/block/BlockStoneSlab.<init> (Z)V
+ FCONST_2
+ INVOKEVIRTUAL net/minecraft/block/BlockStoneSlab.setHardness (F)Lnet/minecraft/block/Block;
+ LDC 10.0
+ INVOKEVIRTUAL net/minecraft/block/Block.setResistance (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypePiston : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC "stoneSlab"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L47
+ LINENUMBER 286 L47
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ BIPUSH 44
+ LDC "stone_slab"
+ NEW net/minecraft/block/BlockStoneSlab
+ DUP
+ ICONST_0
+ INVOKESPECIAL net/minecraft/block/BlockStoneSlab.<init> (Z)V
+ FCONST_2
+ INVOKEVIRTUAL net/minecraft/block/BlockStoneSlab.setHardness (F)Lnet/minecraft/block/Block;
+ LDC 10.0
+ INVOKEVIRTUAL net/minecraft/block/Block.setResistance (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypePiston : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC "stoneSlab"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L48
+ LINENUMBER 287 L48
+ NEW net/minecraft/block/Block
+ DUP
+ GETSTATIC net/minecraft/block/material/Material.rock : Lnet/minecraft/block/material/Material;
+ INVOKESPECIAL net/minecraft/block/Block.<init> (Lnet/minecraft/block/material/Material;)V
+ FCONST_2
+ INVOKEVIRTUAL net/minecraft/block/Block.setHardness (F)Lnet/minecraft/block/Block;
+ LDC 10.0
+ INVOKEVIRTUAL net/minecraft/block/Block.setResistance (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypePiston : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC "brick"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/creativetab/CreativeTabs.tabBlock : Lnet/minecraft/creativetab/CreativeTabs;
+ INVOKEVIRTUAL net/minecraft/block/Block.setCreativeTab (Lnet/minecraft/creativetab/CreativeTabs;)Lnet/minecraft/block/Block;
+ LDC "brick"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ ASTORE 3
+ L49
+ LINENUMBER 288 L49
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ BIPUSH 45
+ LDC "brick_block"
+ ALOAD 3
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L50
+ LINENUMBER 289 L50
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ BIPUSH 46
+ LDC "tnt"
+ NEW net/minecraft/block/BlockTNT
+ DUP
+ INVOKESPECIAL net/minecraft/block/BlockTNT.<init> ()V
+ FCONST_0
+ INVOKEVIRTUAL net/minecraft/block/BlockTNT.setHardness (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypeGrass : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC "tnt"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ LDC "tnt"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L51
+ LINENUMBER 290 L51
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ BIPUSH 47
+ LDC "bookshelf"
+ NEW net/minecraft/block/BlockBookshelf
+ DUP
+ INVOKESPECIAL net/minecraft/block/BlockBookshelf.<init> ()V
+ LDC 1.5
+ INVOKEVIRTUAL net/minecraft/block/BlockBookshelf.setHardness (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypeWood : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC "bookshelf"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ LDC "bookshelf"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L52
+ LINENUMBER 291 L52
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ BIPUSH 48
+ LDC "mossy_cobblestone"
+ NEW net/minecraft/block/Block
+ DUP
+ GETSTATIC net/minecraft/block/material/Material.rock : Lnet/minecraft/block/material/Material;
+ INVOKESPECIAL net/minecraft/block/Block.<init> (Lnet/minecraft/block/material/Material;)V
+ FCONST_2
+ INVOKEVIRTUAL net/minecraft/block/Block.setHardness (F)Lnet/minecraft/block/Block;
+ LDC 10.0
+ INVOKEVIRTUAL net/minecraft/block/Block.setResistance (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypePiston : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC "stoneMoss"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/creativetab/CreativeTabs.tabBlock : Lnet/minecraft/creativetab/CreativeTabs;
+ INVOKEVIRTUAL net/minecraft/block/Block.setCreativeTab (Lnet/minecraft/creativetab/CreativeTabs;)Lnet/minecraft/block/Block;
+ LDC "cobblestone_mossy"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L53
+ LINENUMBER 292 L53
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ BIPUSH 49
+ LDC "obsidian"
+ NEW net/minecraft/block/BlockObsidian
+ DUP
+ INVOKESPECIAL net/minecraft/block/BlockObsidian.<init> ()V
+ LDC 50.0
+ INVOKEVIRTUAL net/minecraft/block/BlockObsidian.setHardness (F)Lnet/minecraft/block/Block;
+ LDC 2000.0
+ INVOKEVIRTUAL net/minecraft/block/Block.setResistance (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypePiston : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC "obsidian"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ LDC "obsidian"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L54
+ LINENUMBER 293 L54
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ BIPUSH 50
+ LDC "torch"
+ NEW net/minecraft/block/BlockTorch
+ DUP
+ INVOKESPECIAL net/minecraft/block/BlockTorch.<init> ()V
+ FCONST_0
+ INVOKEVIRTUAL net/minecraft/block/BlockTorch.setHardness (F)Lnet/minecraft/block/Block;
+ LDC 0.9375
+ INVOKEVIRTUAL net/minecraft/block/Block.setLightLevel (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypeWood : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC "torch"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ LDC "torch_on"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L55
+ LINENUMBER 294 L55
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ BIPUSH 51
+ LDC "fire"
+ NEW net/minecraft/block/BlockFire
+ DUP
+ INVOKESPECIAL net/minecraft/block/BlockFire.<init> ()V
+ FCONST_0
+ INVOKEVIRTUAL net/minecraft/block/BlockFire.setHardness (F)Lnet/minecraft/block/Block;
+ FCONST_1
+ INVOKEVIRTUAL net/minecraft/block/Block.setLightLevel (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypeWood : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC "fire"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/block/Block.disableStats ()Lnet/minecraft/block/Block;
+ LDC "fire"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L56
+ LINENUMBER 295 L56
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ BIPUSH 52
+ LDC "mob_spawner"
+ NEW net/minecraft/block/BlockMobSpawner
+ DUP
+ INVOKESPECIAL net/minecraft/block/BlockMobSpawner.<init> ()V
+ LDC 5.0
+ INVOKEVIRTUAL net/minecraft/block/BlockMobSpawner.setHardness (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypeMetal : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC "mobSpawner"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/block/Block.disableStats ()Lnet/minecraft/block/Block;
+ LDC "mob_spawner"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L57
+ LINENUMBER 296 L57
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ BIPUSH 53
+ LDC "oak_stairs"
+ NEW net/minecraft/block/BlockStairs
+ DUP
+ ALOAD 1
+ ICONST_0
+ INVOKESPECIAL net/minecraft/block/BlockStairs.<init> (Lnet/minecraft/block/Block;I)V
+ LDC "stairsWood"
+ INVOKEVIRTUAL net/minecraft/block/BlockStairs.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L58
+ LINENUMBER 297 L58
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ BIPUSH 54
+ LDC "chest"
+ NEW net/minecraft/block/BlockChest
+ DUP
+ ICONST_0
+ INVOKESPECIAL net/minecraft/block/BlockChest.<init> (I)V
+ LDC 2.5
+ INVOKEVIRTUAL net/minecraft/block/BlockChest.setHardness (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypeWood : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC "chest"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L59
+ LINENUMBER 298 L59
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ BIPUSH 55
+ LDC "redstone_wire"
+ NEW net/minecraft/block/BlockRedstoneWire
+ DUP
+ INVOKESPECIAL net/minecraft/block/BlockRedstoneWire.<init> ()V
+ FCONST_0
+ INVOKEVIRTUAL net/minecraft/block/BlockRedstoneWire.setHardness (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypeStone : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC "redstoneDust"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/block/Block.disableStats ()Lnet/minecraft/block/Block;
+ LDC "redstone_dust"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L60
+ LINENUMBER 299 L60
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ BIPUSH 56
+ LDC "diamond_ore"
+ NEW net/minecraft/block/BlockOre
+ DUP
+ INVOKESPECIAL net/minecraft/block/BlockOre.<init> ()V
+ LDC 3.0
+ INVOKEVIRTUAL net/minecraft/block/BlockOre.setHardness (F)Lnet/minecraft/block/Block;
+ LDC 5.0
+ INVOKEVIRTUAL net/minecraft/block/Block.setResistance (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypePiston : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC "oreDiamond"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ LDC "diamond_ore"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L61
+ LINENUMBER 300 L61
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ BIPUSH 57
+ LDC "diamond_block"
+ NEW net/minecraft/block/BlockCompressed
+ DUP
+ GETSTATIC net/minecraft/block/material/MapColor.diamondColor : Lnet/minecraft/block/material/MapColor;
+ INVOKESPECIAL net/minecraft/block/BlockCompressed.<init> (Lnet/minecraft/block/material/MapColor;)V
+ LDC 5.0
+ INVOKEVIRTUAL net/minecraft/block/BlockCompressed.setHardness (F)Lnet/minecraft/block/Block;
+ LDC 10.0
+ INVOKEVIRTUAL net/minecraft/block/Block.setResistance (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypeMetal : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC "blockDiamond"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ LDC "diamond_block"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L62
+ LINENUMBER 301 L62
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ BIPUSH 58
+ LDC "crafting_table"
+ NEW net/minecraft/block/BlockWorkbench
+ DUP
+ INVOKESPECIAL net/minecraft/block/BlockWorkbench.<init> ()V
+ LDC 2.5
+ INVOKEVIRTUAL net/minecraft/block/BlockWorkbench.setHardness (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypeWood : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC "workbench"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ LDC "crafting_table"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L63
+ LINENUMBER 302 L63
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ BIPUSH 59
+ LDC "wheat"
+ NEW net/minecraft/block/BlockCrops
+ DUP
+ INVOKESPECIAL net/minecraft/block/BlockCrops.<init> ()V
+ LDC "crops"
+ INVOKEVIRTUAL net/minecraft/block/BlockCrops.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ LDC "wheat"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L64
+ LINENUMBER 303 L64
+ NEW net/minecraft/block/BlockFarmland
+ DUP
+ INVOKESPECIAL net/minecraft/block/BlockFarmland.<init> ()V
+ LDC 0.6
+ INVOKEVIRTUAL net/minecraft/block/BlockFarmland.setHardness (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypeGravel : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC "farmland"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ LDC "farmland"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ ASTORE 4
+ L65
+ LINENUMBER 304 L65
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ BIPUSH 60
+ LDC "farmland"
+ ALOAD 4
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L66
+ LINENUMBER 305 L66
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ BIPUSH 61
+ LDC "furnace"
+ NEW net/minecraft/block/BlockFurnace
+ DUP
+ ICONST_0
+ INVOKESPECIAL net/minecraft/block/BlockFurnace.<init> (Z)V
+ LDC 3.5
+ INVOKEVIRTUAL net/minecraft/block/BlockFurnace.setHardness (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypePiston : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC "furnace"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/creativetab/CreativeTabs.tabDecorations : Lnet/minecraft/creativetab/CreativeTabs;
+ INVOKEVIRTUAL net/minecraft/block/Block.setCreativeTab (Lnet/minecraft/creativetab/CreativeTabs;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L67
+ LINENUMBER 306 L67
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ BIPUSH 62
+ LDC "lit_furnace"
+ NEW net/minecraft/block/BlockFurnace
+ DUP
+ ICONST_1
+ INVOKESPECIAL net/minecraft/block/BlockFurnace.<init> (Z)V
+ LDC 3.5
+ INVOKEVIRTUAL net/minecraft/block/BlockFurnace.setHardness (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypePiston : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC 0.875
+ INVOKEVIRTUAL net/minecraft/block/Block.setLightLevel (F)Lnet/minecraft/block/Block;
+ LDC "furnace"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L68
+ LINENUMBER 307 L68
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ BIPUSH 63
+ LDC "standing_sign"
+ NEW net/minecraft/block/BlockSign
+ DUP
+ LDC Lnet/minecraft/tileentity/TileEntitySign;.class
+ ICONST_1
+ INVOKESPECIAL net/minecraft/block/BlockSign.<init> (Ljava/lang/Class;Z)V
+ FCONST_1
+ INVOKEVIRTUAL net/minecraft/block/BlockSign.setHardness (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypeWood : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC "sign"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/block/Block.disableStats ()Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L69
+ LINENUMBER 308 L69
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ BIPUSH 64
+ LDC "wooden_door"
+ NEW net/minecraft/block/BlockDoor
+ DUP
+ GETSTATIC net/minecraft/block/material/Material.wood : Lnet/minecraft/block/material/Material;
+ INVOKESPECIAL net/minecraft/block/BlockDoor.<init> (Lnet/minecraft/block/material/Material;)V
+ LDC 3.0
+ INVOKEVIRTUAL net/minecraft/block/BlockDoor.setHardness (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypeWood : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC "doorWood"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/block/Block.disableStats ()Lnet/minecraft/block/Block;
+ LDC "door_wood"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L70
+ LINENUMBER 309 L70
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ BIPUSH 65
+ LDC "ladder"
+ NEW net/minecraft/block/BlockLadder
+ DUP
+ INVOKESPECIAL net/minecraft/block/BlockLadder.<init> ()V
+ LDC 0.4
+ INVOKEVIRTUAL net/minecraft/block/BlockLadder.setHardness (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypeLadder : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC "ladder"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ LDC "ladder"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L71
+ LINENUMBER 310 L71
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ BIPUSH 66
+ LDC "rail"
+ NEW net/minecraft/block/BlockRail
+ DUP
+ INVOKESPECIAL net/minecraft/block/BlockRail.<init> ()V
+ LDC 0.7
+ INVOKEVIRTUAL net/minecraft/block/BlockRail.setHardness (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypeMetal : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC "rail"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ LDC "rail_normal"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L72
+ LINENUMBER 311 L72
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ BIPUSH 67
+ LDC "stone_stairs"
+ NEW net/minecraft/block/BlockStairs
+ DUP
+ ALOAD 0
+ ICONST_0
+ INVOKESPECIAL net/minecraft/block/BlockStairs.<init> (Lnet/minecraft/block/Block;I)V
+ LDC "stairsStone"
+ INVOKEVIRTUAL net/minecraft/block/BlockStairs.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L73
+ LINENUMBER 312 L73
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ BIPUSH 68
+ LDC "wall_sign"
+ NEW net/minecraft/block/BlockSign
+ DUP
+ LDC Lnet/minecraft/tileentity/TileEntitySign;.class
+ ICONST_0
+ INVOKESPECIAL net/minecraft/block/BlockSign.<init> (Ljava/lang/Class;Z)V
+ FCONST_1
+ INVOKEVIRTUAL net/minecraft/block/BlockSign.setHardness (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypeWood : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC "sign"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/block/Block.disableStats ()Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L74
+ LINENUMBER 313 L74
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ BIPUSH 69
+ LDC "lever"
+ NEW net/minecraft/block/BlockLever
+ DUP
+ INVOKESPECIAL net/minecraft/block/BlockLever.<init> ()V
+ LDC 0.5
+ INVOKEVIRTUAL net/minecraft/block/BlockLever.setHardness (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypeWood : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC "lever"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ LDC "lever"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L75
+ LINENUMBER 314 L75
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ BIPUSH 70
+ LDC "stone_pressure_plate"
+ NEW net/minecraft/block/BlockPressurePlate
+ DUP
+ LDC "stone"
+ GETSTATIC net/minecraft/block/material/Material.rock : Lnet/minecraft/block/material/Material;
+ GETSTATIC net/minecraft/block/BlockPressurePlate$Sensitivity.mobs : Lnet/minecraft/block/BlockPressurePlate$Sensitivity;
+ INVOKESPECIAL net/minecraft/block/BlockPressurePlate.<init> (Ljava/lang/String;Lnet/minecraft/block/material/Material;Lnet/minecraft/block/BlockPressurePlate$Sensitivity;)V
+ LDC 0.5
+ INVOKEVIRTUAL net/minecraft/block/BlockPressurePlate.setHardness (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypePiston : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC "pressurePlate"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L76
+ LINENUMBER 315 L76
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ BIPUSH 71
+ LDC "iron_door"
+ NEW net/minecraft/block/BlockDoor
+ DUP
+ GETSTATIC net/minecraft/block/material/Material.iron : Lnet/minecraft/block/material/Material;
+ INVOKESPECIAL net/minecraft/block/BlockDoor.<init> (Lnet/minecraft/block/material/Material;)V
+ LDC 5.0
+ INVOKEVIRTUAL net/minecraft/block/BlockDoor.setHardness (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypeMetal : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC "doorIron"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/block/Block.disableStats ()Lnet/minecraft/block/Block;
+ LDC "door_iron"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L77
+ LINENUMBER 316 L77
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ BIPUSH 72
+ LDC "wooden_pressure_plate"
+ NEW net/minecraft/block/BlockPressurePlate
+ DUP
+ LDC "planks_oak"
+ GETSTATIC net/minecraft/block/material/Material.wood : Lnet/minecraft/block/material/Material;
+ GETSTATIC net/minecraft/block/BlockPressurePlate$Sensitivity.everything : Lnet/minecraft/block/BlockPressurePlate$Sensitivity;
+ INVOKESPECIAL net/minecraft/block/BlockPressurePlate.<init> (Ljava/lang/String;Lnet/minecraft/block/material/Material;Lnet/minecraft/block/BlockPressurePlate$Sensitivity;)V
+ LDC 0.5
+ INVOKEVIRTUAL net/minecraft/block/BlockPressurePlate.setHardness (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypeWood : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC "pressurePlate"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L78
+ LINENUMBER 317 L78
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ BIPUSH 73
+ LDC "redstone_ore"
+ NEW net/minecraft/block/BlockRedstoneOre
+ DUP
+ ICONST_0
+ INVOKESPECIAL net/minecraft/block/BlockRedstoneOre.<init> (Z)V
+ LDC 3.0
+ INVOKEVIRTUAL net/minecraft/block/BlockRedstoneOre.setHardness (F)Lnet/minecraft/block/Block;
+ LDC 5.0
+ INVOKEVIRTUAL net/minecraft/block/Block.setResistance (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypePiston : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC "oreRedstone"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/creativetab/CreativeTabs.tabBlock : Lnet/minecraft/creativetab/CreativeTabs;
+ INVOKEVIRTUAL net/minecraft/block/Block.setCreativeTab (Lnet/minecraft/creativetab/CreativeTabs;)Lnet/minecraft/block/Block;
+ LDC "redstone_ore"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L79
+ LINENUMBER 318 L79
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ BIPUSH 74
+ LDC "lit_redstone_ore"
+ NEW net/minecraft/block/BlockRedstoneOre
+ DUP
+ ICONST_1
+ INVOKESPECIAL net/minecraft/block/BlockRedstoneOre.<init> (Z)V
+ LDC 0.625
+ INVOKEVIRTUAL net/minecraft/block/BlockRedstoneOre.setLightLevel (F)Lnet/minecraft/block/Block;
+ LDC 3.0
+ INVOKEVIRTUAL net/minecraft/block/Block.setHardness (F)Lnet/minecraft/block/Block;
+ LDC 5.0
+ INVOKEVIRTUAL net/minecraft/block/Block.setResistance (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypePiston : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC "oreRedstone"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ LDC "redstone_ore"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L80
+ LINENUMBER 319 L80
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ BIPUSH 75
+ LDC "unlit_redstone_torch"
+ NEW net/minecraft/block/BlockRedstoneTorch
+ DUP
+ ICONST_0
+ INVOKESPECIAL net/minecraft/block/BlockRedstoneTorch.<init> (Z)V
+ FCONST_0
+ INVOKEVIRTUAL net/minecraft/block/BlockRedstoneTorch.setHardness (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypeWood : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC "notGate"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ LDC "redstone_torch_off"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L81
+ LINENUMBER 320 L81
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ BIPUSH 76
+ LDC "redstone_torch"
+ NEW net/minecraft/block/BlockRedstoneTorch
+ DUP
+ ICONST_1
+ INVOKESPECIAL net/minecraft/block/BlockRedstoneTorch.<init> (Z)V
+ FCONST_0
+ INVOKEVIRTUAL net/minecraft/block/BlockRedstoneTorch.setHardness (F)Lnet/minecraft/block/Block;
+ LDC 0.5
+ INVOKEVIRTUAL net/minecraft/block/Block.setLightLevel (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypeWood : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC "notGate"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/creativetab/CreativeTabs.tabRedstone : Lnet/minecraft/creativetab/CreativeTabs;
+ INVOKEVIRTUAL net/minecraft/block/Block.setCreativeTab (Lnet/minecraft/creativetab/CreativeTabs;)Lnet/minecraft/block/Block;
+ LDC "redstone_torch_on"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L82
+ LINENUMBER 321 L82
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ BIPUSH 77
+ LDC "stone_button"
+ NEW net/minecraft/block/BlockButtonStone
+ DUP
+ INVOKESPECIAL net/minecraft/block/BlockButtonStone.<init> ()V
+ LDC 0.5
+ INVOKEVIRTUAL net/minecraft/block/BlockButtonStone.setHardness (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypePiston : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC "button"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L83
+ LINENUMBER 322 L83
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ BIPUSH 78
+ LDC "snow_layer"
+ NEW net/minecraft/block/BlockSnow
+ DUP
+ INVOKESPECIAL net/minecraft/block/BlockSnow.<init> ()V
+ LDC 0.1
+ INVOKEVIRTUAL net/minecraft/block/BlockSnow.setHardness (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypeSnow : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC "snow"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ ICONST_0
+ INVOKEVIRTUAL net/minecraft/block/Block.setLightOpacity (I)Lnet/minecraft/block/Block;
+ LDC "snow"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L84
+ LINENUMBER 323 L84
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ BIPUSH 79
+ LDC "ice"
+ NEW net/minecraft/block/BlockIce
+ DUP
+ INVOKESPECIAL net/minecraft/block/BlockIce.<init> ()V
+ LDC 0.5
+ INVOKEVIRTUAL net/minecraft/block/BlockIce.setHardness (F)Lnet/minecraft/block/Block;
+ ICONST_3
+ INVOKEVIRTUAL net/minecraft/block/Block.setLightOpacity (I)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypeGlass : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC "ice"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ LDC "ice"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L85
+ LINENUMBER 324 L85
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ BIPUSH 80
+ LDC "snow"
+ NEW net/minecraft/block/BlockSnowBlock
+ DUP
+ INVOKESPECIAL net/minecraft/block/BlockSnowBlock.<init> ()V
+ LDC 0.2
+ INVOKEVIRTUAL net/minecraft/block/BlockSnowBlock.setHardness (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypeSnow : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC "snow"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ LDC "snow"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L86
+ LINENUMBER 325 L86
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ BIPUSH 81
+ LDC "cactus"
+ NEW net/minecraft/block/BlockCactus
+ DUP
+ INVOKESPECIAL net/minecraft/block/BlockCactus.<init> ()V
+ LDC 0.4
+ INVOKEVIRTUAL net/minecraft/block/BlockCactus.setHardness (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypeCloth : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC "cactus"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ LDC "cactus"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L87
+ LINENUMBER 326 L87
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ BIPUSH 82
+ LDC "clay"
+ NEW net/minecraft/block/BlockClay
+ DUP
+ INVOKESPECIAL net/minecraft/block/BlockClay.<init> ()V
+ LDC 0.6
+ INVOKEVIRTUAL net/minecraft/block/BlockClay.setHardness (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypeGravel : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC "clay"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ LDC "clay"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L88
+ LINENUMBER 327 L88
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ BIPUSH 83
+ LDC "reeds"
+ NEW net/minecraft/block/BlockReed
+ DUP
+ INVOKESPECIAL net/minecraft/block/BlockReed.<init> ()V
+ FCONST_0
+ INVOKEVIRTUAL net/minecraft/block/BlockReed.setHardness (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypeGrass : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC "reeds"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/block/Block.disableStats ()Lnet/minecraft/block/Block;
+ LDC "reeds"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L89
+ LINENUMBER 328 L89
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ BIPUSH 84
+ LDC "jukebox"
+ NEW net/minecraft/block/BlockJukebox
+ DUP
+ INVOKESPECIAL net/minecraft/block/BlockJukebox.<init> ()V
+ FCONST_2
+ INVOKEVIRTUAL net/minecraft/block/BlockJukebox.setHardness (F)Lnet/minecraft/block/Block;
+ LDC 10.0
+ INVOKEVIRTUAL net/minecraft/block/Block.setResistance (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypePiston : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC "jukebox"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ LDC "jukebox"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L90
+ LINENUMBER 329 L90
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ BIPUSH 85
+ LDC "fence"
+ NEW net/minecraft/block/BlockFence
+ DUP
+ LDC "planks_oak"
+ GETSTATIC net/minecraft/block/material/Material.wood : Lnet/minecraft/block/material/Material;
+ INVOKESPECIAL net/minecraft/block/BlockFence.<init> (Ljava/lang/String;Lnet/minecraft/block/material/Material;)V
+ FCONST_2
+ INVOKEVIRTUAL net/minecraft/block/BlockFence.setHardness (F)Lnet/minecraft/block/Block;
+ LDC 5.0
+ INVOKEVIRTUAL net/minecraft/block/Block.setResistance (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypeWood : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC "fence"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L91
+ LINENUMBER 330 L91
+ NEW net/minecraft/block/BlockPumpkin
+ DUP
+ ICONST_0
+ INVOKESPECIAL net/minecraft/block/BlockPumpkin.<init> (Z)V
+ FCONST_1
+ INVOKEVIRTUAL net/minecraft/block/BlockPumpkin.setHardness (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypeWood : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC "pumpkin"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ LDC "pumpkin"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ ASTORE 5
+ L92
+ LINENUMBER 331 L92
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ BIPUSH 86
+ LDC "pumpkin"
+ ALOAD 5
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L93
+ LINENUMBER 332 L93
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ BIPUSH 87
+ LDC "netherrack"
+ NEW net/minecraft/block/BlockNetherrack
+ DUP
+ INVOKESPECIAL net/minecraft/block/BlockNetherrack.<init> ()V
+ LDC 0.4
+ INVOKEVIRTUAL net/minecraft/block/BlockNetherrack.setHardness (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypePiston : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC "hellrock"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ LDC "netherrack"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L94
+ LINENUMBER 333 L94
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ BIPUSH 88
+ LDC "soul_sand"
+ NEW net/minecraft/block/BlockSoulSand
+ DUP
+ INVOKESPECIAL net/minecraft/block/BlockSoulSand.<init> ()V
+ LDC 0.5
+ INVOKEVIRTUAL net/minecraft/block/BlockSoulSand.setHardness (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypeSand : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC "hellsand"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ LDC "soul_sand"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L95
+ LINENUMBER 334 L95
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ BIPUSH 89
+ LDC "glowstone"
+ NEW net/minecraft/block/BlockGlowstone
+ DUP
+ GETSTATIC net/minecraft/block/material/Material.glass : Lnet/minecraft/block/material/Material;
+ INVOKESPECIAL net/minecraft/block/BlockGlowstone.<init> (Lnet/minecraft/block/material/Material;)V
+ LDC 0.3
+ INVOKEVIRTUAL net/minecraft/block/BlockGlowstone.setHardness (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypeGlass : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ FCONST_1
+ INVOKEVIRTUAL net/minecraft/block/Block.setLightLevel (F)Lnet/minecraft/block/Block;
+ LDC "lightgem"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ LDC "glowstone"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L96
+ LINENUMBER 335 L96
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ BIPUSH 90
+ LDC "portal"
+ NEW net/minecraft/block/BlockPortal
+ DUP
+ INVOKESPECIAL net/minecraft/block/BlockPortal.<init> ()V
+ LDC -1.0
+ INVOKEVIRTUAL net/minecraft/block/BlockPortal.setHardness (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypeGlass : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC 0.75
+ INVOKEVIRTUAL net/minecraft/block/Block.setLightLevel (F)Lnet/minecraft/block/Block;
+ LDC "portal"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ LDC "portal"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L97
+ LINENUMBER 336 L97
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ BIPUSH 91
+ LDC "lit_pumpkin"
+ NEW net/minecraft/block/BlockPumpkin
+ DUP
+ ICONST_1
+ INVOKESPECIAL net/minecraft/block/BlockPumpkin.<init> (Z)V
+ FCONST_1
+ INVOKEVIRTUAL net/minecraft/block/BlockPumpkin.setHardness (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypeWood : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ FCONST_1
+ INVOKEVIRTUAL net/minecraft/block/Block.setLightLevel (F)Lnet/minecraft/block/Block;
+ LDC "litpumpkin"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ LDC "pumpkin"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L98
+ LINENUMBER 337 L98
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ BIPUSH 92
+ LDC "cake"
+ NEW net/minecraft/block/BlockCake
+ DUP
+ INVOKESPECIAL net/minecraft/block/BlockCake.<init> ()V
+ LDC 0.5
+ INVOKEVIRTUAL net/minecraft/block/BlockCake.setHardness (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypeCloth : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC "cake"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/block/Block.disableStats ()Lnet/minecraft/block/Block;
+ LDC "cake"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L99
+ LINENUMBER 338 L99
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ BIPUSH 93
+ LDC "unpowered_repeater"
+ NEW net/minecraft/block/BlockRedstoneRepeater
+ DUP
+ ICONST_0
+ INVOKESPECIAL net/minecraft/block/BlockRedstoneRepeater.<init> (Z)V
+ FCONST_0
+ INVOKEVIRTUAL net/minecraft/block/BlockRedstoneRepeater.setHardness (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypeWood : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC "diode"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/block/Block.disableStats ()Lnet/minecraft/block/Block;
+ LDC "repeater_off"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L100
+ LINENUMBER 339 L100
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ BIPUSH 94
+ LDC "powered_repeater"
+ NEW net/minecraft/block/BlockRedstoneRepeater
+ DUP
+ ICONST_1
+ INVOKESPECIAL net/minecraft/block/BlockRedstoneRepeater.<init> (Z)V
+ FCONST_0
+ INVOKEVIRTUAL net/minecraft/block/BlockRedstoneRepeater.setHardness (F)Lnet/minecraft/block/Block;
+ LDC 0.625
+ INVOKEVIRTUAL net/minecraft/block/Block.setLightLevel (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypeWood : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC "diode"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/block/Block.disableStats ()Lnet/minecraft/block/Block;
+ LDC "repeater_on"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L101
+ LINENUMBER 340 L101
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ BIPUSH 95
+ LDC "stained_glass"
+ NEW net/minecraft/block/BlockStainedGlass
+ DUP
+ GETSTATIC net/minecraft/block/material/Material.glass : Lnet/minecraft/block/material/Material;
+ INVOKESPECIAL net/minecraft/block/BlockStainedGlass.<init> (Lnet/minecraft/block/material/Material;)V
+ LDC 0.3
+ INVOKEVIRTUAL net/minecraft/block/BlockStainedGlass.setHardness (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypeGlass : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC "stainedGlass"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ LDC "glass"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L102
+ LINENUMBER 341 L102
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ BIPUSH 96
+ LDC "trapdoor"
+ NEW net/minecraft/block/BlockTrapDoor
+ DUP
+ GETSTATIC net/minecraft/block/material/Material.wood : Lnet/minecraft/block/material/Material;
+ INVOKESPECIAL net/minecraft/block/BlockTrapDoor.<init> (Lnet/minecraft/block/material/Material;)V
+ LDC 3.0
+ INVOKEVIRTUAL net/minecraft/block/BlockTrapDoor.setHardness (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypeWood : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC "trapdoor"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/block/Block.disableStats ()Lnet/minecraft/block/Block;
+ LDC "trapdoor"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L103
+ LINENUMBER 342 L103
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ BIPUSH 97
+ LDC "monster_egg"
+ NEW net/minecraft/block/BlockSilverfish
+ DUP
+ INVOKESPECIAL net/minecraft/block/BlockSilverfish.<init> ()V
+ LDC 0.75
+ INVOKEVIRTUAL net/minecraft/block/BlockSilverfish.setHardness (F)Lnet/minecraft/block/Block;
+ LDC "monsterStoneEgg"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L104
+ LINENUMBER 343 L104
+ NEW net/minecraft/block/BlockStoneBrick
+ DUP
+ INVOKESPECIAL net/minecraft/block/BlockStoneBrick.<init> ()V
+ LDC 1.5
+ INVOKEVIRTUAL net/minecraft/block/BlockStoneBrick.setHardness (F)Lnet/minecraft/block/Block;
+ LDC 10.0
+ INVOKEVIRTUAL net/minecraft/block/Block.setResistance (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypePiston : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC "stonebricksmooth"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ LDC "stonebrick"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ ASTORE 6
+ L105
+ LINENUMBER 344 L105
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ BIPUSH 98
+ LDC "stonebrick"
+ ALOAD 6
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L106
+ LINENUMBER 345 L106
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ BIPUSH 99
+ LDC "brown_mushroom_block"
+ NEW net/minecraft/block/BlockHugeMushroom
+ DUP
+ GETSTATIC net/minecraft/block/material/Material.wood : Lnet/minecraft/block/material/Material;
+ ICONST_0
+ INVOKESPECIAL net/minecraft/block/BlockHugeMushroom.<init> (Lnet/minecraft/block/material/Material;I)V
+ LDC 0.2
+ INVOKEVIRTUAL net/minecraft/block/BlockHugeMushroom.setHardness (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypeWood : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC "mushroom"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ LDC "mushroom_block"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L107
+ LINENUMBER 346 L107
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ BIPUSH 100
+ LDC "red_mushroom_block"
+ NEW net/minecraft/block/BlockHugeMushroom
+ DUP
+ GETSTATIC net/minecraft/block/material/Material.wood : Lnet/minecraft/block/material/Material;
+ ICONST_1
+ INVOKESPECIAL net/minecraft/block/BlockHugeMushroom.<init> (Lnet/minecraft/block/material/Material;I)V
+ LDC 0.2
+ INVOKEVIRTUAL net/minecraft/block/BlockHugeMushroom.setHardness (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypeWood : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC "mushroom"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ LDC "mushroom_block"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L108
+ LINENUMBER 347 L108
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ BIPUSH 101
+ LDC "iron_bars"
+ NEW net/minecraft/block/BlockPane
+ DUP
+ LDC "iron_bars"
+ LDC "iron_bars"
+ GETSTATIC net/minecraft/block/material/Material.iron : Lnet/minecraft/block/material/Material;
+ ICONST_1
+ INVOKESPECIAL net/minecraft/block/BlockPane.<init> (Ljava/lang/String;Ljava/lang/String;Lnet/minecraft/block/material/Material;Z)V
+ LDC 5.0
+ INVOKEVIRTUAL net/minecraft/block/BlockPane.setHardness (F)Lnet/minecraft/block/Block;
+ LDC 10.0
+ INVOKEVIRTUAL net/minecraft/block/Block.setResistance (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypeMetal : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC "fenceIron"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L109
+ LINENUMBER 348 L109
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ BIPUSH 102
+ LDC "glass_pane"
+ NEW net/minecraft/block/BlockPane
+ DUP
+ LDC "glass"
+ LDC "glass_pane_top"
+ GETSTATIC net/minecraft/block/material/Material.glass : Lnet/minecraft/block/material/Material;
+ ICONST_0
+ INVOKESPECIAL net/minecraft/block/BlockPane.<init> (Ljava/lang/String;Ljava/lang/String;Lnet/minecraft/block/material/Material;Z)V
+ LDC 0.3
+ INVOKEVIRTUAL net/minecraft/block/BlockPane.setHardness (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypeGlass : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC "thinGlass"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L110
+ LINENUMBER 349 L110
+ NEW net/minecraft/block/BlockMelon
+ DUP
+ INVOKESPECIAL net/minecraft/block/BlockMelon.<init> ()V
+ FCONST_1
+ INVOKEVIRTUAL net/minecraft/block/BlockMelon.setHardness (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypeWood : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC "melon"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ LDC "melon"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ ASTORE 7
+ L111
+ LINENUMBER 350 L111
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ BIPUSH 103
+ LDC "melon_block"
+ ALOAD 7
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L112
+ LINENUMBER 351 L112
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ BIPUSH 104
+ LDC "pumpkin_stem"
+ NEW net/minecraft/block/BlockStem
+ DUP
+ ALOAD 5
+ INVOKESPECIAL net/minecraft/block/BlockStem.<init> (Lnet/minecraft/block/Block;)V
+ FCONST_0
+ INVOKEVIRTUAL net/minecraft/block/BlockStem.setHardness (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypeWood : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC "pumpkinStem"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ LDC "pumpkin_stem"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L113
+ LINENUMBER 352 L113
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ BIPUSH 105
+ LDC "melon_stem"
+ NEW net/minecraft/block/BlockStem
+ DUP
+ ALOAD 7
+ INVOKESPECIAL net/minecraft/block/BlockStem.<init> (Lnet/minecraft/block/Block;)V
+ FCONST_0
+ INVOKEVIRTUAL net/minecraft/block/BlockStem.setHardness (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypeWood : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC "pumpkinStem"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ LDC "melon_stem"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L114
+ LINENUMBER 353 L114
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ BIPUSH 106
+ LDC "vine"
+ NEW net/minecraft/block/BlockVine
+ DUP
+ INVOKESPECIAL net/minecraft/block/BlockVine.<init> ()V
+ LDC 0.2
+ INVOKEVIRTUAL net/minecraft/block/BlockVine.setHardness (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypeGrass : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC "vine"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ LDC "vine"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L115
+ LINENUMBER 354 L115
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ BIPUSH 107
+ LDC "fence_gate"
+ NEW net/minecraft/block/BlockFenceGate
+ DUP
+ INVOKESPECIAL net/minecraft/block/BlockFenceGate.<init> ()V
+ FCONST_2
+ INVOKEVIRTUAL net/minecraft/block/BlockFenceGate.setHardness (F)Lnet/minecraft/block/Block;
+ LDC 5.0
+ INVOKEVIRTUAL net/minecraft/block/Block.setResistance (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypeWood : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC "fenceGate"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L116
+ LINENUMBER 355 L116
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ BIPUSH 108
+ LDC "brick_stairs"
+ NEW net/minecraft/block/BlockStairs
+ DUP
+ ALOAD 3
+ ICONST_0
+ INVOKESPECIAL net/minecraft/block/BlockStairs.<init> (Lnet/minecraft/block/Block;I)V
+ LDC "stairsBrick"
+ INVOKEVIRTUAL net/minecraft/block/BlockStairs.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L117
+ LINENUMBER 356 L117
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ BIPUSH 109
+ LDC "stone_brick_stairs"
+ NEW net/minecraft/block/BlockStairs
+ DUP
+ ALOAD 6
+ ICONST_0
+ INVOKESPECIAL net/minecraft/block/BlockStairs.<init> (Lnet/minecraft/block/Block;I)V
+ LDC "stairsStoneBrickSmooth"
+ INVOKEVIRTUAL net/minecraft/block/BlockStairs.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L118
+ LINENUMBER 357 L118
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ BIPUSH 110
+ LDC "mycelium"
+ NEW net/minecraft/block/BlockMycelium
+ DUP
+ INVOKESPECIAL net/minecraft/block/BlockMycelium.<init> ()V
+ LDC 0.6
+ INVOKEVIRTUAL net/minecraft/block/BlockMycelium.setHardness (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypeGrass : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC "mycel"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ LDC "mycelium"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L119
+ LINENUMBER 358 L119
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ BIPUSH 111
+ LDC "waterlily"
+ NEW net/minecraft/block/BlockLilyPad
+ DUP
+ INVOKESPECIAL net/minecraft/block/BlockLilyPad.<init> ()V
+ FCONST_0
+ INVOKEVIRTUAL net/minecraft/block/BlockLilyPad.setHardness (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypeGrass : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC "waterlily"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ LDC "waterlily"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L120
+ LINENUMBER 359 L120
+ NEW net/minecraft/block/Block
+ DUP
+ GETSTATIC net/minecraft/block/material/Material.rock : Lnet/minecraft/block/material/Material;
+ INVOKESPECIAL net/minecraft/block/Block.<init> (Lnet/minecraft/block/material/Material;)V
+ FCONST_2
+ INVOKEVIRTUAL net/minecraft/block/Block.setHardness (F)Lnet/minecraft/block/Block;
+ LDC 10.0
+ INVOKEVIRTUAL net/minecraft/block/Block.setResistance (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypePiston : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC "netherBrick"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/creativetab/CreativeTabs.tabBlock : Lnet/minecraft/creativetab/CreativeTabs;
+ INVOKEVIRTUAL net/minecraft/block/Block.setCreativeTab (Lnet/minecraft/creativetab/CreativeTabs;)Lnet/minecraft/block/Block;
+ LDC "nether_brick"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ ASTORE 8
+ L121
+ LINENUMBER 360 L121
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ BIPUSH 112
+ LDC "nether_brick"
+ ALOAD 8
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L122
+ LINENUMBER 361 L122
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ BIPUSH 113
+ LDC "nether_brick_fence"
+ NEW net/minecraft/block/BlockFence
+ DUP
+ LDC "nether_brick"
+ GETSTATIC net/minecraft/block/material/Material.rock : Lnet/minecraft/block/material/Material;
+ INVOKESPECIAL net/minecraft/block/BlockFence.<init> (Ljava/lang/String;Lnet/minecraft/block/material/Material;)V
+ FCONST_2
+ INVOKEVIRTUAL net/minecraft/block/BlockFence.setHardness (F)Lnet/minecraft/block/Block;
+ LDC 10.0
+ INVOKEVIRTUAL net/minecraft/block/Block.setResistance (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypePiston : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC "netherFence"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L123
+ LINENUMBER 362 L123
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ BIPUSH 114
+ LDC "nether_brick_stairs"
+ NEW net/minecraft/block/BlockStairs
+ DUP
+ ALOAD 8
+ ICONST_0
+ INVOKESPECIAL net/minecraft/block/BlockStairs.<init> (Lnet/minecraft/block/Block;I)V
+ LDC "stairsNetherBrick"
+ INVOKEVIRTUAL net/minecraft/block/BlockStairs.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L124
+ LINENUMBER 363 L124
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ BIPUSH 115
+ LDC "nether_wart"
+ NEW net/minecraft/block/BlockNetherWart
+ DUP
+ INVOKESPECIAL net/minecraft/block/BlockNetherWart.<init> ()V
+ LDC "netherStalk"
+ INVOKEVIRTUAL net/minecraft/block/BlockNetherWart.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ LDC "nether_wart"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L125
+ LINENUMBER 364 L125
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ BIPUSH 116
+ LDC "enchanting_table"
+ NEW net/minecraft/block/BlockEnchantmentTable
+ DUP
+ INVOKESPECIAL net/minecraft/block/BlockEnchantmentTable.<init> ()V
+ LDC 5.0
+ INVOKEVIRTUAL net/minecraft/block/BlockEnchantmentTable.setHardness (F)Lnet/minecraft/block/Block;
+ LDC 2000.0
+ INVOKEVIRTUAL net/minecraft/block/Block.setResistance (F)Lnet/minecraft/block/Block;
+ LDC "enchantmentTable"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ LDC "enchanting_table"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L126
+ LINENUMBER 365 L126
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ BIPUSH 117
+ LDC "brewing_stand"
+ NEW net/minecraft/block/BlockBrewingStand
+ DUP
+ INVOKESPECIAL net/minecraft/block/BlockBrewingStand.<init> ()V
+ LDC 0.5
+ INVOKEVIRTUAL net/minecraft/block/BlockBrewingStand.setHardness (F)Lnet/minecraft/block/Block;
+ LDC 0.125
+ INVOKEVIRTUAL net/minecraft/block/Block.setLightLevel (F)Lnet/minecraft/block/Block;
+ LDC "brewingStand"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ LDC "brewing_stand"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L127
+ LINENUMBER 366 L127
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ BIPUSH 118
+ LDC "cauldron"
+ NEW net/minecraft/block/BlockCauldron
+ DUP
+ INVOKESPECIAL net/minecraft/block/BlockCauldron.<init> ()V
+ FCONST_2
+ INVOKEVIRTUAL net/minecraft/block/BlockCauldron.setHardness (F)Lnet/minecraft/block/Block;
+ LDC "cauldron"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ LDC "cauldron"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L128
+ LINENUMBER 367 L128
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ BIPUSH 119
+ LDC "end_portal"
+ NEW net/minecraft/block/BlockEndPortal
+ DUP
+ GETSTATIC net/minecraft/block/material/Material.portal : Lnet/minecraft/block/material/Material;
+ INVOKESPECIAL net/minecraft/block/BlockEndPortal.<init> (Lnet/minecraft/block/material/Material;)V
+ LDC -1.0
+ INVOKEVIRTUAL net/minecraft/block/BlockEndPortal.setHardness (F)Lnet/minecraft/block/Block;
+ LDC 6000000.0
+ INVOKEVIRTUAL net/minecraft/block/Block.setResistance (F)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L129
+ LINENUMBER 368 L129
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ BIPUSH 120
+ LDC "end_portal_frame"
+ NEW net/minecraft/block/BlockEndPortalFrame
+ DUP
+ INVOKESPECIAL net/minecraft/block/BlockEndPortalFrame.<init> ()V
+ GETSTATIC net/minecraft/block/Block.soundTypeGlass : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/BlockEndPortalFrame.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC 0.125
+ INVOKEVIRTUAL net/minecraft/block/Block.setLightLevel (F)Lnet/minecraft/block/Block;
+ LDC -1.0
+ INVOKEVIRTUAL net/minecraft/block/Block.setHardness (F)Lnet/minecraft/block/Block;
+ LDC "endPortalFrame"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ LDC 6000000.0
+ INVOKEVIRTUAL net/minecraft/block/Block.setResistance (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/creativetab/CreativeTabs.tabDecorations : Lnet/minecraft/creativetab/CreativeTabs;
+ INVOKEVIRTUAL net/minecraft/block/Block.setCreativeTab (Lnet/minecraft/creativetab/CreativeTabs;)Lnet/minecraft/block/Block;
+ LDC "endframe"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L130
+ LINENUMBER 369 L130
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ BIPUSH 121
+ LDC "end_stone"
+ NEW net/minecraft/block/Block
+ DUP
+ GETSTATIC net/minecraft/block/material/Material.rock : Lnet/minecraft/block/material/Material;
+ INVOKESPECIAL net/minecraft/block/Block.<init> (Lnet/minecraft/block/material/Material;)V
+ LDC 3.0
+ INVOKEVIRTUAL net/minecraft/block/Block.setHardness (F)Lnet/minecraft/block/Block;
+ LDC 15.0
+ INVOKEVIRTUAL net/minecraft/block/Block.setResistance (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypePiston : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC "whiteStone"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/creativetab/CreativeTabs.tabBlock : Lnet/minecraft/creativetab/CreativeTabs;
+ INVOKEVIRTUAL net/minecraft/block/Block.setCreativeTab (Lnet/minecraft/creativetab/CreativeTabs;)Lnet/minecraft/block/Block;
+ LDC "end_stone"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L131
+ LINENUMBER 370 L131
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ BIPUSH 122
+ LDC "dragon_egg"
+ NEW net/minecraft/block/BlockDragonEgg
+ DUP
+ INVOKESPECIAL net/minecraft/block/BlockDragonEgg.<init> ()V
+ LDC 3.0
+ INVOKEVIRTUAL net/minecraft/block/BlockDragonEgg.setHardness (F)Lnet/minecraft/block/Block;
+ LDC 15.0
+ INVOKEVIRTUAL net/minecraft/block/Block.setResistance (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypePiston : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC 0.125
+ INVOKEVIRTUAL net/minecraft/block/Block.setLightLevel (F)Lnet/minecraft/block/Block;
+ LDC "dragonEgg"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ LDC "dragon_egg"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L132
+ LINENUMBER 371 L132
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ BIPUSH 123
+ LDC "redstone_lamp"
+ NEW net/minecraft/block/BlockRedstoneLight
+ DUP
+ ICONST_0
+ INVOKESPECIAL net/minecraft/block/BlockRedstoneLight.<init> (Z)V
+ LDC 0.3
+ INVOKEVIRTUAL net/minecraft/block/BlockRedstoneLight.setHardness (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypeGlass : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC "redstoneLight"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/creativetab/CreativeTabs.tabRedstone : Lnet/minecraft/creativetab/CreativeTabs;
+ INVOKEVIRTUAL net/minecraft/block/Block.setCreativeTab (Lnet/minecraft/creativetab/CreativeTabs;)Lnet/minecraft/block/Block;
+ LDC "redstone_lamp_off"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L133
+ LINENUMBER 372 L133
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ BIPUSH 124
+ LDC "lit_redstone_lamp"
+ NEW net/minecraft/block/BlockRedstoneLight
+ DUP
+ ICONST_1
+ INVOKESPECIAL net/minecraft/block/BlockRedstoneLight.<init> (Z)V
+ LDC 0.3
+ INVOKEVIRTUAL net/minecraft/block/BlockRedstoneLight.setHardness (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypeGlass : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC "redstoneLight"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ LDC "redstone_lamp_on"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L134
+ LINENUMBER 373 L134
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ BIPUSH 125
+ LDC "double_wooden_slab"
+ NEW net/minecraft/block/BlockWoodSlab
+ DUP
+ ICONST_1
+ INVOKESPECIAL net/minecraft/block/BlockWoodSlab.<init> (Z)V
+ FCONST_2
+ INVOKEVIRTUAL net/minecraft/block/BlockWoodSlab.setHardness (F)Lnet/minecraft/block/Block;
+ LDC 5.0
+ INVOKEVIRTUAL net/minecraft/block/Block.setResistance (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypeWood : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC "woodSlab"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L135
+ LINENUMBER 374 L135
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ BIPUSH 126
+ LDC "wooden_slab"
+ NEW net/minecraft/block/BlockWoodSlab
+ DUP
+ ICONST_0
+ INVOKESPECIAL net/minecraft/block/BlockWoodSlab.<init> (Z)V
+ FCONST_2
+ INVOKEVIRTUAL net/minecraft/block/BlockWoodSlab.setHardness (F)Lnet/minecraft/block/Block;
+ LDC 5.0
+ INVOKEVIRTUAL net/minecraft/block/Block.setResistance (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypeWood : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC "woodSlab"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L136
+ LINENUMBER 375 L136
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ BIPUSH 127
+ LDC "cocoa"
+ NEW net/minecraft/block/BlockCocoa
+ DUP
+ INVOKESPECIAL net/minecraft/block/BlockCocoa.<init> ()V
+ LDC 0.2
+ INVOKEVIRTUAL net/minecraft/block/BlockCocoa.setHardness (F)Lnet/minecraft/block/Block;
+ LDC 5.0
+ INVOKEVIRTUAL net/minecraft/block/Block.setResistance (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypeWood : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC "cocoa"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ LDC "cocoa"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L137
+ LINENUMBER 376 L137
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ SIPUSH 128
+ LDC "sandstone_stairs"
+ NEW net/minecraft/block/BlockStairs
+ DUP
+ ALOAD 2
+ ICONST_0
+ INVOKESPECIAL net/minecraft/block/BlockStairs.<init> (Lnet/minecraft/block/Block;I)V
+ LDC "stairsSandStone"
+ INVOKEVIRTUAL net/minecraft/block/BlockStairs.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L138
+ LINENUMBER 377 L138
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ SIPUSH 129
+ LDC "emerald_ore"
+ NEW net/minecraft/block/BlockOre
+ DUP
+ INVOKESPECIAL net/minecraft/block/BlockOre.<init> ()V
+ LDC 3.0
+ INVOKEVIRTUAL net/minecraft/block/BlockOre.setHardness (F)Lnet/minecraft/block/Block;
+ LDC 5.0
+ INVOKEVIRTUAL net/minecraft/block/Block.setResistance (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypePiston : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC "oreEmerald"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ LDC "emerald_ore"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L139
+ LINENUMBER 378 L139
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ SIPUSH 130
+ LDC "ender_chest"
+ NEW net/minecraft/block/BlockEnderChest
+ DUP
+ INVOKESPECIAL net/minecraft/block/BlockEnderChest.<init> ()V
+ LDC 22.5
+ INVOKEVIRTUAL net/minecraft/block/BlockEnderChest.setHardness (F)Lnet/minecraft/block/Block;
+ LDC 1000.0
+ INVOKEVIRTUAL net/minecraft/block/Block.setResistance (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypePiston : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC "enderChest"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ LDC 0.5
+ INVOKEVIRTUAL net/minecraft/block/Block.setLightLevel (F)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L140
+ LINENUMBER 379 L140
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ SIPUSH 131
+ LDC "tripwire_hook"
+ NEW net/minecraft/block/BlockTripWireHook
+ DUP
+ INVOKESPECIAL net/minecraft/block/BlockTripWireHook.<init> ()V
+ LDC "tripWireSource"
+ INVOKEVIRTUAL net/minecraft/block/BlockTripWireHook.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ LDC "trip_wire_source"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L141
+ LINENUMBER 380 L141
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ SIPUSH 132
+ LDC "tripwire"
+ NEW net/minecraft/block/BlockTripWire
+ DUP
+ INVOKESPECIAL net/minecraft/block/BlockTripWire.<init> ()V
+ LDC "tripWire"
+ INVOKEVIRTUAL net/minecraft/block/BlockTripWire.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ LDC "trip_wire"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L142
+ LINENUMBER 381 L142
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ SIPUSH 133
+ LDC "emerald_block"
+ NEW net/minecraft/block/BlockCompressed
+ DUP
+ GETSTATIC net/minecraft/block/material/MapColor.emeraldColor : Lnet/minecraft/block/material/MapColor;
+ INVOKESPECIAL net/minecraft/block/BlockCompressed.<init> (Lnet/minecraft/block/material/MapColor;)V
+ LDC 5.0
+ INVOKEVIRTUAL net/minecraft/block/BlockCompressed.setHardness (F)Lnet/minecraft/block/Block;
+ LDC 10.0
+ INVOKEVIRTUAL net/minecraft/block/Block.setResistance (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypeMetal : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC "blockEmerald"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ LDC "emerald_block"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L143
+ LINENUMBER 382 L143
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ SIPUSH 134
+ LDC "spruce_stairs"
+ NEW net/minecraft/block/BlockStairs
+ DUP
+ ALOAD 1
+ ICONST_1
+ INVOKESPECIAL net/minecraft/block/BlockStairs.<init> (Lnet/minecraft/block/Block;I)V
+ LDC "stairsWoodSpruce"
+ INVOKEVIRTUAL net/minecraft/block/BlockStairs.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L144
+ LINENUMBER 383 L144
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ SIPUSH 135
+ LDC "birch_stairs"
+ NEW net/minecraft/block/BlockStairs
+ DUP
+ ALOAD 1
+ ICONST_2
+ INVOKESPECIAL net/minecraft/block/BlockStairs.<init> (Lnet/minecraft/block/Block;I)V
+ LDC "stairsWoodBirch"
+ INVOKEVIRTUAL net/minecraft/block/BlockStairs.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L145
+ LINENUMBER 384 L145
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ SIPUSH 136
+ LDC "jungle_stairs"
+ NEW net/minecraft/block/BlockStairs
+ DUP
+ ALOAD 1
+ ICONST_3
+ INVOKESPECIAL net/minecraft/block/BlockStairs.<init> (Lnet/minecraft/block/Block;I)V
+ LDC "stairsWoodJungle"
+ INVOKEVIRTUAL net/minecraft/block/BlockStairs.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L146
+ LINENUMBER 385 L146
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ SIPUSH 137
+ LDC "command_block"
+ NEW net/minecraft/block/BlockCommandBlock
+ DUP
+ INVOKESPECIAL net/minecraft/block/BlockCommandBlock.<init> ()V
+ INVOKEVIRTUAL net/minecraft/block/BlockCommandBlock.setBlockUnbreakable ()Lnet/minecraft/block/Block;
+ LDC 6000000.0
+ INVOKEVIRTUAL net/minecraft/block/Block.setResistance (F)Lnet/minecraft/block/Block;
+ LDC "commandBlock"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ LDC "command_block"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L147
+ LINENUMBER 386 L147
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ SIPUSH 138
+ LDC "beacon"
+ NEW net/minecraft/block/BlockBeacon
+ DUP
+ INVOKESPECIAL net/minecraft/block/BlockBeacon.<init> ()V
+ LDC "beacon"
+ INVOKEVIRTUAL net/minecraft/block/BlockBeacon.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ FCONST_1
+ INVOKEVIRTUAL net/minecraft/block/Block.setLightLevel (F)Lnet/minecraft/block/Block;
+ LDC "beacon"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L148
+ LINENUMBER 387 L148
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ SIPUSH 139
+ LDC "cobblestone_wall"
+ NEW net/minecraft/block/BlockWall
+ DUP
+ ALOAD 0
+ INVOKESPECIAL net/minecraft/block/BlockWall.<init> (Lnet/minecraft/block/Block;)V
+ LDC "cobbleWall"
+ INVOKEVIRTUAL net/minecraft/block/BlockWall.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L149
+ LINENUMBER 388 L149
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ SIPUSH 140
+ LDC "flower_pot"
+ NEW net/minecraft/block/BlockFlowerPot
+ DUP
+ INVOKESPECIAL net/minecraft/block/BlockFlowerPot.<init> ()V
+ FCONST_0
+ INVOKEVIRTUAL net/minecraft/block/BlockFlowerPot.setHardness (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypeStone : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC "flowerPot"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ LDC "flower_pot"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L150
+ LINENUMBER 389 L150
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ SIPUSH 141
+ LDC "carrots"
+ NEW net/minecraft/block/BlockCarrot
+ DUP
+ INVOKESPECIAL net/minecraft/block/BlockCarrot.<init> ()V
+ LDC "carrots"
+ INVOKEVIRTUAL net/minecraft/block/BlockCarrot.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ LDC "carrots"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L151
+ LINENUMBER 390 L151
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ SIPUSH 142
+ LDC "potatoes"
+ NEW net/minecraft/block/BlockPotato
+ DUP
+ INVOKESPECIAL net/minecraft/block/BlockPotato.<init> ()V
+ LDC "potatoes"
+ INVOKEVIRTUAL net/minecraft/block/BlockPotato.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ LDC "potatoes"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L152
+ LINENUMBER 391 L152
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ SIPUSH 143
+ LDC "wooden_button"
+ NEW net/minecraft/block/BlockButtonWood
+ DUP
+ INVOKESPECIAL net/minecraft/block/BlockButtonWood.<init> ()V
+ LDC 0.5
+ INVOKEVIRTUAL net/minecraft/block/BlockButtonWood.setHardness (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypeWood : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC "button"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L153
+ LINENUMBER 392 L153
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ SIPUSH 144
+ LDC "skull"
+ NEW net/minecraft/block/BlockSkull
+ DUP
+ INVOKESPECIAL net/minecraft/block/BlockSkull.<init> ()V
+ FCONST_1
+ INVOKEVIRTUAL net/minecraft/block/BlockSkull.setHardness (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypePiston : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC "skull"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ LDC "skull"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L154
+ LINENUMBER 393 L154
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ SIPUSH 145
+ LDC "anvil"
+ NEW net/minecraft/block/BlockAnvil
+ DUP
+ INVOKESPECIAL net/minecraft/block/BlockAnvil.<init> ()V
+ LDC 5.0
+ INVOKEVIRTUAL net/minecraft/block/BlockAnvil.setHardness (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypeAnvil : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC 2000.0
+ INVOKEVIRTUAL net/minecraft/block/Block.setResistance (F)Lnet/minecraft/block/Block;
+ LDC "anvil"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L155
+ LINENUMBER 394 L155
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ SIPUSH 146
+ LDC "trapped_chest"
+ NEW net/minecraft/block/BlockChest
+ DUP
+ ICONST_1
+ INVOKESPECIAL net/minecraft/block/BlockChest.<init> (I)V
+ LDC 2.5
+ INVOKEVIRTUAL net/minecraft/block/BlockChest.setHardness (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypeWood : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC "chestTrap"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L156
+ LINENUMBER 395 L156
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ SIPUSH 147
+ LDC "light_weighted_pressure_plate"
+ NEW net/minecraft/block/BlockPressurePlateWeighted
+ DUP
+ LDC "gold_block"
+ GETSTATIC net/minecraft/block/material/Material.iron : Lnet/minecraft/block/material/Material;
+ BIPUSH 15
+ INVOKESPECIAL net/minecraft/block/BlockPressurePlateWeighted.<init> (Ljava/lang/String;Lnet/minecraft/block/material/Material;I)V
+ LDC 0.5
+ INVOKEVIRTUAL net/minecraft/block/BlockPressurePlateWeighted.setHardness (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypeWood : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC "weightedPlate_light"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L157
+ LINENUMBER 396 L157
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ SIPUSH 148
+ LDC "heavy_weighted_pressure_plate"
+ NEW net/minecraft/block/BlockPressurePlateWeighted
+ DUP
+ LDC "iron_block"
+ GETSTATIC net/minecraft/block/material/Material.iron : Lnet/minecraft/block/material/Material;
+ SIPUSH 150
+ INVOKESPECIAL net/minecraft/block/BlockPressurePlateWeighted.<init> (Ljava/lang/String;Lnet/minecraft/block/material/Material;I)V
+ LDC 0.5
+ INVOKEVIRTUAL net/minecraft/block/BlockPressurePlateWeighted.setHardness (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypeWood : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC "weightedPlate_heavy"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L158
+ LINENUMBER 397 L158
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ SIPUSH 149
+ LDC "unpowered_comparator"
+ NEW net/minecraft/block/BlockRedstoneComparator
+ DUP
+ ICONST_0
+ INVOKESPECIAL net/minecraft/block/BlockRedstoneComparator.<init> (Z)V
+ FCONST_0
+ INVOKEVIRTUAL net/minecraft/block/BlockRedstoneComparator.setHardness (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypeWood : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC "comparator"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/block/Block.disableStats ()Lnet/minecraft/block/Block;
+ LDC "comparator_off"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L159
+ LINENUMBER 398 L159
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ SIPUSH 150
+ LDC "powered_comparator"
+ NEW net/minecraft/block/BlockRedstoneComparator
+ DUP
+ ICONST_1
+ INVOKESPECIAL net/minecraft/block/BlockRedstoneComparator.<init> (Z)V
+ FCONST_0
+ INVOKEVIRTUAL net/minecraft/block/BlockRedstoneComparator.setHardness (F)Lnet/minecraft/block/Block;
+ LDC 0.625
+ INVOKEVIRTUAL net/minecraft/block/Block.setLightLevel (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypeWood : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC "comparator"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/block/Block.disableStats ()Lnet/minecraft/block/Block;
+ LDC "comparator_on"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L160
+ LINENUMBER 399 L160
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ SIPUSH 151
+ LDC "daylight_detector"
+ NEW net/minecraft/block/BlockDaylightDetector
+ DUP
+ INVOKESPECIAL net/minecraft/block/BlockDaylightDetector.<init> ()V
+ LDC 0.2
+ INVOKEVIRTUAL net/minecraft/block/BlockDaylightDetector.setHardness (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypeWood : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC "daylightDetector"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ LDC "daylight_detector"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L161
+ LINENUMBER 400 L161
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ SIPUSH 152
+ LDC "redstone_block"
+ NEW net/minecraft/block/BlockCompressedPowered
+ DUP
+ GETSTATIC net/minecraft/block/material/MapColor.tntColor : Lnet/minecraft/block/material/MapColor;
+ INVOKESPECIAL net/minecraft/block/BlockCompressedPowered.<init> (Lnet/minecraft/block/material/MapColor;)V
+ LDC 5.0
+ INVOKEVIRTUAL net/minecraft/block/BlockCompressedPowered.setHardness (F)Lnet/minecraft/block/Block;
+ LDC 10.0
+ INVOKEVIRTUAL net/minecraft/block/Block.setResistance (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypeMetal : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC "blockRedstone"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ LDC "redstone_block"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L162
+ LINENUMBER 401 L162
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ SIPUSH 153
+ LDC "quartz_ore"
+ NEW net/minecraft/block/BlockOre
+ DUP
+ INVOKESPECIAL net/minecraft/block/BlockOre.<init> ()V
+ LDC 3.0
+ INVOKEVIRTUAL net/minecraft/block/BlockOre.setHardness (F)Lnet/minecraft/block/Block;
+ LDC 5.0
+ INVOKEVIRTUAL net/minecraft/block/Block.setResistance (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypePiston : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC "netherquartz"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ LDC "quartz_ore"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L163
+ LINENUMBER 402 L163
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ SIPUSH 154
+ LDC "hopper"
+ NEW net/minecraft/block/BlockHopper
+ DUP
+ INVOKESPECIAL net/minecraft/block/BlockHopper.<init> ()V
+ LDC 3.0
+ INVOKEVIRTUAL net/minecraft/block/BlockHopper.setHardness (F)Lnet/minecraft/block/Block;
+ LDC 8.0
+ INVOKEVIRTUAL net/minecraft/block/Block.setResistance (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypeWood : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC "hopper"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ LDC "hopper"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L164
+ LINENUMBER 403 L164
+ NEW net/minecraft/block/BlockQuartz
+ DUP
+ INVOKESPECIAL net/minecraft/block/BlockQuartz.<init> ()V
+ GETSTATIC net/minecraft/block/Block.soundTypePiston : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/BlockQuartz.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC 0.8
+ INVOKEVIRTUAL net/minecraft/block/Block.setHardness (F)Lnet/minecraft/block/Block;
+ LDC "quartzBlock"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ LDC "quartz_block"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ ASTORE 9
+ L165
+ LINENUMBER 404 L165
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ SIPUSH 155
+ LDC "quartz_block"
+ ALOAD 9
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L166
+ LINENUMBER 405 L166
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ SIPUSH 156
+ LDC "quartz_stairs"
+ NEW net/minecraft/block/BlockStairs
+ DUP
+ ALOAD 9
+ ICONST_0
+ INVOKESPECIAL net/minecraft/block/BlockStairs.<init> (Lnet/minecraft/block/Block;I)V
+ LDC "stairsQuartz"
+ INVOKEVIRTUAL net/minecraft/block/BlockStairs.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L167
+ LINENUMBER 406 L167
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ SIPUSH 157
+ LDC "activator_rail"
+ NEW net/minecraft/block/BlockRailPowered
+ DUP
+ INVOKESPECIAL net/minecraft/block/BlockRailPowered.<init> ()V
+ LDC 0.7
+ INVOKEVIRTUAL net/minecraft/block/BlockRailPowered.setHardness (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypeMetal : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC "activatorRail"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ LDC "rail_activator"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L168
+ LINENUMBER 407 L168
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ SIPUSH 158
+ LDC "dropper"
+ NEW net/minecraft/block/BlockDropper
+ DUP
+ INVOKESPECIAL net/minecraft/block/BlockDropper.<init> ()V
+ LDC 3.5
+ INVOKEVIRTUAL net/minecraft/block/BlockDropper.setHardness (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypePiston : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC "dropper"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ LDC "dropper"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L169
+ LINENUMBER 408 L169
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ SIPUSH 159
+ LDC "stained_hardened_clay"
+ NEW net/minecraft/block/BlockColored
+ DUP
+ GETSTATIC net/minecraft/block/material/Material.rock : Lnet/minecraft/block/material/Material;
+ INVOKESPECIAL net/minecraft/block/BlockColored.<init> (Lnet/minecraft/block/material/Material;)V
+ LDC 1.25
+ INVOKEVIRTUAL net/minecraft/block/BlockColored.setHardness (F)Lnet/minecraft/block/Block;
+ LDC 7.0
+ INVOKEVIRTUAL net/minecraft/block/Block.setResistance (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypePiston : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC "clayHardenedStained"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ LDC "hardened_clay_stained"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L170
+ LINENUMBER 409 L170
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ SIPUSH 160
+ LDC "stained_glass_pane"
+ NEW net/minecraft/block/BlockStainedGlassPane
+ DUP
+ INVOKESPECIAL net/minecraft/block/BlockStainedGlassPane.<init> ()V
+ LDC 0.3
+ INVOKEVIRTUAL net/minecraft/block/BlockStainedGlassPane.setHardness (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypeGlass : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC "thinStainedGlass"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ LDC "glass"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L171
+ LINENUMBER 410 L171
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ SIPUSH 161
+ LDC "leaves2"
+ NEW net/minecraft/block/BlockNewLeaf
+ DUP
+ INVOKESPECIAL net/minecraft/block/BlockNewLeaf.<init> ()V
+ LDC "leaves"
+ INVOKEVIRTUAL net/minecraft/block/BlockNewLeaf.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ LDC "leaves"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L172
+ LINENUMBER 411 L172
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ SIPUSH 162
+ LDC "log2"
+ NEW net/minecraft/block/BlockNewLog
+ DUP
+ INVOKESPECIAL net/minecraft/block/BlockNewLog.<init> ()V
+ LDC "log"
+ INVOKEVIRTUAL net/minecraft/block/BlockNewLog.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ LDC "log"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L173
+ LINENUMBER 412 L173
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ SIPUSH 163
+ LDC "acacia_stairs"
+ NEW net/minecraft/block/BlockStairs
+ DUP
+ ALOAD 1
+ ICONST_4
+ INVOKESPECIAL net/minecraft/block/BlockStairs.<init> (Lnet/minecraft/block/Block;I)V
+ LDC "stairsWoodAcacia"
+ INVOKEVIRTUAL net/minecraft/block/BlockStairs.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L174
+ LINENUMBER 413 L174
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ SIPUSH 164
+ LDC "dark_oak_stairs"
+ NEW net/minecraft/block/BlockStairs
+ DUP
+ ALOAD 1
+ ICONST_5
+ INVOKESPECIAL net/minecraft/block/BlockStairs.<init> (Lnet/minecraft/block/Block;I)V
+ LDC "stairsWoodDarkOak"
+ INVOKEVIRTUAL net/minecraft/block/BlockStairs.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L175
+ LINENUMBER 414 L175
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ SIPUSH 170
+ LDC "hay_block"
+ NEW net/minecraft/block/BlockHay
+ DUP
+ INVOKESPECIAL net/minecraft/block/BlockHay.<init> ()V
+ LDC 0.5
+ INVOKEVIRTUAL net/minecraft/block/BlockHay.setHardness (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypeGrass : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC "hayBlock"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/creativetab/CreativeTabs.tabBlock : Lnet/minecraft/creativetab/CreativeTabs;
+ INVOKEVIRTUAL net/minecraft/block/Block.setCreativeTab (Lnet/minecraft/creativetab/CreativeTabs;)Lnet/minecraft/block/Block;
+ LDC "hay_block"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L176
+ LINENUMBER 415 L176
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ SIPUSH 171
+ LDC "carpet"
+ NEW net/minecraft/block/BlockCarpet
+ DUP
+ INVOKESPECIAL net/minecraft/block/BlockCarpet.<init> ()V
+ LDC 0.1
+ INVOKEVIRTUAL net/minecraft/block/BlockCarpet.setHardness (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypeCloth : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC "woolCarpet"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ ICONST_0
+ INVOKEVIRTUAL net/minecraft/block/Block.setLightOpacity (I)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L177
+ LINENUMBER 416 L177
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ SIPUSH 172
+ LDC "hardened_clay"
+ NEW net/minecraft/block/BlockHardenedClay
+ DUP
+ INVOKESPECIAL net/minecraft/block/BlockHardenedClay.<init> ()V
+ LDC 1.25
+ INVOKEVIRTUAL net/minecraft/block/BlockHardenedClay.setHardness (F)Lnet/minecraft/block/Block;
+ LDC 7.0
+ INVOKEVIRTUAL net/minecraft/block/Block.setResistance (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypePiston : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC "clayHardened"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ LDC "hardened_clay"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L178
+ LINENUMBER 417 L178
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ SIPUSH 173
+ LDC "coal_block"
+ NEW net/minecraft/block/Block
+ DUP
+ GETSTATIC net/minecraft/block/material/Material.rock : Lnet/minecraft/block/material/Material;
+ INVOKESPECIAL net/minecraft/block/Block.<init> (Lnet/minecraft/block/material/Material;)V
+ LDC 5.0
+ INVOKEVIRTUAL net/minecraft/block/Block.setHardness (F)Lnet/minecraft/block/Block;
+ LDC 10.0
+ INVOKEVIRTUAL net/minecraft/block/Block.setResistance (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypePiston : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC "blockCoal"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/creativetab/CreativeTabs.tabBlock : Lnet/minecraft/creativetab/CreativeTabs;
+ INVOKEVIRTUAL net/minecraft/block/Block.setCreativeTab (Lnet/minecraft/creativetab/CreativeTabs;)Lnet/minecraft/block/Block;
+ LDC "coal_block"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L179
+ LINENUMBER 418 L179
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ SIPUSH 174
+ LDC "packed_ice"
+ NEW net/minecraft/block/BlockPackedIce
+ DUP
+ INVOKESPECIAL net/minecraft/block/BlockPackedIce.<init> ()V
+ LDC 0.5
+ INVOKEVIRTUAL net/minecraft/block/BlockPackedIce.setHardness (F)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/block/Block.soundTypeGlass : Lnet/minecraft/block/Block$SoundType;
+ INVOKEVIRTUAL net/minecraft/block/Block.setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ LDC "icePacked"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ LDC "ice_packed"
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockTextureName (Ljava/lang/String;)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L180
+ LINENUMBER 419 L180
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ SIPUSH 175
+ LDC "double_plant"
+ NEW net/minecraft/block/BlockDoublePlant
+ DUP
+ INVOKESPECIAL net/minecraft/block/BlockDoublePlant.<init> ()V
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.addObject (ILjava/lang/String;Ljava/lang/Object;)V
+ L181
+ LINENUMBER 420 L181
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.iterator ()Ljava/util/Iterator;
+ ASTORE 10
+ L182
+ LINENUMBER 422 L182
+ FRAME FULL [net/minecraft/block/Block net/minecraft/block/Block net/minecraft/block/Block net/minecraft/block/Block net/minecraft/block/Block net/minecraft/block/Block net/minecraft/block/Block net/minecraft/block/Block net/minecraft/block/Block net/minecraft/block/Block java/util/Iterator] []
+ ALOAD 10
+ INVOKEINTERFACE java/util/Iterator.hasNext ()Z
+ IFEQ L183
+ L184
+ LINENUMBER 424 L184
+ ALOAD 10
+ INVOKEINTERFACE java/util/Iterator.next ()Ljava/lang/Object;
+ CHECKCAST net/minecraft/block/Block
+ ASTORE 11
+ L185
+ LINENUMBER 426 L185
+ ALOAD 11
+ GETFIELD net/minecraft/block/Block.blockMaterial : Lnet/minecraft/block/material/Material;
+ GETSTATIC net/minecraft/block/material/Material.air : Lnet/minecraft/block/material/Material;
+ IF_ACMPNE L186
+ L187
+ LINENUMBER 428 L187
+ ALOAD 11
+ ICONST_0
+ PUTFIELD net/minecraft/block/Block.useNeighborBrightness : Z
+ GOTO L188
+ L186
+ LINENUMBER 432 L186
+ FRAME FULL [net/minecraft/block/Block net/minecraft/block/Block net/minecraft/block/Block net/minecraft/block/Block net/minecraft/block/Block net/minecraft/block/Block net/minecraft/block/Block net/minecraft/block/Block net/minecraft/block/Block net/minecraft/block/Block java/util/Iterator net/minecraft/block/Block] []
+ ICONST_0
+ ISTORE 12
+ L189
+ LINENUMBER 433 L189
+ ALOAD 11
+ INVOKEVIRTUAL net/minecraft/block/Block.getRenderType ()I
+ BIPUSH 10
+ IF_ICMPNE L190
+ ICONST_1
+ GOTO L191
+ L190
+ FRAME FULL [net/minecraft/block/Block net/minecraft/block/Block net/minecraft/block/Block net/minecraft/block/Block net/minecraft/block/Block net/minecraft/block/Block net/minecraft/block/Block net/minecraft/block/Block net/minecraft/block/Block net/minecraft/block/Block java/util/Iterator net/minecraft/block/Block I] []
+ ICONST_0
+ L191
+ FRAME FULL [net/minecraft/block/Block net/minecraft/block/Block net/minecraft/block/Block net/minecraft/block/Block net/minecraft/block/Block net/minecraft/block/Block net/minecraft/block/Block net/minecraft/block/Block net/minecraft/block/Block net/minecraft/block/Block java/util/Iterator net/minecraft/block/Block I] [I]
+ ISTORE 13
+ L192
+ LINENUMBER 434 L192
+ ALOAD 11
+ INSTANCEOF net/minecraft/block/BlockSlab
+ ISTORE 14
+ L193
+ LINENUMBER 435 L193
+ ALOAD 11
+ ALOAD 4
+ IF_ACMPNE L194
+ ICONST_1
+ GOTO L195
+ L194
+ FRAME FULL [net/minecraft/block/Block net/minecraft/block/Block net/minecraft/block/Block net/minecraft/block/Block net/minecraft/block/Block net/minecraft/block/Block net/minecraft/block/Block net/minecraft/block/Block net/minecraft/block/Block net/minecraft/block/Block java/util/Iterator net/minecraft/block/Block I I I] []
+ ICONST_0
+ L195
+ FRAME FULL [net/minecraft/block/Block net/minecraft/block/Block net/minecraft/block/Block net/minecraft/block/Block net/minecraft/block/Block net/minecraft/block/Block net/minecraft/block/Block net/minecraft/block/Block net/minecraft/block/Block net/minecraft/block/Block java/util/Iterator net/minecraft/block/Block I I I] [I]
+ ISTORE 15
+ L196
+ LINENUMBER 436 L196
+ ALOAD 11
+ GETFIELD net/minecraft/block/Block.canBlockGrass : Z
+ ISTORE 16
+ L197
+ LINENUMBER 437 L197
+ ALOAD 11
+ GETFIELD net/minecraft/block/Block.lightOpacity : I
+ IFNE L198
+ ICONST_1
+ GOTO L199
+ L198
+ FRAME FULL [net/minecraft/block/Block net/minecraft/block/Block net/minecraft/block/Block net/minecraft/block/Block net/minecraft/block/Block net/minecraft/block/Block net/minecraft/block/Block net/minecraft/block/Block net/minecraft/block/Block net/minecraft/block/Block java/util/Iterator net/minecraft/block/Block I I I I I] []
+ ICONST_0
+ L199
+ FRAME FULL [net/minecraft/block/Block net/minecraft/block/Block net/minecraft/block/Block net/minecraft/block/Block net/minecraft/block/Block net/minecraft/block/Block net/minecraft/block/Block net/minecraft/block/Block net/minecraft/block/Block net/minecraft/block/Block java/util/Iterator net/minecraft/block/Block I I I I I] [I]
+ ISTORE 17
+ L200
+ LINENUMBER 439 L200
+ ILOAD 13
+ IFNE L201
+ ILOAD 14
+ IFNE L201
+ ILOAD 15
+ IFNE L201
+ ILOAD 16
+ IFNE L201
+ ILOAD 17
+ IFEQ L202
+ L201
+ LINENUMBER 441 L201
+ FRAME FULL [net/minecraft/block/Block net/minecraft/block/Block net/minecraft/block/Block net/minecraft/block/Block net/minecraft/block/Block net/minecraft/block/Block net/minecraft/block/Block net/minecraft/block/Block net/minecraft/block/Block net/minecraft/block/Block java/util/Iterator net/minecraft/block/Block I I I I I I] []
+ ICONST_1
+ ISTORE 12
+ L202
+ LINENUMBER 444 L202
+ FRAME FULL [net/minecraft/block/Block net/minecraft/block/Block net/minecraft/block/Block net/minecraft/block/Block net/minecraft/block/Block net/minecraft/block/Block net/minecraft/block/Block net/minecraft/block/Block net/minecraft/block/Block net/minecraft/block/Block java/util/Iterator net/minecraft/block/Block I I I I I I] []
+ ALOAD 11
+ ILOAD 12
+ PUTFIELD net/minecraft/block/Block.useNeighborBrightness : Z
+ L188
+ LINENUMBER 446 L188
+ FRAME FULL [net/minecraft/block/Block net/minecraft/block/Block net/minecraft/block/Block net/minecraft/block/Block net/minecraft/block/Block net/minecraft/block/Block net/minecraft/block/Block net/minecraft/block/Block net/minecraft/block/Block net/minecraft/block/Block java/util/Iterator net/minecraft/block/Block] []
+ GOTO L182
+ L183
+ LINENUMBER 447 L183
+ FRAME FULL [net/minecraft/block/Block net/minecraft/block/Block net/minecraft/block/Block net/minecraft/block/Block net/minecraft/block/Block net/minecraft/block/Block net/minecraft/block/Block net/minecraft/block/Block net/minecraft/block/Block net/minecraft/block/Block java/util/Iterator] []
+ RETURN
+ L203
+ LOCALVARIABLE flag Z L189 L188 12
+ LOCALVARIABLE flag1 Z L192 L188 13
+ LOCALVARIABLE flag2 Z L193 L188 14
+ LOCALVARIABLE flag3 Z L196 L188 15
+ LOCALVARIABLE flag4 Z L197 L188 16
+ LOCALVARIABLE flag5 Z L200 L188 17
+ LOCALVARIABLE block10 Lnet/minecraft/block/Block; L185 L188 11
+ LOCALVARIABLE block Lnet/minecraft/block/Block; L5 L203 0
+ LOCALVARIABLE block1 Lnet/minecraft/block/Block; L7 L203 1
+ LOCALVARIABLE block2 Lnet/minecraft/block/Block; L27 L203 2
+ LOCALVARIABLE block3 Lnet/minecraft/block/Block; L49 L203 3
+ LOCALVARIABLE block4 Lnet/minecraft/block/Block; L65 L203 4
+ LOCALVARIABLE block5 Lnet/minecraft/block/Block; L92 L203 5
+ LOCALVARIABLE block6 Lnet/minecraft/block/Block; L105 L203 6
+ LOCALVARIABLE block7 Lnet/minecraft/block/Block; L111 L203 7
+ LOCALVARIABLE block8 Lnet/minecraft/block/Block; L121 L203 8
+ LOCALVARIABLE block9 Lnet/minecraft/block/Block; L165 L203 9
+ LOCALVARIABLE iterator Ljava/util/Iterator; L182 L203 10
+ MAXSTACK = 9
+ MAXLOCALS = 18
+
+ // access flags 0x4
+ protected <init>(Lnet/minecraft/block/material/Material;)V
+ L0
+ LINENUMBER 450 L0
+ ALOAD 0
+ INVOKESPECIAL java/lang/Object.<init> ()V
+ L1
+ LINENUMBER 130 L1
+ ALOAD 0
+ ICONST_1
+ PUTFIELD net/minecraft/block/Block.blockConstructorCalled : Z
+ L2
+ LINENUMBER 132 L2
+ ALOAD 0
+ ICONST_1
+ PUTFIELD net/minecraft/block/Block.enableStats : Z
+ L3
+ LINENUMBER 158 L3
+ ALOAD 0
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ CHECKCAST cpw/mods/fml/common/registry/FMLControlledNamespacedRegistry
+ ALOAD 0
+ LDC Lnet/minecraft/block/Block;.class
+ L4
+ LINENUMBER 159 L4
+ INVOKEVIRTUAL cpw/mods/fml/common/registry/FMLControlledNamespacedRegistry.getDelegate (Ljava/lang/Object;Ljava/lang/Class;)Lcpw/mods/fml/common/registry/RegistryDelegate;
+ PUTFIELD net/minecraft/block/Block.delegate : Lcpw/mods/fml/common/registry/RegistryDelegate;
+ L5
+ LINENUMBER 1486 L5
+ ALOAD 0
+ NEW java/lang/ThreadLocal
+ DUP
+ INVOKESPECIAL java/lang/ThreadLocal.<init> ()V
+ PUTFIELD net/minecraft/block/Block.harvesters : Ljava/lang/ThreadLocal;
+ L6
+ LINENUMBER 1487 L6
+ ALOAD 0
+ NEW java/lang/ThreadLocal
+ DUP
+ INVOKESPECIAL java/lang/ThreadLocal.<init> ()V
+ PUTFIELD net/minecraft/block/Block.silk_check_meta : Ljava/lang/ThreadLocal;
+ L7
+ LINENUMBER 1747 L7
+ ALOAD 0
+ ALOAD 0
+ INSTANCEOF net/minecraft/block/ITileEntityProvider
+ PUTFIELD net/minecraft/block/Block.isTileProvider : Z
+ L8
+ LINENUMBER 2489 L8
+ ALOAD 0
+ BIPUSH 16
+ ANEWARRAY java/lang/String
+ PUTFIELD net/minecraft/block/Block.harvestTool : [Ljava/lang/String;
+ L9
+ LINENUMBER 2490 L9
+ ALOAD 0
+ BIPUSH 16
+ NEWARRAY T_INT
+ DUP
+ ICONST_0
+ ICONST_M1
+ IASTORE
+ DUP
+ ICONST_1
+ ICONST_M1
+ IASTORE
+ DUP
+ ICONST_2
+ ICONST_M1
+ IASTORE
+ DUP
+ ICONST_3
+ ICONST_M1
+ IASTORE
+ DUP
+ ICONST_4
+ ICONST_M1
+ IASTORE
+ DUP
+ ICONST_5
+ ICONST_M1
+ IASTORE
+ DUP
+ BIPUSH 6
+ ICONST_M1
+ IASTORE
+ DUP
+ BIPUSH 7
+ ICONST_M1
+ IASTORE
+ DUP
+ BIPUSH 8
+ ICONST_M1
+ IASTORE
+ DUP
+ BIPUSH 9
+ ICONST_M1
+ IASTORE
+ DUP
+ BIPUSH 10
+ ICONST_M1
+ IASTORE
+ DUP
+ BIPUSH 11
+ ICONST_M1
+ IASTORE
+ DUP
+ BIPUSH 12
+ ICONST_M1
+ IASTORE
+ DUP
+ BIPUSH 13
+ ICONST_M1
+ IASTORE
+ DUP
+ BIPUSH 14
+ ICONST_M1
+ IASTORE
+ DUP
+ BIPUSH 15
+ ICONST_M1
+ IASTORE
+ PUTFIELD net/minecraft/block/Block.harvestLevel : [I
+ L10
+ LINENUMBER 2570 L10
+ ALOAD 0
+ NEW net/minecraft/block/Block$4
+ DUP
+ ALOAD 0
+ INVOKESPECIAL net/minecraft/block/Block$4.<init> (Lnet/minecraft/block/Block;)V
+ PUTFIELD net/minecraft/block/Block.captureDrops : Ljava/lang/ThreadLocal;
+ L11
+ LINENUMBER 2574 L11
+ ALOAD 0
+ NEW net/minecraft/block/Block$5
+ DUP
+ ALOAD 0
+ INVOKESPECIAL net/minecraft/block/Block$5.<init> (Lnet/minecraft/block/Block;)V
+ PUTFIELD net/minecraft/block/Block.capturedDrops : Ljava/lang/ThreadLocal;
+ L12
+ LINENUMBER 451 L12
+ ALOAD 0
+ GETSTATIC net/minecraft/block/Block.soundTypeStone : Lnet/minecraft/block/Block$SoundType;
+ PUTFIELD net/minecraft/block/Block.stepSound : Lnet/minecraft/block/Block$SoundType;
+ L13
+ LINENUMBER 452 L13
+ ALOAD 0
+ FCONST_1
+ PUTFIELD net/minecraft/block/Block.blockParticleGravity : F
+ L14
+ LINENUMBER 453 L14
+ ALOAD 0
+ LDC 0.6
+ PUTFIELD net/minecraft/block/Block.slipperiness : F
+ L15
+ LINENUMBER 454 L15
+ ALOAD 0
+ ALOAD 1
+ PUTFIELD net/minecraft/block/Block.blockMaterial : Lnet/minecraft/block/material/Material;
+ L16
+ LINENUMBER 455 L16
+ ALOAD 0
+ FCONST_0
+ FCONST_0
+ FCONST_0
+ FCONST_1
+ FCONST_1
+ FCONST_1
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockBounds (FFFFFF)V
+ L17
+ LINENUMBER 456 L17
+ ALOAD 0
+ ALOAD 0
+ INVOKEVIRTUAL net/minecraft/block/Block.isOpaqueCube ()Z
+ PUTFIELD net/minecraft/block/Block.opaque : Z
+ L18
+ LINENUMBER 457 L18
+ ALOAD 0
+ ALOAD 0
+ INVOKEVIRTUAL net/minecraft/block/Block.isOpaqueCube ()Z
+ IFEQ L19
+ SIPUSH 255
+ GOTO L20
+ L19
+ FRAME FULL [net/minecraft/block/Block net/minecraft/block/material/Material] [net/minecraft/block/Block]
+ ICONST_0
+ L20
+ FRAME FULL [net/minecraft/block/Block net/minecraft/block/material/Material] [net/minecraft/block/Block I]
+ PUTFIELD net/minecraft/block/Block.lightOpacity : I
+ L21
+ LINENUMBER 458 L21
+ ALOAD 0
+ ALOAD 1
+ INVOKEVIRTUAL net/minecraft/block/material/Material.getCanBlockGrass ()Z
+ IFNE L22
+ ICONST_1
+ GOTO L23
+ L22
+ FRAME FULL [net/minecraft/block/Block net/minecraft/block/material/Material] [net/minecraft/block/Block]
+ ICONST_0
+ L23
+ FRAME FULL [net/minecraft/block/Block net/minecraft/block/material/Material] [net/minecraft/block/Block I]
+ PUTFIELD net/minecraft/block/Block.canBlockGrass : Z
+ L24
+ LINENUMBER 459 L24
+ RETURN
+ L25
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L25 0
+ LOCALVARIABLE p_i45394_1_ Lnet/minecraft/block/material/Material; L0 L25 1
+ MAXSTACK = 7
+ MAXLOCALS = 2
+
+ // access flags 0x1
+ public setStepSound(Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block;
+ L0
+ LINENUMBER 466 L0
+ ALOAD 0
+ ALOAD 1
+ PUTFIELD net/minecraft/block/Block.stepSound : Lnet/minecraft/block/Block$SoundType;
+ L1
+ LINENUMBER 467 L1
+ ALOAD 0
+ ARETURN
+ L2
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L2 0
+ LOCALVARIABLE p_149672_1_ Lnet/minecraft/block/Block$SoundType; L0 L2 1
+ MAXSTACK = 2
+ MAXLOCALS = 2
+
+ // access flags 0x1
+ public setLightOpacity(I)Lnet/minecraft/block/Block;
+ L0
+ LINENUMBER 475 L0
+ ALOAD 0
+ ILOAD 1
+ PUTFIELD net/minecraft/block/Block.lightOpacity : I
+ L1
+ LINENUMBER 476 L1
+ ALOAD 0
+ ARETURN
+ L2
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L2 0
+ LOCALVARIABLE p_149713_1_ I L0 L2 1
+ MAXSTACK = 2
+ MAXLOCALS = 2
+
+ // access flags 0x1
+ public setLightLevel(F)Lnet/minecraft/block/Block;
+ L0
+ LINENUMBER 485 L0
+ ALOAD 0
+ LDC 15.0
+ FLOAD 1
+ FMUL
+ F2I
+ PUTFIELD net/minecraft/block/Block.lightValue : I
+ L1
+ LINENUMBER 486 L1
+ ALOAD 0
+ ARETURN
+ L2
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L2 0
+ LOCALVARIABLE p_149715_1_ F L0 L2 1
+ MAXSTACK = 3
+ MAXLOCALS = 2
+
+ // access flags 0x1
+ public setResistance(F)Lnet/minecraft/block/Block;
+ L0
+ LINENUMBER 494 L0
+ ALOAD 0
+ FLOAD 1
+ LDC 3.0
+ FMUL
+ PUTFIELD net/minecraft/block/Block.blockResistance : F
+ L1
+ LINENUMBER 495 L1
+ ALOAD 0
+ ARETURN
+ L2
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L2 0
+ LOCALVARIABLE p_149752_1_ F L0 L2 1
+ MAXSTACK = 3
+ MAXLOCALS = 2
+
+ // access flags 0x1
+ public isBlockNormalCube()Z
+ @Lcpw/mods/fml/relauncher/SideOnly;(value=Lcpw/mods/fml/relauncher/Side;.CLIENT)
+ L0
+ LINENUMBER 504 L0
+ ALOAD 0
+ GETFIELD net/minecraft/block/Block.blockMaterial : Lnet/minecraft/block/material/Material;
+ INVOKEVIRTUAL net/minecraft/block/material/Material.blocksMovement ()Z
+ IFEQ L1
+ ALOAD 0
+ INVOKEVIRTUAL net/minecraft/block/Block.renderAsNormalBlock ()Z
+ IFEQ L1
+ ICONST_1
+ GOTO L2
+ L1
+ FRAME FULL [net/minecraft/block/Block] []
+ ICONST_0
+ L2
+ FRAME FULL [net/minecraft/block/Block] [I]
+ IRETURN
+ L3
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L3 0
+ MAXSTACK = 1
+ MAXLOCALS = 1
+
+ // access flags 0x1
+ public isNormalCube()Z
+ L0
+ LINENUMBER 509 L0
+ ALOAD 0
+ GETFIELD net/minecraft/block/Block.blockMaterial : Lnet/minecraft/block/material/Material;
+ INVOKEVIRTUAL net/minecraft/block/material/Material.isOpaque ()Z
+ IFEQ L1
+ ALOAD 0
+ INVOKEVIRTUAL net/minecraft/block/Block.renderAsNormalBlock ()Z
+ IFEQ L1
+ ALOAD 0
+ INVOKEVIRTUAL net/minecraft/block/Block.canProvidePower ()Z
+ IFNE L1
+ ICONST_1
+ GOTO L2
+ L1
+ FRAME FULL [net/minecraft/block/Block] []
+ ICONST_0
+ L2
+ FRAME FULL [net/minecraft/block/Block] [I]
+ IRETURN
+ L3
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L3 0
+ MAXSTACK = 1
+ MAXLOCALS = 1
+
+ // access flags 0x1
+ public renderAsNormalBlock()Z
+ L0
+ LINENUMBER 517 L0
+ ICONST_1
+ IRETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L1 0
+ MAXSTACK = 1
+ MAXLOCALS = 1
+
+ // access flags 0x1
+ public getBlocksMovement(Lnet/minecraft/world/IBlockAccess;III)Z
+ L0
+ LINENUMBER 522 L0
+ ALOAD 0
+ GETFIELD net/minecraft/block/Block.blockMaterial : Lnet/minecraft/block/material/Material;
+ INVOKEVIRTUAL net/minecraft/block/material/Material.blocksMovement ()Z
+ IFNE L1
+ ICONST_1
+ GOTO L2
+ L1
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/IBlockAccess I I I] []
+ ICONST_0
+ L2
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/IBlockAccess I I I] [I]
+ IRETURN
+ L3
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L3 0
+ LOCALVARIABLE p_149655_1_ Lnet/minecraft/world/IBlockAccess; L0 L3 1
+ LOCALVARIABLE p_149655_2_ I L0 L3 2
+ LOCALVARIABLE p_149655_3_ I L0 L3 3
+ LOCALVARIABLE p_149655_4_ I L0 L3 4
+ MAXSTACK = 1
+ MAXLOCALS = 5
+
+ // access flags 0x1
+ public getRenderType()I
+ L0
+ LINENUMBER 530 L0
+ ICONST_0
+ IRETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L1 0
+ MAXSTACK = 1
+ MAXLOCALS = 1
+
+ // access flags 0x1
+ public setHardness(F)Lnet/minecraft/block/Block;
+ L0
+ LINENUMBER 538 L0
+ ALOAD 0
+ FLOAD 1
+ PUTFIELD net/minecraft/block/Block.blockHardness : F
+ L1
+ LINENUMBER 540 L1
+ ALOAD 0
+ GETFIELD net/minecraft/block/Block.blockResistance : F
+ FLOAD 1
+ LDC 5.0
+ FMUL
+ FCMPG
+ IFGE L2
+ L3
+ LINENUMBER 542 L3
+ ALOAD 0
+ FLOAD 1
+ LDC 5.0
+ FMUL
+ PUTFIELD net/minecraft/block/Block.blockResistance : F
+ L2
+ LINENUMBER 545 L2
+ FRAME FULL [net/minecraft/block/Block F] []
+ ALOAD 0
+ ARETURN
+ L4
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L4 0
+ LOCALVARIABLE p_149711_1_ F L0 L4 1
+ MAXSTACK = 3
+ MAXLOCALS = 2
+
+ // access flags 0x1
+ public setBlockUnbreakable()Lnet/minecraft/block/Block;
+ L0
+ LINENUMBER 553 L0
+ ALOAD 0
+ LDC -1.0
+ INVOKEVIRTUAL net/minecraft/block/Block.setHardness (F)Lnet/minecraft/block/Block;
+ POP
+ L1
+ LINENUMBER 554 L1
+ ALOAD 0
+ ARETURN
+ L2
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L2 0
+ MAXSTACK = 2
+ MAXLOCALS = 1
+
+ // access flags 0x1
+ public getBlockHardness(Lnet/minecraft/world/World;III)F
+ L0
+ LINENUMBER 562 L0
+ ALOAD 0
+ GETFIELD net/minecraft/block/Block.blockHardness : F
+ FRETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L1 0
+ LOCALVARIABLE p_149712_1_ Lnet/minecraft/world/World; L0 L1 1
+ LOCALVARIABLE p_149712_2_ I L0 L1 2
+ LOCALVARIABLE p_149712_3_ I L0 L1 3
+ LOCALVARIABLE p_149712_4_ I L0 L1 4
+ MAXSTACK = 1
+ MAXLOCALS = 5
+
+ // access flags 0x1
+ public setTickRandomly(Z)Lnet/minecraft/block/Block;
+ L0
+ LINENUMBER 570 L0
+ ALOAD 0
+ ILOAD 1
+ PUTFIELD net/minecraft/block/Block.needsRandomTick : Z
+ L1
+ LINENUMBER 571 L1
+ ALOAD 0
+ ARETURN
+ L2
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L2 0
+ LOCALVARIABLE p_149675_1_ Z L0 L2 1
+ MAXSTACK = 2
+ MAXLOCALS = 2
+
+ // access flags 0x1
+ public getTickRandomly()Z
+ L0
+ LINENUMBER 580 L0
+ ALOAD 0
+ GETFIELD net/minecraft/block/Block.needsRandomTick : Z
+ IRETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L1 0
+ MAXSTACK = 1
+ MAXLOCALS = 1
+
+ // DEPRECATED
+ // access flags 0x20001
+ public hasTileEntity()Z
+ @Ljava/lang/Deprecated;()
+ L0
+ LINENUMBER 586 L0
+ ALOAD 0
+ ICONST_0
+ INVOKEVIRTUAL net/minecraft/block/Block.hasTileEntity (I)Z
+ IRETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L1 0
+ MAXSTACK = 2
+ MAXLOCALS = 1
+
+ // access flags 0x11
+ public final setBlockBounds(FFFFFF)V
+ L0
+ LINENUMBER 594 L0
+ ALOAD 0
+ FLOAD 1
+ F2D
+ PUTFIELD net/minecraft/block/Block.minX : D
+ L1
+ LINENUMBER 595 L1
+ ALOAD 0
+ FLOAD 2
+ F2D
+ PUTFIELD net/minecraft/block/Block.minY : D
+ L2
+ LINENUMBER 596 L2
+ ALOAD 0
+ FLOAD 3
+ F2D
+ PUTFIELD net/minecraft/block/Block.minZ : D
+ L3
+ LINENUMBER 597 L3
+ ALOAD 0
+ FLOAD 4
+ F2D
+ PUTFIELD net/minecraft/block/Block.maxX : D
+ L4
+ LINENUMBER 598 L4
+ ALOAD 0
+ FLOAD 5
+ F2D
+ PUTFIELD net/minecraft/block/Block.maxY : D
+ L5
+ LINENUMBER 599 L5
+ ALOAD 0
+ FLOAD 6
+ F2D
+ PUTFIELD net/minecraft/block/Block.maxZ : D
+ L6
+ LINENUMBER 600 L6
+ RETURN
+ L7
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L7 0
+ LOCALVARIABLE p_149676_1_ F L0 L7 1
+ LOCALVARIABLE p_149676_2_ F L0 L7 2
+ LOCALVARIABLE p_149676_3_ F L0 L7 3
+ LOCALVARIABLE p_149676_4_ F L0 L7 4
+ LOCALVARIABLE p_149676_5_ F L0 L7 5
+ LOCALVARIABLE p_149676_6_ F L0 L7 6
+ MAXSTACK = 3
+ MAXLOCALS = 7
+
+ // access flags 0x1
+ public getMixedBrightnessForBlock(Lnet/minecraft/world/IBlockAccess;III)I
+ @Lcpw/mods/fml/relauncher/SideOnly;(value=Lcpw/mods/fml/relauncher/Side;.CLIENT)
+ L0
+ LINENUMBER 608 L0
+ ALOAD 1
+ ILOAD 2
+ ILOAD 3
+ ILOAD 4
+ INVOKEINTERFACE net/minecraft/world/IBlockAccess.getBlock (III)Lnet/minecraft/block/Block;
+ ASTORE 5
+ L1
+ LINENUMBER 609 L1
+ ALOAD 1
+ ILOAD 2
+ ILOAD 3
+ ILOAD 4
+ ALOAD 5
+ ALOAD 1
+ ILOAD 2
+ ILOAD 3
+ ILOAD 4
+ INVOKEVIRTUAL net/minecraft/block/Block.getLightValue (Lnet/minecraft/world/IBlockAccess;III)I
+ INVOKEINTERFACE net/minecraft/world/IBlockAccess.getLightBrightnessForSkyBlocks (IIII)I
+ ISTORE 6
+ L2
+ LINENUMBER 611 L2
+ ILOAD 6
+ IFNE L3
+ ALOAD 5
+ INSTANCEOF net/minecraft/block/BlockSlab
+ IFEQ L3
+ L4
+ LINENUMBER 613 L4
+ IINC 3 -1
+ L5
+ LINENUMBER 614 L5
+ ALOAD 1
+ ILOAD 2
+ ILOAD 3
+ ILOAD 4
+ INVOKEINTERFACE net/minecraft/world/IBlockAccess.getBlock (III)Lnet/minecraft/block/Block;
+ ASTORE 5
+ L6
+ LINENUMBER 615 L6
+ ALOAD 1
+ ILOAD 2
+ ILOAD 3
+ ILOAD 4
+ ALOAD 5
+ ALOAD 1
+ ILOAD 2
+ ILOAD 3
+ ILOAD 4
+ INVOKEVIRTUAL net/minecraft/block/Block.getLightValue (Lnet/minecraft/world/IBlockAccess;III)I
+ INVOKEINTERFACE net/minecraft/world/IBlockAccess.getLightBrightnessForSkyBlocks (IIII)I
+ IRETURN
+ L3
+ LINENUMBER 619 L3
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/IBlockAccess I I I net/minecraft/block/Block I] []
+ ILOAD 6
+ IRETURN
+ L7
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L7 0
+ LOCALVARIABLE p_149677_1_ Lnet/minecraft/world/IBlockAccess; L0 L7 1
+ LOCALVARIABLE p_149677_2_ I L0 L7 2
+ LOCALVARIABLE p_149677_3_ I L0 L7 3
+ LOCALVARIABLE p_149677_4_ I L0 L7 4
+ LOCALVARIABLE block Lnet/minecraft/block/Block; L1 L7 5
+ LOCALVARIABLE l I L2 L7 6
+ MAXSTACK = 9
+ MAXLOCALS = 7
+
+ // access flags 0x1
+ public shouldSideBeRendered(Lnet/minecraft/world/IBlockAccess;IIII)Z
+ @Lcpw/mods/fml/relauncher/SideOnly;(value=Lcpw/mods/fml/relauncher/Side;.CLIENT)
+ L0
+ LINENUMBER 630 L0
+ ILOAD 5
+ IFNE L1
+ ALOAD 0
+ GETFIELD net/minecraft/block/Block.minY : D
+ DCONST_0
+ DCMPL
+ IFLE L1
+ ICONST_1
+ GOTO L2
+ L1
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/IBlockAccess I I I I] []
+ ILOAD 5
+ ICONST_1
+ IF_ICMPNE L3
+ ALOAD 0
+ GETFIELD net/minecraft/block/Block.maxY : D
+ DCONST_1
+ DCMPG
+ IFGE L3
+ ICONST_1
+ GOTO L2
+ L3
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/IBlockAccess I I I I] []
+ ILOAD 5
+ ICONST_2
+ IF_ICMPNE L4
+ ALOAD 0
+ GETFIELD net/minecraft/block/Block.minZ : D
+ DCONST_0
+ DCMPL
+ IFLE L4
+ ICONST_1
+ GOTO L2
+ L4
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/IBlockAccess I I I I] []
+ ILOAD 5
+ ICONST_3
+ IF_ICMPNE L5
+ ALOAD 0
+ GETFIELD net/minecraft/block/Block.maxZ : D
+ DCONST_1
+ DCMPG
+ IFGE L5
+ ICONST_1
+ GOTO L2
+ L5
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/IBlockAccess I I I I] []
+ ILOAD 5
+ ICONST_4
+ IF_ICMPNE L6
+ ALOAD 0
+ GETFIELD net/minecraft/block/Block.minX : D
+ DCONST_0
+ DCMPL
+ IFLE L6
+ ICONST_1
+ GOTO L2
+ L6
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/IBlockAccess I I I I] []
+ ILOAD 5
+ ICONST_5
+ IF_ICMPNE L7
+ ALOAD 0
+ GETFIELD net/minecraft/block/Block.maxX : D
+ DCONST_1
+ DCMPG
+ IFGE L7
+ ICONST_1
+ GOTO L2
+ L7
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/IBlockAccess I I I I] []
+ ALOAD 1
+ ILOAD 2
+ ILOAD 3
+ ILOAD 4
+ INVOKEINTERFACE net/minecraft/world/IBlockAccess.getBlock (III)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/block/Block.isOpaqueCube ()Z
+ IFNE L8
+ ICONST_1
+ GOTO L2
+ L8
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/IBlockAccess I I I I] []
+ ICONST_0
+ L2
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/IBlockAccess I I I I] [I]
+ IRETURN
+ L9
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L9 0
+ LOCALVARIABLE p_149646_1_ Lnet/minecraft/world/IBlockAccess; L0 L9 1
+ LOCALVARIABLE p_149646_2_ I L0 L9 2
+ LOCALVARIABLE p_149646_3_ I L0 L9 3
+ LOCALVARIABLE p_149646_4_ I L0 L9 4
+ LOCALVARIABLE p_149646_5_ I L0 L9 5
+ MAXSTACK = 4
+ MAXLOCALS = 6
+
+ // access flags 0x1
+ public isBlockSolid(Lnet/minecraft/world/IBlockAccess;IIII)Z
+ L0
+ LINENUMBER 639 L0
+ ALOAD 1
+ ILOAD 2
+ ILOAD 3
+ ILOAD 4
+ INVOKEINTERFACE net/minecraft/world/IBlockAccess.getBlock (III)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/block/Block.getMaterial ()Lnet/minecraft/block/material/Material;
+ INVOKEVIRTUAL net/minecraft/block/material/Material.isSolid ()Z
+ IRETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L1 0
+ LOCALVARIABLE p_149747_1_ Lnet/minecraft/world/IBlockAccess; L0 L1 1
+ LOCALVARIABLE p_149747_2_ I L0 L1 2
+ LOCALVARIABLE p_149747_3_ I L0 L1 3
+ LOCALVARIABLE p_149747_4_ I L0 L1 4
+ LOCALVARIABLE p_149747_5_ I L0 L1 5
+ MAXSTACK = 4
+ MAXLOCALS = 6
+
+ // access flags 0x1
+ public getIcon(Lnet/minecraft/world/IBlockAccess;IIII)Lnet/minecraft/util/IIcon;
+ @Lcpw/mods/fml/relauncher/SideOnly;(value=Lcpw/mods/fml/relauncher/Side;.CLIENT)
+ L0
+ LINENUMBER 645 L0
+ ALOAD 0
+ ILOAD 5
+ ALOAD 1
+ ILOAD 2
+ ILOAD 3
+ ILOAD 4
+ INVOKEINTERFACE net/minecraft/world/IBlockAccess.getBlockMetadata (III)I
+ INVOKEVIRTUAL net/minecraft/block/Block.getIcon (II)Lnet/minecraft/util/IIcon;
+ ARETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L1 0
+ LOCALVARIABLE p_149673_1_ Lnet/minecraft/world/IBlockAccess; L0 L1 1
+ LOCALVARIABLE p_149673_2_ I L0 L1 2
+ LOCALVARIABLE p_149673_3_ I L0 L1 3
+ LOCALVARIABLE p_149673_4_ I L0 L1 4
+ LOCALVARIABLE p_149673_5_ I L0 L1 5
+ MAXSTACK = 6
+ MAXLOCALS = 6
+
+ // access flags 0x1
+ public getIcon(II)Lnet/minecraft/util/IIcon;
+ @Lcpw/mods/fml/relauncher/SideOnly;(value=Lcpw/mods/fml/relauncher/Side;.CLIENT)
+ L0
+ LINENUMBER 654 L0
+ ALOAD 0
+ GETFIELD net/minecraft/block/Block.blockIcon : Lnet/minecraft/util/IIcon;
+ ARETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L1 0
+ LOCALVARIABLE p_149691_1_ I L0 L1 1
+ LOCALVARIABLE p_149691_2_ I L0 L1 2
+ MAXSTACK = 1
+ MAXLOCALS = 3
+
+ // access flags 0x1
+ public addCollisionBoxesToList(Lnet/minecraft/world/World;IIILnet/minecraft/util/AxisAlignedBB;Ljava/util/List;Lnet/minecraft/entity/Entity;)V
+ L0
+ LINENUMBER 663 L0
+ ALOAD 0
+ ALOAD 1
+ ILOAD 2
+ ILOAD 3
+ ILOAD 4
+ INVOKEVIRTUAL net/minecraft/block/Block.getCollisionBoundingBoxFromPool (Lnet/minecraft/world/World;III)Lnet/minecraft/util/AxisAlignedBB;
+ ASTORE 8
+ L1
+ LINENUMBER 665 L1
+ ALOAD 8
+ IFNULL L2
+ ALOAD 5
+ ALOAD 8
+ INVOKEVIRTUAL net/minecraft/util/AxisAlignedBB.intersectsWith (Lnet/minecraft/util/AxisAlignedBB;)Z
+ IFEQ L2
+ L3
+ LINENUMBER 667 L3
+ ALOAD 6
+ ALOAD 8
+ INVOKEINTERFACE java/util/List.add (Ljava/lang/Object;)Z
+ POP
+ L2
+ LINENUMBER 669 L2
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/World I I I net/minecraft/util/AxisAlignedBB java/util/List net/minecraft/entity/Entity net/minecraft/util/AxisAlignedBB] []
+ RETURN
+ L4
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L4 0
+ LOCALVARIABLE p_149743_1_ Lnet/minecraft/world/World; L0 L4 1
+ LOCALVARIABLE p_149743_2_ I L0 L4 2
+ LOCALVARIABLE p_149743_3_ I L0 L4 3
+ LOCALVARIABLE p_149743_4_ I L0 L4 4
+ LOCALVARIABLE p_149743_5_ Lnet/minecraft/util/AxisAlignedBB; L0 L4 5
+ LOCALVARIABLE p_149743_6_ Ljava/util/List; L0 L4 6
+ LOCALVARIABLE p_149743_7_ Lnet/minecraft/entity/Entity; L0 L4 7
+ LOCALVARIABLE axisalignedbb1 Lnet/minecraft/util/AxisAlignedBB; L1 L4 8
+ MAXSTACK = 5
+ MAXLOCALS = 9
+
+ // access flags 0x1
+ public getCollisionBoundingBoxFromPool(Lnet/minecraft/world/World;III)Lnet/minecraft/util/AxisAlignedBB;
+ L0
+ LINENUMBER 677 L0
+ ILOAD 2
+ I2D
+ ALOAD 0
+ GETFIELD net/minecraft/block/Block.minX : D
+ DADD
+ ILOAD 3
+ I2D
+ ALOAD 0
+ GETFIELD net/minecraft/block/Block.minY : D
+ DADD
+ ILOAD 4
+ I2D
+ ALOAD 0
+ GETFIELD net/minecraft/block/Block.minZ : D
+ DADD
+ ILOAD 2
+ I2D
+ ALOAD 0
+ GETFIELD net/minecraft/block/Block.maxX : D
+ DADD
+ ILOAD 3
+ I2D
+ ALOAD 0
+ GETFIELD net/minecraft/block/Block.maxY : D
+ DADD
+ ILOAD 4
+ I2D
+ ALOAD 0
+ GETFIELD net/minecraft/block/Block.maxZ : D
+ DADD
+ INVOKESTATIC net/minecraft/util/AxisAlignedBB.getBoundingBox (DDDDDD)Lnet/minecraft/util/AxisAlignedBB;
+ ARETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L1 0
+ LOCALVARIABLE p_149668_1_ Lnet/minecraft/world/World; L0 L1 1
+ LOCALVARIABLE p_149668_2_ I L0 L1 2
+ LOCALVARIABLE p_149668_3_ I L0 L1 3
+ LOCALVARIABLE p_149668_4_ I L0 L1 4
+ MAXSTACK = 14
+ MAXLOCALS = 5
+
+ // access flags 0x11
+ public final getBlockTextureFromSide(I)Lnet/minecraft/util/IIcon;
+ @Lcpw/mods/fml/relauncher/SideOnly;(value=Lcpw/mods/fml/relauncher/Side;.CLIENT)
+ L0
+ LINENUMBER 686 L0
+ ALOAD 0
+ ILOAD 1
+ ICONST_0
+ INVOKEVIRTUAL net/minecraft/block/Block.getIcon (II)Lnet/minecraft/util/IIcon;
+ ARETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L1 0
+ LOCALVARIABLE p_149733_1_ I L0 L1 1
+ MAXSTACK = 3
+ MAXLOCALS = 2
+
+ // access flags 0x1
+ public getSelectedBoundingBoxFromPool(Lnet/minecraft/world/World;III)Lnet/minecraft/util/AxisAlignedBB;
+ @Lcpw/mods/fml/relauncher/SideOnly;(value=Lcpw/mods/fml/relauncher/Side;.CLIENT)
+ L0
+ LINENUMBER 695 L0
+ ILOAD 2
+ I2D
+ ALOAD 0
+ GETFIELD net/minecraft/block/Block.minX : D
+ DADD
+ ILOAD 3
+ I2D
+ ALOAD 0
+ GETFIELD net/minecraft/block/Block.minY : D
+ DADD
+ ILOAD 4
+ I2D
+ ALOAD 0
+ GETFIELD net/minecraft/block/Block.minZ : D
+ DADD
+ ILOAD 2
+ I2D
+ ALOAD 0
+ GETFIELD net/minecraft/block/Block.maxX : D
+ DADD
+ ILOAD 3
+ I2D
+ ALOAD 0
+ GETFIELD net/minecraft/block/Block.maxY : D
+ DADD
+ ILOAD 4
+ I2D
+ ALOAD 0
+ GETFIELD net/minecraft/block/Block.maxZ : D
+ DADD
+ INVOKESTATIC net/minecraft/util/AxisAlignedBB.getBoundingBox (DDDDDD)Lnet/minecraft/util/AxisAlignedBB;
+ ARETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L1 0
+ LOCALVARIABLE p_149633_1_ Lnet/minecraft/world/World; L0 L1 1
+ LOCALVARIABLE p_149633_2_ I L0 L1 2
+ LOCALVARIABLE p_149633_3_ I L0 L1 3
+ LOCALVARIABLE p_149633_4_ I L0 L1 4
+ MAXSTACK = 14
+ MAXLOCALS = 5
+
+ // access flags 0x1
+ public isOpaqueCube()Z
+ L0
+ LINENUMBER 704 L0
+ ICONST_1
+ IRETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L1 0
+ MAXSTACK = 1
+ MAXLOCALS = 1
+
+ // access flags 0x1
+ public canCollideCheck(IZ)Z
+ L0
+ LINENUMBER 714 L0
+ ALOAD 0
+ INVOKEVIRTUAL net/minecraft/block/Block.isCollidable ()Z
+ IRETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L1 0
+ LOCALVARIABLE p_149678_1_ I L0 L1 1
+ LOCALVARIABLE p_149678_2_ Z L0 L1 2
+ MAXSTACK = 1
+ MAXLOCALS = 3
+
+ // access flags 0x1
+ public isCollidable()Z
+ L0
+ LINENUMBER 722 L0
+ ICONST_1
+ IRETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L1 0
+ MAXSTACK = 1
+ MAXLOCALS = 1
+
+ // access flags 0x1
+ public updateTick(Lnet/minecraft/world/World;IIILjava/util/Random;)V
+ L0
+ LINENUMBER 728 L0
+ RETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L1 0
+ LOCALVARIABLE p_149674_1_ Lnet/minecraft/world/World; L0 L1 1
+ LOCALVARIABLE p_149674_2_ I L0 L1 2
+ LOCALVARIABLE p_149674_3_ I L0 L1 3
+ LOCALVARIABLE p_149674_4_ I L0 L1 4
+ LOCALVARIABLE p_149674_5_ Ljava/util/Random; L0 L1 5
+ MAXSTACK = 0
+ MAXLOCALS = 6
+
+ // access flags 0x1
+ public randomDisplayTick(Lnet/minecraft/world/World;IIILjava/util/Random;)V
+ @Lcpw/mods/fml/relauncher/SideOnly;(value=Lcpw/mods/fml/relauncher/Side;.CLIENT)
+ L0
+ LINENUMBER 734 L0
+ RETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L1 0
+ LOCALVARIABLE p_149734_1_ Lnet/minecraft/world/World; L0 L1 1
+ LOCALVARIABLE p_149734_2_ I L0 L1 2
+ LOCALVARIABLE p_149734_3_ I L0 L1 3
+ LOCALVARIABLE p_149734_4_ I L0 L1 4
+ LOCALVARIABLE p_149734_5_ Ljava/util/Random; L0 L1 5
+ MAXSTACK = 0
+ MAXLOCALS = 6
+
+ // access flags 0x1
+ public onBlockDestroyedByPlayer(Lnet/minecraft/world/World;IIII)V
+ L0
+ LINENUMBER 739 L0
+ RETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L1 0
+ LOCALVARIABLE p_149664_1_ Lnet/minecraft/world/World; L0 L1 1
+ LOCALVARIABLE p_149664_2_ I L0 L1 2
+ LOCALVARIABLE p_149664_3_ I L0 L1 3
+ LOCALVARIABLE p_149664_4_ I L0 L1 4
+ LOCALVARIABLE p_149664_5_ I L0 L1 5
+ MAXSTACK = 0
+ MAXLOCALS = 6
+
+ // access flags 0x1
+ public onNeighborBlockChange(Lnet/minecraft/world/World;IIILnet/minecraft/block/Block;)V
+ L0
+ LINENUMBER 745 L0
+ RETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L1 0
+ LOCALVARIABLE p_149695_1_ Lnet/minecraft/world/World; L0 L1 1
+ LOCALVARIABLE p_149695_2_ I L0 L1 2
+ LOCALVARIABLE p_149695_3_ I L0 L1 3
+ LOCALVARIABLE p_149695_4_ I L0 L1 4
+ LOCALVARIABLE p_149695_5_ Lnet/minecraft/block/Block; L0 L1 5
+ MAXSTACK = 0
+ MAXLOCALS = 6
+
+ // access flags 0x1
+ public tickRate(Lnet/minecraft/world/World;)I
+ L0
+ LINENUMBER 752 L0
+ BIPUSH 10
+ IRETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L1 0
+ LOCALVARIABLE p_149738_1_ Lnet/minecraft/world/World; L0 L1 1
+ MAXSTACK = 1
+ MAXLOCALS = 2
+
+ // access flags 0x1
+ public onBlockAdded(Lnet/minecraft/world/World;III)V
+ L0
+ LINENUMBER 758 L0
+ RETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L1 0
+ LOCALVARIABLE p_149726_1_ Lnet/minecraft/world/World; L0 L1 1
+ LOCALVARIABLE p_149726_2_ I L0 L1 2
+ LOCALVARIABLE p_149726_3_ I L0 L1 3
+ LOCALVARIABLE p_149726_4_ I L0 L1 4
+ MAXSTACK = 0
+ MAXLOCALS = 5
+
+ // access flags 0x1
+ public breakBlock(Lnet/minecraft/world/World;IIILnet/minecraft/block/Block;I)V
+ L0
+ LINENUMBER 762 L0
+ ALOAD 0
+ ILOAD 6
+ INVOKEVIRTUAL net/minecraft/block/Block.hasTileEntity (I)Z
+ IFEQ L1
+ ALOAD 0
+ INSTANCEOF net/minecraft/block/BlockContainer
+ IFNE L1
+ L2
+ LINENUMBER 764 L2
+ ALOAD 1
+ ILOAD 2
+ ILOAD 3
+ ILOAD 4
+ INVOKEVIRTUAL net/minecraft/world/World.removeTileEntity (III)V
+ L1
+ LINENUMBER 766 L1
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/World I I I net/minecraft/block/Block I] []
+ RETURN
+ L3
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L3 0
+ LOCALVARIABLE p_149749_1_ Lnet/minecraft/world/World; L0 L3 1
+ LOCALVARIABLE p_149749_2_ I L0 L3 2
+ LOCALVARIABLE p_149749_3_ I L0 L3 3
+ LOCALVARIABLE p_149749_4_ I L0 L3 4
+ LOCALVARIABLE p_149749_5_ Lnet/minecraft/block/Block; L0 L3 5
+ LOCALVARIABLE p_149749_6_ I L0 L3 6
+ MAXSTACK = 4
+ MAXLOCALS = 7
+
+ // access flags 0x1
+ public quantityDropped(Ljava/util/Random;)I
+ L0
+ LINENUMBER 773 L0
+ ICONST_1
+ IRETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L1 0
+ LOCALVARIABLE p_149745_1_ Ljava/util/Random; L0 L1 1
+ MAXSTACK = 1
+ MAXLOCALS = 2
+
+ // access flags 0x1
+ public getItemDropped(ILjava/util/Random;I)Lnet/minecraft/item/Item;
+ L0
+ LINENUMBER 778 L0
+ ALOAD 0
+ INVOKESTATIC net/minecraft/item/Item.getItemFromBlock (Lnet/minecraft/block/Block;)Lnet/minecraft/item/Item;
+ ARETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L1 0
+ LOCALVARIABLE p_149650_1_ I L0 L1 1
+ LOCALVARIABLE p_149650_2_ Ljava/util/Random; L0 L1 2
+ LOCALVARIABLE p_149650_3_ I L0 L1 3
+ MAXSTACK = 1
+ MAXLOCALS = 4
+
+ // access flags 0x1
+ public getPlayerRelativeBlockHardness(Lnet/minecraft/entity/player/EntityPlayer;Lnet/minecraft/world/World;III)F
+ L0
+ LINENUMBER 787 L0
+ ALOAD 0
+ ALOAD 1
+ ALOAD 2
+ ILOAD 3
+ ILOAD 4
+ ILOAD 5
+ INVOKESTATIC net/minecraftforge/common/ForgeHooks.blockStrength (Lnet/minecraft/block/Block;Lnet/minecraft/entity/player/EntityPlayer;Lnet/minecraft/world/World;III)F
+ FRETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L1 0
+ LOCALVARIABLE p_149737_1_ Lnet/minecraft/entity/player/EntityPlayer; L0 L1 1
+ LOCALVARIABLE p_149737_2_ Lnet/minecraft/world/World; L0 L1 2
+ LOCALVARIABLE p_149737_3_ I L0 L1 3
+ LOCALVARIABLE p_149737_4_ I L0 L1 4
+ LOCALVARIABLE p_149737_5_ I L0 L1 5
+ MAXSTACK = 6
+ MAXLOCALS = 6
+
+ // access flags 0x11
+ public final dropBlockAsItem(Lnet/minecraft/world/World;IIIII)V
+ L0
+ LINENUMBER 795 L0
+ ALOAD 0
+ ALOAD 1
+ ILOAD 2
+ ILOAD 3
+ ILOAD 4
+ ILOAD 5
+ FCONST_1
+ ILOAD 6
+ INVOKEVIRTUAL net/minecraft/block/Block.dropBlockAsItemWithChance (Lnet/minecraft/world/World;IIIIFI)V
+ L1
+ LINENUMBER 796 L1
+ RETURN
+ L2
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L2 0
+ LOCALVARIABLE p_149697_1_ Lnet/minecraft/world/World; L0 L2 1
+ LOCALVARIABLE p_149697_2_ I L0 L2 2
+ LOCALVARIABLE p_149697_3_ I L0 L2 3
+ LOCALVARIABLE p_149697_4_ I L0 L2 4
+ LOCALVARIABLE p_149697_5_ I L0 L2 5
+ LOCALVARIABLE p_149697_6_ I L0 L2 6
+ MAXSTACK = 8
+ MAXLOCALS = 7
+
+ // access flags 0x1
+ public dropBlockAsItemWithChance(Lnet/minecraft/world/World;IIIIFI)V
+ L0
+ LINENUMBER 803 L0
+ ALOAD 1
+ GETFIELD net/minecraft/world/World.isRemote : Z
+ IFNE L1
+ ALOAD 1
+ GETFIELD net/minecraft/world/World.restoringBlockSnapshots : Z
+ IFNE L1
+ L2
+ LINENUMBER 805 L2
+ ALOAD 0
+ ALOAD 1
+ ILOAD 2
+ ILOAD 3
+ ILOAD 4
+ ILOAD 5
+ ILOAD 7
+ INVOKEVIRTUAL net/minecraft/block/Block.getDrops (Lnet/minecraft/world/World;IIIII)Ljava/util/ArrayList;
+ ASTORE 8
+ L3
+ LINENUMBER 806 L3
+ ALOAD 8
+ ALOAD 1
+ ALOAD 0
+ ILOAD 2
+ ILOAD 3
+ ILOAD 4
+ ILOAD 5
+ ILOAD 7
+ FLOAD 6
+ ICONST_0
+ ALOAD 0
+ GETFIELD net/minecraft/block/Block.harvesters : Ljava/lang/ThreadLocal;
+ INVOKEVIRTUAL java/lang/ThreadLocal.get ()Ljava/lang/Object;
+ CHECKCAST net/minecraft/entity/player/EntityPlayer
+ INVOKESTATIC net/minecraftforge/event/ForgeEventFactory.fireBlockHarvesting (Ljava/util/ArrayList;Lnet/minecraft/world/World;Lnet/minecraft/block/Block;IIIIIFZLnet/minecraft/entity/player/EntityPlayer;)F
+ FSTORE 6
+ L4
+ LINENUMBER 808 L4
+ ALOAD 8
+ INVOKEVIRTUAL java/util/ArrayList.iterator ()Ljava/util/Iterator;
+ ASTORE 9
+ L5
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/World I I I I F I java/util/ArrayList java/util/Iterator] []
+ ALOAD 9
+ INVOKEINTERFACE java/util/Iterator.hasNext ()Z
+ IFEQ L1
+ ALOAD 9
+ INVOKEINTERFACE java/util/Iterator.next ()Ljava/lang/Object;
+ CHECKCAST net/minecraft/item/ItemStack
+ ASTORE 10
+ L6
+ LINENUMBER 810 L6
+ ALOAD 1
+ GETFIELD net/minecraft/world/World.rand : Ljava/util/Random;
+ INVOKEVIRTUAL java/util/Random.nextFloat ()F
+ FLOAD 6
+ FCMPG
+ IFGT L7
+ L8
+ LINENUMBER 812 L8
+ ALOAD 0
+ ALOAD 1
+ ILOAD 2
+ ILOAD 3
+ ILOAD 4
+ ALOAD 10
+ INVOKEVIRTUAL net/minecraft/block/Block.dropBlockAsItem (Lnet/minecraft/world/World;IIILnet/minecraft/item/ItemStack;)V
+ L7
+ LINENUMBER 814 L7
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/World I I I I F I java/util/ArrayList java/util/Iterator net/minecraft/item/ItemStack] []
+ GOTO L5
+ L1
+ LINENUMBER 816 L1
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/World I I I I F I] []
+ RETURN
+ L9
+ LOCALVARIABLE item Lnet/minecraft/item/ItemStack; L6 L7 10
+ LOCALVARIABLE items Ljava/util/ArrayList; L3 L1 8
+ // signature Ljava/util/ArrayList<Lnet/minecraft/item/ItemStack;>;
+ // declaration: java.util.ArrayList<net.minecraft.item.ItemStack>
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L9 0
+ LOCALVARIABLE p_149690_1_ Lnet/minecraft/world/World; L0 L9 1
+ LOCALVARIABLE p_149690_2_ I L0 L9 2
+ LOCALVARIABLE p_149690_3_ I L0 L9 3
+ LOCALVARIABLE p_149690_4_ I L0 L9 4
+ LOCALVARIABLE p_149690_5_ I L0 L9 5
+ LOCALVARIABLE p_149690_6_ F L0 L9 6
+ LOCALVARIABLE p_149690_7_ I L0 L9 7
+ MAXSTACK = 11
+ MAXLOCALS = 11
+
+ // access flags 0x4
+ protected dropBlockAsItem(Lnet/minecraft/world/World;IIILnet/minecraft/item/ItemStack;)V
+ L0
+ LINENUMBER 823 L0
+ ALOAD 1
+ GETFIELD net/minecraft/world/World.isRemote : Z
+ IFNE L1
+ ALOAD 1
+ INVOKEVIRTUAL net/minecraft/world/World.getGameRules ()Lnet/minecraft/world/GameRules;
+ LDC "doTileDrops"
+ INVOKEVIRTUAL net/minecraft/world/GameRules.getGameRuleBooleanValue (Ljava/lang/String;)Z
+ IFEQ L1
+ ALOAD 1
+ GETFIELD net/minecraft/world/World.restoringBlockSnapshots : Z
+ IFNE L1
+ L2
+ LINENUMBER 825 L2
+ ALOAD 0
+ GETFIELD net/minecraft/block/Block.captureDrops : Ljava/lang/ThreadLocal;
+ INVOKEVIRTUAL java/lang/ThreadLocal.get ()Ljava/lang/Object;
+ CHECKCAST java/lang/Boolean
+ INVOKEVIRTUAL java/lang/Boolean.booleanValue ()Z
+ IFEQ L3
+ L4
+ LINENUMBER 827 L4
+ ALOAD 0
+ GETFIELD net/minecraft/block/Block.capturedDrops : Ljava/lang/ThreadLocal;
+ INVOKEVIRTUAL java/lang/ThreadLocal.get ()Ljava/lang/Object;
+ CHECKCAST java/util/List
+ ALOAD 5
+ INVOKEINTERFACE java/util/List.add (Ljava/lang/Object;)Z
+ POP
+ L5
+ LINENUMBER 828 L5
+ RETURN
+ L3
+ LINENUMBER 830 L3
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/World I I I net/minecraft/item/ItemStack] []
+ LDC 0.7
+ FSTORE 6
+ L6
+ LINENUMBER 831 L6
+ ALOAD 1
+ GETFIELD net/minecraft/world/World.rand : Ljava/util/Random;
+ INVOKEVIRTUAL java/util/Random.nextFloat ()F
+ FLOAD 6
+ FMUL
+ F2D
+ FCONST_1
+ FLOAD 6
+ FSUB
+ F2D
+ LDC 0.5
+ DMUL
+ DADD
+ DSTORE 7
+ L7
+ LINENUMBER 832 L7
+ ALOAD 1
+ GETFIELD net/minecraft/world/World.rand : Ljava/util/Random;
+ INVOKEVIRTUAL java/util/Random.nextFloat ()F
+ FLOAD 6
+ FMUL
+ F2D
+ FCONST_1
+ FLOAD 6
+ FSUB
+ F2D
+ LDC 0.5
+ DMUL
+ DADD
+ DSTORE 9
+ L8
+ LINENUMBER 833 L8
+ ALOAD 1
+ GETFIELD net/minecraft/world/World.rand : Ljava/util/Random;
+ INVOKEVIRTUAL java/util/Random.nextFloat ()F
+ FLOAD 6
+ FMUL
+ F2D
+ FCONST_1
+ FLOAD 6
+ FSUB
+ F2D
+ LDC 0.5
+ DMUL
+ DADD
+ DSTORE 11
+ L9
+ LINENUMBER 834 L9
+ NEW net/minecraft/entity/item/EntityItem
+ DUP
+ ALOAD 1
+ ILOAD 2
+ I2D
+ DLOAD 7
+ DADD
+ ILOAD 3
+ I2D
+ DLOAD 9
+ DADD
+ ILOAD 4
+ I2D
+ DLOAD 11
+ DADD
+ ALOAD 5
+ INVOKESPECIAL net/minecraft/entity/item/EntityItem.<init> (Lnet/minecraft/world/World;DDDLnet/minecraft/item/ItemStack;)V
+ ASTORE 13
+ L10
+ LINENUMBER 835 L10
+ ALOAD 13
+ BIPUSH 10
+ PUTFIELD net/minecraft/entity/item/EntityItem.delayBeforeCanPickup : I
+ L11
+ LINENUMBER 836 L11
+ ALOAD 1
+ ALOAD 13
+ INVOKEVIRTUAL net/minecraft/world/World.spawnEntityInWorld (Lnet/minecraft/entity/Entity;)Z
+ POP
+ L1
+ LINENUMBER 838 L1
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/World I I I net/minecraft/item/ItemStack] []
+ RETURN
+ L12
+ LOCALVARIABLE f F L6 L1 6
+ LOCALVARIABLE d0 D L7 L1 7
+ LOCALVARIABLE d1 D L8 L1 9
+ LOCALVARIABLE d2 D L9 L1 11
+ LOCALVARIABLE entityitem Lnet/minecraft/entity/item/EntityItem; L10 L1 13
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L12 0
+ LOCALVARIABLE p_149642_1_ Lnet/minecraft/world/World; L0 L12 1
+ LOCALVARIABLE p_149642_2_ I L0 L12 2
+ LOCALVARIABLE p_149642_3_ I L0 L12 3
+ LOCALVARIABLE p_149642_4_ I L0 L12 4
+ LOCALVARIABLE p_149642_5_ Lnet/minecraft/item/ItemStack; L0 L12 5
+ MAXSTACK = 11
+ MAXLOCALS = 14
+
+ // access flags 0x1
+ public dropXpOnBlockBreak(Lnet/minecraft/world/World;IIII)V
+ L0
+ LINENUMBER 845 L0
+ ALOAD 1
+ GETFIELD net/minecraft/world/World.isRemote : Z
+ IFNE L1
+ L2
+ LINENUMBER 847 L2
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/World I I I I] []
+ ILOAD 5
+ IFLE L1
+ L3
+ LINENUMBER 849 L3
+ ILOAD 5
+ INVOKESTATIC net/minecraft/entity/item/EntityXPOrb.getXPSplit (I)I
+ ISTORE 6
+ L4
+ LINENUMBER 850 L4
+ ILOAD 5
+ ILOAD 6
+ ISUB
+ ISTORE 5
+ L5
+ LINENUMBER 851 L5
+ ALOAD 1
+ NEW net/minecraft/entity/item/EntityXPOrb
+ DUP
+ ALOAD 1
+ ILOAD 2
+ I2D
+ LDC 0.5
+ DADD
+ ILOAD 3
+ I2D
+ LDC 0.5
+ DADD
+ ILOAD 4
+ I2D
+ LDC 0.5
+ DADD
+ ILOAD 6
+ INVOKESPECIAL net/minecraft/entity/item/EntityXPOrb.<init> (Lnet/minecraft/world/World;DDDI)V
+ INVOKEVIRTUAL net/minecraft/world/World.spawnEntityInWorld (Lnet/minecraft/entity/Entity;)Z
+ POP
+ L6
+ LINENUMBER 852 L6
+ GOTO L2
+ L1
+ LINENUMBER 854 L1
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/World I I I I] []
+ RETURN
+ L7
+ LOCALVARIABLE i1 I L4 L6 6
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L7 0
+ LOCALVARIABLE p_149657_1_ Lnet/minecraft/world/World; L0 L7 1
+ LOCALVARIABLE p_149657_2_ I L0 L7 2
+ LOCALVARIABLE p_149657_3_ I L0 L7 3
+ LOCALVARIABLE p_149657_4_ I L0 L7 4
+ LOCALVARIABLE p_149657_5_ I L0 L7 5
+ MAXSTACK = 12
+ MAXLOCALS = 7
+
+ // access flags 0x1
+ public damageDropped(I)I
+ L0
+ LINENUMBER 861 L0
+ ICONST_0
+ IRETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L1 0
+ LOCALVARIABLE p_149692_1_ I L0 L1 1
+ MAXSTACK = 1
+ MAXLOCALS = 2
+
+ // access flags 0x1
+ public getExplosionResistance(Lnet/minecraft/entity/Entity;)F
+ L0
+ LINENUMBER 869 L0
+ ALOAD 0
+ GETFIELD net/minecraft/block/Block.blockResistance : F
+ LDC 5.0
+ FDIV
+ FRETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L1 0
+ LOCALVARIABLE p_149638_1_ Lnet/minecraft/entity/Entity; L0 L1 1
+ MAXSTACK = 2
+ MAXLOCALS = 2
+
+ // access flags 0x1
+ public collisionRayTrace(Lnet/minecraft/world/World;IIILnet/minecraft/util/Vec3;Lnet/minecraft/util/Vec3;)Lnet/minecraft/util/MovingObjectPosition;
+ L0
+ LINENUMBER 878 L0
+ ALOAD 0
+ ALOAD 1
+ ILOAD 2
+ ILOAD 3
+ ILOAD 4
+ INVOKEVIRTUAL net/minecraft/block/Block.setBlockBoundsBasedOnState (Lnet/minecraft/world/IBlockAccess;III)V
+ L1
+ LINENUMBER 879 L1
+ ALOAD 5
+ ILOAD 2
+ INEG
+ I2D
+ ILOAD 3
+ INEG
+ I2D
+ ILOAD 4
+ INEG
+ I2D
+ INVOKEVIRTUAL net/minecraft/util/Vec3.addVector (DDD)Lnet/minecraft/util/Vec3;
+ ASTORE 5
+ L2
+ LINENUMBER 880 L2
+ ALOAD 6
+ ILOAD 2
+ INEG
+ I2D
+ ILOAD 3
+ INEG
+ I2D
+ ILOAD 4
+ INEG
+ I2D
+ INVOKEVIRTUAL net/minecraft/util/Vec3.addVector (DDD)Lnet/minecraft/util/Vec3;
+ ASTORE 6
+ L3
+ LINENUMBER 881 L3
+ ALOAD 5
+ ALOAD 6
+ ALOAD 0
+ GETFIELD net/minecraft/block/Block.minX : D
+ INVOKEVIRTUAL net/minecraft/util/Vec3.getIntermediateWithXValue (Lnet/minecraft/util/Vec3;D)Lnet/minecraft/util/Vec3;
+ ASTORE 7
+ L4
+ LINENUMBER 882 L4
+ ALOAD 5
+ ALOAD 6
+ ALOAD 0
+ GETFIELD net/minecraft/block/Block.maxX : D
+ INVOKEVIRTUAL net/minecraft/util/Vec3.getIntermediateWithXValue (Lnet/minecraft/util/Vec3;D)Lnet/minecraft/util/Vec3;
+ ASTORE 8
+ L5
+ LINENUMBER 883 L5
+ ALOAD 5
+ ALOAD 6
+ ALOAD 0
+ GETFIELD net/minecraft/block/Block.minY : D
+ INVOKEVIRTUAL net/minecraft/util/Vec3.getIntermediateWithYValue (Lnet/minecraft/util/Vec3;D)Lnet/minecraft/util/Vec3;
+ ASTORE 9
+ L6
+ LINENUMBER 884 L6
+ ALOAD 5
+ ALOAD 6
+ ALOAD 0
+ GETFIELD net/minecraft/block/Block.maxY : D
+ INVOKEVIRTUAL net/minecraft/util/Vec3.getIntermediateWithYValue (Lnet/minecraft/util/Vec3;D)Lnet/minecraft/util/Vec3;
+ ASTORE 10
+ L7
+ LINENUMBER 885 L7
+ ALOAD 5
+ ALOAD 6
+ ALOAD 0
+ GETFIELD net/minecraft/block/Block.minZ : D
+ INVOKEVIRTUAL net/minecraft/util/Vec3.getIntermediateWithZValue (Lnet/minecraft/util/Vec3;D)Lnet/minecraft/util/Vec3;
+ ASTORE 11
+ L8
+ LINENUMBER 886 L8
+ ALOAD 5
+ ALOAD 6
+ ALOAD 0
+ GETFIELD net/minecraft/block/Block.maxZ : D
+ INVOKEVIRTUAL net/minecraft/util/Vec3.getIntermediateWithZValue (Lnet/minecraft/util/Vec3;D)Lnet/minecraft/util/Vec3;
+ ASTORE 12
+ L9
+ LINENUMBER 888 L9
+ ALOAD 0
+ ALOAD 7
+ INVOKESPECIAL net/minecraft/block/Block.isVecInsideYZBounds (Lnet/minecraft/util/Vec3;)Z
+ IFNE L10
+ L11
+ LINENUMBER 890 L11
+ ACONST_NULL
+ ASTORE 7
+ L10
+ LINENUMBER 893 L10
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/World I I I net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3] []
+ ALOAD 0
+ ALOAD 8
+ INVOKESPECIAL net/minecraft/block/Block.isVecInsideYZBounds (Lnet/minecraft/util/Vec3;)Z
+ IFNE L12
+ L13
+ LINENUMBER 895 L13
+ ACONST_NULL
+ ASTORE 8
+ L12
+ LINENUMBER 898 L12
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/World I I I net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3] []
+ ALOAD 0
+ ALOAD 9
+ INVOKESPECIAL net/minecraft/block/Block.isVecInsideXZBounds (Lnet/minecraft/util/Vec3;)Z
+ IFNE L14
+ L15
+ LINENUMBER 900 L15
+ ACONST_NULL
+ ASTORE 9
+ L14
+ LINENUMBER 903 L14
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/World I I I net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3] []
+ ALOAD 0
+ ALOAD 10
+ INVOKESPECIAL net/minecraft/block/Block.isVecInsideXZBounds (Lnet/minecraft/util/Vec3;)Z
+ IFNE L16
+ L17
+ LINENUMBER 905 L17
+ ACONST_NULL
+ ASTORE 10
+ L16
+ LINENUMBER 908 L16
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/World I I I net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3] []
+ ALOAD 0
+ ALOAD 11
+ INVOKESPECIAL net/minecraft/block/Block.isVecInsideXYBounds (Lnet/minecraft/util/Vec3;)Z
+ IFNE L18
+ L19
+ LINENUMBER 910 L19
+ ACONST_NULL
+ ASTORE 11
+ L18
+ LINENUMBER 913 L18
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/World I I I net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3] []
+ ALOAD 0
+ ALOAD 12
+ INVOKESPECIAL net/minecraft/block/Block.isVecInsideXYBounds (Lnet/minecraft/util/Vec3;)Z
+ IFNE L20
+ L21
+ LINENUMBER 915 L21
+ ACONST_NULL
+ ASTORE 12
+ L20
+ LINENUMBER 918 L20
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/World I I I net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3] []
+ ACONST_NULL
+ ASTORE 13
+ L22
+ LINENUMBER 920 L22
+ ALOAD 7
+ IFNULL L23
+ ALOAD 13
+ IFNULL L24
+ ALOAD 5
+ ALOAD 7
+ INVOKEVIRTUAL net/minecraft/util/Vec3.squareDistanceTo (Lnet/minecraft/util/Vec3;)D
+ ALOAD 5
+ ALOAD 13
+ INVOKEVIRTUAL net/minecraft/util/Vec3.squareDistanceTo (Lnet/minecraft/util/Vec3;)D
+ DCMPG
+ IFGE L23
+ L24
+ LINENUMBER 922 L24
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/World I I I net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 N] []
+ ALOAD 7
+ ASTORE 13
+ L23
+ LINENUMBER 925 L23
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/World I I I net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3] []
+ ALOAD 8
+ IFNULL L25
+ ALOAD 13
+ IFNULL L26
+ ALOAD 5
+ ALOAD 8
+ INVOKEVIRTUAL net/minecraft/util/Vec3.squareDistanceTo (Lnet/minecraft/util/Vec3;)D
+ ALOAD 5
+ ALOAD 13
+ INVOKEVIRTUAL net/minecraft/util/Vec3.squareDistanceTo (Lnet/minecraft/util/Vec3;)D
+ DCMPG
+ IFGE L25
+ L26
+ LINENUMBER 927 L26
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/World I I I net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3] []
+ ALOAD 8
+ ASTORE 13
+ L25
+ LINENUMBER 930 L25
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/World I I I net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3] []
+ ALOAD 9
+ IFNULL L27
+ ALOAD 13
+ IFNULL L28
+ ALOAD 5
+ ALOAD 9
+ INVOKEVIRTUAL net/minecraft/util/Vec3.squareDistanceTo (Lnet/minecraft/util/Vec3;)D
+ ALOAD 5
+ ALOAD 13
+ INVOKEVIRTUAL net/minecraft/util/Vec3.squareDistanceTo (Lnet/minecraft/util/Vec3;)D
+ DCMPG
+ IFGE L27
+ L28
+ LINENUMBER 932 L28
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/World I I I net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3] []
+ ALOAD 9
+ ASTORE 13
+ L27
+ LINENUMBER 935 L27
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/World I I I net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3] []
+ ALOAD 10
+ IFNULL L29
+ ALOAD 13
+ IFNULL L30
+ ALOAD 5
+ ALOAD 10
+ INVOKEVIRTUAL net/minecraft/util/Vec3.squareDistanceTo (Lnet/minecraft/util/Vec3;)D
+ ALOAD 5
+ ALOAD 13
+ INVOKEVIRTUAL net/minecraft/util/Vec3.squareDistanceTo (Lnet/minecraft/util/Vec3;)D
+ DCMPG
+ IFGE L29
+ L30
+ LINENUMBER 937 L30
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/World I I I net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3] []
+ ALOAD 10
+ ASTORE 13
+ L29
+ LINENUMBER 940 L29
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/World I I I net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3] []
+ ALOAD 11
+ IFNULL L31
+ ALOAD 13
+ IFNULL L32
+ ALOAD 5
+ ALOAD 11
+ INVOKEVIRTUAL net/minecraft/util/Vec3.squareDistanceTo (Lnet/minecraft/util/Vec3;)D
+ ALOAD 5
+ ALOAD 13
+ INVOKEVIRTUAL net/minecraft/util/Vec3.squareDistanceTo (Lnet/minecraft/util/Vec3;)D
+ DCMPG
+ IFGE L31
+ L32
+ LINENUMBER 942 L32
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/World I I I net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3] []
+ ALOAD 11
+ ASTORE 13
+ L31
+ LINENUMBER 945 L31
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/World I I I net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3] []
+ ALOAD 12
+ IFNULL L33
+ ALOAD 13
+ IFNULL L34
+ ALOAD 5
+ ALOAD 12
+ INVOKEVIRTUAL net/minecraft/util/Vec3.squareDistanceTo (Lnet/minecraft/util/Vec3;)D
+ ALOAD 5
+ ALOAD 13
+ INVOKEVIRTUAL net/minecraft/util/Vec3.squareDistanceTo (Lnet/minecraft/util/Vec3;)D
+ DCMPG
+ IFGE L33
+ L34
+ LINENUMBER 947 L34
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/World I I I net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3] []
+ ALOAD 12
+ ASTORE 13
+ L33
+ LINENUMBER 950 L33
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/World I I I net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3] []
+ ALOAD 13
+ IFNONNULL L35
+ L36
+ LINENUMBER 952 L36
+ ACONST_NULL
+ ARETURN
+ L35
+ LINENUMBER 956 L35
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/World I I I net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3] []
+ ICONST_M1
+ ISTORE 14
+ L37
+ LINENUMBER 958 L37
+ ALOAD 13
+ ALOAD 7
+ IF_ACMPNE L38
+ L39
+ LINENUMBER 960 L39
+ ICONST_4
+ ISTORE 14
+ L38
+ LINENUMBER 963 L38
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/World I I I net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 I] []
+ ALOAD 13
+ ALOAD 8
+ IF_ACMPNE L40
+ L41
+ LINENUMBER 965 L41
+ ICONST_5
+ ISTORE 14
+ L40
+ LINENUMBER 968 L40
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/World I I I net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 I] []
+ ALOAD 13
+ ALOAD 9
+ IF_ACMPNE L42
+ L43
+ LINENUMBER 970 L43
+ ICONST_0
+ ISTORE 14
+ L42
+ LINENUMBER 973 L42
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/World I I I net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 I] []
+ ALOAD 13
+ ALOAD 10
+ IF_ACMPNE L44
+ L45
+ LINENUMBER 975 L45
+ ICONST_1
+ ISTORE 14
+ L44
+ LINENUMBER 978 L44
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/World I I I net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 I] []
+ ALOAD 13
+ ALOAD 11
+ IF_ACMPNE L46
+ L47
+ LINENUMBER 980 L47
+ ICONST_2
+ ISTORE 14
+ L46
+ LINENUMBER 983 L46
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/World I I I net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 I] []
+ ALOAD 13
+ ALOAD 12
+ IF_ACMPNE L48
+ L49
+ LINENUMBER 985 L49
+ ICONST_3
+ ISTORE 14
+ L48
+ LINENUMBER 988 L48
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/World I I I net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 net/minecraft/util/Vec3 I] []
+ NEW net/minecraft/util/MovingObjectPosition
+ DUP
+ ILOAD 2
+ ILOAD 3
+ ILOAD 4
+ ILOAD 14
+ ALOAD 13
+ ILOAD 2
+ I2D
+ ILOAD 3
+ I2D
+ ILOAD 4
+ I2D
+ INVOKEVIRTUAL net/minecraft/util/Vec3.addVector (DDD)Lnet/minecraft/util/Vec3;
+ INVOKESPECIAL net/minecraft/util/MovingObjectPosition.<init> (IIIILnet/minecraft/util/Vec3;)V
+ ARETURN
+ L50
+ LOCALVARIABLE b0 B L37 L50 14
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L50 0
+ LOCALVARIABLE p_149731_1_ Lnet/minecraft/world/World; L0 L50 1
+ LOCALVARIABLE p_149731_2_ I L0 L50 2
+ LOCALVARIABLE p_149731_3_ I L0 L50 3
+ LOCALVARIABLE p_149731_4_ I L0 L50 4
+ LOCALVARIABLE p_149731_5_ Lnet/minecraft/util/Vec3; L0 L50 5
+ LOCALVARIABLE p_149731_6_ Lnet/minecraft/util/Vec3; L0 L50 6
+ LOCALVARIABLE vec32 Lnet/minecraft/util/Vec3; L4 L50 7
+ LOCALVARIABLE vec33 Lnet/minecraft/util/Vec3; L5 L50 8
+ LOCALVARIABLE vec34 Lnet/minecraft/util/Vec3; L6 L50 9
+ LOCALVARIABLE vec35 Lnet/minecraft/util/Vec3; L7 L50 10
+ LOCALVARIABLE vec36 Lnet/minecraft/util/Vec3; L8 L50 11
+ LOCALVARIABLE vec37 Lnet/minecraft/util/Vec3; L9 L50 12
+ LOCALVARIABLE vec38 Lnet/minecraft/util/Vec3; L22 L50 13
+ MAXSTACK = 13
+ MAXLOCALS = 15
+
+ // access flags 0x2
+ private isVecInsideYZBounds(Lnet/minecraft/util/Vec3;)Z
+ L0
+ LINENUMBER 997 L0
+ ALOAD 1
+ IFNONNULL L1
+ ICONST_0
+ GOTO L2
+ L1
+ FRAME FULL [net/minecraft/block/Block net/minecraft/util/Vec3] []
+ ALOAD 1
+ GETFIELD net/minecraft/util/Vec3.yCoord : D
+ ALOAD 0
+ GETFIELD net/minecraft/block/Block.minY : D
+ DCMPL
+ IFLT L3
+ ALOAD 1
+ GETFIELD net/minecraft/util/Vec3.yCoord : D
+ ALOAD 0
+ GETFIELD net/minecraft/block/Block.maxY : D
+ DCMPG
+ IFGT L3
+ ALOAD 1
+ GETFIELD net/minecraft/util/Vec3.zCoord : D
+ ALOAD 0
+ GETFIELD net/minecraft/block/Block.minZ : D
+ DCMPL
+ IFLT L3
+ ALOAD 1
+ GETFIELD net/minecraft/util/Vec3.zCoord : D
+ ALOAD 0
+ GETFIELD net/minecraft/block/Block.maxZ : D
+ DCMPG
+ IFGT L3
+ ICONST_1
+ GOTO L2
+ L3
+ FRAME FULL [net/minecraft/block/Block net/minecraft/util/Vec3] []
+ ICONST_0
+ L2
+ FRAME FULL [net/minecraft/block/Block net/minecraft/util/Vec3] [I]
+ IRETURN
+ L4
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L4 0
+ LOCALVARIABLE p_149654_1_ Lnet/minecraft/util/Vec3; L0 L4 1
+ MAXSTACK = 4
+ MAXLOCALS = 2
+
+ // access flags 0x2
+ private isVecInsideXZBounds(Lnet/minecraft/util/Vec3;)Z
+ L0
+ LINENUMBER 1005 L0
+ ALOAD 1
+ IFNONNULL L1
+ ICONST_0
+ GOTO L2
+ L1
+ FRAME FULL [net/minecraft/block/Block net/minecraft/util/Vec3] []
+ ALOAD 1
+ GETFIELD net/minecraft/util/Vec3.xCoord : D
+ ALOAD 0
+ GETFIELD net/minecraft/block/Block.minX : D
+ DCMPL
+ IFLT L3
+ ALOAD 1
+ GETFIELD net/minecraft/util/Vec3.xCoord : D
+ ALOAD 0
+ GETFIELD net/minecraft/block/Block.maxX : D
+ DCMPG
+ IFGT L3
+ ALOAD 1
+ GETFIELD net/minecraft/util/Vec3.zCoord : D
+ ALOAD 0
+ GETFIELD net/minecraft/block/Block.minZ : D
+ DCMPL
+ IFLT L3
+ ALOAD 1
+ GETFIELD net/minecraft/util/Vec3.zCoord : D
+ ALOAD 0
+ GETFIELD net/minecraft/block/Block.maxZ : D
+ DCMPG
+ IFGT L3
+ ICONST_1
+ GOTO L2
+ L3
+ FRAME FULL [net/minecraft/block/Block net/minecraft/util/Vec3] []
+ ICONST_0
+ L2
+ FRAME FULL [net/minecraft/block/Block net/minecraft/util/Vec3] [I]
+ IRETURN
+ L4
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L4 0
+ LOCALVARIABLE p_149687_1_ Lnet/minecraft/util/Vec3; L0 L4 1
+ MAXSTACK = 4
+ MAXLOCALS = 2
+
+ // access flags 0x2
+ private isVecInsideXYBounds(Lnet/minecraft/util/Vec3;)Z
+ L0
+ LINENUMBER 1013 L0
+ ALOAD 1
+ IFNONNULL L1
+ ICONST_0
+ GOTO L2
+ L1
+ FRAME FULL [net/minecraft/block/Block net/minecraft/util/Vec3] []
+ ALOAD 1
+ GETFIELD net/minecraft/util/Vec3.xCoord : D
+ ALOAD 0
+ GETFIELD net/minecraft/block/Block.minX : D
+ DCMPL
+ IFLT L3
+ ALOAD 1
+ GETFIELD net/minecraft/util/Vec3.xCoord : D
+ ALOAD 0
+ GETFIELD net/minecraft/block/Block.maxX : D
+ DCMPG
+ IFGT L3
+ ALOAD 1
+ GETFIELD net/minecraft/util/Vec3.yCoord : D
+ ALOAD 0
+ GETFIELD net/minecraft/block/Block.minY : D
+ DCMPL
+ IFLT L3
+ ALOAD 1
+ GETFIELD net/minecraft/util/Vec3.yCoord : D
+ ALOAD 0
+ GETFIELD net/minecraft/block/Block.maxY : D
+ DCMPG
+ IFGT L3
+ ICONST_1
+ GOTO L2
+ L3
+ FRAME FULL [net/minecraft/block/Block net/minecraft/util/Vec3] []
+ ICONST_0
+ L2
+ FRAME FULL [net/minecraft/block/Block net/minecraft/util/Vec3] [I]
+ IRETURN
+ L4
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L4 0
+ LOCALVARIABLE p_149661_1_ Lnet/minecraft/util/Vec3; L0 L4 1
+ MAXSTACK = 4
+ MAXLOCALS = 2
+
+ // access flags 0x1
+ public onBlockDestroyedByExplosion(Lnet/minecraft/world/World;IIILnet/minecraft/world/Explosion;)V
+ L0
+ LINENUMBER 1019 L0
+ RETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L1 0
+ LOCALVARIABLE p_149723_1_ Lnet/minecraft/world/World; L0 L1 1
+ LOCALVARIABLE p_149723_2_ I L0 L1 2
+ LOCALVARIABLE p_149723_3_ I L0 L1 3
+ LOCALVARIABLE p_149723_4_ I L0 L1 4
+ LOCALVARIABLE p_149723_5_ Lnet/minecraft/world/Explosion; L0 L1 5
+ MAXSTACK = 0
+ MAXLOCALS = 6
+
+ // access flags 0x1
+ public canReplace(Lnet/minecraft/world/World;IIIILnet/minecraft/item/ItemStack;)Z
+ L0
+ LINENUMBER 1023 L0
+ ALOAD 0
+ ALOAD 1
+ ILOAD 2
+ ILOAD 3
+ ILOAD 4
+ ILOAD 5
+ INVOKEVIRTUAL net/minecraft/block/Block.canPlaceBlockOnSide (Lnet/minecraft/world/World;IIII)Z
+ IRETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L1 0
+ LOCALVARIABLE p_149705_1_ Lnet/minecraft/world/World; L0 L1 1
+ LOCALVARIABLE p_149705_2_ I L0 L1 2
+ LOCALVARIABLE p_149705_3_ I L0 L1 3
+ LOCALVARIABLE p_149705_4_ I L0 L1 4
+ LOCALVARIABLE p_149705_5_ I L0 L1 5
+ LOCALVARIABLE p_149705_6_ Lnet/minecraft/item/ItemStack; L0 L1 6
+ MAXSTACK = 6
+ MAXLOCALS = 7
+
+ // access flags 0x1
+ public getRenderBlockPass()I
+ @Lcpw/mods/fml/relauncher/SideOnly;(value=Lcpw/mods/fml/relauncher/Side;.CLIENT)
+ L0
+ LINENUMBER 1032 L0
+ ICONST_0
+ IRETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L1 0
+ MAXSTACK = 1
+ MAXLOCALS = 1
+
+ // access flags 0x1
+ public canPlaceBlockOnSide(Lnet/minecraft/world/World;IIII)Z
+ L0
+ LINENUMBER 1040 L0
+ ALOAD 0
+ ALOAD 1
+ ILOAD 2
+ ILOAD 3
+ ILOAD 4
+ INVOKEVIRTUAL net/minecraft/block/Block.canPlaceBlockAt (Lnet/minecraft/world/World;III)Z
+ IRETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L1 0
+ LOCALVARIABLE p_149707_1_ Lnet/minecraft/world/World; L0 L1 1
+ LOCALVARIABLE p_149707_2_ I L0 L1 2
+ LOCALVARIABLE p_149707_3_ I L0 L1 3
+ LOCALVARIABLE p_149707_4_ I L0 L1 4
+ LOCALVARIABLE p_149707_5_ I L0 L1 5
+ MAXSTACK = 5
+ MAXLOCALS = 6
+
+ // access flags 0x1
+ public canPlaceBlockAt(Lnet/minecraft/world/World;III)Z
+ L0
+ LINENUMBER 1048 L0
+ ALOAD 1
+ ILOAD 2
+ ILOAD 3
+ ILOAD 4
+ INVOKEVIRTUAL net/minecraft/world/World.getBlock (III)Lnet/minecraft/block/Block;
+ ALOAD 1
+ ILOAD 2
+ ILOAD 3
+ ILOAD 4
+ INVOKEVIRTUAL net/minecraft/block/Block.isReplaceable (Lnet/minecraft/world/IBlockAccess;III)Z
+ IRETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L1 0
+ LOCALVARIABLE p_149742_1_ Lnet/minecraft/world/World; L0 L1 1
+ LOCALVARIABLE p_149742_2_ I L0 L1 2
+ LOCALVARIABLE p_149742_3_ I L0 L1 3
+ LOCALVARIABLE p_149742_4_ I L0 L1 4
+ MAXSTACK = 5
+ MAXLOCALS = 5
+
+ // access flags 0x1
+ public onBlockActivated(Lnet/minecraft/world/World;IIILnet/minecraft/entity/player/EntityPlayer;IFFF)Z
+ L0
+ LINENUMBER 1056 L0
+ ICONST_0
+ IRETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L1 0
+ LOCALVARIABLE p_149727_1_ Lnet/minecraft/world/World; L0 L1 1
+ LOCALVARIABLE p_149727_2_ I L0 L1 2
+ LOCALVARIABLE p_149727_3_ I L0 L1 3
+ LOCALVARIABLE p_149727_4_ I L0 L1 4
+ LOCALVARIABLE p_149727_5_ Lnet/minecraft/entity/player/EntityPlayer; L0 L1 5
+ LOCALVARIABLE p_149727_6_ I L0 L1 6
+ LOCALVARIABLE p_149727_7_ F L0 L1 7
+ LOCALVARIABLE p_149727_8_ F L0 L1 8
+ LOCALVARIABLE p_149727_9_ F L0 L1 9
+ MAXSTACK = 1
+ MAXLOCALS = 10
+
+ // access flags 0x1
+ public onEntityWalking(Lnet/minecraft/world/World;IIILnet/minecraft/entity/Entity;)V
+ L0
+ LINENUMBER 1062 L0
+ RETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L1 0
+ LOCALVARIABLE p_149724_1_ Lnet/minecraft/world/World; L0 L1 1
+ LOCALVARIABLE p_149724_2_ I L0 L1 2
+ LOCALVARIABLE p_149724_3_ I L0 L1 3
+ LOCALVARIABLE p_149724_4_ I L0 L1 4
+ LOCALVARIABLE p_149724_5_ Lnet/minecraft/entity/Entity; L0 L1 5
+ MAXSTACK = 0
+ MAXLOCALS = 6
+
+ // access flags 0x1
+ public onBlockPlaced(Lnet/minecraft/world/World;IIIIFFFI)I
+ L0
+ LINENUMBER 1069 L0
+ ILOAD 9
+ IRETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L1 0
+ LOCALVARIABLE p_149660_1_ Lnet/minecraft/world/World; L0 L1 1
+ LOCALVARIABLE p_149660_2_ I L0 L1 2
+ LOCALVARIABLE p_149660_3_ I L0 L1 3
+ LOCALVARIABLE p_149660_4_ I L0 L1 4
+ LOCALVARIABLE p_149660_5_ I L0 L1 5
+ LOCALVARIABLE p_149660_6_ F L0 L1 6
+ LOCALVARIABLE p_149660_7_ F L0 L1 7
+ LOCALVARIABLE p_149660_8_ F L0 L1 8
+ LOCALVARIABLE p_149660_9_ I L0 L1 9
+ MAXSTACK = 1
+ MAXLOCALS = 10
+
+ // access flags 0x1
+ public onBlockClicked(Lnet/minecraft/world/World;IIILnet/minecraft/entity/player/EntityPlayer;)V
+ L0
+ LINENUMBER 1075 L0
+ RETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L1 0
+ LOCALVARIABLE p_149699_1_ Lnet/minecraft/world/World; L0 L1 1
+ LOCALVARIABLE p_149699_2_ I L0 L1 2
+ LOCALVARIABLE p_149699_3_ I L0 L1 3
+ LOCALVARIABLE p_149699_4_ I L0 L1 4
+ LOCALVARIABLE p_149699_5_ Lnet/minecraft/entity/player/EntityPlayer; L0 L1 5
+ MAXSTACK = 0
+ MAXLOCALS = 6
+
+ // access flags 0x1
+ public velocityToAddToEntity(Lnet/minecraft/world/World;IIILnet/minecraft/entity/Entity;Lnet/minecraft/util/Vec3;)V
+ L0
+ LINENUMBER 1080 L0
+ RETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L1 0
+ LOCALVARIABLE p_149640_1_ Lnet/minecraft/world/World; L0 L1 1
+ LOCALVARIABLE p_149640_2_ I L0 L1 2
+ LOCALVARIABLE p_149640_3_ I L0 L1 3
+ LOCALVARIABLE p_149640_4_ I L0 L1 4
+ LOCALVARIABLE p_149640_5_ Lnet/minecraft/entity/Entity; L0 L1 5
+ LOCALVARIABLE p_149640_6_ Lnet/minecraft/util/Vec3; L0 L1 6
+ MAXSTACK = 0
+ MAXLOCALS = 7
+
+ // access flags 0x1
+ public setBlockBoundsBasedOnState(Lnet/minecraft/world/IBlockAccess;III)V
+ L0
+ LINENUMBER 1085 L0
+ RETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L1 0
+ LOCALVARIABLE p_149719_1_ Lnet/minecraft/world/IBlockAccess; L0 L1 1
+ LOCALVARIABLE p_149719_2_ I L0 L1 2
+ LOCALVARIABLE p_149719_3_ I L0 L1 3
+ LOCALVARIABLE p_149719_4_ I L0 L1 4
+ MAXSTACK = 0
+ MAXLOCALS = 5
+
+ // access flags 0x11
+ public final getBlockBoundsMinX()D
+ L0
+ LINENUMBER 1092 L0
+ ALOAD 0
+ GETFIELD net/minecraft/block/Block.minX : D
+ DRETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L1 0
+ MAXSTACK = 2
+ MAXLOCALS = 1
+
+ // access flags 0x11
+ public final getBlockBoundsMaxX()D
+ L0
+ LINENUMBER 1100 L0
+ ALOAD 0
+ GETFIELD net/minecraft/block/Block.maxX : D
+ DRETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L1 0
+ MAXSTACK = 2
+ MAXLOCALS = 1
+
+ // access flags 0x11
+ public final getBlockBoundsMinY()D
+ L0
+ LINENUMBER 1108 L0
+ ALOAD 0
+ GETFIELD net/minecraft/block/Block.minY : D
+ DRETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L1 0
+ MAXSTACK = 2
+ MAXLOCALS = 1
+
+ // access flags 0x11
+ public final getBlockBoundsMaxY()D
+ L0
+ LINENUMBER 1116 L0
+ ALOAD 0
+ GETFIELD net/minecraft/block/Block.maxY : D
+ DRETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L1 0
+ MAXSTACK = 2
+ MAXLOCALS = 1
+
+ // access flags 0x11
+ public final getBlockBoundsMinZ()D
+ L0
+ LINENUMBER 1124 L0
+ ALOAD 0
+ GETFIELD net/minecraft/block/Block.minZ : D
+ DRETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L1 0
+ MAXSTACK = 2
+ MAXLOCALS = 1
+
+ // access flags 0x11
+ public final getBlockBoundsMaxZ()D
+ L0
+ LINENUMBER 1132 L0
+ ALOAD 0
+ GETFIELD net/minecraft/block/Block.maxZ : D
+ DRETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L1 0
+ MAXSTACK = 2
+ MAXLOCALS = 1
+
+ // access flags 0x1
+ public getBlockColor()I
+ @Lcpw/mods/fml/relauncher/SideOnly;(value=Lcpw/mods/fml/relauncher/Side;.CLIENT)
+ L0
+ LINENUMBER 1138 L0
+ LDC 16777215
+ IRETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L1 0
+ MAXSTACK = 1
+ MAXLOCALS = 1
+
+ // access flags 0x1
+ public getRenderColor(I)I
+ @Lcpw/mods/fml/relauncher/SideOnly;(value=Lcpw/mods/fml/relauncher/Side;.CLIENT)
+ L0
+ LINENUMBER 1147 L0
+ LDC 16777215
+ IRETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L1 0
+ LOCALVARIABLE p_149741_1_ I L0 L1 1
+ MAXSTACK = 1
+ MAXLOCALS = 2
+
+ // access flags 0x1
+ public colorMultiplier(Lnet/minecraft/world/IBlockAccess;III)I
+ @Lcpw/mods/fml/relauncher/SideOnly;(value=Lcpw/mods/fml/relauncher/Side;.CLIENT)
+ L0
+ LINENUMBER 1157 L0
+ LDC 16777215
+ IRETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L1 0
+ LOCALVARIABLE p_149720_1_ Lnet/minecraft/world/IBlockAccess; L0 L1 1
+ LOCALVARIABLE p_149720_2_ I L0 L1 2
+ LOCALVARIABLE p_149720_3_ I L0 L1 3
+ LOCALVARIABLE p_149720_4_ I L0 L1 4
+ MAXSTACK = 1
+ MAXLOCALS = 5
+
+ // access flags 0x1
+ public isProvidingWeakPower(Lnet/minecraft/world/IBlockAccess;IIII)I
+ L0
+ LINENUMBER 1162 L0
+ ICONST_0
+ IRETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L1 0
+ LOCALVARIABLE p_149709_1_ Lnet/minecraft/world/IBlockAccess; L0 L1 1
+ LOCALVARIABLE p_149709_2_ I L0 L1 2
+ LOCALVARIABLE p_149709_3_ I L0 L1 3
+ LOCALVARIABLE p_149709_4_ I L0 L1 4
+ LOCALVARIABLE p_149709_5_ I L0 L1 5
+ MAXSTACK = 1
+ MAXLOCALS = 6
+
+ // access flags 0x1
+ public canProvidePower()Z
+ L0
+ LINENUMBER 1170 L0
+ ICONST_0
+ IRETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L1 0
+ MAXSTACK = 1
+ MAXLOCALS = 1
+
+ // access flags 0x1
+ public onEntityCollidedWithBlock(Lnet/minecraft/world/World;IIILnet/minecraft/entity/Entity;)V
+ L0
+ LINENUMBER 1176 L0
+ RETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L1 0
+ LOCALVARIABLE p_149670_1_ Lnet/minecraft/world/World; L0 L1 1
+ LOCALVARIABLE p_149670_2_ I L0 L1 2
+ LOCALVARIABLE p_149670_3_ I L0 L1 3
+ LOCALVARIABLE p_149670_4_ I L0 L1 4
+ LOCALVARIABLE p_149670_5_ Lnet/minecraft/entity/Entity; L0 L1 5
+ MAXSTACK = 0
+ MAXLOCALS = 6
+
+ // access flags 0x1
+ public isProvidingStrongPower(Lnet/minecraft/world/IBlockAccess;IIII)I
+ L0
+ LINENUMBER 1180 L0
+ ICONST_0
+ IRETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L1 0
+ LOCALVARIABLE p_149748_1_ Lnet/minecraft/world/IBlockAccess; L0 L1 1
+ LOCALVARIABLE p_149748_2_ I L0 L1 2
+ LOCALVARIABLE p_149748_3_ I L0 L1 3
+ LOCALVARIABLE p_149748_4_ I L0 L1 4
+ LOCALVARIABLE p_149748_5_ I L0 L1 5
+ MAXSTACK = 1
+ MAXLOCALS = 6
+
+ // access flags 0x1
+ public setBlockBoundsForItemRender()V
+ L0
+ LINENUMBER 1186 L0
+ RETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L1 0
+ MAXSTACK = 0
+ MAXLOCALS = 1
+
+ // access flags 0x1
+ public harvestBlock(Lnet/minecraft/world/World;Lnet/minecraft/entity/player/EntityPlayer;IIII)V
+ L0
+ LINENUMBER 1194 L0
+ ALOAD 2
+ GETSTATIC net/minecraft/stats/StatList.mineBlockStatArray : [Lnet/minecraft/stats/StatBase;
+ ALOAD 0
+ INVOKESTATIC net/minecraft/block/Block.getIdFromBlock (Lnet/minecraft/block/Block;)I
+ AALOAD
+ ICONST_1
+ INVOKEVIRTUAL net/minecraft/entity/player/EntityPlayer.addStat (Lnet/minecraft/stats/StatBase;I)V
+ L1
+ LINENUMBER 1195 L1
+ ALOAD 2
+ LDC 0.025
+ INVOKEVIRTUAL net/minecraft/entity/player/EntityPlayer.addExhaustion (F)V
+ L2
+ LINENUMBER 1197 L2
+ ALOAD 0
+ ALOAD 1
+ ALOAD 2
+ ILOAD 3
+ ILOAD 4
+ ILOAD 5
+ ILOAD 6
+ INVOKEVIRTUAL net/minecraft/block/Block.canSilkHarvest (Lnet/minecraft/world/World;Lnet/minecraft/entity/player/EntityPlayer;IIII)Z
+ IFEQ L3
+ ALOAD 2
+ INVOKESTATIC net/minecraft/enchantment/EnchantmentHelper.getSilkTouchModifier (Lnet/minecraft/entity/EntityLivingBase;)Z
+ IFEQ L3
+ L4
+ LINENUMBER 1199 L4
+ NEW java/util/ArrayList
+ DUP
+ INVOKESPECIAL java/util/ArrayList.<init> ()V
+ ASTORE 7
+ L5
+ LINENUMBER 1200 L5
+ ALOAD 0
+ ILOAD 6
+ INVOKEVIRTUAL net/minecraft/block/Block.createStackedBlock (I)Lnet/minecraft/item/ItemStack;
+ ASTORE 8
+ L6
+ LINENUMBER 1202 L6
+ ALOAD 8
+ IFNULL L7
+ L8
+ LINENUMBER 1204 L8
+ ALOAD 7
+ ALOAD 8
+ INVOKEVIRTUAL java/util/ArrayList.add (Ljava/lang/Object;)Z
+ POP
+ L7
+ LINENUMBER 1207 L7
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/World net/minecraft/entity/player/EntityPlayer I I I I java/util/ArrayList net/minecraft/item/ItemStack] []
+ ALOAD 7
+ ALOAD 1
+ ALOAD 0
+ ILOAD 3
+ ILOAD 4
+ ILOAD 5
+ ILOAD 6
+ ICONST_0
+ FCONST_1
+ ICONST_1
+ ALOAD 2
+ INVOKESTATIC net/minecraftforge/event/ForgeEventFactory.fireBlockHarvesting (Ljava/util/ArrayList;Lnet/minecraft/world/World;Lnet/minecraft/block/Block;IIIIIFZLnet/minecraft/entity/player/EntityPlayer;)F
+ POP
+ L9
+ LINENUMBER 1208 L9
+ ALOAD 7
+ INVOKEVIRTUAL java/util/ArrayList.iterator ()Ljava/util/Iterator;
+ ASTORE 9
+ L10
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/World net/minecraft/entity/player/EntityPlayer I I I I java/util/ArrayList net/minecraft/item/ItemStack java/util/Iterator] []
+ ALOAD 9
+ INVOKEINTERFACE java/util/Iterator.hasNext ()Z
+ IFEQ L11
+ ALOAD 9
+ INVOKEINTERFACE java/util/Iterator.next ()Ljava/lang/Object;
+ CHECKCAST net/minecraft/item/ItemStack
+ ASTORE 10
+ L12
+ LINENUMBER 1210 L12
+ ALOAD 0
+ ALOAD 1
+ ILOAD 3
+ ILOAD 4
+ ILOAD 5
+ ALOAD 10
+ INVOKEVIRTUAL net/minecraft/block/Block.dropBlockAsItem (Lnet/minecraft/world/World;IIILnet/minecraft/item/ItemStack;)V
+ L13
+ LINENUMBER 1211 L13
+ GOTO L10
+ L11
+ LINENUMBER 1212 L11
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/World net/minecraft/entity/player/EntityPlayer I I I I java/util/ArrayList net/minecraft/item/ItemStack java/util/Iterator] []
+ GOTO L14
+ L3
+ LINENUMBER 1215 L3
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/World net/minecraft/entity/player/EntityPlayer I I I I] []
+ ALOAD 0
+ GETFIELD net/minecraft/block/Block.harvesters : Ljava/lang/ThreadLocal;
+ ALOAD 2
+ INVOKEVIRTUAL java/lang/ThreadLocal.set (Ljava/lang/Object;)V
+ L15
+ LINENUMBER 1216 L15
+ ALOAD 2
+ INVOKESTATIC net/minecraft/enchantment/EnchantmentHelper.getFortuneModifier (Lnet/minecraft/entity/EntityLivingBase;)I
+ ISTORE 7
+ L16
+ LINENUMBER 1217 L16
+ ALOAD 0
+ ALOAD 1
+ ILOAD 3
+ ILOAD 4
+ ILOAD 5
+ ILOAD 6
+ ILOAD 7
+ INVOKEVIRTUAL net/minecraft/block/Block.dropBlockAsItem (Lnet/minecraft/world/World;IIIII)V
+ L17
+ LINENUMBER 1218 L17
+ ALOAD 0
+ GETFIELD net/minecraft/block/Block.harvesters : Ljava/lang/ThreadLocal;
+ ACONST_NULL
+ INVOKEVIRTUAL java/lang/ThreadLocal.set (Ljava/lang/Object;)V
+ L14
+ LINENUMBER 1220 L14
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/World net/minecraft/entity/player/EntityPlayer I I I I] []
+ RETURN
+ L18
+ LOCALVARIABLE is Lnet/minecraft/item/ItemStack; L12 L13 10
+ LOCALVARIABLE items Ljava/util/ArrayList; L5 L11 7
+ // signature Ljava/util/ArrayList<Lnet/minecraft/item/ItemStack;>;
+ // declaration: java.util.ArrayList<net.minecraft.item.ItemStack>
+ LOCALVARIABLE itemstack Lnet/minecraft/item/ItemStack; L6 L11 8
+ LOCALVARIABLE i1 I L16 L14 7
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L18 0
+ LOCALVARIABLE p_149636_1_ Lnet/minecraft/world/World; L0 L18 1
+ LOCALVARIABLE p_149636_2_ Lnet/minecraft/entity/player/EntityPlayer; L0 L18 2
+ LOCALVARIABLE p_149636_3_ I L0 L18 3
+ LOCALVARIABLE p_149636_4_ I L0 L18 4
+ LOCALVARIABLE p_149636_5_ I L0 L18 5
+ LOCALVARIABLE p_149636_6_ I L0 L18 6
+ MAXSTACK = 11
+ MAXLOCALS = 11
+
+ // access flags 0x4
+ protected canSilkHarvest()Z
+ L0
+ LINENUMBER 1227 L0
+ ALOAD 0
+ GETFIELD net/minecraft/block/Block.silk_check_meta : Ljava/lang/ThreadLocal;
+ INVOKEVIRTUAL java/lang/ThreadLocal.get ()Ljava/lang/Object;
+ CHECKCAST java/lang/Integer
+ ASTORE 1
+ L1
+ LINENUMBER 1228 L1
+ ALOAD 0
+ INVOKEVIRTUAL net/minecraft/block/Block.renderAsNormalBlock ()Z
+ IFEQ L2
+ ALOAD 0
+ ALOAD 1
+ IFNONNULL L3
+ ICONST_0
+ GOTO L4
+ L3
+ FRAME FULL [net/minecraft/block/Block java/lang/Integer] [net/minecraft/block/Block]
+ ALOAD 1
+ INVOKEVIRTUAL java/lang/Integer.intValue ()I
+ L4
+ FRAME FULL [net/minecraft/block/Block java/lang/Integer] [net/minecraft/block/Block I]
+ INVOKEVIRTUAL net/minecraft/block/Block.hasTileEntity (I)Z
+ IFNE L2
+ ICONST_1
+ GOTO L5
+ L2
+ FRAME FULL [net/minecraft/block/Block java/lang/Integer] []
+ ICONST_0
+ L5
+ FRAME FULL [net/minecraft/block/Block java/lang/Integer] [I]
+ IRETURN
+ L6
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L6 0
+ LOCALVARIABLE meta Ljava/lang/Integer; L1 L6 1
+ MAXSTACK = 2
+ MAXLOCALS = 2
+
+ // access flags 0x4
+ protected createStackedBlock(I)Lnet/minecraft/item/ItemStack;
+ L0
+ LINENUMBER 1237 L0
+ ICONST_0
+ ISTORE 2
+ L1
+ LINENUMBER 1238 L1
+ ALOAD 0
+ INVOKESTATIC net/minecraft/item/Item.getItemFromBlock (Lnet/minecraft/block/Block;)Lnet/minecraft/item/Item;
+ ASTORE 3
+ L2
+ LINENUMBER 1240 L2
+ ALOAD 3
+ IFNULL L3
+ ALOAD 3
+ INVOKEVIRTUAL net/minecraft/item/Item.getHasSubtypes ()Z
+ IFEQ L3
+ L4
+ LINENUMBER 1242 L4
+ ILOAD 1
+ ISTORE 2
+ L3
+ LINENUMBER 1245 L3
+ FRAME FULL [net/minecraft/block/Block I I net/minecraft/item/Item] []
+ NEW net/minecraft/item/ItemStack
+ DUP
+ ALOAD 3
+ ICONST_1
+ ILOAD 2
+ INVOKESPECIAL net/minecraft/item/ItemStack.<init> (Lnet/minecraft/item/Item;II)V
+ ARETURN
+ L5
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L5 0
+ LOCALVARIABLE p_149644_1_ I L0 L5 1
+ LOCALVARIABLE j I L1 L5 2
+ LOCALVARIABLE item Lnet/minecraft/item/Item; L2 L5 3
+ MAXSTACK = 5
+ MAXLOCALS = 4
+
+ // access flags 0x1
+ public quantityDroppedWithBonus(ILjava/util/Random;)I
+ L0
+ LINENUMBER 1253 L0
+ ALOAD 0
+ ALOAD 2
+ INVOKEVIRTUAL net/minecraft/block/Block.quantityDropped (Ljava/util/Random;)I
+ IRETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L1 0
+ LOCALVARIABLE p_149679_1_ I L0 L1 1
+ LOCALVARIABLE p_149679_2_ Ljava/util/Random; L0 L1 2
+ MAXSTACK = 2
+ MAXLOCALS = 3
+
+ // access flags 0x1
+ public canBlockStay(Lnet/minecraft/world/World;III)Z
+ L0
+ LINENUMBER 1261 L0
+ ICONST_1
+ IRETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L1 0
+ LOCALVARIABLE p_149718_1_ Lnet/minecraft/world/World; L0 L1 1
+ LOCALVARIABLE p_149718_2_ I L0 L1 2
+ LOCALVARIABLE p_149718_3_ I L0 L1 3
+ LOCALVARIABLE p_149718_4_ I L0 L1 4
+ MAXSTACK = 1
+ MAXLOCALS = 5
+
+ // access flags 0x1
+ public onBlockPlacedBy(Lnet/minecraft/world/World;IIILnet/minecraft/entity/EntityLivingBase;Lnet/minecraft/item/ItemStack;)V
+ L0
+ LINENUMBER 1267 L0
+ RETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L1 0
+ LOCALVARIABLE p_149689_1_ Lnet/minecraft/world/World; L0 L1 1
+ LOCALVARIABLE p_149689_2_ I L0 L1 2
+ LOCALVARIABLE p_149689_3_ I L0 L1 3
+ LOCALVARIABLE p_149689_4_ I L0 L1 4
+ LOCALVARIABLE p_149689_5_ Lnet/minecraft/entity/EntityLivingBase; L0 L1 5
+ LOCALVARIABLE p_149689_6_ Lnet/minecraft/item/ItemStack; L0 L1 6
+ MAXSTACK = 0
+ MAXLOCALS = 7
+
+ // access flags 0x1
+ public onPostBlockPlaced(Lnet/minecraft/world/World;IIII)V
+ L0
+ LINENUMBER 1272 L0
+ RETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L1 0
+ LOCALVARIABLE p_149714_1_ Lnet/minecraft/world/World; L0 L1 1
+ LOCALVARIABLE p_149714_2_ I L0 L1 2
+ LOCALVARIABLE p_149714_3_ I L0 L1 3
+ LOCALVARIABLE p_149714_4_ I L0 L1 4
+ LOCALVARIABLE p_149714_5_ I L0 L1 5
+ MAXSTACK = 0
+ MAXLOCALS = 6
+
+ // access flags 0x1
+ public setBlockName(Ljava/lang/String;)Lnet/minecraft/block/Block;
+ L0
+ LINENUMBER 1279 L0
+ ALOAD 0
+ ALOAD 1
+ PUTFIELD net/minecraft/block/Block.unlocalizedName : Ljava/lang/String;
+ L1
+ LINENUMBER 1280 L1
+ ALOAD 0
+ ARETURN
+ L2
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L2 0
+ LOCALVARIABLE p_149663_1_ Ljava/lang/String; L0 L2 1
+ MAXSTACK = 2
+ MAXLOCALS = 2
+
+ // access flags 0x1
+ public getLocalizedName()Ljava/lang/String;
+ L0
+ LINENUMBER 1288 L0
+ NEW java/lang/StringBuilder
+ DUP
+ INVOKESPECIAL java/lang/StringBuilder.<init> ()V
+ ALOAD 0
+ INVOKEVIRTUAL net/minecraft/block/Block.getUnlocalizedName ()Ljava/lang/String;
+ INVOKEVIRTUAL java/lang/StringBuilder.append (Ljava/lang/String;)Ljava/lang/StringBuilder;
+ LDC ".name"
+ INVOKEVIRTUAL java/lang/StringBuilder.append (Ljava/lang/String;)Ljava/lang/StringBuilder;
+ INVOKEVIRTUAL java/lang/StringBuilder.toString ()Ljava/lang/String;
+ INVOKESTATIC net/minecraft/util/StatCollector.translateToLocal (Ljava/lang/String;)Ljava/lang/String;
+ ARETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L1 0
+ MAXSTACK = 2
+ MAXLOCALS = 1
+
+ // access flags 0x1
+ public getUnlocalizedName()Ljava/lang/String;
+ L0
+ LINENUMBER 1296 L0
+ NEW java/lang/StringBuilder
+ DUP
+ INVOKESPECIAL java/lang/StringBuilder.<init> ()V
+ LDC "tile."
+ INVOKEVIRTUAL java/lang/StringBuilder.append (Ljava/lang/String;)Ljava/lang/StringBuilder;
+ ALOAD 0
+ GETFIELD net/minecraft/block/Block.unlocalizedName : Ljava/lang/String;
+ INVOKEVIRTUAL java/lang/StringBuilder.append (Ljava/lang/String;)Ljava/lang/StringBuilder;
+ INVOKEVIRTUAL java/lang/StringBuilder.toString ()Ljava/lang/String;
+ ARETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L1 0
+ MAXSTACK = 2
+ MAXLOCALS = 1
+
+ // access flags 0x1
+ public onBlockEventReceived(Lnet/minecraft/world/World;IIIII)Z
+ L0
+ LINENUMBER 1301 L0
+ ICONST_0
+ IRETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L1 0
+ LOCALVARIABLE p_149696_1_ Lnet/minecraft/world/World; L0 L1 1
+ LOCALVARIABLE p_149696_2_ I L0 L1 2
+ LOCALVARIABLE p_149696_3_ I L0 L1 3
+ LOCALVARIABLE p_149696_4_ I L0 L1 4
+ LOCALVARIABLE p_149696_5_ I L0 L1 5
+ LOCALVARIABLE p_149696_6_ I L0 L1 6
+ MAXSTACK = 1
+ MAXLOCALS = 7
+
+ // access flags 0x1
+ public getEnableStats()Z
+ L0
+ LINENUMBER 1309 L0
+ ALOAD 0
+ GETFIELD net/minecraft/block/Block.enableStats : Z
+ IRETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L1 0
+ MAXSTACK = 1
+ MAXLOCALS = 1
+
+ // access flags 0x4
+ protected disableStats()Lnet/minecraft/block/Block;
+ L0
+ LINENUMBER 1317 L0
+ ALOAD 0
+ ICONST_0
+ PUTFIELD net/minecraft/block/Block.enableStats : Z
+ L1
+ LINENUMBER 1318 L1
+ ALOAD 0
+ ARETURN
+ L2
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L2 0
+ MAXSTACK = 2
+ MAXLOCALS = 1
+
+ // access flags 0x1
+ public getMobilityFlag()I
+ L0
+ LINENUMBER 1327 L0
+ ALOAD 0
+ GETFIELD net/minecraft/block/Block.blockMaterial : Lnet/minecraft/block/material/Material;
+ INVOKEVIRTUAL net/minecraft/block/material/Material.getMaterialMobility ()I
+ IRETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L1 0
+ MAXSTACK = 1
+ MAXLOCALS = 1
+
+ // access flags 0x1
+ public getAmbientOcclusionLightValue()F
+ @Lcpw/mods/fml/relauncher/SideOnly;(value=Lcpw/mods/fml/relauncher/Side;.CLIENT)
+ L0
+ LINENUMBER 1336 L0
+ ALOAD 0
+ INVOKEVIRTUAL net/minecraft/block/Block.isBlockNormalCube ()Z
+ IFEQ L1
+ LDC 0.2
+ GOTO L2
+ L1
+ FRAME FULL [net/minecraft/block/Block] []
+ FCONST_1
+ L2
+ FRAME FULL [net/minecraft/block/Block] [F]
+ FRETURN
+ L3
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L3 0
+ MAXSTACK = 1
+ MAXLOCALS = 1
+
+ // access flags 0x1
+ public onFallenUpon(Lnet/minecraft/world/World;IIILnet/minecraft/entity/Entity;F)V
+ L0
+ LINENUMBER 1342 L0
+ RETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L1 0
+ LOCALVARIABLE p_149746_1_ Lnet/minecraft/world/World; L0 L1 1
+ LOCALVARIABLE p_149746_2_ I L0 L1 2
+ LOCALVARIABLE p_149746_3_ I L0 L1 3
+ LOCALVARIABLE p_149746_4_ I L0 L1 4
+ LOCALVARIABLE p_149746_5_ Lnet/minecraft/entity/Entity; L0 L1 5
+ LOCALVARIABLE p_149746_6_ F L0 L1 6
+ MAXSTACK = 0
+ MAXLOCALS = 7
+
+ // access flags 0x1
+ public getItem(Lnet/minecraft/world/World;III)Lnet/minecraft/item/Item;
+ @Lcpw/mods/fml/relauncher/SideOnly;(value=Lcpw/mods/fml/relauncher/Side;.CLIENT)
+ L0
+ LINENUMBER 1350 L0
+ ALOAD 0
+ INVOKESTATIC net/minecraft/item/Item.getItemFromBlock (Lnet/minecraft/block/Block;)Lnet/minecraft/item/Item;
+ ARETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L1 0
+ LOCALVARIABLE p_149694_1_ Lnet/minecraft/world/World; L0 L1 1
+ LOCALVARIABLE p_149694_2_ I L0 L1 2
+ LOCALVARIABLE p_149694_3_ I L0 L1 3
+ LOCALVARIABLE p_149694_4_ I L0 L1 4
+ MAXSTACK = 1
+ MAXLOCALS = 5
+
+ // access flags 0x1
+ public getDamageValue(Lnet/minecraft/world/World;III)I
+ L0
+ LINENUMBER 1358 L0
+ ALOAD 0
+ ALOAD 1
+ ILOAD 2
+ ILOAD 3
+ ILOAD 4
+ INVOKEVIRTUAL net/minecraft/world/World.getBlockMetadata (III)I
+ INVOKEVIRTUAL net/minecraft/block/Block.damageDropped (I)I
+ IRETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L1 0
+ LOCALVARIABLE p_149643_1_ Lnet/minecraft/world/World; L0 L1 1
+ LOCALVARIABLE p_149643_2_ I L0 L1 2
+ LOCALVARIABLE p_149643_3_ I L0 L1 3
+ LOCALVARIABLE p_149643_4_ I L0 L1 4
+ MAXSTACK = 5
+ MAXLOCALS = 5
+
+ // access flags 0x1
+ public getSubBlocks(Lnet/minecraft/item/Item;Lnet/minecraft/creativetab/CreativeTabs;Ljava/util/List;)V
+ @Lcpw/mods/fml/relauncher/SideOnly;(value=Lcpw/mods/fml/relauncher/Side;.CLIENT)
+ L0
+ LINENUMBER 1367 L0
+ ALOAD 3
+ NEW net/minecraft/item/ItemStack
+ DUP
+ ALOAD 1
+ ICONST_1
+ ICONST_0
+ INVOKESPECIAL net/minecraft/item/ItemStack.<init> (Lnet/minecraft/item/Item;II)V
+ INVOKEINTERFACE java/util/List.add (Ljava/lang/Object;)Z
+ POP
+ L1
+ LINENUMBER 1368 L1
+ RETURN
+ L2
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L2 0
+ LOCALVARIABLE p_149666_1_ Lnet/minecraft/item/Item; L0 L2 1
+ LOCALVARIABLE p_149666_2_ Lnet/minecraft/creativetab/CreativeTabs; L0 L2 2
+ LOCALVARIABLE p_149666_3_ Ljava/util/List; L0 L2 3
+ MAXSTACK = 6
+ MAXLOCALS = 4
+
+ // access flags 0x1
+ public setCreativeTab(Lnet/minecraft/creativetab/CreativeTabs;)Lnet/minecraft/block/Block;
+ L0
+ LINENUMBER 1372 L0
+ ALOAD 0
+ ALOAD 1
+ PUTFIELD net/minecraft/block/Block.displayOnCreativeTab : Lnet/minecraft/creativetab/CreativeTabs;
+ L1
+ LINENUMBER 1373 L1
+ ALOAD 0
+ ARETURN
+ L2
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L2 0
+ LOCALVARIABLE p_149647_1_ Lnet/minecraft/creativetab/CreativeTabs; L0 L2 1
+ MAXSTACK = 2
+ MAXLOCALS = 2
+
+ // access flags 0x1
+ public onBlockHarvested(Lnet/minecraft/world/World;IIIILnet/minecraft/entity/player/EntityPlayer;)V
+ L0
+ LINENUMBER 1379 L0
+ RETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L1 0
+ LOCALVARIABLE p_149681_1_ Lnet/minecraft/world/World; L0 L1 1
+ LOCALVARIABLE p_149681_2_ I L0 L1 2
+ LOCALVARIABLE p_149681_3_ I L0 L1 3
+ LOCALVARIABLE p_149681_4_ I L0 L1 4
+ LOCALVARIABLE p_149681_5_ I L0 L1 5
+ LOCALVARIABLE p_149681_6_ Lnet/minecraft/entity/player/EntityPlayer; L0 L1 6
+ MAXSTACK = 0
+ MAXLOCALS = 7
+
+ // access flags 0x1
+ public getCreativeTabToDisplayOn()Lnet/minecraft/creativetab/CreativeTabs;
+ @Lcpw/mods/fml/relauncher/SideOnly;(value=Lcpw/mods/fml/relauncher/Side;.CLIENT)
+ L0
+ LINENUMBER 1387 L0
+ ALOAD 0
+ GETFIELD net/minecraft/block/Block.displayOnCreativeTab : Lnet/minecraft/creativetab/CreativeTabs;
+ ARETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L1 0
+ MAXSTACK = 1
+ MAXLOCALS = 1
+
+ // access flags 0x1
+ public onBlockPreDestroy(Lnet/minecraft/world/World;IIII)V
+ L0
+ LINENUMBER 1394 L0
+ RETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L1 0
+ LOCALVARIABLE p_149725_1_ Lnet/minecraft/world/World; L0 L1 1
+ LOCALVARIABLE p_149725_2_ I L0 L1 2
+ LOCALVARIABLE p_149725_3_ I L0 L1 3
+ LOCALVARIABLE p_149725_4_ I L0 L1 4
+ LOCALVARIABLE p_149725_5_ I L0 L1 5
+ MAXSTACK = 0
+ MAXLOCALS = 6
+
+ // access flags 0x1
+ public fillWithRain(Lnet/minecraft/world/World;III)V
+ L0
+ LINENUMBER 1399 L0
+ RETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L1 0
+ LOCALVARIABLE p_149639_1_ Lnet/minecraft/world/World; L0 L1 1
+ LOCALVARIABLE p_149639_2_ I L0 L1 2
+ LOCALVARIABLE p_149639_3_ I L0 L1 3
+ LOCALVARIABLE p_149639_4_ I L0 L1 4
+ MAXSTACK = 0
+ MAXLOCALS = 5
+
+ // access flags 0x1
+ public isFlowerPot()Z
+ @Lcpw/mods/fml/relauncher/SideOnly;(value=Lcpw/mods/fml/relauncher/Side;.CLIENT)
+ L0
+ LINENUMBER 1407 L0
+ ICONST_0
+ IRETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L1 0
+ MAXSTACK = 1
+ MAXLOCALS = 1
+
+ // access flags 0x1
+ public func_149698_L()Z
+ L0
+ LINENUMBER 1412 L0
+ ICONST_1
+ IRETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L1 0
+ MAXSTACK = 1
+ MAXLOCALS = 1
+
+ // access flags 0x1
+ public canDropFromExplosion(Lnet/minecraft/world/Explosion;)Z
+ L0
+ LINENUMBER 1420 L0
+ ICONST_1
+ IRETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L1 0
+ LOCALVARIABLE p_149659_1_ Lnet/minecraft/world/Explosion; L0 L1 1
+ MAXSTACK = 1
+ MAXLOCALS = 2
+
+ // access flags 0x1
+ public isAssociatedBlock(Lnet/minecraft/block/Block;)Z
+ L0
+ LINENUMBER 1425 L0
+ ALOAD 0
+ ALOAD 1
+ IF_ACMPNE L1
+ ICONST_1
+ GOTO L2
+ L1
+ FRAME FULL [net/minecraft/block/Block net/minecraft/block/Block] []
+ ICONST_0
+ L2
+ FRAME FULL [net/minecraft/block/Block net/minecraft/block/Block] [I]
+ IRETURN
+ L3
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L3 0
+ LOCALVARIABLE p_149667_1_ Lnet/minecraft/block/Block; L0 L3 1
+ MAXSTACK = 2
+ MAXLOCALS = 2
+
+ // access flags 0x9
+ public static isEqualTo(Lnet/minecraft/block/Block;Lnet/minecraft/block/Block;)Z
+ L0
+ LINENUMBER 1430 L0
+ ALOAD 0
+ IFNULL L1
+ ALOAD 1
+ IFNULL L1
+ ALOAD 0
+ ALOAD 1
+ IF_ACMPNE L2
+ ICONST_1
+ GOTO L3
+ L2
+ FRAME FULL [net/minecraft/block/Block net/minecraft/block/Block] []
+ ALOAD 0
+ ALOAD 1
+ INVOKEVIRTUAL net/minecraft/block/Block.isAssociatedBlock (Lnet/minecraft/block/Block;)Z
+ GOTO L3
+ L1
+ FRAME FULL [net/minecraft/block/Block net/minecraft/block/Block] []
+ ICONST_0
+ L3
+ FRAME FULL [net/minecraft/block/Block net/minecraft/block/Block] [I]
+ IRETURN
+ L4
+ LOCALVARIABLE p_149680_0_ Lnet/minecraft/block/Block; L0 L4 0
+ LOCALVARIABLE p_149680_1_ Lnet/minecraft/block/Block; L0 L4 1
+ MAXSTACK = 2
+ MAXLOCALS = 2
+
+ // access flags 0x1
+ public hasComparatorInputOverride()Z
+ L0
+ LINENUMBER 1439 L0
+ ICONST_0
+ IRETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L1 0
+ MAXSTACK = 1
+ MAXLOCALS = 1
+
+ // access flags 0x1
+ public getComparatorInputOverride(Lnet/minecraft/world/World;IIII)I
+ L0
+ LINENUMBER 1448 L0
+ ICONST_0
+ IRETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L1 0
+ LOCALVARIABLE p_149736_1_ Lnet/minecraft/world/World; L0 L1 1
+ LOCALVARIABLE p_149736_2_ I L0 L1 2
+ LOCALVARIABLE p_149736_3_ I L0 L1 3
+ LOCALVARIABLE p_149736_4_ I L0 L1 4
+ LOCALVARIABLE p_149736_5_ I L0 L1 5
+ MAXSTACK = 1
+ MAXLOCALS = 6
+
+ // access flags 0x1
+ public setBlockTextureName(Ljava/lang/String;)Lnet/minecraft/block/Block;
+ L0
+ LINENUMBER 1453 L0
+ ALOAD 0
+ ALOAD 1
+ PUTFIELD net/minecraft/block/Block.textureName : Ljava/lang/String;
+ L1
+ LINENUMBER 1454 L1
+ ALOAD 0
+ ARETURN
+ L2
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L2 0
+ LOCALVARIABLE p_149658_1_ Ljava/lang/String; L0 L2 1
+ MAXSTACK = 2
+ MAXLOCALS = 2
+
+ // access flags 0x4
+ protected getTextureName()Ljava/lang/String;
+ @Lcpw/mods/fml/relauncher/SideOnly;(value=Lcpw/mods/fml/relauncher/Side;.CLIENT)
+ L0
+ LINENUMBER 1460 L0
+ ALOAD 0
+ GETFIELD net/minecraft/block/Block.textureName : Ljava/lang/String;
+ IFNONNULL L1
+ NEW java/lang/StringBuilder
+ DUP
+ INVOKESPECIAL java/lang/StringBuilder.<init> ()V
+ LDC "MISSING_ICON_BLOCK_"
+ INVOKEVIRTUAL java/lang/StringBuilder.append (Ljava/lang/String;)Ljava/lang/StringBuilder;
+ ALOAD 0
+ INVOKESTATIC net/minecraft/block/Block.getIdFromBlock (Lnet/minecraft/block/Block;)I
+ INVOKEVIRTUAL java/lang/StringBuilder.append (I)Ljava/lang/StringBuilder;
+ LDC "_"
+ INVOKEVIRTUAL java/lang/StringBuilder.append (Ljava/lang/String;)Ljava/lang/StringBuilder;
+ ALOAD 0
+ GETFIELD net/minecraft/block/Block.unlocalizedName : Ljava/lang/String;
+ INVOKEVIRTUAL java/lang/StringBuilder.append (Ljava/lang/String;)Ljava/lang/StringBuilder;
+ INVOKEVIRTUAL java/lang/StringBuilder.toString ()Ljava/lang/String;
+ GOTO L2
+ L1
+ FRAME FULL [net/minecraft/block/Block] []
+ ALOAD 0
+ GETFIELD net/minecraft/block/Block.textureName : Ljava/lang/String;
+ L2
+ FRAME FULL [net/minecraft/block/Block] [java/lang/String]
+ ARETURN
+ L3
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L3 0
+ MAXSTACK = 2
+ MAXLOCALS = 1
+
+ // access flags 0x1
+ public func_149735_b(II)Lnet/minecraft/util/IIcon;
+ @Lcpw/mods/fml/relauncher/SideOnly;(value=Lcpw/mods/fml/relauncher/Side;.CLIENT)
+ L0
+ LINENUMBER 1466 L0
+ ALOAD 0
+ ILOAD 1
+ ILOAD 2
+ INVOKEVIRTUAL net/minecraft/block/Block.getIcon (II)Lnet/minecraft/util/IIcon;
+ ARETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L1 0
+ LOCALVARIABLE p_149735_1_ I L0 L1 1
+ LOCALVARIABLE p_149735_2_ I L0 L1 2
+ MAXSTACK = 3
+ MAXLOCALS = 3
+
+ // access flags 0x1
+ public registerBlockIcons(Lnet/minecraft/client/renderer/texture/IIconRegister;)V
+ @Lcpw/mods/fml/relauncher/SideOnly;(value=Lcpw/mods/fml/relauncher/Side;.CLIENT)
+ L0
+ LINENUMBER 1472 L0
+ ALOAD 0
+ ALOAD 1
+ ALOAD 0
+ INVOKEVIRTUAL net/minecraft/block/Block.getTextureName ()Ljava/lang/String;
+ INVOKEINTERFACE net/minecraft/client/renderer/texture/IIconRegister.registerIcon (Ljava/lang/String;)Lnet/minecraft/util/IIcon;
+ PUTFIELD net/minecraft/block/Block.blockIcon : Lnet/minecraft/util/IIcon;
+ L1
+ LINENUMBER 1473 L1
+ RETURN
+ L2
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L2 0
+ LOCALVARIABLE p_149651_1_ Lnet/minecraft/client/renderer/texture/IIconRegister; L0 L2 1
+ MAXSTACK = 3
+ MAXLOCALS = 2
+
+ // access flags 0x1
+ public getItemIconName()Ljava/lang/String;
+ @Lcpw/mods/fml/relauncher/SideOnly;(value=Lcpw/mods/fml/relauncher/Side;.CLIENT)
+ L0
+ LINENUMBER 1481 L0
+ ACONST_NULL
+ ARETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L1 0
+ MAXSTACK = 1
+ MAXLOCALS = 1
+
+ // access flags 0x1
+ public getLightValue(Lnet/minecraft/world/IBlockAccess;III)I
+ L0
+ LINENUMBER 1499 L0
+ ALOAD 1
+ ILOAD 2
+ ILOAD 3
+ ILOAD 4
+ INVOKEINTERFACE net/minecraft/world/IBlockAccess.getBlock (III)Lnet/minecraft/block/Block;
+ ASTORE 5
+ L1
+ LINENUMBER 1500 L1
+ ALOAD 5
+ ALOAD 0
+ IF_ACMPEQ L2
+ L3
+ LINENUMBER 1502 L3
+ ALOAD 5
+ ALOAD 1
+ ILOAD 2
+ ILOAD 3
+ ILOAD 4
+ INVOKEVIRTUAL net/minecraft/block/Block.getLightValue (Lnet/minecraft/world/IBlockAccess;III)I
+ IRETURN
+ L2
+ LINENUMBER 1507 L2
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/IBlockAccess I I I net/minecraft/block/Block] []
+ ALOAD 0
+ INVOKEVIRTUAL net/minecraft/block/Block.getLightValue ()I
+ IRETURN
+ L4
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L4 0
+ LOCALVARIABLE world Lnet/minecraft/world/IBlockAccess; L0 L4 1
+ LOCALVARIABLE x I L0 L4 2
+ LOCALVARIABLE y I L0 L4 3
+ LOCALVARIABLE z I L0 L4 4
+ LOCALVARIABLE block Lnet/minecraft/block/Block; L1 L4 5
+ MAXSTACK = 5
+ MAXLOCALS = 6
+
+ // access flags 0x1
+ public isLadder(Lnet/minecraft/world/IBlockAccess;IIILnet/minecraft/entity/EntityLivingBase;)Z
+ L0
+ LINENUMBER 1522 L0
+ ICONST_0
+ IRETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L1 0
+ LOCALVARIABLE world Lnet/minecraft/world/IBlockAccess; L0 L1 1
+ LOCALVARIABLE x I L0 L1 2
+ LOCALVARIABLE y I L0 L1 3
+ LOCALVARIABLE z I L0 L1 4
+ LOCALVARIABLE entity Lnet/minecraft/entity/EntityLivingBase; L0 L1 5
+ MAXSTACK = 1
+ MAXLOCALS = 6
+
+ // access flags 0x1
+ public isNormalCube(Lnet/minecraft/world/IBlockAccess;III)Z
+ L0
+ LINENUMBER 1538 L0
+ ALOAD 0
+ INVOKEVIRTUAL net/minecraft/block/Block.getMaterial ()Lnet/minecraft/block/material/Material;
+ INVOKEVIRTUAL net/minecraft/block/material/Material.isOpaque ()Z
+ IFEQ L1
+ ALOAD 0
+ INVOKEVIRTUAL net/minecraft/block/Block.renderAsNormalBlock ()Z
+ IFEQ L1
+ ALOAD 0
+ INVOKEVIRTUAL net/minecraft/block/Block.canProvidePower ()Z
+ IFNE L1
+ ICONST_1
+ GOTO L2
+ L1
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/IBlockAccess I I I] []
+ ICONST_0
+ L2
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/IBlockAccess I I I] [I]
+ IRETURN
+ L3
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L3 0
+ LOCALVARIABLE world Lnet/minecraft/world/IBlockAccess; L0 L3 1
+ LOCALVARIABLE x I L0 L3 2
+ LOCALVARIABLE y I L0 L3 3
+ LOCALVARIABLE z I L0 L3 4
+ MAXSTACK = 1
+ MAXLOCALS = 5
+
+ // access flags 0x1
+ public isSideSolid(Lnet/minecraft/world/IBlockAccess;IIILnet/minecraftforge/common/util/ForgeDirection;)Z
+ L0
+ LINENUMBER 1553 L0
+ ALOAD 1
+ ILOAD 2
+ ILOAD 3
+ ILOAD 4
+ INVOKEINTERFACE net/minecraft/world/IBlockAccess.getBlockMetadata (III)I
+ ISTORE 6
+ L1
+ LINENUMBER 1555 L1
+ ALOAD 0
+ INSTANCEOF net/minecraft/block/BlockSlab
+ IFEQ L2
+ L3
+ LINENUMBER 1557 L3
+ ILOAD 6
+ BIPUSH 8
+ IAND
+ BIPUSH 8
+ IF_ICMPNE L4
+ ALOAD 5
+ GETSTATIC net/minecraftforge/common/util/ForgeDirection.UP : Lnet/minecraftforge/common/util/ForgeDirection;
+ IF_ACMPEQ L5
+ L4
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/IBlockAccess I I I net/minecraftforge/common/util/ForgeDirection I] []
+ ALOAD 0
+ INVOKEVIRTUAL net/minecraft/block/Block.func_149730_j ()Z
+ IFEQ L6
+ L5
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/IBlockAccess I I I net/minecraftforge/common/util/ForgeDirection I] []
+ ICONST_1
+ GOTO L7
+ L6
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/IBlockAccess I I I net/minecraftforge/common/util/ForgeDirection I] []
+ ICONST_0
+ L7
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/IBlockAccess I I I net/minecraftforge/common/util/ForgeDirection I] [I]
+ IRETURN
+ L2
+ LINENUMBER 1559 L2
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/IBlockAccess I I I net/minecraftforge/common/util/ForgeDirection I] []
+ ALOAD 0
+ INSTANCEOF net/minecraft/block/BlockFarmland
+ IFEQ L8
+ L9
+ LINENUMBER 1561 L9
+ ALOAD 5
+ GETSTATIC net/minecraftforge/common/util/ForgeDirection.DOWN : Lnet/minecraftforge/common/util/ForgeDirection;
+ IF_ACMPEQ L10
+ ALOAD 5
+ GETSTATIC net/minecraftforge/common/util/ForgeDirection.UP : Lnet/minecraftforge/common/util/ForgeDirection;
+ IF_ACMPEQ L10
+ ICONST_1
+ GOTO L11
+ L10
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/IBlockAccess I I I net/minecraftforge/common/util/ForgeDirection I] []
+ ICONST_0
+ L11
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/IBlockAccess I I I net/minecraftforge/common/util/ForgeDirection I] [I]
+ IRETURN
+ L8
+ LINENUMBER 1563 L8
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/IBlockAccess I I I net/minecraftforge/common/util/ForgeDirection I] []
+ ALOAD 0
+ INSTANCEOF net/minecraft/block/BlockStairs
+ IFEQ L12
+ L13
+ LINENUMBER 1565 L13
+ ILOAD 6
+ ICONST_4
+ IAND
+ IFEQ L14
+ ICONST_1
+ GOTO L15
+ L14
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/IBlockAccess I I I net/minecraftforge/common/util/ForgeDirection I] []
+ ICONST_0
+ L15
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/IBlockAccess I I I net/minecraftforge/common/util/ForgeDirection I] [I]
+ ISTORE 7
+ L16
+ LINENUMBER 1566 L16
+ ILOAD 6
+ ICONST_3
+ IAND
+ ALOAD 5
+ INVOKEVIRTUAL net/minecraftforge/common/util/ForgeDirection.ordinal ()I
+ IADD
+ ICONST_5
+ IF_ICMPEQ L17
+ ALOAD 5
+ GETSTATIC net/minecraftforge/common/util/ForgeDirection.UP : Lnet/minecraftforge/common/util/ForgeDirection;
+ IF_ACMPNE L18
+ ILOAD 7
+ IFEQ L18
+ L17
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/IBlockAccess I I I net/minecraftforge/common/util/ForgeDirection I I] []
+ ICONST_1
+ GOTO L19
+ L18
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/IBlockAccess I I I net/minecraftforge/common/util/ForgeDirection I I] []
+ ICONST_0
+ L19
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/IBlockAccess I I I net/minecraftforge/common/util/ForgeDirection I I] [I]
+ IRETURN
+ L12
+ LINENUMBER 1568 L12
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/IBlockAccess I I I net/minecraftforge/common/util/ForgeDirection I] []
+ ALOAD 0
+ INSTANCEOF net/minecraft/block/BlockSnow
+ IFEQ L20
+ L21
+ LINENUMBER 1570 L21
+ ILOAD 6
+ BIPUSH 7
+ IAND
+ BIPUSH 7
+ IF_ICMPNE L22
+ ICONST_1
+ GOTO L23
+ L22
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/IBlockAccess I I I net/minecraftforge/common/util/ForgeDirection I] []
+ ICONST_0
+ L23
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/IBlockAccess I I I net/minecraftforge/common/util/ForgeDirection I] [I]
+ IRETURN
+ L20
+ LINENUMBER 1572 L20
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/IBlockAccess I I I net/minecraftforge/common/util/ForgeDirection I] []
+ ALOAD 0
+ INSTANCEOF net/minecraft/block/BlockHopper
+ IFEQ L24
+ ALOAD 5
+ GETSTATIC net/minecraftforge/common/util/ForgeDirection.UP : Lnet/minecraftforge/common/util/ForgeDirection;
+ IF_ACMPNE L24
+ L25
+ LINENUMBER 1574 L25
+ ICONST_1
+ IRETURN
+ L24
+ LINENUMBER 1576 L24
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/IBlockAccess I I I net/minecraftforge/common/util/ForgeDirection I] []
+ ALOAD 0
+ INSTANCEOF net/minecraft/block/BlockCompressedPowered
+ IFEQ L26
+ L27
+ LINENUMBER 1578 L27
+ ICONST_1
+ IRETURN
+ L26
+ LINENUMBER 1580 L26
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/IBlockAccess I I I net/minecraftforge/common/util/ForgeDirection I] []
+ ALOAD 0
+ ALOAD 1
+ ILOAD 2
+ ILOAD 3
+ ILOAD 4
+ INVOKEVIRTUAL net/minecraft/block/Block.isNormalCube (Lnet/minecraft/world/IBlockAccess;III)Z
+ IRETURN
+ L28
+ LOCALVARIABLE flipped Z L16 L12 7
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L28 0
+ LOCALVARIABLE world Lnet/minecraft/world/IBlockAccess; L0 L28 1
+ LOCALVARIABLE x I L0 L28 2
+ LOCALVARIABLE y I L0 L28 3
+ LOCALVARIABLE z I L0 L28 4
+ LOCALVARIABLE side Lnet/minecraftforge/common/util/ForgeDirection; L0 L28 5
+ LOCALVARIABLE meta I L1 L28 6
+ MAXSTACK = 5
+ MAXLOCALS = 8
+
+ // access flags 0x1
+ public isReplaceable(Lnet/minecraft/world/IBlockAccess;III)Z
+ L0
+ LINENUMBER 1595 L0
+ ALOAD 0
+ GETFIELD net/minecraft/block/Block.blockMaterial : Lnet/minecraft/block/material/Material;
+ INVOKEVIRTUAL net/minecraft/block/material/Material.isReplaceable ()Z
+ IRETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L1 0
+ LOCALVARIABLE world Lnet/minecraft/world/IBlockAccess; L0 L1 1
+ LOCALVARIABLE x I L0 L1 2
+ LOCALVARIABLE y I L0 L1 3
+ LOCALVARIABLE z I L0 L1 4
+ MAXSTACK = 1
+ MAXLOCALS = 5
+
+ // access flags 0x1
+ public isBurning(Lnet/minecraft/world/IBlockAccess;III)Z
+ L0
+ LINENUMBER 1610 L0
+ ICONST_0
+ IRETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L1 0
+ LOCALVARIABLE world Lnet/minecraft/world/IBlockAccess; L0 L1 1
+ LOCALVARIABLE x I L0 L1 2
+ LOCALVARIABLE y I L0 L1 3
+ LOCALVARIABLE z I L0 L1 4
+ MAXSTACK = 1
+ MAXLOCALS = 5
+
+ // access flags 0x1
+ public isAir(Lnet/minecraft/world/IBlockAccess;III)Z
+ L0
+ LINENUMBER 1627 L0
+ ALOAD 0
+ INVOKEVIRTUAL net/minecraft/block/Block.getMaterial ()Lnet/minecraft/block/material/Material;
+ GETSTATIC net/minecraft/block/material/Material.air : Lnet/minecraft/block/material/Material;
+ IF_ACMPNE L1
+ ICONST_1
+ GOTO L2
+ L1
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/IBlockAccess I I I] []
+ ICONST_0
+ L2
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/IBlockAccess I I I] [I]
+ IRETURN
+ L3
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L3 0
+ LOCALVARIABLE world Lnet/minecraft/world/IBlockAccess; L0 L3 1
+ LOCALVARIABLE x I L0 L3 2
+ LOCALVARIABLE y I L0 L3 3
+ LOCALVARIABLE z I L0 L3 4
+ MAXSTACK = 2
+ MAXLOCALS = 5
+
+ // access flags 0x1
+ public canHarvestBlock(Lnet/minecraft/entity/player/EntityPlayer;I)Z
+ L0
+ LINENUMBER 1639 L0
+ ALOAD 0
+ ALOAD 1
+ ILOAD 2
+ INVOKESTATIC net/minecraftforge/common/ForgeHooks.canHarvestBlock (Lnet/minecraft/block/Block;Lnet/minecraft/entity/player/EntityPlayer;I)Z
+ IRETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L1 0
+ LOCALVARIABLE player Lnet/minecraft/entity/player/EntityPlayer; L0 L1 1
+ LOCALVARIABLE meta I L0 L1 2
+ MAXSTACK = 3
+ MAXLOCALS = 3
+
+ // access flags 0x1
+ public removedByPlayer(Lnet/minecraft/world/World;Lnet/minecraft/entity/player/EntityPlayer;IIIZ)Z
+ L0
+ LINENUMBER 1664 L0
+ ALOAD 0
+ ALOAD 1
+ ALOAD 2
+ ILOAD 3
+ ILOAD 4
+ ILOAD 5
+ INVOKEVIRTUAL net/minecraft/block/Block.removedByPlayer (Lnet/minecraft/world/World;Lnet/minecraft/entity/player/EntityPlayer;III)Z
+ IRETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L1 0
+ LOCALVARIABLE world Lnet/minecraft/world/World; L0 L1 1
+ LOCALVARIABLE player Lnet/minecraft/entity/player/EntityPlayer; L0 L1 2
+ LOCALVARIABLE x I L0 L1 3
+ LOCALVARIABLE y I L0 L1 4
+ LOCALVARIABLE z I L0 L1 5
+ LOCALVARIABLE willHarvest Z L0 L1 6
+ MAXSTACK = 6
+ MAXLOCALS = 7
+
+ // DEPRECATED
+ // access flags 0x20001
+ public removedByPlayer(Lnet/minecraft/world/World;Lnet/minecraft/entity/player/EntityPlayer;III)Z
+ @Ljava/lang/Deprecated;()
+ L0
+ LINENUMBER 1670 L0
+ ALOAD 1
+ ILOAD 3
+ ILOAD 4
+ ILOAD 5
+ INVOKEVIRTUAL net/minecraft/world/World.setBlockToAir (III)Z
+ IRETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L1 0
+ LOCALVARIABLE world Lnet/minecraft/world/World; L0 L1 1
+ LOCALVARIABLE player Lnet/minecraft/entity/player/EntityPlayer; L0 L1 2
+ LOCALVARIABLE x I L0 L1 3
+ LOCALVARIABLE y I L0 L1 4
+ LOCALVARIABLE z I L0 L1 5
+ MAXSTACK = 4
+ MAXLOCALS = 6
+
+ // access flags 0x1
+ public getFlammability(Lnet/minecraft/world/IBlockAccess;IIILnet/minecraftforge/common/util/ForgeDirection;)I
+ L0
+ LINENUMBER 1686 L0
+ GETSTATIC net/minecraft/init/Blocks.fire : Lnet/minecraft/block/BlockFire;
+ ALOAD 0
+ INVOKEVIRTUAL net/minecraft/block/BlockFire.getFlammability (Lnet/minecraft/block/Block;)I
+ IRETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L1 0
+ LOCALVARIABLE world Lnet/minecraft/world/IBlockAccess; L0 L1 1
+ LOCALVARIABLE x I L0 L1 2
+ LOCALVARIABLE y I L0 L1 3
+ LOCALVARIABLE z I L0 L1 4
+ LOCALVARIABLE face Lnet/minecraftforge/common/util/ForgeDirection; L0 L1 5
+ MAXSTACK = 2
+ MAXLOCALS = 6
+
+ // access flags 0x1
+ public isFlammable(Lnet/minecraft/world/IBlockAccess;IIILnet/minecraftforge/common/util/ForgeDirection;)Z
+ L0
+ LINENUMBER 1702 L0
+ ALOAD 0
+ ALOAD 1
+ ILOAD 2
+ ILOAD 3
+ ILOAD 4
+ ALOAD 5
+ INVOKEVIRTUAL net/minecraft/block/Block.getFlammability (Lnet/minecraft/world/IBlockAccess;IIILnet/minecraftforge/common/util/ForgeDirection;)I
+ IFLE L1
+ ICONST_1
+ GOTO L2
+ L1
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/IBlockAccess I I I net/minecraftforge/common/util/ForgeDirection] []
+ ICONST_0
+ L2
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/IBlockAccess I I I net/minecraftforge/common/util/ForgeDirection] [I]
+ IRETURN
+ L3
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L3 0
+ LOCALVARIABLE world Lnet/minecraft/world/IBlockAccess; L0 L3 1
+ LOCALVARIABLE x I L0 L3 2
+ LOCALVARIABLE y I L0 L3 3
+ LOCALVARIABLE z I L0 L3 4
+ LOCALVARIABLE face Lnet/minecraftforge/common/util/ForgeDirection; L0 L3 5
+ MAXSTACK = 6
+ MAXLOCALS = 6
+
+ // access flags 0x1
+ public getFireSpreadSpeed(Lnet/minecraft/world/IBlockAccess;IIILnet/minecraftforge/common/util/ForgeDirection;)I
+ L0
+ LINENUMBER 1718 L0
+ GETSTATIC net/minecraft/init/Blocks.fire : Lnet/minecraft/block/BlockFire;
+ ALOAD 0
+ INVOKEVIRTUAL net/minecraft/block/BlockFire.getEncouragement (Lnet/minecraft/block/Block;)I
+ IRETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L1 0
+ LOCALVARIABLE world Lnet/minecraft/world/IBlockAccess; L0 L1 1
+ LOCALVARIABLE x I L0 L1 2
+ LOCALVARIABLE y I L0 L1 3
+ LOCALVARIABLE z I L0 L1 4
+ LOCALVARIABLE face Lnet/minecraftforge/common/util/ForgeDirection; L0 L1 5
+ MAXSTACK = 2
+ MAXLOCALS = 6
+
+ // access flags 0x1
+ public isFireSource(Lnet/minecraft/world/World;IIILnet/minecraftforge/common/util/ForgeDirection;)Z
+ L0
+ LINENUMBER 1736 L0
+ ALOAD 0
+ GETSTATIC net/minecraft/init/Blocks.netherrack : Lnet/minecraft/block/Block;
+ IF_ACMPNE L1
+ ALOAD 5
+ GETSTATIC net/minecraftforge/common/util/ForgeDirection.UP : Lnet/minecraftforge/common/util/ForgeDirection;
+ IF_ACMPNE L1
+ L2
+ LINENUMBER 1738 L2
+ ICONST_1
+ IRETURN
+ L1
+ LINENUMBER 1740 L1
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/World I I I net/minecraftforge/common/util/ForgeDirection] []
+ ALOAD 1
+ GETFIELD net/minecraft/world/World.provider : Lnet/minecraft/world/WorldProvider;
+ INSTANCEOF net/minecraft/world/WorldProviderEnd
+ IFEQ L3
+ ALOAD 0
+ GETSTATIC net/minecraft/init/Blocks.bedrock : Lnet/minecraft/block/Block;
+ IF_ACMPNE L3
+ ALOAD 5
+ GETSTATIC net/minecraftforge/common/util/ForgeDirection.UP : Lnet/minecraftforge/common/util/ForgeDirection;
+ IF_ACMPNE L3
+ L4
+ LINENUMBER 1742 L4
+ ICONST_1
+ IRETURN
+ L3
+ LINENUMBER 1744 L3
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/World I I I net/minecraftforge/common/util/ForgeDirection] []
+ ICONST_0
+ IRETURN
+ L5
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L5 0
+ LOCALVARIABLE world Lnet/minecraft/world/World; L0 L5 1
+ LOCALVARIABLE x I L0 L5 2
+ LOCALVARIABLE y I L0 L5 3
+ LOCALVARIABLE z I L0 L5 4
+ LOCALVARIABLE side Lnet/minecraftforge/common/util/ForgeDirection; L0 L5 5
+ MAXSTACK = 2
+ MAXLOCALS = 6
+
+ // access flags 0x1
+ public hasTileEntity(I)Z
+ L0
+ LINENUMBER 1760 L0
+ ALOAD 0
+ GETFIELD net/minecraft/block/Block.isTileProvider : Z
+ IRETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L1 0
+ LOCALVARIABLE metadata I L0 L1 1
+ MAXSTACK = 1
+ MAXLOCALS = 2
+
+ // access flags 0x1
+ public createTileEntity(Lnet/minecraft/world/World;I)Lnet/minecraft/tileentity/TileEntity;
+ L0
+ LINENUMBER 1773 L0
+ ALOAD 0
+ GETFIELD net/minecraft/block/Block.isTileProvider : Z
+ IFEQ L1
+ L2
+ LINENUMBER 1775 L2
+ ALOAD 0
+ CHECKCAST net/minecraft/block/ITileEntityProvider
+ ALOAD 1
+ ILOAD 2
+ INVOKEINTERFACE net/minecraft/block/ITileEntityProvider.createNewTileEntity (Lnet/minecraft/world/World;I)Lnet/minecraft/tileentity/TileEntity;
+ ARETURN
+ L1
+ LINENUMBER 1777 L1
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/World I] []
+ ACONST_NULL
+ ARETURN
+ L3
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L3 0
+ LOCALVARIABLE world Lnet/minecraft/world/World; L0 L3 1
+ LOCALVARIABLE metadata I L0 L3 2
+ MAXSTACK = 3
+ MAXLOCALS = 3
+
+ // access flags 0x1
+ public quantityDropped(IILjava/util/Random;)I
+ L0
+ LINENUMBER 1794 L0
+ ALOAD 0
+ ILOAD 2
+ ALOAD 3
+ INVOKEVIRTUAL net/minecraft/block/Block.quantityDroppedWithBonus (ILjava/util/Random;)I
+ IRETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L1 0
+ LOCALVARIABLE meta I L0 L1 1
+ LOCALVARIABLE fortune I L0 L1 2
+ LOCALVARIABLE random Ljava/util/Random; L0 L1 3
+ MAXSTACK = 3
+ MAXLOCALS = 4
+
+ // access flags 0x1
+ // signature (Lnet/minecraft/world/World;IIIII)Ljava/util/ArrayList<Lnet/minecraft/item/ItemStack;>;
+ // declaration: java.util.ArrayList<net.minecraft.item.ItemStack> getDrops(net.minecraft.world.World, int, int, int, int, int)
+ public getDrops(Lnet/minecraft/world/World;IIIII)Ljava/util/ArrayList;
+ L0
+ LINENUMBER 1810 L0
+ NEW java/util/ArrayList
+ DUP
+ INVOKESPECIAL java/util/ArrayList.<init> ()V
+ ASTORE 7
+ L1
+ LINENUMBER 1812 L1
+ ALOAD 0
+ ILOAD 5
+ ILOAD 6
+ ALOAD 1
+ GETFIELD net/minecraft/world/World.rand : Ljava/util/Random;
+ INVOKEVIRTUAL net/minecraft/block/Block.quantityDropped (IILjava/util/Random;)I
+ ISTORE 8
+ L2
+ LINENUMBER 1813 L2
+ ICONST_0
+ ISTORE 9
+ L3
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/World I I I I I java/util/ArrayList I I] []
+ ILOAD 9
+ ILOAD 8
+ IF_ICMPGE L4
+ L5
+ LINENUMBER 1815 L5
+ ALOAD 0
+ ILOAD 5
+ ALOAD 1
+ GETFIELD net/minecraft/world/World.rand : Ljava/util/Random;
+ ILOAD 6
+ INVOKEVIRTUAL net/minecraft/block/Block.getItemDropped (ILjava/util/Random;I)Lnet/minecraft/item/Item;
+ ASTORE 10
+ L6
+ LINENUMBER 1816 L6
+ ALOAD 10
+ IFNULL L7
+ L8
+ LINENUMBER 1818 L8
+ ALOAD 7
+ NEW net/minecraft/item/ItemStack
+ DUP
+ ALOAD 10
+ ICONST_1
+ ALOAD 0
+ ILOAD 5
+ INVOKEVIRTUAL net/minecraft/block/Block.damageDropped (I)I
+ INVOKESPECIAL net/minecraft/item/ItemStack.<init> (Lnet/minecraft/item/Item;II)V
+ INVOKEVIRTUAL java/util/ArrayList.add (Ljava/lang/Object;)Z
+ POP
+ L7
+ LINENUMBER 1813 L7
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/World I I I I I java/util/ArrayList I I net/minecraft/item/Item] []
+ IINC 9 1
+ GOTO L3
+ L4
+ LINENUMBER 1821 L4
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/World I I I I I java/util/ArrayList I I] []
+ ALOAD 7
+ ARETURN
+ L9
+ LOCALVARIABLE item Lnet/minecraft/item/Item; L6 L7 10
+ LOCALVARIABLE i I L3 L4 9
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L9 0
+ LOCALVARIABLE world Lnet/minecraft/world/World; L0 L9 1
+ LOCALVARIABLE x I L0 L9 2
+ LOCALVARIABLE y I L0 L9 3
+ LOCALVARIABLE z I L0 L9 4
+ LOCALVARIABLE metadata I L0 L9 5
+ LOCALVARIABLE fortune I L0 L9 6
+ LOCALVARIABLE ret Ljava/util/ArrayList; L1 L9 7
+ // signature Ljava/util/ArrayList<Lnet/minecraft/item/ItemStack;>;
+ // declaration: java.util.ArrayList<net.minecraft.item.ItemStack>
+ LOCALVARIABLE count I L2 L9 8
+ MAXSTACK = 7
+ MAXLOCALS = 11
+
+ // access flags 0x1
+ public canSilkHarvest(Lnet/minecraft/world/World;Lnet/minecraft/entity/player/EntityPlayer;IIII)Z
+ L0
+ LINENUMBER 1837 L0
+ ALOAD 0
+ GETFIELD net/minecraft/block/Block.silk_check_meta : Ljava/lang/ThreadLocal;
+ ILOAD 6
+ INVOKESTATIC java/lang/Integer.valueOf (I)Ljava/lang/Integer;
+ INVOKEVIRTUAL java/lang/ThreadLocal.set (Ljava/lang/Object;)V
+ L1
+ LINENUMBER 1838 L1
+ ALOAD 0
+ INVOKEVIRTUAL net/minecraft/block/Block.canSilkHarvest ()Z
+ ISTORE 7
+ L2
+ LINENUMBER 1839 L2
+ ALOAD 0
+ GETFIELD net/minecraft/block/Block.silk_check_meta : Ljava/lang/ThreadLocal;
+ ACONST_NULL
+ INVOKEVIRTUAL java/lang/ThreadLocal.set (Ljava/lang/Object;)V
+ L3
+ LINENUMBER 1840 L3
+ ILOAD 7
+ IRETURN
+ L4
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L4 0
+ LOCALVARIABLE world Lnet/minecraft/world/World; L0 L4 1
+ LOCALVARIABLE player Lnet/minecraft/entity/player/EntityPlayer; L0 L4 2
+ LOCALVARIABLE x I L0 L4 3
+ LOCALVARIABLE y I L0 L4 4
+ LOCALVARIABLE z I L0 L4 5
+ LOCALVARIABLE metadata I L0 L4 6
+ LOCALVARIABLE ret Z L2 L4 7
+ MAXSTACK = 2
+ MAXLOCALS = 8
+
+ // access flags 0x1
+ public canCreatureSpawn(Lnet/minecraft/entity/EnumCreatureType;Lnet/minecraft/world/IBlockAccess;III)Z
+ L0
+ LINENUMBER 1856 L0
+ ALOAD 2
+ ILOAD 3
+ ILOAD 4
+ ILOAD 5
+ INVOKEINTERFACE net/minecraft/world/IBlockAccess.getBlockMetadata (III)I
+ ISTORE 6
+ L1
+ LINENUMBER 1857 L1
+ ALOAD 0
+ INSTANCEOF net/minecraft/block/BlockSlab
+ IFEQ L2
+ L3
+ LINENUMBER 1859 L3
+ ILOAD 6
+ BIPUSH 8
+ IAND
+ BIPUSH 8
+ IF_ICMPEQ L4
+ ALOAD 0
+ INVOKEVIRTUAL net/minecraft/block/Block.func_149730_j ()Z
+ IFEQ L5
+ L4
+ FRAME FULL [net/minecraft/block/Block net/minecraft/entity/EnumCreatureType net/minecraft/world/IBlockAccess I I I I] []
+ ICONST_1
+ GOTO L6
+ L5
+ FRAME FULL [net/minecraft/block/Block net/minecraft/entity/EnumCreatureType net/minecraft/world/IBlockAccess I I I I] []
+ ICONST_0
+ L6
+ FRAME FULL [net/minecraft/block/Block net/minecraft/entity/EnumCreatureType net/minecraft/world/IBlockAccess I I I I] [I]
+ IRETURN
+ L2
+ LINENUMBER 1861 L2
+ FRAME FULL [net/minecraft/block/Block net/minecraft/entity/EnumCreatureType net/minecraft/world/IBlockAccess I I I I] []
+ ALOAD 0
+ INSTANCEOF net/minecraft/block/BlockStairs
+ IFEQ L7
+ L8
+ LINENUMBER 1863 L8
+ ILOAD 6
+ ICONST_4
+ IAND
+ IFEQ L9
+ ICONST_1
+ GOTO L10
+ L9
+ FRAME FULL [net/minecraft/block/Block net/minecraft/entity/EnumCreatureType net/minecraft/world/IBlockAccess I I I I] []
+ ICONST_0
+ L10
+ FRAME FULL [net/minecraft/block/Block net/minecraft/entity/EnumCreatureType net/minecraft/world/IBlockAccess I I I I] [I]
+ IRETURN
+ L7
+ LINENUMBER 1865 L7
+ FRAME FULL [net/minecraft/block/Block net/minecraft/entity/EnumCreatureType net/minecraft/world/IBlockAccess I I I I] []
+ ALOAD 0
+ ALOAD 2
+ ILOAD 3
+ ILOAD 4
+ ILOAD 5
+ GETSTATIC net/minecraftforge/common/util/ForgeDirection.UP : Lnet/minecraftforge/common/util/ForgeDirection;
+ INVOKEVIRTUAL net/minecraft/block/Block.isSideSolid (Lnet/minecraft/world/IBlockAccess;IIILnet/minecraftforge/common/util/ForgeDirection;)Z
+ IRETURN
+ L11
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L11 0
+ LOCALVARIABLE type Lnet/minecraft/entity/EnumCreatureType; L0 L11 1
+ LOCALVARIABLE world Lnet/minecraft/world/IBlockAccess; L0 L11 2
+ LOCALVARIABLE x I L0 L11 3
+ LOCALVARIABLE y I L0 L11 4
+ LOCALVARIABLE z I L0 L11 5
+ LOCALVARIABLE meta I L1 L11 6
+ MAXSTACK = 6
+ MAXLOCALS = 7
+
+ // access flags 0x1
+ public isBed(Lnet/minecraft/world/IBlockAccess;IIILnet/minecraft/entity/EntityLivingBase;)Z
+ L0
+ LINENUMBER 1882 L0
+ ALOAD 0
+ GETSTATIC net/minecraft/init/Blocks.bed : Lnet/minecraft/block/Block;
+ IF_ACMPNE L1
+ ICONST_1
+ GOTO L2
+ L1
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/IBlockAccess I I I net/minecraft/entity/EntityLivingBase] []
+ ICONST_0
+ L2
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/IBlockAccess I I I net/minecraft/entity/EntityLivingBase] [I]
+ IRETURN
+ L3
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L3 0
+ LOCALVARIABLE world Lnet/minecraft/world/IBlockAccess; L0 L3 1
+ LOCALVARIABLE x I L0 L3 2
+ LOCALVARIABLE y I L0 L3 3
+ LOCALVARIABLE z I L0 L3 4
+ LOCALVARIABLE player Lnet/minecraft/entity/EntityLivingBase; L0 L3 5
+ MAXSTACK = 2
+ MAXLOCALS = 6
+
+ // access flags 0x1
+ public getBedSpawnPosition(Lnet/minecraft/world/IBlockAccess;IIILnet/minecraft/entity/player/EntityPlayer;)Lnet/minecraft/util/ChunkCoordinates;
+ L0
+ LINENUMBER 1898 L0
+ ALOAD 1
+ INSTANCEOF net/minecraft/world/World
+ IFEQ L1
+ L2
+ LINENUMBER 1899 L2
+ ALOAD 1
+ CHECKCAST net/minecraft/world/World
+ ILOAD 2
+ ILOAD 3
+ ILOAD 4
+ ICONST_0
+ INVOKESTATIC net/minecraft/block/BlockBed.func_149977_a (Lnet/minecraft/world/World;IIII)Lnet/minecraft/util/ChunkCoordinates;
+ ARETURN
+ L1
+ LINENUMBER 1900 L1
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/IBlockAccess I I I net/minecraft/entity/player/EntityPlayer] []
+ ACONST_NULL
+ ARETURN
+ L3
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L3 0
+ LOCALVARIABLE world Lnet/minecraft/world/IBlockAccess; L0 L3 1
+ LOCALVARIABLE x I L0 L3 2
+ LOCALVARIABLE y I L0 L3 3
+ LOCALVARIABLE z I L0 L3 4
+ LOCALVARIABLE player Lnet/minecraft/entity/player/EntityPlayer; L0 L3 5
+ MAXSTACK = 5
+ MAXLOCALS = 6
+
+ // access flags 0x1
+ public setBedOccupied(Lnet/minecraft/world/IBlockAccess;IIILnet/minecraft/entity/player/EntityPlayer;Z)V
+ L0
+ LINENUMBER 1915 L0
+ ALOAD 1
+ INSTANCEOF net/minecraft/world/World
+ IFEQ L1
+ L2
+ LINENUMBER 1916 L2
+ ALOAD 1
+ CHECKCAST net/minecraft/world/World
+ ILOAD 2
+ ILOAD 3
+ ILOAD 4
+ ILOAD 6
+ INVOKESTATIC net/minecraft/block/BlockBed.func_149979_a (Lnet/minecraft/world/World;IIIZ)V
+ L1
+ LINENUMBER 1917 L1
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/IBlockAccess I I I net/minecraft/entity/player/EntityPlayer I] []
+ RETURN
+ L3
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L3 0
+ LOCALVARIABLE world Lnet/minecraft/world/IBlockAccess; L0 L3 1
+ LOCALVARIABLE x I L0 L3 2
+ LOCALVARIABLE y I L0 L3 3
+ LOCALVARIABLE z I L0 L3 4
+ LOCALVARIABLE player Lnet/minecraft/entity/player/EntityPlayer; L0 L3 5
+ LOCALVARIABLE occupied Z L0 L3 6
+ MAXSTACK = 5
+ MAXLOCALS = 7
+
+ // access flags 0x1
+ public getBedDirection(Lnet/minecraft/world/IBlockAccess;III)I
+ L0
+ LINENUMBER 1931 L0
+ ALOAD 1
+ ILOAD 2
+ ILOAD 3
+ ILOAD 4
+ INVOKEINTERFACE net/minecraft/world/IBlockAccess.getBlockMetadata (III)I
+ INVOKESTATIC net/minecraft/block/BlockBed.getDirection (I)I
+ IRETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L1 0
+ LOCALVARIABLE world Lnet/minecraft/world/IBlockAccess; L0 L1 1
+ LOCALVARIABLE x I L0 L1 2
+ LOCALVARIABLE y I L0 L1 3
+ LOCALVARIABLE z I L0 L1 4
+ MAXSTACK = 4
+ MAXLOCALS = 5
+
+ // access flags 0x1
+ public isBedFoot(Lnet/minecraft/world/IBlockAccess;III)Z
+ L0
+ LINENUMBER 1945 L0
+ ALOAD 1
+ ILOAD 2
+ ILOAD 3
+ ILOAD 4
+ INVOKEINTERFACE net/minecraft/world/IBlockAccess.getBlockMetadata (III)I
+ INVOKESTATIC net/minecraft/block/BlockBed.isBlockHeadOfBed (I)Z
+ IRETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L1 0
+ LOCALVARIABLE world Lnet/minecraft/world/IBlockAccess; L0 L1 1
+ LOCALVARIABLE x I L0 L1 2
+ LOCALVARIABLE y I L0 L1 3
+ LOCALVARIABLE z I L0 L1 4
+ MAXSTACK = 4
+ MAXLOCALS = 5
+
+ // access flags 0x1
+ public beginLeavesDecay(Lnet/minecraft/world/World;III)V
+ L0
+ LINENUMBER 1956 L0
+ RETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L1 0
+ LOCALVARIABLE world Lnet/minecraft/world/World; L0 L1 1
+ LOCALVARIABLE x I L0 L1 2
+ LOCALVARIABLE y I L0 L1 3
+ LOCALVARIABLE z I L0 L1 4
+ MAXSTACK = 0
+ MAXLOCALS = 5
+
+ // access flags 0x1
+ public canSustainLeaves(Lnet/minecraft/world/IBlockAccess;III)Z
+ L0
+ LINENUMBER 1969 L0
+ ICONST_0
+ IRETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L1 0
+ LOCALVARIABLE world Lnet/minecraft/world/IBlockAccess; L0 L1 1
+ LOCALVARIABLE x I L0 L1 2
+ LOCALVARIABLE y I L0 L1 3
+ LOCALVARIABLE z I L0 L1 4
+ MAXSTACK = 1
+ MAXLOCALS = 5
+
+ // access flags 0x1
+ public isLeaves(Lnet/minecraft/world/IBlockAccess;III)Z
+ L0
+ LINENUMBER 1983 L0
+ ALOAD 0
+ INVOKEVIRTUAL net/minecraft/block/Block.getMaterial ()Lnet/minecraft/block/material/Material;
+ GETSTATIC net/minecraft/block/material/Material.leaves : Lnet/minecraft/block/material/Material;
+ IF_ACMPNE L1
+ ICONST_1
+ GOTO L2
+ L1
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/IBlockAccess I I I] []
+ ICONST_0
+ L2
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/IBlockAccess I I I] [I]
+ IRETURN
+ L3
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L3 0
+ LOCALVARIABLE world Lnet/minecraft/world/IBlockAccess; L0 L3 1
+ LOCALVARIABLE x I L0 L3 2
+ LOCALVARIABLE y I L0 L3 3
+ LOCALVARIABLE z I L0 L3 4
+ MAXSTACK = 2
+ MAXLOCALS = 5
+
+ // access flags 0x1
+ public canBeReplacedByLeaves(Lnet/minecraft/world/IBlockAccess;III)Z
+ ALOAD 0
+ ALOAD 1
+ ILOAD 2
+ ILOAD 3
+ ILOAD 4
+ INVOKEVIRTUAL net/minecraft/block/Block.isAir (Lnet/minecraft/world/IBlockAccess;III)Z
+ IRETURN
+ MAXSTACK = 5
+ MAXLOCALS = 5
+
+ // access flags 0x1
+ public isWood(Lnet/minecraft/world/IBlockAccess;III)Z
+ L0
+ LINENUMBER 2010 L0
+ ICONST_0
+ IRETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L1 0
+ LOCALVARIABLE world Lnet/minecraft/world/IBlockAccess; L0 L1 1
+ LOCALVARIABLE x I L0 L1 2
+ LOCALVARIABLE y I L0 L1 3
+ LOCALVARIABLE z I L0 L1 4
+ MAXSTACK = 1
+ MAXLOCALS = 5
+
+ // access flags 0x1
+ public isReplaceableOreGen(Lnet/minecraft/world/World;IIILnet/minecraft/block/Block;)Z
+ L0
+ LINENUMBER 2026 L0
+ ALOAD 0
+ ALOAD 5
+ IF_ACMPNE L1
+ ICONST_1
+ GOTO L2
+ L1
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/World I I I net/minecraft/block/Block] []
+ ICONST_0
+ L2
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/World I I I net/minecraft/block/Block] [I]
+ IRETURN
+ L3
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L3 0
+ LOCALVARIABLE world Lnet/minecraft/world/World; L0 L3 1
+ LOCALVARIABLE x I L0 L3 2
+ LOCALVARIABLE y I L0 L3 3
+ LOCALVARIABLE z I L0 L3 4
+ LOCALVARIABLE target Lnet/minecraft/block/Block; L0 L3 5
+ MAXSTACK = 2
+ MAXLOCALS = 6
+
+ // access flags 0x1
+ public getExplosionResistance(Lnet/minecraft/entity/Entity;Lnet/minecraft/world/World;IIIDDD)F
+ L0
+ LINENUMBER 2047 L0
+ ALOAD 0
+ ALOAD 1
+ INVOKEVIRTUAL net/minecraft/block/Block.getExplosionResistance (Lnet/minecraft/entity/Entity;)F
+ FRETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L1 0
+ LOCALVARIABLE par1Entity Lnet/minecraft/entity/Entity; L0 L1 1
+ LOCALVARIABLE world Lnet/minecraft/world/World; L0 L1 2
+ LOCALVARIABLE x I L0 L1 3
+ LOCALVARIABLE y I L0 L1 4
+ LOCALVARIABLE z I L0 L1 5
+ LOCALVARIABLE explosionX D L0 L1 6
+ LOCALVARIABLE explosionY D L0 L1 8
+ LOCALVARIABLE explosionZ D L0 L1 10
+ MAXSTACK = 2
+ MAXLOCALS = 12
+
+ // access flags 0x1
+ public onBlockExploded(Lnet/minecraft/world/World;IIILnet/minecraft/world/Explosion;)V
+ L0
+ LINENUMBER 2063 L0
+ ALOAD 1
+ ILOAD 2
+ ILOAD 3
+ ILOAD 4
+ INVOKEVIRTUAL net/minecraft/world/World.setBlockToAir (III)Z
+ POP
+ L1
+ LINENUMBER 2064 L1
+ ALOAD 0
+ ALOAD 1
+ ILOAD 2
+ ILOAD 3
+ ILOAD 4
+ ALOAD 5
+ INVOKEVIRTUAL net/minecraft/block/Block.onBlockDestroyedByExplosion (Lnet/minecraft/world/World;IIILnet/minecraft/world/Explosion;)V
+ L2
+ LINENUMBER 2065 L2
+ RETURN
+ L3
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L3 0
+ LOCALVARIABLE world Lnet/minecraft/world/World; L0 L3 1
+ LOCALVARIABLE x I L0 L3 2
+ LOCALVARIABLE y I L0 L3 3
+ LOCALVARIABLE z I L0 L3 4
+ LOCALVARIABLE explosion Lnet/minecraft/world/Explosion; L0 L3 5
+ MAXSTACK = 6
+ MAXLOCALS = 6
+
+ // access flags 0x1
+ public canConnectRedstone(Lnet/minecraft/world/IBlockAccess;IIII)Z
+ L0
+ LINENUMBER 2090 L0
+ ALOAD 0
+ INVOKEVIRTUAL net/minecraft/block/Block.canProvidePower ()Z
+ IFEQ L1
+ ILOAD 5
+ ICONST_M1
+ IF_ICMPEQ L1
+ ICONST_1
+ GOTO L2
+ L1
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/IBlockAccess I I I I] []
+ ICONST_0
+ L2
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/IBlockAccess I I I I] [I]
+ IRETURN
+ L3
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L3 0
+ LOCALVARIABLE world Lnet/minecraft/world/IBlockAccess; L0 L3 1
+ LOCALVARIABLE x I L0 L3 2
+ LOCALVARIABLE y I L0 L3 3
+ LOCALVARIABLE z I L0 L3 4
+ LOCALVARIABLE side I L0 L3 5
+ MAXSTACK = 2
+ MAXLOCALS = 6
+
+ // access flags 0x1
+ public canPlaceTorchOnTop(Lnet/minecraft/world/World;III)Z
+ L0
+ LINENUMBER 2105 L0
+ ALOAD 0
+ ALOAD 1
+ ILOAD 2
+ ILOAD 3
+ ILOAD 4
+ GETSTATIC net/minecraftforge/common/util/ForgeDirection.UP : Lnet/minecraftforge/common/util/ForgeDirection;
+ INVOKEVIRTUAL net/minecraft/block/Block.isSideSolid (Lnet/minecraft/world/IBlockAccess;IIILnet/minecraftforge/common/util/ForgeDirection;)Z
+ IFEQ L1
+ L2
+ LINENUMBER 2107 L2
+ ICONST_1
+ IRETURN
+ L1
+ LINENUMBER 2111 L1
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/World I I I] []
+ ALOAD 0
+ GETSTATIC net/minecraft/init/Blocks.fence : Lnet/minecraft/block/Block;
+ IF_ACMPEQ L3
+ ALOAD 0
+ GETSTATIC net/minecraft/init/Blocks.nether_brick_fence : Lnet/minecraft/block/Block;
+ IF_ACMPEQ L3
+ ALOAD 0
+ GETSTATIC net/minecraft/init/Blocks.glass : Lnet/minecraft/block/Block;
+ IF_ACMPEQ L3
+ ALOAD 0
+ GETSTATIC net/minecraft/init/Blocks.cobblestone_wall : Lnet/minecraft/block/Block;
+ IF_ACMPNE L4
+ L3
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/World I I I] []
+ ICONST_1
+ GOTO L5
+ L4
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/World I I I] []
+ ICONST_0
+ L5
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/World I I I] [I]
+ IRETURN
+ L6
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L6 0
+ LOCALVARIABLE world Lnet/minecraft/world/World; L0 L6 1
+ LOCALVARIABLE x I L0 L6 2
+ LOCALVARIABLE y I L0 L6 3
+ LOCALVARIABLE z I L0 L6 4
+ MAXSTACK = 6
+ MAXLOCALS = 5
+
+ // access flags 0x1
+ public canRenderInPass(I)Z
+ L0
+ LINENUMBER 2123 L0
+ ILOAD 1
+ ALOAD 0
+ INVOKEVIRTUAL net/minecraft/block/Block.getRenderBlockPass ()I
+ IF_ICMPNE L1
+ ICONST_1
+ GOTO L2
+ L1
+ FRAME FULL [net/minecraft/block/Block I] []
+ ICONST_0
+ L2
+ FRAME FULL [net/minecraft/block/Block I] [I]
+ IRETURN
+ L3
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L3 0
+ LOCALVARIABLE pass I L0 L3 1
+ MAXSTACK = 2
+ MAXLOCALS = 2
+
+ // access flags 0x1
+ public getPickBlock(Lnet/minecraft/util/MovingObjectPosition;Lnet/minecraft/world/World;IIILnet/minecraft/entity/player/EntityPlayer;)Lnet/minecraft/item/ItemStack;
+ L0
+ LINENUMBER 2134 L0
+ ALOAD 0
+ ALOAD 1
+ ALOAD 2
+ ILOAD 3
+ ILOAD 4
+ ILOAD 5
+ INVOKEVIRTUAL net/minecraft/block/Block.getPickBlock (Lnet/minecraft/util/MovingObjectPosition;Lnet/minecraft/world/World;III)Lnet/minecraft/item/ItemStack;
+ ARETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L1 0
+ LOCALVARIABLE target Lnet/minecraft/util/MovingObjectPosition; L0 L1 1
+ LOCALVARIABLE world Lnet/minecraft/world/World; L0 L1 2
+ LOCALVARIABLE x I L0 L1 3
+ LOCALVARIABLE y I L0 L1 4
+ LOCALVARIABLE z I L0 L1 5
+ LOCALVARIABLE player Lnet/minecraft/entity/player/EntityPlayer; L0 L1 6
+ MAXSTACK = 6
+ MAXLOCALS = 7
+
+ // DEPRECATED
+ // access flags 0x20001
+ public getPickBlock(Lnet/minecraft/util/MovingObjectPosition;Lnet/minecraft/world/World;III)Lnet/minecraft/item/ItemStack;
+ @Ljava/lang/Deprecated;()
+ L0
+ LINENUMBER 2139 L0
+ ALOAD 0
+ ALOAD 2
+ ILOAD 3
+ ILOAD 4
+ ILOAD 5
+ INVOKEVIRTUAL net/minecraft/block/Block.getItem (Lnet/minecraft/world/World;III)Lnet/minecraft/item/Item;
+ ASTORE 6
+ L1
+ LINENUMBER 2141 L1
+ ALOAD 6
+ IFNONNULL L2
+ L3
+ LINENUMBER 2143 L3
+ ACONST_NULL
+ ARETURN
+ L2
+ LINENUMBER 2146 L2
+ FRAME FULL [net/minecraft/block/Block net/minecraft/util/MovingObjectPosition net/minecraft/world/World I I I net/minecraft/item/Item] []
+ ALOAD 6
+ INSTANCEOF net/minecraft/item/ItemBlock
+ IFEQ L4
+ ALOAD 0
+ INVOKEVIRTUAL net/minecraft/block/Block.isFlowerPot ()Z
+ IFNE L4
+ ALOAD 6
+ INVOKESTATIC net/minecraft/block/Block.getBlockFromItem (Lnet/minecraft/item/Item;)Lnet/minecraft/block/Block;
+ GOTO L5
+ L4
+ FRAME FULL [net/minecraft/block/Block net/minecraft/util/MovingObjectPosition net/minecraft/world/World I I I net/minecraft/item/Item] []
+ ALOAD 0
+ L5
+ FRAME FULL [net/minecraft/block/Block net/minecraft/util/MovingObjectPosition net/minecraft/world/World I I I net/minecraft/item/Item] [net/minecraft/block/Block]
+ ASTORE 7
+ L6
+ LINENUMBER 2147 L6
+ NEW net/minecraft/item/ItemStack
+ DUP
+ ALOAD 6
+ ICONST_1
+ ALOAD 7
+ ALOAD 2
+ ILOAD 3
+ ILOAD 4
+ ILOAD 5
+ INVOKEVIRTUAL net/minecraft/block/Block.getDamageValue (Lnet/minecraft/world/World;III)I
+ INVOKESPECIAL net/minecraft/item/ItemStack.<init> (Lnet/minecraft/item/Item;II)V
+ ARETURN
+ L7
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L7 0
+ LOCALVARIABLE target Lnet/minecraft/util/MovingObjectPosition; L0 L7 1
+ LOCALVARIABLE world Lnet/minecraft/world/World; L0 L7 2
+ LOCALVARIABLE x I L0 L7 3
+ LOCALVARIABLE y I L0 L7 4
+ LOCALVARIABLE z I L0 L7 5
+ LOCALVARIABLE item Lnet/minecraft/item/Item; L1 L7 6
+ LOCALVARIABLE block Lnet/minecraft/block/Block; L6 L7 7
+ MAXSTACK = 9
+ MAXLOCALS = 8
+
+ // access flags 0x1
+ public isFoliage(Lnet/minecraft/world/IBlockAccess;III)Z
+ L0
+ LINENUMBER 2158 L0
+ ICONST_0
+ IRETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L1 0
+ LOCALVARIABLE world Lnet/minecraft/world/IBlockAccess; L0 L1 1
+ LOCALVARIABLE x I L0 L1 2
+ LOCALVARIABLE y I L0 L1 3
+ LOCALVARIABLE z I L0 L1 4
+ MAXSTACK = 1
+ MAXLOCALS = 5
+
+ // access flags 0x1
+ public addHitEffects(Lnet/minecraft/world/World;Lnet/minecraft/util/MovingObjectPosition;Lnet/minecraft/client/particle/EffectRenderer;)Z
+ @Lcpw/mods/fml/relauncher/SideOnly;(value=Lcpw/mods/fml/relauncher/Side;.CLIENT)
+ L0
+ LINENUMBER 2175 L0
+ ICONST_0
+ IRETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L1 0
+ LOCALVARIABLE worldObj Lnet/minecraft/world/World; L0 L1 1
+ LOCALVARIABLE target Lnet/minecraft/util/MovingObjectPosition; L0 L1 2
+ LOCALVARIABLE effectRenderer Lnet/minecraft/client/particle/EffectRenderer; L0 L1 3
+ MAXSTACK = 1
+ MAXLOCALS = 4
+
+ // access flags 0x1
+ public addDestroyEffects(Lnet/minecraft/world/World;IIIILnet/minecraft/client/particle/EffectRenderer;)Z
+ @Lcpw/mods/fml/relauncher/SideOnly;(value=Lcpw/mods/fml/relauncher/Side;.CLIENT)
+ L0
+ LINENUMBER 2195 L0
+ ICONST_0
+ IRETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L1 0
+ LOCALVARIABLE world Lnet/minecraft/world/World; L0 L1 1
+ LOCALVARIABLE x I L0 L1 2
+ LOCALVARIABLE y I L0 L1 3
+ LOCALVARIABLE z I L0 L1 4
+ LOCALVARIABLE meta I L0 L1 5
+ LOCALVARIABLE effectRenderer Lnet/minecraft/client/particle/EffectRenderer; L0 L1 6
+ MAXSTACK = 1
+ MAXLOCALS = 7
+
+ // access flags 0x1
+ public canSustainPlant(Lnet/minecraft/world/IBlockAccess;IIILnet/minecraftforge/common/util/ForgeDirection;Lnet/minecraftforge/common/IPlantable;)Z
+ L0
+ LINENUMBER 2219 L0
+ ALOAD 6
+ ALOAD 1
+ ILOAD 2
+ ILOAD 3
+ ICONST_1
+ IADD
+ ILOAD 4
+ INVOKEINTERFACE net/minecraftforge/common/IPlantable.getPlant (Lnet/minecraft/world/IBlockAccess;III)Lnet/minecraft/block/Block;
+ ASTORE 7
+ L1
+ LINENUMBER 2220 L1
+ ALOAD 6
+ ALOAD 1
+ ILOAD 2
+ ILOAD 3
+ ICONST_1
+ IADD
+ ILOAD 4
+ INVOKEINTERFACE net/minecraftforge/common/IPlantable.getPlantType (Lnet/minecraft/world/IBlockAccess;III)Lnet/minecraftforge/common/EnumPlantType;
+ ASTORE 8
+ L2
+ LINENUMBER 2222 L2
+ ALOAD 7
+ GETSTATIC net/minecraft/init/Blocks.cactus : Lnet/minecraft/block/Block;
+ IF_ACMPNE L3
+ ALOAD 0
+ GETSTATIC net/minecraft/init/Blocks.cactus : Lnet/minecraft/block/Block;
+ IF_ACMPNE L3
+ L4
+ LINENUMBER 2224 L4
+ ICONST_1
+ IRETURN
+ L3
+ LINENUMBER 2227 L3
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/IBlockAccess I I I net/minecraftforge/common/util/ForgeDirection net/minecraftforge/common/IPlantable net/minecraft/block/Block net/minecraftforge/common/EnumPlantType] []
+ ALOAD 7
+ GETSTATIC net/minecraft/init/Blocks.reeds : Lnet/minecraft/block/Block;
+ IF_ACMPNE L5
+ ALOAD 0
+ GETSTATIC net/minecraft/init/Blocks.reeds : Lnet/minecraft/block/Block;
+ IF_ACMPNE L5
+ L6
+ LINENUMBER 2229 L6
+ ICONST_1
+ IRETURN
+ L5
+ LINENUMBER 2232 L5
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/IBlockAccess I I I net/minecraftforge/common/util/ForgeDirection net/minecraftforge/common/IPlantable net/minecraft/block/Block net/minecraftforge/common/EnumPlantType] []
+ ALOAD 6
+ INSTANCEOF net/minecraft/block/BlockBush
+ IFEQ L7
+ ALOAD 6
+ CHECKCAST net/minecraft/block/BlockBush
+ ALOAD 0
+ INVOKEVIRTUAL net/minecraft/block/BlockBush.canPlaceBlockOn (Lnet/minecraft/block/Block;)Z
+ IFEQ L7
+ L8
+ LINENUMBER 2234 L8
+ ICONST_1
+ IRETURN
+ L7
+ LINENUMBER 2237 L7
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/IBlockAccess I I I net/minecraftforge/common/util/ForgeDirection net/minecraftforge/common/IPlantable net/minecraft/block/Block net/minecraftforge/common/EnumPlantType] []
+ GETSTATIC net/minecraft/block/Block$6.$SwitchMap$net$minecraftforge$common$EnumPlantType : [I
+ ALOAD 8
+ INVOKEVIRTUAL net/minecraftforge/common/EnumPlantType.ordinal ()I
+ IALOAD
+ TABLESWITCH
+ 1: L9
+ 2: L10
+ 3: L11
+ 4: L12
+ 5: L13
+ 6: L14
+ 7: L15
+ default: L16
+ L9
+ LINENUMBER 2239 L9
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/IBlockAccess I I I net/minecraftforge/common/util/ForgeDirection net/minecraftforge/common/IPlantable net/minecraft/block/Block net/minecraftforge/common/EnumPlantType] []
+ ALOAD 0
+ GETSTATIC net/minecraft/init/Blocks.sand : Lnet/minecraft/block/BlockSand;
+ IF_ACMPNE L17
+ ICONST_1
+ GOTO L18
+ L17
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/IBlockAccess I I I net/minecraftforge/common/util/ForgeDirection net/minecraftforge/common/IPlantable net/minecraft/block/Block net/minecraftforge/common/EnumPlantType] []
+ ICONST_0
+ L18
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/IBlockAccess I I I net/minecraftforge/common/util/ForgeDirection net/minecraftforge/common/IPlantable net/minecraft/block/Block net/minecraftforge/common/EnumPlantType] [I]
+ IRETURN
+ L10
+ LINENUMBER 2240 L10
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/IBlockAccess I I I net/minecraftforge/common/util/ForgeDirection net/minecraftforge/common/IPlantable net/minecraft/block/Block net/minecraftforge/common/EnumPlantType] []
+ ALOAD 0
+ GETSTATIC net/minecraft/init/Blocks.soul_sand : Lnet/minecraft/block/Block;
+ IF_ACMPNE L19
+ ICONST_1
+ GOTO L20
+ L19
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/IBlockAccess I I I net/minecraftforge/common/util/ForgeDirection net/minecraftforge/common/IPlantable net/minecraft/block/Block net/minecraftforge/common/EnumPlantType] []
+ ICONST_0
+ L20
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/IBlockAccess I I I net/minecraftforge/common/util/ForgeDirection net/minecraftforge/common/IPlantable net/minecraft/block/Block net/minecraftforge/common/EnumPlantType] [I]
+ IRETURN
+ L11
+ LINENUMBER 2241 L11
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/IBlockAccess I I I net/minecraftforge/common/util/ForgeDirection net/minecraftforge/common/IPlantable net/minecraft/block/Block net/minecraftforge/common/EnumPlantType] []
+ ALOAD 0
+ GETSTATIC net/minecraft/init/Blocks.farmland : Lnet/minecraft/block/Block;
+ IF_ACMPNE L21
+ ICONST_1
+ GOTO L22
+ L21
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/IBlockAccess I I I net/minecraftforge/common/util/ForgeDirection net/minecraftforge/common/IPlantable net/minecraft/block/Block net/minecraftforge/common/EnumPlantType] []
+ ICONST_0
+ L22
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/IBlockAccess I I I net/minecraftforge/common/util/ForgeDirection net/minecraftforge/common/IPlantable net/minecraft/block/Block net/minecraftforge/common/EnumPlantType] [I]
+ IRETURN
+ L12
+ LINENUMBER 2242 L12
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/IBlockAccess I I I net/minecraftforge/common/util/ForgeDirection net/minecraftforge/common/IPlantable net/minecraft/block/Block net/minecraftforge/common/EnumPlantType] []
+ ALOAD 0
+ ALOAD 1
+ ILOAD 2
+ ILOAD 3
+ ILOAD 4
+ GETSTATIC net/minecraftforge/common/util/ForgeDirection.UP : Lnet/minecraftforge/common/util/ForgeDirection;
+ INVOKEVIRTUAL net/minecraft/block/Block.isSideSolid (Lnet/minecraft/world/IBlockAccess;IIILnet/minecraftforge/common/util/ForgeDirection;)Z
+ IRETURN
+ L13
+ LINENUMBER 2243 L13
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/IBlockAccess I I I net/minecraftforge/common/util/ForgeDirection net/minecraftforge/common/IPlantable net/minecraft/block/Block net/minecraftforge/common/EnumPlantType] []
+ ALOAD 0
+ GETSTATIC net/minecraft/init/Blocks.grass : Lnet/minecraft/block/BlockGrass;
+ IF_ACMPEQ L23
+ ALOAD 0
+ GETSTATIC net/minecraft/init/Blocks.dirt : Lnet/minecraft/block/Block;
+ IF_ACMPEQ L23
+ ALOAD 0
+ GETSTATIC net/minecraft/init/Blocks.farmland : Lnet/minecraft/block/Block;
+ IF_ACMPNE L24
+ L23
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/IBlockAccess I I I net/minecraftforge/common/util/ForgeDirection net/minecraftforge/common/IPlantable net/minecraft/block/Block net/minecraftforge/common/EnumPlantType] []
+ ICONST_1
+ GOTO L25
+ L24
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/IBlockAccess I I I net/minecraftforge/common/util/ForgeDirection net/minecraftforge/common/IPlantable net/minecraft/block/Block net/minecraftforge/common/EnumPlantType] []
+ ICONST_0
+ L25
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/IBlockAccess I I I net/minecraftforge/common/util/ForgeDirection net/minecraftforge/common/IPlantable net/minecraft/block/Block net/minecraftforge/common/EnumPlantType] [I]
+ IRETURN
+ L14
+ LINENUMBER 2244 L14
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/IBlockAccess I I I net/minecraftforge/common/util/ForgeDirection net/minecraftforge/common/IPlantable net/minecraft/block/Block net/minecraftforge/common/EnumPlantType] []
+ ALOAD 1
+ ILOAD 2
+ ILOAD 3
+ ILOAD 4
+ INVOKEINTERFACE net/minecraft/world/IBlockAccess.getBlock (III)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/block/Block.getMaterial ()Lnet/minecraft/block/material/Material;
+ GETSTATIC net/minecraft/block/material/Material.water : Lnet/minecraft/block/material/Material;
+ IF_ACMPNE L26
+ ALOAD 1
+ ILOAD 2
+ ILOAD 3
+ ILOAD 4
+ INVOKEINTERFACE net/minecraft/world/IBlockAccess.getBlockMetadata (III)I
+ IFNE L26
+ ICONST_1
+ GOTO L27
+ L26
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/IBlockAccess I I I net/minecraftforge/common/util/ForgeDirection net/minecraftforge/common/IPlantable net/minecraft/block/Block net/minecraftforge/common/EnumPlantType] []
+ ICONST_0
+ L27
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/IBlockAccess I I I net/minecraftforge/common/util/ForgeDirection net/minecraftforge/common/IPlantable net/minecraft/block/Block net/minecraftforge/common/EnumPlantType] [I]
+ IRETURN
+ L15
+ LINENUMBER 2246 L15
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/IBlockAccess I I I net/minecraftforge/common/util/ForgeDirection net/minecraftforge/common/IPlantable net/minecraft/block/Block net/minecraftforge/common/EnumPlantType] []
+ ALOAD 0
+ GETSTATIC net/minecraft/init/Blocks.grass : Lnet/minecraft/block/BlockGrass;
+ IF_ACMPEQ L28
+ ALOAD 0
+ GETSTATIC net/minecraft/init/Blocks.dirt : Lnet/minecraft/block/Block;
+ IF_ACMPEQ L28
+ ALOAD 0
+ GETSTATIC net/minecraft/init/Blocks.sand : Lnet/minecraft/block/BlockSand;
+ IF_ACMPNE L29
+ L28
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/IBlockAccess I I I net/minecraftforge/common/util/ForgeDirection net/minecraftforge/common/IPlantable net/minecraft/block/Block net/minecraftforge/common/EnumPlantType] []
+ ICONST_1
+ GOTO L30
+ L29
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/IBlockAccess I I I net/minecraftforge/common/util/ForgeDirection net/minecraftforge/common/IPlantable net/minecraft/block/Block net/minecraftforge/common/EnumPlantType] []
+ ICONST_0
+ L30
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/IBlockAccess I I I net/minecraftforge/common/util/ForgeDirection net/minecraftforge/common/IPlantable net/minecraft/block/Block net/minecraftforge/common/EnumPlantType] [I]
+ ISTORE 9
+ L31
+ LINENUMBER 2247 L31
+ ALOAD 1
+ ILOAD 2
+ ICONST_1
+ ISUB
+ ILOAD 3
+ ILOAD 4
+ INVOKEINTERFACE net/minecraft/world/IBlockAccess.getBlock (III)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/block/Block.getMaterial ()Lnet/minecraft/block/material/Material;
+ GETSTATIC net/minecraft/block/material/Material.water : Lnet/minecraft/block/material/Material;
+ IF_ACMPEQ L32
+ ALOAD 1
+ ILOAD 2
+ ICONST_1
+ IADD
+ ILOAD 3
+ ILOAD 4
+ L33
+ LINENUMBER 2248 L33
+ INVOKEINTERFACE net/minecraft/world/IBlockAccess.getBlock (III)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/block/Block.getMaterial ()Lnet/minecraft/block/material/Material;
+ GETSTATIC net/minecraft/block/material/Material.water : Lnet/minecraft/block/material/Material;
+ IF_ACMPEQ L32
+ ALOAD 1
+ ILOAD 2
+ ILOAD 3
+ ILOAD 4
+ ICONST_1
+ ISUB
+ L34
+ LINENUMBER 2249 L34
+ INVOKEINTERFACE net/minecraft/world/IBlockAccess.getBlock (III)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/block/Block.getMaterial ()Lnet/minecraft/block/material/Material;
+ GETSTATIC net/minecraft/block/material/Material.water : Lnet/minecraft/block/material/Material;
+ IF_ACMPEQ L32
+ ALOAD 1
+ ILOAD 2
+ ILOAD 3
+ ILOAD 4
+ ICONST_1
+ IADD
+ L35
+ LINENUMBER 2250 L35
+ INVOKEINTERFACE net/minecraft/world/IBlockAccess.getBlock (III)Lnet/minecraft/block/Block;
+ INVOKEVIRTUAL net/minecraft/block/Block.getMaterial ()Lnet/minecraft/block/material/Material;
+ GETSTATIC net/minecraft/block/material/Material.water : Lnet/minecraft/block/material/Material;
+ IF_ACMPNE L36
+ L32
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/IBlockAccess I I I net/minecraftforge/common/util/ForgeDirection net/minecraftforge/common/IPlantable net/minecraft/block/Block net/minecraftforge/common/EnumPlantType I] []
+ ICONST_1
+ GOTO L37
+ L36
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/IBlockAccess I I I net/minecraftforge/common/util/ForgeDirection net/minecraftforge/common/IPlantable net/minecraft/block/Block net/minecraftforge/common/EnumPlantType I] []
+ ICONST_0
+ L37
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/IBlockAccess I I I net/minecraftforge/common/util/ForgeDirection net/minecraftforge/common/IPlantable net/minecraft/block/Block net/minecraftforge/common/EnumPlantType I] [I]
+ ISTORE 10
+ L38
+ LINENUMBER 2251 L38
+ ILOAD 9
+ IFEQ L39
+ ILOAD 10
+ IFEQ L39
+ ICONST_1
+ GOTO L40
+ L39
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/IBlockAccess I I I net/minecraftforge/common/util/ForgeDirection net/minecraftforge/common/IPlantable net/minecraft/block/Block net/minecraftforge/common/EnumPlantType I I] []
+ ICONST_0
+ L40
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/IBlockAccess I I I net/minecraftforge/common/util/ForgeDirection net/minecraftforge/common/IPlantable net/minecraft/block/Block net/minecraftforge/common/EnumPlantType I I] [I]
+ IRETURN
+ L16
+ LINENUMBER 2254 L16
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/IBlockAccess I I I net/minecraftforge/common/util/ForgeDirection net/minecraftforge/common/IPlantable net/minecraft/block/Block net/minecraftforge/common/EnumPlantType] []
+ ICONST_0
+ IRETURN
+ L41
+ LOCALVARIABLE isBeach Z L31 L16 9
+ LOCALVARIABLE hasWater Z L38 L16 10
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L41 0
+ LOCALVARIABLE world Lnet/minecraft/world/IBlockAccess; L0 L41 1
+ LOCALVARIABLE x I L0 L41 2
+ LOCALVARIABLE y I L0 L41 3
+ LOCALVARIABLE z I L0 L41 4
+ LOCALVARIABLE direction Lnet/minecraftforge/common/util/ForgeDirection; L0 L41 5
+ LOCALVARIABLE plantable Lnet/minecraftforge/common/IPlantable; L0 L41 6
+ LOCALVARIABLE plant Lnet/minecraft/block/Block; L1 L41 7
+ LOCALVARIABLE plantType Lnet/minecraftforge/common/EnumPlantType; L2 L41 8
+ MAXSTACK = 6
+ MAXLOCALS = 11
+
+ // access flags 0x1
+ public onPlantGrow(Lnet/minecraft/world/World;IIIIII)V
+ L0
+ LINENUMBER 2276 L0
+ ALOAD 0
+ GETSTATIC net/minecraft/init/Blocks.grass : Lnet/minecraft/block/BlockGrass;
+ IF_ACMPEQ L1
+ ALOAD 0
+ GETSTATIC net/minecraft/init/Blocks.farmland : Lnet/minecraft/block/Block;
+ IF_ACMPNE L2
+ L1
+ LINENUMBER 2278 L1
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/World I I I I I I] []
+ ALOAD 1
+ ILOAD 2
+ ILOAD 3
+ ILOAD 4
+ GETSTATIC net/minecraft/init/Blocks.dirt : Lnet/minecraft/block/Block;
+ ICONST_0
+ ICONST_2
+ INVOKEVIRTUAL net/minecraft/world/World.setBlock (IIILnet/minecraft/block/Block;II)Z
+ POP
+ L2
+ LINENUMBER 2280 L2
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/World I I I I I I] []
+ RETURN
+ L3
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L3 0
+ LOCALVARIABLE world Lnet/minecraft/world/World; L0 L3 1
+ LOCALVARIABLE x I L0 L3 2
+ LOCALVARIABLE y I L0 L3 3
+ LOCALVARIABLE z I L0 L3 4
+ LOCALVARIABLE sourceX I L0 L3 5
+ LOCALVARIABLE sourceY I L0 L3 6
+ LOCALVARIABLE sourceZ I L0 L3 7
+ MAXSTACK = 7
+ MAXLOCALS = 8
+
+ // access flags 0x1
+ public isFertile(Lnet/minecraft/world/World;III)Z
+ L0
+ LINENUMBER 2295 L0
+ ALOAD 0
+ GETSTATIC net/minecraft/init/Blocks.farmland : Lnet/minecraft/block/Block;
+ IF_ACMPNE L1
+ L2
+ LINENUMBER 2297 L2
+ ALOAD 1
+ ILOAD 2
+ ILOAD 3
+ ILOAD 4
+ INVOKEVIRTUAL net/minecraft/world/World.getBlockMetadata (III)I
+ IFLE L3
+ ICONST_1
+ GOTO L4
+ L3
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/World I I I] []
+ ICONST_0
+ L4
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/World I I I] [I]
+ IRETURN
+ L1
+ LINENUMBER 2300 L1
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/World I I I] []
+ ICONST_0
+ IRETURN
+ L5
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L5 0
+ LOCALVARIABLE world Lnet/minecraft/world/World; L0 L5 1
+ LOCALVARIABLE x I L0 L5 2
+ LOCALVARIABLE y I L0 L5 3
+ LOCALVARIABLE z I L0 L5 4
+ MAXSTACK = 4
+ MAXLOCALS = 5
+
+ // access flags 0x1
+ public getLightOpacity(Lnet/minecraft/world/IBlockAccess;III)I
+ L0
+ LINENUMBER 2319 L0
+ ALOAD 0
+ INVOKEVIRTUAL net/minecraft/block/Block.getLightOpacity ()I
+ IRETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L1 0
+ LOCALVARIABLE world Lnet/minecraft/world/IBlockAccess; L0 L1 1
+ LOCALVARIABLE x I L0 L1 2
+ LOCALVARIABLE y I L0 L1 3
+ LOCALVARIABLE z I L0 L1 4
+ MAXSTACK = 1
+ MAXLOCALS = 5
+
+ // access flags 0x1
+ public canEntityDestroy(Lnet/minecraft/world/IBlockAccess;IIILnet/minecraft/entity/Entity;)Z
+ L0
+ LINENUMBER 2333 L0
+ ALOAD 5
+ INSTANCEOF net/minecraft/entity/boss/EntityWither
+ IFEQ L1
+ L2
+ LINENUMBER 2335 L2
+ ALOAD 0
+ GETSTATIC net/minecraft/init/Blocks.bedrock : Lnet/minecraft/block/Block;
+ IF_ACMPEQ L3
+ ALOAD 0
+ GETSTATIC net/minecraft/init/Blocks.end_portal : Lnet/minecraft/block/Block;
+ IF_ACMPEQ L3
+ ALOAD 0
+ GETSTATIC net/minecraft/init/Blocks.end_portal_frame : Lnet/minecraft/block/Block;
+ IF_ACMPEQ L3
+ ALOAD 0
+ GETSTATIC net/minecraft/init/Blocks.command_block : Lnet/minecraft/block/Block;
+ IF_ACMPEQ L3
+ ICONST_1
+ GOTO L4
+ L3
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/IBlockAccess I I I net/minecraft/entity/Entity] []
+ ICONST_0
+ L4
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/IBlockAccess I I I net/minecraft/entity/Entity] [I]
+ IRETURN
+ L1
+ LINENUMBER 2337 L1
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/IBlockAccess I I I net/minecraft/entity/Entity] []
+ ALOAD 5
+ INSTANCEOF net/minecraft/entity/boss/EntityDragon
+ IFEQ L5
+ L6
+ LINENUMBER 2339 L6
+ ALOAD 0
+ GETSTATIC net/minecraft/init/Blocks.obsidian : Lnet/minecraft/block/Block;
+ IF_ACMPEQ L7
+ ALOAD 0
+ GETSTATIC net/minecraft/init/Blocks.end_stone : Lnet/minecraft/block/Block;
+ IF_ACMPEQ L7
+ ALOAD 0
+ GETSTATIC net/minecraft/init/Blocks.bedrock : Lnet/minecraft/block/Block;
+ IF_ACMPEQ L7
+ ICONST_1
+ GOTO L8
+ L7
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/IBlockAccess I I I net/minecraft/entity/Entity] []
+ ICONST_0
+ L8
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/IBlockAccess I I I net/minecraft/entity/Entity] [I]
+ IRETURN
+ L5
+ LINENUMBER 2342 L5
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/IBlockAccess I I I net/minecraft/entity/Entity] []
+ ICONST_1
+ IRETURN
+ L9
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L9 0
+ LOCALVARIABLE world Lnet/minecraft/world/IBlockAccess; L0 L9 1
+ LOCALVARIABLE x I L0 L9 2
+ LOCALVARIABLE y I L0 L9 3
+ LOCALVARIABLE z I L0 L9 4
+ LOCALVARIABLE entity Lnet/minecraft/entity/Entity; L0 L9 5
+ MAXSTACK = 2
+ MAXLOCALS = 6
+
+ // access flags 0x1
+ public isBeaconBase(Lnet/minecraft/world/IBlockAccess;IIIIII)Z
+ L0
+ LINENUMBER 2359 L0
+ ALOAD 0
+ GETSTATIC net/minecraft/init/Blocks.emerald_block : Lnet/minecraft/block/Block;
+ IF_ACMPEQ L1
+ ALOAD 0
+ GETSTATIC net/minecraft/init/Blocks.gold_block : Lnet/minecraft/block/Block;
+ IF_ACMPEQ L1
+ ALOAD 0
+ GETSTATIC net/minecraft/init/Blocks.diamond_block : Lnet/minecraft/block/Block;
+ IF_ACMPEQ L1
+ ALOAD 0
+ GETSTATIC net/minecraft/init/Blocks.iron_block : Lnet/minecraft/block/Block;
+ IF_ACMPNE L2
+ L1
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/IBlockAccess I I I I I I] []
+ ICONST_1
+ GOTO L3
+ L2
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/IBlockAccess I I I I I I] []
+ ICONST_0
+ L3
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/IBlockAccess I I I I I I] [I]
+ IRETURN
+ L4
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L4 0
+ LOCALVARIABLE worldObj Lnet/minecraft/world/IBlockAccess; L0 L4 1
+ LOCALVARIABLE x I L0 L4 2
+ LOCALVARIABLE y I L0 L4 3
+ LOCALVARIABLE z I L0 L4 4
+ LOCALVARIABLE beaconX I L0 L4 5
+ LOCALVARIABLE beaconY I L0 L4 6
+ LOCALVARIABLE beaconZ I L0 L4 7
+ MAXSTACK = 2
+ MAXLOCALS = 8
+
+ // access flags 0x1
+ public rotateBlock(Lnet/minecraft/world/World;IIILnet/minecraftforge/common/util/ForgeDirection;)Z
+ L0
+ LINENUMBER 2377 L0
+ ALOAD 0
+ ALOAD 1
+ ILOAD 2
+ ILOAD 3
+ ILOAD 4
+ ALOAD 5
+ INVOKESTATIC net/minecraftforge/common/util/RotationHelper.rotateVanillaBlock (Lnet/minecraft/block/Block;Lnet/minecraft/world/World;IIILnet/minecraftforge/common/util/ForgeDirection;)Z
+ IRETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L1 0
+ LOCALVARIABLE worldObj Lnet/minecraft/world/World; L0 L1 1
+ LOCALVARIABLE x I L0 L1 2
+ LOCALVARIABLE y I L0 L1 3
+ LOCALVARIABLE z I L0 L1 4
+ LOCALVARIABLE axis Lnet/minecraftforge/common/util/ForgeDirection; L0 L1 5
+ MAXSTACK = 6
+ MAXLOCALS = 6
+
+ // access flags 0x1
+ public getValidRotations(Lnet/minecraft/world/World;III)[Lnet/minecraftforge/common/util/ForgeDirection;
+ L0
+ LINENUMBER 2391 L0
+ ALOAD 0
+ INVOKESTATIC net/minecraftforge/common/util/RotationHelper.getValidVanillaBlockRotations (Lnet/minecraft/block/Block;)[Lnet/minecraftforge/common/util/ForgeDirection;
+ ARETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L1 0
+ LOCALVARIABLE worldObj Lnet/minecraft/world/World; L0 L1 1
+ LOCALVARIABLE x I L0 L1 2
+ LOCALVARIABLE y I L0 L1 3
+ LOCALVARIABLE z I L0 L1 4
+ MAXSTACK = 1
+ MAXLOCALS = 5
+
+ // access flags 0x1
+ public getEnchantPowerBonus(Lnet/minecraft/world/World;III)F
+ L0
+ LINENUMBER 2404 L0
+ ALOAD 0
+ GETSTATIC net/minecraft/init/Blocks.bookshelf : Lnet/minecraft/block/Block;
+ IF_ACMPNE L1
+ FCONST_1
+ GOTO L2
+ L1
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/World I I I] []
+ FCONST_0
+ L2
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/World I I I] [F]
+ FRETURN
+ L3
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L3 0
+ LOCALVARIABLE world Lnet/minecraft/world/World; L0 L3 1
+ LOCALVARIABLE x I L0 L3 2
+ LOCALVARIABLE y I L0 L3 3
+ LOCALVARIABLE z I L0 L3 4
+ MAXSTACK = 2
+ MAXLOCALS = 5
+
+ // access flags 0x1
+ public recolourBlock(Lnet/minecraft/world/World;IIILnet/minecraftforge/common/util/ForgeDirection;I)Z
+ L0
+ LINENUMBER 2419 L0
+ ALOAD 0
+ GETSTATIC net/minecraft/init/Blocks.wool : Lnet/minecraft/block/Block;
+ IF_ACMPNE L1
+ L2
+ LINENUMBER 2421 L2
+ ALOAD 1
+ ILOAD 2
+ ILOAD 3
+ ILOAD 4
+ INVOKEVIRTUAL net/minecraft/world/World.getBlockMetadata (III)I
+ ISTORE 7
+ L3
+ LINENUMBER 2422 L3
+ ILOAD 7
+ ILOAD 6
+ IF_ICMPEQ L1
+ L4
+ LINENUMBER 2424 L4
+ ALOAD 1
+ ILOAD 2
+ ILOAD 3
+ ILOAD 4
+ ILOAD 6
+ ICONST_3
+ INVOKEVIRTUAL net/minecraft/world/World.setBlockMetadataWithNotify (IIIII)Z
+ POP
+ L5
+ LINENUMBER 2425 L5
+ ICONST_1
+ IRETURN
+ L1
+ LINENUMBER 2428 L1
+ FRAME FULL [net/minecraft/block/Block net/minecraft/world/World I I I net/minecraftforge/common/util/ForgeDirection I] []
+ ICONST_0
+ IRETURN
+ L6
+ LOCALVARIABLE meta I L3 L1 7
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L6 0
+ LOCALVARIABLE world Lnet/minecraft/world/World; L0 L6 1
+ LOCALVARIABLE x I L0 L6 2
+ LOCALVARIABLE y I L0 L6 3
+ LOCALVARIABLE z I L0 L6 4
+ LOCALVARIABLE side Lnet/minecraftforge/common/util/ForgeDirection; L0 L6 5
+ LOCALVARIABLE colour I L0 L6 6
+ MAXSTACK = 6
+ MAXLOCALS = 8
+
+ // access flags 0x1
+ public getExpDrop(Lnet/minecraft/world/IBlockAccess;II)I
+ L0
+ LINENUMBER 2441 L0
+ ICONST_0
+ IRETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L1 0
+ LOCALVARIABLE world Lnet/minecraft/world/IBlockAccess; L0 L1 1
+ LOCALVARIABLE metadata I L0 L1 2
+ LOCALVARIABLE fortune I L0 L1 3
+ MAXSTACK = 1
+ MAXLOCALS = 4
+
+ // access flags 0x1
+ public onNeighborChange(Lnet/minecraft/world/IBlockAccess;IIIIII)V
+ L0
+ LINENUMBER 2456 L0
+ RETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L1 0
+ LOCALVARIABLE world Lnet/minecraft/world/IBlockAccess; L0 L1 1
+ LOCALVARIABLE x I L0 L1 2
+ LOCALVARIABLE y I L0 L1 3
+ LOCALVARIABLE z I L0 L1 4
+ LOCALVARIABLE tileX I L0 L1 5
+ LOCALVARIABLE tileY I L0 L1 6
+ LOCALVARIABLE tileZ I L0 L1 7
+ MAXSTACK = 0
+ MAXLOCALS = 8
+
+ // access flags 0x1
+ public shouldCheckWeakPower(Lnet/minecraft/world/IBlockAccess;IIII)Z
+ L0
+ LINENUMBER 2469 L0
+ ALOAD 0
+ INVOKEVIRTUAL net/minecraft/block/Block.isNormalCube ()Z
+ IRETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L1 0
+ LOCALVARIABLE world Lnet/minecraft/world/IBlockAccess; L0 L1 1
+ LOCALVARIABLE x I L0 L1 2
+ LOCALVARIABLE y I L0 L1 3
+ LOCALVARIABLE z I L0 L1 4
+ LOCALVARIABLE side I L0 L1 5
+ MAXSTACK = 1
+ MAXLOCALS = 6
+
+ // access flags 0x1
+ public getWeakChanges(Lnet/minecraft/world/IBlockAccess;III)Z
+ L0
+ LINENUMBER 2486 L0
+ ICONST_0
+ IRETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L1 0
+ LOCALVARIABLE world Lnet/minecraft/world/IBlockAccess; L0 L1 1
+ LOCALVARIABLE x I L0 L1 2
+ LOCALVARIABLE y I L0 L1 3
+ LOCALVARIABLE z I L0 L1 4
+ MAXSTACK = 1
+ MAXLOCALS = 5
+
+ // access flags 0x1
+ public setHarvestLevel(Ljava/lang/String;I)V
+ L0
+ LINENUMBER 2504 L0
+ ICONST_0
+ ISTORE 3
+ L1
+ FRAME FULL [net/minecraft/block/Block java/lang/String I I] []
+ ILOAD 3
+ BIPUSH 16
+ IF_ICMPGE L2
+ L3
+ LINENUMBER 2506 L3
+ ALOAD 0
+ ALOAD 1
+ ILOAD 2
+ ILOAD 3
+ INVOKEVIRTUAL net/minecraft/block/Block.setHarvestLevel (Ljava/lang/String;II)V
+ L4
+ LINENUMBER 2504 L4
+ IINC 3 1
+ GOTO L1
+ L2
+ LINENUMBER 2508 L2
+ FRAME FULL [net/minecraft/block/Block java/lang/String I I] []
+ RETURN
+ L5
+ LOCALVARIABLE m I L1 L2 3
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L5 0
+ LOCALVARIABLE toolClass Ljava/lang/String; L0 L5 1
+ LOCALVARIABLE level I L0 L5 2
+ MAXSTACK = 4
+ MAXLOCALS = 4
+
+ // access flags 0x1
+ public setHarvestLevel(Ljava/lang/String;II)V
+ L0
+ LINENUMBER 2524 L0
+ ALOAD 0
+ GETFIELD net/minecraft/block/Block.harvestTool : [Ljava/lang/String;
+ ILOAD 3
+ ALOAD 1
+ AASTORE
+ L1
+ LINENUMBER 2525 L1
+ ALOAD 0
+ GETFIELD net/minecraft/block/Block.harvestLevel : [I
+ ILOAD 3
+ ILOAD 2
+ IASTORE
+ L2
+ LINENUMBER 2526 L2
+ RETURN
+ L3
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L3 0
+ LOCALVARIABLE toolClass Ljava/lang/String; L0 L3 1
+ LOCALVARIABLE level I L0 L3 2
+ LOCALVARIABLE metadata I L0 L3 3
+ MAXSTACK = 3
+ MAXLOCALS = 4
+
+ // access flags 0x1
+ public getHarvestTool(I)Ljava/lang/String;
+ L0
+ LINENUMBER 2537 L0
+ ALOAD 0
+ GETFIELD net/minecraft/block/Block.harvestTool : [Ljava/lang/String;
+ ILOAD 1
+ AALOAD
+ ARETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L1 0
+ LOCALVARIABLE metadata I L0 L1 1
+ MAXSTACK = 2
+ MAXLOCALS = 2
+
+ // access flags 0x1
+ public getHarvestLevel(I)I
+ L0
+ LINENUMBER 2549 L0
+ ALOAD 0
+ GETFIELD net/minecraft/block/Block.harvestLevel : [I
+ ILOAD 1
+ IALOAD
+ IRETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L1 0
+ LOCALVARIABLE metadata I L0 L1 1
+ MAXSTACK = 2
+ MAXLOCALS = 2
+
+ // access flags 0x1
+ public isToolEffective(Ljava/lang/String;I)Z
+ L0
+ LINENUMBER 2562 L0
+ LDC "pickaxe"
+ ALOAD 1
+ INVOKEVIRTUAL java/lang/String.equals (Ljava/lang/Object;)Z
+ IFEQ L1
+ ALOAD 0
+ GETSTATIC net/minecraft/init/Blocks.redstone_ore : Lnet/minecraft/block/Block;
+ IF_ACMPEQ L2
+ ALOAD 0
+ GETSTATIC net/minecraft/init/Blocks.lit_redstone_ore : Lnet/minecraft/block/Block;
+ IF_ACMPEQ L2
+ ALOAD 0
+ GETSTATIC net/minecraft/init/Blocks.obsidian : Lnet/minecraft/block/Block;
+ IF_ACMPNE L1
+ L2
+ LINENUMBER 2563 L2
+ FRAME FULL [net/minecraft/block/Block java/lang/String I] []
+ ICONST_0
+ IRETURN
+ L1
+ LINENUMBER 2564 L1
+ FRAME FULL [net/minecraft/block/Block java/lang/String I] []
+ ALOAD 0
+ GETFIELD net/minecraft/block/Block.harvestTool : [Ljava/lang/String;
+ ILOAD 2
+ AALOAD
+ IFNONNULL L3
+ ICONST_0
+ IRETURN
+ L3
+ LINENUMBER 2565 L3
+ FRAME FULL [net/minecraft/block/Block java/lang/String I] []
+ ALOAD 0
+ GETFIELD net/minecraft/block/Block.harvestTool : [Ljava/lang/String;
+ ILOAD 2
+ AALOAD
+ ALOAD 1
+ INVOKEVIRTUAL java/lang/String.equals (Ljava/lang/Object;)Z
+ IRETURN
+ L4
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L4 0
+ LOCALVARIABLE type Ljava/lang/String; L0 L4 1
+ LOCALVARIABLE metadata I L0 L4 2
+ MAXSTACK = 2
+ MAXLOCALS = 3
+
+ // access flags 0x4
+ // signature (Z)Ljava/util/List<Lnet/minecraft/item/ItemStack;>;
+ // declaration: java.util.List<net.minecraft.item.ItemStack> captureDrops(boolean)
+ protected captureDrops(Z)Ljava/util/List;
+ L0
+ LINENUMBER 2580 L0
+ ILOAD 1
+ IFEQ L1
+ L2
+ LINENUMBER 2582 L2
+ ALOAD 0
+ GETFIELD net/minecraft/block/Block.captureDrops : Ljava/lang/ThreadLocal;
+ ICONST_1
+ INVOKESTATIC java/lang/Boolean.valueOf (Z)Ljava/lang/Boolean;
+ INVOKEVIRTUAL java/lang/ThreadLocal.set (Ljava/lang/Object;)V
+ L3
+ LINENUMBER 2583 L3
+ ALOAD 0
+ GETFIELD net/minecraft/block/Block.capturedDrops : Ljava/lang/ThreadLocal;
+ INVOKEVIRTUAL java/lang/ThreadLocal.get ()Ljava/lang/Object;
+ CHECKCAST java/util/List
+ INVOKEINTERFACE java/util/List.clear ()V
+ L4
+ LINENUMBER 2584 L4
+ ACONST_NULL
+ ARETURN
+ L1
+ LINENUMBER 2588 L1
+ FRAME FULL [net/minecraft/block/Block I] []
+ ALOAD 0
+ GETFIELD net/minecraft/block/Block.captureDrops : Ljava/lang/ThreadLocal;
+ ICONST_0
+ INVOKESTATIC java/lang/Boolean.valueOf (Z)Ljava/lang/Boolean;
+ INVOKEVIRTUAL java/lang/ThreadLocal.set (Ljava/lang/Object;)V
+ L5
+ LINENUMBER 2589 L5
+ ALOAD 0
+ GETFIELD net/minecraft/block/Block.capturedDrops : Ljava/lang/ThreadLocal;
+ INVOKEVIRTUAL java/lang/ThreadLocal.get ()Ljava/lang/Object;
+ CHECKCAST java/util/List
+ ARETURN
+ L6
+ LOCALVARIABLE this Lnet/minecraft/block/Block; L0 L6 0
+ LOCALVARIABLE start Z L0 L6 1
+ MAXSTACK = 2
+ MAXLOCALS = 2
+
+ // access flags 0x8
+ static <clinit>()V
+ L0
+ LINENUMBER 57 L0
+ INVOKESTATIC cpw/mods/fml/common/registry/GameData.getBlockRegistry ()Lcpw/mods/fml/common/registry/FMLControlledNamespacedRegistry;
+ PUTSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ L1
+ LINENUMBER 60 L1
+ NEW net/minecraft/block/Block$SoundType
+ DUP
+ LDC "stone"
+ FCONST_1
+ FCONST_1
+ INVOKESPECIAL net/minecraft/block/Block$SoundType.<init> (Ljava/lang/String;FF)V
+ PUTSTATIC net/minecraft/block/Block.soundTypeStone : Lnet/minecraft/block/Block$SoundType;
+ L2
+ LINENUMBER 62 L2
+ NEW net/minecraft/block/Block$SoundType
+ DUP
+ LDC "wood"
+ FCONST_1
+ FCONST_1
+ INVOKESPECIAL net/minecraft/block/Block$SoundType.<init> (Ljava/lang/String;FF)V
+ PUTSTATIC net/minecraft/block/Block.soundTypeWood : Lnet/minecraft/block/Block$SoundType;
+ L3
+ LINENUMBER 64 L3
+ NEW net/minecraft/block/Block$SoundType
+ DUP
+ LDC "gravel"
+ FCONST_1
+ FCONST_1
+ INVOKESPECIAL net/minecraft/block/Block$SoundType.<init> (Ljava/lang/String;FF)V
+ PUTSTATIC net/minecraft/block/Block.soundTypeGravel : Lnet/minecraft/block/Block$SoundType;
+ L4
+ LINENUMBER 65 L4
+ NEW net/minecraft/block/Block$SoundType
+ DUP
+ LDC "grass"
+ FCONST_1
+ FCONST_1
+ INVOKESPECIAL net/minecraft/block/Block$SoundType.<init> (Ljava/lang/String;FF)V
+ PUTSTATIC net/minecraft/block/Block.soundTypeGrass : Lnet/minecraft/block/Block$SoundType;
+ L5
+ LINENUMBER 67 L5
+ NEW net/minecraft/block/Block$SoundType
+ DUP
+ LDC "stone"
+ FCONST_1
+ FCONST_1
+ INVOKESPECIAL net/minecraft/block/Block$SoundType.<init> (Ljava/lang/String;FF)V
+ PUTSTATIC net/minecraft/block/Block.soundTypePiston : Lnet/minecraft/block/Block$SoundType;
+ L6
+ LINENUMBER 69 L6
+ NEW net/minecraft/block/Block$SoundType
+ DUP
+ LDC "stone"
+ FCONST_1
+ LDC 1.5
+ INVOKESPECIAL net/minecraft/block/Block$SoundType.<init> (Ljava/lang/String;FF)V
+ PUTSTATIC net/minecraft/block/Block.soundTypeMetal : Lnet/minecraft/block/Block$SoundType;
+ L7
+ LINENUMBER 71 L7
+ NEW net/minecraft/block/Block$1
+ DUP
+ LDC "stone"
+ FCONST_1
+ FCONST_1
+ INVOKESPECIAL net/minecraft/block/Block$1.<init> (Ljava/lang/String;FF)V
+ PUTSTATIC net/minecraft/block/Block.soundTypeGlass : Lnet/minecraft/block/Block$SoundType;
+ L8
+ LINENUMBER 87 L8
+ NEW net/minecraft/block/Block$SoundType
+ DUP
+ LDC "cloth"
+ FCONST_1
+ FCONST_1
+ INVOKESPECIAL net/minecraft/block/Block$SoundType.<init> (Ljava/lang/String;FF)V
+ PUTSTATIC net/minecraft/block/Block.soundTypeCloth : Lnet/minecraft/block/Block$SoundType;
+ L9
+ LINENUMBER 88 L9
+ NEW net/minecraft/block/Block$SoundType
+ DUP
+ LDC "sand"
+ FCONST_1
+ FCONST_1
+ INVOKESPECIAL net/minecraft/block/Block$SoundType.<init> (Ljava/lang/String;FF)V
+ PUTSTATIC net/minecraft/block/Block.soundTypeSand : Lnet/minecraft/block/Block$SoundType;
+ L10
+ LINENUMBER 89 L10
+ NEW net/minecraft/block/Block$SoundType
+ DUP
+ LDC "snow"
+ FCONST_1
+ FCONST_1
+ INVOKESPECIAL net/minecraft/block/Block$SoundType.<init> (Ljava/lang/String;FF)V
+ PUTSTATIC net/minecraft/block/Block.soundTypeSnow : Lnet/minecraft/block/Block$SoundType;
+ L11
+ LINENUMBER 91 L11
+ NEW net/minecraft/block/Block$2
+ DUP
+ LDC "ladder"
+ FCONST_1
+ FCONST_1
+ INVOKESPECIAL net/minecraft/block/Block$2.<init> (Ljava/lang/String;FF)V
+ PUTSTATIC net/minecraft/block/Block.soundTypeLadder : Lnet/minecraft/block/Block$SoundType;
+ L12
+ LINENUMBER 103 L12
+ NEW net/minecraft/block/Block$3
+ DUP
+ LDC "anvil"
+ LDC 0.3
+ FCONST_1
+ INVOKESPECIAL net/minecraft/block/Block$3.<init> (Ljava/lang/String;FF)V
+ PUTSTATIC net/minecraft/block/Block.soundTypeAnvil : Lnet/minecraft/block/Block$SoundType;
+ RETURN
+ MAXSTACK = 5
+ MAXLOCALS = 0
+}
diff --git a/asm/ccl_modular/net#minecraft#block#BlockFire.txt b/asm/ccl_modular/net#minecraft#block#BlockFire.txt
new file mode 100644
index 0000000000..f869ba57ae
--- /dev/null
+++ b/asm/ccl_modular/net#minecraft#block#BlockFire.txt
@@ -0,0 +1,2450 @@
+// class version 50.0 (50)
+// access flags 0x21
+public class net/minecraft/block/BlockFire extends net/minecraft/block/Block {
+
+ // compiled from: BlockFire.java
+ // access flags 0x1008
+ static synthetic INNERCLASS net/minecraft/block/BlockFire$1 null null
+ // access flags 0xA
+ private static INNERCLASS net/minecraft/block/BlockFire$FireInfo net/minecraft/block/BlockFire FireInfo
+ // access flags 0x609
+ public static abstract INNERCLASS java/util/Map$Entry java/util/Map Entry
+
+ // DEPRECATED
+ // access flags 0x20002
+ private [I field_149849_a
+ @Ljava/lang/Deprecated;()
+
+ // DEPRECATED
+ // access flags 0x20002
+ private [I field_149848_b
+ @Ljava/lang/Deprecated;()
+
+ // access flags 0x2
+ private [Lnet/minecraft/util/IIcon; field_149850_M
+ @Lcpw/mods/fml/relauncher/SideOnly;(value=Lcpw/mods/fml/relauncher/Side;.CLIENT)
+
+ // access flags 0x1A
+ private final static Ljava/lang/String; __OBFID = "CL_00000245"
+
+ // access flags 0x2
+ // signature Ljava/util/IdentityHashMap<Lnet/minecraft/block/Block;Lnet/minecraft/block/BlockFire$FireInfo;>;
+ // declaration: java.util.IdentityHashMap<net.minecraft.block.Block, net.minecraft.block.BlockFire$FireInfo>
+ private Ljava/util/IdentityHashMap; blockInfo
+
+ // access flags 0x4
+ protected <init>()V
+ L0
+ LINENUMBER 33 L0
+ ALOAD 0
+ GETSTATIC net/minecraft/block/material/Material.fire : Lnet/minecraft/block/material/Material;
+ INVOKESPECIAL net/minecraft/block/Block.<init> (Lnet/minecraft/block/material/Material;)V
+ L1
+ LINENUMBER 23 L1
+ ALOAD 0
+ SIPUSH 4096
+ NEWARRAY T_INT
+ PUTFIELD net/minecraft/block/BlockFire.field_149849_a : [I
+ L2
+ LINENUMBER 25 L2
+ ALOAD 0
+ SIPUSH 4096
+ NEWARRAY T_INT
+ PUTFIELD net/minecraft/block/BlockFire.field_149848_b : [I
+ L3
+ LINENUMBER 484 L3
+ ALOAD 0
+ INVOKESTATIC com/google/common/collect/Maps.newIdentityHashMap ()Ljava/util/IdentityHashMap;
+ PUTFIELD net/minecraft/block/BlockFire.blockInfo : Ljava/util/IdentityHashMap;
+ L4
+ LINENUMBER 34 L4
+ ALOAD 0
+ ICONST_1
+ INVOKEVIRTUAL net/minecraft/block/BlockFire.setTickRandomly (Z)Lnet/minecraft/block/Block;
+ POP
+ L5
+ LINENUMBER 35 L5
+ RETURN
+ L6
+ LOCALVARIABLE this Lnet/minecraft/block/BlockFire; L0 L6 0
+ MAXSTACK = 2
+ MAXLOCALS = 1
+
+ // access flags 0x9
+ public static func_149843_e()V
+ L0
+ LINENUMBER 39 L0
+ GETSTATIC net/minecraft/init/Blocks.fire : Lnet/minecraft/block/BlockFire;
+ GETSTATIC net/minecraft/init/Blocks.planks : Lnet/minecraft/block/Block;
+ INVOKESTATIC net/minecraft/block/BlockFire.getIdFromBlock (Lnet/minecraft/block/Block;)I
+ ICONST_5
+ BIPUSH 20
+ INVOKEVIRTUAL net/minecraft/block/BlockFire.func_149842_a (III)V
+ L1
+ LINENUMBER 40 L1
+ GETSTATIC net/minecraft/init/Blocks.fire : Lnet/minecraft/block/BlockFire;
+ GETSTATIC net/minecraft/init/Blocks.double_wooden_slab : Lnet/minecraft/block/BlockSlab;
+ INVOKESTATIC net/minecraft/block/BlockFire.getIdFromBlock (Lnet/minecraft/block/Block;)I
+ ICONST_5
+ BIPUSH 20
+ INVOKEVIRTUAL net/minecraft/block/BlockFire.func_149842_a (III)V
+ L2
+ LINENUMBER 41 L2
+ GETSTATIC net/minecraft/init/Blocks.fire : Lnet/minecraft/block/BlockFire;
+ GETSTATIC net/minecraft/init/Blocks.wooden_slab : Lnet/minecraft/block/BlockSlab;
+ INVOKESTATIC net/minecraft/block/BlockFire.getIdFromBlock (Lnet/minecraft/block/Block;)I
+ ICONST_5
+ BIPUSH 20
+ INVOKEVIRTUAL net/minecraft/block/BlockFire.func_149842_a (III)V
+ L3
+ LINENUMBER 42 L3
+ GETSTATIC net/minecraft/init/Blocks.fire : Lnet/minecraft/block/BlockFire;
+ GETSTATIC net/minecraft/init/Blocks.fence : Lnet/minecraft/block/Block;
+ INVOKESTATIC net/minecraft/block/BlockFire.getIdFromBlock (Lnet/minecraft/block/Block;)I
+ ICONST_5
+ BIPUSH 20
+ INVOKEVIRTUAL net/minecraft/block/BlockFire.func_149842_a (III)V
+ L4
+ LINENUMBER 43 L4
+ GETSTATIC net/minecraft/init/Blocks.fire : Lnet/minecraft/block/BlockFire;
+ GETSTATIC net/minecraft/init/Blocks.oak_stairs : Lnet/minecraft/block/Block;
+ INVOKESTATIC net/minecraft/block/BlockFire.getIdFromBlock (Lnet/minecraft/block/Block;)I
+ ICONST_5
+ BIPUSH 20
+ INVOKEVIRTUAL net/minecraft/block/BlockFire.func_149842_a (III)V
+ L5
+ LINENUMBER 44 L5
+ GETSTATIC net/minecraft/init/Blocks.fire : Lnet/minecraft/block/BlockFire;
+ GETSTATIC net/minecraft/init/Blocks.birch_stairs : Lnet/minecraft/block/Block;
+ INVOKESTATIC net/minecraft/block/BlockFire.getIdFromBlock (Lnet/minecraft/block/Block;)I
+ ICONST_5
+ BIPUSH 20
+ INVOKEVIRTUAL net/minecraft/block/BlockFire.func_149842_a (III)V
+ L6
+ LINENUMBER 45 L6
+ GETSTATIC net/minecraft/init/Blocks.fire : Lnet/minecraft/block/BlockFire;
+ GETSTATIC net/minecraft/init/Blocks.spruce_stairs : Lnet/minecraft/block/Block;
+ INVOKESTATIC net/minecraft/block/BlockFire.getIdFromBlock (Lnet/minecraft/block/Block;)I
+ ICONST_5
+ BIPUSH 20
+ INVOKEVIRTUAL net/minecraft/block/BlockFire.func_149842_a (III)V
+ L7
+ LINENUMBER 46 L7
+ GETSTATIC net/minecraft/init/Blocks.fire : Lnet/minecraft/block/BlockFire;
+ GETSTATIC net/minecraft/init/Blocks.jungle_stairs : Lnet/minecraft/block/Block;
+ INVOKESTATIC net/minecraft/block/BlockFire.getIdFromBlock (Lnet/minecraft/block/Block;)I
+ ICONST_5
+ BIPUSH 20
+ INVOKEVIRTUAL net/minecraft/block/BlockFire.func_149842_a (III)V
+ L8
+ LINENUMBER 47 L8
+ GETSTATIC net/minecraft/init/Blocks.fire : Lnet/minecraft/block/BlockFire;
+ GETSTATIC net/minecraft/init/Blocks.log : Lnet/minecraft/block/Block;
+ INVOKESTATIC net/minecraft/block/BlockFire.getIdFromBlock (Lnet/minecraft/block/Block;)I
+ ICONST_5
+ ICONST_5
+ INVOKEVIRTUAL net/minecraft/block/BlockFire.func_149842_a (III)V
+ L9
+ LINENUMBER 48 L9
+ GETSTATIC net/minecraft/init/Blocks.fire : Lnet/minecraft/block/BlockFire;
+ GETSTATIC net/minecraft/init/Blocks.log2 : Lnet/minecraft/block/Block;
+ INVOKESTATIC net/minecraft/block/BlockFire.getIdFromBlock (Lnet/minecraft/block/Block;)I
+ ICONST_5
+ ICONST_5
+ INVOKEVIRTUAL net/minecraft/block/BlockFire.func_149842_a (III)V
+ L10
+ LINENUMBER 49 L10
+ GETSTATIC net/minecraft/init/Blocks.fire : Lnet/minecraft/block/BlockFire;
+ GETSTATIC net/minecraft/init/Blocks.leaves : Lnet/minecraft/block/BlockLeaves;
+ INVOKESTATIC net/minecraft/block/BlockFire.getIdFromBlock (Lnet/minecraft/block/Block;)I
+ BIPUSH 30
+ BIPUSH 60
+ INVOKEVIRTUAL net/minecraft/block/BlockFire.func_149842_a (III)V
+ L11
+ LINENUMBER 50 L11
+ GETSTATIC net/minecraft/init/Blocks.fire : Lnet/minecraft/block/BlockFire;
+ GETSTATIC net/minecraft/init/Blocks.leaves2 : Lnet/minecraft/block/BlockLeaves;
+ INVOKESTATIC net/minecraft/block/BlockFire.getIdFromBlock (Lnet/minecraft/block/Block;)I
+ BIPUSH 30
+ BIPUSH 60
+ INVOKEVIRTUAL net/minecraft/block/BlockFire.func_149842_a (III)V
+ L12
+ LINENUMBER 51 L12
+ GETSTATIC net/minecraft/init/Blocks.fire : Lnet/minecraft/block/BlockFire;
+ GETSTATIC net/minecraft/init/Blocks.bookshelf : Lnet/minecraft/block/Block;
+ INVOKESTATIC net/minecraft/block/BlockFire.getIdFromBlock (Lnet/minecraft/block/Block;)I
+ BIPUSH 30
+ BIPUSH 20
+ INVOKEVIRTUAL net/minecraft/block/BlockFire.func_149842_a (III)V
+ L13
+ LINENUMBER 52 L13
+ GETSTATIC net/minecraft/init/Blocks.fire : Lnet/minecraft/block/BlockFire;
+ GETSTATIC net/minecraft/init/Blocks.tnt : Lnet/minecraft/block/Block;
+ INVOKESTATIC net/minecraft/block/BlockFire.getIdFromBlock (Lnet/minecraft/block/Block;)I
+ BIPUSH 15
+ BIPUSH 100
+ INVOKEVIRTUAL net/minecraft/block/BlockFire.func_149842_a (III)V
+ L14
+ LINENUMBER 53 L14
+ GETSTATIC net/minecraft/init/Blocks.fire : Lnet/minecraft/block/BlockFire;
+ GETSTATIC net/minecraft/init/Blocks.tallgrass : Lnet/minecraft/block/BlockTallGrass;
+ INVOKESTATIC net/minecraft/block/BlockFire.getIdFromBlock (Lnet/minecraft/block/Block;)I
+ BIPUSH 60
+ BIPUSH 100
+ INVOKEVIRTUAL net/minecraft/block/BlockFire.func_149842_a (III)V
+ L15
+ LINENUMBER 54 L15
+ GETSTATIC net/minecraft/init/Blocks.fire : Lnet/minecraft/block/BlockFire;
+ GETSTATIC net/minecraft/init/Blocks.double_plant : Lnet/minecraft/block/BlockDoublePlant;
+ INVOKESTATIC net/minecraft/block/BlockFire.getIdFromBlock (Lnet/minecraft/block/Block;)I
+ BIPUSH 60
+ BIPUSH 100
+ INVOKEVIRTUAL net/minecraft/block/BlockFire.func_149842_a (III)V
+ L16
+ LINENUMBER 55 L16
+ GETSTATIC net/minecraft/init/Blocks.fire : Lnet/minecraft/block/BlockFire;
+ GETSTATIC net/minecraft/init/Blocks.yellow_flower : Lnet/minecraft/block/BlockFlower;
+ INVOKESTATIC net/minecraft/block/BlockFire.getIdFromBlock (Lnet/minecraft/block/Block;)I
+ BIPUSH 60
+ BIPUSH 100
+ INVOKEVIRTUAL net/minecraft/block/BlockFire.func_149842_a (III)V
+ L17
+ LINENUMBER 56 L17
+ GETSTATIC net/minecraft/init/Blocks.fire : Lnet/minecraft/block/BlockFire;
+ GETSTATIC net/minecraft/init/Blocks.red_flower : Lnet/minecraft/block/BlockFlower;
+ INVOKESTATIC net/minecraft/block/BlockFire.getIdFromBlock (Lnet/minecraft/block/Block;)I
+ BIPUSH 60
+ BIPUSH 100
+ INVOKEVIRTUAL net/minecraft/block/BlockFire.func_149842_a (III)V
+ L18
+ LINENUMBER 57 L18
+ GETSTATIC net/minecraft/init/Blocks.fire : Lnet/minecraft/block/BlockFire;
+ GETSTATIC net/minecraft/init/Blocks.wool : Lnet/minecraft/block/Block;
+ INVOKESTATIC net/minecraft/block/BlockFire.getIdFromBlock (Lnet/minecraft/block/Block;)I
+ BIPUSH 30
+ BIPUSH 60
+ INVOKEVIRTUAL net/minecraft/block/BlockFire.func_149842_a (III)V
+ L19
+ LINENUMBER 58 L19
+ GETSTATIC net/minecraft/init/Blocks.fire : Lnet/minecraft/block/BlockFire;
+ GETSTATIC net/minecraft/init/Blocks.vine : Lnet/minecraft/block/Block;
+ INVOKESTATIC net/minecraft/block/BlockFire.getIdFromBlock (Lnet/minecraft/block/Block;)I
+ BIPUSH 15
+ BIPUSH 100
+ INVOKEVIRTUAL net/minecraft/block/BlockFire.func_149842_a (III)V
+ L20
+ LINENUMBER 59 L20
+ GETSTATIC net/minecraft/init/Blocks.fire : Lnet/minecraft/block/BlockFire;
+ GETSTATIC net/minecraft/init/Blocks.coal_block : Lnet/minecraft/block/Block;
+ INVOKESTATIC net/minecraft/block/BlockFire.getIdFromBlock (Lnet/minecraft/block/Block;)I
+ ICONST_5
+ ICONST_5
+ INVOKEVIRTUAL net/minecraft/block/BlockFire.func_149842_a (III)V
+ L21
+ LINENUMBER 60 L21
+ GETSTATIC net/minecraft/init/Blocks.fire : Lnet/minecraft/block/BlockFire;
+ GETSTATIC net/minecraft/init/Blocks.hay_block : Lnet/minecraft/block/Block;
+ INVOKESTATIC net/minecraft/block/BlockFire.getIdFromBlock (Lnet/minecraft/block/Block;)I
+ BIPUSH 60
+ BIPUSH 20
+ INVOKEVIRTUAL net/minecraft/block/BlockFire.func_149842_a (III)V
+ L22
+ LINENUMBER 61 L22
+ GETSTATIC net/minecraft/init/Blocks.fire : Lnet/minecraft/block/BlockFire;
+ GETSTATIC net/minecraft/init/Blocks.carpet : Lnet/minecraft/block/Block;
+ INVOKESTATIC net/minecraft/block/BlockFire.getIdFromBlock (Lnet/minecraft/block/Block;)I
+ BIPUSH 60
+ BIPUSH 20
+ INVOKEVIRTUAL net/minecraft/block/BlockFire.func_149842_a (III)V
+ L23
+ LINENUMBER 62 L23
+ RETURN
+ MAXSTACK = 4
+ MAXLOCALS = 0
+
+ // DEPRECATED
+ // access flags 0x20001
+ public func_149842_a(III)V
+ @Ljava/lang/Deprecated;()
+ L0
+ LINENUMBER 67 L0
+ ALOAD 0
+ GETSTATIC net/minecraft/block/Block.blockRegistry : Lnet/minecraft/util/RegistryNamespaced;
+ ILOAD 1
+ INVOKEVIRTUAL net/minecraft/util/RegistryNamespaced.getObjectById (I)Ljava/lang/Object;
+ CHECKCAST net/minecraft/block/Block
+ ILOAD 2
+ ILOAD 3
+ INVOKEVIRTUAL net/minecraft/block/BlockFire.setFireInfo (Lnet/minecraft/block/Block;II)V
+ L1
+ LINENUMBER 68 L1
+ RETURN
+ L2
+ LOCALVARIABLE this Lnet/minecraft/block/BlockFire; L0 L2 0
+ LOCALVARIABLE p_149842_1_ I L0 L2 1
+ LOCALVARIABLE p_149842_2_ I L0 L2 2
+ LOCALVARIABLE p_149842_3_ I L0 L2 3
+ MAXSTACK = 4
+ MAXLOCALS = 4
+
+ // access flags 0x1
+ public getCollisionBoundingBoxFromPool(Lnet/minecraft/world/World;III)Lnet/minecraft/util/AxisAlignedBB;
+ L0
+ LINENUMBER 76 L0
+ ACONST_NULL
+ ARETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/block/BlockFire; L0 L1 0
+ LOCALVARIABLE p_149668_1_ Lnet/minecraft/world/World; L0 L1 1
+ LOCALVARIABLE p_149668_2_ I L0 L1 2
+ LOCALVARIABLE p_149668_3_ I L0 L1 3
+ LOCALVARIABLE p_149668_4_ I L0 L1 4
+ MAXSTACK = 1
+ MAXLOCALS = 5
+
+ // access flags 0x1
+ public isOpaqueCube()Z
+ L0
+ LINENUMBER 85 L0
+ ICONST_0
+ IRETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/block/BlockFire; L0 L1 0
+ MAXSTACK = 1
+ MAXLOCALS = 1
+
+ // access flags 0x1
+ public renderAsNormalBlock()Z
+ L0
+ LINENUMBER 93 L0
+ ICONST_0
+ IRETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/block/BlockFire; L0 L1 0
+ MAXSTACK = 1
+ MAXLOCALS = 1
+
+ // access flags 0x1
+ public getRenderType()I
+ L0
+ LINENUMBER 101 L0
+ ICONST_3
+ IRETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/block/BlockFire; L0 L1 0
+ MAXSTACK = 1
+ MAXLOCALS = 1
+
+ // access flags 0x1
+ public quantityDropped(Ljava/util/Random;)I
+ L0
+ LINENUMBER 109 L0
+ ICONST_0
+ IRETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/block/BlockFire; L0 L1 0
+ LOCALVARIABLE p_149745_1_ Ljava/util/Random; L0 L1 1
+ MAXSTACK = 1
+ MAXLOCALS = 2
+
+ // access flags 0x1
+ public tickRate(Lnet/minecraft/world/World;)I
+ L0
+ LINENUMBER 117 L0
+ BIPUSH 30
+ IRETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/block/BlockFire; L0 L1 0
+ LOCALVARIABLE p_149738_1_ Lnet/minecraft/world/World; L0 L1 1
+ MAXSTACK = 1
+ MAXLOCALS = 2
+
+ // access flags 0x1
+ public updateTick(Lnet/minecraft/world/World;IIILjava/util/Random;)V
+ L0
+ LINENUMBER 125 L0
+ ALOAD 1
+ INVOKEVIRTUAL net/minecraft/world/World.getGameRules ()Lnet/minecraft/world/GameRules;
+ LDC "doFireTick"
+ INVOKEVIRTUAL net/minecraft/world/GameRules.getGameRuleBooleanValue (Ljava/lang/String;)Z
+ IFEQ L1
+ L2
+ LINENUMBER 127 L2
+ ALOAD 1
+ ILOAD 2
+ ILOAD 3
+ ICONST_1
+ ISUB
+ ILOAD 4
+ INVOKEVIRTUAL net/minecraft/world/World.getBlock (III)Lnet/minecraft/block/Block;
+ ALOAD 1
+ ILOAD 2
+ ILOAD 3
+ ICONST_1
+ ISUB
+ ILOAD 4
+ GETSTATIC net/minecraftforge/common/util/ForgeDirection.UP : Lnet/minecraftforge/common/util/ForgeDirection;
+ INVOKEVIRTUAL net/minecraft/block/Block.isFireSource (Lnet/minecraft/world/World;IIILnet/minecraftforge/common/util/ForgeDirection;)Z
+ ISTORE 6
+ L3
+ LINENUMBER 129 L3
+ ALOAD 0
+ ALOAD 1
+ ILOAD 2
+ ILOAD 3
+ ILOAD 4
+ INVOKEVIRTUAL net/minecraft/block/BlockFire.canPlaceBlockAt (Lnet/minecraft/world/World;III)Z
+ IFNE L4
+ L5
+ LINENUMBER 131 L5
+ ALOAD 1
+ ILOAD 2
+ ILOAD 3
+ ILOAD 4
+ INVOKEVIRTUAL net/minecraft/world/World.setBlockToAir (III)Z
+ POP
+ L4
+ LINENUMBER 134 L4
+ FRAME FULL [net/minecraft/block/BlockFire net/minecraft/world/World I I I java/util/Random I] []
+ ILOAD 6
+ IFNE L6
+ ALOAD 1
+ INVOKEVIRTUAL net/minecraft/world/World.isRaining ()Z
+ IFEQ L6
+ ALOAD 1
+ ILOAD 2
+ ILOAD 3
+ ILOAD 4
+ INVOKEVIRTUAL net/minecraft/world/World.canLightningStrikeAt (III)Z
+ IFNE L7
+ ALOAD 1
+ ILOAD 2
+ ICONST_1
+ ISUB
+ ILOAD 3
+ ILOAD 4
+ INVOKEVIRTUAL net/minecraft/world/World.canLightningStrikeAt (III)Z
+ IFNE L7
+ ALOAD 1
+ ILOAD 2
+ ICONST_1
+ IADD
+ ILOAD 3
+ ILOAD 4
+ INVOKEVIRTUAL net/minecraft/world/World.canLightningStrikeAt (III)Z
+ IFNE L7
+ ALOAD 1
+ ILOAD 2
+ ILOAD 3
+ ILOAD 4
+ ICONST_1
+ ISUB
+ INVOKEVIRTUAL net/minecraft/world/World.canLightningStrikeAt (III)Z
+ IFNE L7
+ ALOAD 1
+ ILOAD 2
+ ILOAD 3
+ ILOAD 4
+ ICONST_1
+ IADD
+ INVOKEVIRTUAL net/minecraft/world/World.canLightningStrikeAt (III)Z
+ IFEQ L6
+ L7
+ LINENUMBER 136 L7
+ FRAME FULL [net/minecraft/block/BlockFire net/minecraft/world/World I I I java/util/Random I] []
+ ALOAD 1
+ ILOAD 2
+ ILOAD 3
+ ILOAD 4
+ INVOKEVIRTUAL net/minecraft/world/World.setBlockToAir (III)Z
+ POP
+ GOTO L1
+ L6
+ LINENUMBER 140 L6
+ FRAME FULL [net/minecraft/block/BlockFire net/minecraft/world/World I I I java/util/Random I] []
+ ALOAD 1
+ ILOAD 2
+ ILOAD 3
+ ILOAD 4
+ INVOKEVIRTUAL net/minecraft/world/World.getBlockMetadata (III)I
+ ISTORE 7
+ L8
+ LINENUMBER 142 L8
+ ILOAD 7
+ BIPUSH 15
+ IF_ICMPGE L9
+ L10
+ LINENUMBER 144 L10
+ ALOAD 1
+ ILOAD 2
+ ILOAD 3
+ ILOAD 4
+ ILOAD 7
+ ALOAD 5
+ ICONST_3
+ INVOKEVIRTUAL java/util/Random.nextInt (I)I
+ ICONST_2
+ IDIV
+ IADD
+ ICONST_4
+ INVOKEVIRTUAL net/minecraft/world/World.setBlockMetadataWithNotify (IIIII)Z
+ POP
+ L9
+ LINENUMBER 147 L9
+ FRAME FULL [net/minecraft/block/BlockFire net/minecraft/world/World I I I java/util/Random I I] []
+ ALOAD 1
+ ILOAD 2
+ ILOAD 3
+ ILOAD 4
+ ALOAD 0
+ ALOAD 0
+ ALOAD 1
+ INVOKEVIRTUAL net/minecraft/block/BlockFire.tickRate (Lnet/minecraft/world/World;)I
+ ALOAD 5
+ BIPUSH 10
+ INVOKEVIRTUAL java/util/Random.nextInt (I)I
+ IADD
+ INVOKEVIRTUAL net/minecraft/world/World.scheduleBlockUpdate (IIILnet/minecraft/block/Block;I)V
+ L11
+ LINENUMBER 149 L11
+ ILOAD 6
+ IFNE L12
+ ALOAD 0
+ ALOAD 1
+ ILOAD 2
+ ILOAD 3
+ ILOAD 4
+ INVOKESPECIAL net/minecraft/block/BlockFire.canNeighborBurn (Lnet/minecraft/world/World;III)Z
+ IFNE L12
+ L13
+ LINENUMBER 151 L13
+ ALOAD 1
+ ILOAD 2
+ ILOAD 3
+ ICONST_1
+ ISUB
+ ILOAD 4
+ INVOKESTATIC net/minecraft/world/World.doesBlockHaveSolidTopSurface (Lnet/minecraft/world/IBlockAccess;III)Z
+ IFEQ L14
+ ILOAD 7
+ ICONST_3
+ IF_ICMPLE L1
+ L14
+ LINENUMBER 153 L14
+ FRAME FULL [net/minecraft/block/BlockFire net/minecraft/world/World I I I java/util/Random I I] []
+ ALOAD 1
+ ILOAD 2
+ ILOAD 3
+ ILOAD 4
+ INVOKEVIRTUAL net/minecraft/world/World.setBlockToAir (III)Z
+ POP
+ GOTO L1
+ L12
+ LINENUMBER 156 L12
+ FRAME FULL [net/minecraft/block/BlockFire net/minecraft/world/World I I I java/util/Random I I] []
+ ILOAD 6
+ IFNE L15
+ ALOAD 0
+ ALOAD 1
+ ILOAD 2
+ ILOAD 3
+ ICONST_1
+ ISUB
+ ILOAD 4
+ GETSTATIC net/minecraftforge/common/util/ForgeDirection.UP : Lnet/minecraftforge/common/util/ForgeDirection;
+ INVOKEVIRTUAL net/minecraft/block/BlockFire.canCatchFire (Lnet/minecraft/world/IBlockAccess;IIILnet/minecraftforge/common/util/ForgeDirection;)Z
+ IFNE L15
+ ILOAD 7
+ BIPUSH 15
+ IF_ICMPNE L15
+ ALOAD 5
+ ICONST_4
+ INVOKEVIRTUAL java/util/Random.nextInt (I)I
+ IFNE L15
+ L16
+ LINENUMBER 158 L16
+ ALOAD 1
+ ILOAD 2
+ ILOAD 3
+ ILOAD 4
+ INVOKEVIRTUAL net/minecraft/world/World.setBlockToAir (III)Z
+ POP
+ GOTO L1
+ L15
+ LINENUMBER 162 L15
+ FRAME FULL [net/minecraft/block/BlockFire net/minecraft/world/World I I I java/util/Random I I] []
+ ALOAD 1
+ ILOAD 2
+ ILOAD 3
+ ILOAD 4
+ INVOKEVIRTUAL net/minecraft/world/World.isBlockHighHumidity (III)Z
+ ISTORE 8
+ L17
+ LINENUMBER 163 L17
+ ICONST_0
+ ISTORE 9
+ L18
+ LINENUMBER 165 L18
+ ILOAD 8
+ IFEQ L19
+ L20
+ LINENUMBER 167 L20
+ BIPUSH -50
+ ISTORE 9
+ L19
+ LINENUMBER 170 L19
+ FRAME FULL [net/minecraft/block/BlockFire net/minecraft/world/World I I I java/util/Random I I I I] []
+ ALOAD 0
+ ALOAD 1
+ ILOAD 2
+ ICONST_1
+ IADD
+ ILOAD 3
+ ILOAD 4
+ SIPUSH 300
+ ILOAD 9
+ IADD
+ ALOAD 5
+ ILOAD 7
+ GETSTATIC net/minecraftforge/common/util/ForgeDirection.WEST : Lnet/minecraftforge/common/util/ForgeDirection;
+ INVOKESPECIAL net/minecraft/block/BlockFire.tryCatchFire (Lnet/minecraft/world/World;IIIILjava/util/Random;ILnet/minecraftforge/common/util/ForgeDirection;)V
+ L21
+ LINENUMBER 171 L21
+ ALOAD 0
+ ALOAD 1
+ ILOAD 2
+ ICONST_1
+ ISUB
+ ILOAD 3
+ ILOAD 4
+ SIPUSH 300
+ ILOAD 9
+ IADD
+ ALOAD 5
+ ILOAD 7
+ GETSTATIC net/minecraftforge/common/util/ForgeDirection.EAST : Lnet/minecraftforge/common/util/ForgeDirection;
+ INVOKESPECIAL net/minecraft/block/BlockFire.tryCatchFire (Lnet/minecraft/world/World;IIIILjava/util/Random;ILnet/minecraftforge/common/util/ForgeDirection;)V
+ L22
+ LINENUMBER 172 L22
+ ALOAD 0
+ ALOAD 1
+ ILOAD 2
+ ILOAD 3
+ ICONST_1
+ ISUB
+ ILOAD 4
+ SIPUSH 250
+ ILOAD 9
+ IADD
+ ALOAD 5
+ ILOAD 7
+ GETSTATIC net/minecraftforge/common/util/ForgeDirection.UP : Lnet/minecraftforge/common/util/ForgeDirection;
+ INVOKESPECIAL net/minecraft/block/BlockFire.tryCatchFire (Lnet/minecraft/world/World;IIIILjava/util/Random;ILnet/minecraftforge/common/util/ForgeDirection;)V
+ L23
+ LINENUMBER 173 L23
+ ALOAD 0
+ ALOAD 1
+ ILOAD 2
+ ILOAD 3
+ ICONST_1
+ IADD
+ ILOAD 4
+ SIPUSH 250
+ ILOAD 9
+ IADD
+ ALOAD 5
+ ILOAD 7
+ GETSTATIC net/minecraftforge/common/util/ForgeDirection.DOWN : Lnet/minecraftforge/common/util/ForgeDirection;
+ INVOKESPECIAL net/minecraft/block/BlockFire.tryCatchFire (Lnet/minecraft/world/World;IIIILjava/util/Random;ILnet/minecraftforge/common/util/ForgeDirection;)V
+ L24
+ LINENUMBER 174 L24
+ ALOAD 0
+ ALOAD 1
+ ILOAD 2
+ ILOAD 3
+ ILOAD 4
+ ICONST_1
+ ISUB
+ SIPUSH 300
+ ILOAD 9
+ IADD
+ ALOAD 5
+ ILOAD 7
+ GETSTATIC net/minecraftforge/common/util/ForgeDirection.SOUTH : Lnet/minecraftforge/common/util/ForgeDirection;
+ INVOKESPECIAL net/minecraft/block/BlockFire.tryCatchFire (Lnet/minecraft/world/World;IIIILjava/util/Random;ILnet/minecraftforge/common/util/ForgeDirection;)V
+ L25
+ LINENUMBER 175 L25
+ ALOAD 0
+ ALOAD 1
+ ILOAD 2
+ ILOAD 3
+ ILOAD 4
+ ICONST_1
+ IADD
+ SIPUSH 300
+ ILOAD 9
+ IADD
+ ALOAD 5
+ ILOAD 7
+ GETSTATIC net/minecraftforge/common/util/ForgeDirection.NORTH : Lnet/minecraftforge/common/util/ForgeDirection;
+ INVOKESPECIAL net/minecraft/block/BlockFire.tryCatchFire (Lnet/minecraft/world/World;IIIILjava/util/Random;ILnet/minecraftforge/common/util/ForgeDirection;)V
+ L26
+ LINENUMBER 177 L26
+ ILOAD 2
+ ICONST_1
+ ISUB
+ ISTORE 10
+ L27
+ FRAME FULL [net/minecraft/block/BlockFire net/minecraft/world/World I I I java/util/Random I I I I I] []
+ ILOAD 10
+ ILOAD 2
+ ICONST_1
+ IADD
+ IF_ICMPGT L1
+ L28
+ LINENUMBER 179 L28
+ ILOAD 4
+ ICONST_1
+ ISUB
+ ISTORE 11
+ L29
+ FRAME FULL [net/minecraft/block/BlockFire net/minecraft/world/World I I I java/util/Random I I I I I I] []
+ ILOAD 11
+ ILOAD 4
+ ICONST_1
+ IADD
+ IF_ICMPGT L30
+ L31
+ LINENUMBER 181 L31
+ ILOAD 3
+ ICONST_1
+ ISUB
+ ISTORE 12
+ L32
+ FRAME FULL [net/minecraft/block/BlockFire net/minecraft/world/World I I I java/util/Random I I I I I I I] []
+ ILOAD 12
+ ILOAD 3
+ ICONST_4
+ IADD
+ IF_ICMPGT L33
+ L34
+ LINENUMBER 183 L34
+ ILOAD 10
+ ILOAD 2
+ IF_ICMPNE L35
+ ILOAD 12
+ ILOAD 3
+ IF_ICMPNE L35
+ ILOAD 11
+ ILOAD 4
+ IF_ICMPEQ L36
+ L35
+ LINENUMBER 185 L35
+ FRAME FULL [net/minecraft/block/BlockFire net/minecraft/world/World I I I java/util/Random I I I I I I I] []
+ BIPUSH 100
+ ISTORE 13
+ L37
+ LINENUMBER 187 L37
+ ILOAD 12
+ ILOAD 3
+ ICONST_1
+ IADD
+ IF_ICMPLE L38
+ L39
+ LINENUMBER 189 L39
+ ILOAD 13
+ ILOAD 12
+ ILOAD 3
+ ICONST_1
+ IADD
+ ISUB
+ BIPUSH 100
+ IMUL
+ IADD
+ ISTORE 13
+ L38
+ LINENUMBER 192 L38
+ FRAME FULL [net/minecraft/block/BlockFire net/minecraft/world/World I I I java/util/Random I I I I I I I I] []
+ ALOAD 0
+ ALOAD 1
+ ILOAD 10
+ ILOAD 12
+ ILOAD 11
+ INVOKESPECIAL net/minecraft/block/BlockFire.getChanceOfNeighborsEncouragingFire (Lnet/minecraft/world/World;III)I
+ ISTORE 14
+ L40
+ LINENUMBER 194 L40
+ ILOAD 14
+ IFLE L36
+ L41
+ LINENUMBER 196 L41
+ ILOAD 14
+ BIPUSH 40
+ IADD
+ ALOAD 1
+ GETFIELD net/minecraft/world/World.difficultySetting : Lnet/minecraft/world/EnumDifficulty;
+ INVOKEVIRTUAL net/minecraft/world/EnumDifficulty.getDifficultyId ()I
+ BIPUSH 7
+ IMUL
+ IADD
+ ILOAD 7
+ BIPUSH 30
+ IADD
+ IDIV
+ ISTORE 15
+ L42
+ LINENUMBER 198 L42
+ ILOAD 8
+ IFEQ L43
+ L44
+ LINENUMBER 200 L44
+ ILOAD 15
+ ICONST_2
+ IDIV
+ ISTORE 15
+ L43
+ LINENUMBER 203 L43
+ FRAME FULL [net/minecraft/block/BlockFire net/minecraft/world/World I I I java/util/Random I I I I I I I I I I] []
+ ILOAD 15
+ IFLE L36
+ ALOAD 5
+ ILOAD 13
+ INVOKEVIRTUAL java/util/Random.nextInt (I)I
+ ILOAD 15
+ IF_ICMPGT L36
+ ALOAD 1
+ INVOKEVIRTUAL net/minecraft/world/World.isRaining ()Z
+ IFEQ L45
+ ALOAD 1
+ ILOAD 10
+ ILOAD 12
+ ILOAD 11
+ INVOKEVIRTUAL net/minecraft/world/World.canLightningStrikeAt (III)Z
+ IFNE L36
+ L45
+ FRAME FULL [net/minecraft/block/BlockFire net/minecraft/world/World I I I java/util/Random I I I I I I I I I I] []
+ ALOAD 1
+ ILOAD 10
+ ICONST_1
+ ISUB
+ ILOAD 12
+ ILOAD 4
+ INVOKEVIRTUAL net/minecraft/world/World.canLightningStrikeAt (III)Z
+ IFNE L36
+ ALOAD 1
+ ILOAD 10
+ ICONST_1
+ IADD
+ ILOAD 12
+ ILOAD 11
+ INVOKEVIRTUAL net/minecraft/world/World.canLightningStrikeAt (III)Z
+ IFNE L36
+ ALOAD 1
+ ILOAD 10
+ ILOAD 12
+ ILOAD 11
+ ICONST_1
+ ISUB
+ INVOKEVIRTUAL net/minecraft/world/World.canLightningStrikeAt (III)Z
+ IFNE L36
+ ALOAD 1
+ ILOAD 10
+ ILOAD 12
+ ILOAD 11
+ ICONST_1
+ IADD
+ INVOKEVIRTUAL net/minecraft/world/World.canLightningStrikeAt (III)Z
+ IFNE L36
+ L46
+ LINENUMBER 205 L46
+ ILOAD 7
+ ALOAD 5
+ ICONST_5
+ INVOKEVIRTUAL java/util/Random.nextInt (I)I
+ ICONST_4
+ IDIV
+ IADD
+ ISTORE 16
+ L47
+ LINENUMBER 207 L47
+ ILOAD 16
+ BIPUSH 15
+ IF_ICMPLE L48
+ L49
+ LINENUMBER 209 L49
+ BIPUSH 15
+ ISTORE 16
+ L48
+ LINENUMBER 212 L48
+ FRAME FULL [net/minecraft/block/BlockFire net/minecraft/world/World I I I java/util/Random I I I I I I I I I I I] []
+ ALOAD 1
+ ILOAD 10
+ ILOAD 12
+ ILOAD 11
+ ALOAD 0
+ ILOAD 16
+ ICONST_3
+ INVOKEVIRTUAL net/minecraft/world/World.setBlock (IIILnet/minecraft/block/Block;II)Z
+ POP
+ L36
+ LINENUMBER 181 L36
+ FRAME FULL [net/minecraft/block/BlockFire net/minecraft/world/World I I I java/util/Random I I I I I I I] []
+ IINC 12 1
+ GOTO L32
+ L33
+ LINENUMBER 179 L33
+ FRAME FULL [net/minecraft/block/BlockFire net/minecraft/world/World I I I java/util/Random I I I I I I I] []
+ IINC 11 1
+ GOTO L29
+ L30
+ LINENUMBER 177 L30
+ FRAME FULL [net/minecraft/block/BlockFire net/minecraft/world/World I I I java/util/Random I I I I I I] []
+ IINC 10 1
+ GOTO L27
+ L50
+ FRAME FULL [] [java/lang/Throwable]
+ NOP
+ NOP
+ ATHROW
+ L1
+ LINENUMBER 222 L1
+ FRAME FULL [net/minecraft/block/BlockFire net/minecraft/world/World I I I java/util/Random] []
+ ALOAD 1
+ ILOAD 2
+ ILOAD 3
+ ILOAD 4
+ ALOAD 5
+ INVOKESTATIC codechicken/core/featurehack/TweakTransformerHelper.quenchFireTick (Lnet/minecraft/world/World;IIILjava/util/Random;)V
+ RETURN
+ L51
+ LOCALVARIABLE k2 I L47 L36 16
+ LOCALVARIABLE j2 I L42 L36 15
+ LOCALVARIABLE l1 I L37 L36 13
+ LOCALVARIABLE i2 I L40 L36 14
+ LOCALVARIABLE k1 I L32 L33 12
+ LOCALVARIABLE j1 I L29 L30 11
+ LOCALVARIABLE i1 I L27 L1 10
+ LOCALVARIABLE flag1 Z L17 L1 8
+ LOCALVARIABLE b0 B L18 L1 9
+ LOCALVARIABLE l I L8 L1 7
+ LOCALVARIABLE flag Z L3 L1 6
+ LOCALVARIABLE this Lnet/minecraft/block/BlockFire; L0 L51 0
+ LOCALVARIABLE p_149674_1_ Lnet/minecraft/world/World; L0 L51 1
+ LOCALVARIABLE p_149674_2_ I L0 L51 2
+ LOCALVARIABLE p_149674_3_ I L0 L51 3
+ LOCALVARIABLE p_149674_4_ I L0 L51 4
+ LOCALVARIABLE p_149674_5_ Ljava/util/Random; L0 L51 5
+ MAXSTACK = 9
+ MAXLOCALS = 17
+
+ // access flags 0x1
+ public func_149698_L()Z
+ L0
+ LINENUMBER 226 L0
+ ICONST_0
+ IRETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/block/BlockFire; L0 L1 0
+ MAXSTACK = 1
+ MAXLOCALS = 1
+
+ // DEPRECATED
+ // access flags 0x20002
+ private tryCatchFire(Lnet/minecraft/world/World;IIIILjava/util/Random;I)V
+ @Ljava/lang/Deprecated;()
+ L0
+ LINENUMBER 235 L0
+ ALOAD 0
+ ALOAD 1
+ ILOAD 2
+ ILOAD 3
+ ILOAD 4
+ ILOAD 5
+ ALOAD 6
+ ILOAD 7
+ GETSTATIC net/minecraftforge/common/util/ForgeDirection.UP : Lnet/minecraftforge/common/util/ForgeDirection;
+ INVOKESPECIAL net/minecraft/block/BlockFire.tryCatchFire (Lnet/minecraft/world/World;IIIILjava/util/Random;ILnet/minecraftforge/common/util/ForgeDirection;)V
+ L1
+ LINENUMBER 236 L1
+ RETURN
+ L2
+ LOCALVARIABLE this Lnet/minecraft/block/BlockFire; L0 L2 0
+ LOCALVARIABLE p_149841_1_ Lnet/minecraft/world/World; L0 L2 1
+ LOCALVARIABLE p_149841_2_ I L0 L2 2
+ LOCALVARIABLE p_149841_3_ I L0 L2 3
+ LOCALVARIABLE p_149841_4_ I L0 L2 4
+ LOCALVARIABLE p_149841_5_ I L0 L2 5
+ LOCALVARIABLE p_149841_6_ Ljava/util/Random; L0 L2 6
+ LOCALVARIABLE p_149841_7_ I L0 L2 7
+ MAXSTACK = 9
+ MAXLOCALS = 8
+
+ // access flags 0x2
+ private tryCatchFire(Lnet/minecraft/world/World;IIIILjava/util/Random;ILnet/minecraftforge/common/util/ForgeDirection;)V
+ L0
+ LINENUMBER 240 L0
+ ALOAD 1
+ ILOAD 2
+ ILOAD 3
+ ILOAD 4
+ INVOKEVIRTUAL net/minecraft/world/World.getBlock (III)Lnet/minecraft/block/Block;
+ ALOAD 1
+ ILOAD 2
+ ILOAD 3
+ ILOAD 4
+ ALOAD 8
+ INVOKEVIRTUAL net/minecraft/block/Block.getFlammability (Lnet/minecraft/world/IBlockAccess;IIILnet/minecraftforge/common/util/ForgeDirection;)I
+ ISTORE 9
+ L1
+ LINENUMBER 242 L1
+ ALOAD 6
+ ILOAD 5
+ INVOKEVIRTUAL java/util/Random.nextInt (I)I
+ ILOAD 9
+ IF_ICMPGE L2
+ L3
+ LINENUMBER 244 L3
+ ALOAD 1
+ ILOAD 2
+ ILOAD 3
+ ILOAD 4
+ INVOKEVIRTUAL net/minecraft/world/World.getBlock (III)Lnet/minecraft/block/Block;
+ GETSTATIC net/minecraft/init/Blocks.tnt : Lnet/minecraft/block/Block;
+ IF_ACMPNE L4
+ ICONST_1
+ GOTO L5
+ L4
+ FRAME FULL [net/minecraft/block/BlockFire net/minecraft/world/World I I I I java/util/Random I net/minecraftforge/common/util/ForgeDirection I] []
+ ICONST_0
+ L5
+ FRAME FULL [net/minecraft/block/BlockFire net/minecraft/world/World I I I I java/util/Random I net/minecraftforge/common/util/ForgeDirection I] [I]
+ ISTORE 10
+ L6
+ LINENUMBER 246 L6
+ ALOAD 6
+ ILOAD 7
+ BIPUSH 10
+ IADD
+ INVOKEVIRTUAL java/util/Random.nextInt (I)I
+ ICONST_5
+ IF_ICMPGE L7
+ ALOAD 1
+ ILOAD 2
+ ILOAD 3
+ ILOAD 4
+ INVOKEVIRTUAL net/minecraft/world/World.canLightningStrikeAt (III)Z
+ IFNE L7
+ L8
+ LINENUMBER 248 L8
+ ILOAD 7
+ ALOAD 6
+ ICONST_5
+ INVOKEVIRTUAL java/util/Random.nextInt (I)I
+ ICONST_4
+ IDIV
+ IADD
+ ISTORE 11
+ L9
+ LINENUMBER 250 L9
+ ILOAD 11
+ BIPUSH 15
+ IF_ICMPLE L10
+ L11
+ LINENUMBER 252 L11
+ BIPUSH 15
+ ISTORE 11
+ L10
+ LINENUMBER 255 L10
+ FRAME FULL [net/minecraft/block/BlockFire net/minecraft/world/World I I I I java/util/Random I net/minecraftforge/common/util/ForgeDirection I I I] []
+ ALOAD 1
+ ILOAD 2
+ ILOAD 3
+ ILOAD 4
+ ALOAD 0
+ ILOAD 11
+ ICONST_3
+ INVOKEVIRTUAL net/minecraft/world/World.setBlock (IIILnet/minecraft/block/Block;II)Z
+ POP
+ L12
+ LINENUMBER 256 L12
+ GOTO L13
+ L7
+ LINENUMBER 259 L7
+ FRAME FULL [net/minecraft/block/BlockFire net/minecraft/world/World I I I I java/util/Random I net/minecraftforge/common/util/ForgeDirection I I] []
+ ALOAD 1
+ ILOAD 2
+ ILOAD 3
+ ILOAD 4
+ INVOKEVIRTUAL net/minecraft/world/World.setBlockToAir (III)Z
+ POP
+ L13
+ LINENUMBER 262 L13
+ FRAME FULL [net/minecraft/block/BlockFire net/minecraft/world/World I I I I java/util/Random I net/minecraftforge/common/util/ForgeDirection I I] []
+ ILOAD 10
+ IFEQ L2
+ L14
+ LINENUMBER 264 L14
+ GETSTATIC net/minecraft/init/Blocks.tnt : Lnet/minecraft/block/Block;
+ ALOAD 1
+ ILOAD 2
+ ILOAD 3
+ ILOAD 4
+ ICONST_1
+ INVOKEVIRTUAL net/minecraft/block/Block.onBlockDestroyedByPlayer (Lnet/minecraft/world/World;IIII)V
+ L2
+ LINENUMBER 267 L2
+ FRAME FULL [net/minecraft/block/BlockFire net/minecraft/world/World I I I I java/util/Random I net/minecraftforge/common/util/ForgeDirection I] []
+ RETURN
+ L15
+ LOCALVARIABLE k1 I L9 L12 11
+ LOCALVARIABLE flag Z L6 L2 10
+ LOCALVARIABLE this Lnet/minecraft/block/BlockFire; L0 L15 0
+ LOCALVARIABLE p_149841_1_ Lnet/minecraft/world/World; L0 L15 1
+ LOCALVARIABLE p_149841_2_ I L0 L15 2
+ LOCALVARIABLE p_149841_3_ I L0 L15 3
+ LOCALVARIABLE p_149841_4_ I L0 L15 4
+ LOCALVARIABLE p_149841_5_ I L0 L15 5
+ LOCALVARIABLE p_149841_6_ Ljava/util/Random; L0 L15 6
+ LOCALVARIABLE p_149841_7_ I L0 L15 7
+ LOCALVARIABLE face Lnet/minecraftforge/common/util/ForgeDirection; L0 L15 8
+ LOCALVARIABLE j1 I L1 L15 9
+ MAXSTACK = 7
+ MAXLOCALS = 12
+
+ // access flags 0x2
+ private canNeighborBurn(Lnet/minecraft/world/World;III)Z
+ L0
+ LINENUMBER 274 L0
+ ALOAD 0
+ ALOAD 1
+ ILOAD 2
+ ICONST_1
+ IADD
+ ILOAD 3
+ ILOAD 4
+ GETSTATIC net/minecraftforge/common/util/ForgeDirection.WEST : Lnet/minecraftforge/common/util/ForgeDirection;
+ INVOKEVIRTUAL net/minecraft/block/BlockFire.canCatchFire (Lnet/minecraft/world/IBlockAccess;IIILnet/minecraftforge/common/util/ForgeDirection;)Z
+ IFNE L1
+ ALOAD 0
+ ALOAD 1
+ ILOAD 2
+ ICONST_1
+ ISUB
+ ILOAD 3
+ ILOAD 4
+ GETSTATIC net/minecraftforge/common/util/ForgeDirection.EAST : Lnet/minecraftforge/common/util/ForgeDirection;
+ L2
+ LINENUMBER 275 L2
+ INVOKEVIRTUAL net/minecraft/block/BlockFire.canCatchFire (Lnet/minecraft/world/IBlockAccess;IIILnet/minecraftforge/common/util/ForgeDirection;)Z
+ IFNE L1
+ ALOAD 0
+ ALOAD 1
+ ILOAD 2
+ ILOAD 3
+ ICONST_1
+ ISUB
+ ILOAD 4
+ GETSTATIC net/minecraftforge/common/util/ForgeDirection.UP : Lnet/minecraftforge/common/util/ForgeDirection;
+ L3
+ LINENUMBER 276 L3
+ INVOKEVIRTUAL net/minecraft/block/BlockFire.canCatchFire (Lnet/minecraft/world/IBlockAccess;IIILnet/minecraftforge/common/util/ForgeDirection;)Z
+ IFNE L1
+ ALOAD 0
+ ALOAD 1
+ ILOAD 2
+ ILOAD 3
+ ICONST_1
+ IADD
+ ILOAD 4
+ GETSTATIC net/minecraftforge/common/util/ForgeDirection.DOWN : Lnet/minecraftforge/common/util/ForgeDirection;
+ L4
+ LINENUMBER 277 L4
+ INVOKEVIRTUAL net/minecraft/block/BlockFire.canCatchFire (Lnet/minecraft/world/IBlockAccess;IIILnet/minecraftforge/common/util/ForgeDirection;)Z
+ IFNE L1
+ ALOAD 0
+ ALOAD 1
+ ILOAD 2
+ ILOAD 3
+ ILOAD 4
+ ICONST_1
+ ISUB
+ GETSTATIC net/minecraftforge/common/util/ForgeDirection.SOUTH : Lnet/minecraftforge/common/util/ForgeDirection;
+ L5
+ LINENUMBER 278 L5
+ INVOKEVIRTUAL net/minecraft/block/BlockFire.canCatchFire (Lnet/minecraft/world/IBlockAccess;IIILnet/minecraftforge/common/util/ForgeDirection;)Z
+ IFNE L1
+ ALOAD 0
+ ALOAD 1
+ ILOAD 2
+ ILOAD 3
+ ILOAD 4
+ ICONST_1
+ IADD
+ GETSTATIC net/minecraftforge/common/util/ForgeDirection.NORTH : Lnet/minecraftforge/common/util/ForgeDirection;
+ L6
+ LINENUMBER 279 L6
+ INVOKEVIRTUAL net/minecraft/block/BlockFire.canCatchFire (Lnet/minecraft/world/IBlockAccess;IIILnet/minecraftforge/common/util/ForgeDirection;)Z
+ IFEQ L7
+ L1
+ FRAME FULL [net/minecraft/block/BlockFire net/minecraft/world/World I I I] []
+ ICONST_1
+ GOTO L8
+ L7
+ FRAME FULL [net/minecraft/block/BlockFire net/minecraft/world/World I I I] []
+ ICONST_0
+ L8
+ FRAME FULL [net/minecraft/block/BlockFire net/minecraft/world/World I I I] [I]
+ IRETURN
+ L9
+ LOCALVARIABLE this Lnet/minecraft/block/BlockFire; L0 L9 0
+ LOCALVARIABLE p_149847_1_ Lnet/minecraft/world/World; L0 L9 1
+ LOCALVARIABLE p_149847_2_ I L0 L9 2
+ LOCALVARIABLE p_149847_3_ I L0 L9 3
+ LOCALVARIABLE p_149847_4_ I L0 L9 4
+ MAXSTACK = 6
+ MAXLOCALS = 5
+
+ // access flags 0x2
+ private getChanceOfNeighborsEncouragingFire(Lnet/minecraft/world/World;III)I
+ L0
+ LINENUMBER 287 L0
+ ICONST_0
+ ISTORE 5
+ L1
+ LINENUMBER 289 L1
+ ALOAD 1
+ ILOAD 2
+ ILOAD 3
+ ILOAD 4
+ INVOKEVIRTUAL net/minecraft/world/World.isAirBlock (III)Z
+ IFNE L2
+ L3
+ LINENUMBER 291 L3
+ ICONST_0
+ IRETURN
+ L2
+ LINENUMBER 295 L2
+ FRAME FULL [net/minecraft/block/BlockFire net/minecraft/world/World I I I I] []
+ ILOAD 5
+ ISTORE 6
+ L4
+ LINENUMBER 296 L4
+ ALOAD 0
+ ALOAD 1
+ ILOAD 2
+ ICONST_1
+ IADD
+ ILOAD 3
+ ILOAD 4
+ ILOAD 6
+ GETSTATIC net/minecraftforge/common/util/ForgeDirection.WEST : Lnet/minecraftforge/common/util/ForgeDirection;
+ INVOKEVIRTUAL net/minecraft/block/BlockFire.getChanceToEncourageFire (Lnet/minecraft/world/IBlockAccess;IIIILnet/minecraftforge/common/util/ForgeDirection;)I
+ ISTORE 6
+ L5
+ LINENUMBER 297 L5
+ ALOAD 0
+ ALOAD 1
+ ILOAD 2
+ ICONST_1
+ ISUB
+ ILOAD 3
+ ILOAD 4
+ ILOAD 6
+ GETSTATIC net/minecraftforge/common/util/ForgeDirection.EAST : Lnet/minecraftforge/common/util/ForgeDirection;
+ INVOKEVIRTUAL net/minecraft/block/BlockFire.getChanceToEncourageFire (Lnet/minecraft/world/IBlockAccess;IIIILnet/minecraftforge/common/util/ForgeDirection;)I
+ ISTORE 6
+ L6
+ LINENUMBER 298 L6
+ ALOAD 0
+ ALOAD 1
+ ILOAD 2
+ ILOAD 3
+ ICONST_1
+ ISUB
+ ILOAD 4
+ ILOAD 6
+ GETSTATIC net/minecraftforge/common/util/ForgeDirection.UP : Lnet/minecraftforge/common/util/ForgeDirection;
+ INVOKEVIRTUAL net/minecraft/block/BlockFire.getChanceToEncourageFire (Lnet/minecraft/world/IBlockAccess;IIIILnet/minecraftforge/common/util/ForgeDirection;)I
+ ISTORE 6
+ L7
+ LINENUMBER 299 L7
+ ALOAD 0
+ ALOAD 1
+ ILOAD 2
+ ILOAD 3
+ ICONST_1
+ IADD
+ ILOAD 4
+ ILOAD 6
+ GETSTATIC net/minecraftforge/common/util/ForgeDirection.DOWN : Lnet/minecraftforge/common/util/ForgeDirection;
+ INVOKEVIRTUAL net/minecraft/block/BlockFire.getChanceToEncourageFire (Lnet/minecraft/world/IBlockAccess;IIIILnet/minecraftforge/common/util/ForgeDirection;)I
+ ISTORE 6
+ L8
+ LINENUMBER 300 L8
+ ALOAD 0
+ ALOAD 1
+ ILOAD 2
+ ILOAD 3
+ ILOAD 4
+ ICONST_1
+ ISUB
+ ILOAD 6
+ GETSTATIC net/minecraftforge/common/util/ForgeDirection.SOUTH : Lnet/minecraftforge/common/util/ForgeDirection;
+ INVOKEVIRTUAL net/minecraft/block/BlockFire.getChanceToEncourageFire (Lnet/minecraft/world/IBlockAccess;IIIILnet/minecraftforge/common/util/ForgeDirection;)I
+ ISTORE 6
+ L9
+ LINENUMBER 301 L9
+ ALOAD 0
+ ALOAD 1
+ ILOAD 2
+ ILOAD 3
+ ILOAD 4
+ ICONST_1
+ IADD
+ ILOAD 6
+ GETSTATIC net/minecraftforge/common/util/ForgeDirection.NORTH : Lnet/minecraftforge/common/util/ForgeDirection;
+ INVOKEVIRTUAL net/minecraft/block/BlockFire.getChanceToEncourageFire (Lnet/minecraft/world/IBlockAccess;IIIILnet/minecraftforge/common/util/ForgeDirection;)I
+ ISTORE 6
+ L10
+ LINENUMBER 302 L10
+ ILOAD 6
+ IRETURN
+ L11
+ LOCALVARIABLE l I L4 L11 6
+ LOCALVARIABLE this Lnet/minecraft/block/BlockFire; L0 L11 0
+ LOCALVARIABLE p_149845_1_ Lnet/minecraft/world/World; L0 L11 1
+ LOCALVARIABLE p_149845_2_ I L0 L11 2
+ LOCALVARIABLE p_149845_3_ I L0 L11 3
+ LOCALVARIABLE p_149845_4_ I L0 L11 4
+ LOCALVARIABLE b0 B L1 L11 5
+ MAXSTACK = 7
+ MAXLOCALS = 7
+
+ // access flags 0x1
+ public isCollidable()Z
+ L0
+ LINENUMBER 311 L0
+ ICONST_0
+ IRETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/block/BlockFire; L0 L1 0
+ MAXSTACK = 1
+ MAXLOCALS = 1
+
+ // DEPRECATED
+ // access flags 0x20001
+ public canBlockCatchFire(Lnet/minecraft/world/IBlockAccess;III)Z
+ @Ljava/lang/Deprecated;()
+ L0
+ LINENUMBER 320 L0
+ ALOAD 0
+ ALOAD 1
+ ILOAD 2
+ ILOAD 3
+ ILOAD 4
+ GETSTATIC net/minecraftforge/common/util/ForgeDirection.UP : Lnet/minecraftforge/common/util/ForgeDirection;
+ INVOKEVIRTUAL net/minecraft/block/BlockFire.canCatchFire (Lnet/minecraft/world/IBlockAccess;IIILnet/minecraftforge/common/util/ForgeDirection;)Z
+ IRETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/block/BlockFire; L0 L1 0
+ LOCALVARIABLE p_149844_1_ Lnet/minecraft/world/IBlockAccess; L0 L1 1
+ LOCALVARIABLE p_149844_2_ I L0 L1 2
+ LOCALVARIABLE p_149844_3_ I L0 L1 3
+ LOCALVARIABLE p_149844_4_ I L0 L1 4
+ MAXSTACK = 6
+ MAXLOCALS = 5
+
+ // DEPRECATED
+ // access flags 0x20001
+ public func_149846_a(Lnet/minecraft/world/World;IIII)I
+ @Ljava/lang/Deprecated;()
+ L0
+ LINENUMBER 326 L0
+ ALOAD 0
+ ALOAD 1
+ ILOAD 2
+ ILOAD 3
+ ILOAD 4
+ ILOAD 5
+ GETSTATIC net/minecraftforge/common/util/ForgeDirection.UP : Lnet/minecraftforge/common/util/ForgeDirection;
+ INVOKEVIRTUAL net/minecraft/block/BlockFire.getChanceToEncourageFire (Lnet/minecraft/world/IBlockAccess;IIIILnet/minecraftforge/common/util/ForgeDirection;)I
+ IRETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/block/BlockFire; L0 L1 0
+ LOCALVARIABLE p_149846_1_ Lnet/minecraft/world/World; L0 L1 1
+ LOCALVARIABLE p_149846_2_ I L0 L1 2
+ LOCALVARIABLE p_149846_3_ I L0 L1 3
+ LOCALVARIABLE p_149846_4_ I L0 L1 4
+ LOCALVARIABLE p_149846_5_ I L0 L1 5
+ MAXSTACK = 7
+ MAXLOCALS = 6
+
+ // access flags 0x1
+ public canPlaceBlockAt(Lnet/minecraft/world/World;III)Z
+ L0
+ LINENUMBER 334 L0
+ ALOAD 1
+ ILOAD 2
+ ILOAD 3
+ ICONST_1
+ ISUB
+ ILOAD 4
+ INVOKESTATIC net/minecraft/world/World.doesBlockHaveSolidTopSurface (Lnet/minecraft/world/IBlockAccess;III)Z
+ IFNE L1
+ ALOAD 0
+ ALOAD 1
+ ILOAD 2
+ ILOAD 3
+ ILOAD 4
+ INVOKESPECIAL net/minecraft/block/BlockFire.canNeighborBurn (Lnet/minecraft/world/World;III)Z
+ IFEQ L2
+ L1
+ FRAME FULL [net/minecraft/block/BlockFire net/minecraft/world/World I I I] []
+ ICONST_1
+ GOTO L3
+ L2
+ FRAME FULL [net/minecraft/block/BlockFire net/minecraft/world/World I I I] []
+ ICONST_0
+ L3
+ FRAME FULL [net/minecraft/block/BlockFire net/minecraft/world/World I I I] [I]
+ IRETURN
+ L4
+ LOCALVARIABLE this Lnet/minecraft/block/BlockFire; L0 L4 0
+ LOCALVARIABLE p_149742_1_ Lnet/minecraft/world/World; L0 L4 1
+ LOCALVARIABLE p_149742_2_ I L0 L4 2
+ LOCALVARIABLE p_149742_3_ I L0 L4 3
+ LOCALVARIABLE p_149742_4_ I L0 L4 4
+ MAXSTACK = 5
+ MAXLOCALS = 5
+
+ // access flags 0x1
+ public onNeighborBlockChange(Lnet/minecraft/world/World;IIILnet/minecraft/block/Block;)V
+ L0
+ LINENUMBER 343 L0
+ ALOAD 1
+ ILOAD 2
+ ILOAD 3
+ ICONST_1
+ ISUB
+ ILOAD 4
+ INVOKESTATIC net/minecraft/world/World.doesBlockHaveSolidTopSurface (Lnet/minecraft/world/IBlockAccess;III)Z
+ IFNE L1
+ ALOAD 0
+ ALOAD 1
+ ILOAD 2
+ ILOAD 3
+ ILOAD 4
+ INVOKESPECIAL net/minecraft/block/BlockFire.canNeighborBurn (Lnet/minecraft/world/World;III)Z
+ IFNE L1
+ L2
+ LINENUMBER 345 L2
+ ALOAD 1
+ ILOAD 2
+ ILOAD 3
+ ILOAD 4
+ INVOKEVIRTUAL net/minecraft/world/World.setBlockToAir (III)Z
+ POP
+ L1
+ LINENUMBER 347 L1
+ FRAME FULL [net/minecraft/block/BlockFire net/minecraft/world/World I I I net/minecraft/block/Block] []
+ RETURN
+ L3
+ LOCALVARIABLE this Lnet/minecraft/block/BlockFire; L0 L3 0
+ LOCALVARIABLE p_149695_1_ Lnet/minecraft/world/World; L0 L3 1
+ LOCALVARIABLE p_149695_2_ I L0 L3 2
+ LOCALVARIABLE p_149695_3_ I L0 L3 3
+ LOCALVARIABLE p_149695_4_ I L0 L3 4
+ LOCALVARIABLE p_149695_5_ Lnet/minecraft/block/Block; L0 L3 5
+ MAXSTACK = 5
+ MAXLOCALS = 6
+
+ // access flags 0x1
+ public onBlockAdded(Lnet/minecraft/world/World;III)V
+ L0
+ LINENUMBER 354 L0
+ ALOAD 1
+ GETFIELD net/minecraft/world/World.provider : Lnet/minecraft/world/WorldProvider;
+ GETFIELD net/minecraft/world/WorldProvider.dimensionId : I
+ IFGT L1
+ GETSTATIC net/minecraft/init/Blocks.portal : Lnet/minecraft/block/BlockPortal;
+ ALOAD 1
+ ILOAD 2
+ ILOAD 3
+ ILOAD 4
+ INVOKEVIRTUAL net/minecraft/block/BlockPortal.func_150000_e (Lnet/minecraft/world/World;III)Z
+ IFNE L2
+ L1
+ LINENUMBER 356 L1
+ FRAME FULL [net/minecraft/block/BlockFire net/minecraft/world/World I I I] []
+ ALOAD 1
+ ILOAD 2
+ ILOAD 3
+ ICONST_1
+ ISUB
+ ILOAD 4
+ INVOKESTATIC net/minecraft/world/World.doesBlockHaveSolidTopSurface (Lnet/minecraft/world/IBlockAccess;III)Z
+ IFNE L3
+ ALOAD 0
+ ALOAD 1
+ ILOAD 2
+ ILOAD 3
+ ILOAD 4
+ INVOKESPECIAL net/minecraft/block/BlockFire.canNeighborBurn (Lnet/minecraft/world/World;III)Z
+ IFNE L3
+ L4
+ LINENUMBER 358 L4
+ ALOAD 1
+ ILOAD 2
+ ILOAD 3
+ ILOAD 4
+ INVOKEVIRTUAL net/minecraft/world/World.setBlockToAir (III)Z
+ POP
+ GOTO L2
+ L3
+ LINENUMBER 362 L3
+ FRAME FULL [net/minecraft/block/BlockFire net/minecraft/world/World I I I] []
+ ALOAD 1
+ ILOAD 2
+ ILOAD 3
+ ILOAD 4
+ ALOAD 0
+ ALOAD 0
+ ALOAD 1
+ INVOKEVIRTUAL net/minecraft/block/BlockFire.tickRate (Lnet/minecraft/world/World;)I
+ ALOAD 1
+ GETFIELD net/minecraft/world/World.rand : Ljava/util/Random;
+ BIPUSH 10
+ INVOKEVIRTUAL java/util/Random.nextInt (I)I
+ IADD
+ INVOKEVIRTUAL net/minecraft/world/World.scheduleBlockUpdate (IIILnet/minecraft/block/Block;I)V
+ L2
+ LINENUMBER 365 L2
+ FRAME FULL [net/minecraft/block/BlockFire net/minecraft/world/World I I I] []
+ RETURN
+ L5
+ LOCALVARIABLE this Lnet/minecraft/block/BlockFire; L0 L5 0
+ LOCALVARIABLE p_149726_1_ Lnet/minecraft/world/World; L0 L5 1
+ LOCALVARIABLE p_149726_2_ I L0 L5 2
+ LOCALVARIABLE p_149726_3_ I L0 L5 3
+ LOCALVARIABLE p_149726_4_ I L0 L5 4
+ MAXSTACK = 8
+ MAXLOCALS = 5
+
+ // access flags 0x1
+ public randomDisplayTick(Lnet/minecraft/world/World;IIILjava/util/Random;)V
+ @Lcpw/mods/fml/relauncher/SideOnly;(value=Lcpw/mods/fml/relauncher/Side;.CLIENT)
+ L0
+ LINENUMBER 373 L0
+ ALOAD 5
+ BIPUSH 24
+ INVOKEVIRTUAL java/util/Random.nextInt (I)I
+ IFNE L1
+ L2
+ LINENUMBER 375 L2
+ ALOAD 1
+ ILOAD 2
+ I2F
+ LDC 0.5
+ FADD
+ F2D
+ ILOAD 3
+ I2F
+ LDC 0.5
+ FADD
+ F2D
+ ILOAD 4
+ I2F
+ LDC 0.5
+ FADD
+ F2D
+ LDC "fire.fire"
+ FCONST_1
+ ALOAD 5
+ INVOKEVIRTUAL java/util/Random.nextFloat ()F
+ FADD
+ ALOAD 5
+ INVOKEVIRTUAL java/util/Random.nextFloat ()F
+ LDC 0.7
+ FMUL
+ LDC 0.3
+ FADD
+ ICONST_0
+ INVOKEVIRTUAL net/minecraft/world/World.playSound (DDDLjava/lang/String;FFZ)V
+ L1
+ LINENUMBER 383 L1
+ FRAME FULL [net/minecraft/block/BlockFire net/minecraft/world/World I I I java/util/Random] []
+ ALOAD 1
+ ILOAD 2
+ ILOAD 3
+ ICONST_1
+ ISUB
+ ILOAD 4
+ INVOKESTATIC net/minecraft/world/World.doesBlockHaveSolidTopSurface (Lnet/minecraft/world/IBlockAccess;III)Z
+ IFNE L3
+ GETSTATIC net/minecraft/init/Blocks.fire : Lnet/minecraft/block/BlockFire;
+ ALOAD 1
+ ILOAD 2
+ ILOAD 3
+ ICONST_1
+ ISUB
+ ILOAD 4
+ GETSTATIC net/minecraftforge/common/util/ForgeDirection.UP : Lnet/minecraftforge/common/util/ForgeDirection;
+ INVOKEVIRTUAL net/minecraft/block/BlockFire.canCatchFire (Lnet/minecraft/world/IBlockAccess;IIILnet/minecraftforge/common/util/ForgeDirection;)Z
+ IFNE L3
+ L4
+ LINENUMBER 385 L4
+ GETSTATIC net/minecraft/init/Blocks.fire : Lnet/minecraft/block/BlockFire;
+ ALOAD 1
+ ILOAD 2
+ ICONST_1
+ ISUB
+ ILOAD 3
+ ILOAD 4
+ GETSTATIC net/minecraftforge/common/util/ForgeDirection.EAST : Lnet/minecraftforge/common/util/ForgeDirection;
+ INVOKEVIRTUAL net/minecraft/block/BlockFire.canCatchFire (Lnet/minecraft/world/IBlockAccess;IIILnet/minecraftforge/common/util/ForgeDirection;)Z
+ IFEQ L5
+ L6
+ LINENUMBER 387 L6
+ ICONST_0
+ ISTORE 6
+ L7
+ FRAME FULL [net/minecraft/block/BlockFire net/minecraft/world/World I I I java/util/Random I] []
+ ILOAD 6
+ ICONST_2
+ IF_ICMPGE L5
+ L8
+ LINENUMBER 389 L8
+ ILOAD 2
+ I2F
+ ALOAD 5
+ INVOKEVIRTUAL java/util/Random.nextFloat ()F
+ LDC 0.1
+ FMUL
+ FADD
+ FSTORE 7
+ L9
+ LINENUMBER 390 L9
+ ILOAD 3
+ I2F
+ ALOAD 5
+ INVOKEVIRTUAL java/util/Random.nextFloat ()F
+ FADD
+ FSTORE 8
+ L10
+ LINENUMBER 391 L10
+ ILOAD 4
+ I2F
+ ALOAD 5
+ INVOKEVIRTUAL java/util/Random.nextFloat ()F
+ FADD
+ FSTORE 9
+ L11
+ LINENUMBER 392 L11
+ ALOAD 1
+ LDC "largesmoke"
+ FLOAD 7
+ F2D
+ FLOAD 8
+ F2D
+ FLOAD 9
+ F2D
+ DCONST_0
+ DCONST_0
+ DCONST_0
+ INVOKEVIRTUAL net/minecraft/world/World.spawnParticle (Ljava/lang/String;DDDDDD)V
+ L12
+ LINENUMBER 387 L12
+ IINC 6 1
+ GOTO L7
+ L5
+ LINENUMBER 396 L5
+ FRAME FULL [net/minecraft/block/BlockFire net/minecraft/world/World I I I java/util/Random] []
+ GETSTATIC net/minecraft/init/Blocks.fire : Lnet/minecraft/block/BlockFire;
+ ALOAD 1
+ ILOAD 2
+ ICONST_1
+ IADD
+ ILOAD 3
+ ILOAD 4
+ GETSTATIC net/minecraftforge/common/util/ForgeDirection.WEST : Lnet/minecraftforge/common/util/ForgeDirection;
+ INVOKEVIRTUAL net/minecraft/block/BlockFire.canCatchFire (Lnet/minecraft/world/IBlockAccess;IIILnet/minecraftforge/common/util/ForgeDirection;)Z
+ IFEQ L13
+ L14
+ LINENUMBER 398 L14
+ ICONST_0
+ ISTORE 6
+ L15
+ FRAME FULL [net/minecraft/block/BlockFire net/minecraft/world/World I I I java/util/Random I] []
+ ILOAD 6
+ ICONST_2
+ IF_ICMPGE L13
+ L16
+ LINENUMBER 400 L16
+ ILOAD 2
+ ICONST_1
+ IADD
+ I2F
+ ALOAD 5
+ INVOKEVIRTUAL java/util/Random.nextFloat ()F
+ LDC 0.1
+ FMUL
+ FSUB
+ FSTORE 7
+ L17
+ LINENUMBER 401 L17
+ ILOAD 3
+ I2F
+ ALOAD 5
+ INVOKEVIRTUAL java/util/Random.nextFloat ()F
+ FADD
+ FSTORE 8
+ L18
+ LINENUMBER 402 L18
+ ILOAD 4
+ I2F
+ ALOAD 5
+ INVOKEVIRTUAL java/util/Random.nextFloat ()F
+ FADD
+ FSTORE 9
+ L19
+ LINENUMBER 403 L19
+ ALOAD 1
+ LDC "largesmoke"
+ FLOAD 7
+ F2D
+ FLOAD 8
+ F2D
+ FLOAD 9
+ F2D
+ DCONST_0
+ DCONST_0
+ DCONST_0
+ INVOKEVIRTUAL net/minecraft/world/World.spawnParticle (Ljava/lang/String;DDDDDD)V
+ L20
+ LINENUMBER 398 L20
+ IINC 6 1
+ GOTO L15
+ L13
+ LINENUMBER 407 L13
+ FRAME FULL [net/minecraft/block/BlockFire net/minecraft/world/World I I I java/util/Random] []
+ GETSTATIC net/minecraft/init/Blocks.fire : Lnet/minecraft/block/BlockFire;
+ ALOAD 1
+ ILOAD 2
+ ILOAD 3
+ ILOAD 4
+ ICONST_1
+ ISUB
+ GETSTATIC net/minecraftforge/common/util/ForgeDirection.SOUTH : Lnet/minecraftforge/common/util/ForgeDirection;
+ INVOKEVIRTUAL net/minecraft/block/BlockFire.canCatchFire (Lnet/minecraft/world/IBlockAccess;IIILnet/minecraftforge/common/util/ForgeDirection;)Z
+ IFEQ L21
+ L22
+ LINENUMBER 409 L22
+ ICONST_0
+ ISTORE 6
+ L23
+ FRAME FULL [net/minecraft/block/BlockFire net/minecraft/world/World I I I java/util/Random I] []
+ ILOAD 6
+ ICONST_2
+ IF_ICMPGE L21
+ L24
+ LINENUMBER 411 L24
+ ILOAD 2
+ I2F
+ ALOAD 5
+ INVOKEVIRTUAL java/util/Random.nextFloat ()F
+ FADD
+ FSTORE 7
+ L25
+ LINENUMBER 412 L25
+ ILOAD 3
+ I2F
+ ALOAD 5
+ INVOKEVIRTUAL java/util/Random.nextFloat ()F
+ FADD
+ FSTORE 8
+ L26
+ LINENUMBER 413 L26
+ ILOAD 4
+ I2F
+ ALOAD 5
+ INVOKEVIRTUAL java/util/Random.nextFloat ()F
+ LDC 0.1
+ FMUL
+ FADD
+ FSTORE 9
+ L27
+ LINENUMBER 414 L27
+ ALOAD 1
+ LDC "largesmoke"
+ FLOAD 7
+ F2D
+ FLOAD 8
+ F2D
+ FLOAD 9
+ F2D
+ DCONST_0
+ DCONST_0
+ DCONST_0
+ INVOKEVIRTUAL net/minecraft/world/World.spawnParticle (Ljava/lang/String;DDDDDD)V
+ L28
+ LINENUMBER 409 L28
+ IINC 6 1
+ GOTO L23
+ L21
+ LINENUMBER 418 L21
+ FRAME FULL [net/minecraft/block/BlockFire net/minecraft/world/World I I I java/util/Random] []
+ GETSTATIC net/minecraft/init/Blocks.fire : Lnet/minecraft/block/BlockFire;
+ ALOAD 1
+ ILOAD 2
+ ILOAD 3
+ ILOAD 4
+ ICONST_1
+ IADD
+ GETSTATIC net/minecraftforge/common/util/ForgeDirection.NORTH : Lnet/minecraftforge/common/util/ForgeDirection;
+ INVOKEVIRTUAL net/minecraft/block/BlockFire.canCatchFire (Lnet/minecraft/world/IBlockAccess;IIILnet/minecraftforge/common/util/ForgeDirection;)Z
+ IFEQ L29
+ L30
+ LINENUMBER 420 L30
+ ICONST_0
+ ISTORE 6
+ L31
+ FRAME FULL [net/minecraft/block/BlockFire net/minecraft/world/World I I I java/util/Random I] []
+ ILOAD 6
+ ICONST_2
+ IF_ICMPGE L29
+ L32
+ LINENUMBER 422 L32
+ ILOAD 2
+ I2F
+ ALOAD 5
+ INVOKEVIRTUAL java/util/Random.nextFloat ()F
+ FADD
+ FSTORE 7
+ L33
+ LINENUMBER 423 L33
+ ILOAD 3
+ I2F
+ ALOAD 5
+ INVOKEVIRTUAL java/util/Random.nextFloat ()F
+ FADD
+ FSTORE 8
+ L34
+ LINENUMBER 424 L34
+ ILOAD 4
+ ICONST_1
+ IADD
+ I2F
+ ALOAD 5
+ INVOKEVIRTUAL java/util/Random.nextFloat ()F
+ LDC 0.1
+ FMUL
+ FSUB
+ FSTORE 9
+ L35
+ LINENUMBER 425 L35
+ ALOAD 1
+ LDC "largesmoke"
+ FLOAD 7
+ F2D
+ FLOAD 8
+ F2D
+ FLOAD 9
+ F2D
+ DCONST_0
+ DCONST_0
+ DCONST_0
+ INVOKEVIRTUAL net/minecraft/world/World.spawnParticle (Ljava/lang/String;DDDDDD)V
+ L36
+ LINENUMBER 420 L36
+ IINC 6 1
+ GOTO L31
+ L29
+ LINENUMBER 429 L29
+ FRAME FULL [net/minecraft/block/BlockFire net/minecraft/world/World I I I java/util/Random] []
+ GETSTATIC net/minecraft/init/Blocks.fire : Lnet/minecraft/block/BlockFire;
+ ALOAD 1
+ ILOAD 2
+ ILOAD 3
+ ICONST_1
+ IADD
+ ILOAD 4
+ GETSTATIC net/minecraftforge/common/util/ForgeDirection.DOWN : Lnet/minecraftforge/common/util/ForgeDirection;
+ INVOKEVIRTUAL net/minecraft/block/BlockFire.canCatchFire (Lnet/minecraft/world/IBlockAccess;IIILnet/minecraftforge/common/util/ForgeDirection;)Z
+ IFEQ L37
+ L38
+ LINENUMBER 431 L38
+ ICONST_0
+ ISTORE 6
+ L39
+ FRAME FULL [net/minecraft/block/BlockFire net/minecraft/world/World I I I java/util/Random I] []
+ ILOAD 6
+ ICONST_2
+ IF_ICMPGE L37
+ L40
+ LINENUMBER 433 L40
+ ILOAD 2
+ I2F
+ ALOAD 5
+ INVOKEVIRTUAL java/util/Random.nextFloat ()F
+ FADD
+ FSTORE 7
+ L41
+ LINENUMBER 434 L41
+ ILOAD 3
+ ICONST_1
+ IADD
+ I2F
+ ALOAD 5
+ INVOKEVIRTUAL java/util/Random.nextFloat ()F
+ LDC 0.1
+ FMUL
+ FSUB
+ FSTORE 8
+ L42
+ LINENUMBER 435 L42
+ ILOAD 4
+ I2F
+ ALOAD 5
+ INVOKEVIRTUAL java/util/Random.nextFloat ()F
+ FADD
+ FSTORE 9
+ L43
+ LINENUMBER 436 L43
+ ALOAD 1
+ LDC "largesmoke"
+ FLOAD 7
+ F2D
+ FLOAD 8
+ F2D
+ FLOAD 9
+ F2D
+ DCONST_0
+ DCONST_0
+ DCONST_0
+ INVOKEVIRTUAL net/minecraft/world/World.spawnParticle (Ljava/lang/String;DDDDDD)V
+ L44
+ LINENUMBER 431 L44
+ IINC 6 1
+ GOTO L39
+ L3
+ LINENUMBER 442 L3
+ FRAME FULL [net/minecraft/block/BlockFire net/minecraft/world/World I I I java/util/Random] []
+ ICONST_0
+ ISTORE 6
+ L45
+ FRAME FULL [net/minecraft/block/BlockFire net/minecraft/world/World I I I java/util/Random I] []
+ ILOAD 6
+ ICONST_3
+ IF_ICMPGE L37
+ L46
+ LINENUMBER 444 L46
+ ILOAD 2
+ I2F
+ ALOAD 5
+ INVOKEVIRTUAL java/util/Random.nextFloat ()F
+ FADD
+ FSTORE 7
+ L47
+ LINENUMBER 445 L47
+ ILOAD 3
+ I2F
+ ALOAD 5
+ INVOKEVIRTUAL java/util/Random.nextFloat ()F
+ LDC 0.5
+ FMUL
+ FADD
+ LDC 0.5
+ FADD
+ FSTORE 8
+ L48
+ LINENUMBER 446 L48
+ ILOAD 4
+ I2F
+ ALOAD 5
+ INVOKEVIRTUAL java/util/Random.nextFloat ()F
+ FADD
+ FSTORE 9
+ L49
+ LINENUMBER 447 L49
+ ALOAD 1
+ LDC "largesmoke"
+ FLOAD 7
+ F2D
+ FLOAD 8
+ F2D
+ FLOAD 9
+ F2D
+ DCONST_0
+ DCONST_0
+ DCONST_0
+ INVOKEVIRTUAL net/minecraft/world/World.spawnParticle (Ljava/lang/String;DDDDDD)V
+ L50
+ LINENUMBER 442 L50
+ IINC 6 1
+ GOTO L45
+ L37
+ LINENUMBER 450 L37
+ FRAME FULL [net/minecraft/block/BlockFire net/minecraft/world/World I I I java/util/Random] []
+ RETURN
+ L51
+ LOCALVARIABLE l I L7 L5 6
+ LOCALVARIABLE f F L9 L5 7
+ LOCALVARIABLE f1 F L10 L5 8
+ LOCALVARIABLE f2 F L11 L5 9
+ LOCALVARIABLE l I L15 L13 6
+ LOCALVARIABLE f F L17 L13 7
+ LOCALVARIABLE f1 F L18 L13 8
+ LOCALVARIABLE f2 F L19 L13 9
+ LOCALVARIABLE l I L23 L21 6
+ LOCALVARIABLE f F L25 L21 7
+ LOCALVARIABLE f1 F L26 L21 8
+ LOCALVARIABLE f2 F L27 L21 9
+ LOCALVARIABLE l I L31 L29 6
+ LOCALVARIABLE f F L33 L29 7
+ LOCALVARIABLE f1 F L34 L29 8
+ LOCALVARIABLE f2 F L35 L29 9
+ LOCALVARIABLE l I L39 L3 6
+ LOCALVARIABLE f F L41 L3 7
+ LOCALVARIABLE f1 F L42 L3 8
+ LOCALVARIABLE f2 F L43 L3 9
+ LOCALVARIABLE l I L45 L37 6
+ LOCALVARIABLE f F L47 L37 7
+ LOCALVARIABLE f1 F L48 L37 8
+ LOCALVARIABLE f2 F L49 L37 9
+ LOCALVARIABLE this Lnet/minecraft/block/BlockFire; L0 L51 0
+ LOCALVARIABLE p_149734_1_ Lnet/minecraft/world/World; L0 L51 1
+ LOCALVARIABLE p_149734_2_ I L0 L51 2
+ LOCALVARIABLE p_149734_3_ I L0 L51 3
+ LOCALVARIABLE p_149734_4_ I L0 L51 4
+ LOCALVARIABLE p_149734_5_ Ljava/util/Random; L0 L51 5
+ MAXSTACK = 14
+ MAXLOCALS = 10
+
+ // access flags 0x1
+ public registerBlockIcons(Lnet/minecraft/client/renderer/texture/IIconRegister;)V
+ @Lcpw/mods/fml/relauncher/SideOnly;(value=Lcpw/mods/fml/relauncher/Side;.CLIENT)
+ L0
+ LINENUMBER 455 L0
+ ALOAD 0
+ ICONST_2
+ ANEWARRAY net/minecraft/util/IIcon
+ DUP
+ ICONST_0
+ ALOAD 1
+ NEW java/lang/StringBuilder
+ DUP
+ INVOKESPECIAL java/lang/StringBuilder.<init> ()V
+ ALOAD 0
+ INVOKEVIRTUAL net/minecraft/block/BlockFire.getTextureName ()Ljava/lang/String;
+ INVOKEVIRTUAL java/lang/StringBuilder.append (Ljava/lang/String;)Ljava/lang/StringBuilder;
+ LDC "_layer_0"
+ INVOKEVIRTUAL java/lang/StringBuilder.append (Ljava/lang/String;)Ljava/lang/StringBuilder;
+ INVOKEVIRTUAL java/lang/StringBuilder.toString ()Ljava/lang/String;
+ INVOKEINTERFACE net/minecraft/client/renderer/texture/IIconRegister.registerIcon (Ljava/lang/String;)Lnet/minecraft/util/IIcon;
+ AASTORE
+ DUP
+ ICONST_1
+ ALOAD 1
+ NEW java/lang/StringBuilder
+ DUP
+ INVOKESPECIAL java/lang/StringBuilder.<init> ()V
+ ALOAD 0
+ INVOKEVIRTUAL net/minecraft/block/BlockFire.getTextureName ()Ljava/lang/String;
+ INVOKEVIRTUAL java/lang/StringBuilder.append (Ljava/lang/String;)Ljava/lang/StringBuilder;
+ LDC "_layer_1"
+ INVOKEVIRTUAL java/lang/StringBuilder.append (Ljava/lang/String;)Ljava/lang/StringBuilder;
+ INVOKEVIRTUAL java/lang/StringBuilder.toString ()Ljava/lang/String;
+ INVOKEINTERFACE net/minecraft/client/renderer/texture/IIconRegister.registerIcon (Ljava/lang/String;)Lnet/minecraft/util/IIcon;
+ AASTORE
+ PUTFIELD net/minecraft/block/BlockFire.field_149850_M : [Lnet/minecraft/util/IIcon;
+ L1
+ LINENUMBER 456 L1
+ RETURN
+ L2
+ LOCALVARIABLE this Lnet/minecraft/block/BlockFire; L0 L2 0
+ LOCALVARIABLE p_149651_1_ Lnet/minecraft/client/renderer/texture/IIconRegister; L0 L2 1
+ MAXSTACK = 7
+ MAXLOCALS = 2
+
+ // access flags 0x1
+ public getFireIcon(I)Lnet/minecraft/util/IIcon;
+ @Lcpw/mods/fml/relauncher/SideOnly;(value=Lcpw/mods/fml/relauncher/Side;.CLIENT)
+ L0
+ LINENUMBER 461 L0
+ ALOAD 0
+ GETFIELD net/minecraft/block/BlockFire.field_149850_M : [Lnet/minecraft/util/IIcon;
+ ILOAD 1
+ AALOAD
+ ARETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/block/BlockFire; L0 L1 0
+ LOCALVARIABLE p_149840_1_ I L0 L1 1
+ MAXSTACK = 2
+ MAXLOCALS = 2
+
+ // access flags 0x1
+ public getIcon(II)Lnet/minecraft/util/IIcon;
+ @Lcpw/mods/fml/relauncher/SideOnly;(value=Lcpw/mods/fml/relauncher/Side;.CLIENT)
+ L0
+ LINENUMBER 470 L0
+ ALOAD 0
+ GETFIELD net/minecraft/block/BlockFire.field_149850_M : [Lnet/minecraft/util/IIcon;
+ ICONST_0
+ AALOAD
+ ARETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/block/BlockFire; L0 L1 0
+ LOCALVARIABLE p_149691_1_ I L0 L1 1
+ LOCALVARIABLE p_149691_2_ I L0 L1 2
+ MAXSTACK = 2
+ MAXLOCALS = 3
+
+ // access flags 0x1
+ public getMapColor(I)Lnet/minecraft/block/material/MapColor;
+ L0
+ LINENUMBER 475 L0
+ GETSTATIC net/minecraft/block/material/MapColor.tntColor : Lnet/minecraft/block/material/MapColor;
+ ARETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/block/BlockFire; L0 L1 0
+ LOCALVARIABLE p_149728_1_ I L0 L1 1
+ MAXSTACK = 1
+ MAXLOCALS = 2
+
+ // access flags 0x1
+ public setFireInfo(Lnet/minecraft/block/Block;II)V
+ L0
+ LINENUMBER 488 L0
+ ALOAD 1
+ GETSTATIC net/minecraft/init/Blocks.air : Lnet/minecraft/block/Block;
+ IF_ACMPNE L1
+ NEW java/lang/IllegalArgumentException
+ DUP
+ LDC "Tried to set air on fire... This is bad."
+ INVOKESPECIAL java/lang/IllegalArgumentException.<init> (Ljava/lang/String;)V
+ ATHROW
+ L1
+ LINENUMBER 489 L1
+ FRAME FULL [net/minecraft/block/BlockFire net/minecraft/block/Block I I] []
+ ALOAD 1
+ INVOKESTATIC net/minecraft/block/Block.getIdFromBlock (Lnet/minecraft/block/Block;)I
+ ISTORE 4
+ L2
+ LINENUMBER 490 L2
+ ALOAD 0
+ GETFIELD net/minecraft/block/BlockFire.field_149849_a : [I
+ ILOAD 4
+ ILOAD 2
+ IASTORE
+ L3
+ LINENUMBER 491 L3
+ ALOAD 0
+ GETFIELD net/minecraft/block/BlockFire.field_149848_b : [I
+ ILOAD 4
+ ILOAD 3
+ IASTORE
+ L4
+ LINENUMBER 493 L4
+ ALOAD 0
+ ALOAD 1
+ ICONST_1
+ INVOKESPECIAL net/minecraft/block/BlockFire.getInfo (Lnet/minecraft/block/Block;Z)Lnet/minecraft/block/BlockFire$FireInfo;
+ ASTORE 5
+ L5
+ LINENUMBER 494 L5
+ ALOAD 5
+ ILOAD 2
+ INVOKESTATIC net/minecraft/block/BlockFire$FireInfo.access$002 (Lnet/minecraft/block/BlockFire$FireInfo;I)I
+ POP
+ L6
+ LINENUMBER 495 L6
+ ALOAD 5
+ ILOAD 3
+ INVOKESTATIC net/minecraft/block/BlockFire$FireInfo.access$102 (Lnet/minecraft/block/BlockFire$FireInfo;I)I
+ POP
+ L7
+ LINENUMBER 496 L7
+ RETURN
+ L8
+ LOCALVARIABLE this Lnet/minecraft/block/BlockFire; L0 L8 0
+ LOCALVARIABLE block Lnet/minecraft/block/Block; L0 L8 1
+ LOCALVARIABLE encouragement I L0 L8 2
+ LOCALVARIABLE flammibility I L0 L8 3
+ LOCALVARIABLE id I L2 L8 4
+ LOCALVARIABLE info Lnet/minecraft/block/BlockFire$FireInfo; L5 L8 5
+ MAXSTACK = 3
+ MAXLOCALS = 6
+
+ // access flags 0x2
+ private getInfo(Lnet/minecraft/block/Block;Z)Lnet/minecraft/block/BlockFire$FireInfo;
+ L0
+ LINENUMBER 500 L0
+ ALOAD 0
+ GETFIELD net/minecraft/block/BlockFire.blockInfo : Ljava/util/IdentityHashMap;
+ ALOAD 1
+ INVOKEVIRTUAL java/util/IdentityHashMap.get (Ljava/lang/Object;)Ljava/lang/Object;
+ CHECKCAST net/minecraft/block/BlockFire$FireInfo
+ ASTORE 3
+ L1
+ LINENUMBER 501 L1
+ ALOAD 3
+ IFNONNULL L2
+ ILOAD 2
+ IFEQ L2
+ L3
+ LINENUMBER 503 L3
+ NEW net/minecraft/block/BlockFire$FireInfo
+ DUP
+ ACONST_NULL
+ INVOKESPECIAL net/minecraft/block/BlockFire$FireInfo.<init> (Lnet/minecraft/block/BlockFire$1;)V
+ ASTORE 3
+ L4
+ LINENUMBER 504 L4
+ ALOAD 0
+ GETFIELD net/minecraft/block/BlockFire.blockInfo : Ljava/util/IdentityHashMap;
+ ALOAD 1
+ ALOAD 3
+ INVOKEVIRTUAL java/util/IdentityHashMap.put (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+ POP
+ L2
+ LINENUMBER 506 L2
+ FRAME FULL [net/minecraft/block/BlockFire net/minecraft/block/Block I net/minecraft/block/BlockFire$FireInfo] []
+ ALOAD 3
+ ARETURN
+ L5
+ LOCALVARIABLE this Lnet/minecraft/block/BlockFire; L0 L5 0
+ LOCALVARIABLE block Lnet/minecraft/block/Block; L0 L5 1
+ LOCALVARIABLE garentee Z L0 L5 2
+ LOCALVARIABLE ret Lnet/minecraft/block/BlockFire$FireInfo; L1 L5 3
+ MAXSTACK = 3
+ MAXLOCALS = 4
+
+ // access flags 0x1
+ public rebuildFireInfo()V
+ L0
+ LINENUMBER 511 L0
+ ICONST_0
+ ISTORE 1
+ L1
+ FRAME FULL [net/minecraft/block/BlockFire I] []
+ ILOAD 1
+ SIPUSH 4096
+ IF_ICMPGE L2
+ L3
+ LINENUMBER 515 L3
+ ALOAD 0
+ GETFIELD net/minecraft/block/BlockFire.field_149849_a : [I
+ ILOAD 1
+ ICONST_0
+ IASTORE
+ L4
+ LINENUMBER 516 L4
+ ALOAD 0
+ GETFIELD net/minecraft/block/BlockFire.field_149848_b : [I
+ ILOAD 1
+ ICONST_0
+ IASTORE
+ L5
+ LINENUMBER 511 L5
+ IINC 1 1
+ GOTO L1
+ L2
+ LINENUMBER 519 L2
+ FRAME FULL [net/minecraft/block/BlockFire I] []
+ ALOAD 0
+ GETFIELD net/minecraft/block/BlockFire.blockInfo : Ljava/util/IdentityHashMap;
+ INVOKEVIRTUAL java/util/IdentityHashMap.entrySet ()Ljava/util/Set;
+ INVOKEINTERFACE java/util/Set.iterator ()Ljava/util/Iterator;
+ ASTORE 1
+ L6
+ FRAME FULL [net/minecraft/block/BlockFire java/util/Iterator] []
+ ALOAD 1
+ INVOKEINTERFACE java/util/Iterator.hasNext ()Z
+ IFEQ L7
+ ALOAD 1
+ INVOKEINTERFACE java/util/Iterator.next ()Ljava/lang/Object;
+ CHECKCAST java/util/Map$Entry
+ ASTORE 2
+ L8
+ LINENUMBER 521 L8
+ ALOAD 2
+ INVOKEINTERFACE java/util/Map$Entry.getKey ()Ljava/lang/Object;
+ CHECKCAST net/minecraft/block/Block
+ INVOKESTATIC net/minecraft/block/Block.getIdFromBlock (Lnet/minecraft/block/Block;)I
+ ISTORE 3
+ L9
+ LINENUMBER 522 L9
+ ILOAD 3
+ IFLT L10
+ ILOAD 3
+ SIPUSH 4096
+ IF_ICMPGE L10
+ L11
+ LINENUMBER 524 L11
+ ALOAD 0
+ GETFIELD net/minecraft/block/BlockFire.field_149849_a : [I
+ ILOAD 3
+ ALOAD 2
+ INVOKEINTERFACE java/util/Map$Entry.getValue ()Ljava/lang/Object;
+ CHECKCAST net/minecraft/block/BlockFire$FireInfo
+ INVOKESTATIC net/minecraft/block/BlockFire$FireInfo.access$000 (Lnet/minecraft/block/BlockFire$FireInfo;)I
+ IASTORE
+ L12
+ LINENUMBER 525 L12
+ ALOAD 0
+ GETFIELD net/minecraft/block/BlockFire.field_149848_b : [I
+ ILOAD 3
+ ALOAD 2
+ INVOKEINTERFACE java/util/Map$Entry.getValue ()Ljava/lang/Object;
+ CHECKCAST net/minecraft/block/BlockFire$FireInfo
+ INVOKESTATIC net/minecraft/block/BlockFire$FireInfo.access$100 (Lnet/minecraft/block/BlockFire$FireInfo;)I
+ IASTORE
+ L10
+ LINENUMBER 527 L10
+ FRAME FULL [net/minecraft/block/BlockFire java/util/Iterator java/util/Map$Entry I] []
+ GOTO L6
+ L7
+ LINENUMBER 528 L7
+ FRAME FULL [net/minecraft/block/BlockFire java/util/Iterator] []
+ RETURN
+ L13
+ LOCALVARIABLE x I L1 L2 1
+ LOCALVARIABLE id I L9 L10 3
+ LOCALVARIABLE e Ljava/util/Map$Entry; L8 L10 2
+ // signature Ljava/util/Map$Entry<Lnet/minecraft/block/Block;Lnet/minecraft/block/BlockFire$FireInfo;>;
+ // declaration: java.util.Map$Entry<net.minecraft.block.Block, net.minecraft.block.BlockFire$FireInfo>
+ LOCALVARIABLE this Lnet/minecraft/block/BlockFire; L0 L13 0
+ MAXSTACK = 3
+ MAXLOCALS = 4
+
+ // access flags 0x1
+ public getFlammability(Lnet/minecraft/block/Block;)I
+ L0
+ LINENUMBER 532 L0
+ ALOAD 1
+ INVOKESTATIC net/minecraft/block/Block.getIdFromBlock (Lnet/minecraft/block/Block;)I
+ ISTORE 2
+ L1
+ LINENUMBER 533 L1
+ ILOAD 2
+ IFLT L2
+ ILOAD 2
+ SIPUSH 4096
+ IF_ICMPGE L2
+ ALOAD 0
+ GETFIELD net/minecraft/block/BlockFire.field_149848_b : [I
+ ILOAD 2
+ IALOAD
+ GOTO L3
+ L2
+ FRAME FULL [net/minecraft/block/BlockFire net/minecraft/block/Block I] []
+ ICONST_0
+ L3
+ FRAME FULL [net/minecraft/block/BlockFire net/minecraft/block/Block I] [I]
+ IRETURN
+ L4
+ LOCALVARIABLE this Lnet/minecraft/block/BlockFire; L0 L4 0
+ LOCALVARIABLE block Lnet/minecraft/block/Block; L0 L4 1
+ LOCALVARIABLE id I L1 L4 2
+ MAXSTACK = 2
+ MAXLOCALS = 3
+
+ // access flags 0x1
+ public getEncouragement(Lnet/minecraft/block/Block;)I
+ L0
+ LINENUMBER 538 L0
+ ALOAD 1
+ INVOKESTATIC net/minecraft/block/Block.getIdFromBlock (Lnet/minecraft/block/Block;)I
+ ISTORE 2
+ L1
+ LINENUMBER 539 L1
+ ILOAD 2
+ IFLT L2
+ ILOAD 2
+ SIPUSH 4096
+ IF_ICMPGE L2
+ ALOAD 0
+ GETFIELD net/minecraft/block/BlockFire.field_149849_a : [I
+ ILOAD 2
+ IALOAD
+ GOTO L3
+ L2
+ FRAME FULL [net/minecraft/block/BlockFire net/minecraft/block/Block I] []
+ ICONST_0
+ L3
+ FRAME FULL [net/minecraft/block/BlockFire net/minecraft/block/Block I] [I]
+ IRETURN
+ L4
+ LOCALVARIABLE this Lnet/minecraft/block/BlockFire; L0 L4 0
+ LOCALVARIABLE block Lnet/minecraft/block/Block; L0 L4 1
+ LOCALVARIABLE id I L1 L4 2
+ MAXSTACK = 2
+ MAXLOCALS = 3
+
+ // access flags 0x1
+ public canCatchFire(Lnet/minecraft/world/IBlockAccess;IIILnet/minecraftforge/common/util/ForgeDirection;)Z
+ L0
+ LINENUMBER 554 L0
+ ALOAD 1
+ ILOAD 2
+ ILOAD 3
+ ILOAD 4
+ INVOKEINTERFACE net/minecraft/world/IBlockAccess.getBlock (III)Lnet/minecraft/block/Block;
+ ALOAD 1
+ ILOAD 2
+ ILOAD 3
+ ILOAD 4
+ ALOAD 5
+ INVOKEVIRTUAL net/minecraft/block/Block.isFlammable (Lnet/minecraft/world/IBlockAccess;IIILnet/minecraftforge/common/util/ForgeDirection;)Z
+ IRETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/block/BlockFire; L0 L1 0
+ LOCALVARIABLE world Lnet/minecraft/world/IBlockAccess; L0 L1 1
+ LOCALVARIABLE x I L0 L1 2
+ LOCALVARIABLE y I L0 L1 3
+ LOCALVARIABLE z I L0 L1 4
+ LOCALVARIABLE face Lnet/minecraftforge/common/util/ForgeDirection; L0 L1 5
+ MAXSTACK = 6
+ MAXLOCALS = 6
+
+ // access flags 0x1
+ public getChanceToEncourageFire(Lnet/minecraft/world/IBlockAccess;IIIILnet/minecraftforge/common/util/ForgeDirection;)I
+ L0
+ LINENUMBER 570 L0
+ ALOAD 1
+ ILOAD 2
+ ILOAD 3
+ ILOAD 4
+ INVOKEINTERFACE net/minecraft/world/IBlockAccess.getBlock (III)Lnet/minecraft/block/Block;
+ ALOAD 1
+ ILOAD 2
+ ILOAD 3
+ ILOAD 4
+ ALOAD 6
+ INVOKEVIRTUAL net/minecraft/block/Block.getFireSpreadSpeed (Lnet/minecraft/world/IBlockAccess;IIILnet/minecraftforge/common/util/ForgeDirection;)I
+ ISTORE 7
+ L1
+ LINENUMBER 571 L1
+ ILOAD 7
+ ILOAD 5
+ IF_ICMPLE L2
+ ILOAD 7
+ GOTO L3
+ L2
+ FRAME FULL [net/minecraft/block/BlockFire net/minecraft/world/IBlockAccess I I I I net/minecraftforge/common/util/ForgeDirection I] []
+ ILOAD 5
+ L3
+ FRAME FULL [net/minecraft/block/BlockFire net/minecraft/world/IBlockAccess I I I I net/minecraftforge/common/util/ForgeDirection I] [I]
+ IRETURN
+ L4
+ LOCALVARIABLE this Lnet/minecraft/block/BlockFire; L0 L4 0
+ LOCALVARIABLE world Lnet/minecraft/world/IBlockAccess; L0 L4 1
+ LOCALVARIABLE x I L0 L4 2
+ LOCALVARIABLE y I L0 L4 3
+ LOCALVARIABLE z I L0 L4 4
+ LOCALVARIABLE oldChance I L0 L4 5
+ LOCALVARIABLE face Lnet/minecraftforge/common/util/ForgeDirection; L0 L4 6
+ LOCALVARIABLE newChance I L1 L4 7
+ MAXSTACK = 6
+ MAXLOCALS = 8
+}
diff --git a/asm/ccl_modular/net#minecraft#client#gui#inventory#GuiContainer.txt b/asm/ccl_modular/net#minecraft#client#gui#inventory#GuiContainer.txt
new file mode 100644
index 0000000000..df35a511a0
--- /dev/null
+++ b/asm/ccl_modular/net#minecraft#client#gui#inventory#GuiContainer.txt
@@ -0,0 +1,2920 @@
+// class version 50.0 (50)
+// access flags 0x421
+public abstract class net/minecraft/client/gui/inventory/GuiContainer extends net/minecraft/client/gui/GuiScreen {
+
+ // compiled from: GuiContainer.java
+
+ @Lcpw/mods/fml/relauncher/SideOnly;(value=Lcpw/mods/fml/relauncher/Side;.CLIENT)
+
+ // access flags 0x1C
+ protected final static Lnet/minecraft/util/ResourceLocation; field_147001_a
+
+ // access flags 0x4
+ protected I xSize
+
+ // access flags 0x4
+ protected I ySize
+
+ // access flags 0x1
+ public Lnet/minecraft/inventory/Container; inventorySlots
+
+ // access flags 0x4
+ protected I guiLeft
+
+ // access flags 0x4
+ protected I guiTop
+
+ // access flags 0x2
+ private Lnet/minecraft/inventory/Slot; theSlot
+
+ // access flags 0x2
+ private Lnet/minecraft/inventory/Slot; clickedSlot
+
+ // access flags 0x2
+ private Z isRightMouseClick
+
+ // access flags 0x2
+ private Lnet/minecraft/item/ItemStack; draggedStack
+
+ // access flags 0x2
+ private I field_147011_y
+
+ // access flags 0x2
+ private I field_147010_z
+
+ // access flags 0x2
+ private Lnet/minecraft/inventory/Slot; returningStackDestSlot
+
+ // access flags 0x2
+ private J returningStackTime
+
+ // access flags 0x2
+ private Lnet/minecraft/item/ItemStack; returningStack
+
+ // access flags 0x2
+ private Lnet/minecraft/inventory/Slot; field_146985_D
+
+ // access flags 0x2
+ private J field_146986_E
+
+ // access flags 0x14
+ protected final Ljava/util/Set; field_147008_s
+
+ // access flags 0x4
+ protected Z field_147007_t
+
+ // access flags 0x2
+ private I field_146987_F
+
+ // access flags 0x2
+ private I field_146988_G
+
+ // access flags 0x2
+ private Z field_146995_H
+
+ // access flags 0x2
+ private I field_146996_I
+
+ // access flags 0x2
+ private J field_146997_J
+
+ // access flags 0x2
+ private Lnet/minecraft/inventory/Slot; field_146998_K
+
+ // access flags 0x2
+ private I field_146992_L
+
+ // access flags 0x2
+ private Z field_146993_M
+
+ // access flags 0x2
+ private Lnet/minecraft/item/ItemStack; field_146994_N
+
+ // access flags 0x1A
+ private final static Ljava/lang/String; __OBFID = "CL_00000737"
+
+ // access flags 0x1
+ public <init>(Lnet/minecraft/inventory/Container;)V
+ L0
+ LINENUMBER 69 L0
+ ALOAD 0
+ INVOKESPECIAL net/minecraft/client/gui/GuiScreen.<init> ()V
+ L1
+ LINENUMBER 31 L1
+ ALOAD 0
+ SIPUSH 176
+ PUTFIELD net/minecraft/client/gui/inventory/GuiContainer.xSize : I
+ L2
+ LINENUMBER 33 L2
+ ALOAD 0
+ SIPUSH 166
+ PUTFIELD net/minecraft/client/gui/inventory/GuiContainer.ySize : I
+ L3
+ LINENUMBER 55 L3
+ ALOAD 0
+ NEW java/util/HashSet
+ DUP
+ INVOKESPECIAL java/util/HashSet.<init> ()V
+ PUTFIELD net/minecraft/client/gui/inventory/GuiContainer.field_147008_s : Ljava/util/Set;
+ L4
+ LINENUMBER 70 L4
+ ALOAD 0
+ ALOAD 1
+ PUTFIELD net/minecraft/client/gui/inventory/GuiContainer.inventorySlots : Lnet/minecraft/inventory/Container;
+ L5
+ LINENUMBER 71 L5
+ ALOAD 0
+ ICONST_1
+ PUTFIELD net/minecraft/client/gui/inventory/GuiContainer.field_146995_H : Z
+ L6
+ LINENUMBER 72 L6
+ RETURN
+ L7
+ LOCALVARIABLE this Lnet/minecraft/client/gui/inventory/GuiContainer; L0 L7 0
+ LOCALVARIABLE p_i1072_1_ Lnet/minecraft/inventory/Container; L0 L7 1
+ MAXSTACK = 3
+ MAXLOCALS = 2
+
+ // access flags 0x1
+ public initGui()V
+ L0
+ LINENUMBER 79 L0
+ ALOAD 0
+ INVOKESPECIAL net/minecraft/client/gui/GuiScreen.initGui ()V
+ L1
+ LINENUMBER 80 L1
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.mc : Lnet/minecraft/client/Minecraft;
+ GETFIELD net/minecraft/client/Minecraft.thePlayer : Lnet/minecraft/client/entity/EntityClientPlayerMP;
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.inventorySlots : Lnet/minecraft/inventory/Container;
+ PUTFIELD net/minecraft/client/entity/EntityClientPlayerMP.openContainer : Lnet/minecraft/inventory/Container;
+ L2
+ LINENUMBER 81 L2
+ ALOAD 0
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.width : I
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.xSize : I
+ ISUB
+ ICONST_2
+ IDIV
+ PUTFIELD net/minecraft/client/gui/inventory/GuiContainer.guiLeft : I
+ L3
+ LINENUMBER 82 L3
+ ALOAD 0
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.height : I
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.ySize : I
+ ISUB
+ ICONST_2
+ IDIV
+ PUTFIELD net/minecraft/client/gui/inventory/GuiContainer.guiTop : I
+ L4
+ LINENUMBER 83 L4
+ RETURN
+ L5
+ LOCALVARIABLE this Lnet/minecraft/client/gui/inventory/GuiContainer; L0 L5 0
+ MAXSTACK = 3
+ MAXLOCALS = 1
+
+ // access flags 0x1
+ public drawScreen(IIF)V
+ L0
+ LINENUMBER 90 L0
+ ALOAD 0
+ INVOKEVIRTUAL net/minecraft/client/gui/inventory/GuiContainer.drawDefaultBackground ()V
+ L1
+ LINENUMBER 91 L1
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.guiLeft : I
+ ISTORE 4
+ L2
+ LINENUMBER 92 L2
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.guiTop : I
+ ISTORE 5
+ L3
+ LINENUMBER 93 L3
+ ALOAD 0
+ FLOAD 3
+ ILOAD 1
+ ILOAD 2
+ INVOKEVIRTUAL net/minecraft/client/gui/inventory/GuiContainer.drawGuiContainerBackgroundLayer (FII)V
+ L4
+ LINENUMBER 94 L4
+ LDC 32826
+ INVOKESTATIC org/lwjgl/opengl/GL11.glDisable (I)V
+ L5
+ LINENUMBER 95 L5
+ INVOKESTATIC net/minecraft/client/renderer/RenderHelper.disableStandardItemLighting ()V
+ L6
+ LINENUMBER 96 L6
+ SIPUSH 2896
+ INVOKESTATIC org/lwjgl/opengl/GL11.glDisable (I)V
+ L7
+ LINENUMBER 97 L7
+ SIPUSH 2929
+ INVOKESTATIC org/lwjgl/opengl/GL11.glDisable (I)V
+ L8
+ LINENUMBER 98 L8
+ ALOAD 0
+ ILOAD 1
+ ILOAD 2
+ FLOAD 3
+ INVOKESPECIAL net/minecraft/client/gui/GuiScreen.drawScreen (IIF)V
+ L9
+ LINENUMBER 99 L9
+ INVOKESTATIC net/minecraft/client/renderer/RenderHelper.enableGUIStandardItemLighting ()V
+ L10
+ LINENUMBER 100 L10
+ INVOKESTATIC org/lwjgl/opengl/GL11.glPushMatrix ()V
+ L11
+ LINENUMBER 101 L11
+ ILOAD 4
+ I2F
+ ILOAD 5
+ I2F
+ FCONST_0
+ INVOKESTATIC org/lwjgl/opengl/GL11.glTranslatef (FFF)V
+ L12
+ LINENUMBER 102 L12
+ FCONST_1
+ FCONST_1
+ FCONST_1
+ FCONST_1
+ INVOKESTATIC org/lwjgl/opengl/GL11.glColor4f (FFFF)V
+ L13
+ LINENUMBER 103 L13
+ LDC 32826
+ INVOKESTATIC org/lwjgl/opengl/GL11.glEnable (I)V
+ L14
+ LINENUMBER 104 L14
+ ALOAD 0
+ ACONST_NULL
+ PUTFIELD net/minecraft/client/gui/inventory/GuiContainer.theSlot : Lnet/minecraft/inventory/Slot;
+ L15
+ LINENUMBER 105 L15
+ SIPUSH 240
+ ISTORE 6
+ L16
+ LINENUMBER 106 L16
+ SIPUSH 240
+ ISTORE 7
+ L17
+ LINENUMBER 107 L17
+ GETSTATIC net/minecraft/client/renderer/OpenGlHelper.lightmapTexUnit : I
+ ILOAD 6
+ I2F
+ FCONST_1
+ FDIV
+ ILOAD 7
+ I2F
+ FCONST_1
+ FDIV
+ INVOKESTATIC net/minecraft/client/renderer/OpenGlHelper.setLightmapTextureCoords (IFF)V
+ L18
+ LINENUMBER 108 L18
+ FCONST_1
+ FCONST_1
+ FCONST_1
+ FCONST_1
+ INVOKESTATIC org/lwjgl/opengl/GL11.glColor4f (FFFF)V
+ L19
+ LINENUMBER 111 L19
+ ICONST_0
+ ISTORE 8
+ L20
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer I I F I I I I I] []
+ ILOAD 8
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.inventorySlots : Lnet/minecraft/inventory/Container;
+ GETFIELD net/minecraft/inventory/Container.inventorySlots : Ljava/util/List;
+ INVOKEINTERFACE java/util/List.size ()I
+ IF_ICMPGE L21
+ L22
+ LINENUMBER 113 L22
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.inventorySlots : Lnet/minecraft/inventory/Container;
+ GETFIELD net/minecraft/inventory/Container.inventorySlots : Ljava/util/List;
+ ILOAD 8
+ INVOKEINTERFACE java/util/List.get (I)Ljava/lang/Object;
+ CHECKCAST net/minecraft/inventory/Slot
+ ASTORE 9
+ L23
+ LINENUMBER 114 L23
+ ALOAD 0
+ ALOAD 9
+ INVOKESPECIAL net/minecraft/client/gui/inventory/GuiContainer.func_146977_a (Lnet/minecraft/inventory/Slot;)V
+ L24
+ LINENUMBER 116 L24
+ ALOAD 0
+ ALOAD 9
+ ILOAD 1
+ ILOAD 2
+ INVOKESPECIAL net/minecraft/client/gui/inventory/GuiContainer.isMouseOverSlot (Lnet/minecraft/inventory/Slot;II)Z
+ IFEQ L25
+ ALOAD 9
+ INVOKEVIRTUAL net/minecraft/inventory/Slot.func_111238_b ()Z
+ IFEQ L25
+ L26
+ LINENUMBER 118 L26
+ ALOAD 0
+ ALOAD 9
+ PUTFIELD net/minecraft/client/gui/inventory/GuiContainer.theSlot : Lnet/minecraft/inventory/Slot;
+ L27
+ LINENUMBER 119 L27
+ SIPUSH 2896
+ INVOKESTATIC org/lwjgl/opengl/GL11.glDisable (I)V
+ L28
+ LINENUMBER 120 L28
+ SIPUSH 2929
+ INVOKESTATIC org/lwjgl/opengl/GL11.glDisable (I)V
+ L29
+ LINENUMBER 121 L29
+ ALOAD 9
+ GETFIELD net/minecraft/inventory/Slot.xDisplayPosition : I
+ ISTORE 10
+ L30
+ LINENUMBER 122 L30
+ ALOAD 9
+ GETFIELD net/minecraft/inventory/Slot.yDisplayPosition : I
+ ISTORE 11
+ L31
+ LINENUMBER 123 L31
+ ICONST_1
+ ICONST_1
+ ICONST_1
+ ICONST_0
+ INVOKESTATIC org/lwjgl/opengl/GL11.glColorMask (ZZZZ)V
+ L32
+ LINENUMBER 124 L32
+ ALOAD 0
+ ILOAD 10
+ ILOAD 11
+ ILOAD 10
+ BIPUSH 16
+ IADD
+ ILOAD 11
+ BIPUSH 16
+ IADD
+ LDC -2130706433
+ LDC -2130706433
+ INVOKEVIRTUAL net/minecraft/client/gui/inventory/GuiContainer.drawGradientRect (IIIIII)V
+ L33
+ LINENUMBER 125 L33
+ ICONST_1
+ ICONST_1
+ ICONST_1
+ ICONST_1
+ INVOKESTATIC org/lwjgl/opengl/GL11.glColorMask (ZZZZ)V
+ L34
+ LINENUMBER 126 L34
+ SIPUSH 2896
+ INVOKESTATIC org/lwjgl/opengl/GL11.glEnable (I)V
+ L35
+ LINENUMBER 127 L35
+ SIPUSH 2929
+ INVOKESTATIC org/lwjgl/opengl/GL11.glEnable (I)V
+ L25
+ LINENUMBER 111 L25
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer I I F I I I I I] []
+ IINC 8 1
+ GOTO L20
+ L21
+ LINENUMBER 133 L21
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer I I F I I I I] []
+ SIPUSH 2896
+ INVOKESTATIC org/lwjgl/opengl/GL11.glDisable (I)V
+ L36
+ LINENUMBER 134 L36
+ ALOAD 0
+ ILOAD 1
+ ILOAD 2
+ INVOKEVIRTUAL net/minecraft/client/gui/inventory/GuiContainer.drawGuiContainerForegroundLayer (II)V
+ L37
+ LINENUMBER 135 L37
+ SIPUSH 2896
+ INVOKESTATIC org/lwjgl/opengl/GL11.glEnable (I)V
+ L38
+ LINENUMBER 136 L38
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.mc : Lnet/minecraft/client/Minecraft;
+ GETFIELD net/minecraft/client/Minecraft.thePlayer : Lnet/minecraft/client/entity/EntityClientPlayerMP;
+ GETFIELD net/minecraft/client/entity/EntityClientPlayerMP.inventory : Lnet/minecraft/entity/player/InventoryPlayer;
+ ASTORE 8
+ L39
+ LINENUMBER 137 L39
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.draggedStack : Lnet/minecraft/item/ItemStack;
+ IFNONNULL L40
+ ALOAD 8
+ INVOKEVIRTUAL net/minecraft/entity/player/InventoryPlayer.getItemStack ()Lnet/minecraft/item/ItemStack;
+ GOTO L41
+ L40
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer I I F I I I I net/minecraft/entity/player/InventoryPlayer] []
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.draggedStack : Lnet/minecraft/item/ItemStack;
+ L41
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer I I F I I I I net/minecraft/entity/player/InventoryPlayer] [net/minecraft/item/ItemStack]
+ ASTORE 9
+ L42
+ LINENUMBER 139 L42
+ ALOAD 9
+ IFNULL L43
+ L44
+ LINENUMBER 141 L44
+ BIPUSH 8
+ ISTORE 10
+ L45
+ LINENUMBER 142 L45
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.draggedStack : Lnet/minecraft/item/ItemStack;
+ IFNONNULL L46
+ BIPUSH 8
+ GOTO L47
+ L46
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer I I F I I I I net/minecraft/entity/player/InventoryPlayer net/minecraft/item/ItemStack I] []
+ BIPUSH 16
+ L47
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer I I F I I I I net/minecraft/entity/player/InventoryPlayer net/minecraft/item/ItemStack I] [I]
+ ISTORE 11
+ L48
+ LINENUMBER 143 L48
+ ACONST_NULL
+ ASTORE 12
+ L49
+ LINENUMBER 145 L49
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.draggedStack : Lnet/minecraft/item/ItemStack;
+ IFNULL L50
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.isRightMouseClick : Z
+ IFEQ L50
+ L51
+ LINENUMBER 147 L51
+ ALOAD 9
+ INVOKEVIRTUAL net/minecraft/item/ItemStack.copy ()Lnet/minecraft/item/ItemStack;
+ ASTORE 9
+ L52
+ LINENUMBER 148 L52
+ ALOAD 9
+ ALOAD 9
+ GETFIELD net/minecraft/item/ItemStack.stackSize : I
+ I2F
+ FCONST_2
+ FDIV
+ INVOKESTATIC net/minecraft/util/MathHelper.ceiling_float_int (F)I
+ PUTFIELD net/minecraft/item/ItemStack.stackSize : I
+ GOTO L53
+ L50
+ LINENUMBER 150 L50
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer I I F I I I I net/minecraft/entity/player/InventoryPlayer net/minecraft/item/ItemStack I I java/lang/String] []
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.field_147007_t : Z
+ IFEQ L53
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.field_147008_s : Ljava/util/Set;
+ INVOKEINTERFACE java/util/Set.size ()I
+ ICONST_1
+ IF_ICMPLE L53
+ L54
+ LINENUMBER 152 L54
+ ALOAD 9
+ INVOKEVIRTUAL net/minecraft/item/ItemStack.copy ()Lnet/minecraft/item/ItemStack;
+ ASTORE 9
+ L55
+ LINENUMBER 153 L55
+ ALOAD 9
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.field_146996_I : I
+ PUTFIELD net/minecraft/item/ItemStack.stackSize : I
+ L56
+ LINENUMBER 155 L56
+ ALOAD 9
+ GETFIELD net/minecraft/item/ItemStack.stackSize : I
+ IFNE L53
+ L57
+ LINENUMBER 157 L57
+ NEW java/lang/StringBuilder
+ DUP
+ INVOKESPECIAL java/lang/StringBuilder.<init> ()V
+ LDC ""
+ INVOKEVIRTUAL java/lang/StringBuilder.append (Ljava/lang/String;)Ljava/lang/StringBuilder;
+ GETSTATIC net/minecraft/util/EnumChatFormatting.YELLOW : Lnet/minecraft/util/EnumChatFormatting;
+ INVOKEVIRTUAL java/lang/StringBuilder.append (Ljava/lang/Object;)Ljava/lang/StringBuilder;
+ LDC "0"
+ INVOKEVIRTUAL java/lang/StringBuilder.append (Ljava/lang/String;)Ljava/lang/StringBuilder;
+ INVOKEVIRTUAL java/lang/StringBuilder.toString ()Ljava/lang/String;
+ ASTORE 12
+ L53
+ LINENUMBER 161 L53
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer I I F I I I I net/minecraft/entity/player/InventoryPlayer net/minecraft/item/ItemStack I I java/lang/String] []
+ ALOAD 0
+ ALOAD 9
+ ILOAD 1
+ ILOAD 4
+ ISUB
+ ILOAD 10
+ ISUB
+ ILOAD 2
+ ILOAD 5
+ ISUB
+ ILOAD 11
+ ISUB
+ ALOAD 12
+ INVOKESPECIAL net/minecraft/client/gui/inventory/GuiContainer.drawItemStack (Lnet/minecraft/item/ItemStack;IILjava/lang/String;)V
+ L43
+ LINENUMBER 164 L43
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer I I F I I I I net/minecraft/entity/player/InventoryPlayer net/minecraft/item/ItemStack] []
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.returningStack : Lnet/minecraft/item/ItemStack;
+ IFNULL L58
+ L59
+ LINENUMBER 166 L59
+ INVOKESTATIC net/minecraft/client/Minecraft.getSystemTime ()J
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.returningStackTime : J
+ LSUB
+ L2F
+ LDC 100.0
+ FDIV
+ FSTORE 10
+ L60
+ LINENUMBER 168 L60
+ FLOAD 10
+ FCONST_1
+ FCMPL
+ IFLT L61
+ L62
+ LINENUMBER 170 L62
+ FCONST_1
+ FSTORE 10
+ L63
+ LINENUMBER 171 L63
+ ALOAD 0
+ ACONST_NULL
+ PUTFIELD net/minecraft/client/gui/inventory/GuiContainer.returningStack : Lnet/minecraft/item/ItemStack;
+ L61
+ LINENUMBER 174 L61
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer I I F I I I I net/minecraft/entity/player/InventoryPlayer net/minecraft/item/ItemStack F] []
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.returningStackDestSlot : Lnet/minecraft/inventory/Slot;
+ GETFIELD net/minecraft/inventory/Slot.xDisplayPosition : I
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.field_147011_y : I
+ ISUB
+ ISTORE 11
+ L64
+ LINENUMBER 175 L64
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.returningStackDestSlot : Lnet/minecraft/inventory/Slot;
+ GETFIELD net/minecraft/inventory/Slot.yDisplayPosition : I
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.field_147010_z : I
+ ISUB
+ ISTORE 12
+ L65
+ LINENUMBER 176 L65
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.field_147011_y : I
+ ILOAD 11
+ I2F
+ FLOAD 10
+ FMUL
+ F2I
+ IADD
+ ISTORE 13
+ L66
+ LINENUMBER 177 L66
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.field_147010_z : I
+ ILOAD 12
+ I2F
+ FLOAD 10
+ FMUL
+ F2I
+ IADD
+ ISTORE 14
+ L67
+ LINENUMBER 178 L67
+ ALOAD 0
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.returningStack : Lnet/minecraft/item/ItemStack;
+ ILOAD 13
+ ILOAD 14
+ ACONST_NULL
+ CHECKCAST java/lang/String
+ INVOKESPECIAL net/minecraft/client/gui/inventory/GuiContainer.drawItemStack (Lnet/minecraft/item/ItemStack;IILjava/lang/String;)V
+ L58
+ LINENUMBER 181 L58
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer I I F I I I I net/minecraft/entity/player/InventoryPlayer net/minecraft/item/ItemStack] []
+ INVOKESTATIC org/lwjgl/opengl/GL11.glPopMatrix ()V
+ L68
+ LINENUMBER 183 L68
+ ALOAD 8
+ INVOKEVIRTUAL net/minecraft/entity/player/InventoryPlayer.getItemStack ()Lnet/minecraft/item/ItemStack;
+ IFNONNULL L69
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.theSlot : Lnet/minecraft/inventory/Slot;
+ IFNULL L69
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.theSlot : Lnet/minecraft/inventory/Slot;
+ INVOKEVIRTUAL net/minecraft/inventory/Slot.getHasStack ()Z
+ IFEQ L69
+ L70
+ LINENUMBER 185 L70
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.theSlot : Lnet/minecraft/inventory/Slot;
+ INVOKEVIRTUAL net/minecraft/inventory/Slot.getStack ()Lnet/minecraft/item/ItemStack;
+ ASTORE 10
+ L71
+ LINENUMBER 186 L71
+ ALOAD 0
+ ALOAD 10
+ ILOAD 1
+ ILOAD 2
+ INVOKEVIRTUAL net/minecraft/client/gui/inventory/GuiContainer.renderToolTip (Lnet/minecraft/item/ItemStack;II)V
+ L69
+ LINENUMBER 189 L69
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer I I F I I I I net/minecraft/entity/player/InventoryPlayer net/minecraft/item/ItemStack] []
+ SIPUSH 2896
+ INVOKESTATIC org/lwjgl/opengl/GL11.glEnable (I)V
+ L72
+ LINENUMBER 190 L72
+ SIPUSH 2929
+ INVOKESTATIC org/lwjgl/opengl/GL11.glEnable (I)V
+ L73
+ LINENUMBER 191 L73
+ INVOKESTATIC net/minecraft/client/renderer/RenderHelper.enableStandardItemLighting ()V
+ L74
+ LINENUMBER 192 L74
+ RETURN
+ L75
+ LOCALVARIABLE j1 I L30 L25 10
+ LOCALVARIABLE k1 I L31 L25 11
+ LOCALVARIABLE slot Lnet/minecraft/inventory/Slot; L23 L25 9
+ LOCALVARIABLE i1 I L20 L21 8
+ LOCALVARIABLE b0 B L45 L43 10
+ LOCALVARIABLE s Ljava/lang/String; L49 L43 12
+ LOCALVARIABLE k1 I L48 L43 11
+ LOCALVARIABLE f1 F L60 L58 10
+ LOCALVARIABLE j2 I L65 L58 12
+ LOCALVARIABLE l1 I L66 L58 13
+ LOCALVARIABLE i2 I L67 L58 14
+ LOCALVARIABLE k1 I L64 L58 11
+ LOCALVARIABLE itemstack1 Lnet/minecraft/item/ItemStack; L71 L69 10
+ LOCALVARIABLE this Lnet/minecraft/client/gui/inventory/GuiContainer; L0 L75 0
+ LOCALVARIABLE p_73863_1_ I L0 L75 1
+ LOCALVARIABLE p_73863_2_ I L0 L75 2
+ LOCALVARIABLE p_73863_3_ F L0 L75 3
+ LOCALVARIABLE k I L2 L75 4
+ LOCALVARIABLE l I L3 L75 5
+ LOCALVARIABLE short1 S L16 L75 6
+ LOCALVARIABLE short2 S L17 L75 7
+ LOCALVARIABLE inventoryplayer Lnet/minecraft/entity/player/InventoryPlayer; L39 L75 8
+ LOCALVARIABLE itemstack Lnet/minecraft/item/ItemStack; L42 L75 9
+ MAXSTACK = 7
+ MAXLOCALS = 15
+
+ // access flags 0x2
+ private drawItemStack(Lnet/minecraft/item/ItemStack;IILjava/lang/String;)V
+ L0
+ LINENUMBER 196 L0
+ FCONST_0
+ FCONST_0
+ LDC 32.0
+ INVOKESTATIC org/lwjgl/opengl/GL11.glTranslatef (FFF)V
+ L1
+ LINENUMBER 197 L1
+ ALOAD 0
+ LDC 200.0
+ PUTFIELD net/minecraft/client/gui/inventory/GuiContainer.zLevel : F
+ L2
+ LINENUMBER 198 L2
+ GETSTATIC net/minecraft/client/gui/inventory/GuiContainer.itemRender : Lnet/minecraft/client/renderer/entity/RenderItem;
+ LDC 200.0
+ PUTFIELD net/minecraft/client/renderer/entity/RenderItem.zLevel : F
+ L3
+ LINENUMBER 199 L3
+ ACONST_NULL
+ ASTORE 5
+ L4
+ LINENUMBER 200 L4
+ ALOAD 1
+ IFNULL L5
+ ALOAD 1
+ INVOKEVIRTUAL net/minecraft/item/ItemStack.getItem ()Lnet/minecraft/item/Item;
+ ALOAD 1
+ INVOKEVIRTUAL net/minecraft/item/Item.getFontRenderer (Lnet/minecraft/item/ItemStack;)Lnet/minecraft/client/gui/FontRenderer;
+ ASTORE 5
+ L5
+ LINENUMBER 201 L5
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer net/minecraft/item/ItemStack I I java/lang/String net/minecraft/client/gui/FontRenderer] []
+ ALOAD 5
+ IFNONNULL L6
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.fontRendererObj : Lnet/minecraft/client/gui/FontRenderer;
+ ASTORE 5
+ L6
+ LINENUMBER 202 L6
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer net/minecraft/item/ItemStack I I java/lang/String net/minecraft/client/gui/FontRenderer] []
+ GETSTATIC net/minecraft/client/gui/inventory/GuiContainer.itemRender : Lnet/minecraft/client/renderer/entity/RenderItem;
+ ALOAD 5
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.mc : Lnet/minecraft/client/Minecraft;
+ INVOKEVIRTUAL net/minecraft/client/Minecraft.getTextureManager ()Lnet/minecraft/client/renderer/texture/TextureManager;
+ ALOAD 1
+ ILOAD 2
+ ILOAD 3
+ INVOKEVIRTUAL net/minecraft/client/renderer/entity/RenderItem.renderItemAndEffectIntoGUI (Lnet/minecraft/client/gui/FontRenderer;Lnet/minecraft/client/renderer/texture/TextureManager;Lnet/minecraft/item/ItemStack;II)V
+ L7
+ LINENUMBER 203 L7
+ GETSTATIC net/minecraft/client/gui/inventory/GuiContainer.itemRender : Lnet/minecraft/client/renderer/entity/RenderItem;
+ ALOAD 5
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.mc : Lnet/minecraft/client/Minecraft;
+ INVOKEVIRTUAL net/minecraft/client/Minecraft.getTextureManager ()Lnet/minecraft/client/renderer/texture/TextureManager;
+ ALOAD 1
+ ILOAD 2
+ ILOAD 3
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.draggedStack : Lnet/minecraft/item/ItemStack;
+ IFNONNULL L8
+ ICONST_0
+ GOTO L9
+ L8
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer net/minecraft/item/ItemStack I I java/lang/String net/minecraft/client/gui/FontRenderer] [net/minecraft/client/renderer/entity/RenderItem net/minecraft/client/gui/FontRenderer net/minecraft/client/renderer/texture/TextureManager net/minecraft/item/ItemStack I I]
+ BIPUSH 8
+ L9
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer net/minecraft/item/ItemStack I I java/lang/String net/minecraft/client/gui/FontRenderer] [net/minecraft/client/renderer/entity/RenderItem net/minecraft/client/gui/FontRenderer net/minecraft/client/renderer/texture/TextureManager net/minecraft/item/ItemStack I I I]
+ ISUB
+ ALOAD 4
+ INVOKEVIRTUAL net/minecraft/client/renderer/entity/RenderItem.renderItemOverlayIntoGUI (Lnet/minecraft/client/gui/FontRenderer;Lnet/minecraft/client/renderer/texture/TextureManager;Lnet/minecraft/item/ItemStack;IILjava/lang/String;)V
+ L10
+ LINENUMBER 204 L10
+ ALOAD 0
+ FCONST_0
+ PUTFIELD net/minecraft/client/gui/inventory/GuiContainer.zLevel : F
+ L11
+ LINENUMBER 205 L11
+ GETSTATIC net/minecraft/client/gui/inventory/GuiContainer.itemRender : Lnet/minecraft/client/renderer/entity/RenderItem;
+ FCONST_0
+ PUTFIELD net/minecraft/client/renderer/entity/RenderItem.zLevel : F
+ L12
+ LINENUMBER 206 L12
+ RETURN
+ L13
+ LOCALVARIABLE this Lnet/minecraft/client/gui/inventory/GuiContainer; L0 L13 0
+ LOCALVARIABLE p_146982_1_ Lnet/minecraft/item/ItemStack; L0 L13 1
+ LOCALVARIABLE p_146982_2_ I L0 L13 2
+ LOCALVARIABLE p_146982_3_ I L0 L13 3
+ LOCALVARIABLE p_146982_4_ Ljava/lang/String; L0 L13 4
+ LOCALVARIABLE font Lnet/minecraft/client/gui/FontRenderer; L4 L13 5
+ MAXSTACK = 7
+ MAXLOCALS = 6
+
+ // access flags 0x4
+ protected drawGuiContainerForegroundLayer(II)V
+ L0
+ LINENUMBER 211 L0
+ RETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/client/gui/inventory/GuiContainer; L0 L1 0
+ LOCALVARIABLE p_146979_1_ I L0 L1 1
+ LOCALVARIABLE p_146979_2_ I L0 L1 2
+ MAXSTACK = 0
+ MAXLOCALS = 3
+
+ // access flags 0x404
+ protected abstract drawGuiContainerBackgroundLayer(FII)V
+
+ // access flags 0x2
+ private func_146977_a(Lnet/minecraft/inventory/Slot;)V
+ L0
+ LINENUMBER 217 L0
+ ALOAD 1
+ GETFIELD net/minecraft/inventory/Slot.xDisplayPosition : I
+ ISTORE 2
+ L1
+ LINENUMBER 218 L1
+ ALOAD 1
+ GETFIELD net/minecraft/inventory/Slot.yDisplayPosition : I
+ ISTORE 3
+ L2
+ LINENUMBER 219 L2
+ ALOAD 1
+ INVOKEVIRTUAL net/minecraft/inventory/Slot.getStack ()Lnet/minecraft/item/ItemStack;
+ ASTORE 4
+ L3
+ LINENUMBER 220 L3
+ ICONST_0
+ ISTORE 5
+ L4
+ LINENUMBER 221 L4
+ ALOAD 1
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.clickedSlot : Lnet/minecraft/inventory/Slot;
+ IF_ACMPNE L5
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.draggedStack : Lnet/minecraft/item/ItemStack;
+ IFNULL L5
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.isRightMouseClick : Z
+ IFNE L5
+ ICONST_1
+ GOTO L6
+ L5
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer net/minecraft/inventory/Slot I I net/minecraft/item/ItemStack I] []
+ ICONST_0
+ L6
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer net/minecraft/inventory/Slot I I net/minecraft/item/ItemStack I] [I]
+ ISTORE 6
+ L7
+ LINENUMBER 222 L7
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.mc : Lnet/minecraft/client/Minecraft;
+ GETFIELD net/minecraft/client/Minecraft.thePlayer : Lnet/minecraft/client/entity/EntityClientPlayerMP;
+ GETFIELD net/minecraft/client/entity/EntityClientPlayerMP.inventory : Lnet/minecraft/entity/player/InventoryPlayer;
+ INVOKEVIRTUAL net/minecraft/entity/player/InventoryPlayer.getItemStack ()Lnet/minecraft/item/ItemStack;
+ ASTORE 7
+ L8
+ LINENUMBER 223 L8
+ ACONST_NULL
+ ASTORE 8
+ L9
+ LINENUMBER 225 L9
+ ALOAD 1
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.clickedSlot : Lnet/minecraft/inventory/Slot;
+ IF_ACMPNE L10
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.draggedStack : Lnet/minecraft/item/ItemStack;
+ IFNULL L10
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.isRightMouseClick : Z
+ IFEQ L10
+ ALOAD 4
+ IFNULL L10
+ L11
+ LINENUMBER 227 L11
+ ALOAD 4
+ INVOKEVIRTUAL net/minecraft/item/ItemStack.copy ()Lnet/minecraft/item/ItemStack;
+ ASTORE 4
+ L12
+ LINENUMBER 228 L12
+ ALOAD 4
+ DUP
+ GETFIELD net/minecraft/item/ItemStack.stackSize : I
+ ICONST_2
+ IDIV
+ PUTFIELD net/minecraft/item/ItemStack.stackSize : I
+ GOTO L13
+ L10
+ LINENUMBER 230 L10
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer net/minecraft/inventory/Slot I I net/minecraft/item/ItemStack I I net/minecraft/item/ItemStack java/lang/String] []
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.field_147007_t : Z
+ IFEQ L13
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.field_147008_s : Ljava/util/Set;
+ ALOAD 1
+ INVOKEINTERFACE java/util/Set.contains (Ljava/lang/Object;)Z
+ IFEQ L13
+ ALOAD 7
+ IFNULL L13
+ L14
+ LINENUMBER 232 L14
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.field_147008_s : Ljava/util/Set;
+ INVOKEINTERFACE java/util/Set.size ()I
+ ICONST_1
+ IF_ICMPNE L15
+ L16
+ LINENUMBER 234 L16
+ RETURN
+ L15
+ LINENUMBER 237 L15
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer net/minecraft/inventory/Slot I I net/minecraft/item/ItemStack I I net/minecraft/item/ItemStack java/lang/String] []
+ ALOAD 1
+ ALOAD 7
+ ICONST_1
+ INVOKESTATIC net/minecraft/inventory/Container.func_94527_a (Lnet/minecraft/inventory/Slot;Lnet/minecraft/item/ItemStack;Z)Z
+ IFEQ L17
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.inventorySlots : Lnet/minecraft/inventory/Container;
+ ALOAD 1
+ INVOKEVIRTUAL net/minecraft/inventory/Container.canDragIntoSlot (Lnet/minecraft/inventory/Slot;)Z
+ IFEQ L17
+ L18
+ LINENUMBER 239 L18
+ ALOAD 7
+ INVOKEVIRTUAL net/minecraft/item/ItemStack.copy ()Lnet/minecraft/item/ItemStack;
+ ASTORE 4
+ L19
+ LINENUMBER 240 L19
+ ICONST_1
+ ISTORE 5
+ L20
+ LINENUMBER 241 L20
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.field_147008_s : Ljava/util/Set;
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.field_146987_F : I
+ ALOAD 4
+ ALOAD 1
+ INVOKEVIRTUAL net/minecraft/inventory/Slot.getStack ()Lnet/minecraft/item/ItemStack;
+ IFNONNULL L21
+ ICONST_0
+ GOTO L22
+ L21
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer net/minecraft/inventory/Slot I I net/minecraft/item/ItemStack I I net/minecraft/item/ItemStack java/lang/String] [java/util/Set I net/minecraft/item/ItemStack]
+ ALOAD 1
+ INVOKEVIRTUAL net/minecraft/inventory/Slot.getStack ()Lnet/minecraft/item/ItemStack;
+ GETFIELD net/minecraft/item/ItemStack.stackSize : I
+ L22
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer net/minecraft/inventory/Slot I I net/minecraft/item/ItemStack I I net/minecraft/item/ItemStack java/lang/String] [java/util/Set I net/minecraft/item/ItemStack I]
+ INVOKESTATIC net/minecraft/inventory/Container.func_94525_a (Ljava/util/Set;ILnet/minecraft/item/ItemStack;I)V
+ L23
+ LINENUMBER 243 L23
+ ALOAD 4
+ GETFIELD net/minecraft/item/ItemStack.stackSize : I
+ ALOAD 4
+ INVOKEVIRTUAL net/minecraft/item/ItemStack.getMaxStackSize ()I
+ IF_ICMPLE L24
+ L25
+ LINENUMBER 245 L25
+ NEW java/lang/StringBuilder
+ DUP
+ INVOKESPECIAL java/lang/StringBuilder.<init> ()V
+ GETSTATIC net/minecraft/util/EnumChatFormatting.YELLOW : Lnet/minecraft/util/EnumChatFormatting;
+ INVOKEVIRTUAL java/lang/StringBuilder.append (Ljava/lang/Object;)Ljava/lang/StringBuilder;
+ LDC ""
+ INVOKEVIRTUAL java/lang/StringBuilder.append (Ljava/lang/String;)Ljava/lang/StringBuilder;
+ ALOAD 4
+ INVOKEVIRTUAL net/minecraft/item/ItemStack.getMaxStackSize ()I
+ INVOKEVIRTUAL java/lang/StringBuilder.append (I)Ljava/lang/StringBuilder;
+ INVOKEVIRTUAL java/lang/StringBuilder.toString ()Ljava/lang/String;
+ ASTORE 8
+ L26
+ LINENUMBER 246 L26
+ ALOAD 4
+ ALOAD 4
+ INVOKEVIRTUAL net/minecraft/item/ItemStack.getMaxStackSize ()I
+ PUTFIELD net/minecraft/item/ItemStack.stackSize : I
+ L24
+ LINENUMBER 249 L24
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer net/minecraft/inventory/Slot I I net/minecraft/item/ItemStack I I net/minecraft/item/ItemStack java/lang/String] []
+ ALOAD 4
+ GETFIELD net/minecraft/item/ItemStack.stackSize : I
+ ALOAD 1
+ INVOKEVIRTUAL net/minecraft/inventory/Slot.getSlotStackLimit ()I
+ IF_ICMPLE L13
+ L27
+ LINENUMBER 251 L27
+ NEW java/lang/StringBuilder
+ DUP
+ INVOKESPECIAL java/lang/StringBuilder.<init> ()V
+ GETSTATIC net/minecraft/util/EnumChatFormatting.YELLOW : Lnet/minecraft/util/EnumChatFormatting;
+ INVOKEVIRTUAL java/lang/StringBuilder.append (Ljava/lang/Object;)Ljava/lang/StringBuilder;
+ LDC ""
+ INVOKEVIRTUAL java/lang/StringBuilder.append (Ljava/lang/String;)Ljava/lang/StringBuilder;
+ ALOAD 1
+ INVOKEVIRTUAL net/minecraft/inventory/Slot.getSlotStackLimit ()I
+ INVOKEVIRTUAL java/lang/StringBuilder.append (I)Ljava/lang/StringBuilder;
+ INVOKEVIRTUAL java/lang/StringBuilder.toString ()Ljava/lang/String;
+ ASTORE 8
+ L28
+ LINENUMBER 252 L28
+ ALOAD 4
+ ALOAD 1
+ INVOKEVIRTUAL net/minecraft/inventory/Slot.getSlotStackLimit ()I
+ PUTFIELD net/minecraft/item/ItemStack.stackSize : I
+ GOTO L13
+ L17
+ LINENUMBER 257 L17
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer net/minecraft/inventory/Slot I I net/minecraft/item/ItemStack I I net/minecraft/item/ItemStack java/lang/String] []
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.field_147008_s : Ljava/util/Set;
+ ALOAD 1
+ INVOKEINTERFACE java/util/Set.remove (Ljava/lang/Object;)Z
+ POP
+ L29
+ LINENUMBER 258 L29
+ ALOAD 0
+ INVOKESPECIAL net/minecraft/client/gui/inventory/GuiContainer.func_146980_g ()V
+ L13
+ LINENUMBER 262 L13
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer net/minecraft/inventory/Slot I I net/minecraft/item/ItemStack I I net/minecraft/item/ItemStack java/lang/String] []
+ ALOAD 0
+ LDC 100.0
+ PUTFIELD net/minecraft/client/gui/inventory/GuiContainer.zLevel : F
+ L30
+ LINENUMBER 263 L30
+ GETSTATIC net/minecraft/client/gui/inventory/GuiContainer.itemRender : Lnet/minecraft/client/renderer/entity/RenderItem;
+ LDC 100.0
+ PUTFIELD net/minecraft/client/renderer/entity/RenderItem.zLevel : F
+ L31
+ LINENUMBER 265 L31
+ ALOAD 4
+ IFNONNULL L32
+ L33
+ LINENUMBER 267 L33
+ ALOAD 1
+ INVOKEVIRTUAL net/minecraft/inventory/Slot.getBackgroundIconIndex ()Lnet/minecraft/util/IIcon;
+ ASTORE 9
+ L34
+ LINENUMBER 269 L34
+ ALOAD 9
+ IFNULL L32
+ L35
+ LINENUMBER 271 L35
+ SIPUSH 2896
+ INVOKESTATIC org/lwjgl/opengl/GL11.glDisable (I)V
+ L36
+ LINENUMBER 272 L36
+ SIPUSH 3042
+ INVOKESTATIC org/lwjgl/opengl/GL11.glEnable (I)V
+ L37
+ LINENUMBER 273 L37
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.mc : Lnet/minecraft/client/Minecraft;
+ INVOKEVIRTUAL net/minecraft/client/Minecraft.getTextureManager ()Lnet/minecraft/client/renderer/texture/TextureManager;
+ GETSTATIC net/minecraft/client/renderer/texture/TextureMap.locationItemsTexture : Lnet/minecraft/util/ResourceLocation;
+ INVOKEVIRTUAL net/minecraft/client/renderer/texture/TextureManager.bindTexture (Lnet/minecraft/util/ResourceLocation;)V
+ L38
+ LINENUMBER 274 L38
+ ALOAD 0
+ ILOAD 2
+ ILOAD 3
+ ALOAD 9
+ BIPUSH 16
+ BIPUSH 16
+ INVOKEVIRTUAL net/minecraft/client/gui/inventory/GuiContainer.drawTexturedModelRectFromIcon (IILnet/minecraft/util/IIcon;II)V
+ L39
+ LINENUMBER 275 L39
+ SIPUSH 3042
+ INVOKESTATIC org/lwjgl/opengl/GL11.glDisable (I)V
+ L40
+ LINENUMBER 276 L40
+ SIPUSH 2896
+ INVOKESTATIC org/lwjgl/opengl/GL11.glEnable (I)V
+ L41
+ LINENUMBER 277 L41
+ ICONST_1
+ ISTORE 6
+ L32
+ LINENUMBER 281 L32
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer net/minecraft/inventory/Slot I I net/minecraft/item/ItemStack I I net/minecraft/item/ItemStack java/lang/String] []
+ ILOAD 6
+ IFNE L42
+ L43
+ LINENUMBER 283 L43
+ ILOAD 5
+ IFEQ L44
+ L45
+ LINENUMBER 285 L45
+ ILOAD 2
+ ILOAD 3
+ ILOAD 2
+ BIPUSH 16
+ IADD
+ ILOAD 3
+ BIPUSH 16
+ IADD
+ LDC -2130706433
+ INVOKESTATIC net/minecraft/client/gui/inventory/GuiContainer.drawRect (IIIII)V
+ L44
+ LINENUMBER 288 L44
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer net/minecraft/inventory/Slot I I net/minecraft/item/ItemStack I I net/minecraft/item/ItemStack java/lang/String] []
+ SIPUSH 2929
+ INVOKESTATIC org/lwjgl/opengl/GL11.glEnable (I)V
+ L46
+ LINENUMBER 289 L46
+ GETSTATIC net/minecraft/client/gui/inventory/GuiContainer.itemRender : Lnet/minecraft/client/renderer/entity/RenderItem;
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.fontRendererObj : Lnet/minecraft/client/gui/FontRenderer;
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.mc : Lnet/minecraft/client/Minecraft;
+ INVOKEVIRTUAL net/minecraft/client/Minecraft.getTextureManager ()Lnet/minecraft/client/renderer/texture/TextureManager;
+ ALOAD 4
+ ILOAD 2
+ ILOAD 3
+ INVOKEVIRTUAL net/minecraft/client/renderer/entity/RenderItem.renderItemAndEffectIntoGUI (Lnet/minecraft/client/gui/FontRenderer;Lnet/minecraft/client/renderer/texture/TextureManager;Lnet/minecraft/item/ItemStack;II)V
+ L47
+ LINENUMBER 290 L47
+ GETSTATIC net/minecraft/client/gui/inventory/GuiContainer.itemRender : Lnet/minecraft/client/renderer/entity/RenderItem;
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.fontRendererObj : Lnet/minecraft/client/gui/FontRenderer;
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.mc : Lnet/minecraft/client/Minecraft;
+ INVOKEVIRTUAL net/minecraft/client/Minecraft.getTextureManager ()Lnet/minecraft/client/renderer/texture/TextureManager;
+ ALOAD 4
+ ILOAD 2
+ ILOAD 3
+ ALOAD 8
+ INVOKEVIRTUAL net/minecraft/client/renderer/entity/RenderItem.renderItemOverlayIntoGUI (Lnet/minecraft/client/gui/FontRenderer;Lnet/minecraft/client/renderer/texture/TextureManager;Lnet/minecraft/item/ItemStack;IILjava/lang/String;)V
+ L42
+ LINENUMBER 293 L42
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer net/minecraft/inventory/Slot I I net/minecraft/item/ItemStack I I net/minecraft/item/ItemStack java/lang/String] []
+ GETSTATIC net/minecraft/client/gui/inventory/GuiContainer.itemRender : Lnet/minecraft/client/renderer/entity/RenderItem;
+ FCONST_0
+ PUTFIELD net/minecraft/client/renderer/entity/RenderItem.zLevel : F
+ L48
+ LINENUMBER 294 L48
+ ALOAD 0
+ FCONST_0
+ PUTFIELD net/minecraft/client/gui/inventory/GuiContainer.zLevel : F
+ L49
+ LINENUMBER 295 L49
+ RETURN
+ L50
+ LOCALVARIABLE iicon Lnet/minecraft/util/IIcon; L34 L32 9
+ LOCALVARIABLE this Lnet/minecraft/client/gui/inventory/GuiContainer; L0 L50 0
+ LOCALVARIABLE p_146977_1_ Lnet/minecraft/inventory/Slot; L0 L50 1
+ LOCALVARIABLE i I L1 L50 2
+ LOCALVARIABLE j I L2 L50 3
+ LOCALVARIABLE itemstack Lnet/minecraft/item/ItemStack; L3 L50 4
+ LOCALVARIABLE flag Z L4 L50 5
+ LOCALVARIABLE flag1 Z L7 L50 6
+ LOCALVARIABLE itemstack1 Lnet/minecraft/item/ItemStack; L8 L50 7
+ LOCALVARIABLE s Ljava/lang/String; L9 L50 8
+ MAXSTACK = 7
+ MAXLOCALS = 10
+
+ // access flags 0x2
+ private func_146980_g()V
+ L0
+ LINENUMBER 299 L0
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.mc : Lnet/minecraft/client/Minecraft;
+ GETFIELD net/minecraft/client/Minecraft.thePlayer : Lnet/minecraft/client/entity/EntityClientPlayerMP;
+ GETFIELD net/minecraft/client/entity/EntityClientPlayerMP.inventory : Lnet/minecraft/entity/player/InventoryPlayer;
+ INVOKEVIRTUAL net/minecraft/entity/player/InventoryPlayer.getItemStack ()Lnet/minecraft/item/ItemStack;
+ ASTORE 1
+ L1
+ LINENUMBER 301 L1
+ ALOAD 1
+ IFNULL L2
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.field_147007_t : Z
+ IFEQ L2
+ L3
+ LINENUMBER 303 L3
+ ALOAD 0
+ ALOAD 1
+ GETFIELD net/minecraft/item/ItemStack.stackSize : I
+ PUTFIELD net/minecraft/client/gui/inventory/GuiContainer.field_146996_I : I
+ L4
+ LINENUMBER 307 L4
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.field_147008_s : Ljava/util/Set;
+ INVOKEINTERFACE java/util/Set.iterator ()Ljava/util/Iterator;
+ ASTORE 2
+ L5
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer net/minecraft/item/ItemStack java/util/Iterator] []
+ ALOAD 2
+ INVOKEINTERFACE java/util/Iterator.hasNext ()Z
+ IFEQ L2
+ L6
+ LINENUMBER 309 L6
+ ALOAD 2
+ INVOKEINTERFACE java/util/Iterator.next ()Ljava/lang/Object;
+ CHECKCAST net/minecraft/inventory/Slot
+ ASTORE 3
+ L7
+ LINENUMBER 310 L7
+ ALOAD 1
+ INVOKEVIRTUAL net/minecraft/item/ItemStack.copy ()Lnet/minecraft/item/ItemStack;
+ ASTORE 4
+ L8
+ LINENUMBER 311 L8
+ ALOAD 3
+ INVOKEVIRTUAL net/minecraft/inventory/Slot.getStack ()Lnet/minecraft/item/ItemStack;
+ IFNONNULL L9
+ ICONST_0
+ GOTO L10
+ L9
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer net/minecraft/item/ItemStack java/util/Iterator net/minecraft/inventory/Slot net/minecraft/item/ItemStack] []
+ ALOAD 3
+ INVOKEVIRTUAL net/minecraft/inventory/Slot.getStack ()Lnet/minecraft/item/ItemStack;
+ GETFIELD net/minecraft/item/ItemStack.stackSize : I
+ L10
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer net/minecraft/item/ItemStack java/util/Iterator net/minecraft/inventory/Slot net/minecraft/item/ItemStack] [I]
+ ISTORE 5
+ L11
+ LINENUMBER 312 L11
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.field_147008_s : Ljava/util/Set;
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.field_146987_F : I
+ ALOAD 4
+ ILOAD 5
+ INVOKESTATIC net/minecraft/inventory/Container.func_94525_a (Ljava/util/Set;ILnet/minecraft/item/ItemStack;I)V
+ L12
+ LINENUMBER 314 L12
+ ALOAD 4
+ GETFIELD net/minecraft/item/ItemStack.stackSize : I
+ ALOAD 4
+ INVOKEVIRTUAL net/minecraft/item/ItemStack.getMaxStackSize ()I
+ IF_ICMPLE L13
+ L14
+ LINENUMBER 316 L14
+ ALOAD 4
+ ALOAD 4
+ INVOKEVIRTUAL net/minecraft/item/ItemStack.getMaxStackSize ()I
+ PUTFIELD net/minecraft/item/ItemStack.stackSize : I
+ L13
+ LINENUMBER 319 L13
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer net/minecraft/item/ItemStack java/util/Iterator net/minecraft/inventory/Slot net/minecraft/item/ItemStack I] []
+ ALOAD 4
+ GETFIELD net/minecraft/item/ItemStack.stackSize : I
+ ALOAD 3
+ INVOKEVIRTUAL net/minecraft/inventory/Slot.getSlotStackLimit ()I
+ IF_ICMPLE L15
+ L16
+ LINENUMBER 321 L16
+ ALOAD 4
+ ALOAD 3
+ INVOKEVIRTUAL net/minecraft/inventory/Slot.getSlotStackLimit ()I
+ PUTFIELD net/minecraft/item/ItemStack.stackSize : I
+ L15
+ LINENUMBER 307 L15
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer net/minecraft/item/ItemStack java/util/Iterator T net/minecraft/item/ItemStack I] []
+ ALOAD 0
+ DUP
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.field_146996_I : I
+ ALOAD 4
+ GETFIELD net/minecraft/item/ItemStack.stackSize : I
+ ILOAD 5
+ ISUB
+ ISUB
+ PUTFIELD net/minecraft/client/gui/inventory/GuiContainer.field_146996_I : I
+ GOTO L5
+ L2
+ LINENUMBER 325 L2
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer net/minecraft/item/ItemStack] []
+ RETURN
+ L17
+ LOCALVARIABLE slot Lnet/minecraft/inventory/Slot; L7 L15 3
+ LOCALVARIABLE itemstack1 Lnet/minecraft/item/ItemStack; L8 L2 4
+ LOCALVARIABLE i I L11 L2 5
+ LOCALVARIABLE iterator Ljava/util/Iterator; L5 L2 2
+ LOCALVARIABLE this Lnet/minecraft/client/gui/inventory/GuiContainer; L0 L17 0
+ LOCALVARIABLE itemstack Lnet/minecraft/item/ItemStack; L1 L17 1
+ MAXSTACK = 4
+ MAXLOCALS = 6
+
+ // access flags 0x2
+ private getSlotAtPosition(II)Lnet/minecraft/inventory/Slot;
+ L0
+ LINENUMBER 332 L0
+ ICONST_0
+ ISTORE 3
+ L1
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer I I I] []
+ ILOAD 3
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.inventorySlots : Lnet/minecraft/inventory/Container;
+ GETFIELD net/minecraft/inventory/Container.inventorySlots : Ljava/util/List;
+ INVOKEINTERFACE java/util/List.size ()I
+ IF_ICMPGE L2
+ L3
+ LINENUMBER 334 L3
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.inventorySlots : Lnet/minecraft/inventory/Container;
+ GETFIELD net/minecraft/inventory/Container.inventorySlots : Ljava/util/List;
+ ILOAD 3
+ INVOKEINTERFACE java/util/List.get (I)Ljava/lang/Object;
+ CHECKCAST net/minecraft/inventory/Slot
+ ASTORE 4
+ L4
+ LINENUMBER 336 L4
+ ALOAD 0
+ ALOAD 4
+ ILOAD 1
+ ILOAD 2
+ INVOKESPECIAL net/minecraft/client/gui/inventory/GuiContainer.isMouseOverSlot (Lnet/minecraft/inventory/Slot;II)Z
+ IFEQ L5
+ L6
+ LINENUMBER 338 L6
+ ALOAD 4
+ ARETURN
+ L5
+ LINENUMBER 332 L5
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer I I I] []
+ IINC 3 1
+ GOTO L1
+ L2
+ LINENUMBER 342 L2
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer I I] []
+ ACONST_NULL
+ ARETURN
+ L7
+ LOCALVARIABLE slot Lnet/minecraft/inventory/Slot; L4 L5 4
+ LOCALVARIABLE k I L1 L2 3
+ LOCALVARIABLE this Lnet/minecraft/client/gui/inventory/GuiContainer; L0 L7 0
+ LOCALVARIABLE p_146975_1_ I L0 L7 1
+ LOCALVARIABLE p_146975_2_ I L0 L7 2
+ MAXSTACK = 4
+ MAXLOCALS = 5
+
+ // access flags 0x4
+ protected mouseClicked(III)V
+ L0
+ LINENUMBER 350 L0
+ ALOAD 0
+ ILOAD 1
+ ILOAD 2
+ ILOAD 3
+ INVOKESPECIAL net/minecraft/client/gui/GuiScreen.mouseClicked (III)V
+ L1
+ LINENUMBER 351 L1
+ ILOAD 3
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.mc : Lnet/minecraft/client/Minecraft;
+ GETFIELD net/minecraft/client/Minecraft.gameSettings : Lnet/minecraft/client/settings/GameSettings;
+ GETFIELD net/minecraft/client/settings/GameSettings.keyBindPickBlock : Lnet/minecraft/client/settings/KeyBinding;
+ INVOKEVIRTUAL net/minecraft/client/settings/KeyBinding.getKeyCode ()I
+ BIPUSH 100
+ IADD
+ IF_ICMPNE L2
+ ICONST_1
+ GOTO L3
+ L2
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer I I I] []
+ ICONST_0
+ L3
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer I I I] [I]
+ ISTORE 4
+ L4
+ LINENUMBER 352 L4
+ ALOAD 0
+ ILOAD 1
+ ILOAD 2
+ INVOKESPECIAL net/minecraft/client/gui/inventory/GuiContainer.getSlotAtPosition (II)Lnet/minecraft/inventory/Slot;
+ ASTORE 5
+ L5
+ LINENUMBER 353 L5
+ INVOKESTATIC net/minecraft/client/Minecraft.getSystemTime ()J
+ LSTORE 6
+ L6
+ LINENUMBER 354 L6
+ ALOAD 0
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.field_146998_K : Lnet/minecraft/inventory/Slot;
+ ALOAD 5
+ IF_ACMPNE L7
+ LLOAD 6
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.field_146997_J : J
+ LSUB
+ LDC 250
+ LCMP
+ IFGE L7
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.field_146992_L : I
+ ILOAD 3
+ IF_ICMPNE L7
+ ICONST_1
+ GOTO L8
+ L7
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer I I I I net/minecraft/inventory/Slot J] [net/minecraft/client/gui/inventory/GuiContainer]
+ ICONST_0
+ L8
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer I I I I net/minecraft/inventory/Slot J] [net/minecraft/client/gui/inventory/GuiContainer I]
+ PUTFIELD net/minecraft/client/gui/inventory/GuiContainer.field_146993_M : Z
+ L9
+ LINENUMBER 355 L9
+ ALOAD 0
+ ICONST_0
+ PUTFIELD net/minecraft/client/gui/inventory/GuiContainer.field_146995_H : Z
+ L10
+ LINENUMBER 357 L10
+ ILOAD 3
+ IFEQ L11
+ ILOAD 3
+ ICONST_1
+ IF_ICMPEQ L11
+ ILOAD 4
+ IFEQ L12
+ L11
+ LINENUMBER 359 L11
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer I I I I net/minecraft/inventory/Slot J] []
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.guiLeft : I
+ ISTORE 8
+ L13
+ LINENUMBER 360 L13
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.guiTop : I
+ ISTORE 9
+ L14
+ LINENUMBER 361 L14
+ ILOAD 1
+ ILOAD 8
+ IF_ICMPLT L15
+ ILOAD 2
+ ILOAD 9
+ IF_ICMPLT L15
+ ILOAD 1
+ ILOAD 8
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.xSize : I
+ IADD
+ IF_ICMPGE L15
+ ILOAD 2
+ ILOAD 9
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.ySize : I
+ IADD
+ IF_ICMPLT L16
+ L15
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer I I I I net/minecraft/inventory/Slot J I I] []
+ ICONST_1
+ GOTO L17
+ L16
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer I I I I net/minecraft/inventory/Slot J I I] []
+ ICONST_0
+ L17
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer I I I I net/minecraft/inventory/Slot J I I] [I]
+ ISTORE 10
+ L18
+ LINENUMBER 362 L18
+ ICONST_M1
+ ISTORE 11
+ L19
+ LINENUMBER 364 L19
+ ALOAD 5
+ IFNULL L20
+ L21
+ LINENUMBER 366 L21
+ ALOAD 5
+ GETFIELD net/minecraft/inventory/Slot.slotNumber : I
+ ISTORE 11
+ L20
+ LINENUMBER 369 L20
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer I I I I net/minecraft/inventory/Slot J I I I I] []
+ ILOAD 10
+ IFEQ L22
+ L23
+ LINENUMBER 371 L23
+ SIPUSH -999
+ ISTORE 11
+ L22
+ LINENUMBER 374 L22
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer I I I I net/minecraft/inventory/Slot J I I I I] []
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.mc : Lnet/minecraft/client/Minecraft;
+ GETFIELD net/minecraft/client/Minecraft.gameSettings : Lnet/minecraft/client/settings/GameSettings;
+ GETFIELD net/minecraft/client/settings/GameSettings.touchscreen : Z
+ IFEQ L24
+ ILOAD 10
+ IFEQ L24
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.mc : Lnet/minecraft/client/Minecraft;
+ GETFIELD net/minecraft/client/Minecraft.thePlayer : Lnet/minecraft/client/entity/EntityClientPlayerMP;
+ GETFIELD net/minecraft/client/entity/EntityClientPlayerMP.inventory : Lnet/minecraft/entity/player/InventoryPlayer;
+ INVOKEVIRTUAL net/minecraft/entity/player/InventoryPlayer.getItemStack ()Lnet/minecraft/item/ItemStack;
+ IFNONNULL L24
+ L25
+ LINENUMBER 376 L25
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.mc : Lnet/minecraft/client/Minecraft;
+ ACONST_NULL
+ CHECKCAST net/minecraft/client/gui/GuiScreen
+ INVOKEVIRTUAL net/minecraft/client/Minecraft.displayGuiScreen (Lnet/minecraft/client/gui/GuiScreen;)V
+ L26
+ LINENUMBER 377 L26
+ RETURN
+ L24
+ LINENUMBER 380 L24
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer I I I I net/minecraft/inventory/Slot J I I I I] []
+ ILOAD 11
+ ICONST_M1
+ IF_ICMPEQ L12
+ L27
+ LINENUMBER 382 L27
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.mc : Lnet/minecraft/client/Minecraft;
+ GETFIELD net/minecraft/client/Minecraft.gameSettings : Lnet/minecraft/client/settings/GameSettings;
+ GETFIELD net/minecraft/client/settings/GameSettings.touchscreen : Z
+ IFEQ L28
+ L29
+ LINENUMBER 384 L29
+ ALOAD 5
+ IFNULL L30
+ ALOAD 5
+ INVOKEVIRTUAL net/minecraft/inventory/Slot.getHasStack ()Z
+ IFEQ L30
+ L31
+ LINENUMBER 386 L31
+ ALOAD 0
+ ALOAD 5
+ PUTFIELD net/minecraft/client/gui/inventory/GuiContainer.clickedSlot : Lnet/minecraft/inventory/Slot;
+ L32
+ LINENUMBER 387 L32
+ ALOAD 0
+ ACONST_NULL
+ PUTFIELD net/minecraft/client/gui/inventory/GuiContainer.draggedStack : Lnet/minecraft/item/ItemStack;
+ L33
+ LINENUMBER 388 L33
+ ALOAD 0
+ ILOAD 3
+ ICONST_1
+ IF_ICMPNE L34
+ ICONST_1
+ GOTO L35
+ L34
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer I I I I net/minecraft/inventory/Slot J I I I I] [net/minecraft/client/gui/inventory/GuiContainer]
+ ICONST_0
+ L35
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer I I I I net/minecraft/inventory/Slot J I I I I] [net/minecraft/client/gui/inventory/GuiContainer I]
+ PUTFIELD net/minecraft/client/gui/inventory/GuiContainer.isRightMouseClick : Z
+ GOTO L12
+ L30
+ LINENUMBER 392 L30
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer I I I I net/minecraft/inventory/Slot J I I I I] []
+ ALOAD 0
+ ACONST_NULL
+ PUTFIELD net/minecraft/client/gui/inventory/GuiContainer.clickedSlot : Lnet/minecraft/inventory/Slot;
+ GOTO L12
+ L28
+ LINENUMBER 395 L28
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer I I I I net/minecraft/inventory/Slot J I I I I] []
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.field_147007_t : Z
+ IFNE L12
+ L36
+ LINENUMBER 397 L36
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.mc : Lnet/minecraft/client/Minecraft;
+ GETFIELD net/minecraft/client/Minecraft.thePlayer : Lnet/minecraft/client/entity/EntityClientPlayerMP;
+ GETFIELD net/minecraft/client/entity/EntityClientPlayerMP.inventory : Lnet/minecraft/entity/player/InventoryPlayer;
+ INVOKEVIRTUAL net/minecraft/entity/player/InventoryPlayer.getItemStack ()Lnet/minecraft/item/ItemStack;
+ IFNONNULL L37
+ L38
+ LINENUMBER 399 L38
+ ILOAD 3
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.mc : Lnet/minecraft/client/Minecraft;
+ GETFIELD net/minecraft/client/Minecraft.gameSettings : Lnet/minecraft/client/settings/GameSettings;
+ GETFIELD net/minecraft/client/settings/GameSettings.keyBindPickBlock : Lnet/minecraft/client/settings/KeyBinding;
+ INVOKEVIRTUAL net/minecraft/client/settings/KeyBinding.getKeyCode ()I
+ BIPUSH 100
+ IADD
+ IF_ICMPNE L39
+ L40
+ LINENUMBER 401 L40
+ ALOAD 0
+ ALOAD 5
+ ILOAD 11
+ ILOAD 3
+ ICONST_3
+ INVOKEVIRTUAL net/minecraft/client/gui/inventory/GuiContainer.handleMouseClick (Lnet/minecraft/inventory/Slot;III)V
+ GOTO L41
+ L39
+ LINENUMBER 405 L39
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer I I I I net/minecraft/inventory/Slot J I I I I] []
+ ILOAD 11
+ SIPUSH -999
+ IF_ICMPEQ L42
+ BIPUSH 42
+ INVOKESTATIC org/lwjgl/input/Keyboard.isKeyDown (I)Z
+ IFNE L43
+ BIPUSH 54
+ INVOKESTATIC org/lwjgl/input/Keyboard.isKeyDown (I)Z
+ IFEQ L42
+ L43
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer I I I I net/minecraft/inventory/Slot J I I I I] []
+ ICONST_1
+ GOTO L44
+ L42
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer I I I I net/minecraft/inventory/Slot J I I I I] []
+ ICONST_0
+ L44
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer I I I I net/minecraft/inventory/Slot J I I I I] [I]
+ ISTORE 12
+ L45
+ LINENUMBER 406 L45
+ ICONST_0
+ ISTORE 13
+ L46
+ LINENUMBER 408 L46
+ ILOAD 12
+ IFEQ L47
+ L48
+ LINENUMBER 410 L48
+ ALOAD 0
+ ALOAD 5
+ IFNULL L49
+ ALOAD 5
+ INVOKEVIRTUAL net/minecraft/inventory/Slot.getHasStack ()Z
+ IFEQ L49
+ ALOAD 5
+ INVOKEVIRTUAL net/minecraft/inventory/Slot.getStack ()Lnet/minecraft/item/ItemStack;
+ GOTO L50
+ L49
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer I I I I net/minecraft/inventory/Slot J I I I I I I] [net/minecraft/client/gui/inventory/GuiContainer]
+ ACONST_NULL
+ L50
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer I I I I net/minecraft/inventory/Slot J I I I I I I] [net/minecraft/client/gui/inventory/GuiContainer net/minecraft/item/ItemStack]
+ PUTFIELD net/minecraft/client/gui/inventory/GuiContainer.field_146994_N : Lnet/minecraft/item/ItemStack;
+ L51
+ LINENUMBER 411 L51
+ ICONST_1
+ ISTORE 13
+ GOTO L52
+ L47
+ LINENUMBER 413 L47
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer I I I I net/minecraft/inventory/Slot J I I I I I I] []
+ ILOAD 11
+ SIPUSH -999
+ IF_ICMPNE L52
+ L53
+ LINENUMBER 415 L53
+ ICONST_4
+ ISTORE 13
+ L52
+ LINENUMBER 418 L52
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer I I I I net/minecraft/inventory/Slot J I I I I I I] []
+ ALOAD 0
+ ALOAD 5
+ ILOAD 11
+ ILOAD 3
+ ILOAD 13
+ INVOKEVIRTUAL net/minecraft/client/gui/inventory/GuiContainer.handleMouseClick (Lnet/minecraft/inventory/Slot;III)V
+ L41
+ LINENUMBER 421 L41
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer I I I I net/minecraft/inventory/Slot J I I I I] []
+ ALOAD 0
+ ICONST_1
+ PUTFIELD net/minecraft/client/gui/inventory/GuiContainer.field_146995_H : Z
+ GOTO L12
+ L37
+ LINENUMBER 425 L37
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer I I I I net/minecraft/inventory/Slot J I I I I] []
+ ALOAD 0
+ ICONST_1
+ PUTFIELD net/minecraft/client/gui/inventory/GuiContainer.field_147007_t : Z
+ L54
+ LINENUMBER 426 L54
+ ALOAD 0
+ ILOAD 3
+ PUTFIELD net/minecraft/client/gui/inventory/GuiContainer.field_146988_G : I
+ L55
+ LINENUMBER 427 L55
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.field_147008_s : Ljava/util/Set;
+ INVOKEINTERFACE java/util/Set.clear ()V
+ L56
+ LINENUMBER 429 L56
+ ILOAD 3
+ IFNE L57
+ L58
+ LINENUMBER 431 L58
+ ALOAD 0
+ ICONST_0
+ PUTFIELD net/minecraft/client/gui/inventory/GuiContainer.field_146987_F : I
+ GOTO L12
+ L57
+ LINENUMBER 433 L57
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer I I I I net/minecraft/inventory/Slot J I I I I] []
+ ILOAD 3
+ ICONST_1
+ IF_ICMPNE L12
+ L59
+ LINENUMBER 435 L59
+ ALOAD 0
+ ICONST_1
+ PUTFIELD net/minecraft/client/gui/inventory/GuiContainer.field_146987_F : I
+ L12
+ LINENUMBER 442 L12
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer I I I I net/minecraft/inventory/Slot J] []
+ ALOAD 0
+ ALOAD 5
+ PUTFIELD net/minecraft/client/gui/inventory/GuiContainer.field_146998_K : Lnet/minecraft/inventory/Slot;
+ L60
+ LINENUMBER 443 L60
+ ALOAD 0
+ LLOAD 6
+ PUTFIELD net/minecraft/client/gui/inventory/GuiContainer.field_146997_J : J
+ L61
+ LINENUMBER 444 L61
+ ALOAD 0
+ ILOAD 3
+ PUTFIELD net/minecraft/client/gui/inventory/GuiContainer.field_146992_L : I
+ L62
+ LINENUMBER 445 L62
+ RETURN
+ L63
+ LOCALVARIABLE flag2 Z L45 L41 12
+ LOCALVARIABLE b0 B L46 L41 13
+ LOCALVARIABLE i1 I L13 L12 8
+ LOCALVARIABLE j1 I L14 L12 9
+ LOCALVARIABLE flag1 Z L18 L12 10
+ LOCALVARIABLE k1 I L19 L12 11
+ LOCALVARIABLE this Lnet/minecraft/client/gui/inventory/GuiContainer; L0 L63 0
+ LOCALVARIABLE p_73864_1_ I L0 L63 1
+ LOCALVARIABLE p_73864_2_ I L0 L63 2
+ LOCALVARIABLE p_73864_3_ I L0 L63 3
+ LOCALVARIABLE flag Z L4 L63 4
+ LOCALVARIABLE slot Lnet/minecraft/inventory/Slot; L5 L63 5
+ LOCALVARIABLE l J L6 L63 6
+ MAXSTACK = 5
+ MAXLOCALS = 14
+
+ // access flags 0x4
+ protected mouseClickMove(IIIJ)V
+ L0
+ LINENUMBER 453 L0
+ ALOAD 0
+ ILOAD 1
+ ILOAD 2
+ INVOKESPECIAL net/minecraft/client/gui/inventory/GuiContainer.getSlotAtPosition (II)Lnet/minecraft/inventory/Slot;
+ ASTORE 6
+ L1
+ LINENUMBER 454 L1
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.mc : Lnet/minecraft/client/Minecraft;
+ GETFIELD net/minecraft/client/Minecraft.thePlayer : Lnet/minecraft/client/entity/EntityClientPlayerMP;
+ GETFIELD net/minecraft/client/entity/EntityClientPlayerMP.inventory : Lnet/minecraft/entity/player/InventoryPlayer;
+ INVOKEVIRTUAL net/minecraft/entity/player/InventoryPlayer.getItemStack ()Lnet/minecraft/item/ItemStack;
+ ASTORE 7
+ L2
+ LINENUMBER 456 L2
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.clickedSlot : Lnet/minecraft/inventory/Slot;
+ IFNULL L3
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.mc : Lnet/minecraft/client/Minecraft;
+ GETFIELD net/minecraft/client/Minecraft.gameSettings : Lnet/minecraft/client/settings/GameSettings;
+ GETFIELD net/minecraft/client/settings/GameSettings.touchscreen : Z
+ IFEQ L3
+ L4
+ LINENUMBER 458 L4
+ ILOAD 3
+ IFEQ L5
+ ILOAD 3
+ ICONST_1
+ IF_ICMPNE L6
+ L5
+ LINENUMBER 460 L5
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer I I I J net/minecraft/inventory/Slot net/minecraft/item/ItemStack] []
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.draggedStack : Lnet/minecraft/item/ItemStack;
+ IFNONNULL L7
+ L8
+ LINENUMBER 462 L8
+ ALOAD 6
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.clickedSlot : Lnet/minecraft/inventory/Slot;
+ IF_ACMPEQ L6
+ L9
+ LINENUMBER 464 L9
+ ALOAD 0
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.clickedSlot : Lnet/minecraft/inventory/Slot;
+ INVOKEVIRTUAL net/minecraft/inventory/Slot.getStack ()Lnet/minecraft/item/ItemStack;
+ INVOKEVIRTUAL net/minecraft/item/ItemStack.copy ()Lnet/minecraft/item/ItemStack;
+ PUTFIELD net/minecraft/client/gui/inventory/GuiContainer.draggedStack : Lnet/minecraft/item/ItemStack;
+ GOTO L6
+ L7
+ LINENUMBER 467 L7
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer I I I J net/minecraft/inventory/Slot net/minecraft/item/ItemStack] []
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.draggedStack : Lnet/minecraft/item/ItemStack;
+ GETFIELD net/minecraft/item/ItemStack.stackSize : I
+ ICONST_1
+ IF_ICMPLE L6
+ ALOAD 6
+ IFNULL L6
+ ALOAD 6
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.draggedStack : Lnet/minecraft/item/ItemStack;
+ ICONST_0
+ INVOKESTATIC net/minecraft/inventory/Container.func_94527_a (Lnet/minecraft/inventory/Slot;Lnet/minecraft/item/ItemStack;Z)Z
+ IFEQ L6
+ L10
+ LINENUMBER 469 L10
+ INVOKESTATIC net/minecraft/client/Minecraft.getSystemTime ()J
+ LSTORE 8
+ L11
+ LINENUMBER 471 L11
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.field_146985_D : Lnet/minecraft/inventory/Slot;
+ ALOAD 6
+ IF_ACMPNE L12
+ L13
+ LINENUMBER 473 L13
+ LLOAD 8
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.field_146986_E : J
+ LSUB
+ LDC 500
+ LCMP
+ IFLE L14
+ L15
+ LINENUMBER 475 L15
+ ALOAD 0
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.clickedSlot : Lnet/minecraft/inventory/Slot;
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.clickedSlot : Lnet/minecraft/inventory/Slot;
+ GETFIELD net/minecraft/inventory/Slot.slotNumber : I
+ ICONST_0
+ ICONST_0
+ INVOKEVIRTUAL net/minecraft/client/gui/inventory/GuiContainer.handleMouseClick (Lnet/minecraft/inventory/Slot;III)V
+ L16
+ LINENUMBER 476 L16
+ ALOAD 0
+ ALOAD 6
+ ALOAD 6
+ GETFIELD net/minecraft/inventory/Slot.slotNumber : I
+ ICONST_1
+ ICONST_0
+ INVOKEVIRTUAL net/minecraft/client/gui/inventory/GuiContainer.handleMouseClick (Lnet/minecraft/inventory/Slot;III)V
+ L17
+ LINENUMBER 477 L17
+ ALOAD 0
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.clickedSlot : Lnet/minecraft/inventory/Slot;
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.clickedSlot : Lnet/minecraft/inventory/Slot;
+ GETFIELD net/minecraft/inventory/Slot.slotNumber : I
+ ICONST_0
+ ICONST_0
+ INVOKEVIRTUAL net/minecraft/client/gui/inventory/GuiContainer.handleMouseClick (Lnet/minecraft/inventory/Slot;III)V
+ L18
+ LINENUMBER 478 L18
+ ALOAD 0
+ LLOAD 8
+ LDC 750
+ LADD
+ PUTFIELD net/minecraft/client/gui/inventory/GuiContainer.field_146986_E : J
+ L19
+ LINENUMBER 479 L19
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.draggedStack : Lnet/minecraft/item/ItemStack;
+ DUP
+ GETFIELD net/minecraft/item/ItemStack.stackSize : I
+ ICONST_1
+ ISUB
+ PUTFIELD net/minecraft/item/ItemStack.stackSize : I
+ GOTO L14
+ L12
+ LINENUMBER 484 L12
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer I I I J net/minecraft/inventory/Slot net/minecraft/item/ItemStack J] []
+ ALOAD 0
+ ALOAD 6
+ PUTFIELD net/minecraft/client/gui/inventory/GuiContainer.field_146985_D : Lnet/minecraft/inventory/Slot;
+ L20
+ LINENUMBER 485 L20
+ ALOAD 0
+ LLOAD 8
+ PUTFIELD net/minecraft/client/gui/inventory/GuiContainer.field_146986_E : J
+ L14
+ LINENUMBER 487 L14
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer I I I J net/minecraft/inventory/Slot net/minecraft/item/ItemStack] []
+ GOTO L6
+ L3
+ LINENUMBER 490 L3
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer I I I J net/minecraft/inventory/Slot net/minecraft/item/ItemStack] []
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.field_147007_t : Z
+ IFEQ L6
+ ALOAD 6
+ IFNULL L6
+ ALOAD 7
+ IFNULL L6
+ ALOAD 7
+ GETFIELD net/minecraft/item/ItemStack.stackSize : I
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.field_147008_s : Ljava/util/Set;
+ INVOKEINTERFACE java/util/Set.size ()I
+ IF_ICMPLE L6
+ ALOAD 6
+ ALOAD 7
+ ICONST_1
+ INVOKESTATIC net/minecraft/inventory/Container.func_94527_a (Lnet/minecraft/inventory/Slot;Lnet/minecraft/item/ItemStack;Z)Z
+ IFEQ L6
+ ALOAD 6
+ ALOAD 7
+ INVOKEVIRTUAL net/minecraft/inventory/Slot.isItemValid (Lnet/minecraft/item/ItemStack;)Z
+ IFEQ L6
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.inventorySlots : Lnet/minecraft/inventory/Container;
+ ALOAD 6
+ INVOKEVIRTUAL net/minecraft/inventory/Container.canDragIntoSlot (Lnet/minecraft/inventory/Slot;)Z
+ IFEQ L6
+ L21
+ LINENUMBER 492 L21
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.field_147008_s : Ljava/util/Set;
+ ALOAD 6
+ INVOKEINTERFACE java/util/Set.add (Ljava/lang/Object;)Z
+ POP
+ L22
+ LINENUMBER 493 L22
+ ALOAD 0
+ INVOKESPECIAL net/minecraft/client/gui/inventory/GuiContainer.func_146980_g ()V
+ L6
+ LINENUMBER 495 L6
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer I I I J net/minecraft/inventory/Slot net/minecraft/item/ItemStack] []
+ RETURN
+ L23
+ LOCALVARIABLE i1 J L11 L14 8
+ LOCALVARIABLE this Lnet/minecraft/client/gui/inventory/GuiContainer; L0 L23 0
+ LOCALVARIABLE p_146273_1_ I L0 L23 1
+ LOCALVARIABLE p_146273_2_ I L0 L23 2
+ LOCALVARIABLE p_146273_3_ I L0 L23 3
+ LOCALVARIABLE p_146273_4_ J L0 L23 4
+ LOCALVARIABLE slot Lnet/minecraft/inventory/Slot; L1 L23 6
+ LOCALVARIABLE itemstack Lnet/minecraft/item/ItemStack; L2 L23 7
+ MAXSTACK = 5
+ MAXLOCALS = 10
+
+ // access flags 0x4
+ protected mouseMovedOrUp(III)V
+ L0
+ LINENUMBER 503 L0
+ ALOAD 0
+ ILOAD 1
+ ILOAD 2
+ ILOAD 3
+ INVOKESPECIAL net/minecraft/client/gui/GuiScreen.mouseMovedOrUp (III)V
+ L1
+ LINENUMBER 504 L1
+ ALOAD 0
+ ILOAD 1
+ ILOAD 2
+ INVOKESPECIAL net/minecraft/client/gui/inventory/GuiContainer.getSlotAtPosition (II)Lnet/minecraft/inventory/Slot;
+ ASTORE 4
+ L2
+ LINENUMBER 505 L2
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.guiLeft : I
+ ISTORE 5
+ L3
+ LINENUMBER 506 L3
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.guiTop : I
+ ISTORE 6
+ L4
+ LINENUMBER 507 L4
+ ILOAD 1
+ ILOAD 5
+ IF_ICMPLT L5
+ ILOAD 2
+ ILOAD 6
+ IF_ICMPLT L5
+ ILOAD 1
+ ILOAD 5
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.xSize : I
+ IADD
+ IF_ICMPGE L5
+ ILOAD 2
+ ILOAD 6
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.ySize : I
+ IADD
+ IF_ICMPLT L6
+ L5
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer I I I net/minecraft/inventory/Slot I I] []
+ ICONST_1
+ GOTO L7
+ L6
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer I I I net/minecraft/inventory/Slot I I] []
+ ICONST_0
+ L7
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer I I I net/minecraft/inventory/Slot I I] [I]
+ ISTORE 7
+ L8
+ LINENUMBER 508 L8
+ ICONST_M1
+ ISTORE 8
+ L9
+ LINENUMBER 510 L9
+ ALOAD 4
+ IFNULL L10
+ L11
+ LINENUMBER 512 L11
+ ALOAD 4
+ GETFIELD net/minecraft/inventory/Slot.slotNumber : I
+ ISTORE 8
+ L10
+ LINENUMBER 515 L10
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer I I I net/minecraft/inventory/Slot I I I I] []
+ ILOAD 7
+ IFEQ L12
+ L13
+ LINENUMBER 517 L13
+ SIPUSH -999
+ ISTORE 8
+ L12
+ LINENUMBER 523 L12
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer I I I net/minecraft/inventory/Slot I I I I] []
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.field_146993_M : Z
+ IFEQ L14
+ ALOAD 4
+ IFNULL L14
+ ILOAD 3
+ IFNE L14
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.inventorySlots : Lnet/minecraft/inventory/Container;
+ ACONST_NULL
+ CHECKCAST net/minecraft/item/ItemStack
+ ALOAD 4
+ INVOKEVIRTUAL net/minecraft/inventory/Container.func_94530_a (Lnet/minecraft/item/ItemStack;Lnet/minecraft/inventory/Slot;)Z
+ IFEQ L14
+ L15
+ LINENUMBER 525 L15
+ INVOKESTATIC net/minecraft/client/gui/inventory/GuiContainer.isShiftKeyDown ()Z
+ IFEQ L16
+ L17
+ LINENUMBER 527 L17
+ ALOAD 4
+ IFNULL L18
+ ALOAD 4
+ GETFIELD net/minecraft/inventory/Slot.inventory : Lnet/minecraft/inventory/IInventory;
+ IFNULL L18
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.field_146994_N : Lnet/minecraft/item/ItemStack;
+ IFNULL L18
+ L19
+ LINENUMBER 529 L19
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.inventorySlots : Lnet/minecraft/inventory/Container;
+ GETFIELD net/minecraft/inventory/Container.inventorySlots : Ljava/util/List;
+ INVOKEINTERFACE java/util/List.iterator ()Ljava/util/Iterator;
+ ASTORE 9
+ L20
+ LINENUMBER 531 L20
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer I I I net/minecraft/inventory/Slot I I I I java/util/Iterator] []
+ ALOAD 9
+ INVOKEINTERFACE java/util/Iterator.hasNext ()Z
+ IFEQ L18
+ L21
+ LINENUMBER 533 L21
+ ALOAD 9
+ INVOKEINTERFACE java/util/Iterator.next ()Ljava/lang/Object;
+ CHECKCAST net/minecraft/inventory/Slot
+ ASTORE 10
+ L22
+ LINENUMBER 535 L22
+ ALOAD 10
+ IFNULL L20
+ ALOAD 10
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.mc : Lnet/minecraft/client/Minecraft;
+ GETFIELD net/minecraft/client/Minecraft.thePlayer : Lnet/minecraft/client/entity/EntityClientPlayerMP;
+ INVOKEVIRTUAL net/minecraft/inventory/Slot.canTakeStack (Lnet/minecraft/entity/player/EntityPlayer;)Z
+ IFEQ L20
+ ALOAD 10
+ INVOKEVIRTUAL net/minecraft/inventory/Slot.getHasStack ()Z
+ IFEQ L20
+ ALOAD 10
+ GETFIELD net/minecraft/inventory/Slot.inventory : Lnet/minecraft/inventory/IInventory;
+ ALOAD 4
+ GETFIELD net/minecraft/inventory/Slot.inventory : Lnet/minecraft/inventory/IInventory;
+ IF_ACMPNE L20
+ ALOAD 10
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.field_146994_N : Lnet/minecraft/item/ItemStack;
+ ICONST_1
+ INVOKESTATIC net/minecraft/inventory/Container.func_94527_a (Lnet/minecraft/inventory/Slot;Lnet/minecraft/item/ItemStack;Z)Z
+ IFEQ L20
+ L23
+ LINENUMBER 537 L23
+ ALOAD 0
+ ALOAD 10
+ ALOAD 10
+ GETFIELD net/minecraft/inventory/Slot.slotNumber : I
+ ILOAD 3
+ ICONST_1
+ INVOKEVIRTUAL net/minecraft/client/gui/inventory/GuiContainer.handleMouseClick (Lnet/minecraft/inventory/Slot;III)V
+ GOTO L20
+ L16
+ LINENUMBER 544 L16
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer I I I net/minecraft/inventory/Slot I I I I] []
+ ALOAD 0
+ ALOAD 4
+ ILOAD 8
+ ILOAD 3
+ BIPUSH 6
+ INVOKEVIRTUAL net/minecraft/client/gui/inventory/GuiContainer.handleMouseClick (Lnet/minecraft/inventory/Slot;III)V
+ L18
+ LINENUMBER 547 L18
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer I I I net/minecraft/inventory/Slot I I I I] []
+ ALOAD 0
+ ICONST_0
+ PUTFIELD net/minecraft/client/gui/inventory/GuiContainer.field_146993_M : Z
+ L24
+ LINENUMBER 548 L24
+ ALOAD 0
+ LCONST_0
+ PUTFIELD net/minecraft/client/gui/inventory/GuiContainer.field_146997_J : J
+ GOTO L25
+ L14
+ LINENUMBER 552 L14
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer I I I net/minecraft/inventory/Slot I I I I] []
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.field_147007_t : Z
+ IFEQ L26
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.field_146988_G : I
+ ILOAD 3
+ IF_ICMPEQ L26
+ L27
+ LINENUMBER 554 L27
+ ALOAD 0
+ ICONST_0
+ PUTFIELD net/minecraft/client/gui/inventory/GuiContainer.field_147007_t : Z
+ L28
+ LINENUMBER 555 L28
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.field_147008_s : Ljava/util/Set;
+ INVOKEINTERFACE java/util/Set.clear ()V
+ L29
+ LINENUMBER 556 L29
+ ALOAD 0
+ ICONST_1
+ PUTFIELD net/minecraft/client/gui/inventory/GuiContainer.field_146995_H : Z
+ L30
+ LINENUMBER 557 L30
+ RETURN
+ L26
+ LINENUMBER 560 L26
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer I I I net/minecraft/inventory/Slot I I I I] []
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.field_146995_H : Z
+ IFEQ L31
+ L32
+ LINENUMBER 562 L32
+ ALOAD 0
+ ICONST_0
+ PUTFIELD net/minecraft/client/gui/inventory/GuiContainer.field_146995_H : Z
+ L33
+ LINENUMBER 563 L33
+ RETURN
+ L31
+ LINENUMBER 568 L31
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer I I I net/minecraft/inventory/Slot I I I I] []
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.clickedSlot : Lnet/minecraft/inventory/Slot;
+ IFNULL L34
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.mc : Lnet/minecraft/client/Minecraft;
+ GETFIELD net/minecraft/client/Minecraft.gameSettings : Lnet/minecraft/client/settings/GameSettings;
+ GETFIELD net/minecraft/client/settings/GameSettings.touchscreen : Z
+ IFEQ L34
+ L35
+ LINENUMBER 570 L35
+ ILOAD 3
+ IFEQ L36
+ ILOAD 3
+ ICONST_1
+ IF_ICMPNE L25
+ L36
+ LINENUMBER 572 L36
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer I I I net/minecraft/inventory/Slot I I I I] []
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.draggedStack : Lnet/minecraft/item/ItemStack;
+ IFNONNULL L37
+ ALOAD 4
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.clickedSlot : Lnet/minecraft/inventory/Slot;
+ IF_ACMPEQ L37
+ L38
+ LINENUMBER 574 L38
+ ALOAD 0
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.clickedSlot : Lnet/minecraft/inventory/Slot;
+ INVOKEVIRTUAL net/minecraft/inventory/Slot.getStack ()Lnet/minecraft/item/ItemStack;
+ PUTFIELD net/minecraft/client/gui/inventory/GuiContainer.draggedStack : Lnet/minecraft/item/ItemStack;
+ L37
+ LINENUMBER 577 L37
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer I I I net/minecraft/inventory/Slot I I I I] []
+ ALOAD 4
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.draggedStack : Lnet/minecraft/item/ItemStack;
+ ICONST_0
+ INVOKESTATIC net/minecraft/inventory/Container.func_94527_a (Lnet/minecraft/inventory/Slot;Lnet/minecraft/item/ItemStack;Z)Z
+ ISTORE 11
+ L39
+ LINENUMBER 579 L39
+ ILOAD 8
+ ICONST_M1
+ IF_ICMPEQ L40
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.draggedStack : Lnet/minecraft/item/ItemStack;
+ IFNULL L40
+ ILOAD 11
+ IFEQ L40
+ L41
+ LINENUMBER 581 L41
+ ALOAD 0
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.clickedSlot : Lnet/minecraft/inventory/Slot;
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.clickedSlot : Lnet/minecraft/inventory/Slot;
+ GETFIELD net/minecraft/inventory/Slot.slotNumber : I
+ ILOAD 3
+ ICONST_0
+ INVOKEVIRTUAL net/minecraft/client/gui/inventory/GuiContainer.handleMouseClick (Lnet/minecraft/inventory/Slot;III)V
+ L42
+ LINENUMBER 582 L42
+ ALOAD 0
+ ALOAD 4
+ ILOAD 8
+ ICONST_0
+ ICONST_0
+ INVOKEVIRTUAL net/minecraft/client/gui/inventory/GuiContainer.handleMouseClick (Lnet/minecraft/inventory/Slot;III)V
+ L43
+ LINENUMBER 584 L43
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.mc : Lnet/minecraft/client/Minecraft;
+ GETFIELD net/minecraft/client/Minecraft.thePlayer : Lnet/minecraft/client/entity/EntityClientPlayerMP;
+ GETFIELD net/minecraft/client/entity/EntityClientPlayerMP.inventory : Lnet/minecraft/entity/player/InventoryPlayer;
+ INVOKEVIRTUAL net/minecraft/entity/player/InventoryPlayer.getItemStack ()Lnet/minecraft/item/ItemStack;
+ IFNULL L44
+ L45
+ LINENUMBER 586 L45
+ ALOAD 0
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.clickedSlot : Lnet/minecraft/inventory/Slot;
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.clickedSlot : Lnet/minecraft/inventory/Slot;
+ GETFIELD net/minecraft/inventory/Slot.slotNumber : I
+ ILOAD 3
+ ICONST_0
+ INVOKEVIRTUAL net/minecraft/client/gui/inventory/GuiContainer.handleMouseClick (Lnet/minecraft/inventory/Slot;III)V
+ L46
+ LINENUMBER 587 L46
+ ALOAD 0
+ ILOAD 1
+ ILOAD 5
+ ISUB
+ PUTFIELD net/minecraft/client/gui/inventory/GuiContainer.field_147011_y : I
+ L47
+ LINENUMBER 588 L47
+ ALOAD 0
+ ILOAD 2
+ ILOAD 6
+ ISUB
+ PUTFIELD net/minecraft/client/gui/inventory/GuiContainer.field_147010_z : I
+ L48
+ LINENUMBER 589 L48
+ ALOAD 0
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.clickedSlot : Lnet/minecraft/inventory/Slot;
+ PUTFIELD net/minecraft/client/gui/inventory/GuiContainer.returningStackDestSlot : Lnet/minecraft/inventory/Slot;
+ L49
+ LINENUMBER 590 L49
+ ALOAD 0
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.draggedStack : Lnet/minecraft/item/ItemStack;
+ PUTFIELD net/minecraft/client/gui/inventory/GuiContainer.returningStack : Lnet/minecraft/item/ItemStack;
+ L50
+ LINENUMBER 591 L50
+ ALOAD 0
+ INVOKESTATIC net/minecraft/client/Minecraft.getSystemTime ()J
+ PUTFIELD net/minecraft/client/gui/inventory/GuiContainer.returningStackTime : J
+ GOTO L51
+ L44
+ LINENUMBER 595 L44
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer I I I net/minecraft/inventory/Slot I I I I T T I] []
+ ALOAD 0
+ ACONST_NULL
+ PUTFIELD net/minecraft/client/gui/inventory/GuiContainer.returningStack : Lnet/minecraft/item/ItemStack;
+ GOTO L51
+ L40
+ LINENUMBER 598 L40
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer I I I net/minecraft/inventory/Slot I I I I T T I] []
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.draggedStack : Lnet/minecraft/item/ItemStack;
+ IFNULL L51
+ L52
+ LINENUMBER 600 L52
+ ALOAD 0
+ ILOAD 1
+ ILOAD 5
+ ISUB
+ PUTFIELD net/minecraft/client/gui/inventory/GuiContainer.field_147011_y : I
+ L53
+ LINENUMBER 601 L53
+ ALOAD 0
+ ILOAD 2
+ ILOAD 6
+ ISUB
+ PUTFIELD net/minecraft/client/gui/inventory/GuiContainer.field_147010_z : I
+ L54
+ LINENUMBER 602 L54
+ ALOAD 0
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.clickedSlot : Lnet/minecraft/inventory/Slot;
+ PUTFIELD net/minecraft/client/gui/inventory/GuiContainer.returningStackDestSlot : Lnet/minecraft/inventory/Slot;
+ L55
+ LINENUMBER 603 L55
+ ALOAD 0
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.draggedStack : Lnet/minecraft/item/ItemStack;
+ PUTFIELD net/minecraft/client/gui/inventory/GuiContainer.returningStack : Lnet/minecraft/item/ItemStack;
+ L56
+ LINENUMBER 604 L56
+ ALOAD 0
+ INVOKESTATIC net/minecraft/client/Minecraft.getSystemTime ()J
+ PUTFIELD net/minecraft/client/gui/inventory/GuiContainer.returningStackTime : J
+ L51
+ LINENUMBER 607 L51
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer I I I net/minecraft/inventory/Slot I I I I T T I] []
+ ALOAD 0
+ ACONST_NULL
+ PUTFIELD net/minecraft/client/gui/inventory/GuiContainer.draggedStack : Lnet/minecraft/item/ItemStack;
+ L57
+ LINENUMBER 608 L57
+ ALOAD 0
+ ACONST_NULL
+ PUTFIELD net/minecraft/client/gui/inventory/GuiContainer.clickedSlot : Lnet/minecraft/inventory/Slot;
+ GOTO L25
+ L34
+ LINENUMBER 611 L34
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer I I I net/minecraft/inventory/Slot I I I I] []
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.field_147007_t : Z
+ IFEQ L58
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.field_147008_s : Ljava/util/Set;
+ INVOKEINTERFACE java/util/Set.isEmpty ()Z
+ IFNE L58
+ L59
+ LINENUMBER 613 L59
+ ALOAD 0
+ ACONST_NULL
+ CHECKCAST net/minecraft/inventory/Slot
+ SIPUSH -999
+ ICONST_0
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.field_146987_F : I
+ INVOKESTATIC net/minecraft/inventory/Container.func_94534_d (II)I
+ ICONST_5
+ INVOKEVIRTUAL net/minecraft/client/gui/inventory/GuiContainer.handleMouseClick (Lnet/minecraft/inventory/Slot;III)V
+ L60
+ LINENUMBER 614 L60
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.field_147008_s : Ljava/util/Set;
+ INVOKEINTERFACE java/util/Set.iterator ()Ljava/util/Iterator;
+ ASTORE 9
+ L61
+ LINENUMBER 616 L61
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer I I I net/minecraft/inventory/Slot I I I I java/util/Iterator] []
+ ALOAD 9
+ INVOKEINTERFACE java/util/Iterator.hasNext ()Z
+ IFEQ L62
+ L63
+ LINENUMBER 618 L63
+ ALOAD 9
+ INVOKEINTERFACE java/util/Iterator.next ()Ljava/lang/Object;
+ CHECKCAST net/minecraft/inventory/Slot
+ ASTORE 10
+ L64
+ LINENUMBER 619 L64
+ ALOAD 0
+ ALOAD 10
+ ALOAD 10
+ GETFIELD net/minecraft/inventory/Slot.slotNumber : I
+ ICONST_1
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.field_146987_F : I
+ INVOKESTATIC net/minecraft/inventory/Container.func_94534_d (II)I
+ ICONST_5
+ INVOKEVIRTUAL net/minecraft/client/gui/inventory/GuiContainer.handleMouseClick (Lnet/minecraft/inventory/Slot;III)V
+ GOTO L61
+ L62
+ LINENUMBER 622 L62
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer I I I net/minecraft/inventory/Slot I I I I java/util/Iterator] []
+ ALOAD 0
+ ACONST_NULL
+ CHECKCAST net/minecraft/inventory/Slot
+ SIPUSH -999
+ ICONST_2
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.field_146987_F : I
+ INVOKESTATIC net/minecraft/inventory/Container.func_94534_d (II)I
+ ICONST_5
+ INVOKEVIRTUAL net/minecraft/client/gui/inventory/GuiContainer.handleMouseClick (Lnet/minecraft/inventory/Slot;III)V
+ GOTO L25
+ L58
+ LINENUMBER 624 L58
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer I I I net/minecraft/inventory/Slot I I I I] []
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.mc : Lnet/minecraft/client/Minecraft;
+ GETFIELD net/minecraft/client/Minecraft.thePlayer : Lnet/minecraft/client/entity/EntityClientPlayerMP;
+ GETFIELD net/minecraft/client/entity/EntityClientPlayerMP.inventory : Lnet/minecraft/entity/player/InventoryPlayer;
+ INVOKEVIRTUAL net/minecraft/entity/player/InventoryPlayer.getItemStack ()Lnet/minecraft/item/ItemStack;
+ IFNULL L25
+ L65
+ LINENUMBER 626 L65
+ ILOAD 3
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.mc : Lnet/minecraft/client/Minecraft;
+ GETFIELD net/minecraft/client/Minecraft.gameSettings : Lnet/minecraft/client/settings/GameSettings;
+ GETFIELD net/minecraft/client/settings/GameSettings.keyBindPickBlock : Lnet/minecraft/client/settings/KeyBinding;
+ INVOKEVIRTUAL net/minecraft/client/settings/KeyBinding.getKeyCode ()I
+ BIPUSH 100
+ IADD
+ IF_ICMPNE L66
+ L67
+ LINENUMBER 628 L67
+ ALOAD 0
+ ALOAD 4
+ ILOAD 8
+ ILOAD 3
+ ICONST_3
+ INVOKEVIRTUAL net/minecraft/client/gui/inventory/GuiContainer.handleMouseClick (Lnet/minecraft/inventory/Slot;III)V
+ GOTO L25
+ L66
+ LINENUMBER 632 L66
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer I I I net/minecraft/inventory/Slot I I I I] []
+ ILOAD 8
+ SIPUSH -999
+ IF_ICMPEQ L68
+ BIPUSH 42
+ INVOKESTATIC org/lwjgl/input/Keyboard.isKeyDown (I)Z
+ IFNE L69
+ BIPUSH 54
+ INVOKESTATIC org/lwjgl/input/Keyboard.isKeyDown (I)Z
+ IFEQ L68
+ L69
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer I I I net/minecraft/inventory/Slot I I I I] []
+ ICONST_1
+ GOTO L70
+ L68
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer I I I net/minecraft/inventory/Slot I I I I] []
+ ICONST_0
+ L70
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer I I I net/minecraft/inventory/Slot I I I I] [I]
+ ISTORE 11
+ L71
+ LINENUMBER 634 L71
+ ILOAD 11
+ IFEQ L72
+ L73
+ LINENUMBER 636 L73
+ ALOAD 0
+ ALOAD 4
+ IFNULL L74
+ ALOAD 4
+ INVOKEVIRTUAL net/minecraft/inventory/Slot.getHasStack ()Z
+ IFEQ L74
+ ALOAD 4
+ INVOKEVIRTUAL net/minecraft/inventory/Slot.getStack ()Lnet/minecraft/item/ItemStack;
+ GOTO L75
+ L74
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer I I I net/minecraft/inventory/Slot I I I I T T I] [net/minecraft/client/gui/inventory/GuiContainer]
+ ACONST_NULL
+ L75
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer I I I net/minecraft/inventory/Slot I I I I T T I] [net/minecraft/client/gui/inventory/GuiContainer net/minecraft/item/ItemStack]
+ PUTFIELD net/minecraft/client/gui/inventory/GuiContainer.field_146994_N : Lnet/minecraft/item/ItemStack;
+ L72
+ LINENUMBER 639 L72
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer I I I net/minecraft/inventory/Slot I I I I T T I] []
+ ALOAD 0
+ ALOAD 4
+ ILOAD 8
+ ILOAD 3
+ ILOAD 11
+ IFEQ L76
+ ICONST_1
+ GOTO L77
+ L76
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer I I I net/minecraft/inventory/Slot I I I I T T I] [net/minecraft/client/gui/inventory/GuiContainer net/minecraft/inventory/Slot I I]
+ ICONST_0
+ L77
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer I I I net/minecraft/inventory/Slot I I I I T T I] [net/minecraft/client/gui/inventory/GuiContainer net/minecraft/inventory/Slot I I I]
+ INVOKEVIRTUAL net/minecraft/client/gui/inventory/GuiContainer.handleMouseClick (Lnet/minecraft/inventory/Slot;III)V
+ L25
+ LINENUMBER 644 L25
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer I I I net/minecraft/inventory/Slot I I I I] []
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.mc : Lnet/minecraft/client/Minecraft;
+ GETFIELD net/minecraft/client/Minecraft.thePlayer : Lnet/minecraft/client/entity/EntityClientPlayerMP;
+ GETFIELD net/minecraft/client/entity/EntityClientPlayerMP.inventory : Lnet/minecraft/entity/player/InventoryPlayer;
+ INVOKEVIRTUAL net/minecraft/entity/player/InventoryPlayer.getItemStack ()Lnet/minecraft/item/ItemStack;
+ IFNONNULL L78
+ L79
+ LINENUMBER 646 L79
+ ALOAD 0
+ LCONST_0
+ PUTFIELD net/minecraft/client/gui/inventory/GuiContainer.field_146997_J : J
+ L78
+ LINENUMBER 649 L78
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer I I I net/minecraft/inventory/Slot I I I I] []
+ ALOAD 0
+ ICONST_0
+ PUTFIELD net/minecraft/client/gui/inventory/GuiContainer.field_147007_t : Z
+ L80
+ LINENUMBER 650 L80
+ RETURN
+ L81
+ LOCALVARIABLE slot1 Lnet/minecraft/inventory/Slot; L22 L16 10
+ LOCALVARIABLE iterator Ljava/util/Iterator; L20 L16 9
+ LOCALVARIABLE flag1 Z L39 L34 11
+ LOCALVARIABLE slot1 Lnet/minecraft/inventory/Slot; L64 L62 10
+ LOCALVARIABLE iterator Ljava/util/Iterator; L61 L58 9
+ LOCALVARIABLE flag1 Z L71 L25 11
+ LOCALVARIABLE this Lnet/minecraft/client/gui/inventory/GuiContainer; L0 L81 0
+ LOCALVARIABLE p_146286_1_ I L0 L81 1
+ LOCALVARIABLE p_146286_2_ I L0 L81 2
+ LOCALVARIABLE p_146286_3_ I L0 L81 3
+ LOCALVARIABLE slot Lnet/minecraft/inventory/Slot; L2 L81 4
+ LOCALVARIABLE l I L3 L81 5
+ LOCALVARIABLE i1 I L4 L81 6
+ LOCALVARIABLE flag Z L8 L81 7
+ LOCALVARIABLE j1 I L9 L81 8
+ MAXSTACK = 5
+ MAXLOCALS = 12
+
+ // access flags 0x2
+ private isMouseOverSlot(Lnet/minecraft/inventory/Slot;II)Z
+ L0
+ LINENUMBER 657 L0
+ ALOAD 0
+ ALOAD 1
+ GETFIELD net/minecraft/inventory/Slot.xDisplayPosition : I
+ ALOAD 1
+ GETFIELD net/minecraft/inventory/Slot.yDisplayPosition : I
+ BIPUSH 16
+ BIPUSH 16
+ ILOAD 2
+ ILOAD 3
+ INVOKEVIRTUAL net/minecraft/client/gui/inventory/GuiContainer.func_146978_c (IIIIII)Z
+ IRETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/client/gui/inventory/GuiContainer; L0 L1 0
+ LOCALVARIABLE p_146981_1_ Lnet/minecraft/inventory/Slot; L0 L1 1
+ LOCALVARIABLE p_146981_2_ I L0 L1 2
+ LOCALVARIABLE p_146981_3_ I L0 L1 3
+ MAXSTACK = 7
+ MAXLOCALS = 4
+
+ // access flags 0x4
+ protected func_146978_c(IIIIII)Z
+ L0
+ LINENUMBER 662 L0
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.guiLeft : I
+ ISTORE 7
+ L1
+ LINENUMBER 663 L1
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.guiTop : I
+ ISTORE 8
+ L2
+ LINENUMBER 664 L2
+ ILOAD 5
+ ILOAD 7
+ ISUB
+ ISTORE 5
+ L3
+ LINENUMBER 665 L3
+ ILOAD 6
+ ILOAD 8
+ ISUB
+ ISTORE 6
+ L4
+ LINENUMBER 666 L4
+ ILOAD 5
+ ILOAD 1
+ ICONST_1
+ ISUB
+ IF_ICMPLT L5
+ ILOAD 5
+ ILOAD 1
+ ILOAD 3
+ IADD
+ ICONST_1
+ IADD
+ IF_ICMPGE L5
+ ILOAD 6
+ ILOAD 2
+ ICONST_1
+ ISUB
+ IF_ICMPLT L5
+ ILOAD 6
+ ILOAD 2
+ ILOAD 4
+ IADD
+ ICONST_1
+ IADD
+ IF_ICMPGE L5
+ ICONST_1
+ GOTO L6
+ L5
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer I I I I I I I I] []
+ ICONST_0
+ L6
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer I I I I I I I I] [I]
+ IRETURN
+ L7
+ LOCALVARIABLE this Lnet/minecraft/client/gui/inventory/GuiContainer; L0 L7 0
+ LOCALVARIABLE p_146978_1_ I L0 L7 1
+ LOCALVARIABLE p_146978_2_ I L0 L7 2
+ LOCALVARIABLE p_146978_3_ I L0 L7 3
+ LOCALVARIABLE p_146978_4_ I L0 L7 4
+ LOCALVARIABLE p_146978_5_ I L0 L7 5
+ LOCALVARIABLE p_146978_6_ I L0 L7 6
+ LOCALVARIABLE k1 I L1 L7 7
+ LOCALVARIABLE l1 I L2 L7 8
+ MAXSTACK = 3
+ MAXLOCALS = 9
+
+ // access flags 0x4
+ protected handleMouseClick(Lnet/minecraft/inventory/Slot;III)V
+ L0
+ LINENUMBER 671 L0
+ ALOAD 1
+ IFNULL L1
+ L2
+ LINENUMBER 673 L2
+ ALOAD 1
+ GETFIELD net/minecraft/inventory/Slot.slotNumber : I
+ ISTORE 2
+ L1
+ LINENUMBER 676 L1
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer net/minecraft/inventory/Slot I I I] []
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.mc : Lnet/minecraft/client/Minecraft;
+ GETFIELD net/minecraft/client/Minecraft.playerController : Lnet/minecraft/client/multiplayer/PlayerControllerMP;
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.inventorySlots : Lnet/minecraft/inventory/Container;
+ GETFIELD net/minecraft/inventory/Container.windowId : I
+ ILOAD 2
+ ILOAD 3
+ ILOAD 4
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.mc : Lnet/minecraft/client/Minecraft;
+ GETFIELD net/minecraft/client/Minecraft.thePlayer : Lnet/minecraft/client/entity/EntityClientPlayerMP;
+ INVOKEVIRTUAL net/minecraft/client/multiplayer/PlayerControllerMP.windowClick (IIIILnet/minecraft/entity/player/EntityPlayer;)Lnet/minecraft/item/ItemStack;
+ POP
+ L3
+ LINENUMBER 677 L3
+ RETURN
+ L4
+ LOCALVARIABLE this Lnet/minecraft/client/gui/inventory/GuiContainer; L0 L4 0
+ LOCALVARIABLE p_146984_1_ Lnet/minecraft/inventory/Slot; L0 L4 1
+ LOCALVARIABLE p_146984_2_ I L0 L4 2
+ LOCALVARIABLE p_146984_3_ I L0 L4 3
+ LOCALVARIABLE p_146984_4_ I L0 L4 4
+ MAXSTACK = 6
+ MAXLOCALS = 5
+
+ // access flags 0x4
+ protected keyTyped(CI)V
+ L0
+ LINENUMBER 684 L0
+ ILOAD 2
+ ICONST_1
+ IF_ICMPEQ L1
+ ILOAD 2
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.mc : Lnet/minecraft/client/Minecraft;
+ GETFIELD net/minecraft/client/Minecraft.gameSettings : Lnet/minecraft/client/settings/GameSettings;
+ GETFIELD net/minecraft/client/settings/GameSettings.keyBindInventory : Lnet/minecraft/client/settings/KeyBinding;
+ INVOKEVIRTUAL net/minecraft/client/settings/KeyBinding.getKeyCode ()I
+ IF_ICMPNE L2
+ L1
+ LINENUMBER 686 L1
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer I I] []
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.mc : Lnet/minecraft/client/Minecraft;
+ GETFIELD net/minecraft/client/Minecraft.thePlayer : Lnet/minecraft/client/entity/EntityClientPlayerMP;
+ INVOKEVIRTUAL net/minecraft/client/entity/EntityClientPlayerMP.closeScreen ()V
+ L2
+ LINENUMBER 689 L2
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer I I] []
+ ALOAD 0
+ ILOAD 2
+ INVOKEVIRTUAL net/minecraft/client/gui/inventory/GuiContainer.checkHotbarKeys (I)Z
+ POP
+ L3
+ LINENUMBER 691 L3
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.theSlot : Lnet/minecraft/inventory/Slot;
+ IFNULL L4
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.theSlot : Lnet/minecraft/inventory/Slot;
+ INVOKEVIRTUAL net/minecraft/inventory/Slot.getHasStack ()Z
+ IFEQ L4
+ L5
+ LINENUMBER 693 L5
+ ILOAD 2
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.mc : Lnet/minecraft/client/Minecraft;
+ GETFIELD net/minecraft/client/Minecraft.gameSettings : Lnet/minecraft/client/settings/GameSettings;
+ GETFIELD net/minecraft/client/settings/GameSettings.keyBindPickBlock : Lnet/minecraft/client/settings/KeyBinding;
+ INVOKEVIRTUAL net/minecraft/client/settings/KeyBinding.getKeyCode ()I
+ IF_ICMPNE L6
+ L7
+ LINENUMBER 695 L7
+ ALOAD 0
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.theSlot : Lnet/minecraft/inventory/Slot;
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.theSlot : Lnet/minecraft/inventory/Slot;
+ GETFIELD net/minecraft/inventory/Slot.slotNumber : I
+ ICONST_0
+ ICONST_3
+ INVOKEVIRTUAL net/minecraft/client/gui/inventory/GuiContainer.handleMouseClick (Lnet/minecraft/inventory/Slot;III)V
+ GOTO L4
+ L6
+ LINENUMBER 697 L6
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer I I] []
+ ILOAD 2
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.mc : Lnet/minecraft/client/Minecraft;
+ GETFIELD net/minecraft/client/Minecraft.gameSettings : Lnet/minecraft/client/settings/GameSettings;
+ GETFIELD net/minecraft/client/settings/GameSettings.keyBindDrop : Lnet/minecraft/client/settings/KeyBinding;
+ INVOKEVIRTUAL net/minecraft/client/settings/KeyBinding.getKeyCode ()I
+ IF_ICMPNE L4
+ L8
+ LINENUMBER 699 L8
+ ALOAD 0
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.theSlot : Lnet/minecraft/inventory/Slot;
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.theSlot : Lnet/minecraft/inventory/Slot;
+ GETFIELD net/minecraft/inventory/Slot.slotNumber : I
+ INVOKESTATIC net/minecraft/client/gui/inventory/GuiContainer.isCtrlKeyDown ()Z
+ IFEQ L9
+ ICONST_1
+ GOTO L10
+ L9
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer I I] [net/minecraft/client/gui/inventory/GuiContainer net/minecraft/inventory/Slot I]
+ ICONST_0
+ L10
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer I I] [net/minecraft/client/gui/inventory/GuiContainer net/minecraft/inventory/Slot I I]
+ ICONST_4
+ INVOKEVIRTUAL net/minecraft/client/gui/inventory/GuiContainer.handleMouseClick (Lnet/minecraft/inventory/Slot;III)V
+ L4
+ LINENUMBER 702 L4
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer I I] []
+ RETURN
+ L11
+ LOCALVARIABLE this Lnet/minecraft/client/gui/inventory/GuiContainer; L0 L11 0
+ LOCALVARIABLE p_73869_1_ C L0 L11 1
+ LOCALVARIABLE p_73869_2_ I L0 L11 2
+ MAXSTACK = 5
+ MAXLOCALS = 3
+
+ // access flags 0x4
+ protected checkHotbarKeys(I)Z
+ L0
+ LINENUMBER 709 L0
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.mc : Lnet/minecraft/client/Minecraft;
+ GETFIELD net/minecraft/client/Minecraft.thePlayer : Lnet/minecraft/client/entity/EntityClientPlayerMP;
+ GETFIELD net/minecraft/client/entity/EntityClientPlayerMP.inventory : Lnet/minecraft/entity/player/InventoryPlayer;
+ INVOKEVIRTUAL net/minecraft/entity/player/InventoryPlayer.getItemStack ()Lnet/minecraft/item/ItemStack;
+ IFNONNULL L1
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.theSlot : Lnet/minecraft/inventory/Slot;
+ IFNULL L1
+ L2
+ LINENUMBER 711 L2
+ ICONST_0
+ ISTORE 2
+ L3
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer I I] []
+ ILOAD 2
+ BIPUSH 9
+ IF_ICMPGE L1
+ L4
+ LINENUMBER 713 L4
+ ILOAD 1
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.mc : Lnet/minecraft/client/Minecraft;
+ GETFIELD net/minecraft/client/Minecraft.gameSettings : Lnet/minecraft/client/settings/GameSettings;
+ GETFIELD net/minecraft/client/settings/GameSettings.keyBindsHotbar : [Lnet/minecraft/client/settings/KeyBinding;
+ ILOAD 2
+ AALOAD
+ INVOKEVIRTUAL net/minecraft/client/settings/KeyBinding.getKeyCode ()I
+ IF_ICMPNE L5
+ L6
+ LINENUMBER 715 L6
+ ALOAD 0
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.theSlot : Lnet/minecraft/inventory/Slot;
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.theSlot : Lnet/minecraft/inventory/Slot;
+ GETFIELD net/minecraft/inventory/Slot.slotNumber : I
+ ILOAD 2
+ ICONST_2
+ INVOKEVIRTUAL net/minecraft/client/gui/inventory/GuiContainer.handleMouseClick (Lnet/minecraft/inventory/Slot;III)V
+ L7
+ LINENUMBER 716 L7
+ ICONST_1
+ IRETURN
+ L5
+ LINENUMBER 711 L5
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer I I] []
+ IINC 2 1
+ GOTO L3
+ L1
+ LINENUMBER 721 L1
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer I] []
+ ICONST_0
+ IRETURN
+ L8
+ LOCALVARIABLE j I L3 L1 2
+ LOCALVARIABLE this Lnet/minecraft/client/gui/inventory/GuiContainer; L0 L8 0
+ LOCALVARIABLE p_146983_1_ I L0 L8 1
+ MAXSTACK = 5
+ MAXLOCALS = 3
+
+ // access flags 0x1
+ public onGuiClosed()V
+ L0
+ LINENUMBER 729 L0
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.mc : Lnet/minecraft/client/Minecraft;
+ GETFIELD net/minecraft/client/Minecraft.thePlayer : Lnet/minecraft/client/entity/EntityClientPlayerMP;
+ IFNULL L1
+ L2
+ LINENUMBER 731 L2
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.inventorySlots : Lnet/minecraft/inventory/Container;
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.mc : Lnet/minecraft/client/Minecraft;
+ GETFIELD net/minecraft/client/Minecraft.thePlayer : Lnet/minecraft/client/entity/EntityClientPlayerMP;
+ INVOKEVIRTUAL net/minecraft/inventory/Container.onContainerClosed (Lnet/minecraft/entity/player/EntityPlayer;)V
+ L1
+ LINENUMBER 733 L1
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer] []
+ RETURN
+ L3
+ LOCALVARIABLE this Lnet/minecraft/client/gui/inventory/GuiContainer; L0 L3 0
+ MAXSTACK = 2
+ MAXLOCALS = 1
+
+ // access flags 0x1
+ public doesGuiPauseGame()Z
+ L0
+ LINENUMBER 740 L0
+ ICONST_0
+ IRETURN
+ L1
+ LOCALVARIABLE this Lnet/minecraft/client/gui/inventory/GuiContainer; L0 L1 0
+ MAXSTACK = 1
+ MAXLOCALS = 1
+
+ // access flags 0x1
+ public updateScreen()V
+ L0
+ LINENUMBER 748 L0
+ ALOAD 0
+ INVOKESPECIAL net/minecraft/client/gui/GuiScreen.updateScreen ()V
+ L1
+ LINENUMBER 750 L1
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.mc : Lnet/minecraft/client/Minecraft;
+ GETFIELD net/minecraft/client/Minecraft.thePlayer : Lnet/minecraft/client/entity/EntityClientPlayerMP;
+ INVOKEVIRTUAL net/minecraft/client/entity/EntityClientPlayerMP.isEntityAlive ()Z
+ IFEQ L2
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.mc : Lnet/minecraft/client/Minecraft;
+ GETFIELD net/minecraft/client/Minecraft.thePlayer : Lnet/minecraft/client/entity/EntityClientPlayerMP;
+ GETFIELD net/minecraft/client/entity/EntityClientPlayerMP.isDead : Z
+ IFEQ L3
+ L2
+ LINENUMBER 752 L2
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer] []
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.mc : Lnet/minecraft/client/Minecraft;
+ GETFIELD net/minecraft/client/Minecraft.thePlayer : Lnet/minecraft/client/entity/EntityClientPlayerMP;
+ INVOKEVIRTUAL net/minecraft/client/entity/EntityClientPlayerMP.closeScreen ()V
+ L3
+ LINENUMBER 754 L3
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer] []
+ RETURN
+ L4
+ LOCALVARIABLE this Lnet/minecraft/client/gui/inventory/GuiContainer; L0 L4 0
+ MAXSTACK = 1
+ MAXLOCALS = 1
+
+ // access flags 0x8
+ static <clinit>()V
+ L0
+ LINENUMBER 29 L0
+ NEW net/minecraft/util/ResourceLocation
+ DUP
+ LDC "textures/gui/container/inventory.png"
+ INVOKESPECIAL net/minecraft/util/ResourceLocation.<init> (Ljava/lang/String;)V
+ PUTSTATIC net/minecraft/client/gui/inventory/GuiContainer.field_147001_a : Lnet/minecraft/util/ResourceLocation;
+ RETURN
+ MAXSTACK = 3
+ MAXLOCALS = 0
+}
diff --git a/banned-ips.json b/banned-ips.json
new file mode 100644
index 0000000000..0637a088a0
--- /dev/null
+++ b/banned-ips.json
@@ -0,0 +1 @@
+[] \ No newline at end of file
diff --git a/banned-players.json b/banned-players.json
new file mode 100644
index 0000000000..0637a088a0
--- /dev/null
+++ b/banned-players.json
@@ -0,0 +1 @@
+[] \ No newline at end of file
diff --git a/bin/assets/miscutils/lang/en_US.lang b/bin/assets/miscutils/lang/en_US.lang
new file mode 100644
index 0000000000..190cd9e9d2
--- /dev/null
+++ b/bin/assets/miscutils/lang/en_US.lang
@@ -0,0 +1,53 @@
+itemGroup.MiscUtilBlockTab=Misc. Utils Blocks
+itemGroup.MiscUtilMiscTab=Misc. Utils Items
+itemGroup.MiscUtilCombatTab=Misc. Utils Combat
+itemGroup.MiscUtilToolsTab=Misc. Utils Tools
+
+
+item.BloodSteelPickaxe.name=Blood Steel Pickaxe
+item.BloodSteelAxe.name=Blood Steel Hatchet
+item.BloodSteelSword.name=Blood Steel Blade
+item.BloodSteelHoe.name=Blood Steel Hoe
+item.BloodSteelSpade.name=Blood Steel Shovel
+item.BloodSteelHelmet.name=Blood Steel Battle Helmet
+item.BloodSteelPlate.name=Blood Steel Battle Plate
+item.BloodSteelPants.name=Blood Steel War Casings
+item.BloodSteelBoots.name=Blood Steel War Treads
+
+
+
+item.itemPlateSoularium.name=Soularium Plate
+item.itemPlateRedstoneAlloy.name=Redstone Alloy Plate
+item.itemPlateElectricalSteel.name=Electrical Steel Plate
+item.itemPlatePulsatingIron.name=Pulsating Iron Plate
+item.itemPlateEnergeticAlloy.name=Energetic Alloy Plate
+item.itemPlateVibrantAlloy.name=Vibrant Alloy Plate
+item.itemPlateConductiveIron.name=Conductive Iron Plate
+item.itemPlateDarkSteel.name=Dark Steel Plate
+item.itemPlateBlutonium.name=Blutonium Plate
+item.itemPlateCyanite.name=Cyanite Plate
+item.itemPlateLudicrite.name=Ludicrite Plate
+item.itemPlateVoidMetal.name=Void Metal Plate
+item.itemPlateBedrockium.name=Bedrockium Plate
+item.itemPlateCompressedIron.name=Compressed Iron Plate
+item.itemPlateEnrichedSoularium.name=Enriched Soularium Plate
+item.itemPlateDimensionShard.name=Dimensional Plate
+item.itemIngotBloodSteel.name=Blood Steel Ingot
+item.itemPlateBloodSteel.name=Blood Steel Plate
+
+
+tile.blockBloodSteel.name=Block of Blood Steel
+tile.BloodSteelFurnace.name=Blood Steel Industrial Furnace
+tile.BloodSteelChest.name=Blood Steel Chest
+tile.ArcaneInfuser.name=Arcane Infuser
+
+tile.blockToolBuilder.name=GregTech Tool Constructor
+item.itemBufferCore.name=Buffer Core
+item.itemStaballoyPickaxe.name=Pick of the Ages
+item.itemIngotStaballoy.name=Staballoy Ingot
+item.itemPlateStaballoy.name=Staballoy Plate
+
+entity.BloodSteelMob.name=Friendly Fellow [WIP]
+entity.BloodSteelHostileMob.name=Hostile Mob [WIP]
+
+tile.storage.name=[WIP] Storage Block \ No newline at end of file
diff --git a/bin/assets/miscutils/textures/blocks/blockBloodSteel.png b/bin/assets/miscutils/textures/blocks/blockBloodSteel.png
new file mode 100644
index 0000000000..6ce0c8615f
--- /dev/null
+++ b/bin/assets/miscutils/textures/blocks/blockBloodSteel.png
Binary files differ
diff --git a/bin/assets/miscutils/textures/blocks/blockStaballoy.png b/bin/assets/miscutils/textures/blocks/blockStaballoy.png
new file mode 100644
index 0000000000..f90f75723e
--- /dev/null
+++ b/bin/assets/miscutils/textures/blocks/blockStaballoy.png
Binary files differ
diff --git a/bin/assets/miscutils/textures/items/itemBufferCore.png b/bin/assets/miscutils/textures/items/itemBufferCore.png
new file mode 100644
index 0000000000..fc6c4163a6
--- /dev/null
+++ b/bin/assets/miscutils/textures/items/itemBufferCore.png
Binary files differ
diff --git a/bin/assets/miscutils/textures/items/itemIngotBloodSteel.png b/bin/assets/miscutils/textures/items/itemIngotBloodSteel.png
new file mode 100644
index 0000000000..4d7a627065
--- /dev/null
+++ b/bin/assets/miscutils/textures/items/itemIngotBloodSteel.png
Binary files differ
diff --git a/bin/assets/miscutils/textures/items/itemIngotStaballoy.png b/bin/assets/miscutils/textures/items/itemIngotStaballoy.png
new file mode 100644
index 0000000000..af251b7711
--- /dev/null
+++ b/bin/assets/miscutils/textures/items/itemIngotStaballoy.png
Binary files differ
diff --git a/bin/assets/miscutils/textures/items/itemPlateBedrockium.png b/bin/assets/miscutils/textures/items/itemPlateBedrockium.png
new file mode 100644
index 0000000000..33248e37d7
--- /dev/null
+++ b/bin/assets/miscutils/textures/items/itemPlateBedrockium.png
Binary files differ
diff --git a/bin/assets/miscutils/textures/items/itemPlateBloodSteel.png b/bin/assets/miscutils/textures/items/itemPlateBloodSteel.png
new file mode 100644
index 0000000000..87bde2ffa1
--- /dev/null
+++ b/bin/assets/miscutils/textures/items/itemPlateBloodSteel.png
Binary files differ
diff --git a/bin/assets/miscutils/textures/items/itemPlateBlutonium.png b/bin/assets/miscutils/textures/items/itemPlateBlutonium.png
new file mode 100644
index 0000000000..284a631828
--- /dev/null
+++ b/bin/assets/miscutils/textures/items/itemPlateBlutonium.png
Binary files differ
diff --git a/bin/assets/miscutils/textures/items/itemPlateCompressedIron.png b/bin/assets/miscutils/textures/items/itemPlateCompressedIron.png
new file mode 100644
index 0000000000..ed9d98811b
--- /dev/null
+++ b/bin/assets/miscutils/textures/items/itemPlateCompressedIron.png
Binary files differ
diff --git a/bin/assets/miscutils/textures/items/itemPlateConductiveIron.png b/bin/assets/miscutils/textures/items/itemPlateConductiveIron.png
new file mode 100644
index 0000000000..a2e2d8e923
--- /dev/null
+++ b/bin/assets/miscutils/textures/items/itemPlateConductiveIron.png
Binary files differ
diff --git a/bin/assets/miscutils/textures/items/itemPlateCyanite.png b/bin/assets/miscutils/textures/items/itemPlateCyanite.png
new file mode 100644
index 0000000000..3674a721ec
--- /dev/null
+++ b/bin/assets/miscutils/textures/items/itemPlateCyanite.png
Binary files differ
diff --git a/bin/assets/miscutils/textures/items/itemPlateDarkSteel.png b/bin/assets/miscutils/textures/items/itemPlateDarkSteel.png
new file mode 100644
index 0000000000..698cdf21cb
--- /dev/null
+++ b/bin/assets/miscutils/textures/items/itemPlateDarkSteel.png
Binary files differ
diff --git a/bin/assets/miscutils/textures/items/itemPlateDimensionShard.png b/bin/assets/miscutils/textures/items/itemPlateDimensionShard.png
new file mode 100644
index 0000000000..9fe6440406
--- /dev/null
+++ b/bin/assets/miscutils/textures/items/itemPlateDimensionShard.png
Binary files differ
diff --git a/bin/assets/miscutils/textures/items/itemPlateElectricalSteel.png b/bin/assets/miscutils/textures/items/itemPlateElectricalSteel.png
new file mode 100644
index 0000000000..fe2ce84ab7
--- /dev/null
+++ b/bin/assets/miscutils/textures/items/itemPlateElectricalSteel.png
Binary files differ
diff --git a/bin/assets/miscutils/textures/items/itemPlateElectricalSteel2.png b/bin/assets/miscutils/textures/items/itemPlateElectricalSteel2.png
new file mode 100644
index 0000000000..d8b79ae78a
--- /dev/null
+++ b/bin/assets/miscutils/textures/items/itemPlateElectricalSteel2.png
Binary files differ
diff --git a/bin/assets/miscutils/textures/items/itemPlateEnergeticAlloy.png b/bin/assets/miscutils/textures/items/itemPlateEnergeticAlloy.png
new file mode 100644
index 0000000000..c7d063f69a
--- /dev/null
+++ b/bin/assets/miscutils/textures/items/itemPlateEnergeticAlloy.png
Binary files differ
diff --git a/bin/assets/miscutils/textures/items/itemPlateLudicrite.png b/bin/assets/miscutils/textures/items/itemPlateLudicrite.png
new file mode 100644
index 0000000000..11a10a2ed3
--- /dev/null
+++ b/bin/assets/miscutils/textures/items/itemPlateLudicrite.png
Binary files differ
diff --git a/bin/assets/miscutils/textures/items/itemPlatePulsatingIron.png b/bin/assets/miscutils/textures/items/itemPlatePulsatingIron.png
new file mode 100644
index 0000000000..454eb39071
--- /dev/null
+++ b/bin/assets/miscutils/textures/items/itemPlatePulsatingIron.png
Binary files differ
diff --git a/bin/assets/miscutils/textures/items/itemPlateRedstoneAlloy.png b/bin/assets/miscutils/textures/items/itemPlateRedstoneAlloy.png
new file mode 100644
index 0000000000..7d48dd4bea
--- /dev/null
+++ b/bin/assets/miscutils/textures/items/itemPlateRedstoneAlloy.png
Binary files differ
diff --git a/bin/assets/miscutils/textures/items/itemPlateSoularium.png b/bin/assets/miscutils/textures/items/itemPlateSoularium.png
new file mode 100644
index 0000000000..6420cc30de
--- /dev/null
+++ b/bin/assets/miscutils/textures/items/itemPlateSoularium.png
Binary files differ
diff --git a/bin/assets/miscutils/textures/items/itemPlateStaballoy.png b/bin/assets/miscutils/textures/items/itemPlateStaballoy.png
new file mode 100644
index 0000000000..6ab2e79ed9
--- /dev/null
+++ b/bin/assets/miscutils/textures/items/itemPlateStaballoy.png
Binary files differ
diff --git a/bin/assets/miscutils/textures/items/itemPlateVibrantAlloy.png b/bin/assets/miscutils/textures/items/itemPlateVibrantAlloy.png
new file mode 100644
index 0000000000..13c71932fd
--- /dev/null
+++ b/bin/assets/miscutils/textures/items/itemPlateVibrantAlloy.png
Binary files differ
diff --git a/bin/assets/miscutils/textures/items/itemPlateVoidMetal.png b/bin/assets/miscutils/textures/items/itemPlateVoidMetal.png
new file mode 100644
index 0000000000..8026035309
--- /dev/null
+++ b/bin/assets/miscutils/textures/items/itemPlateVoidMetal.png
Binary files differ
diff --git a/bin/assets/miscutils/textures/items/itemStaballoyPickaxe.png b/bin/assets/miscutils/textures/items/itemStaballoyPickaxe.png
new file mode 100644
index 0000000000..d1d6a487df
--- /dev/null
+++ b/bin/assets/miscutils/textures/items/itemStaballoyPickaxe.png
Binary files differ
diff --git a/bin/binnie/Binnie.class b/bin/binnie/Binnie.class
new file mode 100644
index 0000000000..b4dceba6e6
--- /dev/null
+++ b/bin/binnie/Binnie.class
Binary files differ
diff --git a/bin/binnie/Constants.class b/bin/binnie/Constants.class
new file mode 100644
index 0000000000..e7b132ec98
--- /dev/null
+++ b/bin/binnie/Constants.class
Binary files differ
diff --git a/bin/binnie/core/AbstractMod.class b/bin/binnie/core/AbstractMod.class
new file mode 100644
index 0000000000..bc968f0a2a
--- /dev/null
+++ b/bin/binnie/core/AbstractMod.class
Binary files differ
diff --git a/bin/binnie/core/BinnieCore$PacketHandler.class b/bin/binnie/core/BinnieCore$PacketHandler.class
new file mode 100644
index 0000000000..bd6b616e7e
--- /dev/null
+++ b/bin/binnie/core/BinnieCore$PacketHandler.class
Binary files differ
diff --git a/bin/binnie/core/BinnieCore.class b/bin/binnie/core/BinnieCore.class
new file mode 100644
index 0000000000..c0a8ed2573
--- /dev/null
+++ b/bin/binnie/core/BinnieCore.class
Binary files differ
diff --git a/bin/binnie/core/IInitializable.class b/bin/binnie/core/IInitializable.class
new file mode 100644
index 0000000000..4896bc1288
--- /dev/null
+++ b/bin/binnie/core/IInitializable.class
Binary files differ
diff --git a/bin/binnie/core/ManagerBase.class b/bin/binnie/core/ManagerBase.class
new file mode 100644
index 0000000000..e342086518
--- /dev/null
+++ b/bin/binnie/core/ManagerBase.class
Binary files differ
diff --git a/bin/binnie/core/block/BlockMetadata.class b/bin/binnie/core/block/BlockMetadata.class
new file mode 100644
index 0000000000..3152c31e5a
--- /dev/null
+++ b/bin/binnie/core/block/BlockMetadata.class
Binary files differ
diff --git a/bin/binnie/core/block/IBlockMetadata.class b/bin/binnie/core/block/IBlockMetadata.class
new file mode 100644
index 0000000000..0540382cde
--- /dev/null
+++ b/bin/binnie/core/block/IBlockMetadata.class
Binary files differ
diff --git a/bin/binnie/core/block/IMultipassBlock.class b/bin/binnie/core/block/IMultipassBlock.class
new file mode 100644
index 0000000000..a538c35223
--- /dev/null
+++ b/bin/binnie/core/block/IMultipassBlock.class
Binary files differ
diff --git a/bin/binnie/core/block/ItemMetadata.class b/bin/binnie/core/block/ItemMetadata.class
new file mode 100644
index 0000000000..1e3ab2943f
--- /dev/null
+++ b/bin/binnie/core/block/ItemMetadata.class
Binary files differ
diff --git a/bin/binnie/core/block/ItemMetadataRenderer.class b/bin/binnie/core/block/ItemMetadataRenderer.class
new file mode 100644
index 0000000000..a5e96d2f0d
--- /dev/null
+++ b/bin/binnie/core/block/ItemMetadataRenderer.class
Binary files differ
diff --git a/bin/binnie/core/block/MultipassBlockRenderer.class b/bin/binnie/core/block/MultipassBlockRenderer.class
new file mode 100644
index 0000000000..76f0bf8d5b
--- /dev/null
+++ b/bin/binnie/core/block/MultipassBlockRenderer.class
Binary files differ
diff --git a/bin/binnie/core/block/MultipassItemRenderer.class b/bin/binnie/core/block/MultipassItemRenderer.class
new file mode 100644
index 0000000000..c38dfee45f
--- /dev/null
+++ b/bin/binnie/core/block/MultipassItemRenderer.class
Binary files differ
diff --git a/bin/binnie/core/block/TileEntityMetadata.class b/bin/binnie/core/block/TileEntityMetadata.class
new file mode 100644
index 0000000000..4ca59dfec3
--- /dev/null
+++ b/bin/binnie/core/block/TileEntityMetadata.class
Binary files differ
diff --git a/bin/binnie/core/circuits/BinnieCircuit.class b/bin/binnie/core/circuits/BinnieCircuit.class
new file mode 100644
index 0000000000..96690b195c
--- /dev/null
+++ b/bin/binnie/core/circuits/BinnieCircuit.class
Binary files differ
diff --git a/bin/binnie/core/circuits/BinnieCircuitLayout.class b/bin/binnie/core/circuits/BinnieCircuitLayout.class
new file mode 100644
index 0000000000..74c049d7f9
--- /dev/null
+++ b/bin/binnie/core/circuits/BinnieCircuitLayout.class
Binary files differ
diff --git a/bin/binnie/core/genetics/BeeBreedingSystem.class b/bin/binnie/core/genetics/BeeBreedingSystem.class
new file mode 100644
index 0000000000..b0802fd292
--- /dev/null
+++ b/bin/binnie/core/genetics/BeeBreedingSystem.class
Binary files differ
diff --git a/bin/binnie/core/genetics/BeeModifierLogic.class b/bin/binnie/core/genetics/BeeModifierLogic.class
new file mode 100644
index 0000000000..420350cc42
--- /dev/null
+++ b/bin/binnie/core/genetics/BeeModifierLogic.class
Binary files differ
diff --git a/bin/binnie/core/genetics/BreedingSystem.class b/bin/binnie/core/genetics/BreedingSystem.class
new file mode 100644
index 0000000000..5935ac9799
--- /dev/null
+++ b/bin/binnie/core/genetics/BreedingSystem.class
Binary files differ
diff --git a/bin/binnie/core/genetics/EnumBeeBooleanModifier.class b/bin/binnie/core/genetics/EnumBeeBooleanModifier.class
new file mode 100644
index 0000000000..c4676d5dcf
--- /dev/null
+++ b/bin/binnie/core/genetics/EnumBeeBooleanModifier.class
Binary files differ
diff --git a/bin/binnie/core/genetics/EnumBeeModifier.class b/bin/binnie/core/genetics/EnumBeeModifier.class
new file mode 100644
index 0000000000..0c79a62e51
--- /dev/null
+++ b/bin/binnie/core/genetics/EnumBeeModifier.class
Binary files differ
diff --git a/bin/binnie/core/genetics/FlowerBreedingSystem.class b/bin/binnie/core/genetics/FlowerBreedingSystem.class
new file mode 100644
index 0000000000..8e33631057
--- /dev/null
+++ b/bin/binnie/core/genetics/FlowerBreedingSystem.class
Binary files differ
diff --git a/bin/binnie/core/genetics/ForestryAllele$BeeSpecies.class b/bin/binnie/core/genetics/ForestryAllele$BeeSpecies.class
new file mode 100644
index 0000000000..29f9f4fceb
--- /dev/null
+++ b/bin/binnie/core/genetics/ForestryAllele$BeeSpecies.class
Binary files differ
diff --git a/bin/binnie/core/genetics/ForestryAllele$Bool.class b/bin/binnie/core/genetics/ForestryAllele$Bool.class
new file mode 100644
index 0000000000..be6076e00e
--- /dev/null
+++ b/bin/binnie/core/genetics/ForestryAllele$Bool.class
Binary files differ
diff --git a/bin/binnie/core/genetics/ForestryAllele$Fertility.class b/bin/binnie/core/genetics/ForestryAllele$Fertility.class
new file mode 100644
index 0000000000..7459958bbe
--- /dev/null
+++ b/bin/binnie/core/genetics/ForestryAllele$Fertility.class
Binary files differ
diff --git a/bin/binnie/core/genetics/ForestryAllele$Flowering.class b/bin/binnie/core/genetics/ForestryAllele$Flowering.class
new file mode 100644
index 0000000000..26436882e6
--- /dev/null
+++ b/bin/binnie/core/genetics/ForestryAllele$Flowering.class
Binary files differ
diff --git a/bin/binnie/core/genetics/ForestryAllele$Growth.class b/bin/binnie/core/genetics/ForestryAllele$Growth.class
new file mode 100644
index 0000000000..9833a3e73f
--- /dev/null
+++ b/bin/binnie/core/genetics/ForestryAllele$Growth.class
Binary files differ
diff --git a/bin/binnie/core/genetics/ForestryAllele$Int.class b/bin/binnie/core/genetics/ForestryAllele$Int.class
new file mode 100644
index 0000000000..c2d6dc3cbb
--- /dev/null
+++ b/bin/binnie/core/genetics/ForestryAllele$Int.class
Binary files differ
diff --git a/bin/binnie/core/genetics/ForestryAllele$Lifespan.class b/bin/binnie/core/genetics/ForestryAllele$Lifespan.class
new file mode 100644
index 0000000000..bee05e4620
--- /dev/null
+++ b/bin/binnie/core/genetics/ForestryAllele$Lifespan.class
Binary files differ
diff --git a/bin/binnie/core/genetics/ForestryAllele$Maturation.class b/bin/binnie/core/genetics/ForestryAllele$Maturation.class
new file mode 100644
index 0000000000..f5550de0c9
--- /dev/null
+++ b/bin/binnie/core/genetics/ForestryAllele$Maturation.class
Binary files differ
diff --git a/bin/binnie/core/genetics/ForestryAllele$Saplings.class b/bin/binnie/core/genetics/ForestryAllele$Saplings.class
new file mode 100644
index 0000000000..63dd515bf3
--- /dev/null
+++ b/bin/binnie/core/genetics/ForestryAllele$Saplings.class
Binary files differ
diff --git a/bin/binnie/core/genetics/ForestryAllele$Sappiness.class b/bin/binnie/core/genetics/ForestryAllele$Sappiness.class
new file mode 100644
index 0000000000..76aab3607c
--- /dev/null
+++ b/bin/binnie/core/genetics/ForestryAllele$Sappiness.class
Binary files differ
diff --git a/bin/binnie/core/genetics/ForestryAllele$Size.class b/bin/binnie/core/genetics/ForestryAllele$Size.class
new file mode 100644
index 0000000000..9ad7f63638
--- /dev/null
+++ b/bin/binnie/core/genetics/ForestryAllele$Size.class
Binary files differ
diff --git a/bin/binnie/core/genetics/ForestryAllele$Speed.class b/bin/binnie/core/genetics/ForestryAllele$Speed.class
new file mode 100644
index 0000000000..0c1dcf461e
--- /dev/null
+++ b/bin/binnie/core/genetics/ForestryAllele$Speed.class
Binary files differ
diff --git a/bin/binnie/core/genetics/ForestryAllele$Territory.class b/bin/binnie/core/genetics/ForestryAllele$Territory.class
new file mode 100644
index 0000000000..323b966a64
--- /dev/null
+++ b/bin/binnie/core/genetics/ForestryAllele$Territory.class
Binary files differ
diff --git a/bin/binnie/core/genetics/ForestryAllele$TreeHeight.class b/bin/binnie/core/genetics/ForestryAllele$TreeHeight.class
new file mode 100644
index 0000000000..79e1b14c92
--- /dev/null
+++ b/bin/binnie/core/genetics/ForestryAllele$TreeHeight.class
Binary files differ
diff --git a/bin/binnie/core/genetics/ForestryAllele$Yield.class b/bin/binnie/core/genetics/ForestryAllele$Yield.class
new file mode 100644
index 0000000000..2ca50a00c6
--- /dev/null
+++ b/bin/binnie/core/genetics/ForestryAllele$Yield.class
Binary files differ
diff --git a/bin/binnie/core/genetics/ForestryAllele.class b/bin/binnie/core/genetics/ForestryAllele.class
new file mode 100644
index 0000000000..9cfa73864d
--- /dev/null
+++ b/bin/binnie/core/genetics/ForestryAllele.class
Binary files differ
diff --git a/bin/binnie/core/genetics/Gene.class b/bin/binnie/core/genetics/Gene.class
new file mode 100644
index 0000000000..5469897d27
--- /dev/null
+++ b/bin/binnie/core/genetics/Gene.class
Binary files differ
diff --git a/bin/binnie/core/genetics/IAlleleProvider.class b/bin/binnie/core/genetics/IAlleleProvider.class
new file mode 100644
index 0000000000..6a730ce9e8
--- /dev/null
+++ b/bin/binnie/core/genetics/IAlleleProvider.class
Binary files differ
diff --git a/bin/binnie/core/genetics/IBreedingMessage$BranchDiscovered.class b/bin/binnie/core/genetics/IBreedingMessage$BranchDiscovered.class
new file mode 100644
index 0000000000..3a51a16891
--- /dev/null
+++ b/bin/binnie/core/genetics/IBreedingMessage$BranchDiscovered.class
Binary files differ
diff --git a/bin/binnie/core/genetics/IBreedingMessage$EpithetGained.class b/bin/binnie/core/genetics/IBreedingMessage$EpithetGained.class
new file mode 100644
index 0000000000..f0fa4489c9
--- /dev/null
+++ b/bin/binnie/core/genetics/IBreedingMessage$EpithetGained.class
Binary files differ
diff --git a/bin/binnie/core/genetics/IBreedingMessage$MessageSpeciesDiscovered.class b/bin/binnie/core/genetics/IBreedingMessage$MessageSpeciesDiscovered.class
new file mode 100644
index 0000000000..cbf65c8d51
--- /dev/null
+++ b/bin/binnie/core/genetics/IBreedingMessage$MessageSpeciesDiscovered.class
Binary files differ
diff --git a/bin/binnie/core/genetics/IBreedingMessage.class b/bin/binnie/core/genetics/IBreedingMessage.class
new file mode 100644
index 0000000000..5eb14409d2
--- /dev/null
+++ b/bin/binnie/core/genetics/IBreedingMessage.class
Binary files differ
diff --git a/bin/binnie/core/genetics/IItemStackRepresentitive.class b/bin/binnie/core/genetics/IItemStackRepresentitive.class
new file mode 100644
index 0000000000..47ca73df50
--- /dev/null
+++ b/bin/binnie/core/genetics/IItemStackRepresentitive.class
Binary files differ
diff --git a/bin/binnie/core/genetics/ManagerGenetics$ComparatorAllele.class b/bin/binnie/core/genetics/ManagerGenetics$ComparatorAllele.class
new file mode 100644
index 0000000000..7c575928d6
--- /dev/null
+++ b/bin/binnie/core/genetics/ManagerGenetics$ComparatorAllele.class
Binary files differ
diff --git a/bin/binnie/core/genetics/ManagerGenetics.class b/bin/binnie/core/genetics/ManagerGenetics.class
new file mode 100644
index 0000000000..e46b1fe196
--- /dev/null
+++ b/bin/binnie/core/genetics/ManagerGenetics.class
Binary files differ
diff --git a/bin/binnie/core/genetics/MothBreedingSystem.class b/bin/binnie/core/genetics/MothBreedingSystem.class
new file mode 100644
index 0000000000..38b798c520
--- /dev/null
+++ b/bin/binnie/core/genetics/MothBreedingSystem.class
Binary files differ
diff --git a/bin/binnie/core/genetics/Tolerance.class b/bin/binnie/core/genetics/Tolerance.class
new file mode 100644
index 0000000000..6d31649c3e
--- /dev/null
+++ b/bin/binnie/core/genetics/Tolerance.class
Binary files differ
diff --git a/bin/binnie/core/genetics/TreeBreedingSystem.class b/bin/binnie/core/genetics/TreeBreedingSystem.class
new file mode 100644
index 0000000000..1fb9b44a84
--- /dev/null
+++ b/bin/binnie/core/genetics/TreeBreedingSystem.class
Binary files differ
diff --git a/bin/binnie/core/genetics/VirtualBeeHousing.class b/bin/binnie/core/genetics/VirtualBeeHousing.class
new file mode 100644
index 0000000000..26414bceb3
--- /dev/null
+++ b/bin/binnie/core/genetics/VirtualBeeHousing.class
Binary files differ
diff --git a/bin/binnie/core/genetics/VirtualHousing.class b/bin/binnie/core/genetics/VirtualHousing.class
new file mode 100644
index 0000000000..8606ddea31
--- /dev/null
+++ b/bin/binnie/core/genetics/VirtualHousing.class
Binary files differ
diff --git a/bin/binnie/core/genetics/VirtualMothHousing.class b/bin/binnie/core/genetics/VirtualMothHousing.class
new file mode 100644
index 0000000000..ef5a787883
--- /dev/null
+++ b/bin/binnie/core/genetics/VirtualMothHousing.class
Binary files differ
diff --git a/bin/binnie/core/gui/BinnieCoreGUI.class b/bin/binnie/core/gui/BinnieCoreGUI.class
new file mode 100644
index 0000000000..26763734c1
--- /dev/null
+++ b/bin/binnie/core/gui/BinnieCoreGUI.class
Binary files differ
diff --git a/bin/binnie/core/gui/BinnieGUIHandler.class b/bin/binnie/core/gui/BinnieGUIHandler.class
new file mode 100644
index 0000000000..38520f4985
--- /dev/null
+++ b/bin/binnie/core/gui/BinnieGUIHandler.class
Binary files differ
diff --git a/bin/binnie/core/gui/IBinnieGUID.class b/bin/binnie/core/gui/IBinnieGUID.class
new file mode 100644
index 0000000000..1206492765
--- /dev/null
+++ b/bin/binnie/core/gui/IBinnieGUID.class
Binary files differ
diff --git a/bin/binnie/core/item/IItemEnum.class b/bin/binnie/core/item/IItemEnum.class
new file mode 100644
index 0000000000..ea13ebf147
--- /dev/null
+++ b/bin/binnie/core/item/IItemEnum.class
Binary files differ
diff --git a/bin/binnie/core/item/IItemMisc.class b/bin/binnie/core/item/IItemMisc.class
new file mode 100644
index 0000000000..1f73d50620
--- /dev/null
+++ b/bin/binnie/core/item/IItemMisc.class
Binary files differ
diff --git a/bin/binnie/core/item/ItemFieldKit.class b/bin/binnie/core/item/ItemFieldKit.class
new file mode 100644
index 0000000000..89fe463c19
--- /dev/null
+++ b/bin/binnie/core/item/ItemFieldKit.class
Binary files differ
diff --git a/bin/binnie/core/item/ItemGenesis.class b/bin/binnie/core/item/ItemGenesis.class
new file mode 100644
index 0000000000..058a8b2a90
--- /dev/null
+++ b/bin/binnie/core/item/ItemGenesis.class
Binary files differ
diff --git a/bin/binnie/core/item/ItemMisc.class b/bin/binnie/core/item/ItemMisc.class
new file mode 100644
index 0000000000..8296f41ea8
--- /dev/null
+++ b/bin/binnie/core/item/ItemMisc.class
Binary files differ
diff --git a/bin/binnie/core/item/ManagerItem.class b/bin/binnie/core/item/ManagerItem.class
new file mode 100644
index 0000000000..cea9e4921c
--- /dev/null
+++ b/bin/binnie/core/item/ManagerItem.class
Binary files differ
diff --git a/bin/binnie/core/item/ModuleItems.class b/bin/binnie/core/item/ModuleItems.class
new file mode 100644
index 0000000000..ba4c8d36e0
--- /dev/null
+++ b/bin/binnie/core/item/ModuleItems.class
Binary files differ
diff --git a/bin/binnie/core/language/ManagerLanguage.class b/bin/binnie/core/language/ManagerLanguage.class
new file mode 100644
index 0000000000..0b4088c965
--- /dev/null
+++ b/bin/binnie/core/language/ManagerLanguage.class
Binary files differ
diff --git a/bin/binnie/core/liquid/BinnieFluid.class b/bin/binnie/core/liquid/BinnieFluid.class
new file mode 100644
index 0000000000..868cb70851
--- /dev/null
+++ b/bin/binnie/core/liquid/BinnieFluid.class
Binary files differ
diff --git a/bin/binnie/core/liquid/FluidContainer.class b/bin/binnie/core/liquid/FluidContainer.class
new file mode 100644
index 0000000000..42b6fcc204
--- /dev/null
+++ b/bin/binnie/core/liquid/FluidContainer.class
Binary files differ
diff --git a/bin/binnie/core/liquid/IFluidType.class b/bin/binnie/core/liquid/IFluidType.class
new file mode 100644
index 0000000000..66535e44a3
--- /dev/null
+++ b/bin/binnie/core/liquid/IFluidType.class
Binary files differ
diff --git a/bin/binnie/core/liquid/ILiquidType.class b/bin/binnie/core/liquid/ILiquidType.class
new file mode 100644
index 0000000000..80fae79535
--- /dev/null
+++ b/bin/binnie/core/liquid/ILiquidType.class
Binary files differ
diff --git a/bin/binnie/core/liquid/ItemFluidContainer.class b/bin/binnie/core/liquid/ItemFluidContainer.class
new file mode 100644
index 0000000000..f3b6a8a8c4
--- /dev/null
+++ b/bin/binnie/core/liquid/ItemFluidContainer.class
Binary files differ
diff --git a/bin/binnie/core/liquid/ManagerLiquid.class b/bin/binnie/core/liquid/ManagerLiquid.class
new file mode 100644
index 0000000000..99d3740425
--- /dev/null
+++ b/bin/binnie/core/liquid/ManagerLiquid.class
Binary files differ
diff --git a/bin/binnie/core/machines/BlockMachine$IMachineTexturedFaces.class b/bin/binnie/core/machines/BlockMachine$IMachineTexturedFaces.class
new file mode 100644
index 0000000000..b3fed1dab0
--- /dev/null
+++ b/bin/binnie/core/machines/BlockMachine$IMachineTexturedFaces.class
Binary files differ
diff --git a/bin/binnie/core/machines/BlockMachine.class b/bin/binnie/core/machines/BlockMachine.class
new file mode 100644
index 0000000000..596c0e61eb
--- /dev/null
+++ b/bin/binnie/core/machines/BlockMachine.class
Binary files differ
diff --git a/bin/binnie/core/machines/IBlockMachine.class b/bin/binnie/core/machines/IBlockMachine.class
new file mode 100644
index 0000000000..7711f9c551
--- /dev/null
+++ b/bin/binnie/core/machines/IBlockMachine.class
Binary files differ
diff --git a/bin/binnie/core/machines/IMachine.class b/bin/binnie/core/machines/IMachine.class
new file mode 100644
index 0000000000..da3188a70b
--- /dev/null
+++ b/bin/binnie/core/machines/IMachine.class
Binary files differ
diff --git a/bin/binnie/core/machines/IMachineType.class b/bin/binnie/core/machines/IMachineType.class
new file mode 100644
index 0000000000..c94bd7fa25
--- /dev/null
+++ b/bin/binnie/core/machines/IMachineType.class
Binary files differ
diff --git a/bin/binnie/core/machines/IOwnable.class b/bin/binnie/core/machines/IOwnable.class
new file mode 100644
index 0000000000..6a8c0453c9
--- /dev/null
+++ b/bin/binnie/core/machines/IOwnable.class
Binary files differ
diff --git a/bin/binnie/core/machines/ItemMachine.class b/bin/binnie/core/machines/ItemMachine.class
new file mode 100644
index 0000000000..f89d9c8637
--- /dev/null
+++ b/bin/binnie/core/machines/ItemMachine.class
Binary files differ
diff --git a/bin/binnie/core/machines/Machine.class b/bin/binnie/core/machines/Machine.class
new file mode 100644
index 0000000000..19c8a81082
--- /dev/null
+++ b/bin/binnie/core/machines/Machine.class
Binary files differ
diff --git a/bin/binnie/core/machines/MachineComponent.class b/bin/binnie/core/machines/MachineComponent.class
new file mode 100644
index 0000000000..34a19faaae
--- /dev/null
+++ b/bin/binnie/core/machines/MachineComponent.class
Binary files differ
diff --git a/bin/binnie/core/machines/MachineGroup.class b/bin/binnie/core/machines/MachineGroup.class
new file mode 100644
index 0000000000..15bc054bfe
--- /dev/null
+++ b/bin/binnie/core/machines/MachineGroup.class
Binary files differ
diff --git a/bin/binnie/core/machines/MachinePackage.class b/bin/binnie/core/machines/MachinePackage.class
new file mode 100644
index 0000000000..a84bab114d
--- /dev/null
+++ b/bin/binnie/core/machines/MachinePackage.class
Binary files differ
diff --git a/bin/binnie/core/machines/MachineRendererBlock.class b/bin/binnie/core/machines/MachineRendererBlock.class
new file mode 100644
index 0000000000..20a253b14e
--- /dev/null
+++ b/bin/binnie/core/machines/MachineRendererBlock.class
Binary files differ
diff --git a/bin/binnie/core/machines/MachineUtil.class b/bin/binnie/core/machines/MachineUtil.class
new file mode 100644
index 0000000000..41a6e6e963
--- /dev/null
+++ b/bin/binnie/core/machines/MachineUtil.class
Binary files differ
diff --git a/bin/binnie/core/machines/ManagerMachine.class b/bin/binnie/core/machines/ManagerMachine.class
new file mode 100644
index 0000000000..61ab367cb2
--- /dev/null
+++ b/bin/binnie/core/machines/ManagerMachine.class
Binary files differ
diff --git a/bin/binnie/core/machines/ModelBlock.class b/bin/binnie/core/machines/ModelBlock.class
new file mode 100644
index 0000000000..42d7f018fe
--- /dev/null
+++ b/bin/binnie/core/machines/ModelBlock.class
Binary files differ
diff --git a/bin/binnie/core/machines/RendererMachine.class b/bin/binnie/core/machines/RendererMachine.class
new file mode 100644
index 0000000000..fca277fc3a
--- /dev/null
+++ b/bin/binnie/core/machines/RendererMachine.class
Binary files differ
diff --git a/bin/binnie/core/machines/TileEntityMachine.class b/bin/binnie/core/machines/TileEntityMachine.class
new file mode 100644
index 0000000000..f4bbc5775c
--- /dev/null
+++ b/bin/binnie/core/machines/TileEntityMachine.class
Binary files differ
diff --git a/bin/binnie/core/machines/base/DefaultInventory.class b/bin/binnie/core/machines/base/DefaultInventory.class
new file mode 100644
index 0000000000..a517820d19
--- /dev/null
+++ b/bin/binnie/core/machines/base/DefaultInventory.class
Binary files differ
diff --git a/bin/binnie/core/machines/base/DefaultPower.class b/bin/binnie/core/machines/base/DefaultPower.class
new file mode 100644
index 0000000000..1130526c8d
--- /dev/null
+++ b/bin/binnie/core/machines/base/DefaultPower.class
Binary files differ
diff --git a/bin/binnie/core/machines/base/DefaultTankContainer.class b/bin/binnie/core/machines/base/DefaultTankContainer.class
new file mode 100644
index 0000000000..c2fd249e2e
--- /dev/null
+++ b/bin/binnie/core/machines/base/DefaultTankContainer.class
Binary files differ
diff --git a/bin/binnie/core/machines/base/TileEntityMachineBase.class b/bin/binnie/core/machines/base/TileEntityMachineBase.class
new file mode 100644
index 0000000000..c74a0fc36d
--- /dev/null
+++ b/bin/binnie/core/machines/base/TileEntityMachineBase.class
Binary files differ
diff --git a/bin/binnie/core/machines/component/ComponentRecipe.class b/bin/binnie/core/machines/component/ComponentRecipe.class
new file mode 100644
index 0000000000..0c0b50acbb
--- /dev/null
+++ b/bin/binnie/core/machines/component/ComponentRecipe.class
Binary files differ
diff --git a/bin/binnie/core/machines/component/IBuildcraft$ActionProvider.class b/bin/binnie/core/machines/component/IBuildcraft$ActionProvider.class
new file mode 100644
index 0000000000..7e7396c1ef
--- /dev/null
+++ b/bin/binnie/core/machines/component/IBuildcraft$ActionProvider.class
Binary files differ
diff --git a/bin/binnie/core/machines/component/IBuildcraft$TriggerProvider.class b/bin/binnie/core/machines/component/IBuildcraft$TriggerProvider.class
new file mode 100644
index 0000000000..a05d8bdc7e
--- /dev/null
+++ b/bin/binnie/core/machines/component/IBuildcraft$TriggerProvider.class
Binary files differ
diff --git a/bin/binnie/core/machines/component/IBuildcraft.class b/bin/binnie/core/machines/component/IBuildcraft.class
new file mode 100644
index 0000000000..c05f1b1924
--- /dev/null
+++ b/bin/binnie/core/machines/component/IBuildcraft.class
Binary files differ
diff --git a/bin/binnie/core/machines/component/IComponentRecipe.class b/bin/binnie/core/machines/component/IComponentRecipe.class
new file mode 100644
index 0000000000..75d8e51685
--- /dev/null
+++ b/bin/binnie/core/machines/component/IComponentRecipe.class
Binary files differ
diff --git a/bin/binnie/core/machines/component/IInteraction$ChunkUnload.class b/bin/binnie/core/machines/component/IInteraction$ChunkUnload.class
new file mode 100644
index 0000000000..e682e8160f
--- /dev/null
+++ b/bin/binnie/core/machines/component/IInteraction$ChunkUnload.class
Binary files differ
diff --git a/bin/binnie/core/machines/component/IInteraction$Invalidation.class b/bin/binnie/core/machines/component/IInteraction$Invalidation.class
new file mode 100644
index 0000000000..dfcc25cf7b
--- /dev/null
+++ b/bin/binnie/core/machines/component/IInteraction$Invalidation.class
Binary files differ
diff --git a/bin/binnie/core/machines/component/IInteraction$RightClick.class b/bin/binnie/core/machines/component/IInteraction$RightClick.class
new file mode 100644
index 0000000000..d22f2c7346
--- /dev/null
+++ b/bin/binnie/core/machines/component/IInteraction$RightClick.class
Binary files differ
diff --git a/bin/binnie/core/machines/component/IInteraction.class b/bin/binnie/core/machines/component/IInteraction.class
new file mode 100644
index 0000000000..23dee0fe2b
--- /dev/null
+++ b/bin/binnie/core/machines/component/IInteraction.class
Binary files differ
diff --git a/bin/binnie/core/machines/component/IRender$DisplayTick.class b/bin/binnie/core/machines/component/IRender$DisplayTick.class
new file mode 100644
index 0000000000..c9f5ee91e8
--- /dev/null
+++ b/bin/binnie/core/machines/component/IRender$DisplayTick.class
Binary files differ
diff --git a/bin/binnie/core/machines/component/IRender$RandomDisplayTick.class b/bin/binnie/core/machines/component/IRender$RandomDisplayTick.class
new file mode 100644
index 0000000000..909a83a0ef
--- /dev/null
+++ b/bin/binnie/core/machines/component/IRender$RandomDisplayTick.class
Binary files differ
diff --git a/bin/binnie/core/machines/component/IRender$Render.class b/bin/binnie/core/machines/component/IRender$Render.class
new file mode 100644
index 0000000000..7efd792ff1
--- /dev/null
+++ b/bin/binnie/core/machines/component/IRender$Render.class
Binary files differ
diff --git a/bin/binnie/core/machines/component/IRender.class b/bin/binnie/core/machines/component/IRender.class
new file mode 100644
index 0000000000..60bdad92f9
--- /dev/null
+++ b/bin/binnie/core/machines/component/IRender.class
Binary files differ
diff --git a/bin/binnie/core/machines/inventory/AccessDirection.class b/bin/binnie/core/machines/inventory/AccessDirection.class
new file mode 100644
index 0000000000..5449f25cd5
--- /dev/null
+++ b/bin/binnie/core/machines/inventory/AccessDirection.class
Binary files differ
diff --git a/bin/binnie/core/machines/inventory/BaseSlot.class b/bin/binnie/core/machines/inventory/BaseSlot.class
new file mode 100644
index 0000000000..9cf6814750
--- /dev/null
+++ b/bin/binnie/core/machines/inventory/BaseSlot.class
Binary files differ
diff --git a/bin/binnie/core/machines/inventory/ComponentChargedSlots.class b/bin/binnie/core/machines/inventory/ComponentChargedSlots.class
new file mode 100644
index 0000000000..60a7b41e76
--- /dev/null
+++ b/bin/binnie/core/machines/inventory/ComponentChargedSlots.class
Binary files differ
diff --git a/bin/binnie/core/machines/inventory/ComponentInventory.class b/bin/binnie/core/machines/inventory/ComponentInventory.class
new file mode 100644
index 0000000000..97f7acb653
--- /dev/null
+++ b/bin/binnie/core/machines/inventory/ComponentInventory.class
Binary files differ
diff --git a/bin/binnie/core/machines/inventory/ComponentInventorySlots.class b/bin/binnie/core/machines/inventory/ComponentInventorySlots.class
new file mode 100644
index 0000000000..a6e2c2c12d
--- /dev/null
+++ b/bin/binnie/core/machines/inventory/ComponentInventorySlots.class
Binary files differ
diff --git a/bin/binnie/core/machines/inventory/ComponentInventoryTransfer$Condition.class b/bin/binnie/core/machines/inventory/ComponentInventoryTransfer$Condition.class
new file mode 100644
index 0000000000..3fc35f4ba2
--- /dev/null
+++ b/bin/binnie/core/machines/inventory/ComponentInventoryTransfer$Condition.class
Binary files differ
diff --git a/bin/binnie/core/machines/inventory/ComponentInventoryTransfer$Restock.class b/bin/binnie/core/machines/inventory/ComponentInventoryTransfer$Restock.class
new file mode 100644
index 0000000000..f6c3ab4ad9
--- /dev/null
+++ b/bin/binnie/core/machines/inventory/ComponentInventoryTransfer$Restock.class
Binary files differ
diff --git a/bin/binnie/core/machines/inventory/ComponentInventoryTransfer$Storage.class b/bin/binnie/core/machines/inventory/ComponentInventoryTransfer$Storage.class
new file mode 100644
index 0000000000..bc7feffddc
--- /dev/null
+++ b/bin/binnie/core/machines/inventory/ComponentInventoryTransfer$Storage.class
Binary files differ
diff --git a/bin/binnie/core/machines/inventory/ComponentInventoryTransfer$Transfer.class b/bin/binnie/core/machines/inventory/ComponentInventoryTransfer$Transfer.class
new file mode 100644
index 0000000000..91e3f61047
--- /dev/null
+++ b/bin/binnie/core/machines/inventory/ComponentInventoryTransfer$Transfer.class
Binary files differ
diff --git a/bin/binnie/core/machines/inventory/ComponentInventoryTransfer.class b/bin/binnie/core/machines/inventory/ComponentInventoryTransfer.class
new file mode 100644
index 0000000000..1132debdbc
--- /dev/null
+++ b/bin/binnie/core/machines/inventory/ComponentInventoryTransfer.class
Binary files differ
diff --git a/bin/binnie/core/machines/inventory/ComponentTankContainer.class b/bin/binnie/core/machines/inventory/ComponentTankContainer.class
new file mode 100644
index 0000000000..6f0b358360
--- /dev/null
+++ b/bin/binnie/core/machines/inventory/ComponentTankContainer.class
Binary files differ
diff --git a/bin/binnie/core/machines/inventory/IChargedSlots.class b/bin/binnie/core/machines/inventory/IChargedSlots.class
new file mode 100644
index 0000000000..a0e667c0e5
--- /dev/null
+++ b/bin/binnie/core/machines/inventory/IChargedSlots.class
Binary files differ
diff --git a/bin/binnie/core/machines/inventory/IInventoryMachine.class b/bin/binnie/core/machines/inventory/IInventoryMachine.class
new file mode 100644
index 0000000000..36e8b91ba7
--- /dev/null
+++ b/bin/binnie/core/machines/inventory/IInventoryMachine.class
Binary files differ
diff --git a/bin/binnie/core/machines/inventory/IInventorySlots.class b/bin/binnie/core/machines/inventory/IInventorySlots.class
new file mode 100644
index 0000000000..e9acff833b
--- /dev/null
+++ b/bin/binnie/core/machines/inventory/IInventorySlots.class
Binary files differ
diff --git a/bin/binnie/core/machines/inventory/IValidatedInventory.class b/bin/binnie/core/machines/inventory/IValidatedInventory.class
new file mode 100644
index 0000000000..91779d8691
--- /dev/null
+++ b/bin/binnie/core/machines/inventory/IValidatedInventory.class
Binary files differ
diff --git a/bin/binnie/core/machines/inventory/IValidatedTankContainer.class b/bin/binnie/core/machines/inventory/IValidatedTankContainer.class
new file mode 100644
index 0000000000..acf5a994f4
--- /dev/null
+++ b/bin/binnie/core/machines/inventory/IValidatedTankContainer.class
Binary files differ
diff --git a/bin/binnie/core/machines/inventory/InventorySlot$Type.class b/bin/binnie/core/machines/inventory/InventorySlot$Type.class
new file mode 100644
index 0000000000..499906ce78
--- /dev/null
+++ b/bin/binnie/core/machines/inventory/InventorySlot$Type.class
Binary files differ
diff --git a/bin/binnie/core/machines/inventory/InventorySlot.class b/bin/binnie/core/machines/inventory/InventorySlot.class
new file mode 100644
index 0000000000..77f1782b53
--- /dev/null
+++ b/bin/binnie/core/machines/inventory/InventorySlot.class
Binary files differ
diff --git a/bin/binnie/core/machines/inventory/MachineSide.class b/bin/binnie/core/machines/inventory/MachineSide.class
new file mode 100644
index 0000000000..2a4a340325
--- /dev/null
+++ b/bin/binnie/core/machines/inventory/MachineSide.class
Binary files differ
diff --git a/bin/binnie/core/machines/inventory/SetList.class b/bin/binnie/core/machines/inventory/SetList.class
new file mode 100644
index 0000000000..657c64e250
--- /dev/null
+++ b/bin/binnie/core/machines/inventory/SetList.class
Binary files differ
diff --git a/bin/binnie/core/machines/inventory/SidedAccess.class b/bin/binnie/core/machines/inventory/SidedAccess.class
new file mode 100644
index 0000000000..a14ec80cf2
--- /dev/null
+++ b/bin/binnie/core/machines/inventory/SidedAccess.class
Binary files differ
diff --git a/bin/binnie/core/machines/inventory/SlotValidator$Individual.class b/bin/binnie/core/machines/inventory/SlotValidator$Individual.class
new file mode 100644
index 0000000000..ec88f84c41
--- /dev/null
+++ b/bin/binnie/core/machines/inventory/SlotValidator$Individual.class
Binary files differ
diff --git a/bin/binnie/core/machines/inventory/SlotValidator$Item.class b/bin/binnie/core/machines/inventory/SlotValidator$Item.class
new file mode 100644
index 0000000000..9393eb73e6
--- /dev/null
+++ b/bin/binnie/core/machines/inventory/SlotValidator$Item.class
Binary files differ
diff --git a/bin/binnie/core/machines/inventory/SlotValidator.class b/bin/binnie/core/machines/inventory/SlotValidator.class
new file mode 100644
index 0000000000..abe2eea361
--- /dev/null
+++ b/bin/binnie/core/machines/inventory/SlotValidator.class
Binary files differ
diff --git a/bin/binnie/core/machines/inventory/TankSlot.class b/bin/binnie/core/machines/inventory/TankSlot.class
new file mode 100644
index 0000000000..43b2ebc5bb
--- /dev/null
+++ b/bin/binnie/core/machines/inventory/TankSlot.class
Binary files differ
diff --git a/bin/binnie/core/machines/inventory/TankValidator$Basic.class b/bin/binnie/core/machines/inventory/TankValidator$Basic.class
new file mode 100644
index 0000000000..88f47c4455
--- /dev/null
+++ b/bin/binnie/core/machines/inventory/TankValidator$Basic.class
Binary files differ
diff --git a/bin/binnie/core/machines/inventory/TankValidator.class b/bin/binnie/core/machines/inventory/TankValidator.class
new file mode 100644
index 0000000000..6734434c55
--- /dev/null
+++ b/bin/binnie/core/machines/inventory/TankValidator.class
Binary files differ
diff --git a/bin/binnie/core/machines/inventory/TransferHandler.class b/bin/binnie/core/machines/inventory/TransferHandler.class
new file mode 100644
index 0000000000..41dba83edd
--- /dev/null
+++ b/bin/binnie/core/machines/inventory/TransferHandler.class
Binary files differ
diff --git a/bin/binnie/core/machines/inventory/Validator.class b/bin/binnie/core/machines/inventory/Validator.class
new file mode 100644
index 0000000000..3d3684e957
--- /dev/null
+++ b/bin/binnie/core/machines/inventory/Validator.class
Binary files differ
diff --git a/bin/binnie/core/machines/inventory/ValidatorIcon.class b/bin/binnie/core/machines/inventory/ValidatorIcon.class
new file mode 100644
index 0000000000..5a79665aae
--- /dev/null
+++ b/bin/binnie/core/machines/inventory/ValidatorIcon.class
Binary files differ
diff --git a/bin/binnie/core/machines/network/INetwork$GuiNBT.class b/bin/binnie/core/machines/network/INetwork$GuiNBT.class
new file mode 100644
index 0000000000..c9a1fe81a4
--- /dev/null
+++ b/bin/binnie/core/machines/network/INetwork$GuiNBT.class
Binary files differ
diff --git a/bin/binnie/core/machines/network/INetwork$RecieveGuiNBT.class b/bin/binnie/core/machines/network/INetwork$RecieveGuiNBT.class
new file mode 100644
index 0000000000..56c8ce5b1f
--- /dev/null
+++ b/bin/binnie/core/machines/network/INetwork$RecieveGuiNBT.class
Binary files differ
diff --git a/bin/binnie/core/machines/network/INetwork$SendGuiNBT.class b/bin/binnie/core/machines/network/INetwork$SendGuiNBT.class
new file mode 100644
index 0000000000..8cd7d0b0b1
--- /dev/null
+++ b/bin/binnie/core/machines/network/INetwork$SendGuiNBT.class
Binary files differ
diff --git a/bin/binnie/core/machines/network/INetwork$TilePacketSync.class b/bin/binnie/core/machines/network/INetwork$TilePacketSync.class
new file mode 100644
index 0000000000..72353535a8
--- /dev/null
+++ b/bin/binnie/core/machines/network/INetwork$TilePacketSync.class
Binary files differ
diff --git a/bin/binnie/core/machines/network/INetwork.class b/bin/binnie/core/machines/network/INetwork.class
new file mode 100644
index 0000000000..a303cc006e
--- /dev/null
+++ b/bin/binnie/core/machines/network/INetwork.class
Binary files differ
diff --git a/bin/binnie/core/machines/power/ComponentPowerReceptor.class b/bin/binnie/core/machines/power/ComponentPowerReceptor.class
new file mode 100644
index 0000000000..5eaea95fc6
--- /dev/null
+++ b/bin/binnie/core/machines/power/ComponentPowerReceptor.class
Binary files differ
diff --git a/bin/binnie/core/machines/power/ComponentProcess.class b/bin/binnie/core/machines/power/ComponentProcess.class
new file mode 100644
index 0000000000..37883b7406
--- /dev/null
+++ b/bin/binnie/core/machines/power/ComponentProcess.class
Binary files differ
diff --git a/bin/binnie/core/machines/power/ComponentProcessIndefinate.class b/bin/binnie/core/machines/power/ComponentProcessIndefinate.class
new file mode 100644
index 0000000000..33c9378033
--- /dev/null
+++ b/bin/binnie/core/machines/power/ComponentProcessIndefinate.class
Binary files differ
diff --git a/bin/binnie/core/machines/power/ComponentProcessSetCost.class b/bin/binnie/core/machines/power/ComponentProcessSetCost.class
new file mode 100644
index 0000000000..021f9b36cd
--- /dev/null
+++ b/bin/binnie/core/machines/power/ComponentProcessSetCost.class
Binary files differ
diff --git a/bin/binnie/core/machines/power/ErrorState$InsufficientLiquid.class b/bin/binnie/core/machines/power/ErrorState$InsufficientLiquid.class
new file mode 100644
index 0000000000..d25198a5b1
--- /dev/null
+++ b/bin/binnie/core/machines/power/ErrorState$InsufficientLiquid.class
Binary files differ
diff --git a/bin/binnie/core/machines/power/ErrorState$InsufficientPower.class b/bin/binnie/core/machines/power/ErrorState$InsufficientPower.class
new file mode 100644
index 0000000000..7fd9a3ca76
--- /dev/null
+++ b/bin/binnie/core/machines/power/ErrorState$InsufficientPower.class
Binary files differ
diff --git a/bin/binnie/core/machines/power/ErrorState$InvalidItem.class b/bin/binnie/core/machines/power/ErrorState$InvalidItem.class
new file mode 100644
index 0000000000..9b6fc9cf3c
--- /dev/null
+++ b/bin/binnie/core/machines/power/ErrorState$InvalidItem.class
Binary files differ
diff --git a/bin/binnie/core/machines/power/ErrorState$InvalidRecipe.class b/bin/binnie/core/machines/power/ErrorState$InvalidRecipe.class
new file mode 100644
index 0000000000..63a2466f29
--- /dev/null
+++ b/bin/binnie/core/machines/power/ErrorState$InvalidRecipe.class
Binary files differ
diff --git a/bin/binnie/core/machines/power/ErrorState$Item.class b/bin/binnie/core/machines/power/ErrorState$Item.class
new file mode 100644
index 0000000000..ee345e91ec
--- /dev/null
+++ b/bin/binnie/core/machines/power/ErrorState$Item.class
Binary files differ
diff --git a/bin/binnie/core/machines/power/ErrorState$NoItem.class b/bin/binnie/core/machines/power/ErrorState$NoItem.class
new file mode 100644
index 0000000000..289b36ab6d
--- /dev/null
+++ b/bin/binnie/core/machines/power/ErrorState$NoItem.class
Binary files differ
diff --git a/bin/binnie/core/machines/power/ErrorState$NoSpace.class b/bin/binnie/core/machines/power/ErrorState$NoSpace.class
new file mode 100644
index 0000000000..446acb5a50
--- /dev/null
+++ b/bin/binnie/core/machines/power/ErrorState$NoSpace.class
Binary files differ
diff --git a/bin/binnie/core/machines/power/ErrorState$Tank.class b/bin/binnie/core/machines/power/ErrorState$Tank.class
new file mode 100644
index 0000000000..0886e551f4
--- /dev/null
+++ b/bin/binnie/core/machines/power/ErrorState$Tank.class
Binary files differ
diff --git a/bin/binnie/core/machines/power/ErrorState$TankSpace.class b/bin/binnie/core/machines/power/ErrorState$TankSpace.class
new file mode 100644
index 0000000000..429372974d
--- /dev/null
+++ b/bin/binnie/core/machines/power/ErrorState$TankSpace.class
Binary files differ
diff --git a/bin/binnie/core/machines/power/ErrorState.class b/bin/binnie/core/machines/power/ErrorState.class
new file mode 100644
index 0000000000..26209c5d36
--- /dev/null
+++ b/bin/binnie/core/machines/power/ErrorState.class
Binary files differ
diff --git a/bin/binnie/core/machines/power/IErrorStateSource.class b/bin/binnie/core/machines/power/IErrorStateSource.class
new file mode 100644
index 0000000000..619dea65af
--- /dev/null
+++ b/bin/binnie/core/machines/power/IErrorStateSource.class
Binary files differ
diff --git a/bin/binnie/core/machines/power/IPoweredMachine.class b/bin/binnie/core/machines/power/IPoweredMachine.class
new file mode 100644
index 0000000000..d3daed3cb4
--- /dev/null
+++ b/bin/binnie/core/machines/power/IPoweredMachine.class
Binary files differ
diff --git a/bin/binnie/core/machines/power/IProcess.class b/bin/binnie/core/machines/power/IProcess.class
new file mode 100644
index 0000000000..30a7d3335c
--- /dev/null
+++ b/bin/binnie/core/machines/power/IProcess.class
Binary files differ
diff --git a/bin/binnie/core/machines/power/IProcessTimed.class b/bin/binnie/core/machines/power/IProcessTimed.class
new file mode 100644
index 0000000000..48efb70be4
--- /dev/null
+++ b/bin/binnie/core/machines/power/IProcessTimed.class
Binary files differ
diff --git a/bin/binnie/core/machines/power/ITankMachine.class b/bin/binnie/core/machines/power/ITankMachine.class
new file mode 100644
index 0000000000..1aaf2811e0
--- /dev/null
+++ b/bin/binnie/core/machines/power/ITankMachine.class
Binary files differ
diff --git a/bin/binnie/core/machines/power/PowerInfo.class b/bin/binnie/core/machines/power/PowerInfo.class
new file mode 100644
index 0000000000..fcf8a49e24
--- /dev/null
+++ b/bin/binnie/core/machines/power/PowerInfo.class
Binary files differ
diff --git a/bin/binnie/core/machines/power/PowerInterface.class b/bin/binnie/core/machines/power/PowerInterface.class
new file mode 100644
index 0000000000..9e5d969b14
--- /dev/null
+++ b/bin/binnie/core/machines/power/PowerInterface.class
Binary files differ
diff --git a/bin/binnie/core/machines/power/PowerSystem.class b/bin/binnie/core/machines/power/PowerSystem.class
new file mode 100644
index 0000000000..fe2d780c5e
--- /dev/null
+++ b/bin/binnie/core/machines/power/PowerSystem.class
Binary files differ
diff --git a/bin/binnie/core/machines/power/ProcessInfo.class b/bin/binnie/core/machines/power/ProcessInfo.class
new file mode 100644
index 0000000000..2cf32ad587
--- /dev/null
+++ b/bin/binnie/core/machines/power/ProcessInfo.class
Binary files differ
diff --git a/bin/binnie/core/machines/power/TankInfo.class b/bin/binnie/core/machines/power/TankInfo.class
new file mode 100644
index 0000000000..ef22202ed5
--- /dev/null
+++ b/bin/binnie/core/machines/power/TankInfo.class
Binary files differ
diff --git a/bin/binnie/core/machines/storage/Compartment$PackageCompartment.class b/bin/binnie/core/machines/storage/Compartment$PackageCompartment.class
new file mode 100644
index 0000000000..89d3f6a9cf
--- /dev/null
+++ b/bin/binnie/core/machines/storage/Compartment$PackageCompartment.class
Binary files differ
diff --git a/bin/binnie/core/machines/storage/Compartment.class b/bin/binnie/core/machines/storage/Compartment.class
new file mode 100644
index 0000000000..072b496ac6
--- /dev/null
+++ b/bin/binnie/core/machines/storage/Compartment.class
Binary files differ
diff --git a/bin/binnie/core/machines/storage/CompartmentTab.class b/bin/binnie/core/machines/storage/CompartmentTab.class
new file mode 100644
index 0000000000..782ba16b6a
--- /dev/null
+++ b/bin/binnie/core/machines/storage/CompartmentTab.class
Binary files differ
diff --git a/bin/binnie/core/machines/storage/ComponentBinnieCoreGUI.class b/bin/binnie/core/machines/storage/ComponentBinnieCoreGUI.class
new file mode 100644
index 0000000000..4e2cb6e4b6
--- /dev/null
+++ b/bin/binnie/core/machines/storage/ComponentBinnieCoreGUI.class
Binary files differ
diff --git a/bin/binnie/core/machines/storage/ComponentCompartmentInventory.class b/bin/binnie/core/machines/storage/ComponentCompartmentInventory.class
new file mode 100644
index 0000000000..34bd85427b
--- /dev/null
+++ b/bin/binnie/core/machines/storage/ComponentCompartmentInventory.class
Binary files differ
diff --git a/bin/binnie/core/machines/storage/ControlColourSelector.class b/bin/binnie/core/machines/storage/ControlColourSelector.class
new file mode 100644
index 0000000000..a2b3572c3d
--- /dev/null
+++ b/bin/binnie/core/machines/storage/ControlColourSelector.class
Binary files differ
diff --git a/bin/binnie/core/machines/storage/MachineRendererCompartment.class b/bin/binnie/core/machines/storage/MachineRendererCompartment.class
new file mode 100644
index 0000000000..ba90c5d1bf
--- /dev/null
+++ b/bin/binnie/core/machines/storage/MachineRendererCompartment.class
Binary files differ
diff --git a/bin/binnie/core/machines/storage/ModelCompartment.class b/bin/binnie/core/machines/storage/ModelCompartment.class
new file mode 100644
index 0000000000..395e502e6c
--- /dev/null
+++ b/bin/binnie/core/machines/storage/ModelCompartment.class
Binary files differ
diff --git a/bin/binnie/core/machines/storage/ModuleStorage.class b/bin/binnie/core/machines/storage/ModuleStorage.class
new file mode 100644
index 0000000000..3a5cfa8ca4
--- /dev/null
+++ b/bin/binnie/core/machines/storage/ModuleStorage.class
Binary files differ
diff --git a/bin/binnie/core/machines/storage/StandardCompartment$PackageCompartment.class b/bin/binnie/core/machines/storage/StandardCompartment$PackageCompartment.class
new file mode 100644
index 0000000000..c60b73ffdf
--- /dev/null
+++ b/bin/binnie/core/machines/storage/StandardCompartment$PackageCompartment.class
Binary files differ
diff --git a/bin/binnie/core/machines/storage/StandardCompartment$PackageCompartmentBronze.class b/bin/binnie/core/machines/storage/StandardCompartment$PackageCompartmentBronze.class
new file mode 100644
index 0000000000..55da2ee422
--- /dev/null
+++ b/bin/binnie/core/machines/storage/StandardCompartment$PackageCompartmentBronze.class
Binary files differ
diff --git a/bin/binnie/core/machines/storage/StandardCompartment$PackageCompartmentCopper.class b/bin/binnie/core/machines/storage/StandardCompartment$PackageCompartmentCopper.class
new file mode 100644
index 0000000000..f2b2b1cdce
--- /dev/null
+++ b/bin/binnie/core/machines/storage/StandardCompartment$PackageCompartmentCopper.class
Binary files differ
diff --git a/bin/binnie/core/machines/storage/StandardCompartment$PackageCompartmentDiamond.class b/bin/binnie/core/machines/storage/StandardCompartment$PackageCompartmentDiamond.class
new file mode 100644
index 0000000000..74ccb0d48b
--- /dev/null
+++ b/bin/binnie/core/machines/storage/StandardCompartment$PackageCompartmentDiamond.class
Binary files differ
diff --git a/bin/binnie/core/machines/storage/StandardCompartment$PackageCompartmentGold.class b/bin/binnie/core/machines/storage/StandardCompartment$PackageCompartmentGold.class
new file mode 100644
index 0000000000..b7d05a7d1a
--- /dev/null
+++ b/bin/binnie/core/machines/storage/StandardCompartment$PackageCompartmentGold.class
Binary files differ
diff --git a/bin/binnie/core/machines/storage/StandardCompartment$PackageCompartmentIron.class b/bin/binnie/core/machines/storage/StandardCompartment$PackageCompartmentIron.class
new file mode 100644
index 0000000000..2d4139bb40
--- /dev/null
+++ b/bin/binnie/core/machines/storage/StandardCompartment$PackageCompartmentIron.class
Binary files differ
diff --git a/bin/binnie/core/machines/storage/StandardCompartment.class b/bin/binnie/core/machines/storage/StandardCompartment.class
new file mode 100644
index 0000000000..58b8b5401f
--- /dev/null
+++ b/bin/binnie/core/machines/storage/StandardCompartment.class
Binary files differ
diff --git a/bin/binnie/core/machines/storage/WindowCompartment.class b/bin/binnie/core/machines/storage/WindowCompartment.class
new file mode 100644
index 0000000000..5a58ddaac3
--- /dev/null
+++ b/bin/binnie/core/machines/storage/WindowCompartment.class
Binary files differ
diff --git a/bin/binnie/core/machines/storage/WindowTest.class b/bin/binnie/core/machines/storage/WindowTest.class
new file mode 100644
index 0000000000..766a60009d
--- /dev/null
+++ b/bin/binnie/core/machines/storage/WindowTest.class
Binary files differ
diff --git a/bin/binnie/core/machines/transfer/TransferHandler.class b/bin/binnie/core/machines/transfer/TransferHandler.class
new file mode 100644
index 0000000000..cec6acc312
--- /dev/null
+++ b/bin/binnie/core/machines/transfer/TransferHandler.class
Binary files differ
diff --git a/bin/binnie/core/machines/transfer/TransferRequest$TransferSlot.class b/bin/binnie/core/machines/transfer/TransferRequest$TransferSlot.class
new file mode 100644
index 0000000000..019eb03ede
--- /dev/null
+++ b/bin/binnie/core/machines/transfer/TransferRequest$TransferSlot.class
Binary files differ
diff --git a/bin/binnie/core/machines/transfer/TransferRequest.class b/bin/binnie/core/machines/transfer/TransferRequest.class
new file mode 100644
index 0000000000..4cdcd9e335
--- /dev/null
+++ b/bin/binnie/core/machines/transfer/TransferRequest.class
Binary files differ
diff --git a/bin/binnie/core/mod/config/BinnieConfiguration.class b/bin/binnie/core/mod/config/BinnieConfiguration.class
new file mode 100644
index 0000000000..84e6a3e553
--- /dev/null
+++ b/bin/binnie/core/mod/config/BinnieConfiguration.class
Binary files differ
diff --git a/bin/binnie/core/mod/config/BinnieItemData.class b/bin/binnie/core/mod/config/BinnieItemData.class
new file mode 100644
index 0000000000..9132c327f6
--- /dev/null
+++ b/bin/binnie/core/mod/config/BinnieItemData.class
Binary files differ
diff --git a/bin/binnie/core/mod/config/ConfigFile.class b/bin/binnie/core/mod/config/ConfigFile.class
new file mode 100644
index 0000000000..569240066d
--- /dev/null
+++ b/bin/binnie/core/mod/config/ConfigFile.class
Binary files differ
diff --git a/bin/binnie/core/mod/config/ConfigProperty$Type.class b/bin/binnie/core/mod/config/ConfigProperty$Type.class
new file mode 100644
index 0000000000..e0a955cb0c
--- /dev/null
+++ b/bin/binnie/core/mod/config/ConfigProperty$Type.class
Binary files differ
diff --git a/bin/binnie/core/mod/config/ConfigProperty.class b/bin/binnie/core/mod/config/ConfigProperty.class
new file mode 100644
index 0000000000..4c14aabb54
--- /dev/null
+++ b/bin/binnie/core/mod/config/ConfigProperty.class
Binary files differ
diff --git a/bin/binnie/core/mod/config/ConfigurationMain.class b/bin/binnie/core/mod/config/ConfigurationMain.class
new file mode 100644
index 0000000000..4f7c6c8f0d
--- /dev/null
+++ b/bin/binnie/core/mod/config/ConfigurationMain.class
Binary files differ
diff --git a/bin/binnie/core/mod/config/ConfigurationMods.class b/bin/binnie/core/mod/config/ConfigurationMods.class
new file mode 100644
index 0000000000..77c0a18098
--- /dev/null
+++ b/bin/binnie/core/mod/config/ConfigurationMods.class
Binary files differ
diff --git a/bin/binnie/core/mod/config/ManagerConfig.class b/bin/binnie/core/mod/config/ManagerConfig.class
new file mode 100644
index 0000000000..29b9a815f4
--- /dev/null
+++ b/bin/binnie/core/mod/config/ManagerConfig.class
Binary files differ
diff --git a/bin/binnie/core/mod/config/PropBoolean$PropertyBoolean.class b/bin/binnie/core/mod/config/PropBoolean$PropertyBoolean.class
new file mode 100644
index 0000000000..a30e4f944d
--- /dev/null
+++ b/bin/binnie/core/mod/config/PropBoolean$PropertyBoolean.class
Binary files differ
diff --git a/bin/binnie/core/mod/config/PropBoolean.class b/bin/binnie/core/mod/config/PropBoolean.class
new file mode 100644
index 0000000000..215d5fa905
--- /dev/null
+++ b/bin/binnie/core/mod/config/PropBoolean.class
Binary files differ
diff --git a/bin/binnie/core/mod/config/PropDouble$PropertyDouble.class b/bin/binnie/core/mod/config/PropDouble$PropertyDouble.class
new file mode 100644
index 0000000000..69602da470
--- /dev/null
+++ b/bin/binnie/core/mod/config/PropDouble$PropertyDouble.class
Binary files differ
diff --git a/bin/binnie/core/mod/config/PropDouble.class b/bin/binnie/core/mod/config/PropDouble.class
new file mode 100644
index 0000000000..65da01bfde
--- /dev/null
+++ b/bin/binnie/core/mod/config/PropDouble.class
Binary files differ
diff --git a/bin/binnie/core/mod/config/PropInteger$PropertyInteger.class b/bin/binnie/core/mod/config/PropInteger$PropertyInteger.class
new file mode 100644
index 0000000000..878226ff75
--- /dev/null
+++ b/bin/binnie/core/mod/config/PropInteger$PropertyInteger.class
Binary files differ
diff --git a/bin/binnie/core/mod/config/PropInteger.class b/bin/binnie/core/mod/config/PropInteger.class
new file mode 100644
index 0000000000..cc62a416b2
--- /dev/null
+++ b/bin/binnie/core/mod/config/PropInteger.class
Binary files differ
diff --git a/bin/binnie/core/mod/config/PropPercentage$PropertyPercentage.class b/bin/binnie/core/mod/config/PropPercentage$PropertyPercentage.class
new file mode 100644
index 0000000000..e7ebdd6a4d
--- /dev/null
+++ b/bin/binnie/core/mod/config/PropPercentage$PropertyPercentage.class
Binary files differ
diff --git a/bin/binnie/core/mod/config/PropPercentage.class b/bin/binnie/core/mod/config/PropPercentage.class
new file mode 100644
index 0000000000..89b19e2b77
--- /dev/null
+++ b/bin/binnie/core/mod/config/PropPercentage.class
Binary files differ
diff --git a/bin/binnie/core/mod/config/PropertyBase.class b/bin/binnie/core/mod/config/PropertyBase.class
new file mode 100644
index 0000000000..baf7709022
--- /dev/null
+++ b/bin/binnie/core/mod/config/PropertyBase.class
Binary files differ
diff --git a/bin/binnie/core/mod/parser/FieldParser.class b/bin/binnie/core/mod/parser/FieldParser.class
new file mode 100644
index 0000000000..91a988d2ab
--- /dev/null
+++ b/bin/binnie/core/mod/parser/FieldParser.class
Binary files differ
diff --git a/bin/binnie/core/mod/parser/ItemParser.class b/bin/binnie/core/mod/parser/ItemParser.class
new file mode 100644
index 0000000000..266b67ce13
--- /dev/null
+++ b/bin/binnie/core/mod/parser/ItemParser.class
Binary files differ
diff --git a/bin/binnie/core/multiblock/BlockMultiblockMachine.class b/bin/binnie/core/multiblock/BlockMultiblockMachine.class
new file mode 100644
index 0000000000..6664dfdf80
--- /dev/null
+++ b/bin/binnie/core/multiblock/BlockMultiblockMachine.class
Binary files differ
diff --git a/bin/binnie/core/multiblock/TileEntityMultiblockMachine.class b/bin/binnie/core/multiblock/TileEntityMultiblockMachine.class
new file mode 100644
index 0000000000..bd9e3d90b9
--- /dev/null
+++ b/bin/binnie/core/multiblock/TileEntityMultiblockMachine.class
Binary files differ
diff --git a/bin/binnie/core/network/BinnieCorePacketID.class b/bin/binnie/core/network/BinnieCorePacketID.class
new file mode 100644
index 0000000000..d700d7969f
--- /dev/null
+++ b/bin/binnie/core/network/BinnieCorePacketID.class
Binary files differ
diff --git a/bin/binnie/core/network/BinniePacketHandler.class b/bin/binnie/core/network/BinniePacketHandler.class
new file mode 100644
index 0000000000..f5d0fb7559
--- /dev/null
+++ b/bin/binnie/core/network/BinniePacketHandler.class
Binary files differ
diff --git a/bin/binnie/core/network/INetworkedEntity.class b/bin/binnie/core/network/INetworkedEntity.class
new file mode 100644
index 0000000000..dea27554ac
--- /dev/null
+++ b/bin/binnie/core/network/INetworkedEntity.class
Binary files differ
diff --git a/bin/binnie/core/network/IOrdinaled.class b/bin/binnie/core/network/IOrdinaled.class
new file mode 100644
index 0000000000..af45d73f48
--- /dev/null
+++ b/bin/binnie/core/network/IOrdinaled.class
Binary files differ
diff --git a/bin/binnie/core/network/IPacketID.class b/bin/binnie/core/network/IPacketID.class
new file mode 100644
index 0000000000..40e2bfef0b
--- /dev/null
+++ b/bin/binnie/core/network/IPacketID.class
Binary files differ
diff --git a/bin/binnie/core/network/IPacketProvider.class b/bin/binnie/core/network/IPacketProvider.class
new file mode 100644
index 0000000000..8dc53b8ea4
--- /dev/null
+++ b/bin/binnie/core/network/IPacketProvider.class
Binary files differ
diff --git a/bin/binnie/core/network/packet/IPacket.class b/bin/binnie/core/network/packet/IPacket.class
new file mode 100644
index 0000000000..de2ddcda36
--- /dev/null
+++ b/bin/binnie/core/network/packet/IPacket.class
Binary files differ
diff --git a/bin/binnie/core/network/packet/IPacketLocation.class b/bin/binnie/core/network/packet/IPacketLocation.class
new file mode 100644
index 0000000000..f3a5ab386d
--- /dev/null
+++ b/bin/binnie/core/network/packet/IPacketLocation.class
Binary files differ
diff --git a/bin/binnie/core/network/packet/IndexInPayload.class b/bin/binnie/core/network/packet/IndexInPayload.class
new file mode 100644
index 0000000000..0fc56c5322
--- /dev/null
+++ b/bin/binnie/core/network/packet/IndexInPayload.class
Binary files differ
diff --git a/bin/binnie/core/network/packet/MachinePayload.class b/bin/binnie/core/network/packet/MachinePayload.class
new file mode 100644
index 0000000000..e80b04fdd2
--- /dev/null
+++ b/bin/binnie/core/network/packet/MachinePayload.class
Binary files differ
diff --git a/bin/binnie/core/network/packet/MessageBase.class b/bin/binnie/core/network/packet/MessageBase.class
new file mode 100644
index 0000000000..92e1140bb2
--- /dev/null
+++ b/bin/binnie/core/network/packet/MessageBase.class
Binary files differ
diff --git a/bin/binnie/core/network/packet/MessageBinnie.class b/bin/binnie/core/network/packet/MessageBinnie.class
new file mode 100644
index 0000000000..968d7f6a61
--- /dev/null
+++ b/bin/binnie/core/network/packet/MessageBinnie.class
Binary files differ
diff --git a/bin/binnie/core/network/packet/MessageContainerUpdate.class b/bin/binnie/core/network/packet/MessageContainerUpdate.class
new file mode 100644
index 0000000000..d4dca585d2
--- /dev/null
+++ b/bin/binnie/core/network/packet/MessageContainerUpdate.class
Binary files differ
diff --git a/bin/binnie/core/network/packet/MessageCoordinates.class b/bin/binnie/core/network/packet/MessageCoordinates.class
new file mode 100644
index 0000000000..ac1a16345f
--- /dev/null
+++ b/bin/binnie/core/network/packet/MessageCoordinates.class
Binary files differ
diff --git a/bin/binnie/core/network/packet/MessageCraftGUI.class b/bin/binnie/core/network/packet/MessageCraftGUI.class
new file mode 100644
index 0000000000..9f2e0b90d0
--- /dev/null
+++ b/bin/binnie/core/network/packet/MessageCraftGUI.class
Binary files differ
diff --git a/bin/binnie/core/network/packet/MessageMetadata.class b/bin/binnie/core/network/packet/MessageMetadata.class
new file mode 100644
index 0000000000..0ff7e0b58d
--- /dev/null
+++ b/bin/binnie/core/network/packet/MessageMetadata.class
Binary files differ
diff --git a/bin/binnie/core/network/packet/MessageNBT.class b/bin/binnie/core/network/packet/MessageNBT.class
new file mode 100644
index 0000000000..3956e143db
--- /dev/null
+++ b/bin/binnie/core/network/packet/MessageNBT.class
Binary files differ
diff --git a/bin/binnie/core/network/packet/MessageTileNBT.class b/bin/binnie/core/network/packet/MessageTileNBT.class
new file mode 100644
index 0000000000..76d9816bcf
--- /dev/null
+++ b/bin/binnie/core/network/packet/MessageTileNBT.class
Binary files differ
diff --git a/bin/binnie/core/network/packet/MessageUpdate.class b/bin/binnie/core/network/packet/MessageUpdate.class
new file mode 100644
index 0000000000..f80cce50e5
--- /dev/null
+++ b/bin/binnie/core/network/packet/MessageUpdate.class
Binary files differ
diff --git a/bin/binnie/core/network/packet/PacketPayload.class b/bin/binnie/core/network/packet/PacketPayload.class
new file mode 100644
index 0000000000..8ca1b913ec
--- /dev/null
+++ b/bin/binnie/core/network/packet/PacketPayload.class
Binary files differ
diff --git a/bin/binnie/core/proxy/BinnieModProxy.class b/bin/binnie/core/proxy/BinnieModProxy.class
new file mode 100644
index 0000000000..0c4ca981e9
--- /dev/null
+++ b/bin/binnie/core/proxy/BinnieModProxy.class
Binary files differ
diff --git a/bin/binnie/core/proxy/BinnieProxy.class b/bin/binnie/core/proxy/BinnieProxy.class
new file mode 100644
index 0000000000..5c68200394
--- /dev/null
+++ b/bin/binnie/core/proxy/BinnieProxy.class
Binary files differ
diff --git a/bin/binnie/core/proxy/BinnieProxyClient.class b/bin/binnie/core/proxy/BinnieProxyClient.class
new file mode 100644
index 0000000000..f7527167c3
--- /dev/null
+++ b/bin/binnie/core/proxy/BinnieProxyClient.class
Binary files differ
diff --git a/bin/binnie/core/proxy/BinnieProxyServer.class b/bin/binnie/core/proxy/BinnieProxyServer.class
new file mode 100644
index 0000000000..104c5ffcd3
--- /dev/null
+++ b/bin/binnie/core/proxy/BinnieProxyServer.class
Binary files differ
diff --git a/bin/binnie/core/proxy/IBinnieModProxy.class b/bin/binnie/core/proxy/IBinnieModProxy.class
new file mode 100644
index 0000000000..7bb069778e
--- /dev/null
+++ b/bin/binnie/core/proxy/IBinnieModProxy.class
Binary files differ
diff --git a/bin/binnie/core/proxy/IBinnieProxy.class b/bin/binnie/core/proxy/IBinnieProxy.class
new file mode 100644
index 0000000000..b4c113706b
--- /dev/null
+++ b/bin/binnie/core/proxy/IBinnieProxy.class
Binary files differ
diff --git a/bin/binnie/core/proxy/IProxyCore.class b/bin/binnie/core/proxy/IProxyCore.class
new file mode 100644
index 0000000000..4122e0f3bf
--- /dev/null
+++ b/bin/binnie/core/proxy/IProxyCore.class
Binary files differ
diff --git a/bin/binnie/core/resource/BinnieIcon.class b/bin/binnie/core/resource/BinnieIcon.class
new file mode 100644
index 0000000000..2939ef1e4c
--- /dev/null
+++ b/bin/binnie/core/resource/BinnieIcon.class
Binary files differ
diff --git a/bin/binnie/core/resource/BinnieResource.class b/bin/binnie/core/resource/BinnieResource.class
new file mode 100644
index 0000000000..6877270292
--- /dev/null
+++ b/bin/binnie/core/resource/BinnieResource.class
Binary files differ
diff --git a/bin/binnie/core/resource/IBinnieTexture.class b/bin/binnie/core/resource/IBinnieTexture.class
new file mode 100644
index 0000000000..3194540305
--- /dev/null
+++ b/bin/binnie/core/resource/IBinnieTexture.class
Binary files differ
diff --git a/bin/binnie/core/resource/ManagerResource.class b/bin/binnie/core/resource/ManagerResource.class
new file mode 100644
index 0000000000..bc066a6b21
--- /dev/null
+++ b/bin/binnie/core/resource/ManagerResource.class
Binary files differ
diff --git a/bin/binnie/core/resource/ResourceType.class b/bin/binnie/core/resource/ResourceType.class
new file mode 100644
index 0000000000..717e89b499
--- /dev/null
+++ b/bin/binnie/core/resource/ResourceType.class
Binary files differ
diff --git a/bin/binnie/core/texture/BinnieCoreTexture.class b/bin/binnie/core/texture/BinnieCoreTexture.class
new file mode 100644
index 0000000000..999e51e3da
--- /dev/null
+++ b/bin/binnie/core/texture/BinnieCoreTexture.class
Binary files differ
diff --git a/bin/binnie/core/texture/TextureManager.class b/bin/binnie/core/texture/TextureManager.class
new file mode 100644
index 0000000000..c530d5c8bb
--- /dev/null
+++ b/bin/binnie/core/texture/TextureManager.class
Binary files differ
diff --git a/bin/binnie/core/triggers/ActionProvider.class b/bin/binnie/core/triggers/ActionProvider.class
new file mode 100644
index 0000000000..cd4ee216e6
--- /dev/null
+++ b/bin/binnie/core/triggers/ActionProvider.class
Binary files differ
diff --git a/bin/binnie/core/triggers/BinnieAction.class b/bin/binnie/core/triggers/BinnieAction.class
new file mode 100644
index 0000000000..21ab1a3ca4
--- /dev/null
+++ b/bin/binnie/core/triggers/BinnieAction.class
Binary files differ
diff --git a/bin/binnie/core/triggers/BinnieTrigger.class b/bin/binnie/core/triggers/BinnieTrigger.class
new file mode 100644
index 0000000000..2b9e863afe
--- /dev/null
+++ b/bin/binnie/core/triggers/BinnieTrigger.class
Binary files differ
diff --git a/bin/binnie/core/triggers/ModuleTrigger.class b/bin/binnie/core/triggers/ModuleTrigger.class
new file mode 100644
index 0000000000..9655f92938
--- /dev/null
+++ b/bin/binnie/core/triggers/ModuleTrigger.class
Binary files differ
diff --git a/bin/binnie/core/triggers/TriggerData.class b/bin/binnie/core/triggers/TriggerData.class
new file mode 100644
index 0000000000..48f550605a
--- /dev/null
+++ b/bin/binnie/core/triggers/TriggerData.class
Binary files differ
diff --git a/bin/binnie/core/triggers/TriggerInventory.class b/bin/binnie/core/triggers/TriggerInventory.class
new file mode 100644
index 0000000000..1a7c7749ab
--- /dev/null
+++ b/bin/binnie/core/triggers/TriggerInventory.class
Binary files differ
diff --git a/bin/binnie/core/triggers/TriggerPower.class b/bin/binnie/core/triggers/TriggerPower.class
new file mode 100644
index 0000000000..27007c3dbe
--- /dev/null
+++ b/bin/binnie/core/triggers/TriggerPower.class
Binary files differ
diff --git a/bin/binnie/core/triggers/TriggerProvider.class b/bin/binnie/core/triggers/TriggerProvider.class
new file mode 100644
index 0000000000..ffc6979c7e
--- /dev/null
+++ b/bin/binnie/core/triggers/TriggerProvider.class
Binary files differ
diff --git a/bin/binnie/core/triggers/TriggerWorking.class b/bin/binnie/core/triggers/TriggerWorking.class
new file mode 100644
index 0000000000..4cb11c58b7
--- /dev/null
+++ b/bin/binnie/core/triggers/TriggerWorking.class
Binary files differ
diff --git a/bin/binnie/core/util/FluidStackSet.class b/bin/binnie/core/util/FluidStackSet.class
new file mode 100644
index 0000000000..2b22369be4
--- /dev/null
+++ b/bin/binnie/core/util/FluidStackSet.class
Binary files differ
diff --git a/bin/binnie/core/util/IValidator.class b/bin/binnie/core/util/IValidator.class
new file mode 100644
index 0000000000..462f638c8e
--- /dev/null
+++ b/bin/binnie/core/util/IValidator.class
Binary files differ
diff --git a/bin/binnie/core/util/ItemStackSet.class b/bin/binnie/core/util/ItemStackSet.class
new file mode 100644
index 0000000000..1d6b94ebab
--- /dev/null
+++ b/bin/binnie/core/util/ItemStackSet.class
Binary files differ
diff --git a/bin/binnie/core/util/UniqueFluidStackSet.class b/bin/binnie/core/util/UniqueFluidStackSet.class
new file mode 100644
index 0000000000..46587dd234
--- /dev/null
+++ b/bin/binnie/core/util/UniqueFluidStackSet.class
Binary files differ
diff --git a/bin/binnie/core/util/UniqueItemStackSet.class b/bin/binnie/core/util/UniqueItemStackSet.class
new file mode 100644
index 0000000000..fa6793cab3
--- /dev/null
+++ b/bin/binnie/core/util/UniqueItemStackSet.class
Binary files differ
diff --git a/bin/binnie/craftgui/binniecore/WindowFieldKit$StyleSheetPunnett.class b/bin/binnie/craftgui/binniecore/WindowFieldKit$StyleSheetPunnett.class
new file mode 100644
index 0000000000..7add1d8886
--- /dev/null
+++ b/bin/binnie/craftgui/binniecore/WindowFieldKit$StyleSheetPunnett.class
Binary files differ
diff --git a/bin/binnie/craftgui/binniecore/WindowFieldKit.class b/bin/binnie/craftgui/binniecore/WindowFieldKit.class
new file mode 100644
index 0000000000..d1c044080d
--- /dev/null
+++ b/bin/binnie/craftgui/binniecore/WindowFieldKit.class
Binary files differ
diff --git a/bin/binnie/craftgui/binniecore/WindowGenesis.class b/bin/binnie/craftgui/binniecore/WindowGenesis.class
new file mode 100644
index 0000000000..4b2602c5ee
--- /dev/null
+++ b/bin/binnie/craftgui/binniecore/WindowGenesis.class
Binary files differ
diff --git a/bin/binnie/craftgui/botany/ControlColourDisplay.class b/bin/binnie/craftgui/botany/ControlColourDisplay.class
new file mode 100644
index 0000000000..43b0956001
--- /dev/null
+++ b/bin/binnie/craftgui/botany/ControlColourDisplay.class
Binary files differ
diff --git a/bin/binnie/craftgui/botany/ControlColourMixBox$Type.class b/bin/binnie/craftgui/botany/ControlColourMixBox$Type.class
new file mode 100644
index 0000000000..41685c4bbd
--- /dev/null
+++ b/bin/binnie/craftgui/botany/ControlColourMixBox$Type.class
Binary files differ
diff --git a/bin/binnie/craftgui/botany/ControlColourMixBox.class b/bin/binnie/craftgui/botany/ControlColourMixBox.class
new file mode 100644
index 0000000000..4ec1ba6319
--- /dev/null
+++ b/bin/binnie/craftgui/botany/ControlColourMixBox.class
Binary files differ
diff --git a/bin/binnie/craftgui/botany/ControlColourMixItem.class b/bin/binnie/craftgui/botany/ControlColourMixItem.class
new file mode 100644
index 0000000000..75574633ef
--- /dev/null
+++ b/bin/binnie/craftgui/botany/ControlColourMixItem.class
Binary files differ
diff --git a/bin/binnie/craftgui/botany/ControlColourMixSymbol.class b/bin/binnie/craftgui/botany/ControlColourMixSymbol.class
new file mode 100644
index 0000000000..45560c713f
--- /dev/null
+++ b/bin/binnie/craftgui/botany/ControlColourMixSymbol.class
Binary files differ
diff --git a/bin/binnie/craftgui/botany/ControlColourOption.class b/bin/binnie/craftgui/botany/ControlColourOption.class
new file mode 100644
index 0000000000..e105bbf17d
--- /dev/null
+++ b/bin/binnie/craftgui/botany/ControlColourOption.class
Binary files differ
diff --git a/bin/binnie/craftgui/botany/PageColourMix.class b/bin/binnie/craftgui/botany/PageColourMix.class
new file mode 100644
index 0000000000..c09061cfdc
--- /dev/null
+++ b/bin/binnie/craftgui/botany/PageColourMix.class
Binary files differ
diff --git a/bin/binnie/craftgui/botany/PageColourMixResultant.class b/bin/binnie/craftgui/botany/PageColourMixResultant.class
new file mode 100644
index 0000000000..ecd4b20727
--- /dev/null
+++ b/bin/binnie/craftgui/botany/PageColourMixResultant.class
Binary files differ
diff --git a/bin/binnie/craftgui/botany/PageSpeciesFlowerGenome.class b/bin/binnie/craftgui/botany/PageSpeciesFlowerGenome.class
new file mode 100644
index 0000000000..99ed4eca64
--- /dev/null
+++ b/bin/binnie/craftgui/botany/PageSpeciesFlowerGenome.class
Binary files differ
diff --git a/bin/binnie/craftgui/botany/WindowBotanistDatabase$FlowerMode.class b/bin/binnie/craftgui/botany/WindowBotanistDatabase$FlowerMode.class
new file mode 100644
index 0000000000..ff1a11cb46
--- /dev/null
+++ b/bin/binnie/craftgui/botany/WindowBotanistDatabase$FlowerMode.class
Binary files differ
diff --git a/bin/binnie/craftgui/botany/WindowBotanistDatabase.class b/bin/binnie/craftgui/botany/WindowBotanistDatabase.class
new file mode 100644
index 0000000000..0f56186d92
--- /dev/null
+++ b/bin/binnie/craftgui/botany/WindowBotanistDatabase.class
Binary files differ
diff --git a/bin/binnie/craftgui/controls/ControlCheckbox.class b/bin/binnie/craftgui/controls/ControlCheckbox.class
new file mode 100644
index 0000000000..38c55a650e
--- /dev/null
+++ b/bin/binnie/craftgui/controls/ControlCheckbox.class
Binary files differ
diff --git a/bin/binnie/craftgui/controls/ControlText.class b/bin/binnie/craftgui/controls/ControlText.class
new file mode 100644
index 0000000000..4bd867ca4a
--- /dev/null
+++ b/bin/binnie/craftgui/controls/ControlText.class
Binary files differ
diff --git a/bin/binnie/craftgui/controls/ControlTextCentered.class b/bin/binnie/craftgui/controls/ControlTextCentered.class
new file mode 100644
index 0000000000..12343fb6df
--- /dev/null
+++ b/bin/binnie/craftgui/controls/ControlTextCentered.class
Binary files differ
diff --git a/bin/binnie/craftgui/controls/ControlTextEdit.class b/bin/binnie/craftgui/controls/ControlTextEdit.class
new file mode 100644
index 0000000000..afa555816f
--- /dev/null
+++ b/bin/binnie/craftgui/controls/ControlTextEdit.class
Binary files differ
diff --git a/bin/binnie/craftgui/controls/IControlSelection.class b/bin/binnie/craftgui/controls/IControlSelection.class
new file mode 100644
index 0000000000..613cb20f44
--- /dev/null
+++ b/bin/binnie/craftgui/controls/IControlSelection.class
Binary files differ
diff --git a/bin/binnie/craftgui/controls/IControlSelectionOption.class b/bin/binnie/craftgui/controls/IControlSelectionOption.class
new file mode 100644
index 0000000000..53cc0721bf
--- /dev/null
+++ b/bin/binnie/craftgui/controls/IControlSelectionOption.class
Binary files differ
diff --git a/bin/binnie/craftgui/controls/button/ControlButton.class b/bin/binnie/craftgui/controls/button/ControlButton.class
new file mode 100644
index 0000000000..bfa4dc162c
--- /dev/null
+++ b/bin/binnie/craftgui/controls/button/ControlButton.class
Binary files differ
diff --git a/bin/binnie/craftgui/controls/button/ControlEnumButton.class b/bin/binnie/craftgui/controls/button/ControlEnumButton.class
new file mode 100644
index 0000000000..8444b2381d
--- /dev/null
+++ b/bin/binnie/craftgui/controls/button/ControlEnumButton.class
Binary files differ
diff --git a/bin/binnie/craftgui/controls/button/ControlToggleButton.class b/bin/binnie/craftgui/controls/button/ControlToggleButton.class
new file mode 100644
index 0000000000..f17ff710e7
--- /dev/null
+++ b/bin/binnie/craftgui/controls/button/ControlToggleButton.class
Binary files differ
diff --git a/bin/binnie/craftgui/controls/core/Control.class b/bin/binnie/craftgui/controls/core/Control.class
new file mode 100644
index 0000000000..4c0f494124
--- /dev/null
+++ b/bin/binnie/craftgui/controls/core/Control.class
Binary files differ
diff --git a/bin/binnie/craftgui/controls/core/IControlIndexed.class b/bin/binnie/craftgui/controls/core/IControlIndexed.class
new file mode 100644
index 0000000000..0a9589f2ef
--- /dev/null
+++ b/bin/binnie/craftgui/controls/core/IControlIndexed.class
Binary files differ
diff --git a/bin/binnie/craftgui/controls/core/IControlValue.class b/bin/binnie/craftgui/controls/core/IControlValue.class
new file mode 100644
index 0000000000..e9d903b7da
--- /dev/null
+++ b/bin/binnie/craftgui/controls/core/IControlValue.class
Binary files differ
diff --git a/bin/binnie/craftgui/controls/core/IControlValues.class b/bin/binnie/craftgui/controls/core/IControlValues.class
new file mode 100644
index 0000000000..7ce860541b
--- /dev/null
+++ b/bin/binnie/craftgui/controls/core/IControlValues.class
Binary files differ
diff --git a/bin/binnie/craftgui/controls/listbox/ControlList.class b/bin/binnie/craftgui/controls/listbox/ControlList.class
new file mode 100644
index 0000000000..e9ce137166
--- /dev/null
+++ b/bin/binnie/craftgui/controls/listbox/ControlList.class
Binary files differ
diff --git a/bin/binnie/craftgui/controls/listbox/ControlListBox.class b/bin/binnie/craftgui/controls/listbox/ControlListBox.class
new file mode 100644
index 0000000000..25d180d7d9
--- /dev/null
+++ b/bin/binnie/craftgui/controls/listbox/ControlListBox.class
Binary files differ
diff --git a/bin/binnie/craftgui/controls/listbox/ControlOption.class b/bin/binnie/craftgui/controls/listbox/ControlOption.class
new file mode 100644
index 0000000000..63d4e8578e
--- /dev/null
+++ b/bin/binnie/craftgui/controls/listbox/ControlOption.class
Binary files differ
diff --git a/bin/binnie/craftgui/controls/listbox/ControlTextOption.class b/bin/binnie/craftgui/controls/listbox/ControlTextOption.class
new file mode 100644
index 0000000000..08bbff017a
--- /dev/null
+++ b/bin/binnie/craftgui/controls/listbox/ControlTextOption.class
Binary files differ
diff --git a/bin/binnie/craftgui/controls/page/ControlPage.class b/bin/binnie/craftgui/controls/page/ControlPage.class
new file mode 100644
index 0000000000..7fdb6681ec
--- /dev/null
+++ b/bin/binnie/craftgui/controls/page/ControlPage.class
Binary files differ
diff --git a/bin/binnie/craftgui/controls/page/ControlPages.class b/bin/binnie/craftgui/controls/page/ControlPages.class
new file mode 100644
index 0000000000..79254fc702
--- /dev/null
+++ b/bin/binnie/craftgui/controls/page/ControlPages.class
Binary files differ
diff --git a/bin/binnie/craftgui/controls/scroll/ControlScroll.class b/bin/binnie/craftgui/controls/scroll/ControlScroll.class
new file mode 100644
index 0000000000..ddb61f7686
--- /dev/null
+++ b/bin/binnie/craftgui/controls/scroll/ControlScroll.class
Binary files differ
diff --git a/bin/binnie/craftgui/controls/scroll/ControlScrollBar.class b/bin/binnie/craftgui/controls/scroll/ControlScrollBar.class
new file mode 100644
index 0000000000..5ed775843a
--- /dev/null
+++ b/bin/binnie/craftgui/controls/scroll/ControlScrollBar.class
Binary files differ
diff --git a/bin/binnie/craftgui/controls/scroll/ControlScrollableContent.class b/bin/binnie/craftgui/controls/scroll/ControlScrollableContent.class
new file mode 100644
index 0000000000..7dbf705a08
--- /dev/null
+++ b/bin/binnie/craftgui/controls/scroll/ControlScrollableContent.class
Binary files differ
diff --git a/bin/binnie/craftgui/controls/scroll/IControlScrollable.class b/bin/binnie/craftgui/controls/scroll/IControlScrollable.class
new file mode 100644
index 0000000000..13173d1e2b
--- /dev/null
+++ b/bin/binnie/craftgui/controls/scroll/IControlScrollable.class
Binary files differ
diff --git a/bin/binnie/craftgui/controls/tab/ControlTab.class b/bin/binnie/craftgui/controls/tab/ControlTab.class
new file mode 100644
index 0000000000..d0a498363a
--- /dev/null
+++ b/bin/binnie/craftgui/controls/tab/ControlTab.class
Binary files differ
diff --git a/bin/binnie/craftgui/controls/tab/ControlTabBar.class b/bin/binnie/craftgui/controls/tab/ControlTabBar.class
new file mode 100644
index 0000000000..d7ce791e3b
--- /dev/null
+++ b/bin/binnie/craftgui/controls/tab/ControlTabBar.class
Binary files differ
diff --git a/bin/binnie/craftgui/core/Attribute.class b/bin/binnie/craftgui/core/Attribute.class
new file mode 100644
index 0000000000..6892e1a165
--- /dev/null
+++ b/bin/binnie/craftgui/core/Attribute.class
Binary files differ
diff --git a/bin/binnie/craftgui/core/CraftGUI.class b/bin/binnie/craftgui/core/CraftGUI.class
new file mode 100644
index 0000000000..80759ca914
--- /dev/null
+++ b/bin/binnie/craftgui/core/CraftGUI.class
Binary files differ
diff --git a/bin/binnie/craftgui/core/ITooltip.class b/bin/binnie/craftgui/core/ITooltip.class
new file mode 100644
index 0000000000..d819949377
--- /dev/null
+++ b/bin/binnie/craftgui/core/ITooltip.class
Binary files differ
diff --git a/bin/binnie/craftgui/core/ITooltipHelp.class b/bin/binnie/craftgui/core/ITooltipHelp.class
new file mode 100644
index 0000000000..dd6bc57e82
--- /dev/null
+++ b/bin/binnie/craftgui/core/ITooltipHelp.class
Binary files differ
diff --git a/bin/binnie/craftgui/core/ITopLevelWidget.class b/bin/binnie/craftgui/core/ITopLevelWidget.class
new file mode 100644
index 0000000000..566ed4d743
--- /dev/null
+++ b/bin/binnie/craftgui/core/ITopLevelWidget.class
Binary files differ
diff --git a/bin/binnie/craftgui/core/IWidget.class b/bin/binnie/craftgui/core/IWidget.class
new file mode 100644
index 0000000000..2aa1c191b0
--- /dev/null
+++ b/bin/binnie/craftgui/core/IWidget.class
Binary files differ
diff --git a/bin/binnie/craftgui/core/IWidgetAttribute.class b/bin/binnie/craftgui/core/IWidgetAttribute.class
new file mode 100644
index 0000000000..d5280b440f
--- /dev/null
+++ b/bin/binnie/craftgui/core/IWidgetAttribute.class
Binary files differ
diff --git a/bin/binnie/craftgui/core/RenderStage.class b/bin/binnie/craftgui/core/RenderStage.class
new file mode 100644
index 0000000000..6ab2507701
--- /dev/null
+++ b/bin/binnie/craftgui/core/RenderStage.class
Binary files differ
diff --git a/bin/binnie/craftgui/core/Tooltip$ITooltipType.class b/bin/binnie/craftgui/core/Tooltip$ITooltipType.class
new file mode 100644
index 0000000000..e83bdb3843
--- /dev/null
+++ b/bin/binnie/craftgui/core/Tooltip$ITooltipType.class
Binary files differ
diff --git a/bin/binnie/craftgui/core/Tooltip$Type.class b/bin/binnie/craftgui/core/Tooltip$Type.class
new file mode 100644
index 0000000000..4e9fcc40f5
--- /dev/null
+++ b/bin/binnie/craftgui/core/Tooltip$Type.class
Binary files differ
diff --git a/bin/binnie/craftgui/core/Tooltip.class b/bin/binnie/craftgui/core/Tooltip.class
new file mode 100644
index 0000000000..5ddf3d2420
--- /dev/null
+++ b/bin/binnie/craftgui/core/Tooltip.class
Binary files differ
diff --git a/bin/binnie/craftgui/core/TopLevelWidget.class b/bin/binnie/craftgui/core/TopLevelWidget.class
new file mode 100644
index 0000000000..79982c6bb1
--- /dev/null
+++ b/bin/binnie/craftgui/core/TopLevelWidget.class
Binary files differ
diff --git a/bin/binnie/craftgui/core/Widget.class b/bin/binnie/craftgui/core/Widget.class
new file mode 100644
index 0000000000..b448a0a6ec
--- /dev/null
+++ b/bin/binnie/craftgui/core/Widget.class
Binary files differ
diff --git a/bin/binnie/craftgui/core/geometry/CraftGUIUtil$1.class b/bin/binnie/craftgui/core/geometry/CraftGUIUtil$1.class
new file mode 100644
index 0000000000..4a5b26db1b
--- /dev/null
+++ b/bin/binnie/craftgui/core/geometry/CraftGUIUtil$1.class
Binary files differ
diff --git a/bin/binnie/craftgui/core/geometry/CraftGUIUtil$2.class b/bin/binnie/craftgui/core/geometry/CraftGUIUtil$2.class
new file mode 100644
index 0000000000..713c3d1f90
--- /dev/null
+++ b/bin/binnie/craftgui/core/geometry/CraftGUIUtil$2.class
Binary files differ
diff --git a/bin/binnie/craftgui/core/geometry/CraftGUIUtil.class b/bin/binnie/craftgui/core/geometry/CraftGUIUtil.class
new file mode 100644
index 0000000000..a89b68312d
--- /dev/null
+++ b/bin/binnie/craftgui/core/geometry/CraftGUIUtil.class
Binary files differ
diff --git a/bin/binnie/craftgui/core/geometry/IArea.class b/bin/binnie/craftgui/core/geometry/IArea.class
new file mode 100644
index 0000000000..3cec4b9a5e
--- /dev/null
+++ b/bin/binnie/craftgui/core/geometry/IArea.class
Binary files differ
diff --git a/bin/binnie/craftgui/core/geometry/IBorder.class b/bin/binnie/craftgui/core/geometry/IBorder.class
new file mode 100644
index 0000000000..aebb8f83a6
--- /dev/null
+++ b/bin/binnie/craftgui/core/geometry/IBorder.class
Binary files differ
diff --git a/bin/binnie/craftgui/core/geometry/IPoint.class b/bin/binnie/craftgui/core/geometry/IPoint.class
new file mode 100644
index 0000000000..b59a53bec2
--- /dev/null
+++ b/bin/binnie/craftgui/core/geometry/IPoint.class
Binary files differ
diff --git a/bin/binnie/craftgui/core/geometry/Position.class b/bin/binnie/craftgui/core/geometry/Position.class
new file mode 100644
index 0000000000..19f711c271
--- /dev/null
+++ b/bin/binnie/craftgui/core/geometry/Position.class
Binary files differ
diff --git a/bin/binnie/craftgui/core/geometry/TextJustification.class b/bin/binnie/craftgui/core/geometry/TextJustification.class
new file mode 100644
index 0000000000..4f28cdbf70
--- /dev/null
+++ b/bin/binnie/craftgui/core/geometry/TextJustification.class
Binary files differ
diff --git a/bin/binnie/craftgui/core/renderer/Renderer.class b/bin/binnie/craftgui/core/renderer/Renderer.class
new file mode 100644
index 0000000000..a8b44ce3f5
--- /dev/null
+++ b/bin/binnie/craftgui/core/renderer/Renderer.class
Binary files differ
diff --git a/bin/binnie/craftgui/core/renderer/TextureType.class b/bin/binnie/craftgui/core/renderer/TextureType.class
new file mode 100644
index 0000000000..1b506afe8c
--- /dev/null
+++ b/bin/binnie/craftgui/core/renderer/TextureType.class
Binary files differ
diff --git a/bin/binnie/craftgui/events/Event.class b/bin/binnie/craftgui/events/Event.class
new file mode 100644
index 0000000000..4dca706f8c
--- /dev/null
+++ b/bin/binnie/craftgui/events/Event.class
Binary files differ
diff --git a/bin/binnie/craftgui/events/EventButtonClicked$Handler.class b/bin/binnie/craftgui/events/EventButtonClicked$Handler.class
new file mode 100644
index 0000000000..0c0468114c
--- /dev/null
+++ b/bin/binnie/craftgui/events/EventButtonClicked$Handler.class
Binary files differ
diff --git a/bin/binnie/craftgui/events/EventButtonClicked.class b/bin/binnie/craftgui/events/EventButtonClicked.class
new file mode 100644
index 0000000000..ea7adbc9ca
--- /dev/null
+++ b/bin/binnie/craftgui/events/EventButtonClicked.class
Binary files differ
diff --git a/bin/binnie/craftgui/events/EventCycleChanged.class b/bin/binnie/craftgui/events/EventCycleChanged.class
new file mode 100644
index 0000000000..74088fe55e
--- /dev/null
+++ b/bin/binnie/craftgui/events/EventCycleChanged.class
Binary files differ
diff --git a/bin/binnie/craftgui/events/EventHandler$Origin.class b/bin/binnie/craftgui/events/EventHandler$Origin.class
new file mode 100644
index 0000000000..f833883c4e
--- /dev/null
+++ b/bin/binnie/craftgui/events/EventHandler$Origin.class
Binary files differ
diff --git a/bin/binnie/craftgui/events/EventHandler.class b/bin/binnie/craftgui/events/EventHandler.class
new file mode 100644
index 0000000000..6060869481
--- /dev/null
+++ b/bin/binnie/craftgui/events/EventHandler.class
Binary files differ
diff --git a/bin/binnie/craftgui/events/EventKey$Down$Handler.class b/bin/binnie/craftgui/events/EventKey$Down$Handler.class
new file mode 100644
index 0000000000..cc5af7cb77
--- /dev/null
+++ b/bin/binnie/craftgui/events/EventKey$Down$Handler.class
Binary files differ
diff --git a/bin/binnie/craftgui/events/EventKey$Down.class b/bin/binnie/craftgui/events/EventKey$Down.class
new file mode 100644
index 0000000000..556ca38e6d
--- /dev/null
+++ b/bin/binnie/craftgui/events/EventKey$Down.class
Binary files differ
diff --git a/bin/binnie/craftgui/events/EventKey$Up$Handler.class b/bin/binnie/craftgui/events/EventKey$Up$Handler.class
new file mode 100644
index 0000000000..72b644c04a
--- /dev/null
+++ b/bin/binnie/craftgui/events/EventKey$Up$Handler.class
Binary files differ
diff --git a/bin/binnie/craftgui/events/EventKey$Up.class b/bin/binnie/craftgui/events/EventKey$Up.class
new file mode 100644
index 0000000000..8c4ecbb3fe
--- /dev/null
+++ b/bin/binnie/craftgui/events/EventKey$Up.class
Binary files differ
diff --git a/bin/binnie/craftgui/events/EventKey.class b/bin/binnie/craftgui/events/EventKey.class
new file mode 100644
index 0000000000..34f1ae6192
--- /dev/null
+++ b/bin/binnie/craftgui/events/EventKey.class
Binary files differ
diff --git a/bin/binnie/craftgui/events/EventMouse$Button.class b/bin/binnie/craftgui/events/EventMouse$Button.class
new file mode 100644
index 0000000000..322c6d6bca
--- /dev/null
+++ b/bin/binnie/craftgui/events/EventMouse$Button.class
Binary files differ
diff --git a/bin/binnie/craftgui/events/EventMouse$Down$Handler.class b/bin/binnie/craftgui/events/EventMouse$Down$Handler.class
new file mode 100644
index 0000000000..319c5eea47
--- /dev/null
+++ b/bin/binnie/craftgui/events/EventMouse$Down$Handler.class
Binary files differ
diff --git a/bin/binnie/craftgui/events/EventMouse$Down.class b/bin/binnie/craftgui/events/EventMouse$Down.class
new file mode 100644
index 0000000000..938a95ea2f
--- /dev/null
+++ b/bin/binnie/craftgui/events/EventMouse$Down.class
Binary files differ
diff --git a/bin/binnie/craftgui/events/EventMouse$Drag$Handler.class b/bin/binnie/craftgui/events/EventMouse$Drag$Handler.class
new file mode 100644
index 0000000000..87e5322915
--- /dev/null
+++ b/bin/binnie/craftgui/events/EventMouse$Drag$Handler.class
Binary files differ
diff --git a/bin/binnie/craftgui/events/EventMouse$Drag.class b/bin/binnie/craftgui/events/EventMouse$Drag.class
new file mode 100644
index 0000000000..9f048e8b65
--- /dev/null
+++ b/bin/binnie/craftgui/events/EventMouse$Drag.class
Binary files differ
diff --git a/bin/binnie/craftgui/events/EventMouse$Move$Handler.class b/bin/binnie/craftgui/events/EventMouse$Move$Handler.class
new file mode 100644
index 0000000000..6848481869
--- /dev/null
+++ b/bin/binnie/craftgui/events/EventMouse$Move$Handler.class
Binary files differ
diff --git a/bin/binnie/craftgui/events/EventMouse$Move.class b/bin/binnie/craftgui/events/EventMouse$Move.class
new file mode 100644
index 0000000000..4b18a25804
--- /dev/null
+++ b/bin/binnie/craftgui/events/EventMouse$Move.class
Binary files differ
diff --git a/bin/binnie/craftgui/events/EventMouse$Up$Handler.class b/bin/binnie/craftgui/events/EventMouse$Up$Handler.class
new file mode 100644
index 0000000000..f8f7ca14dc
--- /dev/null
+++ b/bin/binnie/craftgui/events/EventMouse$Up$Handler.class
Binary files differ
diff --git a/bin/binnie/craftgui/events/EventMouse$Up.class b/bin/binnie/craftgui/events/EventMouse$Up.class
new file mode 100644
index 0000000000..96bf180b0f
--- /dev/null
+++ b/bin/binnie/craftgui/events/EventMouse$Up.class
Binary files differ
diff --git a/bin/binnie/craftgui/events/EventMouse$Wheel$Handler.class b/bin/binnie/craftgui/events/EventMouse$Wheel$Handler.class
new file mode 100644
index 0000000000..a3bb9a627f
--- /dev/null
+++ b/bin/binnie/craftgui/events/EventMouse$Wheel$Handler.class
Binary files differ
diff --git a/bin/binnie/craftgui/events/EventMouse$Wheel.class b/bin/binnie/craftgui/events/EventMouse$Wheel.class
new file mode 100644
index 0000000000..d383d428e0
--- /dev/null
+++ b/bin/binnie/craftgui/events/EventMouse$Wheel.class
Binary files differ
diff --git a/bin/binnie/craftgui/events/EventMouse.class b/bin/binnie/craftgui/events/EventMouse.class
new file mode 100644
index 0000000000..edfa9420b7
--- /dev/null
+++ b/bin/binnie/craftgui/events/EventMouse.class
Binary files differ
diff --git a/bin/binnie/craftgui/events/EventTextEdit$Handler.class b/bin/binnie/craftgui/events/EventTextEdit$Handler.class
new file mode 100644
index 0000000000..579dd6e077
--- /dev/null
+++ b/bin/binnie/craftgui/events/EventTextEdit$Handler.class
Binary files differ
diff --git a/bin/binnie/craftgui/events/EventTextEdit.class b/bin/binnie/craftgui/events/EventTextEdit.class
new file mode 100644
index 0000000000..3549167b6b
--- /dev/null
+++ b/bin/binnie/craftgui/events/EventTextEdit.class
Binary files differ
diff --git a/bin/binnie/craftgui/events/EventToggleButtonClicked.class b/bin/binnie/craftgui/events/EventToggleButtonClicked.class
new file mode 100644
index 0000000000..4afaef4841
--- /dev/null
+++ b/bin/binnie/craftgui/events/EventToggleButtonClicked.class
Binary files differ
diff --git a/bin/binnie/craftgui/events/EventValueChanged$Handler.class b/bin/binnie/craftgui/events/EventValueChanged$Handler.class
new file mode 100644
index 0000000000..cc3631281f
--- /dev/null
+++ b/bin/binnie/craftgui/events/EventValueChanged$Handler.class
Binary files differ
diff --git a/bin/binnie/craftgui/events/EventValueChanged.class b/bin/binnie/craftgui/events/EventValueChanged.class
new file mode 100644
index 0000000000..33b253c826
--- /dev/null
+++ b/bin/binnie/craftgui/events/EventValueChanged.class
Binary files differ
diff --git a/bin/binnie/craftgui/events/EventValuesChanged.class b/bin/binnie/craftgui/events/EventValuesChanged.class
new file mode 100644
index 0000000000..c2f2b52071
--- /dev/null
+++ b/bin/binnie/craftgui/events/EventValuesChanged.class
Binary files differ
diff --git a/bin/binnie/craftgui/events/EventWidget$ChangeColour$Handler.class b/bin/binnie/craftgui/events/EventWidget$ChangeColour$Handler.class
new file mode 100644
index 0000000000..b6d2ac258a
--- /dev/null
+++ b/bin/binnie/craftgui/events/EventWidget$ChangeColour$Handler.class
Binary files differ
diff --git a/bin/binnie/craftgui/events/EventWidget$ChangeColour.class b/bin/binnie/craftgui/events/EventWidget$ChangeColour.class
new file mode 100644
index 0000000000..3099a9ed3c
--- /dev/null
+++ b/bin/binnie/craftgui/events/EventWidget$ChangeColour.class
Binary files differ
diff --git a/bin/binnie/craftgui/events/EventWidget$ChangeOffset$Handler.class b/bin/binnie/craftgui/events/EventWidget$ChangeOffset$Handler.class
new file mode 100644
index 0000000000..31e771f483
--- /dev/null
+++ b/bin/binnie/craftgui/events/EventWidget$ChangeOffset$Handler.class
Binary files differ
diff --git a/bin/binnie/craftgui/events/EventWidget$ChangeOffset.class b/bin/binnie/craftgui/events/EventWidget$ChangeOffset.class
new file mode 100644
index 0000000000..94d0651611
--- /dev/null
+++ b/bin/binnie/craftgui/events/EventWidget$ChangeOffset.class
Binary files differ
diff --git a/bin/binnie/craftgui/events/EventWidget$ChangePosition$Handler.class b/bin/binnie/craftgui/events/EventWidget$ChangePosition$Handler.class
new file mode 100644
index 0000000000..e4af286c4c
--- /dev/null
+++ b/bin/binnie/craftgui/events/EventWidget$ChangePosition$Handler.class
Binary files differ
diff --git a/bin/binnie/craftgui/events/EventWidget$ChangePosition.class b/bin/binnie/craftgui/events/EventWidget$ChangePosition.class
new file mode 100644
index 0000000000..1f785fb6c5
--- /dev/null
+++ b/bin/binnie/craftgui/events/EventWidget$ChangePosition.class
Binary files differ
diff --git a/bin/binnie/craftgui/events/EventWidget$ChangeSize$Handler.class b/bin/binnie/craftgui/events/EventWidget$ChangeSize$Handler.class
new file mode 100644
index 0000000000..9b9f7e1de7
--- /dev/null
+++ b/bin/binnie/craftgui/events/EventWidget$ChangeSize$Handler.class
Binary files differ
diff --git a/bin/binnie/craftgui/events/EventWidget$ChangeSize.class b/bin/binnie/craftgui/events/EventWidget$ChangeSize.class
new file mode 100644
index 0000000000..f9f27b1617
--- /dev/null
+++ b/bin/binnie/craftgui/events/EventWidget$ChangeSize.class
Binary files differ
diff --git a/bin/binnie/craftgui/events/EventWidget$Disable$Handler.class b/bin/binnie/craftgui/events/EventWidget$Disable$Handler.class
new file mode 100644
index 0000000000..e158662d83
--- /dev/null
+++ b/bin/binnie/craftgui/events/EventWidget$Disable$Handler.class
Binary files differ
diff --git a/bin/binnie/craftgui/events/EventWidget$Disable.class b/bin/binnie/craftgui/events/EventWidget$Disable.class
new file mode 100644
index 0000000000..75fb7f838e
--- /dev/null
+++ b/bin/binnie/craftgui/events/EventWidget$Disable.class
Binary files differ
diff --git a/bin/binnie/craftgui/events/EventWidget$Enable$Handler.class b/bin/binnie/craftgui/events/EventWidget$Enable$Handler.class
new file mode 100644
index 0000000000..3e7805be4b
--- /dev/null
+++ b/bin/binnie/craftgui/events/EventWidget$Enable$Handler.class
Binary files differ
diff --git a/bin/binnie/craftgui/events/EventWidget$Enable.class b/bin/binnie/craftgui/events/EventWidget$Enable.class
new file mode 100644
index 0000000000..f05a87ddf5
--- /dev/null
+++ b/bin/binnie/craftgui/events/EventWidget$Enable.class
Binary files differ
diff --git a/bin/binnie/craftgui/events/EventWidget$EndDrag$Handler.class b/bin/binnie/craftgui/events/EventWidget$EndDrag$Handler.class
new file mode 100644
index 0000000000..681041acc8
--- /dev/null
+++ b/bin/binnie/craftgui/events/EventWidget$EndDrag$Handler.class
Binary files differ
diff --git a/bin/binnie/craftgui/events/EventWidget$EndDrag.class b/bin/binnie/craftgui/events/EventWidget$EndDrag.class
new file mode 100644
index 0000000000..c52f4a0243
--- /dev/null
+++ b/bin/binnie/craftgui/events/EventWidget$EndDrag.class
Binary files differ
diff --git a/bin/binnie/craftgui/events/EventWidget$EndMouseOver$Handler.class b/bin/binnie/craftgui/events/EventWidget$EndMouseOver$Handler.class
new file mode 100644
index 0000000000..9c6460fc2c
--- /dev/null
+++ b/bin/binnie/craftgui/events/EventWidget$EndMouseOver$Handler.class
Binary files differ
diff --git a/bin/binnie/craftgui/events/EventWidget$EndMouseOver.class b/bin/binnie/craftgui/events/EventWidget$EndMouseOver.class
new file mode 100644
index 0000000000..f49c6764c2
--- /dev/null
+++ b/bin/binnie/craftgui/events/EventWidget$EndMouseOver.class
Binary files differ
diff --git a/bin/binnie/craftgui/events/EventWidget$GainFocus$Handler.class b/bin/binnie/craftgui/events/EventWidget$GainFocus$Handler.class
new file mode 100644
index 0000000000..6f97d7e571
--- /dev/null
+++ b/bin/binnie/craftgui/events/EventWidget$GainFocus$Handler.class
Binary files differ
diff --git a/bin/binnie/craftgui/events/EventWidget$GainFocus.class b/bin/binnie/craftgui/events/EventWidget$GainFocus.class
new file mode 100644
index 0000000000..4fa88438f2
--- /dev/null
+++ b/bin/binnie/craftgui/events/EventWidget$GainFocus.class
Binary files differ
diff --git a/bin/binnie/craftgui/events/EventWidget$Hide$Handler.class b/bin/binnie/craftgui/events/EventWidget$Hide$Handler.class
new file mode 100644
index 0000000000..3a44b09086
--- /dev/null
+++ b/bin/binnie/craftgui/events/EventWidget$Hide$Handler.class
Binary files differ
diff --git a/bin/binnie/craftgui/events/EventWidget$Hide.class b/bin/binnie/craftgui/events/EventWidget$Hide.class
new file mode 100644
index 0000000000..d6c1fd2a4f
--- /dev/null
+++ b/bin/binnie/craftgui/events/EventWidget$Hide.class
Binary files differ
diff --git a/bin/binnie/craftgui/events/EventWidget$LoseFocus$Handler.class b/bin/binnie/craftgui/events/EventWidget$LoseFocus$Handler.class
new file mode 100644
index 0000000000..669646b28d
--- /dev/null
+++ b/bin/binnie/craftgui/events/EventWidget$LoseFocus$Handler.class
Binary files differ
diff --git a/bin/binnie/craftgui/events/EventWidget$LoseFocus.class b/bin/binnie/craftgui/events/EventWidget$LoseFocus.class
new file mode 100644
index 0000000000..e4a25f673b
--- /dev/null
+++ b/bin/binnie/craftgui/events/EventWidget$LoseFocus.class
Binary files differ
diff --git a/bin/binnie/craftgui/events/EventWidget$Show$Handler.class b/bin/binnie/craftgui/events/EventWidget$Show$Handler.class
new file mode 100644
index 0000000000..6f65b38aea
--- /dev/null
+++ b/bin/binnie/craftgui/events/EventWidget$Show$Handler.class
Binary files differ
diff --git a/bin/binnie/craftgui/events/EventWidget$Show.class b/bin/binnie/craftgui/events/EventWidget$Show.class
new file mode 100644
index 0000000000..ed908eddb4
--- /dev/null
+++ b/bin/binnie/craftgui/events/EventWidget$Show.class
Binary files differ
diff --git a/bin/binnie/craftgui/events/EventWidget$StartDrag$Handler.class b/bin/binnie/craftgui/events/EventWidget$StartDrag$Handler.class
new file mode 100644
index 0000000000..bcfbf9c661
--- /dev/null
+++ b/bin/binnie/craftgui/events/EventWidget$StartDrag$Handler.class
Binary files differ
diff --git a/bin/binnie/craftgui/events/EventWidget$StartDrag.class b/bin/binnie/craftgui/events/EventWidget$StartDrag.class
new file mode 100644
index 0000000000..e5f9b0319d
--- /dev/null
+++ b/bin/binnie/craftgui/events/EventWidget$StartDrag.class
Binary files differ
diff --git a/bin/binnie/craftgui/events/EventWidget$StartMouseOver$Handler.class b/bin/binnie/craftgui/events/EventWidget$StartMouseOver$Handler.class
new file mode 100644
index 0000000000..92ffb65bd3
--- /dev/null
+++ b/bin/binnie/craftgui/events/EventWidget$StartMouseOver$Handler.class
Binary files differ
diff --git a/bin/binnie/craftgui/events/EventWidget$StartMouseOver.class b/bin/binnie/craftgui/events/EventWidget$StartMouseOver.class
new file mode 100644
index 0000000000..e5594c520c
--- /dev/null
+++ b/bin/binnie/craftgui/events/EventWidget$StartMouseOver.class
Binary files differ
diff --git a/bin/binnie/craftgui/events/EventWidget.class b/bin/binnie/craftgui/events/EventWidget.class
new file mode 100644
index 0000000000..8087fe470e
--- /dev/null
+++ b/bin/binnie/craftgui/events/EventWidget.class
Binary files differ
diff --git a/bin/binnie/craftgui/extratrees/dictionary/ControlBlockIconDisplay.class b/bin/binnie/craftgui/extratrees/dictionary/ControlBlockIconDisplay.class
new file mode 100644
index 0000000000..0e01faa7c4
--- /dev/null
+++ b/bin/binnie/craftgui/extratrees/dictionary/ControlBlockIconDisplay.class
Binary files differ
diff --git a/bin/binnie/craftgui/extratrees/dictionary/ControlBreweryProgress.class b/bin/binnie/craftgui/extratrees/dictionary/ControlBreweryProgress.class
new file mode 100644
index 0000000000..44bdd577c8
--- /dev/null
+++ b/bin/binnie/craftgui/extratrees/dictionary/ControlBreweryProgress.class
Binary files differ
diff --git a/bin/binnie/craftgui/extratrees/dictionary/ControlDistilleryProgress.class b/bin/binnie/craftgui/extratrees/dictionary/ControlDistilleryProgress.class
new file mode 100644
index 0000000000..a0d3b1f79f
--- /dev/null
+++ b/bin/binnie/craftgui/extratrees/dictionary/ControlDistilleryProgress.class
Binary files differ
diff --git a/bin/binnie/craftgui/extratrees/dictionary/ControlFruitPressProgress.class b/bin/binnie/craftgui/extratrees/dictionary/ControlFruitPressProgress.class
new file mode 100644
index 0000000000..44fa57fd97
--- /dev/null
+++ b/bin/binnie/craftgui/extratrees/dictionary/ControlFruitPressProgress.class
Binary files differ
diff --git a/bin/binnie/craftgui/extratrees/dictionary/ControlLumbermillProgress.class b/bin/binnie/craftgui/extratrees/dictionary/ControlLumbermillProgress.class
new file mode 100644
index 0000000000..21eb913585
--- /dev/null
+++ b/bin/binnie/craftgui/extratrees/dictionary/ControlLumbermillProgress.class
Binary files differ
diff --git a/bin/binnie/craftgui/extratrees/dictionary/ControlRecipeSlot.class b/bin/binnie/craftgui/extratrees/dictionary/ControlRecipeSlot.class
new file mode 100644
index 0000000000..cfe322020f
--- /dev/null
+++ b/bin/binnie/craftgui/extratrees/dictionary/ControlRecipeSlot.class
Binary files differ
diff --git a/bin/binnie/craftgui/extratrees/dictionary/ControlTileSelect$ControlTile.class b/bin/binnie/craftgui/extratrees/dictionary/ControlTileSelect$ControlTile.class
new file mode 100644
index 0000000000..3a5f0ba780
--- /dev/null
+++ b/bin/binnie/craftgui/extratrees/dictionary/ControlTileSelect$ControlTile.class
Binary files differ
diff --git a/bin/binnie/craftgui/extratrees/dictionary/ControlTileSelect.class b/bin/binnie/craftgui/extratrees/dictionary/ControlTileSelect.class
new file mode 100644
index 0000000000..9ad84ef981
--- /dev/null
+++ b/bin/binnie/craftgui/extratrees/dictionary/ControlTileSelect.class
Binary files differ
diff --git a/bin/binnie/craftgui/extratrees/dictionary/DialogBreweryRecipe.class b/bin/binnie/craftgui/extratrees/dictionary/DialogBreweryRecipe.class
new file mode 100644
index 0000000000..af40d1305d
--- /dev/null
+++ b/bin/binnie/craftgui/extratrees/dictionary/DialogBreweryRecipe.class
Binary files differ
diff --git a/bin/binnie/craftgui/extratrees/dictionary/PageFruit.class b/bin/binnie/craftgui/extratrees/dictionary/PageFruit.class
new file mode 100644
index 0000000000..9767a8617f
--- /dev/null
+++ b/bin/binnie/craftgui/extratrees/dictionary/PageFruit.class
Binary files differ
diff --git a/bin/binnie/craftgui/extratrees/dictionary/PagePlanksOverview.class b/bin/binnie/craftgui/extratrees/dictionary/PagePlanksOverview.class
new file mode 100644
index 0000000000..dae1aa4cf9
--- /dev/null
+++ b/bin/binnie/craftgui/extratrees/dictionary/PagePlanksOverview.class
Binary files differ
diff --git a/bin/binnie/craftgui/extratrees/dictionary/PagePlanksTrees.class b/bin/binnie/craftgui/extratrees/dictionary/PagePlanksTrees.class
new file mode 100644
index 0000000000..bb0ccc4ed7
--- /dev/null
+++ b/bin/binnie/craftgui/extratrees/dictionary/PagePlanksTrees.class
Binary files differ
diff --git a/bin/binnie/craftgui/extratrees/dictionary/PageSpeciesImage.class b/bin/binnie/craftgui/extratrees/dictionary/PageSpeciesImage.class
new file mode 100644
index 0000000000..98f8b17803
--- /dev/null
+++ b/bin/binnie/craftgui/extratrees/dictionary/PageSpeciesImage.class
Binary files differ
diff --git a/bin/binnie/craftgui/extratrees/dictionary/PageSpeciesTreeGenome.class b/bin/binnie/craftgui/extratrees/dictionary/PageSpeciesTreeGenome.class
new file mode 100644
index 0000000000..92f98005fc
--- /dev/null
+++ b/bin/binnie/craftgui/extratrees/dictionary/PageSpeciesTreeGenome.class
Binary files differ
diff --git a/bin/binnie/craftgui/extratrees/dictionary/PageWood.class b/bin/binnie/craftgui/extratrees/dictionary/PageWood.class
new file mode 100644
index 0000000000..583e03e8a4
--- /dev/null
+++ b/bin/binnie/craftgui/extratrees/dictionary/PageWood.class
Binary files differ
diff --git a/bin/binnie/craftgui/extratrees/dictionary/WindowArboristDatabase$TreeMode.class b/bin/binnie/craftgui/extratrees/dictionary/WindowArboristDatabase$TreeMode.class
new file mode 100644
index 0000000000..7772f61585
--- /dev/null
+++ b/bin/binnie/craftgui/extratrees/dictionary/WindowArboristDatabase$TreeMode.class
Binary files differ
diff --git a/bin/binnie/craftgui/extratrees/dictionary/WindowArboristDatabase.class b/bin/binnie/craftgui/extratrees/dictionary/WindowArboristDatabase.class
new file mode 100644
index 0000000000..836b7d6579
--- /dev/null
+++ b/bin/binnie/craftgui/extratrees/dictionary/WindowArboristDatabase.class
Binary files differ
diff --git a/bin/binnie/craftgui/extratrees/dictionary/WindowBrewery.class b/bin/binnie/craftgui/extratrees/dictionary/WindowBrewery.class
new file mode 100644
index 0000000000..3f1cc7a4da
--- /dev/null
+++ b/bin/binnie/craftgui/extratrees/dictionary/WindowBrewery.class
Binary files differ
diff --git a/bin/binnie/craftgui/extratrees/dictionary/WindowDistillery.class b/bin/binnie/craftgui/extratrees/dictionary/WindowDistillery.class
new file mode 100644
index 0000000000..0a55bcae2a
--- /dev/null
+++ b/bin/binnie/craftgui/extratrees/dictionary/WindowDistillery.class
Binary files differ
diff --git a/bin/binnie/craftgui/extratrees/dictionary/WindowLepidopteristDatabase.class b/bin/binnie/craftgui/extratrees/dictionary/WindowLepidopteristDatabase.class
new file mode 100644
index 0000000000..b0dd3c2001
--- /dev/null
+++ b/bin/binnie/craftgui/extratrees/dictionary/WindowLepidopteristDatabase.class
Binary files differ
diff --git a/bin/binnie/craftgui/extratrees/dictionary/WindowLumbermill.class b/bin/binnie/craftgui/extratrees/dictionary/WindowLumbermill.class
new file mode 100644
index 0000000000..fcef8ab55e
--- /dev/null
+++ b/bin/binnie/craftgui/extratrees/dictionary/WindowLumbermill.class
Binary files differ
diff --git a/bin/binnie/craftgui/extratrees/dictionary/WindowPress.class b/bin/binnie/craftgui/extratrees/dictionary/WindowPress.class
new file mode 100644
index 0000000000..f962062614
--- /dev/null
+++ b/bin/binnie/craftgui/extratrees/dictionary/WindowPress.class
Binary files differ
diff --git a/bin/binnie/craftgui/extratrees/dictionary/WindowSetSquare.class b/bin/binnie/craftgui/extratrees/dictionary/WindowSetSquare.class
new file mode 100644
index 0000000000..018a10f008
--- /dev/null
+++ b/bin/binnie/craftgui/extratrees/dictionary/WindowSetSquare.class
Binary files differ
diff --git a/bin/binnie/craftgui/extratrees/dictionary/WindowWoodworker.class b/bin/binnie/craftgui/extratrees/dictionary/WindowWoodworker.class
new file mode 100644
index 0000000000..b15005d81c
--- /dev/null
+++ b/bin/binnie/craftgui/extratrees/dictionary/WindowWoodworker.class
Binary files differ
diff --git a/bin/binnie/craftgui/extratrees/kitchen/ControlDropDownMenu.class b/bin/binnie/craftgui/extratrees/kitchen/ControlDropDownMenu.class
new file mode 100644
index 0000000000..3a993de763
--- /dev/null
+++ b/bin/binnie/craftgui/extratrees/kitchen/ControlDropDownMenu.class
Binary files differ
diff --git a/bin/binnie/craftgui/extratrees/kitchen/ControlDropdownButton.class b/bin/binnie/craftgui/extratrees/kitchen/ControlDropdownButton.class
new file mode 100644
index 0000000000..f7c9f74516
--- /dev/null
+++ b/bin/binnie/craftgui/extratrees/kitchen/ControlDropdownButton.class
Binary files differ
diff --git a/bin/binnie/craftgui/extratrees/kitchen/ControlFluidDisplay.class b/bin/binnie/craftgui/extratrees/kitchen/ControlFluidDisplay.class
new file mode 100644
index 0000000000..50d4be3d03
--- /dev/null
+++ b/bin/binnie/craftgui/extratrees/kitchen/ControlFluidDisplay.class
Binary files differ
diff --git a/bin/binnie/craftgui/extratrees/kitchen/ControlSlotFluid.class b/bin/binnie/craftgui/extratrees/kitchen/ControlSlotFluid.class
new file mode 100644
index 0000000000..cbc16fa081
--- /dev/null
+++ b/bin/binnie/craftgui/extratrees/kitchen/ControlSlotFluid.class
Binary files differ
diff --git a/bin/binnie/craftgui/extratrees/kitchen/ControlSlotGlassware.class b/bin/binnie/craftgui/extratrees/kitchen/ControlSlotGlassware.class
new file mode 100644
index 0000000000..719f207011
--- /dev/null
+++ b/bin/binnie/craftgui/extratrees/kitchen/ControlSlotGlassware.class
Binary files differ
diff --git a/bin/binnie/craftgui/extratrees/kitchen/ControlTankSlot.class b/bin/binnie/craftgui/extratrees/kitchen/ControlTankSlot.class
new file mode 100644
index 0000000000..4a6a64b514
--- /dev/null
+++ b/bin/binnie/craftgui/extratrees/kitchen/ControlTankSlot.class
Binary files differ
diff --git a/bin/binnie/craftgui/extratrees/kitchen/WindowBottleRack.class b/bin/binnie/craftgui/extratrees/kitchen/WindowBottleRack.class
new file mode 100644
index 0000000000..5f84982166
--- /dev/null
+++ b/bin/binnie/craftgui/extratrees/kitchen/WindowBottleRack.class
Binary files differ
diff --git a/bin/binnie/craftgui/genetics/machine/ControlGene.class b/bin/binnie/craftgui/genetics/machine/ControlGene.class
new file mode 100644
index 0000000000..f70447ba05
--- /dev/null
+++ b/bin/binnie/craftgui/genetics/machine/ControlGene.class
Binary files differ
diff --git a/bin/binnie/craftgui/genetics/machine/ControlGeneScroll.class b/bin/binnie/craftgui/genetics/machine/ControlGeneScroll.class
new file mode 100644
index 0000000000..a6cdd11568
--- /dev/null
+++ b/bin/binnie/craftgui/genetics/machine/ControlGeneScroll.class
Binary files differ
diff --git a/bin/binnie/craftgui/genetics/machine/ControlProcessTemporary.class b/bin/binnie/craftgui/genetics/machine/ControlProcessTemporary.class
new file mode 100644
index 0000000000..784d05253f
--- /dev/null
+++ b/bin/binnie/craftgui/genetics/machine/ControlProcessTemporary.class
Binary files differ
diff --git a/bin/binnie/craftgui/genetics/machine/ControlSequencerProgress.class b/bin/binnie/craftgui/genetics/machine/ControlSequencerProgress.class
new file mode 100644
index 0000000000..c13b1dd5be
--- /dev/null
+++ b/bin/binnie/craftgui/genetics/machine/ControlSequencerProgress.class
Binary files differ
diff --git a/bin/binnie/craftgui/genetics/machine/ControlSplicerProgress.class b/bin/binnie/craftgui/genetics/machine/ControlSplicerProgress.class
new file mode 100644
index 0000000000..dbf9bfb922
--- /dev/null
+++ b/bin/binnie/craftgui/genetics/machine/ControlSplicerProgress.class
Binary files differ
diff --git a/bin/binnie/craftgui/genetics/machine/WindowAcclimatiser.class b/bin/binnie/craftgui/genetics/machine/WindowAcclimatiser.class
new file mode 100644
index 0000000000..d38ab75e24
--- /dev/null
+++ b/bin/binnie/craftgui/genetics/machine/WindowAcclimatiser.class
Binary files differ
diff --git a/bin/binnie/craftgui/genetics/machine/WindowAnalyser.class b/bin/binnie/craftgui/genetics/machine/WindowAnalyser.class
new file mode 100644
index 0000000000..6949fd088b
--- /dev/null
+++ b/bin/binnie/craftgui/genetics/machine/WindowAnalyser.class
Binary files differ
diff --git a/bin/binnie/craftgui/genetics/machine/WindowGeneBank$ChromosomeType.class b/bin/binnie/craftgui/genetics/machine/WindowGeneBank$ChromosomeType.class
new file mode 100644
index 0000000000..a7de57401b
--- /dev/null
+++ b/bin/binnie/craftgui/genetics/machine/WindowGeneBank$ChromosomeType.class
Binary files differ
diff --git a/bin/binnie/craftgui/genetics/machine/WindowGeneBank.class b/bin/binnie/craftgui/genetics/machine/WindowGeneBank.class
new file mode 100644
index 0000000000..36cedecc5e
--- /dev/null
+++ b/bin/binnie/craftgui/genetics/machine/WindowGeneBank.class
Binary files differ
diff --git a/bin/binnie/craftgui/genetics/machine/WindowGeneBankNEI.class b/bin/binnie/craftgui/genetics/machine/WindowGeneBankNEI.class
new file mode 100644
index 0000000000..c9fe545fec
--- /dev/null
+++ b/bin/binnie/craftgui/genetics/machine/WindowGeneBankNEI.class
Binary files differ
diff --git a/bin/binnie/craftgui/genetics/machine/WindowGeneProject.class b/bin/binnie/craftgui/genetics/machine/WindowGeneProject.class
new file mode 100644
index 0000000000..f79b4a76f7
--- /dev/null
+++ b/bin/binnie/craftgui/genetics/machine/WindowGeneProject.class
Binary files differ
diff --git a/bin/binnie/craftgui/genetics/machine/WindowGenepool.class b/bin/binnie/craftgui/genetics/machine/WindowGenepool.class
new file mode 100644
index 0000000000..97c0015cb3
--- /dev/null
+++ b/bin/binnie/craftgui/genetics/machine/WindowGenepool.class
Binary files differ
diff --git a/bin/binnie/craftgui/genetics/machine/WindowGenomeAssembler.class b/bin/binnie/craftgui/genetics/machine/WindowGenomeAssembler.class
new file mode 100644
index 0000000000..0af8a7b002
--- /dev/null
+++ b/bin/binnie/craftgui/genetics/machine/WindowGenomeAssembler.class
Binary files differ
diff --git a/bin/binnie/craftgui/genetics/machine/WindowIncubator.class b/bin/binnie/craftgui/genetics/machine/WindowIncubator.class
new file mode 100644
index 0000000000..6be9799026
--- /dev/null
+++ b/bin/binnie/craftgui/genetics/machine/WindowIncubator.class
Binary files differ
diff --git a/bin/binnie/craftgui/genetics/machine/WindowInoculator.class b/bin/binnie/craftgui/genetics/machine/WindowInoculator.class
new file mode 100644
index 0000000000..9e95fdc531
--- /dev/null
+++ b/bin/binnie/craftgui/genetics/machine/WindowInoculator.class
Binary files differ
diff --git a/bin/binnie/craftgui/genetics/machine/WindowIsolator.class b/bin/binnie/craftgui/genetics/machine/WindowIsolator.class
new file mode 100644
index 0000000000..cae8616bde
--- /dev/null
+++ b/bin/binnie/craftgui/genetics/machine/WindowIsolator.class
Binary files differ
diff --git a/bin/binnie/craftgui/genetics/machine/WindowMachine.class b/bin/binnie/craftgui/genetics/machine/WindowMachine.class
new file mode 100644
index 0000000000..b428222815
--- /dev/null
+++ b/bin/binnie/craftgui/genetics/machine/WindowMachine.class
Binary files differ
diff --git a/bin/binnie/craftgui/genetics/machine/WindowPolymeriser.class b/bin/binnie/craftgui/genetics/machine/WindowPolymeriser.class
new file mode 100644
index 0000000000..00dba2417f
--- /dev/null
+++ b/bin/binnie/craftgui/genetics/machine/WindowPolymeriser.class
Binary files differ
diff --git a/bin/binnie/craftgui/genetics/machine/WindowSequencer.class b/bin/binnie/craftgui/genetics/machine/WindowSequencer.class
new file mode 100644
index 0000000000..9a583d5dde
--- /dev/null
+++ b/bin/binnie/craftgui/genetics/machine/WindowSequencer.class
Binary files differ
diff --git a/bin/binnie/craftgui/genetics/machine/WindowSplicer.class b/bin/binnie/craftgui/genetics/machine/WindowSplicer.class
new file mode 100644
index 0000000000..5f14efc32b
--- /dev/null
+++ b/bin/binnie/craftgui/genetics/machine/WindowSplicer.class
Binary files differ
diff --git a/bin/binnie/craftgui/minecraft/ContainerCraftGUI.class b/bin/binnie/craftgui/minecraft/ContainerCraftGUI.class
new file mode 100644
index 0000000000..6c5401b698
--- /dev/null
+++ b/bin/binnie/craftgui/minecraft/ContainerCraftGUI.class
Binary files differ
diff --git a/bin/binnie/craftgui/minecraft/CustomSlot.class b/bin/binnie/craftgui/minecraft/CustomSlot.class
new file mode 100644
index 0000000000..c7c85c7513
--- /dev/null
+++ b/bin/binnie/craftgui/minecraft/CustomSlot.class
Binary files differ
diff --git a/bin/binnie/craftgui/minecraft/Dialog.class b/bin/binnie/craftgui/minecraft/Dialog.class
new file mode 100644
index 0000000000..ad4261091b
--- /dev/null
+++ b/bin/binnie/craftgui/minecraft/Dialog.class
Binary files differ
diff --git a/bin/binnie/craftgui/minecraft/EnumColor.class b/bin/binnie/craftgui/minecraft/EnumColor.class
new file mode 100644
index 0000000000..fe76ef952e
--- /dev/null
+++ b/bin/binnie/craftgui/minecraft/EnumColor.class
Binary files differ
diff --git a/bin/binnie/craftgui/minecraft/GUIIcon.class b/bin/binnie/craftgui/minecraft/GUIIcon.class
new file mode 100644
index 0000000000..583fe9bba7
--- /dev/null
+++ b/bin/binnie/craftgui/minecraft/GUIIcon.class
Binary files differ
diff --git a/bin/binnie/craftgui/minecraft/GuiCraftGUI.class b/bin/binnie/craftgui/minecraft/GuiCraftGUI.class
new file mode 100644
index 0000000000..789633d99a
--- /dev/null
+++ b/bin/binnie/craftgui/minecraft/GuiCraftGUI.class
Binary files differ
diff --git a/bin/binnie/craftgui/minecraft/IMachineInformation.class b/bin/binnie/craftgui/minecraft/IMachineInformation.class
new file mode 100644
index 0000000000..13ad6ef4f2
--- /dev/null
+++ b/bin/binnie/craftgui/minecraft/IMachineInformation.class
Binary files differ
diff --git a/bin/binnie/craftgui/minecraft/IMinecraftTooltip.class b/bin/binnie/craftgui/minecraft/IMinecraftTooltip.class
new file mode 100644
index 0000000000..28cde07692
--- /dev/null
+++ b/bin/binnie/craftgui/minecraft/IMinecraftTooltip.class
Binary files differ
diff --git a/bin/binnie/craftgui/minecraft/IWindowAffectsShiftClick.class b/bin/binnie/craftgui/minecraft/IWindowAffectsShiftClick.class
new file mode 100644
index 0000000000..a75557bef0
--- /dev/null
+++ b/bin/binnie/craftgui/minecraft/IWindowAffectsShiftClick.class
Binary files differ
diff --git a/bin/binnie/craftgui/minecraft/InventoryType.class b/bin/binnie/craftgui/minecraft/InventoryType.class
new file mode 100644
index 0000000000..e55ff8b4bb
--- /dev/null
+++ b/bin/binnie/craftgui/minecraft/InventoryType.class
Binary files differ
diff --git a/bin/binnie/craftgui/minecraft/ListMap.class b/bin/binnie/craftgui/minecraft/ListMap.class
new file mode 100644
index 0000000000..e00df9c242
--- /dev/null
+++ b/bin/binnie/craftgui/minecraft/ListMap.class
Binary files differ
diff --git a/bin/binnie/craftgui/minecraft/MinecraftGUI$PanelType.class b/bin/binnie/craftgui/minecraft/MinecraftGUI$PanelType.class
new file mode 100644
index 0000000000..fc7486c7aa
--- /dev/null
+++ b/bin/binnie/craftgui/minecraft/MinecraftGUI$PanelType.class
Binary files differ
diff --git a/bin/binnie/craftgui/minecraft/MinecraftGUI.class b/bin/binnie/craftgui/minecraft/MinecraftGUI.class
new file mode 100644
index 0000000000..f477f36d15
--- /dev/null
+++ b/bin/binnie/craftgui/minecraft/MinecraftGUI.class
Binary files differ
diff --git a/bin/binnie/craftgui/minecraft/MinecraftTooltip$Type.class b/bin/binnie/craftgui/minecraft/MinecraftTooltip$Type.class
new file mode 100644
index 0000000000..3d514280c0
--- /dev/null
+++ b/bin/binnie/craftgui/minecraft/MinecraftTooltip$Type.class
Binary files differ
diff --git a/bin/binnie/craftgui/minecraft/MinecraftTooltip$TypeColour.class b/bin/binnie/craftgui/minecraft/MinecraftTooltip$TypeColour.class
new file mode 100644
index 0000000000..dbe3e5bcd4
--- /dev/null
+++ b/bin/binnie/craftgui/minecraft/MinecraftTooltip$TypeColour.class
Binary files differ
diff --git a/bin/binnie/craftgui/minecraft/MinecraftTooltip.class b/bin/binnie/craftgui/minecraft/MinecraftTooltip.class
new file mode 100644
index 0000000000..278f1db15a
--- /dev/null
+++ b/bin/binnie/craftgui/minecraft/MinecraftTooltip.class
Binary files differ
diff --git a/bin/binnie/craftgui/minecraft/ModuleCraftGUI.class b/bin/binnie/craftgui/minecraft/ModuleCraftGUI.class
new file mode 100644
index 0000000000..5fbf306f8b
--- /dev/null
+++ b/bin/binnie/craftgui/minecraft/ModuleCraftGUI.class
Binary files differ
diff --git a/bin/binnie/craftgui/minecraft/Window.class b/bin/binnie/craftgui/minecraft/Window.class
new file mode 100644
index 0000000000..13aca74a8d
--- /dev/null
+++ b/bin/binnie/craftgui/minecraft/Window.class
Binary files differ
diff --git a/bin/binnie/craftgui/minecraft/WindowInventory.class b/bin/binnie/craftgui/minecraft/WindowInventory.class
new file mode 100644
index 0000000000..2e678e01c0
--- /dev/null
+++ b/bin/binnie/craftgui/minecraft/WindowInventory.class
Binary files differ
diff --git a/bin/binnie/craftgui/minecraft/control/ControlEnergyBar.class b/bin/binnie/craftgui/minecraft/control/ControlEnergyBar.class
new file mode 100644
index 0000000000..c6f2374439
--- /dev/null
+++ b/bin/binnie/craftgui/minecraft/control/ControlEnergyBar.class
Binary files differ
diff --git a/bin/binnie/craftgui/minecraft/control/ControlErrorState.class b/bin/binnie/craftgui/minecraft/control/ControlErrorState.class
new file mode 100644
index 0000000000..4a4bd81c2c
--- /dev/null
+++ b/bin/binnie/craftgui/minecraft/control/ControlErrorState.class
Binary files differ
diff --git a/bin/binnie/craftgui/minecraft/control/ControlHelp.class b/bin/binnie/craftgui/minecraft/control/ControlHelp.class
new file mode 100644
index 0000000000..2098e30b97
--- /dev/null
+++ b/bin/binnie/craftgui/minecraft/control/ControlHelp.class
Binary files differ
diff --git a/bin/binnie/craftgui/minecraft/control/ControlIconDisplay.class b/bin/binnie/craftgui/minecraft/control/ControlIconDisplay.class
new file mode 100644
index 0000000000..9a0fd6440f
--- /dev/null
+++ b/bin/binnie/craftgui/minecraft/control/ControlIconDisplay.class
Binary files differ
diff --git a/bin/binnie/craftgui/minecraft/control/ControlImage.class b/bin/binnie/craftgui/minecraft/control/ControlImage.class
new file mode 100644
index 0000000000..d9445f5350
--- /dev/null
+++ b/bin/binnie/craftgui/minecraft/control/ControlImage.class
Binary files differ
diff --git a/bin/binnie/craftgui/minecraft/control/ControlInfo.class b/bin/binnie/craftgui/minecraft/control/ControlInfo.class
new file mode 100644
index 0000000000..cb70e9b9f3
--- /dev/null
+++ b/bin/binnie/craftgui/minecraft/control/ControlInfo.class
Binary files differ
diff --git a/bin/binnie/craftgui/minecraft/control/ControlItemDisplay.class b/bin/binnie/craftgui/minecraft/control/ControlItemDisplay.class
new file mode 100644
index 0000000000..6d01b6eb58
--- /dev/null
+++ b/bin/binnie/craftgui/minecraft/control/ControlItemDisplay.class
Binary files differ
diff --git a/bin/binnie/craftgui/minecraft/control/ControlLiquidTank.class b/bin/binnie/craftgui/minecraft/control/ControlLiquidTank.class
new file mode 100644
index 0000000000..d871eb60f5
--- /dev/null
+++ b/bin/binnie/craftgui/minecraft/control/ControlLiquidTank.class
Binary files differ
diff --git a/bin/binnie/craftgui/minecraft/control/ControlMachineProgress.class b/bin/binnie/craftgui/minecraft/control/ControlMachineProgress.class
new file mode 100644
index 0000000000..ed3f7946b4
--- /dev/null
+++ b/bin/binnie/craftgui/minecraft/control/ControlMachineProgress.class
Binary files differ
diff --git a/bin/binnie/craftgui/minecraft/control/ControlPlayerInventory.class b/bin/binnie/craftgui/minecraft/control/ControlPlayerInventory.class
new file mode 100644
index 0000000000..59520053a7
--- /dev/null
+++ b/bin/binnie/craftgui/minecraft/control/ControlPlayerInventory.class
Binary files differ
diff --git a/bin/binnie/craftgui/minecraft/control/ControlPowerSystem.class b/bin/binnie/craftgui/minecraft/control/ControlPowerSystem.class
new file mode 100644
index 0000000000..e56c043c6e
--- /dev/null
+++ b/bin/binnie/craftgui/minecraft/control/ControlPowerSystem.class
Binary files differ
diff --git a/bin/binnie/craftgui/minecraft/control/ControlProgress.class b/bin/binnie/craftgui/minecraft/control/ControlProgress.class
new file mode 100644
index 0000000000..d6b175ad08
--- /dev/null
+++ b/bin/binnie/craftgui/minecraft/control/ControlProgress.class
Binary files differ
diff --git a/bin/binnie/craftgui/minecraft/control/ControlProgressBase.class b/bin/binnie/craftgui/minecraft/control/ControlProgressBase.class
new file mode 100644
index 0000000000..a91b989b08
--- /dev/null
+++ b/bin/binnie/craftgui/minecraft/control/ControlProgressBase.class
Binary files differ
diff --git a/bin/binnie/craftgui/minecraft/control/ControlSlide.class b/bin/binnie/craftgui/minecraft/control/ControlSlide.class
new file mode 100644
index 0000000000..93e0a0e24e
--- /dev/null
+++ b/bin/binnie/craftgui/minecraft/control/ControlSlide.class
Binary files differ
diff --git a/bin/binnie/craftgui/minecraft/control/ControlSlot.class b/bin/binnie/craftgui/minecraft/control/ControlSlot.class
new file mode 100644
index 0000000000..207fce565b
--- /dev/null
+++ b/bin/binnie/craftgui/minecraft/control/ControlSlot.class
Binary files differ
diff --git a/bin/binnie/craftgui/minecraft/control/ControlSlotArray.class b/bin/binnie/craftgui/minecraft/control/ControlSlotArray.class
new file mode 100644
index 0000000000..36bf203a35
--- /dev/null
+++ b/bin/binnie/craftgui/minecraft/control/ControlSlotArray.class
Binary files differ
diff --git a/bin/binnie/craftgui/minecraft/control/ControlSlotBase.class b/bin/binnie/craftgui/minecraft/control/ControlSlotBase.class
new file mode 100644
index 0000000000..4d49929a78
--- /dev/null
+++ b/bin/binnie/craftgui/minecraft/control/ControlSlotBase.class
Binary files differ
diff --git a/bin/binnie/craftgui/minecraft/control/ControlSlotCharge.class b/bin/binnie/craftgui/minecraft/control/ControlSlotCharge.class
new file mode 100644
index 0000000000..7e8055e922
--- /dev/null
+++ b/bin/binnie/craftgui/minecraft/control/ControlSlotCharge.class
Binary files differ
diff --git a/bin/binnie/craftgui/minecraft/control/ControlTabIcon.class b/bin/binnie/craftgui/minecraft/control/ControlTabIcon.class
new file mode 100644
index 0000000000..ba3c196f30
--- /dev/null
+++ b/bin/binnie/craftgui/minecraft/control/ControlTabIcon.class
Binary files differ
diff --git a/bin/binnie/craftgui/minecraft/control/ControlUser.class b/bin/binnie/craftgui/minecraft/control/ControlUser.class
new file mode 100644
index 0000000000..6284aa9fae
--- /dev/null
+++ b/bin/binnie/craftgui/minecraft/control/ControlUser.class
Binary files differ
diff --git a/bin/binnie/craftgui/minecraft/control/EnumHighlighting.class b/bin/binnie/craftgui/minecraft/control/EnumHighlighting.class
new file mode 100644
index 0000000000..8c9bba191f
--- /dev/null
+++ b/bin/binnie/craftgui/minecraft/control/EnumHighlighting.class
Binary files differ
diff --git a/bin/binnie/craftgui/minecraft/render/MinecraftTexture.class b/bin/binnie/craftgui/minecraft/render/MinecraftTexture.class
new file mode 100644
index 0000000000..89440574ad
--- /dev/null
+++ b/bin/binnie/craftgui/minecraft/render/MinecraftTexture.class
Binary files differ
diff --git a/bin/binnie/craftgui/minecraft/render/RenderCommand.class b/bin/binnie/craftgui/minecraft/render/RenderCommand.class
new file mode 100644
index 0000000000..ca57a3d0b7
--- /dev/null
+++ b/bin/binnie/craftgui/minecraft/render/RenderCommand.class
Binary files differ
diff --git a/bin/binnie/craftgui/mod/database/ControlBranchBox.class b/bin/binnie/craftgui/mod/database/ControlBranchBox.class
new file mode 100644
index 0000000000..33973c100e
--- /dev/null
+++ b/bin/binnie/craftgui/mod/database/ControlBranchBox.class
Binary files differ
diff --git a/bin/binnie/craftgui/mod/database/ControlBranchBoxOption.class b/bin/binnie/craftgui/mod/database/ControlBranchBoxOption.class
new file mode 100644
index 0000000000..ef7cd74584
--- /dev/null
+++ b/bin/binnie/craftgui/mod/database/ControlBranchBoxOption.class
Binary files differ
diff --git a/bin/binnie/craftgui/mod/database/ControlBreedingProgress.class b/bin/binnie/craftgui/mod/database/ControlBreedingProgress.class
new file mode 100644
index 0000000000..ed5364eabb
--- /dev/null
+++ b/bin/binnie/craftgui/mod/database/ControlBreedingProgress.class
Binary files differ
diff --git a/bin/binnie/craftgui/mod/database/ControlDatabaseIndividualDisplay.class b/bin/binnie/craftgui/mod/database/ControlDatabaseIndividualDisplay.class
new file mode 100644
index 0000000000..36a4401df2
--- /dev/null
+++ b/bin/binnie/craftgui/mod/database/ControlDatabaseIndividualDisplay.class
Binary files differ
diff --git a/bin/binnie/craftgui/mod/database/ControlItemStackOption.class b/bin/binnie/craftgui/mod/database/ControlItemStackOption.class
new file mode 100644
index 0000000000..cdd9c09778
--- /dev/null
+++ b/bin/binnie/craftgui/mod/database/ControlItemStackOption.class
Binary files differ
diff --git a/bin/binnie/craftgui/mod/database/ControlMutationBox$Type.class b/bin/binnie/craftgui/mod/database/ControlMutationBox$Type.class
new file mode 100644
index 0000000000..d1501c3d06
--- /dev/null
+++ b/bin/binnie/craftgui/mod/database/ControlMutationBox$Type.class
Binary files differ
diff --git a/bin/binnie/craftgui/mod/database/ControlMutationBox.class b/bin/binnie/craftgui/mod/database/ControlMutationBox.class
new file mode 100644
index 0000000000..79bf002ed4
--- /dev/null
+++ b/bin/binnie/craftgui/mod/database/ControlMutationBox.class
Binary files differ
diff --git a/bin/binnie/craftgui/mod/database/ControlMutationItem.class b/bin/binnie/craftgui/mod/database/ControlMutationItem.class
new file mode 100644
index 0000000000..8d938243d0
--- /dev/null
+++ b/bin/binnie/craftgui/mod/database/ControlMutationItem.class
Binary files differ
diff --git a/bin/binnie/craftgui/mod/database/ControlMutationSymbol.class b/bin/binnie/craftgui/mod/database/ControlMutationSymbol.class
new file mode 100644
index 0000000000..17e32409c9
--- /dev/null
+++ b/bin/binnie/craftgui/mod/database/ControlMutationSymbol.class
Binary files differ
diff --git a/bin/binnie/craftgui/mod/database/ControlSpeciesBox.class b/bin/binnie/craftgui/mod/database/ControlSpeciesBox.class
new file mode 100644
index 0000000000..7315efcd3c
--- /dev/null
+++ b/bin/binnie/craftgui/mod/database/ControlSpeciesBox.class
Binary files differ
diff --git a/bin/binnie/craftgui/mod/database/ControlSpeciexBoxOption.class b/bin/binnie/craftgui/mod/database/ControlSpeciexBoxOption.class
new file mode 100644
index 0000000000..3958848687
--- /dev/null
+++ b/bin/binnie/craftgui/mod/database/ControlSpeciexBoxOption.class
Binary files differ
diff --git a/bin/binnie/craftgui/mod/database/DatabaseTab.class b/bin/binnie/craftgui/mod/database/DatabaseTab.class
new file mode 100644
index 0000000000..6b2674d147
--- /dev/null
+++ b/bin/binnie/craftgui/mod/database/DatabaseTab.class
Binary files differ
diff --git a/bin/binnie/craftgui/mod/database/EnumDiscoveryState.class b/bin/binnie/craftgui/mod/database/EnumDiscoveryState.class
new file mode 100644
index 0000000000..8b693568aa
--- /dev/null
+++ b/bin/binnie/craftgui/mod/database/EnumDiscoveryState.class
Binary files differ
diff --git a/bin/binnie/craftgui/mod/database/IDatabaseMode.class b/bin/binnie/craftgui/mod/database/IDatabaseMode.class
new file mode 100644
index 0000000000..69c3171f89
--- /dev/null
+++ b/bin/binnie/craftgui/mod/database/IDatabaseMode.class
Binary files differ
diff --git a/bin/binnie/craftgui/mod/database/PageAbstract.class b/bin/binnie/craftgui/mod/database/PageAbstract.class
new file mode 100644
index 0000000000..540a49853e
--- /dev/null
+++ b/bin/binnie/craftgui/mod/database/PageAbstract.class
Binary files differ
diff --git a/bin/binnie/craftgui/mod/database/PageBranch.class b/bin/binnie/craftgui/mod/database/PageBranch.class
new file mode 100644
index 0000000000..d76f195406
--- /dev/null
+++ b/bin/binnie/craftgui/mod/database/PageBranch.class
Binary files differ
diff --git a/bin/binnie/craftgui/mod/database/PageBranchOverview.class b/bin/binnie/craftgui/mod/database/PageBranchOverview.class
new file mode 100644
index 0000000000..58ae96de82
--- /dev/null
+++ b/bin/binnie/craftgui/mod/database/PageBranchOverview.class
Binary files differ
diff --git a/bin/binnie/craftgui/mod/database/PageBranchSpecies$1.class b/bin/binnie/craftgui/mod/database/PageBranchSpecies$1.class
new file mode 100644
index 0000000000..52cde9549f
--- /dev/null
+++ b/bin/binnie/craftgui/mod/database/PageBranchSpecies$1.class
Binary files differ
diff --git a/bin/binnie/craftgui/mod/database/PageBranchSpecies.class b/bin/binnie/craftgui/mod/database/PageBranchSpecies.class
new file mode 100644
index 0000000000..2a77783062
--- /dev/null
+++ b/bin/binnie/craftgui/mod/database/PageBranchSpecies.class
Binary files differ
diff --git a/bin/binnie/craftgui/mod/database/PageBreeder.class b/bin/binnie/craftgui/mod/database/PageBreeder.class
new file mode 100644
index 0000000000..43cefe9a7e
--- /dev/null
+++ b/bin/binnie/craftgui/mod/database/PageBreeder.class
Binary files differ
diff --git a/bin/binnie/craftgui/mod/database/PageBreederStats.class b/bin/binnie/craftgui/mod/database/PageBreederStats.class
new file mode 100644
index 0000000000..1e260372a6
--- /dev/null
+++ b/bin/binnie/craftgui/mod/database/PageBreederStats.class
Binary files differ
diff --git a/bin/binnie/craftgui/mod/database/PageSpecies.class b/bin/binnie/craftgui/mod/database/PageSpecies.class
new file mode 100644
index 0000000000..56f74c6ad1
--- /dev/null
+++ b/bin/binnie/craftgui/mod/database/PageSpecies.class
Binary files differ
diff --git a/bin/binnie/craftgui/mod/database/PageSpeciesClassification.class b/bin/binnie/craftgui/mod/database/PageSpeciesClassification.class
new file mode 100644
index 0000000000..5266be2887
--- /dev/null
+++ b/bin/binnie/craftgui/mod/database/PageSpeciesClassification.class
Binary files differ
diff --git a/bin/binnie/craftgui/mod/database/PageSpeciesMutations.class b/bin/binnie/craftgui/mod/database/PageSpeciesMutations.class
new file mode 100644
index 0000000000..233c8829ea
--- /dev/null
+++ b/bin/binnie/craftgui/mod/database/PageSpeciesMutations.class
Binary files differ
diff --git a/bin/binnie/craftgui/mod/database/PageSpeciesOverview.class b/bin/binnie/craftgui/mod/database/PageSpeciesOverview.class
new file mode 100644
index 0000000000..64c72533cb
--- /dev/null
+++ b/bin/binnie/craftgui/mod/database/PageSpeciesOverview.class
Binary files differ
diff --git a/bin/binnie/craftgui/mod/database/PageSpeciesResultant.class b/bin/binnie/craftgui/mod/database/PageSpeciesResultant.class
new file mode 100644
index 0000000000..6fae9ff297
--- /dev/null
+++ b/bin/binnie/craftgui/mod/database/PageSpeciesResultant.class
Binary files differ
diff --git a/bin/binnie/craftgui/mod/database/WindowAbstractDatabase$Mode.class b/bin/binnie/craftgui/mod/database/WindowAbstractDatabase$Mode.class
new file mode 100644
index 0000000000..55b5086db8
--- /dev/null
+++ b/bin/binnie/craftgui/mod/database/WindowAbstractDatabase$Mode.class
Binary files differ
diff --git a/bin/binnie/craftgui/mod/database/WindowAbstractDatabase$ModeWidgets.class b/bin/binnie/craftgui/mod/database/WindowAbstractDatabase$ModeWidgets.class
new file mode 100644
index 0000000000..a02317468c
--- /dev/null
+++ b/bin/binnie/craftgui/mod/database/WindowAbstractDatabase$ModeWidgets.class
Binary files differ
diff --git a/bin/binnie/craftgui/mod/database/WindowAbstractDatabase.class b/bin/binnie/craftgui/mod/database/WindowAbstractDatabase.class
new file mode 100644
index 0000000000..46e71ef9be
--- /dev/null
+++ b/bin/binnie/craftgui/mod/database/WindowAbstractDatabase.class
Binary files differ
diff --git a/bin/binnie/craftgui/resource/IStyleSheet.class b/bin/binnie/craftgui/resource/IStyleSheet.class
new file mode 100644
index 0000000000..ea9103b0fc
--- /dev/null
+++ b/bin/binnie/craftgui/resource/IStyleSheet.class
Binary files differ
diff --git a/bin/binnie/craftgui/resource/StyleSheet.class b/bin/binnie/craftgui/resource/StyleSheet.class
new file mode 100644
index 0000000000..88a09ca307
--- /dev/null
+++ b/bin/binnie/craftgui/resource/StyleSheet.class
Binary files differ
diff --git a/bin/binnie/craftgui/resource/StyleSheetManager$DefaultStyleSheet.class b/bin/binnie/craftgui/resource/StyleSheetManager$DefaultStyleSheet.class
new file mode 100644
index 0000000000..c9b74385c1
--- /dev/null
+++ b/bin/binnie/craftgui/resource/StyleSheetManager$DefaultStyleSheet.class
Binary files differ
diff --git a/bin/binnie/craftgui/resource/StyleSheetManager.class b/bin/binnie/craftgui/resource/StyleSheetManager.class
new file mode 100644
index 0000000000..3bc0fb7561
--- /dev/null
+++ b/bin/binnie/craftgui/resource/StyleSheetManager.class
Binary files differ
diff --git a/bin/binnie/craftgui/resource/Texture.class b/bin/binnie/craftgui/resource/Texture.class
new file mode 100644
index 0000000000..d2a7b938b3
--- /dev/null
+++ b/bin/binnie/craftgui/resource/Texture.class
Binary files differ
diff --git a/bin/binnie/craftgui/resource/minecraft/CraftGUIResourceManager.class b/bin/binnie/craftgui/resource/minecraft/CraftGUIResourceManager.class
new file mode 100644
index 0000000000..f5ffacd523
--- /dev/null
+++ b/bin/binnie/craftgui/resource/minecraft/CraftGUIResourceManager.class
Binary files differ
diff --git a/bin/binnie/craftgui/resource/minecraft/CraftGUITexture.class b/bin/binnie/craftgui/resource/minecraft/CraftGUITexture.class
new file mode 100644
index 0000000000..074c13ce92
--- /dev/null
+++ b/bin/binnie/craftgui/resource/minecraft/CraftGUITexture.class
Binary files differ
diff --git a/bin/binnie/craftgui/resource/minecraft/CraftGUITextureSheet.class b/bin/binnie/craftgui/resource/minecraft/CraftGUITextureSheet.class
new file mode 100644
index 0000000000..47dc90c087
--- /dev/null
+++ b/bin/binnie/craftgui/resource/minecraft/CraftGUITextureSheet.class
Binary files differ
diff --git a/bin/binnie/craftgui/resource/minecraft/PaddedTexture.class b/bin/binnie/craftgui/resource/minecraft/PaddedTexture.class
new file mode 100644
index 0000000000..4f12b77a19
--- /dev/null
+++ b/bin/binnie/craftgui/resource/minecraft/PaddedTexture.class
Binary files differ
diff --git a/bin/binnie/craftgui/resource/minecraft/ParsedTextureSheet.class b/bin/binnie/craftgui/resource/minecraft/ParsedTextureSheet.class
new file mode 100644
index 0000000000..206ea12907
--- /dev/null
+++ b/bin/binnie/craftgui/resource/minecraft/ParsedTextureSheet.class
Binary files differ
diff --git a/bin/binnie/craftgui/resource/minecraft/StandardTexture.class b/bin/binnie/craftgui/resource/minecraft/StandardTexture.class
new file mode 100644
index 0000000000..2d833cfdf6
--- /dev/null
+++ b/bin/binnie/craftgui/resource/minecraft/StandardTexture.class
Binary files differ
diff --git a/bin/binnie/craftgui/window/Panel$IPanelType.class b/bin/binnie/craftgui/window/Panel$IPanelType.class
new file mode 100644
index 0000000000..ab30664c29
--- /dev/null
+++ b/bin/binnie/craftgui/window/Panel$IPanelType.class
Binary files differ
diff --git a/bin/binnie/craftgui/window/Panel.class b/bin/binnie/craftgui/window/Panel.class
new file mode 100644
index 0000000000..5adb01f3c8
--- /dev/null
+++ b/bin/binnie/craftgui/window/Panel.class
Binary files differ
diff --git a/bin/binnie/extrabees/ExtraBees$PacketHandler.class b/bin/binnie/extrabees/ExtraBees$PacketHandler.class
new file mode 100644
index 0000000000..de8dd11020
--- /dev/null
+++ b/bin/binnie/extrabees/ExtraBees$PacketHandler.class
Binary files differ
diff --git a/bin/binnie/extrabees/ExtraBees.class b/bin/binnie/extrabees/ExtraBees.class
new file mode 100644
index 0000000000..59ceb24a86
--- /dev/null
+++ b/bin/binnie/extrabees/ExtraBees.class
Binary files differ
diff --git a/bin/binnie/extrabees/apiary/ComponentBeeModifier.class b/bin/binnie/extrabees/apiary/ComponentBeeModifier.class
new file mode 100644
index 0000000000..29bec08d43
--- /dev/null
+++ b/bin/binnie/extrabees/apiary/ComponentBeeModifier.class
Binary files differ
diff --git a/bin/binnie/extrabees/apiary/ComponentExtraBeeGUI.class b/bin/binnie/extrabees/apiary/ComponentExtraBeeGUI.class
new file mode 100644
index 0000000000..0b3a89117d
--- /dev/null
+++ b/bin/binnie/extrabees/apiary/ComponentExtraBeeGUI.class
Binary files differ
diff --git a/bin/binnie/extrabees/apiary/EnumHiveFrame.class b/bin/binnie/extrabees/apiary/EnumHiveFrame.class
new file mode 100644
index 0000000000..ad4576a4b1
--- /dev/null
+++ b/bin/binnie/extrabees/apiary/EnumHiveFrame.class
Binary files differ
diff --git a/bin/binnie/extrabees/apiary/IndustrialFrame.class b/bin/binnie/extrabees/apiary/IndustrialFrame.class
new file mode 100644
index 0000000000..57d9d6ff77
--- /dev/null
+++ b/bin/binnie/extrabees/apiary/IndustrialFrame.class
Binary files differ
diff --git a/bin/binnie/extrabees/apiary/ItemHiveFrame.class b/bin/binnie/extrabees/apiary/ItemHiveFrame.class
new file mode 100644
index 0000000000..9e950a6277
--- /dev/null
+++ b/bin/binnie/extrabees/apiary/ItemHiveFrame.class
Binary files differ
diff --git a/bin/binnie/extrabees/apiary/ItemIndustrialFrame.class b/bin/binnie/extrabees/apiary/ItemIndustrialFrame.class
new file mode 100644
index 0000000000..6f798b3d23
--- /dev/null
+++ b/bin/binnie/extrabees/apiary/ItemIndustrialFrame.class
Binary files differ
diff --git a/bin/binnie/extrabees/apiary/ModuleApiary.class b/bin/binnie/extrabees/apiary/ModuleApiary.class
new file mode 100644
index 0000000000..7a1f656337
--- /dev/null
+++ b/bin/binnie/extrabees/apiary/ModuleApiary.class
Binary files differ
diff --git a/bin/binnie/extrabees/apiary/TileExtraBeeAlveary.class b/bin/binnie/extrabees/apiary/TileExtraBeeAlveary.class
new file mode 100644
index 0000000000..4f6f797b40
--- /dev/null
+++ b/bin/binnie/extrabees/apiary/TileExtraBeeAlveary.class
Binary files differ
diff --git a/bin/binnie/extrabees/apiary/machine/AlvearyFrame$ComponentFrameModifier.class b/bin/binnie/extrabees/apiary/machine/AlvearyFrame$ComponentFrameModifier.class
new file mode 100644
index 0000000000..3322dd8b17
--- /dev/null
+++ b/bin/binnie/extrabees/apiary/machine/AlvearyFrame$ComponentFrameModifier.class
Binary files differ
diff --git a/bin/binnie/extrabees/apiary/machine/AlvearyFrame$PackageAlvearyFrame.class b/bin/binnie/extrabees/apiary/machine/AlvearyFrame$PackageAlvearyFrame.class
new file mode 100644
index 0000000000..c6091f61c3
--- /dev/null
+++ b/bin/binnie/extrabees/apiary/machine/AlvearyFrame$PackageAlvearyFrame.class
Binary files differ
diff --git a/bin/binnie/extrabees/apiary/machine/AlvearyFrame$SlotValidatorFrame.class b/bin/binnie/extrabees/apiary/machine/AlvearyFrame$SlotValidatorFrame.class
new file mode 100644
index 0000000000..d965832feb
--- /dev/null
+++ b/bin/binnie/extrabees/apiary/machine/AlvearyFrame$SlotValidatorFrame.class
Binary files differ
diff --git a/bin/binnie/extrabees/apiary/machine/AlvearyFrame.class b/bin/binnie/extrabees/apiary/machine/AlvearyFrame.class
new file mode 100644
index 0000000000..13e648626d
--- /dev/null
+++ b/bin/binnie/extrabees/apiary/machine/AlvearyFrame.class
Binary files differ
diff --git a/bin/binnie/extrabees/apiary/machine/AlvearyHatchery$ComponentFrameModifier.class b/bin/binnie/extrabees/apiary/machine/AlvearyHatchery$ComponentFrameModifier.class
new file mode 100644
index 0000000000..c84787948c
--- /dev/null
+++ b/bin/binnie/extrabees/apiary/machine/AlvearyHatchery$ComponentFrameModifier.class
Binary files differ
diff --git a/bin/binnie/extrabees/apiary/machine/AlvearyHatchery$PackageAlvearyHatchery.class b/bin/binnie/extrabees/apiary/machine/AlvearyHatchery$PackageAlvearyHatchery.class
new file mode 100644
index 0000000000..e1868f4c2f
--- /dev/null
+++ b/bin/binnie/extrabees/apiary/machine/AlvearyHatchery$PackageAlvearyHatchery.class
Binary files differ
diff --git a/bin/binnie/extrabees/apiary/machine/AlvearyHatchery$SlotValidatorLarvae.class b/bin/binnie/extrabees/apiary/machine/AlvearyHatchery$SlotValidatorLarvae.class
new file mode 100644
index 0000000000..7e25afb76c
--- /dev/null
+++ b/bin/binnie/extrabees/apiary/machine/AlvearyHatchery$SlotValidatorLarvae.class
Binary files differ
diff --git a/bin/binnie/extrabees/apiary/machine/AlvearyHatchery.class b/bin/binnie/extrabees/apiary/machine/AlvearyHatchery.class
new file mode 100644
index 0000000000..29fd7d9917
--- /dev/null
+++ b/bin/binnie/extrabees/apiary/machine/AlvearyHatchery.class
Binary files differ
diff --git a/bin/binnie/extrabees/apiary/machine/AlvearyLighting$ComponentLighting.class b/bin/binnie/extrabees/apiary/machine/AlvearyLighting$ComponentLighting.class
new file mode 100644
index 0000000000..6d08d3cd09
--- /dev/null
+++ b/bin/binnie/extrabees/apiary/machine/AlvearyLighting$ComponentLighting.class
Binary files differ
diff --git a/bin/binnie/extrabees/apiary/machine/AlvearyLighting$PackageAlvearyLighting.class b/bin/binnie/extrabees/apiary/machine/AlvearyLighting$PackageAlvearyLighting.class
new file mode 100644
index 0000000000..048bbbdf18
--- /dev/null
+++ b/bin/binnie/extrabees/apiary/machine/AlvearyLighting$PackageAlvearyLighting.class
Binary files differ
diff --git a/bin/binnie/extrabees/apiary/machine/AlvearyLighting.class b/bin/binnie/extrabees/apiary/machine/AlvearyLighting.class
new file mode 100644
index 0000000000..c25a9c35f7
--- /dev/null
+++ b/bin/binnie/extrabees/apiary/machine/AlvearyLighting.class
Binary files differ
diff --git a/bin/binnie/extrabees/apiary/machine/AlvearyMachine$AlvearyPackage.class b/bin/binnie/extrabees/apiary/machine/AlvearyMachine$AlvearyPackage.class
new file mode 100644
index 0000000000..bc3c74092f
--- /dev/null
+++ b/bin/binnie/extrabees/apiary/machine/AlvearyMachine$AlvearyPackage.class
Binary files differ
diff --git a/bin/binnie/extrabees/apiary/machine/AlvearyMachine.class b/bin/binnie/extrabees/apiary/machine/AlvearyMachine.class
new file mode 100644
index 0000000000..a5ae12493d
--- /dev/null
+++ b/bin/binnie/extrabees/apiary/machine/AlvearyMachine.class
Binary files differ
diff --git a/bin/binnie/extrabees/apiary/machine/AlvearyMutator$ComponentMutatorModifier.class b/bin/binnie/extrabees/apiary/machine/AlvearyMutator$ComponentMutatorModifier.class
new file mode 100644
index 0000000000..96336eb3ff
--- /dev/null
+++ b/bin/binnie/extrabees/apiary/machine/AlvearyMutator$ComponentMutatorModifier.class
Binary files differ
diff --git a/bin/binnie/extrabees/apiary/machine/AlvearyMutator$PackageAlvearyMutator.class b/bin/binnie/extrabees/apiary/machine/AlvearyMutator$PackageAlvearyMutator.class
new file mode 100644
index 0000000000..0138860df6
--- /dev/null
+++ b/bin/binnie/extrabees/apiary/machine/AlvearyMutator$PackageAlvearyMutator.class
Binary files differ
diff --git a/bin/binnie/extrabees/apiary/machine/AlvearyMutator$SlotValidatorMutator.class b/bin/binnie/extrabees/apiary/machine/AlvearyMutator$SlotValidatorMutator.class
new file mode 100644
index 0000000000..b3b84d742a
--- /dev/null
+++ b/bin/binnie/extrabees/apiary/machine/AlvearyMutator$SlotValidatorMutator.class
Binary files differ
diff --git a/bin/binnie/extrabees/apiary/machine/AlvearyMutator.class b/bin/binnie/extrabees/apiary/machine/AlvearyMutator.class
new file mode 100644
index 0000000000..6469385a9a
--- /dev/null
+++ b/bin/binnie/extrabees/apiary/machine/AlvearyMutator.class
Binary files differ
diff --git a/bin/binnie/extrabees/apiary/machine/AlvearyRainShield$ComponentRainShield.class b/bin/binnie/extrabees/apiary/machine/AlvearyRainShield$ComponentRainShield.class
new file mode 100644
index 0000000000..d1cf1ed9a6
--- /dev/null
+++ b/bin/binnie/extrabees/apiary/machine/AlvearyRainShield$ComponentRainShield.class
Binary files differ
diff --git a/bin/binnie/extrabees/apiary/machine/AlvearyRainShield$PackageAlvearyRainShield.class b/bin/binnie/extrabees/apiary/machine/AlvearyRainShield$PackageAlvearyRainShield.class
new file mode 100644
index 0000000000..a896e13e9b
--- /dev/null
+++ b/bin/binnie/extrabees/apiary/machine/AlvearyRainShield$PackageAlvearyRainShield.class
Binary files differ
diff --git a/bin/binnie/extrabees/apiary/machine/AlvearyRainShield.class b/bin/binnie/extrabees/apiary/machine/AlvearyRainShield.class
new file mode 100644
index 0000000000..abe08f1cc2
--- /dev/null
+++ b/bin/binnie/extrabees/apiary/machine/AlvearyRainShield.class
Binary files differ
diff --git a/bin/binnie/extrabees/apiary/machine/AlvearyStimulator$CircuitType.class b/bin/binnie/extrabees/apiary/machine/AlvearyStimulator$CircuitType.class
new file mode 100644
index 0000000000..8ad02650b9
--- /dev/null
+++ b/bin/binnie/extrabees/apiary/machine/AlvearyStimulator$CircuitType.class
Binary files differ
diff --git a/bin/binnie/extrabees/apiary/machine/AlvearyStimulator$ComponentStimulatorModifier.class b/bin/binnie/extrabees/apiary/machine/AlvearyStimulator$ComponentStimulatorModifier.class
new file mode 100644
index 0000000000..a8376c7805
--- /dev/null
+++ b/bin/binnie/extrabees/apiary/machine/AlvearyStimulator$ComponentStimulatorModifier.class
Binary files differ
diff --git a/bin/binnie/extrabees/apiary/machine/AlvearyStimulator$PackageAlvearyStimulator.class b/bin/binnie/extrabees/apiary/machine/AlvearyStimulator$PackageAlvearyStimulator.class
new file mode 100644
index 0000000000..c307f19711
--- /dev/null
+++ b/bin/binnie/extrabees/apiary/machine/AlvearyStimulator$PackageAlvearyStimulator.class
Binary files differ
diff --git a/bin/binnie/extrabees/apiary/machine/AlvearyStimulator$SlotValidatorCircuit.class b/bin/binnie/extrabees/apiary/machine/AlvearyStimulator$SlotValidatorCircuit.class
new file mode 100644
index 0000000000..3698451b9a
--- /dev/null
+++ b/bin/binnie/extrabees/apiary/machine/AlvearyStimulator$SlotValidatorCircuit.class
Binary files differ
diff --git a/bin/binnie/extrabees/apiary/machine/AlvearyStimulator$StimulatorCircuit.class b/bin/binnie/extrabees/apiary/machine/AlvearyStimulator$StimulatorCircuit.class
new file mode 100644
index 0000000000..ee380d9928
--- /dev/null
+++ b/bin/binnie/extrabees/apiary/machine/AlvearyStimulator$StimulatorCircuit.class
Binary files differ
diff --git a/bin/binnie/extrabees/apiary/machine/AlvearyStimulator.class b/bin/binnie/extrabees/apiary/machine/AlvearyStimulator.class
new file mode 100644
index 0000000000..050774f024
--- /dev/null
+++ b/bin/binnie/extrabees/apiary/machine/AlvearyStimulator.class
Binary files differ
diff --git a/bin/binnie/extrabees/apiary/machine/AlvearyTransmission$ComponentTransmission.class b/bin/binnie/extrabees/apiary/machine/AlvearyTransmission$ComponentTransmission.class
new file mode 100644
index 0000000000..ca777da73c
--- /dev/null
+++ b/bin/binnie/extrabees/apiary/machine/AlvearyTransmission$ComponentTransmission.class
Binary files differ
diff --git a/bin/binnie/extrabees/apiary/machine/AlvearyTransmission$PackageAlvearyTransmission.class b/bin/binnie/extrabees/apiary/machine/AlvearyTransmission$PackageAlvearyTransmission.class
new file mode 100644
index 0000000000..1a61a42ebf
--- /dev/null
+++ b/bin/binnie/extrabees/apiary/machine/AlvearyTransmission$PackageAlvearyTransmission.class
Binary files differ
diff --git a/bin/binnie/extrabees/apiary/machine/AlvearyTransmission.class b/bin/binnie/extrabees/apiary/machine/AlvearyTransmission.class
new file mode 100644
index 0000000000..2a62e475d4
--- /dev/null
+++ b/bin/binnie/extrabees/apiary/machine/AlvearyTransmission.class
Binary files differ
diff --git a/bin/binnie/extrabees/config/ConfigurationMachines.class b/bin/binnie/extrabees/config/ConfigurationMachines.class
new file mode 100644
index 0000000000..ede8ae9bbc
--- /dev/null
+++ b/bin/binnie/extrabees/config/ConfigurationMachines.class
Binary files differ
diff --git a/bin/binnie/extrabees/config/ConfigurationMain.class b/bin/binnie/extrabees/config/ConfigurationMain.class
new file mode 100644
index 0000000000..32f5b1b98a
--- /dev/null
+++ b/bin/binnie/extrabees/config/ConfigurationMain.class
Binary files differ
diff --git a/bin/binnie/extrabees/core/ExtraBeeGUID.class b/bin/binnie/extrabees/core/ExtraBeeGUID.class
new file mode 100644
index 0000000000..944c6eb24c
--- /dev/null
+++ b/bin/binnie/extrabees/core/ExtraBeeGUID.class
Binary files differ
diff --git a/bin/binnie/extrabees/core/ExtraBeeItems.class b/bin/binnie/extrabees/core/ExtraBeeItems.class
new file mode 100644
index 0000000000..9995309c9c
--- /dev/null
+++ b/bin/binnie/extrabees/core/ExtraBeeItems.class
Binary files differ
diff --git a/bin/binnie/extrabees/core/ExtraBeeTexture.class b/bin/binnie/extrabees/core/ExtraBeeTexture.class
new file mode 100644
index 0000000000..609036654e
--- /dev/null
+++ b/bin/binnie/extrabees/core/ExtraBeeTexture.class
Binary files differ
diff --git a/bin/binnie/extrabees/core/ModuleCore.class b/bin/binnie/extrabees/core/ModuleCore.class
new file mode 100644
index 0000000000..490074d74d
--- /dev/null
+++ b/bin/binnie/extrabees/core/ModuleCore.class
Binary files differ
diff --git a/bin/binnie/extrabees/genetics/ExtraBeeMutation$MutationRequirement.class b/bin/binnie/extrabees/genetics/ExtraBeeMutation$MutationRequirement.class
new file mode 100644
index 0000000000..224cc7247e
--- /dev/null
+++ b/bin/binnie/extrabees/genetics/ExtraBeeMutation$MutationRequirement.class
Binary files differ
diff --git a/bin/binnie/extrabees/genetics/ExtraBeeMutation$RequirementBiomeType.class b/bin/binnie/extrabees/genetics/ExtraBeeMutation$RequirementBiomeType.class
new file mode 100644
index 0000000000..8390635aeb
--- /dev/null
+++ b/bin/binnie/extrabees/genetics/ExtraBeeMutation$RequirementBiomeType.class
Binary files differ
diff --git a/bin/binnie/extrabees/genetics/ExtraBeeMutation$RequirementPerson.class b/bin/binnie/extrabees/genetics/ExtraBeeMutation$RequirementPerson.class
new file mode 100644
index 0000000000..b4affd3ce5
--- /dev/null
+++ b/bin/binnie/extrabees/genetics/ExtraBeeMutation$RequirementPerson.class
Binary files differ
diff --git a/bin/binnie/extrabees/genetics/ExtraBeeMutation.class b/bin/binnie/extrabees/genetics/ExtraBeeMutation.class
new file mode 100644
index 0000000000..fd73d3e31c
--- /dev/null
+++ b/bin/binnie/extrabees/genetics/ExtraBeeMutation.class
Binary files differ
diff --git a/bin/binnie/extrabees/genetics/ExtraBeesBranch.class b/bin/binnie/extrabees/genetics/ExtraBeesBranch.class
new file mode 100644
index 0000000000..b30dea890c
--- /dev/null
+++ b/bin/binnie/extrabees/genetics/ExtraBeesBranch.class
Binary files differ
diff --git a/bin/binnie/extrabees/genetics/ExtraBeesFlowers.class b/bin/binnie/extrabees/genetics/ExtraBeesFlowers.class
new file mode 100644
index 0000000000..ce8623c987
--- /dev/null
+++ b/bin/binnie/extrabees/genetics/ExtraBeesFlowers.class
Binary files differ
diff --git a/bin/binnie/extrabees/genetics/ExtraBeesSpecies$State.class b/bin/binnie/extrabees/genetics/ExtraBeesSpecies$State.class
new file mode 100644
index 0000000000..d913f20194
--- /dev/null
+++ b/bin/binnie/extrabees/genetics/ExtraBeesSpecies$State.class
Binary files differ
diff --git a/bin/binnie/extrabees/genetics/ExtraBeesSpecies.class b/bin/binnie/extrabees/genetics/ExtraBeesSpecies.class
new file mode 100644
index 0000000000..21210e2cbc
--- /dev/null
+++ b/bin/binnie/extrabees/genetics/ExtraBeesSpecies.class
Binary files differ
diff --git a/bin/binnie/extrabees/genetics/ModuleGenetics.class b/bin/binnie/extrabees/genetics/ModuleGenetics.class
new file mode 100644
index 0000000000..05c0ee271f
--- /dev/null
+++ b/bin/binnie/extrabees/genetics/ModuleGenetics.class
Binary files differ
diff --git a/bin/binnie/extrabees/genetics/effect/BlockEctoplasm.class b/bin/binnie/extrabees/genetics/effect/BlockEctoplasm.class
new file mode 100644
index 0000000000..95b4ba9a54
--- /dev/null
+++ b/bin/binnie/extrabees/genetics/effect/BlockEctoplasm.class
Binary files differ
diff --git a/bin/binnie/extrabees/genetics/effect/EntityBeeLightning.class b/bin/binnie/extrabees/genetics/effect/EntityBeeLightning.class
new file mode 100644
index 0000000000..fbd06edb37
--- /dev/null
+++ b/bin/binnie/extrabees/genetics/effect/EntityBeeLightning.class
Binary files differ
diff --git a/bin/binnie/extrabees/genetics/effect/ExtraBeesEffect$Birthday.class b/bin/binnie/extrabees/genetics/effect/ExtraBeesEffect$Birthday.class
new file mode 100644
index 0000000000..dc325459b1
--- /dev/null
+++ b/bin/binnie/extrabees/genetics/effect/ExtraBeesEffect$Birthday.class
Binary files differ
diff --git a/bin/binnie/extrabees/genetics/effect/ExtraBeesEffect.class b/bin/binnie/extrabees/genetics/effect/ExtraBeesEffect.class
new file mode 100644
index 0000000000..a7d2e723bd
--- /dev/null
+++ b/bin/binnie/extrabees/genetics/effect/ExtraBeesEffect.class
Binary files differ
diff --git a/bin/binnie/extrabees/genetics/effect/FireworkCreator$Firework.class b/bin/binnie/extrabees/genetics/effect/FireworkCreator$Firework.class
new file mode 100644
index 0000000000..8ea24fd173
--- /dev/null
+++ b/bin/binnie/extrabees/genetics/effect/FireworkCreator$Firework.class
Binary files differ
diff --git a/bin/binnie/extrabees/genetics/effect/FireworkCreator$Shape.class b/bin/binnie/extrabees/genetics/effect/FireworkCreator$Shape.class
new file mode 100644
index 0000000000..00f5631396
--- /dev/null
+++ b/bin/binnie/extrabees/genetics/effect/FireworkCreator$Shape.class
Binary files differ
diff --git a/bin/binnie/extrabees/genetics/effect/FireworkCreator.class b/bin/binnie/extrabees/genetics/effect/FireworkCreator.class
new file mode 100644
index 0000000000..d0228c2717
--- /dev/null
+++ b/bin/binnie/extrabees/genetics/effect/FireworkCreator.class
Binary files differ
diff --git a/bin/binnie/extrabees/genetics/items/ItemDictionary.class b/bin/binnie/extrabees/genetics/items/ItemDictionary.class
new file mode 100644
index 0000000000..cec06ae4a0
--- /dev/null
+++ b/bin/binnie/extrabees/genetics/items/ItemDictionary.class
Binary files differ
diff --git a/bin/binnie/extrabees/genetics/items/ItemPunnettSquare.class b/bin/binnie/extrabees/genetics/items/ItemPunnettSquare.class
new file mode 100644
index 0000000000..d93e4f8539
--- /dev/null
+++ b/bin/binnie/extrabees/genetics/items/ItemPunnettSquare.class
Binary files differ
diff --git a/bin/binnie/extrabees/gui/WindowAlvearyFrame.class b/bin/binnie/extrabees/gui/WindowAlvearyFrame.class
new file mode 100644
index 0000000000..205c32f41a
--- /dev/null
+++ b/bin/binnie/extrabees/gui/WindowAlvearyFrame.class
Binary files differ
diff --git a/bin/binnie/extrabees/gui/WindowAlvearyHatchery.class b/bin/binnie/extrabees/gui/WindowAlvearyHatchery.class
new file mode 100644
index 0000000000..80b2bbd3df
--- /dev/null
+++ b/bin/binnie/extrabees/gui/WindowAlvearyHatchery.class
Binary files differ
diff --git a/bin/binnie/extrabees/gui/WindowAlvearyIndustrialFrame.class b/bin/binnie/extrabees/gui/WindowAlvearyIndustrialFrame.class
new file mode 100644
index 0000000000..ffcc1c3082
--- /dev/null
+++ b/bin/binnie/extrabees/gui/WindowAlvearyIndustrialFrame.class
Binary files differ
diff --git a/bin/binnie/extrabees/gui/WindowAlvearyMutator.class b/bin/binnie/extrabees/gui/WindowAlvearyMutator.class
new file mode 100644
index 0000000000..8937289c39
--- /dev/null
+++ b/bin/binnie/extrabees/gui/WindowAlvearyMutator.class
Binary files differ
diff --git a/bin/binnie/extrabees/gui/WindowAlvearyStimulator.class b/bin/binnie/extrabees/gui/WindowAlvearyStimulator.class
new file mode 100644
index 0000000000..0acf8abed5
--- /dev/null
+++ b/bin/binnie/extrabees/gui/WindowAlvearyStimulator.class
Binary files differ
diff --git a/bin/binnie/extrabees/gui/database/ControlBiomes.class b/bin/binnie/extrabees/gui/database/ControlBiomes.class
new file mode 100644
index 0000000000..3679615412
--- /dev/null
+++ b/bin/binnie/extrabees/gui/database/ControlBiomes.class
Binary files differ
diff --git a/bin/binnie/extrabees/gui/database/ControlClimateBar.class b/bin/binnie/extrabees/gui/database/ControlClimateBar.class
new file mode 100644
index 0000000000..f5b16230c5
--- /dev/null
+++ b/bin/binnie/extrabees/gui/database/ControlClimateBar.class
Binary files differ
diff --git a/bin/binnie/extrabees/gui/database/ControlProductsBox$Product.class b/bin/binnie/extrabees/gui/database/ControlProductsBox$Product.class
new file mode 100644
index 0000000000..3250d66e25
--- /dev/null
+++ b/bin/binnie/extrabees/gui/database/ControlProductsBox$Product.class
Binary files differ
diff --git a/bin/binnie/extrabees/gui/database/ControlProductsBox$Type.class b/bin/binnie/extrabees/gui/database/ControlProductsBox$Type.class
new file mode 100644
index 0000000000..75a8c1b06c
--- /dev/null
+++ b/bin/binnie/extrabees/gui/database/ControlProductsBox$Type.class
Binary files differ
diff --git a/bin/binnie/extrabees/gui/database/ControlProductsBox.class b/bin/binnie/extrabees/gui/database/ControlProductsBox.class
new file mode 100644
index 0000000000..704ec3e2e0
--- /dev/null
+++ b/bin/binnie/extrabees/gui/database/ControlProductsBox.class
Binary files differ
diff --git a/bin/binnie/extrabees/gui/database/ControlProductsItem.class b/bin/binnie/extrabees/gui/database/ControlProductsItem.class
new file mode 100644
index 0000000000..6193712fa2
--- /dev/null
+++ b/bin/binnie/extrabees/gui/database/ControlProductsItem.class
Binary files differ
diff --git a/bin/binnie/extrabees/gui/database/PageSpeciesClimate.class b/bin/binnie/extrabees/gui/database/PageSpeciesClimate.class
new file mode 100644
index 0000000000..f38bea7f84
--- /dev/null
+++ b/bin/binnie/extrabees/gui/database/PageSpeciesClimate.class
Binary files differ
diff --git a/bin/binnie/extrabees/gui/database/PageSpeciesGenome.class b/bin/binnie/extrabees/gui/database/PageSpeciesGenome.class
new file mode 100644
index 0000000000..f889f015b2
--- /dev/null
+++ b/bin/binnie/extrabees/gui/database/PageSpeciesGenome.class
Binary files differ
diff --git a/bin/binnie/extrabees/gui/database/PageSpeciesProducts.class b/bin/binnie/extrabees/gui/database/PageSpeciesProducts.class
new file mode 100644
index 0000000000..7656b24a2e
--- /dev/null
+++ b/bin/binnie/extrabees/gui/database/PageSpeciesProducts.class
Binary files differ
diff --git a/bin/binnie/extrabees/gui/database/WindowApiaristDatabase$BranchesTab.class b/bin/binnie/extrabees/gui/database/WindowApiaristDatabase$BranchesTab.class
new file mode 100644
index 0000000000..d590d6124e
--- /dev/null
+++ b/bin/binnie/extrabees/gui/database/WindowApiaristDatabase$BranchesTab.class
Binary files differ
diff --git a/bin/binnie/extrabees/gui/database/WindowApiaristDatabase$SpeciesTab.class b/bin/binnie/extrabees/gui/database/WindowApiaristDatabase$SpeciesTab.class
new file mode 100644
index 0000000000..6a5b9559b2
--- /dev/null
+++ b/bin/binnie/extrabees/gui/database/WindowApiaristDatabase$SpeciesTab.class
Binary files differ
diff --git a/bin/binnie/extrabees/gui/database/WindowApiaristDatabase.class b/bin/binnie/extrabees/gui/database/WindowApiaristDatabase.class
new file mode 100644
index 0000000000..5031cc93a3
--- /dev/null
+++ b/bin/binnie/extrabees/gui/database/WindowApiaristDatabase.class
Binary files differ
diff --git a/bin/binnie/extrabees/gui/punnett/ControlChromosome.class b/bin/binnie/extrabees/gui/punnett/ControlChromosome.class
new file mode 100644
index 0000000000..4215c408fd
--- /dev/null
+++ b/bin/binnie/extrabees/gui/punnett/ControlChromosome.class
Binary files differ
diff --git a/bin/binnie/extrabees/gui/punnett/ControlPunnett.class b/bin/binnie/extrabees/gui/punnett/ControlPunnett.class
new file mode 100644
index 0000000000..8f8b85dbeb
--- /dev/null
+++ b/bin/binnie/extrabees/gui/punnett/ControlPunnett.class
Binary files differ
diff --git a/bin/binnie/extrabees/gui/punnett/ExtraBeeGUITexture.class b/bin/binnie/extrabees/gui/punnett/ExtraBeeGUITexture.class
new file mode 100644
index 0000000000..ce3d2d84be
--- /dev/null
+++ b/bin/binnie/extrabees/gui/punnett/ExtraBeeGUITexture.class
Binary files differ
diff --git a/bin/binnie/extrabees/gui/punnett/WindowPunnettSquare$StyleSheetPunnett.class b/bin/binnie/extrabees/gui/punnett/WindowPunnettSquare$StyleSheetPunnett.class
new file mode 100644
index 0000000000..1dd19309cd
--- /dev/null
+++ b/bin/binnie/extrabees/gui/punnett/WindowPunnettSquare$StyleSheetPunnett.class
Binary files differ
diff --git a/bin/binnie/extrabees/gui/punnett/WindowPunnettSquare.class b/bin/binnie/extrabees/gui/punnett/WindowPunnettSquare.class
new file mode 100644
index 0000000000..e0fb44b0ee
--- /dev/null
+++ b/bin/binnie/extrabees/gui/punnett/WindowPunnettSquare.class
Binary files differ
diff --git a/bin/binnie/extrabees/liquids/ExtraBeeLiquid.class b/bin/binnie/extrabees/liquids/ExtraBeeLiquid.class
new file mode 100644
index 0000000000..a28c4851e3
--- /dev/null
+++ b/bin/binnie/extrabees/liquids/ExtraBeeLiquid.class
Binary files differ
diff --git a/bin/binnie/extrabees/liquids/ModuleLiquids.class b/bin/binnie/extrabees/liquids/ModuleLiquids.class
new file mode 100644
index 0000000000..735478fc3e
--- /dev/null
+++ b/bin/binnie/extrabees/liquids/ModuleLiquids.class
Binary files differ
diff --git a/bin/binnie/extrabees/products/EnumHoneyComb.class b/bin/binnie/extrabees/products/EnumHoneyComb.class
new file mode 100644
index 0000000000..66ad1f55c3
--- /dev/null
+++ b/bin/binnie/extrabees/products/EnumHoneyComb.class
Binary files differ
diff --git a/bin/binnie/extrabees/products/EnumHoneyDrop.class b/bin/binnie/extrabees/products/EnumHoneyDrop.class
new file mode 100644
index 0000000000..ff9e6d4fa2
--- /dev/null
+++ b/bin/binnie/extrabees/products/EnumHoneyDrop.class
Binary files differ
diff --git a/bin/binnie/extrabees/products/EnumPropolis.class b/bin/binnie/extrabees/products/EnumPropolis.class
new file mode 100644
index 0000000000..ae95e71cac
--- /dev/null
+++ b/bin/binnie/extrabees/products/EnumPropolis.class
Binary files differ
diff --git a/bin/binnie/extrabees/products/ItemHoneyComb$VanillaComb.class b/bin/binnie/extrabees/products/ItemHoneyComb$VanillaComb.class
new file mode 100644
index 0000000000..4cef0cfe0a
--- /dev/null
+++ b/bin/binnie/extrabees/products/ItemHoneyComb$VanillaComb.class
Binary files differ
diff --git a/bin/binnie/extrabees/products/ItemHoneyComb.class b/bin/binnie/extrabees/products/ItemHoneyComb.class
new file mode 100644
index 0000000000..02f987e698
--- /dev/null
+++ b/bin/binnie/extrabees/products/ItemHoneyComb.class
Binary files differ
diff --git a/bin/binnie/extrabees/products/ItemHoneyCrystal.class b/bin/binnie/extrabees/products/ItemHoneyCrystal.class
new file mode 100644
index 0000000000..19b5651da4
--- /dev/null
+++ b/bin/binnie/extrabees/products/ItemHoneyCrystal.class
Binary files differ
diff --git a/bin/binnie/extrabees/products/ItemHoneyCrystalEmpty.class b/bin/binnie/extrabees/products/ItemHoneyCrystalEmpty.class
new file mode 100644
index 0000000000..8c6320011f
--- /dev/null
+++ b/bin/binnie/extrabees/products/ItemHoneyCrystalEmpty.class
Binary files differ
diff --git a/bin/binnie/extrabees/products/ItemHoneyDrop.class b/bin/binnie/extrabees/products/ItemHoneyDrop.class
new file mode 100644
index 0000000000..5dd6b97dd9
--- /dev/null
+++ b/bin/binnie/extrabees/products/ItemHoneyDrop.class
Binary files differ
diff --git a/bin/binnie/extrabees/products/ItemProduct.class b/bin/binnie/extrabees/products/ItemProduct.class
new file mode 100644
index 0000000000..0384edff82
--- /dev/null
+++ b/bin/binnie/extrabees/products/ItemProduct.class
Binary files differ
diff --git a/bin/binnie/extrabees/products/ItemPropolis.class b/bin/binnie/extrabees/products/ItemPropolis.class
new file mode 100644
index 0000000000..7828999382
--- /dev/null
+++ b/bin/binnie/extrabees/products/ItemPropolis.class
Binary files differ
diff --git a/bin/binnie/extrabees/products/ModuleProducts.class b/bin/binnie/extrabees/products/ModuleProducts.class
new file mode 100644
index 0000000000..93a7a3f477
--- /dev/null
+++ b/bin/binnie/extrabees/products/ModuleProducts.class
Binary files differ
diff --git a/bin/binnie/extrabees/proxy/ExtraBeesProxy.class b/bin/binnie/extrabees/proxy/ExtraBeesProxy.class
new file mode 100644
index 0000000000..a6119310fe
--- /dev/null
+++ b/bin/binnie/extrabees/proxy/ExtraBeesProxy.class
Binary files differ
diff --git a/bin/binnie/extrabees/proxy/ExtraBeesProxyClient.class b/bin/binnie/extrabees/proxy/ExtraBeesProxyClient.class
new file mode 100644
index 0000000000..108adb0e92
--- /dev/null
+++ b/bin/binnie/extrabees/proxy/ExtraBeesProxyClient.class
Binary files differ
diff --git a/bin/binnie/extrabees/proxy/ExtraBeesProxyServer.class b/bin/binnie/extrabees/proxy/ExtraBeesProxyServer.class
new file mode 100644
index 0000000000..a2efe00aff
--- /dev/null
+++ b/bin/binnie/extrabees/proxy/ExtraBeesProxyServer.class
Binary files differ
diff --git a/bin/binnie/extrabees/worldgen/BlockExtraBeeHive.class b/bin/binnie/extrabees/worldgen/BlockExtraBeeHive.class
new file mode 100644
index 0000000000..09b52a1b27
--- /dev/null
+++ b/bin/binnie/extrabees/worldgen/BlockExtraBeeHive.class
Binary files differ
diff --git a/bin/binnie/extrabees/worldgen/EnumHiveType.class b/bin/binnie/extrabees/worldgen/EnumHiveType.class
new file mode 100644
index 0000000000..535384fa27
--- /dev/null
+++ b/bin/binnie/extrabees/worldgen/EnumHiveType.class
Binary files differ
diff --git a/bin/binnie/extrabees/worldgen/HiveDrop.class b/bin/binnie/extrabees/worldgen/HiveDrop.class
new file mode 100644
index 0000000000..2cd20dd668
--- /dev/null
+++ b/bin/binnie/extrabees/worldgen/HiveDrop.class
Binary files differ
diff --git a/bin/binnie/extrabees/worldgen/ItemBeehive.class b/bin/binnie/extrabees/worldgen/ItemBeehive.class
new file mode 100644
index 0000000000..1c984326c6
--- /dev/null
+++ b/bin/binnie/extrabees/worldgen/ItemBeehive.class
Binary files differ
diff --git a/bin/binnie/extrabees/worldgen/MaterialBeehive.class b/bin/binnie/extrabees/worldgen/MaterialBeehive.class
new file mode 100644
index 0000000000..e800220684
--- /dev/null
+++ b/bin/binnie/extrabees/worldgen/MaterialBeehive.class
Binary files differ
diff --git a/bin/binnie/extrabees/worldgen/ModuleGeneration.class b/bin/binnie/extrabees/worldgen/ModuleGeneration.class
new file mode 100644
index 0000000000..c6b17c3bb1
--- /dev/null
+++ b/bin/binnie/extrabees/worldgen/ModuleGeneration.class
Binary files differ
diff --git a/bin/binnie/extrabees/worldgen/WorldGenHiveNether.class b/bin/binnie/extrabees/worldgen/WorldGenHiveNether.class
new file mode 100644
index 0000000000..64e46787e7
--- /dev/null
+++ b/bin/binnie/extrabees/worldgen/WorldGenHiveNether.class
Binary files differ
diff --git a/bin/binnie/extrabees/worldgen/WorldGenHiveRock.class b/bin/binnie/extrabees/worldgen/WorldGenHiveRock.class
new file mode 100644
index 0000000000..dbf8e2cd28
--- /dev/null
+++ b/bin/binnie/extrabees/worldgen/WorldGenHiveRock.class
Binary files differ
diff --git a/bin/binnie/extrabees/worldgen/WorldGenHiveWater.class b/bin/binnie/extrabees/worldgen/WorldGenHiveWater.class
new file mode 100644
index 0000000000..fa86ee8a71
--- /dev/null
+++ b/bin/binnie/extrabees/worldgen/WorldGenHiveWater.class
Binary files differ
diff --git a/bin/mcmod.info b/bin/mcmod.info
new file mode 100644
index 0000000000..0c2b859007
--- /dev/null
+++ b/bin/mcmod.info
@@ -0,0 +1,19 @@
+/**
+ * @version 0.1
+ * @author Alkalus
+ * In-game info for project: Hello World.
+ */
+[ { "modid" : "miscutils"
+ , "name" : "miscutils"
+ , "description" : "Adds a few various things. Supported mods include GregTech, EnderIO, Big Reactors, Thaumcraft, ExtraUtils, Pnuematicraft & Simply Jetpacks."
+ , "version" : "0.7.8gtu"
+ , "mcversion" : "1.7.10"
+ , "url" : ""
+ , "updateUrl" : ""
+ , "authorList" : ["Alkalus"]
+ , "credits" : ""
+ , "logoFile" : ""
+ , "screenshots" : []
+ , "dependencies" : ["Forge10.13.0.1180"]
+ }
+]
diff --git a/bin/miscutil/MiscUtils.class b/bin/miscutil/MiscUtils.class
new file mode 100644
index 0000000000..f1f8e3bde1
--- /dev/null
+++ b/bin/miscutil/MiscUtils.class
Binary files differ
diff --git a/bin/miscutil/core/CommonProxy.class b/bin/miscutil/core/CommonProxy.class
new file mode 100644
index 0000000000..4422f3578f
--- /dev/null
+++ b/bin/miscutil/core/CommonProxy.class
Binary files differ
diff --git a/bin/miscutil/core/block/AdvancedBlock.class b/bin/miscutil/core/block/AdvancedBlock.class
new file mode 100644
index 0000000000..6d4c9d6814
--- /dev/null
+++ b/bin/miscutil/core/block/AdvancedBlock.class
Binary files differ
diff --git a/bin/miscutil/core/block/BasicBlock.class b/bin/miscutil/core/block/BasicBlock.class
new file mode 100644
index 0000000000..4c27ab8fad
--- /dev/null
+++ b/bin/miscutil/core/block/BasicBlock.class
Binary files differ
diff --git a/bin/miscutil/core/block/ModBlocks.class b/bin/miscutil/core/block/ModBlocks.class
new file mode 100644
index 0000000000..3ab9e7181b
--- /dev/null
+++ b/bin/miscutil/core/block/ModBlocks.class
Binary files differ
diff --git a/bin/miscutil/core/commands/CommandMath.class b/bin/miscutil/core/commands/CommandMath.class
new file mode 100644
index 0000000000..7299e099a0
--- /dev/null
+++ b/bin/miscutil/core/commands/CommandMath.class
Binary files differ
diff --git a/bin/miscutil/core/commands/CommandUtils.class b/bin/miscutil/core/commands/CommandUtils.class
new file mode 100644
index 0000000000..fa1303b14c
--- /dev/null
+++ b/bin/miscutil/core/commands/CommandUtils.class
Binary files differ
diff --git a/bin/miscutil/core/creativetabs/MiscUtilCreativeTabBlock.class b/bin/miscutil/core/creativetabs/MiscUtilCreativeTabBlock.class
new file mode 100644
index 0000000000..144cde1bc3
--- /dev/null
+++ b/bin/miscutil/core/creativetabs/MiscUtilCreativeTabBlock.class
Binary files differ
diff --git a/bin/miscutil/core/creativetabs/MiscUtilCreativeTabMachines.class b/bin/miscutil/core/creativetabs/MiscUtilCreativeTabMachines.class
new file mode 100644
index 0000000000..0e0dc211c2
--- /dev/null
+++ b/bin/miscutil/core/creativetabs/MiscUtilCreativeTabMachines.class
Binary files differ
diff --git a/bin/miscutil/core/creativetabs/MiscUtilCreativeTabMisc.class b/bin/miscutil/core/creativetabs/MiscUtilCreativeTabMisc.class
new file mode 100644
index 0000000000..8fe10134d7
--- /dev/null
+++ b/bin/miscutil/core/creativetabs/MiscUtilCreativeTabMisc.class
Binary files differ
diff --git a/bin/miscutil/core/creativetabs/MiscUtilCreativeTabTools.class b/bin/miscutil/core/creativetabs/MiscUtilCreativeTabTools.class
new file mode 100644
index 0000000000..2265f4344b
--- /dev/null
+++ b/bin/miscutil/core/creativetabs/MiscUtilCreativeTabTools.class
Binary files differ
diff --git a/bin/miscutil/core/creativetabs/TMCreativeTabs.class b/bin/miscutil/core/creativetabs/TMCreativeTabs.class
new file mode 100644
index 0000000000..572ec76ad5
--- /dev/null
+++ b/bin/miscutil/core/creativetabs/TMCreativeTabs.class
Binary files differ
diff --git a/bin/miscutil/core/gui/GUI_Bat_Buf$NextPageButton.class b/bin/miscutil/core/gui/GUI_Bat_Buf$NextPageButton.class
new file mode 100644
index 0000000000..74fe3de02f
--- /dev/null
+++ b/bin/miscutil/core/gui/GUI_Bat_Buf$NextPageButton.class
Binary files differ
diff --git a/bin/miscutil/core/gui/GUI_Bat_Buf.class b/bin/miscutil/core/gui/GUI_Bat_Buf.class
new file mode 100644
index 0000000000..72f0e12155
--- /dev/null
+++ b/bin/miscutil/core/gui/GUI_Bat_Buf.class
Binary files differ
diff --git a/bin/miscutil/core/gui/GUI_Battery_Buffer.class b/bin/miscutil/core/gui/GUI_Battery_Buffer.class
new file mode 100644
index 0000000000..c060a8a3e4
--- /dev/null
+++ b/bin/miscutil/core/gui/GUI_Battery_Buffer.class
Binary files differ
diff --git a/bin/miscutil/core/gui/GUI_Tool_Builder.class b/bin/miscutil/core/gui/GUI_Tool_Builder.class
new file mode 100644
index 0000000000..1a6ad4aaf8
--- /dev/null
+++ b/bin/miscutil/core/gui/GUI_Tool_Builder.class
Binary files differ
diff --git a/bin/miscutil/core/gui/Gui_No_Inventory_Base.class b/bin/miscutil/core/gui/Gui_No_Inventory_Base.class
new file mode 100644
index 0000000000..94a2a6c49a
--- /dev/null
+++ b/bin/miscutil/core/gui/Gui_No_Inventory_Base.class
Binary files differ
diff --git a/bin/miscutil/core/gui/ModGUI.class b/bin/miscutil/core/gui/ModGUI.class
new file mode 100644
index 0000000000..97e0ef0bbd
--- /dev/null
+++ b/bin/miscutil/core/gui/ModGUI.class
Binary files differ
diff --git a/bin/miscutil/core/handler/CraftingManager.class b/bin/miscutil/core/handler/CraftingManager.class
new file mode 100644
index 0000000000..ca579a3fb0
--- /dev/null
+++ b/bin/miscutil/core/handler/CraftingManager.class
Binary files differ
diff --git a/bin/miscutil/core/handler/GuiHandler.class b/bin/miscutil/core/handler/GuiHandler.class
new file mode 100644
index 0000000000..4e7f28c95f
--- /dev/null
+++ b/bin/miscutil/core/handler/GuiHandler.class
Binary files differ
diff --git a/bin/miscutil/core/handler/ResourceHandler.class b/bin/miscutil/core/handler/ResourceHandler.class
new file mode 100644
index 0000000000..f05bf53224
--- /dev/null
+++ b/bin/miscutil/core/handler/ResourceHandler.class
Binary files differ
diff --git a/bin/miscutil/core/item/BaseMetaItemTool.class b/bin/miscutil/core/item/BaseMetaItemTool.class
new file mode 100644
index 0000000000..be77d1bb07
--- /dev/null
+++ b/bin/miscutil/core/item/BaseMetaItemTool.class
Binary files differ
diff --git a/bin/miscutil/core/item/EntityTeleportFX.class b/bin/miscutil/core/item/EntityTeleportFX.class
new file mode 100644
index 0000000000..fddf52edde
--- /dev/null
+++ b/bin/miscutil/core/item/EntityTeleportFX.class
Binary files differ
diff --git a/bin/miscutil/core/item/ModItems.class b/bin/miscutil/core/item/ModItems.class
new file mode 100644
index 0000000000..3a46561a36
--- /dev/null
+++ b/bin/miscutil/core/item/ModItems.class
Binary files differ
diff --git a/bin/miscutil/core/item/effects/RarityEffect.class b/bin/miscutil/core/item/effects/RarityEffect.class
new file mode 100644
index 0000000000..8518d7200b
--- /dev/null
+++ b/bin/miscutil/core/item/effects/RarityEffect.class
Binary files differ
diff --git a/bin/miscutil/core/item/effects/RarityEpic.class b/bin/miscutil/core/item/effects/RarityEpic.class
new file mode 100644
index 0000000000..c28ca2fef5
--- /dev/null
+++ b/bin/miscutil/core/item/effects/RarityEpic.class
Binary files differ
diff --git a/bin/miscutil/core/item/effects/RarityRare.class b/bin/miscutil/core/item/effects/RarityRare.class
new file mode 100644
index 0000000000..171dda1258
--- /dev/null
+++ b/bin/miscutil/core/item/effects/RarityRare.class
Binary files differ
diff --git a/bin/miscutil/core/item/effects/RarityUncommon.class b/bin/miscutil/core/item/effects/RarityUncommon.class
new file mode 100644
index 0000000000..fe949e7f5e
--- /dev/null
+++ b/bin/miscutil/core/item/effects/RarityUncommon.class
Binary files differ
diff --git a/bin/miscutil/core/item/materials/MaterialHandler.class b/bin/miscutil/core/item/materials/MaterialHandler.class
new file mode 100644
index 0000000000..ba63a0608b
--- /dev/null
+++ b/bin/miscutil/core/item/materials/MaterialHandler.class
Binary files differ
diff --git a/bin/miscutil/core/item/tool/bloodsteel/BloodSteelArmor.class b/bin/miscutil/core/item/tool/bloodsteel/BloodSteelArmor.class
new file mode 100644
index 0000000000..82f2dde9f6
--- /dev/null
+++ b/bin/miscutil/core/item/tool/bloodsteel/BloodSteelArmor.class
Binary files differ
diff --git a/bin/miscutil/core/item/tool/bloodsteel/BloodSteelAxe.class b/bin/miscutil/core/item/tool/bloodsteel/BloodSteelAxe.class
new file mode 100644
index 0000000000..e1f72d7025
--- /dev/null
+++ b/bin/miscutil/core/item/tool/bloodsteel/BloodSteelAxe.class
Binary files differ
diff --git a/bin/miscutil/core/item/tool/bloodsteel/BloodSteelHoe.class b/bin/miscutil/core/item/tool/bloodsteel/BloodSteelHoe.class
new file mode 100644
index 0000000000..7ed802e360
--- /dev/null
+++ b/bin/miscutil/core/item/tool/bloodsteel/BloodSteelHoe.class
Binary files differ
diff --git a/bin/miscutil/core/item/tool/bloodsteel/BloodSteelPickaxe.class b/bin/miscutil/core/item/tool/bloodsteel/BloodSteelPickaxe.class
new file mode 100644
index 0000000000..95ae80695c
--- /dev/null
+++ b/bin/miscutil/core/item/tool/bloodsteel/BloodSteelPickaxe.class
Binary files differ
diff --git a/bin/miscutil/core/item/tool/bloodsteel/BloodSteelSpade.class b/bin/miscutil/core/item/tool/bloodsteel/BloodSteelSpade.class
new file mode 100644
index 0000000000..88fcf82223
--- /dev/null
+++ b/bin/miscutil/core/item/tool/bloodsteel/BloodSteelSpade.class
Binary files differ
diff --git a/bin/miscutil/core/item/tool/bloodsteel/BloodSteelSword.class b/bin/miscutil/core/item/tool/bloodsteel/BloodSteelSword.class
new file mode 100644
index 0000000000..73305949f9
--- /dev/null
+++ b/bin/miscutil/core/item/tool/bloodsteel/BloodSteelSword.class
Binary files differ
diff --git a/bin/miscutil/core/item/tool/staballoy/StaballoyPickaxe.class b/bin/miscutil/core/item/tool/staballoy/StaballoyPickaxe.class
new file mode 100644
index 0000000000..0a9fa21fb3
--- /dev/null
+++ b/bin/miscutil/core/item/tool/staballoy/StaballoyPickaxe.class
Binary files differ
diff --git a/bin/miscutil/core/lib/Strings$GUI_ENUM.class b/bin/miscutil/core/lib/Strings$GUI_ENUM.class
new file mode 100644
index 0000000000..36f09c80de
--- /dev/null
+++ b/bin/miscutil/core/lib/Strings$GUI_ENUM.class
Binary files differ
diff --git a/bin/miscutil/core/lib/Strings.class b/bin/miscutil/core/lib/Strings.class
new file mode 100644
index 0000000000..8439aea45e
--- /dev/null
+++ b/bin/miscutil/core/lib/Strings.class
Binary files differ
diff --git a/bin/miscutil/core/proxy/ClientProxy.class b/bin/miscutil/core/proxy/ClientProxy.class
new file mode 100644
index 0000000000..9315b3c2bf
--- /dev/null
+++ b/bin/miscutil/core/proxy/ClientProxy.class
Binary files differ
diff --git a/bin/miscutil/core/proxy/ServerProxy.class b/bin/miscutil/core/proxy/ServerProxy.class
new file mode 100644
index 0000000000..932aac50c8
--- /dev/null
+++ b/bin/miscutil/core/proxy/ServerProxy.class
Binary files differ
diff --git a/bin/miscutil/core/tileentities/ModTileEntities.class b/bin/miscutil/core/tileentities/ModTileEntities.class
new file mode 100644
index 0000000000..ae08ae616d
--- /dev/null
+++ b/bin/miscutil/core/tileentities/ModTileEntities.class
Binary files differ
diff --git a/bin/miscutil/core/util/Benchmark.class b/bin/miscutil/core/util/Benchmark.class
new file mode 100644
index 0000000000..036752c86f
--- /dev/null
+++ b/bin/miscutil/core/util/Benchmark.class
Binary files differ
diff --git a/bin/miscutil/core/util/Utils.class b/bin/miscutil/core/util/Utils.class
new file mode 100644
index 0000000000..8ba30549c0
--- /dev/null
+++ b/bin/miscutil/core/util/Utils.class
Binary files differ
diff --git a/bin/miscutil/gregtech/energy/IC2ElectricItem.class b/bin/miscutil/gregtech/energy/IC2ElectricItem.class
new file mode 100644
index 0000000000..f4e8f5a264
--- /dev/null
+++ b/bin/miscutil/gregtech/energy/IC2ElectricItem.class
Binary files differ
diff --git a/bin/miscutil/gregtech/energy/IC2ElectricItemManager.class b/bin/miscutil/gregtech/energy/IC2ElectricItemManager.class
new file mode 100644
index 0000000000..c2dc126696
--- /dev/null
+++ b/bin/miscutil/gregtech/energy/IC2ElectricItemManager.class
Binary files differ
diff --git a/bin/miscutil/gregtech/enums/AddExtraOreDict.class b/bin/miscutil/gregtech/enums/AddExtraOreDict.class
new file mode 100644
index 0000000000..86dc667bca
--- /dev/null
+++ b/bin/miscutil/gregtech/enums/AddExtraOreDict.class
Binary files differ
diff --git a/bin/miscutil/gregtech/enums/ExtraOreDictNames.class b/bin/miscutil/gregtech/enums/ExtraOreDictNames.class
new file mode 100644
index 0000000000..1b02edaabc
--- /dev/null
+++ b/bin/miscutil/gregtech/enums/ExtraOreDictNames.class
Binary files differ
diff --git a/bin/miscutil/gregtech/enums/GregtechItemList.class b/bin/miscutil/gregtech/enums/GregtechItemList.class
new file mode 100644
index 0000000000..82da2ffb66
--- /dev/null
+++ b/bin/miscutil/gregtech/enums/GregtechItemList.class
Binary files differ
diff --git a/bin/miscutil/gregtech/init/InitGregtech.class b/bin/miscutil/gregtech/init/InitGregtech.class
new file mode 100644
index 0000000000..e336d53009
--- /dev/null
+++ b/bin/miscutil/gregtech/init/InitGregtech.class
Binary files differ
diff --git a/bin/miscutil/gregtech/init/machines/GregtechCobbleGenerator.class b/bin/miscutil/gregtech/init/machines/GregtechCobbleGenerator.class
new file mode 100644
index 0000000000..f9a04d0306
--- /dev/null
+++ b/bin/miscutil/gregtech/init/machines/GregtechCobbleGenerator.class
Binary files differ
diff --git a/bin/miscutil/gregtech/init/machines/GregtechEnergyBuffer.class b/bin/miscutil/gregtech/init/machines/GregtechEnergyBuffer.class
new file mode 100644
index 0000000000..0c51e0f717
--- /dev/null
+++ b/bin/miscutil/gregtech/init/machines/GregtechEnergyBuffer.class
Binary files differ
diff --git a/bin/miscutil/gregtech/interfaces/GregtechItemContainer.class b/bin/miscutil/gregtech/interfaces/GregtechItemContainer.class
new file mode 100644
index 0000000000..e9ad90a2db
--- /dev/null
+++ b/bin/miscutil/gregtech/interfaces/GregtechItemContainer.class
Binary files differ
diff --git a/bin/miscutil/gregtech/metatileentity/implementations/GregtechMetaCreativeEnergyBuffer.class b/bin/miscutil/gregtech/metatileentity/implementations/GregtechMetaCreativeEnergyBuffer.class
new file mode 100644
index 0000000000..47ae93e238
--- /dev/null
+++ b/bin/miscutil/gregtech/metatileentity/implementations/GregtechMetaCreativeEnergyBuffer.class
Binary files differ
diff --git a/bin/miscutil/gregtech/metatileentity/implementations/GregtechMetaEnergyBuffer.class b/bin/miscutil/gregtech/metatileentity/implementations/GregtechMetaEnergyBuffer.class
new file mode 100644
index 0000000000..cd1462cecf
--- /dev/null
+++ b/bin/miscutil/gregtech/metatileentity/implementations/GregtechMetaEnergyBuffer.class
Binary files differ
diff --git a/bin/miscutil/gregtech/metatileentity/implementations/GregtechMetaTileEntity.class b/bin/miscutil/gregtech/metatileentity/implementations/GregtechMetaTileEntity.class
new file mode 100644
index 0000000000..22a494a037
--- /dev/null
+++ b/bin/miscutil/gregtech/metatileentity/implementations/GregtechMetaTileEntity.class
Binary files differ
diff --git a/bin/miscutil/gregtech/metatileentity/implementations/GregtechSteelBoiler.class b/bin/miscutil/gregtech/metatileentity/implementations/GregtechSteelBoiler.class
new file mode 100644
index 0000000000..42b470522d
--- /dev/null
+++ b/bin/miscutil/gregtech/metatileentity/implementations/GregtechSteelBoiler.class
Binary files differ
diff --git a/bin/miscutil/gregtech/util/IMessage.class b/bin/miscutil/gregtech/util/IMessage.class
new file mode 100644
index 0000000000..c62a5d4772
--- /dev/null
+++ b/bin/miscutil/gregtech/util/IMessage.class
Binary files differ
diff --git a/bin/miscutil/gregtech/util/VanillaChatCommandSender.class b/bin/miscutil/gregtech/util/VanillaChatCommandSender.class
new file mode 100644
index 0000000000..4cee5d40f5
--- /dev/null
+++ b/bin/miscutil/gregtech/util/VanillaChatCommandSender.class
Binary files differ
diff --git a/build.gradle b/build.gradle
new file mode 100644
index 0000000000..200d5b69e5
--- /dev/null
+++ b/build.gradle
@@ -0,0 +1,43 @@
+ buildscript {
+repositories
+{
+mavenCentral()
+maven {
+name = "forge"
+url = "http://files.minecraftforge.net/maven"
+}
+maven {
+name = "sonatype"
+url = "https://oss.sonatype.org/content/repositories/snapshots/"
+}
+}
+dependencies
+{
+classpath "net.minecraftforge.gradle:ForgeGradle:1.2-SNAPSHOT"
+}
+}
+
+apply plugin: "forge"
+
+sourceSets
+{
+main
+{
+java { srcDirs = ["$projectDir/src/java"] }
+resources { srcDirs = ["$projectDir/src/resources"] }
+}
+}
+
+dependencies {
+ compile files('mods/gregtech_1.7.10-5.08.30.jar')
+ compile files('mods/industrialcraft-2-2.2.720-experimental-dev.jar')
+}
+
+sourceCompatibility = JavaVersion.VERSION_1_7
+targetCompatibility = JavaVersion.VERSION_1_7
+sourceCompatibility = 1.7
+targetCompatibility = 1.7
+
+archivesBaseName = "MiscUtils"
+version = "0.7.8gtu"
+minecraft.version = "1.7.10-10.13.4.1448-1.7.10" \ No newline at end of file
diff --git a/config/CodeChickenCore.cfg b/config/CodeChickenCore.cfg
new file mode 100644
index 0000000000..b5851ee122
--- /dev/null
+++ b/config/CodeChickenCore.cfg
@@ -0,0 +1,27 @@
+#CodeChickenCore configuration file.
+
+checkUpdates=true
+
+#set to true to completely deobfuscate mcp names
+dev.deobfuscate=true
+#Enabling this setting will make all minecraft classes public at runtime in MCP just as they are in modloader.
+#You should ONLY use this when you are testing with a mod that relies on runtime publicity and doesn't include access transformers.
+#Such mods are doing the wrong thing and should be fixed.
+dev.runtimePublic=false
+
+#Various tweaks that can be applied to game mechanics.
+tweaks
+{
+ #If set to true and doFireTick is disabled in the game rules, fire will still dissipate if it's not over a fire source
+ doFireTickOut=true
+ #If set to true, creepers will not destroy landscape. (A version of mobGriefing setting just for creepers)
+ environmentallyFriendlyCreepers=false
+ #If set to true two adjacent water source blocks will not generate a third.
+ finiteWater=false
+ #Set this to true to use the pre1.5 lava textures
+ replaceLavaFX=false
+ #Set this to true to use the pre1.5 water textures
+ replaceWaterFX=false
+ #If set to false, leaves will only replace air when growing
+ softLeafReplace=false
+}
diff --git a/config/CodeChickenLib.cfg b/config/CodeChickenLib.cfg
new file mode 100644
index 0000000000..d19a4f9b85
--- /dev/null
+++ b/config/CodeChickenLib.cfg
@@ -0,0 +1,8 @@
+#CodeChickenLib development configuration file.
+
+dump_asm=true
+
+#Path to directory holding packaged.srg, fields.csv and methods.csv for mcp remapping
+mappingDir=C:\eclipse\AlkalusCraft\mcp908\conf
+
+textify=true
diff --git a/config/enderio/AlloySmelterRecipes_Core.xml b/config/enderio/AlloySmelterRecipes_Core.xml
new file mode 100644
index 0000000000..7c4c7b9d72
--- /dev/null
+++ b/config/enderio/AlloySmelterRecipes_Core.xml
@@ -0,0 +1,444 @@
+<!--
+
+IMPORTANT:
+ This is the core recipe file. Modifying this file will have no effect.
+ It will be rewritten by EnderIO and all modifications made to it will be lost. To add
+ or modify recipes please use 'AlloySmelterRecipes_User.xml'
+
+Please refer to the documentation in SAGMillRecipes_Core/_User for details on the format used.
+Recipes for the alloy smelter have multiple inputs (up to three) and a single output. Multiple output tags
+can be used as long as they are for the same item. This allows 'chance' outputs, for example, if you wanted to
+output some 4 bronze ingots with a 50% chance of a fifth, you would use:
+
+<recipe name="Smelted Bronze" energyCost="750">
+ <input>
+ <itemStack oreDictionary="ingotCopper" number="1"/>
+ </input>
+ <input>
+ <itemStack oreDictionary="ingotTon" number="3"/>
+ </input>
+ <output>
+ <itemStack oreDictionary="ingotBronze" number="4" exp="0.5"/>
+ <itemStack oreDictionary="ingotBronze" number="1" exp="0.5" chance="0.5"/>
+ </output>
+</recipe>
+
+
+The 'exp' value ranges from 0-1. Some exmaple values from a vanilla furnace are:
+gold=1
+iron=0.7
+food=0.35
+sand/cobble/wood=0.1
+
+
+Recipes can also be added using forge IMC messages. For example, in the init method of a mod:
+
+String recipe =
+ "<recipeGroup name=\"cheaty\">" +
+ "<recipe name=\"foo\" energyCost=\"2400\">" +
+ "<input>" +
+ "<itemStack modID=\"minecraft\" itemName=\"dirt\"/>" +
+ "</input>" +
+ "<output>" +
+ "<itemStack modID=\"minecraft\" itemName=\"diamond\"/>" +
+ "</output>" +
+ "</recipe>" +
+ "</recipeGroup>";
+FMLInterModComms.sendMessage("EnderIO", "recipe:alloysmelter", recipe);
+
+
+
+Item Information and data dumps:
+
+To show ore dictionary and/or registered names, in the EnderIO config set:
+addRegisterdNameTooltip=true
+addOreDictionaryTooltips=true
+
+To write all registered items to config/modObjectsRegistery.txt include in SAGMillRecipes_User.xml:
+<dumpRegistry modObjects="true/>
+
+To write the contents of the ore dictionary to config/oreDictionaryRegistery.txt include in SAGMillRecipes_User.xml:
+<dumpRegistery oreDictionary="true"/>
+
+
+
+-->
+
+<AlloySmelterRecipes>
+
+ <recipeGroup name="EnderIO"> <!-- Required for EnderIO to function correctly. -->
+
+ <recipe name="Electrical Steel" energyCost="10000">
+ <input>
+ <itemStack modID="minecraft" itemName="iron_ingot" />
+ <itemStack oreDictionary="dustCoal" />
+ <itemStack oreDictionary="itemSilicon" />
+ </input>
+ <output>
+ <itemStack modID="EnderIO" itemName="itemAlloy" itemMeta="0" exp="0.5" />
+ </output>
+ </recipe>
+
+ <recipe name="Energetic Alloy" energyCost="10000">
+ <input>
+ <itemStack modID="minecraft" itemName="redstone" />
+ <itemStack modID="minecraft" itemName="gold_ingot" />
+ <itemStack modID="minecraft" itemName="glowstone_dust" />
+ </input>
+ <output>
+ <itemStack modID="EnderIO" itemName="itemAlloy" itemMeta="1" exp="0.7" />
+ </output>
+ </recipe>
+
+ <recipe name="Vibrant Alloy" energyCost="10000">
+ <input>
+ <itemStack modID="EnderIO" itemName="itemAlloy" itemMeta="1" /> <!-- Energetic Alloy -->
+ <itemStack modID="minecraft" itemName="ender_pearl" />
+ </input>
+ <output>
+ <itemStack modID="EnderIO" itemName="itemAlloy" itemMeta="2" exp="1" />
+ </output>
+ </recipe>
+
+ <recipe name="Redstone Alloy" energyCost="10000">
+ <input>
+ <itemStack modID="minecraft" itemName="redstone" />
+ <itemStack modID="EnderIO" itemName="itemMaterial" itemMeta="0" /> <!-- Silicon -->
+ </input>
+ <output>
+ <itemStack modID="EnderIO" itemName="itemAlloy" itemMeta="3" exp="0.5" />
+ </output>
+ </recipe>
+
+ <recipe name="Conductive Iron" energyCost="10000">
+ <input>
+ <itemStack modID="minecraft" itemName="redstone" />
+ <itemStack modID="minecraft" itemName="iron_ingot" />
+ </input>
+ <output>
+ <itemStack modID="EnderIO" itemName="itemAlloy" itemMeta="4" exp="0.5" />
+ </output>
+ </recipe>
+
+ <recipe name="Pulsating Iron" energyCost="10000">
+ <input>
+ <itemStack modID="minecraft" itemName="iron_ingot" />
+ <itemStack modID="minecraft" itemName="ender_pearl" />
+ </input>
+ <output>
+ <itemStack modID="EnderIO" itemName="itemAlloy" itemMeta="5" exp="0.7" />
+ </output>
+ </recipe>
+
+ <recipe name="Dark Steel" energyCost="20000">
+ <input>
+ <itemStack modID="minecraft" itemName="iron_ingot" />
+ <itemStack oreDictionary="dustCoal" />
+ <itemStack modID="minecraft" itemName="obsidian" />
+ </input>
+ <output>
+ <itemStack modID="EnderIO" itemName="itemAlloy" itemMeta="6" exp="0.5" />
+ </output>
+ </recipe>
+
+ <recipe name="Soularium" energyCost="10000">
+ <input>
+ <itemStack modID="minecraft" itemName="soul_sand" />
+ <itemStack modID="minecraft" itemName="gold_ingot" />
+ </input>
+ <output>
+ <itemStack modID="EnderIO" itemName="itemAlloy" itemMeta="7" exp="0.7" />
+ </output>
+ </recipe>
+
+ <recipe name="Fused Quartz" energyCost="5000">
+ <input>
+ <itemStack modID="minecraft" itemName="quartz" number="4" />
+ </input>
+ <output>
+ <itemStack modID="EnderIO" itemName="blockFusedQuartz" itemMeta="0" exp="0.5" />
+ </output>
+ </recipe>
+
+ <recipe name="Fused Quartz 2 Slots" energyCost="10000">
+ <input>
+ <itemStack modID="minecraft" itemName="quartz" number="4" />
+ <itemStack modID="minecraft" itemName="quartz" number="4" />
+ </input>
+ <output>
+ <itemStack modID="EnderIO" itemName="blockFusedQuartz" itemMeta="0" exp="0.5" number="2" />
+ </output>
+ </recipe>
+
+ <recipe name="Fused Quartz 3 Slots" energyCost="15000">
+ <input>
+ <itemStack modID="minecraft" itemName="quartz" number="4" />
+ <itemStack modID="minecraft" itemName="quartz" number="4" />
+ <itemStack modID="minecraft" itemName="quartz" number="4" />
+ </input>
+ <output>
+ <itemStack modID="EnderIO" itemName="blockFusedQuartz" itemMeta="0" exp="0.5" number="3" />
+ </output>
+ </recipe>
+
+ <recipe name="Fused Glass" energyCost="2500">
+ <input>
+ <itemStack oreDictionary="sand" />
+ </input>
+ <output>
+ <itemStack modID="EnderIO" itemName="blockFusedQuartz" itemMeta="1" exp="0.2" />
+ </output>
+ </recipe>
+
+ <recipe name="Fused Glass 2 Slots" energyCost="5000">
+ <input>
+ <itemStack oreDictionary="sand" />
+ <itemStack oreDictionary="sand" />
+ </input>
+ <output>
+ <itemStack modID="EnderIO" itemName="blockFusedQuartz" itemMeta="1" exp="0.2" number="2" />
+ </output>
+ </recipe>
+
+ <recipe name="Fused Glass 3 Slots" energyCost="7500">
+ <input>
+ <itemStack oreDictionary="sand" />
+ <itemStack oreDictionary="sand" />
+ <itemStack oreDictionary="sand" />
+ </input>
+ <output>
+ <itemStack modID="EnderIO" itemName="blockFusedQuartz" itemMeta="1" exp="0.2" number="3" />
+ </output>
+ </recipe>
+
+
+ <recipe name="Enlightened Fused Quartz" energyCost="5000">
+ <input>
+ <itemStack modID="minecraft" itemName="quartz" number="4" />
+ <itemStack modID="minecraft" itemName="glowstone_dust" number="4" />
+ </input>
+ <output>
+ <itemStack modID="EnderIO" itemName="blockFusedQuartz" itemMeta="2" exp="0.5" />
+ </output>
+ </recipe>
+
+ <recipe name="Enlightened Fused Quartz 2" energyCost="5000">
+ <input>
+ <itemStack modID="EnderIO" itemName="blockFusedQuartz" itemMeta="0" />
+ <itemStack modID="minecraft" itemName="glowstone_dust" number="4" />
+ </input>
+ <output>
+ <itemStack modID="EnderIO" itemName="blockFusedQuartz" itemMeta="2" exp="0.5" />
+ </output>
+ </recipe>
+
+ <recipe name="Enlightened Fused Glass" energyCost="2500">
+ <input>
+ <itemStack oreDictionary="sand" />
+ <itemStack modID="minecraft" itemName="glowstone_dust" number="4" />
+ </input>
+ <output>
+ <itemStack modID="EnderIO" itemName="blockFusedQuartz" itemMeta="3" exp="0.2" />
+ </output>
+ </recipe>
+
+ <recipe name="Enlightened Fused Glass 2" energyCost="2500">
+ <input>
+ <itemStack modID="EnderIO" itemName="blockFusedQuartz" itemMeta="1" />
+ <itemStack modID="minecraft" itemName="glowstone_dust" number="4" />
+ </input>
+ <output>
+ <itemStack modID="EnderIO" itemName="blockFusedQuartz" itemMeta="3" exp="0.2" />
+ </output>
+ </recipe>
+
+ <recipe name="Fused Quartz from Block" energyCost="5000">
+ <input>
+ <itemStack modID="minecraft" itemName="quartz_block" number="1" />
+ </input>
+ <output>
+ <itemStack modID="EnderIO" itemName="blockFusedQuartz" itemMeta="0" exp="0.5" />
+ </output>
+ </recipe>
+
+ <recipe name="Enlightened Fused Quartz from Block" energyCost="5000">
+ <input>
+ <itemStack modID="minecraft" itemName="quartz_block" number="1" />
+ <itemStack modID="minecraft" itemName="glowstone_dust" number="4" />
+ </input>
+ <output>
+ <itemStack modID="EnderIO" itemName="blockFusedQuartz" itemMeta="2" exp="0.5" />
+ </output>
+ </recipe>
+
+ <recipe name="Enlightened Fused Quartz from Block 2" energyCost="5000">
+ <input>
+ <itemStack modID="minecraft" itemName="quartz_block" number="1" />
+ <itemStack modID="minecraft" itemName="glowstone" number="1" />
+ </input>
+ <output>
+ <itemStack modID="EnderIO" itemName="blockFusedQuartz" itemMeta="2" exp="0.5" />
+ </output>
+ </recipe>
+
+ <recipe name="Enlightened Fused Quartz from Block 3" energyCost="5000">
+ <input>
+ <itemStack modID="minecraft" itemName="quartz" number="4" />
+ <itemStack modID="minecraft" itemName="glowstone" number="1" />
+ </input>
+ <output>
+ <itemStack modID="EnderIO" itemName="blockFusedQuartz" itemMeta="2" exp="0.5" />
+ </output>
+ </recipe>
+
+ <recipe name="Enlightened Fused Quartz from Block 4" energyCost="5000">
+ <input>
+ <itemStack modID="EnderIO" itemName="blockFusedQuartz" itemMeta="0" />
+ <itemStack modID="minecraft" itemName="glowstone" number="1" />
+ </input>
+ <output>
+ <itemStack modID="EnderIO" itemName="blockFusedQuartz" itemMeta="2" exp="0.5" />
+ </output>
+ </recipe>
+
+ </recipeGroup>
+
+
+ <recipeGroup name="Thermal Expansion">
+
+ <recipe name="Electrum Ingot" energyCost="2000">
+ <input>
+ <itemStack oreDictionary="ingotGold" />
+ <itemStack oreDictionary="ingotSilver" />
+ </input>
+ <output>
+ <itemStack oreDictionary="ingotElectrum" number="2" exp="0.25" />
+ </output>
+ </recipe>
+
+ <recipe name="Invar Ingot" energyCost="3000">
+ <input>
+ <itemStack oreDictionary="ingotNickel" />
+ <itemStack oreDictionary="ingotIron" number="2" />
+ </input>
+ <output>
+ <itemStack oreDictionary="ingotInvar" number="3" exp="0.25" />
+ </output>
+ </recipe>
+
+ <recipe name="Hardened Glass" energyCost="4000">
+ <input>
+ <itemStack oreDictionary="dustObsidian" number="8" />
+ <itemStack oreDictionary="ingotLead" />
+ </input>
+ <output>
+ <itemStack modID="ThermalExpansion" itemName="Glass" number="2" />
+ </output>
+ </recipe>
+
+ <recipe name="Bronze" energyCost="4000">
+ <input>
+ <itemStack oreDictionary="ingotCopper" number="3" />
+ <itemStack oreDictionary="ingotTin" />
+ </input>
+ <output>
+ <itemStack oreDictionary="ingotBronze" number="4" />
+ </output>
+ </recipe>
+
+
+ <recipe name="Enderium Base" energyCost="4000">
+ <input>
+ <itemStack oreDictionary="ingotTin" number="2" />
+ <itemStack oreDictionary="ingotSilver" />
+ <itemStack oreDictionary="ingotPlatinum" />
+ </input>
+ <output>
+ <itemStack oreDictionary="ingotEnderiumBase" number="4" />
+ </output>
+ </recipe>
+
+
+ <recipe name="Enderium" energyCost="50000">
+ <input>
+ <itemStack oreDictionary="ingotEnderiumBase" number="2" />
+ <itemStack modID="ThermalFoundation" itemName="material" itemMeta="512" />
+ <itemStack modID="minecraft" itemName="ender_pearl" number="2"/>
+ </input>
+ <output>
+ <itemStack oreDictionary="ingotEnderium" number="2" />
+ </output>
+ </recipe>
+
+ <recipe name="Fluxed Electrum" energyCost="32000">
+ <input>
+ <itemStack oreDictionary="ingotElectrum" number="2" />
+ <itemStack modID="minecraft" itemName="redstone" number="4"/>
+ <itemStack modID="ThermalFoundation" itemName="material" itemMeta="512" />
+ </input>
+ <output>
+ <itemStack oreDictionary="ingotElectrumFlux" number="2" />
+ </output>
+ </recipe>
+
+ <recipe name="Signalum" energyCost="32000">
+ <input>
+ <itemStack oreDictionary="ingotCopper" number="3" />
+ <itemStack oreDictionary="ingotSilver" />
+ <itemStack modID="minecraft" itemName="redstone" number="10" />
+ </input>
+ <output>
+ <itemStack oreDictionary="ingotSignalum" number="4" />
+ </output>
+ </recipe>
+
+ <recipe name="Lumium from dust" energyCost="32000">
+ <input>
+ <itemStack oreDictionary="ingotTin" number="3" />
+ <itemStack oreDictionary="ingotSilver" />
+ <itemStack modID="minecraft" itemName="glowstone_dust" number="4" />
+ </input>
+ <output>
+ <itemStack oreDictionary="ingotLumium" number="4" />
+ </output>
+ </recipe>
+
+ <recipe name="Lumium" energyCost="32000">
+ <input>
+ <itemStack oreDictionary="ingotTin" number="3" />
+ <itemStack oreDictionary="ingotSilver" />
+ <itemStack modID="minecraft" itemName="glowstone" />
+ </input>
+ <output>
+ <itemStack oreDictionary="ingotLumium" number="4" />
+ </output>
+ </recipe>
+
+ <!--
+ <recipe name="Steel" energyCost="8000">
+ <input>
+ <itemStack oreDictionary="ingotIron" number="1" />
+ <itemStack oreDictionary="dustCoal" number="2" />
+ </input>
+ <output>
+ <itemStack oreDictionary="ingotSteel" number="1" />
+ </output>
+ </recipe>
+
+ <recipe name="Steel - Charcoal" energyCost="8000">
+ <input>
+ <itemStack oreDictionary="ingotIron" number="1" />
+ <itemStack modID="minecraft" itemName="coal" itemMeta="1" number="4"/>
+ </input>
+ <output>
+ <itemStack oreDictionary="ingotSteel" number="1" />
+ </output>
+ </recipe>
+ -->
+
+ </recipeGroup>
+
+ <vanillaFurnaceRecipes enabled="true" />
+
+
+</AlloySmelterRecipes>
diff --git a/config/enderio/AlloySmelterRecipes_User.xml b/config/enderio/AlloySmelterRecipes_User.xml
new file mode 100644
index 0000000000..25520c4cb0
--- /dev/null
+++ b/config/enderio/AlloySmelterRecipes_User.xml
@@ -0,0 +1,31 @@
+<!--
+Custom recipes that will not be over written by Ender IO are added here.
+Examples of recipes can be found in AlloySmelterRecipes_Core.xml and general format
+documentation in SAGMillRecipes_Core/User.
+
+As well as adding custom recipes the operation of the Alloy Smelter as a vanilla furnace
+can be controlled. It can be disabled completely by simply adding this line:
+
+ <vanillaFurnaceRecipes enabled="false"/>
+
+It is also possible to selectively disable vanilla furnace recipes.
+The following example disables the smelting of iron ingots, ender pearls and any form of iron ore registered in the
+ore dictionary.
+
+ <vanillaFurnaceRecipes>
+ <exclude>
+ <itemStack itemID="265" />
+ <itemStack itemID="368" />
+ <itemStack oreDictionary="oreIron" />
+ </exclude>
+
+ </vanillaFurnaceRecipes>
+
+ Add this line to disbale the creation of TE alloys using the Alloy Smelter.
+ <recipeGroup name="Thermal Expansion" enabled="false"/>
+-->
+
+<AlloySmelterRecipes>
+
+</AlloySmelterRecipes>
+
diff --git a/config/enderio/EnchanterRecipes_Core.xml b/config/enderio/EnchanterRecipes_Core.xml
new file mode 100644
index 0000000000..a2d0662615
--- /dev/null
+++ b/config/enderio/EnchanterRecipes_Core.xml
@@ -0,0 +1,137 @@
+
+<!--
+
+IMPORTANT:
+ This is the core recipe file. Modifying this file will have no effect.
+ It will be rewritten by EnderIO and all modifications made to it will be lost. To add
+ or modify recipes please use 'EnchanterRecipes_User.xml'
+
+Costs are calculated as follows:
+level = enchantmentItem.stackSize
+levelCost = Config.enchanterBaseLevelCost;
+for (int i = 0; i < level; i++) {
+ levelCost += costPerLevel * level;
+}
+ -->
+
+<enchaterRecipes>
+
+ <enchantment name="enchantment.protect.all" costPerLevel="1">
+ <itemStack modID="EnderIO" itemName="itemAlloy" itemMeta="6" number="16"/>
+ </enchantment>
+
+ <enchantment name="enchantment.protect.fire" costPerLevel="2">
+ <itemStack modID="minecraft" itemName="blaze_powder" number="16"/>
+ </enchantment>
+
+ <enchantment name="enchantment.protect.fall" costPerLevel="2">
+ <itemStack modID="minecraft" itemName="feather"/>
+ </enchantment>
+
+ <enchantment name="enchantment.protect.explosion" costPerLevel="2">
+ <itemStack modID="minecraft" itemName="gunpowder" number="16"/>
+ </enchantment>
+
+ <enchantment name="enchantment.protect.projectile" costPerLevel="2">
+ <itemStack modID="minecraft" itemName="arrow" number="16"/>
+ </enchantment>
+
+ <enchantment name="enchantment.oxygen" costPerLevel="4">
+ <itemStack modID="minecraft" itemName="glass_bottle"/>
+ </enchantment>
+
+ <enchantment name="enchantment.waterWorker" costPerLevel="4">
+ <itemStack modID="minecraft" itemName="waterlily"/>
+ </enchantment>
+
+ <enchantment name="enchantment.thorns" costPerLevel="8">
+ <itemStack modID="minecraft" itemName="double_plant" itemMeta="4"/>
+ </enchantment>
+
+ <enchantment name="enchantment.damage.all" costPerLevel="1">
+ <itemStack modID="minecraft" itemName="quartz" number="12"/>
+ </enchantment>
+
+ <enchantment name="enchantment.damage.undead" costPerLevel="2">
+ <itemStack modID="minecraft" itemName="rotten_flesh" number="12"/>
+ </enchantment>
+
+ <enchantment name="enchantment.damage.arthropods" costPerLevel="2">
+ <itemStack modID="minecraft" itemName="spider_eye" number="12"/>
+ </enchantment>
+
+ <enchantment name="enchantment.knockback" costPerLevel="2">
+ <itemStack modID="minecraft" itemName="piston"/>
+ </enchantment>
+
+ <enchantment name="enchantment.fire" costPerLevel="4">
+ <itemStack modID="minecraft" itemName="blaze_rod" number="8"/>
+ </enchantment>
+
+ <enchantment name="enchantment.lootBonus" costPerLevel="4">
+ <itemStack oreDictionary="itemSkull"/>
+ </enchantment>
+
+ <enchantment name="enchantment.digging" costPerLevel="1">
+ <itemStack modID="minecraft" itemName="redstone" number="12"/>
+ </enchantment>
+
+ <enchantment name="enchantment.untouching" costPerLevel="26">
+ <itemStack modID="minecraft" itemName="slime_ball"/>
+ </enchantment>
+
+ <enchantment name="enchantment.durability" costPerLevel="2">
+ <itemStack modID="minecraft" itemName="obsidian"/>
+ </enchantment>
+
+ <enchantment name="enchantment.lootBonusDigger" costPerLevel="4">
+ <itemStack modID="minecraft" itemName="emerald" number="4"/>
+ </enchantment>
+
+ <enchantment name="enchantment.arrowDamage" costPerLevel="1">
+ <itemStack modID="minecraft" itemName="flint" number="12"/>
+ </enchantment>
+
+ <enchantment name="enchantment.arrowKnockback" costPerLevel="4">
+ <itemStack modID="minecraft" itemName="string"/>
+ </enchantment>
+
+ <enchantment name="enchantment.arrowFire" costPerLevel="1">
+ <itemStack modID="minecraft" itemName="netherrack"/>
+ </enchantment>
+
+ <enchantment name="enchantment.arrowInfinite" costPerLevel="26">
+ <itemStack modID="minecraft" itemName="ender_pearl"/>
+ </enchantment>
+
+ <enchantment name="enchantment.lootBonusFishing" costPerLevel="4">
+ <itemStack modID="minecraft" itemName="dye" itemMeta="4"/>
+ </enchantment>
+
+ <enchantment name="enchantment.fishingSpeed" costPerLevel="4">
+ <itemStack modID="minecraft" itemName="fish"/>
+ </enchantment>
+
+ <enchantment name="enchantment.enderio.soulBound" costPerLevel="21">
+ <itemStack modID="EnderIO" itemName="itemMaterial" itemMeta="8"/>
+ </enchantment>
+
+ <enchantment name="enchantment.enderzoo.witherArrow" costPerLevel="6">
+ <itemStack modID="EnderZoo" itemName="witheringDust"/>
+ </enchantment>
+
+ <!-- The wither potion in the creative tab has a meta of 8235 while a brewed potion has one of 8203
+ so adding both-->
+ <enchantment name="enchantment.enderzoo.witherWeapon" costPerLevel="6">
+ <itemStack modID="minecraft" itemName="potion" itemMeta="8235"/>
+ </enchantment>
+
+ <enchantment name="enchantment.enderzoo.witherWeapon" costPerLevel="6">
+ <itemStack modID="minecraft" itemName="potion" itemMeta="8203"/>
+ </enchantment>
+
+ <enchantment name="enchantment.repair" costPerLevel="6">
+ <itemStack modID="minecraft" itemName="anvil"/>
+ </enchantment>
+
+</enchaterRecipes>
diff --git a/config/enderio/EnchanterRecipes_User.xml b/config/enderio/EnchanterRecipes_User.xml
new file mode 100644
index 0000000000..f9e986a90b
--- /dev/null
+++ b/config/enderio/EnchanterRecipes_User.xml
@@ -0,0 +1,27 @@
+<enchaterRecipes>
+
+<!-- An example of how to add the enchantments from Thaumcraft.
+
+ <enchantment name="enchantment.potency" costPerLevel="5">
+ <itemStack modID="Thaumcraft" itemName="ItemShard" itemMeta="1"/>
+ </enchantment>
+
+ <enchantment name="enchantment.frugal" costPerLevel="5">
+ <itemStack modID="Thaumcraft" itemName="ItemShard" itemMeta="4" />
+ </enchantment>
+
+ <enchantment name="enchantment.wandfortune" costPerLevel="5">
+ <itemStack modID="Thaumcraft" itemName="blockCustomPlant" itemMeta="1"/>
+ </enchantment>
+
+ <enchantment name="enchantment.haste" costPerLevel="5">
+ <itemStack modID="Thaumcraft" itemName="blockMetalDevice" itemMeta="8"/>
+ </enchantment>
+
+ <enchantment name="enchantment.repair" costPerLevel="15">
+ <itemStack modID="Thaumcraft" itemName="BlockJarNodeItem"/>
+ </enchantment>
+
+ -->
+
+</enchaterRecipes>
diff --git a/config/enderio/EnderIO.cfg b/config/enderio/EnderIO.cfg
new file mode 100644
index 0000000000..ea16633539
--- /dev/null
+++ b/config/enderio/EnderIO.cfg
@@ -0,0 +1,876 @@
+# Configuration file
+
+"advanced settings" {
+ # Enable per tick sampling on individual power inputs and outputs. This allows slightly more detailed messages from the RF Reader but has a negative impact on server performance.
+ B:perInterfacePowerTrackingEnabled=false
+}
+
+
+"aesthetic settings" {
+ # If set to true: fluid will not be shown in combustion generator tanks. Improves FPS.
+ B:combustionGeneratorUseOpaqueModel=true
+
+ # Valid values are between 0-1, smallest conduits at 0, largest at 1.
+ # In SMP, all clients must be using the same value as the server.
+ D:conduitScale=0.6
+
+ # Use TheKazador's alternative model for the Dimensional Transceiver
+ B:useAlternateTransceiverModel=false
+
+ # If set to true: WIP Combustion Generator model will be used
+ B:useCombustionGenModel=false
+}
+
+
+"anchor settings" {
+ # Maximum number of blocks that can be traveled from one travel anchor to another.
+ I:travelAnchorMaxDistance=48
+}
+
+
+"autocrafter settings" {
+ # RF used per autocrafted recipe
+ I:crafterRfPerCraft=2500
+}
+
+
+"dark steel" {
+ # Chance that the dark steel anvil will take damage after repairing something.
+ D:darkSteelAnvilDamageChance=0.024000000208616257
+
+ # Number of levels required for the Apiarist Armor upgrade.
+ I:darkSteelApiaristArmorCost=10
+
+ # The increase in efficiency when powered.
+ D:darkSteelAxeEffeciencyBoostWhenPowered=2.0
+
+ # Power use (RF) per damage/durability point avoided.
+ I:darkSteelAxePowerUsePerDamagePoint=750
+
+ # How much slower shift-harvesting logs is.
+ D:darkSteelAxeSpeedPenaltyMultiHarvest=4.0
+
+ # Jump height modifier applied when jumping with Dark Steel Boots equipped
+ D:darkSteelBootsJumpModifier=1.5
+
+ # Base amount of power used per jump (RF) dark steel boots. The second jump in a 'double jump' uses 2x this etc
+ I:darkSteelBootsJumpPowerCost=150
+
+ # If true, dark steel armor will drain power stored (RF) in power containers in the players inventory.
+ B:darkSteelDrainPowerFromInventory=false
+
+ # Amount of power used (RF) per block height of fall distance damage negated.
+ I:darkSteelFallDistanceCost=75
+
+ # Number of levels required for the 'Glider' upgrade.
+ I:darkSteelGliderCost=10
+
+ # Horizontal movement speed modifier when gliding.
+ D:darkSteelGliderHorizontalSpeed=0.03
+
+ # Rate of altitude loss when gliding.
+ D:darkSteelGliderVerticalSpeed=-0.05
+
+ # Rate of altitude loss when sprinting and gliding.
+ D:darkSteelGliderVerticalSpeedSprinting=-0.15
+
+ # Number of levels required for the Goggles of Revealing upgrade.
+ I:darkSteelGogglesOfRevealingCost=10
+
+ # Number of levels required for the 'Jump 1' upgrade.
+ I:darkSteelJumpOneCost=10
+
+ # Number of levels required for the 'Jump 3' upgrade.
+ I:darkSteelJumpThreeCost=20
+
+ # Number of levels required for the 'Jump 2' upgrade.
+ I:darkSteelJumpTwoCost=15
+
+ # Speed boost, in blocks per tick, that the DS ladder gives over the vanilla ladder.
+ D:darkSteelLadderSpeedBoost=0.05999999865889549
+
+ # Number of levels required for the 'Night Vision' upgrade.
+ I:darkSteelNightVisionCost=10
+
+ # If set to a value > 0, the obsidian speed and power use will be used for all blocks with hardness >= to this value.
+ D:darkSteelPickApplyObsidianEffeciencyAtHardess=40.0
+
+ # Power use (RF) per damage/durability point avoided when shift-harvesting multiple logs
+ I:darkSteelPickAxeUsePerDamagePointMultiHarvest=1500
+
+ # The increase in efficiency when powered.
+ D:darkSteelPickEffeciencyBoostWhenPowered=2.0
+
+ # The efficiency when breaking obsidian with a powered Dark Pickaxe.
+ I:darkSteelPickEffeciencyObsidian=50
+
+ # When true the dark steel pick will be able to mine TiC Ardite and Cobalt [default: true]
+ B:darkSteelPickMinesTiCArdite=true
+
+ # The amount of power (RF) used to break an obsidian block.
+ I:darkSteelPickPowerUseObsidian=10000
+
+ # Power use (RF) per damage/durability point avoided.
+ I:darkSteelPickPowerUsePerDamagePoint=750
+
+ # A list of the amount of durability damage absorbed when items are powered. In order of upgrade level. 1=100% so items take no durability damage when powered.
+ D:darkSteelPowerDamgeAbsorptionRatios <
+ 0.5
+ 0.6
+ 0.75
+ 0.95
+ >
+
+ # Amount of power stored (RF) per crystal in the armor items recipe.
+ I:darkSteelPowerStorage=100000
+
+ # Base amount of power stored by dark steel items.
+ I:darkSteelPowerStorageBase=100000
+
+ # Amount of power stored by dark steel items with a level 1 upgrade.
+ I:darkSteelPowerStorageLevelOne=150000
+
+ # Amount of power stored by dark steel items with a level 3 upgrade.
+ I:darkSteelPowerStorageLevelThree=1000000
+
+ # Amount of power stored by dark steel items with a level 2 upgrade.
+ I:darkSteelPowerStorageLevelTwo=250000
+
+ # If enabled allows the solar upgrade to charge non-darksteel armors that the player is wearing.
+ B:darkSteelSolarChargeOthers=true
+
+ # Cost in XP levels of the Solar I upgrade.
+ I:darkSteelSolarOneCost=15
+
+ # RF per SECOND generated by the Solar I upgrade. Split between all equipped DS armors.
+ I:darkSteelSolarOneGen=10
+
+ # Cost in XP levels of the Solar II upgrade.
+ I:darkSteelSolarTwoCost=30
+
+ # RF per SECOND generated by the Solar II upgrade. Split between all equipped DS armors.
+ I:darkSteelSolarTwoGen=40
+
+ # Number of levels required for the 'Sound Locator' upgrade.
+ I:darkSteelSoundLocatorCost=10
+
+ # Number of ticks the 'Sound Locator' icons are displayed for.
+ I:darkSteelSoundLocatorLifespan=40
+
+ # Range of the 'Sound Locator' upgrade.
+ I:darkSteelSoundLocatorRange=40
+
+ # Number of levels required for the 'Speed 1' upgrade.
+ I:darkSteelSpeedOneCost=10
+
+ # Speed modifier applied when walking in the Dark Steel Boots with Speed I.
+ D:darkSteelSpeedOneSprintModifier=0.10000000149011612
+
+ # Speed modifier applied when walking in the Dark Steel Boots with Speed I.
+ D:darkSteelSpeedOneWalkModifier=0.10000000149011612
+
+ # Number of levels required for the 'Speed 3' upgrade.
+ I:darkSteelSpeedThreeCost=20
+
+ # Speed modifier applied when walking in the Dark Steel Boots with Speed I.
+ D:darkSteelSpeedThreeSprintMultiplier=0.5
+
+ # Speed modifier applied when walking in the Dark Steel Boots with Speed I.
+ D:darkSteelSpeedThreeWalkMultiplier=0.30000001192092896
+
+ # Number of levels required for the 'Speed 2' upgrade.
+ I:darkSteelSpeedTwoCost=15
+
+ # Speed modifier applied when walking in the Dark Steel Boots with Speed I.
+ D:darkSteelSpeedTwoSprintMultiplier=0.30000001192092896
+
+ # Speed modifier applied when walking in the Dark Steel Boots with Speed I.
+ D:darkSteelSpeedTwoWalkMultiplier=0.20000000298023224
+
+ # Number of levels required for the 'Spoon' upgrade.
+ I:darkSteelSpoonCost=10
+
+ # Amount of power stored (RF) per block walked when wearing the dark steel boots.
+ I:darkSteelSprintPowerCost=83
+
+ # Number of levels required for the 'Swim' upgrade.
+ I:darkSteelSwimCost=10
+
+ # The chance that an ender pearl will be dropped when using a dark steel sword (0 = no chance, 1 = 100% chance)
+ D:darkSteelSwordEnderPearlDropChance=1.0
+
+ # The chance for each looting level that an additional ender pearl will be dropped when using a dark steel sword (0 = no chance, 1 = 100% chance)
+ D:darkSteelSwordEnderPearlDropChancePerLooting=0.5
+
+ # The amount of power (RF) used per hit.
+ I:darkSteelSwordPowerUsePerHit=750
+
+ # The base chance that a skull will be dropped when using a powered dark steel sword (0 = no chance, 1 = 100% chance)
+ D:darkSteelSwordSkullChance=0.10000000149011612
+
+ # The chance per looting level that a skull will be dropped when using a powered dark steel sword (0 = no chance, 1 = 100% chance)
+ D:darkSteelSwordSkullLootingModifier=0.07500000298023224
+
+ # The base chance that a wither skull will be dropped when using a powered dark steel sword (0 = no chance, 1 = 100% chance)
+ D:darkSteelSwordWitherSkullChance=0.05000000074505806
+
+ # The chance per looting level that a wither skull will be dropped when using a powered dark steel sword (0 = no chance, 1 = 100% chance)
+ D:darkSteelSwordWitherSkullLootingModifie=0.05000000074505806
+
+ # Number of levels required for the 'Travel' upgrade.
+ I:darkSteelTravelCost=30
+
+ # Number of levels required for the 'Power 1.
+ I:darkSteelUpgradePowerOneCost=10
+
+ # Number of levels required for the 'Power 3' upgrade.
+ I:darkSteelUpgradePowerThreeCost=20
+
+ # Number of levels required for the 'Power 2.
+ I:darkSteelUpgradePowerTwoCost=15
+
+ # Number of levels required for the 'Empowered.
+ I:darkSteelUpgradeVibrantCost=10
+
+ # Amount of power stored (RF) per block walked when wearing the dark steel boots.
+ I:darkSteelWalkPowerCost=83
+
+ # The ratio of skull drops when a mob is killed by a 'FakePlayer', such as Killer Joe. When set to 0 no skulls will drop, at 1 the rate of skull drops is not modified
+ D:fakePlayerSkullChance=0.5
+
+ # Should the dark steel placement, when in the first (0th) slot, place the item in the last slot. If false, will place what's in the second slot.
+ B:shouldSlotZeroWrap=true
+
+ # The base chance that an Enderman Skull will be dropped when using TiC Cleaver
+ D:ticCleaverSkullDropChance=0.10000000149011612
+
+ # The base chance that a skull will be dropped when using a non dark steel sword (0 = no chance, 1 = 100% chance)
+ D:vanillaSwordSkullChance=0.05000000074505806
+}
+
+
+"efficiency settings" {
+ # Number of millibuckets per tick extracted by pressurised fluid conduits auto extracting
+ I:advancedFluidConduitExtractRate=100
+
+ # Number of millibuckets per tick that can pass through a single connection to an pressurised fluid conduit.
+ I:advancedFluidConduitMaxIoRate=400
+
+ # Number of millibuckets per tick extracted by ender fluid conduits auto extracting
+ I:enderFluidConduitExtractRate=200
+
+ # Number of millibuckets per tick that can pass through a single connection to an ender fluid conduit.
+ I:enderFluidConduitMaxIoRate=800
+
+ # Range accessible (in blocks) when using the Ender IO.
+ I:enderIoRange=8
+
+ # Number of millibuckets per tick extracted by a fluid conduits auto extracting
+ I:fluidConduitExtractRate=50
+
+ # Number of millibuckets per tick that can pass through a single connection to a fluid conduit.
+ I:fluidConduitMaxIoRate=200
+
+ # Amount of gas per tick extracted by gas conduits auto extracting
+ I:gasConduitExtractRate=200
+
+ # Amount of gas per tick that can pass through a single connection to a gas conduit.
+ I:gasConduitMaxIoRate=800
+
+ # If true, 'line of sight' distance rather than conduit path distance is used to calculate priorities.
+ B:itemConduitUsePhyscialDistance=false
+
+ # The cost in RF of transporting a bucket of fluid via a Dimensional Transceiver.
+ I:transceiverBucketTransmissionCostRF=100
+
+ # When true: correct lighting is recalculated (client side) for conduit bundles when transitioning to from being hidden behind a facade. This produces better quality rendering but can result in frame stutters when switching to/from a wrench.
+ B:updateLightingWhenHidingFacades=false
+
+ # The range of the vacuum chest
+ D:vacumChestRange=6.0
+
+ # The range of the wireless charger
+ I:wirelessChargerRange=24
+}
+
+
+enchantments {
+ # If false the soul bound enchantment will not be available [default: true]
+ B:enchantmentSoulBoundEnabled=true
+
+ # The id of the enchantment. If set to -1 the lowest unassigned id will be used.
+ I:enchantmentSoulBoundId=-1
+}
+
+
+enchantmentsoulboundweight {
+ # The chance of getting this enchantment in the enchantment table
+ I:Enchantments=1
+}
+
+
+"farm settings" {
+ # Disable the notification text above the farm block.
+ B:disableFarmNotifications=false
+
+ # The amount of power used by a farm per action (eg plant, till, harvest)
+ I:farmActionEnergyUseRF=500
+
+ # The amount of power used by a farm per wood block 'chopped'
+ I:farmAxeActionEnergyUseRF=1000
+
+ # Should axes in a farm take damage when breaking leaves?
+ B:farmAxeDamageOnLeafBreak=false
+
+ # The amount of power used by a farm per tick
+ I:farmContinuousEnergyUseRF=40
+
+ # The number of blocks a farm will extend from its center
+ I:farmDefaultSize=3
+
+ # This setting controls whether essence berry bushes from TiC can be harvested by the farm.
+ B:farmEssenceBerriesEnabled=true
+
+ # If this is enabled the farm will harvest jungle wood even if it has cocoa beans in its inventory.
+ B:farmHarvestJungleWhenCocoa=false
+
+ # Use this to specify items that can be hoes in the farming station. Use the registry name (eg. modid:name).
+ S:farmHoes <
+ minecraft:wooden_hoe
+ minecraft:stone_hoe
+ minecraft:iron_hoe
+ minecraft:diamond_hoe
+ minecraft:golden_hoe
+ MekanismTools:ObsidianHoe
+ MekanismTools:LapisLazuliHoe
+ MekanismTools:OsmiumHoe
+ MekanismTools:BronzeHoe
+ MekanismTools:GlowstoneHoe
+ MekanismTools:SteelHoe
+ Steamcraft:hoeBrass
+ Steamcraft:hoeGildedGold
+ Railcraft:tool.steel.hoe
+ TConstruct:mattock
+ appliedenergistics2:item.ToolCertusQuartzHoe
+ appliedenergistics2:item.ToolNetherQuartzHoe
+ ProjRed|Exploration:projectred.exploration.hoeruby
+ ProjRed|Exploration:projectred.exploration.hoesapphire
+ ProjRed|Exploration:projectred.exploration.hoeperidot
+ magicalcrops:magicalcrops_AccioHoe
+ magicalcrops:magicalcrops_CrucioHoe
+ magicalcrops:magicalcrops_ImperioHoe
+ BiomesOPlenty:hoeAmethyst
+ BiomesOPlenty:hoeMud
+ Eln:Eln.Copper Hoe
+ Thaumcraft:ItemHoeThaumium
+ Thaumcraft:ItemHoeElemental
+ Thaumcraft:ItemHoeVoid
+ ThermalExpansion:tool.hoeInvar
+ >
+
+ # This setting controls whether mana beans from Thaumcraft can be harvested by the farm.
+ B:farmManaBeansEnabled=false
+
+ # The chance that a tool in the farm will take damage.
+ D:farmToolTakeDamageChance=1.0
+}
+
+
+"fluid settings" {
+ # The delay in ticks between when nutrient distillation boosts your food value.
+ D:nutrientFluidFoodBoostDelay=400.0
+}
+
+
+"item enabling" {
+ # Allows ME conduits. Only has an effect with AE2 installed. [default: true]
+ B:enableMEConduits=true
+
+ # Can be set to 'auto', 'true' or 'false'. When set to auto the gas conduit will only be enabled when Mekanism is installed. [default: auto]
+ S:isGasConduitEnabled=auto
+
+ # If set to false: Photovoltaic Cells will not be craftable.
+ B:photovoltaicCellEnabled=true
+
+ # When set to false reinforced obsidian is not craftable.
+ B:reinforcedObsidianEnabled=true
+
+ # If set to false reservoirs will not be craftable.
+ B:reservoirEnabled=true
+
+ # If set to false: Dimensional Transceivers will not be craftable.
+ B:transceiverEnabled=true
+
+ # When set to false: the travel anchor will not be craftable.
+ B:travelAnchorEnabled=true
+
+ # If travelStaffBlinkThroughSolidBlocksEnabled is set to false and this is true: the travel staff can only be used to blink through transparent or partial blocks (e.g. torches). If both are false: only air blocks may be teleported through.
+ B:travelStaffBlinkThroughClearBlocksEnabled=true
+
+ # Allows the travel staff to blink through unbreakable blocks such as warded blocks and bedrock.
+ B:travelStaffBlinkThroughUnbreakableBlocksEnabled=false
+}
+
+
+"killer joe settings" {
+ # The reach of attacks above and bellow Joe.
+ D:killerJoeAttackHeight=2.0
+
+ # The reach of attacks in front of Joe.
+ D:killerJoeAttackLength=4.0
+
+ # The reach of attacks to each side of Joe.
+ D:killerJoeAttackWidth=2.0
+
+ # The distance from which XP will be gathered to each side of Joe.
+ D:killerJoeHooverXpLength=10.0
+
+ # The distance from which XP will be gathered in front of Joe.
+ D:killerJoeHooverXpWidth=5.0
+
+ # Set whether the Killer Joe can attack through blocks.
+ B:killerJoeMustSee=false
+
+ # The number of millibuckets of nutrient fluid used per attack.
+ I:killerJoeNutrientUsePerAttackMb=5
+}
+
+
+"loot config" {
+ # Adds Darksteel Ingots to loot tables [default: true]
+ B:lootDarkSteel=true
+
+ # Adds Darksteel Boots to loot tables [default: true]
+ B:lootDarkSteelBoots=true
+
+ # Adds Electric Steel Ingots to loot tables [default: true]
+ B:lootElectricSteel=true
+
+ # Adds ender pearls to loot tables [default: true]
+ B:lootEnderPearl=true
+
+ # Adds ItemConduitProbe to loot tables [default: true]
+ B:lootItemConduitProbe=true
+
+ # Adds nether wart to loot tables [default: true]
+ B:lootNetherWart=true
+
+ # Adds Phased Gold Ingots to loot tables [default: true]
+ B:lootPhasedGold=true
+
+ # Adds Phased Iron Ingots to loot tables [default: true]
+ B:lootPhasedIron=true
+
+ # Adds quartz to loot tables [default: true]
+ B:lootQuartz=true
+
+ # Adds Redstone Alloy Ingots to loot tables [default: true]
+ B:lootRedstoneAlloy=true
+
+ # Adds The Ender to loot tables [default: true]
+ B:lootTheEnder=true
+
+ # Adds Travel Staff to loot tables [default: true]
+ B:lootTravelStaff=true
+}
+
+
+"magnet settings" {
+ # Amount of RF power stored in a fully charged magnet
+ I:magnetPowerCapacityRF=100000
+
+ # The amount of RF power used per tick when the magnet is active
+ I:magnetPowerUsePerTickRF=1
+
+ # Range of the magnet in blocks.
+ I:magnetRange=5
+}
+
+
+misc {
+ # If true, quite clear glass will connect textures with fused quartz. [default: false]
+ B:clearGlassConnectToFusedQuartz=false
+
+ # If true, quite clear glass will use the fused quartz border texture for the block instead of the white border. [default: false]
+ B:clearGlassSameTexture=false
+
+ # Enables emptying vanilla water bottles without breaking the bottle. In combination with a water source block this allows duping of water without cost.
+ B:enableWaterFromBottles=true
+
+ # Maximum level of XP the killer joe can contain.
+ I:killerJoeMaxXpLevel=2147483647
+
+ # Separates wither and normal skeletons into different entities, enables the powered spawner to treat them differently [EXPERIMENTAL - MAY CAUSE ISSUES WITH OTHER MODS]
+ B:replaceWitherSkeletons=false
+
+ # Id of liquid XP fluid (WARNING: only for users who know what they are doing - changing this id can break worlds) - this should match the with OpenBlocks when installed [default: xpjuice]
+ S:xpJuiceName=xpjuice
+
+ # Maximum level of XP the xp obelisk can contain.
+ I:xpObeliskMaxXpLevel=2147483647
+}
+
+
+"mob attractor settings" {
+ # The RF/t power use of a levele 1 mob attractor
+ I:attractorPowerPerTickLevelOne=20
+
+ # The RF/t power use of a levele 3 mob attractor
+ I:attractorPowerPerTickLevelThree=80
+
+ # The RF/t power use of a levele 2 mob attractor
+ I:attractorPowerPerTickLevelTwo=40
+
+ # The range of the mob attractor with no upgrades
+ I:attractorRangeLevelOne=16
+
+ # The range of the mob attractor with an octadic capacitor upgrade
+ I:attractorRangeLevelThree=64
+
+ # The range of the mob attractor with a double layer capacitor upgrade
+ I:attractorRangeLevelTwo=32
+
+ # The RF/t power use of a levele 1 spawn guard
+ I:spawnGuardPowerPerTickLevelOne=80
+
+ # The RF/t power use of a levele 3 spawn guard
+ I:spawnGuardPowerPerTickLevelThree=800
+
+ # The RF/t power use of a levele 2 spawn guard
+ I:spawnGuardPowerPerTickLevelTwo=300
+
+ # The range of the spawn guard with no upgrades
+ I:spawnGuardRangeLevelOne=64
+
+ # The range of the spawn guard with an octadic capacitor upgrade
+ I:spawnGuardRangeLevelThree=160
+
+ # The range of the spawn guard with a double layer capacitor upgrade
+ I:spawnGuardRangeLevelTwo=96
+
+ # When true slimes wont be allowed to spawn at all. Only added to aid testing in super flat worlds. [default: false]
+ B:spawnGuardStopAllSlimesDebug=false
+
+ # When true no squid will be spawned. [default: false]
+ B:spawnGuardStopAllSquidSpawning=false
+}
+
+
+"mob config" {
+ # When set to true a list of all registered mobs will be dumped to config/enderio/mobTypes.txt The names are in the format required by EIOs mob blacklists. [default: false]
+ B:dumpMobNames=false
+}
+
+
+"personal settings" {
+ # If true, adds durability tooltips to tools and armor
+ B:addDurabilityTootip=true
+
+ # If true, the RF/t and burn time of the fuel will be displayed in all tooltips for fluid containers with fuel.
+ B:addFuelTooltipsToAllFluidContainers=true
+
+ # If true, adds burn duration tooltips to furnace fuels
+ B:addFurnaceFuelTootip=true
+
+ # If true, adds ore dictionary registrations to tooltips
+ B:addOreDictionaryTooltips=false
+
+ # If true, adds the registered name for the item
+ B:addRegisterdNameTooltip=false
+
+ # If false: you will not be able to access a ME access or crafting terminal using the Ender IO.
+ B:enderIoMeAccessEnabled=true
+
+ # Volume of machine sounds.
+ D:machineSoundVolume=1.0
+
+ # The chance per level of Beheading that a skull will be dropped when using a TiC weapon
+ D:ticBeheadingSkullModifier=0.07500000298023224
+
+ # If true, machines will make sounds.
+ B:useMachineSounds=true
+
+ # If true, shift-mouse wheel will change the conduit display mode when the YetaWrench is equipped.
+ B:useSneakMouseWheelYetaWrench=true
+
+ # If true, shift-clicking the YetaWrench on a null or non wrenchable object will change the conduit display mode.
+ B:useSneakRightClickYetaWrench=false
+
+ # The chance per looting level that a skull will be dropped when using a non-dark steel sword (0 = no chance, 1 = 100% chance)
+ D:vanillaSwordSkullLootingModifier=0.05000000074505806
+}
+
+
+"power settings" {
+ # The maximum IO for a single capacitor in RF/t
+ I:capacitorBankMaxIoRF=5000
+
+ # The maximum storage for a single capacitor in RF
+ I:capacitorBankMaxStorageRF=5000000
+
+ # The maximum IO for a single tier one capacitor in RF/t
+ I:capacitorBankTierOneMaxIoRF=1000
+
+ # The maximum storage for a single tier one capacitor in RF
+ I:capacitorBankTierOneMaxStorageRF=1000000
+
+ # The maximum IO for a single tier three capacitor in RF/t
+ I:capacitorBankTierThreeMaxIoRF=25000
+
+ # The maximum storage for a single tier three capacitor in RF
+ I:capacitorBankTierThreeMaxStorageRF=25000000
+
+ # The maximum IO for a single tier two capacitor in RF/t
+ I:capacitorBankTierTwoMaxIoRF=5000
+
+ # The maximum storage for a single tier two capacitor in RF
+ I:capacitorBankTierTwoMaxStorageRF=5000000
+
+ # The amount of power generated per BC engine cycle. Examples: BC Oil = 30, BC Fuel = 60
+ I:fireWaterPowerPerCycleRF=80
+
+ # The total burn time. Examples: BC Oil = 5000, BC Fuel = 25000
+ I:fireWaterPowerTotalBurnTime=15000
+
+ # The amount of power generated per BC engine cycle. Examples: BC Oil = 30, BC Fuel = 60
+ I:hootchPowerPerCycleRF=60
+
+ # The total burn time. Examples: BC Oil = 5000, BC Fuel = 25000
+ I:hootchPowerTotalBurnTime=6000
+
+ # Maximum output in RF/t of the Advanced Photovoltaic Panels.
+ I:maxPhotovoltaicAdvancedOutputRF=40
+
+ # Maximum output in RF/t of the Photovoltaic Panels.
+ I:maxPhotovoltaicOutputRF=10
+
+ # The total amount of RF required to paint one block
+ I:painterEnergyPerTaskRF=2000
+
+ # If set to false power conduits of different tiers cannot be connected. in this case a block such as a cap. bank is needed to bridge different tiered networks [default: false]
+ B:powerConduitCanDifferentTiersConnect=false
+
+ # When set to true power conduits will output MJ if RF is not supported [default: true]
+ B:powerConduitOutputMJ=true
+
+ # The maximum IO for the tier 1 power conduit
+ I:powerConduitTierOneRF=640
+
+ # The maximum IO for the tier 3 power conduit
+ I:powerConduitTierThreeRF=20480
+
+ # The maximum IO for the tier 2 power conduit
+ I:powerConduitTierTwoRF=5120
+
+ # The amount of power generated per BC engine cycle. Examples: BC Oil = 3, BC Fuel = 6
+ I:rocketFuelPowerPerCycleRF=160
+
+ # The total burn time. Examples: BC Oil = 5000, BC Fuel = 25000
+ I:rocketFuelPowerTotalBurnTime=7000
+
+ # The number of RF/t consumed by an unupgraded Slice'N'Splice
+ I:sliceAndSpliceLevelOnePowerPerTickRF=80
+
+ # The number of RF/t consumed by a Slice'N'Splice with an octadic capacitor upgrade.
+ I:sliceAndSpliceLevelThreePowerPerTickRF=320
+
+ # The number of RF/t consumed by a Slice'N'Splice with a double layer capacitor upgrade.
+ I:sliceAndSpliceLevelTwoPowerPerTickRF=160
+
+ # The amount of power generated per tick.
+ I:stirlingGeneratorBaseRfPerTick=20
+
+ # Amount of energy lost when transfered by Dimensional Transceiver; 0 is no loss, 1 is 100% loss
+ D:transceiverEnergyLoss=0.1
+
+ # Maximum RF/t sent and received by a Dimensional Transceiver per tick. Input and output limits are not cumulative
+ I:transceiverMaxIoRF=20480
+
+ # Number of RF/t required to keep a Dimensional Transceiver connection open
+ I:transceiverUpkeepCostRF=10
+
+ # Power use (RF/t) used by the vat.
+ I:vatPowerUserPerTickRF=20
+
+ # The amount of power generated per tick.
+ I:zombieGeneratorRfPerTick=80
+
+ # The number of ticks one bucket of fuel lasts.
+ I:zombieGeneratorTicksPerMbFuel=10000
+}
+
+
+"poweredspawner settings" {
+ # The chance a broken spawner will be dropped when a spawner is broken. 1 = 100% chance, 0 = 0% chance
+ D:brokenSpawnerDropChance=1.0
+
+ # When a spawner is broken with these tools they will not drop a broken spawner [default: [RotaryCraft:rotarycraft_item_bedpick]]
+ S:brokenSpawnerToolBlacklist <
+ RotaryCraft:rotarycraft_item_bedpick
+ >
+
+ # The number of levels it costs to add a broken spawner
+ I:powerSpawnerAddSpawnerCost=30
+
+ # RF per tick for a level 1 (non-upgraded) spawner. See PoweredSpanerConfig_Core.json for mob type multipliers
+ I:poweredSpawnerLevelOnePowerPerTickRF=160
+
+ # RF per tick for a level 3 spawner
+ I:poweredSpawnerLevelThreePowerPerTickRF=1500
+
+ # RF per tick for a level 2 spawner
+ I:poweredSpawnerLevelTwoPowerPerTickRF=500
+
+ # Min tick delay between spawns for a non-upgraded spawner
+ I:poweredSpawnerMaxDelayTicks=800
+
+ # Max distance of the closest player for the spawner to be active. A zero value will remove the player check
+ I:poweredSpawnerMaxPlayerDistance=0
+
+ # Min tick delay between spawns for a non-upgraded spawner
+ I:poweredSpawnerMinDelayTicks=200
+
+ # If true, regular spawn checks such as lighting level and dimension will be made before spawning mobs
+ B:poweredSpawnerUseVanillaSpawChecks=false
+}
+
+
+rail {
+ # When set to true the RF cost of sending a cart within the same dimension will be capped to the cross dimension cost [default: true]
+ B:enderRailCapSameDimensionPowerAtCrossDimensionCost=true
+
+ # Wether Ender Rails are enabled [default: true]
+ B:enderRailEnabled=true
+
+ # The amount of power required to transport a cart across dimensions
+ I:enderRailPowerRequireCrossDimensions=10000
+
+ # The amount of power required to teleport a cart per block in the same dimension
+ I:enderRailPowerRequiredPerBlock=10
+
+ # If true player in minecarts will be teleported. WARN: WIP, seems to cause a memory leak. [default: false]
+ B:enderRailTeleportPlayers=false
+
+ # The number of ticks to wait for the track to clear before force spawning the next cart in a (RailCraft) linked set
+ I:enderRailTicksBeforeForceSpawningLinkedCarts=60
+}
+
+
+"recipe settings" {
+ # When enabled blocks with tile entities (e.g. machines) can be used as paint targets.
+ B:allowTileEntitiesAsPaintSource=true
+
+ # Base level cost added to all recipes in the enchanter.
+ I:enchanterBaseLevelCost=4
+
+ # The number of conduits crafted per recipe.
+ I:numConduitsPerRecipe=8
+
+ # When set to true four dark steel blocks are required instead of ingots when making reinforced obsidian.
+ B:reinforcedObsidianUseDarkSteelBlocks=false
+
+ # When true the Soul Binder requires an Enderman Skull to craft [default: true]
+ B:soulBinderRequiresEndermanSkull=true
+
+ # When enabled the dim trans. will use a cheaper recipe
+ B:transceiverUseEasyRecipe=false
+
+ # Create conduit binder in crafting table instead of furnace
+ B:useAlternateBinderRecipe=false
+
+ # When enabled machines cost significantly more.
+ B:useHardRecipes=false
+
+ # If true copper and tin will be used in recipes when registered in the ore dictionary
+ B:useModMetals=true
+
+ # When enabled machine chassis will require steel instead of iron.
+ B:useSteelInChassi=false
+}
+
+
+"soul binder settings" {
+ # The number of levels required to create an attractor crystal.
+ I:soulBinderAttractorCystalLevels=10
+
+ # The number of RF required to create an attractor crystal.
+ I:soulBinderAttractorCystalRF=100000
+
+ # The number of levels required to change the type of a broken spawner.
+ I:soulBinderBrokenSpawnerLevels=15
+
+ # The number of RF required to change the type of a broken spawner.
+ I:soulBinderBrokenSpawnerRF=2500000
+
+ # The number of levels required to create an ender crystal.
+ I:soulBinderEnderCystalLevels=10
+
+ # The number of RF required to create an ender crystal.
+ I:soulBinderEnderCystalRF=100000
+
+ # The number of levels required to create an ender rail.
+ I:soulBinderEnderRailLevels=10
+
+ # The number of RF required to create an ender rail.
+ I:soulBinderEnderRailRF=100000
+
+ # The number of RF/t consumed by an unupgraded soul binder.
+ I:soulBinderLevelOnePowerPerTickRF=500
+
+ # The number of RF/t consumed by a soul binder with an octadic capacitor upgrade.
+ I:soulBinderLevelThreePowerPerTickRF=2000
+
+ # The number of RF/t consumed by a soul binder with a double layer capacitor upgrade.
+ I:soulBinderLevelTwoPowerPerTickRF=1000
+
+ # Maximum level of XP the soul binder can contain.
+ I:soulBinderMaxXPLevel=40
+
+ # The number of levels required to re-animate a mob head.
+ I:soulBinderReanimationLevels=10
+
+ # The number of RF required to to re-animated a mob head.
+ I:soulBinderReanimationRF=100000
+
+ # Entities listed here will can not be captured in a Soul Vial [default: ]
+ S:soulVesselBlackList <
+ >
+
+ # When set to false, any mob with a 'boss bar' won't be able to be captured in the Soul Vial [default: false]
+ B:soulVesselCapturesBosses=false
+}
+
+
+"staff settings" {
+ # Set the max zoomed size of a travel anchor as an aprox. percentage of screen height [range: 0.0 ~ 1.0, default: 0.2]
+ S:travelAnchorZoomScale=0.2
+
+ # Lists the blocks that cannot be teleported through in the form 'modID:blockName' [default: [minecraft:bedrock], [Thaumcraft:blockWarded]]
+ S:travelStaffBlinkBlackList <
+ minecraft:bedrock
+ Thaumcraft:blockWarded
+ >
+
+ # If set to false: the travel staff can not be used to shift-right click teleport, or blink.
+ B:travelStaffBlinkEnabled=true
+
+ # Minimum number of ticks between 'blinks'. Values of 10 or less allow a limited sort of flight.
+ I:travelStaffBlinkPauseTicks=10
+
+ # If set to false: the travel staff can be used to blink through any block.
+ B:travelStaffBlinkThroughSolidBlocksEnabled=true
+
+ # If set to false: the travel staff will not be craftable.
+ B:travelStaffEnabled=true
+
+ # Max number of blocks teleported when shift clicking the staff.
+ I:travelStaffMaxBlinkDistance=16
+
+ # Maximum number of blocks that can be traveled using the Staff of the Traveling.
+ I:travelStaffMaxDistance=128
+
+ # Number of RF required per block travelled using the Staff of the Traveling.
+ D:travelStaffPowerPerBlockRF=250.0
+}
+
+
diff --git a/config/enderio/OreDictionaryPreferences_Core.xml b/config/enderio/OreDictionaryPreferences_Core.xml
new file mode 100644
index 0000000000..052d53150d
--- /dev/null
+++ b/config/enderio/OreDictionaryPreferences_Core.xml
@@ -0,0 +1,120 @@
+<!--
+
+IMPORTANT:
+ This is the core recipe file. Modifying this file will have no effect.
+ It will be rewritten by EnderIO and all modifications made to it will be lost. To add
+ or modify ore dict preferences please use 'OreDictionaryPreferences_User.xml'
+
+This file contains the preferred outputs from Ender IO machines for items registered in the OreDictionary
+
+Details of itemStack definition can be found in SAGMillRecipes_Core.xml
+
+Item Information and data dumps:
+
+To show ore dictionary and/or registered names, in the EnderIO config set:
+addRegisterdNameTooltip=true
+addOreDictionaryTooltips=true
+
+To write all registered items to config/modObjectsRegistery.txt include in SAGMillRecipes_User.xml:
+<dumpRegistry modObjects="true/>
+
+To write the contents of the ore dictionary to config/oreDictionaryRegistery.txt include in SAGMillRecipes_User.xml:
+<dumpRegistery oreDictionary="true"/>
+-->
+<OreDictionaryPreferences>
+
+ <!-- Dusts -->
+
+ <preference oreDictionary="dustCoal">
+ <itemStack modID="ThermalFoundation" itemName="material" itemMeta="2" />
+ <itemStack modID="EnderIO" itemName="itemPowderIngot" itemMeta="0" />
+ </preference>
+
+ <preference oreDictionary="dustCharcoal">
+ <itemStack modID="ThermalFoundation" itemName="material" itemMeta="3" />
+ </preference>
+
+ <preference oreDictionary="dustObsidian">
+ <itemStack modID="ThermalFoundation" itemName="material" itemMeta="4" />
+ <itemStack modID="EnderIO" itemName="itemPowderIngot" itemMeta="8" />
+ </preference>
+
+ <preference oreDictionary="dustIron">
+ <itemStack modID="ThermalFoundation" itemName="material" itemMeta="0" />
+ <itemStack modID="EnderIO" itemName="itemPowderIngot" itemMeta="1" />
+ </preference>
+
+ <preference oreDictionary="dustGold">
+ <itemStack modID="ThermalFoundation" itemName="material" itemMeta="1" />
+ <itemStack modID="EnderIO" itemName="itemPowderIngot" itemMeta="2" />
+ </preference>
+
+ <preference oreDictionary="dustCopper">
+ <itemStack modID="ThermalFoundation" itemName="material" itemMeta="32" />
+ <itemStack modID="EnderIO" itemName="itemPowderIngot" itemMeta="3" />
+ </preference>
+
+ <preference oreDictionary="dustTin">
+ <itemStack modID="ThermalFoundation" itemName="material" itemMeta="33" />
+ <itemStack modID="EnderIO" itemName="itemPowderIngot" itemMeta="4" />
+ </preference>
+
+ <preference oreDictionary="dustSilver">
+ <itemStack modID="ThermalFoundation" itemName="material" itemMeta="34" />
+ </preference>
+
+ <preference oreDictionary="dustLead">
+ <itemStack modID="ThermalFoundation" itemName="material" itemMeta="35" />
+ </preference>
+
+ <preference oreDictionary="dustNickel">
+ <itemStack modID="ThermalFoundation" itemName="material" itemMeta="36" />
+ </preference>
+
+ <preference oreDictionary="dustSulfur">
+ <itemStack modID="ThermalFoundation" itemName="material" itemMeta="16" />
+ </preference>
+
+ <preference oreDictionary="dustBronze">
+ <itemStack modID="ThermalFoundation" itemName="material" itemMeta="41" />
+ </preference>
+
+ <preference oreDictionary="dustNetherQuartz">
+ <itemStack modID="appliedenergistics2" itemName="item.itemMultiMaterial" itemMeta="3" />
+ </preference>
+
+ <!-- Ingots -->
+
+ <preference oreDictionary="ingotCopper">
+ <itemStack modID="ThermalFoundation" itemName="material" itemMeta="64" />
+ <itemStack modID="TConstruct" itemName="materials" itemMeta="9" />
+ </preference>
+
+ <preference oreDictionary="ingotTin">
+ <itemStack modID="ThermalFoundation" itemName="material" itemMeta="65" />
+ <itemStack modID="TConstruct" itemName="materials" itemMeta="10" />
+ </preference>
+
+ <preference oreDictionary="ingotSilver">
+ <itemStack modID="ThermalFoundation" itemName="material" itemMeta="66" />
+ </preference>
+
+ <preference oreDictionary="ingotLead">
+ <itemStack modID="ThermalFoundation" itemName="material" itemMeta="67" />
+ </preference>
+
+ <preference oreDictionary="ingotBronze">
+ <itemStack modID="ThermalFoundation" itemName="material" itemMeta="73" />
+ <itemStack modID="TConstruct" itemName="materials" itemMeta="13" />
+ </preference>
+
+ <preference oreDictionary="ingotAluminum">
+ <itemStack modID="TConstruct" itemName="materials" itemMeta="11" />
+ </preference>
+
+ <preference oreDictionary="ingotAluminium">
+ <itemStack modID="TConstruct" itemName="materials" itemMeta="11" />
+ </preference>
+
+
+</OreDictionaryPreferences>
diff --git a/config/enderio/OreDictionaryPreferences_User.xml b/config/enderio/OreDictionaryPreferences_User.xml
new file mode 100644
index 0000000000..0ec411f50f
--- /dev/null
+++ b/config/enderio/OreDictionaryPreferences_User.xml
@@ -0,0 +1,5 @@
+<!--
+Entries in this file take precedence over the values in the core file
+ -->
+<OreDictionaryPreferences>
+</OreDictionaryPreferences>
diff --git a/config/enderio/PainterPaintSources_Core.xml b/config/enderio/PainterPaintSources_Core.xml
new file mode 100644
index 0000000000..516ed3cc17
--- /dev/null
+++ b/config/enderio/PainterPaintSources_Core.xml
@@ -0,0 +1,42 @@
+<!--
+
+ IMPORTANT:
+ This is the core config file. Modifying this file will have no effect.
+ It will be rewritten by EnderIO and all modifications made to it will be lost. To add
+ or modify sources please use 'PainterPaintSources_User.xml'
+
+This file is used to create a white list and black list for items that can be used as paint sources in
+the painting machine.
+
+Each entry in the lists describes an item stack. This stack must be for a block item (i.e. and item that can be placed in the world
+as a block). If an item is is not in either list then the default checks are used.
+For details on the format of item stack definitions see SAGMillRecipes_Core.xml.
+
+The contents of this file will be merged with the contents of 'PainterPaintSources_User.xml'. To remove an entry contained
+in this file simply include an identical entry in the user file with the added attribute 'remove=true'.
+For example, to remove Silverwood planks from the whitelist, the user file would contain this:
+
+ <PainterPaintSources>
+ <whitelist>
+ <itemStack modID="Thaumcraft" itemName="blockWoodenDevice" itemMeta="6" remove="true" />
+ </whitelist>
+</PainterPaintSources>
+
+ -->
+
+<PainterPaintSources>
+
+ <whitelist>
+ <!-- Greatwood planks -->
+ <itemStack modID="Thaumcraft" itemName="blockWoodenDevice" itemMeta="6" />
+ <!-- Silverwood planks -->
+ <itemStack modID="Thaumcraft" itemName="blockWoodenDevice" itemMeta="7" />
+ </whitelist>
+
+
+ <blacklist>
+
+ </blacklist>
+
+
+</PainterPaintSources>
diff --git a/config/enderio/PainterPaintSources_User.xml b/config/enderio/PainterPaintSources_User.xml
new file mode 100644
index 0000000000..ce19d6d76d
--- /dev/null
+++ b/config/enderio/PainterPaintSources_User.xml
@@ -0,0 +1,14 @@
+<!--
+See PainterPaintSources_Core.xml for documentation.
+ -->
+<PainterPaintSources>
+
+ <whitelist>
+
+ </whitelist>
+
+ <blacklist>
+
+ </blacklist>
+
+</PainterPaintSources>
diff --git a/config/enderio/PoweredSpawnerConfig_Core.json b/config/enderio/PoweredSpawnerConfig_Core.json
new file mode 100644
index 0000000000..e24347aabd
--- /dev/null
+++ b/config/enderio/PoweredSpawnerConfig_Core.json
@@ -0,0 +1,50 @@
+{
+
+ "_comment": "This is the CORE FILE. Do not edit. The RF cost per tick for spawners of each entity type is multiplied by these values:",
+ "costMultiplier": {
+
+ "Zombie" : "1",
+ "Creeper" : "1.5",
+ "Skeleton" : "2",
+ "Spider" : "1",
+ "CaveSpider" : "1",
+ "Silverfish" : "1",
+ "Witch" : "5",
+ "Slime" : "5",
+ "Enderman" : "10",
+ "SpecialMobs.SpecialEnderman" : "10",
+
+ "LavaSlime" : "2",
+ "PigZombie" : "5",
+ "Ghast" : "10",
+ "Blaze" : "5",
+
+ "SnowMan" : "1",
+ "VillagerGolem" : "10",
+ "Villager" : "1",
+
+ "Wolf" : "1",
+ "Ozelot" : "1",
+ "EntityHorse" : "1",
+ "Bat" : "0.5",
+
+ "Squid" : "0.5",
+ "Chicken" : "0.5",
+ "Sheep" : "0.5",
+ "Cow" : "0.5",
+ "Pig" : "0.5",
+ "MushroomCow" : "1",
+
+ "enderzoo.Enderminy" : "10",
+ "enderzoo.ConcussionCreeper" : "1.5",
+ "enderzoo.enderzoo.FallenKnight" : "1",
+ "enderzoo.WitherWitch" : "3",
+
+ "enderio.witherSkeleton" : "20"
+ },
+
+ "blackList": [
+ "VillagerGolem",
+ "Villager"
+ ]
+}
diff --git a/config/enderio/PoweredSpawnerConfig_User.json b/config/enderio/PoweredSpawnerConfig_User.json
new file mode 100644
index 0000000000..79a816816d
--- /dev/null
+++ b/config/enderio/PoweredSpawnerConfig_User.json
@@ -0,0 +1,9 @@
+{
+
+ "_comment": "New entities are added, one already in _Core will have their values replaced with those in this file",
+ "costMultiplier": {
+ },
+
+ "_comment": "Adding a blackList section will complete replace the one in the core file. Make sure you add a comma at the end of this line if adding a blacklist"
+
+} \ No newline at end of file
diff --git a/config/enderio/SAGMillRecipes_Core.xml b/config/enderio/SAGMillRecipes_Core.xml
new file mode 100644
index 0000000000..121282a100
--- /dev/null
+++ b/config/enderio/SAGMillRecipes_Core.xml
@@ -0,0 +1,2456 @@
+<!--
+
+ IMPORTANT:
+ This is the core recipe file. Modifying this file will have no effect.
+ It will be rewritten by EnderIO and all modifications made to it will be lost. To add
+ or modify recipes please use 'SagMillRecipes_User.xml'
+
+ Recipes are organized into named groups. A group of recipes can be disabled by setting the attribute 'enabled=false'.
+ A recipe group is composed of one or more recipes.
+
+ NB: All recipes MUST belong to a group.
+
+ Examples:
+ <recipeGroup name="EnderIO">
+ <recipe>...</recipe>
+ <recipe>...</recipe>
+ <recipeGroup/>
+
+ <recipeGroup name="EnderIO" enabled="false">
+ <recipe>...</recipe>
+ <recipe>...</recipe>
+ <recipeGroup/>
+
+
+ Each recipe must be named and contains one or more input item stack definition and one or more output stack definitions.
+ For each input, all outputs are produced.
+ A recipe may also define the amount of energy used to complete it. The default value used is 4000 RF. A typical
+ value for an ingot to dust recipe is 2400 RF.
+
+ Examples:
+ <recipe name="Blah">
+ <input>
+ <itemStack/>
+ </input>
+ <output>
+ <itemStack/>
+ </output>
+ </recipe>
+
+ <recipe name="BlahBlah" energyCost="2400">
+ <input>
+ <itemStack/> </input>
+ <output>
+ <itemStack/>
+ </output>
+ <output>
+ <itemStack/>
+ </output>
+ </recipe>
+
+
+ Valid input item definitions:
+ - Must have either: modID + itemName or oreDictionary
+ - 'modID' is the identifier registered by the mod with Forge (for example vanilla blocks use 'minecraft' while Ender IO is 'EnderIO').
+ This value can be found in the details panel of Forge's 'mods' UI.
+ - 'itemName' the name used to register the block/item with forge. To write all registered items to config/modObjectsRegistery.txt
+ include: <dumpRegistry modObjects="true/>
+ - 'oreDictionary' will use the OreDictionary to find the appropriate itemStack. The first entry returned by the dictionary
+ will be used. To write the contents of the ore dictionary to config/oreDictionaryRegistery.txt include <dumpRegistery oreDictionary="true"/>
+ - The item metadata/damage may optionally be specified for all types except
+ oreDictionary. If a '*' is used for the metadata value then meta data will ignored when determining if an input is valid.
+
+ Examples:
+
+ <itemStack modID="" itemName="" />
+ <itemStack modID="" itemName="" itemMeta="" />
+ <itemStack oreDictionary="" />
+
+ Valid output definitions:
+ - As per inputs with the additional optional fields, number and chance (both default to 1)
+ - 'number' is the number of output items for each input
+ - 'chance' is the chance the output will be crafted. Values are clamped between 0 - 1.
+ For example, a chance of 0.25 will result, on average, one of these outputs
+ being crafted for each 4 inputs processed by the SAG Mill.
+
+ Examples:
+ <itemStack modID="minecraft" itemName="sand"/>
+ <itemStack modID="minecraft" itemName="dye" itemMeta="15" number="6" />
+ <itemStack modID="minecraft" itemName="cobblestone" chance="0.15"/>
+ <itemStack oreDictionary="dustNickel" number="1" chance="0.1" />
+ <itemStack modID="BiomesOPlenty" itemName="bop.bones" itemMeta="0" number="4" chance="0.1"/>
+
+Recipes can also be added using forge IMC messages. For example, in the init method of a mod:
+
+String recipe =
+ "<recipeGroup name=\"cheaty\">" +
+ "<recipe name=\"foo\" energyCost=\"2400\">" +
+ "<input>" +
+ "<itemStack modID=\"minecraft\" itemName=\"dirt\"/>" +
+ "</input>" +
+ "<output>" +
+ "<itemStack modID=\"minecraft\" itemName=\"diamond\"/>" +
+ "</output>" +
+ "</recipe>" +
+ "</recipeGroup>";
+FMLInterModComms.sendMessage("EnderIO", "recipe:sagmill", recipe);
+
+
+
+Grinding Balls
+Grinding balls provide bonus outputs and reduced power use. Using the user config new grinding balls may be added and existing ones
+removed. It is also possible to add or remove items from the 'exludes' list. Items on this list will not have grinding ball bonuses
+applied and will not reduce the durability of an balls in the mill at the time they are processed.
+
+Examples:
+- Adding a new grinding ball:
+
+ <grindingBalls>
+ <grindingBall id="Diamond" grindingMultiplier="1.5" chanceMultiplier="2" powerMultiplier="0.5" durationRF="50000">
+ <itemStack modID="minecraft" itemName="diamond"/>
+ </grindingBall>
+ </grindingBalls>
+
+- Removing an existing grinding ball:
+ <grindingBalls>
+ <grindingBall id="Flint" remove="true"/>
+ </grindingBalls>
+
+- Modifiying the excludes list: (removing glowstone, adding sand)
+ <grindingBalls>
+ <excludes>
+ <itemStack modID="minecraft" itemName="glowstone" remove="true"/>
+ <itemStack modID="minecraft" itemName="sand"/>
+ </excludes>
+ </grindingBalls>
+
+
+Item Information and data dumps:
+To write all registered items to config/modObjectsRegistery.txt include:
+<dumpRegistry modObjects="true/>
+
+To write the contents of the ore dictionary to config/oreDictionaryRegistery.txt include:
+<dumpRegistery oreDictionary="true"/>
+
+To show ore dictionary and/or registered names, in the EnderIO config set:
+addRegisterdNameTooltip=true
+addOreDictionaryTooltips=true
+
+-->
+
+<SAGMillRecipes>
+
+ <!-- <dumpRegistery oreDictionary="true" modObjects="true" /> -->
+
+ <recipeGroup name="EnderIO"> <!-- Required for EnderIO to function correctly. -->
+
+ <!-- Sand to Silicon -->
+ <recipe name="Silicon" energyCost="720">
+ <input>
+ <itemStack modID="minecraft" itemName="sand" />
+ </input>
+ <output>
+ <itemStack modID="EnderIO" itemName="itemMaterial" number="1" itemMeta="0" chance="0.5" />
+ </output>
+ </recipe>
+
+ <recipe name="SiliconRedSand" energyCost="720">
+ <input>
+ <itemStack modID="minecraft" itemName="sand" itemMeta="1" />
+ </input>
+ <output>
+ <itemStack modID="EnderIO" itemName="itemMaterial" number="1" itemMeta="0" chance="0.5" />
+ </output>
+ </recipe>
+
+ <recipe name="CoalOre" energyCost="3600">
+ <input>
+ <itemStack oreDictionary="oreCoal" />
+ </input>
+ <output>
+ <itemStack modID="minecraft" itemName="coal" number="3" />
+ <itemStack oreDictionary="dustCoal" number="1" chance="0.6"/>
+ <itemStack modID="minecraft" itemName="cobblestone" chance="0.15" />
+ <itemStack modID="minecraft" itemName="diamond" chance="0.001" />
+ </output>
+ </recipe>
+
+ <recipe name="Coal" energyCost="2400">
+ <input>
+ <itemStack modID="minecraft" itemName="coal" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustCoal" number="1"/>
+ <itemStack oreDictionary="dustCoal" number="1" chance="0.1"/>
+ <itemStack oreDictionary="dustSulfur" number="1" chance="0.1"/>
+ </output>
+ </recipe>
+
+ <recipe name="Charcoal" energyCost="2400">
+ <input>
+ <itemStack modID="minecraft" itemName="coal" itemMeta="1"/>
+ </input>
+ <output>
+ <itemStack oreDictionary="dustCharcoal" number="1" />
+ </output>
+ </recipe>
+
+ <recipe name="IronOre" energyCost="3600">
+ <input>
+ <itemStack oreDictionary="oreIron" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustIron" number="2"/>
+ <itemStack oreDictionary="dustTin" number="1" chance="0.05" />
+ <itemStack oreDictionary="dustNickel" number="1" chance="0.1" />
+ <itemStack modID="minecraft" itemName="cobblestone" chance="0.15" />
+ </output>
+ </recipe>
+
+ <recipe name="IronIngot" energyCost="2400">
+ <input>
+ <itemStack oreDictionary="ingotIron" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustIron" number="1"/>
+ </output>
+ </recipe>
+
+ <recipe name="GoldOre" energyCost="3600">
+ <input>
+ <itemStack oreDictionary="oreGold" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustGold" number="2"/>
+ <itemStack oreDictionary="dustCopper" number="1" chance="0.2" />
+ <itemStack modID="minecraft" itemName="cobblestone" chance="0.15" />
+ </output>
+ </recipe>
+
+ <recipe name="GoldIngot" energyCost="2400">
+ <input>
+ <itemStack oreDictionary="ingotGold" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustGold" number="1"/>
+ </output>
+ </recipe>
+
+ <recipe name="EnderPearl" energyCost="1600">
+ <input>
+ <itemStack modID="minecraft" itemName="ender_pearl" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustEnderPearl" number="1"/>
+ </output>
+ </recipe>
+
+ </recipeGroup>
+
+ <recipeGroup name="Vanilla">
+
+ <recipe name="Strone Bricks" energyCost="2400">
+ <input>
+ <itemStack modID="minecraft" itemName="stonebrick" />
+ </input>
+ <output>
+ <itemStack modID="minecraft" itemName="cobblestone"/>
+ </output>
+ </recipe>
+
+ <recipe name="CrackedBricks" energyCost="2000">
+ <input>
+ <itemStack modID="minecraft" itemName="stonebrick" itemMeta="2" />
+ </input>
+ <output>
+ <itemStack modID="minecraft" itemName="cobblestone"/>
+ </output>
+ </recipe>
+
+ <recipe name="ChisledBricks" energyCost="2800">
+ <input>
+ <itemStack modID="minecraft" itemName="stonebrick" itemMeta="3" />
+ </input>
+ <output>
+ <itemStack modID="minecraft" itemName="cobblestone"/>
+ </output>
+ </recipe>
+
+ <recipe name="Stone" energyCost="2400">
+ <input>
+ <itemStack modID="minecraft" itemName="stone" />
+ </input>
+ <output>
+ <itemStack modID="minecraft" itemName="cobblestone" />
+ </output>
+ </recipe>
+
+ <recipe name="Cobblestone" energyCost="2400">
+ <input>
+ <itemStack modID="minecraft" itemName="cobblestone" />
+ </input>
+ <output>
+ <itemStack modID="minecraft" itemName="sand" />
+ <itemStack modID="minecraft" itemName="gravel" chance="0.1" />
+ </output>
+ </recipe>
+
+ <recipe name="Sandstone" energyCost="2400">
+ <input>
+ <itemStack modID="minecraft" itemName="sandstone" />
+ </input>
+ <output>
+ <itemStack modID="minecraft" itemName="sand" number="2" />
+ <itemStack modID="minecraft" itemName="sand" number="2" chance="0.4" />
+ <itemStack oreDictionary="dustSaltpeter" number="1" chance ="0.15"/>
+ </output>
+ </recipe>
+
+
+ <recipe name="Glass" energyCost="1200">
+ <input>
+ <itemStack oreDictionary="glass" />
+ </input>
+ <output>
+ <itemStack modID="minecraft" itemName="sand" />
+ </output>
+ </recipe>
+
+ <recipe name="Gravel" energyCost="2400">
+ <input>
+ <itemStack modID="minecraft" itemName="gravel" />
+ </input>
+ <output>
+ <itemStack modID="minecraft" itemName="flint" />
+ <itemStack modID="minecraft" itemName="flint" chance="0.1" />
+ <itemStack modID="minecraft" itemName="sand" chance="0.1" />
+ </output>
+ </recipe>
+
+ <recipe name="Netherrack" energyCost="2400">
+ <input>
+ <itemStack modID="minecraft" itemName="netherrack" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustSulfur" chance="0.15" />
+ </output>
+ </recipe>
+
+ <recipe name="BlazeRod" energyCost="2400">
+ <input>
+ <itemStack modID="minecraft" itemName="blaze_rod" />
+ </input>
+ <output>
+ <itemStack modID="minecraft" itemName="blaze_powder" number="4" />
+ <itemStack oreDictionary="dustSulfur" chance="0.5" />
+ </output>
+ </recipe>
+
+ <recipe name="GlowStone" energyCost="2400">
+ <input>
+ <itemStack modID="minecraft" itemName="glowstone" />
+ </input>
+ <output>
+ <itemStack modID="minecraft" itemName="glowstone_dust" number="3" />
+ <itemStack modID="minecraft" itemName="glowstone_dust" number="1" chance="0.8" />
+ </output>
+ </recipe>
+
+ <recipe name="Bone" energyCost="2400">
+ <input>
+ <itemStack modID="minecraft" itemName="bone" />
+ </input>
+ <output>
+ <itemStack modID="minecraft" itemName="dye" itemMeta="15" number="6" />
+ <itemStack modID="minecraft" itemName="dye" itemMeta="15" number="2" chance="0.1" />
+ </output>
+ </recipe>
+
+ <recipe name="ClayBlock" energyCost="2400">
+ <input>
+ <itemStack modID="minecraft" itemName="clay" />
+ </input>
+ <output>
+ <itemStack modID="minecraft" itemName="clay_ball" number="2" />
+ <itemStack modID="minecraft" itemName="clay_ball" number="1" chance="0.1" />
+ <itemStack modID="EnderIO" itemName="itemMaterial" number="2" itemMeta="0" chance="0.8" />
+ </output>
+ </recipe>
+
+ <recipe name="Wool" energyCost="1200">
+ <input>
+ <itemStack modID="minecraft" itemName="wool" itemMeta="*" />
+ </input>
+ <output>
+ <itemStack modID="minecraft" itemName="string" number="3" />
+ <itemStack modID="minecraft" itemName="string" number="1" chance="0.1" />
+ </output>
+ </recipe>
+
+ <recipe name="Wheat" energyCost="800">
+ <input>
+ <itemStack modID="minecraft" itemName="wheat" />
+ </input>
+ <output>
+ <itemStack modID="minecraft" itemName="wheat_seeds" number="2" />
+ </output>
+ </recipe>
+
+ <recipe name="RedstoneOre" energyCost="3000">
+ <input>
+ <itemStack oreDictionary="oreRedstone" />
+ </input>
+ <output>
+ <itemStack modID="minecraft" itemName="redstone" number="8" />
+ <itemStack modID="minecraft" itemName="redstone" number="1" chance="0.2" />
+ <itemStack modID="EnderIO" itemName="itemMaterial" itemMeta="0" chance="0.8" />
+ <itemStack modID="minecraft" itemName="cobblestone" chance="0.15" />
+ </output>
+ </recipe>
+
+ <recipe name="DiamondOre" energyCost="3000">
+ <input>
+ <itemStack oreDictionary="oreDiamond" />
+ </input>
+ <output>
+ <itemStack modID="minecraft" itemName="diamond" number="1" />
+ <itemStack modID="minecraft" itemName="diamond" number="1" chance="0.25" />
+ </output>
+ </recipe>
+
+ <recipe name="EmeraldOre" energyCost="3000">
+ <input>
+ <itemStack oreDictionary="oreEmerald" />
+ </input>
+ <output>
+ <itemStack modID="minecraft" itemName="emerald" number="1" />
+ <itemStack modID="minecraft" itemName="emerald" number="1" chance="0.25" />
+ </output>
+ </recipe>
+
+ <recipe name="LapisLazuliOre" energyCost="3000">
+ <input>
+ <itemStack oreDictionary="oreLapis" />
+ </input>
+ <output>
+ <itemStack modID="minecraft" itemName="dye" itemMeta="4" number="8" />
+ <itemStack modID="minecraft" itemName="dye" itemMeta="4" number="1" chance="0.2" />
+ <itemStack modID="minecraft" itemName="cobblestone" chance="0.15" />
+ </output>
+ </recipe>
+
+ <recipe name="Quartz Ore" energyCost="7200">
+ <input>
+ <itemStack oreDictionary="oreQuartz" />
+ </input>
+ <output>
+ <itemStack modID="minecraft" itemName="quartz" number="4" />
+ <itemStack oreDictionary="dustCertusQuartz" chance="0.05" />
+ </output>
+ </recipe>
+
+ <recipe name="Block of Quartz" energyCost="2400">
+ <input>
+ <itemStack modID="minecraft" itemName="quartz_block" itemMeta="*" />
+ </input>
+ <output>
+ <itemStack modID="minecraft" itemName="quartz" number="2" />
+ <itemStack modID="minecraft" itemName="quartz" number="2" chance="0.25" />
+ </output>
+ </recipe>
+
+
+ <recipe name="Quartz Stairs" energyCost="1200">
+ <input>
+ <itemStack modID="minecraft" itemName="quartz_stairs" />
+ </input>
+ <output>
+ <itemStack modID="minecraft" itemName="quartz" number="2" />
+ <itemStack modID="minecraft" itemName="quartz" number="2" chance="0.25" />
+ </output>
+ </recipe>
+
+ <recipe name="Quartz Slab" energyCost="1200">
+ <input>
+ <itemStack modID="minecraft" itemName="stone_slab" itemMeta="7" />
+ </input>
+ <output>
+ <itemStack modID="minecraft" itemName="quartz" number="1" />
+ <itemStack modID="minecraft" itemName="quartz" number="1" chance="0.25" />
+ </output>
+ </recipe>
+
+ </recipeGroup>
+
+ <recipeGroup name="Common Ores/Ingots">
+
+ <recipe name="CopperOre" energyCost="3600">
+ <input>
+ <itemStack oreDictionary="oreCopper" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustCopper" number="2"/>
+ <itemStack oreDictionary="dustGold" number="1" chance="0.125"/>
+ <itemStack modID="minecraft" itemName="cobblestone" chance="0.15" />
+ </output>
+ </recipe>
+
+ <recipe name="CopperIngot" energyCost="2400">
+ <input>
+ <itemStack oreDictionary="ingotCopper" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustCopper" number="1"/>
+ </output>
+ </recipe>
+
+ <recipe name="TinOre" energyCost="3600">
+ <input>
+ <itemStack oreDictionary="oreTin" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustTin" number="2"/>
+ <itemStack modID="minecraft" itemName="cobblestone" chance="0.15" />
+ </output>
+ </recipe>
+
+ <recipe name="TinIngot" energyCost="2400">
+ <input>
+ <itemStack oreDictionary="ingotTin" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustTin" number="1"/>
+ </output>
+ </recipe>
+
+ <recipe name="LeadOre" energyCost="3600">
+ <input>
+ <itemStack oreDictionary="oreLead" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustLead" number="2" />
+ <itemStack oreDictionary="dustSilver" chance="0.1" />
+ <itemStack modID="minecraft" itemName="cobblestone" chance="0.15" />
+ </output>
+ </recipe>
+
+ <recipe name="LeadIngot" energyCost="2400">
+ <input>
+ <itemStack oreDictionary="ingotLead" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustLead" />
+ </output>
+ </recipe>
+
+ <recipe name="SilverOre" energyCost="3600">
+ <input>
+ <itemStack oreDictionary="oreSilver" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustSilver" number="2" />
+ <itemStack oreDictionary="dustLead" chance="0.1" />
+ </output>
+ </recipe>
+
+ <recipe name="SilverIngot" energyCost="2400">
+ <input>
+ <itemStack oreDictionary="ingotSilver" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustSilver" />
+ </output>
+ </recipe>
+
+ <recipe name="BronzeIngot" energyCost="2400">
+ <input>
+ <itemStack oreDictionary="ingotBronze" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustBronze" />
+ </output>
+ </recipe>
+
+ <recipe name="NickelIngot" energyCost="2400">
+ <input>
+ <itemStack oreDictionary="ingotNickel" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustNickel" />
+ </output>
+ </recipe>
+
+ <recipe name="NickelOre" energyCost="3600">
+ <input>
+ <itemStack oreDictionary="oreNickel" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustNickel" number="2" />
+ <itemStack oreDictionary="dustPlatinum" chance="0.1" />
+ </output>
+ </recipe>
+
+ </recipeGroup>
+
+ <recipeGroup name="Thermal Expansion">
+
+ <recipe name="Obsidian" energyCost="4000">
+ <input>
+ <itemStack modID="minecraft" itemName="obsidian" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustObsidian" number="4" />
+ </output>
+ </recipe>
+
+ </recipeGroup>
+
+ <recipeGroup name="Forestry">
+
+ <recipe name="Log" energyCost="2400">
+ <input>
+ <itemStack oreDictionary="logWood" />
+ </input>
+ <output>
+ <itemStack oreDictionary="pulpWood" number="1" />
+ <itemStack oreDictionary="pulpWood" number="1" chance="0.9" />
+ <itemStack oreDictionary="pulpWood" number="1" chance="0.5" />
+ <itemStack oreDictionary="pulpWood" number="1" chance="0.1" />
+ </output>
+ </recipe>
+
+ <recipe name="Plank" energyCost="1200">
+ <input>
+ <itemStack oreDictionary="plankWood" />
+ </input>
+ <output>
+ <itemStack oreDictionary="pulpWood" number="1" chance="0.9" />
+ </output>
+ </recipe>
+
+ <recipe name="Stairs" energyCost="1200">
+ <input>
+ <itemStack oreDictionary="stairsWood" />
+ </input>
+ <output>
+ <itemStack oreDictionary="pulpWood" number="1" chance="0.8" />
+ </output>
+ </recipe>
+
+ <recipe name="Stair" energyCost="1200">
+ <input>
+ <itemStack oreDictionary="stairWood" />
+ </input>
+ <output>
+ <itemStack oreDictionary="pulpWood" number="1" chance="0.8" />
+ </output>
+ </recipe>
+
+ <recipe name="SlabWood" energyCost="1200">
+ <input>
+ <itemStack oreDictionary="slabWood" />
+ </input>
+ <output>
+ <itemStack oreDictionary="pulpWood" number="1" chance="0.7" />
+ </output>
+ </recipe>
+
+ <recipe name="Stick" energyCost="800">
+ <input>
+ <itemStack oreDictionary="stickWood" />
+ </input>
+ <output>
+ <itemStack oreDictionary="pulpWood" number="1" chance="0.15" />
+ </output>
+ </recipe>
+
+ </recipeGroup>
+
+
+ <recipeGroup name="Applied Energistics">
+
+
+ <recipe name="ChargedCertusQuartzOre" energyCost="2400">
+ <input>
+ <itemStack modID="appliedenergistics2" itemName="tile.OreQuartzCharged" />
+ </input>
+ <output>
+ <itemStack modID="appliedenergistics2" itemName="item.ItemMultiMaterial" itemMeta="1"/>
+ <itemStack oreDictionary="dustCertusQuartz" />
+ </output>
+ </recipe>
+
+ <recipe name="CertusQuartzOre" energyCost="2400">
+ <input>
+ <itemStack oreDictionary="oreCertusQuartz" />
+ </input>
+ <output>
+ <itemStack oreDictionary="crystalCertusQuartz" />
+ <itemStack oreDictionary="dustCertusQuartz" />
+ </output>
+ </recipe>
+
+ <recipe name="CertusQuartzCrystal" energyCost="2400">
+ <input>
+ <itemStack oreDictionary="crystalCertusQuartz" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustCertusQuartz" />
+ </output>
+ </recipe>
+
+ <recipe name="ChargedCertusQuartzCrystal" energyCost="2400">
+ <input>
+ <itemStack modID="appliedenergistics2" itemName="item.ItemMultiMaterial" itemMeta="1"/>
+ </input>
+ <output>
+ <itemStack oreDictionary="dustCertusQuartz" />
+ </output>
+ </recipe>
+
+ <recipe name="FluixCrystal" energyCost="2400">
+ <input>
+ <itemStack oreDictionary="crystalFluix" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustFluix" />
+ </output>
+ </recipe>
+
+ <recipe name="NetherQuartz" energyCost="2400">
+ <input>
+ <itemStack modID="minecraft" itemName="quartz" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustNetherQuartz" />
+ </output>
+ </recipe>
+ </recipeGroup>
+
+ <recipeGroup name="Railcraft">
+
+ <recipe name="Sulfur Ore" energyCost="2400">
+ <input>
+ <itemStack oreDictionary="oreSulfur" number="1" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustSulfur" number="6" />
+ </output>
+ </recipe>
+
+ <recipe name="CrushedObsidian" energyCost="2400">
+ <input>
+ <itemStack modID="Railcraft" itemName="tile.railcraft.cube" itemMeta="4" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustObsidian" number="1" />
+ <itemStack oreDictionary="dustObsidian" number="1" chance="0.01" />
+ </output>
+ </recipe>
+
+ </recipeGroup>
+
+ <recipeGroup name="Dense Ores">
+
+ <recipe name="Dense Iron Ore" energyCost="2400">
+ <input>
+ <itemStack oreDictionary="denseoreIron" number="1" />
+ </input>
+ <output>
+ <itemStack oreDictionary="oreIron" number="4" />
+ </output>
+ </recipe>
+
+ <recipe name="Dense Gold Ore" energyCost="2400">
+ <input>
+ <itemStack oreDictionary="denseoreGold" number="1" />
+ </input>
+ <output>
+ <itemStack oreDictionary="oreGold" number="4" />
+ </output>
+ </recipe>
+
+ <recipe name="Dense Copper Ore" energyCost="2400">
+ <input>
+ <itemStack oreDictionary="denseoreCopper" number="1" />
+ </input>
+ <output>
+ <itemStack oreDictionary="oreCopper" number="4" />
+ </output>
+ </recipe>
+
+ <recipe name="Dense Lead Ore" energyCost="2400">
+ <input>
+ <itemStack oreDictionary="denseoreLead" number="1" />
+ </input>
+ <output>
+ <itemStack oreDictionary="oreLead" number="4" />
+ </output>
+ </recipe>
+
+ <recipe name="Dense Silver Ore" energyCost="2400">
+ <input>
+ <itemStack oreDictionary="denseoreSilver" number="1" />
+ </input>
+ <output>
+ <itemStack oreDictionary="oreSilver" number="4" />
+ </output>
+ </recipe>
+
+ <recipe name="Dense Tin Ore" energyCost="2400">
+ <input>
+ <itemStack oreDictionary="denseoreTin" number="1" />
+ </input>
+ <output>
+ <itemStack oreDictionary="oreTin" number="4" />
+ </output>
+ </recipe>
+
+ <recipe name="Dense Nickel Ore" energyCost="2400">
+ <input>
+ <itemStack oreDictionary="denseoreNickel" number="1" />
+ </input>
+ <output>
+ <itemStack oreDictionary="oreNickel" number="4" />
+ </output>
+ </recipe>
+
+ <recipe name="Dense Platinum Ore" energyCost="2400">
+ <input>
+ <itemStack oreDictionary="denseorePlatinum" number="1" />
+ </input>
+ <output>
+ <itemStack oreDictionary="orePlatinum" number="4" />
+ </output>
+ </recipe>
+
+ <recipe name="Dense Mithril Ore" energyCost="2400">
+ <input>
+ <itemStack oreDictionary="denseoreMithril" number="1" />
+ </input>
+ <output>
+ <itemStack oreDictionary="oreMithril" number="4" />
+ </output>
+ </recipe>
+
+ <recipe name="Dense Cobalt Ore" energyCost="2400">
+ <input>
+ <itemStack oreDictionary="denseoreCobalt" number="1" />
+ </input>
+ <output>
+ <itemStack oreDictionary="oreCobalt" number="4" />
+ </output>
+ </recipe>
+
+ <recipe name="Dense Ardite Ore" energyCost="2400">
+ <input>
+ <itemStack oreDictionary="denseoreArdite" number="1" />
+ </input>
+ <output>
+ <itemStack oreDictionary="oreArdite" number="4" />
+ </output>
+ </recipe>
+
+ <recipe name="Dense Coal Ore" energyCost="2400">
+ <input>
+ <itemStack oreDictionary="denseoreCoal" number="1" />
+ </input>
+ <output>
+ <itemStack oreDictionary="oreCoal" number="4" />
+ </output>
+ </recipe>
+
+ <recipe name="Dense Diamond Ore" energyCost="2400">
+ <input>
+ <itemStack oreDictionary="denseoreDiamond" number="1" />
+ </input>
+ <output>
+ <itemStack oreDictionary="oreDiamond" number="4" />
+ </output>
+ </recipe>
+
+ <recipe name="Dense Lapis Ore" energyCost="2400">
+ <input>
+ <itemStack oreDictionary="denseoreLapis" number="1" />
+ </input>
+ <output>
+ <itemStack oreDictionary="oreLapis" number="4" />
+ </output>
+ </recipe>
+
+ <recipe name="Dense Emerald Ore" energyCost="2400">
+ <input>
+ <itemStack oreDictionary="denseoreEmerald" number="1" />
+ </input>
+ <output>
+ <itemStack oreDictionary="oreEmerald" number="4" />
+ </output>
+ </recipe>
+
+ <recipe name="Dense Redstone Ore" energyCost="2400">
+ <input>
+ <itemStack oreDictionary="denseoreRedstone" number="1" />
+ </input>
+ <output>
+ <itemStack oreDictionary="oreRedstone" number="4" />
+ </output>
+ </recipe>
+
+ <recipe name="Dense Quartz Ore" energyCost="2400">
+ <input>
+ <itemStack oreDictionary="denseoreQuartz" number="1" />
+ </input>
+ <output>
+ <itemStack oreDictionary="oreQuartz" number="4" />
+ </output>
+ </recipe>
+
+
+ </recipeGroup>
+
+ <recipeGroup name="Biomes O' Plenty">
+
+ <recipe name="SmallBoneSegment" energyCost="2600">
+ <input>
+ <itemStack modID="BiomesOPlenty" itemName="bones" itemMeta="0" />
+ </input>
+ <output>
+ <itemStack modID="minecraft" itemName="dye" itemMeta="15" number="8" />
+ </output>
+ </recipe>
+
+ <recipe name="MediumBoneSegment" energyCost="3200">
+ <input>
+ <itemStack modID="BiomesOPlenty" itemName="bones" itemMeta="1" />
+ </input>
+ <output>
+ <itemStack modID="minecraft" itemName="dye" itemMeta="15" number="12" />
+ </output>
+ </recipe>
+
+ <recipe name="LargeBoneSegment" energyCost="4800">
+ <input>
+ <itemStack modID="BiomesOPlenty" itemName="bones" itemMeta="2" />
+ </input>
+ <output>
+ <itemStack modID="minecraft" itemName="dye" itemMeta="15" number="24" />
+ </output>
+ </recipe>
+ </recipeGroup>
+
+ <recipeGroup name="Metallurgy">
+
+ <!-- Metals -->
+ <recipe name="ManganeseOre" energyCost="3600">
+ <input>
+ <itemStack oreDictionary="oreManganese" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustManganese" number="2" />
+ </output>
+ </recipe>
+ <recipe name="ZincOre" energyCost="3600">
+ <input>
+ <itemStack oreDictionary="oreZinc" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustZinc" number="2" />
+ </output>
+ </recipe>
+ <recipe name="SilverOre" energyCost="3600">
+ <input>
+ <itemStack oreDictionary="oreSilver" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustSilver" number="2" />
+ </output>
+ </recipe>
+ <recipe name="PlatinumOre" energyCost="3600">
+ <input>
+ <itemStack oreDictionary="orePlatinum" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustPlatinum" number="2" />
+ </output>
+ </recipe>
+ <recipe name="IgnatiusOre" energyCost="3600">
+ <input>
+ <itemStack oreDictionary="oreIgnatius" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustIgnatius" number="2" />
+ </output>
+ </recipe>
+ <recipe name="ShadowIronOre" energyCost="3600">
+ <input>
+ <itemStack oreDictionary="oreShadowIron" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustShadowIron" number="2" />
+ </output>
+ </recipe>
+ <recipe name="LemuriteOre" energyCost="3600">
+ <input>
+ <itemStack oreDictionary="oreLemurite" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustLemurite" number="2" />
+ </output>
+ </recipe>
+ <recipe name="MidasiumOre" energyCost="3600">
+ <input>
+ <itemStack oreDictionary="oreMidasium" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustMidasium" number="2" />
+ </output>
+ </recipe>
+ <recipe name="VyroxeresOre" energyCost="3600">
+ <input>
+ <itemStack oreDictionary="oreVyroxeres" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustVyroxeres" number="2" />
+ </output>
+ </recipe>
+ <recipe name="CeruclaseOre" energyCost="3600">
+ <input>
+ <itemStack oreDictionary="oreCeruclase" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustCeruclase" number="2" />
+ </output>
+ </recipe>
+ <recipe name="KalendriteOre" energyCost="3600">
+ <input>
+ <itemStack oreDictionary="oreKalendrite" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustKalendrite" number="2" />
+ </output>
+ </recipe>
+ <recipe name="VulcaniteOre" energyCost="3600">
+ <input>
+ <itemStack oreDictionary="oreVulcanite" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustVulcanite" number="2" />
+ </output>
+ </recipe>
+ <recipe name="SanguiniteOre" energyCost="3600">
+ <input>
+ <itemStack oreDictionary="oreSanguinite" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustSanguinite" number="2" />
+ </output>
+ </recipe>
+ <recipe name="PrometheumOre" energyCost="3600">
+ <input>
+ <itemStack oreDictionary="orePrometheum" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustPrometheum" number="2" />
+ </output>
+ </recipe>
+ <recipe name="DeepIronOre" energyCost="3600">
+ <input>
+ <itemStack oreDictionary="oreDeepIron" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustDeepIron" number="2" />
+ </output>
+ </recipe>
+ <recipe name="InfuscoliumOre" energyCost="3600">
+ <input>
+ <itemStack oreDictionary="oreInfuscolium" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustInfuscolium" number="2" />
+ </output>
+ </recipe>
+ <recipe name="OureclaseOre" energyCost="3600">
+ <input>
+ <itemStack oreDictionary="oreOureclase" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustOureclase" number="2" />
+ </output>
+ </recipe>
+ <recipe name="AstralSilverOre" energyCost="3600">
+ <input>
+ <itemStack oreDictionary="oreAstralSilver" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustAstralSilver" number="2" />
+ </output>
+ </recipe>
+ <recipe name="CarmotOre" energyCost="3600">
+ <input>
+ <itemStack oreDictionary="oreCarmot" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustCarmot" number="2" />
+ </output>
+ </recipe>
+ <recipe name="MithrilOre" energyCost="3600">
+ <input>
+ <itemStack oreDictionary="oreMithril" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustMithril" number="2" />
+ </output>
+ </recipe>
+ <recipe name="RubraciumOre" energyCost="3600">
+ <input>
+ <itemStack oreDictionary="oreRubracium" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustRubracium" number="2" />
+ </output>
+ </recipe>
+ <recipe name="OrichalcumOre" energyCost="3600">
+ <input>
+ <itemStack oreDictionary="oreOrichalcum" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustOrichalcum" number="2" />
+ </output>
+ </recipe>
+ <recipe name="AdamantineOre" energyCost="3600">
+ <input>
+ <itemStack oreDictionary="oreAdamantine" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustAdamantine" number="2" />
+ </output>
+ </recipe>
+ <recipe name="AtlarusOre" energyCost="3600">
+ <input>
+ <itemStack oreDictionary="oreAtlarus" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustAtlarus" number="2" />
+ </output>
+ </recipe>
+
+ <!-- Alloys and Ingots -->
+ <recipe name="ManganeseIngot" energyCost="2400">
+ <input>
+ <itemStack oreDictionary="ingotManganese" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustManganese" number="1" />
+ </output>
+ </recipe>
+ <recipe name="ZincIngot" energyCost="2400">
+ <input>
+ <itemStack oreDictionary="ingotZinc" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustZinc" number="1" />
+ </output>
+ </recipe>
+ <recipe name="SilverIngot" energyCost="2400">
+ <input>
+ <itemStack oreDictionary="ingotSilver" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustSilver" number="1" />
+ </output>
+ </recipe>
+ <recipe name="PlatinumIngot" energyCost="2400">
+ <input>
+ <itemStack oreDictionary="ingotPlatinum" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustPlatinum" number="1" />
+ </output>
+ </recipe>
+ <recipe name="IgnatiusIngot" energyCost="2400">
+ <input>
+ <itemStack oreDictionary="ingotIgnatius" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustIgnatius" number="1" />
+ </output>
+ </recipe>
+ <recipe name="ShadowIronIngot" energyCost="2400">
+ <input>
+ <itemStack oreDictionary="ingotShadowIron" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustShadowIron" number="1" />
+ </output>
+ </recipe>
+ <recipe name="LemuriteIngot" energyCost="2400">
+ <input>
+ <itemStack oreDictionary="ingotLemurite" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustLemurite" number="1" />
+ </output>
+ </recipe>
+ <recipe name="MidasiumIngot" energyCost="2400">
+ <input>
+ <itemStack oreDictionary="ingotMidasium" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustMidasium" number="1" />
+ </output>
+ </recipe>
+ <recipe name="VyroxeresIngot" energyCost="2400">
+ <input>
+ <itemStack oreDictionary="ingotVyroxeres" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustVyroxeres" number="1" />
+ </output>
+ </recipe>
+ <recipe name="CeruclaseIngot" energyCost="2400">
+ <input>
+ <itemStack oreDictionary="ingotCeruclase" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustCeruclase" number="1" />
+ </output>
+ </recipe>
+ <recipe name="KalendriteIngot" energyCost="2400">
+ <input>
+ <itemStack oreDictionary="ingotKalendrite" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustKalendrite" number="1" />
+ </output>
+ </recipe>
+ <recipe name="VulcaniteIngot" energyCost="2400">
+ <input>
+ <itemStack oreDictionary="ingotVulcanite" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustVulcanite" number="1" />
+ </output>
+ </recipe>
+ <recipe name="SanguiniteIngot" energyCost="2400">
+ <input>
+ <itemStack oreDictionary="ingotSanguinite" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustSanguinite" number="1" />
+ </output>
+ </recipe>
+ <recipe name="PrometheumIngot" energyCost="2400">
+ <input>
+ <itemStack oreDictionary="ingotPrometheum" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustPrometheum" number="1" />
+ </output>
+ </recipe>
+ <recipe name="DeepIronIngot" energyCost="2400">
+ <input>
+ <itemStack oreDictionary="ingotDeepIron" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustDeepIron" number="1" />
+ </output>
+ </recipe>
+ <recipe name="InfuscoliumIngot" energyCost="2400">
+ <input>
+ <itemStack oreDictionary="ingotInfuscolium" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustInfuscolium" number="1" />
+ </output>
+ </recipe>
+ <recipe name="OureclaseIngot" energyCost="2400">
+ <input>
+ <itemStack oreDictionary="ingotOureclase" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustOureclase" number="1" />
+ </output>
+ </recipe>
+ <recipe name="AstralSilverIngot" energyCost="2400">
+ <input>
+ <itemStack oreDictionary="ingotAstral Silver" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustAstral Silver" number="1" />
+ </output>
+ </recipe>
+ <recipe name="CarmotIngot" energyCost="2400">
+ <input>
+ <itemStack oreDictionary="ingotCarmot" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustCarmot" number="1" />
+ </output>
+ </recipe>
+ <recipe name="MithrilIngot" energyCost="2400">
+ <input>
+ <itemStack oreDictionary="ingotMithril" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustMithril" number="1" />
+ </output>
+ </recipe>
+ <recipe name="RubraciumIngot" energyCost="2400">
+ <input>
+ <itemStack oreDictionary="ingotRubracium" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustRubracium" number="1" />
+ </output>
+ </recipe>
+ <recipe name="OrichalcumIngot" energyCost="2400">
+ <input>
+ <itemStack oreDictionary="ingotOrichalcum" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustOrichalcum" number="1" />
+ </output>
+ </recipe>
+ <recipe name="AdamantineIngot" energyCost="2400">
+ <input>
+ <itemStack oreDictionary="ingotAdamantine" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustAdamantine" number="1" />
+ </output>
+ </recipe>
+ <recipe name="AtlarusIngot" energyCost="2400">
+ <input>
+ <itemStack oreDictionary="ingotAtlarus" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustAtlarus" number="1" />
+ </output>
+ </recipe>
+ <recipe name="BronzeIngot" energyCost="2400">
+ <input>
+ <itemStack oreDictionary="ingotBronze" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustBronze" number="1" />
+ </output>
+ </recipe>
+ <recipe name="HepatizonIngot" energyCost="2400">
+ <input>
+ <itemStack oreDictionary="ingotHepatizon" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustHepatizon" number="1" />
+ </output>
+ </recipe>
+ <recipe name="DamascusSteelIngot" energyCost="2400">
+ <input>
+ <itemStack oreDictionary="ingotDamascusSteel" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustDamascusSteel" number="1" />
+ </output>
+ </recipe>
+ <recipe name="AngmallenIngot" energyCost="2400">
+ <input>
+ <itemStack oreDictionary="ingotAngmallen" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustAngmallen" number="1" />
+ </output>
+ </recipe>
+ <recipe name="SteelIngot" energyCost="2400">
+ <input>
+ <itemStack oreDictionary="ingotSteel" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustSteel" number="1" />
+ </output>
+ </recipe>
+ <recipe name="BrassIngot" energyCost="2400">
+ <input>
+ <itemStack oreDictionary="ingotBrass" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustBrass" number="1" />
+ </output>
+ </recipe>
+ <recipe name="ElectrumIngot" energyCost="2400">
+ <input>
+ <itemStack oreDictionary="ingotElectrum" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustElectrum" number="1" />
+ </output>
+ </recipe>
+ <recipe name="ShadowSteelIngot" energyCost="2400">
+ <input>
+ <itemStack oreDictionary="ingotShadowSteel" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustShadowSteel" number="1" />
+ </output>
+ </recipe>
+ <recipe name="InolashiteIngot" energyCost="2400">
+ <input>
+ <itemStack oreDictionary="ingotInolashite" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustInolashite" number="1" />
+ </output>
+ </recipe>
+ <recipe name="AmordrineIngot" energyCost="2400">
+ <input>
+ <itemStack oreDictionary="ingotAmordrine" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustAmordrine" number="1" />
+ </output>
+ </recipe>
+ <recipe name="BlackSteelIngot" energyCost="2400">
+ <input>
+ <itemStack oreDictionary="ingotBlackSteel" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustBlackSteel" number="1" />
+ </output>
+ </recipe>
+ <recipe name="QuicksilverIngot" energyCost="2400">
+ <input>
+ <itemStack oreDictionary="ingotQuicksilver" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustQuicksilver" number="1" />
+ </output>
+ </recipe>
+ <recipe name="HaderothIngot" energyCost="2400">
+ <input>
+ <itemStack oreDictionary="ingotHaderoth" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustHaderoth" number="1" />
+ </output>
+ </recipe>
+ <recipe name="CelenegilIngot" energyCost="2400">
+ <input>
+ <itemStack oreDictionary="ingotCelenegil" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustCelenegil" number="1" />
+ </output>
+ </recipe>
+ <recipe name="TartariteIngot" energyCost="2400">
+ <input>
+ <itemStack oreDictionary="ingotTartarite" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustTartarite" number="1" />
+ </output>
+ </recipe>
+
+ <!-- Blocks -->
+ <recipe name="ManganeseBlock" energyCost="3600">
+ <input>
+ <itemStack oreDictionary="blockManganese" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustManganese" number="9" />
+ </output>
+ </recipe>
+ <recipe name="ZincBlock" energyCost="3600">
+ <input>
+ <itemStack oreDictionary="blockZinc" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustZinc" number="9" />
+ </output>
+ </recipe>
+ <recipe name="SilverBlock" energyCost="3600">
+ <input>
+ <itemStack oreDictionary="blockSilver" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustSilver" number="9" />
+ </output>
+ </recipe>
+ <recipe name="PlatinumBlock" energyCost="3600">
+ <input>
+ <itemStack oreDictionary="blockPlatinum" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustPlatinum" number="9" />
+ </output>
+ </recipe>
+ <recipe name="IgnatiusBlock" energyCost="3600">
+ <input>
+ <itemStack oreDictionary="blockIgnatius" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustIgnatius" number="9" />
+ </output>
+ </recipe>
+ <recipe name="ShadowIronBlock" energyCost="3600">
+ <input>
+ <itemStack oreDictionary="blockShadowIron" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustShadowIron" number="9" />
+ </output>
+ </recipe>
+ <recipe name="LemuriteBlock" energyCost="3600">
+ <input>
+ <itemStack oreDictionary="blockLemurite" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustLemurite" number="9" />
+ </output>
+ </recipe>
+ <recipe name="MidasiumBlock" energyCost="3600">
+ <input>
+ <itemStack oreDictionary="blockMidasium" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustMidasium" number="9" />
+ </output>
+ </recipe>
+ <recipe name="VyroxeresBlock" energyCost="3600">
+ <input>
+ <itemStack oreDictionary="blockVyroxeres" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustVyroxeres" number="9" />
+ </output>
+ </recipe>
+ <recipe name="CeruclaseBlock" energyCost="3600">
+ <input>
+ <itemStack oreDictionary="blockCeruclase" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustCeruclase" number="9" />
+ </output>
+ </recipe>
+ <recipe name="KalendriteBlock" energyCost="3600">
+ <input>
+ <itemStack oreDictionary="blockKalendrite" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustKalendrite" number="9" />
+ </output>
+ </recipe>
+ <recipe name="VulcaniteBlock" energyCost="3600">
+ <input>
+ <itemStack oreDictionary="blockVulcanite" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustVulcanite" number="9" />
+ </output>
+ </recipe>
+ <recipe name="SanguiniteBlock" energyCost="3600">
+ <input>
+ <itemStack oreDictionary="blockSanguinite" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustSanguinite" number="9" />
+ </output>
+ </recipe>
+ <recipe name="PrometheumBlock" energyCost="3600">
+ <input>
+ <itemStack oreDictionary="blockPrometheum" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustPrometheum" number="9" />
+ </output>
+ </recipe>
+ <recipe name="DeepIronBlock" energyCost="3600">
+ <input>
+ <itemStack oreDictionary="blockDeepIron" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustDeepIron" number="9" />
+ </output>
+ </recipe>
+ <recipe name="InfuscoliumBlock" energyCost="3600">
+ <input>
+ <itemStack oreDictionary="blockInfuscolium" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustInfuscolium" number="9" />
+ </output>
+ </recipe>
+ <recipe name="OureclaseBlock" energyCost="3600">
+ <input>
+ <itemStack oreDictionary="blockOureclase" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustOureclase" number="9" />
+ </output>
+ </recipe>
+ <recipe name="AstralSilverBlock" energyCost="3600">
+ <input>
+ <itemStack oreDictionary="blockAstralSilver" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustAstralSilver" number="9" />
+ </output>
+ </recipe>
+ <recipe name="CarmotBlock" energyCost="3600">
+ <input>
+ <itemStack oreDictionary="blockCarmot" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustCarmot" number="9" />
+ </output>
+ </recipe>
+ <recipe name="MithrilBlock" energyCost="3600">
+ <input>
+ <itemStack oreDictionary="blockMithril" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustMithril" number="9" />
+ </output>
+ </recipe>
+ <recipe name="RubraciumBlock" energyCost="3600">
+ <input>
+ <itemStack oreDictionary="blockRubracium" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustRubracium" number="9" />
+ </output>
+ </recipe>
+ <recipe name="OrichalcumBlock" energyCost="3600">
+ <input>
+ <itemStack oreDictionary="blockOrichalcum" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustOrichalcum" number="9" />
+ </output>
+ </recipe>
+ <recipe name="AdamantineBlock" energyCost="3600">
+ <input>
+ <itemStack oreDictionary="blockAdamantine" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustAdamantine" number="9" />
+ </output>
+ </recipe>
+ <recipe name="AtlarusBlock" energyCost="3600">
+ <input>
+ <itemStack oreDictionary="blockAtlarus" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustAtlarus" number="9" />
+ </output>
+ </recipe>
+ <recipe name="BronzeBlock" energyCost="3600">
+ <input>
+ <itemStack oreDictionary="blockBronze" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustBronze" number="9" />
+ </output>
+ </recipe>
+ <recipe name="HepatizonBlock" energyCost="3600">
+ <input>
+ <itemStack oreDictionary="blockHepatizon" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustHepatizon" number="9" />
+ </output>
+ </recipe>
+ <recipe name="DamascusSteelBlock" energyCost="3600">
+ <input>
+ <itemStack oreDictionary="blockDamascusSteel" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustDamascusSteel" number="9" />
+ </output>
+ </recipe>
+ <recipe name="AngmallenBlock" energyCost="3600">
+ <input>
+ <itemStack oreDictionary="blockAngmallen" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustAngmallen" number="9" />
+ </output>
+ </recipe>
+ <recipe name="SteelBlock" energyCost="3600">
+ <input>
+ <itemStack oreDictionary="blockSteel" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustSteel" number="9" />
+ </output>
+ </recipe>
+ <recipe name="BrassBlock" energyCost="3600">
+ <input>
+ <itemStack oreDictionary="blockBrass" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustBrass" number="9" />
+ </output>
+ </recipe>
+ <recipe name="ElectrumBlock" energyCost="3600">
+ <input>
+ <itemStack oreDictionary="blockElectrum" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustElectrum" number="9" />
+ </output>
+ </recipe>
+ <recipe name="ShadowSteelBlock" energyCost="3600">
+ <input>
+ <itemStack oreDictionary="blockShadowSteel" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustShadowSteel" number="9" />
+ </output>
+ </recipe>
+ <recipe name="InolashiteBlock" energyCost="3600">
+ <input>
+ <itemStack oreDictionary="blockInolashite" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustInolashite" number="9" />
+ </output>
+ </recipe>
+ <recipe name="AmordrineBlock" energyCost="3600">
+ <input>
+ <itemStack oreDictionary="blockAmordrine" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustAmordrine" number="9" />
+ </output>
+ </recipe>
+ <recipe name="BlackSteelBlock" energyCost="3600">
+ <input>
+ <itemStack oreDictionary="blockBlackSteel" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustBlackSteel" number="9" />
+ </output>
+ </recipe>
+ <recipe name="QuicksilverBlock" energyCost="3600">
+ <input>
+ <itemStack oreDictionary="blockQuicksilver" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustQuicksilver" number="9" />
+ </output>
+ </recipe>
+ <recipe name="HaderothBlock" energyCost="3600">
+ <input>
+ <itemStack oreDictionary="blockHaderoth" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustHaderoth" number="9" />
+ </output>
+ </recipe>
+ <recipe name="CelenegilBlock" energyCost="3600">
+ <input>
+ <itemStack oreDictionary="blockCelenegil" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustCelenegil" number="9" />
+ </output>
+ </recipe>
+ <recipe name="TartariteBlock" energyCost="3600">
+ <input>
+ <itemStack oreDictionary="blockTartarite" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustTartarite" number="9" />
+ </output>
+ </recipe>
+ </recipeGroup>
+
+ <recipeGroup name="Mekanism">
+
+ <!-- Metals -->
+ <recipe name="OsmiumOre" energyCost="3600">
+ <input>
+ <itemStack oreDictionary="oreOsmium" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustOsmium" number="2" />
+ <itemStack oreDictionary="dustOsmium" number="1" chance="0.10" />
+ </output>
+ </recipe>
+
+ <!-- Alloys and Ingots -->
+ <recipe name="OsmiumIngot" energyCost="2400">
+ <input>
+ <itemStack oreDictionary="ingotOsmium" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustOsmium" number="1" />
+ </output>
+ </recipe>
+
+
+ <!-- Blocks -->
+ <recipe name="OsmiumBlock" energyCost="3600">
+ <input>
+ <itemStack oreDictionary="blockOsmium" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustOsmium" number="9" />
+ </output>
+ </recipe>
+ </recipeGroup>
+
+ <recipeGroup name="Engineer's Toolbox">
+
+ <!-- Metals -->
+ <recipe name="NickelOre" energyCost="3600">
+ <input>
+ <itemStack oreDictionary="oreNickel" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustNickel" number="2" />
+ <itemStack oreDictionary="dustIron" number="1" chance="0.05" />
+ </output>
+ </recipe>
+ <recipe name="AluminumOre" energyCost="3600">
+ <input>
+ <itemStack oreDictionary="oreAluminum" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustAluminum" number="2" />
+ </output>
+ </recipe>
+
+ <!-- Alloys and Ingots -->
+ <recipe name="NickelIngot" energyCost="2400">
+ <input>
+ <itemStack oreDictionary="ingotNickel" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustNickel" number="1" />
+ </output>
+ </recipe>
+ <recipe name="AluminumIngot" energyCost="2400">
+ <input>
+ <itemStack oreDictionary="ingotAluminum" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustAluminum" number="1" />
+ </output>
+ </recipe>
+
+
+ <!-- Blocks -->
+ <recipe name="NickelBlock" energyCost="3600">
+ <input>
+ <itemStack oreDictionary="blockNickel" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustNickel" number="9" />
+ </output>
+ </recipe>
+ <recipe name="AluminumBlock" energyCost="3600">
+ <input>
+ <itemStack oreDictionary="blockAluminum" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustAluminum" number="9" />
+ </output>
+ </recipe>
+ </recipeGroup>
+
+ <recipeGroup name="BigReactors">
+ <!-- Metals -->
+ <recipe name="YelloriteOre" energyCost="3600">
+ <input>
+ <itemStack oreDictionary="oreYellorite" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustYellorium" number="2" />
+ <itemStack oreDictionary="dustCyanite" number="1" chance="0.05" />
+ </output>
+ </recipe>
+
+ <!-- Alloys and Ingots -->
+ <recipe name="YelloriteIngot" energyCost="2400">
+ <input>
+ <itemStack oreDictionary="ingotYellorium" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustUranium" number="1" />
+
+ </output>
+ </recipe>
+ <recipe name="CyaniteIngot" energyCost="2400">
+ <input>
+ <itemStack oreDictionary="ingotCyanite" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustCyanite" number="1" />
+ </output>
+ </recipe>
+ <recipe name="BlutoniumIngot" energyCost="2400">
+ <input>
+ <itemStack oreDictionary="ingotBlutonium" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustBlutonium" number="1" />
+ </output>
+ </recipe>
+ <recipe name="GraphiteIngot" energyCost="2400">
+ <input>
+ <itemStack oreDictionary="ingotGraphite" />
+ </input>
+ <output>
+ <itemStack oreDictionary="dustGraphite" number="1" />
+ </output>
+ </recipe>
+ </recipeGroup>
+
+ <recipeGroup name="UndergroundBiomesConstruct">
+ <recipe name="Red Granite" energyCost="2400">
+ <input>
+ <itemStack modID="UndergroundBiomes" itemName="igneousStone" itemMeta="0" />
+ </input>
+ <output>
+ <itemStack modID="UndergroundBiomes" itemName="igneousCobblestone" itemMeta="0" />
+ </output>
+ </recipe>
+
+ <recipe name="Black Granite" energyCost="2400">
+ <input>
+ <itemStack modID="UndergroundBiomes" itemName="igneousStone" itemMeta="1" />
+ </input>
+ <output>
+ <itemStack modID="UndergroundBiomes" itemName="igneousCobblestone" itemMeta="1" />
+ </output>
+ </recipe>
+
+ <recipe name="Rhyolite" energyCost="2400">
+ <input>
+ <itemStack modID="UndergroundBiomes" itemName="igneousStone" itemMeta="2" />
+ </input>
+ <output>
+ <itemStack modID="UndergroundBiomes" itemName="igneousCobblestone" itemMeta="2" />
+ </output>
+ </recipe>
+
+ <recipe name="Andesite" energyCost="2400">
+ <input>
+ <itemStack modID="UndergroundBiomes" itemName="igneousStone" itemMeta="3" />
+ </input>
+ <output>
+ <itemStack modID="UndergroundBiomes" itemName="igneousCobblestone" itemMeta="3" />
+ </output>
+ </recipe>
+
+ <recipe name="Gabbro" energyCost="2400">
+ <input>
+ <itemStack modID="UndergroundBiomes" itemName="igneousStone" itemMeta="4" />
+ </input>
+ <output>
+ <itemStack modID="UndergroundBiomes" itemName="igneousCobblestone" itemMeta="4" />
+ </output>
+ </recipe>
+
+ <recipe name="Basalt" energyCost="2400">
+ <input>
+ <itemStack modID="UndergroundBiomes" itemName="igneousStone" itemMeta="5" />
+ </input>
+ <output>
+ <itemStack modID="UndergroundBiomes" itemName="igneousCobblestone" itemMeta="5" />
+ </output>
+ </recipe>
+
+ <recipe name="Komatiite" energyCost="2400">
+ <input>
+ <itemStack modID="UndergroundBiomes" itemName="igneousStone" itemMeta="6" />
+ </input>
+ <output>
+ <itemStack modID="UndergroundBiomes" itemName="igneousCobblestone" itemMeta="6" />
+ </output>
+ </recipe>
+
+ <recipe name="Dacite" energyCost="2400">
+ <input>
+ <itemStack modID="UndergroundBiomes" itemName="igneousStone" itemMeta="7" />
+ </input>
+ <output>
+ <itemStack modID="UndergroundBiomes" itemName="igneousCobblestone" itemMeta="7" />
+ </output>
+ </recipe>
+
+ <recipe name="Red Granite Brick" energyCost="2400">
+ <input>
+ <itemStack modID="UndergroundBiomes" itemName="igneousStoneBrick" itemMeta="0" />
+ </input>
+ <output>
+ <itemStack modID="UndergroundBiomes" itemName="igneousCobblestone" itemMeta="0" number="4" />
+ </output>
+ </recipe>
+
+ <recipe name="Black Granite Brick" energyCost="2400">
+ <input>
+ <itemStack modID="UndergroundBiomes" itemName="igneousStoneBrick" itemMeta="1" />
+ </input>
+ <output>
+ <itemStack modID="UndergroundBiomes" itemName="igneousCobblestone" itemMeta="1" number="4" />
+ </output>
+ </recipe>
+
+ <recipe name="Rhyolite Brick" energyCost="2400">
+ <input>
+ <itemStack modID="UndergroundBiomes" itemName="igneousStoneBrick" itemMeta="2" />
+ </input>
+ <output>
+ <itemStack modID="UndergroundBiomes" itemName="igneousCobblestone" itemMeta="2" number="4" />
+ </output>
+ </recipe>
+
+ <recipe name="Andesite Brick" energyCost="2400">
+ <input>
+ <itemStack modID="UndergroundBiomes" itemName="igneousStoneBrick" itemMeta="3" />
+ </input>
+ <output>
+ <itemStack modID="UndergroundBiomes" itemName="igneousCobblestone" itemMeta="3" number="4" />
+ </output>
+ </recipe>
+
+ <recipe name="Gabbro Brick" energyCost="2400">
+ <input>
+ <itemStack modID="UndergroundBiomes" itemName="igneousStoneBrick" itemMeta="4" />
+ </input>
+ <output>
+ <itemStack modID="UndergroundBiomes" itemName="igneousCobblestone" itemMeta="4" number="4" />
+ </output>
+ </recipe>
+
+ <recipe name="Basalt Brick" energyCost="2400">
+ <input>
+ <itemStack modID="UndergroundBiomes" itemName="igneousStoneBrick" itemMeta="5" />
+ </input>
+ <output>
+ <itemStack modID="UndergroundBiomes" itemName="igneousCobblestone" itemMeta="5" number="4" />
+ </output>
+ </recipe>
+
+ <recipe name="Komatiite Brick" energyCost="2400">
+ <input>
+ <itemStack modID="UndergroundBiomes" itemName="igneousStoneBrick" itemMeta="6" />
+ </input>
+ <output>
+ <itemStack modID="UndergroundBiomes" itemName="igneousCobblestone" itemMeta="6" number="4" />
+ </output>
+ </recipe>
+
+ <recipe name="Dacite Brick" energyCost="2400">
+ <input>
+ <itemStack modID="UndergroundBiomes" itemName="igneousStoneBrick" itemMeta="7" />
+ </input>
+ <output>
+ <itemStack modID="UndergroundBiomes" itemName="igneousCobblestone" itemMeta="7" number="4" />
+ </output>
+ </recipe>
+
+ <recipe name="Gneiss" energyCost="2400">
+ <input>
+ <itemStack modID="UndergroundBiomes" itemName="metamorphicStone" itemMeta="0" />
+ </input>
+ <output>
+ <itemStack modID="UndergroundBiomes" itemName="metamorphicCobblestone" itemMeta="0" />
+ </output>
+ </recipe>
+
+ <recipe name="Eclogite" energyCost="2400">
+ <input>
+ <itemStack modID="UndergroundBiomes" itemName="metamorphicStone" itemMeta="1" />
+ </input>
+ <output>
+ <itemStack modID="UndergroundBiomes" itemName="metamorphicCobblestone" itemMeta="1" />
+ </output>
+ </recipe>
+
+ <recipe name="Marble" energyCost="2400">
+ <input>
+ <itemStack modID="UndergroundBiomes" itemName="metamorphicStone" itemMeta="2" />
+ </input>
+ <output>
+ <itemStack modID="UndergroundBiomes" itemName="metamorphicCobblestone" itemMeta="2" />
+ </output>
+ </recipe>
+
+ <recipe name="Quartzite" energyCost="2400">
+ <input>
+ <itemStack modID="UndergroundBiomes" itemName="metamorphicStone" itemMeta="3" />
+ </input>
+ <output>
+ <itemStack modID="UndergroundBiomes" itemName="metamorphicCobblestone" itemMeta="3" />
+ </output>
+ </recipe>
+
+ <recipe name="Blue Schist" energyCost="2400">
+ <input>
+ <itemStack modID="UndergroundBiomes" itemName="metamorphicStone" itemMeta="4" />
+ </input>
+ <output>
+ <itemStack modID="UndergroundBiomes" itemName="metamorphicCobblestone" itemMeta="4" />
+ </output>
+ </recipe>
+
+ <recipe name="Green Schist" energyCost="2400">
+ <input>
+ <itemStack modID="UndergroundBiomes" itemName="metamorphicStone" itemMeta="5" />
+ </input>
+ <output>
+ <itemStack modID="UndergroundBiomes" itemName="metamorphicCobblestone" itemMeta="5" />
+ </output>
+ </recipe>
+
+ <recipe name="Soapstone" energyCost="2400">
+ <input>
+ <itemStack modID="UndergroundBiomes" itemName="metamorphicStone" itemMeta="6" />
+ </input>
+ <output>
+ <itemStack modID="UndergroundBiomes" itemName="metamorphicCobblestone" itemMeta="6" />
+ </output>
+ </recipe>
+
+ <recipe name="Migmatite" energyCost="2400">
+ <input>
+ <itemStack modID="UndergroundBiomes" itemName="metamorphicStone" itemMeta="7" />
+ </input>
+ <output>
+ <itemStack modID="UndergroundBiomes" itemName="metamorphicCobblestone" itemMeta="7" />
+ </output>
+ </recipe>
+
+ <recipe name="Gneiss Brick" energyCost="2400">
+ <input>
+ <itemStack modID="UndergroundBiomes" itemName="metamorphicStoneBrick" itemMeta="0" />
+ </input>
+ <output>
+ <itemStack modID="UndergroundBiomes" itemName="metamorphicCobblestone" itemMeta="0" number="4" />
+ </output>
+ </recipe>
+
+ <recipe name="Eclogite Brick" energyCost="2400">
+ <input>
+ <itemStack modID="UndergroundBiomes" itemName="metamorphicStoneBrick" itemMeta="1" />
+ </input>
+ <output>
+ <itemStack modID="UndergroundBiomes" itemName="metamorphicCobblestone" itemMeta="1" number="4" />
+ </output>
+ </recipe>
+
+ <recipe name="Marble Brick" energyCost="2400">
+ <input>
+ <itemStack modID="UndergroundBiomes" itemName="metamorphicStoneBrick" itemMeta="2" />
+ </input>
+ <output>
+ <itemStack modID="UndergroundBiomes" itemName="metamorphicCobblestone" itemMeta="2" number="4" />
+ </output>
+ </recipe>
+
+ <recipe name="Quartzite Brick" energyCost="2400">
+ <input>
+ <itemStack modID="UndergroundBiomes" itemName="metamorphicStoneBrick" itemMeta="3" />
+ </input>
+ <output>
+ <itemStack modID="UndergroundBiomes" itemName="metamorphicCobblestone" itemMeta="3" number="4" />
+ </output>
+ </recipe>
+
+ <recipe name="Blue Schist Brick" energyCost="2400">
+ <input>
+ <itemStack modID="UndergroundBiomes" itemName="metamorphicStoneBrick" itemMeta="4" />
+ </input>
+ <output>
+ <itemStack modID="UndergroundBiomes" itemName="metamorphicCobblestone" itemMeta="4" number="4" />
+ </output>
+ </recipe>
+
+ <recipe name="Green Schist Brick" energyCost="2400">
+ <input>
+ <itemStack modID="UndergroundBiomes" itemName="metamorphicStoneBrick" itemMeta="5" />
+ </input>
+ <output>
+ <itemStack modID="UndergroundBiomes" itemName="metamorphicCobblestone" itemMeta="5" number="4" />
+ </output>
+ </recipe>
+
+ <recipe name="Soapstone Brick" energyCost="2400">
+ <input>
+ <itemStack modID="UndergroundBiomes" itemName="metamorphicStoneBrick" itemMeta="6" />
+ </input>
+ <output>
+ <itemStack modID="UndergroundBiomes" itemName="metamorphicCobblestone" itemMeta="6" number="4" />
+ </output>
+ </recipe>
+
+ <recipe name="Migmatite Brick" energyCost="2400">
+ <input>
+ <itemStack modID="UndergroundBiomes" itemName="metamorphicStoneBrick" itemMeta="7" />
+ </input>
+ <output>
+ <itemStack modID="UndergroundBiomes" itemName="metamorphicCobblestone" itemMeta="7" number="4" />
+ </output>
+ </recipe>
+ </recipeGroup>
+
+ <recipeGroup name="ExNihilo">
+ <recipe name="iron_gravel_to_crushed" energyCost="500" bonusType="chance_only">
+ <input><itemStack modID="exnihilo" itemName="iron_gravel"/></input>
+ <output>
+ <itemStack modID="exnihilo" itemName="exnihilo.iron_crushed" number="4" itemMeta="0"/>
+ <itemStack modID="exnihilo" itemName="exnihilo.iron_crushed" number="1" itemMeta="0" chance="0.5"/>
+ <itemStack modID="exnihilo" itemName="exnihilo.iron_crushed" number="1" itemMeta="0" chance="0.05"/>
+ </output>
+ </recipe>
+ <recipe name="iron_sand_to_powdered" energyCost="1000" bonusType="chance_only">
+ <input><itemStack modID="exnihilo" itemName="iron_sand"/></input>
+ <output>
+ <itemStack modID="exnihilo" itemName="exnihilo.iron_powdered" number="4" itemMeta="0"/>
+ <itemStack modID="exnihilo" itemName="exnihilo.iron_powdered" number="1" itemMeta="0" chance="0.5"/>
+ <itemStack modID="exnihilo" itemName="exnihilo.iron_powdered" number="1" itemMeta="0" chance="0.05"/>
+ </output>
+ </recipe>
+ <recipe name="gold_gravel_to_crushed" energyCost="500" bonusType="chance_only">
+ <input><itemStack modID="exnihilo" itemName="gold_gravel"/></input>
+ <output>
+ <itemStack modID="exnihilo" itemName="exnihilo.gold_crushed" number="4" itemMeta="0"/>
+ <itemStack modID="exnihilo" itemName="exnihilo.gold_crushed" number="1" itemMeta="0" chance="0.5"/>
+ <itemStack modID="exnihilo" itemName="exnihilo.gold_crushed" number="1" itemMeta="0" chance="0.05"/>
+ </output>
+ </recipe>
+ <recipe name="gold_sand_to_powdered" energyCost="1000" bonusType="chance_only">
+ <input><itemStack modID="exnihilo" itemName="gold_sand"/></input>
+ <output>
+ <itemStack modID="exnihilo" itemName="exnihilo.gold_powdered" number="4" itemMeta="0"/>
+ <itemStack modID="exnihilo" itemName="exnihilo.gold_powdered" number="1" itemMeta="0" chance="0.5"/>
+ <itemStack modID="exnihilo" itemName="exnihilo.gold_powdered" number="1" itemMeta="0" chance="0.05"/>
+ </output>
+ </recipe>
+ <recipe name="copper_gravel_to_crushed" energyCost="500" bonusType="chance_only">
+ <input><itemStack modID="exnihilo" itemName="copper_gravel"/></input>
+ <output>
+ <itemStack modID="exnihilo" itemName="exnihilo.copper_crushed" number="4" itemMeta="0"/>
+ <itemStack modID="exnihilo" itemName="exnihilo.copper_crushed" number="1" itemMeta="0" chance="0.5"/>
+ <itemStack modID="exnihilo" itemName="exnihilo.copper_crushed" number="1" itemMeta="0" chance="0.05"/>
+ </output>
+ </recipe>
+ <recipe name="copper_sand_to_powdered" energyCost="1000" bonusType="chance_only">
+ <input><itemStack modID="exnihilo" itemName="copper_sand"/></input>
+ <output>
+ <itemStack modID="exnihilo" itemName="exnihilo.copper_powdered" number="4" itemMeta="0"/>
+ <itemStack modID="exnihilo" itemName="exnihilo.copper_powdered" number="1" itemMeta="0" chance="0.5"/>
+ <itemStack modID="exnihilo" itemName="exnihilo.copper_powdered" number="1" itemMeta="0" chance="0.05"/>
+ </output>
+ </recipe>
+ <recipe name="tin_gravel_to_crushed" energyCost="500" bonusType="chance_only">
+ <input><itemStack modID="exnihilo" itemName="tin_gravel"/></input>
+ <output>
+ <itemStack modID="exnihilo" itemName="exnihilo.tin_crushed" number="4" itemMeta="0"/>
+ <itemStack modID="exnihilo" itemName="exnihilo.tin_crushed" number="1" itemMeta="0" chance="0.5"/>
+ <itemStack modID="exnihilo" itemName="exnihilo.tin_crushed" number="1" itemMeta="0" chance="0.05"/>
+ </output>
+ </recipe>
+ <recipe name="tin_sand_to_powdered" energyCost="1000" bonusType="chance_only">
+ <input><itemStack modID="exnihilo" itemName="tin_sand"/></input>
+ <output>
+ <itemStack modID="exnihilo" itemName="exnihilo.tin_powdered" number="4" itemMeta="0"/>
+ <itemStack modID="exnihilo" itemName="exnihilo.tin_powdered" number="1" itemMeta="0" chance="0.5"/>
+ <itemStack modID="exnihilo" itemName="exnihilo.tin_powdered" number="1" itemMeta="0" chance="0.05"/>
+ </output>
+ </recipe>
+ <recipe name="silver_gravel_to_crushed" energyCost="500" bonusType="chance_only">
+ <input><itemStack modID="exnihilo" itemName="silver_gravel"/></input>
+ <output>
+ <itemStack modID="exnihilo" itemName="exnihilo.silver_crushed" number="4" itemMeta="0"/>
+ <itemStack modID="exnihilo" itemName="exnihilo.silver_crushed" number="1" itemMeta="0" chance="0.5"/>
+ <itemStack modID="exnihilo" itemName="exnihilo.silver_crushed" number="1" itemMeta="0" chance="0.05"/>
+ </output>
+ </recipe>
+ <recipe name="silver_sand_to_powdered" energyCost="1000" bonusType="chance_only">
+ <input><itemStack modID="exnihilo" itemName="silver_sand"/></input>
+ <output>
+ <itemStack modID="exnihilo" itemName="exnihilo.silver_powdered" number="4" itemMeta="0"/>
+ <itemStack modID="exnihilo" itemName="exnihilo.silver_powdered" number="1" itemMeta="0" chance="0.5"/>
+ <itemStack modID="exnihilo" itemName="exnihilo.silver_powdered" number="1" itemMeta="0" chance="0.05"/>
+ </output>
+ </recipe>
+ <recipe name="lead_gravel_to_crushed" energyCost="500" bonusType="chance_only">
+ <input><itemStack modID="exnihilo" itemName="lead_gravel"/></input>
+ <output>
+ <itemStack modID="exnihilo" itemName="exnihilo.lead_crushed" number="4" itemMeta="0"/>
+ <itemStack modID="exnihilo" itemName="exnihilo.lead_crushed" number="1" itemMeta="0" chance="0.5"/>
+ <itemStack modID="exnihilo" itemName="exnihilo.lead_crushed" number="1" itemMeta="0" chance="0.05"/>
+ </output>
+ </recipe>
+ <recipe name="lead_sand_to_powdered" energyCost="1000" bonusType="chance_only">
+ <input><itemStack modID="exnihilo" itemName="lead_sand"/></input>
+ <output>
+ <itemStack modID="exnihilo" itemName="exnihilo.lead_powdered" number="4" itemMeta="0"/>
+ <itemStack modID="exnihilo" itemName="exnihilo.lead_powdered" number="1" itemMeta="0" chance="0.5"/>
+ <itemStack modID="exnihilo" itemName="exnihilo.lead_powdered" number="1" itemMeta="0" chance="0.05"/>
+ </output>
+ </recipe>
+ <recipe name="nickel_gravel_to_crushed" energyCost="500" bonusType="chance_only">
+ <input><itemStack modID="exnihilo" itemName="nickel_gravel"/></input>
+ <output>
+ <itemStack modID="exnihilo" itemName="exnihilo.nickel_crushed" number="4" itemMeta="0"/>
+ <itemStack modID="exnihilo" itemName="exnihilo.nickel_crushed" number="1" itemMeta="0" chance="0.5"/>
+ <itemStack modID="exnihilo" itemName="exnihilo.nickel_crushed" number="1" itemMeta="0" chance="0.05"/>
+ </output>
+ </recipe>
+ <recipe name="nickel_sand_to_powdered" energyCost="1000" bonusType="chance_only">
+ <input><itemStack modID="exnihilo" itemName="nickel_sand"/></input>
+ <output>
+ <itemStack modID="exnihilo" itemName="exnihilo.nickel_powdered" number="4" itemMeta="0"/>
+ <itemStack modID="exnihilo" itemName="exnihilo.nickel_powdered" number="1" itemMeta="0" chance="0.5"/>
+ <itemStack modID="exnihilo" itemName="exnihilo.nickel_powdered" number="1" itemMeta="0" chance="0.05"/>
+ </output>
+ </recipe>
+ <recipe name="platinum_gravel_to_crushed" energyCost="500" bonusType="chance_only">
+ <input><itemStack modID="exnihilo" itemName="platinum_gravel"/></input>
+ <output>
+ <itemStack modID="exnihilo" itemName="exnihilo.platinum_crushed" number="4" itemMeta="0"/>
+ <itemStack modID="exnihilo" itemName="exnihilo.platinum_crushed" number="1" itemMeta="0" chance="0.5"/>
+ <itemStack modID="exnihilo" itemName="exnihilo.platinum_crushed" number="1" itemMeta="0" chance="0.05"/>
+ </output>
+ </recipe>
+ <recipe name="platinum_sand_to_powdered" energyCost="1000" bonusType="chance_only">
+ <input><itemStack modID="exnihilo" itemName="platinum_sand"/></input>
+ <output>
+ <itemStack modID="exnihilo" itemName="exnihilo.platinum_powdered" number="4" itemMeta="0"/>
+ <itemStack modID="exnihilo" itemName="exnihilo.platinum_powdered" number="1" itemMeta="0" chance="0.5"/>
+ <itemStack modID="exnihilo" itemName="exnihilo.platinum_powdered" number="1" itemMeta="0" chance="0.05"/>
+ </output>
+ </recipe>
+ <recipe name="aluminum_gravel_to_crushed" energyCost="500" bonusType="chance_only">
+ <input><itemStack modID="exnihilo" itemName="aluminum_gravel"/></input>
+ <output>
+ <itemStack modID="exnihilo" itemName="exnihilo.aluminum_crushed" number="4" itemMeta="0"/>
+ <itemStack modID="exnihilo" itemName="exnihilo.aluminum_crushed" number="1" itemMeta="0" chance="0.5"/>
+ <itemStack modID="exnihilo" itemName="exnihilo.aluminum_crushed" number="1" itemMeta="0" chance="0.05"/>
+ </output>
+ </recipe>
+ <recipe name="aluminum_sand_to_powdered" energyCost="1000" bonusType="chance_only">
+ <input><itemStack modID="exnihilo" itemName="aluminum_sand"/></input>
+ <output>
+ <itemStack modID="exnihilo" itemName="exnihilo.aluminum_powdered" number="4" itemMeta="0"/>
+ <itemStack modID="exnihilo" itemName="exnihilo.aluminum_powdered" number="1" itemMeta="0" chance="0.5"/>
+ <itemStack modID="exnihilo" itemName="exnihilo.aluminum_powdered" number="1" itemMeta="0" chance="0.05"/>
+ </output>
+ </recipe>
+ <recipe name="osmium_gravel_to_crushed" energyCost="500" bonusType="chance_only">
+ <input><itemStack modID="exnihilo" itemName="osmium_gravel"/></input>
+ <output>
+ <itemStack modID="exnihilo" itemName="exnihilo.osmium_crushed" number="4" itemMeta="0"/>
+ <itemStack modID="exnihilo" itemName="exnihilo.osmium_crushed" number="1" itemMeta="0" chance="0.5"/>
+ <itemStack modID="exnihilo" itemName="exnihilo.osmium_crushed" number="1" itemMeta="0" chance="0.05"/>
+ </output>
+ </recipe>
+ <recipe name="osmium_sand_to_powdered" energyCost="1000" bonusType="chance_only">
+ <input><itemStack modID="exnihilo" itemName="osmium_sand"/></input>
+ <output>
+ <itemStack modID="exnihilo" itemName="exnihilo.osmium_powdered" number="4" itemMeta="0"/>
+ <itemStack modID="exnihilo" itemName="exnihilo.osmium_powdered" number="1" itemMeta="0" chance="0.5"/>
+ <itemStack modID="exnihilo" itemName="exnihilo.osmium_powdered" number="1" itemMeta="0" chance="0.05"/>
+ </output>
+ </recipe>
+ <!-- dust to dust -->
+ <recipe name="iron_dust_to_dustIron" energyCost="3200" bonusType="chance_only">
+ <input><itemStack modID="exnihilo" itemName="iron_dust"/></input>
+ <output>
+ <itemStack oreDictionary="dustIron" number="2"/>
+ <itemStack oreDictionary="dustNickel" number="1" chance="0.1"/>
+ </output>
+ </recipe>
+ <recipe name="gold_dust_to_dustGold" energyCost="3200" bonusType="chance_only">
+ <input><itemStack modID="exnihilo" itemName="gold_dust"/></input>
+ <output>
+ <itemStack oreDictionary="dustGold" number="2"/>
+ <itemStack oreDictionary="dustCopper" number="1" chance="0.1"/>
+ </output>
+ </recipe>
+ <recipe name="copper_dust_to_dustCopper" energyCost="3200" bonusType="chance_only">
+ <input><itemStack modID="exnihilo" itemName="copper_dust"/></input>
+ <output>
+ <itemStack oreDictionary="dustCopper" number="2"/>
+ <itemStack oreDictionary="dustGold" number="1" chance="0.1"/>
+ </output>
+ </recipe>
+ <recipe name="tin_dust_to_dustTin" energyCost="3200" bonusType="chance_only">
+ <input><itemStack modID="exnihilo" itemName="tin_dust"/></input>
+ <output>
+ <itemStack oreDictionary="dustTin" number="2"/>
+ <itemStack oreDictionary="dustIron" number="1" chance="0.1"/>
+ </output>
+ </recipe>
+ <recipe name="silver_dust_to_dustSilver" energyCost="3200" bonusType="chance_only">
+ <input><itemStack modID="exnihilo" itemName="silver_dust"/></input>
+ <output>
+ <itemStack oreDictionary="dustSilver" number="2"/>
+ <itemStack oreDictionary="dustLead" number="1" chance="0.1"/>
+ </output>
+ </recipe>
+ <recipe name="lead_dust_to_dustLead" energyCost="3200" bonusType="chance_only">
+ <input><itemStack modID="exnihilo" itemName="lead_dust"/></input>
+ <output>
+ <itemStack oreDictionary="dustLead" number="2"/>
+ <itemStack oreDictionary="dustSilver" number="1" chance="0.1"/>
+ </output>
+ </recipe>
+ <recipe name="nickel_dust_to_dustNickel" energyCost="3200" bonusType="chance_only">
+ <input><itemStack modID="exnihilo" itemName="nickel_dust"/></input>
+ <output>
+ <itemStack oreDictionary="dustNickel" number="2"/>
+ <itemStack oreDictionary="dustPlatinum" number="1" chance="0.1"/>
+ </output>
+ </recipe>
+ <recipe name="platinum_dust_to_dustPlatinum" energyCost="3200" bonusType="chance_only">
+ <input><itemStack modID="exnihilo" itemName="platinum_dust"/></input>
+ <output>
+ <itemStack oreDictionary="dustPlatinum" number="2"/>
+ <itemStack oreDictionary="dustPlatinum" number="1" chance="0.1"/>
+ </output>
+ </recipe>
+ <recipe name="aluminum_dust_to_dustAluminum" energyCost="3200" bonusType="chance_only">
+ <input><itemStack modID="exnihilo" itemName="aluminum_dust"/></input>
+ <output>
+ <itemStack oreDictionary="dustAluminum" number="2"/>
+ <itemStack oreDictionary="dustAluminum" number="1" chance="0.1"/>
+ </output>
+ </recipe>
+ <recipe name="osmium_dust_to_dustOsmium" energyCost="3200" bonusType="chance_only">
+ <input><itemStack modID="exnihilo" itemName="osmium_dust"/></input>
+ <output>
+ <itemStack oreDictionary="dustOsmium" number="2"/>
+ <itemStack oreDictionary="dustOsmium" number="1" chance="0.1"/>
+ </output>
+ </recipe>
+ </recipeGroup>
+
+ <grindingBalls>
+ <grindingBall id="Flint" grindingMultiplier="1.2" chanceMultiplier="1.25" powerMultiplier="0.85"
+ durationRF="24000">
+ <itemStack modID="minecraft" itemName="flint" />
+ </grindingBall>
+ <grindingBall id="DarkSteelBall" grindingMultiplier="1.5" chanceMultiplier="2" powerMultiplier="0.7"
+ durationRF="100000">
+ <itemStack modID="EnderIO" itemName="itemMaterial" itemMeta="7" />
+ </grindingBall>
+
+ <excludes>
+ <itemStack modID="minecraft" itemName="glowstone" />
+ <itemStack modID="minecraft" itemName="wool" itemMeta="*" />
+ <itemStack modID="minecraft" itemName="quartz_block" itemMeta="*" />
+ <itemStack modID="minecraft" itemName="quartz_stairs" />
+ <itemStack modID="minecraft" itemName="stone_slab" itemMeta="7" />
+
+ <itemStack modID="minecraft" itemName="quartz" />
+ <itemStack oreDictionary="crystalCertusQuartz" />
+ <itemStack oreDictionary="crystalFluix" />
+ </excludes>
+
+ </grindingBalls>
+
+</SAGMillRecipes>
diff --git a/config/enderio/SAGMillRecipes_User.xml b/config/enderio/SAGMillRecipes_User.xml
new file mode 100644
index 0000000000..82a2bc160c
--- /dev/null
+++ b/config/enderio/SAGMillRecipes_User.xml
@@ -0,0 +1,107 @@
+<!--
+This is the user configurable SAG Mill recipe file. This file will not be modified or removed by EnderIO.
+
+Adding new Recipes:
+For details of how to add a new recipe please see the documentation at the top of SAGMillRecipes_Core.xml.
+
+Removing Recipes:
+To disable all recipes within a group, in this example Forestry, include the following in this file:
+
+<recipeGroup name="Forestry" enabled="false"/>
+
+To disable individual recipes, simply provide an invalid recipe for them:
+
+<recipeGroup name="Applied Energistics">
+ <recipe name="CertusQuartzOre"/>
+</recipeGroup>
+
+To change an existing recipe, just add the recipe to this file using the same recipe group and recipe name as
+found in the core file.
+
+-->
+
+<SAGMillRecipes>
+
+<!-- Disables all recipes in the group 'Vanilla'
+<recipeGroup name="Vanilla" enabled="false"/>
+-->
+
+<!-- Uncomment this block to change the default TE obsidian -> dust recipe to the railcraft recipe.
+ <recipeGroup name="Thermal Expansion">
+
+ <recipe name="Obsidian" energyCost="400">
+ <input>
+ <itemStack itemID="49" />
+ </input>
+ <output>
+ <itemStack modID="Railcraft" itemName="tile.railcraft.cube" itemMeta="4" number="1" />
+ </output>
+ <output>
+ <itemStack oreDictionary="dustObsidian" number="1" chance="0.15" />
+ </output>
+ <output>
+ <itemStack oreDictionary="dustObsidian" number="1" chance="0.025" />
+ </output>
+ </recipe>
+
+</recipeGroup>
+-->
+
+<!-- Disables the glass recipes in the group 'Vanilla'
+<recipeGroup name="Vanilla">
+ <recipe name="Glass"/>
+</recipeGroup>
+-->
+
+
+<!-- Modify a core recipe defination, in this case, make glass give diamonds.
+<recipeGroup name="Vanilla">
+ <recipe name="Glass" energyCost="120">
+ <input>
+ <itemStack itemID="20" />
+ </input>
+ <output>
+ <itemStack itemID="264" />
+ </output>
+ </recipe>
+</recipeGroup>
+-->
+
+<!-- Adding a new recipe to a new group
+<recipeGroup name="CrazyPantsGroup">
+ <recipe name="SolarToGlass" energyCost="120">
+ <input>
+ <itemStack modID="EnderIO" itemName="enderIO:blockSolarPanel"/>
+ </input>
+ <output>
+ <itemStack itemID="20" />
+ </output>
+ </recipe>
+</recipeGroup>
+-->
+
+<!-- Adding a new grinding ball
+ <grindingBalls>
+ <grindingBall id="Diamond" grindingMultiplier="1.5" chanceMultiplier="2" powerMultiplier="0.5" durationRF="50000">
+ <itemStack modID="minecraft" itemName="diamond"/>
+ </grindingBall>
+ </grindingBalls>
+ -->
+
+<!-- - Removing an existing grinding ball:
+ <grindingBalls>
+ <grindingBall id="Flint" remove="true" />
+ </grindingBalls>
+ -->
+
+ <!-- - Modifiying the excludes list: (removing glowstone, adding sand)
+ <grindingBalls>
+ <excludes>
+ <itemStack modID="minecraft" itemName="glowstone" remove="true" />
+ <itemStack modID="minecraft" itemName="sand" />
+ </excludes>
+ </grindingBalls>
+ -->
+
+
+</SAGMillRecipes>
diff --git a/config/enderio/SliceAndSpliceRecipes_Core.xml b/config/enderio/SliceAndSpliceRecipes_Core.xml
new file mode 100644
index 0000000000..f3d9feb248
--- /dev/null
+++ b/config/enderio/SliceAndSpliceRecipes_Core.xml
@@ -0,0 +1,72 @@
+<!--
+
+IMPORTANT:
+ This is the core recipe file. Modifying this file will have no effect.
+ It will be rewritten by EnderIO and all modifications made to it will be lost. To add
+ or modify recipes please use 'SliceAndSpliceRecipes_User.xml'
+
+-->
+
+<SliceAndSpliceRecipes>
+
+ <recipeGroup name="EnderIO">
+
+ <recipe name="Electrode Skull" energyCost="20000">
+ <input>
+ <itemStack modID="EnderIO" itemName="itemAlloy" itemMeta="1" slot="0"/>
+ <itemStack modID="minecraft" itemName="skull" itemMeta="2" slot="1"/>
+ <itemStack modID="EnderIO" itemName="itemAlloy" itemMeta="1" slot="2"/>
+ <itemStack oreDictionary="itemSilicon" slot="3"/>
+ <itemStack modID="EnderIO" itemName="itemBasicCapacitor" itemMeta="0" slot="4"/>
+ <itemStack oreDictionary="itemSilicon" slot="5"/>
+ </input>
+ <output>
+ <itemStack modID="EnderIO" itemName="itemFrankenSkull" itemMeta="0"/>
+ </output>
+ </recipe>
+
+ <recipe name="Controller Skull" energyCost="20000">
+ <input>
+ <itemStack modID="EnderIO" itemName="itemAlloy" itemMeta="7" slot="0"/>
+ <itemStack modID="minecraft" itemName="skull" itemMeta="2" slot="1"/>
+ <itemStack modID="EnderIO" itemName="itemAlloy" itemMeta="7" slot="2"/>
+ <itemStack oreDictionary="itemSilicon" slot="3"/>
+ <itemStack modID="minecraft" itemName="redstone" slot="4"/>
+ <itemStack oreDictionary="itemSilicon" slot="5"/>
+ </input>
+ <output>
+ <itemStack modID="EnderIO" itemName="itemFrankenSkull" itemMeta="1"/>
+ </output>
+ </recipe>
+
+ <recipe name="Tormented Enderman Head" energyCost="20000">
+ <input>
+ <itemStack modID="EnderIO" itemName="itemAlloy" itemMeta="7" slot="0"/>
+ <itemStack modID="EnderIO" itemName="blockEndermanSkull" itemMeta="0" slot="1"/>
+ <itemStack modID="EnderIO" itemName="itemAlloy" itemMeta="7" slot="2"/>
+ <itemStack modID="minecraft" itemName="potion" slot="3"/>
+ <itemStack modID="EnderIO" itemName="itemBasicCapacitor" itemMeta="0" slot="4"/>
+ <itemStack modID="minecraft" itemName="potion" slot="5"/>
+ </input>
+ <output>
+ <itemStack modID="EnderIO" itemName="blockEndermanSkull" itemMeta="2"/>
+ </output>
+ </recipe>
+
+ <recipe name="Ender Resonator" energyCost="20000">
+ <input>
+ <itemStack modID="EnderIO" itemName="itemAlloy" itemMeta="7" slot="0"/>
+ <itemStack modID="EnderIO" itemName="blockEndermanSkull" itemMeta="0" slot="1"/>
+ <itemStack modID="EnderIO" itemName="itemAlloy" itemMeta="7" slot="2"/>
+ <itemStack oreDictionary="itemSilicon" slot="3"/>
+ <itemStack modID="EnderIO" itemName="itemAlloy" itemMeta="2" slot="4"/>
+ <itemStack oreDictionary="itemSilicon" slot="5"/>
+ </input>
+ <output>
+ <itemStack modID="EnderIO" itemName="itemFrankenSkull" itemMeta="3"/>
+ </output>
+ </recipe>
+
+ </recipeGroup>
+
+</SliceAndSpliceRecipes>
diff --git a/config/enderio/SliceAndSpliceRecipes_User.xml b/config/enderio/SliceAndSpliceRecipes_User.xml
new file mode 100644
index 0000000000..baed1110bc
--- /dev/null
+++ b/config/enderio/SliceAndSpliceRecipes_User.xml
@@ -0,0 +1,3 @@
+<SliceAndSpliceRecipes>
+
+</SliceAndSpliceRecipes>
diff --git a/config/enderio/VatRecipes_Core.xml b/config/enderio/VatRecipes_Core.xml
new file mode 100644
index 0000000000..feeb3f4d8e
--- /dev/null
+++ b/config/enderio/VatRecipes_Core.xml
@@ -0,0 +1,113 @@
+<!--
+
+IMPORTANT:
+ This is the core recipe file. Modifying this file will have no effect.
+ It will be rewritten by EnderIO and all modifications made to it will be lost. To add
+ or modify recipes please use 'VatRecipes_User.xml'
+
+Vat recipes take two item inputs and one fluid input, and output a fluid.
+The various values are calulcated like this:
+
+For:
+ingredient multiplier (IM) = slot0.multiplier * slot1.multiplier;
+
+input fluid volume (mb) = IM * 1000
+
+Produce:
+output fluid volume (mb) = IM * inputFluid.multiplier * 1000.
+
+The vat always uses 1 MJ per tick, so energy cost also equates to duration.
+
+Recipes can also be added using forge IMC messages. For example, in the init method of a mod:
+String recipe =
+ "<recipeGroup name=\"cheaty\">" +
+ "<recipe name=\"foo\" energyCost=\"2400\">" +
+ "<input>" +
+ "<itemStack modID=\"minecraft\" itemName=\"dirt\" slot=\"0\"/>" +
+ "<fluidStack name=\"water\" multiplier=\"1\"/>" +
+ "</input>" +
+ "<output>" +
+ "<fluidStack name=\"lava\"/>" +
+ "</output>" +
+ "</recipe>" +
+ "</recipeGroup>";
+FMLInterModComms.sendMessage("EnderIO", "recipe:vat", recipe);
+
+ -->
+<VatRecipes>
+
+ <recipeGroup name="EnderIO"> <!-- Required for EnderIO to function correctly. -->
+
+ <recipe name="Nutrient Distilation" energyCost="10000">
+ <input>
+ <itemStack modID="Thaumcraft" itemName="ItemZombieBrain" slot="0" multiplier="2"/>
+ <itemStack oreDictionary="itemSkull" slot="0" multiplier="2"/>
+ <itemStack modID="minecraft" itemName="rotten_flesh" slot="0" multiplier="1.5"/>
+ <itemStack modID="minecraft" itemName="chicken" slot="0" multiplier="0.75"/>
+ <itemStack modID="minecraft" itemName="beef" slot="0" multiplier="0.75"/>
+ <itemStack modID="minecraft" itemName="porkchop" slot="0" multiplier="0.75"/>
+
+ <itemStack modID="minecraft" itemName="sugar" slot="1" multiplier="1"/>
+ <itemStack modID="minecraft" itemName="brown_mushroom" slot="1" multiplier="1.5"/>
+ <itemStack modID="minecraft" itemName="red_mushroom" slot="1" multiplier="1.5"/>
+ <itemStack modID="minecraft" itemName="nether_wart" slot="1" multiplier="1.5"/>
+ <itemStack modID="minecraft" itemName="fermented_spider_eye" slot="1" multiplier="2"/>
+
+
+ <fluidStack name="water" multiplier="0.25"/>
+ </input>
+ <output>
+ <fluidStack name="nutrient_distillation"/>
+ </output>
+
+ </recipe>
+
+
+ <recipe name="Hootch" energyCost="10000">
+ <input>
+
+ <itemStack modID="minecraft" itemName="poisonous_potato" slot="0" multiplier="8"/>
+ <itemStack modID="minecraft" itemName="potato" slot="0" multiplier="4"/>
+ <itemStack modID="minecraft" itemName="apple" slot="0" multiplier="3.5"/>
+ <itemStack modID="minecraft" itemName="wheat" slot="0" multiplier="3"/>
+ <itemStack modID="minecraft" itemName="wheat_seeds" slot="0" multiplier="2"/>
+
+ <itemStack modID="minecraft" itemName="sugar" slot="1" multiplier="1"/>
+
+ <fluidStack name="water" multiplier="0.25"/>
+
+ </input>
+ <output>
+ <fluidStack name="hootch"/>
+ </output>
+
+ </recipe>
+
+ <recipe name="Rocket Fuel" energyCost="10000">
+ <input>
+ <itemStack modID="minecraft" itemName="gunpowder" slot="0" multiplier="1"/>
+ <itemStack modID="minecraft" itemName="redstone" slot="1" multiplier="1"/>
+ <fluidStack name="hootch" multiplier="1"/>
+ </input>
+ <output>
+ <fluidStack name="rocket_fuel"/>
+ </output>
+
+ </recipe>
+
+ <recipe name="Fire Water" energyCost="10000">
+ <input>
+ <itemStack modID="minecraft" itemName="blaze_powder" slot="0" multiplier="1"/>
+ <itemStack modID="minecraft" itemName="redstone" slot="1" multiplier="1"/>
+ <fluidStack name="hootch" multiplier="1"/>
+ </input>
+ <output>
+ <fluidStack name="fire_water"/>
+ </output>
+
+ </recipe>
+
+ </recipeGroup>
+
+
+</VatRecipes>
diff --git a/config/enderio/VatRecipes_User.xml b/config/enderio/VatRecipes_User.xml
new file mode 100644
index 0000000000..715fca5893
--- /dev/null
+++ b/config/enderio/VatRecipes_User.xml
@@ -0,0 +1,3 @@
+<VatRecipes>
+
+</VatRecipes>
diff --git a/config/forge.cfg b/config/forge.cfg
new file mode 100644
index 0000000000..976d1345d1
--- /dev/null
+++ b/config/forge.cfg
@@ -0,0 +1,57 @@
+# Configuration file
+
+general {
+ # Set to true to disable Forge's version check mechanics. Forge queries a small json file on our server for version information. For more details see the ForgeVersion class in our github.
+ B:disableVersionCheck=false
+
+ # Controls the number threshold at which Packet51 is preferred over Packet52, default and minimum 64, maximum 1024
+ I:clumpingThreshold=64
+
+ # Set to true to enable the post initialization sorting of crafting recipes using Forge's sorter. May cause desyncing on conflicting recipies. MUST RESTART MINECRAFT IF CHANGED FROM THE CONFIG GUI.
+ B:sortRecipies=true
+
+ # Set this to true to remove any Entity that throws an error in its update method instead of closing the server and reporting a crash log. BE WARNED THIS COULD SCREW UP EVERYTHING USE SPARINGLY WE ARE NOT RESPONSIBLE FOR DAMAGES.
+ B:removeErroringEntities=false
+
+ # Set this to true to remove any TileEntity that throws an error in its update method instead of closing the server and reporting a crash log. BE WARNED THIS COULD SCREW UP EVERYTHING USE SPARINGLY WE ARE NOT RESPONSIBLE FOR DAMAGES.
+ B:removeErroringTileEntities=false
+
+ # Set this to true to check the entire entity's collision bounding box for ladders instead of just the block they are in. Causes noticable differences in mechanics so default is vanilla behavior. Default: false
+ B:fullBoundingBoxLadders=false
+
+ # Control the range of sky blending for colored skies in biomes.
+ I:biomeSkyBlendRange <
+ 2
+ 4
+ 6
+ 8
+ 10
+ 12
+ 14
+ 16
+ 18
+ 20
+ 22
+ 24
+ 26
+ 28
+ 30
+ 32
+ 34
+ >
+
+ # Base zombie summoning spawn chance. Allows changing the bonus zombie summoning mechanic.
+ D:zombieBaseSummonChance=0.1
+
+ # Chance that a zombie (or subclass) is a baby. Allows changing the zombie spawning mechanic.
+ D:zombieBabyChance=0.05
+
+ # The spawn fuzz when a player respawns in the world, this is controlable by WorldType, this config option is for the default overworld.
+ I:defaultSpawnFuzz=20
+
+ # If the overworld has ANY spawn fuzz at all. If not, the spawn will always be the exact same location.
+ B:spawnHasFuzz=true
+ B:enableGlobalConfig=false
+}
+
+
diff --git a/config/forgeChunkLoading.cfg b/config/forgeChunkLoading.cfg
new file mode 100644
index 0000000000..3051bdffab
--- /dev/null
+++ b/config/forgeChunkLoading.cfg
@@ -0,0 +1,47 @@
+# Configuration file
+
+##########################################################################################################
+# Forge
+#--------------------------------------------------------------------------------------------------------#
+# Sample mod specific control section.
+# Copy this section and rename the with the modid for the mod you wish to override.
+# A value of zero in either entry effectively disables any chunkloading capabilities
+# for that mod
+##########################################################################################################
+
+Forge {
+ # Maximum chunks per ticket for the mod.
+ I:maximumChunksPerTicket=25
+
+ # Maximum ticket count for the mod. Zero disables chunkloading capabilities.
+ I:maximumTicketCount=200
+}
+
+
+##########################################################################################################
+# defaults
+#--------------------------------------------------------------------------------------------------------#
+# Default configuration for forge chunk loading control
+##########################################################################################################
+
+defaults {
+ # Are mod overrides enabled?
+ B:enabled=true
+
+ # The default maximum number of chunks a mod can force, per ticket,
+ # for a mod without an override. This is the maximum number of chunks a single ticket can force.
+ I:maximumChunksPerTicket=25
+
+ # The default maximum ticket count for a mod which does not have an override
+ # in this file. This is the number of chunk loading requests a mod is allowed to make.
+ I:maximumTicketCount=200
+
+ # The number of tickets a player can be assigned instead of a mod. This is shared across all mods and it is up to the mods to use it.
+ I:playerTicketCount=500
+
+ # Unloaded chunks can first be kept in a dormant cache for quicker
+ # loading times. Specify the size (in chunks) of that cache here
+ I:dormantChunkCacheSize=0
+}
+
+
diff --git a/config/splash.properties b/config/splash.properties
new file mode 100644
index 0000000000..d5e5ffaaaf
--- /dev/null
+++ b/config/splash.properties
@@ -0,0 +1,14 @@
+#Splash screen properties
+#Tue Nov 24 13:39:38 AEST 2015
+logoTexture=textures/gui/title/mojang.png
+background=0xFFFFFF
+font=0x0
+barBackground=0xFFFFFF
+barBorder=0xC0C0C0
+rotate=false
+bar=0xCB3D35
+enabled=true
+resourcePackPath=resources
+logoOffset=0
+forgeTexture=fml\:textures/gui/forge.gif
+fontTexture=textures/font/ascii.png
diff --git a/crash-reports/crash-2015-09-03_01.03.17-client.txt b/crash-reports/crash-2015-09-03_01.03.17-client.txt
new file mode 100644
index 0000000000..82860a9fb2
--- /dev/null
+++ b/crash-reports/crash-2015-09-03_01.03.17-client.txt
@@ -0,0 +1,137 @@
+---- Minecraft Crash Report ----
+// Would you like a cupcake?
+
+Time: 3/09/15 1:03 AM
+Description: Initializing game
+
+java.lang.NullPointerException: Initializing game
+ at miscutil.item.TMItem.registerItem(TMItem.java:63)
+ at miscutil.item.TMItem.mainRegistry(TMItem.java:16)
+ at miscutil.main.MainRegistry.PreLoad(MainRegistry.java:36)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+ at java.lang.reflect.Method.invoke(Unknown Source)
+ at cpw.mods.fml.common.FMLModContainer.handleModStateEvent(FMLModContainer.java:532)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+ at java.lang.reflect.Method.invoke(Unknown Source)
+ at com.google.common.eventbus.EventSubscriber.handleEvent(EventSubscriber.java:74)
+ at com.google.common.eventbus.SynchronizedEventSubscriber.handleEvent(SynchronizedEventSubscriber.java:47)
+ at com.google.common.eventbus.EventBus.dispatch(EventBus.java:322)
+ at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:304)
+ at com.google.common.eventbus.EventBus.post(EventBus.java:275)
+ at cpw.mods.fml.common.LoadController.sendEventToModContainer(LoadController.java:212)
+ at cpw.mods.fml.common.LoadController.propogateStateMessage(LoadController.java:190)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+ at java.lang.reflect.Method.invoke(Unknown Source)
+ at com.google.common.eventbus.EventSubscriber.handleEvent(EventSubscriber.java:74)
+ at com.google.common.eventbus.SynchronizedEventSubscriber.handleEvent(SynchronizedEventSubscriber.java:47)
+ at com.google.common.eventbus.EventBus.dispatch(EventBus.java:322)
+ at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:304)
+ at com.google.common.eventbus.EventBus.post(EventBus.java:275)
+ at cpw.mods.fml.common.LoadController.distributeStateMessage(LoadController.java:119)
+ at cpw.mods.fml.common.Loader.preinitializeMods(Loader.java:556)
+ at cpw.mods.fml.client.FMLClientHandler.beginMinecraftLoading(FMLClientHandler.java:243)
+ at net.minecraft.client.Minecraft.startGame(Minecraft.java:522)
+ at net.minecraft.client.Minecraft.run(Minecraft.java:942)
+ at net.minecraft.client.main.Main.main(Main.java:164)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+ at java.lang.reflect.Method.invoke(Unknown Source)
+ at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)
+ at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
+ at net.minecraftforge.gradle.GradleStartCommon.launch(Unknown Source)
+ at GradleStart.main(Unknown Source)
+
+
+A detailed walkthrough of the error, its code path and all known details is as follows:
+---------------------------------------------------------------------------------------
+
+-- Head --
+Stacktrace:
+ at miscutil.item.TMItem.registerItem(TMItem.java:63)
+ at miscutil.item.TMItem.mainRegistry(TMItem.java:16)
+ at miscutil.main.MainRegistry.PreLoad(MainRegistry.java:36)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+ at java.lang.reflect.Method.invoke(Unknown Source)
+ at cpw.mods.fml.common.FMLModContainer.handleModStateEvent(FMLModContainer.java:532)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+ at java.lang.reflect.Method.invoke(Unknown Source)
+ at com.google.common.eventbus.EventSubscriber.handleEvent(EventSubscriber.java:74)
+ at com.google.common.eventbus.SynchronizedEventSubscriber.handleEvent(SynchronizedEventSubscriber.java:47)
+ at com.google.common.eventbus.EventBus.dispatch(EventBus.java:322)
+ at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:304)
+ at com.google.common.eventbus.EventBus.post(EventBus.java:275)
+ at cpw.mods.fml.common.LoadController.sendEventToModContainer(LoadController.java:212)
+ at cpw.mods.fml.common.LoadController.propogateStateMessage(LoadController.java:190)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+ at java.lang.reflect.Method.invoke(Unknown Source)
+ at com.google.common.eventbus.EventSubscriber.handleEvent(EventSubscriber.java:74)
+ at com.google.common.eventbus.SynchronizedEventSubscriber.handleEvent(SynchronizedEventSubscriber.java:47)
+ at com.google.common.eventbus.EventBus.dispatch(EventBus.java:322)
+ at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:304)
+ at com.google.common.eventbus.EventBus.post(EventBus.java:275)
+ at cpw.mods.fml.common.LoadController.distributeStateMessage(LoadController.java:119)
+ at cpw.mods.fml.common.Loader.preinitializeMods(Loader.java:556)
+ at cpw.mods.fml.client.FMLClientHandler.beginMinecraftLoading(FMLClientHandler.java:243)
+ at net.minecraft.client.Minecraft.startGame(Minecraft.java:522)
+
+-- Initialization --
+Details:
+Stacktrace:
+ at net.minecraft.client.Minecraft.run(Minecraft.java:942)
+ at net.minecraft.client.main.Main.main(Main.java:164)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+ at java.lang.reflect.Method.invoke(Unknown Source)
+ at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)
+ at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
+ at net.minecraftforge.gradle.GradleStartCommon.launch(Unknown Source)
+ at GradleStart.main(Unknown Source)
+
+-- System Details --
+Details:
+ Minecraft Version: 1.7.10
+ Operating System: Windows 7 (amd64) version 6.1
+ Java Version: 1.8.0_60, Oracle Corporation
+ Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
+ Memory: 132003840 bytes (125 MB) / 687341568 bytes (655 MB) up to 3804758016 bytes (3628 MB)
+ JVM Flags: 0 total;
+ AABB Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
+ IntCache: cache: 0, tcache: 0, allocated: 0, tallocated: 0
+ FML: MCP v9.05 FML v7.10.99.99 Minecraft Forge 10.13.4.1448 6 mods loaded, 6 mods active
+ States: 'U' = Unloaded 'L' = Loaded 'C' = Constructed 'H' = Pre-initialized 'I' = Initialized 'J' = Post-initialized 'A' = Available 'D' = Disabled 'E' = Errored
+ UCH mcp{9.05} [Minecraft Coder Pack] (minecraft.jar)
+ UCH FML{7.10.99.99} [Forge Mod Loader] (forgeSrc-1.7.10-10.13.4.1448-1.7.10.jar)
+ UCH Forge{10.13.4.1448} [Minecraft Forge] (forgeSrc-1.7.10-10.13.4.1448-1.7.10.jar)
+ UCH CodeChickenCore{1.0.4.29} [CodeChicken Core] (minecraft.jar)
+ UCE tm{0.01 ALPHA} [BloodSteelorial mod] (bin)
+ UCH miscutils{0.2.2} [miscutils] (bin)
+ GL info: ' Vendor: 'NVIDIA Corporation' Version: '4.5.0 NVIDIA 347.52' Renderer: 'GeForce GTX 770/PCIe/SSE2'
+ Launched Version: 1.7.10
+ LWJGL: 2.9.1
+ OpenGL: GeForce GTX 770/PCIe/SSE2 GL version 4.5.0 NVIDIA 347.52, NVIDIA Corporation
+ GL Caps: Using GL 1.3 multitexturing.
+Using framebuffer objects because OpenGL 3.0 is supported and separate blending is supported.
+Anisotropic filtering is supported and maximum anisotropy is 16.
+Shaders are available because OpenGL 2.1 is supported.
+
+ Is Modded: Definitely; Client brand changed to 'fml,forge'
+ Type: Client (map_client.txt)
+ Resource Packs: []
+ Current Language: English (US)
+ Profiler Position: N/A (disabled)
+ Vec3 Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
+ Anisotropic Filtering: Off (1) \ No newline at end of file
diff --git a/crash-reports/crash-2015-09-03_02.31.22-client.txt b/crash-reports/crash-2015-09-03_02.31.22-client.txt
new file mode 100644
index 0000000000..d0fcccba90
--- /dev/null
+++ b/crash-reports/crash-2015-09-03_02.31.22-client.txt
@@ -0,0 +1,138 @@
+---- Minecraft Crash Report ----
+// I blame Dinnerbone.
+
+Time: 3/09/15 2:31 AM
+Description: Initializing game
+
+java.lang.NullPointerException: Initializing game
+ at miscutil.item.ModItems.init(ModItems.java:111)
+ at miscutil.CommonProxy.preInit(CommonProxy.java:12)
+ at miscutil.proxy.ClientProxy.preInit(ClientProxy.java:13)
+ at miscutil.MiscUtils.preInit(MiscUtils.java:44)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+ at java.lang.reflect.Method.invoke(Unknown Source)
+ at cpw.mods.fml.common.FMLModContainer.handleModStateEvent(FMLModContainer.java:532)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+ at java.lang.reflect.Method.invoke(Unknown Source)
+ at com.google.common.eventbus.EventSubscriber.handleEvent(EventSubscriber.java:74)
+ at com.google.common.eventbus.SynchronizedEventSubscriber.handleEvent(SynchronizedEventSubscriber.java:47)
+ at com.google.common.eventbus.EventBus.dispatch(EventBus.java:322)
+ at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:304)
+ at com.google.common.eventbus.EventBus.post(EventBus.java:275)
+ at cpw.mods.fml.common.LoadController.sendEventToModContainer(LoadController.java:212)
+ at cpw.mods.fml.common.LoadController.propogateStateMessage(LoadController.java:190)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+ at java.lang.reflect.Method.invoke(Unknown Source)
+ at com.google.common.eventbus.EventSubscriber.handleEvent(EventSubscriber.java:74)
+ at com.google.common.eventbus.SynchronizedEventSubscriber.handleEvent(SynchronizedEventSubscriber.java:47)
+ at com.google.common.eventbus.EventBus.dispatch(EventBus.java:322)
+ at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:304)
+ at com.google.common.eventbus.EventBus.post(EventBus.java:275)
+ at cpw.mods.fml.common.LoadController.distributeStateMessage(LoadController.java:119)
+ at cpw.mods.fml.common.Loader.preinitializeMods(Loader.java:556)
+ at cpw.mods.fml.client.FMLClientHandler.beginMinecraftLoading(FMLClientHandler.java:243)
+ at net.minecraft.client.Minecraft.startGame(Minecraft.java:522)
+ at net.minecraft.client.Minecraft.run(Minecraft.java:942)
+ at net.minecraft.client.main.Main.main(Main.java:164)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+ at java.lang.reflect.Method.invoke(Unknown Source)
+ at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)
+ at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
+ at net.minecraftforge.gradle.GradleStartCommon.launch(Unknown Source)
+ at GradleStart.main(Unknown Source)
+
+
+A detailed walkthrough of the error, its code path and all known details is as follows:
+---------------------------------------------------------------------------------------
+
+-- Head --
+Stacktrace:
+ at miscutil.item.ModItems.init(ModItems.java:111)
+ at miscutil.CommonProxy.preInit(CommonProxy.java:12)
+ at miscutil.proxy.ClientProxy.preInit(ClientProxy.java:13)
+ at miscutil.MiscUtils.preInit(MiscUtils.java:44)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+ at java.lang.reflect.Method.invoke(Unknown Source)
+ at cpw.mods.fml.common.FMLModContainer.handleModStateEvent(FMLModContainer.java:532)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+ at java.lang.reflect.Method.invoke(Unknown Source)
+ at com.google.common.eventbus.EventSubscriber.handleEvent(EventSubscriber.java:74)
+ at com.google.common.eventbus.SynchronizedEventSubscriber.handleEvent(SynchronizedEventSubscriber.java:47)
+ at com.google.common.eventbus.EventBus.dispatch(EventBus.java:322)
+ at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:304)
+ at com.google.common.eventbus.EventBus.post(EventBus.java:275)
+ at cpw.mods.fml.common.LoadController.sendEventToModContainer(LoadController.java:212)
+ at cpw.mods.fml.common.LoadController.propogateStateMessage(LoadController.java:190)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+ at java.lang.reflect.Method.invoke(Unknown Source)
+ at com.google.common.eventbus.EventSubscriber.handleEvent(EventSubscriber.java:74)
+ at com.google.common.eventbus.SynchronizedEventSubscriber.handleEvent(SynchronizedEventSubscriber.java:47)
+ at com.google.common.eventbus.EventBus.dispatch(EventBus.java:322)
+ at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:304)
+ at com.google.common.eventbus.EventBus.post(EventBus.java:275)
+ at cpw.mods.fml.common.LoadController.distributeStateMessage(LoadController.java:119)
+ at cpw.mods.fml.common.Loader.preinitializeMods(Loader.java:556)
+ at cpw.mods.fml.client.FMLClientHandler.beginMinecraftLoading(FMLClientHandler.java:243)
+ at net.minecraft.client.Minecraft.startGame(Minecraft.java:522)
+
+-- Initialization --
+Details:
+Stacktrace:
+ at net.minecraft.client.Minecraft.run(Minecraft.java:942)
+ at net.minecraft.client.main.Main.main(Main.java:164)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+ at java.lang.reflect.Method.invoke(Unknown Source)
+ at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)
+ at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
+ at net.minecraftforge.gradle.GradleStartCommon.launch(Unknown Source)
+ at GradleStart.main(Unknown Source)
+
+-- System Details --
+Details:
+ Minecraft Version: 1.7.10
+ Operating System: Windows 7 (amd64) version 6.1
+ Java Version: 1.8.0_60, Oracle Corporation
+ Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
+ Memory: 173965064 bytes (165 MB) / 681574400 bytes (650 MB) up to 3804758016 bytes (3628 MB)
+ JVM Flags: 0 total;
+ AABB Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
+ IntCache: cache: 0, tcache: 0, allocated: 0, tallocated: 0
+ FML: MCP v9.05 FML v7.10.99.99 Minecraft Forge 10.13.4.1448 5 mods loaded, 5 mods active
+ States: 'U' = Unloaded 'L' = Loaded 'C' = Constructed 'H' = Pre-initialized 'I' = Initialized 'J' = Post-initialized 'A' = Available 'D' = Disabled 'E' = Errored
+ UCH mcp{9.05} [Minecraft Coder Pack] (minecraft.jar)
+ UCH FML{7.10.99.99} [Forge Mod Loader] (forgeSrc-1.7.10-10.13.4.1448-1.7.10.jar)
+ UCH Forge{10.13.4.1448} [Minecraft Forge] (forgeSrc-1.7.10-10.13.4.1448-1.7.10.jar)
+ UCH CodeChickenCore{1.0.4.29} [CodeChicken Core] (minecraft.jar)
+ UCE miscutils{0.2.2} [miscutils] (bin)
+ GL info: ' Vendor: 'NVIDIA Corporation' Version: '4.5.0 NVIDIA 347.52' Renderer: 'GeForce GTX 770/PCIe/SSE2'
+ Launched Version: 1.7.10
+ LWJGL: 2.9.1
+ OpenGL: GeForce GTX 770/PCIe/SSE2 GL version 4.5.0 NVIDIA 347.52, NVIDIA Corporation
+ GL Caps: Using GL 1.3 multitexturing.
+Using framebuffer objects because OpenGL 3.0 is supported and separate blending is supported.
+Anisotropic filtering is supported and maximum anisotropy is 16.
+Shaders are available because OpenGL 2.1 is supported.
+
+ Is Modded: Definitely; Client brand changed to 'fml,forge'
+ Type: Client (map_client.txt)
+ Resource Packs: []
+ Current Language: English (US)
+ Profiler Position: N/A (disabled)
+ Vec3 Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
+ Anisotropic Filtering: Off (1) \ No newline at end of file
diff --git a/crash-reports/crash-2015-09-03_03.55.55-client.txt b/crash-reports/crash-2015-09-03_03.55.55-client.txt
new file mode 100644
index 0000000000..2f46efecd5
--- /dev/null
+++ b/crash-reports/crash-2015-09-03_03.55.55-client.txt
@@ -0,0 +1,142 @@
+---- Minecraft Crash Report ----
+// Everything's going to plan. No, really, that was supposed to happen.
+
+Time: 3/09/15 3:55 AM
+Description: Initializing game
+
+java.lang.NullPointerException: Initializing game
+ at cpw.mods.fml.common.registry.EntityRegistry.doModEntityRegistration(EntityRegistry.java:171)
+ at cpw.mods.fml.common.registry.EntityRegistry.registerModEntity(EntityRegistry.java:150)
+ at miscutil.entity.TMEntity.createEntity(TMEntity.java:24)
+ at miscutil.entity.TMEntity.registerEntity(TMEntity.java:14)
+ at miscutil.entity.TMEntity.mainRegistry(TMEntity.java:10)
+ at miscutil.MiscUtils.preInit(MiscUtils.java:47)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+ at java.lang.reflect.Method.invoke(Unknown Source)
+ at cpw.mods.fml.common.FMLModContainer.handleModStateEvent(FMLModContainer.java:532)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+ at java.lang.reflect.Method.invoke(Unknown Source)
+ at com.google.common.eventbus.EventSubscriber.handleEvent(EventSubscriber.java:74)
+ at com.google.common.eventbus.SynchronizedEventSubscriber.handleEvent(SynchronizedEventSubscriber.java:47)
+ at com.google.common.eventbus.EventBus.dispatch(EventBus.java:322)
+ at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:304)
+ at com.google.common.eventbus.EventBus.post(EventBus.java:275)
+ at cpw.mods.fml.common.LoadController.sendEventToModContainer(LoadController.java:212)
+ at cpw.mods.fml.common.LoadController.propogateStateMessage(LoadController.java:190)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+ at java.lang.reflect.Method.invoke(Unknown Source)
+ at com.google.common.eventbus.EventSubscriber.handleEvent(EventSubscriber.java:74)
+ at com.google.common.eventbus.SynchronizedEventSubscriber.handleEvent(SynchronizedEventSubscriber.java:47)
+ at com.google.common.eventbus.EventBus.dispatch(EventBus.java:322)
+ at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:304)
+ at com.google.common.eventbus.EventBus.post(EventBus.java:275)
+ at cpw.mods.fml.common.LoadController.distributeStateMessage(LoadController.java:119)
+ at cpw.mods.fml.common.Loader.preinitializeMods(Loader.java:556)
+ at cpw.mods.fml.client.FMLClientHandler.beginMinecraftLoading(FMLClientHandler.java:243)
+ at net.minecraft.client.Minecraft.startGame(Minecraft.java:522)
+ at net.minecraft.client.Minecraft.run(Minecraft.java:942)
+ at net.minecraft.client.main.Main.main(Main.java:164)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+ at java.lang.reflect.Method.invoke(Unknown Source)
+ at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)
+ at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
+ at net.minecraftforge.gradle.GradleStartCommon.launch(Unknown Source)
+ at GradleStart.main(Unknown Source)
+
+
+A detailed walkthrough of the error, its code path and all known details is as follows:
+---------------------------------------------------------------------------------------
+
+-- Head --
+Stacktrace:
+ at cpw.mods.fml.common.registry.EntityRegistry.doModEntityRegistration(EntityRegistry.java:171)
+ at cpw.mods.fml.common.registry.EntityRegistry.registerModEntity(EntityRegistry.java:150)
+ at miscutil.entity.TMEntity.createEntity(TMEntity.java:24)
+ at miscutil.entity.TMEntity.registerEntity(TMEntity.java:14)
+ at miscutil.entity.TMEntity.mainRegistry(TMEntity.java:10)
+ at miscutil.MiscUtils.preInit(MiscUtils.java:47)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+ at java.lang.reflect.Method.invoke(Unknown Source)
+ at cpw.mods.fml.common.FMLModContainer.handleModStateEvent(FMLModContainer.java:532)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+ at java.lang.reflect.Method.invoke(Unknown Source)
+ at com.google.common.eventbus.EventSubscriber.handleEvent(EventSubscriber.java:74)
+ at com.google.common.eventbus.SynchronizedEventSubscriber.handleEvent(SynchronizedEventSubscriber.java:47)
+ at com.google.common.eventbus.EventBus.dispatch(EventBus.java:322)
+ at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:304)
+ at com.google.common.eventbus.EventBus.post(EventBus.java:275)
+ at cpw.mods.fml.common.LoadController.sendEventToModContainer(LoadController.java:212)
+ at cpw.mods.fml.common.LoadController.propogateStateMessage(LoadController.java:190)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+ at java.lang.reflect.Method.invoke(Unknown Source)
+ at com.google.common.eventbus.EventSubscriber.handleEvent(EventSubscriber.java:74)
+ at com.google.common.eventbus.SynchronizedEventSubscriber.handleEvent(SynchronizedEventSubscriber.java:47)
+ at com.google.common.eventbus.EventBus.dispatch(EventBus.java:322)
+ at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:304)
+ at com.google.common.eventbus.EventBus.post(EventBus.java:275)
+ at cpw.mods.fml.common.LoadController.distributeStateMessage(LoadController.java:119)
+ at cpw.mods.fml.common.Loader.preinitializeMods(Loader.java:556)
+ at cpw.mods.fml.client.FMLClientHandler.beginMinecraftLoading(FMLClientHandler.java:243)
+ at net.minecraft.client.Minecraft.startGame(Minecraft.java:522)
+
+-- Initialization --
+Details:
+Stacktrace:
+ at net.minecraft.client.Minecraft.run(Minecraft.java:942)
+ at net.minecraft.client.main.Main.main(Main.java:164)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+ at java.lang.reflect.Method.invoke(Unknown Source)
+ at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)
+ at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
+ at net.minecraftforge.gradle.GradleStartCommon.launch(Unknown Source)
+ at GradleStart.main(Unknown Source)
+
+-- System Details --
+Details:
+ Minecraft Version: 1.7.10
+ Operating System: Windows 7 (amd64) version 6.1
+ Java Version: 1.8.0_60, Oracle Corporation
+ Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
+ Memory: 132911648 bytes (126 MB) / 683671552 bytes (652 MB) up to 3804758016 bytes (3628 MB)
+ JVM Flags: 0 total;
+ AABB Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
+ IntCache: cache: 0, tcache: 0, allocated: 0, tallocated: 0
+ FML: MCP v9.05 FML v7.10.99.99 Minecraft Forge 10.13.4.1448 5 mods loaded, 5 mods active
+ States: 'U' = Unloaded 'L' = Loaded 'C' = Constructed 'H' = Pre-initialized 'I' = Initialized 'J' = Post-initialized 'A' = Available 'D' = Disabled 'E' = Errored
+ UCH mcp{9.05} [Minecraft Coder Pack] (minecraft.jar)
+ UCH FML{7.10.99.99} [Forge Mod Loader] (forgeSrc-1.7.10-10.13.4.1448-1.7.10.jar)
+ UCH Forge{10.13.4.1448} [Minecraft Forge] (forgeSrc-1.7.10-10.13.4.1448-1.7.10.jar)
+ UCH CodeChickenCore{1.0.4.29} [CodeChicken Core] (minecraft.jar)
+ UCE miscutils{0.2.2} [miscutils] (bin)
+ GL info: ' Vendor: 'NVIDIA Corporation' Version: '4.5.0 NVIDIA 347.52' Renderer: 'GeForce GTX 770/PCIe/SSE2'
+ Launched Version: 1.7.10
+ LWJGL: 2.9.1
+ OpenGL: GeForce GTX 770/PCIe/SSE2 GL version 4.5.0 NVIDIA 347.52, NVIDIA Corporation
+ GL Caps: Using GL 1.3 multitexturing.
+Using framebuffer objects because OpenGL 3.0 is supported and separate blending is supported.
+Anisotropic filtering is supported and maximum anisotropy is 16.
+Shaders are available because OpenGL 2.1 is supported.
+
+ Is Modded: Definitely; Client brand changed to 'fml,forge'
+ Type: Client (map_client.txt)
+ Resource Packs: []
+ Current Language: English (US)
+ Profiler Position: N/A (disabled)
+ Vec3 Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
+ Anisotropic Filtering: Off (1) \ No newline at end of file
diff --git a/crash-reports/crash-2015-09-03_04.00.57-client.txt b/crash-reports/crash-2015-09-03_04.00.57-client.txt
new file mode 100644
index 0000000000..720aa02df6
--- /dev/null
+++ b/crash-reports/crash-2015-09-03_04.00.57-client.txt
@@ -0,0 +1,142 @@
+---- Minecraft Crash Report ----
+// I just don't know what went wrong :(
+
+Time: 3/09/15 4:00 AM
+Description: Initializing game
+
+java.lang.NullPointerException: Initializing game
+ at cpw.mods.fml.common.registry.EntityRegistry.doModEntityRegistration(EntityRegistry.java:171)
+ at cpw.mods.fml.common.registry.EntityRegistry.registerModEntity(EntityRegistry.java:150)
+ at miscutil.entity.TMEntity.createEntity(TMEntity.java:24)
+ at miscutil.entity.TMEntity.registerEntity(TMEntity.java:14)
+ at miscutil.entity.TMEntity.mainRegistry(TMEntity.java:10)
+ at miscutil.MiscUtils.preInit(MiscUtils.java:49)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+ at java.lang.reflect.Method.invoke(Unknown Source)
+ at cpw.mods.fml.common.FMLModContainer.handleModStateEvent(FMLModContainer.java:532)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+ at java.lang.reflect.Method.invoke(Unknown Source)
+ at com.google.common.eventbus.EventSubscriber.handleEvent(EventSubscriber.java:74)
+ at com.google.common.eventbus.SynchronizedEventSubscriber.handleEvent(SynchronizedEventSubscriber.java:47)
+ at com.google.common.eventbus.EventBus.dispatch(EventBus.java:322)
+ at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:304)
+ at com.google.common.eventbus.EventBus.post(EventBus.java:275)
+ at cpw.mods.fml.common.LoadController.sendEventToModContainer(LoadController.java:212)
+ at cpw.mods.fml.common.LoadController.propogateStateMessage(LoadController.java:190)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+ at java.lang.reflect.Method.invoke(Unknown Source)
+ at com.google.common.eventbus.EventSubscriber.handleEvent(EventSubscriber.java:74)
+ at com.google.common.eventbus.SynchronizedEventSubscriber.handleEvent(SynchronizedEventSubscriber.java:47)
+ at com.google.common.eventbus.EventBus.dispatch(EventBus.java:322)
+ at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:304)
+ at com.google.common.eventbus.EventBus.post(EventBus.java:275)
+ at cpw.mods.fml.common.LoadController.distributeStateMessage(LoadController.java:119)
+ at cpw.mods.fml.common.Loader.preinitializeMods(Loader.java:556)
+ at cpw.mods.fml.client.FMLClientHandler.beginMinecraftLoading(FMLClientHandler.java:243)
+ at net.minecraft.client.Minecraft.startGame(Minecraft.java:522)
+ at net.minecraft.client.Minecraft.run(Minecraft.java:942)
+ at net.minecraft.client.main.Main.main(Main.java:164)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+ at java.lang.reflect.Method.invoke(Unknown Source)
+ at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)
+ at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
+ at net.minecraftforge.gradle.GradleStartCommon.launch(Unknown Source)
+ at GradleStart.main(Unknown Source)
+
+
+A detailed walkthrough of the error, its code path and all known details is as follows:
+---------------------------------------------------------------------------------------
+
+-- Head --
+Stacktrace:
+ at cpw.mods.fml.common.registry.EntityRegistry.doModEntityRegistration(EntityRegistry.java:171)
+ at cpw.mods.fml.common.registry.EntityRegistry.registerModEntity(EntityRegistry.java:150)
+ at miscutil.entity.TMEntity.createEntity(TMEntity.java:24)
+ at miscutil.entity.TMEntity.registerEntity(TMEntity.java:14)
+ at miscutil.entity.TMEntity.mainRegistry(TMEntity.java:10)
+ at miscutil.MiscUtils.preInit(MiscUtils.java:49)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+ at java.lang.reflect.Method.invoke(Unknown Source)
+ at cpw.mods.fml.common.FMLModContainer.handleModStateEvent(FMLModContainer.java:532)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+ at java.lang.reflect.Method.invoke(Unknown Source)
+ at com.google.common.eventbus.EventSubscriber.handleEvent(EventSubscriber.java:74)
+ at com.google.common.eventbus.SynchronizedEventSubscriber.handleEvent(SynchronizedEventSubscriber.java:47)
+ at com.google.common.eventbus.EventBus.dispatch(EventBus.java:322)
+ at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:304)
+ at com.google.common.eventbus.EventBus.post(EventBus.java:275)
+ at cpw.mods.fml.common.LoadController.sendEventToModContainer(LoadController.java:212)
+ at cpw.mods.fml.common.LoadController.propogateStateMessage(LoadController.java:190)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+ at java.lang.reflect.Method.invoke(Unknown Source)
+ at com.google.common.eventbus.EventSubscriber.handleEvent(EventSubscriber.java:74)
+ at com.google.common.eventbus.SynchronizedEventSubscriber.handleEvent(SynchronizedEventSubscriber.java:47)
+ at com.google.common.eventbus.EventBus.dispatch(EventBus.java:322)
+ at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:304)
+ at com.google.common.eventbus.EventBus.post(EventBus.java:275)
+ at cpw.mods.fml.common.LoadController.distributeStateMessage(LoadController.java:119)
+ at cpw.mods.fml.common.Loader.preinitializeMods(Loader.java:556)
+ at cpw.mods.fml.client.FMLClientHandler.beginMinecraftLoading(FMLClientHandler.java:243)
+ at net.minecraft.client.Minecraft.startGame(Minecraft.java:522)
+
+-- Initialization --
+Details:
+Stacktrace:
+ at net.minecraft.client.Minecraft.run(Minecraft.java:942)
+ at net.minecraft.client.main.Main.main(Main.java:164)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+ at java.lang.reflect.Method.invoke(Unknown Source)
+ at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)
+ at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
+ at net.minecraftforge.gradle.GradleStartCommon.launch(Unknown Source)
+ at GradleStart.main(Unknown Source)
+
+-- System Details --
+Details:
+ Minecraft Version: 1.7.10
+ Operating System: Windows 7 (amd64) version 6.1
+ Java Version: 1.8.0_60, Oracle Corporation
+ Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
+ Memory: 152599472 bytes (145 MB) / 666894336 bytes (636 MB) up to 3804758016 bytes (3628 MB)
+ JVM Flags: 0 total;
+ AABB Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
+ IntCache: cache: 0, tcache: 0, allocated: 0, tallocated: 0
+ FML: MCP v9.05 FML v7.10.99.99 Minecraft Forge 10.13.4.1448 5 mods loaded, 5 mods active
+ States: 'U' = Unloaded 'L' = Loaded 'C' = Constructed 'H' = Pre-initialized 'I' = Initialized 'J' = Post-initialized 'A' = Available 'D' = Disabled 'E' = Errored
+ UCH mcp{9.05} [Minecraft Coder Pack] (minecraft.jar)
+ UCH FML{7.10.99.99} [Forge Mod Loader] (forgeSrc-1.7.10-10.13.4.1448-1.7.10.jar)
+ UCH Forge{10.13.4.1448} [Minecraft Forge] (forgeSrc-1.7.10-10.13.4.1448-1.7.10.jar)
+ UCH CodeChickenCore{1.0.4.29} [CodeChicken Core] (minecraft.jar)
+ UCE miscutils{0.2.2} [miscutils] (bin)
+ GL info: ' Vendor: 'NVIDIA Corporation' Version: '4.5.0 NVIDIA 347.52' Renderer: 'GeForce GTX 770/PCIe/SSE2'
+ Launched Version: 1.7.10
+ LWJGL: 2.9.1
+ OpenGL: GeForce GTX 770/PCIe/SSE2 GL version 4.5.0 NVIDIA 347.52, NVIDIA Corporation
+ GL Caps: Using GL 1.3 multitexturing.
+Using framebuffer objects because OpenGL 3.0 is supported and separate blending is supported.
+Anisotropic filtering is supported and maximum anisotropy is 16.
+Shaders are available because OpenGL 2.1 is supported.
+
+ Is Modded: Definitely; Client brand changed to 'fml,forge'
+ Type: Client (map_client.txt)
+ Resource Packs: []
+ Current Language: English (US)
+ Profiler Position: N/A (disabled)
+ Vec3 Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
+ Anisotropic Filtering: Off (1) \ No newline at end of file
diff --git a/crash-reports/crash-2015-09-03_04.08.04-client.txt b/crash-reports/crash-2015-09-03_04.08.04-client.txt
new file mode 100644
index 0000000000..375cc1a072
--- /dev/null
+++ b/crash-reports/crash-2015-09-03_04.08.04-client.txt
@@ -0,0 +1,136 @@
+---- Minecraft Crash Report ----
+// Don't be sad. I'll do better next time, I promise!
+
+Time: 3/09/15 4:08 AM
+Description: Initializing game
+
+java.lang.NullPointerException: Initializing game
+ at cpw.mods.fml.common.network.NetworkRegistry.registerGuiHandler(NetworkRegistry.java:219)
+ at miscutil.CommonProxy.registerNetworkStuff(CommonProxy.java:33)
+ at miscutil.MiscUtils.postInit(MiscUtils.java:71)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+ at java.lang.reflect.Method.invoke(Unknown Source)
+ at cpw.mods.fml.common.FMLModContainer.handleModStateEvent(FMLModContainer.java:532)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+ at java.lang.reflect.Method.invoke(Unknown Source)
+ at com.google.common.eventbus.EventSubscriber.handleEvent(EventSubscriber.java:74)
+ at com.google.common.eventbus.SynchronizedEventSubscriber.handleEvent(SynchronizedEventSubscriber.java:47)
+ at com.google.common.eventbus.EventBus.dispatch(EventBus.java:322)
+ at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:304)
+ at com.google.common.eventbus.EventBus.post(EventBus.java:275)
+ at cpw.mods.fml.common.LoadController.sendEventToModContainer(LoadController.java:212)
+ at cpw.mods.fml.common.LoadController.propogateStateMessage(LoadController.java:190)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+ at java.lang.reflect.Method.invoke(Unknown Source)
+ at com.google.common.eventbus.EventSubscriber.handleEvent(EventSubscriber.java:74)
+ at com.google.common.eventbus.SynchronizedEventSubscriber.handleEvent(SynchronizedEventSubscriber.java:47)
+ at com.google.common.eventbus.EventBus.dispatch(EventBus.java:322)
+ at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:304)
+ at com.google.common.eventbus.EventBus.post(EventBus.java:275)
+ at cpw.mods.fml.common.LoadController.distributeStateMessage(LoadController.java:119)
+ at cpw.mods.fml.common.Loader.initializeMods(Loader.java:742)
+ at cpw.mods.fml.client.FMLClientHandler.finishMinecraftLoading(FMLClientHandler.java:311)
+ at net.minecraft.client.Minecraft.startGame(Minecraft.java:597)
+ at net.minecraft.client.Minecraft.run(Minecraft.java:942)
+ at net.minecraft.client.main.Main.main(Main.java:164)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+ at java.lang.reflect.Method.invoke(Unknown Source)
+ at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)
+ at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
+ at net.minecraftforge.gradle.GradleStartCommon.launch(Unknown Source)
+ at GradleStart.main(Unknown Source)
+
+
+A detailed walkthrough of the error, its code path and all known details is as follows:
+---------------------------------------------------------------------------------------
+
+-- Head --
+Stacktrace:
+ at cpw.mods.fml.common.network.NetworkRegistry.registerGuiHandler(NetworkRegistry.java:219)
+ at miscutil.CommonProxy.registerNetworkStuff(CommonProxy.java:33)
+ at miscutil.MiscUtils.postInit(MiscUtils.java:71)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+ at java.lang.reflect.Method.invoke(Unknown Source)
+ at cpw.mods.fml.common.FMLModContainer.handleModStateEvent(FMLModContainer.java:532)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+ at java.lang.reflect.Method.invoke(Unknown Source)
+ at com.google.common.eventbus.EventSubscriber.handleEvent(EventSubscriber.java:74)
+ at com.google.common.eventbus.SynchronizedEventSubscriber.handleEvent(SynchronizedEventSubscriber.java:47)
+ at com.google.common.eventbus.EventBus.dispatch(EventBus.java:322)
+ at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:304)
+ at com.google.common.eventbus.EventBus.post(EventBus.java:275)
+ at cpw.mods.fml.common.LoadController.sendEventToModContainer(LoadController.java:212)
+ at cpw.mods.fml.common.LoadController.propogateStateMessage(LoadController.java:190)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+ at java.lang.reflect.Method.invoke(Unknown Source)
+ at com.google.common.eventbus.EventSubscriber.handleEvent(EventSubscriber.java:74)
+ at com.google.common.eventbus.SynchronizedEventSubscriber.handleEvent(SynchronizedEventSubscriber.java:47)
+ at com.google.common.eventbus.EventBus.dispatch(EventBus.java:322)
+ at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:304)
+ at com.google.common.eventbus.EventBus.post(EventBus.java:275)
+ at cpw.mods.fml.common.LoadController.distributeStateMessage(LoadController.java:119)
+ at cpw.mods.fml.common.Loader.initializeMods(Loader.java:742)
+ at cpw.mods.fml.client.FMLClientHandler.finishMinecraftLoading(FMLClientHandler.java:311)
+ at net.minecraft.client.Minecraft.startGame(Minecraft.java:597)
+
+-- Initialization --
+Details:
+Stacktrace:
+ at net.minecraft.client.Minecraft.run(Minecraft.java:942)
+ at net.minecraft.client.main.Main.main(Main.java:164)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+ at java.lang.reflect.Method.invoke(Unknown Source)
+ at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)
+ at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
+ at net.minecraftforge.gradle.GradleStartCommon.launch(Unknown Source)
+ at GradleStart.main(Unknown Source)
+
+-- System Details --
+Details:
+ Minecraft Version: 1.7.10
+ Operating System: Windows 7 (amd64) version 6.1
+ Java Version: 1.8.0_60, Oracle Corporation
+ Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
+ Memory: 143372040 bytes (136 MB) / 695205888 bytes (663 MB) up to 3804758016 bytes (3628 MB)
+ JVM Flags: 0 total;
+ AABB Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
+ IntCache: cache: 0, tcache: 0, allocated: 0, tallocated: 0
+ FML: MCP v9.05 FML v7.10.99.99 Minecraft Forge 10.13.4.1448 5 mods loaded, 5 mods active
+ States: 'U' = Unloaded 'L' = Loaded 'C' = Constructed 'H' = Pre-initialized 'I' = Initialized 'J' = Post-initialized 'A' = Available 'D' = Disabled 'E' = Errored
+ UCHIJ mcp{9.05} [Minecraft Coder Pack] (minecraft.jar)
+ UCHIJ FML{7.10.99.99} [Forge Mod Loader] (forgeSrc-1.7.10-10.13.4.1448-1.7.10.jar)
+ UCHIJ Forge{10.13.4.1448} [Minecraft Forge] (forgeSrc-1.7.10-10.13.4.1448-1.7.10.jar)
+ UCHIJ CodeChickenCore{1.0.4.29} [CodeChicken Core] (minecraft.jar)
+ UCHIE miscutils{0.2.2} [miscutils] (bin)
+ GL info: ' Vendor: 'NVIDIA Corporation' Version: '4.5.0 NVIDIA 347.52' Renderer: 'GeForce GTX 770/PCIe/SSE2'
+ Launched Version: 1.7.10
+ LWJGL: 2.9.1
+ OpenGL: GeForce GTX 770/PCIe/SSE2 GL version 4.5.0 NVIDIA 347.52, NVIDIA Corporation
+ GL Caps: Using GL 1.3 multitexturing.
+Using framebuffer objects because OpenGL 3.0 is supported and separate blending is supported.
+Anisotropic filtering is supported and maximum anisotropy is 16.
+Shaders are available because OpenGL 2.1 is supported.
+
+ Is Modded: Definitely; Client brand changed to 'fml,forge'
+ Type: Client (map_client.txt)
+ Resource Packs: []
+ Current Language: English (US)
+ Profiler Position: N/A (disabled)
+ Vec3 Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
+ Anisotropic Filtering: Off (1) \ No newline at end of file
diff --git a/crash-reports/crash-2015-09-03_04.10.26-client.txt b/crash-reports/crash-2015-09-03_04.10.26-client.txt
new file mode 100644
index 0000000000..64767ea02e
--- /dev/null
+++ b/crash-reports/crash-2015-09-03_04.10.26-client.txt
@@ -0,0 +1,136 @@
+---- Minecraft Crash Report ----
+// Oops.
+
+Time: 3/09/15 4:10 AM
+Description: Initializing game
+
+java.lang.NullPointerException: Initializing game
+ at cpw.mods.fml.common.network.NetworkRegistry.registerGuiHandler(NetworkRegistry.java:219)
+ at miscutil.CommonProxy.registerNetworkStuff(CommonProxy.java:33)
+ at miscutil.MiscUtils.preInit(MiscUtils.java:45)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+ at java.lang.reflect.Method.invoke(Unknown Source)
+ at cpw.mods.fml.common.FMLModContainer.handleModStateEvent(FMLModContainer.java:532)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+ at java.lang.reflect.Method.invoke(Unknown Source)
+ at com.google.common.eventbus.EventSubscriber.handleEvent(EventSubscriber.java:74)
+ at com.google.common.eventbus.SynchronizedEventSubscriber.handleEvent(SynchronizedEventSubscriber.java:47)
+ at com.google.common.eventbus.EventBus.dispatch(EventBus.java:322)
+ at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:304)
+ at com.google.common.eventbus.EventBus.post(EventBus.java:275)
+ at cpw.mods.fml.common.LoadController.sendEventToModContainer(LoadController.java:212)
+ at cpw.mods.fml.common.LoadController.propogateStateMessage(LoadController.java:190)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+ at java.lang.reflect.Method.invoke(Unknown Source)
+ at com.google.common.eventbus.EventSubscriber.handleEvent(EventSubscriber.java:74)
+ at com.google.common.eventbus.SynchronizedEventSubscriber.handleEvent(SynchronizedEventSubscriber.java:47)
+ at com.google.common.eventbus.EventBus.dispatch(EventBus.java:322)
+ at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:304)
+ at com.google.common.eventbus.EventBus.post(EventBus.java:275)
+ at cpw.mods.fml.common.LoadController.distributeStateMessage(LoadController.java:119)
+ at cpw.mods.fml.common.Loader.preinitializeMods(Loader.java:556)
+ at cpw.mods.fml.client.FMLClientHandler.beginMinecraftLoading(FMLClientHandler.java:243)
+ at net.minecraft.client.Minecraft.startGame(Minecraft.java:522)
+ at net.minecraft.client.Minecraft.run(Minecraft.java:942)
+ at net.minecraft.client.main.Main.main(Main.java:164)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+ at java.lang.reflect.Method.invoke(Unknown Source)
+ at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)
+ at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
+ at net.minecraftforge.gradle.GradleStartCommon.launch(Unknown Source)
+ at GradleStart.main(Unknown Source)
+
+
+A detailed walkthrough of the error, its code path and all known details is as follows:
+---------------------------------------------------------------------------------------
+
+-- Head --
+Stacktrace:
+ at cpw.mods.fml.common.network.NetworkRegistry.registerGuiHandler(NetworkRegistry.java:219)
+ at miscutil.CommonProxy.registerNetworkStuff(CommonProxy.java:33)
+ at miscutil.MiscUtils.preInit(MiscUtils.java:45)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+ at java.lang.reflect.Method.invoke(Unknown Source)
+ at cpw.mods.fml.common.FMLModContainer.handleModStateEvent(FMLModContainer.java:532)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+ at java.lang.reflect.Method.invoke(Unknown Source)
+ at com.google.common.eventbus.EventSubscriber.handleEvent(EventSubscriber.java:74)
+ at com.google.common.eventbus.SynchronizedEventSubscriber.handleEvent(SynchronizedEventSubscriber.java:47)
+ at com.google.common.eventbus.EventBus.dispatch(EventBus.java:322)
+ at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:304)
+ at com.google.common.eventbus.EventBus.post(EventBus.java:275)
+ at cpw.mods.fml.common.LoadController.sendEventToModContainer(LoadController.java:212)
+ at cpw.mods.fml.common.LoadController.propogateStateMessage(LoadController.java:190)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+ at java.lang.reflect.Method.invoke(Unknown Source)
+ at com.google.common.eventbus.EventSubscriber.handleEvent(EventSubscriber.java:74)
+ at com.google.common.eventbus.SynchronizedEventSubscriber.handleEvent(SynchronizedEventSubscriber.java:47)
+ at com.google.common.eventbus.EventBus.dispatch(EventBus.java:322)
+ at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:304)
+ at com.google.common.eventbus.EventBus.post(EventBus.java:275)
+ at cpw.mods.fml.common.LoadController.distributeStateMessage(LoadController.java:119)
+ at cpw.mods.fml.common.Loader.preinitializeMods(Loader.java:556)
+ at cpw.mods.fml.client.FMLClientHandler.beginMinecraftLoading(FMLClientHandler.java:243)
+ at net.minecraft.client.Minecraft.startGame(Minecraft.java:522)
+
+-- Initialization --
+Details:
+Stacktrace:
+ at net.minecraft.client.Minecraft.run(Minecraft.java:942)
+ at net.minecraft.client.main.Main.main(Main.java:164)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+ at java.lang.reflect.Method.invoke(Unknown Source)
+ at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)
+ at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
+ at net.minecraftforge.gradle.GradleStartCommon.launch(Unknown Source)
+ at GradleStart.main(Unknown Source)
+
+-- System Details --
+Details:
+ Minecraft Version: 1.7.10
+ Operating System: Windows 7 (amd64) version 6.1
+ Java Version: 1.8.0_60, Oracle Corporation
+ Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
+ Memory: 130691464 bytes (124 MB) / 676855808 bytes (645 MB) up to 3804758016 bytes (3628 MB)
+ JVM Flags: 0 total;
+ AABB Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
+ IntCache: cache: 0, tcache: 0, allocated: 0, tallocated: 0
+ FML: MCP v9.05 FML v7.10.99.99 Minecraft Forge 10.13.4.1448 5 mods loaded, 5 mods active
+ States: 'U' = Unloaded 'L' = Loaded 'C' = Constructed 'H' = Pre-initialized 'I' = Initialized 'J' = Post-initialized 'A' = Available 'D' = Disabled 'E' = Errored
+ UCH mcp{9.05} [Minecraft Coder Pack] (minecraft.jar)
+ UCH FML{7.10.99.99} [Forge Mod Loader] (forgeSrc-1.7.10-10.13.4.1448-1.7.10.jar)
+ UCH Forge{10.13.4.1448} [Minecraft Forge] (forgeSrc-1.7.10-10.13.4.1448-1.7.10.jar)
+ UCH CodeChickenCore{1.0.4.29} [CodeChicken Core] (minecraft.jar)
+ UCE miscutils{0.2.2} [miscutils] (bin)
+ GL info: ' Vendor: 'NVIDIA Corporation' Version: '4.5.0 NVIDIA 347.52' Renderer: 'GeForce GTX 770/PCIe/SSE2'
+ Launched Version: 1.7.10
+ LWJGL: 2.9.1
+ OpenGL: GeForce GTX 770/PCIe/SSE2 GL version 4.5.0 NVIDIA 347.52, NVIDIA Corporation
+ GL Caps: Using GL 1.3 multitexturing.
+Using framebuffer objects because OpenGL 3.0 is supported and separate blending is supported.
+Anisotropic filtering is supported and maximum anisotropy is 16.
+Shaders are available because OpenGL 2.1 is supported.
+
+ Is Modded: Definitely; Client brand changed to 'fml,forge'
+ Type: Client (map_client.txt)
+ Resource Packs: []
+ Current Language: English (US)
+ Profiler Position: N/A (disabled)
+ Vec3 Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
+ Anisotropic Filtering: Off (1) \ No newline at end of file
diff --git a/crash-reports/crash-2015-09-03_06.06.01-server.txt b/crash-reports/crash-2015-09-03_06.06.01-server.txt
new file mode 100644
index 0000000000..1d25345452
--- /dev/null
+++ b/crash-reports/crash-2015-09-03_06.06.01-server.txt
@@ -0,0 +1,81 @@
+---- Minecraft Crash Report ----
+// I feel sad now :(
+
+Time: 3/09/15 6:06 AM
+Description: Ticking memory connection
+
+java.lang.ArrayIndexOutOfBoundsException: 11
+ at net.minecraft.entity.player.InventoryPlayer.getStackInSlot(InventoryPlayer.java:646)
+ at net.minecraft.inventory.Slot.getStack(Slot.java:88)
+ at net.minecraft.inventory.Container.getInventory(Container.java:67)
+ at net.minecraft.inventory.Container.addCraftingToCrafters(Container.java:53)
+ at miscutil.inventory.ContainerArcaneInfuser.addCraftingToCrafters(ContainerArcaneInfuser.java:43)
+ at cpw.mods.fml.common.network.internal.FMLNetworkHandler.openGui(FMLNetworkHandler.java:88)
+ at net.minecraft.entity.player.EntityPlayer.openGui(EntityPlayer.java:2501)
+ at miscutil.block.ArcaneInfuser.onBlockActivated(ArcaneInfuser.java:59)
+ at net.minecraft.server.management.ItemInWorldManager.activateBlockOrUseItem(ItemInWorldManager.java:409)
+ at net.minecraft.network.NetHandlerPlayServer.processPlayerBlockPlacement(NetHandlerPlayServer.java:593)
+ at net.minecraft.network.play.client.C08PacketPlayerBlockPlacement.processPacket(C08PacketPlayerBlockPlacement.java:74)
+ at net.minecraft.network.play.client.C08PacketPlayerBlockPlacement.processPacket(C08PacketPlayerBlockPlacement.java:122)
+ at net.minecraft.network.NetworkManager.processReceivedPackets(NetworkManager.java:241)
+ at net.minecraft.network.NetworkSystem.networkTick(NetworkSystem.java:182)
+ at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:726)
+ at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:614)
+ at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:118)
+ at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:485)
+ at net.minecraft.server.MinecraftServer$2.run(MinecraftServer.java:752)
+
+
+A detailed walkthrough of the error, its code path and all known details is as follows:
+---------------------------------------------------------------------------------------
+
+-- Head --
+Stacktrace:
+ at net.minecraft.entity.player.InventoryPlayer.getStackInSlot(InventoryPlayer.java:646)
+ at net.minecraft.inventory.Slot.getStack(Slot.java:88)
+ at net.minecraft.inventory.Container.getInventory(Container.java:67)
+ at net.minecraft.inventory.Container.addCraftingToCrafters(Container.java:53)
+ at miscutil.inventory.ContainerArcaneInfuser.addCraftingToCrafters(ContainerArcaneInfuser.java:43)
+ at cpw.mods.fml.common.network.internal.FMLNetworkHandler.openGui(FMLNetworkHandler.java:88)
+ at net.minecraft.entity.player.EntityPlayer.openGui(EntityPlayer.java:2501)
+ at miscutil.block.ArcaneInfuser.onBlockActivated(ArcaneInfuser.java:59)
+ at net.minecraft.server.management.ItemInWorldManager.activateBlockOrUseItem(ItemInWorldManager.java:409)
+ at net.minecraft.network.NetHandlerPlayServer.processPlayerBlockPlacement(NetHandlerPlayServer.java:593)
+ at net.minecraft.network.play.client.C08PacketPlayerBlockPlacement.processPacket(C08PacketPlayerBlockPlacement.java:74)
+ at net.minecraft.network.play.client.C08PacketPlayerBlockPlacement.processPacket(C08PacketPlayerBlockPlacement.java:122)
+ at net.minecraft.network.NetworkManager.processReceivedPackets(NetworkManager.java:241)
+
+-- Ticking connection --
+Details:
+ Connection: net.minecraft.network.NetworkManager@309fff2a
+Stacktrace:
+ at net.minecraft.network.NetworkSystem.networkTick(NetworkSystem.java:182)
+ at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:726)
+ at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:614)
+ at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:118)
+ at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:485)
+ at net.minecraft.server.MinecraftServer$2.run(MinecraftServer.java:752)
+
+-- System Details --
+Details:
+ Minecraft Version: 1.7.10
+ Operating System: Windows 7 (amd64) version 6.1
+ Java Version: 1.8.0_60, Oracle Corporation
+ Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
+ Memory: 501609640 bytes (478 MB) / 784334848 bytes (748 MB) up to 3804758016 bytes (3628 MB)
+ JVM Flags: 0 total;
+ AABB Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
+ IntCache: cache: 0, tcache: 0, allocated: 12, tallocated: 94
+ FML: MCP v9.05 FML v7.10.99.99 Minecraft Forge 10.13.4.1448 5 mods loaded, 5 mods active
+ States: 'U' = Unloaded 'L' = Loaded 'C' = Constructed 'H' = Pre-initialized 'I' = Initialized 'J' = Post-initialized 'A' = Available 'D' = Disabled 'E' = Errored
+ UCHIJAAAAAAAAA mcp{9.05} [Minecraft Coder Pack] (minecraft.jar)
+ UCHIJAAAAAAAAA FML{7.10.99.99} [Forge Mod Loader] (forgeSrc-1.7.10-10.13.4.1448-1.7.10.jar)
+ UCHIJAAAAAAAAA Forge{10.13.4.1448} [Minecraft Forge] (forgeSrc-1.7.10-10.13.4.1448-1.7.10.jar)
+ UCHIJAAAAAAAAA CodeChickenCore{1.0.4.29} [CodeChicken Core] (minecraft.jar)
+ UCHIJAAAAAAAAA miscutils{0.2.2} [miscutils] (bin)
+ GL info: ~~ERROR~~ RuntimeException: No OpenGL context found in the current thread.
+ Profiler Position: N/A (disabled)
+ Vec3 Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
+ Player Count: 1 / 8; [EntityPlayerMP['Draknyte1'/1003, l='New World', x=184.96, y=80.00, z=254.02]]
+ Type: Integrated Server (map_client.txt)
+ Is Modded: Definitely; Client brand changed to 'fml,forge' \ No newline at end of file
diff --git a/crash-reports/crash-2015-09-03_06.06.02-client.txt b/crash-reports/crash-2015-09-03_06.06.02-client.txt
new file mode 100644
index 0000000000..ea0d2dae40
--- /dev/null
+++ b/crash-reports/crash-2015-09-03_06.06.02-client.txt
@@ -0,0 +1,106 @@
+---- Minecraft Crash Report ----
+// Would you like a cupcake?
+
+Time: 3/09/15 6:06 AM
+Description: Rendering screen
+
+java.lang.ArrayIndexOutOfBoundsException: 11
+ at net.minecraft.entity.player.InventoryPlayer.getStackInSlot(InventoryPlayer.java:646)
+ at net.minecraft.inventory.Slot.getStack(Slot.java:88)
+ at net.minecraft.client.gui.inventory.GuiContainer.func_146977_a(GuiContainer.java:219)
+ at net.minecraft.client.gui.inventory.GuiContainer.drawScreen(GuiContainer.java:114)
+ at net.minecraft.client.renderer.EntityRenderer.updateCameraAndRender(EntityRenderer.java:1137)
+ at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1067)
+ at net.minecraft.client.Minecraft.run(Minecraft.java:962)
+ at net.minecraft.client.main.Main.main(Main.java:164)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+ at java.lang.reflect.Method.invoke(Unknown Source)
+ at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)
+ at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
+ at net.minecraftforge.gradle.GradleStartCommon.launch(Unknown Source)
+ at GradleStart.main(Unknown Source)
+
+
+A detailed walkthrough of the error, its code path and all known details is as follows:
+---------------------------------------------------------------------------------------
+
+-- Head --
+Stacktrace:
+ at net.minecraft.entity.player.InventoryPlayer.getStackInSlot(InventoryPlayer.java:646)
+ at net.minecraft.inventory.Slot.getStack(Slot.java:88)
+ at net.minecraft.client.gui.inventory.GuiContainer.func_146977_a(GuiContainer.java:219)
+ at net.minecraft.client.gui.inventory.GuiContainer.drawScreen(GuiContainer.java:114)
+
+-- Screen render details --
+Details:
+ Screen name: miscutil.gui.GuiArcaneInfuser
+ Mouse location: Scaled: (240, 128). Absolute: (960, 514)
+ Screen size: Scaled: (480, 257). Absolute: (1920, 1028). Scale factor of 4
+
+-- Affected level --
+Details:
+ Level name: MpServer
+ All players: 1 total; [EntityClientPlayerMP['Draknyte1'/1003, l='MpServer', x=184.96, y=81.62, z=254.02]]
+ Chunk stats: MultiplayerChunkCache: 583, 583
+ Level seed: 0
+ Level generator: ID 00 - default, ver 1. Features enabled: false
+ Level generator options:
+ Level spawn location: World: (244,64,256), Chunk: (at 4,4,0 in 15,16; contains blocks 240,0,256 to 255,255,271), Region: (0,0; contains chunks 0,0 to 31,31, blocks 0,0,0 to 511,255,511)
+ Level time: 47195 game time, 47195 day time
+ Level dimension: 0
+ Level storage version: 0x00000 - Unknown?
+ Level weather: Rain time: 0 (now: false), thunder time: 0 (now: false)
+ Level game mode: Game mode: creative (ID 1). Hardcore: false. Cheats: false
+ Forced entities: 106 total; [EntityPig['Pig'/768, l='MpServer', x=158.91, y=76.00, z=298.13], EntityPig['Pig'/769, l='MpServer', x=157.50, y=73.00, z=314.50], EntityPig['Pig'/770, l='MpServer', x=158.06, y=75.00, z=304.09], EntityChicken['Chicken'/771, l='MpServer', x=163.41, y=76.00, z=314.34], EntityCreeper['Creeper'/7941, l='MpServer', x=156.09, y=71.00, z=245.09], EntityPig['Pig'/774, l='MpServer', x=147.78, y=82.00, z=320.53], EntityCreeper['Creeper'/18950, l='MpServer', x=172.50, y=86.00, z=312.50], EntityChicken['Chicken'/775, l='MpServer', x=141.59, y=80.00, z=333.41], EntityPig['Pig'/778, l='MpServer', x=162.81, y=83.00, z=210.19], EntityItem['item.item.egg'/19210, l='MpServer', x=166.81, y=79.13, z=310.44], EntityPig['Pig'/779, l='MpServer', x=164.63, y=84.00, z=211.53], EntityPig['Pig'/780, l='MpServer', x=172.13, y=85.00, z=209.06], EntityPig['Pig'/781, l='MpServer', x=167.50, y=85.00, z=214.50], EntitySkeleton['Skeleton'/782, l='MpServer', x=171.53, y=64.00, z=258.84], EntityPig['Pig'/786, l='MpServer', x=175.53, y=79.00, z=303.69], EntityPig['Pig'/787, l='MpServer', x=161.53, y=74.00, z=315.81], EntityChicken['Chicken'/788, l='MpServer', x=166.59, y=80.00, z=312.38], EntityBat['Bat'/19988, l='MpServer', x=244.63, y=18.24, z=285.59], EntityPig['Pig'/789, l='MpServer', x=175.53, y=81.00, z=310.44], EntityChicken['Chicken'/790, l='MpServer', x=165.53, y=81.00, z=322.53], EntityCreeper['Creeper'/10776, l='MpServer', x=205.88, y=71.00, z=266.06], EntityCreeper['Creeper'/19744, l='MpServer', x=230.94, y=17.00, z=186.63], EntityCreeper['Creeper'/19745, l='MpServer', x=229.50, y=23.00, z=193.50], EntityCreeper['Creeper'/19746, l='MpServer', x=133.50, y=25.00, z=322.50], EntityPig['Pig'/803, l='MpServer', x=185.97, y=78.00, z=302.09], EntityPig['Pig'/804, l='MpServer', x=181.13, y=77.00, z=308.13], EntityCreeper['Creeper'/8485, l='MpServer', x=201.00, y=78.00, z=270.53], EntitySkeleton['Skeleton'/17191, l='MpServer', x=205.44, y=74.00, z=331.88], EntityBat['Bat'/18216, l='MpServer', x=207.97, y=14.10, z=203.75], EntityBat['Bat'/20009, l='MpServer', x=178.53, y=20.00, z=259.09], EntityBat['Bat'/20010, l='MpServer', x=180.63, y=19.02, z=264.06], EntitySheep['Sheep'/812, l='MpServer', x=196.88, y=67.00, z=194.97], EntityBat['Bat'/816, l='MpServer', x=203.50, y=62.10, z=238.25], EntityBat['Bat'/20275, l='MpServer', x=189.32, y=12.71, z=219.43], EntityCreeper['Creeper'/19004, l='MpServer', x=171.50, y=30.00, z=286.03], EntityBat['Bat'/20028, l='MpServer', x=247.50, y=16.64, z=312.31], EntityCreeper['Creeper'/19005, l='MpServer', x=167.94, y=33.00, z=291.41], EntityBat['Bat'/20029, l='MpServer', x=232.22, y=15.42, z=321.53], EntityBat['Bat'/20030, l='MpServer', x=241.69, y=16.10, z=320.06], EntitySkeleton['Skeleton'/19008, l='MpServer', x=168.50, y=29.00, z=285.50], EntityChicken['Chicken'/842, l='MpServer', x=220.66, y=65.00, z=178.47], EntitySheep['Sheep'/844, l='MpServer', x=209.63, y=68.00, z=181.09], EntitySheep['Sheep'/845, l='MpServer', x=211.59, y=67.00, z=182.47], EntitySheep['Sheep'/846, l='MpServer', x=221.97, y=66.00, z=184.97], EntityZombie['Zombie'/18520, l='MpServer', x=195.50, y=22.00, z=295.75], EntityChicken['Chicken'/860, l='MpServer', x=225.63, y=67.00, z=184.47], EntityZombie['Zombie'/18531, l='MpServer', x=262.50, y=24.00, z=175.50], EntityCreeper['Creeper'/19300, l='MpServer', x=117.50, y=72.00, z=245.50], EntitySkeleton['Skeleton'/18024, l='MpServer', x=180.91, y=80.00, z=220.69], EntityPig['Pig'/876, l='MpServer', x=243.50, y=66.00, z=176.50], EntityPig['Pig'/877, l='MpServer', x=245.50, y=66.00, z=176.03], EntityPig['Pig'/878, l='MpServer', x=241.97, y=66.00, z=183.06], EntityCreeper['Creeper'/16495, l='MpServer', x=145.50, y=63.00, z=203.50], EntityCreeper['Creeper'/20335, l='MpServer', x=255.06, y=31.00, z=313.59], EntityCreeper['Creeper'/19573, l='MpServer', x=247.50, y=16.00, z=313.50], EntityCreeper['Creeper'/19574, l='MpServer', x=248.50, y=16.00, z=314.50], EntitySkeleton['Skeleton'/18040, l='MpServer', x=170.50, y=22.00, z=248.50], EntityItem['item.item.egg'/14972, l='MpServer', x=163.72, y=76.13, z=312.28], EntityCreeper['Creeper'/18047, l='MpServer', x=131.50, y=79.00, z=260.50], EntityZombie['Zombie'/19584, l='MpServer', x=139.03, y=37.00, z=243.53], EntitySpider['Spider'/19587, l='MpServer', x=237.50, y=66.00, z=181.50], EntityCreeper['Creeper'/20355, l='MpServer', x=170.31, y=12.00, z=278.37], EntityZombie['Zombie'/20356, l='MpServer', x=167.99, y=11.00, z=279.53], EntityZombie['Zombie'/19589, l='MpServer', x=244.50, y=66.00, z=177.50], EntityZombie['Zombie'/19593, l='MpServer', x=247.50, y=66.00, z=175.50], EntityBat['Bat'/19343, l='MpServer', x=215.76, y=44.13, z=289.52], EntityBat['Bat'/19344, l='MpServer', x=216.75, y=39.10, z=274.75], EntityBat['Bat'/19631, l='MpServer', x=260.79, y=45.08, z=314.74], EntityBat['Bat'/20399, l='MpServer', x=122.40, y=37.06, z=273.70], EntityBat['Bat'/19899, l='MpServer', x=198.45, y=20.22, z=316.43], EntityZombie['Zombie'/18112, l='MpServer', x=120.91, y=21.00, z=324.38], EntityPig['Pig'/711, l='MpServer', x=109.88, y=63.00, z=206.94], EntityPig['Pig'/712, l='MpServer', x=111.50, y=76.00, z=239.50], EntityPig['Pig'/713, l='MpServer', x=111.50, y=76.00, z=241.50], EntitySkeleton['Skeleton'/19148, l='MpServer', x=150.97, y=79.00, z=250.67], EntityChicken['Chicken'/722, l='MpServer', x=111.47, y=74.00, z=326.44], EntityZombie['Zombie'/20183, l='MpServer', x=179.50, y=19.00, z=261.50], EntityZombie['Zombie'/20184, l='MpServer', x=179.50, y=19.00, z=263.50], EntityZombie['Zombie'/15328, l='MpServer', x=190.34, y=43.00, z=318.34], EntityPig['Pig'/737, l='MpServer', x=110.69, y=69.00, z=184.50], EntityPig['Pig'/738, l='MpServer', x=113.19, y=64.00, z=175.09], EntityPig['Pig'/739, l='MpServer', x=115.81, y=70.00, z=176.50], EntitySkeleton['Skeleton'/14563, l='MpServer', x=198.05, y=65.00, z=247.49], EntityPig['Pig'/740, l='MpServer', x=114.72, y=62.21, z=206.84], EntityEnderman['Enderman'/14564, l='MpServer', x=201.15, y=72.00, z=267.43], EntityPig['Pig'/741, l='MpServer', x=112.81, y=66.00, z=200.47], EntityEnderman['Enderman'/14565, l='MpServer', x=201.86, y=72.00, z=264.37], EntityPig['Pig'/742, l='MpServer', x=120.50, y=73.00, z=241.69], EntityCreeper['Creeper'/17895, l='MpServer', x=104.59, y=75.00, z=331.06], EntityClientPlayerMP['Draknyte1'/1003, l='MpServer', x=184.96, y=81.62, z=254.02], EntityPig['Pig'/749, l='MpServer', x=141.75, y=66.00, z=195.81], EntityCreeper['Creeper'/20205, l='MpServer', x=218.50, y=59.00, z=271.50], EntityPig['Pig'/751, l='MpServer', x=142.84, y=80.00, z=303.13], EntityPig['Pig'/752, l='MpServer', x=137.72, y=80.00, z=321.91], EntityPig['Pig'/753, l='MpServer', x=137.97, y=80.00, z=330.13], EntitySkeleton['Skeleton'/18929, l='MpServer', x=203.50, y=68.00, z=188.50], EntityPig['Pig'/759, l='MpServer', x=150.03, y=68.00, z=194.97], EntityPig['Pig'/760, l='MpServer', x=156.03, y=70.00, z=196.94], EntityPig['Pig'/761, l='MpServer', x=153.34, y=71.00, z=208.22], EntityPig['Pig'/762, l='MpServer', x=152.50, y=76.00, z=219.22], EntityPig['Pig'/763, l='MpServer', x=151.50, y=71.00, z=214.03], EntityPig['Pig'/764, l='MpServer', x=153.56, y=79.00, z=220.25], EntityPig['Pig'/765, l='MpServer', x=159.69, y=83.00, z=211.50], EntitySkeleton['Skeleton'/20222, l='MpServer', x=192.50, y=19.00, z=243.50], EntitySpider['Spider'/767, l='MpServer', x=168.72, y=64.00, z=257.72], EntitySkeleton['Skeleton'/20223, l='MpServer', x=194.44, y=17.00, z=249.13]]
+ Retry entities: 0 total; []
+ Server brand: fml,forge
+ Server type: Integrated singleplayer server
+Stacktrace:
+ at net.minecraft.client.multiplayer.WorldClient.addWorldInfoToCrashReport(WorldClient.java:415)
+ at net.minecraft.client.Minecraft.addGraphicsAndWorldToCrashReport(Minecraft.java:2566)
+ at net.minecraft.client.Minecraft.run(Minecraft.java:984)
+ at net.minecraft.client.main.Main.main(Main.java:164)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+ at java.lang.reflect.Method.invoke(Unknown Source)
+ at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)
+ at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
+ at net.minecraftforge.gradle.GradleStartCommon.launch(Unknown Source)
+ at GradleStart.main(Unknown Source)
+
+-- System Details --
+Details:
+ Minecraft Version: 1.7.10
+ Operating System: Windows 7 (amd64) version 6.1
+ Java Version: 1.8.0_60, Oracle Corporation
+ Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
+ Memory: 503317904 bytes (480 MB) / 784334848 bytes (748 MB) up to 3804758016 bytes (3628 MB)
+ JVM Flags: 0 total;
+ AABB Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
+ IntCache: cache: 0, tcache: 0, allocated: 12, tallocated: 94
+ FML: MCP v9.05 FML v7.10.99.99 Minecraft Forge 10.13.4.1448 5 mods loaded, 5 mods active
+ States: 'U' = Unloaded 'L' = Loaded 'C' = Constructed 'H' = Pre-initialized 'I' = Initialized 'J' = Post-initialized 'A' = Available 'D' = Disabled 'E' = Errored
+ UCHIJAAAAAAAAA mcp{9.05} [Minecraft Coder Pack] (minecraft.jar)
+ UCHIJAAAAAAAAA FML{7.10.99.99} [Forge Mod Loader] (forgeSrc-1.7.10-10.13.4.1448-1.7.10.jar)
+ UCHIJAAAAAAAAA Forge{10.13.4.1448} [Minecraft Forge] (forgeSrc-1.7.10-10.13.4.1448-1.7.10.jar)
+ UCHIJAAAAAAAAA CodeChickenCore{1.0.4.29} [CodeChicken Core] (minecraft.jar)
+ UCHIJAAAAAAAAA miscutils{0.2.2} [miscutils] (bin)
+ GL info: ' Vendor: 'NVIDIA Corporation' Version: '4.5.0 NVIDIA 347.52' Renderer: 'GeForce GTX 770/PCIe/SSE2'
+ Launched Version: 1.7.10
+ LWJGL: 2.9.1
+ OpenGL: GeForce GTX 770/PCIe/SSE2 GL version 4.5.0 NVIDIA 347.52, NVIDIA Corporation
+ GL Caps: Using GL 1.3 multitexturing.
+Using framebuffer objects because OpenGL 3.0 is supported and separate blending is supported.
+Anisotropic filtering is supported and maximum anisotropy is 16.
+Shaders are available because OpenGL 2.1 is supported.
+
+ Is Modded: Definitely; Client brand changed to 'fml,forge'
+ Type: Client (map_client.txt)
+ Resource Packs: []
+ Current Language: English (US)
+ Profiler Position: N/A (disabled)
+ Vec3 Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
+ Anisotropic Filtering: Off (1) \ No newline at end of file
diff --git a/crash-reports/crash-2015-09-03_06.08.01-client.txt b/crash-reports/crash-2015-09-03_06.08.01-client.txt
new file mode 100644
index 0000000000..49c1d015fd
--- /dev/null
+++ b/crash-reports/crash-2015-09-03_06.08.01-client.txt
@@ -0,0 +1,106 @@
+---- Minecraft Crash Report ----
+// On the bright side, I bought you a teddy bear!
+
+Time: 3/09/15 6:08 AM
+Description: Rendering screen
+
+java.lang.ArrayIndexOutOfBoundsException: 4
+ at net.minecraft.entity.player.InventoryPlayer.getStackInSlot(InventoryPlayer.java:646)
+ at net.minecraft.inventory.Slot.getStack(Slot.java:88)
+ at net.minecraft.client.gui.inventory.GuiContainer.func_146977_a(GuiContainer.java:219)
+ at net.minecraft.client.gui.inventory.GuiContainer.drawScreen(GuiContainer.java:114)
+ at net.minecraft.client.renderer.EntityRenderer.updateCameraAndRender(EntityRenderer.java:1137)
+ at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1067)
+ at net.minecraft.client.Minecraft.run(Minecraft.java:962)
+ at net.minecraft.client.main.Main.main(Main.java:164)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+ at java.lang.reflect.Method.invoke(Unknown Source)
+ at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)
+ at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
+ at net.minecraftforge.gradle.GradleStartCommon.launch(Unknown Source)
+ at GradleStart.main(Unknown Source)
+
+
+A detailed walkthrough of the error, its code path and all known details is as follows:
+---------------------------------------------------------------------------------------
+
+-- Head --
+Stacktrace:
+ at net.minecraft.entity.player.InventoryPlayer.getStackInSlot(InventoryPlayer.java:646)
+ at net.minecraft.inventory.Slot.getStack(Slot.java:88)
+ at net.minecraft.client.gui.inventory.GuiContainer.func_146977_a(GuiContainer.java:219)
+ at net.minecraft.client.gui.inventory.GuiContainer.drawScreen(GuiContainer.java:114)
+
+-- Screen render details --
+Details:
+ Screen name: miscutil.gui.GuiArcaneInfuser
+ Mouse location: Scaled: (240, 128). Absolute: (960, 514)
+ Screen size: Scaled: (480, 257). Absolute: (1920, 1028). Scale factor of 4
+
+-- Affected level --
+Details:
+ Level name: MpServer
+ All players: 1 total; [EntityClientPlayerMP['Draknyte1'/355, l='MpServer', x=184.96, y=81.62, z=254.02]]
+ Chunk stats: MultiplayerChunkCache: 583, 583
+ Level seed: 0
+ Level generator: ID 00 - default, ver 1. Features enabled: false
+ Level generator options:
+ Level spawn location: World: (244,64,256), Chunk: (at 4,4,0 in 15,16; contains blocks 240,0,256 to 255,255,271), Region: (0,0; contains chunks 0,0 to 31,31, blocks 0,0,0 to 511,255,511)
+ Level time: 48663 game time, 48663 day time
+ Level dimension: 0
+ Level storage version: 0x00000 - Unknown?
+ Level weather: Rain time: 0 (now: false), thunder time: 0 (now: false)
+ Level game mode: Game mode: creative (ID 1). Hardcore: false. Cheats: false
+ Forced entities: 118 total; [EntityBat['Bat'/1792, l='MpServer', x=214.33, y=11.52, z=188.98], EntityBat['Bat'/769, l='MpServer', x=114.75, y=18.85, z=264.56], EntityZombie['Zombie'/1032, l='MpServer', x=201.50, y=56.00, z=287.50], EntitySkeleton['Skeleton'/1292, l='MpServer', x=106.50, y=66.00, z=251.50], EntityBat['Bat'/1562, l='MpServer', x=222.38, y=45.10, z=289.75], EntityPig['Pig'/33, l='MpServer', x=110.69, y=69.00, z=184.50], EntityPig['Pig'/34, l='MpServer', x=109.88, y=63.00, z=206.94], EntityCreeper['Creeper'/2083, l='MpServer', x=206.54, y=65.00, z=281.14], EntityCreeper['Creeper'/2084, l='MpServer', x=203.50, y=65.00, z=281.50], EntityPig['Pig'/39, l='MpServer', x=111.66, y=74.00, z=236.13], EntityPig['Pig'/40, l='MpServer', x=106.03, y=74.00, z=233.03], EntityChicken['Chicken'/48, l='MpServer', x=113.38, y=76.00, z=334.56], EntitySkeleton['Skeleton'/1592, l='MpServer', x=260.50, y=52.00, z=221.50], EntityZombie['Zombie'/1593, l='MpServer', x=258.50, y=52.00, z=229.50], EntityCreeper['Creeper'/1342, l='MpServer', x=201.50, y=16.00, z=272.50], EntityCreeper['Creeper'/1343, l='MpServer', x=201.50, y=16.00, z=270.50], EntityPig['Pig'/64, l='MpServer', x=112.97, y=64.00, z=176.03], EntityPig['Pig'/66, l='MpServer', x=115.81, y=70.00, z=176.50], EntityPig['Pig'/67, l='MpServer', x=112.94, y=61.94, z=209.97], EntityPig['Pig'/68, l='MpServer', x=112.31, y=67.00, z=200.47], EntityPig['Pig'/69, l='MpServer', x=120.50, y=73.00, z=241.69], EntityCreeper['Creeper'/1349, l='MpServer', x=185.50, y=26.00, z=233.50], EntityZombie['Zombie'/72, l='MpServer', x=120.91, y=21.00, z=324.38], EntityZombie['Zombie'/1098, l='MpServer', x=113.50, y=47.00, z=322.50], EntityItem['item.item.arrow'/1354, l='MpServer', x=180.25, y=70.13, z=208.78], EntityPig['Pig'/81, l='MpServer', x=147.19, y=70.00, z=202.81], EntityPig['Pig'/84, l='MpServer', x=142.84, y=80.00, z=303.13], EntityPig['Pig'/86, l='MpServer', x=137.97, y=80.00, z=330.13], EntityPig['Pig'/87, l='MpServer', x=137.72, y=80.00, z=321.91], EntityChicken['Chicken'/88, l='MpServer', x=141.59, y=80.00, z=333.41], EntitySkeleton['Skeleton'/2139, l='MpServer', x=207.50, y=12.00, z=192.50], EntitySkeleton['Skeleton'/2140, l='MpServer', x=205.50, y=12.00, z=195.50], EntityPig['Pig'/93, l='MpServer', x=143.88, y=66.00, z=191.13], EntityPig['Pig'/94, l='MpServer', x=156.03, y=70.00, z=196.94], EntityCreeper['Creeper'/2142, l='MpServer', x=207.50, y=12.00, z=189.50], EntityPig['Pig'/95, l='MpServer', x=152.50, y=74.00, z=216.69], EntityPig['Pig'/96, l='MpServer', x=152.50, y=76.00, z=219.22], EntityPig['Pig'/97, l='MpServer', x=151.28, y=71.00, z=214.22], EntityPig['Pig'/98, l='MpServer', x=153.56, y=79.00, z=220.25], EntityCreeper['Creeper'/1634, l='MpServer', x=252.50, y=31.00, z=313.50], EntityPig['Pig'/99, l='MpServer', x=159.69, y=83.00, z=211.50], EntitySkeleton['Skeleton'/1636, l='MpServer', x=119.50, y=47.00, z=303.50], EntitySkeleton['Skeleton'/101, l='MpServer', x=149.09, y=76.00, z=238.50], EntityPig['Pig'/102, l='MpServer', x=158.91, y=76.00, z=298.13], EntityPig['Pig'/103, l='MpServer', x=161.16, y=75.00, z=312.03], EntityPig['Pig'/104, l='MpServer', x=158.06, y=75.00, z=304.09], EntityPig['Pig'/105, l='MpServer', x=149.94, y=79.00, z=326.59], EntitySkeleton['Skeleton'/1385, l='MpServer', x=177.50, y=46.00, z=286.50], EntityClientPlayerMP['Draknyte1'/355, l='MpServer', x=184.96, y=81.62, z=254.02], EntitySkeleton['Skeleton'/1386, l='MpServer', x=183.50, y=46.00, z=288.50], EntitySkeleton['Skeleton'/1387, l='MpServer', x=180.50, y=46.00, z=288.50], EntitySkeleton['Skeleton'/1388, l='MpServer', x=184.50, y=46.00, z=286.50], EntityZombie['Zombie'/2156, l='MpServer', x=108.50, y=60.00, z=242.50], EntityEnderman['Enderman'/1389, l='MpServer', x=180.50, y=46.00, z=287.50], EntityEnderman['Enderman'/1390, l='MpServer', x=179.50, y=46.00, z=286.50], EntityPig['Pig'/111, l='MpServer', x=162.81, y=83.00, z=210.19], EntityPig['Pig'/112, l='MpServer', x=167.75, y=85.00, z=212.34], EntityPig['Pig'/113, l='MpServer', x=172.13, y=85.00, z=209.06], EntityPig['Pig'/114, l='MpServer', x=167.50, y=85.00, z=214.50], EntitySkeleton['Skeleton'/116, l='MpServer', x=157.50, y=70.00, z=244.93], EntitySpider['Spider'/117, l='MpServer', x=168.64, y=64.00, z=258.23], EntityCreeper['Creeper'/118, l='MpServer', x=170.31, y=12.00, z=278.31], EntityCreeper['Creeper'/120, l='MpServer', x=171.50, y=30.00, z=286.03], EntityPig['Pig'/123, l='MpServer', x=175.53, y=79.00, z=303.69], EntityPig['Pig'/124, l='MpServer', x=161.53, y=74.00, z=315.81], EntityChicken['Chicken'/125, l='MpServer', x=164.44, y=79.00, z=321.53], EntityItem['item.item.egg'/127, l='MpServer', x=166.88, y=79.13, z=310.25], EntityChicken['Chicken'/128, l='MpServer', x=166.59, y=80.00, z=312.38], EntityPig['Pig'/129, l='MpServer', x=175.53, y=81.00, z=310.44], EntityChicken['Chicken'/132, l='MpServer', x=165.53, y=81.00, z=322.53], EntitySkeleton['Skeleton'/1172, l='MpServer', x=190.50, y=48.00, z=178.50], EntityBat['Bat'/150, l='MpServer', x=175.59, y=17.10, z=275.75], EntitySpider['Spider'/1174, l='MpServer', x=189.50, y=48.00, z=180.50], EntityPig['Pig'/151, l='MpServer', x=185.97, y=78.00, z=302.09], EntityPig['Pig'/153, l='MpServer', x=181.13, y=77.00, z=308.13], EntitySkeleton['Skeleton'/926, l='MpServer', x=243.50, y=18.00, z=187.13], EntityBat['Bat'/160, l='MpServer', x=207.97, y=14.10, z=203.75], EntitySheep['Sheep'/161, l='MpServer', x=196.88, y=67.00, z=194.97], EntityBat['Bat'/162, l='MpServer', x=203.50, y=62.10, z=238.25], EntitySkeleton['Skeleton'/164, l='MpServer', x=194.44, y=17.00, z=249.13], EntitySkeleton['Skeleton'/165, l='MpServer', x=188.56, y=71.00, z=246.88], EntityCreeper['Creeper'/166, l='MpServer', x=199.44, y=78.00, z=269.97], EntityCreeper['Creeper'/167, l='MpServer', x=206.03, y=73.00, z=268.56], EntityEnderman['Enderman'/168, l='MpServer', x=202.62, y=70.63, z=272.68], EntityBat['Bat'/1448, l='MpServer', x=225.75, y=39.00, z=288.75], EntityEnderman['Enderman'/169, l='MpServer', x=201.31, y=71.00, z=271.53], EntityBat['Bat'/1449, l='MpServer', x=218.17, y=40.95, z=272.99], EntityBat['Bat'/1452, l='MpServer', x=210.25, y=20.10, z=306.50], EntityBat['Bat'/1453, l='MpServer', x=205.72, y=21.77, z=307.43], EntityBat['Bat'/1455, l='MpServer', x=196.50, y=22.12, z=296.70], EntitySheep['Sheep'/181, l='MpServer', x=209.63, y=68.00, z=181.09], EntitySheep['Sheep'/182, l='MpServer', x=211.59, y=67.00, z=182.47], EntitySheep['Sheep'/183, l='MpServer', x=221.97, y=66.00, z=184.97], EntityZombie['Zombie'/1975, l='MpServer', x=214.50, y=11.00, z=210.50], EntityChicken['Chicken'/184, l='MpServer', x=220.66, y=65.00, z=178.47], EntityCreeper['Creeper'/186, l='MpServer', x=211.94, y=62.00, z=273.59], EntitySkeleton['Skeleton'/1730, l='MpServer', x=185.50, y=26.00, z=237.50], EntityEnderman['Enderman'/963, l='MpServer', x=108.50, y=46.00, z=311.50], EntitySkeleton['Skeleton'/1731, l='MpServer', x=160.44, y=65.00, z=253.56], EntityEnderman['Enderman'/964, l='MpServer', x=107.72, y=46.00, z=313.69], EntityBat['Bat'/1989, l='MpServer', x=176.97, y=21.03, z=253.47], EntitySkeleton['Skeleton'/968, l='MpServer', x=168.50, y=31.00, z=281.50], EntitySkeleton['Skeleton'/1738, l='MpServer', x=189.50, y=59.00, z=265.50], EntityChicken['Chicken'/203, l='MpServer', x=225.63, y=67.00, z=184.47], EntityCreeper['Creeper'/206, l='MpServer', x=229.50, y=23.00, z=193.50], EntityBat['Bat'/2004, l='MpServer', x=189.94, y=43.05, z=320.97], EntityBat['Bat'/2007, l='MpServer', x=192.57, y=44.72, z=331.16], EntityBat['Bat'/2008, l='MpServer', x=195.84, y=43.83, z=332.84], EntityPig['Pig'/217, l='MpServer', x=250.69, y=67.00, z=182.47], EntityBat['Bat'/2009, l='MpServer', x=186.95, y=42.26, z=324.39], EntityPig['Pig'/218, l='MpServer', x=245.81, y=66.00, z=175.81], EntityPig['Pig'/219, l='MpServer', x=241.97, y=66.00, z=183.06], EntityCreeper['Creeper'/222, l='MpServer', x=247.50, y=16.00, z=313.50], EntityCreeper['Creeper'/224, l='MpServer', x=256.72, y=31.00, z=312.47], EntityBat['Bat'/1271, l='MpServer', x=160.25, y=21.18, z=251.63], EntitySpider['Spider'/1016, l='MpServer', x=189.50, y=24.00, z=236.50], EntityCreeper['Creeper'/1017, l='MpServer', x=189.50, y=24.00, z=233.50], EntityCreeper['Creeper'/1532, l='MpServer', x=124.50, y=42.00, z=278.50]]
+ Retry entities: 0 total; []
+ Server brand: fml,forge
+ Server type: Integrated singleplayer server
+Stacktrace:
+ at net.minecraft.client.multiplayer.WorldClient.addWorldInfoToCrashReport(WorldClient.java:415)
+ at net.minecraft.client.Minecraft.addGraphicsAndWorldToCrashReport(Minecraft.java:2566)
+ at net.minecraft.client.Minecraft.run(Minecraft.java:984)
+ at net.minecraft.client.main.Main.main(Main.java:164)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+ at java.lang.reflect.Method.invoke(Unknown Source)
+ at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)
+ at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
+ at net.minecraftforge.gradle.GradleStartCommon.launch(Unknown Source)
+ at GradleStart.main(Unknown Source)
+
+-- System Details --
+Details:
+ Minecraft Version: 1.7.10
+ Operating System: Windows 7 (amd64) version 6.1
+ Java Version: 1.8.0_60, Oracle Corporation
+ Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
+ Memory: 87566296 bytes (83 MB) / 972554240 bytes (927 MB) up to 3804758016 bytes (3628 MB)
+ JVM Flags: 0 total;
+ AABB Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
+ IntCache: cache: 0, tcache: 18, allocated: 12, tallocated: 94
+ FML: MCP v9.05 FML v7.10.99.99 Minecraft Forge 10.13.4.1448 5 mods loaded, 5 mods active
+ States: 'U' = Unloaded 'L' = Loaded 'C' = Constructed 'H' = Pre-initialized 'I' = Initialized 'J' = Post-initialized 'A' = Available 'D' = Disabled 'E' = Errored
+ UCHIJAAAA mcp{9.05} [Minecraft Coder Pack] (minecraft.jar)
+ UCHIJAAAA FML{7.10.99.99} [Forge Mod Loader] (forgeSrc-1.7.10-10.13.4.1448-1.7.10.jar)
+ UCHIJAAAA Forge{10.13.4.1448} [Minecraft Forge] (forgeSrc-1.7.10-10.13.4.1448-1.7.10.jar)
+ UCHIJAAAA CodeChickenCore{1.0.4.29} [CodeChicken Core] (minecraft.jar)
+ UCHIJAAAA miscutils{0.2.2} [miscutils] (bin)
+ GL info: ' Vendor: 'NVIDIA Corporation' Version: '4.5.0 NVIDIA 347.52' Renderer: 'GeForce GTX 770/PCIe/SSE2'
+ Launched Version: 1.7.10
+ LWJGL: 2.9.1
+ OpenGL: GeForce GTX 770/PCIe/SSE2 GL version 4.5.0 NVIDIA 347.52, NVIDIA Corporation
+ GL Caps: Using GL 1.3 multitexturing.
+Using framebuffer objects because OpenGL 3.0 is supported and separate blending is supported.
+Anisotropic filtering is supported and maximum anisotropy is 16.
+Shaders are available because OpenGL 2.1 is supported.
+
+ Is Modded: Definitely; Client brand changed to 'fml,forge'
+ Type: Client (map_client.txt)
+ Resource Packs: []
+ Current Language: English (US)
+ Profiler Position: N/A (disabled)
+ Vec3 Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
+ Anisotropic Filtering: Off (1) \ No newline at end of file
diff --git a/crash-reports/crash-2015-09-03_06.08.01-server.txt b/crash-reports/crash-2015-09-03_06.08.01-server.txt
new file mode 100644
index 0000000000..5df396518b
--- /dev/null
+++ b/crash-reports/crash-2015-09-03_06.08.01-server.txt
@@ -0,0 +1,81 @@
+---- Minecraft Crash Report ----
+// I'm sorry, Dave.
+
+Time: 3/09/15 6:08 AM
+Description: Ticking memory connection
+
+java.lang.ArrayIndexOutOfBoundsException: 4
+ at net.minecraft.entity.player.InventoryPlayer.getStackInSlot(InventoryPlayer.java:646)
+ at net.minecraft.inventory.Slot.getStack(Slot.java:88)
+ at net.minecraft.inventory.Container.getInventory(Container.java:67)
+ at net.minecraft.inventory.Container.addCraftingToCrafters(Container.java:53)
+ at miscutil.inventory.ContainerArcaneInfuser.addCraftingToCrafters(ContainerArcaneInfuser.java:43)
+ at cpw.mods.fml.common.network.internal.FMLNetworkHandler.openGui(FMLNetworkHandler.java:88)
+ at net.minecraft.entity.player.EntityPlayer.openGui(EntityPlayer.java:2501)
+ at miscutil.block.ArcaneInfuser.onBlockActivated(ArcaneInfuser.java:59)
+ at net.minecraft.server.management.ItemInWorldManager.activateBlockOrUseItem(ItemInWorldManager.java:409)
+ at net.minecraft.network.NetHandlerPlayServer.processPlayerBlockPlacement(NetHandlerPlayServer.java:593)
+ at net.minecraft.network.play.client.C08PacketPlayerBlockPlacement.processPacket(C08PacketPlayerBlockPlacement.java:74)
+ at net.minecraft.network.play.client.C08PacketPlayerBlockPlacement.processPacket(C08PacketPlayerBlockPlacement.java:122)
+ at net.minecraft.network.NetworkManager.processReceivedPackets(NetworkManager.java:241)
+ at net.minecraft.network.NetworkSystem.networkTick(NetworkSystem.java:182)
+ at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:726)
+ at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:614)
+ at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:118)
+ at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:485)
+ at net.minecraft.server.MinecraftServer$2.run(MinecraftServer.java:752)
+
+
+A detailed walkthrough of the error, its code path and all known details is as follows:
+---------------------------------------------------------------------------------------
+
+-- Head --
+Stacktrace:
+ at net.minecraft.entity.player.InventoryPlayer.getStackInSlot(InventoryPlayer.java:646)
+ at net.minecraft.inventory.Slot.getStack(Slot.java:88)
+ at net.minecraft.inventory.Container.getInventory(Container.java:67)
+ at net.minecraft.inventory.Container.addCraftingToCrafters(Container.java:53)
+ at miscutil.inventory.ContainerArcaneInfuser.addCraftingToCrafters(ContainerArcaneInfuser.java:43)
+ at cpw.mods.fml.common.network.internal.FMLNetworkHandler.openGui(FMLNetworkHandler.java:88)
+ at net.minecraft.entity.player.EntityPlayer.openGui(EntityPlayer.java:2501)
+ at miscutil.block.ArcaneInfuser.onBlockActivated(ArcaneInfuser.java:59)
+ at net.minecraft.server.management.ItemInWorldManager.activateBlockOrUseItem(ItemInWorldManager.java:409)
+ at net.minecraft.network.NetHandlerPlayServer.processPlayerBlockPlacement(NetHandlerPlayServer.java:593)
+ at net.minecraft.network.play.client.C08PacketPlayerBlockPlacement.processPacket(C08PacketPlayerBlockPlacement.java:74)
+ at net.minecraft.network.play.client.C08PacketPlayerBlockPlacement.processPacket(C08PacketPlayerBlockPlacement.java:122)
+ at net.minecraft.network.NetworkManager.processReceivedPackets(NetworkManager.java:241)
+
+-- Ticking connection --
+Details:
+ Connection: net.minecraft.network.NetworkManager@596ffd7
+Stacktrace:
+ at net.minecraft.network.NetworkSystem.networkTick(NetworkSystem.java:182)
+ at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:726)
+ at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:614)
+ at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:118)
+ at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:485)
+ at net.minecraft.server.MinecraftServer$2.run(MinecraftServer.java:752)
+
+-- System Details --
+Details:
+ Minecraft Version: 1.7.10
+ Operating System: Windows 7 (amd64) version 6.1
+ Java Version: 1.8.0_60, Oracle Corporation
+ Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
+ Memory: 864455208 bytes (824 MB) / 1063256064 bytes (1014 MB) up to 3804758016 bytes (3628 MB)
+ JVM Flags: 0 total;
+ AABB Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
+ IntCache: cache: 0, tcache: 18, allocated: 12, tallocated: 94
+ FML: MCP v9.05 FML v7.10.99.99 Minecraft Forge 10.13.4.1448 5 mods loaded, 5 mods active
+ States: 'U' = Unloaded 'L' = Loaded 'C' = Constructed 'H' = Pre-initialized 'I' = Initialized 'J' = Post-initialized 'A' = Available 'D' = Disabled 'E' = Errored
+ UCHIJAAAA mcp{9.05} [Minecraft Coder Pack] (minecraft.jar)
+ UCHIJAAAA FML{7.10.99.99} [Forge Mod Loader] (forgeSrc-1.7.10-10.13.4.1448-1.7.10.jar)
+ UCHIJAAAA Forge{10.13.4.1448} [Minecraft Forge] (forgeSrc-1.7.10-10.13.4.1448-1.7.10.jar)
+ UCHIJAAAA CodeChickenCore{1.0.4.29} [CodeChicken Core] (minecraft.jar)
+ UCHIJAAAA miscutils{0.2.2} [miscutils] (bin)
+ GL info: ~~ERROR~~ RuntimeException: No OpenGL context found in the current thread.
+ Profiler Position: N/A (disabled)
+ Vec3 Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
+ Player Count: 1 / 8; [EntityPlayerMP['Draknyte1'/355, l='New World', x=184.96, y=80.00, z=254.02]]
+ Type: Integrated Server (map_client.txt)
+ Is Modded: Definitely; Client brand changed to 'fml,forge' \ No newline at end of file
diff --git a/crash-reports/crash-2015-09-06_16.12.20-client.txt b/crash-reports/crash-2015-09-06_16.12.20-client.txt
new file mode 100644
index 0000000000..403c7c71e8
--- /dev/null
+++ b/crash-reports/crash-2015-09-06_16.12.20-client.txt
@@ -0,0 +1,106 @@
+---- Minecraft Crash Report ----
+// This doesn't make any sense!
+
+Time: 6/09/15 4:12 PM
+Description: Unexpected error
+
+java.lang.ClassCastException: miscutil.tile_entity.TileEntityBloodSteelFurnace cannot be cast to miscutil.tile_entity.TileEntityArcaneInfuser
+ at miscutil.handler.TMGuiHandler.getClientGuiElement(TMGuiHandler.java:30)
+ at cpw.mods.fml.common.network.NetworkRegistry.getLocalGuiContainer(NetworkRegistry.java:265)
+ at cpw.mods.fml.common.network.internal.FMLNetworkHandler.openGui(FMLNetworkHandler.java:93)
+ at net.minecraft.entity.player.EntityPlayer.openGui(EntityPlayer.java:2501)
+ at miscutil.block.BloodSteelFurnace.onBlockActivated(BloodSteelFurnace.java:59)
+ at net.minecraft.client.multiplayer.PlayerControllerMP.onPlayerRightClick(PlayerControllerMP.java:376)
+ at net.minecraft.client.Minecraft.func_147121_ag(Minecraft.java:1529)
+ at net.minecraft.client.Minecraft.runTick(Minecraft.java:2044)
+ at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1039)
+ at net.minecraft.client.Minecraft.run(Minecraft.java:962)
+ at net.minecraft.client.main.Main.main(Main.java:164)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+ at java.lang.reflect.Method.invoke(Unknown Source)
+ at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)
+ at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
+ at net.minecraftforge.gradle.GradleStartCommon.launch(Unknown Source)
+ at GradleStart.main(Unknown Source)
+
+
+A detailed walkthrough of the error, its code path and all known details is as follows:
+---------------------------------------------------------------------------------------
+
+-- Head --
+Stacktrace:
+ at miscutil.handler.TMGuiHandler.getClientGuiElement(TMGuiHandler.java:30)
+ at cpw.mods.fml.common.network.NetworkRegistry.getLocalGuiContainer(NetworkRegistry.java:265)
+ at cpw.mods.fml.common.network.internal.FMLNetworkHandler.openGui(FMLNetworkHandler.java:93)
+ at net.minecraft.entity.player.EntityPlayer.openGui(EntityPlayer.java:2501)
+ at miscutil.block.BloodSteelFurnace.onBlockActivated(BloodSteelFurnace.java:59)
+ at net.minecraft.client.multiplayer.PlayerControllerMP.onPlayerRightClick(PlayerControllerMP.java:376)
+ at net.minecraft.client.Minecraft.func_147121_ag(Minecraft.java:1529)
+
+-- Affected level --
+Details:
+ Level name: MpServer
+ All players: 1 total; [EntityClientPlayerMP['Player252'/350, l='MpServer', x=187.75, y=81.62, z=256.08]]
+ Chunk stats: MultiplayerChunkCache: 599, 599
+ Level seed: 0
+ Level generator: ID 00 - default, ver 1. Features enabled: false
+ Level generator options:
+ Level spawn location: World: (244,64,256), Chunk: (at 4,4,0 in 15,16; contains blocks 240,0,256 to 255,255,271), Region: (0,0; contains chunks 0,0 to 31,31, blocks 0,0,0 to 511,255,511)
+ Level time: 971091 game time, 971091 day time
+ Level dimension: 0
+ Level storage version: 0x00000 - Unknown?
+ Level weather: Rain time: 0 (now: false), thunder time: 0 (now: false)
+ Level game mode: Game mode: creative (ID 1). Hardcore: false. Cheats: false
+ Forced entities: 122 total; [EntityPig['Pig'/29, l='MpServer', x=109.53, y=65.00, z=180.97], EntityPig['Pig'/31, l='MpServer', x=110.47, y=77.00, z=238.13], EntityPig['Pig'/32, l='MpServer', x=111.47, y=76.00, z=240.50], EntityCreeper['Creeper'/34, l='MpServer', x=115.65, y=67.00, z=254.52], EntitySlime['Slime'/35, l='MpServer', x=110.31, y=39.00, z=310.69], EntityPig['Pig'/50, l='MpServer', x=121.84, y=63.00, z=190.41], EntityPig['Pig'/51, l='MpServer', x=112.47, y=62.22, z=206.19], EntitySlime['Slime'/53, l='MpServer', x=117.31, y=16.00, z=249.31], EntityZombie['Zombie'/54, l='MpServer', x=127.50, y=20.00, z=255.91], EntitySlime['Slime'/55, l='MpServer', x=115.32, y=51.00, z=253.31], EntityPig['Pig'/56, l='MpServer', x=112.84, y=75.00, z=242.03], EntityCreeper['Creeper'/57, l='MpServer', x=131.50, y=21.00, z=264.03], EntityZombie['Zombie'/58, l='MpServer', x=123.00, y=36.00, z=260.56], EntitySkeleton['Skeleton'/59, l='MpServer', x=120.59, y=23.00, z=316.84], EntityBat['Bat'/60, l='MpServer', x=118.75, y=25.84, z=320.59], EntityChicken['Chicken'/61, l='MpServer', x=121.47, y=74.00, z=310.56], EntityChicken['Chicken'/62, l='MpServer', x=113.44, y=74.00, z=313.66], EntitySpider['Spider'/63, l='MpServer', x=120.72, y=22.00, z=320.91], EntityChicken['Chicken'/64, l='MpServer', x=115.56, y=76.00, z=330.59], EntityPig['Pig'/68, l='MpServer', x=147.78, y=64.00, z=183.31], EntityPig['Pig'/69, l='MpServer', x=137.03, y=63.00, z=203.03], EntitySkeleton['Skeleton'/70, l='MpServer', x=136.97, y=63.00, z=249.50], EntitySpider['Spider'/71, l='MpServer', x=144.28, y=22.00, z=259.72], EntityZombie['Zombie'/72, l='MpServer', x=136.50, y=20.00, z=263.50], EntityZombie['Zombie'/73, l='MpServer', x=135.50, y=20.00, z=262.50], EntityZombie['Zombie'/74, l='MpServer', x=133.44, y=20.00, z=260.88], EntitySlime['Slime'/75, l='MpServer', x=142.38, y=16.00, z=295.38], EntitySlime['Slime'/76, l='MpServer', x=130.31, y=22.00, z=289.31], EntityPig['Pig'/77, l='MpServer', x=137.16, y=80.00, z=315.84], EntityZombie['Zombie'/78, l='MpServer', x=136.63, y=20.00, z=328.06], EntityBat['Bat'/79, l='MpServer', x=122.26, y=25.64, z=316.38], EntityBat['Bat'/80, l='MpServer', x=130.83, y=40.30, z=322.13], EntityChicken['Chicken'/81, l='MpServer', x=129.59, y=79.00, z=334.41], EntityPig['Pig'/83, l='MpServer', x=141.88, y=80.00, z=333.97], EntityPig['Pig'/85, l='MpServer', x=155.91, y=70.00, z=197.50], EntityPig['Pig'/86, l='MpServer', x=158.11, y=73.00, z=196.50], EntityPig['Pig'/87, l='MpServer', x=163.88, y=75.00, z=201.34], EntityPig['Pig'/88, l='MpServer', x=153.06, y=77.00, z=217.66], EntityPig['Pig'/89, l='MpServer', x=149.50, y=81.00, z=229.69], EntitySkeleton['Skeleton'/90, l='MpServer', x=144.50, y=64.00, z=251.88], EntitySlime['Slime'/91, l='MpServer', x=152.69, y=20.00, z=278.69], EntitySlime['Slime'/92, l='MpServer', x=152.38, y=21.32, z=281.63], EntitySlime['Slime'/93, l='MpServer', x=148.69, y=21.00, z=273.31], EntityZombie['Zombie'/94, l='MpServer', x=155.50, y=71.00, z=278.50], EntityZombie['Zombie'/95, l='MpServer', x=153.50, y=71.00, z=273.91], EntityPig['Pig'/96, l='MpServer', x=154.03, y=76.00, z=296.03], EntityChicken['Chicken'/97, l='MpServer', x=155.47, y=75.00, z=309.53], EntityPig['Pig'/98, l='MpServer', x=154.31, y=78.00, z=310.50], EntityPig['Pig'/99, l='MpServer', x=145.88, y=82.00, z=319.13], EntityPig['Pig'/100, l='MpServer', x=153.50, y=80.00, z=311.69], EntityPig['Pig'/105, l='MpServer', x=172.50, y=83.00, z=216.25], EntityPig['Pig'/106, l='MpServer', x=168.47, y=85.00, z=217.31], EntityPig['Pig'/107, l='MpServer', x=160.25, y=84.00, z=220.63], EntityPig['Pig'/108, l='MpServer', x=162.94, y=84.00, z=223.94], EntityPig['Pig'/109, l='MpServer', x=160.09, y=82.00, z=209.13], EntityBloodSteelMob['Friendly Fellow [WIP]'/110, l='MpServer', x=175.44, y=78.00, z=260.13], EntitySlime['Slime'/111, l='MpServer', x=173.31, y=15.01, z=277.31], EntityCreeper['Creeper'/112, l='MpServer', x=172.50, y=70.00, z=282.50], EntitySkeleton['Skeleton'/113, l='MpServer', x=169.47, y=70.00, z=283.16], EntityPig['Pig'/114, l='MpServer', x=161.53, y=74.00, z=315.53], EntityChicken['Chicken'/115, l='MpServer', x=152.41, y=81.04, z=321.31], EntityChicken['Chicken'/117, l='MpServer', x=160.38, y=85.00, z=323.44], EntityClientPlayerMP['Player252'/350, l='MpServer', x=187.75, y=81.62, z=256.08], EntitySheep['Sheep'/127, l='MpServer', x=179.28, y=66.00, z=182.34], EntityZombie['Zombie'/128, l='MpServer', x=183.97, y=72.00, z=253.47], EntityCreeper['Creeper'/129, l='MpServer', x=180.41, y=78.00, z=256.00], EntitySpider['Spider'/130, l='MpServer', x=181.28, y=78.00, z=260.53], EntityCreeper['Creeper'/131, l='MpServer', x=177.44, y=78.00, z=257.16], EntitySlime['Slime'/132, l='MpServer', x=187.31, y=16.01, z=288.80], EntityPig['Pig'/133, l='MpServer', x=182.50, y=79.00, z=293.31], EntityPig['Pig'/134, l='MpServer', x=181.47, y=78.00, z=299.19], EntityPig['Pig'/135, l='MpServer', x=192.91, y=79.00, z=310.91], EntityPig['Pig'/136, l='MpServer', x=182.66, y=78.00, z=310.25], EntitySheep['Sheep'/143, l='MpServer', x=204.13, y=68.00, z=191.81], EntityChicken['Chicken'/144, l='MpServer', x=203.53, y=68.00, z=189.53], EntitySheep['Sheep'/145, l='MpServer', x=207.97, y=68.00, z=203.09], EntityBat['Bat'/146, l='MpServer', x=203.50, y=62.10, z=238.25], EntityZombie['Zombie'/147, l='MpServer', x=201.22, y=56.00, z=236.47], EntityBat['Bat'/148, l='MpServer', x=196.50, y=55.10, z=244.34], EntityBat['Bat'/149, l='MpServer', x=202.72, y=56.10, z=243.25], EntityEnderman['Enderman'/150, l='MpServer', x=197.84, y=65.00, z=247.50], EntityCreeper['Creeper'/151, l='MpServer', x=199.41, y=65.00, z=252.41], EntityBat['Bat'/152, l='MpServer', x=202.55, y=46.00, z=261.35], EntityCreeper['Creeper'/153, l='MpServer', x=200.74, y=78.00, z=269.57], EntityCreeper['Creeper'/154, l='MpServer', x=196.31, y=77.00, z=271.69], EntityBat['Bat'/155, l='MpServer', x=202.75, y=63.10, z=278.25], EntityZombie['Zombie'/156, l='MpServer', x=202.50, y=57.00, z=282.50], EntityZombie['Zombie'/157, l='MpServer', x=199.59, y=55.00, z=285.47], EntityCreeper['Creeper'/158, l='MpServer', x=203.75, y=53.00, z=278.63], EntityBat['Bat'/159, l='MpServer', x=203.44, y=68.10, z=279.25], EntityCreeper['Creeper'/160, l='MpServer', x=208.00, y=76.00, z=276.59], EntityCreeper['Creeper'/161, l='MpServer', x=206.75, y=76.00, z=276.31], EntitySlime['Slime'/162, l='MpServer', x=193.69, y=16.00, z=290.69], EntityBat['Bat'/163, l='MpServer', x=203.75, y=19.77, z=311.47], EntitySheep['Sheep'/171, l='MpServer', x=219.22, y=66.00, z=179.13], EntityBat['Bat'/172, l='MpServer', x=209.75, y=65.10, z=242.41], EntityBat['Bat'/173, l='MpServer', x=210.75, y=62.10, z=268.25], EntityZombie['Zombie'/174, l='MpServer', x=211.69, y=63.00, z=264.97], EntityZombie['Zombie'/175, l='MpServer', x=211.16, y=63.00, z=264.16], EntityBat['Bat'/176, l='MpServer', x=216.18, y=57.86, z=270.49], EntitySkeleton['Skeleton'/177, l='MpServer', x=210.72, y=63.00, z=265.69], EntitySkeleton['Skeleton'/178, l='MpServer', x=208.88, y=64.00, z=263.50], EntityBat['Bat'/179, l='MpServer', x=208.75, y=74.10, z=264.75], EntitySkeleton['Skeleton'/180, l='MpServer', x=209.31, y=63.00, z=265.53], EntityZombie['Zombie'/181, l='MpServer', x=209.69, y=64.00, z=261.31], EntityZombie['Zombie'/182, l='MpServer', x=208.81, y=64.00, z=262.22], EntityZombie['Zombie'/183, l='MpServer', x=214.50, y=17.00, z=281.50], EntitySkeleton['Skeleton'/184, l='MpServer', x=209.50, y=17.00, z=279.50], EntityZombie['Zombie'/185, l='MpServer', x=222.31, y=39.00, z=283.25], EntityZombie['Zombie'/186, l='MpServer', x=208.56, y=76.00, z=275.78], EntityZombie['Zombie'/187, l='MpServer', x=209.50, y=25.00, z=296.50], EntityZombie['Zombie'/188, l='MpServer', x=223.16, y=39.00, z=288.84], EntityZombie['Zombie'/189, l='MpServer', x=208.50, y=18.00, z=309.50], EntityPig['Pig'/210, l='MpServer', x=238.50, y=66.00, z=178.66], EntityPig['Pig'/211, l='MpServer', x=225.09, y=66.00, z=182.34], EntitySkeleton['Skeleton'/212, l='MpServer', x=241.22, y=42.54, z=297.11], EntityZombie['Zombie'/213, l='MpServer', x=220.31, y=40.00, z=281.53], EntitySkeleton['Skeleton'/214, l='MpServer', x=236.50, y=52.00, z=291.50], EntityChicken['Chicken'/215, l='MpServer', x=239.38, y=69.00, z=336.63], EntityPig['Pig'/220, l='MpServer', x=257.03, y=68.00, z=185.97], EntityCreeper['Creeper'/221, l='MpServer', x=251.50, y=51.00, z=326.50], EntitySkeleton['Skeleton'/233, l='MpServer', x=256.97, y=41.00, z=218.38]]
+ Retry entities: 0 total; []
+ Server brand: fml,forge
+ Server type: Integrated singleplayer server
+Stacktrace:
+ at net.minecraft.client.multiplayer.WorldClient.addWorldInfoToCrashReport(WorldClient.java:415)
+ at net.minecraft.client.Minecraft.addGraphicsAndWorldToCrashReport(Minecraft.java:2566)
+ at net.minecraft.client.Minecraft.run(Minecraft.java:991)
+ at net.minecraft.client.main.Main.main(Main.java:164)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+ at java.lang.reflect.Method.invoke(Unknown Source)
+ at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)
+ at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
+ at net.minecraftforge.gradle.GradleStartCommon.launch(Unknown Source)
+ at GradleStart.main(Unknown Source)
+
+-- System Details --
+Details:
+ Minecraft Version: 1.7.10
+ Operating System: Windows 7 (amd64) version 6.1
+ Java Version: 1.8.0_60, Oracle Corporation
+ Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
+ Memory: 889320736 bytes (848 MB) / 1180172288 bytes (1125 MB) up to 3804758016 bytes (3628 MB)
+ JVM Flags: 0 total;
+ AABB Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
+ IntCache: cache: 0, tcache: 0, allocated: 12, tallocated: 94
+ FML: MCP v9.05 FML v7.10.99.99 Minecraft Forge 10.13.4.1448 5 mods loaded, 5 mods active
+ States: 'U' = Unloaded 'L' = Loaded 'C' = Constructed 'H' = Pre-initialized 'I' = Initialized 'J' = Post-initialized 'A' = Available 'D' = Disabled 'E' = Errored
+ UCHIJAAAA mcp{9.05} [Minecraft Coder Pack] (minecraft.jar)
+ UCHIJAAAA FML{7.10.99.99} [Forge Mod Loader] (forgeSrc-1.7.10-10.13.4.1448-1.7.10.jar)
+ UCHIJAAAA Forge{10.13.4.1448} [Minecraft Forge] (forgeSrc-1.7.10-10.13.4.1448-1.7.10.jar)
+ UCHIJAAAA CodeChickenCore{1.0.4.29} [CodeChicken Core] (minecraft.jar)
+ UCHIJAAAA miscutils{0.2.2} [miscutils] (bin)
+ GL info: ' Vendor: 'NVIDIA Corporation' Version: '4.5.0 NVIDIA 347.52' Renderer: 'GeForce GTX 770/PCIe/SSE2'
+ Launched Version: 1.7.10
+ LWJGL: 2.9.1
+ OpenGL: GeForce GTX 770/PCIe/SSE2 GL version 4.5.0 NVIDIA 347.52, NVIDIA Corporation
+ GL Caps: Using GL 1.3 multitexturing.
+Using framebuffer objects because OpenGL 3.0 is supported and separate blending is supported.
+Anisotropic filtering is supported and maximum anisotropy is 16.
+Shaders are available because OpenGL 2.1 is supported.
+
+ Is Modded: Definitely; Client brand changed to 'fml,forge'
+ Type: Client (map_client.txt)
+ Resource Packs: []
+ Current Language: English (US)
+ Profiler Position: N/A (disabled)
+ Vec3 Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
+ Anisotropic Filtering: Off (1) \ No newline at end of file
diff --git a/crash-reports/crash-2015-09-06_16.15.28-client.txt b/crash-reports/crash-2015-09-06_16.15.28-client.txt
new file mode 100644
index 0000000000..58546147f9
--- /dev/null
+++ b/crash-reports/crash-2015-09-06_16.15.28-client.txt
@@ -0,0 +1,106 @@
+---- Minecraft Crash Report ----
+// Surprise! Haha. Well, this is awkward.
+
+Time: 6/09/15 4:15 PM
+Description: Unexpected error
+
+java.lang.ClassCastException: miscutil.tile_entity.TileEntityBloodSteelFurnace cannot be cast to miscutil.tile_entity.TileEntityArcaneInfuser
+ at miscutil.handler.ArcaneInfuserGuiHandler.getClientGuiElement(ArcaneInfuserGuiHandler.java:30)
+ at cpw.mods.fml.common.network.NetworkRegistry.getLocalGuiContainer(NetworkRegistry.java:265)
+ at cpw.mods.fml.common.network.internal.FMLNetworkHandler.openGui(FMLNetworkHandler.java:93)
+ at net.minecraft.entity.player.EntityPlayer.openGui(EntityPlayer.java:2501)
+ at miscutil.block.BloodSteelFurnace.onBlockActivated(BloodSteelFurnace.java:59)
+ at net.minecraft.client.multiplayer.PlayerControllerMP.onPlayerRightClick(PlayerControllerMP.java:376)
+ at net.minecraft.client.Minecraft.func_147121_ag(Minecraft.java:1529)
+ at net.minecraft.client.Minecraft.runTick(Minecraft.java:2044)
+ at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1039)
+ at net.minecraft.client.Minecraft.run(Minecraft.java:962)
+ at net.minecraft.client.main.Main.main(Main.java:164)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+ at java.lang.reflect.Method.invoke(Unknown Source)
+ at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)
+ at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
+ at net.minecraftforge.gradle.GradleStartCommon.launch(Unknown Source)
+ at GradleStart.main(Unknown Source)
+
+
+A detailed walkthrough of the error, its code path and all known details is as follows:
+---------------------------------------------------------------------------------------
+
+-- Head --
+Stacktrace:
+ at miscutil.handler.ArcaneInfuserGuiHandler.getClientGuiElement(ArcaneInfuserGuiHandler.java:30)
+ at cpw.mods.fml.common.network.NetworkRegistry.getLocalGuiContainer(NetworkRegistry.java:265)
+ at cpw.mods.fml.common.network.internal.FMLNetworkHandler.openGui(FMLNetworkHandler.java:93)
+ at net.minecraft.entity.player.EntityPlayer.openGui(EntityPlayer.java:2501)
+ at miscutil.block.BloodSteelFurnace.onBlockActivated(BloodSteelFurnace.java:59)
+ at net.minecraft.client.multiplayer.PlayerControllerMP.onPlayerRightClick(PlayerControllerMP.java:376)
+ at net.minecraft.client.Minecraft.func_147121_ag(Minecraft.java:1529)
+
+-- Affected level --
+Details:
+ Level name: MpServer
+ All players: 1 total; [EntityClientPlayerMP['Player448'/348, l='MpServer', x=187.75, y=81.62, z=256.08]]
+ Chunk stats: MultiplayerChunkCache: 250, 250
+ Level seed: 0
+ Level generator: ID 00 - default, ver 1. Features enabled: false
+ Level generator options:
+ Level spawn location: World: (244,64,256), Chunk: (at 4,4,0 in 15,16; contains blocks 240,0,256 to 255,255,271), Region: (0,0; contains chunks 0,0 to 31,31, blocks 0,0,0 to 511,255,511)
+ Level time: 971155 game time, 971155 day time
+ Level dimension: 0
+ Level storage version: 0x00000 - Unknown?
+ Level weather: Rain time: 0 (now: false), thunder time: 0 (now: false)
+ Level game mode: Game mode: creative (ID 1). Hardcore: false. Cheats: false
+ Forced entities: 122 total; [EntityPig['Pig'/27, l='MpServer', x=109.53, y=65.00, z=180.97], EntityPig['Pig'/30, l='MpServer', x=110.47, y=77.00, z=238.13], EntityPig['Pig'/32, l='MpServer', x=111.47, y=76.00, z=240.50], EntitySlime['Slime'/33, l='MpServer', x=110.31, y=39.00, z=310.69], EntityPig['Pig'/50, l='MpServer', x=121.84, y=63.00, z=190.41], EntityPig['Pig'/51, l='MpServer', x=112.47, y=62.25, z=206.19], EntitySlime['Slime'/52, l='MpServer', x=117.31, y=16.00, z=249.31], EntityZombie['Zombie'/53, l='MpServer', x=127.50, y=20.00, z=255.91], EntitySlime['Slime'/54, l='MpServer', x=116.44, y=51.47, z=253.31], EntityPig['Pig'/55, l='MpServer', x=112.84, y=75.00, z=242.03], EntityCreeper['Creeper'/56, l='MpServer', x=115.59, y=67.00, z=255.13], EntityZombie['Zombie'/57, l='MpServer', x=123.00, y=36.00, z=260.56], EntitySkeleton['Skeleton'/58, l='MpServer', x=120.59, y=23.00, z=316.84], EntityBat['Bat'/59, l='MpServer', x=119.82, y=26.16, z=316.49], EntityChicken['Chicken'/60, l='MpServer', x=121.47, y=74.00, z=310.56], EntityChicken['Chicken'/61, l='MpServer', x=113.44, y=74.00, z=313.66], EntitySpider['Spider'/62, l='MpServer', x=120.72, y=22.00, z=320.91], EntityBat['Bat'/63, l='MpServer', x=120.63, y=26.69, z=314.96], EntityChicken['Chicken'/64, l='MpServer', x=115.56, y=76.00, z=330.59], EntityPig['Pig'/68, l='MpServer', x=137.03, y=63.00, z=203.03], EntitySkeleton['Skeleton'/69, l='MpServer', x=136.97, y=63.00, z=249.50], EntityZombie['Zombie'/70, l='MpServer', x=136.50, y=20.00, z=263.50], EntityZombie['Zombie'/71, l='MpServer', x=135.50, y=20.00, z=262.50], EntityZombie['Zombie'/72, l='MpServer', x=133.44, y=20.00, z=260.88], EntityCreeper['Creeper'/73, l='MpServer', x=131.50, y=21.00, z=264.03], EntitySlime['Slime'/74, l='MpServer', x=142.38, y=16.47, z=295.38], EntitySlime['Slime'/75, l='MpServer', x=130.31, y=22.00, z=289.34], EntityPig['Pig'/76, l='MpServer', x=141.01, y=80.00, z=312.21], EntityZombie['Zombie'/77, l='MpServer', x=136.63, y=20.00, z=328.06], EntityBat['Bat'/78, l='MpServer', x=128.72, y=40.58, z=320.95], EntityChicken['Chicken'/79, l='MpServer', x=129.59, y=79.00, z=334.41], EntityPig['Pig'/81, l='MpServer', x=141.88, y=80.00, z=333.97], EntityPig['Pig'/83, l='MpServer', x=147.78, y=64.00, z=183.31], EntityPig['Pig'/84, l='MpServer', x=155.91, y=70.00, z=197.50], EntityPig['Pig'/85, l='MpServer', x=158.32, y=74.00, z=194.01], EntityPig['Pig'/86, l='MpServer', x=154.52, y=79.00, z=219.99], EntityPig['Pig'/87, l='MpServer', x=149.50, y=81.00, z=229.69], EntitySkeleton['Skeleton'/88, l='MpServer', x=144.50, y=64.00, z=251.88], EntitySpider['Spider'/89, l='MpServer', x=144.28, y=22.00, z=259.72], EntitySlime['Slime'/90, l='MpServer', x=152.69, y=20.00, z=278.69], EntitySlime['Slime'/91, l='MpServer', x=152.38, y=21.47, z=281.63], EntitySlime['Slime'/92, l='MpServer', x=148.69, y=21.00, z=273.31], EntityZombie['Zombie'/93, l='MpServer', x=155.50, y=71.00, z=278.50], EntityZombie['Zombie'/94, l='MpServer', x=153.50, y=71.00, z=273.91], EntityPig['Pig'/95, l='MpServer', x=154.03, y=76.00, z=296.03], EntityChicken['Chicken'/96, l='MpServer', x=155.47, y=75.00, z=309.53], EntityPig['Pig'/97, l='MpServer', x=154.31, y=78.00, z=310.50], EntityPig['Pig'/98, l='MpServer', x=145.88, y=82.00, z=319.13], EntityPig['Pig'/99, l='MpServer', x=153.50, y=80.00, z=311.69], EntityChicken['Chicken'/101, l='MpServer', x=152.38, y=80.00, z=321.16], EntityPig['Pig'/105, l='MpServer', x=163.88, y=75.00, z=201.34], EntityPig['Pig'/106, l='MpServer', x=172.50, y=83.00, z=216.25], EntityPig['Pig'/107, l='MpServer', x=168.47, y=85.00, z=217.31], EntityPig['Pig'/108, l='MpServer', x=160.25, y=84.00, z=220.63], EntityPig['Pig'/109, l='MpServer', x=165.42, y=84.00, z=222.47], EntityPig['Pig'/110, l='MpServer', x=160.09, y=82.00, z=209.13], EntityBloodSteelMob['Friendly Fellow [WIP]'/111, l='MpServer', x=175.44, y=78.00, z=260.09], EntitySlime['Slime'/112, l='MpServer', x=173.31, y=14.00, z=277.31], EntityCreeper['Creeper'/113, l='MpServer', x=172.50, y=70.00, z=282.50], EntitySkeleton['Skeleton'/114, l='MpServer', x=169.47, y=70.00, z=283.16], EntityPig['Pig'/115, l='MpServer', x=161.53, y=74.00, z=315.53], EntityChicken['Chicken'/117, l='MpServer', x=160.38, y=85.00, z=323.44], EntityClientPlayerMP['Player448'/348, l='MpServer', x=187.75, y=81.62, z=256.08], EntitySheep['Sheep'/126, l='MpServer', x=179.28, y=66.00, z=182.34], EntityZombie['Zombie'/127, l='MpServer', x=183.44, y=72.00, z=255.34], EntityCreeper['Creeper'/128, l='MpServer', x=180.41, y=78.00, z=256.00], EntitySpider['Spider'/129, l='MpServer', x=181.28, y=78.00, z=260.53], EntityCreeper['Creeper'/130, l='MpServer', x=177.44, y=78.00, z=257.16], EntitySlime['Slime'/131, l='MpServer', x=187.30, y=15.45, z=288.66], EntityPig['Pig'/132, l='MpServer', x=182.50, y=79.00, z=293.31], EntityPig['Pig'/133, l='MpServer', x=181.47, y=78.00, z=299.19], EntityPig['Pig'/134, l='MpServer', x=182.66, y=78.00, z=310.25], EntitySheep['Sheep'/141, l='MpServer', x=204.13, y=68.00, z=191.81], EntityChicken['Chicken'/142, l='MpServer', x=203.53, y=68.00, z=189.53], EntitySheep['Sheep'/143, l='MpServer', x=207.97, y=68.00, z=203.09], EntityBat['Bat'/144, l='MpServer', x=203.50, y=62.10, z=238.25], EntityZombie['Zombie'/145, l='MpServer', x=201.22, y=56.00, z=236.47], EntityBat['Bat'/146, l='MpServer', x=196.50, y=55.10, z=244.34], EntityBat['Bat'/147, l='MpServer', x=202.72, y=56.10, z=243.25], EntityEnderman['Enderman'/148, l='MpServer', x=197.94, y=65.00, z=247.56], EntityCreeper['Creeper'/149, l='MpServer', x=199.41, y=65.00, z=252.41], EntityBat['Bat'/150, l='MpServer', x=199.39, y=46.39, z=258.97], EntityCreeper['Creeper'/151, l='MpServer', x=200.71, y=78.00, z=270.67], EntityCreeper['Creeper'/152, l='MpServer', x=196.31, y=77.00, z=271.69], EntityBat['Bat'/153, l='MpServer', x=202.75, y=63.10, z=278.25], EntityZombie['Zombie'/154, l='MpServer', x=202.50, y=57.00, z=282.50], EntityZombie['Zombie'/155, l='MpServer', x=199.59, y=55.00, z=285.47], EntityCreeper['Creeper'/156, l='MpServer', x=203.75, y=53.00, z=278.63], EntityBat['Bat'/157, l='MpServer', x=203.44, y=68.10, z=279.25], EntityCreeper['Creeper'/158, l='MpServer', x=207.41, y=76.00, z=277.10], EntitySlime['Slime'/159, l='MpServer', x=193.69, y=16.95, z=290.69], EntityBat['Bat'/160, l='MpServer', x=203.77, y=20.73, z=311.52], EntityPig['Pig'/161, l='MpServer', x=192.91, y=79.00, z=310.91], EntitySheep['Sheep'/169, l='MpServer', x=219.22, y=66.00, z=179.13], EntityBat['Bat'/170, l='MpServer', x=209.75, y=65.10, z=242.41], EntityBat['Bat'/171, l='MpServer', x=210.75, y=62.10, z=268.25], EntityZombie['Zombie'/172, l='MpServer', x=211.69, y=63.00, z=264.97], EntityZombie['Zombie'/173, l='MpServer', x=211.16, y=63.00, z=264.16], EntitySkeleton['Skeleton'/174, l='MpServer', x=210.72, y=63.00, z=265.69], EntityBat['Bat'/175, l='MpServer', x=215.48, y=59.11, z=269.61], EntitySkeleton['Skeleton'/176, l='MpServer', x=209.31, y=63.00, z=265.53], EntityBat['Bat'/177, l='MpServer', x=208.75, y=74.10, z=264.75], EntityZombie['Zombie'/178, l='MpServer', x=209.68, y=64.00, z=262.31], EntityZombie['Zombie'/179, l='MpServer', x=208.81, y=64.00, z=262.22], EntitySkeleton['Skeleton'/180, l='MpServer', x=208.88, y=64.00, z=263.50], EntityZombie['Zombie'/181, l='MpServer', x=214.39, y=17.00, z=281.70], EntitySkeleton['Skeleton'/182, l='MpServer', x=209.50, y=17.00, z=279.50], EntityZombie['Zombie'/183, l='MpServer', x=222.31, y=39.00, z=283.25], EntityZombie['Zombie'/184, l='MpServer', x=220.31, y=40.00, z=281.53], EntityZombie['Zombie'/185, l='MpServer', x=208.56, y=76.00, z=275.77], EntityCreeper['Creeper'/186, l='MpServer', x=208.28, y=76.00, z=276.59], EntityZombie['Zombie'/187, l='MpServer', x=209.50, y=25.00, z=296.50], EntityZombie['Zombie'/188, l='MpServer', x=223.16, y=39.00, z=288.84], EntityZombie['Zombie'/189, l='MpServer', x=208.49, y=18.00, z=309.47], EntityPig['Pig'/209, l='MpServer', x=238.50, y=66.00, z=178.66], EntityPig['Pig'/210, l='MpServer', x=225.09, y=66.00, z=182.34], EntitySkeleton['Skeleton'/211, l='MpServer', x=236.50, y=52.00, z=291.50], EntityChicken['Chicken'/212, l='MpServer', x=239.38, y=69.00, z=336.63], EntitySkeleton['Skeleton'/218, l='MpServer', x=238.33, y=39.86, z=295.06], EntityCreeper['Creeper'/219, l='MpServer', x=251.50, y=51.00, z=326.50], EntityPig['Pig'/231, l='MpServer', x=257.03, y=68.00, z=185.97], EntitySkeleton['Skeleton'/232, l='MpServer', x=256.97, y=41.00, z=218.38]]
+ Retry entities: 0 total; []
+ Server brand: fml,forge
+ Server type: Integrated singleplayer server
+Stacktrace:
+ at net.minecraft.client.multiplayer.WorldClient.addWorldInfoToCrashReport(WorldClient.java:415)
+ at net.minecraft.client.Minecraft.addGraphicsAndWorldToCrashReport(Minecraft.java:2566)
+ at net.minecraft.client.Minecraft.run(Minecraft.java:991)
+ at net.minecraft.client.main.Main.main(Main.java:164)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+ at java.lang.reflect.Method.invoke(Unknown Source)
+ at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)
+ at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
+ at net.minecraftforge.gradle.GradleStartCommon.launch(Unknown Source)
+ at GradleStart.main(Unknown Source)
+
+-- System Details --
+Details:
+ Minecraft Version: 1.7.10
+ Operating System: Windows 7 (amd64) version 6.1
+ Java Version: 1.8.0_60, Oracle Corporation
+ Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
+ Memory: 382847352 bytes (365 MB) / 930086912 bytes (887 MB) up to 3804758016 bytes (3628 MB)
+ JVM Flags: 0 total;
+ AABB Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
+ IntCache: cache: 0, tcache: 0, allocated: 12, tallocated: 94
+ FML: MCP v9.05 FML v7.10.99.99 Minecraft Forge 10.13.4.1448 5 mods loaded, 5 mods active
+ States: 'U' = Unloaded 'L' = Loaded 'C' = Constructed 'H' = Pre-initialized 'I' = Initialized 'J' = Post-initialized 'A' = Available 'D' = Disabled 'E' = Errored
+ UCHIJAAAA mcp{9.05} [Minecraft Coder Pack] (minecraft.jar)
+ UCHIJAAAA FML{7.10.99.99} [Forge Mod Loader] (forgeSrc-1.7.10-10.13.4.1448-1.7.10.jar)
+ UCHIJAAAA Forge{10.13.4.1448} [Minecraft Forge] (forgeSrc-1.7.10-10.13.4.1448-1.7.10.jar)
+ UCHIJAAAA CodeChickenCore{1.0.4.29} [CodeChicken Core] (minecraft.jar)
+ UCHIJAAAA miscutils{0.2.2} [miscutils] (bin)
+ GL info: ' Vendor: 'NVIDIA Corporation' Version: '4.5.0 NVIDIA 347.52' Renderer: 'GeForce GTX 770/PCIe/SSE2'
+ Launched Version: 1.7.10
+ LWJGL: 2.9.1
+ OpenGL: GeForce GTX 770/PCIe/SSE2 GL version 4.5.0 NVIDIA 347.52, NVIDIA Corporation
+ GL Caps: Using GL 1.3 multitexturing.
+Using framebuffer objects because OpenGL 3.0 is supported and separate blending is supported.
+Anisotropic filtering is supported and maximum anisotropy is 16.
+Shaders are available because OpenGL 2.1 is supported.
+
+ Is Modded: Definitely; Client brand changed to 'fml,forge'
+ Type: Client (map_client.txt)
+ Resource Packs: []
+ Current Language: English (US)
+ Profiler Position: N/A (disabled)
+ Vec3 Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
+ Anisotropic Filtering: Off (1) \ No newline at end of file
diff --git a/crash-reports/crash-2015-09-06_16.17.17-client.txt b/crash-reports/crash-2015-09-06_16.17.17-client.txt
new file mode 100644
index 0000000000..460ce84473
--- /dev/null
+++ b/crash-reports/crash-2015-09-06_16.17.17-client.txt
@@ -0,0 +1,106 @@
+---- Minecraft Crash Report ----
+// Ooh. Shiny.
+
+Time: 6/09/15 4:17 PM
+Description: Unexpected error
+
+java.lang.ClassCastException: miscutil.tile_entity.TileEntityBloodSteelFurnace cannot be cast to miscutil.tile_entity.TileEntityArcaneInfuser
+ at miscutil.handler.ArcaneInfuserGuiHandler.getClientGuiElement(ArcaneInfuserGuiHandler.java:30)
+ at cpw.mods.fml.common.network.NetworkRegistry.getLocalGuiContainer(NetworkRegistry.java:265)
+ at cpw.mods.fml.common.network.internal.FMLNetworkHandler.openGui(FMLNetworkHandler.java:93)
+ at net.minecraft.entity.player.EntityPlayer.openGui(EntityPlayer.java:2501)
+ at miscutil.block.BloodSteelFurnace.onBlockActivated(BloodSteelFurnace.java:59)
+ at net.minecraft.client.multiplayer.PlayerControllerMP.onPlayerRightClick(PlayerControllerMP.java:376)
+ at net.minecraft.client.Minecraft.func_147121_ag(Minecraft.java:1529)
+ at net.minecraft.client.Minecraft.runTick(Minecraft.java:2044)
+ at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1039)
+ at net.minecraft.client.Minecraft.run(Minecraft.java:962)
+ at net.minecraft.client.main.Main.main(Main.java:164)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+ at java.lang.reflect.Method.invoke(Unknown Source)
+ at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)
+ at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
+ at net.minecraftforge.gradle.GradleStartCommon.launch(Unknown Source)
+ at GradleStart.main(Unknown Source)
+
+
+A detailed walkthrough of the error, its code path and all known details is as follows:
+---------------------------------------------------------------------------------------
+
+-- Head --
+Stacktrace:
+ at miscutil.handler.ArcaneInfuserGuiHandler.getClientGuiElement(ArcaneInfuserGuiHandler.java:30)
+ at cpw.mods.fml.common.network.NetworkRegistry.getLocalGuiContainer(NetworkRegistry.java:265)
+ at cpw.mods.fml.common.network.internal.FMLNetworkHandler.openGui(FMLNetworkHandler.java:93)
+ at net.minecraft.entity.player.EntityPlayer.openGui(EntityPlayer.java:2501)
+ at miscutil.block.BloodSteelFurnace.onBlockActivated(BloodSteelFurnace.java:59)
+ at net.minecraft.client.multiplayer.PlayerControllerMP.onPlayerRightClick(PlayerControllerMP.java:376)
+ at net.minecraft.client.Minecraft.func_147121_ag(Minecraft.java:1529)
+
+-- Affected level --
+Details:
+ Level name: MpServer
+ All players: 1 total; [EntityClientPlayerMP['Player355'/346, l='MpServer', x=184.47, y=81.62, z=256.30]]
+ Chunk stats: MultiplayerChunkCache: 599, 599
+ Level seed: 0
+ Level generator: ID 00 - default, ver 1. Features enabled: false
+ Level generator options:
+ Level spawn location: World: (244,64,256), Chunk: (at 4,4,0 in 15,16; contains blocks 240,0,256 to 255,255,271), Region: (0,0; contains chunks 0,0 to 31,31, blocks 0,0,0 to 511,255,511)
+ Level time: 971400 game time, 971400 day time
+ Level dimension: 0
+ Level storage version: 0x00000 - Unknown?
+ Level weather: Rain time: 0 (now: false), thunder time: 0 (now: false)
+ Level game mode: Game mode: creative (ID 1). Hardcore: false. Cheats: false
+ Forced entities: 124 total; [EntityPig['Pig'/27, l='MpServer', x=109.53, y=65.00, z=180.97], EntityPig['Pig'/30, l='MpServer', x=110.47, y=77.00, z=238.13], EntityPig['Pig'/32, l='MpServer', x=111.47, y=76.00, z=240.44], EntitySlime['Slime'/33, l='MpServer', x=110.31, y=39.00, z=310.69], EntityPig['Pig'/49, l='MpServer', x=121.84, y=63.00, z=190.41], EntityPig['Pig'/51, l='MpServer', x=112.47, y=62.00, z=206.19], EntitySlime['Slime'/52, l='MpServer', x=117.31, y=16.00, z=249.31], EntityZombie['Zombie'/53, l='MpServer', x=127.50, y=20.00, z=255.91], EntitySlime['Slime'/54, l='MpServer', x=118.33, y=52.18, z=253.31], EntityPig['Pig'/55, l='MpServer', x=105.35, y=79.00, z=236.53], EntityCreeper['Creeper'/56, l='MpServer', x=115.59, y=67.00, z=255.13], EntityZombie['Zombie'/57, l='MpServer', x=123.00, y=36.00, z=260.56], EntitySkeleton['Skeleton'/58, l='MpServer', x=116.57, y=18.97, z=327.30], EntityBat['Bat'/59, l='MpServer', x=119.25, y=24.22, z=321.60], EntityBat['Bat'/60, l='MpServer', x=133.49, y=17.74, z=336.81], EntityChicken['Chicken'/61, l='MpServer', x=118.53, y=71.00, z=316.47], EntityChicken['Chicken'/62, l='MpServer', x=113.44, y=74.00, z=313.66], EntitySpider['Spider'/63, l='MpServer', x=121.78, y=22.00, z=322.16], EntityChicken['Chicken'/64, l='MpServer', x=115.56, y=76.00, z=330.59], EntityBat['Bat'/65, l='MpServer', x=110.73, y=48.56, z=328.58], EntityPig['Pig'/68, l='MpServer', x=144.85, y=63.00, z=211.16], EntitySkeleton['Skeleton'/69, l='MpServer', x=143.50, y=63.00, z=259.91], EntityZombie['Zombie'/70, l='MpServer', x=136.50, y=20.00, z=263.50], EntityZombie['Zombie'/71, l='MpServer', x=135.50, y=20.00, z=262.50], EntityZombie['Zombie'/72, l='MpServer', x=133.44, y=20.00, z=260.88], EntityCreeper['Creeper'/73, l='MpServer', x=131.50, y=21.00, z=264.03], EntitySlime['Slime'/74, l='MpServer', x=142.38, y=16.00, z=295.38], EntitySlime['Slime'/75, l='MpServer', x=130.31, y=22.81, z=289.32], EntityPig['Pig'/76, l='MpServer', x=141.81, y=80.00, z=311.50], EntityZombie['Zombie'/77, l='MpServer', x=139.41, y=18.00, z=321.88], EntityBat['Bat'/78, l='MpServer', x=128.66, y=40.48, z=326.18], EntityChicken['Chicken'/79, l='MpServer', x=124.63, y=78.00, z=328.59], EntityPig['Pig'/81, l='MpServer', x=141.88, y=80.00, z=333.97], EntityPig['Pig'/83, l='MpServer', x=147.78, y=64.00, z=183.31], EntityPig['Pig'/84, l='MpServer', x=155.91, y=70.00, z=197.50], EntityPig['Pig'/85, l='MpServer', x=157.66, y=74.00, z=193.28], EntityPig['Pig'/86, l='MpServer', x=154.53, y=79.25, z=220.47], EntityPig['Pig'/87, l='MpServer', x=149.50, y=81.00, z=229.69], EntitySkeleton['Skeleton'/88, l='MpServer', x=144.50, y=64.00, z=251.88], EntitySpider['Spider'/89, l='MpServer', x=143.72, y=22.00, z=260.03], EntitySlime['Slime'/90, l='MpServer', x=152.69, y=20.00, z=278.69], EntitySlime['Slime'/91, l='MpServer', x=152.38, y=21.05, z=281.63], EntitySlime['Slime'/92, l='MpServer', x=148.69, y=21.00, z=273.31], EntityZombie['Zombie'/93, l='MpServer', x=155.50, y=71.00, z=278.50], EntityZombie['Zombie'/94, l='MpServer', x=149.00, y=74.00, z=261.56], EntityPig['Pig'/95, l='MpServer', x=154.03, y=76.00, z=296.03], EntityChicken['Chicken'/96, l='MpServer', x=156.41, y=76.00, z=299.59], EntityPig['Pig'/97, l='MpServer', x=154.31, y=78.00, z=310.50], EntityPig['Pig'/98, l='MpServer', x=139.91, y=80.00, z=320.94], EntityPig['Pig'/99, l='MpServer', x=153.50, y=80.00, z=311.69], EntityChicken['Chicken'/100, l='MpServer', x=152.38, y=80.00, z=321.16], EntityPig['Pig'/104, l='MpServer', x=163.88, y=75.00, z=201.34], EntityPig['Pig'/105, l='MpServer', x=172.50, y=83.00, z=216.25], EntityPig['Pig'/106, l='MpServer', x=165.09, y=85.00, z=214.91], EntityPig['Pig'/107, l='MpServer', x=160.25, y=84.00, z=220.63], EntityPig['Pig'/108, l='MpServer', x=165.47, y=84.00, z=221.63], EntityPig['Pig'/109, l='MpServer', x=160.09, y=82.00, z=209.13], EntityBloodSteelMob['Friendly Fellow [WIP]'/110, l='MpServer', x=175.44, y=78.00, z=260.13], EntitySlime['Slime'/111, l='MpServer', x=173.31, y=14.00, z=277.31], EntityCreeper['Creeper'/112, l='MpServer', x=172.50, y=70.00, z=282.50], EntitySkeleton['Skeleton'/113, l='MpServer', x=169.47, y=70.00, z=283.16], EntityPig['Pig'/114, l='MpServer', x=161.53, y=74.00, z=315.53], EntityChicken['Chicken'/116, l='MpServer', x=160.38, y=85.00, z=323.44], EntityClientPlayerMP['Player355'/346, l='MpServer', x=184.47, y=81.62, z=256.30], EntitySheep['Sheep'/125, l='MpServer', x=179.28, y=66.00, z=182.34], EntityZombie['Zombie'/126, l='MpServer', x=184.75, y=71.00, z=252.75], EntityCreeper['Creeper'/127, l='MpServer', x=180.41, y=78.00, z=256.00], EntitySpider['Spider'/128, l='MpServer', x=181.28, y=78.00, z=260.53], EntityCreeper['Creeper'/129, l='MpServer', x=177.44, y=78.00, z=257.16], EntitySlime['Slime'/130, l='MpServer', x=187.31, y=15.96, z=288.80], EntityPig['Pig'/131, l='MpServer', x=182.50, y=79.00, z=293.31], EntityPig['Pig'/132, l='MpServer', x=174.13, y=77.00, z=297.63], EntityPig['Pig'/133, l='MpServer', x=182.66, y=78.00, z=310.25], EntitySheep['Sheep'/140, l='MpServer', x=204.13, y=68.00, z=191.81], EntityChicken['Chicken'/141, l='MpServer', x=203.53, y=68.00, z=189.53], EntityBat['Bat'/142, l='MpServer', x=203.50, y=62.10, z=238.25], EntityZombie['Zombie'/143, l='MpServer', x=201.22, y=56.00, z=236.47], EntityBat['Bat'/144, l='MpServer', x=196.50, y=55.10, z=244.34], EntityBat['Bat'/145, l='MpServer', x=202.72, y=56.10, z=243.25], EntityEnderman['Enderman'/146, l='MpServer', x=198.00, y=65.00, z=247.53], EntityCreeper['Creeper'/147, l='MpServer', x=196.59, y=66.00, z=256.06], EntityBat['Bat'/148, l='MpServer', x=190.65, y=45.65, z=256.69], EntityCreeper['Creeper'/149, l='MpServer', x=199.58, y=77.00, z=271.01], EntityCreeper['Creeper'/150, l='MpServer', x=196.31, y=77.00, z=271.69], EntityBat['Bat'/151, l='MpServer', x=202.75, y=63.10, z=278.25], EntityZombie['Zombie'/152, l='MpServer', x=202.50, y=57.00, z=282.50], EntityZombie['Zombie'/153, l='MpServer', x=199.59, y=55.00, z=285.47], EntityCreeper['Creeper'/154, l='MpServer', x=203.75, y=53.00, z=278.63], EntityBat['Bat'/155, l='MpServer', x=203.44, y=68.10, z=279.25], EntityCreeper['Creeper'/156, l='MpServer', x=207.72, y=76.00, z=276.34], EntitySlime['Slime'/157, l='MpServer', x=193.16, y=15.00, z=288.99], EntityBat['Bat'/158, l='MpServer', x=210.25, y=19.10, z=309.75], EntityZombie['Zombie'/159, l='MpServer', x=207.88, y=18.00, z=309.47], EntityPig['Pig'/160, l='MpServer', x=198.88, y=78.00, z=318.13], EntitySheep['Sheep'/168, l='MpServer', x=219.44, y=66.00, z=178.47], EntitySheep['Sheep'/169, l='MpServer', x=208.28, y=68.00, z=202.81], EntityBat['Bat'/170, l='MpServer', x=209.75, y=65.10, z=242.41], EntityBat['Bat'/171, l='MpServer', x=210.75, y=62.10, z=268.25], EntityZombie['Zombie'/172, l='MpServer', x=209.26, y=64.00, z=262.29], EntityZombie['Zombie'/173, l='MpServer', x=211.59, y=63.00, z=265.67], EntitySkeleton['Skeleton'/174, l='MpServer', x=210.69, y=64.00, z=262.97], EntityBat['Bat'/175, l='MpServer', x=213.75, y=55.34, z=268.52], EntitySkeleton['Skeleton'/176, l='MpServer', x=209.31, y=63.00, z=265.69], EntityBat['Bat'/177, l='MpServer', x=208.75, y=74.10, z=264.75], EntityZombie['Zombie'/178, l='MpServer', x=208.30, y=64.00, z=261.30], EntityZombie['Zombie'/179, l='MpServer', x=209.18, y=63.00, z=263.39], EntitySkeleton['Skeleton'/180, l='MpServer', x=210.13, y=63.00, z=265.25], EntityZombie['Zombie'/181, l='MpServer', x=214.53, y=17.00, z=280.94], EntitySkeleton['Skeleton'/182, l='MpServer', x=209.56, y=17.00, z=281.13], EntityZombie['Zombie'/183, l='MpServer', x=222.31, y=39.00, z=283.25], EntityZombie['Zombie'/184, l='MpServer', x=221.47, y=40.00, z=284.44], EntityZombie['Zombie'/185, l='MpServer', x=208.63, y=76.00, z=275.72], EntityCreeper['Creeper'/186, l='MpServer', x=208.69, y=76.00, z=276.70], EntityZombie['Zombie'/187, l='MpServer', x=209.50, y=25.00, z=296.50], EntityZombie['Zombie'/188, l='MpServer', x=223.16, y=39.00, z=288.84], EntityPig['Pig'/208, l='MpServer', x=238.50, y=66.00, z=178.66], EntityPig['Pig'/209, l='MpServer', x=217.34, y=66.00, z=177.53], EntitySkeleton['Skeleton'/210, l='MpServer', x=231.75, y=37.00, z=290.59], EntitySkeleton['Skeleton'/211, l='MpServer', x=236.50, y=52.00, z=291.50], EntityChicken['Chicken'/212, l='MpServer', x=243.41, y=69.00, z=336.53], EntityCreeper['Creeper'/218, l='MpServer', x=251.50, y=51.00, z=326.50], EntityPig['Pig'/230, l='MpServer', x=257.03, y=68.00, z=185.97], EntitySkeleton['Skeleton'/231, l='MpServer', x=256.97, y=41.00, z=218.38], EntityBat['Bat'/232, l='MpServer', x=261.46, y=49.76, z=267.06]]
+ Retry entities: 0 total; []
+ Server brand: fml,forge
+ Server type: Integrated singleplayer server
+Stacktrace:
+ at net.minecraft.client.multiplayer.WorldClient.addWorldInfoToCrashReport(WorldClient.java:415)
+ at net.minecraft.client.Minecraft.addGraphicsAndWorldToCrashReport(Minecraft.java:2566)
+ at net.minecraft.client.Minecraft.run(Minecraft.java:991)
+ at net.minecraft.client.main.Main.main(Main.java:164)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+ at java.lang.reflect.Method.invoke(Unknown Source)
+ at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)
+ at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
+ at net.minecraftforge.gradle.GradleStartCommon.launch(Unknown Source)
+ at GradleStart.main(Unknown Source)
+
+-- System Details --
+Details:
+ Minecraft Version: 1.7.10
+ Operating System: Windows 7 (amd64) version 6.1
+ Java Version: 1.8.0_60, Oracle Corporation
+ Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
+ Memory: 951918776 bytes (907 MB) / 1181220864 bytes (1126 MB) up to 3804758016 bytes (3628 MB)
+ JVM Flags: 0 total;
+ AABB Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
+ IntCache: cache: 0, tcache: 38, allocated: 12, tallocated: 94
+ FML: MCP v9.05 FML v7.10.99.99 Minecraft Forge 10.13.4.1448 5 mods loaded, 5 mods active
+ States: 'U' = Unloaded 'L' = Loaded 'C' = Constructed 'H' = Pre-initialized 'I' = Initialized 'J' = Post-initialized 'A' = Available 'D' = Disabled 'E' = Errored
+ UCHIJAAAA mcp{9.05} [Minecraft Coder Pack] (minecraft.jar)
+ UCHIJAAAA FML{7.10.99.99} [Forge Mod Loader] (forgeSrc-1.7.10-10.13.4.1448-1.7.10.jar)
+ UCHIJAAAA Forge{10.13.4.1448} [Minecraft Forge] (forgeSrc-1.7.10-10.13.4.1448-1.7.10.jar)
+ UCHIJAAAA CodeChickenCore{1.0.4.29} [CodeChicken Core] (minecraft.jar)
+ UCHIJAAAA miscutils{0.2.2} [miscutils] (bin)
+ GL info: ' Vendor: 'NVIDIA Corporation' Version: '4.5.0 NVIDIA 347.52' Renderer: 'GeForce GTX 770/PCIe/SSE2'
+ Launched Version: 1.7.10
+ LWJGL: 2.9.1
+ OpenGL: GeForce GTX 770/PCIe/SSE2 GL version 4.5.0 NVIDIA 347.52, NVIDIA Corporation
+ GL Caps: Using GL 1.3 multitexturing.
+Using framebuffer objects because OpenGL 3.0 is supported and separate blending is supported.
+Anisotropic filtering is supported and maximum anisotropy is 16.
+Shaders are available because OpenGL 2.1 is supported.
+
+ Is Modded: Definitely; Client brand changed to 'fml,forge'
+ Type: Client (map_client.txt)
+ Resource Packs: []
+ Current Language: English (US)
+ Profiler Position: N/A (disabled)
+ Vec3 Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
+ Anisotropic Filtering: Off (1) \ No newline at end of file
diff --git a/crash-reports/crash-2015-09-06_16.20.14-client.txt b/crash-reports/crash-2015-09-06_16.20.14-client.txt
new file mode 100644
index 0000000000..c2cf10790e
--- /dev/null
+++ b/crash-reports/crash-2015-09-06_16.20.14-client.txt
@@ -0,0 +1,106 @@
+---- Minecraft Crash Report ----
+// Don't be sad. I'll do better next time, I promise!
+
+Time: 6/09/15 4:20 PM
+Description: Unexpected error
+
+java.lang.ClassCastException: miscutil.tile_entity.TileEntityBloodSteelFurnace cannot be cast to miscutil.tile_entity.TileEntityArcaneInfuser
+ at miscutil.handler.ArcaneInfuserGuiHandler.getClientGuiElement(ArcaneInfuserGuiHandler.java:35)
+ at cpw.mods.fml.common.network.NetworkRegistry.getLocalGuiContainer(NetworkRegistry.java:265)
+ at cpw.mods.fml.common.network.internal.FMLNetworkHandler.openGui(FMLNetworkHandler.java:93)
+ at net.minecraft.entity.player.EntityPlayer.openGui(EntityPlayer.java:2501)
+ at miscutil.block.BloodSteelFurnace.onBlockActivated(BloodSteelFurnace.java:59)
+ at net.minecraft.client.multiplayer.PlayerControllerMP.onPlayerRightClick(PlayerControllerMP.java:376)
+ at net.minecraft.client.Minecraft.func_147121_ag(Minecraft.java:1529)
+ at net.minecraft.client.Minecraft.runTick(Minecraft.java:2044)
+ at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1039)
+ at net.minecraft.client.Minecraft.run(Minecraft.java:962)
+ at net.minecraft.client.main.Main.main(Main.java:164)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+ at java.lang.reflect.Method.invoke(Unknown Source)
+ at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)
+ at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
+ at net.minecraftforge.gradle.GradleStartCommon.launch(Unknown Source)
+ at GradleStart.main(Unknown Source)
+
+
+A detailed walkthrough of the error, its code path and all known details is as follows:
+---------------------------------------------------------------------------------------
+
+-- Head --
+Stacktrace:
+ at miscutil.handler.ArcaneInfuserGuiHandler.getClientGuiElement(ArcaneInfuserGuiHandler.java:35)
+ at cpw.mods.fml.common.network.NetworkRegistry.getLocalGuiContainer(NetworkRegistry.java:265)
+ at cpw.mods.fml.common.network.internal.FMLNetworkHandler.openGui(FMLNetworkHandler.java:93)
+ at net.minecraft.entity.player.EntityPlayer.openGui(EntityPlayer.java:2501)
+ at miscutil.block.BloodSteelFurnace.onBlockActivated(BloodSteelFurnace.java:59)
+ at net.minecraft.client.multiplayer.PlayerControllerMP.onPlayerRightClick(PlayerControllerMP.java:376)
+ at net.minecraft.client.Minecraft.func_147121_ag(Minecraft.java:1529)
+
+-- Affected level --
+Details:
+ Level name: MpServer
+ All players: 1 total; [EntityClientPlayerMP['Player487'/342, l='MpServer', x=184.50, y=81.62, z=256.30]]
+ Chunk stats: MultiplayerChunkCache: 270, 270
+ Level seed: 0
+ Level generator: ID 00 - default, ver 1. Features enabled: false
+ Level generator options:
+ Level spawn location: World: (244,64,256), Chunk: (at 4,4,0 in 15,16; contains blocks 240,0,256 to 255,255,271), Region: (0,0; contains chunks 0,0 to 31,31, blocks 0,0,0 to 511,255,511)
+ Level time: 971467 game time, 971467 day time
+ Level dimension: 0
+ Level storage version: 0x00000 - Unknown?
+ Level weather: Rain time: 0 (now: false), thunder time: 0 (now: false)
+ Level game mode: Game mode: creative (ID 1). Hardcore: false. Cheats: false
+ Forced entities: 121 total; [EntityPig['Pig'/27, l='MpServer', x=109.53, y=65.00, z=180.97], EntityPig['Pig'/30, l='MpServer', x=110.47, y=77.00, z=238.13], EntityPig['Pig'/33, l='MpServer', x=111.47, y=76.00, z=240.44], EntitySlime['Slime'/34, l='MpServer', x=110.31, y=39.08, z=310.66], EntityPig['Pig'/35, l='MpServer', x=105.81, y=75.00, z=314.25], EntityPig['Pig'/36, l='MpServer', x=105.16, y=75.00, z=318.81], EntityBat['Bat'/37, l='MpServer', x=108.26, y=48.20, z=326.26], EntityPig['Pig'/51, l='MpServer', x=121.84, y=63.00, z=190.41], EntityPig['Pig'/52, l='MpServer', x=113.03, y=62.17, z=206.97], EntitySlime['Slime'/53, l='MpServer', x=117.52, y=16.00, z=249.31], EntityZombie['Zombie'/54, l='MpServer', x=127.50, y=20.00, z=255.91], EntitySlime['Slime'/55, l='MpServer', x=119.21, y=52.82, z=253.31], EntityCreeper['Creeper'/56, l='MpServer', x=115.59, y=67.00, z=255.13], EntityZombie['Zombie'/57, l='MpServer', x=123.50, y=37.00, z=264.71], EntityChicken['Chicken'/58, l='MpServer', x=118.53, y=71.00, z=316.47], EntityChicken['Chicken'/59, l='MpServer', x=113.44, y=74.00, z=313.66], EntitySpider['Spider'/60, l='MpServer', x=121.78, y=22.00, z=322.16], EntitySkeleton['Skeleton'/61, l='MpServer', x=116.50, y=19.00, z=326.91], EntityBat['Bat'/62, l='MpServer', x=123.96, y=23.83, z=326.06], EntityBat['Bat'/63, l='MpServer', x=128.75, y=41.57, z=324.00], EntityChicken['Chicken'/64, l='MpServer', x=115.56, y=76.00, z=330.59], EntityChicken['Chicken'/65, l='MpServer', x=124.63, y=78.00, z=328.59], EntityZombie['Zombie'/68, l='MpServer', x=136.97, y=20.00, z=263.55], EntityZombie['Zombie'/69, l='MpServer', x=135.99, y=20.00, z=263.54], EntityZombie['Zombie'/70, l='MpServer', x=133.44, y=20.00, z=260.88], EntityCreeper['Creeper'/71, l='MpServer', x=134.81, y=20.00, z=266.30], EntitySpider['Spider'/72, l='MpServer', x=137.90, y=24.95, z=259.24], EntitySkeleton['Skeleton'/73, l='MpServer', x=143.50, y=64.00, z=257.03], EntitySlime['Slime'/74, l='MpServer', x=142.38, y=16.00, z=295.38], EntitySlime['Slime'/75, l='MpServer', x=130.31, y=22.95, z=289.31], EntityPig['Pig'/76, l='MpServer', x=141.81, y=80.00, z=311.50], EntityZombie['Zombie'/77, l='MpServer', x=139.41, y=18.00, z=321.88], EntityPig['Pig'/80, l='MpServer', x=141.88, y=80.00, z=333.97], EntityPig['Pig'/81, l='MpServer', x=139.91, y=80.00, z=320.94], EntityPig['Pig'/83, l='MpServer', x=150.61, y=63.00, z=183.30], EntityPig['Pig'/84, l='MpServer', x=155.91, y=70.00, z=197.50], EntityPig['Pig'/85, l='MpServer', x=157.66, y=74.00, z=193.28], EntityPig['Pig'/86, l='MpServer', x=144.69, y=63.00, z=211.53], EntityClientPlayerMP['Player487'/342, l='MpServer', x=184.50, y=81.62, z=256.30], EntityPig['Pig'/87, l='MpServer', x=154.39, y=78.13, z=217.20], EntityPig['Pig'/88, l='MpServer', x=149.50, y=81.00, z=229.69], EntitySkeleton['Skeleton'/89, l='MpServer', x=144.50, y=64.00, z=251.88], EntityZombie['Zombie'/90, l='MpServer', x=149.00, y=74.00, z=261.56], EntitySlime['Slime'/91, l='MpServer', x=152.69, y=20.00, z=278.69], EntitySlime['Slime'/92, l='MpServer', x=152.38, y=21.00, z=281.63], EntitySlime['Slime'/93, l='MpServer', x=148.50, y=21.00, z=273.31], EntityZombie['Zombie'/94, l='MpServer', x=155.50, y=71.00, z=278.50], EntityPig['Pig'/95, l='MpServer', x=154.03, y=76.00, z=296.03], EntityChicken['Chicken'/96, l='MpServer', x=156.41, y=76.00, z=299.59], EntityPig['Pig'/97, l='MpServer', x=150.67, y=80.00, z=310.50], EntityPig['Pig'/98, l='MpServer', x=153.50, y=80.00, z=311.69], EntityChicken['Chicken'/99, l='MpServer', x=152.38, y=80.00, z=321.16], EntityPig['Pig'/102, l='MpServer', x=163.88, y=75.00, z=201.34], EntityPig['Pig'/103, l='MpServer', x=172.50, y=83.00, z=216.25], EntityPig['Pig'/104, l='MpServer', x=163.05, y=85.00, z=216.15], EntityPig['Pig'/105, l='MpServer', x=160.25, y=84.00, z=220.63], EntityPig['Pig'/106, l='MpServer', x=165.47, y=84.00, z=221.63], EntityPig['Pig'/107, l='MpServer', x=160.09, y=82.00, z=209.13], EntityBloodSteelMob['Friendly Fellow [WIP]'/108, l='MpServer', x=175.44, y=78.00, z=260.11], EntitySlime['Slime'/109, l='MpServer', x=173.31, y=14.00, z=277.31], EntityCreeper['Creeper'/110, l='MpServer', x=171.56, y=70.00, z=281.48], EntitySkeleton['Skeleton'/111, l='MpServer', x=169.47, y=70.00, z=283.16], EntityPig['Pig'/112, l='MpServer', x=174.13, y=77.00, z=297.63], EntityPig['Pig'/113, l='MpServer', x=161.53, y=74.00, z=315.53], EntityChicken['Chicken'/115, l='MpServer', x=160.38, y=85.00, z=323.44], EntitySheep['Sheep'/125, l='MpServer', x=179.28, y=66.00, z=182.34], EntityCreeper['Creeper'/126, l='MpServer', x=180.41, y=78.00, z=256.00], EntityZombie['Zombie'/127, l='MpServer', x=184.75, y=71.00, z=252.75], EntityBat['Bat'/128, l='MpServer', x=196.45, y=44.88, z=258.63], EntitySpider['Spider'/129, l='MpServer', x=181.28, y=78.00, z=260.53], EntityCreeper['Creeper'/130, l='MpServer', x=177.44, y=78.00, z=257.16], EntitySlime['Slime'/131, l='MpServer', x=187.31, y=15.32, z=289.38], EntityPig['Pig'/132, l='MpServer', x=182.28, y=79.00, z=293.08], EntityPig['Pig'/133, l='MpServer', x=182.66, y=78.00, z=310.25], EntitySheep['Sheep'/140, l='MpServer', x=204.13, y=68.00, z=191.81], EntityChicken['Chicken'/141, l='MpServer', x=203.53, y=68.00, z=189.53], EntityBat['Bat'/142, l='MpServer', x=203.50, y=62.10, z=238.25], EntityZombie['Zombie'/143, l='MpServer', x=201.22, y=56.00, z=236.47], EntityBat['Bat'/144, l='MpServer', x=196.50, y=55.10, z=244.34], EntityBat['Bat'/145, l='MpServer', x=202.72, y=56.10, z=243.25], EntityEnderman['Enderman'/146, l='MpServer', x=198.00, y=65.00, z=247.53], EntityCreeper['Creeper'/147, l='MpServer', x=199.56, y=77.00, z=271.00], EntityCreeper['Creeper'/148, l='MpServer', x=196.31, y=77.00, z=271.69], EntityCreeper['Creeper'/149, l='MpServer', x=196.59, y=66.00, z=256.06], EntityBat['Bat'/150, l='MpServer', x=202.75, y=63.10, z=278.25], EntityZombie['Zombie'/151, l='MpServer', x=200.39, y=57.95, z=282.43], EntityZombie['Zombie'/152, l='MpServer', x=199.59, y=55.00, z=285.47], EntityCreeper['Creeper'/153, l='MpServer', x=203.75, y=53.00, z=278.63], EntityBat['Bat'/154, l='MpServer', x=203.44, y=68.10, z=279.25], EntityCreeper['Creeper'/155, l='MpServer', x=207.72, y=76.00, z=276.34], EntitySlime['Slime'/156, l='MpServer', x=193.69, y=16.00, z=290.69], EntityZombie['Zombie'/157, l='MpServer', x=207.88, y=18.00, z=309.47], EntityPig['Pig'/158, l='MpServer', x=198.88, y=78.00, z=318.13], EntitySheep['Sheep'/166, l='MpServer', x=219.44, y=66.00, z=178.47], EntitySheep['Sheep'/168, l='MpServer', x=208.28, y=68.00, z=202.81], EntityBat['Bat'/169, l='MpServer', x=209.75, y=65.10, z=242.41], EntityBat['Bat'/170, l='MpServer', x=210.75, y=62.10, z=268.25], EntityZombie['Zombie'/171, l='MpServer', x=211.59, y=63.00, z=265.69], EntityBat['Bat'/172, l='MpServer', x=211.51, y=54.00, z=270.75], EntitySkeleton['Skeleton'/173, l='MpServer', x=209.31, y=63.00, z=265.69], EntitySkeleton['Skeleton'/174, l='MpServer', x=210.13, y=63.00, z=265.25], EntityZombie['Zombie'/175, l='MpServer', x=209.16, y=63.00, z=263.34], EntityBat['Bat'/176, l='MpServer', x=208.75, y=74.10, z=264.75], EntityZombie['Zombie'/177, l='MpServer', x=208.31, y=64.00, z=261.31], EntityZombie['Zombie'/178, l='MpServer', x=209.16, y=64.00, z=262.22], EntitySkeleton['Skeleton'/179, l='MpServer', x=210.69, y=64.00, z=262.97], EntityZombie['Zombie'/180, l='MpServer', x=214.53, y=17.00, z=280.94], EntitySkeleton['Skeleton'/181, l='MpServer', x=209.56, y=17.00, z=281.13], EntityZombie['Zombie'/182, l='MpServer', x=222.31, y=39.00, z=283.25], EntityZombie['Zombie'/183, l='MpServer', x=222.60, y=39.41, z=284.49], EntityZombie['Zombie'/184, l='MpServer', x=208.63, y=76.00, z=275.72], EntityCreeper['Creeper'/185, l='MpServer', x=208.69, y=76.00, z=276.69], EntityZombie['Zombie'/186, l='MpServer', x=209.50, y=25.00, z=296.50], EntityZombie['Zombie'/187, l='MpServer', x=223.16, y=39.00, z=288.84], EntityBat['Bat'/188, l='MpServer', x=210.25, y=19.10, z=309.75], EntityPig['Pig'/208, l='MpServer', x=238.50, y=66.00, z=178.66], EntitySkeleton['Skeleton'/209, l='MpServer', x=231.75, y=37.00, z=290.59], EntitySkeleton['Skeleton'/210, l='MpServer', x=236.50, y=52.00, z=291.50], EntityCreeper['Creeper'/218, l='MpServer', x=251.50, y=51.00, z=326.50], EntityPig['Pig'/229, l='MpServer', x=257.03, y=68.00, z=185.97], EntitySkeleton['Skeleton'/230, l='MpServer', x=256.97, y=41.00, z=218.38]]
+ Retry entities: 0 total; []
+ Server brand: fml,forge
+ Server type: Integrated singleplayer server
+Stacktrace:
+ at net.minecraft.client.multiplayer.WorldClient.addWorldInfoToCrashReport(WorldClient.java:415)
+ at net.minecraft.client.Minecraft.addGraphicsAndWorldToCrashReport(Minecraft.java:2566)
+ at net.minecraft.client.Minecraft.run(Minecraft.java:991)
+ at net.minecraft.client.main.Main.main(Main.java:164)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+ at java.lang.reflect.Method.invoke(Unknown Source)
+ at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)
+ at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
+ at net.minecraftforge.gradle.GradleStartCommon.launch(Unknown Source)
+ at GradleStart.main(Unknown Source)
+
+-- System Details --
+Details:
+ Minecraft Version: 1.7.10
+ Operating System: Windows 7 (amd64) version 6.1
+ Java Version: 1.8.0_60, Oracle Corporation
+ Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
+ Memory: 426914752 bytes (407 MB) / 1012400128 bytes (965 MB) up to 3804758016 bytes (3628 MB)
+ JVM Flags: 0 total;
+ AABB Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
+ IntCache: cache: 0, tcache: 0, allocated: 12, tallocated: 94
+ FML: MCP v9.05 FML v7.10.99.99 Minecraft Forge 10.13.4.1448 5 mods loaded, 5 mods active
+ States: 'U' = Unloaded 'L' = Loaded 'C' = Constructed 'H' = Pre-initialized 'I' = Initialized 'J' = Post-initialized 'A' = Available 'D' = Disabled 'E' = Errored
+ UCHIJAAAA mcp{9.05} [Minecraft Coder Pack] (minecraft.jar)
+ UCHIJAAAA FML{7.10.99.99} [Forge Mod Loader] (forgeSrc-1.7.10-10.13.4.1448-1.7.10.jar)
+ UCHIJAAAA Forge{10.13.4.1448} [Minecraft Forge] (forgeSrc-1.7.10-10.13.4.1448-1.7.10.jar)
+ UCHIJAAAA CodeChickenCore{1.0.4.29} [CodeChicken Core] (minecraft.jar)
+ UCHIJAAAA miscutils{0.2.2} [miscutils] (bin)
+ GL info: ' Vendor: 'NVIDIA Corporation' Version: '4.5.0 NVIDIA 347.52' Renderer: 'GeForce GTX 770/PCIe/SSE2'
+ Launched Version: 1.7.10
+ LWJGL: 2.9.1
+ OpenGL: GeForce GTX 770/PCIe/SSE2 GL version 4.5.0 NVIDIA 347.52, NVIDIA Corporation
+ GL Caps: Using GL 1.3 multitexturing.
+Using framebuffer objects because OpenGL 3.0 is supported and separate blending is supported.
+Anisotropic filtering is supported and maximum anisotropy is 16.
+Shaders are available because OpenGL 2.1 is supported.
+
+ Is Modded: Definitely; Client brand changed to 'fml,forge'
+ Type: Client (map_client.txt)
+ Resource Packs: []
+ Current Language: English (US)
+ Profiler Position: N/A (disabled)
+ Vec3 Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
+ Anisotropic Filtering: Off (1) \ No newline at end of file
diff --git a/crash-reports/crash-2015-09-06_16.22.49-client.txt b/crash-reports/crash-2015-09-06_16.22.49-client.txt
new file mode 100644
index 0000000000..f1d19bd5cc
--- /dev/null
+++ b/crash-reports/crash-2015-09-06_16.22.49-client.txt
@@ -0,0 +1,106 @@
+---- Minecraft Crash Report ----
+// Hi. I'm Minecraft, and I'm a crashaholic.
+
+Time: 6/09/15 4:22 PM
+Description: Unexpected error
+
+java.lang.ClassCastException: miscutil.tile_entity.TileEntityBloodSteelFurnace cannot be cast to miscutil.tile_entity.TileEntityArcaneInfuser
+ at miscutil.handler.ArcaneInfuserGuiHandler.getClientGuiElement(ArcaneInfuserGuiHandler.java:35)
+ at cpw.mods.fml.common.network.NetworkRegistry.getLocalGuiContainer(NetworkRegistry.java:265)
+ at cpw.mods.fml.common.network.internal.FMLNetworkHandler.openGui(FMLNetworkHandler.java:93)
+ at net.minecraft.entity.player.EntityPlayer.openGui(EntityPlayer.java:2501)
+ at miscutil.block.BloodSteelFurnace.onBlockActivated(BloodSteelFurnace.java:59)
+ at net.minecraft.client.multiplayer.PlayerControllerMP.onPlayerRightClick(PlayerControllerMP.java:376)
+ at net.minecraft.client.Minecraft.func_147121_ag(Minecraft.java:1529)
+ at net.minecraft.client.Minecraft.runTick(Minecraft.java:2044)
+ at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1039)
+ at net.minecraft.client.Minecraft.run(Minecraft.java:962)
+ at net.minecraft.client.main.Main.main(Main.java:164)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+ at java.lang.reflect.Method.invoke(Unknown Source)
+ at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)
+ at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
+ at net.minecraftforge.gradle.GradleStartCommon.launch(Unknown Source)
+ at GradleStart.main(Unknown Source)
+
+
+A detailed walkthrough of the error, its code path and all known details is as follows:
+---------------------------------------------------------------------------------------
+
+-- Head --
+Stacktrace:
+ at miscutil.handler.ArcaneInfuserGuiHandler.getClientGuiElement(ArcaneInfuserGuiHandler.java:35)
+ at cpw.mods.fml.common.network.NetworkRegistry.getLocalGuiContainer(NetworkRegistry.java:265)
+ at cpw.mods.fml.common.network.internal.FMLNetworkHandler.openGui(FMLNetworkHandler.java:93)
+ at net.minecraft.entity.player.EntityPlayer.openGui(EntityPlayer.java:2501)
+ at miscutil.block.BloodSteelFurnace.onBlockActivated(BloodSteelFurnace.java:59)
+ at net.minecraft.client.multiplayer.PlayerControllerMP.onPlayerRightClick(PlayerControllerMP.java:376)
+ at net.minecraft.client.Minecraft.func_147121_ag(Minecraft.java:1529)
+
+-- Affected level --
+Details:
+ Level name: MpServer
+ All players: 1 total; [EntityClientPlayerMP['Player330'/341, l='MpServer', x=184.50, y=81.62, z=256.30]]
+ Chunk stats: MultiplayerChunkCache: 275, 275
+ Level seed: 0
+ Level generator: ID 00 - default, ver 1. Features enabled: false
+ Level generator options:
+ Level spawn location: World: (244,64,256), Chunk: (at 4,4,0 in 15,16; contains blocks 240,0,256 to 255,255,271), Region: (0,0; contains chunks 0,0 to 31,31, blocks 0,0,0 to 511,255,511)
+ Level time: 971532 game time, 971532 day time
+ Level dimension: 0
+ Level storage version: 0x00000 - Unknown?
+ Level weather: Rain time: 0 (now: false), thunder time: 0 (now: false)
+ Level game mode: Game mode: creative (ID 1). Hardcore: false. Cheats: false
+ Forced entities: 122 total; [EntityPig['Pig'/27, l='MpServer', x=110.99, y=64.00, z=177.36], EntityPig['Pig'/30, l='MpServer', x=110.47, y=77.00, z=238.13], EntityPig['Pig'/33, l='MpServer', x=111.47, y=76.00, z=240.44], EntitySlime['Slime'/34, l='MpServer', x=110.31, y=39.00, z=310.69], EntityPig['Pig'/35, l='MpServer', x=105.81, y=75.00, z=314.25], EntityPig['Pig'/36, l='MpServer', x=105.16, y=75.00, z=318.81], EntityBat['Bat'/37, l='MpServer', x=111.90, y=49.87, z=329.22], EntityPig['Pig'/51, l='MpServer', x=121.84, y=63.00, z=190.41], EntityPig['Pig'/52, l='MpServer', x=113.03, y=62.18, z=206.97], EntitySlime['Slime'/53, l='MpServer', x=117.97, y=16.00, z=249.31], EntityZombie['Zombie'/54, l='MpServer', x=127.50, y=20.00, z=255.91], EntitySlime['Slime'/55, l='MpServer', x=118.87, y=52.96, z=253.31], EntityCreeper['Creeper'/56, l='MpServer', x=115.59, y=67.00, z=255.13], EntityZombie['Zombie'/57, l='MpServer', x=123.50, y=37.00, z=265.31], EntityChicken['Chicken'/58, l='MpServer', x=118.53, y=71.00, z=316.47], EntityChicken['Chicken'/59, l='MpServer', x=113.63, y=74.00, z=313.60], EntitySpider['Spider'/60, l='MpServer', x=122.04, y=22.99, z=322.02], EntitySkeleton['Skeleton'/61, l='MpServer', x=116.50, y=19.00, z=326.91], EntityBat['Bat'/62, l='MpServer', x=119.25, y=22.67, z=323.75], EntityChicken['Chicken'/63, l='MpServer', x=115.56, y=76.00, z=330.59], EntityChicken['Chicken'/64, l='MpServer', x=124.84, y=78.00, z=328.13], EntitySkeleton['Skeleton'/67, l='MpServer', x=143.56, y=64.00, z=255.78], EntityZombie['Zombie'/68, l='MpServer', x=137.47, y=20.00, z=263.44], EntityZombie['Zombie'/69, l='MpServer', x=136.38, y=20.00, z=264.22], EntityZombie['Zombie'/70, l='MpServer', x=133.44, y=20.00, z=260.88], EntityCreeper['Creeper'/71, l='MpServer', x=135.28, y=20.00, z=266.69], EntitySpider['Spider'/72, l='MpServer', x=141.51, y=23.00, z=260.06], EntitySlime['Slime'/73, l='MpServer', x=142.38, y=16.00, z=295.38], EntitySlime['Slime'/74, l='MpServer', x=130.31, y=22.00, z=289.31], EntityPig['Pig'/75, l='MpServer', x=141.81, y=80.00, z=311.50], EntityZombie['Zombie'/76, l='MpServer', x=139.41, y=18.00, z=321.88], EntityBat['Bat'/77, l='MpServer', x=133.47, y=40.05, z=323.31], EntityPig['Pig'/79, l='MpServer', x=141.88, y=80.00, z=333.97], EntityPig['Pig'/80, l='MpServer', x=141.40, y=80.00, z=317.22], EntityPig['Pig'/82, l='MpServer', x=151.81, y=63.00, z=183.44], EntityPig['Pig'/83, l='MpServer', x=155.91, y=70.00, z=197.50], EntityPig['Pig'/84, l='MpServer', x=157.66, y=74.00, z=193.28], EntityPig['Pig'/85, l='MpServer', x=144.69, y=63.00, z=211.53], EntityPig['Pig'/86, l='MpServer', x=153.75, y=78.00, z=216.88], EntityPig['Pig'/87, l='MpServer', x=149.50, y=81.00, z=229.69], EntitySkeleton['Skeleton'/88, l='MpServer', x=144.50, y=64.00, z=251.88], EntityZombie['Zombie'/89, l='MpServer', x=149.00, y=74.00, z=261.56], EntitySlime['Slime'/90, l='MpServer', x=152.69, y=20.00, z=278.63], EntitySlime['Slime'/91, l='MpServer', x=152.38, y=21.00, z=281.63], EntitySlime['Slime'/92, l='MpServer', x=148.69, y=21.00, z=273.31], EntityZombie['Zombie'/93, l='MpServer', x=155.50, y=71.00, z=278.50], EntityPig['Pig'/94, l='MpServer', x=154.03, y=76.00, z=296.03], EntityChicken['Chicken'/95, l='MpServer', x=156.41, y=76.00, z=299.59], EntityPig['Pig'/96, l='MpServer', x=153.50, y=80.00, z=311.69], EntityPig['Pig'/97, l='MpServer', x=151.28, y=80.00, z=311.45], EntityChicken['Chicken'/98, l='MpServer', x=152.38, y=80.00, z=321.16], EntityPig['Pig'/101, l='MpServer', x=163.88, y=75.00, z=201.34], EntityPig['Pig'/102, l='MpServer', x=172.50, y=83.00, z=216.25], EntityPig['Pig'/103, l='MpServer', x=163.03, y=85.00, z=216.16], EntityPig['Pig'/104, l='MpServer', x=160.22, y=84.00, z=220.60], EntityPig['Pig'/105, l='MpServer', x=165.47, y=84.00, z=221.63], EntityPig['Pig'/106, l='MpServer', x=160.09, y=82.00, z=209.13], EntityBloodSteelMob['Friendly Fellow [WIP]'/107, l='MpServer', x=175.44, y=78.00, z=260.09], EntitySlime['Slime'/108, l='MpServer', x=173.31, y=14.47, z=277.31], EntityCreeper['Creeper'/109, l='MpServer', x=169.79, y=70.00, z=283.07], EntitySkeleton['Skeleton'/110, l='MpServer', x=168.93, y=70.00, z=283.63], EntityPig['Pig'/111, l='MpServer', x=174.13, y=77.00, z=297.63], EntityPig['Pig'/112, l='MpServer', x=161.53, y=74.00, z=315.53], EntityChicken['Chicken'/114, l='MpServer', x=160.38, y=85.00, z=323.44], EntityClientPlayerMP['Player330'/341, l='MpServer', x=184.50, y=81.62, z=256.30], EntitySheep['Sheep'/124, l='MpServer', x=179.28, y=66.00, z=182.34], EntityCreeper['Creeper'/125, l='MpServer', x=180.41, y=78.00, z=256.00], EntityZombie['Zombie'/126, l='MpServer', x=184.75, y=71.00, z=252.75], EntitySpider['Spider'/127, l='MpServer', x=181.28, y=78.00, z=260.53], EntityCreeper['Creeper'/128, l='MpServer', x=177.44, y=78.00, z=257.16], EntitySlime['Slime'/129, l='MpServer', x=187.31, y=15.00, z=288.53], EntityPig['Pig'/130, l='MpServer', x=181.38, y=79.00, z=292.41], EntityPig['Pig'/131, l='MpServer', x=182.66, y=78.00, z=310.25], EntitySheep['Sheep'/138, l='MpServer', x=204.13, y=68.00, z=191.81], EntityChicken['Chicken'/139, l='MpServer', x=203.53, y=68.00, z=189.53], EntityBat['Bat'/140, l='MpServer', x=203.50, y=62.10, z=238.25], EntityZombie['Zombie'/141, l='MpServer', x=201.22, y=56.00, z=236.47], EntityBat['Bat'/142, l='MpServer', x=196.50, y=55.10, z=244.34], EntityBat['Bat'/143, l='MpServer', x=202.72, y=56.10, z=243.25], EntityEnderman['Enderman'/144, l='MpServer', x=198.00, y=65.00, z=246.63], EntityBat['Bat'/145, l='MpServer', x=195.31, y=45.71, z=255.44], EntityCreeper['Creeper'/146, l='MpServer', x=199.56, y=77.00, z=271.00], EntityCreeper['Creeper'/147, l='MpServer', x=196.31, y=77.00, z=271.69], EntityCreeper['Creeper'/148, l='MpServer', x=196.59, y=66.00, z=256.06], EntityBat['Bat'/149, l='MpServer', x=202.75, y=63.10, z=278.25], EntityZombie['Zombie'/150, l='MpServer', x=200.28, y=58.00, z=282.44], EntityZombie['Zombie'/151, l='MpServer', x=202.50, y=57.00, z=284.27], EntityCreeper['Creeper'/152, l='MpServer', x=201.30, y=55.85, z=278.39], EntityBat['Bat'/153, l='MpServer', x=203.44, y=68.10, z=279.25], EntityCreeper['Creeper'/154, l='MpServer', x=207.72, y=76.00, z=276.34], EntitySlime['Slime'/155, l='MpServer', x=193.69, y=16.00, z=290.69], EntityZombie['Zombie'/156, l='MpServer', x=207.96, y=18.00, z=306.59], EntityPig['Pig'/157, l='MpServer', x=198.88, y=78.00, z=318.13], EntitySheep['Sheep'/166, l='MpServer', x=219.44, y=66.00, z=178.47], EntitySheep['Sheep'/167, l='MpServer', x=208.28, y=68.00, z=202.81], EntityBat['Bat'/168, l='MpServer', x=209.75, y=65.10, z=242.41], EntityBat['Bat'/169, l='MpServer', x=210.75, y=62.10, z=268.25], EntityZombie['Zombie'/170, l='MpServer', x=210.45, y=63.00, z=264.31], EntityBat['Bat'/171, l='MpServer', x=212.41, y=55.61, z=268.59], EntitySkeleton['Skeleton'/172, l='MpServer', x=209.31, y=63.00, z=265.69], EntitySkeleton['Skeleton'/173, l='MpServer', x=210.13, y=63.00, z=265.25], EntityZombie['Zombie'/174, l='MpServer', x=209.16, y=63.00, z=263.34], EntityBat['Bat'/175, l='MpServer', x=208.75, y=74.10, z=264.75], EntityZombie['Zombie'/176, l='MpServer', x=208.31, y=64.00, z=261.31], EntityZombie['Zombie'/177, l='MpServer', x=209.16, y=64.00, z=262.22], EntitySkeleton['Skeleton'/178, l='MpServer', x=210.69, y=64.00, z=262.97], EntityZombie['Zombie'/179, l='MpServer', x=214.53, y=17.00, z=280.94], EntitySkeleton['Skeleton'/180, l='MpServer', x=208.09, y=17.00, z=280.73], EntityZombie['Zombie'/181, l='MpServer', x=222.31, y=39.00, z=283.25], EntityZombie['Zombie'/182, l='MpServer', x=222.31, y=39.00, z=284.75], EntityZombie['Zombie'/183, l='MpServer', x=208.63, y=76.00, z=275.72], EntityCreeper['Creeper'/184, l='MpServer', x=208.69, y=76.00, z=276.69], EntityZombie['Zombie'/185, l='MpServer', x=209.50, y=25.00, z=296.50], EntityZombie['Zombie'/186, l='MpServer', x=223.16, y=39.00, z=288.84], EntityBat['Bat'/187, l='MpServer', x=210.25, y=19.10, z=309.75], EntityPig['Pig'/188, l='MpServer', x=218.58, y=62.13, z=335.64], EntityPig['Pig'/207, l='MpServer', x=238.50, y=66.00, z=178.66], EntitySkeleton['Skeleton'/208, l='MpServer', x=231.75, y=37.00, z=290.59], EntitySkeleton['Skeleton'/209, l='MpServer', x=236.50, y=52.00, z=291.50], EntityCreeper['Creeper'/217, l='MpServer', x=251.50, y=51.00, z=326.50], EntityPig['Pig'/228, l='MpServer', x=257.03, y=68.00, z=185.97], EntitySkeleton['Skeleton'/229, l='MpServer', x=256.97, y=41.00, z=218.38]]
+ Retry entities: 0 total; []
+ Server brand: fml,forge
+ Server type: Integrated singleplayer server
+Stacktrace:
+ at net.minecraft.client.multiplayer.WorldClient.addWorldInfoToCrashReport(WorldClient.java:415)
+ at net.minecraft.client.Minecraft.addGraphicsAndWorldToCrashReport(Minecraft.java:2566)
+ at net.minecraft.client.Minecraft.run(Minecraft.java:991)
+ at net.minecraft.client.main.Main.main(Main.java:164)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+ at java.lang.reflect.Method.invoke(Unknown Source)
+ at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)
+ at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
+ at net.minecraftforge.gradle.GradleStartCommon.launch(Unknown Source)
+ at GradleStart.main(Unknown Source)
+
+-- System Details --
+Details:
+ Minecraft Version: 1.7.10
+ Operating System: Windows 7 (amd64) version 6.1
+ Java Version: 1.8.0_60, Oracle Corporation
+ Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
+ Memory: 497793360 bytes (474 MB) / 1072168960 bytes (1022 MB) up to 3804758016 bytes (3628 MB)
+ JVM Flags: 0 total;
+ AABB Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
+ IntCache: cache: 0, tcache: 0, allocated: 12, tallocated: 94
+ FML: MCP v9.05 FML v7.10.99.99 Minecraft Forge 10.13.4.1448 5 mods loaded, 5 mods active
+ States: 'U' = Unloaded 'L' = Loaded 'C' = Constructed 'H' = Pre-initialized 'I' = Initialized 'J' = Post-initialized 'A' = Available 'D' = Disabled 'E' = Errored
+ UCHIJAAAA mcp{9.05} [Minecraft Coder Pack] (minecraft.jar)
+ UCHIJAAAA FML{7.10.99.99} [Forge Mod Loader] (forgeSrc-1.7.10-10.13.4.1448-1.7.10.jar)
+ UCHIJAAAA Forge{10.13.4.1448} [Minecraft Forge] (forgeSrc-1.7.10-10.13.4.1448-1.7.10.jar)
+ UCHIJAAAA CodeChickenCore{1.0.4.29} [CodeChicken Core] (minecraft.jar)
+ UCHIJAAAA miscutils{0.2.2} [miscutils] (bin)
+ GL info: ' Vendor: 'NVIDIA Corporation' Version: '4.5.0 NVIDIA 347.52' Renderer: 'GeForce GTX 770/PCIe/SSE2'
+ Launched Version: 1.7.10
+ LWJGL: 2.9.1
+ OpenGL: GeForce GTX 770/PCIe/SSE2 GL version 4.5.0 NVIDIA 347.52, NVIDIA Corporation
+ GL Caps: Using GL 1.3 multitexturing.
+Using framebuffer objects because OpenGL 3.0 is supported and separate blending is supported.
+Anisotropic filtering is supported and maximum anisotropy is 16.
+Shaders are available because OpenGL 2.1 is supported.
+
+ Is Modded: Definitely; Client brand changed to 'fml,forge'
+ Type: Client (map_client.txt)
+ Resource Packs: []
+ Current Language: English (US)
+ Profiler Position: N/A (disabled)
+ Vec3 Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
+ Anisotropic Filtering: Off (1) \ No newline at end of file
diff --git a/crash-reports/crash-2015-09-06_16.28.30-client.txt b/crash-reports/crash-2015-09-06_16.28.30-client.txt
new file mode 100644
index 0000000000..58a0041833
--- /dev/null
+++ b/crash-reports/crash-2015-09-06_16.28.30-client.txt
@@ -0,0 +1,106 @@
+---- Minecraft Crash Report ----
+// Oh - I know what I did wrong!
+
+Time: 6/09/15 4:28 PM
+Description: Unexpected error
+
+java.lang.ClassCastException: miscutil.tile_entity.TileEntityBloodSteelFurnace cannot be cast to miscutil.tile_entity.TileEntityArcaneInfuser
+ at miscutil.handler.ArcaneInfuserGuiHandler.getClientGuiElement(ArcaneInfuserGuiHandler.java:35)
+ at cpw.mods.fml.common.network.NetworkRegistry.getLocalGuiContainer(NetworkRegistry.java:265)
+ at cpw.mods.fml.common.network.internal.FMLNetworkHandler.openGui(FMLNetworkHandler.java:93)
+ at net.minecraft.entity.player.EntityPlayer.openGui(EntityPlayer.java:2501)
+ at miscutil.block.BloodSteelFurnace.onBlockActivated(BloodSteelFurnace.java:59)
+ at net.minecraft.client.multiplayer.PlayerControllerMP.onPlayerRightClick(PlayerControllerMP.java:376)
+ at net.minecraft.client.Minecraft.func_147121_ag(Minecraft.java:1529)
+ at net.minecraft.client.Minecraft.runTick(Minecraft.java:2044)
+ at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1039)
+ at net.minecraft.client.Minecraft.run(Minecraft.java:962)
+ at net.minecraft.client.main.Main.main(Main.java:164)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+ at java.lang.reflect.Method.invoke(Unknown Source)
+ at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)
+ at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
+ at net.minecraftforge.gradle.GradleStartCommon.launch(Unknown Source)
+ at GradleStart.main(Unknown Source)
+
+
+A detailed walkthrough of the error, its code path and all known details is as follows:
+---------------------------------------------------------------------------------------
+
+-- Head --
+Stacktrace:
+ at miscutil.handler.ArcaneInfuserGuiHandler.getClientGuiElement(ArcaneInfuserGuiHandler.java:35)
+ at cpw.mods.fml.common.network.NetworkRegistry.getLocalGuiContainer(NetworkRegistry.java:265)
+ at cpw.mods.fml.common.network.internal.FMLNetworkHandler.openGui(FMLNetworkHandler.java:93)
+ at net.minecraft.entity.player.EntityPlayer.openGui(EntityPlayer.java:2501)
+ at miscutil.block.BloodSteelFurnace.onBlockActivated(BloodSteelFurnace.java:59)
+ at net.minecraft.client.multiplayer.PlayerControllerMP.onPlayerRightClick(PlayerControllerMP.java:376)
+ at net.minecraft.client.Minecraft.func_147121_ag(Minecraft.java:1529)
+
+-- Affected level --
+Details:
+ Level name: MpServer
+ All players: 1 total; [EntityClientPlayerMP['Player401'/339, l='MpServer', x=184.50, y=81.62, z=256.30]]
+ Chunk stats: MultiplayerChunkCache: 160, 160
+ Level seed: 0
+ Level generator: ID 00 - default, ver 1. Features enabled: false
+ Level generator options:
+ Level spawn location: World: (244,64,256), Chunk: (at 4,4,0 in 15,16; contains blocks 240,0,256 to 255,255,271), Region: (0,0; contains chunks 0,0 to 31,31, blocks 0,0,0 to 511,255,511)
+ Level time: 971575 game time, 971575 day time
+ Level dimension: 0
+ Level storage version: 0x00000 - Unknown?
+ Level weather: Rain time: 0 (now: false), thunder time: 0 (now: false)
+ Level game mode: Game mode: creative (ID 1). Hardcore: false. Cheats: false
+ Forced entities: 122 total; [EntityPig['Pig'/27, l='MpServer', x=111.16, y=64.00, z=177.13], EntityPig['Pig'/30, l='MpServer', x=110.47, y=77.00, z=238.13], EntityPig['Pig'/33, l='MpServer', x=111.47, y=76.00, z=240.44], EntitySlime['Slime'/34, l='MpServer', x=110.01, y=39.00, z=310.39], EntityPig['Pig'/35, l='MpServer', x=106.42, y=75.00, z=316.55], EntityPig['Pig'/36, l='MpServer', x=105.16, y=75.00, z=318.81], EntityBat['Bat'/37, l='MpServer', x=107.63, y=48.00, z=323.98], EntityPig['Pig'/51, l='MpServer', x=121.84, y=63.00, z=190.41], EntityPig['Pig'/52, l='MpServer', x=113.03, y=62.13, z=206.97], EntitySlime['Slime'/53, l='MpServer', x=117.75, y=16.00, z=249.01], EntityZombie['Zombie'/54, l='MpServer', x=127.87, y=20.60, z=258.47], EntitySlime['Slime'/55, l='MpServer', x=118.90, y=52.45, z=253.29], EntityCreeper['Creeper'/56, l='MpServer', x=115.59, y=67.00, z=255.13], EntityZombie['Zombie'/57, l='MpServer', x=123.50, y=37.00, z=265.31], EntityChicken['Chicken'/58, l='MpServer', x=118.53, y=71.00, z=316.47], EntityChicken['Chicken'/59, l='MpServer', x=114.47, y=74.00, z=313.53], EntitySpider['Spider'/60, l='MpServer', x=122.00, y=22.00, z=321.50], EntitySkeleton['Skeleton'/61, l='MpServer', x=116.34, y=19.00, z=326.84], EntityBat['Bat'/62, l='MpServer', x=121.40, y=24.57, z=322.51], EntityChicken['Chicken'/63, l='MpServer', x=115.56, y=76.00, z=330.59], EntityChicken['Chicken'/64, l='MpServer', x=124.84, y=78.00, z=328.13], EntitySkeleton['Skeleton'/67, l='MpServer', x=143.56, y=64.00, z=255.78], EntityZombie['Zombie'/68, l='MpServer', x=137.47, y=20.00, z=263.44], EntityZombie['Zombie'/69, l='MpServer', x=136.38, y=20.00, z=264.22], EntityZombie['Zombie'/70, l='MpServer', x=133.44, y=20.00, z=260.88], EntityCreeper['Creeper'/71, l='MpServer', x=135.28, y=20.00, z=266.69], EntitySpider['Spider'/72, l='MpServer', x=139.83, y=24.84, z=259.72], EntitySlime['Slime'/73, l='MpServer', x=142.38, y=16.00, z=295.38], EntitySlime['Slime'/74, l='MpServer', x=130.31, y=22.81, z=289.31], EntityPig['Pig'/75, l='MpServer', x=141.81, y=80.00, z=311.50], EntityPig['Pig'/76, l='MpServer', x=141.84, y=80.00, z=316.38], EntityZombie['Zombie'/77, l='MpServer', x=139.41, y=18.00, z=321.88], EntityBat['Bat'/78, l='MpServer', x=128.28, y=41.23, z=325.50], EntityPig['Pig'/80, l='MpServer', x=141.88, y=80.00, z=333.97], EntityPig['Pig'/82, l='MpServer', x=151.81, y=63.00, z=183.44], EntityPig['Pig'/83, l='MpServer', x=155.91, y=70.00, z=197.50], EntityPig['Pig'/84, l='MpServer', x=157.66, y=74.00, z=193.28], EntityPig['Pig'/85, l='MpServer', x=144.69, y=63.00, z=211.53], EntityPig['Pig'/86, l='MpServer', x=153.75, y=78.00, z=216.88], EntityPig['Pig'/87, l='MpServer', x=159.84, y=84.00, z=220.09], EntityPig['Pig'/88, l='MpServer', x=149.81, y=81.00, z=229.63], EntitySkeleton['Skeleton'/89, l='MpServer', x=144.50, y=64.00, z=251.88], EntityZombie['Zombie'/90, l='MpServer', x=149.00, y=74.00, z=261.56], EntitySlime['Slime'/91, l='MpServer', x=152.69, y=20.00, z=278.69], EntitySlime['Slime'/92, l='MpServer', x=152.38, y=21.00, z=281.63], EntitySlime['Slime'/93, l='MpServer', x=148.59, y=21.00, z=273.31], EntityZombie['Zombie'/94, l='MpServer', x=154.20, y=71.00, z=275.52], EntityPig['Pig'/95, l='MpServer', x=154.03, y=76.00, z=296.03], EntityChicken['Chicken'/96, l='MpServer', x=156.41, y=76.00, z=299.59], EntityPig['Pig'/97, l='MpServer', x=153.50, y=80.00, z=311.69], EntityPig['Pig'/98, l='MpServer', x=152.48, y=80.14, z=310.51], EntityChicken['Chicken'/99, l='MpServer', x=152.38, y=80.00, z=321.16], EntityPig['Pig'/102, l='MpServer', x=163.88, y=75.00, z=201.34], EntityPig['Pig'/103, l='MpServer', x=172.50, y=83.00, z=216.25], EntityPig['Pig'/104, l='MpServer', x=163.03, y=85.00, z=216.16], EntityPig['Pig'/105, l='MpServer', x=165.47, y=84.00, z=221.63], EntityPig['Pig'/106, l='MpServer', x=160.09, y=82.00, z=209.13], EntityBloodSteelMob['Friendly Fellow [WIP]'/107, l='MpServer', x=175.44, y=78.00, z=260.09], EntitySlime['Slime'/108, l='MpServer', x=173.31, y=14.00, z=277.31], EntityCreeper['Creeper'/109, l='MpServer', x=169.56, y=70.00, z=283.09], EntitySkeleton['Skeleton'/110, l='MpServer', x=168.53, y=69.00, z=283.91], EntityPig['Pig'/111, l='MpServer', x=174.13, y=77.00, z=297.63], EntityPig['Pig'/112, l='MpServer', x=161.53, y=74.00, z=315.53], EntityClientPlayerMP['Player401'/339, l='MpServer', x=184.50, y=81.62, z=256.30], EntityChicken['Chicken'/114, l='MpServer', x=160.38, y=85.00, z=323.44], EntitySheep['Sheep'/124, l='MpServer', x=179.28, y=66.00, z=182.34], EntityCreeper['Creeper'/125, l='MpServer', x=180.41, y=78.00, z=256.00], EntityZombie['Zombie'/126, l='MpServer', x=184.75, y=71.00, z=252.75], EntitySpider['Spider'/127, l='MpServer', x=181.28, y=78.00, z=260.53], EntityCreeper['Creeper'/128, l='MpServer', x=177.44, y=78.00, z=257.16], EntitySlime['Slime'/129, l='MpServer', x=187.31, y=15.00, z=288.53], EntityPig['Pig'/130, l='MpServer', x=181.38, y=79.00, z=292.41], EntityPig['Pig'/131, l='MpServer', x=182.66, y=78.00, z=310.25], EntitySheep['Sheep'/138, l='MpServer', x=204.13, y=68.00, z=191.81], EntityChicken['Chicken'/139, l='MpServer', x=203.53, y=68.00, z=189.53], EntityBat['Bat'/140, l='MpServer', x=203.50, y=62.10, z=238.25], EntityZombie['Zombie'/141, l='MpServer', x=201.22, y=56.00, z=236.47], EntityBat['Bat'/142, l='MpServer', x=197.75, y=47.00, z=254.75], EntityBat['Bat'/143, l='MpServer', x=196.50, y=55.10, z=244.34], EntityBat['Bat'/144, l='MpServer', x=202.72, y=56.10, z=243.25], EntityEnderman['Enderman'/145, l='MpServer', x=199.00, y=65.00, z=248.60], EntityCreeper['Creeper'/146, l='MpServer', x=199.56, y=77.00, z=271.00], EntityCreeper['Creeper'/147, l='MpServer', x=196.31, y=77.00, z=271.69], EntityCreeper['Creeper'/148, l='MpServer', x=196.59, y=66.00, z=256.06], EntitySkeleton['Skeleton'/149, l='MpServer', x=207.13, y=17.00, z=280.59], EntityBat['Bat'/150, l='MpServer', x=202.75, y=63.10, z=278.25], EntityZombie['Zombie'/151, l='MpServer', x=200.28, y=58.00, z=282.44], EntityZombie['Zombie'/152, l='MpServer', x=202.31, y=57.00, z=283.69], EntityCreeper['Creeper'/153, l='MpServer', x=200.94, y=56.00, z=278.44], EntityBat['Bat'/154, l='MpServer', x=203.44, y=68.10, z=279.25], EntityCreeper['Creeper'/155, l='MpServer', x=207.72, y=76.00, z=276.34], EntitySlime['Slime'/156, l='MpServer', x=192.70, y=15.00, z=290.21], EntityZombie['Zombie'/157, l='MpServer', x=207.91, y=18.00, z=306.56], EntityPig['Pig'/158, l='MpServer', x=198.88, y=78.00, z=318.13], EntitySheep['Sheep'/166, l='MpServer', x=219.44, y=66.00, z=178.47], EntitySheep['Sheep'/167, l='MpServer', x=208.51, y=68.00, z=199.48], EntityBat['Bat'/168, l='MpServer', x=209.75, y=65.10, z=242.41], EntityBat['Bat'/169, l='MpServer', x=210.75, y=62.10, z=268.25], EntityZombie['Zombie'/170, l='MpServer', x=209.99, y=64.01, z=263.56], EntityBat['Bat'/171, l='MpServer', x=211.46, y=55.00, z=268.31], EntitySkeleton['Skeleton'/172, l='MpServer', x=209.31, y=63.00, z=265.69], EntitySkeleton['Skeleton'/173, l='MpServer', x=210.13, y=63.00, z=265.25], EntityZombie['Zombie'/174, l='MpServer', x=209.16, y=63.00, z=263.34], EntityBat['Bat'/175, l='MpServer', x=208.75, y=74.10, z=264.75], EntityZombie['Zombie'/176, l='MpServer', x=208.31, y=64.00, z=261.31], EntityZombie['Zombie'/177, l='MpServer', x=209.16, y=64.00, z=262.22], EntitySkeleton['Skeleton'/178, l='MpServer', x=210.69, y=64.00, z=262.72], EntityZombie['Zombie'/179, l='MpServer', x=214.53, y=17.00, z=280.94], EntityZombie['Zombie'/180, l='MpServer', x=222.31, y=39.00, z=283.25], EntityZombie['Zombie'/181, l='MpServer', x=222.31, y=39.00, z=284.75], EntityZombie['Zombie'/182, l='MpServer', x=208.63, y=76.00, z=275.72], EntityCreeper['Creeper'/183, l='MpServer', x=208.69, y=76.00, z=276.69], EntityZombie['Zombie'/184, l='MpServer', x=209.50, y=25.00, z=296.50], EntityZombie['Zombie'/185, l='MpServer', x=223.51, y=39.00, z=288.21], EntityBat['Bat'/186, l='MpServer', x=210.25, y=19.10, z=309.75], EntityPig['Pig'/187, l='MpServer', x=218.31, y=62.27, z=335.38], EntityPig['Pig'/205, l='MpServer', x=238.50, y=66.00, z=178.66], EntitySkeleton['Skeleton'/206, l='MpServer', x=231.75, y=37.00, z=290.59], EntitySkeleton['Skeleton'/207, l='MpServer', x=236.50, y=52.00, z=291.50], EntityCreeper['Creeper'/216, l='MpServer', x=251.50, y=51.00, z=326.50], EntityPig['Pig'/227, l='MpServer', x=255.05, y=67.00, z=185.62], EntitySkeleton['Skeleton'/228, l='MpServer', x=256.97, y=41.00, z=218.38]]
+ Retry entities: 0 total; []
+ Server brand: fml,forge
+ Server type: Integrated singleplayer server
+Stacktrace:
+ at net.minecraft.client.multiplayer.WorldClient.addWorldInfoToCrashReport(WorldClient.java:415)
+ at net.minecraft.client.Minecraft.addGraphicsAndWorldToCrashReport(Minecraft.java:2566)
+ at net.minecraft.client.Minecraft.run(Minecraft.java:991)
+ at net.minecraft.client.main.Main.main(Main.java:164)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+ at java.lang.reflect.Method.invoke(Unknown Source)
+ at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)
+ at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
+ at net.minecraftforge.gradle.GradleStartCommon.launch(Unknown Source)
+ at GradleStart.main(Unknown Source)
+
+-- System Details --
+Details:
+ Minecraft Version: 1.7.10
+ Operating System: Windows 7 (amd64) version 6.1
+ Java Version: 1.8.0_60, Oracle Corporation
+ Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
+ Memory: 444844208 bytes (424 MB) / 925892608 bytes (883 MB) up to 3804758016 bytes (3628 MB)
+ JVM Flags: 0 total;
+ AABB Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
+ IntCache: cache: 0, tcache: 0, allocated: 12, tallocated: 94
+ FML: MCP v9.05 FML v7.10.99.99 Minecraft Forge 10.13.4.1448 5 mods loaded, 5 mods active
+ States: 'U' = Unloaded 'L' = Loaded 'C' = Constructed 'H' = Pre-initialized 'I' = Initialized 'J' = Post-initialized 'A' = Available 'D' = Disabled 'E' = Errored
+ UCHIJAAAA mcp{9.05} [Minecraft Coder Pack] (minecraft.jar)
+ UCHIJAAAA FML{7.10.99.99} [Forge Mod Loader] (forgeSrc-1.7.10-10.13.4.1448-1.7.10.jar)
+ UCHIJAAAA Forge{10.13.4.1448} [Minecraft Forge] (forgeSrc-1.7.10-10.13.4.1448-1.7.10.jar)
+ UCHIJAAAA CodeChickenCore{1.0.4.29} [CodeChicken Core] (minecraft.jar)
+ UCHIJAAAA miscutils{0.2.2} [miscutils] (bin)
+ GL info: ' Vendor: 'NVIDIA Corporation' Version: '4.5.0 NVIDIA 347.52' Renderer: 'GeForce GTX 770/PCIe/SSE2'
+ Launched Version: 1.7.10
+ LWJGL: 2.9.1
+ OpenGL: GeForce GTX 770/PCIe/SSE2 GL version 4.5.0 NVIDIA 347.52, NVIDIA Corporation
+ GL Caps: Using GL 1.3 multitexturing.
+Using framebuffer objects because OpenGL 3.0 is supported and separate blending is supported.
+Anisotropic filtering is supported and maximum anisotropy is 16.
+Shaders are available because OpenGL 2.1 is supported.
+
+ Is Modded: Definitely; Client brand changed to 'fml,forge'
+ Type: Client (map_client.txt)
+ Resource Packs: []
+ Current Language: English (US)
+ Profiler Position: N/A (disabled)
+ Vec3 Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
+ Anisotropic Filtering: Off (1) \ No newline at end of file
diff --git a/crash-reports/crash-2015-09-06_16.30.30-server.txt b/crash-reports/crash-2015-09-06_16.30.30-server.txt
new file mode 100644
index 0000000000..606e07cf21
--- /dev/null
+++ b/crash-reports/crash-2015-09-06_16.30.30-server.txt
@@ -0,0 +1,75 @@
+---- Minecraft Crash Report ----
+// I blame Dinnerbone.
+
+Time: 6/09/15 4:30 PM
+Description: Ticking memory connection
+
+java.lang.ClassCastException: miscutil.tile_entity.TileEntityArcaneInfuser cannot be cast to miscutil.tile_entity.TileEntityBloodSteelFurnace
+ at miscutil.handler.BloodSteelFurnaceGuiHandler.getServerGuiElement(BloodSteelFurnaceGuiHandler.java:19)
+ at cpw.mods.fml.common.network.NetworkRegistry.getRemoteGuiContainer(NetworkRegistry.java:243)
+ at cpw.mods.fml.common.network.internal.FMLNetworkHandler.openGui(FMLNetworkHandler.java:75)
+ at net.minecraft.entity.player.EntityPlayer.openGui(EntityPlayer.java:2501)
+ at miscutil.block.ArcaneInfuser.onBlockActivated(ArcaneInfuser.java:60)
+ at net.minecraft.server.management.ItemInWorldManager.activateBlockOrUseItem(ItemInWorldManager.java:409)
+ at net.minecraft.network.NetHandlerPlayServer.processPlayerBlockPlacement(NetHandlerPlayServer.java:593)
+ at net.minecraft.network.play.client.C08PacketPlayerBlockPlacement.processPacket(C08PacketPlayerBlockPlacement.java:74)
+ at net.minecraft.network.play.client.C08PacketPlayerBlockPlacement.processPacket(C08PacketPlayerBlockPlacement.java:122)
+ at net.minecraft.network.NetworkManager.processReceivedPackets(NetworkManager.java:241)
+ at net.minecraft.network.NetworkSystem.networkTick(NetworkSystem.java:182)
+ at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:726)
+ at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:614)
+ at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:118)
+ at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:485)
+ at net.minecraft.server.MinecraftServer$2.run(MinecraftServer.java:752)
+
+
+A detailed walkthrough of the error, its code path and all known details is as follows:
+---------------------------------------------------------------------------------------
+
+-- Head --
+Stacktrace:
+ at miscutil.handler.BloodSteelFurnaceGuiHandler.getServerGuiElement(BloodSteelFurnaceGuiHandler.java:19)
+ at cpw.mods.fml.common.network.NetworkRegistry.getRemoteGuiContainer(NetworkRegistry.java:243)
+ at cpw.mods.fml.common.network.internal.FMLNetworkHandler.openGui(FMLNetworkHandler.java:75)
+ at net.minecraft.entity.player.EntityPlayer.openGui(EntityPlayer.java:2501)
+ at miscutil.block.ArcaneInfuser.onBlockActivated(ArcaneInfuser.java:60)
+ at net.minecraft.server.management.ItemInWorldManager.activateBlockOrUseItem(ItemInWorldManager.java:409)
+ at net.minecraft.network.NetHandlerPlayServer.processPlayerBlockPlacement(NetHandlerPlayServer.java:593)
+ at net.minecraft.network.play.client.C08PacketPlayerBlockPlacement.processPacket(C08PacketPlayerBlockPlacement.java:74)
+ at net.minecraft.network.play.client.C08PacketPlayerBlockPlacement.processPacket(C08PacketPlayerBlockPlacement.java:122)
+ at net.minecraft.network.NetworkManager.processReceivedPackets(NetworkManager.java:241)
+
+-- Ticking connection --
+Details:
+ Connection: net.minecraft.network.NetworkManager@271901d6
+Stacktrace:
+ at net.minecraft.network.NetworkSystem.networkTick(NetworkSystem.java:182)
+ at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:726)
+ at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:614)
+ at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:118)
+ at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:485)
+ at net.minecraft.server.MinecraftServer$2.run(MinecraftServer.java:752)
+
+-- System Details --
+Details:
+ Minecraft Version: 1.7.10
+ Operating System: Windows 7 (amd64) version 6.1
+ Java Version: 1.8.0_60, Oracle Corporation
+ Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
+ Memory: 316540776 bytes (301 MB) / 958398464 bytes (914 MB) up to 3804758016 bytes (3628 MB)
+ JVM Flags: 0 total;
+ AABB Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
+ IntCache: cache: 0, tcache: 1, allocated: 12, tallocated: 94
+ FML: MCP v9.05 FML v7.10.99.99 Minecraft Forge 10.13.4.1448 5 mods loaded, 5 mods active
+ States: 'U' = Unloaded 'L' = Loaded 'C' = Constructed 'H' = Pre-initialized 'I' = Initialized 'J' = Post-initialized 'A' = Available 'D' = Disabled 'E' = Errored
+ UCHIJAAAA mcp{9.05} [Minecraft Coder Pack] (minecraft.jar)
+ UCHIJAAAA FML{7.10.99.99} [Forge Mod Loader] (forgeSrc-1.7.10-10.13.4.1448-1.7.10.jar)
+ UCHIJAAAA Forge{10.13.4.1448} [Minecraft Forge] (forgeSrc-1.7.10-10.13.4.1448-1.7.10.jar)
+ UCHIJAAAA CodeChickenCore{1.0.4.29} [CodeChicken Core] (minecraft.jar)
+ UCHIJAAAA miscutils{0.2.2} [miscutils] (bin)
+ GL info: ~~ERROR~~ RuntimeException: No OpenGL context found in the current thread.
+ Profiler Position: N/A (disabled)
+ Vec3 Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
+ Player Count: 1 / 8; [EntityPlayerMP['Player54'/337, l='New World', x=184.94, y=80.00, z=255.72]]
+ Type: Integrated Server (map_client.txt)
+ Is Modded: Definitely; Client brand changed to 'fml,forge' \ No newline at end of file
diff --git a/crash-reports/crash-2015-09-06_16.31.12-server.txt b/crash-reports/crash-2015-09-06_16.31.12-server.txt
new file mode 100644
index 0000000000..dd363abb8c
--- /dev/null
+++ b/crash-reports/crash-2015-09-06_16.31.12-server.txt
@@ -0,0 +1,75 @@
+---- Minecraft Crash Report ----
+// Would you like a cupcake?
+
+Time: 6/09/15 4:31 PM
+Description: Ticking memory connection
+
+java.lang.ClassCastException: miscutil.tile_entity.TileEntityArcaneInfuser cannot be cast to miscutil.tile_entity.TileEntityBloodSteelFurnace
+ at miscutil.handler.BloodSteelFurnaceGuiHandler.getServerGuiElement(BloodSteelFurnaceGuiHandler.java:19)
+ at cpw.mods.fml.common.network.NetworkRegistry.getRemoteGuiContainer(NetworkRegistry.java:243)
+ at cpw.mods.fml.common.network.internal.FMLNetworkHandler.openGui(FMLNetworkHandler.java:75)
+ at net.minecraft.entity.player.EntityPlayer.openGui(EntityPlayer.java:2501)
+ at miscutil.block.ArcaneInfuser.onBlockActivated(ArcaneInfuser.java:60)
+ at net.minecraft.server.management.ItemInWorldManager.activateBlockOrUseItem(ItemInWorldManager.java:409)
+ at net.minecraft.network.NetHandlerPlayServer.processPlayerBlockPlacement(NetHandlerPlayServer.java:593)
+ at net.minecraft.network.play.client.C08PacketPlayerBlockPlacement.processPacket(C08PacketPlayerBlockPlacement.java:74)
+ at net.minecraft.network.play.client.C08PacketPlayerBlockPlacement.processPacket(C08PacketPlayerBlockPlacement.java:122)
+ at net.minecraft.network.NetworkManager.processReceivedPackets(NetworkManager.java:241)
+ at net.minecraft.network.NetworkSystem.networkTick(NetworkSystem.java:182)
+ at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:726)
+ at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:614)
+ at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:118)
+ at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:485)
+ at net.minecraft.server.MinecraftServer$2.run(MinecraftServer.java:752)
+
+
+A detailed walkthrough of the error, its code path and all known details is as follows:
+---------------------------------------------------------------------------------------
+
+-- Head --
+Stacktrace:
+ at miscutil.handler.BloodSteelFurnaceGuiHandler.getServerGuiElement(BloodSteelFurnaceGuiHandler.java:19)
+ at cpw.mods.fml.common.network.NetworkRegistry.getRemoteGuiContainer(NetworkRegistry.java:243)
+ at cpw.mods.fml.common.network.internal.FMLNetworkHandler.openGui(FMLNetworkHandler.java:75)
+ at net.minecraft.entity.player.EntityPlayer.openGui(EntityPlayer.java:2501)
+ at miscutil.block.ArcaneInfuser.onBlockActivated(ArcaneInfuser.java:60)
+ at net.minecraft.server.management.ItemInWorldManager.activateBlockOrUseItem(ItemInWorldManager.java:409)
+ at net.minecraft.network.NetHandlerPlayServer.processPlayerBlockPlacement(NetHandlerPlayServer.java:593)
+ at net.minecraft.network.play.client.C08PacketPlayerBlockPlacement.processPacket(C08PacketPlayerBlockPlacement.java:74)
+ at net.minecraft.network.play.client.C08PacketPlayerBlockPlacement.processPacket(C08PacketPlayerBlockPlacement.java:122)
+ at net.minecraft.network.NetworkManager.processReceivedPackets(NetworkManager.java:241)
+
+-- Ticking connection --
+Details:
+ Connection: net.minecraft.network.NetworkManager@1b6258bd
+Stacktrace:
+ at net.minecraft.network.NetworkSystem.networkTick(NetworkSystem.java:182)
+ at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:726)
+ at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:614)
+ at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:118)
+ at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:485)
+ at net.minecraft.server.MinecraftServer$2.run(MinecraftServer.java:752)
+
+-- System Details --
+Details:
+ Minecraft Version: 1.7.10
+ Operating System: Windows 7 (amd64) version 6.1
+ Java Version: 1.8.0_60, Oracle Corporation
+ Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
+ Memory: 182051672 bytes (173 MB) / 904396800 bytes (862 MB) up to 3804758016 bytes (3628 MB)
+ JVM Flags: 0 total;
+ AABB Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
+ IntCache: cache: 0, tcache: 0, allocated: 12, tallocated: 94
+ FML: MCP v9.05 FML v7.10.99.99 Minecraft Forge 10.13.4.1448 5 mods loaded, 5 mods active
+ States: 'U' = Unloaded 'L' = Loaded 'C' = Constructed 'H' = Pre-initialized 'I' = Initialized 'J' = Post-initialized 'A' = Available 'D' = Disabled 'E' = Errored
+ UCHIJAAAA mcp{9.05} [Minecraft Coder Pack] (minecraft.jar)
+ UCHIJAAAA FML{7.10.99.99} [Forge Mod Loader] (forgeSrc-1.7.10-10.13.4.1448-1.7.10.jar)
+ UCHIJAAAA Forge{10.13.4.1448} [Minecraft Forge] (forgeSrc-1.7.10-10.13.4.1448-1.7.10.jar)
+ UCHIJAAAA CodeChickenCore{1.0.4.29} [CodeChicken Core] (minecraft.jar)
+ UCHIJAAAA miscutils{0.2.2} [miscutils] (bin)
+ GL info: ~~ERROR~~ RuntimeException: No OpenGL context found in the current thread.
+ Profiler Position: N/A (disabled)
+ Vec3 Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
+ Player Count: 1 / 8; [EntityPlayerMP['Player601'/335, l='New World', x=186.43, y=80.00, z=255.90]]
+ Type: Integrated Server (map_client.txt)
+ Is Modded: Definitely; Client brand changed to 'fml,forge' \ No newline at end of file
diff --git a/crash-reports/crash-2015-09-06_16.40.22-server.txt b/crash-reports/crash-2015-09-06_16.40.22-server.txt
new file mode 100644
index 0000000000..48b8efd339
--- /dev/null
+++ b/crash-reports/crash-2015-09-06_16.40.22-server.txt
@@ -0,0 +1,75 @@
+---- Minecraft Crash Report ----
+// Hi. I'm Minecraft, and I'm a crashaholic.
+
+Time: 6/09/15 4:40 PM
+Description: Ticking memory connection
+
+java.lang.ClassCastException: miscutil.tile_entity.TileEntityArcaneInfuser cannot be cast to miscutil.tile_entity.TileEntityBloodSteelFurnace
+ at miscutil.handler.BloodSteelFurnaceGuiHandler.getServerGuiElement(BloodSteelFurnaceGuiHandler.java:22)
+ at cpw.mods.fml.common.network.NetworkRegistry.getRemoteGuiContainer(NetworkRegistry.java:243)
+ at cpw.mods.fml.common.network.internal.FMLNetworkHandler.openGui(FMLNetworkHandler.java:75)
+ at net.minecraft.entity.player.EntityPlayer.openGui(EntityPlayer.java:2501)
+ at miscutil.block.ArcaneInfuser.onBlockActivated(ArcaneInfuser.java:60)
+ at net.minecraft.server.management.ItemInWorldManager.activateBlockOrUseItem(ItemInWorldManager.java:409)
+ at net.minecraft.network.NetHandlerPlayServer.processPlayerBlockPlacement(NetHandlerPlayServer.java:593)
+ at net.minecraft.network.play.client.C08PacketPlayerBlockPlacement.processPacket(C08PacketPlayerBlockPlacement.java:74)
+ at net.minecraft.network.play.client.C08PacketPlayerBlockPlacement.processPacket(C08PacketPlayerBlockPlacement.java:122)
+ at net.minecraft.network.NetworkManager.processReceivedPackets(NetworkManager.java:241)
+ at net.minecraft.network.NetworkSystem.networkTick(NetworkSystem.java:182)
+ at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:726)
+ at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:614)
+ at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:118)
+ at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:485)
+ at net.minecraft.server.MinecraftServer$2.run(MinecraftServer.java:752)
+
+
+A detailed walkthrough of the error, its code path and all known details is as follows:
+---------------------------------------------------------------------------------------
+
+-- Head --
+Stacktrace:
+ at miscutil.handler.BloodSteelFurnaceGuiHandler.getServerGuiElement(BloodSteelFurnaceGuiHandler.java:22)
+ at cpw.mods.fml.common.network.NetworkRegistry.getRemoteGuiContainer(NetworkRegistry.java:243)
+ at cpw.mods.fml.common.network.internal.FMLNetworkHandler.openGui(FMLNetworkHandler.java:75)
+ at net.minecraft.entity.player.EntityPlayer.openGui(EntityPlayer.java:2501)
+ at miscutil.block.ArcaneInfuser.onBlockActivated(ArcaneInfuser.java:60)
+ at net.minecraft.server.management.ItemInWorldManager.activateBlockOrUseItem(ItemInWorldManager.java:409)
+ at net.minecraft.network.NetHandlerPlayServer.processPlayerBlockPlacement(NetHandlerPlayServer.java:593)
+ at net.minecraft.network.play.client.C08PacketPlayerBlockPlacement.processPacket(C08PacketPlayerBlockPlacement.java:74)
+ at net.minecraft.network.play.client.C08PacketPlayerBlockPlacement.processPacket(C08PacketPlayerBlockPlacement.java:122)
+ at net.minecraft.network.NetworkManager.processReceivedPackets(NetworkManager.java:241)
+
+-- Ticking connection --
+Details:
+ Connection: net.minecraft.network.NetworkManager@1250c14e
+Stacktrace:
+ at net.minecraft.network.NetworkSystem.networkTick(NetworkSystem.java:182)
+ at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:726)
+ at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:614)
+ at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:118)
+ at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:485)
+ at net.minecraft.server.MinecraftServer$2.run(MinecraftServer.java:752)
+
+-- System Details --
+Details:
+ Minecraft Version: 1.7.10
+ Operating System: Windows 7 (amd64) version 6.1
+ Java Version: 1.8.0_60, Oracle Corporation
+ Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
+ Memory: 581246576 bytes (554 MB) / 1151336448 bytes (1098 MB) up to 3804758016 bytes (3628 MB)
+ JVM Flags: 0 total;
+ AABB Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
+ IntCache: cache: 0, tcache: 0, allocated: 12, tallocated: 94
+ FML: MCP v9.05 FML v7.10.99.99 Minecraft Forge 10.13.4.1448 5 mods loaded, 5 mods active
+ States: 'U' = Unloaded 'L' = Loaded 'C' = Constructed 'H' = Pre-initialized 'I' = Initialized 'J' = Post-initialized 'A' = Available 'D' = Disabled 'E' = Errored
+ UCHIJAAAA mcp{9.05} [Minecraft Coder Pack] (minecraft.jar)
+ UCHIJAAAA FML{7.10.99.99} [Forge Mod Loader] (forgeSrc-1.7.10-10.13.4.1448-1.7.10.jar)
+ UCHIJAAAA Forge{10.13.4.1448} [Minecraft Forge] (forgeSrc-1.7.10-10.13.4.1448-1.7.10.jar)
+ UCHIJAAAA CodeChickenCore{1.0.4.29} [CodeChicken Core] (minecraft.jar)
+ UCHIJAAAA miscutils{0.2.2} [miscutils] (bin)
+ GL info: ~~ERROR~~ RuntimeException: No OpenGL context found in the current thread.
+ Profiler Position: N/A (disabled)
+ Vec3 Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
+ Player Count: 1 / 8; [EntityPlayerMP['Player198'/334, l='New World', x=185.65, y=80.00, z=256.63]]
+ Type: Integrated Server (map_client.txt)
+ Is Modded: Definitely; Client brand changed to 'fml,forge' \ No newline at end of file
diff --git a/crash-reports/crash-2015-09-06_17.03.21-server.txt b/crash-reports/crash-2015-09-06_17.03.21-server.txt
new file mode 100644
index 0000000000..24a8839cd0
--- /dev/null
+++ b/crash-reports/crash-2015-09-06_17.03.21-server.txt
@@ -0,0 +1,81 @@
+---- Minecraft Crash Report ----
+// Hey, that tickles! Hehehe!
+
+Time: 6/09/15 5:03 PM
+Description: Ticking memory connection
+
+java.lang.ArrayIndexOutOfBoundsException: 7
+ at net.minecraft.entity.player.InventoryPlayer.getStackInSlot(InventoryPlayer.java:646)
+ at net.minecraft.inventory.Slot.getStack(Slot.java:88)
+ at net.minecraft.inventory.Container.getInventory(Container.java:67)
+ at net.minecraft.inventory.Container.addCraftingToCrafters(Container.java:53)
+ at miscutil.inventory.ContainerBloodSteelFurnace.addCraftingToCrafters(ContainerBloodSteelFurnace.java:45)
+ at cpw.mods.fml.common.network.internal.FMLNetworkHandler.openGui(FMLNetworkHandler.java:88)
+ at net.minecraft.entity.player.EntityPlayer.openGui(EntityPlayer.java:2501)
+ at miscutil.block.BloodSteelFurnace.onBlockActivated(BloodSteelFurnace.java:59)
+ at net.minecraft.server.management.ItemInWorldManager.activateBlockOrUseItem(ItemInWorldManager.java:409)
+ at net.minecraft.network.NetHandlerPlayServer.processPlayerBlockPlacement(NetHandlerPlayServer.java:593)
+ at net.minecraft.network.play.client.C08PacketPlayerBlockPlacement.processPacket(C08PacketPlayerBlockPlacement.java:74)
+ at net.minecraft.network.play.client.C08PacketPlayerBlockPlacement.processPacket(C08PacketPlayerBlockPlacement.java:122)
+ at net.minecraft.network.NetworkManager.processReceivedPackets(NetworkManager.java:241)
+ at net.minecraft.network.NetworkSystem.networkTick(NetworkSystem.java:182)
+ at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:726)
+ at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:614)
+ at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:118)
+ at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:485)
+ at net.minecraft.server.MinecraftServer$2.run(MinecraftServer.java:752)
+
+
+A detailed walkthrough of the error, its code path and all known details is as follows:
+---------------------------------------------------------------------------------------
+
+-- Head --
+Stacktrace:
+ at net.minecraft.entity.player.InventoryPlayer.getStackInSlot(InventoryPlayer.java:646)
+ at net.minecraft.inventory.Slot.getStack(Slot.java:88)
+ at net.minecraft.inventory.Container.getInventory(Container.java:67)
+ at net.minecraft.inventory.Container.addCraftingToCrafters(Container.java:53)
+ at miscutil.inventory.ContainerBloodSteelFurnace.addCraftingToCrafters(ContainerBloodSteelFurnace.java:45)
+ at cpw.mods.fml.common.network.internal.FMLNetworkHandler.openGui(FMLNetworkHandler.java:88)
+ at net.minecraft.entity.player.EntityPlayer.openGui(EntityPlayer.java:2501)
+ at miscutil.block.BloodSteelFurnace.onBlockActivated(BloodSteelFurnace.java:59)
+ at net.minecraft.server.management.ItemInWorldManager.activateBlockOrUseItem(ItemInWorldManager.java:409)
+ at net.minecraft.network.NetHandlerPlayServer.processPlayerBlockPlacement(NetHandlerPlayServer.java:593)
+ at net.minecraft.network.play.client.C08PacketPlayerBlockPlacement.processPacket(C08PacketPlayerBlockPlacement.java:74)
+ at net.minecraft.network.play.client.C08PacketPlayerBlockPlacement.processPacket(C08PacketPlayerBlockPlacement.java:122)
+ at net.minecraft.network.NetworkManager.processReceivedPackets(NetworkManager.java:241)
+
+-- Ticking connection --
+Details:
+ Connection: net.minecraft.network.NetworkManager@2faf3ce3
+Stacktrace:
+ at net.minecraft.network.NetworkSystem.networkTick(NetworkSystem.java:182)
+ at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:726)
+ at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:614)
+ at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:118)
+ at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:485)
+ at net.minecraft.server.MinecraftServer$2.run(MinecraftServer.java:752)
+
+-- System Details --
+Details:
+ Minecraft Version: 1.7.10
+ Operating System: Windows 7 (amd64) version 6.1
+ Java Version: 1.8.0_60, Oracle Corporation
+ Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
+ Memory: 692675056 bytes (660 MB) / 1377304576 bytes (1313 MB) up to 3804758016 bytes (3628 MB)
+ JVM Flags: 0 total;
+ AABB Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
+ IntCache: cache: 0, tcache: 0, allocated: 12, tallocated: 94
+ FML: MCP v9.05 FML v7.10.99.99 Minecraft Forge 10.13.4.1448 5 mods loaded, 5 mods active
+ States: 'U' = Unloaded 'L' = Loaded 'C' = Constructed 'H' = Pre-initialized 'I' = Initialized 'J' = Post-initialized 'A' = Available 'D' = Disabled 'E' = Errored
+ UCHIJAAAA mcp{9.05} [Minecraft Coder Pack] (minecraft.jar)
+ UCHIJAAAA FML{7.10.99.99} [Forge Mod Loader] (forgeSrc-1.7.10-10.13.4.1448-1.7.10.jar)
+ UCHIJAAAA Forge{10.13.4.1448} [Minecraft Forge] (forgeSrc-1.7.10-10.13.4.1448-1.7.10.jar)
+ UCHIJAAAA CodeChickenCore{1.0.4.29} [CodeChicken Core] (minecraft.jar)
+ UCHIJAAAA miscutils{0.2.2} [miscutils] (bin)
+ GL info: ~~ERROR~~ RuntimeException: No OpenGL context found in the current thread.
+ Profiler Position: N/A (disabled)
+ Vec3 Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
+ Player Count: 1 / 8; [EntityPlayerMP['Player809'/321, l='New World', x=185.06, y=80.00, z=255.79]]
+ Type: Integrated Server (map_client.txt)
+ Is Modded: Definitely; Client brand changed to 'fml,forge' \ No newline at end of file
diff --git a/crash-reports/crash-2015-09-06_17.03.22-client.txt b/crash-reports/crash-2015-09-06_17.03.22-client.txt
new file mode 100644
index 0000000000..6b2bf240ae
--- /dev/null
+++ b/crash-reports/crash-2015-09-06_17.03.22-client.txt
@@ -0,0 +1,106 @@
+---- Minecraft Crash Report ----
+// Ooh. Shiny.
+
+Time: 6/09/15 5:03 PM
+Description: Rendering screen
+
+java.lang.ArrayIndexOutOfBoundsException: 7
+ at net.minecraft.entity.player.InventoryPlayer.getStackInSlot(InventoryPlayer.java:646)
+ at net.minecraft.inventory.Slot.getStack(Slot.java:88)
+ at net.minecraft.client.gui.inventory.GuiContainer.func_146977_a(GuiContainer.java:219)
+ at net.minecraft.client.gui.inventory.GuiContainer.drawScreen(GuiContainer.java:114)
+ at net.minecraft.client.renderer.EntityRenderer.updateCameraAndRender(EntityRenderer.java:1137)
+ at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1067)
+ at net.minecraft.client.Minecraft.run(Minecraft.java:962)
+ at net.minecraft.client.main.Main.main(Main.java:164)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+ at java.lang.reflect.Method.invoke(Unknown Source)
+ at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)
+ at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
+ at net.minecraftforge.gradle.GradleStartCommon.launch(Unknown Source)
+ at GradleStart.main(Unknown Source)
+
+
+A detailed walkthrough of the error, its code path and all known details is as follows:
+---------------------------------------------------------------------------------------
+
+-- Head --
+Stacktrace:
+ at net.minecraft.entity.player.InventoryPlayer.getStackInSlot(InventoryPlayer.java:646)
+ at net.minecraft.inventory.Slot.getStack(Slot.java:88)
+ at net.minecraft.client.gui.inventory.GuiContainer.func_146977_a(GuiContainer.java:219)
+ at net.minecraft.client.gui.inventory.GuiContainer.drawScreen(GuiContainer.java:114)
+
+-- Screen render details --
+Details:
+ Screen name: miscutil.gui.GuiBloodSteelFurnace
+ Mouse location: Scaled: (240, 128). Absolute: (960, 514)
+ Screen size: Scaled: (480, 257). Absolute: (1920, 1028). Scale factor of 4
+
+-- Affected level --
+Details:
+ Level name: MpServer
+ All players: 1 total; [EntityClientPlayerMP['Player809'/321, l='MpServer', x=185.06, y=81.62, z=255.79]]
+ Chunk stats: MultiplayerChunkCache: 586, 586
+ Level seed: 0
+ Level generator: ID 00 - default, ver 1. Features enabled: false
+ Level generator options:
+ Level spawn location: World: (244,64,256), Chunk: (at 4,4,0 in 15,16; contains blocks 240,0,256 to 255,255,271), Region: (0,0; contains chunks 0,0 to 31,31, blocks 0,0,0 to 511,255,511)
+ Level time: 986270 game time, 986270 day time
+ Level dimension: 0
+ Level storage version: 0x00000 - Unknown?
+ Level weather: Rain time: 0 (now: false), thunder time: 0 (now: false)
+ Level game mode: Game mode: creative (ID 1). Hardcore: false. Cheats: false
+ Forced entities: 112 total; [EntityZombie['Zombie'/8966, l='MpServer', x=141.50, y=69.00, z=314.50], EntityCreeper['Creeper'/10008, l='MpServer', x=119.50, y=30.00, z=254.50], EntityPig['Pig'/28, l='MpServer', x=111.84, y=64.00, z=177.50], EntityPig['Pig'/31, l='MpServer', x=111.88, y=74.00, z=228.34], EntityPig['Pig'/32, l='MpServer', x=107.91, y=78.00, z=247.03], EntityPig['Pig'/34, l='MpServer', x=111.91, y=76.00, z=296.84], EntitySlime['Slime'/36, l='MpServer', x=110.31, y=39.00, z=310.69], EntitySkeleton['Skeleton'/7984, l='MpServer', x=213.50, y=16.00, z=270.50], EntitySkeleton['Skeleton'/7985, l='MpServer', x=212.50, y=16.00, z=266.50], EntityPig['Pig'/50, l='MpServer', x=121.66, y=63.00, z=189.47], EntityCreeper['Creeper'/9522, l='MpServer', x=264.50, y=31.00, z=286.50], EntityPig['Pig'/51, l='MpServer', x=112.31, y=69.00, z=190.50], EntityPig['Pig'/52, l='MpServer', x=114.03, y=62.08, z=213.03], EntitySlime['Slime'/53, l='MpServer', x=117.47, y=16.00, z=249.31], EntitySlime['Slime'/54, l='MpServer', x=114.77, y=52.00, z=253.31], EntitySquid['Squid'/4666, l='MpServer', x=216.50, y=60.34, z=240.50], EntityBat['Bat'/10298, l='MpServer', x=175.58, y=52.00, z=267.38], EntityChicken['Chicken'/59, l='MpServer', x=119.47, y=74.00, z=314.47], EntityChicken['Chicken'/60, l='MpServer', x=117.53, y=75.00, z=326.56], EntityChicken['Chicken'/61, l='MpServer', x=122.41, y=78.00, z=334.41], EntityItem['item.item.egg'/9021, l='MpServer', x=154.38, y=76.13, z=307.97], EntityPig['Pig'/64, l='MpServer', x=132.84, y=64.00, z=189.03], EntityPig['Pig'/65, l='MpServer', x=141.19, y=68.00, z=217.50], EntityClientPlayerMP['Player809'/321, l='MpServer', x=185.06, y=81.62, z=255.79], EntityPig['Pig'/67, l='MpServer', x=140.66, y=68.00, z=238.53], EntitySlime['Slime'/68, l='MpServer', x=142.38, y=16.69, z=295.38], EntitySlime['Slime'/69, l='MpServer', x=130.31, y=22.00, z=289.31], EntityPig['Pig'/70, l='MpServer', x=136.47, y=79.00, z=312.94], EntityPig['Pig'/72, l='MpServer', x=144.69, y=82.00, z=333.50], EntityPig['Pig'/75, l='MpServer', x=145.50, y=63.00, z=178.16], EntityPig['Pig'/76, l='MpServer', x=146.84, y=67.00, z=195.13], EntityBat['Bat'/9292, l='MpServer', x=267.63, y=31.10, z=308.25], EntityPig['Pig'/77, l='MpServer', x=155.22, y=72.00, z=192.91], EntityPig['Pig'/78, l='MpServer', x=155.09, y=79.00, z=216.13], EntityPig['Pig'/79, l='MpServer', x=159.50, y=84.00, z=223.78], EntityCreeper['Creeper'/10064, l='MpServer', x=262.50, y=48.00, z=295.50], EntitySlime['Slime'/81, l='MpServer', x=152.69, y=20.00, z=278.69], EntitySlime['Slime'/82, l='MpServer', x=152.38, y=21.00, z=281.63], EntitySkeleton['Skeleton'/10066, l='MpServer', x=263.50, y=48.00, z=296.50], EntitySlime['Slime'/83, l='MpServer', x=148.50, y=21.00, z=273.31], EntityCreeper['Creeper'/10069, l='MpServer', x=232.16, y=15.00, z=268.13], EntityChicken['Chicken'/86, l='MpServer', x=157.13, y=80.00, z=276.28], EntityChicken['Chicken'/88, l='MpServer', x=154.47, y=76.00, z=309.13], EntityPig['Pig'/89, l='MpServer', x=151.44, y=75.00, z=304.19], EntityPig['Pig'/91, l='MpServer', x=144.69, y=83.00, z=335.50], EntityPig['Pig'/92, l='MpServer', x=149.47, y=80.00, z=329.69], EntityBat['Bat'/8540, l='MpServer', x=254.75, y=53.10, z=254.72], EntityPig['Pig'/96, l='MpServer', x=162.91, y=76.00, z=202.31], EntityPig['Pig'/97, l='MpServer', x=160.91, y=82.00, z=209.28], EntityPig['Pig'/98, l='MpServer', x=180.88, y=78.00, z=262.38], EntityBat['Bat'/10339, l='MpServer', x=134.06, y=50.07, z=305.59], EntityBloodSteelMob['Friendly Fellow [WIP]'/100, l='MpServer', x=171.91, y=78.00, z=257.03], EntitySlime['Slime'/101, l='MpServer', x=173.65, y=14.00, z=277.31], EntityPig['Pig'/102, l='MpServer', x=177.88, y=78.00, z=311.13], EntityPig['Pig'/103, l='MpServer', x=170.53, y=78.00, z=293.31], EntityPig['Pig'/104, l='MpServer', x=160.91, y=77.00, z=294.06], EntityPig['Pig'/105, l='MpServer', x=162.22, y=76.00, z=301.91], EntityChicken['Chicken'/106, l='MpServer', x=160.38, y=85.00, z=323.44], EntityBat['Bat'/9579, l='MpServer', x=196.94, y=44.70, z=318.44], EntityBat['Bat'/9580, l='MpServer', x=194.69, y=43.82, z=306.72], EntityBat['Bat'/10097, l='MpServer', x=122.29, y=36.12, z=258.27], EntitySheep['Sheep'/120, l='MpServer', x=188.16, y=63.00, z=201.66], EntityPig['Pig'/121, l='MpServer', x=179.72, y=79.00, z=214.44], EntityBat['Bat'/10361, l='MpServer', x=264.25, y=31.39, z=284.56], EntityCreeper['Creeper'/123, l='MpServer', x=186.56, y=71.00, z=252.03], EntityEnderman['Enderman'/10622, l='MpServer', x=253.10, y=41.00, z=216.66], EntityCreeper['Creeper'/128, l='MpServer', x=177.00, y=78.00, z=256.63], EntityCreeper['Creeper'/129, l='MpServer', x=181.03, y=78.00, z=256.41], EntitySkeleton['Skeleton'/5761, l='MpServer', x=117.50, y=20.00, z=270.50], EntitySlime['Slime'/131, l='MpServer', x=187.16, y=15.00, z=289.40], EntityPig['Pig'/135, l='MpServer', x=182.06, y=78.00, z=317.97], EntityCreeper['Creeper'/9611, l='MpServer', x=109.50, y=19.00, z=320.50], EntityChicken['Chicken'/145, l='MpServer', x=203.59, y=68.00, z=182.44], EntityPig['Pig'/146, l='MpServer', x=203.84, y=68.00, z=186.91], EntitySheep['Sheep'/147, l='MpServer', x=201.25, y=66.00, z=201.59], EntityBat['Bat'/148, l='MpServer', x=203.50, y=62.10, z=238.25], EntityBat['Bat'/149, l='MpServer', x=196.50, y=55.10, z=244.34], EntityCreeper['Creeper'/9877, l='MpServer', x=130.50, y=70.00, z=316.50], EntityCreeper['Creeper'/10134, l='MpServer', x=220.50, y=51.00, z=263.50], EntityEnderman['Enderman'/151, l='MpServer', x=197.66, y=67.00, z=241.69], EntitySkeleton['Skeleton'/7833, l='MpServer', x=217.50, y=52.00, z=281.50], EntityCreeper['Creeper'/155, l='MpServer', x=197.28, y=77.00, z=271.63], EntityCreeper['Creeper'/156, l='MpServer', x=196.31, y=77.00, z=271.31], EntityCreeper['Creeper'/161, l='MpServer', x=206.31, y=76.00, z=276.69], EntitySlime['Slime'/163, l='MpServer', x=193.72, y=16.00, z=290.59], EntityPig['Pig'/164, l='MpServer', x=196.75, y=78.00, z=312.13], EntityCreeper['Creeper'/8361, l='MpServer', x=204.59, y=66.00, z=295.97], EntitySheep['Sheep'/170, l='MpServer', x=222.25, y=65.00, z=177.13], EntityChicken['Chicken'/171, l='MpServer', x=210.44, y=68.00, z=182.56], EntityBat['Bat'/8619, l='MpServer', x=166.00, y=24.00, z=220.91], EntitySheep['Sheep'/172, l='MpServer', x=212.25, y=69.00, z=190.22], EntityBat['Bat'/180, l='MpServer', x=208.75, y=74.10, z=264.75], EntityZombie['Zombie'/183, l='MpServer', x=207.13, y=76.00, z=276.53], EntityCreeper['Creeper'/184, l='MpServer', x=207.31, y=76.00, z=277.69], EntityItem['item.item.rottenFlesh'/9144, l='MpServer', x=192.25, y=79.13, z=263.13], EntityZombie['Zombie'/9404, l='MpServer', x=112.50, y=47.00, z=313.50], EntityCreeper['Creeper'/10690, l='MpServer', x=252.50, y=46.00, z=288.50], EntityPig['Pig'/196, l='MpServer', x=233.31, y=67.00, z=195.47], EntityZombie['Zombie'/9682, l='MpServer', x=237.50, y=42.00, z=204.50], EntityZombie['Zombie'/3035, l='MpServer', x=183.25, y=79.00, z=243.59], EntityPig['Pig'/221, l='MpServer', x=256.91, y=68.00, z=189.28], EntityZombie['Zombie'/10211, l='MpServer', x=131.91, y=50.00, z=306.38], EntityWitch['Witch'/10213, l='MpServer', x=117.50, y=59.00, z=297.50], EntityCreeper['Creeper'/10215, l='MpServer', x=131.50, y=21.00, z=264.50], EntityCreeper['Creeper'/10216, l='MpServer', x=135.50, y=21.00, z=268.50], EntitySkeleton['Skeleton'/9202, l='MpServer', x=159.50, y=17.00, z=256.50], EntitySkeleton['Skeleton'/8953, l='MpServer', x=230.50, y=21.00, z=314.50], EntityCreeper['Creeper'/8954, l='MpServer', x=227.50, y=21.00, z=311.50], EntityZombie['Zombie'/10746, l='MpServer', x=224.50, y=44.00, z=289.50], EntityCreeper['Creeper'/10747, l='MpServer', x=205.50, y=72.00, z=268.50], EntityCreeper['Creeper'/6654, l='MpServer', x=128.97, y=40.00, z=318.88], EntityZombie['Zombie'/9470, l='MpServer', x=229.50, y=23.00, z=193.50]]
+ Retry entities: 0 total; []
+ Server brand: fml,forge
+ Server type: Integrated singleplayer server
+Stacktrace:
+ at net.minecraft.client.multiplayer.WorldClient.addWorldInfoToCrashReport(WorldClient.java:415)
+ at net.minecraft.client.Minecraft.addGraphicsAndWorldToCrashReport(Minecraft.java:2566)
+ at net.minecraft.client.Minecraft.run(Minecraft.java:984)
+ at net.minecraft.client.main.Main.main(Main.java:164)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+ at java.lang.reflect.Method.invoke(Unknown Source)
+ at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)
+ at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
+ at net.minecraftforge.gradle.GradleStartCommon.launch(Unknown Source)
+ at GradleStart.main(Unknown Source)
+
+-- System Details --
+Details:
+ Minecraft Version: 1.7.10
+ Operating System: Windows 7 (amd64) version 6.1
+ Java Version: 1.8.0_60, Oracle Corporation
+ Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
+ Memory: 692675056 bytes (660 MB) / 1377304576 bytes (1313 MB) up to 3804758016 bytes (3628 MB)
+ JVM Flags: 0 total;
+ AABB Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
+ IntCache: cache: 0, tcache: 0, allocated: 12, tallocated: 94
+ FML: MCP v9.05 FML v7.10.99.99 Minecraft Forge 10.13.4.1448 5 mods loaded, 5 mods active
+ States: 'U' = Unloaded 'L' = Loaded 'C' = Constructed 'H' = Pre-initialized 'I' = Initialized 'J' = Post-initialized 'A' = Available 'D' = Disabled 'E' = Errored
+ UCHIJAAAA mcp{9.05} [Minecraft Coder Pack] (minecraft.jar)
+ UCHIJAAAA FML{7.10.99.99} [Forge Mod Loader] (forgeSrc-1.7.10-10.13.4.1448-1.7.10.jar)
+ UCHIJAAAA Forge{10.13.4.1448} [Minecraft Forge] (forgeSrc-1.7.10-10.13.4.1448-1.7.10.jar)
+ UCHIJAAAA CodeChickenCore{1.0.4.29} [CodeChicken Core] (minecraft.jar)
+ UCHIJAAAA miscutils{0.2.2} [miscutils] (bin)
+ GL info: ' Vendor: 'NVIDIA Corporation' Version: '4.5.0 NVIDIA 347.52' Renderer: 'GeForce GTX 770/PCIe/SSE2'
+ Launched Version: 1.7.10
+ LWJGL: 2.9.1
+ OpenGL: GeForce GTX 770/PCIe/SSE2 GL version 4.5.0 NVIDIA 347.52, NVIDIA Corporation
+ GL Caps: Using GL 1.3 multitexturing.
+Using framebuffer objects because OpenGL 3.0 is supported and separate blending is supported.
+Anisotropic filtering is supported and maximum anisotropy is 16.
+Shaders are available because OpenGL 2.1 is supported.
+
+ Is Modded: Definitely; Client brand changed to 'fml,forge'
+ Type: Client (map_client.txt)
+ Resource Packs: []
+ Current Language: English (US)
+ Profiler Position: N/A (disabled)
+ Vec3 Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
+ Anisotropic Filtering: Off (1) \ No newline at end of file
diff --git a/crash-reports/crash-2015-09-06_20.17.28-server.txt b/crash-reports/crash-2015-09-06_20.17.28-server.txt
new file mode 100644
index 0000000000..71d6f6b36f
--- /dev/null
+++ b/crash-reports/crash-2015-09-06_20.17.28-server.txt
@@ -0,0 +1,81 @@
+---- Minecraft Crash Report ----
+// You should try our sister game, Minceraft!
+
+Time: 6/09/15 8:17 PM
+Description: Ticking memory connection
+
+java.lang.ArrayIndexOutOfBoundsException: 4
+ at net.minecraft.entity.player.InventoryPlayer.getStackInSlot(InventoryPlayer.java:646)
+ at net.minecraft.inventory.Slot.getStack(Slot.java:88)
+ at net.minecraft.inventory.Container.getInventory(Container.java:67)
+ at net.minecraft.inventory.Container.addCraftingToCrafters(Container.java:53)
+ at miscutil.inventory.ContainerArcaneInfuser.addCraftingToCrafters(ContainerArcaneInfuser.java:45)
+ at cpw.mods.fml.common.network.internal.FMLNetworkHandler.openGui(FMLNetworkHandler.java:88)
+ at net.minecraft.entity.player.EntityPlayer.openGui(EntityPlayer.java:2501)
+ at miscutil.block.ArcaneInfuser.onBlockActivated(ArcaneInfuser.java:60)
+ at net.minecraft.server.management.ItemInWorldManager.activateBlockOrUseItem(ItemInWorldManager.java:409)
+ at net.minecraft.network.NetHandlerPlayServer.processPlayerBlockPlacement(NetHandlerPlayServer.java:593)
+ at net.minecraft.network.play.client.C08PacketPlayerBlockPlacement.processPacket(C08PacketPlayerBlockPlacement.java:74)
+ at net.minecraft.network.play.client.C08PacketPlayerBlockPlacement.processPacket(C08PacketPlayerBlockPlacement.java:122)
+ at net.minecraft.network.NetworkManager.processReceivedPackets(NetworkManager.java:241)
+ at net.minecraft.network.NetworkSystem.networkTick(NetworkSystem.java:182)
+ at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:726)
+ at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:614)
+ at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:118)
+ at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:485)
+ at net.minecraft.server.MinecraftServer$2.run(MinecraftServer.java:752)
+
+
+A detailed walkthrough of the error, its code path and all known details is as follows:
+---------------------------------------------------------------------------------------
+
+-- Head --
+Stacktrace:
+ at net.minecraft.entity.player.InventoryPlayer.getStackInSlot(InventoryPlayer.java:646)
+ at net.minecraft.inventory.Slot.getStack(Slot.java:88)
+ at net.minecraft.inventory.Container.getInventory(Container.java:67)
+ at net.minecraft.inventory.Container.addCraftingToCrafters(Container.java:53)
+ at miscutil.inventory.ContainerArcaneInfuser.addCraftingToCrafters(ContainerArcaneInfuser.java:45)
+ at cpw.mods.fml.common.network.internal.FMLNetworkHandler.openGui(FMLNetworkHandler.java:88)
+ at net.minecraft.entity.player.EntityPlayer.openGui(EntityPlayer.java:2501)
+ at miscutil.block.ArcaneInfuser.onBlockActivated(ArcaneInfuser.java:60)
+ at net.minecraft.server.management.ItemInWorldManager.activateBlockOrUseItem(ItemInWorldManager.java:409)
+ at net.minecraft.network.NetHandlerPlayServer.processPlayerBlockPlacement(NetHandlerPlayServer.java:593)
+ at net.minecraft.network.play.client.C08PacketPlayerBlockPlacement.processPacket(C08PacketPlayerBlockPlacement.java:74)
+ at net.minecraft.network.play.client.C08PacketPlayerBlockPlacement.processPacket(C08PacketPlayerBlockPlacement.java:122)
+ at net.minecraft.network.NetworkManager.processReceivedPackets(NetworkManager.java:241)
+
+-- Ticking connection --
+Details:
+ Connection: net.minecraft.network.NetworkManager@23987018
+Stacktrace:
+ at net.minecraft.network.NetworkSystem.networkTick(NetworkSystem.java:182)
+ at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:726)
+ at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:614)
+ at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:118)
+ at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:485)
+ at net.minecraft.server.MinecraftServer$2.run(MinecraftServer.java:752)
+
+-- System Details --
+Details:
+ Minecraft Version: 1.7.10
+ Operating System: Windows 7 (amd64) version 6.1
+ Java Version: 1.8.0_60, Oracle Corporation
+ Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
+ Memory: 563940248 bytes (537 MB) / 993001472 bytes (947 MB) up to 3804758016 bytes (3628 MB)
+ JVM Flags: 0 total;
+ AABB Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
+ IntCache: cache: 4, tcache: 66, allocated: 12, tallocated: 94
+ FML: MCP v9.05 FML v7.10.99.99 Minecraft Forge 10.13.4.1448 5 mods loaded, 5 mods active
+ States: 'U' = Unloaded 'L' = Loaded 'C' = Constructed 'H' = Pre-initialized 'I' = Initialized 'J' = Post-initialized 'A' = Available 'D' = Disabled 'E' = Errored
+ UCHIJAAAA mcp{9.05} [Minecraft Coder Pack] (minecraft.jar)
+ UCHIJAAAA FML{7.10.99.99} [Forge Mod Loader] (forgeSrc-1.7.10-10.13.4.1448-1.7.10.jar)
+ UCHIJAAAA Forge{10.13.4.1448} [Minecraft Forge] (forgeSrc-1.7.10-10.13.4.1448-1.7.10.jar)
+ UCHIJAAAA CodeChickenCore{1.0.4.29} [CodeChicken Core] (minecraft.jar)
+ UCHIJAAAA miscutils{0.2.2} [miscutils] (bin)
+ GL info: ~~ERROR~~ RuntimeException: No OpenGL context found in the current thread.
+ Profiler Position: N/A (disabled)
+ Vec3 Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
+ Player Count: 1 / 8; [EntityPlayerMP['Player315'/335, l='New World', x=191.54, y=63.00, z=293.64]]
+ Type: Integrated Server (map_client.txt)
+ Is Modded: Definitely; Client brand changed to 'fml,forge' \ No newline at end of file
diff --git a/crash-reports/crash-2015-09-07_11.42.37-server.txt b/crash-reports/crash-2015-09-07_11.42.37-server.txt
new file mode 100644
index 0000000000..e4e4737edb
--- /dev/null
+++ b/crash-reports/crash-2015-09-07_11.42.37-server.txt
@@ -0,0 +1,81 @@
+---- Minecraft Crash Report ----
+// On the bright side, I bought you a teddy bear!
+
+Time: 7/09/15 11:42 AM
+Description: Ticking memory connection
+
+java.lang.ArrayIndexOutOfBoundsException: 27
+ at net.minecraft.tileentity.TileEntityChest.getStackInSlot(TileEntityChest.java:67)
+ at net.minecraft.inventory.Slot.getStack(Slot.java:88)
+ at net.minecraft.inventory.Container.getInventory(Container.java:67)
+ at net.minecraft.inventory.Container.addCraftingToCrafters(Container.java:53)
+ at miscutil.inventory.ContainerBloodSteelChest.addCraftingToCrafters(ContainerBloodSteelChest.java:46)
+ at cpw.mods.fml.common.network.internal.FMLNetworkHandler.openGui(FMLNetworkHandler.java:88)
+ at net.minecraft.entity.player.EntityPlayer.openGui(EntityPlayer.java:2501)
+ at miscutil.block.BloodSteelChest.onBlockActivated(BloodSteelChest.java:132)
+ at net.minecraft.server.management.ItemInWorldManager.activateBlockOrUseItem(ItemInWorldManager.java:409)
+ at net.minecraft.network.NetHandlerPlayServer.processPlayerBlockPlacement(NetHandlerPlayServer.java:593)
+ at net.minecraft.network.play.client.C08PacketPlayerBlockPlacement.processPacket(C08PacketPlayerBlockPlacement.java:74)
+ at net.minecraft.network.play.client.C08PacketPlayerBlockPlacement.processPacket(C08PacketPlayerBlockPlacement.java:122)
+ at net.minecraft.network.NetworkManager.processReceivedPackets(NetworkManager.java:241)
+ at net.minecraft.network.NetworkSystem.networkTick(NetworkSystem.java:182)
+ at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:726)
+ at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:614)
+ at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:118)
+ at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:485)
+ at net.minecraft.server.MinecraftServer$2.run(MinecraftServer.java:752)
+
+
+A detailed walkthrough of the error, its code path and all known details is as follows:
+---------------------------------------------------------------------------------------
+
+-- Head --
+Stacktrace:
+ at net.minecraft.tileentity.TileEntityChest.getStackInSlot(TileEntityChest.java:67)
+ at net.minecraft.inventory.Slot.getStack(Slot.java:88)
+ at net.minecraft.inventory.Container.getInventory(Container.java:67)
+ at net.minecraft.inventory.Container.addCraftingToCrafters(Container.java:53)
+ at miscutil.inventory.ContainerBloodSteelChest.addCraftingToCrafters(ContainerBloodSteelChest.java:46)
+ at cpw.mods.fml.common.network.internal.FMLNetworkHandler.openGui(FMLNetworkHandler.java:88)
+ at net.minecraft.entity.player.EntityPlayer.openGui(EntityPlayer.java:2501)
+ at miscutil.block.BloodSteelChest.onBlockActivated(BloodSteelChest.java:132)
+ at net.minecraft.server.management.ItemInWorldManager.activateBlockOrUseItem(ItemInWorldManager.java:409)
+ at net.minecraft.network.NetHandlerPlayServer.processPlayerBlockPlacement(NetHandlerPlayServer.java:593)
+ at net.minecraft.network.play.client.C08PacketPlayerBlockPlacement.processPacket(C08PacketPlayerBlockPlacement.java:74)
+ at net.minecraft.network.play.client.C08PacketPlayerBlockPlacement.processPacket(C08PacketPlayerBlockPlacement.java:122)
+ at net.minecraft.network.NetworkManager.processReceivedPackets(NetworkManager.java:241)
+
+-- Ticking connection --
+Details:
+ Connection: net.minecraft.network.NetworkManager@5d66c36
+Stacktrace:
+ at net.minecraft.network.NetworkSystem.networkTick(NetworkSystem.java:182)
+ at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:726)
+ at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:614)
+ at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:118)
+ at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:485)
+ at net.minecraft.server.MinecraftServer$2.run(MinecraftServer.java:752)
+
+-- System Details --
+Details:
+ Minecraft Version: 1.7.10
+ Operating System: Windows 7 (amd64) version 6.1
+ Java Version: 1.8.0_60, Oracle Corporation
+ Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
+ Memory: 416306520 bytes (397 MB) / 1037041664 bytes (989 MB) up to 3804758016 bytes (3628 MB)
+ JVM Flags: 0 total;
+ AABB Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
+ IntCache: cache: 0, tcache: 0, allocated: 12, tallocated: 94
+ FML: MCP v9.05 FML v7.10.99.99 Minecraft Forge 10.13.4.1448 5 mods loaded, 5 mods active
+ States: 'U' = Unloaded 'L' = Loaded 'C' = Constructed 'H' = Pre-initialized 'I' = Initialized 'J' = Post-initialized 'A' = Available 'D' = Disabled 'E' = Errored
+ UCHIJAAAA mcp{9.05} [Minecraft Coder Pack] (minecraft.jar)
+ UCHIJAAAA FML{7.10.99.99} [Forge Mod Loader] (forgeSrc-1.7.10-10.13.4.1448-1.7.10.jar)
+ UCHIJAAAA Forge{10.13.4.1448} [Minecraft Forge] (forgeSrc-1.7.10-10.13.4.1448-1.7.10.jar)
+ UCHIJAAAA CodeChickenCore{1.0.4.29} [CodeChicken Core] (minecraft.jar)
+ UCHIJAAAA miscutils{0.2.2} [miscutils] (bin)
+ GL info: ~~ERROR~~ RuntimeException: No OpenGL context found in the current thread.
+ Profiler Position: N/A (disabled)
+ Vec3 Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
+ Player Count: 1 / 8; [EntityPlayerMP['Player124'/316, l='New World', x=191.16, y=63.00, z=292.32]]
+ Type: Integrated Server (map_client.txt)
+ Is Modded: Definitely; Client brand changed to 'fml,forge' \ No newline at end of file
diff --git a/crash-reports/crash-2015-10-05_13.10.06-client.txt b/crash-reports/crash-2015-10-05_13.10.06-client.txt
new file mode 100644
index 0000000000..bc2f6adf6c
--- /dev/null
+++ b/crash-reports/crash-2015-10-05_13.10.06-client.txt
@@ -0,0 +1,122 @@
+---- Minecraft Crash Report ----
+// Sorry :(
+
+Time: 5/10/15 1:10 PM
+Description: Rendering item
+
+java.lang.NullPointerException: Rendering item
+ at net.minecraft.item.ItemStack.getItemDamage(ItemStack.java:265)
+ at net.minecraft.client.renderer.entity.RenderItem.renderItemIntoGUI(RenderItem.java:419)
+ at net.minecraft.client.renderer.entity.RenderItem.renderItemAndEffectIntoGUI(RenderItem.java:585)
+ at net.minecraft.client.gui.inventory.GuiContainerCreative.func_147051_a(GuiContainerCreative.java:968)
+ at net.minecraft.client.gui.inventory.GuiContainerCreative.drawGuiContainerBackgroundLayer(GuiContainerCreative.java:795)
+ at net.minecraft.client.gui.inventory.GuiContainer.drawScreen(GuiContainer.java:93)
+ at net.minecraft.client.renderer.InventoryEffectRenderer.drawScreen(InventoryEffectRenderer.java:44)
+ at net.minecraft.client.gui.inventory.GuiContainerCreative.drawScreen(GuiContainerCreative.java:673)
+ at net.minecraft.client.renderer.EntityRenderer.updateCameraAndRender(EntityRenderer.java:1137)
+ at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1067)
+ at net.minecraft.client.Minecraft.run(Minecraft.java:962)
+ at net.minecraft.client.main.Main.main(Main.java:164)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+ at java.lang.reflect.Method.invoke(Unknown Source)
+ at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)
+ at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
+ at net.minecraftforge.gradle.GradleStartCommon.launch(Unknown Source)
+ at GradleStart.main(Unknown Source)
+
+
+A detailed walkthrough of the error, its code path and all known details is as follows:
+---------------------------------------------------------------------------------------
+
+-- Head --
+Stacktrace:
+ at net.minecraft.item.ItemStack.getItemDamage(ItemStack.java:265)
+ at net.minecraft.client.renderer.entity.RenderItem.renderItemIntoGUI(RenderItem.java:419)
+
+-- Item being rendered --
+Details:
+ Item Type: null
+ Item Aux: ~~ERROR~~ NullPointerException: null
+ Item NBT: null
+ Item Foil: ~~ERROR~~ NullPointerException: null
+Stacktrace:
+ at net.minecraft.client.renderer.entity.RenderItem.renderItemAndEffectIntoGUI(RenderItem.java:585)
+ at net.minecraft.client.gui.inventory.GuiContainerCreative.func_147051_a(GuiContainerCreative.java:968)
+ at net.minecraft.client.gui.inventory.GuiContainerCreative.drawGuiContainerBackgroundLayer(GuiContainerCreative.java:795)
+ at net.minecraft.client.gui.inventory.GuiContainer.drawScreen(GuiContainer.java:93)
+ at net.minecraft.client.renderer.InventoryEffectRenderer.drawScreen(InventoryEffectRenderer.java:44)
+ at net.minecraft.client.gui.inventory.GuiContainerCreative.drawScreen(GuiContainerCreative.java:673)
+
+-- Screen render details --
+Details:
+ Screen name: net.minecraft.client.gui.inventory.GuiContainerCreative
+ Mouse location: Scaled: (317, 27). Absolute: (1270, 918)
+ Screen size: Scaled: (480, 257). Absolute: (1920, 1028). Scale factor of 4
+
+-- Affected level --
+Details:
+ Level name: MpServer
+ All players: 1 total; [EntityClientPlayerMP['Draknyte1'/3794, l='MpServer', x=216.97, y=64.62, z=250.80]]
+ Chunk stats: MultiplayerChunkCache: 504, 504
+ Level seed: 0
+ Level generator: ID 00 - default, ver 1. Features enabled: false
+ Level generator options:
+ Level spawn location: World: (224,64,244), Chunk: (at 0,4,4 in 14,15; contains blocks 224,0,240 to 239,255,255), Region: (0,0; contains chunks 0,0 to 31,31, blocks 0,0,0 to 511,255,511)
+ Level time: 132 game time, 132 day time
+ Level dimension: 0
+ Level storage version: 0x00000 - Unknown?
+ Level weather: Rain time: 0 (now: false), thunder time: 0 (now: false)
+ Level game mode: Game mode: creative (ID 1). Hardcore: false. Cheats: false
+ Forced entities: 175 total; [EntityCow['Cow'/3591, l='MpServer', x=145.22, y=80.00, z=303.78], EntityCow['Cow'/3592, l='MpServer', x=146.81, y=80.00, z=302.19], EntityCow['Cow'/3593, l='MpServer', x=142.50, y=80.00, z=304.50], EntityBat['Bat'/4106, l='MpServer', x=152.56, y=24.09, z=266.85], EntityCow['Cow'/3594, l='MpServer', x=139.50, y=81.00, z=305.50], EntityFallingBlock['Falling Block'/6666, l='MpServer', x=334.50, y=28.13, z=110.50], EntityFallingBlock['Falling Block'/6667, l='MpServer', x=333.50, y=27.13, z=110.50], EntityFallingBlock['Falling Block'/6668, l='MpServer', x=327.50, y=61.13, z=127.50], EntityFallingBlock['Falling Block'/6669, l='MpServer', x=327.50, y=61.13, z=128.50], EntityFallingBlock['Falling Block'/6670, l='MpServer', x=329.50, y=61.13, z=129.50], EntityFallingBlock['Falling Block'/6671, l='MpServer', x=329.50, y=61.13, z=130.50], EntityFallingBlock['Falling Block'/6672, l='MpServer', x=330.50, y=61.49, z=128.50], EntityZombie['Zombie'/4629, l='MpServer', x=289.50, y=25.00, z=184.50], EntityZombie['Zombie'/4631, l='MpServer', x=292.50, y=25.00, z=186.50], EntityZombie['Zombie'/4632, l='MpServer', x=290.53, y=25.00, z=186.34], EntitySkeleton['Skeleton'/4633, l='MpServer', x=291.50, y=25.00, z=191.50], EntitySkeleton['Skeleton'/4634, l='MpServer', x=289.50, y=25.00, z=189.50], EntitySkeleton['Skeleton'/4636, l='MpServer', x=289.13, y=25.00, z=187.03], EntitySkeleton['Skeleton'/4638, l='MpServer', x=291.50, y=25.00, z=186.50], EntitySkeleton['Skeleton'/4639, l='MpServer', x=291.50, y=25.00, z=190.50], EntitySkeleton['Skeleton'/4640, l='MpServer', x=294.50, y=25.00, z=189.50], EntityFallingBlock['Falling Block'/6693, l='MpServer', x=329.50, y=7.11, z=352.50], EntityFallingBlock['Falling Block'/6694, l='MpServer', x=328.50, y=7.11, z=352.50], EntityFallingBlock['Falling Block'/6695, l='MpServer', x=329.50, y=7.11, z=351.50], EntityFallingBlock['Falling Block'/6696, l='MpServer', x=330.50, y=7.11, z=351.50], EntityFallingBlock['Falling Block'/6697, l='MpServer', x=328.50, y=7.11, z=351.50], EntityFallingBlock['Falling Block'/6698, l='MpServer', x=328.50, y=6.11, z=353.50], EntityFallingBlock['Falling Block'/6699, l='MpServer', x=328.50, y=7.11, z=350.50], EntityFallingBlock['Falling Block'/6700, l='MpServer', x=329.50, y=6.11, z=353.50], EntityFallingBlock['Falling Block'/6701, l='MpServer', x=329.50, y=8.11, z=350.50], EntityFallingBlock['Falling Block'/6702, l='MpServer', x=330.50, y=6.11, z=352.50], EntityFallingBlock['Falling Block'/6703, l='MpServer', x=330.50, y=8.11, z=350.50], EntityFallingBlock['Falling Block'/6704, l='MpServer', x=327.50, y=6.11, z=350.50], EntityChicken['Chicken'/3633, l='MpServer', x=208.50, y=72.00, z=180.50], EntityFallingBlock['Falling Block'/6705, l='MpServer', x=327.50, y=6.11, z=351.50], EntityChicken['Chicken'/3634, l='MpServer', x=209.50, y=72.00, z=180.50], EntityFallingBlock['Falling Block'/6706, l='MpServer', x=327.50, y=6.11, z=352.50], EntityChicken['Chicken'/3635, l='MpServer', x=209.50, y=72.00, z=177.50], EntityFallingBlock['Falling Block'/6707, l='MpServer', x=328.50, y=6.11, z=349.50], EntityChicken['Chicken'/3636, l='MpServer', x=208.50, y=72.00, z=174.50], EntityFallingBlock['Falling Block'/6708, l='MpServer', x=329.50, y=8.11, z=349.50], EntityChicken['Chicken'/3637, l='MpServer', x=207.50, y=69.00, z=199.50], EntityChicken['Chicken'/3638, l='MpServer', x=205.50, y=68.00, z=197.50], EntityChicken['Chicken'/3639, l='MpServer', x=208.50, y=68.00, z=195.50], EntityChicken['Chicken'/3640, l='MpServer', x=210.44, y=69.00, z=200.44], EntityChicken['Chicken'/3641, l='MpServer', x=205.50, y=70.00, z=206.50], EntityChicken['Chicken'/3642, l='MpServer', x=202.50, y=70.00, z=205.50], EntityChicken['Chicken'/3643, l='MpServer', x=204.50, y=70.00, z=207.50], EntityChicken['Chicken'/3644, l='MpServer', x=205.50, y=69.00, z=203.50], EntityCow['Cow'/3645, l='MpServer', x=201.50, y=68.00, z=294.50], EntityCow['Cow'/3646, l='MpServer', x=201.22, y=71.00, z=292.50], EntityCow['Cow'/3647, l='MpServer', x=202.81, y=71.00, z=292.50], EntityCow['Cow'/3648, l='MpServer', x=197.58, y=77.00, z=286.95], EntityChicken['Chicken'/3664, l='MpServer', x=222.53, y=65.00, z=246.44], EntityBat['Bat'/4176, l='MpServer', x=145.31, y=32.07, z=249.63], EntityFallingBlock['Falling Block'/6736, l='MpServer', x=348.50, y=60.38, z=116.50], EntityChicken['Chicken'/3665, l='MpServer', x=222.34, y=65.00, z=243.66], EntityFallingBlock['Falling Block'/6737, l='MpServer', x=347.50, y=60.38, z=116.50], EntityChicken['Chicken'/3666, l='MpServer', x=224.50, y=66.00, z=239.50], EntityZombie['Zombie'/5202, l='MpServer', x=269.50, y=12.00, z=299.50], EntityFallingBlock['Falling Block'/6738, l='MpServer', x=347.50, y=61.38, z=115.50], EntityChicken['Chicken'/3667, l='MpServer', x=226.50, y=66.00, z=240.50], EntityBat['Bat'/4179, l='MpServer', x=136.59, y=36.00, z=259.31], EntityFallingBlock['Falling Block'/6739, l='MpServer', x=348.50, y=61.38, z=115.50], EntityChicken['Chicken'/3668, l='MpServer', x=230.50, y=67.00, z=239.50], EntityFallingBlock['Falling Block'/6740, l='MpServer', x=349.50, y=60.38, z=116.50], EntityChicken['Chicken'/3669, l='MpServer', x=234.54, y=66.00, z=240.95], EntityFallingBlock['Falling Block'/6741, l='MpServer', x=349.50, y=61.38, z=115.50], EntityChicken['Chicken'/3670, l='MpServer', x=226.50, y=65.00, z=244.50], EntityFallingBlock['Falling Block'/6742, l='MpServer', x=350.50, y=61.38, z=116.50], EntityChicken['Chicken'/3671, l='MpServer', x=225.50, y=65.00, z=245.50], EntityFallingBlock['Falling Block'/6743, l='MpServer', x=348.50, y=62.38, z=114.50], EntityZombie['Zombie'/5211, l='MpServer', x=242.50, y=43.00, z=308.50], EntityChicken['Chicken'/3676, l='MpServer', x=233.88, y=74.00, z=333.03], EntityChicken['Chicken'/3677, l='MpServer', x=237.50, y=74.00, z=333.50], EntityChicken['Chicken'/3678, l='MpServer', x=229.56, y=71.00, z=330.53], EntityFallingBlock['Falling Block'/6755, l='MpServer', x=341.50, y=9.46, z=196.50], EntityChicken['Chicken'/3688, l='MpServer', x=255.50, y=65.00, z=249.50], EntityChicken['Chicken'/3689, l='MpServer', x=253.34, y=66.00, z=252.16], EntitySkeleton['Skeleton'/5225, l='MpServer', x=147.69, y=34.00, z=297.22], EntityChicken['Chicken'/3690, l='MpServer', x=253.63, y=66.00, z=252.72], EntitySkeleton['Skeleton'/5226, l='MpServer', x=150.50, y=34.00, z=297.50], EntityChicken['Chicken'/3691, l='MpServer', x=250.50, y=66.00, z=254.50], EntitySkeleton['Skeleton'/5739, l='MpServer', x=174.56, y=43.00, z=226.44], EntityItem['item.tile.torch'/3704, l='MpServer', x=279.47, y=37.13, z=294.13], EntityChicken['Chicken'/3705, l='MpServer', x=269.50, y=64.00, z=301.50], EntityChicken['Chicken'/3706, l='MpServer', x=272.50, y=64.00, z=297.50], EntityChicken['Chicken'/3707, l='MpServer', x=270.66, y=64.00, z=296.56], EntityChicken['Chicken'/3708, l='MpServer', x=273.78, y=64.00, z=296.50], EntityChicken['Chicken'/3718, l='MpServer', x=283.50, y=70.00, z=176.50], EntityChicken['Chicken'/3719, l='MpServer', x=283.50, y=70.00, z=176.50], EntityChicken['Chicken'/3720, l='MpServer', x=282.50, y=70.00, z=176.50], EntityChicken['Chicken'/3721, l='MpServer', x=288.50, y=78.00, z=203.50], EntityChicken['Chicken'/3722, l='MpServer', x=290.50, y=78.00, z=201.50], EntityChicken['Chicken'/3723, l='MpServer', x=288.50, y=79.00, z=200.50], EntityChicken['Chicken'/3724, l='MpServer', x=289.50, y=79.00, z=200.50], EntityCreeper['Creeper'/4240, l='MpServer', x=281.39, y=19.00, z=312.56], EntitySkeleton['Skeleton'/5272, l='MpServer', x=184.50, y=48.00, z=208.50], EntityBat['Bat'/4251, l='MpServer', x=295.75, y=25.07, z=188.32], EntityBat['Bat'/4255, l='MpServer', x=157.53, y=41.19, z=207.63], EntityBat['Bat'/4256, l='MpServer', x=166.46, y=42.13, z=208.08], EntityCreeper['Creeper'/5286, l='MpServer', x=166.50, y=31.00, z=255.50], EntityCreeper['Creeper'/5287, l='MpServer', x=163.50, y=31.00, z=254.50], EntityCreeper['Creeper'/5288, l='MpServer', x=164.50, y=31.00, z=253.50], EntitySkeleton['Skeleton'/4810, l='MpServer', x=137.50, y=14.00, z=287.50], EntityCreeper['Creeper'/5327, l='MpServer', x=180.50, y=67.00, z=234.50], EntityClientPlayerMP['Draknyte1'/3794, l='MpServer', x=216.97, y=64.62, z=250.80], EntityBat['Bat'/4326, l='MpServer', x=283.49, y=21.79, z=286.51], EntityCreeper['Creeper'/5863, l='MpServer', x=284.30, y=43.00, z=271.31], EntitySkeleton['Skeleton'/5864, l='MpServer', x=284.69, y=43.00, z=269.44], EntitySkeleton['Skeleton'/5879, l='MpServer', x=180.50, y=67.00, z=243.50], EntitySkeleton['Skeleton'/5880, l='MpServer', x=181.50, y=67.00, z=242.50], EntitySquid['Squid'/3866, l='MpServer', x=225.88, y=56.00, z=216.50], EntitySquid['Squid'/3867, l='MpServer', x=231.81, y=57.34, z=211.69], EntitySquid['Squid'/3868, l='MpServer', x=228.50, y=57.00, z=211.19], EntitySquid['Squid'/3869, l='MpServer', x=229.59, y=57.13, z=208.50], EntitySquid['Squid'/3870, l='MpServer', x=228.50, y=57.00, z=209.63], EntitySquid['Squid'/3871, l='MpServer', x=228.50, y=56.00, z=212.91], EntityCreeper['Creeper'/4908, l='MpServer', x=154.59, y=16.00, z=273.38], EntitySkeleton['Skeleton'/4909, l='MpServer', x=155.27, y=19.00, z=270.70], EntityCreeper['Creeper'/5432, l='MpServer', x=283.50, y=26.00, z=190.50], EntitySkeleton['Skeleton'/5433, l='MpServer', x=286.50, y=26.00, z=195.50], EntityFallingBlock['Falling Block'/6457, l='MpServer', x=296.50, y=68.93, z=378.50], EntityFallingBlock['Falling Block'/6458, l='MpServer', x=294.50, y=69.49, z=380.50], EntityFallingBlock['Falling Block'/6459, l='MpServer', x=293.50, y=69.49, z=380.50], EntityCreeper['Creeper'/5469, l='MpServer', x=153.50, y=38.00, z=292.50], EntityCreeper['Creeper'/5471, l='MpServer', x=155.50, y=38.00, z=293.50], EntitySkeleton['Skeleton'/4964, l='MpServer', x=149.50, y=21.00, z=211.50], EntitySkeleton['Skeleton'/4966, l='MpServer', x=149.34, y=20.00, z=208.07], EntityBat['Bat'/4459, l='MpServer', x=154.59, y=36.10, z=310.75], EntitySpider['Spider'/3961, l='MpServer', x=281.06, y=38.00, z=260.63], EntitySpider['Spider'/3962, l='MpServer', x=276.78, y=38.00, z=259.50], EntitySkeleton['Skeleton'/3963, l='MpServer', x=284.50, y=38.00, z=263.50], EntitySkeleton['Skeleton'/3964, l='MpServer', x=280.16, y=38.00, z=264.84], EntityCreeper['Creeper'/4988, l='MpServer', x=270.50, y=12.00, z=298.50], EntitySkeleton['Skeleton'/3965, l='MpServer', x=284.25, y=38.00, z=262.50], EntityZombie['Zombie'/3966, l='MpServer', x=281.50, y=38.00, z=264.84], EntityZombie['Zombie'/3967, l='MpServer', x=282.58, y=39.00, z=265.72], EntityItem['item.tile.gravel'/6527, l='MpServer', x=275.15, y=38.13, z=298.87], EntityZombie['Zombie'/3968, l='MpServer', x=279.97, y=38.00, z=258.41], EntityZombie['Zombie'/3969, l='MpServer', x=289.50, y=38.00, z=260.50], EntityFallingBlock['Falling Block'/6549, l='MpServer', x=304.50, y=11.13, z=361.50], EntityFallingBlock['Falling Block'/6550, l='MpServer', x=302.50, y=10.07, z=360.50], EntityFallingBlock['Falling Block'/6551, l='MpServer', x=303.50, y=10.07, z=359.50], EntityFallingBlock['Falling Block'/6552, l='MpServer', x=303.50, y=10.07, z=360.50], EntityFallingBlock['Falling Block'/6553, l='MpServer', x=304.50, y=10.07, z=360.50], EntityFallingBlock['Falling Block'/6554, l='MpServer', x=304.50, y=10.07, z=359.50], EntitySkeleton['Skeleton'/4519, l='MpServer', x=177.50, y=25.00, z=301.50], EntitySkeleton['Skeleton'/5544, l='MpServer', x=156.50, y=39.00, z=228.50], EntitySkeleton['Skeleton'/5545, l='MpServer', x=157.50, y=39.00, z=231.50], EntityZombie['Zombie'/5036, l='MpServer', x=205.50, y=50.00, z=214.50], EntitySpider['Spider'/4542, l='MpServer', x=277.50, y=38.00, z=285.50], EntitySpider['Spider'/4543, l='MpServer', x=275.50, y=38.00, z=285.50], EntityFallingBlock['Falling Block'/6595, l='MpServer', x=320.50, y=43.64, z=253.50], EntityFallingBlock['Falling Block'/6596, l='MpServer', x=321.50, y=43.64, z=253.50], EntityFallingBlock['Falling Block'/6597, l='MpServer', x=319.50, y=43.64, z=254.50], EntityFallingBlock['Falling Block'/6598, l='MpServer', x=320.50, y=43.64, z=254.50], EntityCreeper['Creeper'/5063, l='MpServer', x=277.44, y=12.00, z=292.97], EntityFallingBlock['Falling Block'/6599, l='MpServer', x=321.50, y=43.64, z=254.50], EntityCreeper['Creeper'/5064, l='MpServer', x=276.50, y=11.00, z=295.50], EntityCreeper['Creeper'/5065, l='MpServer', x=274.50, y=11.00, z=294.50], EntityFallingBlock['Falling Block'/6601, l='MpServer', x=319.50, y=43.64, z=255.50], EntityCreeper['Creeper'/5066, l='MpServer', x=274.50, y=11.00, z=295.50], EntityFallingBlock['Falling Block'/6602, l='MpServer', x=321.50, y=43.64, z=255.50], EntityCreeper['Creeper'/5067, l='MpServer', x=276.16, y=11.00, z=300.09], EntityFallingBlock['Falling Block'/6603, l='MpServer', x=322.50, y=43.64, z=254.50], EntityFallingBlock['Falling Block'/6604, l='MpServer', x=317.50, y=43.64, z=255.50], EntityFallingBlock['Falling Block'/6608, l='MpServer', x=323.50, y=38.03, z=287.50], EntityFallingBlock['Falling Block'/6609, l='MpServer', x=324.50, y=38.03, z=287.50], EntityFallingBlock['Falling Block'/6610, l='MpServer', x=325.50, y=38.03, z=287.50], EntityFallingBlock['Falling Block'/6611, l='MpServer', x=317.50, y=39.03, z=290.50], EntityFallingBlock['Falling Block'/6612, l='MpServer', x=316.50, y=38.49, z=289.50], EntityFallingBlock['Falling Block'/6613, l='MpServer', x=316.50, y=38.49, z=290.50], EntityCreeper['Creeper'/5099, l='MpServer', x=282.50, y=38.00, z=258.31], EntityFallingBlock['Falling Block'/6636, l='MpServer', x=324.50, y=41.43, z=393.50]]
+ Retry entities: 0 total; []
+ Server brand: fml,forge
+ Server type: Integrated singleplayer server
+Stacktrace:
+ at net.minecraft.client.multiplayer.WorldClient.addWorldInfoToCrashReport(WorldClient.java:415)
+ at net.minecraft.client.Minecraft.addGraphicsAndWorldToCrashReport(Minecraft.java:2566)
+ at net.minecraft.client.Minecraft.run(Minecraft.java:984)
+ at net.minecraft.client.main.Main.main(Main.java:164)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+ at java.lang.reflect.Method.invoke(Unknown Source)
+ at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)
+ at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
+ at net.minecraftforge.gradle.GradleStartCommon.launch(Unknown Source)
+ at GradleStart.main(Unknown Source)
+
+-- System Details --
+Details:
+ Minecraft Version: 1.7.10
+ Operating System: Windows 7 (amd64) version 6.1
+ Java Version: 1.8.0_60, Oracle Corporation
+ Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
+ Memory: 858383112 bytes (818 MB) / 1496842240 bytes (1427 MB) up to 3804758016 bytes (3628 MB)
+ JVM Flags: 0 total;
+ AABB Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
+ IntCache: cache: 1, tcache: 1, allocated: 12, tallocated: 94
+ FML: MCP v9.05 FML v7.10.99.99 Minecraft Forge 10.13.4.1448 5 mods loaded, 5 mods active
+ States: 'U' = Unloaded 'L' = Loaded 'C' = Constructed 'H' = Pre-initialized 'I' = Initialized 'J' = Post-initialized 'A' = Available 'D' = Disabled 'E' = Errored
+ UCHIJAAAAAAAAA mcp{9.05} [Minecraft Coder Pack] (minecraft.jar)
+ UCHIJAAAAAAAAA FML{7.10.99.99} [Forge Mod Loader] (forgeSrc-1.7.10-10.13.4.1448-1.7.10.jar)
+ UCHIJAAAAAAAAA Forge{10.13.4.1448} [Minecraft Forge] (forgeSrc-1.7.10-10.13.4.1448-1.7.10.jar)
+ UCHIJAAAAAAAAA CodeChickenCore{1.0.4.29} [CodeChicken Core] (minecraft.jar)
+ UCHIJAAAAAAAAA miscutils{0.2.2} [miscutils] (bin)
+ GL info: ' Vendor: 'NVIDIA Corporation' Version: '4.5.0 NVIDIA 355.82' Renderer: 'GeForce GTX 770/PCIe/SSE2'
+ Launched Version: 1.7.10
+ LWJGL: 2.9.1
+ OpenGL: GeForce GTX 770/PCIe/SSE2 GL version 4.5.0 NVIDIA 355.82, NVIDIA Corporation
+ GL Caps: Using GL 1.3 multitexturing.
+Using framebuffer objects because OpenGL 3.0 is supported and separate blending is supported.
+Anisotropic filtering is supported and maximum anisotropy is 16.
+Shaders are available because OpenGL 2.1 is supported.
+
+ Is Modded: Definitely; Client brand changed to 'fml,forge'
+ Type: Client (map_client.txt)
+ Resource Packs: []
+ Current Language: English (US)
+ Profiler Position: N/A (disabled)
+ Vec3 Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
+ Anisotropic Filtering: Off (1) \ No newline at end of file
diff --git a/crash-reports/crash-2015-10-12_15.00.35-client.txt b/crash-reports/crash-2015-10-12_15.00.35-client.txt
new file mode 100644
index 0000000000..7e37a7111c
--- /dev/null
+++ b/crash-reports/crash-2015-10-12_15.00.35-client.txt
@@ -0,0 +1,122 @@
+---- Minecraft Crash Report ----
+// Surprise! Haha. Well, this is awkward.
+
+Time: 12/10/15 3:00 PM
+Description: Rendering item
+
+java.lang.NullPointerException: Rendering item
+ at net.minecraft.item.ItemStack.getItemDamage(ItemStack.java:265)
+ at net.minecraft.client.renderer.entity.RenderItem.renderItemIntoGUI(RenderItem.java:419)
+ at net.minecraft.client.renderer.entity.RenderItem.renderItemAndEffectIntoGUI(RenderItem.java:585)
+ at net.minecraft.client.gui.inventory.GuiContainerCreative.func_147051_a(GuiContainerCreative.java:968)
+ at net.minecraft.client.gui.inventory.GuiContainerCreative.drawGuiContainerBackgroundLayer(GuiContainerCreative.java:795)
+ at net.minecraft.client.gui.inventory.GuiContainer.drawScreen(GuiContainer.java:93)
+ at net.minecraft.client.renderer.InventoryEffectRenderer.drawScreen(InventoryEffectRenderer.java:44)
+ at net.minecraft.client.gui.inventory.GuiContainerCreative.drawScreen(GuiContainerCreative.java:673)
+ at net.minecraft.client.renderer.EntityRenderer.updateCameraAndRender(EntityRenderer.java:1137)
+ at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1067)
+ at net.minecraft.client.Minecraft.run(Minecraft.java:962)
+ at net.minecraft.client.main.Main.main(Main.java:164)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+ at java.lang.reflect.Method.invoke(Unknown Source)
+ at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)
+ at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
+ at net.minecraftforge.gradle.GradleStartCommon.launch(Unknown Source)
+ at GradleStart.main(Unknown Source)
+
+
+A detailed walkthrough of the error, its code path and all known details is as follows:
+---------------------------------------------------------------------------------------
+
+-- Head --
+Stacktrace:
+ at net.minecraft.item.ItemStack.getItemDamage(ItemStack.java:265)
+ at net.minecraft.client.renderer.entity.RenderItem.renderItemIntoGUI(RenderItem.java:419)
+
+-- Item being rendered --
+Details:
+ Item Type: null
+ Item Aux: ~~ERROR~~ NullPointerException: null
+ Item NBT: null
+ Item Foil: ~~ERROR~~ NullPointerException: null
+Stacktrace:
+ at net.minecraft.client.renderer.entity.RenderItem.renderItemAndEffectIntoGUI(RenderItem.java:585)
+ at net.minecraft.client.gui.inventory.GuiContainerCreative.func_147051_a(GuiContainerCreative.java:968)
+ at net.minecraft.client.gui.inventory.GuiContainerCreative.drawGuiContainerBackgroundLayer(GuiContainerCreative.java:795)
+ at net.minecraft.client.gui.inventory.GuiContainer.drawScreen(GuiContainer.java:93)
+ at net.minecraft.client.renderer.InventoryEffectRenderer.drawScreen(InventoryEffectRenderer.java:44)
+ at net.minecraft.client.gui.inventory.GuiContainerCreative.drawScreen(GuiContainerCreative.java:673)
+
+-- Screen render details --
+Details:
+ Screen name: net.minecraft.client.gui.inventory.GuiContainerCreative
+ Mouse location: Scaled: (324, 26). Absolute: (1299, 923)
+ Screen size: Scaled: (480, 257). Absolute: (1920, 1028). Scale factor of 4
+
+-- Affected level --
+Details:
+ Level name: MpServer
+ All players: 1 total; [EntityClientPlayerMP['Draknyte1'/347, l='MpServer', x=-34.96, y=74.62, z=259.88]]
+ Chunk stats: MultiplayerChunkCache: 255, 255
+ Level seed: 0
+ Level generator: ID 00 - default, ver 1. Features enabled: false
+ Level generator options:
+ Level spawn location: World: (-44,64,256), Chunk: (at 4,4,0 in -3,16; contains blocks -48,0,256 to -33,255,271), Region: (-1,0; contains chunks -32,0 to -1,31, blocks -512,0,0 to -1,255,511)
+ Level time: 555 game time, 555 day time
+ Level dimension: 0
+ Level storage version: 0x00000 - Unknown?
+ Level weather: Rain time: 0 (now: false), thunder time: 0 (now: false)
+ Level game mode: Game mode: creative (ID 1). Hardcore: false. Cheats: false
+ Forced entities: 143 total; [EntityChicken['Chicken'/258, l='MpServer', x=25.47, y=95.00, z=218.34], EntityChicken['Chicken'/259, l='MpServer', x=16.50, y=98.00, z=213.50], EntityChicken['Chicken'/260, l='MpServer', x=19.50, y=98.00, z=215.50], EntityChicken['Chicken'/261, l='MpServer', x=17.78, y=98.00, z=211.28], EntityChicken['Chicken'/262, l='MpServer', x=20.47, y=100.00, z=218.47], EntityChicken['Chicken'/263, l='MpServer', x=21.78, y=96.00, z=220.19], EntityChicken['Chicken'/264, l='MpServer', x=21.50, y=96.00, z=221.50], EntityChicken['Chicken'/265, l='MpServer', x=19.50, y=96.00, z=219.50], EntityZombie['Zombie'/266, l='MpServer', x=26.50, y=33.00, z=235.50], EntityZombie['Zombie'/267, l='MpServer', x=25.50, y=33.00, z=234.50], EntityZombie['Zombie'/268, l='MpServer', x=27.50, y=46.00, z=272.50], EntitySkeleton['Skeleton'/269, l='MpServer', x=24.68, y=46.00, z=276.29], EntitySkeleton['Skeleton'/270, l='MpServer', x=25.50, y=46.00, z=278.50], EntityCreeper['Creeper'/271, l='MpServer', x=16.50, y=16.00, z=295.31], EntityBat['Bat'/283, l='MpServer', x=43.33, y=42.63, z=215.33], EntitySkeleton['Skeleton'/284, l='MpServer', x=39.56, y=15.00, z=234.09], EntitySkeleton['Skeleton'/285, l='MpServer', x=39.44, y=15.00, z=234.97], EntitySkeleton['Skeleton'/286, l='MpServer', x=37.50, y=15.00, z=237.50], EntitySkeleton['Skeleton'/287, l='MpServer', x=43.50, y=15.00, z=240.50], EntityHorse['Horse'/51, l='MpServer', x=-112.50, y=64.00, z=239.50], EntitySpider['Spider'/68, l='MpServer', x=-97.67, y=12.26, z=202.35], EntityHorse['Horse'/69, l='MpServer', x=-101.46, y=70.00, z=236.00], EntityHorse['Horse'/71, l='MpServer', x=-111.00, y=67.00, z=242.13], EntityHorse['Horse'/72, l='MpServer', x=-107.37, y=67.00, z=242.63], EntityHorse['Horse'/73, l='MpServer', x=-109.50, y=69.00, z=246.50], EntitySkeleton['Skeleton'/74, l='MpServer', x=-104.50, y=43.00, z=301.50], EntityBat['Bat'/77, l='MpServer', x=-96.19, y=21.28, z=318.52], EntityBat['Bat'/78, l='MpServer', x=-94.45, y=23.87, z=316.53], EntityBat['Bat'/79, l='MpServer', x=-103.20, y=18.05, z=331.07], EntitySkeleton['Skeleton'/80, l='MpServer', x=-100.50, y=19.00, z=332.50], EntityClientPlayerMP['Draknyte1'/347, l='MpServer', x=-34.96, y=74.62, z=259.88], EntitySpider['Spider'/95, l='MpServer', x=-95.50, y=12.00, z=211.50], EntityChicken['Chicken'/96, l='MpServer', x=-90.50, y=64.00, z=223.50], EntityChicken['Chicken'/97, l='MpServer', x=-88.50, y=63.00, z=225.50], EntityChicken['Chicken'/98, l='MpServer', x=-87.38, y=67.00, z=225.63], EntityChicken['Chicken'/99, l='MpServer', x=-90.66, y=66.00, z=226.47], EntityZombie['Zombie'/100, l='MpServer', x=-92.84, y=27.00, z=269.16], EntityZombie['Zombie'/101, l='MpServer', x=-91.66, y=26.00, z=269.16], EntityZombie['Zombie'/102, l='MpServer', x=-93.90, y=26.00, z=272.31], EntityHorse['Horse'/103, l='MpServer', x=-80.87, y=74.00, z=262.13], EntityHorse['Horse'/104, l='MpServer', x=-82.87, y=74.00, z=260.13], EntityHorse['Horse'/105, l='MpServer', x=-82.50, y=74.00, z=266.50], EntityHorse['Horse'/106, l='MpServer', x=-82.87, y=74.00, z=271.13], EntityZombie['Zombie'/107, l='MpServer', x=-93.50, y=26.00, z=273.50], EntityPig['Pig'/108, l='MpServer', x=-89.55, y=68.00, z=279.26], EntityPig['Pig'/109, l='MpServer', x=-88.59, y=69.00, z=281.53], EntityPig['Pig'/110, l='MpServer', x=-91.50, y=67.00, z=283.50], EntityPig['Pig'/111, l='MpServer', x=-89.50, y=70.00, z=285.50], EntitySheep['Sheep'/112, l='MpServer', x=-88.13, y=69.00, z=278.91], EntitySheep['Sheep'/113, l='MpServer', x=-88.50, y=70.00, z=282.53], EntitySheep['Sheep'/114, l='MpServer', x=-90.71, y=68.00, z=278.93], EntitySheep['Sheep'/115, l='MpServer', x=-90.34, y=68.00, z=281.53], EntityZombie['Zombie'/119, l='MpServer', x=-73.50, y=36.00, z=234.50], EntityChicken['Chicken'/120, l='MpServer', x=-69.50, y=69.00, z=224.50], EntityChicken['Chicken'/121, l='MpServer', x=-73.71, y=67.00, z=222.98], EntityChicken['Chicken'/122, l='MpServer', x=-69.50, y=75.00, z=228.50], EntityChicken['Chicken'/123, l='MpServer', x=-64.47, y=72.00, z=228.47], EntityHorse['Horse'/124, l='MpServer', x=-79.50, y=74.00, z=269.50], EntityBat['Bat'/131, l='MpServer', x=-63.29, y=37.25, z=183.82], EntityBat['Bat'/132, l='MpServer', x=-60.13, y=26.50, z=199.91], EntityCreeper['Creeper'/133, l='MpServer', x=-55.50, y=19.00, z=252.50], EntityZombie['Zombie'/134, l='MpServer', x=-54.56, y=17.00, z=260.56], EntityZombie['Zombie'/135, l='MpServer', x=-61.50, y=17.00, z=262.50], EntityEnderman['Enderman'/136, l='MpServer', x=-52.44, y=17.00, z=259.00], EntityHorse['Horse'/137, l='MpServer', x=-53.06, y=67.00, z=264.41], EntityHorse['Horse'/138, l='MpServer', x=-55.75, y=70.00, z=268.16], EntityHorse['Horse'/139, l='MpServer', x=-52.40, y=70.00, z=276.16], EntityHorse['Horse'/140, l='MpServer', x=-51.37, y=70.00, z=274.38], EntityZombie['Zombie'/141, l='MpServer', x=-59.22, y=27.00, z=304.84], EntityBat['Bat'/142, l='MpServer', x=-52.29, y=30.18, z=302.35], EntityChicken['Chicken'/148, l='MpServer', x=-41.56, y=72.00, z=190.53], EntityChicken['Chicken'/149, l='MpServer', x=-34.50, y=75.00, z=198.50], EntityChicken['Chicken'/150, l='MpServer', x=-34.22, y=75.00, z=197.69], EntityChicken['Chicken'/151, l='MpServer', x=-36.16, y=74.00, z=197.63], EntityBat['Bat'/152, l='MpServer', x=-46.55, y=17.82, z=245.53], EntityZombie['Zombie'/153, l='MpServer', x=-33.50, y=32.00, z=225.50], EntityZombie['Zombie'/154, l='MpServer', x=-43.50, y=21.00, z=240.50], EntityZombie['Zombie'/155, l='MpServer', x=-43.50, y=21.00, z=241.50], EntitySpider['Spider'/156, l='MpServer', x=-40.06, y=21.00, z=241.06], EntityBat['Bat'/157, l='MpServer', x=-34.25, y=21.61, z=243.46], EntityChicken['Chicken'/158, l='MpServer', x=-35.38, y=71.00, z=242.56], EntityHorse['Horse'/159, l='MpServer', x=-43.91, y=67.00, z=276.50], EntityZombie['Zombie'/167, l='MpServer', x=-30.50, y=61.00, z=200.50], EntityZombie['Zombie'/168, l='MpServer', x=-28.50, y=61.00, z=200.50], EntityBat['Bat'/169, l='MpServer', x=-19.25, y=44.10, z=222.66], EntityZombie['Zombie'/170, l='MpServer', x=-22.50, y=42.00, z=237.50], EntityChicken['Chicken'/171, l='MpServer', x=-25.53, y=66.00, z=231.56], EntityChicken['Chicken'/172, l='MpServer', x=-27.88, y=65.05, z=235.50], EntityChicken['Chicken'/173, l='MpServer', x=-24.47, y=66.00, z=241.41], EntityCreeper['Creeper'/174, l='MpServer', x=-21.52, y=41.00, z=276.52], EntityCreeper['Creeper'/175, l='MpServer', x=-23.50, y=41.00, z=276.50], EntityCreeper['Creeper'/176, l='MpServer', x=-23.50, y=41.00, z=277.50], EntityCreeper['Creeper'/181, l='MpServer', x=-14.50, y=66.00, z=195.97], EntityCreeper['Creeper'/182, l='MpServer', x=-13.50, y=66.00, z=200.50], EntityZombie['Zombie'/183, l='MpServer', x=-12.50, y=67.00, z=207.50], EntityZombie['Zombie'/184, l='MpServer', x=-11.50, y=67.00, z=207.50], EntityZombie['Zombie'/185, l='MpServer', x=-10.50, y=67.00, z=207.50], EntityCreeper['Creeper'/186, l='MpServer', x=-9.34, y=47.00, z=237.03], EntityCreeper['Creeper'/187, l='MpServer', x=-0.34, y=46.00, z=234.97], EntityBat['Bat'/188, l='MpServer', x=-17.94, y=35.44, z=233.06], EntitySkeleton['Skeleton'/189, l='MpServer', x=-5.50, y=17.00, z=251.50], EntityZombie['Zombie'/190, l='MpServer', x=-7.50, y=23.00, z=251.50], EntityZombie['Zombie'/191, l='MpServer', x=-6.50, y=23.00, z=252.50], EntityZombie['Zombie'/192, l='MpServer', x=-6.50, y=23.00, z=253.50], EntityBat['Bat'/193, l='MpServer', x=-9.36, y=27.82, z=259.27], EntityBat['Bat'/194, l='MpServer', x=-10.25, y=28.00, z=258.64], EntityBat['Bat'/195, l='MpServer', x=-6.53, y=25.29, z=287.71], EntitySpider['Spider'/196, l='MpServer', x=-6.50, y=25.00, z=290.50], EntitySkeleton['Skeleton'/197, l='MpServer', x=-8.50, y=25.00, z=291.50], EntityZombie['Zombie'/198, l='MpServer', x=-3.50, y=44.00, z=295.50], EntitySquid['Squid'/199, l='MpServer', x=-7.48, y=57.22, z=297.86], EntitySquid['Squid'/200, l='MpServer', x=-8.63, y=56.28, z=300.49], EntitySquid['Squid'/201, l='MpServer', x=-3.80, y=55.86, z=300.84], EntityCreeper['Creeper'/202, l='MpServer', x=-13.00, y=25.00, z=318.47], EntitySkeleton['Skeleton'/203, l='MpServer', x=-7.06, y=33.00, z=318.53], EntitySquid['Squid'/204, l='MpServer', x=-5.44, y=62.33, z=314.85], EntitySquid['Squid'/205, l='MpServer', x=-5.92, y=62.51, z=308.80], EntitySquid['Squid'/206, l='MpServer', x=-6.86, y=58.85, z=314.38], EntitySquid['Squid'/207, l='MpServer', x=-10.53, y=56.84, z=307.69], EntitySquid['Squid'/208, l='MpServer', x=-9.31, y=57.28, z=314.33], EntitySquid['Squid'/209, l='MpServer', x=-1.93, y=54.22, z=316.50], EntitySquid['Squid'/210, l='MpServer', x=-6.49, y=57.91, z=316.36], EntitySquid['Squid'/211, l='MpServer', x=-10.27, y=57.91, z=304.10], EntityZombie['Zombie'/212, l='MpServer', x=-6.50, y=44.00, z=321.50], EntitySpider['Spider'/225, l='MpServer', x=4.34, y=18.00, z=250.50], EntitySkeleton['Skeleton'/226, l='MpServer', x=5.50, y=50.00, z=255.50], EntitySkeleton['Skeleton'/227, l='MpServer', x=11.88, y=15.00, z=271.50], EntityBat['Bat'/228, l='MpServer', x=2.82, y=26.04, z=257.14], EntityCreeper['Creeper'/229, l='MpServer', x=12.97, y=55.00, z=266.53], EntityBat['Bat'/230, l='MpServer', x=10.46, y=27.62, z=287.60], EntitySquid['Squid'/231, l='MpServer', x=4.50, y=57.12, z=306.77], EntitySquid['Squid'/232, l='MpServer', x=-0.82, y=62.38, z=304.59], EntitySquid['Squid'/233, l='MpServer', x=4.41, y=55.91, z=300.68], EntitySquid['Squid'/234, l='MpServer', x=3.95, y=62.37, z=310.55], EntitySquid['Squid'/235, l='MpServer', x=3.37, y=58.19, z=311.70], EntitySquid['Squid'/236, l='MpServer', x=5.02, y=59.43, z=312.46], EntitySquid['Squid'/237, l='MpServer', x=-3.39, y=60.46, z=313.31], EntitySquid['Squid'/238, l='MpServer', x=-0.65, y=61.81, z=316.26], EntitySquid['Squid'/239, l='MpServer', x=6.13, y=61.91, z=310.63], EntitySquid['Squid'/240, l='MpServer', x=2.08, y=55.76, z=311.09], EntitySquid['Squid'/241, l='MpServer', x=-0.49, y=58.36, z=306.90], EntitySquid['Squid'/242, l='MpServer', x=3.42, y=62.13, z=302.89], EntityZombie['Zombie'/243, l='MpServer', x=3.38, y=33.00, z=320.97]]
+ Retry entities: 0 total; []
+ Server brand: fml,forge
+ Server type: Integrated singleplayer server
+Stacktrace:
+ at net.minecraft.client.multiplayer.WorldClient.addWorldInfoToCrashReport(WorldClient.java:415)
+ at net.minecraft.client.Minecraft.addGraphicsAndWorldToCrashReport(Minecraft.java:2566)
+ at net.minecraft.client.Minecraft.run(Minecraft.java:984)
+ at net.minecraft.client.main.Main.main(Main.java:164)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+ at java.lang.reflect.Method.invoke(Unknown Source)
+ at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)
+ at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
+ at net.minecraftforge.gradle.GradleStartCommon.launch(Unknown Source)
+ at GradleStart.main(Unknown Source)
+
+-- System Details --
+Details:
+ Minecraft Version: 1.7.10
+ Operating System: Windows 7 (amd64) version 6.1
+ Java Version: 1.8.0_60, Oracle Corporation
+ Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
+ Memory: 544523616 bytes (519 MB) / 1135083520 bytes (1082 MB) up to 3804758016 bytes (3628 MB)
+ JVM Flags: 0 total;
+ AABB Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
+ IntCache: cache: 0, tcache: 0, allocated: 12, tallocated: 94
+ FML: MCP v9.05 FML v7.10.99.99 Minecraft Forge 10.13.4.1448 5 mods loaded, 5 mods active
+ States: 'U' = Unloaded 'L' = Loaded 'C' = Constructed 'H' = Pre-initialized 'I' = Initialized 'J' = Post-initialized 'A' = Available 'D' = Disabled 'E' = Errored
+ UCHIJAAAA mcp{9.05} [Minecraft Coder Pack] (minecraft.jar)
+ UCHIJAAAA FML{7.10.99.99} [Forge Mod Loader] (forgeSrc-1.7.10-10.13.4.1448-1.7.10.jar)
+ UCHIJAAAA Forge{10.13.4.1448} [Minecraft Forge] (forgeSrc-1.7.10-10.13.4.1448-1.7.10.jar)
+ UCHIJAAAA CodeChickenCore{1.0.4.29} [CodeChicken Core] (minecraft.jar)
+ UCHIJAAAA miscutils{0.3.1.0} [miscutils] (bin)
+ GL info: ' Vendor: 'NVIDIA Corporation' Version: '4.5.0 NVIDIA 355.82' Renderer: 'GeForce GTX 770/PCIe/SSE2'
+ Launched Version: 1.7.10
+ LWJGL: 2.9.1
+ OpenGL: GeForce GTX 770/PCIe/SSE2 GL version 4.5.0 NVIDIA 355.82, NVIDIA Corporation
+ GL Caps: Using GL 1.3 multitexturing.
+Using framebuffer objects because OpenGL 3.0 is supported and separate blending is supported.
+Anisotropic filtering is supported and maximum anisotropy is 16.
+Shaders are available because OpenGL 2.1 is supported.
+
+ Is Modded: Definitely; Client brand changed to 'fml,forge'
+ Type: Client (map_client.txt)
+ Resource Packs: []
+ Current Language: English (US)
+ Profiler Position: N/A (disabled)
+ Vec3 Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
+ Anisotropic Filtering: Off (1) \ No newline at end of file
diff --git a/crash-reports/crash-2015-10-12_15.01.20-client.txt b/crash-reports/crash-2015-10-12_15.01.20-client.txt
new file mode 100644
index 0000000000..66f0cf99d9
--- /dev/null
+++ b/crash-reports/crash-2015-10-12_15.01.20-client.txt
@@ -0,0 +1,122 @@
+---- Minecraft Crash Report ----
+// But it works on my machine.
+
+Time: 12/10/15 3:01 PM
+Description: Rendering item
+
+java.lang.NullPointerException: Rendering item
+ at net.minecraft.item.ItemStack.getItemDamage(ItemStack.java:265)
+ at net.minecraft.client.renderer.entity.RenderItem.renderItemIntoGUI(RenderItem.java:419)
+ at net.minecraft.client.renderer.entity.RenderItem.renderItemAndEffectIntoGUI(RenderItem.java:585)
+ at net.minecraft.client.gui.inventory.GuiContainerCreative.func_147051_a(GuiContainerCreative.java:968)
+ at net.minecraft.client.gui.inventory.GuiContainerCreative.drawGuiContainerBackgroundLayer(GuiContainerCreative.java:795)
+ at net.minecraft.client.gui.inventory.GuiContainer.drawScreen(GuiContainer.java:93)
+ at net.minecraft.client.renderer.InventoryEffectRenderer.drawScreen(InventoryEffectRenderer.java:44)
+ at net.minecraft.client.gui.inventory.GuiContainerCreative.drawScreen(GuiContainerCreative.java:673)
+ at net.minecraft.client.renderer.EntityRenderer.updateCameraAndRender(EntityRenderer.java:1137)
+ at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1067)
+ at net.minecraft.client.Minecraft.run(Minecraft.java:962)
+ at net.minecraft.client.main.Main.main(Main.java:164)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+ at java.lang.reflect.Method.invoke(Unknown Source)
+ at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)
+ at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
+ at net.minecraftforge.gradle.GradleStartCommon.launch(Unknown Source)
+ at GradleStart.main(Unknown Source)
+
+
+A detailed walkthrough of the error, its code path and all known details is as follows:
+---------------------------------------------------------------------------------------
+
+-- Head --
+Stacktrace:
+ at net.minecraft.item.ItemStack.getItemDamage(ItemStack.java:265)
+ at net.minecraft.client.renderer.entity.RenderItem.renderItemIntoGUI(RenderItem.java:419)
+
+-- Item being rendered --
+Details:
+ Item Type: null
+ Item Aux: ~~ERROR~~ NullPointerException: null
+ Item NBT: null
+ Item Foil: ~~ERROR~~ NullPointerException: null
+Stacktrace:
+ at net.minecraft.client.renderer.entity.RenderItem.renderItemAndEffectIntoGUI(RenderItem.java:585)
+ at net.minecraft.client.gui.inventory.GuiContainerCreative.func_147051_a(GuiContainerCreative.java:968)
+ at net.minecraft.client.gui.inventory.GuiContainerCreative.drawGuiContainerBackgroundLayer(GuiContainerCreative.java:795)
+ at net.minecraft.client.gui.inventory.GuiContainer.drawScreen(GuiContainer.java:93)
+ at net.minecraft.client.renderer.InventoryEffectRenderer.drawScreen(InventoryEffectRenderer.java:44)
+ at net.minecraft.client.gui.inventory.GuiContainerCreative.drawScreen(GuiContainerCreative.java:673)
+
+-- Screen render details --
+Details:
+ Screen name: net.minecraft.client.gui.inventory.GuiContainerCreative
+ Mouse location: Scaled: (302, 9). Absolute: (604, 460)
+ Screen size: Scaled: (427, 240). Absolute: (854, 480). Scale factor of 2
+
+-- Affected level --
+Details:
+ Level name: MpServer
+ All players: 1 total; [EntityClientPlayerMP['Draknyte1'/344, l='MpServer', x=-34.96, y=74.62, z=259.88]]
+ Chunk stats: MultiplayerChunkCache: 542, 542
+ Level seed: 0
+ Level generator: ID 00 - default, ver 1. Features enabled: false
+ Level generator options:
+ Level spawn location: World: (-44,64,256), Chunk: (at 4,4,0 in -3,16; contains blocks -48,0,256 to -33,255,271), Region: (-1,0; contains chunks -32,0 to -1,31, blocks -512,0,0 to -1,255,511)
+ Level time: 687 game time, 687 day time
+ Level dimension: 0
+ Level storage version: 0x00000 - Unknown?
+ Level weather: Rain time: 0 (now: false), thunder time: 0 (now: false)
+ Level game mode: Game mode: creative (ID 1). Hardcore: false. Cheats: false
+ Forced entities: 144 total; [EntityChicken['Chicken'/259, l='MpServer', x=25.47, y=95.00, z=218.34], EntityChicken['Chicken'/260, l='MpServer', x=12.59, y=97.00, z=209.66], EntityChicken['Chicken'/261, l='MpServer', x=15.59, y=96.00, z=221.44], EntityChicken['Chicken'/262, l='MpServer', x=17.78, y=98.00, z=211.28], EntityChicken['Chicken'/263, l='MpServer', x=20.47, y=100.00, z=218.47], EntityChicken['Chicken'/264, l='MpServer', x=21.78, y=96.00, z=220.19], EntityChicken['Chicken'/265, l='MpServer', x=21.50, y=96.00, z=221.50], EntityChicken['Chicken'/266, l='MpServer', x=19.50, y=96.00, z=219.50], EntityZombie['Zombie'/267, l='MpServer', x=26.50, y=33.00, z=235.50], EntityZombie['Zombie'/268, l='MpServer', x=22.98, y=34.00, z=240.34], EntityZombie['Zombie'/269, l='MpServer', x=27.50, y=46.00, z=272.50], EntitySkeleton['Skeleton'/270, l='MpServer', x=24.56, y=46.00, z=277.09], EntitySkeleton['Skeleton'/271, l='MpServer', x=25.50, y=46.00, z=278.50], EntityCreeper['Creeper'/272, l='MpServer', x=16.50, y=16.00, z=295.31], EntityBat['Bat'/283, l='MpServer', x=37.05, y=43.00, z=219.46], EntitySkeleton['Skeleton'/284, l='MpServer', x=39.56, y=15.00, z=234.09], EntitySkeleton['Skeleton'/285, l='MpServer', x=39.44, y=15.00, z=234.97], EntitySkeleton['Skeleton'/286, l='MpServer', x=37.50, y=15.00, z=237.50], EntitySkeleton['Skeleton'/287, l='MpServer', x=39.59, y=16.69, z=242.69], EntityHorse['Horse'/51, l='MpServer', x=-113.00, y=64.00, z=239.47], EntitySpider['Spider'/69, l='MpServer', x=-97.00, y=12.00, z=204.16], EntityHorse['Horse'/70, l='MpServer', x=-100.50, y=71.00, z=236.00], EntityHorse['Horse'/72, l='MpServer', x=-111.00, y=67.00, z=242.13], EntityHorse['Horse'/73, l='MpServer', x=-107.37, y=67.00, z=242.63], EntityHorse['Horse'/74, l='MpServer', x=-109.50, y=69.00, z=246.50], EntitySkeleton['Skeleton'/75, l='MpServer', x=-104.50, y=43.00, z=301.50], EntityBat['Bat'/78, l='MpServer', x=-98.55, y=24.18, z=316.05], EntityBat['Bat'/79, l='MpServer', x=-104.75, y=20.10, z=331.47], EntitySkeleton['Skeleton'/80, l='MpServer', x=-107.63, y=17.00, z=328.14], EntityClientPlayerMP['Draknyte1'/344, l='MpServer', x=-34.96, y=74.62, z=259.88], EntitySpider['Spider'/94, l='MpServer', x=-95.72, y=12.00, z=212.25], EntityChicken['Chicken'/95, l='MpServer', x=-85.80, y=62.41, z=221.28], EntityChicken['Chicken'/96, l='MpServer', x=-88.50, y=63.00, z=225.50], EntityChicken['Chicken'/97, l='MpServer', x=-87.38, y=67.00, z=225.63], EntityChicken['Chicken'/98, l='MpServer', x=-90.66, y=66.00, z=226.47], EntityZombie['Zombie'/99, l='MpServer', x=-92.84, y=27.00, z=269.16], EntityZombie['Zombie'/100, l='MpServer', x=-91.66, y=26.00, z=269.16], EntityHorse['Horse'/101, l='MpServer', x=-80.87, y=74.00, z=262.13], EntityHorse['Horse'/102, l='MpServer', x=-82.87, y=74.00, z=260.13], EntityHorse['Horse'/103, l='MpServer', x=-82.10, y=74.00, z=267.83], EntityHorse['Horse'/104, l='MpServer', x=-84.47, y=72.25, z=274.71], EntityZombie['Zombie'/105, l='MpServer', x=-93.38, y=26.00, z=273.69], EntityZombie['Zombie'/106, l='MpServer', x=-96.13, y=26.00, z=272.63], EntityPig['Pig'/107, l='MpServer', x=-90.06, y=68.00, z=278.75], EntityPig['Pig'/108, l='MpServer', x=-88.59, y=69.00, z=281.53], EntityPig['Pig'/109, l='MpServer', x=-91.50, y=67.00, z=283.50], EntityPig['Pig'/110, l='MpServer', x=-89.47, y=70.00, z=285.69], EntitySheep['Sheep'/111, l='MpServer', x=-88.13, y=69.00, z=278.91], EntitySheep['Sheep'/112, l='MpServer', x=-88.50, y=70.00, z=282.53], EntitySheep['Sheep'/113, l='MpServer', x=-91.28, y=68.00, z=278.88], EntitySheep['Sheep'/114, l='MpServer', x=-90.63, y=69.00, z=285.08], EntityBat['Bat'/115, l='MpServer', x=-95.42, y=21.65, z=315.50], EntityChicken['Chicken'/119, l='MpServer', x=-74.53, y=69.00, z=216.36], EntityZombie['Zombie'/120, l='MpServer', x=-73.50, y=36.00, z=234.50], EntityChicken['Chicken'/121, l='MpServer', x=-71.56, y=70.00, z=220.09], EntityChicken['Chicken'/122, l='MpServer', x=-69.50, y=75.00, z=228.50], EntityChicken['Chicken'/123, l='MpServer', x=-64.47, y=72.00, z=228.47], EntityHorse['Horse'/124, l='MpServer', x=-86.58, y=73.00, z=273.72], EntityBat['Bat'/131, l='MpServer', x=-62.99, y=36.27, z=182.27], EntityBat['Bat'/132, l='MpServer', x=-62.25, y=28.69, z=200.50], EntityCreeper['Creeper'/133, l='MpServer', x=-55.50, y=19.00, z=252.50], EntityZombie['Zombie'/134, l='MpServer', x=-54.56, y=17.00, z=260.56], EntityZombie['Zombie'/135, l='MpServer', x=-61.50, y=17.00, z=262.50], EntityEnderman['Enderman'/136, l='MpServer', x=-52.53, y=17.00, z=259.50], EntityHorse['Horse'/137, l='MpServer', x=-53.06, y=67.18, z=264.41], EntityHorse['Horse'/138, l='MpServer', x=-55.57, y=70.00, z=268.19], EntityHorse['Horse'/139, l='MpServer', x=-52.78, y=70.00, z=276.16], EntityHorse['Horse'/140, l='MpServer', x=-51.37, y=70.00, z=274.38], EntityBat['Bat'/141, l='MpServer', x=-50.78, y=29.71, z=306.82], EntityZombie['Zombie'/142, l='MpServer', x=-59.22, y=27.00, z=304.84], EntityChicken['Chicken'/149, l='MpServer', x=-41.56, y=72.00, z=190.53], EntityChicken['Chicken'/150, l='MpServer', x=-34.50, y=75.00, z=198.50], EntityChicken['Chicken'/151, l='MpServer', x=-34.22, y=75.00, z=197.69], EntityChicken['Chicken'/152, l='MpServer', x=-36.16, y=74.00, z=197.63], EntityZombie['Zombie'/153, l='MpServer', x=-33.50, y=32.00, z=225.50], EntityZombie['Zombie'/154, l='MpServer', x=-43.50, y=21.00, z=240.50], EntityZombie['Zombie'/155, l='MpServer', x=-43.50, y=21.00, z=241.50], EntitySpider['Spider'/156, l='MpServer', x=-40.06, y=21.00, z=241.06], EntityBat['Bat'/157, l='MpServer', x=-33.59, y=20.57, z=246.49], EntityBat['Bat'/158, l='MpServer', x=-41.59, y=14.76, z=238.17], EntityChicken['Chicken'/159, l='MpServer', x=-35.38, y=71.00, z=242.56], EntityHorse['Horse'/160, l='MpServer', x=-43.91, y=67.00, z=276.50], EntitySquid['Squid'/162, l='MpServer', x=-44.78, y=52.00, z=321.25], EntityZombie['Zombie'/167, l='MpServer', x=-30.50, y=61.00, z=200.50], EntityZombie['Zombie'/168, l='MpServer', x=-28.50, y=61.00, z=200.50], EntityBat['Bat'/169, l='MpServer', x=-19.25, y=44.10, z=222.66], EntityZombie['Zombie'/170, l='MpServer', x=-22.50, y=42.00, z=237.50], EntityBat['Bat'/171, l='MpServer', x=-6.45, y=35.99, z=225.38], EntityChicken['Chicken'/172, l='MpServer', x=-25.53, y=66.00, z=231.56], EntityChicken['Chicken'/173, l='MpServer', x=-27.19, y=65.00, z=235.19], EntityChicken['Chicken'/174, l='MpServer', x=-24.47, y=68.00, z=247.44], EntityCreeper['Creeper'/175, l='MpServer', x=-24.98, y=40.00, z=273.61], EntityCreeper['Creeper'/176, l='MpServer', x=-23.50, y=41.00, z=276.50], EntityCreeper['Creeper'/177, l='MpServer', x=-23.50, y=41.00, z=277.50], EntityCreeper['Creeper'/182, l='MpServer', x=-14.50, y=66.00, z=195.94], EntityCreeper['Creeper'/183, l='MpServer', x=-13.50, y=66.00, z=200.50], EntityZombie['Zombie'/184, l='MpServer', x=-14.43, y=68.00, z=205.76], EntityZombie['Zombie'/185, l='MpServer', x=-11.31, y=67.00, z=207.50], EntityZombie['Zombie'/186, l='MpServer', x=-10.44, y=67.00, z=207.50], EntityCreeper['Creeper'/187, l='MpServer', x=-9.34, y=47.00, z=237.03], EntityCreeper['Creeper'/188, l='MpServer', x=-0.34, y=46.00, z=234.97], EntitySkeleton['Skeleton'/189, l='MpServer', x=-10.41, y=18.00, z=245.94], EntityZombie['Zombie'/190, l='MpServer', x=-8.03, y=23.00, z=251.44], EntityZombie['Zombie'/191, l='MpServer', x=-6.31, y=23.00, z=250.31], EntityZombie['Zombie'/192, l='MpServer', x=-8.56, y=24.00, z=248.45], EntityBat['Bat'/193, l='MpServer', x=-7.72, y=28.10, z=258.94], EntityBat['Bat'/194, l='MpServer', x=-6.01, y=27.85, z=263.52], EntitySpider['Spider'/195, l='MpServer', x=-6.50, y=25.00, z=290.50], EntitySkeleton['Skeleton'/196, l='MpServer', x=-8.50, y=25.00, z=291.50], EntityBat['Bat'/197, l='MpServer', x=-7.25, y=25.72, z=287.51], EntityZombie['Zombie'/198, l='MpServer', x=-3.50, y=44.00, z=295.50], EntitySquid['Squid'/199, l='MpServer', x=-10.50, y=55.34, z=296.13], EntitySquid['Squid'/200, l='MpServer', x=-1.69, y=55.75, z=304.59], EntitySquid['Squid'/201, l='MpServer', x=-0.88, y=52.09, z=295.97], EntitySquid['Squid'/202, l='MpServer', x=-7.69, y=57.03, z=304.22], EntityCreeper['Creeper'/203, l='MpServer', x=-13.00, y=25.00, z=318.47], EntitySkeleton['Skeleton'/204, l='MpServer', x=-7.50, y=34.00, z=316.34], EntitySquid['Squid'/205, l='MpServer', x=-4.28, y=62.34, z=316.84], EntitySquid['Squid'/206, l='MpServer', x=-9.88, y=62.34, z=312.69], EntitySquid['Squid'/207, l='MpServer', x=-9.81, y=57.00, z=315.50], EntitySquid['Squid'/208, l='MpServer', x=-11.03, y=57.22, z=306.41], EntitySquid['Squid'/209, l='MpServer', x=-4.44, y=55.97, z=314.88], EntitySquid['Squid'/210, l='MpServer', x=1.50, y=54.34, z=316.50], EntitySquid['Squid'/211, l='MpServer', x=-6.47, y=58.09, z=318.31], EntitySquid['Squid'/212, l='MpServer', x=-5.78, y=58.69, z=312.09], EntitySquid['Squid'/213, l='MpServer', x=-5.25, y=62.34, z=304.69], EntitySquid['Squid'/214, l='MpServer', x=3.66, y=60.91, z=320.63], EntitySquid['Squid'/215, l='MpServer', x=1.50, y=58.22, z=303.19], EntityZombie['Zombie'/216, l='MpServer', x=-6.50, y=44.00, z=321.50], EntitySpider['Spider'/229, l='MpServer', x=4.34, y=18.00, z=250.50], EntitySkeleton['Skeleton'/230, l='MpServer', x=5.50, y=50.00, z=255.50], EntitySkeleton['Skeleton'/231, l='MpServer', x=15.86, y=16.00, z=268.67], EntityBat['Bat'/232, l='MpServer', x=-4.56, y=25.97, z=264.14], EntityCreeper['Creeper'/233, l='MpServer', x=12.97, y=55.00, z=266.53], EntityBat['Bat'/234, l='MpServer', x=13.38, y=26.47, z=286.35], EntitySquid['Squid'/235, l='MpServer', x=5.38, y=56.34, z=305.09], EntitySquid['Squid'/236, l='MpServer', x=2.50, y=60.16, z=301.38], EntitySquid['Squid'/237, l='MpServer', x=9.34, y=61.06, z=309.31], EntitySquid['Squid'/238, l='MpServer', x=5.69, y=55.31, z=315.97], EntitySquid['Squid'/239, l='MpServer', x=3.06, y=56.22, z=307.31], EntitySquid['Squid'/240, l='MpServer', x=8.16, y=60.31, z=308.19], EntitySquid['Squid'/241, l='MpServer', x=1.19, y=55.34, z=316.13], EntitySquid['Squid'/242, l='MpServer', x=5.22, y=54.22, z=311.09], EntityZombie['Zombie'/243, l='MpServer', x=3.38, y=33.00, z=320.97]]
+ Retry entities: 0 total; []
+ Server brand: fml,forge
+ Server type: Integrated singleplayer server
+Stacktrace:
+ at net.minecraft.client.multiplayer.WorldClient.addWorldInfoToCrashReport(WorldClient.java:415)
+ at net.minecraft.client.Minecraft.addGraphicsAndWorldToCrashReport(Minecraft.java:2566)
+ at net.minecraft.client.Minecraft.run(Minecraft.java:984)
+ at net.minecraft.client.main.Main.main(Main.java:164)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+ at java.lang.reflect.Method.invoke(Unknown Source)
+ at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)
+ at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
+ at net.minecraftforge.gradle.GradleStartCommon.launch(Unknown Source)
+ at GradleStart.main(Unknown Source)
+
+-- System Details --
+Details:
+ Minecraft Version: 1.7.10
+ Operating System: Windows 7 (amd64) version 6.1
+ Java Version: 1.8.0_60, Oracle Corporation
+ Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
+ Memory: 627224960 bytes (598 MB) / 851443712 bytes (812 MB) up to 3804758016 bytes (3628 MB)
+ JVM Flags: 0 total;
+ AABB Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
+ IntCache: cache: 0, tcache: 0, allocated: 12, tallocated: 94
+ FML: MCP v9.05 FML v7.10.99.99 Minecraft Forge 10.13.4.1448 5 mods loaded, 5 mods active
+ States: 'U' = Unloaded 'L' = Loaded 'C' = Constructed 'H' = Pre-initialized 'I' = Initialized 'J' = Post-initialized 'A' = Available 'D' = Disabled 'E' = Errored
+ UCHIJAAAA mcp{9.05} [Minecraft Coder Pack] (minecraft.jar)
+ UCHIJAAAA FML{7.10.99.99} [Forge Mod Loader] (forgeSrc-1.7.10-10.13.4.1448-1.7.10.jar)
+ UCHIJAAAA Forge{10.13.4.1448} [Minecraft Forge] (forgeSrc-1.7.10-10.13.4.1448-1.7.10.jar)
+ UCHIJAAAA CodeChickenCore{1.0.4.29} [CodeChicken Core] (minecraft.jar)
+ UCHIJAAAA miscutils{0.3.1.0} [miscutils] (bin)
+ GL info: ' Vendor: 'NVIDIA Corporation' Version: '4.5.0 NVIDIA 355.82' Renderer: 'GeForce GTX 770/PCIe/SSE2'
+ Launched Version: 1.7.10
+ LWJGL: 2.9.1
+ OpenGL: GeForce GTX 770/PCIe/SSE2 GL version 4.5.0 NVIDIA 355.82, NVIDIA Corporation
+ GL Caps: Using GL 1.3 multitexturing.
+Using framebuffer objects because OpenGL 3.0 is supported and separate blending is supported.
+Anisotropic filtering is supported and maximum anisotropy is 16.
+Shaders are available because OpenGL 2.1 is supported.
+
+ Is Modded: Definitely; Client brand changed to 'fml,forge'
+ Type: Client (map_client.txt)
+ Resource Packs: []
+ Current Language: English (US)
+ Profiler Position: N/A (disabled)
+ Vec3 Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
+ Anisotropic Filtering: Off (1) \ No newline at end of file
diff --git a/crash-reports/crash-2015-10-12_15.06.04-client.txt b/crash-reports/crash-2015-10-12_15.06.04-client.txt
new file mode 100644
index 0000000000..4c71a4242a
--- /dev/null
+++ b/crash-reports/crash-2015-10-12_15.06.04-client.txt
@@ -0,0 +1,122 @@
+---- Minecraft Crash Report ----
+// Why is it breaking :(
+
+Time: 12/10/15 3:06 PM
+Description: Rendering item
+
+java.lang.NullPointerException: Rendering item
+ at net.minecraft.item.ItemStack.getItemDamage(ItemStack.java:265)
+ at net.minecraft.client.renderer.entity.RenderItem.renderItemIntoGUI(RenderItem.java:419)
+ at net.minecraft.client.renderer.entity.RenderItem.renderItemAndEffectIntoGUI(RenderItem.java:585)
+ at net.minecraft.client.gui.inventory.GuiContainerCreative.func_147051_a(GuiContainerCreative.java:968)
+ at net.minecraft.client.gui.inventory.GuiContainerCreative.drawGuiContainerBackgroundLayer(GuiContainerCreative.java:795)
+ at net.minecraft.client.gui.inventory.GuiContainer.drawScreen(GuiContainer.java:93)
+ at net.minecraft.client.renderer.InventoryEffectRenderer.drawScreen(InventoryEffectRenderer.java:44)
+ at net.minecraft.client.gui.inventory.GuiContainerCreative.drawScreen(GuiContainerCreative.java:673)
+ at net.minecraft.client.renderer.EntityRenderer.updateCameraAndRender(EntityRenderer.java:1137)
+ at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1067)
+ at net.minecraft.client.Minecraft.run(Minecraft.java:962)
+ at net.minecraft.client.main.Main.main(Main.java:164)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+ at java.lang.reflect.Method.invoke(Unknown Source)
+ at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)
+ at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
+ at net.minecraftforge.gradle.GradleStartCommon.launch(Unknown Source)
+ at GradleStart.main(Unknown Source)
+
+
+A detailed walkthrough of the error, its code path and all known details is as follows:
+---------------------------------------------------------------------------------------
+
+-- Head --
+Stacktrace:
+ at net.minecraft.item.ItemStack.getItemDamage(ItemStack.java:265)
+ at net.minecraft.client.renderer.entity.RenderItem.renderItemIntoGUI(RenderItem.java:419)
+
+-- Item being rendered --
+Details:
+ Item Type: null
+ Item Aux: ~~ERROR~~ NullPointerException: null
+ Item NBT: null
+ Item Foil: ~~ERROR~~ NullPointerException: null
+Stacktrace:
+ at net.minecraft.client.renderer.entity.RenderItem.renderItemAndEffectIntoGUI(RenderItem.java:585)
+ at net.minecraft.client.gui.inventory.GuiContainerCreative.func_147051_a(GuiContainerCreative.java:968)
+ at net.minecraft.client.gui.inventory.GuiContainerCreative.drawGuiContainerBackgroundLayer(GuiContainerCreative.java:795)
+ at net.minecraft.client.gui.inventory.GuiContainer.drawScreen(GuiContainer.java:93)
+ at net.minecraft.client.renderer.InventoryEffectRenderer.drawScreen(InventoryEffectRenderer.java:44)
+ at net.minecraft.client.gui.inventory.GuiContainerCreative.drawScreen(GuiContainerCreative.java:673)
+
+-- Screen render details --
+Details:
+ Screen name: net.minecraft.client.gui.inventory.GuiContainerCreative
+ Mouse location: Scaled: (331, 20). Absolute: (1325, 947)
+ Screen size: Scaled: (480, 257). Absolute: (1920, 1028). Scale factor of 4
+
+-- Affected level --
+Details:
+ Level name: MpServer
+ All players: 1 total; [EntityClientPlayerMP['Draknyte1'/349, l='MpServer', x=-34.96, y=74.62, z=259.88]]
+ Chunk stats: MultiplayerChunkCache: 410, 410
+ Level seed: 0
+ Level generator: ID 00 - default, ver 1. Features enabled: false
+ Level generator options:
+ Level spawn location: World: (-44,64,256), Chunk: (at 4,4,0 in -3,16; contains blocks -48,0,256 to -33,255,271), Region: (-1,0; contains chunks -32,0 to -1,31, blocks -512,0,0 to -1,255,511)
+ Level time: 785 game time, 785 day time
+ Level dimension: 0
+ Level storage version: 0x00000 - Unknown?
+ Level weather: Rain time: 0 (now: false), thunder time: 0 (now: false)
+ Level game mode: Game mode: creative (ID 1). Hardcore: false. Cheats: false
+ Forced entities: 144 total; [EntityChicken['Chicken'/265, l='MpServer', x=25.47, y=95.00, z=218.34], EntityChicken['Chicken'/266, l='MpServer', x=17.78, y=98.00, z=211.28], EntityChicken['Chicken'/267, l='MpServer', x=23.72, y=101.20, z=218.52], EntityChicken['Chicken'/268, l='MpServer', x=21.78, y=96.00, z=220.19], EntityChicken['Chicken'/269, l='MpServer', x=21.50, y=96.00, z=221.50], EntityChicken['Chicken'/270, l='MpServer', x=19.50, y=96.00, z=219.50], EntityZombie['Zombie'/271, l='MpServer', x=28.92, y=33.00, z=233.55], EntityZombie['Zombie'/272, l='MpServer', x=23.06, y=34.00, z=240.41], EntitySkeleton['Skeleton'/273, l='MpServer', x=16.53, y=16.00, z=268.31], EntityZombie['Zombie'/274, l='MpServer', x=28.34, y=47.00, z=269.94], EntitySkeleton['Skeleton'/275, l='MpServer', x=24.56, y=46.00, z=277.09], EntitySkeleton['Skeleton'/276, l='MpServer', x=26.06, y=46.00, z=278.53], EntityCreeper['Creeper'/277, l='MpServer', x=14.62, y=14.00, z=300.00], EntityBat['Bat'/287, l='MpServer', x=45.74, y=43.00, z=221.83], EntitySkeleton['Skeleton'/288, l='MpServer', x=40.36, y=15.00, z=232.28], EntitySkeleton['Skeleton'/289, l='MpServer', x=39.44, y=15.00, z=235.01], EntitySkeleton['Skeleton'/290, l='MpServer', x=37.50, y=15.00, z=237.50], EntitySkeleton['Skeleton'/292, l='MpServer', x=39.50, y=17.00, z=243.09], EntityHorse['Horse'/55, l='MpServer', x=-113.00, y=64.00, z=239.47], EntitySpider['Spider'/72, l='MpServer', x=-96.90, y=12.00, z=204.10], EntityHorse['Horse'/73, l='MpServer', x=-102.72, y=68.92, z=237.24], EntityHorse['Horse'/75, l='MpServer', x=-111.00, y=67.00, z=242.13], EntityHorse['Horse'/76, l='MpServer', x=-107.37, y=67.00, z=242.63], EntityHorse['Horse'/77, l='MpServer', x=-109.50, y=69.00, z=246.50], EntityZombie['Zombie'/78, l='MpServer', x=-96.13, y=26.00, z=272.63], EntitySkeleton['Skeleton'/79, l='MpServer', x=-104.50, y=43.00, z=301.50], EntityBat['Bat'/82, l='MpServer', x=-94.23, y=25.14, z=313.12], EntityBat['Bat'/83, l='MpServer', x=-103.65, y=16.88, z=322.36], EntityBat['Bat'/84, l='MpServer', x=-104.75, y=20.10, z=331.47], EntitySkeleton['Skeleton'/85, l='MpServer', x=-107.69, y=17.00, z=327.63], EntityClientPlayerMP['Draknyte1'/349, l='MpServer', x=-34.96, y=74.62, z=259.88], EntitySpider['Spider'/99, l='MpServer', x=-95.72, y=12.00, z=212.25], EntityChicken['Chicken'/100, l='MpServer', x=-85.41, y=62.23, z=220.94], EntityChicken['Chicken'/101, l='MpServer', x=-87.14, y=64.94, z=227.60], EntityChicken['Chicken'/102, l='MpServer', x=-87.38, y=67.00, z=225.63], EntityChicken['Chicken'/103, l='MpServer', x=-90.66, y=66.00, z=226.47], EntityZombie['Zombie'/104, l='MpServer', x=-92.84, y=27.00, z=269.16], EntityZombie['Zombie'/105, l='MpServer', x=-91.66, y=26.00, z=269.16], EntityHorse['Horse'/106, l='MpServer', x=-80.87, y=74.00, z=262.13], EntityHorse['Horse'/107, l='MpServer', x=-82.87, y=74.00, z=260.13], EntityHorse['Horse'/108, l='MpServer', x=-82.00, y=74.00, z=268.13], EntityZombie['Zombie'/109, l='MpServer', x=-93.38, y=26.00, z=273.69], EntityPig['Pig'/110, l='MpServer', x=-90.06, y=68.00, z=278.75], EntityPig['Pig'/111, l='MpServer', x=-89.05, y=69.00, z=281.43], EntityPig['Pig'/112, l='MpServer', x=-91.50, y=67.00, z=283.50], EntityPig['Pig'/113, l='MpServer', x=-89.47, y=70.00, z=285.69], EntitySheep['Sheep'/114, l='MpServer', x=-88.13, y=69.00, z=278.91], EntitySheep['Sheep'/115, l='MpServer', x=-88.50, y=70.00, z=282.53], EntitySheep['Sheep'/116, l='MpServer', x=-91.28, y=68.00, z=278.88], EntitySheep['Sheep'/117, l='MpServer', x=-90.66, y=69.00, z=285.91], EntityHorse['Horse'/118, l='MpServer', x=-84.37, y=71.00, z=275.53], EntityHorse['Horse'/119, l='MpServer', x=-87.03, y=72.00, z=274.00], EntityChicken['Chicken'/124, l='MpServer', x=-74.24, y=69.00, z=215.98], EntityChicken['Chicken'/125, l='MpServer', x=-74.53, y=67.00, z=220.79], EntityZombie['Zombie'/126, l='MpServer', x=-73.50, y=36.00, z=234.50], EntityChicken['Chicken'/127, l='MpServer', x=-69.50, y=75.00, z=228.50], EntityChicken['Chicken'/128, l='MpServer', x=-64.47, y=72.00, z=228.47], EntityBat['Bat'/135, l='MpServer', x=-61.74, y=36.47, z=182.26], EntityBat['Bat'/136, l='MpServer', x=-62.52, y=29.04, z=207.84], EntityCreeper['Creeper'/137, l='MpServer', x=-55.50, y=19.00, z=252.50], EntityZombie['Zombie'/138, l='MpServer', x=-54.56, y=17.00, z=260.56], EntityZombie['Zombie'/139, l='MpServer', x=-61.50, y=17.00, z=262.50], EntityEnderman['Enderman'/140, l='MpServer', x=-51.44, y=17.00, z=258.09], EntityHorse['Horse'/141, l='MpServer', x=-53.06, y=67.00, z=264.41], EntityHorse['Horse'/142, l='MpServer', x=-55.95, y=69.81, z=266.37], EntityHorse['Horse'/143, l='MpServer', x=-52.78, y=70.00, z=276.16], EntityHorse['Horse'/144, l='MpServer', x=-51.37, y=70.00, z=274.38], EntityZombie['Zombie'/145, l='MpServer', x=-59.22, y=27.00, z=304.84], EntityBat['Bat'/146, l='MpServer', x=-50.41, y=29.00, z=302.06], EntityChicken['Chicken'/153, l='MpServer', x=-41.56, y=72.00, z=190.53], EntityChicken['Chicken'/154, l='MpServer', x=-34.65, y=75.00, z=196.79], EntityChicken['Chicken'/155, l='MpServer', x=-33.94, y=75.00, z=197.31], EntityChicken['Chicken'/156, l='MpServer', x=-36.16, y=74.00, z=197.63], EntityBat['Bat'/157, l='MpServer', x=-43.49, y=16.11, z=243.41], EntityZombie['Zombie'/158, l='MpServer', x=-33.50, y=32.00, z=225.50], EntityZombie['Zombie'/159, l='MpServer', x=-43.50, y=21.00, z=240.44], EntityZombie['Zombie'/160, l='MpServer', x=-36.78, y=21.00, z=241.84], EntitySpider['Spider'/161, l='MpServer', x=-38.47, y=21.00, z=240.72], EntityBat['Bat'/162, l='MpServer', x=-31.05, y=20.06, z=242.67], EntityChicken['Chicken'/163, l='MpServer', x=-35.38, y=71.00, z=242.56], EntityHorse['Horse'/164, l='MpServer', x=-43.91, y=67.00, z=276.50], EntityZombie['Zombie'/171, l='MpServer', x=-30.50, y=61.00, z=200.50], EntityZombie['Zombie'/172, l='MpServer', x=-28.50, y=61.00, z=200.50], EntityBat['Bat'/173, l='MpServer', x=-19.25, y=44.10, z=222.66], EntityZombie['Zombie'/174, l='MpServer', x=-22.50, y=42.00, z=237.50], EntityChicken['Chicken'/175, l='MpServer', x=-25.53, y=66.00, z=231.56], EntityChicken['Chicken'/176, l='MpServer', x=-27.19, y=65.00, z=235.19], EntityChicken['Chicken'/177, l='MpServer', x=-24.47, y=69.00, z=248.38], EntityCreeper['Creeper'/178, l='MpServer', x=-25.53, y=40.00, z=273.22], EntityCreeper['Creeper'/179, l='MpServer', x=-23.58, y=41.00, z=276.58], EntityCreeper['Creeper'/180, l='MpServer', x=-23.50, y=41.00, z=277.50], EntityCreeper['Creeper'/184, l='MpServer', x=-14.50, y=66.00, z=195.94], EntityCreeper['Creeper'/185, l='MpServer', x=-13.50, y=66.00, z=200.50], EntityZombie['Zombie'/186, l='MpServer', x=-14.53, y=67.00, z=205.16], EntityZombie['Zombie'/187, l='MpServer', x=-9.57, y=66.47, z=202.62], EntityZombie['Zombie'/188, l='MpServer', x=-7.50, y=69.00, z=206.97], EntityCreeper['Creeper'/189, l='MpServer', x=-9.34, y=47.00, z=237.03], EntityCreeper['Creeper'/190, l='MpServer', x=-0.34, y=46.00, z=234.97], EntityBat['Bat'/191, l='MpServer', x=-5.47, y=38.06, z=220.08], EntitySkeleton['Skeleton'/192, l='MpServer', x=-10.41, y=18.00, z=245.94], EntityZombie['Zombie'/193, l='MpServer', x=-8.92, y=21.02, z=253.93], EntityZombie['Zombie'/194, l='MpServer', x=-6.31, y=23.00, z=250.31], EntityZombie['Zombie'/195, l='MpServer', x=-8.92, y=22.70, z=253.26], EntityBat['Bat'/196, l='MpServer', x=-7.72, y=28.10, z=258.94], EntityBat['Bat'/197, l='MpServer', x=0.03, y=26.82, z=261.40], EntityBat['Bat'/198, l='MpServer', x=2.67, y=30.24, z=259.10], EntityBat['Bat'/199, l='MpServer', x=-7.04, y=25.35, z=287.64], EntitySpider['Spider'/200, l='MpServer', x=-6.50, y=25.00, z=290.50], EntitySkeleton['Skeleton'/201, l='MpServer', x=-8.50, y=25.00, z=291.50], EntityZombie['Zombie'/202, l='MpServer', x=-3.32, y=43.00, z=296.92], EntitySquid['Squid'/203, l='MpServer', x=-11.13, y=53.27, z=291.44], EntitySquid['Squid'/204, l='MpServer', x=-4.08, y=52.47, z=293.39], EntityCreeper['Creeper'/205, l='MpServer', x=-13.00, y=25.00, z=318.47], EntitySkeleton['Skeleton'/206, l='MpServer', x=-7.50, y=33.00, z=315.16], EntitySquid['Squid'/207, l='MpServer', x=-8.87, y=59.83, z=318.51], EntitySquid['Squid'/208, l='MpServer', x=-5.99, y=62.05, z=310.99], EntitySquid['Squid'/209, l='MpServer', x=-8.03, y=57.38, z=313.18], EntitySquid['Squid'/210, l='MpServer', x=-15.07, y=55.20, z=305.97], EntitySquid['Squid'/211, l='MpServer', x=-1.08, y=56.13, z=310.93], EntitySquid['Squid'/212, l='MpServer', x=-4.71, y=58.25, z=316.79], EntitySquid['Squid'/213, l='MpServer', x=-6.43, y=57.24, z=311.12], EntitySquid['Squid'/214, l='MpServer', x=-11.17, y=57.37, z=305.61], EntitySquid['Squid'/215, l='MpServer', x=1.83, y=55.27, z=299.43], EntitySquid['Squid'/216, l='MpServer', x=-9.46, y=61.13, z=305.63], EntityZombie['Zombie'/217, l='MpServer', x=-6.50, y=44.00, z=321.50], EntityChicken['Chicken'/232, l='MpServer', x=12.59, y=97.00, z=209.66], EntityChicken['Chicken'/233, l='MpServer', x=15.59, y=96.00, z=221.44], EntitySpider['Spider'/234, l='MpServer', x=4.34, y=18.00, z=250.50], EntitySkeleton['Skeleton'/235, l='MpServer', x=5.50, y=50.00, z=255.50], EntityCreeper['Creeper'/236, l='MpServer', x=15.01, y=55.00, z=269.44], EntityBat['Bat'/237, l='MpServer', x=12.94, y=25.78, z=284.62], EntitySquid['Squid'/238, l='MpServer', x=7.35, y=60.35, z=302.12], EntitySquid['Squid'/239, l='MpServer', x=-2.28, y=57.05, z=306.83], EntitySquid['Squid'/240, l='MpServer', x=11.41, y=61.11, z=306.32], EntitySquid['Squid'/241, l='MpServer', x=9.06, y=55.36, z=314.52], EntitySquid['Squid'/242, l='MpServer', x=8.17, y=56.11, z=305.50], EntitySquid['Squid'/243, l='MpServer', x=9.01, y=59.96, z=311.82], EntitySquid['Squid'/244, l='MpServer', x=6.70, y=53.27, z=313.48], EntitySquid['Squid'/245, l='MpServer', x=1.88, y=53.02, z=314.30], EntitySquid['Squid'/246, l='MpServer', x=3.00, y=54.04, z=312.15], EntitySquid['Squid'/247, l='MpServer', x=6.31, y=55.23, z=304.91], EntityZombie['Zombie'/248, l='MpServer', x=3.52, y=33.00, z=320.97], EntitySquid['Squid'/251, l='MpServer', x=8.47, y=50.00, z=321.47], EntitySquid['Squid'/252, l='MpServer', x=5.85, y=61.30, z=321.65]]
+ Retry entities: 0 total; []
+ Server brand: fml,forge
+ Server type: Integrated singleplayer server
+Stacktrace:
+ at net.minecraft.client.multiplayer.WorldClient.addWorldInfoToCrashReport(WorldClient.java:415)
+ at net.minecraft.client.Minecraft.addGraphicsAndWorldToCrashReport(Minecraft.java:2566)
+ at net.minecraft.client.Minecraft.run(Minecraft.java:984)
+ at net.minecraft.client.main.Main.main(Main.java:164)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+ at java.lang.reflect.Method.invoke(Unknown Source)
+ at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)
+ at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
+ at net.minecraftforge.gradle.GradleStartCommon.launch(Unknown Source)
+ at GradleStart.main(Unknown Source)
+
+-- System Details --
+Details:
+ Minecraft Version: 1.7.10
+ Operating System: Windows 7 (amd64) version 6.1
+ Java Version: 1.8.0_60, Oracle Corporation
+ Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
+ Memory: 92326080 bytes (88 MB) / 732954624 bytes (699 MB) up to 3804758016 bytes (3628 MB)
+ JVM Flags: 0 total;
+ AABB Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
+ IntCache: cache: 1, tcache: 1, allocated: 12, tallocated: 94
+ FML: MCP v9.05 FML v7.10.99.99 Minecraft Forge 10.13.4.1448 5 mods loaded, 5 mods active
+ States: 'U' = Unloaded 'L' = Loaded 'C' = Constructed 'H' = Pre-initialized 'I' = Initialized 'J' = Post-initialized 'A' = Available 'D' = Disabled 'E' = Errored
+ UCHIJAAAA mcp{9.05} [Minecraft Coder Pack] (minecraft.jar)
+ UCHIJAAAA FML{7.10.99.99} [Forge Mod Loader] (forgeSrc-1.7.10-10.13.4.1448-1.7.10.jar)
+ UCHIJAAAA Forge{10.13.4.1448} [Minecraft Forge] (forgeSrc-1.7.10-10.13.4.1448-1.7.10.jar)
+ UCHIJAAAA CodeChickenCore{1.0.4.29} [CodeChicken Core] (minecraft.jar)
+ UCHIJAAAA miscutils{0.3.1.0} [miscutils] (bin)
+ GL info: ' Vendor: 'NVIDIA Corporation' Version: '4.5.0 NVIDIA 355.82' Renderer: 'GeForce GTX 770/PCIe/SSE2'
+ Launched Version: 1.7.10
+ LWJGL: 2.9.1
+ OpenGL: GeForce GTX 770/PCIe/SSE2 GL version 4.5.0 NVIDIA 355.82, NVIDIA Corporation
+ GL Caps: Using GL 1.3 multitexturing.
+Using framebuffer objects because OpenGL 3.0 is supported and separate blending is supported.
+Anisotropic filtering is supported and maximum anisotropy is 16.
+Shaders are available because OpenGL 2.1 is supported.
+
+ Is Modded: Definitely; Client brand changed to 'fml,forge'
+ Type: Client (map_client.txt)
+ Resource Packs: []
+ Current Language: English (US)
+ Profiler Position: N/A (disabled)
+ Vec3 Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
+ Anisotropic Filtering: Off (1) \ No newline at end of file
diff --git a/eula.txt b/eula.txt
new file mode 100644
index 0000000000..c9dfa9876c
--- /dev/null
+++ b/eula.txt
@@ -0,0 +1,3 @@
+#By changing the setting below to TRUE you are indicating your agreement to our EULA (https://account.mojang.com/documents/minecraft_eula).
+#Tue Aug 25 01:46:37 AEST 2015
+eula=true
diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 0000000000..b761216703
--- /dev/null
+++ b/gradle/wrapper/gradle-wrapper.jar
Binary files differ
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 0000000000..678d9d8de3
--- /dev/null
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,6 @@
+#Wed Jul 02 15:54:47 CDT 2014
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.0-bin.zip
diff --git a/gradlew b/gradlew
new file mode 100644
index 0000000000..91a7e269e1
--- /dev/null
+++ b/gradlew
@@ -0,0 +1,164 @@
+#!/usr/bin/env bash
+
+##############################################################################
+##
+## Gradle start up script for UN*X
+##
+##############################################################################
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS=""
+
+APP_NAME="Gradle"
+APP_BASE_NAME=`basename "$0"`
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD="maximum"
+
+warn ( ) {
+ echo "$*"
+}
+
+die ( ) {
+ echo
+ echo "$*"
+ echo
+ exit 1
+}
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+case "`uname`" in
+ CYGWIN* )
+ cygwin=true
+ ;;
+ Darwin* )
+ darwin=true
+ ;;
+ MINGW* )
+ msys=true
+ ;;
+esac
+
+# For Cygwin, ensure paths are in UNIX format before anything is touched.
+if $cygwin ; then
+ [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
+fi
+
+# Attempt to set APP_HOME
+# Resolve links: $0 may be a link
+PRG="$0"
+# Need this for relative symlinks.
+while [ -h "$PRG" ] ; do
+ ls=`ls -ld "$PRG"`
+ link=`expr "$ls" : '.*-> \(.*\)$'`
+ if expr "$link" : '/.*' > /dev/null; then
+ PRG="$link"
+ else
+ PRG=`dirname "$PRG"`"/$link"
+ fi
+done
+SAVED="`pwd`"
+cd "`dirname \"$PRG\"`/" >&-
+APP_HOME="`pwd -P`"
+cd "$SAVED" >&-
+
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
+# Determine the Java command to use to start the JVM.
+if [ -n "$JAVA_HOME" ] ; then
+ if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+ # IBM's JDK on AIX uses strange locations for the executables
+ JAVACMD="$JAVA_HOME/jre/sh/java"
+ else
+ JAVACMD="$JAVA_HOME/bin/java"
+ fi
+ if [ ! -x "$JAVACMD" ] ; then
+ die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+ fi
+else
+ JAVACMD="java"
+ which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+fi
+
+# Increase the maximum file descriptors if we can.
+if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
+ MAX_FD_LIMIT=`ulimit -H -n`
+ if [ $? -eq 0 ] ; then
+ if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
+ MAX_FD="$MAX_FD_LIMIT"
+ fi
+ ulimit -n $MAX_FD
+ if [ $? -ne 0 ] ; then
+ warn "Could not set maximum file descriptor limit: $MAX_FD"
+ fi
+ else
+ warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
+ fi
+fi
+
+# For Darwin, add options to specify how the application appears in the dock
+if $darwin; then
+ GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
+fi
+
+# For Cygwin, switch paths to Windows format before running java
+if $cygwin ; then
+ APP_HOME=`cygpath --path --mixed "$APP_HOME"`
+ CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
+
+ # We build the pattern for arguments to be converted via cygpath
+ ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
+ SEP=""
+ for dir in $ROOTDIRSRAW ; do
+ ROOTDIRS="$ROOTDIRS$SEP$dir"
+ SEP="|"
+ done
+ OURCYGPATTERN="(^($ROOTDIRS))"
+ # Add a user-defined pattern to the cygpath arguments
+ if [ "$GRADLE_CYGPATTERN" != "" ] ; then
+ OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
+ fi
+ # Now convert the arguments - kludge to limit ourselves to /bin/sh
+ i=0
+ for arg in "$@" ; do
+ CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
+ CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
+
+ if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
+ eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
+ else
+ eval `echo args$i`="\"$arg\""
+ fi
+ i=$((i+1))
+ done
+ case $i in
+ (0) set -- ;;
+ (1) set -- "$args0" ;;
+ (2) set -- "$args0" "$args1" ;;
+ (3) set -- "$args0" "$args1" "$args2" ;;
+ (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+ (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+ (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+ (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
+ (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
+ (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+ esac
+fi
+
+# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
+function splitJvmOpts() {
+ JVM_OPTS=("$@")
+}
+eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
+JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
+
+exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"
diff --git a/gradlew.bat b/gradlew.bat
new file mode 100644
index 0000000000..8a0b282aa6
--- /dev/null
+++ b/gradlew.bat
@@ -0,0 +1,90 @@
+@if "%DEBUG%" == "" @echo off
+@rem ##########################################################################
+@rem
+@rem Gradle startup script for Windows
+@rem
+@rem ##########################################################################
+
+@rem Set local scope for the variables with windows NT shell
+if "%OS%"=="Windows_NT" setlocal
+
+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+set DEFAULT_JVM_OPTS=
+
+set DIRNAME=%~dp0
+if "%DIRNAME%" == "" set DIRNAME=.
+set APP_BASE_NAME=%~n0
+set APP_HOME=%DIRNAME%
+
+@rem Find java.exe
+if defined JAVA_HOME goto findJavaFromJavaHome
+
+set JAVA_EXE=java.exe
+%JAVA_EXE% -version >NUL 2>&1
+if "%ERRORLEVEL%" == "0" goto init
+
+echo.
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:findJavaFromJavaHome
+set JAVA_HOME=%JAVA_HOME:"=%
+set JAVA_EXE=%JAVA_HOME%/bin/java.exe
+
+if exist "%JAVA_EXE%" goto init
+
+echo.
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:init
+@rem Get command-line arguments, handling Windowz variants
+
+if not "%OS%" == "Windows_NT" goto win9xME_args
+if "%@eval[2+2]" == "4" goto 4NT_args
+
+:win9xME_args
+@rem Slurp the command line arguments.
+set CMD_LINE_ARGS=
+set _SKIP=2
+
+:win9xME_args_slurp
+if "x%~1" == "x" goto execute
+
+set CMD_LINE_ARGS=%*
+goto execute
+
+:4NT_args
+@rem Get arguments from the 4NT Shell from JP Software
+set CMD_LINE_ARGS=%$
+
+:execute
+@rem Setup the command line
+
+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
+
+@rem Execute Gradle
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
+
+:end
+@rem End local scope for the variables with windows NT shell
+if "%ERRORLEVEL%"=="0" goto mainEnd
+
+:fail
+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
+rem the _cmd.exe /c_ return code!
+if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
+exit /b 1
+
+:mainEnd
+if "%OS%"=="Windows_NT" endlocal
+
+:omega
diff --git a/hs_err_pid16588.log b/hs_err_pid16588.log
new file mode 100644
index 0000000000..dfda47e5df
--- /dev/null
+++ b/hs_err_pid16588.log
@@ -0,0 +1,389 @@
+#
+# There is insufficient memory for the Java Runtime Environment to continue.
+# Native memory allocation (malloc) failed to allocate 1062016 bytes for Chunk::new
+# Possible reasons:
+# The system is out of physical RAM or swap space
+# In 32 bit mode, the process size limit was hit
+# Possible solutions:
+# Reduce memory load on the system
+# Increase physical memory or swap space
+# Check if swap backing store is full
+# Use 64 bit Java on a 64 bit OS
+# Decrease Java heap size (-Xmx/-Xms)
+# Decrease number of Java threads
+# Decrease Java thread stack sizes (-Xss)
+# Set larger code cache with -XX:ReservedCodeCacheSize=
+# This output file may be truncated or incomplete.
+#
+# Out of Memory Error (allocation.cpp:390), pid=16588, tid=6712
+#
+# JRE version: Java(TM) SE Runtime Environment (8.0_60-b27) (build 1.8.0_60-b27)
+# Java VM: Java HotSpot(TM) 64-Bit Server VM (25.60-b23 mixed mode windows-amd64 compressed oops)
+# Failed to write core dump. Minidumps are not enabled by default on client versions of Windows
+#
+
+--------------- T H R E A D ---------------
+
+Current thread (0x000000001da60800): JavaThread "C2 CompilerThread1" daemon [_thread_in_native, id=6712, stack(0x000000001f400000,0x000000001f500000)]
+
+Stack: [0x000000001f400000,0x000000001f500000]
+[error occurred during error reporting (printing stack bounds), id 0xc0000005]
+
+Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
+
+
+Current CompileTask:
+C2: 77736 10244 % ! 4 net.minecraft.world.SpawnerAnimals::findChunksForSpawning @ 521 (931 bytes)
+
+
+--------------- P R O C E S S ---------------
+
+Java Threads: ( => current thread )
+ 0x000000001dd30000 JavaThread "File IO Thread" [_thread_blocked, id=16376, stack(0x0000000029a30000,0x0000000029b30000)]
+ 0x000000001dafe800 JavaThread "pool-2-thread-1" [_thread_blocked, id=14848, stack(0x0000000035af0000,0x0000000035bf0000)]
+ 0x000000001dafd800 JavaThread "Chunk I/O Executor Thread-1" daemon [_thread_blocked, id=17380, stack(0x0000000035900000,0x0000000035a00000)]
+ 0x000000001dafd000 JavaThread "Netty IO #1" daemon [_thread_in_native, id=12092, stack(0x0000000035660000,0x0000000035760000)]
+ 0x000000001dafc000 JavaThread "Netty Client IO #0" daemon [_thread_in_native, id=13772, stack(0x000000002ed90000,0x000000002ee90000)]
+ 0x000000001dafb800 JavaThread "Netty IO #0" daemon [_thread_in_native, id=16436, stack(0x0000000034a20000,0x0000000034b20000)]
+ 0x000000001daf5800 JavaThread "Server thread" [_thread_blocked, id=15816, stack(0x0000000021f70000,0x0000000022070000)]
+ 0x000000001daf1800 JavaThread "Snooper Timer" daemon [_thread_blocked, id=13892, stack(0x000000002df90000,0x000000002e090000)]
+ 0x000000001dafa800 JavaThread "Thread-13" [_thread_blocked, id=12916, stack(0x000000002e910000,0x000000002ea10000)]
+ 0x000000001daf9000 JavaThread "Thread-12" [_thread_blocked, id=396, stack(0x00000000357b0000,0x00000000358b0000)]
+ 0x000000001daf6000 JavaThread "LWJGL Timer" daemon [_thread_blocked, id=16976, stack(0x000000002fda0000,0x000000002fea0000)]
+ 0x000000001daf3000 JavaThread "Timer hack thread" daemon [_thread_blocked, id=13736, stack(0x0000000029c10000,0x0000000029d10000)]
+ 0x000000001daf4800 JavaThread "Snooper Timer" daemon [_thread_blocked, id=5260, stack(0x00000000294b0000,0x00000000295b0000)]
+ 0x000000001daf4000 JavaThread "AWT-Windows" daemon [_thread_in_native, id=2424, stack(0x0000000023cb0000,0x0000000023db0000)]
+ 0x000000001daf2800 JavaThread "Java2D Disposer" daemon [_thread_blocked, id=13004, stack(0x0000000021690000,0x0000000021790000)]
+ 0x000000001daf1000 JavaThread "Service Thread" daemon [_thread_blocked, id=15864, stack(0x000000001f9e0000,0x000000001fae0000)]
+ 0x000000001da71800 JavaThread "C1 CompilerThread3" daemon [_thread_blocked, id=14940, stack(0x000000001f7a0000,0x000000001f8a0000)]
+ 0x000000001da68800 JavaThread "C2 CompilerThread2" daemon [_thread_blocked, id=15796, stack(0x000000001f630000,0x000000001f730000)]
+=>0x000000001da60800 JavaThread "C2 CompilerThread1" daemon [_thread_in_native, id=6712, stack(0x000000001f400000,0x000000001f500000)]
+ 0x000000001da57800 JavaThread "C2 CompilerThread0" daemon [_thread_blocked, id=10160, stack(0x000000001ed70000,0x000000001ee70000)]
+ 0x000000001da53800 JavaThread "Attach Listener" daemon [_thread_blocked, id=14924, stack(0x000000001f1b0000,0x000000001f2b0000)]
+ 0x000000001da52000 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=16940, stack(0x000000001f020000,0x000000001f120000)]
+ 0x000000001c99f000 JavaThread "Finalizer" daemon [_thread_blocked, id=2416, stack(0x000000001eed0000,0x000000001efd0000)]
+ 0x000000001c998000 JavaThread "Reference Handler" daemon [_thread_blocked, id=12140, stack(0x000000001ec20000,0x000000001ed20000)]
+ 0x00000000023aa800 JavaThread "Client thread" [_thread_in_native, id=10392, stack(0x00000000024e0000,0x00000000025e0000)]
+
+Other Threads:
+ 0x000000001da03000 VMThread [stack: 0x000000001ea30000,0x000000001eb30000] [id=13744]
+ 0x000000001db1d000 WatcherThread [stack: 0x000000001f2c0000,0x000000001f3c0000] [id=17324]
+
+VM state:not at safepoint (normal execution)
+
+VM Mutex/Monitor currently owned by a thread: None
+
+Heap:
+ PSYoungGen total 860160K, used 495055K [0x000000076af80000, 0x00000007a5500000, 0x00000007c0000000)
+ eden space 807424K, 61% used [0x000000076af80000,0x00000007892f3f98,0x000000079c400000)
+ from space 52736K, 0% used [0x00000007a0580000,0x00000007a0580000,0x00000007a3900000)
+ to space 67072K, 0% used [0x000000079c400000,0x000000079c400000,0x00000007a0580000)
+ ParOldGen total 305664K, used 159763K [0x00000006c0e00000, 0x00000006d3880000, 0x000000076af80000)
+ object space 305664K, 52% used [0x00000006c0e00000,0x00000006caa04d50,0x00000006d3880000)
+ Metaspace used 43770K, capacity 44197K, committed 44544K, reserved 1089536K
+ class space used 5120K, capacity 5257K, committed 5376K, reserved 1048576K
+
+Card table byte_map: [0x0000000011c70000,0x0000000012470000] byte_map_base: 0x000000000e669000
+
+Marking Bits: (ParMarkBitMap*) 0x0000000058fca5b0
+ Begin Bits: [0x0000000013820000, 0x00000000177e8000)
+ End Bits: [0x00000000177e8000, 0x000000001b7b0000)
+
+Polling page: 0x0000000000360000
+
+CodeCache: size=245760Kb used=32465Kb max_used=32516Kb free=213294Kb
+ bounds [0x00000000028b0000, 0x00000000048c0000, 0x00000000118b0000]
+ total_blobs=8196 nmethods=7307 adapters=797
+ compilation: enabled
+
+Compilation events (10 events):
+Event: 77.604 Thread 0x000000001da60800 10241 4 net.minecraft.entity.ai.attributes.ModifiableAttributeInstance::<init> (85 bytes)
+Event: 77.605 Thread 0x000000001da71800 nmethod 10240 0x0000000003ce0650 code [0x0000000003ce0920, 0x0000000003ce1ff8]
+Event: 77.608 Thread 0x000000001da60800 nmethod 10241 0x0000000003a89ed0 code [0x0000000003a8a060, 0x0000000003a8a508]
+Event: 77.654 Thread 0x000000001da57800 10242 4 net.minecraft.block.Block::isSideSolid (192 bytes)
+Event: 77.660 Thread 0x000000001da68800 10243 4 net.minecraft.network.play.server.S19PacketEntityHeadLook::processPacket (9 bytes)
+Event: 77.663 Thread 0x000000001da68800 nmethod 10243 0x0000000003a12750 code [0x0000000003a128e0, 0x0000000003a12b18]
+Event: 77.664 Thread 0x000000001da57800 nmethod 10242 0x0000000003a8a810 code [0x0000000003a8aa00, 0x0000000003a8b368]
+Event: 77.704 Thread 0x000000001da60800 10244 % ! 4 net.minecraft.world.SpawnerAnimals::findChunksForSpawning @ 521 (931 bytes)
+Event: 77.707 Thread 0x000000001da71800 10245 3 net.minecraft.block.BlockDoor::collisionRayTrace (23 bytes)
+Event: 77.707 Thread 0x000000001da71800 nmethod 10245 0x000000000341c650 code [0x000000000341c7e0, 0x000000000341cac8]
+
+GC Heap History (10 events):
+Event: 22.749 GC heap before
+{Heap before GC invocations=16 (full 3):
+ PSYoungGen total 871936K, used 8617K [0x000000076af80000, 0x00000007a3800000, 0x00000007c0000000)
+ eden space 820736K, 1% used [0x000000076af80000,0x000000076b7ea738,0x000000079d100000)
+ from space 51200K, 0% used [0x00000007a0400000,0x00000007a0400000,0x00000007a3600000)
+ to space 52224K, 0% used [0x000000079d100000,0x000000079d100000,0x00000007a0400000)
+ ParOldGen total 160256K, used 91649K [0x00000006c0e00000, 0x00000006caa80000, 0x000000076af80000)
+ object space 160256K, 57% used [0x00000006c0e00000,0x00000006c6780720,0x00000006caa80000)
+ Metaspace used 35852K, capacity 36189K, committed 36608K, reserved 1081344K
+ class space used 4410K, capacity 4503K, committed 4608K, reserved 1048576K
+Event: 22.750 GC heap after
+Heap after GC invocations=16 (full 3):
+ PSYoungGen total 872960K, used 64K [0x000000076af80000, 0x00000007a3900000, 0x00000007c0000000)
+ eden space 820736K, 0% used [0x000000076af80000,0x000000076af80000,0x000000079d100000)
+ from space 52224K, 0% used [0x000000079d100000,0x000000079d110000,0x00000007a0400000)
+ to space 52736K, 0% used [0x00000007a0580000,0x00000007a0580000,0x00000007a3900000)
+ ParOldGen total 160256K, used 91649K [0x00000006c0e00000, 0x00000006caa80000, 0x000000076af80000)
+ object space 160256K, 57% used [0x00000006c0e00000,0x00000006c6780720,0x00000006caa80000)
+ Metaspace used 35852K, capacity 36189K, committed 36608K, reserved 1081344K
+ class space used 4410K, capacity 4503K, committed 4608K, reserved 1048576K
+}
+Event: 22.750 GC heap before
+{Heap before GC invocations=17 (full 4):
+ PSYoungGen total 872960K, used 64K [0x000000076af80000, 0x00000007a3900000, 0x00000007c0000000)
+ eden space 820736K, 0% used [0x000000076af80000,0x000000076af80000,0x000000079d100000)
+ from space 52224K, 0% used [0x000000079d100000,0x000000079d110000,0x00000007a0400000)
+ to space 52736K, 0% used [0x00000007a0580000,0x00000007a0580000,0x00000007a3900000)
+ ParOldGen total 160256K, used 91649K [0x00000006c0e00000, 0x00000006caa80000, 0x000000076af80000)
+ object space 160256K, 57% used [0x00000006c0e00000,0x00000006c6780720,0x00000006caa80000)
+ Metaspace used 35852K, capacity 36189K, committed 36608K, reserved 1081344K
+ class space used 4410K, capacity 4503K, committed 4608K, reserved 1048576K
+Event: 22.800 GC heap after
+Heap after GC invocations=17 (full 4):
+ PSYoungGen total 872960K, used 0K [0x000000076af80000, 0x00000007a3900000, 0x00000007c0000000)
+ eden space 820736K, 0% used [0x000000076af80000,0x000000076af80000,0x000000079d100000)
+ from space 52224K, 0% used [0x000000079d100000,0x000000079d100000,0x00000007a0400000)
+ to space 52736K, 0% used [0x00000007a0580000,0x00000007a0580000,0x00000007a3900000)
+ ParOldGen total 160256K, used 91649K [0x00000006c0e00000, 0x00000006caa80000, 0x000000076af80000)
+ object space 160256K, 57% used [0x00000006c0e00000,0x00000006c6780760,0x00000006caa80000)
+ Metaspace used 35852K, capacity 36189K, committed 36608K, reserved 1081344K
+ class space used 4410K, capacity 4503K, committed 4608K, reserved 1048576K
+}
+Event: 24.742 GC heap before
+{Heap before GC invocations=18 (full 4):
+ PSYoungGen total 872960K, used 637534K [0x000000076af80000, 0x00000007a3900000, 0x00000007c0000000)
+ eden space 820736K, 77% used [0x000000076af80000,0x0000000791e17ba8,0x000000079d100000)
+ from space 52224K, 0% used [0x000000079d100000,0x000000079d100000,0x00000007a0400000)
+ to space 52736K, 0% used [0x00000007a0580000,0x00000007a0580000,0x00000007a3900000)
+ ParOldGen total 160256K, used 91649K [0x00000006c0e00000, 0x00000006caa80000, 0x000000076af80000)
+ object space 160256K, 57% used [0x00000006c0e00000,0x00000006c6780760,0x00000006caa80000)
+ Metaspace used 40972K, capacity 41345K, committed 41856K, reserved 1085440K
+ class space used 4998K, capacity 5123K, committed 5248K, reserved 1048576K
+Event: 24.769 GC heap after
+Heap after GC invocations=18 (full 4):
+ PSYoungGen total 860160K, used 52732K [0x000000076af80000, 0x00000007a5500000, 0x00000007c0000000)
+ eden space 807424K, 0% used [0x000000076af80000,0x000000076af80000,0x000000079c400000)
+ from space 52736K, 99% used [0x00000007a0580000,0x00000007a38ff060,0x00000007a3900000)
+ to space 67072K, 0% used [0x000000079c400000,0x000000079c400000,0x00000007a0580000)
+ ParOldGen total 160256K, used 105549K [0x00000006c0e00000, 0x00000006caa80000, 0x000000076af80000)
+ object space 160256K, 65% used [0x00000006c0e00000,0x00000006c7513458,0x00000006caa80000)
+ Metaspace used 40972K, capacity 41345K, committed 41856K, reserved 1085440K
+ class space used 4998K, capacity 5123K, committed 5248K, reserved 1048576K
+}
+Event: 24.769 GC heap before
+{Heap before GC invocations=19 (full 5):
+ PSYoungGen total 860160K, used 52732K [0x000000076af80000, 0x00000007a5500000, 0x00000007c0000000)
+ eden space 807424K, 0% used [0x000000076af80000,0x000000076af80000,0x000000079c400000)
+ from space 52736K, 99% used [0x00000007a0580000,0x00000007a38ff060,0x00000007a3900000)
+ to space 67072K, 0% used [0x000000079c400000,0x000000079c400000,0x00000007a0580000)
+ ParOldGen total 160256K, used 105549K [0x00000006c0e00000, 0x00000006caa80000, 0x000000076af80000)
+ object space 160256K, 65% used [0x00000006c0e00000,0x00000006c7513458,0x00000006caa80000)
+ Metaspace used 40972K, capacity 41345K, committed 41856K, reserved 1085440K
+ class space used 4998K, capacity 5123K, committed 5248K, reserved 1048576K
+Event: 25.313 GC heap after
+Heap after GC invocations=19 (full 5):
+ PSYoungGen total 860160K, used 0K [0x000000076af80000, 0x00000007a5500000, 0x00000007c0000000)
+ eden space 807424K, 0% used [0x000000076af80000,0x000000076af80000,0x000000079c400000)
+ from space 52736K, 0% used [0x00000007a0580000,0x00000007a0580000,0x00000007a3900000)
+ to space 67072K, 0% used [0x000000079c400000,0x000000079c400000,0x00000007a0580000)
+ ParOldGen total 160256K, used 153024K [0x00000006c0e00000, 0x00000006caa80000, 0x000000076af80000)
+ object space 160256K, 95% used [0x00000006c0e00000,0x00000006ca370240,0x00000006caa80000)
+ Metaspace used 40972K, capacity 41345K, committed 41856K, reserved 1085440K
+ class space used 4998K, capacity 5123K, committed 5248K, reserved 1048576K
+}
+Event: 48.550 GC heap before
+{Heap before GC invocations=20 (full 6):
+ PSYoungGen total 860160K, used 807424K [0x000000076af80000, 0x00000007a5500000, 0x00000007c0000000)
+ eden space 807424K, 100% used [0x000000076af80000,0x000000079c400000,0x000000079c400000)
+ from space 52736K, 0% used [0x00000007a0580000,0x00000007a0580000,0x00000007a3900000)
+ to space 67072K, 0% used [0x000000079c400000,0x000000079c400000,0x00000007a0580000)
+ ParOldGen total 160256K, used 153024K [0x00000006c0e00000, 0x00000006caa80000, 0x000000076af80000)
+ object space 160256K, 95% used [0x00000006c0e00000,0x00000006ca370240,0x00000006caa80000)
+ Metaspace used 43359K, capacity 43737K, committed 44288K, reserved 1087488K
+ class space used 5100K, capacity 5255K, committed 5376K, reserved 1048576K
+Event: 48.879 GC heap after
+Heap after GC invocations=20 (full 6):
+ PSYoungGen total 860160K, used 36534K [0x000000076af80000, 0x00000007a5500000, 0x00000007c0000000)
+ eden space 807424K, 4% used [0x000000076af80000,0x000000076d32d920,0x000000079c400000)
+ from space 52736K, 0% used [0x00000007a0580000,0x00000007a0580000,0x00000007a3900000)
+ to space 67072K, 0% used [0x000000079c400000,0x000000079c400000,0x00000007a0580000)
+ ParOldGen total 305664K, used 159763K [0x00000006c0e00000, 0x00000006d3880000, 0x000000076af80000)
+ object space 305664K, 52% used [0x00000006c0e00000,0x00000006caa04d50,0x00000006d3880000)
+ Metaspace used 43359K, capacity 43737K, committed 44288K, reserved 1087488K
+ class space used 5100K, capacity 5255K, committed 5376K, reserved 1048576K
+}
+
+Deoptimization events (10 events):
+Event: 68.608 Thread 0x00000000023aa800 Uncommon trap: reason=bimorphic action=maybe_recompile pc=0x0000000003debdc0 method=net.minecraft.block.Block.isNormalCube()Z @ 18
+Event: 71.163 Thread 0x00000000023aa800 Uncommon trap: reason=unstable_if action=reinterpret pc=0x0000000003da69c8 method=net.minecraft.client.gui.inventory.GuiContainer.func_146977_a(Lnet/minecraft/inventory/Slot;)V @ 118
+Event: 72.502 Thread 0x000000001daf5800 Uncommon trap: reason=class_check action=maybe_recompile pc=0x0000000003d41e10 method=net.minecraft.world.SpawnerAnimals.findChunksForSpawning(Lnet/minecraft/world/WorldServer;ZZZ)I @ 768
+Event: 72.551 Thread 0x000000001daf5800 Uncommon trap: reason=class_check action=maybe_recompile pc=0x0000000003d41e10 method=net.minecraft.world.SpawnerAnimals.findChunksForSpawning(Lnet/minecraft/world/WorldServer;ZZZ)I @ 768
+Event: 72.553 Thread 0x000000001daf5800 Uncommon trap: reason=unstable_if action=reinterpret pc=0x0000000003c0318c method=net.minecraft.block.Block.isSideSolid(Lnet/minecraft/world/IBlockAccess;IIILnet/minecraftforge/common/util/ForgeDirection;)Z @ 83
+Event: 73.310 Thread 0x000000001daf5800 Uncommon trap: reason=class_check action=maybe_recompile pc=0x0000000003ca7410 method=net.minecraft.entity.EntityLiving.despawnEntity()V @ 145
+Event: 77.340 Thread 0x00000000023aa800 Uncommon trap: reason=unstable_if action=reinterpret pc=0x00000000039a5d04 method=net.minecraft.client.Minecraft.checkGLError(Ljava/lang/String;)V @ 5
+Event: 77.659 Thread 0x000000001daf5800 Uncommon trap: reason=class_check action=maybe_recompile pc=0x0000000003ca7410 method=net.minecraft.entity.EntityLiving.despawnEntity()V @ 145
+Event: 77.659 Thread 0x000000001daf5800 Uncommon trap: reason=unstable_if action=reinterpret pc=0x0000000003cb31ac method=java.util.HashMap.removeNode(ILjava/lang/Object;Ljava/lang/Object;ZZ)Ljava/util/HashMap$Node; @ 133
+Event: 77.659 Thread 0x000000001daf5800 Uncommon trap: reason=class_check action=maybe_recompile pc=0x0000000003ca7410 method=net.minecraft.entity.EntityLiving.despawnEntity()V @ 145
+
+Internal exceptions (10 events):
+Event: 77.580 Thread 0x000000001daf9000 Exception <a 'java/lang/InterruptedException': sleep interrupted> (0x000000076f178d40) thrown at [C:\re\workspace\8-2-build-windows-amd64-cygwin\jdk8u60\4407\hotspot\src\share\vm\prims\jvm.cpp, line 3215]
+Event: 77.598 Thread 0x000000001daf9000 Exception <a 'java/lang/InterruptedException': sleep interrupted> (0x000000076f178f98) thrown at [C:\re\workspace\8-2-build-windows-amd64-cygwin\jdk8u60\4407\hotspot\src\share\vm\prims\jvm.cpp, line 3215]
+Event: 77.612 Thread 0x000000001daf9000 Exception <a 'java/lang/InterruptedException': sleep interrupted> (0x000000076f1791f0) thrown at [C:\re\workspace\8-2-build-windows-amd64-cygwin\jdk8u60\4407\hotspot\src\share\vm\prims\jvm.cpp, line 3215]
+Event: 77.628 Thread 0x000000001daf9000 Exception <a 'java/lang/InterruptedException': sleep interrupted> (0x000000076f179448) thrown at [C:\re\workspace\8-2-build-windows-amd64-cygwin\jdk8u60\4407\hotspot\src\share\vm\prims\jvm.cpp, line 3215]
+Event: 77.644 Thread 0x000000001daf9000 Exception <a 'java/lang/InterruptedException': sleep interrupted> (0x000000076f1796a0) thrown at [C:\re\workspace\8-2-build-windows-amd64-cygwin\jdk8u60\4407\hotspot\src\share\vm\prims\jvm.cpp, line 3215]
+Event: 77.662 Thread 0x000000001daf9000 Exception <a 'java/lang/InterruptedException': sleep interrupted> (0x000000076f1798f8) thrown at [C:\re\workspace\8-2-build-windows-amd64-cygwin\jdk8u60\4407\hotspot\src\share\vm\prims\jvm.cpp, line 3215]
+Event: 77.676 Thread 0x000000001daf9000 Exception <a 'java/lang/InterruptedException': sleep interrupted> (0x000000076f179b50) thrown at [C:\re\workspace\8-2-build-windows-amd64-cygwin\jdk8u60\4407\hotspot\src\share\vm\prims\jvm.cpp, line 3215]
+Event: 77.692 Thread 0x000000001daf9000 Exception <a 'java/lang/InterruptedException': sleep interrupted> (0x000000076f179da8) thrown at [C:\re\workspace\8-2-build-windows-amd64-cygwin\jdk8u60\4407\hotspot\src\share\vm\prims\jvm.cpp, line 3215]
+Event: 77.710 Thread 0x000000001daf9000 Exception <a 'java/lang/InterruptedException': sleep interrupted> (0x000000076f17a000) thrown at [C:\re\workspace\8-2-build-windows-amd64-cygwin\jdk8u60\4407\hotspot\src\share\vm\prims\jvm.cpp, line 3215]
+Event: 77.724 Thread 0x000000001daf9000 Exception <a 'java/lang/InterruptedException': sleep interrupted> (0x000000076f17a258) thrown at [C:\re\workspace\8-2-build-windows-amd64-cygwin\jdk8u60\4407\hotspot\src\share\vm\prims\jvm.cpp, line 3215]
+
+Events (10 events):
+Event: 77.340 Thread 0x00000000023aa800 DEOPT UNPACKING pc=0x00000000028f582a sp=0x00000000025de6a8 mode 2
+Event: 77.659 Thread 0x000000001daf5800 Uncommon trap: trap_request=0xffffffde fr.pc=0x0000000003ca7410
+Event: 77.659 Thread 0x000000001daf5800 DEOPT PACKING pc=0x0000000003ca7410 sp=0x000000002206e740
+Event: 77.659 Thread 0x000000001daf5800 DEOPT UNPACKING pc=0x00000000028f582a sp=0x000000002206e6f0 mode 2
+Event: 77.659 Thread 0x000000001daf5800 Uncommon trap: trap_request=0xffffff65 fr.pc=0x0000000003cb31ac
+Event: 77.659 Thread 0x000000001daf5800 DEOPT PACKING pc=0x0000000003cb31ac sp=0x000000002206e710
+Event: 77.659 Thread 0x000000001daf5800 DEOPT UNPACKING pc=0x00000000028f582a sp=0x000000002206e680 mode 2
+Event: 77.659 Thread 0x000000001daf5800 Uncommon trap: trap_request=0xffffffde fr.pc=0x0000000003ca7410
+Event: 77.659 Thread 0x000000001daf5800 DEOPT PACKING pc=0x0000000003ca7410 sp=0x000000002206e740
+Event: 77.659 Thread 0x000000001daf5800 DEOPT UNPACKING pc=0x00000000028f582a sp=0x000000002206e6f0 mode 2
+
+
+Dynamic libraries:
+0x000000013fc80000 - 0x000000013fcb7000 C:\Program Files\Java\jre1.8.0_60\bin\javaw.exe
+0x0000000076eb0000 - 0x0000000077059000 C:\Windows\SYSTEM32\ntdll.dll
+0x0000000076c90000 - 0x0000000076daf000 C:\Windows\system32\kernel32.dll
+0x000007fefce20000 - 0x000007fefce8c000 C:\Windows\system32\KERNELBASE.dll
+0x000007feff040000 - 0x000007feff11b000 C:\Windows\system32\ADVAPI32.dll
+0x000007fefedd0000 - 0x000007fefee6f000 C:\Windows\system32\msvcrt.dll
+0x000007fefe8d0000 - 0x000007fefe8ef000 C:\Windows\SYSTEM32\sechost.dll
+0x000007fefd200000 - 0x000007fefd32d000 C:\Windows\system32\RPCRT4.dll
+0x0000000076db0000 - 0x0000000076eaa000 C:\Windows\system32\USER32.dll
+0x000007fefd0c0000 - 0x000007fefd127000 C:\Windows\system32\GDI32.dll
+0x000007fefe450000 - 0x000007fefe45e000 C:\Windows\system32\LPK.dll
+0x000007fefd130000 - 0x000007fefd1f9000 C:\Windows\system32\USP10.dll
+0x000007fefb710000 - 0x000007fefb904000 C:\Windows\WinSxS\amd64_microsoft.windows.common-controls_6595b64144ccf1df_6.0.7601.17514_none_fa396087175ac9ac\COMCTL32.dll
+0x000007fefe8f0000 - 0x000007fefe961000 C:\Windows\system32\SHLWAPI.dll
+0x000007fefcb60000 - 0x000007fefcbb7000 C:\Windows\system32\apphelp.dll
+0x00000000628b0000 - 0x00000000628da000 C:\Windows\AppPatch\AppPatch64\EMET64.dll
+0x000007fefbf60000 - 0x000007fefbf71000 C:\Windows\system32\WTSAPI32.dll
+0x000007fefd350000 - 0x000007fefd37e000 C:\Windows\system32\IMM32.DLL
+0x000007fefd380000 - 0x000007fefd489000 C:\Windows\system32\MSCTF.dll
+0x000007fefcb30000 - 0x000007fefcb55000 C:\Windows\system32\SspiCli.dll
+0x00000000626c0000 - 0x0000000062792000 C:\Program Files\Java\jre1.8.0_60\bin\msvcr100.dll
+0x00000000587c0000 - 0x0000000059049000 C:\Program Files\Java\jre1.8.0_60\bin\server\jvm.dll
+0x000007fef8270000 - 0x000007fef8279000 C:\Windows\system32\WSOCK32.dll
+0x000007fefed80000 - 0x000007fefedcd000 C:\Windows\system32\WS2_32.dll
+0x000007fefee70000 - 0x000007fefee78000 C:\Windows\system32\NSI.dll
+0x000007fefa7d0000 - 0x000007fefa80b000 C:\Windows\system32\WINMM.dll
+0x000007fefbdd0000 - 0x000007fefbddc000 C:\Windows\system32\VERSION.dll
+0x0000000077080000 - 0x0000000077087000 C:\Windows\system32\PSAPI.DLL
+0x0000000072060000 - 0x000000007206f000 C:\Program Files\Java\jre1.8.0_60\bin\verify.dll
+0x000000006f190000 - 0x000000006f1b9000 C:\Program Files\Java\jre1.8.0_60\bin\java.dll
+0x000000006f030000 - 0x000000006f046000 C:\Program Files\Java\jre1.8.0_60\bin\zip.dll
+0x000007fefd6c0000 - 0x000007fefe448000 C:\Windows\system32\SHELL32.dll
+0x000007fefeb70000 - 0x000007fefed73000 C:\Windows\system32\ole32.dll
+0x000007fefcc90000 - 0x000007fefcc9f000 C:\Windows\system32\profapi.dll
+0x00000000640f0000 - 0x00000000640fd000 C:\Program Files\Java\jre1.8.0_60\bin\management.dll
+0x000000006ecd0000 - 0x000000006ecea000 C:\Program Files\Java\jre1.8.0_60\bin\net.dll
+0x000007fefc500000 - 0x000007fefc555000 C:\Windows\system32\mswsock.dll
+0x000007fefc4f0000 - 0x000007fefc4f7000 C:\Windows\System32\wship6.dll
+0x000000006ecb0000 - 0x000000006ecc1000 C:\Program Files\Java\jre1.8.0_60\bin\nio.dll
+0x000007fefa890000 - 0x000007fefa8a5000 C:\Windows\system32\NLAapi.dll
+0x000007feefc10000 - 0x000007feefc25000 C:\Windows\system32\napinsp.dll
+0x000007feefbf0000 - 0x000007feefc09000 C:\Windows\system32\pnrpnsp.dll
+0x000007fefc380000 - 0x000007fefc3db000 C:\Windows\system32\DNSAPI.dll
+0x000007feefb40000 - 0x000007feefb4b000 C:\Windows\System32\winrnr.dll
+0x000000006e5c0000 - 0x000000006e5e6000 C:\Program Files\Bonjour\mdnsNSP.dll
+0x000007fef94e0000 - 0x000007fef9507000 C:\Windows\system32\Iphlpapi.DLL
+0x000007fef94d0000 - 0x000007fef94db000 C:\Windows\system32\WINNSI.DLL
+0x000007fefbea0000 - 0x000007fefbea7000 C:\Windows\System32\wshtcpip.dll
+0x000007feefaf0000 - 0x000007feefaf8000 C:\Windows\system32\rasadhlp.dll
+0x000007fef9360000 - 0x000007fef93b3000 C:\Windows\System32\fwpuclnt.dll
+0x000000006eb80000 - 0x000000006eba4000 C:\Program Files\Java\jre1.8.0_60\bin\sunec.dll
+0x000007fefc560000 - 0x000007fefc577000 C:\Windows\system32\CRYPTSP.dll
+0x000007fefc260000 - 0x000007fefc2a7000 C:\Windows\system32\rsaenh.dll
+0x000007fefbfd0000 - 0x000007fefbfee000 C:\Windows\system32\USERENV.dll
+0x000007fefcbc0000 - 0x000007fefcbcf000 C:\Windows\system32\CRYPTBASE.dll
+0x000007fef92e0000 - 0x000007fef92f1000 C:\Windows\system32\dhcpcsvc6.DLL
+0x000007fef92c0000 - 0x000007fef92d8000 C:\Windows\system32\dhcpcsvc.DLL
+0x0000000057fa0000 - 0x0000000058138000 C:\Program Files\Java\jre1.8.0_60\bin\awt.dll
+0x000007fefee80000 - 0x000007fefef57000 C:\Windows\system32\OLEAUT32.dll
+0x000007fefb410000 - 0x000007fefb466000 C:\Windows\system32\uxtheme.dll
+0x000007fee2ce0000 - 0x000007fee2d19000 C:\Program Files\Listary\ListaryHook64.dll
+0x000007fef9e00000 - 0x000007fef9e54000 C:\Windows\system32\OLEACC.dll
+0x000007fefb210000 - 0x000007fefb228000 C:\Windows\system32\dwmapi.dll
+0x0000000063ab0000 - 0x0000000063af7000 C:\Program Files\Java\jre1.8.0_60\bin\fontmanager.dll
+0x000007fedfe80000 - 0x000007fee007f000 C:\Windows\system32\d3d9.dll
+0x000007fefab70000 - 0x000007fefab77000 C:\Windows\system32\d3d8thk.dll
+0x000007feda7e0000 - 0x000007fedb84c000 C:\Windows\system32\nvd3dumx.dll
+0x000007fefb630000 - 0x000007fefb65c000 C:\Windows\system32\powrprof.dll
+0x000007fefe460000 - 0x000007fefe637000 C:\Windows\system32\SETUPAPI.dll
+0x000007fefcef0000 - 0x000007fefcf26000 C:\Windows\system32\CFGMGR32.dll
+0x000007fefced0000 - 0x000007fefceea000 C:\Windows\system32\DEVOBJ.dll
+0x0000000063a60000 - 0x0000000063aa2000 C:\Program Files\Java\jre1.8.0_60\bin\t2k.dll
+0x0000000180000000 - 0x0000000180051000 C:\Users\Jordan\.gradle\caches\minecraft\net\minecraft\minecraft_natives\1.7.10\lwjgl64.dll
+0x000007feeb030000 - 0x000007feeb14d000 C:\Windows\system32\OPENGL32.dll
+0x000007feee100000 - 0x000007feee12d000 C:\Windows\system32\GLU32.dll
+0x000007feec9a0000 - 0x000007feeca91000 C:\Windows\system32\DDRAW.dll
+0x000007fefb930000 - 0x000007fefb938000 C:\Windows\system32\DCIMAN32.dll
+0x0000000068b70000 - 0x000000006aa49000 C:\Windows\system32\nvoglv64.DLL
+0x000007fefcd40000 - 0x000007fefcd7a000 C:\Windows\system32\WINTRUST.dll
+0x000007fefcf50000 - 0x000007fefd0bc000 C:\Windows\system32\CRYPT32.dll
+0x000007fefcd30000 - 0x000007fefcd3f000 C:\Windows\system32\MSASN1.dll
+0x000007fefaa30000 - 0x000007fefaa5d000 C:\Windows\system32\ntmarta.dll
+0x000007fefefe0000 - 0x000007feff032000 C:\Windows\system32\WLDAP32.dll
+0x000007fefc0a0000 - 0x000007fefc0dd000 C:\Windows\system32\WINSTA.dll
+0x000007fef9f90000 - 0x000007fefa02c000 C:\Windows\system32\mscms.dll
+0x000007feed7f0000 - 0x000007feed832000 C:\Windows\system32\icm32.dll
+0x0000000070a40000 - 0x0000000070adc000 C:\Users\Jordan\.gradle\caches\minecraft\net\minecraft\minecraft_natives\1.7.10\avutil-ttv-51.dll
+0x0000000065980000 - 0x00000000659d6000 C:\Users\Jordan\.gradle\caches\minecraft\net\minecraft\minecraft_natives\1.7.10\swresample-ttv-0.dll
+0x000000001e950000 - 0x000000001ea20000 C:\Users\Jordan\.gradle\caches\minecraft\net\minecraft\minecraft_natives\1.7.10\libmp3lame-ttv.dll
+0x000007fed1cf0000 - 0x000007fed3094000 C:\Users\Jordan\.gradle\caches\minecraft\net\minecraft\minecraft_natives\1.7.10\libmfxsw64.dll
+0x000007fedea20000 - 0x000007fedeb4b000 C:\Users\Jordan\.gradle\caches\minecraft\net\minecraft\minecraft_natives\1.7.10\twitchsdk.dll
+0x000007fefd490000 - 0x000007fefd6bd000 C:\Windows\system32\WININET.dll
+0x000007fefcea0000 - 0x000007fefcea4000 C:\Windows\system32\api-ms-win-downlevel-user32-l1-1-0.dll
+0x000007fefcec0000 - 0x000007fefcec5000 C:\Windows\system32\api-ms-win-downlevel-advapi32-l1-1-0.dll
+0x000007fefceb0000 - 0x000007fefceb4000 C:\Windows\system32\api-ms-win-downlevel-shlwapi-l1-1-0.dll
+0x000007fefcf40000 - 0x000007fefcf44000 C:\Windows\system32\api-ms-win-downlevel-version-l1-1-0.dll
+0x000007fefce90000 - 0x000007fefce93000 C:\Windows\system32\api-ms-win-downlevel-normaliz-l1-1-0.dll
+0x0000000077070000 - 0x0000000077073000 C:\Windows\system32\normaliz.DLL
+0x000007fefe640000 - 0x000007fefe8cc000 C:\Windows\system32\iertutil.dll
+0x000000001ee70000 - 0x000000001eecf000 C:\Program Files (x86)\DisplayFusion\Hooks\AppHookWIN6064_C39265AF-E6FE-467D-8C1B-29239581001B.dll
+0x00000000131e0000 - 0x0000000013244000 C:\Users\Jordan\.gradle\caches\minecraft\net\minecraft\minecraft_natives\1.7.10\OpenAL64.dll
+0x000007fefe970000 - 0x000007fefea09000 C:\Windows\system32\CLBCatQ.DLL
+0x000007fefb5e0000 - 0x000007fefb62b000 C:\Windows\System32\MMDevApi.dll
+0x000007fefb4b0000 - 0x000007fefb5dc000 C:\Windows\System32\PROPSYS.dll
+0x000007feed550000 - 0x000007feed5d8000 C:\Windows\system32\dsound.dll
+0x000007fefa4f0000 - 0x000007fefa53f000 C:\Windows\system32\AUDIOSES.DLL
+
+VM Arguments:
+jvm_args: -Dfile.encoding=Cp1252
+java_command: GradleStart --username=Draknyte1@hotmail.com --password=drak@1995
+java_class_path (initial): C:\eclipse\workspace\MiscUtil\bin;C:\eclipse\Forge\bin;C:\Users\Jordan\.gradle\caches\minecraft\net\minecraftforge\forge\1.7.10-10.13.4.1448-1.7.10\forgeSrc-1.7.10-10.13.4.1448-1.7.10.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\net.minecraft\launchwrapper\1.11\9c0592c6e1e9ea296a70948081bd4cc84dda1289\launchwrapper-1.11.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.google.code.findbugs\jsr305\1.3.9\40719ea6961c0cb6afaeb6a921eaa1f6afd4cfdf\jsr305-1.3.9.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.ow2.asm\asm-debug-all\5.0.3\f9e364ae2a66ce2a543012a4668856e84e5dab74\asm-debug-all-5.0.3.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.typesafe.akka\akka-actor_2.11\2.3.3\ed62e9fc709ca0f2ff1a3220daa8b70a2870078e\akka-actor_2.11-2.3.3.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.typesafe\config\1.2.1\f771f71fdae3df231bcd54d5ca2d57f0bf93f467\config-1.2.1.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang\scala-actors-migration_2.11\1.1.0\dfa8bc42b181d5b9f1a5dd147f8ae308b893eb6f\scala-actors-migration_2.11-1.1.0.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang\scala-compiler\2.11.1\56ea2e6c025e0821f28d73ca271218b8dd04926a\scala-compiler-2.11.1.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang.plugins\scala-continuations-library_2.11\1.0.2\e517c53a7e9acd6b1668c5a35eccbaa3bab9aac\scala-continuations-library_2.11-1.0.2.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang.plugins\scala-continuations-plugin_2.11.1\1.0.2\f361a3283452c57fa30c1ee69448995de23c60f7\scala-continuations-plugin_2.11.1-1.0.2.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang\scala-library\2.11.1\e11da23da3eabab9f4777b9220e60d44c1aab6a\scala-library-2.11.1.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang\scala-parser-combinators_2.11\1.0.1\f05d7345bf5a58924f2837c6c1f4d73a938e1ff0\scala-parser-combinator
+Launcher Type: SUN_STANDARD
+
+Environment Variables:
+PATH=C:/Program Files/Java/jre1.8.0_60/bin/server;C:/Program Files/Java/jre1.8.0_60/bin;C:/Program Files/Java/jre1.8.0_60/lib/amd64;C:\ProgramData\Oracle\Java\javapath;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files (x86)\Intel\iCLS Client\;C:\Program Files\Intel\iCLS Client\;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files\FileBot\;C:\Program Files (x86)\Skype\Phone\;C:\eclipse;
+USERNAME=Jordan
+OS=Windows_NT
+PROCESSOR_IDENTIFIER=Intel64 Family 6 Model 60 Stepping 3, GenuineIntel
+
+
+
+--------------- S Y S T E M ---------------
+
+OS: Windows 7 , 64 bit Build 7601 (6.1.7601.18409)
+
+CPU:total 8 (4 cores per cpu, 2 threads per core) family 6 model 60 stepping 3, cmov, cx8, fxsr, mmx, sse, sse2, sse3, ssse3, sse4.1, sse4.2, popcnt, avx, avx2, aes, clmul, erms, lzcnt, ht, tsc, tscinvbit, bmi1, bmi2
+
+Memory: 4k page, physical 16714368k(5792124k free), swap 25101112k(5800k free)
+
+vm_info: Java HotSpot(TM) 64-Bit Server VM (25.60-b23) for windows-amd64 JRE (1.8.0_60-b27), built on Aug 4 2015 11:06:27 by "java_re" with MS VC++ 10.0 (VS2010)
+
+time: Wed Sep 02 20:32:29 2015
+elapsed time: 77 seconds (0d 0h 1m 17s)
+
diff --git a/logs/2015-08-25-1.log.gz b/logs/2015-08-25-1.log.gz
new file mode 100644
index 0000000000..d04c95f804
--- /dev/null
+++ b/logs/2015-08-25-1.log.gz
Binary files differ
diff --git a/logs/2015-08-25-2.log.gz b/logs/2015-08-25-2.log.gz
new file mode 100644
index 0000000000..840b9ed3f5
--- /dev/null
+++ b/logs/2015-08-25-2.log.gz
Binary files differ
diff --git a/logs/2015-08-25-3.log.gz b/logs/2015-08-25-3.log.gz
new file mode 100644
index 0000000000..3131af2887
--- /dev/null
+++ b/logs/2015-08-25-3.log.gz
Binary files differ
diff --git a/logs/2015-08-25-4.log.gz b/logs/2015-08-25-4.log.gz
new file mode 100644
index 0000000000..474f3ab60e
--- /dev/null
+++ b/logs/2015-08-25-4.log.gz
Binary files differ
diff --git a/logs/2015-08-25-5.log.gz b/logs/2015-08-25-5.log.gz
new file mode 100644
index 0000000000..c92e537461
--- /dev/null
+++ b/logs/2015-08-25-5.log.gz
Binary files differ
diff --git a/logs/2015-08-25-6.log.gz b/logs/2015-08-25-6.log.gz
new file mode 100644
index 0000000000..569f7e5e28
--- /dev/null
+++ b/logs/2015-08-25-6.log.gz
Binary files differ
diff --git a/logs/2015-08-25-7.log.gz b/logs/2015-08-25-7.log.gz
new file mode 100644
index 0000000000..dc7a1c6ebd
--- /dev/null
+++ b/logs/2015-08-25-7.log.gz
Binary files differ
diff --git a/logs/2015-08-28-1.log.gz b/logs/2015-08-28-1.log.gz
new file mode 100644
index 0000000000..62b83c7616
--- /dev/null
+++ b/logs/2015-08-28-1.log.gz
Binary files differ
diff --git a/logs/2015-08-28-2.log.gz b/logs/2015-08-28-2.log.gz
new file mode 100644
index 0000000000..40fab08bf4
--- /dev/null
+++ b/logs/2015-08-28-2.log.gz
Binary files differ
diff --git a/logs/2015-08-28-3.log.gz b/logs/2015-08-28-3.log.gz
new file mode 100644
index 0000000000..cc8c390544
--- /dev/null
+++ b/logs/2015-08-28-3.log.gz
Binary files differ
diff --git a/logs/2015-08-28-4.log.gz b/logs/2015-08-28-4.log.gz
new file mode 100644
index 0000000000..c339d358d3
--- /dev/null
+++ b/logs/2015-08-28-4.log.gz
Binary files differ
diff --git a/logs/2015-08-28-5.log.gz b/logs/2015-08-28-5.log.gz
new file mode 100644
index 0000000000..0a4ba040dd
--- /dev/null
+++ b/logs/2015-08-28-5.log.gz
Binary files differ
diff --git a/logs/2015-08-28-6.log.gz b/logs/2015-08-28-6.log.gz
new file mode 100644
index 0000000000..09ba77feae
--- /dev/null
+++ b/logs/2015-08-28-6.log.gz
Binary files differ
diff --git a/logs/2015-08-28-7.log.gz b/logs/2015-08-28-7.log.gz
new file mode 100644
index 0000000000..bde100e398
--- /dev/null
+++ b/logs/2015-08-28-7.log.gz
Binary files differ
diff --git a/logs/2015-08-29-1.log.gz b/logs/2015-08-29-1.log.gz
new file mode 100644
index 0000000000..361a32adb9
--- /dev/null
+++ b/logs/2015-08-29-1.log.gz
Binary files differ
diff --git a/logs/2015-08-30-1.log.gz b/logs/2015-08-30-1.log.gz
new file mode 100644
index 0000000000..545cdfa4f4
--- /dev/null
+++ b/logs/2015-08-30-1.log.gz
Binary files differ
diff --git a/logs/2015-08-30-2.log.gz b/logs/2015-08-30-2.log.gz
new file mode 100644
index 0000000000..e3aa1f594f
--- /dev/null
+++ b/logs/2015-08-30-2.log.gz
Binary files differ
diff --git a/logs/2015-08-30-3.log.gz b/logs/2015-08-30-3.log.gz
new file mode 100644
index 0000000000..901b588bbc
--- /dev/null
+++ b/logs/2015-08-30-3.log.gz
Binary files differ
diff --git a/logs/2015-08-31-1.log.gz b/logs/2015-08-31-1.log.gz
new file mode 100644
index 0000000000..c090a4e9ba
--- /dev/null
+++ b/logs/2015-08-31-1.log.gz
Binary files differ
diff --git a/logs/2015-08-31-2.log.gz b/logs/2015-08-31-2.log.gz
new file mode 100644
index 0000000000..72f5f242c7
--- /dev/null
+++ b/logs/2015-08-31-2.log.gz
Binary files differ
diff --git a/logs/2015-08-31-3.log.gz b/logs/2015-08-31-3.log.gz
new file mode 100644
index 0000000000..ef9a5026c8
--- /dev/null
+++ b/logs/2015-08-31-3.log.gz
Binary files differ
diff --git a/logs/2015-09-01-1.log.gz b/logs/2015-09-01-1.log.gz
new file mode 100644
index 0000000000..ace7d17f90
--- /dev/null
+++ b/logs/2015-09-01-1.log.gz
Binary files differ
diff --git a/logs/2015-09-01-2.log.gz b/logs/2015-09-01-2.log.gz
new file mode 100644
index 0000000000..8a51dcf04f
--- /dev/null
+++ b/logs/2015-09-01-2.log.gz
Binary files differ
diff --git a/logs/2015-09-01-3.log.gz b/logs/2015-09-01-3.log.gz
new file mode 100644
index 0000000000..1681a968d3
--- /dev/null
+++ b/logs/2015-09-01-3.log.gz
Binary files differ
diff --git a/logs/2015-09-02-1.log.gz b/logs/2015-09-02-1.log.gz
new file mode 100644
index 0000000000..98bc1377e5
--- /dev/null
+++ b/logs/2015-09-02-1.log.gz
Binary files differ
diff --git a/logs/2015-09-02-2.log.gz b/logs/2015-09-02-2.log.gz
new file mode 100644
index 0000000000..324ec2a585
--- /dev/null
+++ b/logs/2015-09-02-2.log.gz
Binary files differ
diff --git a/logs/2015-09-02-3.log.gz b/logs/2015-09-02-3.log.gz
new file mode 100644
index 0000000000..b9811b1a9b
--- /dev/null
+++ b/logs/2015-09-02-3.log.gz
Binary files differ
diff --git a/logs/2015-09-02-4.log.gz b/logs/2015-09-02-4.log.gz
new file mode 100644
index 0000000000..5f9f995e3a
--- /dev/null
+++ b/logs/2015-09-02-4.log.gz
Binary files differ
diff --git a/logs/2015-09-02-5.log.gz b/logs/2015-09-02-5.log.gz
new file mode 100644
index 0000000000..f4bb356c8b
--- /dev/null
+++ b/logs/2015-09-02-5.log.gz
Binary files differ
diff --git a/logs/2015-09-02-6.log.gz b/logs/2015-09-02-6.log.gz
new file mode 100644
index 0000000000..77130e2cf3
--- /dev/null
+++ b/logs/2015-09-02-6.log.gz
Binary files differ
diff --git a/logs/2015-09-02-7.log.gz b/logs/2015-09-02-7.log.gz
new file mode 100644
index 0000000000..3cf5d1ddaf
--- /dev/null
+++ b/logs/2015-09-02-7.log.gz
Binary files differ
diff --git a/logs/2015-09-03-1.log.gz b/logs/2015-09-03-1.log.gz
new file mode 100644
index 0000000000..f9ce797cfb
--- /dev/null
+++ b/logs/2015-09-03-1.log.gz
Binary files differ
diff --git a/logs/2015-09-03-2.log.gz b/logs/2015-09-03-2.log.gz
new file mode 100644
index 0000000000..12d243317c
--- /dev/null
+++ b/logs/2015-09-03-2.log.gz
Binary files differ
diff --git a/logs/2015-09-03-3.log.gz b/logs/2015-09-03-3.log.gz
new file mode 100644
index 0000000000..ac1330bd2b
--- /dev/null
+++ b/logs/2015-09-03-3.log.gz
Binary files differ
diff --git a/logs/2015-09-03-4.log.gz b/logs/2015-09-03-4.log.gz
new file mode 100644
index 0000000000..4a15d4b4c1
--- /dev/null
+++ b/logs/2015-09-03-4.log.gz
Binary files differ
diff --git a/logs/2015-09-03-5.log.gz b/logs/2015-09-03-5.log.gz
new file mode 100644
index 0000000000..9be50ffdb7
--- /dev/null
+++ b/logs/2015-09-03-5.log.gz
Binary files differ
diff --git a/logs/2015-09-03-6.log.gz b/logs/2015-09-03-6.log.gz
new file mode 100644
index 0000000000..05a4d26ff1
--- /dev/null
+++ b/logs/2015-09-03-6.log.gz
Binary files differ
diff --git a/logs/2015-09-03-7.log.gz b/logs/2015-09-03-7.log.gz
new file mode 100644
index 0000000000..db8d403eea
--- /dev/null
+++ b/logs/2015-09-03-7.log.gz
Binary files differ
diff --git a/logs/2015-09-04-1.log.gz b/logs/2015-09-04-1.log.gz
new file mode 100644
index 0000000000..fea51b5140
--- /dev/null
+++ b/logs/2015-09-04-1.log.gz
Binary files differ
diff --git a/logs/2015-09-04-2.log.gz b/logs/2015-09-04-2.log.gz
new file mode 100644
index 0000000000..3cbeab23b7
--- /dev/null
+++ b/logs/2015-09-04-2.log.gz
Binary files differ
diff --git a/logs/2015-09-06-1.log.gz b/logs/2015-09-06-1.log.gz
new file mode 100644
index 0000000000..7e396b9b69
--- /dev/null
+++ b/logs/2015-09-06-1.log.gz
Binary files differ
diff --git a/logs/2015-09-06-2.log.gz b/logs/2015-09-06-2.log.gz
new file mode 100644
index 0000000000..8337b5b1c6
--- /dev/null
+++ b/logs/2015-09-06-2.log.gz
Binary files differ
diff --git a/logs/2015-09-06-3.log.gz b/logs/2015-09-06-3.log.gz
new file mode 100644
index 0000000000..f8305b6c5d
--- /dev/null
+++ b/logs/2015-09-06-3.log.gz
Binary files differ
diff --git a/logs/2015-09-06-4.log.gz b/logs/2015-09-06-4.log.gz
new file mode 100644
index 0000000000..a7e090a6b7
--- /dev/null
+++ b/logs/2015-09-06-4.log.gz
Binary files differ
diff --git a/logs/2015-09-06-5.log.gz b/logs/2015-09-06-5.log.gz
new file mode 100644
index 0000000000..1478e82974
--- /dev/null
+++ b/logs/2015-09-06-5.log.gz
Binary files differ
diff --git a/logs/2015-09-06-6.log.gz b/logs/2015-09-06-6.log.gz
new file mode 100644
index 0000000000..e6e8f09ef7
--- /dev/null
+++ b/logs/2015-09-06-6.log.gz
Binary files differ
diff --git a/logs/2015-09-06-7.log.gz b/logs/2015-09-06-7.log.gz
new file mode 100644
index 0000000000..c9d324950a
--- /dev/null
+++ b/logs/2015-09-06-7.log.gz
Binary files differ
diff --git a/logs/2015-09-07-1.log.gz b/logs/2015-09-07-1.log.gz
new file mode 100644
index 0000000000..b2615890ae
--- /dev/null
+++ b/logs/2015-09-07-1.log.gz
Binary files differ
diff --git a/logs/2015-09-07-2.log.gz b/logs/2015-09-07-2.log.gz
new file mode 100644
index 0000000000..7b01ece6e1
--- /dev/null
+++ b/logs/2015-09-07-2.log.gz
Binary files differ
diff --git a/logs/2015-09-07-3.log.gz b/logs/2015-09-07-3.log.gz
new file mode 100644
index 0000000000..e1ee5a95e7
--- /dev/null
+++ b/logs/2015-09-07-3.log.gz
Binary files differ
diff --git a/logs/2015-09-07-4.log.gz b/logs/2015-09-07-4.log.gz
new file mode 100644
index 0000000000..7d6456616e
--- /dev/null
+++ b/logs/2015-09-07-4.log.gz
Binary files differ
diff --git a/logs/2015-09-07-5.log.gz b/logs/2015-09-07-5.log.gz
new file mode 100644
index 0000000000..342eeb531d
--- /dev/null
+++ b/logs/2015-09-07-5.log.gz
Binary files differ
diff --git a/logs/2015-09-07-6.log.gz b/logs/2015-09-07-6.log.gz
new file mode 100644
index 0000000000..61055efe47
--- /dev/null
+++ b/logs/2015-09-07-6.log.gz
Binary files differ
diff --git a/logs/2015-09-07-7.log.gz b/logs/2015-09-07-7.log.gz
new file mode 100644
index 0000000000..f35445458e
--- /dev/null
+++ b/logs/2015-09-07-7.log.gz
Binary files differ
diff --git a/logs/2015-10-05-1.log.gz b/logs/2015-10-05-1.log.gz
new file mode 100644
index 0000000000..d18ee1c117
--- /dev/null
+++ b/logs/2015-10-05-1.log.gz
Binary files differ
diff --git a/logs/2015-10-05-2.log.gz b/logs/2015-10-05-2.log.gz
new file mode 100644
index 0000000000..a1a60d3c6b
--- /dev/null
+++ b/logs/2015-10-05-2.log.gz
Binary files differ
diff --git a/logs/2015-10-05-3.log.gz b/logs/2015-10-05-3.log.gz
new file mode 100644
index 0000000000..bb39e34df3
--- /dev/null
+++ b/logs/2015-10-05-3.log.gz
Binary files differ
diff --git a/logs/2015-10-12-1.log.gz b/logs/2015-10-12-1.log.gz
new file mode 100644
index 0000000000..59620f0c1f
--- /dev/null
+++ b/logs/2015-10-12-1.log.gz
Binary files differ
diff --git a/logs/2015-10-12-2.log.gz b/logs/2015-10-12-2.log.gz
new file mode 100644
index 0000000000..48343b344f
--- /dev/null
+++ b/logs/2015-10-12-2.log.gz
Binary files differ
diff --git a/logs/2015-10-12-3.log.gz b/logs/2015-10-12-3.log.gz
new file mode 100644
index 0000000000..04c9fa8797
--- /dev/null
+++ b/logs/2015-10-12-3.log.gz
Binary files differ
diff --git a/logs/2015-10-12-4.log.gz b/logs/2015-10-12-4.log.gz
new file mode 100644
index 0000000000..8eef48a170
--- /dev/null
+++ b/logs/2015-10-12-4.log.gz
Binary files differ
diff --git a/logs/2015-10-12-5.log.gz b/logs/2015-10-12-5.log.gz
new file mode 100644
index 0000000000..f21541a76f
--- /dev/null
+++ b/logs/2015-10-12-5.log.gz
Binary files differ
diff --git a/logs/2015-10-12-6.log.gz b/logs/2015-10-12-6.log.gz
new file mode 100644
index 0000000000..ffef511d13
--- /dev/null
+++ b/logs/2015-10-12-6.log.gz
Binary files differ
diff --git a/logs/2015-10-12-7.log.gz b/logs/2015-10-12-7.log.gz
new file mode 100644
index 0000000000..f6ef4716b8
--- /dev/null
+++ b/logs/2015-10-12-7.log.gz
Binary files differ
diff --git a/logs/2015-10-13-1.log.gz b/logs/2015-10-13-1.log.gz
new file mode 100644
index 0000000000..883e41a6c1
--- /dev/null
+++ b/logs/2015-10-13-1.log.gz
Binary files differ
diff --git a/logs/2015-10-13-2.log.gz b/logs/2015-10-13-2.log.gz
new file mode 100644
index 0000000000..017cc6fc1c
--- /dev/null
+++ b/logs/2015-10-13-2.log.gz
Binary files differ
diff --git a/logs/fml-client-1.log b/logs/fml-client-1.log
new file mode 100644
index 0000000000..fd8390b7b3
--- /dev/null
+++ b/logs/fml-client-1.log
@@ -0,0 +1,75 @@
+[13:36:19] [main/DEBUG] [FML/]: Injecting tracing printstreams for STDOUT/STDERR.
+[13:36:19] [main/INFO] [FML/]: Forge Mod Loader version 7.99.16.1448 for Minecraft 1.7.10 loading
+[13:36:19] [main/INFO] [FML/]: Java is Java HotSpot(TM) 64-Bit Server VM, version 1.7.0_79, running on Windows 7:amd64:6.1, installed at C:\Program Files\Java\jdk1.7.0_79\jre
+[13:36:19] [main/DEBUG] [FML/]: Java classpath at launch is C:\eclipse\workspace\MiscUtil\bin;C:\eclipse\Forge\bin;C:\Users\Jordan\.gradle\caches\minecraft\net\minecraftforge\forge\1.7.10-10.13.4.1448-1.7.10\forgeSrc-1.7.10-10.13.4.1448-1.7.10.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\net.minecraft\launchwrapper\1.11\9c0592c6e1e9ea296a70948081bd4cc84dda1289\launchwrapper-1.11.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.google.code.findbugs\jsr305\1.3.9\40719ea6961c0cb6afaeb6a921eaa1f6afd4cfdf\jsr305-1.3.9.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.ow2.asm\asm-debug-all\5.0.3\f9e364ae2a66ce2a543012a4668856e84e5dab74\asm-debug-all-5.0.3.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.typesafe.akka\akka-actor_2.11\2.3.3\ed62e9fc709ca0f2ff1a3220daa8b70a2870078e\akka-actor_2.11-2.3.3.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.typesafe\config\1.2.1\f771f71fdae3df231bcd54d5ca2d57f0bf93f467\config-1.2.1.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang\scala-actors-migration_2.11\1.1.0\dfa8bc42b181d5b9f1a5dd147f8ae308b893eb6f\scala-actors-migration_2.11-1.1.0.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang\scala-compiler\2.11.1\56ea2e6c025e0821f28d73ca271218b8dd04926a\scala-compiler-2.11.1.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang.plugins\scala-continuations-library_2.11\1.0.2\e517c53a7e9acd6b1668c5a35eccbaa3bab9aac\scala-continuations-library_2.11-1.0.2.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang.plugins\scala-continuations-plugin_2.11.1\1.0.2\f361a3283452c57fa30c1ee69448995de23c60f7\scala-continuations-plugin_2.11.1-1.0.2.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang\scala-library\2.11.1\e11da23da3eabab9f4777b9220e60d44c1aab6a\scala-library-2.11.1.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang\scala-parser-combinators_2.11\1.0.1\f05d7345bf5a58924f2837c6c1f4d73a938e1ff0\scala-parser-combinators_2.11-1.0.1.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang\scala-reflect\2.11.1\6580347e61cc7f8e802941e7fde40fa83b8badeb\scala-reflect-2.11.1.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang\scala-swing_2.11\1.0.1\b1cdd92bd47b1e1837139c1c53020e86bb9112ae\scala-swing_2.11-1.0.1.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang\scala-xml_2.11\1.0.2\7a80ec00aec122fba7cd4e0d4cdd87ff7e4cb6d0\scala-xml_2.11-1.0.2.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\net.sf.jopt-simple\jopt-simple\4.5\6065cc95c661255349c1d0756657be17c29a4fd3\jopt-simple-4.5.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\lzma\lzma\0.0.1\521616dc7487b42bef0e803bd2fa3faf668101d7\lzma-0.0.1.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.mojang\realms\1.3.5\807ae355ee63583becd7ea60e76aab1532bb42e\realms-1.3.5.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.apache.commons\commons-compress\1.8.1\a698750c16740fd5b3871425f4cb3bbaa87f529d\commons-compress-1.8.1.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.apache.httpcomponents\httpclient\4.3.3\18f4247ff4572a074444572cee34647c43e7c9c7\httpclient-4.3.3.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\commons-logging\commons-logging\1.1.3\f6f66e966c70a83ffbdb6f17a0919eaf7c8aca7f\commons-logging-1.1.3.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.apache.httpcomponents\httpcore\4.3.2\31fbbff1ddbf98f3aa7377c94d33b0447c646b6e\httpcore-4.3.2.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\java3d\vecmath\1.3.1\a0ae4f51da409fa0c20fa0ca59e6bbc9413ae71d\vecmath-1.3.1.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\net.sf.trove4j\trove4j\3.0.3\42ccaf4761f0dfdfa805c9e340d99a755907e2dd\trove4j-3.0.3.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.ibm.icu\icu4j-core-mojang\51.2\63d216a9311cca6be337c1e458e587f99d382b84\icu4j-core-mojang-51.2.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.paulscode\codecjorbis\20101023\c73b5636faf089d9f00e8732a829577de25237ee\codecjorbis-20101023.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.paulscode\codecwav\20101023\12f031cfe88fef5c1dd36c563c0a3a69bd7261da\codecwav-20101023.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.paulscode\libraryjavasound\20101123\5c5e304366f75f9eaa2e8cca546a1fb6109348b3\libraryjavasound-20101123.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.paulscode\librarylwjglopenal\20100824\73e80d0794c39665aec3f62eee88ca91676674ef\librarylwjglopenal-20100824.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.paulscode\soundsystem\20120107\419c05fe9be71f792b2d76cfc9b67f1ed0fec7f6\soundsystem-20120107.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\io.netty\netty-all\4.0.10.Final\9e50bd52ffe257a0e2cd8d971688d6ce7d174325\netty-all-4.0.10.Final.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.google.guava\guava\17.0\9c6ef172e8de35fd8d4d8783e4821e57cdef7445\guava-17.0.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.apache.commons\commons-lang3\3.3.2\90a3822c38ec8c996e84c16a3477ef632cbc87a3\commons-lang3-3.3.2.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\commons-io\commons-io\2.4\b1b6ea3b7e4aa4f492509a4952029cd8e48019ad\commons-io-2.4.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\commons-codec\commons-codec\1.9\9ce04e34240f674bc72680f8b843b1457383161a\commons-codec-1.9.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\net.java.jinput\jinput\2.0.5\39c7796b469a600f72380316f6b1f11db6c2c7c4\jinput-2.0.5.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\net.java.jutils\jutils\1.0.0\e12fe1fda814bd348c1579329c86943d2cd3c6a6\jutils-1.0.0.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.google.code.gson\gson\2.2.4\a60a5e993c98c864010053cb901b7eab25306568\gson-2.2.4.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.mojang\authlib\1.5.16\ef1582b11fd0943d069cdcb72e99008ac209a283\authlib-1.5.16.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.apache.logging.log4j\log4j-api\2.0-beta9\1dd66e68cccd907880229f9e2de1314bd13ff785\log4j-api-2.0-beta9.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.apache.logging.log4j\log4j-core\2.0-beta9\678861ba1b2e1fccb594bb0ca03114bb05da9695\log4j-core-2.0-beta9.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.lwjgl.lwjgl\lwjgl\2.9.1\f58c5aabcef0e41718a564be9f8e412fff8db847\lwjgl-2.9.1.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.lwjgl.lwjgl\lwjgl_util\2.9.1\290d7ba8a1bd9566f5ddf16ad06f09af5ec9b20e\lwjgl_util-2.9.1.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\tv.twitch\twitch\5.16\1f55f009c61637c10c0acfb8b5ffc600f30044b4\twitch-5.16.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang\scala-actors\2.11.0\8ccfb6541de179bb1c4d45cf414acee069b7f78b\scala-actors-2.11.0.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang.modules\scala-xml_2.11\1.0.2\820fbca7e524b530fdadc594c39d49a21ea0337e\scala-xml_2.11-1.0.2.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang.modules\scala-parser-combinators_2.11\1.0.1\f05d7345bf5a58924f2837c6c1f4d73a938e1ff0\scala-parser-combinators_2.11-1.0.1.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\net.java.jinput\jinput-platform\2.0.5\7ff832a6eb9ab6a767f1ade2b548092d0fa64795\jinput-platform-2.0.5-natives-linux.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\net.java.jinput\jinput-platform\2.0.5\385ee093e01f587f30ee1c8a2ee7d408fd732e16\jinput-platform-2.0.5-natives-windows.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\net.java.jinput\jinput-platform\2.0.5\53f9c919f34d2ca9de8c51fc4e1e8282029a9232\jinput-platform-2.0.5-natives-osx.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\tv.twitch\twitch-platform\5.16\7c6affe439099806a4f552da14c42f9d643d8b23\twitch-platform-5.16-natives-windows-32.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\tv.twitch\twitch-platform\5.16\39d0c3d363735b4785598e0e7fbf8297c706a9f9\twitch-platform-5.16-natives-windows-64.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\tv.twitch\twitch-platform\5.16\62503ee712766cf77f97252e5902786fd834b8c5\twitch-platform-5.16-natives-osx.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\tv.twitch\twitch-external-platform\4.5\18215140f010c05b9f86ef6f0f8871954d2ccebf\twitch-external-platform-4.5-natives-windows-32.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\tv.twitch\twitch-external-platform\4.5\c3cde57891b935d41b6680a9c5e1502eeab76d86\twitch-external-platform-4.5-natives-windows-64.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.lwjgl.lwjgl\lwjgl-platform\2.9.1\4c517eca808522457dd95ee8fc1fbcdbb602efbe\lwjgl-platform-2.9.1-natives-windows.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.lwjgl.lwjgl\lwjgl-platform\2.9.1\aa9aae879af8eb378e22cfc64db56ec2ca9a44d1\lwjgl-platform-2.9.1-natives-linux.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.lwjgl.lwjgl\lwjgl-platform\2.9.1\2d12c83fdfbc04ecabf02c7bc8cc54d034f0daac\lwjgl-platform-2.9.1-natives-osx.jar;C:\Users\Jordan\.gradle\caches\minecraft\net\minecraftforge\forge\1.7.10-10.13.4.1448-1.7.10\start;C:\eclipse\workspace\Gregtech\bin;C:\eclipse\workspace\Gregtech\libs\dev\industrialcraft-2-2.2.720-experimental-dev.jar;C:\eclipse\workspace\Gregtech\libs\API.jar;C:\eclipse\workspace\Gregtech\libs\appliedenergistics2-rv2-stable-1.jar;C:\eclipse\workspace\Gregtech\libs\EnderIO-1.7.10-2.2.8.381-dev.jar;C:\eclipse\workspace\Gregtech\libs\dev\NotEnoughItems-1.7.10-1.0.4.107-dev.jar;C:\eclipse\workspace\Gregtech\libs\dev\1.7.10\CodeChickenLib-1.7.10-1.1.3.136-dev.jar
+[13:36:19] [main/DEBUG] [FML/]: Java library path at launch is C:\Program Files\Java\jdk1.7.0_79\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:/Program Files/Java/jre1.8.0_60/bin/server;C:/Program Files/Java/jre1.8.0_60/bin;C:/Program Files/Java/jre1.8.0_60/lib/amd64;C:\ProgramData\Oracle\Java\javapath;C:\Program Files (x86)\Intel\iCLS Client\;C:\Program Files\Intel\iCLS Client\;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files\FileBot\;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files (x86)\Paragon Software\Paragon ExtFS for Windows;C:\Program Files (x86)\Skype\Phone\;C:\eclipse;;.;C:/Users/Jordan/.gradle/caches/minecraft/net/minecraft/minecraft_natives/1.7.10
+[13:36:19] [main/INFO] [FML/]: Managed to load a deobfuscated Minecraft name- we are in a deobfuscated environment. Skipping runtime deobfuscation
+[13:36:19] [main/DEBUG] [FML/]: Instantiating coremod class FMLCorePlugin
+[13:36:19] [main/DEBUG] [FML/]: Added access transformer class cpw.mods.fml.common.asm.transformers.AccessTransformer to enqueued access transformers
+[13:36:19] [main/DEBUG] [FML/]: Enqueued coremod FMLCorePlugin
+[13:36:19] [main/DEBUG] [FML/]: Instantiating coremod class FMLForgePlugin
+[13:36:19] [main/DEBUG] [FML/]: Added access transformer class net.minecraftforge.transformers.ForgeAccessTransformer to enqueued access transformers
+[13:36:19] [main/DEBUG] [FML/]: Enqueued coremod FMLForgePlugin
+[13:36:19] [main/DEBUG] [FML/]: All fundamental core mods are successfully located
+[13:36:19] [main/INFO] [FML/]: Found a command line coremod : codechicken.nei.asm.NEICorePlugin
+[13:36:19] [main/DEBUG] [FML/]: Instantiating coremod class NEICorePlugin
+[13:36:19] [main/WARN] [FML/]: The coremod codechicken.nei.asm.NEICorePlugin does not have a MCVersion annotation, it may cause issues with this version of Minecraft
+[13:36:19] [main/DEBUG] [FML/]: Enqueued coremod NEICorePlugin
+[13:36:19] [main/INFO] [FML/]: Found a command line coremod : ic2.core.coremod.IC2core
+[13:36:19] [main/DEBUG] [FML/]: Instantiating coremod class IC2core
+[13:36:19] [main/WARN] [FML/]: The coremod ic2.core.coremod.IC2core does not have a MCVersion annotation, it may cause issues with this version of Minecraft
+[13:36:19] [main/DEBUG] [FML/]: Enqueued coremod IC2core
+[13:36:19] [main/INFO] [FML/]: Found a command line coremod : appeng.transformer.AppEngCore
+[13:36:19] [main/DEBUG] [FML/]: Instantiating coremod class AppEngCore
+[13:36:19] [main/DEBUG] [FML/]: The coremod appeng.transformer.AppEngCore requested minecraft version 1.7.10 and minecraft is 1.7.10. It will be loaded.
+[13:36:19] [main/INFO] [FML/]: [AppEng] Core Init
+[13:36:19] [main/DEBUG] [FML/]: Added access transformer class appeng.transformer.asm.ASMTweaker to enqueued access transformers
+[13:36:19] [main/DEBUG] [FML/]: Enqueued coremod AppEngCore
+[13:36:19] [main/DEBUG] [FML/]: Attempting to load commandline specified mods, relative to C:\eclipse\workspace\MiscUtil\.
+[13:36:19] [main/DEBUG] [FML/]: Discovering coremods
+[13:36:19] [main/INFO] [LaunchWrapper/]: Calling tweak class net.minecraftforge.gradle.tweakers.CoremodTweaker
+[13:36:19] [main/INFO] [GradleStart/]: Injecting location in coremod cpw.mods.fml.relauncher.FMLCorePlugin
+[13:36:19] [main/INFO] [GradleStart/]: Injecting location in coremod net.minecraftforge.classloading.FMLForgePlugin
+[13:36:19] [main/INFO] [GradleStart/]: Injecting location in coremod codechicken.nei.asm.NEICorePlugin
+[13:36:19] [main/INFO] [GradleStart/]: Injecting location in coremod ic2.core.coremod.IC2core
+[13:36:19] [main/INFO] [GradleStart/]: Injecting location in coremod appeng.transformer.AppEngCore
+[13:36:19] [main/INFO] [LaunchWrapper/]: Loading tweak class name cpw.mods.fml.common.launcher.FMLInjectionAndSortingTweaker
+[13:36:19] [main/INFO] [LaunchWrapper/]: Loading tweak class name cpw.mods.fml.common.launcher.FMLDeobfTweaker
+[13:36:19] [main/INFO] [LaunchWrapper/]: Loading tweak class name net.minecraftforge.gradle.tweakers.AccessTransformerTweaker
+[13:36:19] [main/INFO] [LaunchWrapper/]: Calling tweak class cpw.mods.fml.common.launcher.FMLInjectionAndSortingTweaker
+[13:36:19] [main/INFO] [LaunchWrapper/]: Calling tweak class cpw.mods.fml.common.launcher.FMLInjectionAndSortingTweaker
+[13:36:19] [main/INFO] [LaunchWrapper/]: Calling tweak class cpw.mods.fml.relauncher.CoreModManager$FMLPluginWrapper
+[13:36:19] [main/DEBUG] [FML/]: Injecting coremod FMLCorePlugin {cpw.mods.fml.relauncher.FMLCorePlugin} class transformers
+[13:36:19] [main/TRACE] [FML/]: Registering transformer cpw.mods.fml.common.asm.transformers.MarkerTransformer
+[13:36:19] [main/TRACE] [FML/]: Registering transformer cpw.mods.fml.common.asm.transformers.SideTransformer
+[13:36:19] [main/TRACE] [FML/]: Registering transformer cpw.mods.fml.common.asm.transformers.EventSubscriptionTransformer
+[13:36:19] [main/DEBUG] [FML/]: Injection complete
+[13:36:19] [main/DEBUG] [FML/]: Running coremod plugin for FMLCorePlugin {cpw.mods.fml.relauncher.FMLCorePlugin}
+[13:36:19] [main/DEBUG] [FML/]: Running coremod plugin FMLCorePlugin
+[13:36:19] [main/ERROR] [FML/]: The binary patch set is missing. Either you are in a development environment, or things are not going to work!
+[13:36:21] [main/ERROR] [FML/]: FML appears to be missing any signature data. This is not a good thing
+[13:36:21] [main/DEBUG] [FML/]: Coremod plugin class FMLCorePlugin run successfully
+[13:36:21] [main/INFO] [LaunchWrapper/]: Calling tweak class cpw.mods.fml.relauncher.CoreModManager$FMLPluginWrapper
+[13:36:21] [main/DEBUG] [FML/]: Injecting coremod FMLForgePlugin {net.minecraftforge.classloading.FMLForgePlugin} class transformers
+[13:36:21] [main/TRACE] [FML/]: Registering transformer net.minecraftforge.classloading.FluidIdTransformer
+[13:36:21] [main/DEBUG] [FML/]: Injection complete
+[13:36:21] [main/DEBUG] [FML/]: Running coremod plugin for FMLForgePlugin {net.minecraftforge.classloading.FMLForgePlugin}
+[13:36:21] [main/DEBUG] [FML/]: Running coremod plugin FMLForgePlugin
+[13:36:21] [main/DEBUG] [FML/]: Coremod plugin class FMLForgePlugin run successfully
+[13:36:21] [main/INFO] [LaunchWrapper/]: Calling tweak class cpw.mods.fml.relauncher.CoreModManager$FMLPluginWrapper
+[13:36:21] [main/DEBUG] [FML/]: Injecting coremod NEICorePlugin {codechicken.nei.asm.NEICorePlugin} class transformers
+[13:36:21] [main/INFO] [STDERR/]: [java.lang.Throwable$WrappedPrintStream:println:748]: java.lang.NoClassDefFoundError: codechicken/core/launch/CodeChickenCorePlugin
+[13:36:21] [main/INFO] [STDERR/]: [java.lang.Throwable$WrappedPrintStream:println:748]: at codechicken.nei.asm.NEICorePlugin.getASMTransformerClass(NEICorePlugin.java:23)
+[13:36:21] [main/INFO] [STDERR/]: [java.lang.Throwable$WrappedPrintStream:println:748]: at cpw.mods.fml.relauncher.CoreModManager$FMLPluginWrapper.injectIntoClassLoader(CoreModManager.java:98)
+[13:36:21] [main/INFO] [STDERR/]: [java.lang.Throwable$WrappedPrintStream:println:748]: at net.minecraft.launchwrapper.Launch.launch(Launch.java:115)
+[13:36:21] [main/INFO] [STDERR/]: [java.lang.Throwable$WrappedPrintStream:println:748]: at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
+[13:36:21] [main/INFO] [STDERR/]: [java.lang.Throwable$WrappedPrintStream:println:748]: at net.minecraftforge.gradle.GradleStartCommon.launch(Unknown Source)
+[13:36:21] [main/INFO] [STDERR/]: [java.lang.Throwable$WrappedPrintStream:println:748]: at GradleStart.main(Unknown Source)
+[13:36:21] [main/INFO] [STDERR/]: [java.lang.Throwable$WrappedPrintStream:println:748]: Caused by: java.lang.ClassNotFoundException: codechicken.core.launch.CodeChickenCorePlugin
+[13:36:21] [main/INFO] [STDERR/]: [java.lang.Throwable$WrappedPrintStream:println:748]: at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:191)
+[13:36:21] [main/INFO] [STDERR/]: [java.lang.Throwable$WrappedPrintStream:println:748]: at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
+[13:36:21] [main/INFO] [STDERR/]: [java.lang.Throwable$WrappedPrintStream:println:748]: at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
+[13:36:21] [main/INFO] [STDERR/]: [java.lang.Throwable$WrappedPrintStream:println:748]: ... 6 more
+[13:36:21] [main/INFO] [STDERR/]: [java.lang.Throwable$WrappedPrintStream:println:748]: Caused by: java.lang.NullPointerException
+[13:36:21] [main/INFO] [STDERR/]: [java.lang.Throwable$WrappedPrintStream:println:748]: at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:182)
+[13:36:21] [main/INFO] [STDERR/]: [java.lang.Throwable$WrappedPrintStream:println:748]: ... 8 more
diff --git a/logs/fml-client-2.log b/logs/fml-client-2.log
new file mode 100644
index 0000000000..8c1d125856
--- /dev/null
+++ b/logs/fml-client-2.log
@@ -0,0 +1,757 @@
+[13:36:53] [main/DEBUG] [FML/]: Injecting tracing printstreams for STDOUT/STDERR.
+[13:36:53] [main/INFO] [FML/]: Forge Mod Loader version 7.99.16.1448 for Minecraft 1.7.10 loading
+[13:36:53] [main/INFO] [FML/]: Java is Java HotSpot(TM) 64-Bit Server VM, version 1.7.0_79, running on Windows 7:amd64:6.1, installed at C:\Program Files\Java\jdk1.7.0_79\jre
+[13:36:53] [main/DEBUG] [FML/]: Java classpath at launch is C:\eclipse\workspace\MiscUtil\bin;C:\eclipse\Forge\bin;C:\Users\Jordan\.gradle\caches\minecraft\net\minecraftforge\forge\1.7.10-10.13.4.1448-1.7.10\forgeSrc-1.7.10-10.13.4.1448-1.7.10.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\net.minecraft\launchwrapper\1.11\9c0592c6e1e9ea296a70948081bd4cc84dda1289\launchwrapper-1.11.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.google.code.findbugs\jsr305\1.3.9\40719ea6961c0cb6afaeb6a921eaa1f6afd4cfdf\jsr305-1.3.9.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.ow2.asm\asm-debug-all\5.0.3\f9e364ae2a66ce2a543012a4668856e84e5dab74\asm-debug-all-5.0.3.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.typesafe.akka\akka-actor_2.11\2.3.3\ed62e9fc709ca0f2ff1a3220daa8b70a2870078e\akka-actor_2.11-2.3.3.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.typesafe\config\1.2.1\f771f71fdae3df231bcd54d5ca2d57f0bf93f467\config-1.2.1.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang\scala-actors-migration_2.11\1.1.0\dfa8bc42b181d5b9f1a5dd147f8ae308b893eb6f\scala-actors-migration_2.11-1.1.0.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang\scala-compiler\2.11.1\56ea2e6c025e0821f28d73ca271218b8dd04926a\scala-compiler-2.11.1.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang.plugins\scala-continuations-library_2.11\1.0.2\e517c53a7e9acd6b1668c5a35eccbaa3bab9aac\scala-continuations-library_2.11-1.0.2.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang.plugins\scala-continuations-plugin_2.11.1\1.0.2\f361a3283452c57fa30c1ee69448995de23c60f7\scala-continuations-plugin_2.11.1-1.0.2.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang\scala-library\2.11.1\e11da23da3eabab9f4777b9220e60d44c1aab6a\scala-library-2.11.1.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang\scala-parser-combinators_2.11\1.0.1\f05d7345bf5a58924f2837c6c1f4d73a938e1ff0\scala-parser-combinators_2.11-1.0.1.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang\scala-reflect\2.11.1\6580347e61cc7f8e802941e7fde40fa83b8badeb\scala-reflect-2.11.1.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang\scala-swing_2.11\1.0.1\b1cdd92bd47b1e1837139c1c53020e86bb9112ae\scala-swing_2.11-1.0.1.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang\scala-xml_2.11\1.0.2\7a80ec00aec122fba7cd4e0d4cdd87ff7e4cb6d0\scala-xml_2.11-1.0.2.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\net.sf.jopt-simple\jopt-simple\4.5\6065cc95c661255349c1d0756657be17c29a4fd3\jopt-simple-4.5.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\lzma\lzma\0.0.1\521616dc7487b42bef0e803bd2fa3faf668101d7\lzma-0.0.1.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.mojang\realms\1.3.5\807ae355ee63583becd7ea60e76aab1532bb42e\realms-1.3.5.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.apache.commons\commons-compress\1.8.1\a698750c16740fd5b3871425f4cb3bbaa87f529d\commons-compress-1.8.1.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.apache.httpcomponents\httpclient\4.3.3\18f4247ff4572a074444572cee34647c43e7c9c7\httpclient-4.3.3.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\commons-logging\commons-logging\1.1.3\f6f66e966c70a83ffbdb6f17a0919eaf7c8aca7f\commons-logging-1.1.3.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.apache.httpcomponents\httpcore\4.3.2\31fbbff1ddbf98f3aa7377c94d33b0447c646b6e\httpcore-4.3.2.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\java3d\vecmath\1.3.1\a0ae4f51da409fa0c20fa0ca59e6bbc9413ae71d\vecmath-1.3.1.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\net.sf.trove4j\trove4j\3.0.3\42ccaf4761f0dfdfa805c9e340d99a755907e2dd\trove4j-3.0.3.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.ibm.icu\icu4j-core-mojang\51.2\63d216a9311cca6be337c1e458e587f99d382b84\icu4j-core-mojang-51.2.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.paulscode\codecjorbis\20101023\c73b5636faf089d9f00e8732a829577de25237ee\codecjorbis-20101023.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.paulscode\codecwav\20101023\12f031cfe88fef5c1dd36c563c0a3a69bd7261da\codecwav-20101023.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.paulscode\libraryjavasound\20101123\5c5e304366f75f9eaa2e8cca546a1fb6109348b3\libraryjavasound-20101123.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.paulscode\librarylwjglopenal\20100824\73e80d0794c39665aec3f62eee88ca91676674ef\librarylwjglopenal-20100824.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.paulscode\soundsystem\20120107\419c05fe9be71f792b2d76cfc9b67f1ed0fec7f6\soundsystem-20120107.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\io.netty\netty-all\4.0.10.Final\9e50bd52ffe257a0e2cd8d971688d6ce7d174325\netty-all-4.0.10.Final.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.google.guava\guava\17.0\9c6ef172e8de35fd8d4d8783e4821e57cdef7445\guava-17.0.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.apache.commons\commons-lang3\3.3.2\90a3822c38ec8c996e84c16a3477ef632cbc87a3\commons-lang3-3.3.2.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\commons-io\commons-io\2.4\b1b6ea3b7e4aa4f492509a4952029cd8e48019ad\commons-io-2.4.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\commons-codec\commons-codec\1.9\9ce04e34240f674bc72680f8b843b1457383161a\commons-codec-1.9.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\net.java.jinput\jinput\2.0.5\39c7796b469a600f72380316f6b1f11db6c2c7c4\jinput-2.0.5.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\net.java.jutils\jutils\1.0.0\e12fe1fda814bd348c1579329c86943d2cd3c6a6\jutils-1.0.0.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.google.code.gson\gson\2.2.4\a60a5e993c98c864010053cb901b7eab25306568\gson-2.2.4.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.mojang\authlib\1.5.16\ef1582b11fd0943d069cdcb72e99008ac209a283\authlib-1.5.16.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.apache.logging.log4j\log4j-api\2.0-beta9\1dd66e68cccd907880229f9e2de1314bd13ff785\log4j-api-2.0-beta9.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.apache.logging.log4j\log4j-core\2.0-beta9\678861ba1b2e1fccb594bb0ca03114bb05da9695\log4j-core-2.0-beta9.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.lwjgl.lwjgl\lwjgl\2.9.1\f58c5aabcef0e41718a564be9f8e412fff8db847\lwjgl-2.9.1.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.lwjgl.lwjgl\lwjgl_util\2.9.1\290d7ba8a1bd9566f5ddf16ad06f09af5ec9b20e\lwjgl_util-2.9.1.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\tv.twitch\twitch\5.16\1f55f009c61637c10c0acfb8b5ffc600f30044b4\twitch-5.16.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang\scala-actors\2.11.0\8ccfb6541de179bb1c4d45cf414acee069b7f78b\scala-actors-2.11.0.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang.modules\scala-xml_2.11\1.0.2\820fbca7e524b530fdadc594c39d49a21ea0337e\scala-xml_2.11-1.0.2.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang.modules\scala-parser-combinators_2.11\1.0.1\f05d7345bf5a58924f2837c6c1f4d73a938e1ff0\scala-parser-combinators_2.11-1.0.1.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\net.java.jinput\jinput-platform\2.0.5\7ff832a6eb9ab6a767f1ade2b548092d0fa64795\jinput-platform-2.0.5-natives-linux.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\net.java.jinput\jinput-platform\2.0.5\385ee093e01f587f30ee1c8a2ee7d408fd732e16\jinput-platform-2.0.5-natives-windows.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\net.java.jinput\jinput-platform\2.0.5\53f9c919f34d2ca9de8c51fc4e1e8282029a9232\jinput-platform-2.0.5-natives-osx.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\tv.twitch\twitch-platform\5.16\7c6affe439099806a4f552da14c42f9d643d8b23\twitch-platform-5.16-natives-windows-32.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\tv.twitch\twitch-platform\5.16\39d0c3d363735b4785598e0e7fbf8297c706a9f9\twitch-platform-5.16-natives-windows-64.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\tv.twitch\twitch-platform\5.16\62503ee712766cf77f97252e5902786fd834b8c5\twitch-platform-5.16-natives-osx.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\tv.twitch\twitch-external-platform\4.5\18215140f010c05b9f86ef6f0f8871954d2ccebf\twitch-external-platform-4.5-natives-windows-32.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\tv.twitch\twitch-external-platform\4.5\c3cde57891b935d41b6680a9c5e1502eeab76d86\twitch-external-platform-4.5-natives-windows-64.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.lwjgl.lwjgl\lwjgl-platform\2.9.1\4c517eca808522457dd95ee8fc1fbcdbb602efbe\lwjgl-platform-2.9.1-natives-windows.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.lwjgl.lwjgl\lwjgl-platform\2.9.1\aa9aae879af8eb378e22cfc64db56ec2ca9a44d1\lwjgl-platform-2.9.1-natives-linux.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.lwjgl.lwjgl\lwjgl-platform\2.9.1\2d12c83fdfbc04ecabf02c7bc8cc54d034f0daac\lwjgl-platform-2.9.1-natives-osx.jar;C:\Users\Jordan\.gradle\caches\minecraft\net\minecraftforge\forge\1.7.10-10.13.4.1448-1.7.10\start;C:\eclipse\workspace\Gregtech\bin;C:\eclipse\workspace\Gregtech\libs\dev\industrialcraft-2-2.2.720-experimental-dev.jar;C:\eclipse\workspace\Gregtech\libs\API.jar;C:\eclipse\workspace\Gregtech\libs\appliedenergistics2-rv2-stable-1.jar;C:\eclipse\workspace\Gregtech\libs\EnderIO-1.7.10-2.2.8.381-dev.jar;C:\eclipse\workspace\Gregtech\libs\dev\NotEnoughItems-1.7.10-1.0.4.107-dev.jar;C:\eclipse\workspace\Gregtech\libs\dev\1.7.10\CodeChickenLib-1.7.10-1.1.3.136-dev.jar;C:\eclipse\workspace\Gregtech\mods\CodeChickenCore-1.7.10-1.0.6.44-dev.jar
+[13:36:53] [main/DEBUG] [FML/]: Java library path at launch is C:\Program Files\Java\jdk1.7.0_79\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:/Program Files/Java/jre1.8.0_60/bin/server;C:/Program Files/Java/jre1.8.0_60/bin;C:/Program Files/Java/jre1.8.0_60/lib/amd64;C:\ProgramData\Oracle\Java\javapath;C:\Program Files (x86)\Intel\iCLS Client\;C:\Program Files\Intel\iCLS Client\;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files\FileBot\;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files (x86)\Paragon Software\Paragon ExtFS for Windows;C:\Program Files (x86)\Skype\Phone\;C:\eclipse;;.;C:/Users/Jordan/.gradle/caches/minecraft/net/minecraft/minecraft_natives/1.7.10
+[13:36:53] [main/INFO] [FML/]: Managed to load a deobfuscated Minecraft name- we are in a deobfuscated environment. Skipping runtime deobfuscation
+[13:36:53] [main/DEBUG] [FML/]: Instantiating coremod class FMLCorePlugin
+[13:36:53] [main/DEBUG] [FML/]: Added access transformer class cpw.mods.fml.common.asm.transformers.AccessTransformer to enqueued access transformers
+[13:36:53] [main/DEBUG] [FML/]: Enqueued coremod FMLCorePlugin
+[13:36:53] [main/DEBUG] [FML/]: Instantiating coremod class FMLForgePlugin
+[13:36:53] [main/DEBUG] [FML/]: Added access transformer class net.minecraftforge.transformers.ForgeAccessTransformer to enqueued access transformers
+[13:36:53] [main/DEBUG] [FML/]: Enqueued coremod FMLForgePlugin
+[13:36:53] [main/DEBUG] [FML/]: All fundamental core mods are successfully located
+[13:36:53] [main/INFO] [FML/]: Found a command line coremod : codechicken.nei.asm.NEICorePlugin
+[13:36:53] [main/DEBUG] [FML/]: Instantiating coremod class NEICorePlugin
+[13:36:53] [main/WARN] [FML/]: The coremod codechicken.nei.asm.NEICorePlugin does not have a MCVersion annotation, it may cause issues with this version of Minecraft
+[13:36:53] [main/DEBUG] [FML/]: Enqueued coremod NEICorePlugin
+[13:36:53] [main/INFO] [FML/]: Found a command line coremod : codechicken.core.launch.CodeChickenCorePlugin
+[13:36:53] [main/DEBUG] [FML/]: Instantiating coremod class CodeChickenCorePlugin
+[13:36:53] [main/WARN] [FML/]: The coremod codechicken.core.launch.CodeChickenCorePlugin does not have a MCVersion annotation, it may cause issues with this version of Minecraft
+[13:36:53] [main/DEBUG] [FML/]: Added access transformer class codechicken.core.asm.CodeChickenAccessTransformer to enqueued access transformers
+[13:36:53] [main/DEBUG] [FML/]: Enqueued coremod CodeChickenCorePlugin
+[13:36:53] [main/INFO] [FML/]: Found a command line coremod : ic2.core.coremod.IC2core
+[13:36:53] [main/DEBUG] [FML/]: Instantiating coremod class IC2core
+[13:36:54] [main/WARN] [FML/]: The coremod ic2.core.coremod.IC2core does not have a MCVersion annotation, it may cause issues with this version of Minecraft
+[13:36:54] [main/DEBUG] [FML/]: Enqueued coremod IC2core
+[13:36:54] [main/INFO] [FML/]: Found a command line coremod : appeng.transformer.AppEngCore
+[13:36:54] [main/DEBUG] [FML/]: Instantiating coremod class AppEngCore
+[13:36:54] [main/DEBUG] [FML/]: The coremod appeng.transformer.AppEngCore requested minecraft version 1.7.10 and minecraft is 1.7.10. It will be loaded.
+[13:36:54] [main/INFO] [FML/]: [AppEng] Core Init
+[13:36:54] [main/DEBUG] [FML/]: Added access transformer class appeng.transformer.asm.ASMTweaker to enqueued access transformers
+[13:36:54] [main/DEBUG] [FML/]: Enqueued coremod AppEngCore
+[13:36:54] [main/DEBUG] [FML/]: Attempting to load commandline specified mods, relative to C:\eclipse\workspace\MiscUtil\.
+[13:36:54] [main/DEBUG] [FML/]: Discovering coremods
+[13:36:54] [main/INFO] [LaunchWrapper/]: Calling tweak class net.minecraftforge.gradle.tweakers.CoremodTweaker
+[13:36:54] [main/INFO] [GradleStart/]: Injecting location in coremod cpw.mods.fml.relauncher.FMLCorePlugin
+[13:36:54] [main/INFO] [GradleStart/]: Injecting location in coremod net.minecraftforge.classloading.FMLForgePlugin
+[13:36:54] [main/INFO] [GradleStart/]: Injecting location in coremod codechicken.core.asm.MCPDeobfuscationTransformer.LoadPlugin
+[13:36:54] [main/INFO] [GradleStart/]: Injecting location in coremod codechicken.nei.asm.NEICorePlugin
+[13:36:54] [main/INFO] [GradleStart/]: Injecting location in coremod codechicken.core.launch.CodeChickenCorePlugin
+[13:36:54] [main/INFO] [GradleStart/]: Injecting location in coremod ic2.core.coremod.IC2core
+[13:36:54] [main/INFO] [GradleStart/]: Injecting location in coremod appeng.transformer.AppEngCore
+[13:36:54] [main/INFO] [LaunchWrapper/]: Loading tweak class name cpw.mods.fml.common.launcher.FMLInjectionAndSortingTweaker
+[13:36:54] [main/INFO] [LaunchWrapper/]: Loading tweak class name cpw.mods.fml.common.launcher.FMLDeobfTweaker
+[13:36:54] [main/INFO] [LaunchWrapper/]: Loading tweak class name net.minecraftforge.gradle.tweakers.AccessTransformerTweaker
+[13:36:54] [main/INFO] [LaunchWrapper/]: Calling tweak class cpw.mods.fml.common.launcher.FMLInjectionAndSortingTweaker
+[13:36:54] [main/INFO] [LaunchWrapper/]: Calling tweak class cpw.mods.fml.common.launcher.FMLInjectionAndSortingTweaker
+[13:36:54] [main/INFO] [LaunchWrapper/]: Calling tweak class cpw.mods.fml.relauncher.CoreModManager$FMLPluginWrapper
+[13:36:54] [main/DEBUG] [FML/]: Injecting coremod FMLCorePlugin {cpw.mods.fml.relauncher.FMLCorePlugin} class transformers
+[13:36:54] [main/TRACE] [FML/]: Registering transformer cpw.mods.fml.common.asm.transformers.MarkerTransformer
+[13:36:54] [main/TRACE] [FML/]: Registering transformer cpw.mods.fml.common.asm.transformers.SideTransformer
+[13:36:54] [main/TRACE] [FML/]: Registering transformer cpw.mods.fml.common.asm.transformers.EventSubscriptionTransformer
+[13:36:54] [main/DEBUG] [FML/]: Injection complete
+[13:36:54] [main/DEBUG] [FML/]: Running coremod plugin for FMLCorePlugin {cpw.mods.fml.relauncher.FMLCorePlugin}
+[13:36:54] [main/DEBUG] [FML/]: Running coremod plugin FMLCorePlugin
+[13:36:54] [main/ERROR] [FML/]: The binary patch set is missing. Either you are in a development environment, or things are not going to work!
+[13:36:56] [main/ERROR] [FML/]: FML appears to be missing any signature data. This is not a good thing
+[13:36:56] [main/DEBUG] [FML/]: Coremod plugin class FMLCorePlugin run successfully
+[13:36:56] [main/INFO] [LaunchWrapper/]: Calling tweak class cpw.mods.fml.relauncher.CoreModManager$FMLPluginWrapper
+[13:36:56] [main/DEBUG] [FML/]: Injecting coremod FMLForgePlugin {net.minecraftforge.classloading.FMLForgePlugin} class transformers
+[13:36:56] [main/TRACE] [FML/]: Registering transformer net.minecraftforge.classloading.FluidIdTransformer
+[13:36:56] [main/DEBUG] [FML/]: Injection complete
+[13:36:56] [main/DEBUG] [FML/]: Running coremod plugin for FMLForgePlugin {net.minecraftforge.classloading.FMLForgePlugin}
+[13:36:56] [main/DEBUG] [FML/]: Running coremod plugin FMLForgePlugin
+[13:36:56] [main/DEBUG] [FML/]: Coremod plugin class FMLForgePlugin run successfully
+[13:36:56] [main/INFO] [LaunchWrapper/]: Calling tweak class cpw.mods.fml.relauncher.CoreModManager$FMLPluginWrapper
+[13:36:56] [main/DEBUG] [FML/]: Injecting coremod CCCDeobfPlugin {codechicken.core.asm.MCPDeobfuscationTransformer$LoadPlugin} class transformers
+[13:36:56] [main/DEBUG] [FML/]: Injection complete
+[13:36:56] [main/DEBUG] [FML/]: Running coremod plugin for CCCDeobfPlugin {codechicken.core.asm.MCPDeobfuscationTransformer$LoadPlugin}
+[13:36:56] [main/DEBUG] [FML/]: Running coremod plugin CCCDeobfPlugin
+[13:36:56] [main/DEBUG] [FML/]: Coremod plugin class LoadPlugin run successfully
+[13:36:56] [main/INFO] [LaunchWrapper/]: Calling tweak class cpw.mods.fml.relauncher.CoreModManager$FMLPluginWrapper
+[13:36:56] [main/DEBUG] [FML/]: Injecting coremod NEICorePlugin {codechicken.nei.asm.NEICorePlugin} class transformers
+[13:36:56] [main/TRACE] [FML/]: Registering transformer codechicken.nei.asm.NEITransformer
+[13:36:56] [main/DEBUG] [FML/]: Injection complete
+[13:36:56] [main/DEBUG] [FML/]: Running coremod plugin for NEICorePlugin {codechicken.nei.asm.NEICorePlugin}
+[13:36:56] [main/DEBUG] [FML/]: Running coremod plugin NEICorePlugin
+[13:36:56] [main/DEBUG] [FML/]: Coremod plugin class NEICorePlugin run successfully
+[13:36:56] [main/INFO] [LaunchWrapper/]: Calling tweak class cpw.mods.fml.relauncher.CoreModManager$FMLPluginWrapper
+[13:36:56] [main/DEBUG] [FML/]: Injecting coremod CodeChickenCorePlugin {codechicken.core.launch.CodeChickenCorePlugin} class transformers
+[13:36:56] [main/TRACE] [FML/]: Registering transformer codechicken.lib.asm.ClassHeirachyManager
+[13:36:56] [main/TRACE] [FML/]: Registering transformer codechicken.core.asm.InterfaceDependancyTransformer
+[13:36:56] [main/TRACE] [FML/]: Registering transformer codechicken.core.asm.TweakTransformer
+[13:36:56] [main/TRACE] [FML/]: Registering transformer codechicken.core.asm.DelegatedTransformer
+[13:36:56] [main/TRACE] [FML/]: Registering transformer codechicken.core.asm.DefaultImplementationTransformer
+[13:36:56] [main/DEBUG] [FML/]: Injection complete
+[13:36:56] [main/DEBUG] [FML/]: Running coremod plugin for CodeChickenCorePlugin {codechicken.core.launch.CodeChickenCorePlugin}
+[13:36:56] [main/DEBUG] [FML/]: Running coremod plugin CodeChickenCorePlugin
+[13:36:56] [main/DEBUG] [FML/]: Coremod plugin class CodeChickenCorePlugin run successfully
+[13:36:56] [main/INFO] [LaunchWrapper/]: Calling tweak class cpw.mods.fml.relauncher.CoreModManager$FMLPluginWrapper
+[13:36:56] [main/DEBUG] [FML/]: Injecting coremod IC2core {ic2.core.coremod.IC2core} class transformers
+[13:36:56] [main/DEBUG] [FML/]: Injection complete
+[13:36:56] [main/DEBUG] [FML/]: Running coremod plugin for IC2core {ic2.core.coremod.IC2core}
+[13:36:56] [main/DEBUG] [FML/]: Running coremod plugin IC2core
+[13:36:56] [main/INFO] [IC2-core/]: Extracted library EJML-core-0.26.jar.
+[13:36:56] [main/INFO] [IC2-core/]: Loaded library EJML-core-0.26.jar.
+[13:36:56] [main/DEBUG] [FML/]: Coremod plugin class IC2core run successfully
+[13:36:56] [main/INFO] [LaunchWrapper/]: Calling tweak class cpw.mods.fml.relauncher.CoreModManager$FMLPluginWrapper
+[13:36:56] [main/DEBUG] [FML/]: Injecting coremod AppEngCore {appeng.transformer.AppEngCore} class transformers
+[13:36:56] [main/TRACE] [FML/]: Registering transformer appeng.transformer.asm.ASMIntegration
+[13:36:56] [main/DEBUG] [FML/]: Injection complete
+[13:36:56] [main/DEBUG] [FML/]: Running coremod plugin for AppEngCore {appeng.transformer.AppEngCore}
+[13:36:56] [main/DEBUG] [FML/]: Running coremod plugin AppEngCore
+[13:36:56] [main/DEBUG] [FML/]: Coremod plugin class AppEngCore run successfully
+[13:36:56] [main/INFO] [LaunchWrapper/]: Calling tweak class cpw.mods.fml.common.launcher.FMLDeobfTweaker
+[13:36:56] [main/DEBUG] [FML/]: Loaded 57 rules from AccessTransformer config file fml_at.cfg
+[13:36:56] [main/DEBUG] [FML/]: Loaded 89 rules from AccessTransformer config file forge_at.cfg
+[13:36:56] [main/DEBUG] [FML/]: Loaded 57 rules from AccessTransformer config file fml_at.cfg
+[13:36:56] [main/DEBUG] [FML/]: Loaded 11 rules from AccessTransformer mod jar file C:\eclipse\workspace\Gregtech\libs\dev\NotEnoughItems-1.7.10-1.0.4.107-dev.jar!META-INF/nei_at.cfg
+
+[13:36:56] [main/DEBUG] [FML/]: Validating minecraft
+[13:36:57] [main/DEBUG] [FML/]: Minecraft validated, launching...
+[13:36:57] [main/INFO] [LaunchWrapper/]: Calling tweak class net.minecraftforge.gradle.tweakers.AccessTransformerTweaker
+[13:36:57] [main/DEBUG] [GradleStart/]: Reading CSV file: C:\Users\Jordan\.gradle\caches\minecraft\net\minecraftforge\forge\1.7.10-10.13.4.1448-1.7.10\unpacked\conf\fields.csv
+[13:36:57] [main/DEBUG] [GradleStart/]: Reading CSV file: C:\Users\Jordan\.gradle\caches\minecraft\net\minecraftforge\forge\1.7.10-10.13.4.1448-1.7.10\unpacked\conf\methods.csv
+[13:36:57] [main/INFO] [GradleStart/]: Remapping AccessTransformer rules...
+[13:36:57] [main/INFO] [LaunchWrapper/]: Loading tweak class name cpw.mods.fml.common.launcher.TerminalTweaker
+[13:36:57] [main/INFO] [LaunchWrapper/]: Calling tweak class cpw.mods.fml.common.launcher.TerminalTweaker
+[13:36:57] [main/INFO] [LaunchWrapper/]: Launching wrapped minecraft {net.minecraft.client.main.Main}
+[13:36:58] [main/DEBUG] [CCL ASM/]: Inserted super call into [net/minecraft/client/renderer/InventoryEffectRenderer.updateScreen()V]
+[13:36:58] [main/DEBUG] [CCL ASM/]: Writing method [net/minecraft/client/gui/inventory/GuiContainer.setWorldAndResolution(Lnet/minecraft/client/Minecraft;II)V]
+[13:36:58] [main/DEBUG] [CCL ASM/]: Writing method [net/minecraft/client/gui/inventory/GuiContainer.handleKeyboardInput()V]
+[13:36:58] [main/DEBUG] [CCL ASM/]: Writing method [net/minecraft/client/gui/inventory/GuiContainer.handleKeyboardInput()V]
+[13:36:58] [main/DEBUG] [CCL ASM/]: Writing method [net/minecraft/client/gui/inventory/GuiContainer.handleKeyboardInput()V]
+[13:36:58] [main/DEBUG] [CCL ASM/]: Writing method [net/minecraft/client/gui/inventory/GuiContainer.handleMouseInput()V]
+[13:36:58] [main/DEBUG] [CCL ASM/]: Writing method [net/minecraft/client/gui/inventory/GuiContainer.public_func_73869_a(CI)V]
+[13:36:58] [main/DEBUG] [CCL ASM/]: Writing method [net/minecraft/client/gui/inventory/GuiContainer.public_func_146984_a(Lnet/minecraft/inventory/Slot;III)V]
+[13:36:58] [main/DEBUG] [CCL ASM/]: Injecting before method [net/minecraft/client/gui/inventory/GuiContainer.drawScreen(IIF)V]
+[13:36:58] [main/DEBUG] [CCL ASM/]: Injecting after method [net/minecraft/client/gui/inventory/GuiContainer.drawScreen(IIF)V] @ 138 - 140
+[13:36:58] [main/ERROR] [LaunchWrapper/]: Unable to launch
+java.lang.reflect.InvocationTargetException
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.7.0_79]
+ at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) ~[?:1.7.0_79]
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.7.0_79]
+ at java.lang.reflect.Method.invoke(Method.java:606) ~[?:1.7.0_79]
+ at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.11.jar:?]
+ at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.11.jar:?]
+ at net.minecraftforge.gradle.GradleStartCommon.launch(Unknown Source) [start/:?]
+ at GradleStart.main(Unknown Source) [start/:?]
+Caused by: java.lang.NoClassDefFoundError: net/minecraft/client/gui/inventory/GuiInventory
+ at net.minecraft.client.main.Main.main(Main.java:79) ~[Main.class:?]
+ ... 8 more
+Caused by: java.lang.ClassNotFoundException: net.minecraft.client.gui.inventory.GuiInventory
+ at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:191) ~[launchwrapper-1.11.jar:?]
+ at java.lang.ClassLoader.loadClass(ClassLoader.java:425) ~[?:1.7.0_79]
+ at java.lang.ClassLoader.loadClass(ClassLoader.java:358) ~[?:1.7.0_79]
+ at net.minecraft.client.main.Main.main(Main.java:79) ~[Main.class:?]
+ ... 8 more
+Caused by: java.lang.NoClassDefFoundError: net/minecraft/client/renderer/InventoryEffectRenderer
+ at java.lang.ClassLoader.defineClass1(Native Method) ~[?:1.7.0_79]
+ at java.lang.ClassLoader.defineClass(ClassLoader.java:800) ~[?:1.7.0_79]
+ at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) ~[?:1.7.0_79]
+ at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:182) ~[launchwrapper-1.11.jar:?]
+ at java.lang.ClassLoader.loadClass(ClassLoader.java:425) ~[?:1.7.0_79]
+ at java.lang.ClassLoader.loadClass(ClassLoader.java:358) ~[?:1.7.0_79]
+ at net.minecraft.client.main.Main.main(Main.java:79) ~[Main.class:?]
+ ... 8 more
+Caused by: java.lang.ClassNotFoundException: net.minecraft.client.renderer.InventoryEffectRenderer
+ at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:191) ~[launchwrapper-1.11.jar:?]
+ at java.lang.ClassLoader.loadClass(ClassLoader.java:425) ~[?:1.7.0_79]
+ at java.lang.ClassLoader.loadClass(ClassLoader.java:358) ~[?:1.7.0_79]
+ at java.lang.ClassLoader.defineClass1(Native Method) ~[?:1.7.0_79]
+ at java.lang.ClassLoader.defineClass(ClassLoader.java:800) ~[?:1.7.0_79]
+ at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) ~[?:1.7.0_79]
+ at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:182) ~[launchwrapper-1.11.jar:?]
+ at java.lang.ClassLoader.loadClass(ClassLoader.java:425) ~[?:1.7.0_79]
+ at java.lang.ClassLoader.loadClass(ClassLoader.java:358) ~[?:1.7.0_79]
+ at net.minecraft.client.main.Main.main(Main.java:79) ~[Main.class:?]
+ ... 8 more
+Caused by: java.lang.NoClassDefFoundError: net/minecraft/client/gui/inventory/GuiContainer
+ at java.lang.ClassLoader.defineClass1(Native Method) ~[?:1.7.0_79]
+ at java.lang.ClassLoader.defineClass(ClassLoader.java:800) ~[?:1.7.0_79]
+ at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) ~[?:1.7.0_79]
+ at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:182) ~[launchwrapper-1.11.jar:?]
+ at java.lang.ClassLoader.loadClass(ClassLoader.java:425) ~[?:1.7.0_79]
+ at java.lang.ClassLoader.loadClass(ClassLoader.java:358) ~[?:1.7.0_79]
+ at java.lang.ClassLoader.defineClass1(Native Method) ~[?:1.7.0_79]
+ at java.lang.ClassLoader.defineClass(ClassLoader.java:800) ~[?:1.7.0_79]
+ at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) ~[?:1.7.0_79]
+ at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:182) ~[launchwrapper-1.11.jar:?]
+ at java.lang.ClassLoader.loadClass(ClassLoader.java:425) ~[?:1.7.0_79]
+ at java.lang.ClassLoader.loadClass(ClassLoader.java:358) ~[?:1.7.0_79]
+ at net.minecraft.client.main.Main.main(Main.java:79) ~[Main.class:?]
+ ... 8 more
+Caused by: java.lang.ClassNotFoundException: net.minecraft.client.gui.inventory.GuiContainer
+ at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:191) ~[launchwrapper-1.11.jar:?]
+ at java.lang.ClassLoader.loadClass(ClassLoader.java:425) ~[?:1.7.0_79]
+ at java.lang.ClassLoader.loadClass(ClassLoader.java:358) ~[?:1.7.0_79]
+ at java.lang.ClassLoader.defineClass1(Native Method) ~[?:1.7.0_79]
+ at java.lang.ClassLoader.defineClass(ClassLoader.java:800) ~[?:1.7.0_79]
+ at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) ~[?:1.7.0_79]
+ at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:182) ~[launchwrapper-1.11.jar:?]
+ at java.lang.ClassLoader.loadClass(ClassLoader.java:425) ~[?:1.7.0_79]
+ at java.lang.ClassLoader.loadClass(ClassLoader.java:358) ~[?:1.7.0_79]
+ at java.lang.ClassLoader.defineClass1(Native Method) ~[?:1.7.0_79]
+ at java.lang.ClassLoader.defineClass(ClassLoader.java:800) ~[?:1.7.0_79]
+ at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) ~[?:1.7.0_79]
+ at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:182) ~[launchwrapper-1.11.jar:?]
+ at java.lang.ClassLoader.loadClass(ClassLoader.java:425) ~[?:1.7.0_79]
+ at java.lang.ClassLoader.loadClass(ClassLoader.java:358) ~[?:1.7.0_79]
+ at net.minecraft.client.main.Main.main(Main.java:79) ~[Main.class:?]
+ ... 8 more
+Caused by: java.lang.RuntimeException: java.lang.RuntimeException: Error transforming method: [net/minecraft/client/gui/inventory/GuiContainer.drawScreen(IIF)V]
+ at codechicken.nei.asm.NEITransformer.transform(NEITransformer.java:242) ~[NotEnoughItems-1.7.10-1.0.4.107-dev.jar:?]
+ at net.minecraft.launchwrapper.LaunchClassLoader.runTransformers(LaunchClassLoader.java:279) ~[launchwrapper-1.11.jar:?]
+ at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:176) ~[launchwrapper-1.11.jar:?]
+ at java.lang.ClassLoader.loadClass(ClassLoader.java:425) ~[?:1.7.0_79]
+ at java.lang.ClassLoader.loadClass(ClassLoader.java:358) ~[?:1.7.0_79]
+ at java.lang.ClassLoader.defineClass1(Native Method) ~[?:1.7.0_79]
+ at java.lang.ClassLoader.defineClass(ClassLoader.java:800) ~[?:1.7.0_79]
+ at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) ~[?:1.7.0_79]
+ at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:182) ~[launchwrapper-1.11.jar:?]
+ at java.lang.ClassLoader.loadClass(ClassLoader.java:425) ~[?:1.7.0_79]
+ at java.lang.ClassLoader.loadClass(ClassLoader.java:358) ~[?:1.7.0_79]
+ at java.lang.ClassLoader.defineClass1(Native Method) ~[?:1.7.0_79]
+ at java.lang.ClassLoader.defineClass(ClassLoader.java:800) ~[?:1.7.0_79]
+ at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) ~[?:1.7.0_79]
+ at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:182) ~[launchwrapper-1.11.jar:?]
+ at java.lang.ClassLoader.loadClass(ClassLoader.java:425) ~[?:1.7.0_79]
+ at java.lang.ClassLoader.loadClass(ClassLoader.java:358) ~[?:1.7.0_79]
+ at net.minecraft.client.main.Main.main(Main.java:79) ~[Main.class:?]
+ ... 8 more
+Caused by: java.lang.RuntimeException: Error transforming method: [net/minecraft/client/gui/inventory/GuiContainer.drawScreen(IIF)V]
+ at codechicken.lib.asm.ModularASMTransformer$MethodTransformer.transform(ModularASMTransformer.java:90) ~[CodeChickenLib-1.7.10-1.1.3.136-dev.jar:?]
+ at codechicken.lib.asm.ModularASMTransformer$ClassNodeTransformerList.transform(ModularASMTransformer.java:36) ~[CodeChickenLib-1.7.10-1.1.3.136-dev.jar:?]
+ at codechicken.lib.asm.ModularASMTransformer.transform(ModularASMTransformer.java:283) ~[CodeChickenLib-1.7.10-1.1.3.136-dev.jar:?]
+ at codechicken.nei.asm.NEITransformer.transform(NEITransformer.java:240) ~[NotEnoughItems-1.7.10-1.0.4.107-dev.jar:?]
+ at net.minecraft.launchwrapper.LaunchClassLoader.runTransformers(LaunchClassLoader.java:279) ~[launchwrapper-1.11.jar:?]
+ at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:176) ~[launchwrapper-1.11.jar:?]
+ at java.lang.ClassLoader.loadClass(ClassLoader.java:425) ~[?:1.7.0_79]
+ at java.lang.ClassLoader.loadClass(ClassLoader.java:358) ~[?:1.7.0_79]
+ at java.lang.ClassLoader.defineClass1(Native Method) ~[?:1.7.0_79]
+ at java.lang.ClassLoader.defineClass(ClassLoader.java:800) ~[?:1.7.0_79]
+ at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) ~[?:1.7.0_79]
+ at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:182) ~[launchwrapper-1.11.jar:?]
+ at java.lang.ClassLoader.loadClass(ClassLoader.java:425) ~[?:1.7.0_79]
+ at java.lang.ClassLoader.loadClass(ClassLoader.java:358) ~[?:1.7.0_79]
+ at java.lang.ClassLoader.defineClass1(Native Method) ~[?:1.7.0_79]
+ at java.lang.ClassLoader.defineClass(ClassLoader.java:800) ~[?:1.7.0_79]
+ at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) ~[?:1.7.0_79]
+ at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:182) ~[launchwrapper-1.11.jar:?]
+ at java.lang.ClassLoader.loadClass(ClassLoader.java:425) ~[?:1.7.0_79]
+ at java.lang.ClassLoader.loadClass(ClassLoader.java:358) ~[?:1.7.0_79]
+ at net.minecraft.client.main.Main.main(Main.java:79) ~[Main.class:?]
+ ... 8 more
+Caused by: java.lang.RuntimeException: Needle not found in Haystack:
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.manager : Lcodechicken/nei/guihook/GuiContainerManager;
+ INVOKEVIRTUAL codechicken/nei/guihook/GuiContainerManager.preDraw ()V
+ L0
+ LINENUMBER 90 L0
+ ALOAD 0
+ INVOKEVIRTUAL net/minecraft/client/gui/inventory/GuiContainer.drawDefaultBackground ()V
+ L1
+ LINENUMBER 91 L1
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.guiLeft : I
+ ISTORE 4
+ L2
+ LINENUMBER 92 L2
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.guiTop : I
+ ISTORE 5
+ L3
+ LINENUMBER 93 L3
+ ALOAD 0
+ FLOAD 3
+ ILOAD 1
+ ILOAD 2
+ INVOKEVIRTUAL net/minecraft/client/gui/inventory/GuiContainer.drawGuiContainerBackgroundLayer (FII)V
+ L4
+ LINENUMBER 94 L4
+ LDC 32826
+ INVOKESTATIC org/lwjgl/opengl/GL11.glDisable (I)V
+ L5
+ LINENUMBER 95 L5
+ INVOKESTATIC net/minecraft/client/renderer/RenderHelper.disableStandardItemLighting ()V
+ L6
+ LINENUMBER 96 L6
+ SIPUSH 2896
+ INVOKESTATIC org/lwjgl/opengl/GL11.glDisable (I)V
+ L7
+ LINENUMBER 97 L7
+ SIPUSH 2929
+ INVOKESTATIC org/lwjgl/opengl/GL11.glDisable (I)V
+ L8
+ LINENUMBER 98 L8
+ ALOAD 0
+ ILOAD 1
+ ILOAD 2
+ FLOAD 3
+ INVOKESPECIAL net/minecraft/client/gui/GuiScreen.drawScreen (IIF)V
+ L9
+ LINENUMBER 99 L9
+ INVOKESTATIC net/minecraft/client/renderer/RenderHelper.enableGUIStandardItemLighting ()V
+ L10
+ LINENUMBER 100 L10
+ INVOKESTATIC org/lwjgl/opengl/GL11.glPushMatrix ()V
+ L11
+ LINENUMBER 101 L11
+ ILOAD 4
+ I2F
+ ILOAD 5
+ I2F
+ FCONST_0
+ INVOKESTATIC org/lwjgl/opengl/GL11.glTranslatef (FFF)V
+ L12
+ LINENUMBER 102 L12
+ FCONST_1
+ FCONST_1
+ FCONST_1
+ FCONST_1
+ INVOKESTATIC org/lwjgl/opengl/GL11.glColor4f (FFFF)V
+ L13
+ LINENUMBER 103 L13
+ LDC 32826
+ INVOKESTATIC org/lwjgl/opengl/GL11.glEnable (I)V
+ L14
+ LINENUMBER 104 L14
+ ALOAD 0
+ ACONST_NULL
+ PUTFIELD net/minecraft/client/gui/inventory/GuiContainer.theSlot : Lnet/minecraft/inventory/Slot;
+ L15
+ LINENUMBER 105 L15
+ SIPUSH 240
+ ISTORE 6
+ L16
+ LINENUMBER 106 L16
+ SIPUSH 240
+ ISTORE 7
+ L17
+ LINENUMBER 107 L17
+ GETSTATIC net/minecraft/client/renderer/OpenGlHelper.lightmapTexUnit : I
+ ILOAD 6
+ I2F
+ FCONST_1
+ FDIV
+ ILOAD 7
+ I2F
+ FCONST_1
+ FDIV
+ INVOKESTATIC net/minecraft/client/renderer/OpenGlHelper.setLightmapTextureCoords (IFF)V
+ L18
+ LINENUMBER 108 L18
+ FCONST_1
+ FCONST_1
+ FCONST_1
+ FCONST_1
+ INVOKESTATIC org/lwjgl/opengl/GL11.glColor4f (FFFF)V
+ L19
+ LINENUMBER 111 L19
+ ICONST_0
+ ISTORE 8
+ L20
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer I I F I I I I I] []
+ ILOAD 8
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.inventorySlots : Lnet/minecraft/inventory/Container;
+ GETFIELD net/minecraft/inventory/Container.inventorySlots : Ljava/util/List;
+ INVOKEINTERFACE java/util/List.size ()I
+ IF_ICMPGE L21
+ L22
+ LINENUMBER 113 L22
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.inventorySlots : Lnet/minecraft/inventory/Container;
+ GETFIELD net/minecraft/inventory/Container.inventorySlots : Ljava/util/List;
+ ILOAD 8
+ INVOKEINTERFACE java/util/List.get (I)Ljava/lang/Object;
+ CHECKCAST net/minecraft/inventory/Slot
+ ASTORE 9
+ L23
+ LINENUMBER 114 L23
+ ALOAD 0
+ ALOAD 9
+ INVOKESPECIAL net/minecraft/client/gui/inventory/GuiContainer.func_146977_a (Lnet/minecraft/inventory/Slot;)V
+ L24
+ LINENUMBER 116 L24
+ ALOAD 0
+ ALOAD 9
+ ILOAD 1
+ ILOAD 2
+ INVOKESPECIAL net/minecraft/client/gui/inventory/GuiContainer.isMouseOverSlot (Lnet/minecraft/inventory/Slot;II)Z
+ IFEQ L25
+ ALOAD 9
+ INVOKEVIRTUAL net/minecraft/inventory/Slot.func_111238_b ()Z
+ IFEQ L25
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.manager : Lcodechicken/nei/guihook/GuiContainerManager;
+ ILOAD 1
+ ILOAD 2
+ INVOKEVIRTUAL codechicken/nei/guihook/GuiContainerManager.objectUnderMouse (II)Z
+ IFNE L25
+ L26
+ LINENUMBER 118 L26
+ ALOAD 0
+ ALOAD 9
+ PUTFIELD net/minecraft/client/gui/inventory/GuiContainer.theSlot : Lnet/minecraft/inventory/Slot;
+ L27
+ LINENUMBER 119 L27
+ SIPUSH 2896
+ INVOKESTATIC org/lwjgl/opengl/GL11.glDisable (I)V
+ L28
+ LINENUMBER 120 L28
+ SIPUSH 2929
+ INVOKESTATIC org/lwjgl/opengl/GL11.glDisable (I)V
+ L29
+ LINENUMBER 121 L29
+ ALOAD 9
+ GETFIELD net/minecraft/inventory/Slot.xDisplayPosition : I
+ ISTORE 10
+ L30
+ LINENUMBER 122 L30
+ ALOAD 9
+ GETFIELD net/minecraft/inventory/Slot.yDisplayPosition : I
+ ISTORE 11
+ L31
+ LINENUMBER 123 L31
+ ICONST_1
+ ICONST_1
+ ICONST_1
+ ICONST_0
+ INVOKESTATIC org/lwjgl/opengl/GL11.glColorMask (ZZZZ)V
+ L32
+ LINENUMBER 124 L32
+ ALOAD 0
+ ILOAD 10
+ ILOAD 11
+ ILOAD 10
+ BIPUSH 16
+ IADD
+ ILOAD 11
+ BIPUSH 16
+ IADD
+ LDC -2130706433
+ LDC -2130706433
+ INVOKEVIRTUAL net/minecraft/client/gui/inventory/GuiContainer.drawGradientRect (IIIIII)V
+ L33
+ LINENUMBER 125 L33
+ ICONST_1
+ ICONST_1
+ ICONST_1
+ ICONST_1
+ INVOKESTATIC org/lwjgl/opengl/GL11.glColorMask (ZZZZ)V
+ L34
+ LINENUMBER 126 L34
+ SIPUSH 2896
+ INVOKESTATIC org/lwjgl/opengl/GL11.glEnable (I)V
+ L35
+ LINENUMBER 127 L35
+ SIPUSH 2929
+ INVOKESTATIC org/lwjgl/opengl/GL11.glEnable (I)V
+ L25
+ LINENUMBER 111 L25
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer I I F I I I I I] []
+ IINC 8 1
+ GOTO L20
+ L21
+ LINENUMBER 133 L21
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer I I F I I I I] []
+ SIPUSH 2896
+ INVOKESTATIC org/lwjgl/opengl/GL11.glDisable (I)V
+ L36
+ LINENUMBER 134 L36
+ ALOAD 0
+ ILOAD 1
+ ILOAD 2
+ INVOKEVIRTUAL net/minecraft/client/gui/inventory/GuiContainer.drawGuiContainerForegroundLayer (II)V
+ L37
+ LINENUMBER 135 L37
+ SIPUSH 2896
+ INVOKESTATIC org/lwjgl/opengl/GL11.glEnable (I)V
+ L38
+ LINENUMBER 136 L38
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.mc : Lnet/minecraft/client/Minecraft;
+ GETFIELD net/minecraft/client/Minecraft.thePlayer : Lnet/minecraft/client/entity/EntityClientPlayerMP;
+ GETFIELD net/minecraft/client/entity/EntityClientPlayerMP.inventory : Lnet/minecraft/entity/player/InventoryPlayer;
+ ASTORE 8
+ L39
+ LINENUMBER 137 L39
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.draggedStack : Lnet/minecraft/item/ItemStack;
+ IFNONNULL L40
+ ALOAD 8
+ INVOKEVIRTUAL net/minecraft/entity/player/InventoryPlayer.getItemStack ()Lnet/minecraft/item/ItemStack;
+ GOTO L41
+ L40
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer I I F I I I I net/minecraft/entity/player/InventoryPlayer] []
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.draggedStack : Lnet/minecraft/item/ItemStack;
+ L41
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer I I F I I I I net/minecraft/entity/player/InventoryPlayer] [net/minecraft/item/ItemStack]
+ ASTORE 9
+ L42
+ LINENUMBER 139 L42
+ ALOAD 9
+ IFNULL L43
+ L44
+ LINENUMBER 141 L44
+ BIPUSH 8
+ ISTORE 10
+ L45
+ LINENUMBER 142 L45
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.draggedStack : Lnet/minecraft/item/ItemStack;
+ IFNONNULL L46
+ BIPUSH 8
+ GOTO L47
+ L46
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer I I F I I I I net/minecraft/entity/player/InventoryPlayer net/minecraft/item/ItemStack I] []
+ BIPUSH 16
+ L47
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer I I F I I I I net/minecraft/entity/player/InventoryPlayer net/minecraft/item/ItemStack I] [I]
+ ISTORE 11
+ L48
+ LINENUMBER 143 L48
+ ACONST_NULL
+ ASTORE 12
+ L49
+ LINENUMBER 145 L49
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.draggedStack : Lnet/minecraft/item/ItemStack;
+ IFNULL L50
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.isRightMouseClick : Z
+ IFEQ L50
+ L51
+ LINENUMBER 147 L51
+ ALOAD 9
+ INVOKEVIRTUAL net/minecraft/item/ItemStack.copy ()Lnet/minecraft/item/ItemStack;
+ ASTORE 9
+ L52
+ LINENUMBER 148 L52
+ ALOAD 9
+ ALOAD 9
+ GETFIELD net/minecraft/item/ItemStack.stackSize : I
+ I2F
+ FCONST_2
+ FDIV
+ INVOKESTATIC net/minecraft/util/MathHelper.ceiling_float_int (F)I
+ PUTFIELD net/minecraft/item/ItemStack.stackSize : I
+ GOTO L53
+ L50
+ LINENUMBER 150 L50
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer I I F I I I I net/minecraft/entity/player/InventoryPlayer net/minecraft/item/ItemStack I I java/lang/String] []
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.field_147007_t : Z
+ IFEQ L53
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.field_147008_s : Ljava/util/Set;
+ INVOKEINTERFACE java/util/Set.size ()I
+ ICONST_1
+ IF_ICMPLE L53
+ L54
+ LINENUMBER 152 L54
+ ALOAD 9
+ INVOKEVIRTUAL net/minecraft/item/ItemStack.copy ()Lnet/minecraft/item/ItemStack;
+ ASTORE 9
+ L55
+ LINENUMBER 153 L55
+ ALOAD 9
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.field_146996_I : I
+ PUTFIELD net/minecraft/item/ItemStack.stackSize : I
+ L56
+ LINENUMBER 155 L56
+ ALOAD 9
+ GETFIELD net/minecraft/item/ItemStack.stackSize : I
+ IFNE L53
+ L57
+ LINENUMBER 157 L57
+ NEW java/lang/StringBuilder
+ DUP
+ INVOKESPECIAL java/lang/StringBuilder.<init> ()V
+ LDC ""
+ INVOKEVIRTUAL java/lang/StringBuilder.append (Ljava/lang/String;)Ljava/lang/StringBuilder;
+ GETSTATIC net/minecraft/util/EnumChatFormatting.YELLOW : Lnet/minecraft/util/EnumChatFormatting;
+ INVOKEVIRTUAL java/lang/StringBuilder.append (Ljava/lang/Object;)Ljava/lang/StringBuilder;
+ LDC "0"
+ INVOKEVIRTUAL java/lang/StringBuilder.append (Ljava/lang/String;)Ljava/lang/StringBuilder;
+ INVOKEVIRTUAL java/lang/StringBuilder.toString ()Ljava/lang/String;
+ ASTORE 12
+ L53
+ LINENUMBER 161 L53
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer I I F I I I I net/minecraft/entity/player/InventoryPlayer net/minecraft/item/ItemStack I I java/lang/String] []
+ ALOAD 0
+ ALOAD 9
+ ILOAD 1
+ ILOAD 4
+ ISUB
+ ILOAD 10
+ ISUB
+ ILOAD 2
+ ILOAD 5
+ ISUB
+ ILOAD 11
+ ISUB
+ ALOAD 12
+ INVOKESPECIAL net/minecraft/client/gui/inventory/GuiContainer.drawItemStack (Lnet/minecraft/item/ItemStack;IILjava/lang/String;)V
+ L43
+ LINENUMBER 164 L43
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer I I F I I I I net/minecraft/entity/player/InventoryPlayer net/minecraft/item/ItemStack] []
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.returningStack : Lnet/minecraft/item/ItemStack;
+ IFNULL L58
+ L59
+ LINENUMBER 166 L59
+ INVOKESTATIC net/minecraft/client/Minecraft.getSystemTime ()J
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.returningStackTime : J
+ LSUB
+ L2F
+ LDC 100.0
+ FDIV
+ FSTORE 10
+ L60
+ LINENUMBER 168 L60
+ FLOAD 10
+ FCONST_1
+ FCMPL
+ IFLT L61
+ L62
+ LINENUMBER 170 L62
+ FCONST_1
+ FSTORE 10
+ L63
+ LINENUMBER 171 L63
+ ALOAD 0
+ ACONST_NULL
+ PUTFIELD net/minecraft/client/gui/inventory/GuiContainer.returningStack : Lnet/minecraft/item/ItemStack;
+ L61
+ LINENUMBER 174 L61
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer I I F I I I I net/minecraft/entity/player/InventoryPlayer net/minecraft/item/ItemStack F] []
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.returningStackDestSlot : Lnet/minecraft/inventory/Slot;
+ GETFIELD net/minecraft/inventory/Slot.xDisplayPosition : I
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.field_147011_y : I
+ ISUB
+ ISTORE 11
+ L64
+ LINENUMBER 175 L64
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.returningStackDestSlot : Lnet/minecraft/inventory/Slot;
+ GETFIELD net/minecraft/inventory/Slot.yDisplayPosition : I
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.field_147010_z : I
+ ISUB
+ ISTORE 12
+ L65
+ LINENUMBER 176 L65
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.field_147011_y : I
+ ILOAD 11
+ I2F
+ FLOAD 10
+ FMUL
+ F2I
+ IADD
+ ISTORE 13
+ L66
+ LINENUMBER 177 L66
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.field_147010_z : I
+ ILOAD 12
+ I2F
+ FLOAD 10
+ FMUL
+ F2I
+ IADD
+ ISTORE 14
+ L67
+ LINENUMBER 178 L67
+ ALOAD 0
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.returningStack : Lnet/minecraft/item/ItemStack;
+ ILOAD 13
+ ILOAD 14
+ ACONST_NULL
+ CHECKCAST java/lang/String
+ INVOKESPECIAL net/minecraft/client/gui/inventory/GuiContainer.drawItemStack (Lnet/minecraft/item/ItemStack;IILjava/lang/String;)V
+ L58
+ LINENUMBER 181 L58
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer I I F I I I I net/minecraft/entity/player/InventoryPlayer net/minecraft/item/ItemStack] []
+ INVOKESTATIC org/lwjgl/opengl/GL11.glPopMatrix ()V
+ L68
+ LINENUMBER 183 L68
+ ALOAD 8
+ INVOKEVIRTUAL net/minecraft/entity/player/InventoryPlayer.getItemStack ()Lnet/minecraft/item/ItemStack;
+ IFNONNULL L69
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.theSlot : Lnet/minecraft/inventory/Slot;
+ IFNULL L69
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.theSlot : Lnet/minecraft/inventory/Slot;
+ INVOKEVIRTUAL net/minecraft/inventory/Slot.getHasStack ()Z
+ IFEQ L69
+ L70
+ LINENUMBER 185 L70
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.theSlot : Lnet/minecraft/inventory/Slot;
+ INVOKEVIRTUAL net/minecraft/inventory/Slot.getStack ()Lnet/minecraft/item/ItemStack;
+ ASTORE 10
+ L71
+ LINENUMBER 186 L71
+ ALOAD 0
+ ALOAD 10
+ ILOAD 1
+ ILOAD 2
+ INVOKEVIRTUAL net/minecraft/client/gui/inventory/GuiContainer.renderToolTip (Lnet/minecraft/item/ItemStack;II)V
+ L69
+ LINENUMBER 189 L69
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer I I F I I I I net/minecraft/entity/player/InventoryPlayer net/minecraft/item/ItemStack] []
+ SIPUSH 2896
+ INVOKESTATIC org/lwjgl/opengl/GL11.glEnable (I)V
+ L72
+ LINENUMBER 190 L72
+ SIPUSH 2929
+ INVOKESTATIC org/lwjgl/opengl/GL11.glEnable (I)V
+ L73
+ LINENUMBER 191 L73
+ INVOKESTATIC net/minecraft/client/renderer/RenderHelper.enableStandardItemLighting ()V
+ L74
+ LINENUMBER 192 L74
+ RETURN
+ L75
+
+
+ INVOKEVIRTUAL net/minecraft/client/gui/inventory/GuiContainer.func_146979_b (II)V
+ SIPUSH 2896
+ INVOKESTATIC org/lwjgl/opengl/GL11.glEnable (I)V
+
+ at codechicken.lib.asm.InsnComparator.findN(InsnComparator.java:181) ~[CodeChickenLib-1.7.10-1.1.3.136-dev.jar:?]
+ at codechicken.lib.asm.InsnComparator.findN(InsnComparator.java:187) ~[CodeChickenLib-1.7.10-1.1.3.136-dev.jar:?]
+ at codechicken.lib.asm.ModularASMTransformer$MethodInjector.transform(ModularASMTransformer.java:199) ~[CodeChickenLib-1.7.10-1.1.3.136-dev.jar:?]
+ at codechicken.lib.asm.ModularASMTransformer$MethodTransformer.transform(ModularASMTransformer.java:88) ~[CodeChickenLib-1.7.10-1.1.3.136-dev.jar:?]
+ at codechicken.lib.asm.ModularASMTransformer$ClassNodeTransformerList.transform(ModularASMTransformer.java:36) ~[CodeChickenLib-1.7.10-1.1.3.136-dev.jar:?]
+ at codechicken.lib.asm.ModularASMTransformer.transform(ModularASMTransformer.java:283) ~[CodeChickenLib-1.7.10-1.1.3.136-dev.jar:?]
+ at codechicken.nei.asm.NEITransformer.transform(NEITransformer.java:240) ~[NotEnoughItems-1.7.10-1.0.4.107-dev.jar:?]
+ at net.minecraft.launchwrapper.LaunchClassLoader.runTransformers(LaunchClassLoader.java:279) ~[launchwrapper-1.11.jar:?]
+ at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:176) ~[launchwrapper-1.11.jar:?]
+ at java.lang.ClassLoader.loadClass(ClassLoader.java:425) ~[?:1.7.0_79]
+ at java.lang.ClassLoader.loadClass(ClassLoader.java:358) ~[?:1.7.0_79]
+ at java.lang.ClassLoader.defineClass1(Native Method) ~[?:1.7.0_79]
+ at java.lang.ClassLoader.defineClass(ClassLoader.java:800) ~[?:1.7.0_79]
+ at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) ~[?:1.7.0_79]
+ at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:182) ~[launchwrapper-1.11.jar:?]
+ at java.lang.ClassLoader.loadClass(ClassLoader.java:425) ~[?:1.7.0_79]
+ at java.lang.ClassLoader.loadClass(ClassLoader.java:358) ~[?:1.7.0_79]
+ at java.lang.ClassLoader.defineClass1(Native Method) ~[?:1.7.0_79]
+ at java.lang.ClassLoader.defineClass(ClassLoader.java:800) ~[?:1.7.0_79]
+ at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) ~[?:1.7.0_79]
+ at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:182) ~[launchwrapper-1.11.jar:?]
+ at java.lang.ClassLoader.loadClass(ClassLoader.java:425) ~[?:1.7.0_79]
+ at java.lang.ClassLoader.loadClass(ClassLoader.java:358) ~[?:1.7.0_79]
+ at net.minecraft.client.main.Main.main(Main.java:79) ~[Main.class:?]
+ ... 8 more
diff --git a/logs/fml-client-3.log b/logs/fml-client-3.log
new file mode 100644
index 0000000000..a7eaa6eeb2
--- /dev/null
+++ b/logs/fml-client-3.log
@@ -0,0 +1,756 @@
+[13:37:21] [main/DEBUG] [FML/]: Injecting tracing printstreams for STDOUT/STDERR.
+[13:37:21] [main/INFO] [FML/]: Forge Mod Loader version 7.99.16.1448 for Minecraft 1.7.10 loading
+[13:37:21] [main/INFO] [FML/]: Java is Java HotSpot(TM) 64-Bit Server VM, version 1.7.0_79, running on Windows 7:amd64:6.1, installed at C:\Program Files\Java\jdk1.7.0_79\jre
+[13:37:21] [main/DEBUG] [FML/]: Java classpath at launch is C:\eclipse\workspace\MiscUtil\bin;C:\eclipse\Forge\bin;C:\Users\Jordan\.gradle\caches\minecraft\net\minecraftforge\forge\1.7.10-10.13.4.1448-1.7.10\forgeSrc-1.7.10-10.13.4.1448-1.7.10.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\net.minecraft\launchwrapper\1.11\9c0592c6e1e9ea296a70948081bd4cc84dda1289\launchwrapper-1.11.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.google.code.findbugs\jsr305\1.3.9\40719ea6961c0cb6afaeb6a921eaa1f6afd4cfdf\jsr305-1.3.9.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.ow2.asm\asm-debug-all\5.0.3\f9e364ae2a66ce2a543012a4668856e84e5dab74\asm-debug-all-5.0.3.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.typesafe.akka\akka-actor_2.11\2.3.3\ed62e9fc709ca0f2ff1a3220daa8b70a2870078e\akka-actor_2.11-2.3.3.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.typesafe\config\1.2.1\f771f71fdae3df231bcd54d5ca2d57f0bf93f467\config-1.2.1.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang\scala-actors-migration_2.11\1.1.0\dfa8bc42b181d5b9f1a5dd147f8ae308b893eb6f\scala-actors-migration_2.11-1.1.0.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang\scala-compiler\2.11.1\56ea2e6c025e0821f28d73ca271218b8dd04926a\scala-compiler-2.11.1.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang.plugins\scala-continuations-library_2.11\1.0.2\e517c53a7e9acd6b1668c5a35eccbaa3bab9aac\scala-continuations-library_2.11-1.0.2.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang.plugins\scala-continuations-plugin_2.11.1\1.0.2\f361a3283452c57fa30c1ee69448995de23c60f7\scala-continuations-plugin_2.11.1-1.0.2.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang\scala-library\2.11.1\e11da23da3eabab9f4777b9220e60d44c1aab6a\scala-library-2.11.1.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang\scala-parser-combinators_2.11\1.0.1\f05d7345bf5a58924f2837c6c1f4d73a938e1ff0\scala-parser-combinators_2.11-1.0.1.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang\scala-reflect\2.11.1\6580347e61cc7f8e802941e7fde40fa83b8badeb\scala-reflect-2.11.1.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang\scala-swing_2.11\1.0.1\b1cdd92bd47b1e1837139c1c53020e86bb9112ae\scala-swing_2.11-1.0.1.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang\scala-xml_2.11\1.0.2\7a80ec00aec122fba7cd4e0d4cdd87ff7e4cb6d0\scala-xml_2.11-1.0.2.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\net.sf.jopt-simple\jopt-simple\4.5\6065cc95c661255349c1d0756657be17c29a4fd3\jopt-simple-4.5.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\lzma\lzma\0.0.1\521616dc7487b42bef0e803bd2fa3faf668101d7\lzma-0.0.1.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.mojang\realms\1.3.5\807ae355ee63583becd7ea60e76aab1532bb42e\realms-1.3.5.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.apache.commons\commons-compress\1.8.1\a698750c16740fd5b3871425f4cb3bbaa87f529d\commons-compress-1.8.1.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.apache.httpcomponents\httpclient\4.3.3\18f4247ff4572a074444572cee34647c43e7c9c7\httpclient-4.3.3.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\commons-logging\commons-logging\1.1.3\f6f66e966c70a83ffbdb6f17a0919eaf7c8aca7f\commons-logging-1.1.3.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.apache.httpcomponents\httpcore\4.3.2\31fbbff1ddbf98f3aa7377c94d33b0447c646b6e\httpcore-4.3.2.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\java3d\vecmath\1.3.1\a0ae4f51da409fa0c20fa0ca59e6bbc9413ae71d\vecmath-1.3.1.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\net.sf.trove4j\trove4j\3.0.3\42ccaf4761f0dfdfa805c9e340d99a755907e2dd\trove4j-3.0.3.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.ibm.icu\icu4j-core-mojang\51.2\63d216a9311cca6be337c1e458e587f99d382b84\icu4j-core-mojang-51.2.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.paulscode\codecjorbis\20101023\c73b5636faf089d9f00e8732a829577de25237ee\codecjorbis-20101023.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.paulscode\codecwav\20101023\12f031cfe88fef5c1dd36c563c0a3a69bd7261da\codecwav-20101023.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.paulscode\libraryjavasound\20101123\5c5e304366f75f9eaa2e8cca546a1fb6109348b3\libraryjavasound-20101123.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.paulscode\librarylwjglopenal\20100824\73e80d0794c39665aec3f62eee88ca91676674ef\librarylwjglopenal-20100824.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.paulscode\soundsystem\20120107\419c05fe9be71f792b2d76cfc9b67f1ed0fec7f6\soundsystem-20120107.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\io.netty\netty-all\4.0.10.Final\9e50bd52ffe257a0e2cd8d971688d6ce7d174325\netty-all-4.0.10.Final.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.google.guava\guava\17.0\9c6ef172e8de35fd8d4d8783e4821e57cdef7445\guava-17.0.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.apache.commons\commons-lang3\3.3.2\90a3822c38ec8c996e84c16a3477ef632cbc87a3\commons-lang3-3.3.2.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\commons-io\commons-io\2.4\b1b6ea3b7e4aa4f492509a4952029cd8e48019ad\commons-io-2.4.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\commons-codec\commons-codec\1.9\9ce04e34240f674bc72680f8b843b1457383161a\commons-codec-1.9.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\net.java.jinput\jinput\2.0.5\39c7796b469a600f72380316f6b1f11db6c2c7c4\jinput-2.0.5.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\net.java.jutils\jutils\1.0.0\e12fe1fda814bd348c1579329c86943d2cd3c6a6\jutils-1.0.0.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.google.code.gson\gson\2.2.4\a60a5e993c98c864010053cb901b7eab25306568\gson-2.2.4.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.mojang\authlib\1.5.16\ef1582b11fd0943d069cdcb72e99008ac209a283\authlib-1.5.16.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.apache.logging.log4j\log4j-api\2.0-beta9\1dd66e68cccd907880229f9e2de1314bd13ff785\log4j-api-2.0-beta9.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.apache.logging.log4j\log4j-core\2.0-beta9\678861ba1b2e1fccb594bb0ca03114bb05da9695\log4j-core-2.0-beta9.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.lwjgl.lwjgl\lwjgl\2.9.1\f58c5aabcef0e41718a564be9f8e412fff8db847\lwjgl-2.9.1.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.lwjgl.lwjgl\lwjgl_util\2.9.1\290d7ba8a1bd9566f5ddf16ad06f09af5ec9b20e\lwjgl_util-2.9.1.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\tv.twitch\twitch\5.16\1f55f009c61637c10c0acfb8b5ffc600f30044b4\twitch-5.16.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang\scala-actors\2.11.0\8ccfb6541de179bb1c4d45cf414acee069b7f78b\scala-actors-2.11.0.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang.modules\scala-xml_2.11\1.0.2\820fbca7e524b530fdadc594c39d49a21ea0337e\scala-xml_2.11-1.0.2.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang.modules\scala-parser-combinators_2.11\1.0.1\f05d7345bf5a58924f2837c6c1f4d73a938e1ff0\scala-parser-combinators_2.11-1.0.1.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\net.java.jinput\jinput-platform\2.0.5\7ff832a6eb9ab6a767f1ade2b548092d0fa64795\jinput-platform-2.0.5-natives-linux.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\net.java.jinput\jinput-platform\2.0.5\385ee093e01f587f30ee1c8a2ee7d408fd732e16\jinput-platform-2.0.5-natives-windows.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\net.java.jinput\jinput-platform\2.0.5\53f9c919f34d2ca9de8c51fc4e1e8282029a9232\jinput-platform-2.0.5-natives-osx.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\tv.twitch\twitch-platform\5.16\7c6affe439099806a4f552da14c42f9d643d8b23\twitch-platform-5.16-natives-windows-32.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\tv.twitch\twitch-platform\5.16\39d0c3d363735b4785598e0e7fbf8297c706a9f9\twitch-platform-5.16-natives-windows-64.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\tv.twitch\twitch-platform\5.16\62503ee712766cf77f97252e5902786fd834b8c5\twitch-platform-5.16-natives-osx.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\tv.twitch\twitch-external-platform\4.5\18215140f010c05b9f86ef6f0f8871954d2ccebf\twitch-external-platform-4.5-natives-windows-32.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\tv.twitch\twitch-external-platform\4.5\c3cde57891b935d41b6680a9c5e1502eeab76d86\twitch-external-platform-4.5-natives-windows-64.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.lwjgl.lwjgl\lwjgl-platform\2.9.1\4c517eca808522457dd95ee8fc1fbcdbb602efbe\lwjgl-platform-2.9.1-natives-windows.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.lwjgl.lwjgl\lwjgl-platform\2.9.1\aa9aae879af8eb378e22cfc64db56ec2ca9a44d1\lwjgl-platform-2.9.1-natives-linux.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.lwjgl.lwjgl\lwjgl-platform\2.9.1\2d12c83fdfbc04ecabf02c7bc8cc54d034f0daac\lwjgl-platform-2.9.1-natives-osx.jar;C:\Users\Jordan\.gradle\caches\minecraft\net\minecraftforge\forge\1.7.10-10.13.4.1448-1.7.10\start;C:\eclipse\workspace\Gregtech\bin;C:\eclipse\workspace\Gregtech\libs\dev\industrialcraft-2-2.2.720-experimental-dev.jar;C:\eclipse\workspace\Gregtech\libs\API.jar;C:\eclipse\workspace\Gregtech\libs\appliedenergistics2-rv2-stable-1.jar;C:\eclipse\workspace\Gregtech\libs\EnderIO-1.7.10-2.2.8.381-dev.jar;C:\eclipse\workspace\Gregtech\libs\dev\NotEnoughItems-1.7.10-1.0.4.107-dev.jar;C:\eclipse\workspace\Gregtech\libs\dev\1.7.10\CodeChickenLib-1.7.10-1.1.3.136-dev.jar;C:\eclipse\workspace\Gregtech\mods\CodeChickenCore-1.7.10-1.0.6.44-dev.jar
+[13:37:21] [main/DEBUG] [FML/]: Java library path at launch is C:\Program Files\Java\jdk1.7.0_79\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:/Program Files/Java/jre1.8.0_60/bin/server;C:/Program Files/Java/jre1.8.0_60/bin;C:/Program Files/Java/jre1.8.0_60/lib/amd64;C:\ProgramData\Oracle\Java\javapath;C:\Program Files (x86)\Intel\iCLS Client\;C:\Program Files\Intel\iCLS Client\;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files\FileBot\;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files (x86)\Paragon Software\Paragon ExtFS for Windows;C:\Program Files (x86)\Skype\Phone\;C:\eclipse;;.;C:/Users/Jordan/.gradle/caches/minecraft/net/minecraft/minecraft_natives/1.7.10
+[13:37:21] [main/INFO] [FML/]: Managed to load a deobfuscated Minecraft name- we are in a deobfuscated environment. Skipping runtime deobfuscation
+[13:37:21] [main/DEBUG] [FML/]: Instantiating coremod class FMLCorePlugin
+[13:37:21] [main/DEBUG] [FML/]: Added access transformer class cpw.mods.fml.common.asm.transformers.AccessTransformer to enqueued access transformers
+[13:37:21] [main/DEBUG] [FML/]: Enqueued coremod FMLCorePlugin
+[13:37:21] [main/DEBUG] [FML/]: Instantiating coremod class FMLForgePlugin
+[13:37:21] [main/DEBUG] [FML/]: Added access transformer class net.minecraftforge.transformers.ForgeAccessTransformer to enqueued access transformers
+[13:37:21] [main/DEBUG] [FML/]: Enqueued coremod FMLForgePlugin
+[13:37:21] [main/DEBUG] [FML/]: All fundamental core mods are successfully located
+[13:37:21] [main/INFO] [FML/]: Found a command line coremod : codechicken.nei.asm.NEICorePlugin
+[13:37:21] [main/DEBUG] [FML/]: Instantiating coremod class NEICorePlugin
+[13:37:21] [main/WARN] [FML/]: The coremod codechicken.nei.asm.NEICorePlugin does not have a MCVersion annotation, it may cause issues with this version of Minecraft
+[13:37:21] [main/DEBUG] [FML/]: Enqueued coremod NEICorePlugin
+[13:37:21] [main/INFO] [FML/]: Found a command line coremod : codechicken.core.launch.CodeChickenCorePlugin
+[13:37:21] [main/DEBUG] [FML/]: Instantiating coremod class CodeChickenCorePlugin
+[13:37:21] [main/WARN] [FML/]: The coremod codechicken.core.launch.CodeChickenCorePlugin does not have a MCVersion annotation, it may cause issues with this version of Minecraft
+[13:37:21] [main/DEBUG] [FML/]: Added access transformer class codechicken.core.asm.CodeChickenAccessTransformer to enqueued access transformers
+[13:37:21] [main/DEBUG] [FML/]: Enqueued coremod CodeChickenCorePlugin
+[13:37:21] [main/INFO] [FML/]: Found a command line coremod : ic2.core.coremod.IC2core
+[13:37:21] [main/DEBUG] [FML/]: Instantiating coremod class IC2core
+[13:37:22] [main/WARN] [FML/]: The coremod ic2.core.coremod.IC2core does not have a MCVersion annotation, it may cause issues with this version of Minecraft
+[13:37:22] [main/DEBUG] [FML/]: Enqueued coremod IC2core
+[13:37:22] [main/INFO] [FML/]: Found a command line coremod : appeng.transformer.AppEngCore
+[13:37:22] [main/DEBUG] [FML/]: Instantiating coremod class AppEngCore
+[13:37:22] [main/DEBUG] [FML/]: The coremod appeng.transformer.AppEngCore requested minecraft version 1.7.10 and minecraft is 1.7.10. It will be loaded.
+[13:37:22] [main/INFO] [FML/]: [AppEng] Core Init
+[13:37:22] [main/DEBUG] [FML/]: Added access transformer class appeng.transformer.asm.ASMTweaker to enqueued access transformers
+[13:37:22] [main/DEBUG] [FML/]: Enqueued coremod AppEngCore
+[13:37:22] [main/DEBUG] [FML/]: Attempting to load commandline specified mods, relative to C:\eclipse\workspace\MiscUtil\.
+[13:37:22] [main/DEBUG] [FML/]: Discovering coremods
+[13:37:22] [main/INFO] [LaunchWrapper/]: Calling tweak class net.minecraftforge.gradle.tweakers.CoremodTweaker
+[13:37:22] [main/INFO] [GradleStart/]: Injecting location in coremod cpw.mods.fml.relauncher.FMLCorePlugin
+[13:37:22] [main/INFO] [GradleStart/]: Injecting location in coremod net.minecraftforge.classloading.FMLForgePlugin
+[13:37:22] [main/INFO] [GradleStart/]: Injecting location in coremod codechicken.core.asm.MCPDeobfuscationTransformer.LoadPlugin
+[13:37:22] [main/INFO] [GradleStart/]: Injecting location in coremod codechicken.nei.asm.NEICorePlugin
+[13:37:22] [main/INFO] [GradleStart/]: Injecting location in coremod codechicken.core.launch.CodeChickenCorePlugin
+[13:37:22] [main/INFO] [GradleStart/]: Injecting location in coremod ic2.core.coremod.IC2core
+[13:37:22] [main/INFO] [GradleStart/]: Injecting location in coremod appeng.transformer.AppEngCore
+[13:37:22] [main/INFO] [LaunchWrapper/]: Loading tweak class name cpw.mods.fml.common.launcher.FMLInjectionAndSortingTweaker
+[13:37:22] [main/INFO] [LaunchWrapper/]: Loading tweak class name cpw.mods.fml.common.launcher.FMLDeobfTweaker
+[13:37:22] [main/INFO] [LaunchWrapper/]: Loading tweak class name net.minecraftforge.gradle.tweakers.AccessTransformerTweaker
+[13:37:22] [main/INFO] [LaunchWrapper/]: Calling tweak class cpw.mods.fml.common.launcher.FMLInjectionAndSortingTweaker
+[13:37:22] [main/INFO] [LaunchWrapper/]: Calling tweak class cpw.mods.fml.common.launcher.FMLInjectionAndSortingTweaker
+[13:37:22] [main/INFO] [LaunchWrapper/]: Calling tweak class cpw.mods.fml.relauncher.CoreModManager$FMLPluginWrapper
+[13:37:22] [main/DEBUG] [FML/]: Injecting coremod FMLCorePlugin {cpw.mods.fml.relauncher.FMLCorePlugin} class transformers
+[13:37:22] [main/TRACE] [FML/]: Registering transformer cpw.mods.fml.common.asm.transformers.MarkerTransformer
+[13:37:22] [main/TRACE] [FML/]: Registering transformer cpw.mods.fml.common.asm.transformers.SideTransformer
+[13:37:22] [main/TRACE] [FML/]: Registering transformer cpw.mods.fml.common.asm.transformers.EventSubscriptionTransformer
+[13:37:22] [main/DEBUG] [FML/]: Injection complete
+[13:37:22] [main/DEBUG] [FML/]: Running coremod plugin for FMLCorePlugin {cpw.mods.fml.relauncher.FMLCorePlugin}
+[13:37:22] [main/DEBUG] [FML/]: Running coremod plugin FMLCorePlugin
+[13:37:22] [main/ERROR] [FML/]: The binary patch set is missing. Either you are in a development environment, or things are not going to work!
+[13:37:24] [main/ERROR] [FML/]: FML appears to be missing any signature data. This is not a good thing
+[13:37:24] [main/DEBUG] [FML/]: Coremod plugin class FMLCorePlugin run successfully
+[13:37:24] [main/INFO] [LaunchWrapper/]: Calling tweak class cpw.mods.fml.relauncher.CoreModManager$FMLPluginWrapper
+[13:37:24] [main/DEBUG] [FML/]: Injecting coremod FMLForgePlugin {net.minecraftforge.classloading.FMLForgePlugin} class transformers
+[13:37:24] [main/TRACE] [FML/]: Registering transformer net.minecraftforge.classloading.FluidIdTransformer
+[13:37:24] [main/DEBUG] [FML/]: Injection complete
+[13:37:24] [main/DEBUG] [FML/]: Running coremod plugin for FMLForgePlugin {net.minecraftforge.classloading.FMLForgePlugin}
+[13:37:24] [main/DEBUG] [FML/]: Running coremod plugin FMLForgePlugin
+[13:37:24] [main/DEBUG] [FML/]: Coremod plugin class FMLForgePlugin run successfully
+[13:37:24] [main/INFO] [LaunchWrapper/]: Calling tweak class cpw.mods.fml.relauncher.CoreModManager$FMLPluginWrapper
+[13:37:24] [main/DEBUG] [FML/]: Injecting coremod CCCDeobfPlugin {codechicken.core.asm.MCPDeobfuscationTransformer$LoadPlugin} class transformers
+[13:37:24] [main/DEBUG] [FML/]: Injection complete
+[13:37:24] [main/DEBUG] [FML/]: Running coremod plugin for CCCDeobfPlugin {codechicken.core.asm.MCPDeobfuscationTransformer$LoadPlugin}
+[13:37:24] [main/DEBUG] [FML/]: Running coremod plugin CCCDeobfPlugin
+[13:37:24] [main/DEBUG] [FML/]: Coremod plugin class LoadPlugin run successfully
+[13:37:24] [main/INFO] [LaunchWrapper/]: Calling tweak class cpw.mods.fml.relauncher.CoreModManager$FMLPluginWrapper
+[13:37:24] [main/DEBUG] [FML/]: Injecting coremod NEICorePlugin {codechicken.nei.asm.NEICorePlugin} class transformers
+[13:37:24] [main/TRACE] [FML/]: Registering transformer codechicken.nei.asm.NEITransformer
+[13:37:24] [main/DEBUG] [FML/]: Injection complete
+[13:37:24] [main/DEBUG] [FML/]: Running coremod plugin for NEICorePlugin {codechicken.nei.asm.NEICorePlugin}
+[13:37:24] [main/DEBUG] [FML/]: Running coremod plugin NEICorePlugin
+[13:37:24] [main/DEBUG] [FML/]: Coremod plugin class NEICorePlugin run successfully
+[13:37:24] [main/INFO] [LaunchWrapper/]: Calling tweak class cpw.mods.fml.relauncher.CoreModManager$FMLPluginWrapper
+[13:37:24] [main/DEBUG] [FML/]: Injecting coremod CodeChickenCorePlugin {codechicken.core.launch.CodeChickenCorePlugin} class transformers
+[13:37:24] [main/TRACE] [FML/]: Registering transformer codechicken.lib.asm.ClassHeirachyManager
+[13:37:24] [main/TRACE] [FML/]: Registering transformer codechicken.core.asm.InterfaceDependancyTransformer
+[13:37:24] [main/TRACE] [FML/]: Registering transformer codechicken.core.asm.TweakTransformer
+[13:37:24] [main/TRACE] [FML/]: Registering transformer codechicken.core.asm.DelegatedTransformer
+[13:37:24] [main/TRACE] [FML/]: Registering transformer codechicken.core.asm.DefaultImplementationTransformer
+[13:37:24] [main/DEBUG] [FML/]: Injection complete
+[13:37:24] [main/DEBUG] [FML/]: Running coremod plugin for CodeChickenCorePlugin {codechicken.core.launch.CodeChickenCorePlugin}
+[13:37:24] [main/DEBUG] [FML/]: Running coremod plugin CodeChickenCorePlugin
+[13:37:24] [main/DEBUG] [FML/]: Coremod plugin class CodeChickenCorePlugin run successfully
+[13:37:24] [main/INFO] [LaunchWrapper/]: Calling tweak class cpw.mods.fml.relauncher.CoreModManager$FMLPluginWrapper
+[13:37:24] [main/DEBUG] [FML/]: Injecting coremod IC2core {ic2.core.coremod.IC2core} class transformers
+[13:37:24] [main/DEBUG] [FML/]: Injection complete
+[13:37:24] [main/DEBUG] [FML/]: Running coremod plugin for IC2core {ic2.core.coremod.IC2core}
+[13:37:24] [main/DEBUG] [FML/]: Running coremod plugin IC2core
+[13:37:24] [main/INFO] [IC2-core/]: Loaded library EJML-core-0.26.jar.
+[13:37:24] [main/DEBUG] [FML/]: Coremod plugin class IC2core run successfully
+[13:37:24] [main/INFO] [LaunchWrapper/]: Calling tweak class cpw.mods.fml.relauncher.CoreModManager$FMLPluginWrapper
+[13:37:24] [main/DEBUG] [FML/]: Injecting coremod AppEngCore {appeng.transformer.AppEngCore} class transformers
+[13:37:24] [main/TRACE] [FML/]: Registering transformer appeng.transformer.asm.ASMIntegration
+[13:37:24] [main/DEBUG] [FML/]: Injection complete
+[13:37:24] [main/DEBUG] [FML/]: Running coremod plugin for AppEngCore {appeng.transformer.AppEngCore}
+[13:37:24] [main/DEBUG] [FML/]: Running coremod plugin AppEngCore
+[13:37:24] [main/DEBUG] [FML/]: Coremod plugin class AppEngCore run successfully
+[13:37:24] [main/INFO] [LaunchWrapper/]: Calling tweak class cpw.mods.fml.common.launcher.FMLDeobfTweaker
+[13:37:24] [main/DEBUG] [FML/]: Loaded 57 rules from AccessTransformer config file fml_at.cfg
+[13:37:24] [main/DEBUG] [FML/]: Loaded 89 rules from AccessTransformer config file forge_at.cfg
+[13:37:24] [main/DEBUG] [FML/]: Loaded 57 rules from AccessTransformer config file fml_at.cfg
+[13:37:24] [main/DEBUG] [FML/]: Loaded 11 rules from AccessTransformer mod jar file C:\eclipse\workspace\Gregtech\libs\dev\NotEnoughItems-1.7.10-1.0.4.107-dev.jar!META-INF/nei_at.cfg
+
+[13:37:24] [main/DEBUG] [FML/]: Validating minecraft
+[13:37:24] [main/DEBUG] [FML/]: Minecraft validated, launching...
+[13:37:24] [main/INFO] [LaunchWrapper/]: Calling tweak class net.minecraftforge.gradle.tweakers.AccessTransformerTweaker
+[13:37:25] [main/DEBUG] [GradleStart/]: Reading CSV file: C:\Users\Jordan\.gradle\caches\minecraft\net\minecraftforge\forge\1.7.10-10.13.4.1448-1.7.10\unpacked\conf\fields.csv
+[13:37:25] [main/DEBUG] [GradleStart/]: Reading CSV file: C:\Users\Jordan\.gradle\caches\minecraft\net\minecraftforge\forge\1.7.10-10.13.4.1448-1.7.10\unpacked\conf\methods.csv
+[13:37:25] [main/INFO] [GradleStart/]: Remapping AccessTransformer rules...
+[13:37:25] [main/INFO] [LaunchWrapper/]: Loading tweak class name cpw.mods.fml.common.launcher.TerminalTweaker
+[13:37:25] [main/INFO] [LaunchWrapper/]: Calling tweak class cpw.mods.fml.common.launcher.TerminalTweaker
+[13:37:25] [main/INFO] [LaunchWrapper/]: Launching wrapped minecraft {net.minecraft.client.main.Main}
+[13:37:25] [main/DEBUG] [CCL ASM/]: Inserted super call into [net/minecraft/client/renderer/InventoryEffectRenderer.updateScreen()V]
+[13:37:25] [main/DEBUG] [CCL ASM/]: Writing method [net/minecraft/client/gui/inventory/GuiContainer.setWorldAndResolution(Lnet/minecraft/client/Minecraft;II)V]
+[13:37:25] [main/DEBUG] [CCL ASM/]: Writing method [net/minecraft/client/gui/inventory/GuiContainer.handleKeyboardInput()V]
+[13:37:25] [main/DEBUG] [CCL ASM/]: Writing method [net/minecraft/client/gui/inventory/GuiContainer.handleKeyboardInput()V]
+[13:37:25] [main/DEBUG] [CCL ASM/]: Writing method [net/minecraft/client/gui/inventory/GuiContainer.handleKeyboardInput()V]
+[13:37:25] [main/DEBUG] [CCL ASM/]: Writing method [net/minecraft/client/gui/inventory/GuiContainer.handleMouseInput()V]
+[13:37:25] [main/DEBUG] [CCL ASM/]: Writing method [net/minecraft/client/gui/inventory/GuiContainer.public_func_73869_a(CI)V]
+[13:37:25] [main/DEBUG] [CCL ASM/]: Writing method [net/minecraft/client/gui/inventory/GuiContainer.public_func_146984_a(Lnet/minecraft/inventory/Slot;III)V]
+[13:37:25] [main/DEBUG] [CCL ASM/]: Injecting before method [net/minecraft/client/gui/inventory/GuiContainer.drawScreen(IIF)V]
+[13:37:25] [main/DEBUG] [CCL ASM/]: Injecting after method [net/minecraft/client/gui/inventory/GuiContainer.drawScreen(IIF)V] @ 138 - 140
+[13:37:25] [main/ERROR] [LaunchWrapper/]: Unable to launch
+java.lang.reflect.InvocationTargetException
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.7.0_79]
+ at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) ~[?:1.7.0_79]
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.7.0_79]
+ at java.lang.reflect.Method.invoke(Method.java:606) ~[?:1.7.0_79]
+ at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.11.jar:?]
+ at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.11.jar:?]
+ at net.minecraftforge.gradle.GradleStartCommon.launch(Unknown Source) [start/:?]
+ at GradleStart.main(Unknown Source) [start/:?]
+Caused by: java.lang.NoClassDefFoundError: net/minecraft/client/gui/inventory/GuiInventory
+ at net.minecraft.client.main.Main.main(Main.java:79) ~[Main.class:?]
+ ... 8 more
+Caused by: java.lang.ClassNotFoundException: net.minecraft.client.gui.inventory.GuiInventory
+ at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:191) ~[launchwrapper-1.11.jar:?]
+ at java.lang.ClassLoader.loadClass(ClassLoader.java:425) ~[?:1.7.0_79]
+ at java.lang.ClassLoader.loadClass(ClassLoader.java:358) ~[?:1.7.0_79]
+ at net.minecraft.client.main.Main.main(Main.java:79) ~[Main.class:?]
+ ... 8 more
+Caused by: java.lang.NoClassDefFoundError: net/minecraft/client/renderer/InventoryEffectRenderer
+ at java.lang.ClassLoader.defineClass1(Native Method) ~[?:1.7.0_79]
+ at java.lang.ClassLoader.defineClass(ClassLoader.java:800) ~[?:1.7.0_79]
+ at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) ~[?:1.7.0_79]
+ at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:182) ~[launchwrapper-1.11.jar:?]
+ at java.lang.ClassLoader.loadClass(ClassLoader.java:425) ~[?:1.7.0_79]
+ at java.lang.ClassLoader.loadClass(ClassLoader.java:358) ~[?:1.7.0_79]
+ at net.minecraft.client.main.Main.main(Main.java:79) ~[Main.class:?]
+ ... 8 more
+Caused by: java.lang.ClassNotFoundException: net.minecraft.client.renderer.InventoryEffectRenderer
+ at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:191) ~[launchwrapper-1.11.jar:?]
+ at java.lang.ClassLoader.loadClass(ClassLoader.java:425) ~[?:1.7.0_79]
+ at java.lang.ClassLoader.loadClass(ClassLoader.java:358) ~[?:1.7.0_79]
+ at java.lang.ClassLoader.defineClass1(Native Method) ~[?:1.7.0_79]
+ at java.lang.ClassLoader.defineClass(ClassLoader.java:800) ~[?:1.7.0_79]
+ at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) ~[?:1.7.0_79]
+ at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:182) ~[launchwrapper-1.11.jar:?]
+ at java.lang.ClassLoader.loadClass(ClassLoader.java:425) ~[?:1.7.0_79]
+ at java.lang.ClassLoader.loadClass(ClassLoader.java:358) ~[?:1.7.0_79]
+ at net.minecraft.client.main.Main.main(Main.java:79) ~[Main.class:?]
+ ... 8 more
+Caused by: java.lang.NoClassDefFoundError: net/minecraft/client/gui/inventory/GuiContainer
+ at java.lang.ClassLoader.defineClass1(Native Method) ~[?:1.7.0_79]
+ at java.lang.ClassLoader.defineClass(ClassLoader.java:800) ~[?:1.7.0_79]
+ at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) ~[?:1.7.0_79]
+ at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:182) ~[launchwrapper-1.11.jar:?]
+ at java.lang.ClassLoader.loadClass(ClassLoader.java:425) ~[?:1.7.0_79]
+ at java.lang.ClassLoader.loadClass(ClassLoader.java:358) ~[?:1.7.0_79]
+ at java.lang.ClassLoader.defineClass1(Native Method) ~[?:1.7.0_79]
+ at java.lang.ClassLoader.defineClass(ClassLoader.java:800) ~[?:1.7.0_79]
+ at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) ~[?:1.7.0_79]
+ at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:182) ~[launchwrapper-1.11.jar:?]
+ at java.lang.ClassLoader.loadClass(ClassLoader.java:425) ~[?:1.7.0_79]
+ at java.lang.ClassLoader.loadClass(ClassLoader.java:358) ~[?:1.7.0_79]
+ at net.minecraft.client.main.Main.main(Main.java:79) ~[Main.class:?]
+ ... 8 more
+Caused by: java.lang.ClassNotFoundException: net.minecraft.client.gui.inventory.GuiContainer
+ at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:191) ~[launchwrapper-1.11.jar:?]
+ at java.lang.ClassLoader.loadClass(ClassLoader.java:425) ~[?:1.7.0_79]
+ at java.lang.ClassLoader.loadClass(ClassLoader.java:358) ~[?:1.7.0_79]
+ at java.lang.ClassLoader.defineClass1(Native Method) ~[?:1.7.0_79]
+ at java.lang.ClassLoader.defineClass(ClassLoader.java:800) ~[?:1.7.0_79]
+ at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) ~[?:1.7.0_79]
+ at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:182) ~[launchwrapper-1.11.jar:?]
+ at java.lang.ClassLoader.loadClass(ClassLoader.java:425) ~[?:1.7.0_79]
+ at java.lang.ClassLoader.loadClass(ClassLoader.java:358) ~[?:1.7.0_79]
+ at java.lang.ClassLoader.defineClass1(Native Method) ~[?:1.7.0_79]
+ at java.lang.ClassLoader.defineClass(ClassLoader.java:800) ~[?:1.7.0_79]
+ at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) ~[?:1.7.0_79]
+ at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:182) ~[launchwrapper-1.11.jar:?]
+ at java.lang.ClassLoader.loadClass(ClassLoader.java:425) ~[?:1.7.0_79]
+ at java.lang.ClassLoader.loadClass(ClassLoader.java:358) ~[?:1.7.0_79]
+ at net.minecraft.client.main.Main.main(Main.java:79) ~[Main.class:?]
+ ... 8 more
+Caused by: java.lang.RuntimeException: java.lang.RuntimeException: Error transforming method: [net/minecraft/client/gui/inventory/GuiContainer.drawScreen(IIF)V]
+ at codechicken.nei.asm.NEITransformer.transform(NEITransformer.java:242) ~[NotEnoughItems-1.7.10-1.0.4.107-dev.jar:?]
+ at net.minecraft.launchwrapper.LaunchClassLoader.runTransformers(LaunchClassLoader.java:279) ~[launchwrapper-1.11.jar:?]
+ at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:176) ~[launchwrapper-1.11.jar:?]
+ at java.lang.ClassLoader.loadClass(ClassLoader.java:425) ~[?:1.7.0_79]
+ at java.lang.ClassLoader.loadClass(ClassLoader.java:358) ~[?:1.7.0_79]
+ at java.lang.ClassLoader.defineClass1(Native Method) ~[?:1.7.0_79]
+ at java.lang.ClassLoader.defineClass(ClassLoader.java:800) ~[?:1.7.0_79]
+ at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) ~[?:1.7.0_79]
+ at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:182) ~[launchwrapper-1.11.jar:?]
+ at java.lang.ClassLoader.loadClass(ClassLoader.java:425) ~[?:1.7.0_79]
+ at java.lang.ClassLoader.loadClass(ClassLoader.java:358) ~[?:1.7.0_79]
+ at java.lang.ClassLoader.defineClass1(Native Method) ~[?:1.7.0_79]
+ at java.lang.ClassLoader.defineClass(ClassLoader.java:800) ~[?:1.7.0_79]
+ at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) ~[?:1.7.0_79]
+ at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:182) ~[launchwrapper-1.11.jar:?]
+ at java.lang.ClassLoader.loadClass(ClassLoader.java:425) ~[?:1.7.0_79]
+ at java.lang.ClassLoader.loadClass(ClassLoader.java:358) ~[?:1.7.0_79]
+ at net.minecraft.client.main.Main.main(Main.java:79) ~[Main.class:?]
+ ... 8 more
+Caused by: java.lang.RuntimeException: Error transforming method: [net/minecraft/client/gui/inventory/GuiContainer.drawScreen(IIF)V]
+ at codechicken.lib.asm.ModularASMTransformer$MethodTransformer.transform(ModularASMTransformer.java:90) ~[CodeChickenLib-1.7.10-1.1.3.136-dev.jar:?]
+ at codechicken.lib.asm.ModularASMTransformer$ClassNodeTransformerList.transform(ModularASMTransformer.java:36) ~[CodeChickenLib-1.7.10-1.1.3.136-dev.jar:?]
+ at codechicken.lib.asm.ModularASMTransformer.transform(ModularASMTransformer.java:283) ~[CodeChickenLib-1.7.10-1.1.3.136-dev.jar:?]
+ at codechicken.nei.asm.NEITransformer.transform(NEITransformer.java:240) ~[NotEnoughItems-1.7.10-1.0.4.107-dev.jar:?]
+ at net.minecraft.launchwrapper.LaunchClassLoader.runTransformers(LaunchClassLoader.java:279) ~[launchwrapper-1.11.jar:?]
+ at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:176) ~[launchwrapper-1.11.jar:?]
+ at java.lang.ClassLoader.loadClass(ClassLoader.java:425) ~[?:1.7.0_79]
+ at java.lang.ClassLoader.loadClass(ClassLoader.java:358) ~[?:1.7.0_79]
+ at java.lang.ClassLoader.defineClass1(Native Method) ~[?:1.7.0_79]
+ at java.lang.ClassLoader.defineClass(ClassLoader.java:800) ~[?:1.7.0_79]
+ at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) ~[?:1.7.0_79]
+ at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:182) ~[launchwrapper-1.11.jar:?]
+ at java.lang.ClassLoader.loadClass(ClassLoader.java:425) ~[?:1.7.0_79]
+ at java.lang.ClassLoader.loadClass(ClassLoader.java:358) ~[?:1.7.0_79]
+ at java.lang.ClassLoader.defineClass1(Native Method) ~[?:1.7.0_79]
+ at java.lang.ClassLoader.defineClass(ClassLoader.java:800) ~[?:1.7.0_79]
+ at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) ~[?:1.7.0_79]
+ at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:182) ~[launchwrapper-1.11.jar:?]
+ at java.lang.ClassLoader.loadClass(ClassLoader.java:425) ~[?:1.7.0_79]
+ at java.lang.ClassLoader.loadClass(ClassLoader.java:358) ~[?:1.7.0_79]
+ at net.minecraft.client.main.Main.main(Main.java:79) ~[Main.class:?]
+ ... 8 more
+Caused by: java.lang.RuntimeException: Needle not found in Haystack:
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.manager : Lcodechicken/nei/guihook/GuiContainerManager;
+ INVOKEVIRTUAL codechicken/nei/guihook/GuiContainerManager.preDraw ()V
+ L0
+ LINENUMBER 90 L0
+ ALOAD 0
+ INVOKEVIRTUAL net/minecraft/client/gui/inventory/GuiContainer.drawDefaultBackground ()V
+ L1
+ LINENUMBER 91 L1
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.guiLeft : I
+ ISTORE 4
+ L2
+ LINENUMBER 92 L2
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.guiTop : I
+ ISTORE 5
+ L3
+ LINENUMBER 93 L3
+ ALOAD 0
+ FLOAD 3
+ ILOAD 1
+ ILOAD 2
+ INVOKEVIRTUAL net/minecraft/client/gui/inventory/GuiContainer.drawGuiContainerBackgroundLayer (FII)V
+ L4
+ LINENUMBER 94 L4
+ LDC 32826
+ INVOKESTATIC org/lwjgl/opengl/GL11.glDisable (I)V
+ L5
+ LINENUMBER 95 L5
+ INVOKESTATIC net/minecraft/client/renderer/RenderHelper.disableStandardItemLighting ()V
+ L6
+ LINENUMBER 96 L6
+ SIPUSH 2896
+ INVOKESTATIC org/lwjgl/opengl/GL11.glDisable (I)V
+ L7
+ LINENUMBER 97 L7
+ SIPUSH 2929
+ INVOKESTATIC org/lwjgl/opengl/GL11.glDisable (I)V
+ L8
+ LINENUMBER 98 L8
+ ALOAD 0
+ ILOAD 1
+ ILOAD 2
+ FLOAD 3
+ INVOKESPECIAL net/minecraft/client/gui/GuiScreen.drawScreen (IIF)V
+ L9
+ LINENUMBER 99 L9
+ INVOKESTATIC net/minecraft/client/renderer/RenderHelper.enableGUIStandardItemLighting ()V
+ L10
+ LINENUMBER 100 L10
+ INVOKESTATIC org/lwjgl/opengl/GL11.glPushMatrix ()V
+ L11
+ LINENUMBER 101 L11
+ ILOAD 4
+ I2F
+ ILOAD 5
+ I2F
+ FCONST_0
+ INVOKESTATIC org/lwjgl/opengl/GL11.glTranslatef (FFF)V
+ L12
+ LINENUMBER 102 L12
+ FCONST_1
+ FCONST_1
+ FCONST_1
+ FCONST_1
+ INVOKESTATIC org/lwjgl/opengl/GL11.glColor4f (FFFF)V
+ L13
+ LINENUMBER 103 L13
+ LDC 32826
+ INVOKESTATIC org/lwjgl/opengl/GL11.glEnable (I)V
+ L14
+ LINENUMBER 104 L14
+ ALOAD 0
+ ACONST_NULL
+ PUTFIELD net/minecraft/client/gui/inventory/GuiContainer.theSlot : Lnet/minecraft/inventory/Slot;
+ L15
+ LINENUMBER 105 L15
+ SIPUSH 240
+ ISTORE 6
+ L16
+ LINENUMBER 106 L16
+ SIPUSH 240
+ ISTORE 7
+ L17
+ LINENUMBER 107 L17
+ GETSTATIC net/minecraft/client/renderer/OpenGlHelper.lightmapTexUnit : I
+ ILOAD 6
+ I2F
+ FCONST_1
+ FDIV
+ ILOAD 7
+ I2F
+ FCONST_1
+ FDIV
+ INVOKESTATIC net/minecraft/client/renderer/OpenGlHelper.setLightmapTextureCoords (IFF)V
+ L18
+ LINENUMBER 108 L18
+ FCONST_1
+ FCONST_1
+ FCONST_1
+ FCONST_1
+ INVOKESTATIC org/lwjgl/opengl/GL11.glColor4f (FFFF)V
+ L19
+ LINENUMBER 111 L19
+ ICONST_0
+ ISTORE 8
+ L20
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer I I F I I I I I] []
+ ILOAD 8
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.inventorySlots : Lnet/minecraft/inventory/Container;
+ GETFIELD net/minecraft/inventory/Container.inventorySlots : Ljava/util/List;
+ INVOKEINTERFACE java/util/List.size ()I
+ IF_ICMPGE L21
+ L22
+ LINENUMBER 113 L22
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.inventorySlots : Lnet/minecraft/inventory/Container;
+ GETFIELD net/minecraft/inventory/Container.inventorySlots : Ljava/util/List;
+ ILOAD 8
+ INVOKEINTERFACE java/util/List.get (I)Ljava/lang/Object;
+ CHECKCAST net/minecraft/inventory/Slot
+ ASTORE 9
+ L23
+ LINENUMBER 114 L23
+ ALOAD 0
+ ALOAD 9
+ INVOKESPECIAL net/minecraft/client/gui/inventory/GuiContainer.func_146977_a (Lnet/minecraft/inventory/Slot;)V
+ L24
+ LINENUMBER 116 L24
+ ALOAD 0
+ ALOAD 9
+ ILOAD 1
+ ILOAD 2
+ INVOKESPECIAL net/minecraft/client/gui/inventory/GuiContainer.isMouseOverSlot (Lnet/minecraft/inventory/Slot;II)Z
+ IFEQ L25
+ ALOAD 9
+ INVOKEVIRTUAL net/minecraft/inventory/Slot.func_111238_b ()Z
+ IFEQ L25
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.manager : Lcodechicken/nei/guihook/GuiContainerManager;
+ ILOAD 1
+ ILOAD 2
+ INVOKEVIRTUAL codechicken/nei/guihook/GuiContainerManager.objectUnderMouse (II)Z
+ IFNE L25
+ L26
+ LINENUMBER 118 L26
+ ALOAD 0
+ ALOAD 9
+ PUTFIELD net/minecraft/client/gui/inventory/GuiContainer.theSlot : Lnet/minecraft/inventory/Slot;
+ L27
+ LINENUMBER 119 L27
+ SIPUSH 2896
+ INVOKESTATIC org/lwjgl/opengl/GL11.glDisable (I)V
+ L28
+ LINENUMBER 120 L28
+ SIPUSH 2929
+ INVOKESTATIC org/lwjgl/opengl/GL11.glDisable (I)V
+ L29
+ LINENUMBER 121 L29
+ ALOAD 9
+ GETFIELD net/minecraft/inventory/Slot.xDisplayPosition : I
+ ISTORE 10
+ L30
+ LINENUMBER 122 L30
+ ALOAD 9
+ GETFIELD net/minecraft/inventory/Slot.yDisplayPosition : I
+ ISTORE 11
+ L31
+ LINENUMBER 123 L31
+ ICONST_1
+ ICONST_1
+ ICONST_1
+ ICONST_0
+ INVOKESTATIC org/lwjgl/opengl/GL11.glColorMask (ZZZZ)V
+ L32
+ LINENUMBER 124 L32
+ ALOAD 0
+ ILOAD 10
+ ILOAD 11
+ ILOAD 10
+ BIPUSH 16
+ IADD
+ ILOAD 11
+ BIPUSH 16
+ IADD
+ LDC -2130706433
+ LDC -2130706433
+ INVOKEVIRTUAL net/minecraft/client/gui/inventory/GuiContainer.drawGradientRect (IIIIII)V
+ L33
+ LINENUMBER 125 L33
+ ICONST_1
+ ICONST_1
+ ICONST_1
+ ICONST_1
+ INVOKESTATIC org/lwjgl/opengl/GL11.glColorMask (ZZZZ)V
+ L34
+ LINENUMBER 126 L34
+ SIPUSH 2896
+ INVOKESTATIC org/lwjgl/opengl/GL11.glEnable (I)V
+ L35
+ LINENUMBER 127 L35
+ SIPUSH 2929
+ INVOKESTATIC org/lwjgl/opengl/GL11.glEnable (I)V
+ L25
+ LINENUMBER 111 L25
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer I I F I I I I I] []
+ IINC 8 1
+ GOTO L20
+ L21
+ LINENUMBER 133 L21
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer I I F I I I I] []
+ SIPUSH 2896
+ INVOKESTATIC org/lwjgl/opengl/GL11.glDisable (I)V
+ L36
+ LINENUMBER 134 L36
+ ALOAD 0
+ ILOAD 1
+ ILOAD 2
+ INVOKEVIRTUAL net/minecraft/client/gui/inventory/GuiContainer.drawGuiContainerForegroundLayer (II)V
+ L37
+ LINENUMBER 135 L37
+ SIPUSH 2896
+ INVOKESTATIC org/lwjgl/opengl/GL11.glEnable (I)V
+ L38
+ LINENUMBER 136 L38
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.mc : Lnet/minecraft/client/Minecraft;
+ GETFIELD net/minecraft/client/Minecraft.thePlayer : Lnet/minecraft/client/entity/EntityClientPlayerMP;
+ GETFIELD net/minecraft/client/entity/EntityClientPlayerMP.inventory : Lnet/minecraft/entity/player/InventoryPlayer;
+ ASTORE 8
+ L39
+ LINENUMBER 137 L39
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.draggedStack : Lnet/minecraft/item/ItemStack;
+ IFNONNULL L40
+ ALOAD 8
+ INVOKEVIRTUAL net/minecraft/entity/player/InventoryPlayer.getItemStack ()Lnet/minecraft/item/ItemStack;
+ GOTO L41
+ L40
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer I I F I I I I net/minecraft/entity/player/InventoryPlayer] []
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.draggedStack : Lnet/minecraft/item/ItemStack;
+ L41
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer I I F I I I I net/minecraft/entity/player/InventoryPlayer] [net/minecraft/item/ItemStack]
+ ASTORE 9
+ L42
+ LINENUMBER 139 L42
+ ALOAD 9
+ IFNULL L43
+ L44
+ LINENUMBER 141 L44
+ BIPUSH 8
+ ISTORE 10
+ L45
+ LINENUMBER 142 L45
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.draggedStack : Lnet/minecraft/item/ItemStack;
+ IFNONNULL L46
+ BIPUSH 8
+ GOTO L47
+ L46
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer I I F I I I I net/minecraft/entity/player/InventoryPlayer net/minecraft/item/ItemStack I] []
+ BIPUSH 16
+ L47
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer I I F I I I I net/minecraft/entity/player/InventoryPlayer net/minecraft/item/ItemStack I] [I]
+ ISTORE 11
+ L48
+ LINENUMBER 143 L48
+ ACONST_NULL
+ ASTORE 12
+ L49
+ LINENUMBER 145 L49
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.draggedStack : Lnet/minecraft/item/ItemStack;
+ IFNULL L50
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.isRightMouseClick : Z
+ IFEQ L50
+ L51
+ LINENUMBER 147 L51
+ ALOAD 9
+ INVOKEVIRTUAL net/minecraft/item/ItemStack.copy ()Lnet/minecraft/item/ItemStack;
+ ASTORE 9
+ L52
+ LINENUMBER 148 L52
+ ALOAD 9
+ ALOAD 9
+ GETFIELD net/minecraft/item/ItemStack.stackSize : I
+ I2F
+ FCONST_2
+ FDIV
+ INVOKESTATIC net/minecraft/util/MathHelper.ceiling_float_int (F)I
+ PUTFIELD net/minecraft/item/ItemStack.stackSize : I
+ GOTO L53
+ L50
+ LINENUMBER 150 L50
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer I I F I I I I net/minecraft/entity/player/InventoryPlayer net/minecraft/item/ItemStack I I java/lang/String] []
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.field_147007_t : Z
+ IFEQ L53
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.field_147008_s : Ljava/util/Set;
+ INVOKEINTERFACE java/util/Set.size ()I
+ ICONST_1
+ IF_ICMPLE L53
+ L54
+ LINENUMBER 152 L54
+ ALOAD 9
+ INVOKEVIRTUAL net/minecraft/item/ItemStack.copy ()Lnet/minecraft/item/ItemStack;
+ ASTORE 9
+ L55
+ LINENUMBER 153 L55
+ ALOAD 9
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.field_146996_I : I
+ PUTFIELD net/minecraft/item/ItemStack.stackSize : I
+ L56
+ LINENUMBER 155 L56
+ ALOAD 9
+ GETFIELD net/minecraft/item/ItemStack.stackSize : I
+ IFNE L53
+ L57
+ LINENUMBER 157 L57
+ NEW java/lang/StringBuilder
+ DUP
+ INVOKESPECIAL java/lang/StringBuilder.<init> ()V
+ LDC ""
+ INVOKEVIRTUAL java/lang/StringBuilder.append (Ljava/lang/String;)Ljava/lang/StringBuilder;
+ GETSTATIC net/minecraft/util/EnumChatFormatting.YELLOW : Lnet/minecraft/util/EnumChatFormatting;
+ INVOKEVIRTUAL java/lang/StringBuilder.append (Ljava/lang/Object;)Ljava/lang/StringBuilder;
+ LDC "0"
+ INVOKEVIRTUAL java/lang/StringBuilder.append (Ljava/lang/String;)Ljava/lang/StringBuilder;
+ INVOKEVIRTUAL java/lang/StringBuilder.toString ()Ljava/lang/String;
+ ASTORE 12
+ L53
+ LINENUMBER 161 L53
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer I I F I I I I net/minecraft/entity/player/InventoryPlayer net/minecraft/item/ItemStack I I java/lang/String] []
+ ALOAD 0
+ ALOAD 9
+ ILOAD 1
+ ILOAD 4
+ ISUB
+ ILOAD 10
+ ISUB
+ ILOAD 2
+ ILOAD 5
+ ISUB
+ ILOAD 11
+ ISUB
+ ALOAD 12
+ INVOKESPECIAL net/minecraft/client/gui/inventory/GuiContainer.drawItemStack (Lnet/minecraft/item/ItemStack;IILjava/lang/String;)V
+ L43
+ LINENUMBER 164 L43
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer I I F I I I I net/minecraft/entity/player/InventoryPlayer net/minecraft/item/ItemStack] []
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.returningStack : Lnet/minecraft/item/ItemStack;
+ IFNULL L58
+ L59
+ LINENUMBER 166 L59
+ INVOKESTATIC net/minecraft/client/Minecraft.getSystemTime ()J
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.returningStackTime : J
+ LSUB
+ L2F
+ LDC 100.0
+ FDIV
+ FSTORE 10
+ L60
+ LINENUMBER 168 L60
+ FLOAD 10
+ FCONST_1
+ FCMPL
+ IFLT L61
+ L62
+ LINENUMBER 170 L62
+ FCONST_1
+ FSTORE 10
+ L63
+ LINENUMBER 171 L63
+ ALOAD 0
+ ACONST_NULL
+ PUTFIELD net/minecraft/client/gui/inventory/GuiContainer.returningStack : Lnet/minecraft/item/ItemStack;
+ L61
+ LINENUMBER 174 L61
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer I I F I I I I net/minecraft/entity/player/InventoryPlayer net/minecraft/item/ItemStack F] []
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.returningStackDestSlot : Lnet/minecraft/inventory/Slot;
+ GETFIELD net/minecraft/inventory/Slot.xDisplayPosition : I
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.field_147011_y : I
+ ISUB
+ ISTORE 11
+ L64
+ LINENUMBER 175 L64
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.returningStackDestSlot : Lnet/minecraft/inventory/Slot;
+ GETFIELD net/minecraft/inventory/Slot.yDisplayPosition : I
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.field_147010_z : I
+ ISUB
+ ISTORE 12
+ L65
+ LINENUMBER 176 L65
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.field_147011_y : I
+ ILOAD 11
+ I2F
+ FLOAD 10
+ FMUL
+ F2I
+ IADD
+ ISTORE 13
+ L66
+ LINENUMBER 177 L66
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.field_147010_z : I
+ ILOAD 12
+ I2F
+ FLOAD 10
+ FMUL
+ F2I
+ IADD
+ ISTORE 14
+ L67
+ LINENUMBER 178 L67
+ ALOAD 0
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.returningStack : Lnet/minecraft/item/ItemStack;
+ ILOAD 13
+ ILOAD 14
+ ACONST_NULL
+ CHECKCAST java/lang/String
+ INVOKESPECIAL net/minecraft/client/gui/inventory/GuiContainer.drawItemStack (Lnet/minecraft/item/ItemStack;IILjava/lang/String;)V
+ L58
+ LINENUMBER 181 L58
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer I I F I I I I net/minecraft/entity/player/InventoryPlayer net/minecraft/item/ItemStack] []
+ INVOKESTATIC org/lwjgl/opengl/GL11.glPopMatrix ()V
+ L68
+ LINENUMBER 183 L68
+ ALOAD 8
+ INVOKEVIRTUAL net/minecraft/entity/player/InventoryPlayer.getItemStack ()Lnet/minecraft/item/ItemStack;
+ IFNONNULL L69
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.theSlot : Lnet/minecraft/inventory/Slot;
+ IFNULL L69
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.theSlot : Lnet/minecraft/inventory/Slot;
+ INVOKEVIRTUAL net/minecraft/inventory/Slot.getHasStack ()Z
+ IFEQ L69
+ L70
+ LINENUMBER 185 L70
+ ALOAD 0
+ GETFIELD net/minecraft/client/gui/inventory/GuiContainer.theSlot : Lnet/minecraft/inventory/Slot;
+ INVOKEVIRTUAL net/minecraft/inventory/Slot.getStack ()Lnet/minecraft/item/ItemStack;
+ ASTORE 10
+ L71
+ LINENUMBER 186 L71
+ ALOAD 0
+ ALOAD 10
+ ILOAD 1
+ ILOAD 2
+ INVOKEVIRTUAL net/minecraft/client/gui/inventory/GuiContainer.renderToolTip (Lnet/minecraft/item/ItemStack;II)V
+ L69
+ LINENUMBER 189 L69
+ FRAME FULL [net/minecraft/client/gui/inventory/GuiContainer I I F I I I I net/minecraft/entity/player/InventoryPlayer net/minecraft/item/ItemStack] []
+ SIPUSH 2896
+ INVOKESTATIC org/lwjgl/opengl/GL11.glEnable (I)V
+ L72
+ LINENUMBER 190 L72
+ SIPUSH 2929
+ INVOKESTATIC org/lwjgl/opengl/GL11.glEnable (I)V
+ L73
+ LINENUMBER 191 L73
+ INVOKESTATIC net/minecraft/client/renderer/RenderHelper.enableStandardItemLighting ()V
+ L74
+ LINENUMBER 192 L74
+ RETURN
+ L75
+
+
+ INVOKEVIRTUAL net/minecraft/client/gui/inventory/GuiContainer.func_146979_b (II)V
+ SIPUSH 2896
+ INVOKESTATIC org/lwjgl/opengl/GL11.glEnable (I)V
+
+ at codechicken.lib.asm.InsnComparator.findN(InsnComparator.java:181) ~[CodeChickenLib-1.7.10-1.1.3.136-dev.jar:?]
+ at codechicken.lib.asm.InsnComparator.findN(InsnComparator.java:187) ~[CodeChickenLib-1.7.10-1.1.3.136-dev.jar:?]
+ at codechicken.lib.asm.ModularASMTransformer$MethodInjector.transform(ModularASMTransformer.java:199) ~[CodeChickenLib-1.7.10-1.1.3.136-dev.jar:?]
+ at codechicken.lib.asm.ModularASMTransformer$MethodTransformer.transform(ModularASMTransformer.java:88) ~[CodeChickenLib-1.7.10-1.1.3.136-dev.jar:?]
+ at codechicken.lib.asm.ModularASMTransformer$ClassNodeTransformerList.transform(ModularASMTransformer.java:36) ~[CodeChickenLib-1.7.10-1.1.3.136-dev.jar:?]
+ at codechicken.lib.asm.ModularASMTransformer.transform(ModularASMTransformer.java:283) ~[CodeChickenLib-1.7.10-1.1.3.136-dev.jar:?]
+ at codechicken.nei.asm.NEITransformer.transform(NEITransformer.java:240) ~[NotEnoughItems-1.7.10-1.0.4.107-dev.jar:?]
+ at net.minecraft.launchwrapper.LaunchClassLoader.runTransformers(LaunchClassLoader.java:279) ~[launchwrapper-1.11.jar:?]
+ at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:176) ~[launchwrapper-1.11.jar:?]
+ at java.lang.ClassLoader.loadClass(ClassLoader.java:425) ~[?:1.7.0_79]
+ at java.lang.ClassLoader.loadClass(ClassLoader.java:358) ~[?:1.7.0_79]
+ at java.lang.ClassLoader.defineClass1(Native Method) ~[?:1.7.0_79]
+ at java.lang.ClassLoader.defineClass(ClassLoader.java:800) ~[?:1.7.0_79]
+ at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) ~[?:1.7.0_79]
+ at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:182) ~[launchwrapper-1.11.jar:?]
+ at java.lang.ClassLoader.loadClass(ClassLoader.java:425) ~[?:1.7.0_79]
+ at java.lang.ClassLoader.loadClass(ClassLoader.java:358) ~[?:1.7.0_79]
+ at java.lang.ClassLoader.defineClass1(Native Method) ~[?:1.7.0_79]
+ at java.lang.ClassLoader.defineClass(ClassLoader.java:800) ~[?:1.7.0_79]
+ at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) ~[?:1.7.0_79]
+ at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:182) ~[launchwrapper-1.11.jar:?]
+ at java.lang.ClassLoader.loadClass(ClassLoader.java:425) ~[?:1.7.0_79]
+ at java.lang.ClassLoader.loadClass(ClassLoader.java:358) ~[?:1.7.0_79]
+ at net.minecraft.client.main.Main.main(Main.java:79) ~[Main.class:?]
+ ... 8 more
diff --git a/logs/fml-client-latest.log b/logs/fml-client-latest.log
new file mode 100644
index 0000000000..68057c36b6
--- /dev/null
+++ b/logs/fml-client-latest.log
@@ -0,0 +1,450 @@
+[13:39:33] [main/DEBUG] [FML/]: Injecting tracing printstreams for STDOUT/STDERR.
+[13:39:33] [main/INFO] [FML/]: Forge Mod Loader version 7.99.16.1448 for Minecraft 1.7.10 loading
+[13:39:33] [main/INFO] [FML/]: Java is Java HotSpot(TM) 64-Bit Server VM, version 1.7.0_79, running on Windows 7:amd64:6.1, installed at C:\Program Files\Java\jdk1.7.0_79\jre
+[13:39:33] [main/DEBUG] [FML/]: Java classpath at launch is C:\eclipse\workspace\MiscUtil\bin;C:\eclipse\Forge\bin;C:\Users\Jordan\.gradle\caches\minecraft\net\minecraftforge\forge\1.7.10-10.13.4.1448-1.7.10\forgeSrc-1.7.10-10.13.4.1448-1.7.10.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\net.minecraft\launchwrapper\1.11\9c0592c6e1e9ea296a70948081bd4cc84dda1289\launchwrapper-1.11.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.google.code.findbugs\jsr305\1.3.9\40719ea6961c0cb6afaeb6a921eaa1f6afd4cfdf\jsr305-1.3.9.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.ow2.asm\asm-debug-all\5.0.3\f9e364ae2a66ce2a543012a4668856e84e5dab74\asm-debug-all-5.0.3.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.typesafe.akka\akka-actor_2.11\2.3.3\ed62e9fc709ca0f2ff1a3220daa8b70a2870078e\akka-actor_2.11-2.3.3.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.typesafe\config\1.2.1\f771f71fdae3df231bcd54d5ca2d57f0bf93f467\config-1.2.1.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang\scala-actors-migration_2.11\1.1.0\dfa8bc42b181d5b9f1a5dd147f8ae308b893eb6f\scala-actors-migration_2.11-1.1.0.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang\scala-compiler\2.11.1\56ea2e6c025e0821f28d73ca271218b8dd04926a\scala-compiler-2.11.1.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang.plugins\scala-continuations-library_2.11\1.0.2\e517c53a7e9acd6b1668c5a35eccbaa3bab9aac\scala-continuations-library_2.11-1.0.2.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang.plugins\scala-continuations-plugin_2.11.1\1.0.2\f361a3283452c57fa30c1ee69448995de23c60f7\scala-continuations-plugin_2.11.1-1.0.2.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang\scala-library\2.11.1\e11da23da3eabab9f4777b9220e60d44c1aab6a\scala-library-2.11.1.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang\scala-parser-combinators_2.11\1.0.1\f05d7345bf5a58924f2837c6c1f4d73a938e1ff0\scala-parser-combinators_2.11-1.0.1.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang\scala-reflect\2.11.1\6580347e61cc7f8e802941e7fde40fa83b8badeb\scala-reflect-2.11.1.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang\scala-swing_2.11\1.0.1\b1cdd92bd47b1e1837139c1c53020e86bb9112ae\scala-swing_2.11-1.0.1.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang\scala-xml_2.11\1.0.2\7a80ec00aec122fba7cd4e0d4cdd87ff7e4cb6d0\scala-xml_2.11-1.0.2.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\net.sf.jopt-simple\jopt-simple\4.5\6065cc95c661255349c1d0756657be17c29a4fd3\jopt-simple-4.5.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\lzma\lzma\0.0.1\521616dc7487b42bef0e803bd2fa3faf668101d7\lzma-0.0.1.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.mojang\realms\1.3.5\807ae355ee63583becd7ea60e76aab1532bb42e\realms-1.3.5.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.apache.commons\commons-compress\1.8.1\a698750c16740fd5b3871425f4cb3bbaa87f529d\commons-compress-1.8.1.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.apache.httpcomponents\httpclient\4.3.3\18f4247ff4572a074444572cee34647c43e7c9c7\httpclient-4.3.3.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\commons-logging\commons-logging\1.1.3\f6f66e966c70a83ffbdb6f17a0919eaf7c8aca7f\commons-logging-1.1.3.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.apache.httpcomponents\httpcore\4.3.2\31fbbff1ddbf98f3aa7377c94d33b0447c646b6e\httpcore-4.3.2.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\java3d\vecmath\1.3.1\a0ae4f51da409fa0c20fa0ca59e6bbc9413ae71d\vecmath-1.3.1.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\net.sf.trove4j\trove4j\3.0.3\42ccaf4761f0dfdfa805c9e340d99a755907e2dd\trove4j-3.0.3.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.ibm.icu\icu4j-core-mojang\51.2\63d216a9311cca6be337c1e458e587f99d382b84\icu4j-core-mojang-51.2.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.paulscode\codecjorbis\20101023\c73b5636faf089d9f00e8732a829577de25237ee\codecjorbis-20101023.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.paulscode\codecwav\20101023\12f031cfe88fef5c1dd36c563c0a3a69bd7261da\codecwav-20101023.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.paulscode\libraryjavasound\20101123\5c5e304366f75f9eaa2e8cca546a1fb6109348b3\libraryjavasound-20101123.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.paulscode\librarylwjglopenal\20100824\73e80d0794c39665aec3f62eee88ca91676674ef\librarylwjglopenal-20100824.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.paulscode\soundsystem\20120107\419c05fe9be71f792b2d76cfc9b67f1ed0fec7f6\soundsystem-20120107.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\io.netty\netty-all\4.0.10.Final\9e50bd52ffe257a0e2cd8d971688d6ce7d174325\netty-all-4.0.10.Final.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.google.guava\guava\17.0\9c6ef172e8de35fd8d4d8783e4821e57cdef7445\guava-17.0.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.apache.commons\commons-lang3\3.3.2\90a3822c38ec8c996e84c16a3477ef632cbc87a3\commons-lang3-3.3.2.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\commons-io\commons-io\2.4\b1b6ea3b7e4aa4f492509a4952029cd8e48019ad\commons-io-2.4.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\commons-codec\commons-codec\1.9\9ce04e34240f674bc72680f8b843b1457383161a\commons-codec-1.9.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\net.java.jinput\jinput\2.0.5\39c7796b469a600f72380316f6b1f11db6c2c7c4\jinput-2.0.5.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\net.java.jutils\jutils\1.0.0\e12fe1fda814bd348c1579329c86943d2cd3c6a6\jutils-1.0.0.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.google.code.gson\gson\2.2.4\a60a5e993c98c864010053cb901b7eab25306568\gson-2.2.4.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.mojang\authlib\1.5.16\ef1582b11fd0943d069cdcb72e99008ac209a283\authlib-1.5.16.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.apache.logging.log4j\log4j-api\2.0-beta9\1dd66e68cccd907880229f9e2de1314bd13ff785\log4j-api-2.0-beta9.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.apache.logging.log4j\log4j-core\2.0-beta9\678861ba1b2e1fccb594bb0ca03114bb05da9695\log4j-core-2.0-beta9.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.lwjgl.lwjgl\lwjgl\2.9.1\f58c5aabcef0e41718a564be9f8e412fff8db847\lwjgl-2.9.1.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.lwjgl.lwjgl\lwjgl_util\2.9.1\290d7ba8a1bd9566f5ddf16ad06f09af5ec9b20e\lwjgl_util-2.9.1.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\tv.twitch\twitch\5.16\1f55f009c61637c10c0acfb8b5ffc600f30044b4\twitch-5.16.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang\scala-actors\2.11.0\8ccfb6541de179bb1c4d45cf414acee069b7f78b\scala-actors-2.11.0.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang.modules\scala-xml_2.11\1.0.2\820fbca7e524b530fdadc594c39d49a21ea0337e\scala-xml_2.11-1.0.2.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang.modules\scala-parser-combinators_2.11\1.0.1\f05d7345bf5a58924f2837c6c1f4d73a938e1ff0\scala-parser-combinators_2.11-1.0.1.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\net.java.jinput\jinput-platform\2.0.5\7ff832a6eb9ab6a767f1ade2b548092d0fa64795\jinput-platform-2.0.5-natives-linux.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\net.java.jinput\jinput-platform\2.0.5\385ee093e01f587f30ee1c8a2ee7d408fd732e16\jinput-platform-2.0.5-natives-windows.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\net.java.jinput\jinput-platform\2.0.5\53f9c919f34d2ca9de8c51fc4e1e8282029a9232\jinput-platform-2.0.5-natives-osx.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\tv.twitch\twitch-platform\5.16\7c6affe439099806a4f552da14c42f9d643d8b23\twitch-platform-5.16-natives-windows-32.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\tv.twitch\twitch-platform\5.16\39d0c3d363735b4785598e0e7fbf8297c706a9f9\twitch-platform-5.16-natives-windows-64.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\tv.twitch\twitch-platform\5.16\62503ee712766cf77f97252e5902786fd834b8c5\twitch-platform-5.16-natives-osx.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\tv.twitch\twitch-external-platform\4.5\18215140f010c05b9f86ef6f0f8871954d2ccebf\twitch-external-platform-4.5-natives-windows-32.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\tv.twitch\twitch-external-platform\4.5\c3cde57891b935d41b6680a9c5e1502eeab76d86\twitch-external-platform-4.5-natives-windows-64.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.lwjgl.lwjgl\lwjgl-platform\2.9.1\4c517eca808522457dd95ee8fc1fbcdbb602efbe\lwjgl-platform-2.9.1-natives-windows.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.lwjgl.lwjgl\lwjgl-platform\2.9.1\aa9aae879af8eb378e22cfc64db56ec2ca9a44d1\lwjgl-platform-2.9.1-natives-linux.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.lwjgl.lwjgl\lwjgl-platform\2.9.1\2d12c83fdfbc04ecabf02c7bc8cc54d034f0daac\lwjgl-platform-2.9.1-natives-osx.jar;C:\Users\Jordan\.gradle\caches\minecraft\net\minecraftforge\forge\1.7.10-10.13.4.1448-1.7.10\start
+[13:39:33] [main/DEBUG] [FML/]: Java library path at launch is C:\Program Files\Java\jdk1.7.0_79\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:/Program Files/Java/jre1.8.0_60/bin/server;C:/Program Files/Java/jre1.8.0_60/bin;C:/Program Files/Java/jre1.8.0_60/lib/amd64;C:\ProgramData\Oracle\Java\javapath;C:\Program Files (x86)\Intel\iCLS Client\;C:\Program Files\Intel\iCLS Client\;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files\FileBot\;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files (x86)\Paragon Software\Paragon ExtFS for Windows;C:\Program Files (x86)\Skype\Phone\;C:\eclipse;;.;C:/Users/Jordan/.gradle/caches/minecraft/net/minecraft/minecraft_natives/1.7.10
+[13:39:33] [main/INFO] [FML/]: Managed to load a deobfuscated Minecraft name- we are in a deobfuscated environment. Skipping runtime deobfuscation
+[13:39:33] [main/DEBUG] [FML/]: Instantiating coremod class FMLCorePlugin
+[13:39:34] [main/DEBUG] [FML/]: Added access transformer class cpw.mods.fml.common.asm.transformers.AccessTransformer to enqueued access transformers
+[13:39:34] [main/DEBUG] [FML/]: Enqueued coremod FMLCorePlugin
+[13:39:34] [main/DEBUG] [FML/]: Instantiating coremod class FMLForgePlugin
+[13:39:34] [main/DEBUG] [FML/]: Added access transformer class net.minecraftforge.transformers.ForgeAccessTransformer to enqueued access transformers
+[13:39:34] [main/DEBUG] [FML/]: Enqueued coremod FMLForgePlugin
+[13:39:34] [main/DEBUG] [FML/]: All fundamental core mods are successfully located
+[13:39:34] [main/DEBUG] [FML/]: Attempting to load commandline specified mods, relative to C:\eclipse\workspace\MiscUtil\.
+[13:39:34] [main/DEBUG] [FML/]: Discovering coremods
+[13:39:34] [main/INFO] [LaunchWrapper/]: Calling tweak class net.minecraftforge.gradle.tweakers.CoremodTweaker
+[13:39:34] [main/INFO] [GradleStart/]: Injecting location in coremod cpw.mods.fml.relauncher.FMLCorePlugin
+[13:39:34] [main/INFO] [GradleStart/]: Injecting location in coremod net.minecraftforge.classloading.FMLForgePlugin
+[13:39:34] [main/INFO] [LaunchWrapper/]: Loading tweak class name cpw.mods.fml.common.launcher.FMLInjectionAndSortingTweaker
+[13:39:34] [main/INFO] [LaunchWrapper/]: Loading tweak class name cpw.mods.fml.common.launcher.FMLDeobfTweaker
+[13:39:34] [main/INFO] [LaunchWrapper/]: Loading tweak class name net.minecraftforge.gradle.tweakers.AccessTransformerTweaker
+[13:39:34] [main/INFO] [LaunchWrapper/]: Calling tweak class cpw.mods.fml.common.launcher.FMLInjectionAndSortingTweaker
+[13:39:34] [main/INFO] [LaunchWrapper/]: Calling tweak class cpw.mods.fml.common.launcher.FMLInjectionAndSortingTweaker
+[13:39:34] [main/INFO] [LaunchWrapper/]: Calling tweak class cpw.mods.fml.relauncher.CoreModManager$FMLPluginWrapper
+[13:39:34] [main/DEBUG] [FML/]: Injecting coremod FMLCorePlugin {cpw.mods.fml.relauncher.FMLCorePlugin} class transformers
+[13:39:34] [main/TRACE] [FML/]: Registering transformer cpw.mods.fml.common.asm.transformers.MarkerTransformer
+[13:39:34] [main/TRACE] [FML/]: Registering transformer cpw.mods.fml.common.asm.transformers.SideTransformer
+[13:39:34] [main/TRACE] [FML/]: Registering transformer cpw.mods.fml.common.asm.transformers.EventSubscriptionTransformer
+[13:39:34] [main/DEBUG] [FML/]: Injection complete
+[13:39:34] [main/DEBUG] [FML/]: Running coremod plugin for FMLCorePlugin {cpw.mods.fml.relauncher.FMLCorePlugin}
+[13:39:34] [main/DEBUG] [FML/]: Running coremod plugin FMLCorePlugin
+[13:39:34] [main/ERROR] [FML/]: The binary patch set is missing. Either you are in a development environment, or things are not going to work!
+[13:39:35] [main/ERROR] [FML/]: FML appears to be missing any signature data. This is not a good thing
+[13:39:35] [main/DEBUG] [FML/]: Coremod plugin class FMLCorePlugin run successfully
+[13:39:35] [main/INFO] [LaunchWrapper/]: Calling tweak class cpw.mods.fml.relauncher.CoreModManager$FMLPluginWrapper
+[13:39:35] [main/DEBUG] [FML/]: Injecting coremod FMLForgePlugin {net.minecraftforge.classloading.FMLForgePlugin} class transformers
+[13:39:35] [main/TRACE] [FML/]: Registering transformer net.minecraftforge.classloading.FluidIdTransformer
+[13:39:35] [main/DEBUG] [FML/]: Injection complete
+[13:39:35] [main/DEBUG] [FML/]: Running coremod plugin for FMLForgePlugin {net.minecraftforge.classloading.FMLForgePlugin}
+[13:39:35] [main/DEBUG] [FML/]: Running coremod plugin FMLForgePlugin
+[13:39:35] [main/DEBUG] [FML/]: Coremod plugin class FMLForgePlugin run successfully
+[13:39:35] [main/INFO] [LaunchWrapper/]: Calling tweak class cpw.mods.fml.common.launcher.FMLDeobfTweaker
+[13:39:35] [main/DEBUG] [FML/]: Loaded 57 rules from AccessTransformer config file fml_at.cfg
+[13:39:35] [main/DEBUG] [FML/]: Loaded 89 rules from AccessTransformer config file forge_at.cfg
+[13:39:35] [main/DEBUG] [FML/]: Validating minecraft
+[13:39:36] [main/DEBUG] [FML/]: Minecraft validated, launching...
+[13:39:36] [main/INFO] [LaunchWrapper/]: Calling tweak class net.minecraftforge.gradle.tweakers.AccessTransformerTweaker
+[13:39:36] [main/INFO] [LaunchWrapper/]: Loading tweak class name cpw.mods.fml.common.launcher.TerminalTweaker
+[13:39:36] [main/INFO] [LaunchWrapper/]: Calling tweak class cpw.mods.fml.common.launcher.TerminalTweaker
+[13:39:36] [main/INFO] [LaunchWrapper/]: Launching wrapped minecraft {net.minecraft.client.main.Main}
+[13:39:38] [Client thread/INFO] [STDOUT/]: [cpw.mods.fml.client.SplashProgress:start:188]: ---- Minecraft Crash Report ----
+// Oh - I know what I did wrong!
+
+Time: 24/11/15 1:39 PM
+Description: Loading screen debug info
+
+This is just a prompt for computer specs to be printed. THIS IS NOT A ERROR
+
+
+A detailed walkthrough of the error, its code path and all known details is as follows:
+---------------------------------------------------------------------------------------
+
+-- System Details --
+Details:
+ Minecraft Version: 1.7.10
+ Operating System: Windows 7 (amd64) version 6.1
+ Java Version: 1.7.0_79, Oracle Corporation
+ Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
+ Memory: 162651248 bytes (155 MB) / 256376832 bytes (244 MB) up to 3804758016 bytes (3628 MB)
+ JVM Flags: 0 total;
+ AABB Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
+ IntCache: cache: 0, tcache: 0, allocated: 0, tallocated: 0
+ FML:
+ GL info: ' Vendor: 'NVIDIA Corporation' Version: '4.5.0 NVIDIA 355.82' Renderer: 'GeForce GTX 770/PCIe/SSE2'
+[13:39:38] [Client thread/INFO] [MinecraftForge/]: Attempting early MinecraftForge initialization
+[13:39:38] [Client thread/INFO] [FML/]: MinecraftForge v10.13.4.1448 Initialized
+[13:39:38] [Client thread/INFO] [FML/]: Replaced 183 ore recipies
+[13:39:38] [Client thread/INFO] [MinecraftForge/]: Completed early MinecraftForge initialization
+[13:39:38] [Client thread/DEBUG] [FML/]: File C:\eclipse\workspace\MiscUtil\config\injectedDependencies.json not found. No dependencies injected
+[13:39:38] [Client thread/DEBUG] [FML/]: Building injected Mod Containers [cpw.mods.fml.common.FMLContainer, net.minecraftforge.common.ForgeModContainer]
+[13:39:38] [Client thread/DEBUG] [FML/]: Attempting to load mods contained in the minecraft jar file and associated classes
+[13:39:38] [Client thread/DEBUG] [FML/]: Found a minecraft related directory at C:\eclipse\workspace\MiscUtil\bin, examining for mod candidates
+[13:39:38] [Client thread/DEBUG] [FML/]: Found a minecraft related directory at C:\eclipse\Forge\bin, examining for mod candidates
+[13:39:38] [Client thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\minecraft\net\minecraftforge\forge\1.7.10-10.13.4.1448-1.7.10\forgeSrc-1.7.10-10.13.4.1448-1.7.10.jar, examining for mod candidates
+[13:39:38] [Client thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\net.minecraft\launchwrapper\1.11\9c0592c6e1e9ea296a70948081bd4cc84dda1289\launchwrapper-1.11.jar, examining for mod candidates
+[13:39:38] [Client thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.google.code.findbugs\jsr305\1.3.9\40719ea6961c0cb6afaeb6a921eaa1f6afd4cfdf\jsr305-1.3.9.jar, examining for mod candidates
+[13:39:38] [Client thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.ow2.asm\asm-debug-all\5.0.3\f9e364ae2a66ce2a543012a4668856e84e5dab74\asm-debug-all-5.0.3.jar, examining for mod candidates
+[13:39:38] [Client thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.typesafe.akka\akka-actor_2.11\2.3.3\ed62e9fc709ca0f2ff1a3220daa8b70a2870078e\akka-actor_2.11-2.3.3.jar, examining for mod candidates
+[13:39:38] [Client thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.typesafe\config\1.2.1\f771f71fdae3df231bcd54d5ca2d57f0bf93f467\config-1.2.1.jar, examining for mod candidates
+[13:39:38] [Client thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang\scala-actors-migration_2.11\1.1.0\dfa8bc42b181d5b9f1a5dd147f8ae308b893eb6f\scala-actors-migration_2.11-1.1.0.jar, examining for mod candidates
+[13:39:38] [Client thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang\scala-compiler\2.11.1\56ea2e6c025e0821f28d73ca271218b8dd04926a\scala-compiler-2.11.1.jar, examining for mod candidates
+[13:39:38] [Client thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang.plugins\scala-continuations-library_2.11\1.0.2\e517c53a7e9acd6b1668c5a35eccbaa3bab9aac\scala-continuations-library_2.11-1.0.2.jar, examining for mod candidates
+[13:39:38] [Client thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang.plugins\scala-continuations-plugin_2.11.1\1.0.2\f361a3283452c57fa30c1ee69448995de23c60f7\scala-continuations-plugin_2.11.1-1.0.2.jar, examining for mod candidates
+[13:39:38] [Client thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang\scala-library\2.11.1\e11da23da3eabab9f4777b9220e60d44c1aab6a\scala-library-2.11.1.jar, examining for mod candidates
+[13:39:38] [Client thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang\scala-parser-combinators_2.11\1.0.1\f05d7345bf5a58924f2837c6c1f4d73a938e1ff0\scala-parser-combinators_2.11-1.0.1.jar, examining for mod candidates
+[13:39:38] [Client thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang\scala-reflect\2.11.1\6580347e61cc7f8e802941e7fde40fa83b8badeb\scala-reflect-2.11.1.jar, examining for mod candidates
+[13:39:38] [Client thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang\scala-swing_2.11\1.0.1\b1cdd92bd47b1e1837139c1c53020e86bb9112ae\scala-swing_2.11-1.0.1.jar, examining for mod candidates
+[13:39:38] [Client thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang\scala-xml_2.11\1.0.2\7a80ec00aec122fba7cd4e0d4cdd87ff7e4cb6d0\scala-xml_2.11-1.0.2.jar, examining for mod candidates
+[13:39:38] [Client thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\net.sf.jopt-simple\jopt-simple\4.5\6065cc95c661255349c1d0756657be17c29a4fd3\jopt-simple-4.5.jar, examining for mod candidates
+[13:39:38] [Client thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\lzma\lzma\0.0.1\521616dc7487b42bef0e803bd2fa3faf668101d7\lzma-0.0.1.jar, examining for mod candidates
+[13:39:38] [Client thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.mojang\realms\1.3.5\807ae355ee63583becd7ea60e76aab1532bb42e\realms-1.3.5.jar, examining for mod candidates
+[13:39:38] [Client thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.apache.commons\commons-compress\1.8.1\a698750c16740fd5b3871425f4cb3bbaa87f529d\commons-compress-1.8.1.jar, examining for mod candidates
+[13:39:38] [Client thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.apache.httpcomponents\httpclient\4.3.3\18f4247ff4572a074444572cee34647c43e7c9c7\httpclient-4.3.3.jar, examining for mod candidates
+[13:39:38] [Client thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\commons-logging\commons-logging\1.1.3\f6f66e966c70a83ffbdb6f17a0919eaf7c8aca7f\commons-logging-1.1.3.jar, examining for mod candidates
+[13:39:38] [Client thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.apache.httpcomponents\httpcore\4.3.2\31fbbff1ddbf98f3aa7377c94d33b0447c646b6e\httpcore-4.3.2.jar, examining for mod candidates
+[13:39:38] [Client thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\java3d\vecmath\1.3.1\a0ae4f51da409fa0c20fa0ca59e6bbc9413ae71d\vecmath-1.3.1.jar, examining for mod candidates
+[13:39:38] [Client thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\net.sf.trove4j\trove4j\3.0.3\42ccaf4761f0dfdfa805c9e340d99a755907e2dd\trove4j-3.0.3.jar, examining for mod candidates
+[13:39:38] [Client thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.ibm.icu\icu4j-core-mojang\51.2\63d216a9311cca6be337c1e458e587f99d382b84\icu4j-core-mojang-51.2.jar, examining for mod candidates
+[13:39:38] [Client thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.paulscode\codecjorbis\20101023\c73b5636faf089d9f00e8732a829577de25237ee\codecjorbis-20101023.jar, examining for mod candidates
+[13:39:38] [Client thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.paulscode\codecwav\20101023\12f031cfe88fef5c1dd36c563c0a3a69bd7261da\codecwav-20101023.jar, examining for mod candidates
+[13:39:38] [Client thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.paulscode\libraryjavasound\20101123\5c5e304366f75f9eaa2e8cca546a1fb6109348b3\libraryjavasound-20101123.jar, examining for mod candidates
+[13:39:38] [Client thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.paulscode\librarylwjglopenal\20100824\73e80d0794c39665aec3f62eee88ca91676674ef\librarylwjglopenal-20100824.jar, examining for mod candidates
+[13:39:38] [Client thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.paulscode\soundsystem\20120107\419c05fe9be71f792b2d76cfc9b67f1ed0fec7f6\soundsystem-20120107.jar, examining for mod candidates
+[13:39:38] [Client thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\io.netty\netty-all\4.0.10.Final\9e50bd52ffe257a0e2cd8d971688d6ce7d174325\netty-all-4.0.10.Final.jar, examining for mod candidates
+[13:39:38] [Client thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.google.guava\guava\17.0\9c6ef172e8de35fd8d4d8783e4821e57cdef7445\guava-17.0.jar, examining for mod candidates
+[13:39:38] [Client thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.apache.commons\commons-lang3\3.3.2\90a3822c38ec8c996e84c16a3477ef632cbc87a3\commons-lang3-3.3.2.jar, examining for mod candidates
+[13:39:38] [Client thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\commons-io\commons-io\2.4\b1b6ea3b7e4aa4f492509a4952029cd8e48019ad\commons-io-2.4.jar, examining for mod candidates
+[13:39:38] [Client thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\commons-codec\commons-codec\1.9\9ce04e34240f674bc72680f8b843b1457383161a\commons-codec-1.9.jar, examining for mod candidates
+[13:39:38] [Client thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\net.java.jinput\jinput\2.0.5\39c7796b469a600f72380316f6b1f11db6c2c7c4\jinput-2.0.5.jar, examining for mod candidates
+[13:39:38] [Client thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\net.java.jutils\jutils\1.0.0\e12fe1fda814bd348c1579329c86943d2cd3c6a6\jutils-1.0.0.jar, examining for mod candidates
+[13:39:38] [Client thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.google.code.gson\gson\2.2.4\a60a5e993c98c864010053cb901b7eab25306568\gson-2.2.4.jar, examining for mod candidates
+[13:39:38] [Client thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.mojang\authlib\1.5.16\ef1582b11fd0943d069cdcb72e99008ac209a283\authlib-1.5.16.jar, examining for mod candidates
+[13:39:38] [Client thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.apache.logging.log4j\log4j-api\2.0-beta9\1dd66e68cccd907880229f9e2de1314bd13ff785\log4j-api-2.0-beta9.jar, examining for mod candidates
+[13:39:38] [Client thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.apache.logging.log4j\log4j-core\2.0-beta9\678861ba1b2e1fccb594bb0ca03114bb05da9695\log4j-core-2.0-beta9.jar, examining for mod candidates
+[13:39:38] [Client thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.lwjgl.lwjgl\lwjgl\2.9.1\f58c5aabcef0e41718a564be9f8e412fff8db847\lwjgl-2.9.1.jar, examining for mod candidates
+[13:39:38] [Client thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.lwjgl.lwjgl\lwjgl_util\2.9.1\290d7ba8a1bd9566f5ddf16ad06f09af5ec9b20e\lwjgl_util-2.9.1.jar, examining for mod candidates
+[13:39:38] [Client thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\tv.twitch\twitch\5.16\1f55f009c61637c10c0acfb8b5ffc600f30044b4\twitch-5.16.jar, examining for mod candidates
+[13:39:38] [Client thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang\scala-actors\2.11.0\8ccfb6541de179bb1c4d45cf414acee069b7f78b\scala-actors-2.11.0.jar, examining for mod candidates
+[13:39:38] [Client thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang.modules\scala-xml_2.11\1.0.2\820fbca7e524b530fdadc594c39d49a21ea0337e\scala-xml_2.11-1.0.2.jar, examining for mod candidates
+[13:39:38] [Client thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang.modules\scala-parser-combinators_2.11\1.0.1\f05d7345bf5a58924f2837c6c1f4d73a938e1ff0\scala-parser-combinators_2.11-1.0.1.jar, examining for mod candidates
+[13:39:38] [Client thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\net.java.jinput\jinput-platform\2.0.5\7ff832a6eb9ab6a767f1ade2b548092d0fa64795\jinput-platform-2.0.5-natives-linux.jar, examining for mod candidates
+[13:39:38] [Client thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\net.java.jinput\jinput-platform\2.0.5\385ee093e01f587f30ee1c8a2ee7d408fd732e16\jinput-platform-2.0.5-natives-windows.jar, examining for mod candidates
+[13:39:38] [Client thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\net.java.jinput\jinput-platform\2.0.5\53f9c919f34d2ca9de8c51fc4e1e8282029a9232\jinput-platform-2.0.5-natives-osx.jar, examining for mod candidates
+[13:39:38] [Client thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\tv.twitch\twitch-platform\5.16\7c6affe439099806a4f552da14c42f9d643d8b23\twitch-platform-5.16-natives-windows-32.jar, examining for mod candidates
+[13:39:38] [Client thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\tv.twitch\twitch-platform\5.16\39d0c3d363735b4785598e0e7fbf8297c706a9f9\twitch-platform-5.16-natives-windows-64.jar, examining for mod candidates
+[13:39:38] [Client thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\tv.twitch\twitch-platform\5.16\62503ee712766cf77f97252e5902786fd834b8c5\twitch-platform-5.16-natives-osx.jar, examining for mod candidates
+[13:39:38] [Client thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\tv.twitch\twitch-external-platform\4.5\18215140f010c05b9f86ef6f0f8871954d2ccebf\twitch-external-platform-4.5-natives-windows-32.jar, examining for mod candidates
+[13:39:38] [Client thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\tv.twitch\twitch-external-platform\4.5\c3cde57891b935d41b6680a9c5e1502eeab76d86\twitch-external-platform-4.5-natives-windows-64.jar, examining for mod candidates
+[13:39:38] [Client thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.lwjgl.lwjgl\lwjgl-platform\2.9.1\4c517eca808522457dd95ee8fc1fbcdbb602efbe\lwjgl-platform-2.9.1-natives-windows.jar, examining for mod candidates
+[13:39:38] [Client thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.lwjgl.lwjgl\lwjgl-platform\2.9.1\aa9aae879af8eb378e22cfc64db56ec2ca9a44d1\lwjgl-platform-2.9.1-natives-linux.jar, examining for mod candidates
+[13:39:38] [Client thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.lwjgl.lwjgl\lwjgl-platform\2.9.1\2d12c83fdfbc04ecabf02c7bc8cc54d034f0daac\lwjgl-platform-2.9.1-natives-osx.jar, examining for mod candidates
+[13:39:38] [Client thread/DEBUG] [FML/]: Found a minecraft related directory at C:\Users\Jordan\.gradle\caches\minecraft\net\minecraftforge\forge\1.7.10-10.13.4.1448-1.7.10\start, examining for mod candidates
+[13:39:38] [Client thread/DEBUG] [FML/]: Minecraft jar mods loaded successfully
+[13:39:38] [Client thread/INFO] [FML/]: Found 0 mods from the command line. Injecting into mod discoverer
+[13:39:38] [Client thread/INFO] [FML/]: Searching C:\eclipse\workspace\MiscUtil\mods for mods
+[13:39:38] [Client thread/DEBUG] [FML/]: Found a candidate mod directory 1.7.10
+[13:39:38] [Client thread/DEBUG] [FML/]: Found a candidate mod directory ic2
+[13:39:38] [Client thread/INFO] [FML/]: Also searching C:\eclipse\workspace\MiscUtil\mods\1.7.10 for mods
+[13:39:38] [Client thread/DEBUG] [FML/]: Examining directory bin for potential mods
+[13:39:38] [Client thread/DEBUG] [FML/]: Found an mcmod.info file in directory bin
+[13:39:38] [Client thread/TRACE] [FML/]: Recursing into package assets
+[13:39:38] [Client thread/TRACE] [FML/]: Recursing into package assets.miscutils
+[13:39:38] [Client thread/TRACE] [FML/]: Recursing into package assets.miscutils.lang
+[13:39:38] [Client thread/TRACE] [FML/]: Recursing into package assets.miscutils.textures
+[13:39:38] [Client thread/TRACE] [FML/]: Recursing into package assets.miscutils.textures.armor
+[13:39:38] [Client thread/TRACE] [FML/]: Recursing into package assets.miscutils.textures.blocks
+[13:39:38] [Client thread/TRACE] [FML/]: Recursing into package assets.miscutils.textures.entity
+[13:39:38] [Client thread/TRACE] [FML/]: Recursing into package assets.miscutils.textures.gui
+[13:39:38] [Client thread/TRACE] [FML/]: Recursing into package assets.miscutils.textures.gui.container
+[13:39:38] [Client thread/TRACE] [FML/]: Recursing into package assets.miscutils.textures.items
+[13:39:38] [Client thread/TRACE] [FML/]: Recursing into package miscutil
+[13:39:38] [Client thread/TRACE] [FML/]: Recursing into package miscutil.block
+[13:39:38] [Client thread/TRACE] [FML/]: Recursing into package miscutil.creativetabs
+[13:39:38] [Client thread/TRACE] [FML/]: Recursing into package miscutil.handler
+[13:39:38] [Client thread/TRACE] [FML/]: Recursing into package miscutil.item
+[13:39:38] [Client thread/TRACE] [FML/]: Recursing into package miscutil.lib
+[13:39:38] [Client thread/TRACE] [FML/]: Recursing into package miscutil.main
+[13:39:38] [Client thread/DEBUG] [FML/]: Identified a mod of type Lcpw/mods/fml/common/Mod; (miscutil.MiscUtils) - loading
+[13:39:38] [Client thread/TRACE] [miscutils/]: Parsed dependency info : [] [] []
+[13:39:38] [Client thread/TRACE] [FML/]: Recursing into package miscutil.proxy
+[13:39:38] [Client thread/DEBUG] [FML/]: Examining directory bin for potential mods
+[13:39:38] [Client thread/DEBUG] [FML/]: No mcmod.info file found in directory bin
+[13:39:38] [Client thread/DEBUG] [FML/]: Examining file forgeSrc-1.7.10-10.13.4.1448-1.7.10.jar for potential mods
+[13:39:38] [Client thread/DEBUG] [FML/]: The mod container forgeSrc-1.7.10-10.13.4.1448-1.7.10.jar appears to be missing an mcmod.info file
+[13:39:39] [Client thread/DEBUG] [FML/]: Examining file launchwrapper-1.11.jar for potential mods
+[13:39:39] [Client thread/DEBUG] [FML/]: The mod container launchwrapper-1.11.jar appears to be missing an mcmod.info file
+[13:39:39] [Client thread/DEBUG] [FML/]: Examining file jsr305-1.3.9.jar for potential mods
+[13:39:39] [Client thread/DEBUG] [FML/]: The mod container jsr305-1.3.9.jar appears to be missing an mcmod.info file
+[13:39:39] [Client thread/DEBUG] [FML/]: Examining file asm-debug-all-5.0.3.jar for potential mods
+[13:39:39] [Client thread/DEBUG] [FML/]: The mod container asm-debug-all-5.0.3.jar appears to be missing an mcmod.info file
+[13:39:39] [Client thread/DEBUG] [FML/]: Examining file akka-actor_2.11-2.3.3.jar for potential mods
+[13:39:39] [Client thread/DEBUG] [FML/]: The mod container akka-actor_2.11-2.3.3.jar appears to be missing an mcmod.info file
+[13:39:39] [Client thread/DEBUG] [FML/]: Examining file config-1.2.1.jar for potential mods
+[13:39:39] [Client thread/DEBUG] [FML/]: The mod container config-1.2.1.jar appears to be missing an mcmod.info file
+[13:39:39] [Client thread/DEBUG] [FML/]: Examining file scala-actors-migration_2.11-1.1.0.jar for potential mods
+[13:39:39] [Client thread/DEBUG] [FML/]: The mod container scala-actors-migration_2.11-1.1.0.jar appears to be missing an mcmod.info file
+[13:39:39] [Client thread/DEBUG] [FML/]: Examining file scala-compiler-2.11.1.jar for potential mods
+[13:39:39] [Client thread/DEBUG] [FML/]: The mod container scala-compiler-2.11.1.jar appears to be missing an mcmod.info file
+[13:39:39] [Client thread/DEBUG] [FML/]: Examining file scala-continuations-library_2.11-1.0.2.jar for potential mods
+[13:39:39] [Client thread/DEBUG] [FML/]: The mod container scala-continuations-library_2.11-1.0.2.jar appears to be missing an mcmod.info file
+[13:39:39] [Client thread/DEBUG] [FML/]: Examining file scala-continuations-plugin_2.11.1-1.0.2.jar for potential mods
+[13:39:39] [Client thread/DEBUG] [FML/]: The mod container scala-continuations-plugin_2.11.1-1.0.2.jar appears to be missing an mcmod.info file
+[13:39:39] [Client thread/DEBUG] [FML/]: Examining file scala-library-2.11.1.jar for potential mods
+[13:39:39] [Client thread/DEBUG] [FML/]: The mod container scala-library-2.11.1.jar appears to be missing an mcmod.info file
+[13:39:39] [Client thread/DEBUG] [FML/]: Examining file scala-parser-combinators_2.11-1.0.1.jar for potential mods
+[13:39:39] [Client thread/DEBUG] [FML/]: The mod container scala-parser-combinators_2.11-1.0.1.jar appears to be missing an mcmod.info file
+[13:39:39] [Client thread/DEBUG] [FML/]: Examining file scala-reflect-2.11.1.jar for potential mods
+[13:39:39] [Client thread/DEBUG] [FML/]: The mod container scala-reflect-2.11.1.jar appears to be missing an mcmod.info file
+[13:39:39] [Client thread/DEBUG] [FML/]: Examining file scala-swing_2.11-1.0.1.jar for potential mods
+[13:39:39] [Client thread/DEBUG] [FML/]: The mod container scala-swing_2.11-1.0.1.jar appears to be missing an mcmod.info file
+[13:39:39] [Client thread/DEBUG] [FML/]: Examining file scala-xml_2.11-1.0.2.jar for potential mods
+[13:39:39] [Client thread/DEBUG] [FML/]: The mod container scala-xml_2.11-1.0.2.jar appears to be missing an mcmod.info file
+[13:39:39] [Client thread/DEBUG] [FML/]: Examining file jopt-simple-4.5.jar for potential mods
+[13:39:39] [Client thread/DEBUG] [FML/]: The mod container jopt-simple-4.5.jar appears to be missing an mcmod.info file
+[13:39:39] [Client thread/DEBUG] [FML/]: Examining file lzma-0.0.1.jar for potential mods
+[13:39:39] [Client thread/DEBUG] [FML/]: The mod container lzma-0.0.1.jar appears to be missing an mcmod.info file
+[13:39:39] [Client thread/DEBUG] [FML/]: Examining file realms-1.3.5.jar for potential mods
+[13:39:39] [Client thread/DEBUG] [FML/]: The mod container realms-1.3.5.jar appears to be missing an mcmod.info file
+[13:39:39] [Client thread/DEBUG] [FML/]: Examining file commons-compress-1.8.1.jar for potential mods
+[13:39:39] [Client thread/DEBUG] [FML/]: The mod container commons-compress-1.8.1.jar appears to be missing an mcmod.info file
+[13:39:39] [Client thread/DEBUG] [FML/]: Examining file httpclient-4.3.3.jar for potential mods
+[13:39:39] [Client thread/DEBUG] [FML/]: The mod container httpclient-4.3.3.jar appears to be missing an mcmod.info file
+[13:39:39] [Client thread/DEBUG] [FML/]: Examining file commons-logging-1.1.3.jar for potential mods
+[13:39:39] [Client thread/DEBUG] [FML/]: The mod container commons-logging-1.1.3.jar appears to be missing an mcmod.info file
+[13:39:39] [Client thread/DEBUG] [FML/]: Examining file httpcore-4.3.2.jar for potential mods
+[13:39:39] [Client thread/DEBUG] [FML/]: The mod container httpcore-4.3.2.jar appears to be missing an mcmod.info file
+[13:39:39] [Client thread/DEBUG] [FML/]: Examining file vecmath-1.3.1.jar for potential mods
+[13:39:39] [Client thread/DEBUG] [FML/]: The mod container vecmath-1.3.1.jar appears to be missing an mcmod.info file
+[13:39:39] [Client thread/DEBUG] [FML/]: Examining file trove4j-3.0.3.jar for potential mods
+[13:39:39] [Client thread/DEBUG] [FML/]: The mod container trove4j-3.0.3.jar appears to be missing an mcmod.info file
+[13:39:39] [Client thread/DEBUG] [FML/]: Examining file icu4j-core-mojang-51.2.jar for potential mods
+[13:39:39] [Client thread/DEBUG] [FML/]: The mod container icu4j-core-mojang-51.2.jar appears to be missing an mcmod.info file
+[13:39:40] [Client thread/DEBUG] [FML/]: Examining file codecjorbis-20101023.jar for potential mods
+[13:39:40] [Client thread/DEBUG] [FML/]: The mod container codecjorbis-20101023.jar appears to be missing an mcmod.info file
+[13:39:40] [Client thread/DEBUG] [FML/]: Examining file codecwav-20101023.jar for potential mods
+[13:39:40] [Client thread/DEBUG] [FML/]: The mod container codecwav-20101023.jar appears to be missing an mcmod.info file
+[13:39:40] [Client thread/DEBUG] [FML/]: Examining file libraryjavasound-20101123.jar for potential mods
+[13:39:40] [Client thread/DEBUG] [FML/]: The mod container libraryjavasound-20101123.jar appears to be missing an mcmod.info file
+[13:39:40] [Client thread/DEBUG] [FML/]: Examining file librarylwjglopenal-20100824.jar for potential mods
+[13:39:40] [Client thread/DEBUG] [FML/]: The mod container librarylwjglopenal-20100824.jar appears to be missing an mcmod.info file
+[13:39:40] [Client thread/DEBUG] [FML/]: Examining file soundsystem-20120107.jar for potential mods
+[13:39:40] [Client thread/DEBUG] [FML/]: The mod container soundsystem-20120107.jar appears to be missing an mcmod.info file
+[13:39:40] [Client thread/DEBUG] [FML/]: Examining file netty-all-4.0.10.Final.jar for potential mods
+[13:39:40] [Client thread/DEBUG] [FML/]: The mod container netty-all-4.0.10.Final.jar appears to be missing an mcmod.info file
+[13:39:40] [Client thread/DEBUG] [FML/]: Examining file guava-17.0.jar for potential mods
+[13:39:40] [Client thread/DEBUG] [FML/]: The mod container guava-17.0.jar appears to be missing an mcmod.info file
+[13:39:40] [Client thread/DEBUG] [FML/]: Examining file commons-lang3-3.3.2.jar for potential mods
+[13:39:40] [Client thread/DEBUG] [FML/]: The mod container commons-lang3-3.3.2.jar appears to be missing an mcmod.info file
+[13:39:40] [Client thread/DEBUG] [FML/]: Examining file commons-io-2.4.jar for potential mods
+[13:39:40] [Client thread/DEBUG] [FML/]: The mod container commons-io-2.4.jar appears to be missing an mcmod.info file
+[13:39:40] [Client thread/DEBUG] [FML/]: Examining file commons-codec-1.9.jar for potential mods
+[13:39:40] [Client thread/DEBUG] [FML/]: The mod container commons-codec-1.9.jar appears to be missing an mcmod.info file
+[13:39:40] [Client thread/DEBUG] [FML/]: Examining file jinput-2.0.5.jar for potential mods
+[13:39:40] [Client thread/DEBUG] [FML/]: The mod container jinput-2.0.5.jar appears to be missing an mcmod.info file
+[13:39:40] [Client thread/DEBUG] [FML/]: Examining file jutils-1.0.0.jar for potential mods
+[13:39:40] [Client thread/DEBUG] [FML/]: The mod container jutils-1.0.0.jar appears to be missing an mcmod.info file
+[13:39:40] [Client thread/DEBUG] [FML/]: Examining file gson-2.2.4.jar for potential mods
+[13:39:40] [Client thread/DEBUG] [FML/]: The mod container gson-2.2.4.jar appears to be missing an mcmod.info file
+[13:39:40] [Client thread/DEBUG] [FML/]: Examining file authlib-1.5.16.jar for potential mods
+[13:39:40] [Client thread/DEBUG] [FML/]: The mod container authlib-1.5.16.jar appears to be missing an mcmod.info file
+[13:39:40] [Client thread/DEBUG] [FML/]: Examining file log4j-api-2.0-beta9.jar for potential mods
+[13:39:40] [Client thread/DEBUG] [FML/]: The mod container log4j-api-2.0-beta9.jar appears to be missing an mcmod.info file
+[13:39:40] [Client thread/DEBUG] [FML/]: Examining file log4j-core-2.0-beta9.jar for potential mods
+[13:39:40] [Client thread/DEBUG] [FML/]: The mod container log4j-core-2.0-beta9.jar appears to be missing an mcmod.info file
+[13:39:40] [Client thread/DEBUG] [FML/]: Examining file lwjgl-2.9.1.jar for potential mods
+[13:39:40] [Client thread/DEBUG] [FML/]: The mod container lwjgl-2.9.1.jar appears to be missing an mcmod.info file
+[13:39:40] [Client thread/DEBUG] [FML/]: Examining file lwjgl_util-2.9.1.jar for potential mods
+[13:39:40] [Client thread/DEBUG] [FML/]: The mod container lwjgl_util-2.9.1.jar appears to be missing an mcmod.info file
+[13:39:40] [Client thread/DEBUG] [FML/]: Examining file twitch-5.16.jar for potential mods
+[13:39:40] [Client thread/DEBUG] [FML/]: The mod container twitch-5.16.jar appears to be missing an mcmod.info file
+[13:39:40] [Client thread/DEBUG] [FML/]: Examining file scala-actors-2.11.0.jar for potential mods
+[13:39:40] [Client thread/DEBUG] [FML/]: The mod container scala-actors-2.11.0.jar appears to be missing an mcmod.info file
+[13:39:40] [Client thread/DEBUG] [FML/]: Examining file scala-xml_2.11-1.0.2.jar for potential mods
+[13:39:40] [Client thread/DEBUG] [FML/]: The mod container scala-xml_2.11-1.0.2.jar appears to be missing an mcmod.info file
+[13:39:40] [Client thread/DEBUG] [FML/]: Examining file scala-parser-combinators_2.11-1.0.1.jar for potential mods
+[13:39:40] [Client thread/DEBUG] [FML/]: The mod container scala-parser-combinators_2.11-1.0.1.jar appears to be missing an mcmod.info file
+[13:39:40] [Client thread/DEBUG] [FML/]: Examining file jinput-platform-2.0.5-natives-linux.jar for potential mods
+[13:39:40] [Client thread/DEBUG] [FML/]: The mod container jinput-platform-2.0.5-natives-linux.jar appears to be missing an mcmod.info file
+[13:39:40] [Client thread/DEBUG] [FML/]: Examining file jinput-platform-2.0.5-natives-windows.jar for potential mods
+[13:39:40] [Client thread/DEBUG] [FML/]: The mod container jinput-platform-2.0.5-natives-windows.jar appears to be missing an mcmod.info file
+[13:39:40] [Client thread/DEBUG] [FML/]: Examining file jinput-platform-2.0.5-natives-osx.jar for potential mods
+[13:39:40] [Client thread/DEBUG] [FML/]: The mod container jinput-platform-2.0.5-natives-osx.jar appears to be missing an mcmod.info file
+[13:39:40] [Client thread/DEBUG] [FML/]: Examining file twitch-platform-5.16-natives-windows-32.jar for potential mods
+[13:39:40] [Client thread/DEBUG] [FML/]: The mod container twitch-platform-5.16-natives-windows-32.jar appears to be missing an mcmod.info file
+[13:39:40] [Client thread/DEBUG] [FML/]: Examining file twitch-platform-5.16-natives-windows-64.jar for potential mods
+[13:39:40] [Client thread/DEBUG] [FML/]: The mod container twitch-platform-5.16-natives-windows-64.jar appears to be missing an mcmod.info file
+[13:39:40] [Client thread/DEBUG] [FML/]: Examining file twitch-platform-5.16-natives-osx.jar for potential mods
+[13:39:40] [Client thread/DEBUG] [FML/]: The mod container twitch-platform-5.16-natives-osx.jar appears to be missing an mcmod.info file
+[13:39:40] [Client thread/DEBUG] [FML/]: Examining file twitch-external-platform-4.5-natives-windows-32.jar for potential mods
+[13:39:40] [Client thread/DEBUG] [FML/]: The mod container twitch-external-platform-4.5-natives-windows-32.jar appears to be missing an mcmod.info file
+[13:39:40] [Client thread/DEBUG] [FML/]: Examining file twitch-external-platform-4.5-natives-windows-64.jar for potential mods
+[13:39:40] [Client thread/DEBUG] [FML/]: The mod container twitch-external-platform-4.5-natives-windows-64.jar appears to be missing an mcmod.info file
+[13:39:40] [Client thread/DEBUG] [FML/]: Examining file lwjgl-platform-2.9.1-natives-windows.jar for potential mods
+[13:39:40] [Client thread/DEBUG] [FML/]: The mod container lwjgl-platform-2.9.1-natives-windows.jar appears to be missing an mcmod.info file
+[13:39:40] [Client thread/DEBUG] [FML/]: Examining file lwjgl-platform-2.9.1-natives-linux.jar for potential mods
+[13:39:40] [Client thread/DEBUG] [FML/]: The mod container lwjgl-platform-2.9.1-natives-linux.jar appears to be missing an mcmod.info file
+[13:39:40] [Client thread/DEBUG] [FML/]: Examining file lwjgl-platform-2.9.1-natives-osx.jar for potential mods
+[13:39:40] [Client thread/DEBUG] [FML/]: The mod container lwjgl-platform-2.9.1-natives-osx.jar appears to be missing an mcmod.info file
+[13:39:40] [Client thread/DEBUG] [FML/]: Examining directory start for potential mods
+[13:39:40] [Client thread/DEBUG] [FML/]: No mcmod.info file found in directory start
+[13:39:40] [Client thread/TRACE] [FML/]: Recursing into package net
+[13:39:40] [Client thread/TRACE] [FML/]: Recursing into package net.minecraftforge
+[13:39:40] [Client thread/TRACE] [FML/]: Recursing into package net.minecraftforge.gradle
+[13:39:40] [Client thread/TRACE] [FML/]: Recursing into package net.minecraftforge.gradle.tweakers
+[13:39:40] [Client thread/DEBUG] [FML/]: Examining directory 1.7.10 for potential mods
+[13:39:40] [Client thread/DEBUG] [FML/]: No mcmod.info file found in directory 1.7.10
+[13:39:40] [Client thread/DEBUG] [FML/]: Examining directory ic2 for potential mods
+[13:39:40] [Client thread/DEBUG] [FML/]: No mcmod.info file found in directory ic2
+[13:39:40] [Client thread/INFO] [FML/]: Forge Mod Loader has identified 4 mods to load
+[13:39:40] [Client thread/TRACE] [FML/]: Received a system property request ''
+[13:39:40] [Client thread/TRACE] [FML/]: System property request managing the state of 0 mods
+[13:39:40] [Client thread/DEBUG] [FML/]: After merging, found state information for 0 mods
+[13:39:40] [Client thread/DEBUG] [FML/]: Found translations in forgeSrc-1.7.10-10.13.4.1448-1.7.10.jar [en_US, af_ZA, ar_SA, br_FR, ca_ES, cs_CZ, da_DK, de_DE, el_GR, en_US, es_ES, fa_IR, fi_FI, fr_FR, he_IL, hu_HU, it_IT, ja_JP, ko_KR, lt_LT, nb_NO, nl_NL, nn_NO, no_NO, pl_PL, pt_BR, pt_PT, ro_RO, ru_RU, sl_SI, sr_SP, sv_SE, tr_TR, uk_UA, vi_VN, zh_CN, zh_TW, en_US]
+[13:39:40] [Client thread/DEBUG] [FML/]: Found translations in forgeSrc-1.7.10-10.13.4.1448-1.7.10.jar [en_US, af_ZA, ar_SA, br_FR, ca_ES, cs_CZ, da_DK, de_DE, el_GR, en_US, es_ES, fa_IR, fi_FI, fr_FR, he_IL, hu_HU, it_IT, ja_JP, ko_KR, lt_LT, nb_NO, nl_NL, nn_NO, no_NO, pl_PL, pt_BR, pt_PT, ro_RO, ru_RU, sl_SI, sr_SP, sv_SE, tr_TR, uk_UA, vi_VN, zh_CN, zh_TW, en_US]
+[13:39:40] [Client thread/DEBUG] [miscutils/]: Enabling mod miscutils
+[13:39:40] [Client thread/DEBUG] [FML/]: Injecting found translation assets for lang en_US at assets/miscutils/lang/en_US.lang into language system
+[13:39:40] [Client thread/TRACE] [FML/]: Verifying mod requirements are satisfied
+[13:39:40] [Client thread/TRACE] [FML/]: All mod requirements are satisfied
+[13:39:40] [Client thread/TRACE] [FML/]: Sorting mods into an ordered list
+[13:39:40] [Client thread/TRACE] [FML/]: Mod sorting completed successfully
+[13:39:40] [Client thread/DEBUG] [FML/]: Mod sorting data
+[13:39:40] [Client thread/DEBUG] [FML/]: miscutils(miscutils:0.3.3.1a): bin ()
+[13:39:40] [Client thread/TRACE] [mcp/mcp]: Sending event FMLConstructionEvent to mod mcp
+[13:39:40] [Client thread/TRACE] [mcp/mcp]: Sent event FMLConstructionEvent to mod mcp
+[13:39:40] [Client thread/TRACE] [FML/FML]: Sending event FMLConstructionEvent to mod FML
+[13:39:40] [Client thread/TRACE] [FML/FML]: Mod FML is using network checker : Invoking method checkModLists
+[13:39:40] [Client thread/TRACE] [FML/FML]: Testing mod FML to verify it accepts its own version in a remote connection
+[13:39:40] [Client thread/TRACE] [FML/FML]: The mod FML accepts its own version (7.10.99.99)
+[13:39:40] [Client thread/INFO] [FML/FML]: Attempting connection with missing mods [mcp, FML, Forge, miscutils] at CLIENT
+[13:39:40] [Client thread/INFO] [FML/FML]: Attempting connection with missing mods [mcp, FML, Forge, miscutils] at SERVER
+[13:39:40] [Client thread/TRACE] [FML/FML]: Sent event FMLConstructionEvent to mod FML
+[13:39:40] [Client thread/TRACE] [Forge/Forge]: Sending event FMLConstructionEvent to mod Forge
+[13:39:40] [Client thread/TRACE] [FML/Forge]: Mod Forge is using network checker : No network checking performed
+[13:39:40] [Client thread/TRACE] [FML/Forge]: Testing mod Forge to verify it accepts its own version in a remote connection
+[13:39:40] [Client thread/TRACE] [FML/Forge]: The mod Forge accepts its own version (10.13.4.1448)
+[13:39:40] [Client thread/TRACE] [Forge/Forge]: Sent event FMLConstructionEvent to mod Forge
+[13:39:40] [Client thread/TRACE] [miscutils/miscutils]: Sending event FMLConstructionEvent to mod miscutils
+[13:39:40] [Client thread/TRACE] [FML/miscutils]: Mod miscutils is using network checker : Accepting version 0.3.3.1a
+[13:39:40] [Client thread/TRACE] [FML/miscutils]: Testing mod miscutils to verify it accepts its own version in a remote connection
+[13:39:40] [Client thread/TRACE] [FML/miscutils]: The mod miscutils accepts its own version (0.3.3.1a)
+[13:39:40] [Client thread/DEBUG] [FML/miscutils]: Attempting to inject @SidedProxy classes into miscutils
+[13:39:40] [Client thread/TRACE] [miscutils/miscutils]: Sent event FMLConstructionEvent to mod miscutils
+[13:39:40] [Client thread/DEBUG] [FML/]: Mod signature data
+[13:39:40] [Client thread/DEBUG] [FML/]: Valid Signatures:
+[13:39:40] [Client thread/DEBUG] [FML/]: Missing Signatures:
+[13:39:40] [Client thread/DEBUG] [FML/]: mcp (Minecraft Coder Pack 9.05) minecraft.jar
+[13:39:40] [Client thread/DEBUG] [FML/]: FML (Forge Mod Loader 7.10.99.99) forgeSrc-1.7.10-10.13.4.1448-1.7.10.jar
+[13:39:40] [Client thread/DEBUG] [FML/]: Forge (Minecraft Forge 10.13.4.1448) forgeSrc-1.7.10-10.13.4.1448-1.7.10.jar
+[13:39:40] [Client thread/DEBUG] [FML/]: miscutils (miscutils 0.3.3.1a) bin
+[13:39:40] [Client thread/DEBUG] [Forge Mod Loader/]: Mod Forge Mod Loader is missing a pack.mcmeta file, substituting a dummy one
+[13:39:40] [Client thread/DEBUG] [Minecraft Forge/]: Mod Minecraft Forge is missing a pack.mcmeta file, substituting a dummy one
+[13:39:40] [Client thread/DEBUG] [miscutils/]: Mod miscutils is missing a pack.mcmeta file, substituting a dummy one
+[13:39:40] [Client thread/INFO] [FML/]: Processing ObjectHolder annotations
+[13:39:40] [Client thread/INFO] [FML/]: Found 341 ObjectHolder annotations
+[13:39:40] [Client thread/INFO] [FML/]: Identifying ItemStackHolder annotations
+[13:39:40] [Client thread/INFO] [FML/]: Found 0 ItemStackHolder annotations
+[13:39:40] [Client thread/TRACE] [mcp/mcp]: Sending event FMLPreInitializationEvent to mod mcp
+[13:39:40] [Client thread/TRACE] [mcp/mcp]: Sent event FMLPreInitializationEvent to mod mcp
+[13:39:40] [Client thread/TRACE] [FML/FML]: Sending event FMLPreInitializationEvent to mod FML
+[13:39:40] [Client thread/TRACE] [FML/FML]: Sent event FMLPreInitializationEvent to mod FML
+[13:39:40] [Client thread/TRACE] [Forge/Forge]: Sending event FMLPreInitializationEvent to mod Forge
+[13:39:40] [Client thread/INFO] [FML/Forge]: Configured a dormant chunk cache size of 0
+[13:39:40] [Client thread/TRACE] [Forge/Forge]: Sent event FMLPreInitializationEvent to mod Forge
+[13:39:40] [Client thread/TRACE] [miscutils/miscutils]: Sending event FMLPreInitializationEvent to mod miscutils
+[13:39:40] [Client thread/INFO] [FML/miscutils]: Development mode not enabled.
+[13:39:40] [Client thread/INFO] [FML/miscutils]: EnderIO not Found - Skipping Resources
+[13:39:40] [Client thread/INFO] [FML/miscutils]: BigReactors not Found - Skipping Resources
+[13:39:40] [Client thread/INFO] [FML/miscutils]: Thaumcraft not Found - Skipping Resources
+[13:39:40] [Client thread/INFO] [FML/miscutils]: ExtraUtils not Found - Skipping Resources
+[13:39:40] [Client thread/INFO] [FML/miscutils]: Pneumaticraft not Found - Skipping Resources
+[13:39:40] [Client thread/INFO] [FML/miscutils]: SimplyJetpacks not Found - Skipping Resources
+[13:39:40] [Client thread/INFO] [FML/miscutils]: rfTools not Found - Skipping Resources
+[13:39:40] [Client thread/TRACE] [miscutils/miscutils]: Sent event FMLPreInitializationEvent to mod miscutils
+[13:39:40] [Client thread/INFO] [FML/]: Applying holder lookups
+[13:39:40] [Client thread/INFO] [FML/]: Holder lookups applied
+[13:39:40] [Client thread/INFO] [FML/]: Injecting itemstacks
+[13:39:40] [Client thread/INFO] [FML/]: Itemstack injection complete
+[13:39:40] [Sound Library Loader/INFO] [STDOUT/]: [paulscode.sound.SoundSystemLogger:message:69]:
+[13:39:40] [Sound Library Loader/INFO] [STDOUT/]: [paulscode.sound.SoundSystemLogger:message:69]: Starting up SoundSystem...
+[13:39:41] [Thread-8/INFO] [STDOUT/]: [paulscode.sound.SoundSystemLogger:message:69]: Initializing LWJGL OpenAL
+[13:39:41] [Thread-8/INFO] [STDOUT/]: [paulscode.sound.SoundSystemLogger:message:69]: (The LWJGL binding of OpenAL. For more information, see http://www.lwjgl.org)
+[13:39:41] [Thread-8/INFO] [STDOUT/]: [paulscode.sound.SoundSystemLogger:message:69]: OpenAL initialized.
+[13:39:41] [Sound Library Loader/INFO] [STDOUT/]: [paulscode.sound.SoundSystemLogger:message:69]:
+[13:39:42] [Client thread/TRACE] [mcp/mcp]: Sending event FMLInitializationEvent to mod mcp
+[13:39:42] [Client thread/TRACE] [mcp/mcp]: Sent event FMLInitializationEvent to mod mcp
+[13:39:42] [Client thread/TRACE] [FML/FML]: Sending event FMLInitializationEvent to mod FML
+[13:39:42] [Client thread/TRACE] [FML/FML]: Sent event FMLInitializationEvent to mod FML
+[13:39:42] [Client thread/TRACE] [Forge/Forge]: Sending event FMLInitializationEvent to mod Forge
+[13:39:42] [Client thread/TRACE] [Forge/Forge]: Sent event FMLInitializationEvent to mod Forge
+[13:39:42] [Client thread/TRACE] [miscutils/miscutils]: Sending event FMLInitializationEvent to mod miscutils
+[13:39:42] [Client thread/INFO] [FML/miscutils]: Looking at the stars in the sky
+[13:39:42] [Client thread/INFO] [FML/miscutils]: ???h??'?d?|7811f44e9b92870d7b5bda8c672afac7
+[13:39:42] [Client thread/INFO] [FML/miscutils]: ?Td??! ??|2301b98d1b18487fd6f67c192f4c370b
+[13:39:42] [Client thread/INFO] [FML/miscutils]: ?|$q?}|82a3daddc543a72c8bc583db0f7ec530
+[13:39:42] [Client thread/INFO] [FML/miscutils]: T?KL??^??j?|7a3757ab01321f93810ec88eb43021a3
+[13:39:42] [Client thread/TRACE] [miscutils/miscutils]: Sent event FMLInitializationEvent to mod miscutils
+[13:39:42] [Client thread/TRACE] [FML/]: Attempting to deliver 0 IMC messages to mod mcp
+[13:39:42] [Client thread/TRACE] [mcp/mcp]: Sending event IMCEvent to mod mcp
+[13:39:42] [Client thread/TRACE] [mcp/mcp]: Sent event IMCEvent to mod mcp
+[13:39:42] [Client thread/TRACE] [FML/]: Attempting to deliver 0 IMC messages to mod FML
+[13:39:42] [Client thread/TRACE] [FML/FML]: Sending event IMCEvent to mod FML
+[13:39:42] [Client thread/TRACE] [FML/FML]: Sent event IMCEvent to mod FML
+[13:39:42] [Client thread/TRACE] [FML/]: Attempting to deliver 0 IMC messages to mod Forge
+[13:39:42] [Client thread/TRACE] [Forge/Forge]: Sending event IMCEvent to mod Forge
+[13:39:42] [Client thread/TRACE] [Forge/Forge]: Sent event IMCEvent to mod Forge
+[13:39:42] [Client thread/TRACE] [FML/]: Attempting to deliver 0 IMC messages to mod miscutils
+[13:39:42] [Client thread/TRACE] [miscutils/miscutils]: Sending event IMCEvent to mod miscutils
+[13:39:42] [Client thread/TRACE] [miscutils/miscutils]: Sent event IMCEvent to mod miscutils
+[13:39:42] [Client thread/INFO] [FML/]: Injecting itemstacks
+[13:39:42] [Client thread/INFO] [FML/]: Itemstack injection complete
+[13:39:42] [Client thread/TRACE] [mcp/mcp]: Sending event FMLPostInitializationEvent to mod mcp
+[13:39:42] [Client thread/TRACE] [mcp/mcp]: Sent event FMLPostInitializationEvent to mod mcp
+[13:39:42] [Client thread/TRACE] [FML/FML]: Sending event FMLPostInitializationEvent to mod FML
+[13:39:42] [Client thread/TRACE] [FML/FML]: Sent event FMLPostInitializationEvent to mod FML
+[13:39:42] [Client thread/TRACE] [Forge/Forge]: Sending event FMLPostInitializationEvent to mod Forge
+[13:39:42] [Client thread/TRACE] [Forge/Forge]: Sent event FMLPostInitializationEvent to mod Forge
+[13:39:42] [Client thread/TRACE] [miscutils/miscutils]: Sending event FMLPostInitializationEvent to mod miscutils
+[13:39:42] [Client thread/TRACE] [miscutils/miscutils]: Sent event FMLPostInitializationEvent to mod miscutils
+[13:39:42] [Client thread/TRACE] [mcp/mcp]: Sending event FMLLoadCompleteEvent to mod mcp
+[13:39:42] [Client thread/TRACE] [mcp/mcp]: Sent event FMLLoadCompleteEvent to mod mcp
+[13:39:42] [Client thread/TRACE] [FML/FML]: Sending event FMLLoadCompleteEvent to mod FML
+[13:39:42] [Client thread/TRACE] [FML/FML]: Sent event FMLLoadCompleteEvent to mod FML
+[13:39:42] [Client thread/TRACE] [Forge/Forge]: Sending event FMLLoadCompleteEvent to mod Forge
+[13:39:42] [Client thread/DEBUG] [FML/Forge]: Forge RecipeSorter Baking:
+[13:39:42] [Client thread/DEBUG] [FML/Forge]: 11: RecipeEntry("Before", UNKNOWN, )
+[13:39:42] [Client thread/DEBUG] [FML/Forge]: 10: RecipeEntry("minecraft:shaped", SHAPED, net.minecraft.item.crafting.ShapedRecipes) Before: minecraft:shapeless
+[13:39:42] [Client thread/DEBUG] [FML/Forge]: 9: RecipeEntry("minecraft:mapextending", SHAPED, net.minecraft.item.crafting.RecipesMapExtending) Before: minecraft:shapeless After: minecraft:shaped
+[13:39:42] [Client thread/DEBUG] [FML/Forge]: 8: RecipeEntry("forge:shapedore", SHAPED, net.minecraftforge.oredict.ShapedOreRecipe) Before: minecraft:shapeless After: minecraft:shaped
+[13:39:42] [Client thread/DEBUG] [FML/Forge]: 7: RecipeEntry("minecraft:shapeless", SHAPELESS, net.minecraft.item.crafting.ShapelessRecipes) After: minecraft:shaped
+[13:39:42] [Client thread/DEBUG] [FML/Forge]: 6: RecipeEntry("forge:shapelessore", SHAPELESS, net.minecraftforge.oredict.ShapelessOreRecipe) After: minecraft:shapeless
+[13:39:42] [Client thread/DEBUG] [FML/Forge]: 5: RecipeEntry("minecraft:armordyes", SHAPELESS, net.minecraft.item.crafting.RecipesArmorDyes) After: minecraft:shapeless
+[13:39:42] [Client thread/DEBUG] [FML/Forge]: 4: RecipeEntry("minecraft:bookcloning", SHAPELESS, net.minecraft.item.crafting.RecipeBookCloning) After: minecraft:shapeless
+[13:39:42] [Client thread/DEBUG] [FML/Forge]: 3: RecipeEntry("minecraft:mapcloning", SHAPELESS, net.minecraft.item.crafting.RecipesMapCloning) After: minecraft:shapeless
+[13:39:42] [Client thread/DEBUG] [FML/Forge]: 2: RecipeEntry("minecraft:fireworks", SHAPELESS, net.minecraft.item.crafting.RecipeFireworks) After: minecraft:shapeless
+[13:39:42] [Client thread/DEBUG] [FML/Forge]: 1: RecipeEntry("After", UNKNOWN, )
+[13:39:42] [Client thread/DEBUG] [FML/Forge]: Sorting recipies
+[13:39:42] [Client thread/TRACE] [Forge/Forge]: Sent event FMLLoadCompleteEvent to mod Forge
+[13:39:42] [Client thread/TRACE] [miscutils/miscutils]: Sending event FMLLoadCompleteEvent to mod miscutils
+[13:39:42] [Client thread/TRACE] [miscutils/miscutils]: Sent event FMLLoadCompleteEvent to mod miscutils
+[13:39:42] [Client thread/DEBUG] [FML/]: Freezing block and item id maps
+[13:39:42] [Client thread/DEBUG] [FML/]: Registry consistency check successful
+[13:39:42] [Client thread/DEBUG] [FML/]: Registry consistency check successful
+[13:39:42] [Client thread/INFO] [FML/]: Forge Mod Loader has successfully loaded 4 mods
+[13:39:43] [Client thread/INFO] [STDOUT/]: [paulscode.sound.SoundSystemLogger:message:69]:
+[13:39:43] [Client thread/INFO] [STDOUT/]: [paulscode.sound.SoundSystemLogger:message:69]: SoundSystem shutting down...
+[13:39:43] [Client thread/INFO] [STDOUT/]: [paulscode.sound.SoundSystemLogger:importantMessage:90]: Author: Paul Lamb, www.paulscode.com
+[13:39:43] [Client thread/INFO] [STDOUT/]: [paulscode.sound.SoundSystemLogger:message:69]:
+[13:39:43] [Sound Library Loader/INFO] [STDOUT/]: [paulscode.sound.SoundSystemLogger:message:69]:
+[13:39:43] [Sound Library Loader/INFO] [STDOUT/]: [paulscode.sound.SoundSystemLogger:message:69]: Starting up SoundSystem...
+[13:39:43] [Thread-10/INFO] [STDOUT/]: [paulscode.sound.SoundSystemLogger:message:69]: Initializing LWJGL OpenAL
+[13:39:43] [Thread-10/INFO] [STDOUT/]: [paulscode.sound.SoundSystemLogger:message:69]: (The LWJGL binding of OpenAL. For more information, see http://www.lwjgl.org)
+[13:39:43] [Thread-10/INFO] [STDOUT/]: [paulscode.sound.SoundSystemLogger:message:69]: OpenAL initialized.
+[13:39:43] [Sound Library Loader/INFO] [STDOUT/]: [paulscode.sound.SoundSystemLogger:message:69]:
+[13:39:44] [Client thread/DEBUG] [Forge Mod Loader/]: Mod Forge Mod Loader is missing a pack.mcmeta file, substituting a dummy one
+[13:39:44] [Client thread/DEBUG] [Minecraft Forge/]: Mod Minecraft Forge is missing a pack.mcmeta file, substituting a dummy one
+[13:39:44] [Client thread/DEBUG] [miscutils/]: Mod miscutils is missing a pack.mcmeta file, substituting a dummy one
+[13:39:56] [Client thread/INFO] [STDOUT/]: [paulscode.sound.SoundSystemLogger:message:69]:
+[13:39:56] [Client thread/INFO] [STDOUT/]: [paulscode.sound.SoundSystemLogger:message:69]: SoundSystem shutting down...
+[13:39:57] [Client thread/INFO] [STDOUT/]: [paulscode.sound.SoundSystemLogger:importantMessage:90]: Author: Paul Lamb, www.paulscode.com
+[13:39:57] [Client thread/INFO] [STDOUT/]: [paulscode.sound.SoundSystemLogger:message:69]:
diff --git a/logs/fml-junk-earlystartup.log b/logs/fml-junk-earlystartup.log
new file mode 100644
index 0000000000..d9cd49530a
--- /dev/null
+++ b/logs/fml-junk-earlystartup.log
@@ -0,0 +1,1230 @@
+[01:36:02] [main/INFO] [GradleStart]: username: Draknyte1@hotmail.com
+[01:36:02] [main/INFO] [GradleStart]: Extra: []
+[01:36:02] [main/INFO] [GradleStart]: Password found, attempting login
+[01:36:03] [main/INFO] [GradleStart]: Login Succesful!
+[01:36:03] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --userType, mojang, --accessToken, {REDACTED}, --version, 1.7.10, --uuid, 5652713c668e47f3853a3fa959a9dfd3, --username, Draknyte1, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[01:36:04] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[01:36:04] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[01:36:04] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[01:36:04] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[01:46:31] [main/INFO] [GradleStart]: Extra: []
+[01:46:31] [main/INFO] [GradleStart]: Running with arguments: [--tweakClass, cpw.mods.fml.common.launcher.FMLServerTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[01:46:31] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLServerTweaker
+[01:46:31] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLServerTweaker
+[01:46:31] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[01:46:31] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLServerTweaker
+[01:48:49] [main/INFO] [GradleStart]: Extra: []
+[01:48:49] [main/INFO] [GradleStart]: Running with arguments: [--tweakClass, cpw.mods.fml.common.launcher.FMLServerTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[01:48:49] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLServerTweaker
+[01:48:49] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLServerTweaker
+[01:48:49] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[01:48:49] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLServerTweaker
+[01:48:59] [main/INFO] [GradleStart]: username: Draknyte1@hotmail.com
+[01:49:00] [main/INFO] [GradleStart]: Extra: []
+[01:49:00] [main/INFO] [GradleStart]: Password found, attempting login
+[01:49:01] [main/INFO] [GradleStart]: Login Succesful!
+[01:49:02] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --userType, mojang, --accessToken, {REDACTED}, --version, 1.7.10, --uuid, 5652713c668e47f3853a3fa959a9dfd3, --username, Draknyte1, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[01:49:02] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[01:49:02] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[01:49:02] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[01:49:02] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[02:05:07] [main/INFO] [GradleStart]: Extra: []
+[02:05:07] [main/INFO] [GradleStart]: Running with arguments: [--tweakClass, cpw.mods.fml.common.launcher.FMLServerTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[02:05:07] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLServerTweaker
+[02:05:07] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLServerTweaker
+[02:05:07] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[02:05:07] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLServerTweaker
+[02:46:11] [main/INFO] [GradleStart]: username: Draknyte1@hotmail.com
+[02:46:11] [main/INFO] [GradleStart]: Extra: []
+[02:46:11] [main/INFO] [GradleStart]: Password found, attempting login
+[02:46:13] [main/INFO] [GradleStart]: Login Succesful!
+[02:46:13] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --userType, mojang, --accessToken, {REDACTED}, --version, 1.7.10, --uuid, 5652713c668e47f3853a3fa959a9dfd3, --username, Draknyte1, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[02:46:13] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[02:46:13] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[02:46:13] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[02:46:13] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[03:07:11] [main/INFO] [GradleStart]: username: Draknyte1@hotmail.com
+[03:07:11] [main/INFO] [GradleStart]: Extra: []
+[03:07:11] [main/INFO] [GradleStart]: Password found, attempting login
+[03:07:13] [main/INFO] [GradleStart]: Login Succesful!
+[03:07:13] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --userType, mojang, --accessToken, {REDACTED}, --version, 1.7.10, --uuid, 5652713c668e47f3853a3fa959a9dfd3, --username, Draknyte1, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[03:07:13] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[03:07:13] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[03:07:13] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[03:07:13] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[03:11:29] [main/INFO] [GradleStart]: username: Draknyte1@hotmail.com
+[03:11:29] [main/INFO] [GradleStart]: Extra: []
+[03:11:29] [main/INFO] [GradleStart]: Password found, attempting login
+[03:11:30] [main/INFO] [GradleStart]: Login Succesful!
+[03:11:30] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --userType, mojang, --accessToken, {REDACTED}, --version, 1.7.10, --uuid, 5652713c668e47f3853a3fa959a9dfd3, --username, Draknyte1, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[03:11:30] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[03:11:30] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[03:11:30] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[03:11:30] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[03:12:35] [main/INFO] [GradleStart]: username: Draknyte1@hotmail.com
+[03:12:35] [main/INFO] [GradleStart]: Extra: []
+[03:12:35] [main/INFO] [GradleStart]: Password found, attempting login
+[03:12:37] [main/INFO] [GradleStart]: Login Succesful!
+[03:12:37] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --userType, mojang, --accessToken, {REDACTED}, --version, 1.7.10, --uuid, 5652713c668e47f3853a3fa959a9dfd3, --username, Draknyte1, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[03:12:37] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[03:12:37] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[03:12:37] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[03:12:37] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[03:13:06] [main/INFO] [GradleStart]: username: Draknyte1@hotmail.com
+[03:13:06] [main/INFO] [GradleStart]: Extra: []
+[03:13:06] [main/INFO] [GradleStart]: Password found, attempting login
+[03:13:08] [main/INFO] [GradleStart]: Login Succesful!
+[03:13:08] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --userType, mojang, --accessToken, {REDACTED}, --version, 1.7.10, --uuid, 5652713c668e47f3853a3fa959a9dfd3, --username, Draknyte1, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[03:13:08] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[03:13:08] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[03:13:08] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[03:13:08] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[03:18:22] [main/INFO] [GradleStart]: Extra: []
+[03:18:22] [main/INFO] [GradleStart]: Running with arguments: [--tweakClass, cpw.mods.fml.common.launcher.FMLServerTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[03:18:22] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLServerTweaker
+[03:18:22] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLServerTweaker
+[03:18:22] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[03:18:22] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLServerTweaker
+[03:25:29] [main/INFO] [GradleStart]: username: Draknyte1@hotmail.com
+[03:25:29] [main/INFO] [GradleStart]: Extra: []
+[03:25:29] [main/INFO] [GradleStart]: Password found, attempting login
+[03:25:31] [main/INFO] [GradleStart]: Login Succesful!
+[03:25:31] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --userType, mojang, --accessToken, {REDACTED}, --version, 1.7.10, --uuid, 5652713c668e47f3853a3fa959a9dfd3, --username, Draknyte1, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[03:25:31] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[03:25:31] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[03:25:31] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[03:25:31] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[03:26:09] [main/INFO] [GradleStart]: username: Draknyte1@hotmail.com
+[03:26:09] [main/INFO] [GradleStart]: Extra: []
+[03:26:09] [main/INFO] [GradleStart]: Password found, attempting login
+[03:26:11] [main/INFO] [GradleStart]: Login Succesful!
+[03:26:11] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --userType, mojang, --accessToken, {REDACTED}, --version, 1.7.10, --uuid, 5652713c668e47f3853a3fa959a9dfd3, --username, Draknyte1, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[03:26:11] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[03:26:11] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[03:26:11] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[03:26:11] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[01:39:57] [main/INFO] [GradleStart]: username: Draknyte1@hotmail.com
+[01:39:57] [main/INFO] [GradleStart]: Extra: []
+[01:39:57] [main/INFO] [GradleStart]: Password found, attempting login
+[01:39:59] [main/INFO] [GradleStart]: Login Succesful!
+[01:39:59] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --userType, mojang, --accessToken, {REDACTED}, --version, 1.7.10, --uuid, 5652713c668e47f3853a3fa959a9dfd3, --username, Draknyte1, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[01:39:59] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[01:39:59] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[01:39:59] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[01:39:59] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[01:43:34] [main/INFO] [GradleStart]: username: Draknyte1@hotmail.com
+[01:43:34] [main/INFO] [GradleStart]: Extra: []
+[01:43:34] [main/INFO] [GradleStart]: Password found, attempting login
+[01:43:36] [main/INFO] [GradleStart]: Login Succesful!
+[01:43:36] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --userType, mojang, --accessToken, {REDACTED}, --version, 1.7.10, --uuid, 5652713c668e47f3853a3fa959a9dfd3, --username, Draknyte1, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[01:43:36] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[01:43:36] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[01:43:36] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[01:43:36] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[01:44:20] [main/INFO] [GradleStart]: username: Draknyte1@hotmail.com
+[01:44:20] [main/INFO] [GradleStart]: Extra: []
+[01:44:20] [main/INFO] [GradleStart]: Password found, attempting login
+[01:44:22] [main/INFO] [GradleStart]: Login Succesful!
+[01:44:22] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --userType, mojang, --accessToken, {REDACTED}, --version, 1.7.10, --uuid, 5652713c668e47f3853a3fa959a9dfd3, --username, Draknyte1, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[01:44:22] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[01:44:22] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[01:44:22] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[01:44:22] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[15:17:12] [main/INFO] [GradleStart]: username: Draknyte1@hotmail.com
+[15:17:12] [main/INFO] [GradleStart]: Extra: []
+[15:17:12] [main/INFO] [GradleStart]: Password found, attempting login
+[15:17:14] [main/INFO] [GradleStart]: Login Succesful!
+[15:17:14] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --userType, mojang, --accessToken, {REDACTED}, --version, 1.7.10, --uuid, 5652713c668e47f3853a3fa959a9dfd3, --username, Draknyte1, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[15:17:14] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[15:17:14] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[15:17:14] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[15:17:14] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[15:24:22] [main/INFO] [GradleStart]: username: Draknyte1@hotmail.com
+[15:24:22] [main/INFO] [GradleStart]: Extra: []
+[15:24:22] [main/INFO] [GradleStart]: Password found, attempting login
+[15:24:24] [main/INFO] [GradleStart]: Login Succesful!
+[15:24:24] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --userType, mojang, --accessToken, {REDACTED}, --version, 1.7.10, --uuid, 5652713c668e47f3853a3fa959a9dfd3, --username, Draknyte1, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[15:24:24] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[15:24:24] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[15:24:24] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[15:24:24] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[15:27:06] [main/INFO] [GradleStart]: username: Draknyte1@hotmail.com
+[15:27:06] [main/INFO] [GradleStart]: Extra: []
+[15:27:06] [main/INFO] [GradleStart]: Password found, attempting login
+[15:27:08] [main/INFO] [GradleStart]: Login Succesful!
+[15:27:08] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --userType, mojang, --accessToken, {REDACTED}, --version, 1.7.10, --uuid, 5652713c668e47f3853a3fa959a9dfd3, --username, Draknyte1, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[15:27:08] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[15:27:08] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[15:27:08] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[15:27:08] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[15:30:06] [main/INFO] [GradleStart]: username: Draknyte1@hotmail.com
+[15:30:06] [main/INFO] [GradleStart]: Extra: []
+[15:30:06] [main/INFO] [GradleStart]: Password found, attempting login
+[15:30:07] [main/INFO] [GradleStart]: Login Succesful!
+[15:30:07] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --userType, mojang, --accessToken, {REDACTED}, --version, 1.7.10, --uuid, 5652713c668e47f3853a3fa959a9dfd3, --username, Draknyte1, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[15:30:07] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[15:30:08] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[15:30:08] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[15:30:08] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[15:37:21] [main/INFO] [GradleStart]: username: Draknyte1@hotmail.com
+[15:37:21] [main/INFO] [GradleStart]: Extra: []
+[15:37:21] [main/INFO] [GradleStart]: Password found, attempting login
+[15:37:23] [main/INFO] [GradleStart]: Login Succesful!
+[15:37:23] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --userType, mojang, --accessToken, {REDACTED}, --version, 1.7.10, --uuid, 5652713c668e47f3853a3fa959a9dfd3, --username, Draknyte1, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[15:37:23] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[15:37:23] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[15:37:23] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[15:37:23] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[15:38:19] [main/INFO] [GradleStart]: username: Draknyte1@hotmail.com
+[15:38:19] [main/INFO] [GradleStart]: Extra: []
+[15:38:19] [main/INFO] [GradleStart]: Password found, attempting login
+[15:38:21] [main/INFO] [GradleStart]: Login Succesful!
+[15:38:21] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --userType, mojang, --accessToken, {REDACTED}, --version, 1.7.10, --uuid, 5652713c668e47f3853a3fa959a9dfd3, --username, Draknyte1, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[15:38:21] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[15:38:21] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[15:38:21] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[15:38:21] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[15:41:55] [main/INFO] [GradleStart]: username: Draknyte1@hotmail.com
+[15:41:55] [main/INFO] [GradleStart]: Extra: []
+[15:41:55] [main/INFO] [GradleStart]: Password found, attempting login
+[15:41:56] [main/INFO] [GradleStart]: Login Succesful!
+[15:41:56] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --userType, mojang, --accessToken, {REDACTED}, --version, 1.7.10, --uuid, 5652713c668e47f3853a3fa959a9dfd3, --username, Draknyte1, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[15:41:56] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[15:41:56] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[15:41:56] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[15:41:56] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[15:50:54] [main/INFO] [GradleStart]: username: Draknyte1@hotmail.com
+[15:50:54] [main/INFO] [GradleStart]: Extra: []
+[15:50:54] [main/INFO] [GradleStart]: Password found, attempting login
+[15:50:56] [main/INFO] [GradleStart]: Login Succesful!
+[15:50:56] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --userType, mojang, --accessToken, {REDACTED}, --version, 1.7.10, --uuid, 5652713c668e47f3853a3fa959a9dfd3, --username, Draknyte1, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[15:50:56] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[15:50:56] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[15:50:56] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[15:50:56] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[15:51:52] [main/INFO] [GradleStart]: username: Draknyte1@hotmail.com
+[15:51:52] [main/INFO] [GradleStart]: Extra: []
+[15:51:52] [main/INFO] [GradleStart]: Password found, attempting login
+[15:51:54] [main/INFO] [GradleStart]: Login Succesful!
+[15:51:54] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --userType, mojang, --accessToken, {REDACTED}, --version, 1.7.10, --uuid, 5652713c668e47f3853a3fa959a9dfd3, --username, Draknyte1, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[15:51:54] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[15:51:54] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[15:51:54] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[15:51:54] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[16:01:17] [main/INFO] [GradleStart]: username: Draknyte1@hotmail.com
+[16:01:17] [main/INFO] [GradleStart]: Extra: []
+[16:01:17] [main/INFO] [GradleStart]: Password found, attempting login
+[16:01:19] [main/INFO] [GradleStart]: Login Succesful!
+[16:01:19] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --userType, mojang, --accessToken, {REDACTED}, --version, 1.7.10, --uuid, 5652713c668e47f3853a3fa959a9dfd3, --username, Draknyte1, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[16:01:19] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[16:01:19] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[16:01:19] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[16:01:19] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[16:01:45] [main/INFO] [GradleStart]: username: Draknyte1@hotmail.com
+[16:01:45] [main/INFO] [GradleStart]: Extra: []
+[16:01:45] [main/INFO] [GradleStart]: Password found, attempting login
+[16:01:46] [main/INFO] [GradleStart]: Login Succesful!
+[16:01:46] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --userType, mojang, --accessToken, {REDACTED}, --version, 1.7.10, --uuid, 5652713c668e47f3853a3fa959a9dfd3, --username, Draknyte1, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[16:01:46] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[16:01:46] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[16:01:46] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[16:01:46] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[17:52:53] [main/INFO] [GradleStart]: username: Draknyte1@hotmail.com
+[17:52:53] [main/INFO] [GradleStart]: Extra: []
+[17:52:53] [main/INFO] [GradleStart]: Password found, attempting login
+[17:52:55] [main/INFO] [GradleStart]: Login Succesful!
+[17:52:55] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --userType, mojang, --accessToken, {REDACTED}, --version, 1.7.10, --uuid, 5652713c668e47f3853a3fa959a9dfd3, --username, Draknyte1, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[17:52:55] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[17:52:55] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[17:52:55] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[17:52:55] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[18:03:13] [main/INFO] [GradleStart]: username: Draknyte1@hotmail.com
+[18:03:14] [main/INFO] [GradleStart]: Extra: []
+[18:03:14] [main/INFO] [GradleStart]: Password found, attempting login
+[18:03:15] [main/INFO] [GradleStart]: Login Succesful!
+[18:03:15] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --userType, mojang, --accessToken, {REDACTED}, --version, 1.7.10, --uuid, 5652713c668e47f3853a3fa959a9dfd3, --username, Draknyte1, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[18:03:15] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[18:03:15] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[18:03:15] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[18:03:15] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[19:11:26] [main/INFO] [GradleStart]: username: Draknyte1@hotmail.com
+[19:11:26] [main/INFO] [GradleStart]: Extra: []
+[19:11:26] [main/INFO] [GradleStart]: Password found, attempting login
+[19:11:28] [main/INFO] [GradleStart]: Login Succesful!
+[19:11:28] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --userType, mojang, --accessToken, {REDACTED}, --version, 1.7.10, --uuid, 5652713c668e47f3853a3fa959a9dfd3, --username, Draknyte1, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[19:11:28] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[19:11:28] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[19:11:28] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[19:11:28] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[15:10:27] [main/INFO] [GradleStart]: username: Draknyte1@hotmail.com
+[15:10:27] [main/INFO] [GradleStart]: Extra: []
+[15:10:27] [main/INFO] [GradleStart]: Password found, attempting login
+[15:10:29] [main/INFO] [GradleStart]: Login Succesful!
+[15:10:29] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --userType, mojang, --accessToken, {REDACTED}, --version, 1.7.10, --uuid, 5652713c668e47f3853a3fa959a9dfd3, --username, Draknyte1, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[15:10:29] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[15:10:29] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[15:10:29] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[15:10:29] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[16:16:42] [main/INFO] [GradleStart]: username: Draknyte1@hotmail.com
+[16:16:42] [main/INFO] [GradleStart]: Extra: []
+[16:16:42] [main/INFO] [GradleStart]: Password found, attempting login
+[16:16:44] [main/INFO] [GradleStart]: Login Succesful!
+[16:16:44] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --userType, mojang, --accessToken, {REDACTED}, --version, 1.7.10, --uuid, 5652713c668e47f3853a3fa959a9dfd3, --username, Draknyte1, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[16:16:44] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[16:16:44] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[16:16:44] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[16:16:44] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[16:19:00] [main/INFO] [GradleStart]: username: Draknyte1@hotmail.com
+[16:19:00] [main/INFO] [GradleStart]: Extra: []
+[16:19:00] [main/INFO] [GradleStart]: Password found, attempting login
+[16:19:02] [main/INFO] [GradleStart]: Login Succesful!
+[16:19:02] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --userType, mojang, --accessToken, {REDACTED}, --version, 1.7.10, --uuid, 5652713c668e47f3853a3fa959a9dfd3, --username, Draknyte1, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[16:19:02] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[16:19:02] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[16:19:02] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[16:19:02] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[19:50:48] [main/INFO] [GradleStart]: username: Draknyte1@hotmail.com
+[19:50:48] [main/INFO] [GradleStart]: Extra: []
+[19:50:48] [main/INFO] [GradleStart]: Password found, attempting login
+[19:50:50] [main/INFO] [GradleStart]: Login Succesful!
+[19:50:50] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --userType, mojang, --accessToken, {REDACTED}, --version, 1.7.10, --uuid, 5652713c668e47f3853a3fa959a9dfd3, --username, Draknyte1, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[19:50:50] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[19:50:50] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[19:50:50] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[19:50:50] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[21:34:56] [main/INFO] [GradleStart]: username: Draknyte1@hotmail.com
+[21:34:56] [main/INFO] [GradleStart]: Extra: []
+[21:34:56] [main/INFO] [GradleStart]: Password found, attempting login
+[21:34:58] [main/INFO] [GradleStart]: Login Succesful!
+[21:34:58] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --userType, mojang, --accessToken, {REDACTED}, --version, 1.7.10, --uuid, 5652713c668e47f3853a3fa959a9dfd3, --username, Draknyte1, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[21:34:58] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[21:34:58] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[21:34:58] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[21:34:58] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[21:35:19] [main/INFO] [GradleStart]: username: Draknyte1@hotmail.com
+[21:35:19] [main/INFO] [GradleStart]: Extra: []
+[21:35:19] [main/INFO] [GradleStart]: Password found, attempting login
+[21:35:21] [main/INFO] [GradleStart]: Login Succesful!
+[21:35:21] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --userType, mojang, --accessToken, {REDACTED}, --version, 1.7.10, --uuid, 5652713c668e47f3853a3fa959a9dfd3, --username, Draknyte1, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[21:35:21] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[21:35:21] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[21:35:21] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[21:35:21] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[21:36:30] [main/INFO] [GradleStart]: username: Draknyte1@hotmail.com
+[21:36:30] [main/INFO] [GradleStart]: Extra: []
+[21:36:30] [main/INFO] [GradleStart]: Password found, attempting login
+[21:36:32] [main/INFO] [GradleStart]: Login Succesful!
+[21:36:32] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --userType, mojang, --accessToken, {REDACTED}, --version, 1.7.10, --uuid, 5652713c668e47f3853a3fa959a9dfd3, --username, Draknyte1, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[21:36:32] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[21:36:32] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[21:36:32] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[21:36:32] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[17:20:07] [main/INFO] [GradleStart]: username: Draknyte1@hotmail.com
+[17:20:07] [main/INFO] [GradleStart]: Extra: []
+[17:20:07] [main/INFO] [GradleStart]: Password found, attempting login
+[17:20:09] [main/INFO] [GradleStart]: Login Succesful!
+[17:20:09] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --userType, mojang, --accessToken, {REDACTED}, --version, 1.7.10, --uuid, 5652713c668e47f3853a3fa959a9dfd3, --username, Draknyte1, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[17:20:09] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[17:20:09] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[17:20:09] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[17:20:09] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[17:22:12] [main/INFO] [GradleStart]: username: Draknyte1@hotmail.com
+[17:22:12] [main/INFO] [GradleStart]: Extra: []
+[17:22:12] [main/INFO] [GradleStart]: Password found, attempting login
+[17:22:13] [main/INFO] [GradleStart]: Login Succesful!
+[17:22:13] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --userType, mojang, --accessToken, {REDACTED}, --version, 1.7.10, --uuid, 5652713c668e47f3853a3fa959a9dfd3, --username, Draknyte1, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[17:22:13] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[17:22:13] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[17:22:13] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[17:22:13] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[17:25:33] [main/INFO] [GradleStart]: username: Draknyte1@hotmail.com
+[17:25:33] [main/INFO] [GradleStart]: Extra: []
+[17:25:33] [main/INFO] [GradleStart]: Password found, attempting login
+[17:25:35] [main/INFO] [GradleStart]: Login Succesful!
+[17:25:35] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --userType, mojang, --accessToken, {REDACTED}, --version, 1.7.10, --uuid, 5652713c668e47f3853a3fa959a9dfd3, --username, Draknyte1, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[17:25:35] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[17:25:35] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[17:25:35] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[17:25:35] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[18:26:26] [main/INFO] [GradleStart]: username: Draknyte1@hotmail.com
+[18:26:26] [main/INFO] [GradleStart]: Extra: []
+[18:26:26] [main/INFO] [GradleStart]: Password found, attempting login
+[18:26:28] [main/INFO] [GradleStart]: Login Succesful!
+[18:26:28] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --userType, mojang, --accessToken, {REDACTED}, --version, 1.7.10, --uuid, 5652713c668e47f3853a3fa959a9dfd3, --username, Draknyte1, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[18:26:28] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[18:26:28] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[18:26:28] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[18:26:28] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[19:53:33] [main/INFO] [GradleStart]: username: Draknyte1@hotmail.com
+[19:53:33] [main/INFO] [GradleStart]: Extra: []
+[19:53:33] [main/INFO] [GradleStart]: Password found, attempting login
+[19:53:35] [main/INFO] [GradleStart]: Login Succesful!
+[19:53:35] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --userType, mojang, --accessToken, {REDACTED}, --version, 1.7.10, --uuid, 5652713c668e47f3853a3fa959a9dfd3, --username, Draknyte1, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[19:53:35] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[19:53:35] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[19:53:35] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[19:53:35] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[19:55:27] [main/INFO] [GradleStart]: username: Draknyte1@hotmail.com
+[19:55:27] [main/INFO] [GradleStart]: Extra: []
+[19:55:27] [main/INFO] [GradleStart]: Password found, attempting login
+[19:55:29] [main/INFO] [GradleStart]: Login Succesful!
+[19:55:29] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --userType, mojang, --accessToken, {REDACTED}, --version, 1.7.10, --uuid, 5652713c668e47f3853a3fa959a9dfd3, --username, Draknyte1, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[19:55:29] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[19:55:29] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[19:55:29] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[19:55:29] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[19:57:07] [main/INFO] [GradleStart]: username: Draknyte1@hotmail.com
+[19:57:07] [main/INFO] [GradleStart]: Extra: []
+[19:57:07] [main/INFO] [GradleStart]: Password found, attempting login
+[19:57:08] [main/INFO] [GradleStart]: Login Succesful!
+[19:57:08] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --userType, mojang, --accessToken, {REDACTED}, --version, 1.7.10, --uuid, 5652713c668e47f3853a3fa959a9dfd3, --username, Draknyte1, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[19:57:08] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[19:57:08] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[19:57:08] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[19:57:08] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[20:31:12] [main/INFO] [GradleStart]: username: Draknyte1@hotmail.com
+[20:31:12] [main/INFO] [GradleStart]: Extra: []
+[20:31:12] [main/INFO] [GradleStart]: Password found, attempting login
+[20:31:14] [main/INFO] [GradleStart]: Login Succesful!
+[20:31:14] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --userType, mojang, --accessToken, {REDACTED}, --version, 1.7.10, --uuid, 5652713c668e47f3853a3fa959a9dfd3, --username, Draknyte1, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[20:31:14] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[20:31:14] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[20:31:14] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[20:31:14] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[21:07:10] [main/INFO] [GradleStart]: username: Draknyte1@hotmail.com
+[21:07:10] [main/INFO] [GradleStart]: Extra: []
+[21:07:10] [main/INFO] [GradleStart]: Password found, attempting login
+[21:07:12] [main/INFO] [GradleStart]: Login Succesful!
+[21:07:12] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --userType, mojang, --accessToken, {REDACTED}, --version, 1.7.10, --uuid, 5652713c668e47f3853a3fa959a9dfd3, --username, Draknyte1, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[21:07:12] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[21:07:12] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[21:07:12] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[21:07:12] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[21:13:19] [main/INFO] [GradleStart]: username: Draknyte1@hotmail.com
+[21:13:19] [main/INFO] [GradleStart]: Extra: []
+[21:13:19] [main/INFO] [GradleStart]: Password found, attempting login
+[21:13:21] [main/INFO] [GradleStart]: Login Succesful!
+[21:13:21] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --userType, mojang, --accessToken, {REDACTED}, --version, 1.7.10, --uuid, 5652713c668e47f3853a3fa959a9dfd3, --username, Draknyte1, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[21:13:21] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[21:13:21] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[21:13:21] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[21:13:21] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[00:27:29] [main/INFO] [GradleStart]: username: Draknyte1@hotmail.com
+[00:27:29] [main/INFO] [GradleStart]: Extra: []
+[00:27:29] [main/INFO] [GradleStart]: Password found, attempting login
+[00:27:31] [main/INFO] [GradleStart]: Login Succesful!
+[00:27:31] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --userType, mojang, --accessToken, {REDACTED}, --version, 1.7.10, --uuid, 5652713c668e47f3853a3fa959a9dfd3, --username, Draknyte1, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[00:27:31] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[00:27:31] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[00:27:31] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[00:27:31] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[00:42:25] [main/INFO] [GradleStart]: username: Draknyte1@hotmail.com
+[00:42:25] [main/INFO] [GradleStart]: Extra: []
+[00:42:25] [main/INFO] [GradleStart]: Password found, attempting login
+[00:42:27] [main/INFO] [GradleStart]: Login Succesful!
+[00:42:27] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --userType, mojang, --accessToken, {REDACTED}, --version, 1.7.10, --uuid, 5652713c668e47f3853a3fa959a9dfd3, --username, Draknyte1, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[00:42:27] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[00:42:27] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[00:42:27] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[00:42:27] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[01:03:08] [main/INFO] [GradleStart]: username: Draknyte1@hotmail.com
+[01:03:08] [main/INFO] [GradleStart]: Extra: []
+[01:03:08] [main/INFO] [GradleStart]: Password found, attempting login
+[01:03:10] [main/INFO] [GradleStart]: Login Succesful!
+[01:03:10] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --userType, mojang, --accessToken, {REDACTED}, --version, 1.7.10, --uuid, 5652713c668e47f3853a3fa959a9dfd3, --username, Draknyte1, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[01:03:10] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[01:03:10] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[01:03:10] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[01:03:10] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[01:03:56] [main/INFO] [GradleStart]: username: Draknyte1@hotmail.com
+[01:03:56] [main/INFO] [GradleStart]: Extra: []
+[01:03:56] [main/INFO] [GradleStart]: Password found, attempting login
+[01:03:58] [main/INFO] [GradleStart]: Login Succesful!
+[01:03:58] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --userType, mojang, --accessToken, {REDACTED}, --version, 1.7.10, --uuid, 5652713c668e47f3853a3fa959a9dfd3, --username, Draknyte1, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[01:03:58] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[01:03:58] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[01:03:58] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[01:03:58] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[01:20:49] [main/INFO] [GradleStart]: username: Draknyte1@hotmail.com
+[01:20:49] [main/INFO] [GradleStart]: Extra: []
+[01:20:49] [main/INFO] [GradleStart]: Password found, attempting login
+[01:20:51] [main/INFO] [GradleStart]: Login Succesful!
+[01:20:51] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --userType, mojang, --accessToken, {REDACTED}, --version, 1.7.10, --uuid, 5652713c668e47f3853a3fa959a9dfd3, --username, Draknyte1, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[01:20:51] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[01:20:51] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[01:20:51] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[01:20:51] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[02:20:25] [main/INFO] [GradleStart]: username: Draknyte1@hotmail.com
+[02:20:25] [main/INFO] [GradleStart]: Extra: []
+[02:20:25] [main/INFO] [GradleStart]: Password found, attempting login
+[02:20:27] [main/INFO] [GradleStart]: Login Succesful!
+[02:20:27] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --userType, mojang, --accessToken, {REDACTED}, --version, 1.7.10, --uuid, 5652713c668e47f3853a3fa959a9dfd3, --username, Draknyte1, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[02:20:27] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[02:20:27] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[02:20:27] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[02:20:27] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[02:21:03] [main/INFO] [GradleStart]: username: Draknyte1@hotmail.com
+[02:21:03] [main/INFO] [GradleStart]: Extra: []
+[02:21:03] [main/INFO] [GradleStart]: Password found, attempting login
+[02:21:04] [main/INFO] [GradleStart]: Login Succesful!
+[02:21:04] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --userType, mojang, --accessToken, {REDACTED}, --version, 1.7.10, --uuid, 5652713c668e47f3853a3fa959a9dfd3, --username, Draknyte1, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[02:21:04] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[02:21:04] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[02:21:04] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[02:21:04] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[02:31:13] [main/INFO] [GradleStart]: username: Draknyte1@hotmail.com
+[02:31:13] [main/INFO] [GradleStart]: Extra: []
+[02:31:13] [main/INFO] [GradleStart]: Password found, attempting login
+[02:31:14] [main/INFO] [GradleStart]: Login Succesful!
+[02:31:14] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --userType, mojang, --accessToken, {REDACTED}, --version, 1.7.10, --uuid, 5652713c668e47f3853a3fa959a9dfd3, --username, Draknyte1, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[02:31:15] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[02:31:15] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[02:31:15] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[02:31:15] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[03:55:44] [main/INFO] [GradleStart]: username: Draknyte1@hotmail.com
+[03:55:44] [main/INFO] [GradleStart]: Extra: []
+[03:55:44] [main/INFO] [GradleStart]: Password found, attempting login
+[03:55:46] [main/INFO] [GradleStart]: Login Succesful!
+[03:55:46] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --userType, mojang, --accessToken, {REDACTED}, --version, 1.7.10, --uuid, 5652713c668e47f3853a3fa959a9dfd3, --username, Draknyte1, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[03:55:46] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[03:55:46] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[03:55:46] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[03:55:46] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[04:00:47] [main/INFO] [GradleStart]: username: Draknyte1@hotmail.com
+[04:00:47] [main/INFO] [GradleStart]: Extra: []
+[04:00:47] [main/INFO] [GradleStart]: Password found, attempting login
+[04:00:49] [main/INFO] [GradleStart]: Login Succesful!
+[04:00:49] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --userType, mojang, --accessToken, {REDACTED}, --version, 1.7.10, --uuid, 5652713c668e47f3853a3fa959a9dfd3, --username, Draknyte1, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[04:00:49] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[04:00:49] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[04:00:49] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[04:00:49] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[04:07:52] [main/INFO] [GradleStart]: username: Draknyte1@hotmail.com
+[04:07:52] [main/INFO] [GradleStart]: Extra: []
+[04:07:52] [main/INFO] [GradleStart]: Password found, attempting login
+[04:07:54] [main/INFO] [GradleStart]: Login Succesful!
+[04:07:54] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --userType, mojang, --accessToken, {REDACTED}, --version, 1.7.10, --uuid, 5652713c668e47f3853a3fa959a9dfd3, --username, Draknyte1, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[04:07:54] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[04:07:54] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[04:07:54] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[04:07:54] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[04:10:16] [main/INFO] [GradleStart]: username: Draknyte1@hotmail.com
+[04:10:16] [main/INFO] [GradleStart]: Extra: []
+[04:10:16] [main/INFO] [GradleStart]: Password found, attempting login
+[04:10:18] [main/INFO] [GradleStart]: Login Succesful!
+[04:10:18] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --userType, mojang, --accessToken, {REDACTED}, --version, 1.7.10, --uuid, 5652713c668e47f3853a3fa959a9dfd3, --username, Draknyte1, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[04:10:18] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[04:10:18] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[04:10:18] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[04:10:18] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[04:10:50] [main/INFO] [GradleStart]: username: Draknyte1@hotmail.com
+[04:10:50] [main/INFO] [GradleStart]: Extra: []
+[04:10:50] [main/INFO] [GradleStart]: Password found, attempting login
+[04:10:52] [main/INFO] [GradleStart]: Login Succesful!
+[04:10:52] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --userType, mojang, --accessToken, {REDACTED}, --version, 1.7.10, --uuid, 5652713c668e47f3853a3fa959a9dfd3, --username, Draknyte1, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[04:10:52] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[04:10:52] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[04:10:52] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[04:10:52] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[04:13:58] [main/INFO] [GradleStart]: username: Draknyte1@hotmail.com
+[04:13:58] [main/INFO] [GradleStart]: Extra: []
+[04:13:58] [main/INFO] [GradleStart]: Password found, attempting login
+[04:14:00] [main/INFO] [GradleStart]: Login Succesful!
+[04:14:00] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --userType, mojang, --accessToken, {REDACTED}, --version, 1.7.10, --uuid, 5652713c668e47f3853a3fa959a9dfd3, --username, Draknyte1, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[04:14:00] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[04:14:00] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[04:14:00] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[04:14:00] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[04:18:45] [main/INFO] [GradleStart]: username: Draknyte1@hotmail.com
+[04:18:45] [main/INFO] [GradleStart]: Extra: []
+[04:18:45] [main/INFO] [GradleStart]: Password found, attempting login
+[04:18:47] [main/INFO] [GradleStart]: Login Succesful!
+[04:18:47] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --userType, mojang, --accessToken, {REDACTED}, --version, 1.7.10, --uuid, 5652713c668e47f3853a3fa959a9dfd3, --username, Draknyte1, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[04:18:47] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[04:18:47] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[04:18:47] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[04:18:47] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[04:22:28] [main/INFO] [GradleStart]: username: Draknyte1@hotmail.com
+[04:22:28] [main/INFO] [GradleStart]: Extra: []
+[04:22:28] [main/INFO] [GradleStart]: Password found, attempting login
+[04:22:30] [main/INFO] [GradleStart]: Login Succesful!
+[04:22:30] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --userType, mojang, --accessToken, {REDACTED}, --version, 1.7.10, --uuid, 5652713c668e47f3853a3fa959a9dfd3, --username, Draknyte1, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[04:22:30] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[04:22:30] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[04:22:30] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[04:22:30] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[04:27:42] [main/INFO] [GradleStart]: username: Draknyte1@hotmail.com
+[04:27:42] [main/INFO] [GradleStart]: Extra: []
+[04:27:42] [main/INFO] [GradleStart]: Password found, attempting login
+[04:27:44] [main/INFO] [GradleStart]: Login Succesful!
+[04:27:44] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --userType, mojang, --accessToken, {REDACTED}, --version, 1.7.10, --uuid, 5652713c668e47f3853a3fa959a9dfd3, --username, Draknyte1, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[04:27:44] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[04:27:44] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[04:27:44] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[04:27:44] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[04:28:44] [main/INFO] [GradleStart]: username: Draknyte1@hotmail.com
+[04:28:44] [main/INFO] [GradleStart]: Extra: []
+[04:28:44] [main/INFO] [GradleStart]: Password found, attempting login
+[04:28:46] [main/INFO] [GradleStart]: Login Succesful!
+[04:28:46] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --userType, mojang, --accessToken, {REDACTED}, --version, 1.7.10, --uuid, 5652713c668e47f3853a3fa959a9dfd3, --username, Draknyte1, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[04:28:46] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[04:28:46] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[04:28:46] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[04:28:46] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[04:32:57] [main/INFO] [GradleStart]: username: Draknyte1@hotmail.com
+[04:32:57] [main/INFO] [GradleStart]: Extra: []
+[04:32:57] [main/INFO] [GradleStart]: Password found, attempting login
+[04:32:59] [main/INFO] [GradleStart]: Login Succesful!
+[04:32:59] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --userType, mojang, --accessToken, {REDACTED}, --version, 1.7.10, --uuid, 5652713c668e47f3853a3fa959a9dfd3, --username, Draknyte1, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[04:32:59] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[04:32:59] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[04:32:59] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[04:32:59] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[04:36:02] [main/INFO] [GradleStart]: username: Draknyte1@hotmail.com
+[04:36:02] [main/INFO] [GradleStart]: Extra: []
+[04:36:02] [main/INFO] [GradleStart]: Password found, attempting login
+[04:36:04] [main/INFO] [GradleStart]: Login Succesful!
+[04:36:04] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --userType, mojang, --accessToken, {REDACTED}, --version, 1.7.10, --uuid, 5652713c668e47f3853a3fa959a9dfd3, --username, Draknyte1, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[04:36:04] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[04:36:04] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[04:36:04] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[04:36:04] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[04:40:11] [main/INFO] [GradleStart]: username: Draknyte1@hotmail.com
+[04:40:11] [main/INFO] [GradleStart]: Extra: []
+[04:40:11] [main/INFO] [GradleStart]: Password found, attempting login
+[04:40:13] [main/INFO] [GradleStart]: Login Succesful!
+[04:40:13] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --userType, mojang, --accessToken, {REDACTED}, --version, 1.7.10, --uuid, 5652713c668e47f3853a3fa959a9dfd3, --username, Draknyte1, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[04:40:13] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[04:40:13] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[04:40:13] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[04:40:13] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[04:57:45] [main/INFO] [GradleStart]: username: Draknyte1@hotmail.com
+[04:57:45] [main/INFO] [GradleStart]: Extra: []
+[04:57:45] [main/INFO] [GradleStart]: Password found, attempting login
+[04:57:46] [main/INFO] [GradleStart]: Login Succesful!
+[04:57:47] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --userType, mojang, --accessToken, {REDACTED}, --version, 1.7.10, --uuid, 5652713c668e47f3853a3fa959a9dfd3, --username, Draknyte1, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[04:57:47] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[04:57:47] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[04:57:47] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[04:57:47] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[05:02:52] [main/INFO] [GradleStart]: username: Draknyte1@hotmail.com
+[05:02:52] [main/INFO] [GradleStart]: Extra: []
+[05:02:52] [main/INFO] [GradleStart]: Password found, attempting login
+[05:02:54] [main/INFO] [GradleStart]: Login Succesful!
+[05:02:54] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --userType, mojang, --accessToken, {REDACTED}, --version, 1.7.10, --uuid, 5652713c668e47f3853a3fa959a9dfd3, --username, Draknyte1, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[05:02:54] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[05:02:54] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[05:02:54] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[05:02:54] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[05:13:10] [main/INFO] [GradleStart]: username: Draknyte1@hotmail.com
+[05:13:10] [main/INFO] [GradleStart]: Extra: []
+[05:13:10] [main/INFO] [GradleStart]: Password found, attempting login
+[05:13:12] [main/INFO] [GradleStart]: Login Succesful!
+[05:13:12] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --userType, mojang, --accessToken, {REDACTED}, --version, 1.7.10, --uuid, 5652713c668e47f3853a3fa959a9dfd3, --username, Draknyte1, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[05:13:12] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[05:13:12] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[05:13:12] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[05:13:12] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[05:27:48] [main/INFO] [GradleStart]: username: Draknyte1@hotmail.com
+[05:27:48] [main/INFO] [GradleStart]: Extra: []
+[05:27:48] [main/INFO] [GradleStart]: Password found, attempting login
+[05:27:50] [main/INFO] [GradleStart]: Login Succesful!
+[05:27:50] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --userType, mojang, --accessToken, {REDACTED}, --version, 1.7.10, --uuid, 5652713c668e47f3853a3fa959a9dfd3, --username, Draknyte1, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[05:27:50] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[05:27:50] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[05:27:50] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[05:27:50] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[05:46:33] [main/INFO] [GradleStart]: username: Draknyte1@hotmail.com
+[05:46:33] [main/INFO] [GradleStart]: Extra: []
+[05:46:33] [main/INFO] [GradleStart]: Password found, attempting login
+[05:46:35] [main/INFO] [GradleStart]: Login Succesful!
+[05:46:35] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --userType, mojang, --accessToken, {REDACTED}, --version, 1.7.10, --uuid, 5652713c668e47f3853a3fa959a9dfd3, --username, Draknyte1, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[05:46:35] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[05:46:35] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[05:46:35] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[05:46:35] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[05:50:45] [main/INFO] [GradleStart]: username: Draknyte1@hotmail.com
+[05:50:45] [main/INFO] [GradleStart]: Extra: []
+[05:50:45] [main/INFO] [GradleStart]: Password found, attempting login
+[05:50:47] [main/INFO] [GradleStart]: Login Succesful!
+[05:50:47] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --userType, mojang, --accessToken, {REDACTED}, --version, 1.7.10, --uuid, 5652713c668e47f3853a3fa959a9dfd3, --username, Draknyte1, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[05:50:47] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[05:50:47] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[05:50:47] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[05:50:47] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[06:06:29] [main/INFO] [GradleStart]: username: Draknyte1@hotmail.com
+[06:06:29] [main/INFO] [GradleStart]: Extra: []
+[06:06:29] [main/INFO] [GradleStart]: Password found, attempting login
+[06:06:31] [main/INFO] [GradleStart]: Login Succesful!
+[06:06:31] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --userType, mojang, --accessToken, {REDACTED}, --version, 1.7.10, --uuid, 5652713c668e47f3853a3fa959a9dfd3, --username, Draknyte1, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[06:06:31] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[06:06:31] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[06:06:31] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[06:06:31] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[06:08:22] [main/INFO] [GradleStart]: username: Draknyte1@hotmail.com
+[06:08:22] [main/INFO] [GradleStart]: Extra: []
+[06:08:22] [main/INFO] [GradleStart]: Password found, attempting login
+[06:08:24] [main/INFO] [GradleStart]: Login Succesful!
+[06:08:24] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --userType, mojang, --accessToken, {REDACTED}, --version, 1.7.10, --uuid, 5652713c668e47f3853a3fa959a9dfd3, --username, Draknyte1, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[06:08:24] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[06:08:24] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[06:08:24] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[06:08:24] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[06:25:31] [main/INFO] [GradleStart]: username: Draknyte1@hotmail.com
+[06:25:31] [main/INFO] [GradleStart]: Extra: []
+[06:25:31] [main/INFO] [GradleStart]: Password found, attempting login
+[06:25:33] [main/INFO] [GradleStart]: Login Succesful!
+[06:25:33] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --userType, mojang, --accessToken, {REDACTED}, --version, 1.7.10, --uuid, 5652713c668e47f3853a3fa959a9dfd3, --username, Draknyte1, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[06:25:33] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[06:25:33] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[06:25:33] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[06:25:33] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[06:27:09] [main/INFO] [GradleStart]: username: Draknyte1@hotmail.com
+[06:27:09] [main/INFO] [GradleStart]: Extra: []
+[06:27:09] [main/INFO] [GradleStart]: Password found, attempting login
+[06:27:10] [main/INFO] [GradleStart]: Login Succesful!
+[06:27:11] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --userType, mojang, --accessToken, {REDACTED}, --version, 1.7.10, --uuid, 5652713c668e47f3853a3fa959a9dfd3, --username, Draknyte1, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[06:27:11] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[06:27:11] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[06:27:11] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[06:27:11] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[17:50:06] [main/INFO] [GradleStart]: username: Draknyte1@hotmail.com
+[17:50:06] [main/INFO] [GradleStart]: Extra: []
+[17:50:06] [main/INFO] [GradleStart]: Password found, attempting login
+[17:50:08] [main/INFO] [GradleStart]: Login Succesful!
+[17:50:08] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --userType, mojang, --accessToken, {REDACTED}, --version, 1.7.10, --uuid, 5652713c668e47f3853a3fa959a9dfd3, --username, Draknyte1, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[17:50:08] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[17:50:08] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[17:50:08] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[17:50:08] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[18:22:15] [main/INFO] [GradleStart]: username: Draknyte1@hotmail.com
+[18:22:15] [main/INFO] [GradleStart]: Extra: []
+[18:22:15] [main/INFO] [GradleStart]: Password found, attempting login
+[18:22:17] [main/INFO] [GradleStart]: Login Succesful!
+[18:22:17] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --userType, mojang, --accessToken, {REDACTED}, --version, 1.7.10, --uuid, 5652713c668e47f3853a3fa959a9dfd3, --username, Draknyte1, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[18:22:17] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[18:22:17] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[18:22:17] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[18:22:17] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[22:58:07] [main/INFO] [GradleStart]: username: Draknyte1@hotmail.com
+[22:58:07] [main/INFO] [GradleStart]: Extra: []
+[22:58:07] [main/INFO] [GradleStart]: Password found, attempting login
+[22:58:09] [main/INFO] [GradleStart]: Login Succesful!
+[22:58:09] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --userType, mojang, --accessToken, {REDACTED}, --version, 1.7.10, --uuid, 5652713c668e47f3853a3fa959a9dfd3, --username, Draknyte1, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[22:58:09] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[22:58:09] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[22:58:09] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[22:58:09] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[23:05:32] [main/INFO] [GradleStart]: username: Draknyte1@hotmail.com
+[23:05:32] [main/INFO] [GradleStart]: Extra: []
+[23:05:32] [main/INFO] [GradleStart]: Password found, attempting login
+[23:05:34] [main/INFO] [GradleStart]: Login Succesful!
+[23:05:34] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --userType, mojang, --accessToken, {REDACTED}, --version, 1.7.10, --uuid, 5652713c668e47f3853a3fa959a9dfd3, --username, Draknyte1, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[23:05:34] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[23:05:34] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[23:05:34] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[23:05:34] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[12:45:38] [main/INFO] [GradleStart]: username: Draknyte1@hotmail.com
+[12:45:38] [main/INFO] [GradleStart]: Extra: []
+[12:45:38] [main/INFO] [GradleStart]: Password found, attempting login
+[12:45:40] [main/INFO] [GradleStart]: Login Succesful!
+[12:45:40] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --userType, mojang, --accessToken, {REDACTED}, --version, 1.7.10, --uuid, 5652713c668e47f3853a3fa959a9dfd3, --username, Draknyte1, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[12:45:40] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[12:45:40] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[12:45:40] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[12:45:40] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[13:08:47] [main/INFO] [GradleStart]: username: Draknyte1@hotmail.com
+[13:08:47] [main/INFO] [GradleStart]: Extra: []
+[13:08:47] [main/INFO] [GradleStart]: Password found, attempting login
+[13:08:48] [main/INFO] [GradleStart]: Login Succesful!
+[13:08:48] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --userType, mojang, --accessToken, {REDACTED}, --version, 1.7.10, --uuid, 5652713c668e47f3853a3fa959a9dfd3, --username, Draknyte1, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[13:08:49] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[13:08:49] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[13:08:49] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[13:08:49] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[16:04:53] [main/INFO] [GradleStart]: username: Draknyte1@hotmail.com
+[16:04:53] [main/INFO] [GradleStart]: Extra: []
+[16:04:53] [main/INFO] [GradleStart]: Password found, attempting login
+[16:05:05] [main/ERROR] [GradleStart]: -- Login failed! Cannot contact authentication server
+[16:05:39] [main/INFO] [GradleStart]: Extra: []
+[16:05:39] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --accessToken, {REDACTED}, --version, 1.7.10, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[16:05:39] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[16:05:39] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[16:05:39] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[16:05:39] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[16:07:51] [main/INFO] [GradleStart]: Extra: []
+[16:07:51] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --accessToken, {REDACTED}, --version, 1.7.10, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[16:07:51] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[16:07:51] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[16:07:51] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[16:07:51] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[16:11:24] [main/INFO] [GradleStart]: Extra: []
+[16:11:24] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --accessToken, {REDACTED}, --version, 1.7.10, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[16:11:24] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[16:11:24] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[16:11:24] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[16:11:24] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[16:15:09] [main/INFO] [GradleStart]: Extra: []
+[16:15:09] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --accessToken, {REDACTED}, --version, 1.7.10, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[16:15:09] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[16:15:09] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[16:15:09] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[16:15:09] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[16:16:47] [main/INFO] [GradleStart]: Extra: []
+[16:16:47] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --accessToken, {REDACTED}, --version, 1.7.10, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[16:16:47] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[16:16:47] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[16:16:47] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[16:16:47] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[16:19:40] [main/INFO] [GradleStart]: Extra: []
+[16:19:40] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --accessToken, {REDACTED}, --version, 1.7.10, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[16:19:40] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[16:19:40] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[16:19:40] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[16:19:40] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[16:22:27] [main/INFO] [GradleStart]: Extra: []
+[16:22:27] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --accessToken, {REDACTED}, --version, 1.7.10, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[16:22:27] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[16:22:27] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[16:22:27] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[16:22:27] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[16:28:12] [main/INFO] [GradleStart]: Extra: []
+[16:28:12] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --accessToken, {REDACTED}, --version, 1.7.10, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[16:28:12] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[16:28:12] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[16:28:12] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[16:28:12] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[16:30:11] [main/INFO] [GradleStart]: Extra: []
+[16:30:11] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --accessToken, {REDACTED}, --version, 1.7.10, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[16:30:11] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[16:30:11] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[16:30:11] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[16:30:11] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[16:30:51] [main/INFO] [GradleStart]: Extra: []
+[16:30:51] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --accessToken, {REDACTED}, --version, 1.7.10, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[16:30:51] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[16:30:51] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[16:30:51] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[16:30:51] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[16:39:43] [main/INFO] [GradleStart]: Extra: []
+[16:39:43] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --accessToken, {REDACTED}, --version, 1.7.10, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[16:39:43] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[16:39:43] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[16:39:43] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[16:39:43] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[16:41:39] [main/INFO] [GradleStart]: Extra: []
+[16:41:39] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --accessToken, {REDACTED}, --version, 1.7.10, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[16:41:39] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[16:41:39] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[16:41:39] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[16:41:39] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[16:43:52] [main/INFO] [GradleStart]: Extra: []
+[16:43:52] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --accessToken, {REDACTED}, --version, 1.7.10, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[16:43:52] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[16:43:52] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[16:43:52] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[16:43:52] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[16:48:49] [main/INFO] [GradleStart]: Extra: []
+[16:48:49] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --accessToken, {REDACTED}, --version, 1.7.10, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[16:48:49] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[16:48:49] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[16:48:49] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[16:48:49] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[16:50:59] [main/INFO] [GradleStart]: Extra: []
+[16:50:59] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --accessToken, {REDACTED}, --version, 1.7.10, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[16:50:59] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[16:50:59] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[16:50:59] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[16:50:59] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[16:53:52] [main/INFO] [GradleStart]: Extra: []
+[16:53:52] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --accessToken, {REDACTED}, --version, 1.7.10, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[16:53:52] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[16:53:52] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[16:53:52] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[16:53:52] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[16:54:57] [main/INFO] [GradleStart]: Extra: []
+[16:54:57] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --accessToken, {REDACTED}, --version, 1.7.10, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[16:54:57] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[16:54:57] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[16:54:57] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[16:54:57] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[16:55:47] [main/INFO] [GradleStart]: Extra: []
+[16:55:47] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --accessToken, {REDACTED}, --version, 1.7.10, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[16:55:47] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[16:55:47] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[16:55:47] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[16:55:47] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[17:03:33] [main/INFO] [GradleStart]: Extra: []
+[17:03:33] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --accessToken, {REDACTED}, --version, 1.7.10, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[17:03:33] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[17:03:33] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[17:03:33] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[17:03:33] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[17:10:38] [main/INFO] [GradleStart]: Extra: []
+[17:10:38] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --accessToken, {REDACTED}, --version, 1.7.10, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[17:10:38] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[17:10:38] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[17:10:38] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[17:10:38] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[17:11:30] [main/INFO] [GradleStart]: Extra: []
+[17:11:30] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --accessToken, {REDACTED}, --version, 1.7.10, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[17:11:30] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[17:11:30] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[17:11:30] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[17:11:30] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[17:15:10] [main/INFO] [GradleStart]: Extra: []
+[17:15:10] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --accessToken, {REDACTED}, --version, 1.7.10, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[17:15:10] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[17:15:10] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[17:15:10] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[17:15:10] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[17:18:12] [main/INFO] [GradleStart]: Extra: []
+[17:18:12] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --accessToken, {REDACTED}, --version, 1.7.10, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[17:18:12] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[17:18:12] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[17:18:12] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[17:18:12] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[17:20:24] [main/INFO] [GradleStart]: Extra: []
+[17:20:24] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --accessToken, {REDACTED}, --version, 1.7.10, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[17:20:24] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[17:20:24] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[17:20:24] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[17:20:24] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[19:53:06] [main/INFO] [GradleStart]: Extra: []
+[19:53:06] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --accessToken, {REDACTED}, --version, 1.7.10, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[19:53:06] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[19:53:06] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[19:53:06] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[19:53:06] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[20:01:39] [main/INFO] [GradleStart]: Extra: []
+[20:01:39] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --accessToken, {REDACTED}, --version, 1.7.10, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[20:01:39] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[20:01:39] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[20:01:39] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[20:01:39] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[20:06:06] [main/INFO] [GradleStart]: Extra: []
+[20:06:06] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --accessToken, {REDACTED}, --version, 1.7.10, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[20:06:06] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[20:06:06] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[20:06:06] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[20:06:06] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[20:08:54] [main/INFO] [GradleStart]: Extra: []
+[20:08:54] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --accessToken, {REDACTED}, --version, 1.7.10, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[20:08:54] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[20:08:54] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[20:08:54] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[20:08:54] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[20:17:09] [main/INFO] [GradleStart]: Extra: []
+[20:17:09] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --accessToken, {REDACTED}, --version, 1.7.10, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[20:17:09] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[20:17:09] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[20:17:09] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[20:17:09] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[20:18:15] [main/INFO] [GradleStart]: Extra: []
+[20:18:15] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --accessToken, {REDACTED}, --version, 1.7.10, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[20:18:15] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[20:18:15] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[20:18:15] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[20:18:15] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[20:23:41] [main/INFO] [GradleStart]: Extra: []
+[20:23:41] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --accessToken, {REDACTED}, --version, 1.7.10, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[20:23:41] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[20:23:41] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[20:23:41] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[20:23:41] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[20:28:05] [main/INFO] [GradleStart]: Extra: []
+[20:28:05] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --accessToken, {REDACTED}, --version, 1.7.10, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[20:28:05] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[20:28:05] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[20:28:05] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[20:28:05] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[11:12:54] [main/INFO] [GradleStart]: Extra: []
+[11:12:55] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --accessToken, {REDACTED}, --version, 1.7.10, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[11:12:55] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[11:12:55] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[11:12:55] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[11:12:55] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[11:42:12] [main/INFO] [GradleStart]: Extra: []
+[11:42:12] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --accessToken, {REDACTED}, --version, 1.7.10, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[11:42:12] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[11:42:12] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[11:42:12] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[11:42:12] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[11:53:52] [main/INFO] [GradleStart]: Extra: []
+[11:53:52] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --accessToken, {REDACTED}, --version, 1.7.10, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[11:53:52] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[11:53:52] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[11:53:52] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[11:53:52] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[12:05:32] [main/INFO] [GradleStart]: Extra: []
+[12:05:32] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --accessToken, {REDACTED}, --version, 1.7.10, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[12:05:32] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[12:05:32] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[12:05:32] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[12:05:32] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[12:07:01] [main/INFO] [GradleStart]: Extra: []
+[12:07:01] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --accessToken, {REDACTED}, --version, 1.7.10, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[12:07:01] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[12:07:01] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[12:07:01] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[12:07:01] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[12:09:57] [main/INFO] [GradleStart]: Extra: []
+[12:09:57] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --accessToken, {REDACTED}, --version, 1.7.10, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[12:09:57] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[12:09:57] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[12:09:57] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[12:09:57] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[23:23:31] [main/INFO] [GradleStart]: Extra: []
+[23:23:31] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --accessToken, {REDACTED}, --version, 1.7.10, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[23:23:31] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[23:23:31] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[23:23:31] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[23:23:31] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[13:00:01] [main/INFO] [GradleStart]: username: Draknyte1@hotmail.com
+[13:00:01] [main/INFO] [GradleStart]: Extra: []
+[13:00:01] [main/INFO] [GradleStart]: Password found, attempting login
+[13:00:03] [main/INFO] [GradleStart]: Login Succesful!
+[13:00:03] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --userType, mojang, --accessToken, {REDACTED}, --version, 1.7.10, --uuid, 5652713c668e47f3853a3fa959a9dfd3, --username, Draknyte1, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[13:00:03] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[13:00:03] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[13:00:03] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[13:00:03] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[13:00:56] [main/INFO] [GradleStart]: Extra: []
+[13:00:56] [main/INFO] [GradleStart]: Running with arguments: [--tweakClass, cpw.mods.fml.common.launcher.FMLServerTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[13:00:56] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLServerTweaker
+[13:00:56] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLServerTweaker
+[13:00:56] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[13:00:56] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLServerTweaker
+[13:08:27] [main/INFO] [GradleStart]: username: Draknyte1@hotmail.com
+[13:08:27] [main/INFO] [GradleStart]: Extra: []
+[13:08:27] [main/INFO] [GradleStart]: Password found, attempting login
+[13:08:30] [main/INFO] [GradleStart]: Login Succesful!
+[13:08:30] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --userType, mojang, --accessToken, {REDACTED}, --version, 1.7.10, --uuid, 5652713c668e47f3853a3fa959a9dfd3, --username, Draknyte1, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[13:08:30] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[13:08:30] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[13:08:30] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[13:08:30] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[13:19:31] [main/INFO] [GradleStart]: username: Draknyte1@hotmail.com
+[13:19:31] [main/INFO] [GradleStart]: Extra: []
+[13:19:31] [main/INFO] [GradleStart]: Password found, attempting login
+[13:19:33] [main/INFO] [GradleStart]: Login Succesful!
+[13:19:33] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --userType, mojang, --accessToken, {REDACTED}, --version, 1.7.10, --uuid, 5652713c668e47f3853a3fa959a9dfd3, --username, Draknyte1, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[13:19:33] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[13:19:33] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[13:19:33] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[13:19:33] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[14:57:56] [main/INFO] [GradleStart]: username: Draknyte1@hotmail.com
+[14:57:56] [main/INFO] [GradleStart]: Extra: []
+[14:57:56] [main/INFO] [GradleStart]: Password found, attempting login
+[14:57:58] [main/INFO] [GradleStart]: Login Succesful!
+[14:57:59] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --userType, mojang, --accessToken, {REDACTED}, --version, 1.7.10, --uuid, 5652713c668e47f3853a3fa959a9dfd3, --username, Draknyte1, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[14:57:59] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[14:57:59] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[14:57:59] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[14:57:59] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[14:59:53] [main/INFO] [GradleStart]: username: Draknyte1@hotmail.com
+[14:59:53] [main/INFO] [GradleStart]: Extra: []
+[14:59:53] [main/INFO] [GradleStart]: Password found, attempting login
+[14:59:55] [main/INFO] [GradleStart]: Login Succesful!
+[14:59:55] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --userType, mojang, --accessToken, {REDACTED}, --version, 1.7.10, --uuid, 5652713c668e47f3853a3fa959a9dfd3, --username, Draknyte1, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[14:59:55] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[14:59:55] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[14:59:55] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[14:59:55] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[15:00:52] [main/INFO] [GradleStart]: username: Draknyte1@hotmail.com
+[15:00:52] [main/INFO] [GradleStart]: Extra: []
+[15:00:52] [main/INFO] [GradleStart]: Password found, attempting login
+[15:00:53] [main/INFO] [GradleStart]: Login Succesful!
+[15:00:53] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --userType, mojang, --accessToken, {REDACTED}, --version, 1.7.10, --uuid, 5652713c668e47f3853a3fa959a9dfd3, --username, Draknyte1, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[15:00:53] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[15:00:53] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[15:00:53] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[15:00:53] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[15:05:19] [main/INFO] [GradleStart]: username: Draknyte1@hotmail.com
+[15:05:19] [main/INFO] [GradleStart]: Extra: []
+[15:05:19] [main/INFO] [GradleStart]: Password found, attempting login
+[15:05:21] [main/INFO] [GradleStart]: Login Succesful!
+[15:05:22] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --userType, mojang, --accessToken, {REDACTED}, --version, 1.7.10, --uuid, 5652713c668e47f3853a3fa959a9dfd3, --username, Draknyte1, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[15:05:22] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[15:05:22] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[15:05:22] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[15:05:22] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[15:14:21] [main/INFO] [GradleStart]: username: Draknyte1@hotmail.com
+[15:14:21] [main/INFO] [GradleStart]: Extra: []
+[15:14:21] [main/INFO] [GradleStart]: Password found, attempting login
+[15:14:23] [main/INFO] [GradleStart]: Login Succesful!
+[15:14:23] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --userType, mojang, --accessToken, {REDACTED}, --version, 1.7.10, --uuid, 5652713c668e47f3853a3fa959a9dfd3, --username, Draknyte1, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[15:14:23] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[15:14:23] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[15:14:23] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[15:14:23] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[15:57:59] [main/INFO] [GradleStart]: username: Draknyte1@hotmail.com
+[15:57:59] [main/INFO] [GradleStart]: Extra: []
+[15:57:59] [main/INFO] [GradleStart]: Password found, attempting login
+[15:58:01] [main/INFO] [GradleStart]: Login Succesful!
+[15:58:01] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --userType, mojang, --accessToken, {REDACTED}, --version, 1.7.10, --uuid, 5652713c668e47f3853a3fa959a9dfd3, --username, Draknyte1, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[15:58:01] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[15:58:01] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[15:58:01] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[15:58:01] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[16:11:22] [main/INFO] [GradleStart]: username: Draknyte1@hotmail.com
+[16:11:22] [main/INFO] [GradleStart]: Extra: []
+[16:11:22] [main/INFO] [GradleStart]: Password found, attempting login
+[16:11:24] [main/INFO] [GradleStart]: Login Succesful!
+[16:11:24] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --userType, mojang, --accessToken, {REDACTED}, --version, 1.7.10, --uuid, 5652713c668e47f3853a3fa959a9dfd3, --username, Draknyte1, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[16:11:24] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[16:11:24] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[16:11:24] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[16:11:24] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[16:53:13] [main/INFO] [GradleStart]: username: Draknyte1@hotmail.com
+[16:53:13] [main/INFO] [GradleStart]: Extra: []
+[16:53:13] [main/INFO] [GradleStart]: Password found, attempting login
+[16:53:15] [main/INFO] [GradleStart]: Login Succesful!
+[16:53:15] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --userType, mojang, --accessToken, {REDACTED}, --version, 1.7.10, --uuid, 5652713c668e47f3853a3fa959a9dfd3, --username, Draknyte1, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[16:53:15] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[16:53:15] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[16:53:15] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[16:53:15] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[17:05:30] [main/INFO] [GradleStart]: username: Draknyte1@hotmail.com
+[17:05:30] [main/INFO] [GradleStart]: Extra: []
+[17:05:30] [main/INFO] [GradleStart]: Password found, attempting login
+[17:05:32] [main/INFO] [GradleStart]: Login Succesful!
+[17:05:32] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --userType, mojang, --accessToken, {REDACTED}, --version, 1.7.10, --uuid, 5652713c668e47f3853a3fa959a9dfd3, --username, Draknyte1, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[17:05:32] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[17:05:32] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[17:05:32] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[17:05:32] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[17:09:48] [main/INFO] [GradleStart]: username: Draknyte1@hotmail.com
+[17:09:48] [main/INFO] [GradleStart]: Extra: []
+[17:09:48] [main/INFO] [GradleStart]: Password found, attempting login
+[17:09:50] [main/INFO] [GradleStart]: Login Succesful!
+[17:09:50] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --userType, mojang, --accessToken, {REDACTED}, --version, 1.7.10, --uuid, 5652713c668e47f3853a3fa959a9dfd3, --username, Draknyte1, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[17:09:50] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[17:09:50] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[17:09:50] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[17:09:50] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[17:45:43] [main/INFO] [GradleStart]: username: Draknyte1@hotmail.com
+[17:45:43] [main/INFO] [GradleStart]: Extra: []
+[17:45:43] [main/INFO] [GradleStart]: Password found, attempting login
+[17:45:44] [main/INFO] [GradleStart]: Login Succesful!
+[17:45:44] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --userType, mojang, --accessToken, {REDACTED}, --version, 1.7.10, --uuid, 5652713c668e47f3853a3fa959a9dfd3, --username, Draknyte1, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[17:45:44] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[17:45:44] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[17:45:44] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[17:45:44] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[18:02:56] [main/INFO] [GradleStart]: username: Draknyte1@hotmail.com
+[18:02:56] [main/INFO] [GradleStart]: Extra: []
+[18:02:56] [main/INFO] [GradleStart]: Password found, attempting login
+[18:02:57] [main/INFO] [GradleStart]: Login Succesful!
+[18:02:57] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --userType, mojang, --accessToken, {REDACTED}, --version, 1.7.10, --uuid, 5652713c668e47f3853a3fa959a9dfd3, --username, Draknyte1, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[18:02:58] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[18:02:58] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[18:02:58] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[18:02:58] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[18:07:02] [main/INFO] [GradleStart]: username: Draknyte1@hotmail.com
+[18:07:02] [main/INFO] [GradleStart]: Extra: []
+[18:07:02] [main/INFO] [GradleStart]: Password found, attempting login
+[18:07:04] [main/INFO] [GradleStart]: Login Succesful!
+[18:07:04] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --userType, mojang, --accessToken, {REDACTED}, --version, 1.7.10, --uuid, 5652713c668e47f3853a3fa959a9dfd3, --username, Draknyte1, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[18:07:04] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[18:07:04] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[18:07:04] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[18:07:04] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[18:08:27] [main/INFO] [GradleStart]: username: Draknyte1@hotmail.com
+[18:08:27] [main/INFO] [GradleStart]: Extra: []
+[18:08:27] [main/INFO] [GradleStart]: Password found, attempting login
+[18:08:29] [main/INFO] [GradleStart]: Login Succesful!
+[18:08:29] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --userType, mojang, --accessToken, {REDACTED}, --version, 1.7.10, --uuid, 5652713c668e47f3853a3fa959a9dfd3, --username, Draknyte1, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[18:08:29] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[18:08:29] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[18:08:29] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[18:08:29] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[18:09:46] [main/INFO] [GradleStart]: username: Draknyte1@hotmail.com
+[18:09:46] [main/INFO] [GradleStart]: Extra: []
+[18:09:46] [main/INFO] [GradleStart]: Password found, attempting login
+[18:09:48] [main/INFO] [GradleStart]: Login Succesful!
+[18:09:48] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --userType, mojang, --accessToken, {REDACTED}, --version, 1.7.10, --uuid, 5652713c668e47f3853a3fa959a9dfd3, --username, Draknyte1, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[18:09:48] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[18:09:48] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[18:09:48] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[18:09:48] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[18:11:27] [main/INFO] [GradleStart]: username: Draknyte1@hotmail.com
+[18:11:27] [main/INFO] [GradleStart]: Extra: []
+[18:11:27] [main/INFO] [GradleStart]: Password found, attempting login
+[18:11:29] [main/INFO] [GradleStart]: Login Succesful!
+[18:11:29] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --userType, mojang, --accessToken, {REDACTED}, --version, 1.7.10, --uuid, 5652713c668e47f3853a3fa959a9dfd3, --username, Draknyte1, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[18:11:29] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[18:11:29] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[18:11:29] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[18:11:29] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[03:11:08] [main/INFO] [GradleStart]: username: Draknyte1@hotmail.com
+[03:11:08] [main/INFO] [GradleStart]: Extra: []
+[03:11:08] [main/INFO] [GradleStart]: Password found, attempting login
+[03:11:10] [main/INFO] [GradleStart]: Login Succesful!
+[03:11:10] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --userType, mojang, --accessToken, {REDACTED}, --version, 1.7.10, --uuid, 5652713c668e47f3853a3fa959a9dfd3, --username, Draknyte1, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[03:11:10] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[03:11:10] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[03:11:10] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[03:11:10] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[03:12:57] [main/INFO] [GradleStart]: username: Draknyte1@hotmail.com
+[03:12:57] [main/INFO] [GradleStart]: Extra: []
+[03:12:57] [main/INFO] [GradleStart]: Password found, attempting login
+[03:12:59] [main/INFO] [GradleStart]: Login Succesful!
+[03:12:59] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --userType, mojang, --accessToken, {REDACTED}, --version, 1.7.10, --uuid, 5652713c668e47f3853a3fa959a9dfd3, --username, Draknyte1, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[03:12:59] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[03:12:59] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[03:12:59] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[03:12:59] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[13:34:36] [main/INFO] [GradleStart]: Extra: []
+[13:34:36] [main/INFO] [GradleStart]: Found and added coremod: ic2.core.coremod.IC2core
+[13:34:36] [main/INFO] [GradleStart]: Found and added coremod: appeng.transformer.AppEngCore
+[13:34:36] [main/INFO] [GradleStart]: Found and added coremod: codechicken.nei.asm.NEICorePlugin
+[13:34:36] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --accessToken, {REDACTED}, --assetIndex, 1.7.10, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --version, 1.7.10, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[13:34:36] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[13:34:36] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[13:34:36] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[13:34:36] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[13:35:35] [main/INFO] [GradleStart]: Extra: []
+[13:35:35] [main/INFO] [GradleStart]: Found and added coremod: ic2.core.coremod.IC2core
+[13:35:35] [main/INFO] [GradleStart]: Found and added coremod: appeng.transformer.AppEngCore
+[13:35:35] [main/INFO] [GradleStart]: Found and added coremod: codechicken.nei.asm.NEICorePlugin
+[13:35:35] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --accessToken, {REDACTED}, --assetIndex, 1.7.10, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --version, 1.7.10, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[13:35:35] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[13:35:35] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[13:35:35] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[13:35:35] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[13:36:18] [main/INFO] [GradleStart]: Extra: []
+[13:36:19] [main/INFO] [GradleStart]: Found and added coremod: ic2.core.coremod.IC2core
+[13:36:19] [main/INFO] [GradleStart]: Found and added coremod: appeng.transformer.AppEngCore
+[13:36:19] [main/INFO] [GradleStart]: Found and added coremod: codechicken.nei.asm.NEICorePlugin
+[13:36:19] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --accessToken, {REDACTED}, --assetIndex, 1.7.10, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --version, 1.7.10, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[13:36:19] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[13:36:19] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[13:36:19] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[13:36:19] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[13:36:53] [main/INFO] [GradleStart]: Extra: []
+[13:36:53] [main/INFO] [GradleStart]: Found and added coremod: ic2.core.coremod.IC2core
+[13:36:53] [main/INFO] [GradleStart]: Found and added coremod: appeng.transformer.AppEngCore
+[13:36:53] [main/INFO] [GradleStart]: Found and added coremod: codechicken.nei.asm.NEICorePlugin
+[13:36:53] [main/INFO] [GradleStart]: Found and added coremod: codechicken.core.launch.CodeChickenCorePlugin
+[13:36:53] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --accessToken, {REDACTED}, --assetIndex, 1.7.10, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --version, 1.7.10, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[13:36:53] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[13:36:53] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[13:36:53] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[13:36:53] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[13:37:21] [main/INFO] [GradleStart]: Extra: []
+[13:37:21] [main/INFO] [GradleStart]: Found and added coremod: ic2.core.coremod.IC2core
+[13:37:21] [main/INFO] [GradleStart]: Found and added coremod: appeng.transformer.AppEngCore
+[13:37:21] [main/INFO] [GradleStart]: Found and added coremod: codechicken.nei.asm.NEICorePlugin
+[13:37:21] [main/INFO] [GradleStart]: Found and added coremod: codechicken.core.launch.CodeChickenCorePlugin
+[13:37:21] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --accessToken, {REDACTED}, --assetIndex, 1.7.10, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --version, 1.7.10, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[13:37:21] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[13:37:21] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[13:37:21] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[13:37:21] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
+[13:39:33] [main/INFO] [GradleStart]: Extra: []
+[13:39:33] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --accessToken, {REDACTED}, --assetIndex, 1.7.10, --assetsDir, C:/Users/Jordan/.gradle/caches/minecraft/assets, --version, 1.7.10, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
+[13:39:33] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[13:39:33] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
+[13:39:33] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
+[13:39:33] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
diff --git a/logs/fml-server-1.log b/logs/fml-server-1.log
new file mode 100644
index 0000000000..8cbe87956c
--- /dev/null
+++ b/logs/fml-server-1.log
@@ -0,0 +1,491 @@
+[01:48:49] [main/DEBUG] [FML/]: Injecting tracing printstreams for STDOUT/STDERR.
+[01:48:49] [main/INFO] [FML/]: Forge Mod Loader version 7.99.16.1448 for Minecraft 1.7.10 loading
+[01:48:49] [main/INFO] [FML/]: Java is Java HotSpot(TM) 64-Bit Server VM, version 1.8.0_60, running on Windows 7:amd64:6.1, installed at C:\Program Files\Java\jre1.8.0_60
+[01:48:49] [main/DEBUG] [FML/]: Java classpath at launch is C:\eclipse\workspace\upTime\bin;C:\eclipse\Forge\bin;C:\Users\Jordan\.gradle\caches\minecraft\net\minecraftforge\forge\1.7.10-10.13.4.1448-1.7.10\forgeSrc-1.7.10-10.13.4.1448-1.7.10.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\net.minecraft\launchwrapper\1.11\9c0592c6e1e9ea296a70948081bd4cc84dda1289\launchwrapper-1.11.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.google.code.findbugs\jsr305\1.3.9\40719ea6961c0cb6afaeb6a921eaa1f6afd4cfdf\jsr305-1.3.9.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.ow2.asm\asm-debug-all\5.0.3\f9e364ae2a66ce2a543012a4668856e84e5dab74\asm-debug-all-5.0.3.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.typesafe.akka\akka-actor_2.11\2.3.3\ed62e9fc709ca0f2ff1a3220daa8b70a2870078e\akka-actor_2.11-2.3.3.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.typesafe\config\1.2.1\f771f71fdae3df231bcd54d5ca2d57f0bf93f467\config-1.2.1.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang\scala-actors-migration_2.11\1.1.0\dfa8bc42b181d5b9f1a5dd147f8ae308b893eb6f\scala-actors-migration_2.11-1.1.0.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang\scala-compiler\2.11.1\56ea2e6c025e0821f28d73ca271218b8dd04926a\scala-compiler-2.11.1.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang.plugins\scala-continuations-library_2.11\1.0.2\e517c53a7e9acd6b1668c5a35eccbaa3bab9aac\scala-continuations-library_2.11-1.0.2.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang.plugins\scala-continuations-plugin_2.11.1\1.0.2\f361a3283452c57fa30c1ee69448995de23c60f7\scala-continuations-plugin_2.11.1-1.0.2.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang\scala-library\2.11.1\e11da23da3eabab9f4777b9220e60d44c1aab6a\scala-library-2.11.1.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang\scala-parser-combinators_2.11\1.0.1\f05d7345bf5a58924f2837c6c1f4d73a938e1ff0\scala-parser-combinators_2.11-1.0.1.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang\scala-reflect\2.11.1\6580347e61cc7f8e802941e7fde40fa83b8badeb\scala-reflect-2.11.1.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang\scala-swing_2.11\1.0.1\b1cdd92bd47b1e1837139c1c53020e86bb9112ae\scala-swing_2.11-1.0.1.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang\scala-xml_2.11\1.0.2\7a80ec00aec122fba7cd4e0d4cdd87ff7e4cb6d0\scala-xml_2.11-1.0.2.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\net.sf.jopt-simple\jopt-simple\4.5\6065cc95c661255349c1d0756657be17c29a4fd3\jopt-simple-4.5.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\lzma\lzma\0.0.1\521616dc7487b42bef0e803bd2fa3faf668101d7\lzma-0.0.1.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.mojang\realms\1.3.5\807ae355ee63583becd7ea60e76aab1532bb42e\realms-1.3.5.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.apache.commons\commons-compress\1.8.1\a698750c16740fd5b3871425f4cb3bbaa87f529d\commons-compress-1.8.1.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.apache.httpcomponents\httpclient\4.3.3\18f4247ff4572a074444572cee34647c43e7c9c7\httpclient-4.3.3.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\commons-logging\commons-logging\1.1.3\f6f66e966c70a83ffbdb6f17a0919eaf7c8aca7f\commons-logging-1.1.3.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.apache.httpcomponents\httpcore\4.3.2\31fbbff1ddbf98f3aa7377c94d33b0447c646b6e\httpcore-4.3.2.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\java3d\vecmath\1.3.1\a0ae4f51da409fa0c20fa0ca59e6bbc9413ae71d\vecmath-1.3.1.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\net.sf.trove4j\trove4j\3.0.3\42ccaf4761f0dfdfa805c9e340d99a755907e2dd\trove4j-3.0.3.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.ibm.icu\icu4j-core-mojang\51.2\63d216a9311cca6be337c1e458e587f99d382b84\icu4j-core-mojang-51.2.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.paulscode\codecjorbis\20101023\c73b5636faf089d9f00e8732a829577de25237ee\codecjorbis-20101023.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.paulscode\codecwav\20101023\12f031cfe88fef5c1dd36c563c0a3a69bd7261da\codecwav-20101023.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.paulscode\libraryjavasound\20101123\5c5e304366f75f9eaa2e8cca546a1fb6109348b3\libraryjavasound-20101123.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.paulscode\librarylwjglopenal\20100824\73e80d0794c39665aec3f62eee88ca91676674ef\librarylwjglopenal-20100824.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.paulscode\soundsystem\20120107\419c05fe9be71f792b2d76cfc9b67f1ed0fec7f6\soundsystem-20120107.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\io.netty\netty-all\4.0.10.Final\9e50bd52ffe257a0e2cd8d971688d6ce7d174325\netty-all-4.0.10.Final.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.google.guava\guava\17.0\9c6ef172e8de35fd8d4d8783e4821e57cdef7445\guava-17.0.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.apache.commons\commons-lang3\3.3.2\90a3822c38ec8c996e84c16a3477ef632cbc87a3\commons-lang3-3.3.2.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\commons-io\commons-io\2.4\b1b6ea3b7e4aa4f492509a4952029cd8e48019ad\commons-io-2.4.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\commons-codec\commons-codec\1.9\9ce04e34240f674bc72680f8b843b1457383161a\commons-codec-1.9.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\net.java.jinput\jinput\2.0.5\39c7796b469a600f72380316f6b1f11db6c2c7c4\jinput-2.0.5.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\net.java.jutils\jutils\1.0.0\e12fe1fda814bd348c1579329c86943d2cd3c6a6\jutils-1.0.0.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.google.code.gson\gson\2.2.4\a60a5e993c98c864010053cb901b7eab25306568\gson-2.2.4.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.mojang\authlib\1.5.16\ef1582b11fd0943d069cdcb72e99008ac209a283\authlib-1.5.16.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.apache.logging.log4j\log4j-api\2.0-beta9\1dd66e68cccd907880229f9e2de1314bd13ff785\log4j-api-2.0-beta9.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.apache.logging.log4j\log4j-core\2.0-beta9\678861ba1b2e1fccb594bb0ca03114bb05da9695\log4j-core-2.0-beta9.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.lwjgl.lwjgl\lwjgl\2.9.1\f58c5aabcef0e41718a564be9f8e412fff8db847\lwjgl-2.9.1.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.lwjgl.lwjgl\lwjgl_util\2.9.1\290d7ba8a1bd9566f5ddf16ad06f09af5ec9b20e\lwjgl_util-2.9.1.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\tv.twitch\twitch\5.16\1f55f009c61637c10c0acfb8b5ffc600f30044b4\twitch-5.16.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang\scala-actors\2.11.0\8ccfb6541de179bb1c4d45cf414acee069b7f78b\scala-actors-2.11.0.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang.modules\scala-xml_2.11\1.0.2\820fbca7e524b530fdadc594c39d49a21ea0337e\scala-xml_2.11-1.0.2.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang.modules\scala-parser-combinators_2.11\1.0.1\f05d7345bf5a58924f2837c6c1f4d73a938e1ff0\scala-parser-combinators_2.11-1.0.1.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\net.java.jinput\jinput-platform\2.0.5\7ff832a6eb9ab6a767f1ade2b548092d0fa64795\jinput-platform-2.0.5-natives-linux.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\net.java.jinput\jinput-platform\2.0.5\385ee093e01f587f30ee1c8a2ee7d408fd732e16\jinput-platform-2.0.5-natives-windows.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\net.java.jinput\jinput-platform\2.0.5\53f9c919f34d2ca9de8c51fc4e1e8282029a9232\jinput-platform-2.0.5-natives-osx.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\tv.twitch\twitch-platform\5.16\7c6affe439099806a4f552da14c42f9d643d8b23\twitch-platform-5.16-natives-windows-32.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\tv.twitch\twitch-platform\5.16\39d0c3d363735b4785598e0e7fbf8297c706a9f9\twitch-platform-5.16-natives-windows-64.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\tv.twitch\twitch-platform\5.16\62503ee712766cf77f97252e5902786fd834b8c5\twitch-platform-5.16-natives-osx.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\tv.twitch\twitch-external-platform\4.5\18215140f010c05b9f86ef6f0f8871954d2ccebf\twitch-external-platform-4.5-natives-windows-32.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\tv.twitch\twitch-external-platform\4.5\c3cde57891b935d41b6680a9c5e1502eeab76d86\twitch-external-platform-4.5-natives-windows-64.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.lwjgl.lwjgl\lwjgl-platform\2.9.1\4c517eca808522457dd95ee8fc1fbcdbb602efbe\lwjgl-platform-2.9.1-natives-windows.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.lwjgl.lwjgl\lwjgl-platform\2.9.1\aa9aae879af8eb378e22cfc64db56ec2ca9a44d1\lwjgl-platform-2.9.1-natives-linux.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.lwjgl.lwjgl\lwjgl-platform\2.9.1\2d12c83fdfbc04ecabf02c7bc8cc54d034f0daac\lwjgl-platform-2.9.1-natives-osx.jar;C:\Users\Jordan\.gradle\caches\minecraft\net\minecraftforge\forge\1.7.10-10.13.4.1448-1.7.10\start
+[01:48:49] [main/DEBUG] [FML/]: Java library path at launch is C:\Program Files\Java\jre1.8.0_60\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:/Program Files/Java/jre1.8.0_60/bin/server;C:/Program Files/Java/jre1.8.0_60/bin;C:/Program Files/Java/jre1.8.0_60/lib/amd64;C:\ProgramData\Oracle\Java\javapath;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files (x86)\Intel\iCLS Client\;C:\Program Files\Intel\iCLS Client\;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files\FileBot\;C:\Program Files (x86)\Skype\Phone\;C:\eclipse;;.
+[01:48:49] [main/INFO] [FML/]: Managed to load a deobfuscated Minecraft name- we are in a deobfuscated environment. Skipping runtime deobfuscation
+[01:48:49] [main/DEBUG] [FML/]: Instantiating coremod class FMLCorePlugin
+[01:48:49] [main/DEBUG] [FML/]: Added access transformer class cpw.mods.fml.common.asm.transformers.AccessTransformer to enqueued access transformers
+[01:48:49] [main/DEBUG] [FML/]: Enqueued coremod FMLCorePlugin
+[01:48:49] [main/DEBUG] [FML/]: Instantiating coremod class FMLForgePlugin
+[01:48:49] [main/DEBUG] [FML/]: Added access transformer class net.minecraftforge.transformers.ForgeAccessTransformer to enqueued access transformers
+[01:48:49] [main/DEBUG] [FML/]: Enqueued coremod FMLForgePlugin
+[01:48:49] [main/DEBUG] [FML/]: All fundamental core mods are successfully located
+[01:48:49] [main/DEBUG] [FML/]: Attempting to load commandline specified mods, relative to C:\eclipse\workspace\upTime\.
+[01:48:49] [main/DEBUG] [FML/]: Discovering coremods
+[01:48:49] [main/INFO] [LaunchWrapper/]: Calling tweak class net.minecraftforge.gradle.tweakers.CoremodTweaker
+[01:48:49] [main/INFO] [GradleStart/]: Injecting location in coremod cpw.mods.fml.relauncher.FMLCorePlugin
+[01:48:49] [main/INFO] [GradleStart/]: Injecting location in coremod net.minecraftforge.classloading.FMLForgePlugin
+[01:48:49] [main/INFO] [LaunchWrapper/]: Loading tweak class name cpw.mods.fml.common.launcher.FMLInjectionAndSortingTweaker
+[01:48:49] [main/INFO] [LaunchWrapper/]: Loading tweak class name cpw.mods.fml.common.launcher.FMLDeobfTweaker
+[01:48:49] [main/INFO] [LaunchWrapper/]: Loading tweak class name net.minecraftforge.gradle.tweakers.AccessTransformerTweaker
+[01:48:49] [main/INFO] [LaunchWrapper/]: Calling tweak class cpw.mods.fml.common.launcher.FMLInjectionAndSortingTweaker
+[01:48:49] [main/INFO] [LaunchWrapper/]: Calling tweak class cpw.mods.fml.common.launcher.FMLInjectionAndSortingTweaker
+[01:48:49] [main/INFO] [LaunchWrapper/]: Calling tweak class cpw.mods.fml.relauncher.CoreModManager$FMLPluginWrapper
+[01:48:49] [main/DEBUG] [FML/]: Injecting coremod FMLCorePlugin {cpw.mods.fml.relauncher.FMLCorePlugin} class transformers
+[01:48:49] [main/TRACE] [FML/]: Registering transformer cpw.mods.fml.common.asm.transformers.MarkerTransformer
+[01:48:49] [main/TRACE] [FML/]: Registering transformer cpw.mods.fml.common.asm.transformers.SideTransformer
+[01:48:49] [main/TRACE] [FML/]: Registering transformer cpw.mods.fml.common.asm.transformers.EventSubscriptionTransformer
+[01:48:49] [main/DEBUG] [FML/]: Injection complete
+[01:48:49] [main/DEBUG] [FML/]: Running coremod plugin for FMLCorePlugin {cpw.mods.fml.relauncher.FMLCorePlugin}
+[01:48:49] [main/DEBUG] [FML/]: Running coremod plugin FMLCorePlugin
+[01:48:49] [main/ERROR] [FML/]: The binary patch set is missing. Either you are in a development environment, or things are not going to work!
+[01:48:50] [main/ERROR] [FML/]: FML appears to be missing any signature data. This is not a good thing
+[01:48:50] [main/DEBUG] [FML/]: Coremod plugin class FMLCorePlugin run successfully
+[01:48:50] [main/INFO] [LaunchWrapper/]: Calling tweak class cpw.mods.fml.relauncher.CoreModManager$FMLPluginWrapper
+[01:48:50] [main/DEBUG] [FML/]: Injecting coremod FMLForgePlugin {net.minecraftforge.classloading.FMLForgePlugin} class transformers
+[01:48:50] [main/TRACE] [FML/]: Registering transformer net.minecraftforge.classloading.FluidIdTransformer
+[01:48:50] [main/DEBUG] [FML/]: Injection complete
+[01:48:50] [main/DEBUG] [FML/]: Running coremod plugin for FMLForgePlugin {net.minecraftforge.classloading.FMLForgePlugin}
+[01:48:50] [main/DEBUG] [FML/]: Running coremod plugin FMLForgePlugin
+[01:48:50] [main/DEBUG] [FML/]: Coremod plugin class FMLForgePlugin run successfully
+[01:48:50] [main/INFO] [LaunchWrapper/]: Calling tweak class cpw.mods.fml.common.launcher.FMLDeobfTweaker
+[01:48:50] [main/DEBUG] [FML/]: Loaded 57 rules from AccessTransformer config file fml_at.cfg
+[01:48:50] [main/DEBUG] [FML/]: Loaded 89 rules from AccessTransformer config file forge_at.cfg
+[01:48:50] [main/DEBUG] [FML/]: Validating minecraft
+[01:48:50] [main/DEBUG] [FML/]: Minecraft validated, launching...
+[01:48:50] [main/INFO] [LaunchWrapper/]: Calling tweak class net.minecraftforge.gradle.tweakers.AccessTransformerTweaker
+[01:48:50] [main/INFO] [LaunchWrapper/]: Loading tweak class name cpw.mods.fml.common.launcher.TerminalTweaker
+[01:48:50] [main/INFO] [LaunchWrapper/]: Calling tweak class cpw.mods.fml.common.launcher.TerminalTweaker
+[01:48:50] [main/INFO] [LaunchWrapper/]: Launching wrapped minecraft {net.minecraft.server.MinecraftServer}
+[01:48:52] [main/WARN] [FML/]: =============================================================
+[01:48:52] [main/WARN] [FML/]: MOD HAS DIRECT REFERENCE System.exit() THIS IS NOT ALLOWED REROUTING TO FML!
+[01:48:52] [main/WARN] [FML/]: Offendor: net/minecraft/server/gui/MinecraftServerGui$1.windowClosing(Ljava/awt/event/WindowEvent;)V
+[01:48:52] [main/WARN] [FML/]: Use FMLCommonHandler.exitJava instead
+[01:48:52] [main/WARN] [FML/]: =============================================================
+[01:48:52] [Server thread/INFO] [MinecraftForge/]: Attempting early MinecraftForge initialization
+[01:48:52] [Server thread/INFO] [FML/]: MinecraftForge v10.13.4.1448 Initialized
+[01:48:52] [Server thread/INFO] [FML/]: Replaced 183 ore recipies
+[01:48:52] [Server thread/INFO] [MinecraftForge/]: Completed early MinecraftForge initialization
+[01:48:52] [Server thread/DEBUG] [FML/]: File C:\eclipse\workspace\upTime\config\injectedDependencies.json not found. No dependencies injected
+[01:48:52] [Server thread/DEBUG] [FML/]: Building injected Mod Containers [cpw.mods.fml.common.FMLContainer, net.minecraftforge.common.ForgeModContainer]
+[01:48:52] [Server thread/DEBUG] [FML/]: Attempting to load mods contained in the minecraft jar file and associated classes
+[01:48:52] [Server thread/DEBUG] [FML/]: Found a minecraft related directory at C:\eclipse\workspace\upTime\bin, examining for mod candidates
+[01:48:52] [Server thread/DEBUG] [FML/]: Found a minecraft related directory at C:\eclipse\Forge\bin, examining for mod candidates
+[01:48:52] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\minecraft\net\minecraftforge\forge\1.7.10-10.13.4.1448-1.7.10\forgeSrc-1.7.10-10.13.4.1448-1.7.10.jar, examining for mod candidates
+[01:48:52] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\net.minecraft\launchwrapper\1.11\9c0592c6e1e9ea296a70948081bd4cc84dda1289\launchwrapper-1.11.jar, examining for mod candidates
+[01:48:52] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.google.code.findbugs\jsr305\1.3.9\40719ea6961c0cb6afaeb6a921eaa1f6afd4cfdf\jsr305-1.3.9.jar, examining for mod candidates
+[01:48:52] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.ow2.asm\asm-debug-all\5.0.3\f9e364ae2a66ce2a543012a4668856e84e5dab74\asm-debug-all-5.0.3.jar, examining for mod candidates
+[01:48:52] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.typesafe.akka\akka-actor_2.11\2.3.3\ed62e9fc709ca0f2ff1a3220daa8b70a2870078e\akka-actor_2.11-2.3.3.jar, examining for mod candidates
+[01:48:52] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.typesafe\config\1.2.1\f771f71fdae3df231bcd54d5ca2d57f0bf93f467\config-1.2.1.jar, examining for mod candidates
+[01:48:52] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang\scala-actors-migration_2.11\1.1.0\dfa8bc42b181d5b9f1a5dd147f8ae308b893eb6f\scala-actors-migration_2.11-1.1.0.jar, examining for mod candidates
+[01:48:52] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang\scala-compiler\2.11.1\56ea2e6c025e0821f28d73ca271218b8dd04926a\scala-compiler-2.11.1.jar, examining for mod candidates
+[01:48:52] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang.plugins\scala-continuations-library_2.11\1.0.2\e517c53a7e9acd6b1668c5a35eccbaa3bab9aac\scala-continuations-library_2.11-1.0.2.jar, examining for mod candidates
+[01:48:52] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang.plugins\scala-continuations-plugin_2.11.1\1.0.2\f361a3283452c57fa30c1ee69448995de23c60f7\scala-continuations-plugin_2.11.1-1.0.2.jar, examining for mod candidates
+[01:48:52] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang\scala-library\2.11.1\e11da23da3eabab9f4777b9220e60d44c1aab6a\scala-library-2.11.1.jar, examining for mod candidates
+[01:48:52] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang\scala-parser-combinators_2.11\1.0.1\f05d7345bf5a58924f2837c6c1f4d73a938e1ff0\scala-parser-combinators_2.11-1.0.1.jar, examining for mod candidates
+[01:48:52] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang\scala-reflect\2.11.1\6580347e61cc7f8e802941e7fde40fa83b8badeb\scala-reflect-2.11.1.jar, examining for mod candidates
+[01:48:52] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang\scala-swing_2.11\1.0.1\b1cdd92bd47b1e1837139c1c53020e86bb9112ae\scala-swing_2.11-1.0.1.jar, examining for mod candidates
+[01:48:52] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang\scala-xml_2.11\1.0.2\7a80ec00aec122fba7cd4e0d4cdd87ff7e4cb6d0\scala-xml_2.11-1.0.2.jar, examining for mod candidates
+[01:48:52] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\net.sf.jopt-simple\jopt-simple\4.5\6065cc95c661255349c1d0756657be17c29a4fd3\jopt-simple-4.5.jar, examining for mod candidates
+[01:48:52] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\lzma\lzma\0.0.1\521616dc7487b42bef0e803bd2fa3faf668101d7\lzma-0.0.1.jar, examining for mod candidates
+[01:48:52] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.mojang\realms\1.3.5\807ae355ee63583becd7ea60e76aab1532bb42e\realms-1.3.5.jar, examining for mod candidates
+[01:48:52] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.apache.commons\commons-compress\1.8.1\a698750c16740fd5b3871425f4cb3bbaa87f529d\commons-compress-1.8.1.jar, examining for mod candidates
+[01:48:52] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.apache.httpcomponents\httpclient\4.3.3\18f4247ff4572a074444572cee34647c43e7c9c7\httpclient-4.3.3.jar, examining for mod candidates
+[01:48:52] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\commons-logging\commons-logging\1.1.3\f6f66e966c70a83ffbdb6f17a0919eaf7c8aca7f\commons-logging-1.1.3.jar, examining for mod candidates
+[01:48:52] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.apache.httpcomponents\httpcore\4.3.2\31fbbff1ddbf98f3aa7377c94d33b0447c646b6e\httpcore-4.3.2.jar, examining for mod candidates
+[01:48:52] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\java3d\vecmath\1.3.1\a0ae4f51da409fa0c20fa0ca59e6bbc9413ae71d\vecmath-1.3.1.jar, examining for mod candidates
+[01:48:52] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\net.sf.trove4j\trove4j\3.0.3\42ccaf4761f0dfdfa805c9e340d99a755907e2dd\trove4j-3.0.3.jar, examining for mod candidates
+[01:48:52] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.ibm.icu\icu4j-core-mojang\51.2\63d216a9311cca6be337c1e458e587f99d382b84\icu4j-core-mojang-51.2.jar, examining for mod candidates
+[01:48:52] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.paulscode\codecjorbis\20101023\c73b5636faf089d9f00e8732a829577de25237ee\codecjorbis-20101023.jar, examining for mod candidates
+[01:48:52] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.paulscode\codecwav\20101023\12f031cfe88fef5c1dd36c563c0a3a69bd7261da\codecwav-20101023.jar, examining for mod candidates
+[01:48:52] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.paulscode\libraryjavasound\20101123\5c5e304366f75f9eaa2e8cca546a1fb6109348b3\libraryjavasound-20101123.jar, examining for mod candidates
+[01:48:52] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.paulscode\librarylwjglopenal\20100824\73e80d0794c39665aec3f62eee88ca91676674ef\librarylwjglopenal-20100824.jar, examining for mod candidates
+[01:48:52] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.paulscode\soundsystem\20120107\419c05fe9be71f792b2d76cfc9b67f1ed0fec7f6\soundsystem-20120107.jar, examining for mod candidates
+[01:48:52] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\io.netty\netty-all\4.0.10.Final\9e50bd52ffe257a0e2cd8d971688d6ce7d174325\netty-all-4.0.10.Final.jar, examining for mod candidates
+[01:48:52] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.google.guava\guava\17.0\9c6ef172e8de35fd8d4d8783e4821e57cdef7445\guava-17.0.jar, examining for mod candidates
+[01:48:52] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.apache.commons\commons-lang3\3.3.2\90a3822c38ec8c996e84c16a3477ef632cbc87a3\commons-lang3-3.3.2.jar, examining for mod candidates
+[01:48:52] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\commons-io\commons-io\2.4\b1b6ea3b7e4aa4f492509a4952029cd8e48019ad\commons-io-2.4.jar, examining for mod candidates
+[01:48:52] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\commons-codec\commons-codec\1.9\9ce04e34240f674bc72680f8b843b1457383161a\commons-codec-1.9.jar, examining for mod candidates
+[01:48:52] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\net.java.jinput\jinput\2.0.5\39c7796b469a600f72380316f6b1f11db6c2c7c4\jinput-2.0.5.jar, examining for mod candidates
+[01:48:52] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\net.java.jutils\jutils\1.0.0\e12fe1fda814bd348c1579329c86943d2cd3c6a6\jutils-1.0.0.jar, examining for mod candidates
+[01:48:52] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.google.code.gson\gson\2.2.4\a60a5e993c98c864010053cb901b7eab25306568\gson-2.2.4.jar, examining for mod candidates
+[01:48:52] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.mojang\authlib\1.5.16\ef1582b11fd0943d069cdcb72e99008ac209a283\authlib-1.5.16.jar, examining for mod candidates
+[01:48:52] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.apache.logging.log4j\log4j-api\2.0-beta9\1dd66e68cccd907880229f9e2de1314bd13ff785\log4j-api-2.0-beta9.jar, examining for mod candidates
+[01:48:52] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.apache.logging.log4j\log4j-core\2.0-beta9\678861ba1b2e1fccb594bb0ca03114bb05da9695\log4j-core-2.0-beta9.jar, examining for mod candidates
+[01:48:52] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.lwjgl.lwjgl\lwjgl\2.9.1\f58c5aabcef0e41718a564be9f8e412fff8db847\lwjgl-2.9.1.jar, examining for mod candidates
+[01:48:52] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.lwjgl.lwjgl\lwjgl_util\2.9.1\290d7ba8a1bd9566f5ddf16ad06f09af5ec9b20e\lwjgl_util-2.9.1.jar, examining for mod candidates
+[01:48:52] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\tv.twitch\twitch\5.16\1f55f009c61637c10c0acfb8b5ffc600f30044b4\twitch-5.16.jar, examining for mod candidates
+[01:48:52] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang\scala-actors\2.11.0\8ccfb6541de179bb1c4d45cf414acee069b7f78b\scala-actors-2.11.0.jar, examining for mod candidates
+[01:48:52] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang.modules\scala-xml_2.11\1.0.2\820fbca7e524b530fdadc594c39d49a21ea0337e\scala-xml_2.11-1.0.2.jar, examining for mod candidates
+[01:48:52] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang.modules\scala-parser-combinators_2.11\1.0.1\f05d7345bf5a58924f2837c6c1f4d73a938e1ff0\scala-parser-combinators_2.11-1.0.1.jar, examining for mod candidates
+[01:48:52] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\net.java.jinput\jinput-platform\2.0.5\7ff832a6eb9ab6a767f1ade2b548092d0fa64795\jinput-platform-2.0.5-natives-linux.jar, examining for mod candidates
+[01:48:52] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\net.java.jinput\jinput-platform\2.0.5\385ee093e01f587f30ee1c8a2ee7d408fd732e16\jinput-platform-2.0.5-natives-windows.jar, examining for mod candidates
+[01:48:52] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\net.java.jinput\jinput-platform\2.0.5\53f9c919f34d2ca9de8c51fc4e1e8282029a9232\jinput-platform-2.0.5-natives-osx.jar, examining for mod candidates
+[01:48:52] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\tv.twitch\twitch-platform\5.16\7c6affe439099806a4f552da14c42f9d643d8b23\twitch-platform-5.16-natives-windows-32.jar, examining for mod candidates
+[01:48:52] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\tv.twitch\twitch-platform\5.16\39d0c3d363735b4785598e0e7fbf8297c706a9f9\twitch-platform-5.16-natives-windows-64.jar, examining for mod candidates
+[01:48:52] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\tv.twitch\twitch-platform\5.16\62503ee712766cf77f97252e5902786fd834b8c5\twitch-platform-5.16-natives-osx.jar, examining for mod candidates
+[01:48:52] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\tv.twitch\twitch-external-platform\4.5\18215140f010c05b9f86ef6f0f8871954d2ccebf\twitch-external-platform-4.5-natives-windows-32.jar, examining for mod candidates
+[01:48:52] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\tv.twitch\twitch-external-platform\4.5\c3cde57891b935d41b6680a9c5e1502eeab76d86\twitch-external-platform-4.5-natives-windows-64.jar, examining for mod candidates
+[01:48:52] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.lwjgl.lwjgl\lwjgl-platform\2.9.1\4c517eca808522457dd95ee8fc1fbcdbb602efbe\lwjgl-platform-2.9.1-natives-windows.jar, examining for mod candidates
+[01:48:52] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.lwjgl.lwjgl\lwjgl-platform\2.9.1\aa9aae879af8eb378e22cfc64db56ec2ca9a44d1\lwjgl-platform-2.9.1-natives-linux.jar, examining for mod candidates
+[01:48:52] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.lwjgl.lwjgl\lwjgl-platform\2.9.1\2d12c83fdfbc04ecabf02c7bc8cc54d034f0daac\lwjgl-platform-2.9.1-natives-osx.jar, examining for mod candidates
+[01:48:52] [Server thread/DEBUG] [FML/]: Found a minecraft related directory at C:\Users\Jordan\.gradle\caches\minecraft\net\minecraftforge\forge\1.7.10-10.13.4.1448-1.7.10\start, examining for mod candidates
+[01:48:52] [Server thread/DEBUG] [FML/]: Minecraft jar mods loaded successfully
+[01:48:52] [Server thread/INFO] [FML/]: Found 0 mods from the command line. Injecting into mod discoverer
+[01:48:52] [Server thread/INFO] [FML/]: Searching C:\eclipse\workspace\upTime\mods for mods
+[01:48:52] [Server thread/DEBUG] [FML/]: Examining directory bin for potential mods
+[01:48:52] [Server thread/DEBUG] [FML/]: Found an mcmod.info file in directory bin
+[01:48:52] [Server thread/TRACE] [FML/]: Recursing into package com
+[01:48:52] [Server thread/TRACE] [FML/]: Recursing into package com.skidinc
+[01:48:52] [Server thread/TRACE] [FML/]: Recursing into package com.skidinc.uptime
+[01:48:52] [Server thread/DEBUG] [FML/]: Identified a mod of type Lcpw/mods/fml/common/Mod; (com.skidinc.uptime.Uptime) - loading
+[01:48:52] [Server thread/TRACE] [Uptime/]: Parsed dependency info : [] [] []
+[01:48:52] [Server thread/DEBUG] [FML/]: Examining directory bin for potential mods
+[01:48:52] [Server thread/DEBUG] [FML/]: Found an mcmod.info file in directory bin
+[01:48:52] [Server thread/TRACE] [FML/]: Recursing into package com
+[01:48:52] [Server thread/TRACE] [FML/]: Recursing into package com.example
+[01:48:52] [Server thread/TRACE] [FML/]: Recursing into package com.example.examplemod
+[01:48:52] [Server thread/DEBUG] [FML/]: Identified a mod of type Lcpw/mods/fml/common/Mod; (com.example.examplemod.ExampleMod) - loading
+[01:48:52] [Server thread/TRACE] [examplemod/]: Parsed dependency info : [] [] []
+[01:48:52] [Server thread/DEBUG] [FML/]: Examining file forgeSrc-1.7.10-10.13.4.1448-1.7.10.jar for potential mods
+[01:48:52] [Server thread/DEBUG] [FML/]: The mod container forgeSrc-1.7.10-10.13.4.1448-1.7.10.jar appears to be missing an mcmod.info file
+[01:48:53] [Server thread/DEBUG] [FML/]: Examining file launchwrapper-1.11.jar for potential mods
+[01:48:53] [Server thread/DEBUG] [FML/]: The mod container launchwrapper-1.11.jar appears to be missing an mcmod.info file
+[01:48:53] [Server thread/DEBUG] [FML/]: Examining file jsr305-1.3.9.jar for potential mods
+[01:48:53] [Server thread/DEBUG] [FML/]: The mod container jsr305-1.3.9.jar appears to be missing an mcmod.info file
+[01:48:53] [Server thread/DEBUG] [FML/]: Examining file asm-debug-all-5.0.3.jar for potential mods
+[01:48:53] [Server thread/DEBUG] [FML/]: The mod container asm-debug-all-5.0.3.jar appears to be missing an mcmod.info file
+[01:48:53] [Server thread/DEBUG] [FML/]: Examining file akka-actor_2.11-2.3.3.jar for potential mods
+[01:48:53] [Server thread/DEBUG] [FML/]: The mod container akka-actor_2.11-2.3.3.jar appears to be missing an mcmod.info file
+[01:48:53] [Server thread/DEBUG] [FML/]: Examining file config-1.2.1.jar for potential mods
+[01:48:53] [Server thread/DEBUG] [FML/]: The mod container config-1.2.1.jar appears to be missing an mcmod.info file
+[01:48:53] [Server thread/DEBUG] [FML/]: Examining file scala-actors-migration_2.11-1.1.0.jar for potential mods
+[01:48:53] [Server thread/DEBUG] [FML/]: The mod container scala-actors-migration_2.11-1.1.0.jar appears to be missing an mcmod.info file
+[01:48:53] [Server thread/DEBUG] [FML/]: Examining file scala-compiler-2.11.1.jar for potential mods
+[01:48:53] [Server thread/DEBUG] [FML/]: The mod container scala-compiler-2.11.1.jar appears to be missing an mcmod.info file
+[01:48:53] [Server thread/DEBUG] [FML/]: Examining file scala-continuations-library_2.11-1.0.2.jar for potential mods
+[01:48:53] [Server thread/DEBUG] [FML/]: The mod container scala-continuations-library_2.11-1.0.2.jar appears to be missing an mcmod.info file
+[01:48:53] [Server thread/DEBUG] [FML/]: Examining file scala-continuations-plugin_2.11.1-1.0.2.jar for potential mods
+[01:48:53] [Server thread/DEBUG] [FML/]: The mod container scala-continuations-plugin_2.11.1-1.0.2.jar appears to be missing an mcmod.info file
+[01:48:53] [Server thread/DEBUG] [FML/]: Examining file scala-library-2.11.1.jar for potential mods
+[01:48:53] [Server thread/DEBUG] [FML/]: The mod container scala-library-2.11.1.jar appears to be missing an mcmod.info file
+[01:48:53] [Server thread/DEBUG] [FML/]: Examining file scala-parser-combinators_2.11-1.0.1.jar for potential mods
+[01:48:53] [Server thread/DEBUG] [FML/]: The mod container scala-parser-combinators_2.11-1.0.1.jar appears to be missing an mcmod.info file
+[01:48:53] [Server thread/DEBUG] [FML/]: Examining file scala-reflect-2.11.1.jar for potential mods
+[01:48:53] [Server thread/DEBUG] [FML/]: The mod container scala-reflect-2.11.1.jar appears to be missing an mcmod.info file
+[01:48:53] [Server thread/DEBUG] [FML/]: Examining file scala-swing_2.11-1.0.1.jar for potential mods
+[01:48:53] [Server thread/DEBUG] [FML/]: The mod container scala-swing_2.11-1.0.1.jar appears to be missing an mcmod.info file
+[01:48:53] [Server thread/DEBUG] [FML/]: Examining file scala-xml_2.11-1.0.2.jar for potential mods
+[01:48:53] [Server thread/DEBUG] [FML/]: The mod container scala-xml_2.11-1.0.2.jar appears to be missing an mcmod.info file
+[01:48:53] [Server thread/DEBUG] [FML/]: Examining file jopt-simple-4.5.jar for potential mods
+[01:48:53] [Server thread/DEBUG] [FML/]: The mod container jopt-simple-4.5.jar appears to be missing an mcmod.info file
+[01:48:53] [Server thread/DEBUG] [FML/]: Examining file lzma-0.0.1.jar for potential mods
+[01:48:53] [Server thread/DEBUG] [FML/]: The mod container lzma-0.0.1.jar appears to be missing an mcmod.info file
+[01:48:53] [Server thread/DEBUG] [FML/]: Examining file realms-1.3.5.jar for potential mods
+[01:48:53] [Server thread/DEBUG] [FML/]: The mod container realms-1.3.5.jar appears to be missing an mcmod.info file
+[01:48:53] [Server thread/DEBUG] [FML/]: Examining file commons-compress-1.8.1.jar for potential mods
+[01:48:53] [Server thread/DEBUG] [FML/]: The mod container commons-compress-1.8.1.jar appears to be missing an mcmod.info file
+[01:48:53] [Server thread/DEBUG] [FML/]: Examining file httpclient-4.3.3.jar for potential mods
+[01:48:53] [Server thread/DEBUG] [FML/]: The mod container httpclient-4.3.3.jar appears to be missing an mcmod.info file
+[01:48:53] [Server thread/DEBUG] [FML/]: Examining file commons-logging-1.1.3.jar for potential mods
+[01:48:53] [Server thread/DEBUG] [FML/]: The mod container commons-logging-1.1.3.jar appears to be missing an mcmod.info file
+[01:48:53] [Server thread/DEBUG] [FML/]: Examining file httpcore-4.3.2.jar for potential mods
+[01:48:53] [Server thread/DEBUG] [FML/]: The mod container httpcore-4.3.2.jar appears to be missing an mcmod.info file
+[01:48:53] [Server thread/DEBUG] [FML/]: Examining file vecmath-1.3.1.jar for potential mods
+[01:48:53] [Server thread/DEBUG] [FML/]: The mod container vecmath-1.3.1.jar appears to be missing an mcmod.info file
+[01:48:53] [Server thread/DEBUG] [FML/]: Examining file trove4j-3.0.3.jar for potential mods
+[01:48:53] [Server thread/DEBUG] [FML/]: The mod container trove4j-3.0.3.jar appears to be missing an mcmod.info file
+[01:48:53] [Server thread/DEBUG] [FML/]: Examining file icu4j-core-mojang-51.2.jar for potential mods
+[01:48:53] [Server thread/DEBUG] [FML/]: The mod container icu4j-core-mojang-51.2.jar appears to be missing an mcmod.info file
+[01:48:53] [Server thread/DEBUG] [FML/]: Examining file codecjorbis-20101023.jar for potential mods
+[01:48:53] [Server thread/DEBUG] [FML/]: The mod container codecjorbis-20101023.jar appears to be missing an mcmod.info file
+[01:48:53] [Server thread/DEBUG] [FML/]: Examining file codecwav-20101023.jar for potential mods
+[01:48:53] [Server thread/DEBUG] [FML/]: The mod container codecwav-20101023.jar appears to be missing an mcmod.info file
+[01:48:53] [Server thread/DEBUG] [FML/]: Examining file libraryjavasound-20101123.jar for potential mods
+[01:48:53] [Server thread/DEBUG] [FML/]: The mod container libraryjavasound-20101123.jar appears to be missing an mcmod.info file
+[01:48:53] [Server thread/DEBUG] [FML/]: Examining file librarylwjglopenal-20100824.jar for potential mods
+[01:48:53] [Server thread/DEBUG] [FML/]: The mod container librarylwjglopenal-20100824.jar appears to be missing an mcmod.info file
+[01:48:53] [Server thread/DEBUG] [FML/]: Examining file soundsystem-20120107.jar for potential mods
+[01:48:53] [Server thread/DEBUG] [FML/]: The mod container soundsystem-20120107.jar appears to be missing an mcmod.info file
+[01:48:53] [Server thread/DEBUG] [FML/]: Examining file netty-all-4.0.10.Final.jar for potential mods
+[01:48:53] [Server thread/DEBUG] [FML/]: The mod container netty-all-4.0.10.Final.jar appears to be missing an mcmod.info file
+[01:48:53] [Server thread/DEBUG] [FML/]: Examining file guava-17.0.jar for potential mods
+[01:48:53] [Server thread/DEBUG] [FML/]: The mod container guava-17.0.jar appears to be missing an mcmod.info file
+[01:48:53] [Server thread/DEBUG] [FML/]: Examining file commons-lang3-3.3.2.jar for potential mods
+[01:48:53] [Server thread/DEBUG] [FML/]: The mod container commons-lang3-3.3.2.jar appears to be missing an mcmod.info file
+[01:48:54] [Server thread/DEBUG] [FML/]: Examining file commons-io-2.4.jar for potential mods
+[01:48:54] [Server thread/DEBUG] [FML/]: The mod container commons-io-2.4.jar appears to be missing an mcmod.info file
+[01:48:54] [Server thread/DEBUG] [FML/]: Examining file commons-codec-1.9.jar for potential mods
+[01:48:54] [Server thread/DEBUG] [FML/]: The mod container commons-codec-1.9.jar appears to be missing an mcmod.info file
+[01:48:54] [Server thread/DEBUG] [FML/]: Examining file jinput-2.0.5.jar for potential mods
+[01:48:54] [Server thread/DEBUG] [FML/]: The mod container jinput-2.0.5.jar appears to be missing an mcmod.info file
+[01:48:54] [Server thread/DEBUG] [FML/]: Examining file jutils-1.0.0.jar for potential mods
+[01:48:54] [Server thread/DEBUG] [FML/]: The mod container jutils-1.0.0.jar appears to be missing an mcmod.info file
+[01:48:54] [Server thread/DEBUG] [FML/]: Examining file gson-2.2.4.jar for potential mods
+[01:48:54] [Server thread/DEBUG] [FML/]: The mod container gson-2.2.4.jar appears to be missing an mcmod.info file
+[01:48:54] [Server thread/DEBUG] [FML/]: Examining file authlib-1.5.16.jar for potential mods
+[01:48:54] [Server thread/DEBUG] [FML/]: The mod container authlib-1.5.16.jar appears to be missing an mcmod.info file
+[01:48:54] [Server thread/DEBUG] [FML/]: Examining file log4j-api-2.0-beta9.jar for potential mods
+[01:48:54] [Server thread/DEBUG] [FML/]: The mod container log4j-api-2.0-beta9.jar appears to be missing an mcmod.info file
+[01:48:54] [Server thread/DEBUG] [FML/]: Examining file log4j-core-2.0-beta9.jar for potential mods
+[01:48:54] [Server thread/DEBUG] [FML/]: The mod container log4j-core-2.0-beta9.jar appears to be missing an mcmod.info file
+[01:48:54] [Server thread/DEBUG] [FML/]: Examining file lwjgl-2.9.1.jar for potential mods
+[01:48:54] [Server thread/DEBUG] [FML/]: The mod container lwjgl-2.9.1.jar appears to be missing an mcmod.info file
+[01:48:54] [Server thread/DEBUG] [FML/]: Examining file lwjgl_util-2.9.1.jar for potential mods
+[01:48:54] [Server thread/DEBUG] [FML/]: The mod container lwjgl_util-2.9.1.jar appears to be missing an mcmod.info file
+[01:48:54] [Server thread/DEBUG] [FML/]: Examining file twitch-5.16.jar for potential mods
+[01:48:54] [Server thread/DEBUG] [FML/]: The mod container twitch-5.16.jar appears to be missing an mcmod.info file
+[01:48:54] [Server thread/DEBUG] [FML/]: Examining file scala-actors-2.11.0.jar for potential mods
+[01:48:54] [Server thread/DEBUG] [FML/]: The mod container scala-actors-2.11.0.jar appears to be missing an mcmod.info file
+[01:48:54] [Server thread/DEBUG] [FML/]: Examining file scala-xml_2.11-1.0.2.jar for potential mods
+[01:48:54] [Server thread/DEBUG] [FML/]: The mod container scala-xml_2.11-1.0.2.jar appears to be missing an mcmod.info file
+[01:48:54] [Server thread/DEBUG] [FML/]: Examining file scala-parser-combinators_2.11-1.0.1.jar for potential mods
+[01:48:54] [Server thread/DEBUG] [FML/]: The mod container scala-parser-combinators_2.11-1.0.1.jar appears to be missing an mcmod.info file
+[01:48:54] [Server thread/DEBUG] [FML/]: Examining file jinput-platform-2.0.5-natives-linux.jar for potential mods
+[01:48:54] [Server thread/DEBUG] [FML/]: The mod container jinput-platform-2.0.5-natives-linux.jar appears to be missing an mcmod.info file
+[01:48:54] [Server thread/DEBUG] [FML/]: Examining file jinput-platform-2.0.5-natives-windows.jar for potential mods
+[01:48:54] [Server thread/DEBUG] [FML/]: The mod container jinput-platform-2.0.5-natives-windows.jar appears to be missing an mcmod.info file
+[01:48:54] [Server thread/DEBUG] [FML/]: Examining file jinput-platform-2.0.5-natives-osx.jar for potential mods
+[01:48:54] [Server thread/DEBUG] [FML/]: The mod container jinput-platform-2.0.5-natives-osx.jar appears to be missing an mcmod.info file
+[01:48:54] [Server thread/DEBUG] [FML/]: Examining file twitch-platform-5.16-natives-windows-32.jar for potential mods
+[01:48:54] [Server thread/DEBUG] [FML/]: The mod container twitch-platform-5.16-natives-windows-32.jar appears to be missing an mcmod.info file
+[01:48:54] [Server thread/DEBUG] [FML/]: Examining file twitch-platform-5.16-natives-windows-64.jar for potential mods
+[01:48:54] [Server thread/DEBUG] [FML/]: The mod container twitch-platform-5.16-natives-windows-64.jar appears to be missing an mcmod.info file
+[01:48:54] [Server thread/DEBUG] [FML/]: Examining file twitch-platform-5.16-natives-osx.jar for potential mods
+[01:48:54] [Server thread/DEBUG] [FML/]: The mod container twitch-platform-5.16-natives-osx.jar appears to be missing an mcmod.info file
+[01:48:54] [Server thread/DEBUG] [FML/]: Examining file twitch-external-platform-4.5-natives-windows-32.jar for potential mods
+[01:48:54] [Server thread/DEBUG] [FML/]: The mod container twitch-external-platform-4.5-natives-windows-32.jar appears to be missing an mcmod.info file
+[01:48:54] [Server thread/DEBUG] [FML/]: Examining file twitch-external-platform-4.5-natives-windows-64.jar for potential mods
+[01:48:54] [Server thread/DEBUG] [FML/]: The mod container twitch-external-platform-4.5-natives-windows-64.jar appears to be missing an mcmod.info file
+[01:48:54] [Server thread/DEBUG] [FML/]: Examining file lwjgl-platform-2.9.1-natives-windows.jar for potential mods
+[01:48:54] [Server thread/DEBUG] [FML/]: The mod container lwjgl-platform-2.9.1-natives-windows.jar appears to be missing an mcmod.info file
+[01:48:54] [Server thread/DEBUG] [FML/]: Examining file lwjgl-platform-2.9.1-natives-linux.jar for potential mods
+[01:48:54] [Server thread/DEBUG] [FML/]: The mod container lwjgl-platform-2.9.1-natives-linux.jar appears to be missing an mcmod.info file
+[01:48:54] [Server thread/DEBUG] [FML/]: Examining file lwjgl-platform-2.9.1-natives-osx.jar for potential mods
+[01:48:54] [Server thread/DEBUG] [FML/]: The mod container lwjgl-platform-2.9.1-natives-osx.jar appears to be missing an mcmod.info file
+[01:48:54] [Server thread/DEBUG] [FML/]: Examining directory start for potential mods
+[01:48:54] [Server thread/DEBUG] [FML/]: No mcmod.info file found in directory start
+[01:48:54] [Server thread/TRACE] [FML/]: Recursing into package net
+[01:48:54] [Server thread/TRACE] [FML/]: Recursing into package net.minecraftforge
+[01:48:54] [Server thread/TRACE] [FML/]: Recursing into package net.minecraftforge.gradle
+[01:48:54] [Server thread/TRACE] [FML/]: Recursing into package net.minecraftforge.gradle.tweakers
+[01:48:54] [Server thread/INFO] [FML/]: Forge Mod Loader has identified 5 mods to load
+[01:48:54] [Server thread/TRACE] [FML/]: Received a system property request ''
+[01:48:54] [Server thread/TRACE] [FML/]: System property request managing the state of 0 mods
+[01:48:54] [Server thread/DEBUG] [FML/]: After merging, found state information for 0 mods
+[01:48:54] [Server thread/DEBUG] [FML/]: Found translations in forgeSrc-1.7.10-10.13.4.1448-1.7.10.jar [en_US, af_ZA, ar_SA, br_FR, ca_ES, cs_CZ, da_DK, de_DE, el_GR, en_US, es_ES, fa_IR, fi_FI, fr_FR, he_IL, hu_HU, it_IT, ja_JP, ko_KR, lt_LT, nb_NO, nl_NL, nn_NO, no_NO, pl_PL, pt_BR, pt_PT, ro_RO, ru_RU, sl_SI, sr_SP, sv_SE, tr_TR, uk_UA, vi_VN, zh_CN, zh_TW, en_US]
+[01:48:54] [Server thread/DEBUG] [FML/]: Found translations in forgeSrc-1.7.10-10.13.4.1448-1.7.10.jar [en_US, af_ZA, ar_SA, br_FR, ca_ES, cs_CZ, da_DK, de_DE, el_GR, en_US, es_ES, fa_IR, fi_FI, fr_FR, he_IL, hu_HU, it_IT, ja_JP, ko_KR, lt_LT, nb_NO, nl_NL, nn_NO, no_NO, pl_PL, pt_BR, pt_PT, ro_RO, ru_RU, sl_SI, sr_SP, sv_SE, tr_TR, uk_UA, vi_VN, zh_CN, zh_TW, en_US]
+[01:48:54] [Server thread/DEBUG] [Uptime/]: Enabling mod Uptime
+[01:48:54] [Server thread/DEBUG] [examplemod/]: Enabling mod examplemod
+[01:48:54] [Server thread/TRACE] [FML/]: Verifying mod requirements are satisfied
+[01:48:54] [Server thread/TRACE] [FML/]: All mod requirements are satisfied
+[01:48:54] [Server thread/TRACE] [FML/]: Sorting mods into an ordered list
+[01:48:54] [Server thread/TRACE] [FML/]: Mod sorting completed successfully
+[01:48:54] [Server thread/DEBUG] [FML/]: Mod sorting data
+[01:48:54] [Server thread/DEBUG] [FML/]: Uptime(Uptime:2): bin ()
+[01:48:54] [Server thread/DEBUG] [FML/]: examplemod(Example Mod:1.0): bin ()
+[01:48:54] [Server thread/TRACE] [mcp/mcp]: Sending event FMLConstructionEvent to mod mcp
+[01:48:54] [Server thread/TRACE] [mcp/mcp]: Sent event FMLConstructionEvent to mod mcp
+[01:48:54] [Server thread/TRACE] [FML/FML]: Sending event FMLConstructionEvent to mod FML
+[01:48:54] [Server thread/TRACE] [FML/FML]: Mod FML is using network checker : Invoking method checkModLists
+[01:48:54] [Server thread/TRACE] [FML/FML]: Testing mod FML to verify it accepts its own version in a remote connection
+[01:48:54] [Server thread/TRACE] [FML/FML]: The mod FML accepts its own version (7.10.99.99)
+[01:48:54] [Server thread/INFO] [FML/FML]: Attempting connection with missing mods [mcp, FML, Forge, Uptime, examplemod] at CLIENT
+[01:48:54] [Server thread/INFO] [FML/FML]: Attempting connection with missing mods [mcp, FML, Forge, Uptime, examplemod] at SERVER
+[01:48:54] [Server thread/TRACE] [FML/FML]: Sent event FMLConstructionEvent to mod FML
+[01:48:54] [Server thread/TRACE] [Forge/Forge]: Sending event FMLConstructionEvent to mod Forge
+[01:48:54] [Server thread/TRACE] [FML/Forge]: Mod Forge is using network checker : No network checking performed
+[01:48:54] [Server thread/TRACE] [FML/Forge]: Testing mod Forge to verify it accepts its own version in a remote connection
+[01:48:54] [Server thread/TRACE] [FML/Forge]: The mod Forge accepts its own version (10.13.4.1448)
+[01:48:54] [Server thread/TRACE] [Forge/Forge]: Sent event FMLConstructionEvent to mod Forge
+[01:48:54] [Server thread/TRACE] [Uptime/Uptime]: Sending event FMLConstructionEvent to mod Uptime
+[01:48:54] [Server thread/TRACE] [FML/Uptime]: Mod Uptime is using network checker : No network checking performed
+[01:48:54] [Server thread/TRACE] [FML/Uptime]: Testing mod Uptime to verify it accepts its own version in a remote connection
+[01:48:54] [Server thread/TRACE] [FML/Uptime]: The mod Uptime accepts its own version (2)
+[01:48:54] [Server thread/DEBUG] [FML/Uptime]: Attempting to inject @SidedProxy classes into Uptime
+[01:48:54] [Server thread/TRACE] [Uptime/Uptime]: Sent event FMLConstructionEvent to mod Uptime
+[01:48:54] [Server thread/TRACE] [examplemod/examplemod]: Sending event FMLConstructionEvent to mod examplemod
+[01:48:54] [Server thread/TRACE] [FML/examplemod]: Mod examplemod is using network checker : Accepting version 1.0
+[01:48:54] [Server thread/TRACE] [FML/examplemod]: Testing mod examplemod to verify it accepts its own version in a remote connection
+[01:48:54] [Server thread/TRACE] [FML/examplemod]: The mod examplemod accepts its own version (1.0)
+[01:48:54] [Server thread/DEBUG] [FML/examplemod]: Attempting to inject @SidedProxy classes into examplemod
+[01:48:54] [Server thread/TRACE] [examplemod/examplemod]: Sent event FMLConstructionEvent to mod examplemod
+[01:48:54] [Server thread/DEBUG] [FML/]: Mod signature data
+[01:48:54] [Server thread/DEBUG] [FML/]: Valid Signatures:
+[01:48:54] [Server thread/DEBUG] [FML/]: Missing Signatures:
+[01:48:54] [Server thread/DEBUG] [FML/]: mcp (Minecraft Coder Pack 9.05) minecraft.jar
+[01:48:54] [Server thread/DEBUG] [FML/]: FML (Forge Mod Loader 7.10.99.99) forgeSrc-1.7.10-10.13.4.1448-1.7.10.jar
+[01:48:54] [Server thread/DEBUG] [FML/]: Forge (Minecraft Forge 10.13.4.1448) forgeSrc-1.7.10-10.13.4.1448-1.7.10.jar
+[01:48:54] [Server thread/DEBUG] [FML/]: Uptime (Uptime 2) bin
+[01:48:54] [Server thread/DEBUG] [FML/]: examplemod (Example Mod 1.0) bin
+[01:48:54] [Server thread/INFO] [FML/]: Processing ObjectHolder annotations
+[01:48:54] [Server thread/INFO] [FML/]: Found 341 ObjectHolder annotations
+[01:48:54] [Server thread/INFO] [FML/]: Identifying ItemStackHolder annotations
+[01:48:54] [Server thread/INFO] [FML/]: Found 0 ItemStackHolder annotations
+[01:48:54] [Server thread/TRACE] [mcp/mcp]: Sending event FMLPreInitializationEvent to mod mcp
+[01:48:54] [Server thread/TRACE] [mcp/mcp]: Sent event FMLPreInitializationEvent to mod mcp
+[01:48:54] [Server thread/TRACE] [FML/FML]: Sending event FMLPreInitializationEvent to mod FML
+[01:48:54] [Server thread/TRACE] [FML/FML]: Sent event FMLPreInitializationEvent to mod FML
+[01:48:54] [Server thread/TRACE] [Forge/Forge]: Sending event FMLPreInitializationEvent to mod Forge
+[01:48:54] [Server thread/INFO] [FML/Forge]: Configured a dormant chunk cache size of 0
+[01:48:54] [Server thread/TRACE] [Forge/Forge]: Sent event FMLPreInitializationEvent to mod Forge
+[01:48:54] [Server thread/TRACE] [Uptime/Uptime]: Sending event FMLPreInitializationEvent to mod Uptime
+[01:48:54] [Server thread/TRACE] [Uptime/Uptime]: Sent event FMLPreInitializationEvent to mod Uptime
+[01:48:54] [Server thread/TRACE] [examplemod/examplemod]: Sending event FMLPreInitializationEvent to mod examplemod
+[01:48:54] [Server thread/TRACE] [examplemod/examplemod]: Sent event FMLPreInitializationEvent to mod examplemod
+[01:48:54] [Server thread/INFO] [FML/]: Applying holder lookups
+[01:48:54] [Server thread/INFO] [FML/]: Holder lookups applied
+[01:48:54] [Server thread/INFO] [FML/]: Injecting itemstacks
+[01:48:54] [Server thread/INFO] [FML/]: Itemstack injection complete
+[01:48:54] [Server thread/TRACE] [mcp/mcp]: Sending event FMLInitializationEvent to mod mcp
+[01:48:54] [Server thread/TRACE] [mcp/mcp]: Sent event FMLInitializationEvent to mod mcp
+[01:48:54] [Server thread/TRACE] [FML/FML]: Sending event FMLInitializationEvent to mod FML
+[01:48:54] [Server thread/TRACE] [FML/FML]: Sent event FMLInitializationEvent to mod FML
+[01:48:54] [Server thread/TRACE] [Forge/Forge]: Sending event FMLInitializationEvent to mod Forge
+[01:48:54] [Server thread/TRACE] [Forge/Forge]: Sent event FMLInitializationEvent to mod Forge
+[01:48:54] [Server thread/TRACE] [Uptime/Uptime]: Sending event FMLInitializationEvent to mod Uptime
+[01:48:54] [Server thread/TRACE] [Uptime/Uptime]: Sent event FMLInitializationEvent to mod Uptime
+[01:48:54] [Server thread/TRACE] [examplemod/examplemod]: Sending event FMLInitializationEvent to mod examplemod
+[01:48:54] [Server thread/INFO] [STDOUT/examplemod]: [com.example.examplemod.ExampleMod:init:18]: DIRT BLOCK >> tile.dirt
+[01:48:54] [Server thread/TRACE] [examplemod/examplemod]: Sent event FMLInitializationEvent to mod examplemod
+[01:48:54] [Server thread/TRACE] [FML/]: Attempting to deliver 0 IMC messages to mod mcp
+[01:48:54] [Server thread/TRACE] [mcp/mcp]: Sending event IMCEvent to mod mcp
+[01:48:54] [Server thread/TRACE] [mcp/mcp]: Sent event IMCEvent to mod mcp
+[01:48:54] [Server thread/TRACE] [FML/]: Attempting to deliver 0 IMC messages to mod FML
+[01:48:54] [Server thread/TRACE] [FML/FML]: Sending event IMCEvent to mod FML
+[01:48:54] [Server thread/TRACE] [FML/FML]: Sent event IMCEvent to mod FML
+[01:48:54] [Server thread/TRACE] [FML/]: Attempting to deliver 0 IMC messages to mod Forge
+[01:48:54] [Server thread/TRACE] [Forge/Forge]: Sending event IMCEvent to mod Forge
+[01:48:54] [Server thread/TRACE] [Forge/Forge]: Sent event IMCEvent to mod Forge
+[01:48:54] [Server thread/TRACE] [FML/]: Attempting to deliver 0 IMC messages to mod Uptime
+[01:48:54] [Server thread/TRACE] [Uptime/Uptime]: Sending event IMCEvent to mod Uptime
+[01:48:54] [Server thread/TRACE] [Uptime/Uptime]: Sent event IMCEvent to mod Uptime
+[01:48:54] [Server thread/TRACE] [FML/]: Attempting to deliver 0 IMC messages to mod examplemod
+[01:48:54] [Server thread/TRACE] [examplemod/examplemod]: Sending event IMCEvent to mod examplemod
+[01:48:54] [Server thread/TRACE] [examplemod/examplemod]: Sent event IMCEvent to mod examplemod
+[01:48:54] [Server thread/INFO] [FML/]: Injecting itemstacks
+[01:48:54] [Server thread/INFO] [FML/]: Itemstack injection complete
+[01:48:54] [Server thread/TRACE] [mcp/mcp]: Sending event FMLPostInitializationEvent to mod mcp
+[01:48:54] [Server thread/TRACE] [mcp/mcp]: Sent event FMLPostInitializationEvent to mod mcp
+[01:48:54] [Server thread/TRACE] [FML/FML]: Sending event FMLPostInitializationEvent to mod FML
+[01:48:54] [Server thread/TRACE] [FML/FML]: Sent event FMLPostInitializationEvent to mod FML
+[01:48:54] [Server thread/TRACE] [Forge/Forge]: Sending event FMLPostInitializationEvent to mod Forge
+[01:48:54] [Server thread/TRACE] [Forge/Forge]: Sent event FMLPostInitializationEvent to mod Forge
+[01:48:54] [Server thread/TRACE] [Uptime/Uptime]: Sending event FMLPostInitializationEvent to mod Uptime
+[01:48:54] [Server thread/TRACE] [Uptime/Uptime]: Sent event FMLPostInitializationEvent to mod Uptime
+[01:48:54] [Server thread/TRACE] [examplemod/examplemod]: Sending event FMLPostInitializationEvent to mod examplemod
+[01:48:54] [Server thread/TRACE] [examplemod/examplemod]: Sent event FMLPostInitializationEvent to mod examplemod
+[01:48:54] [Server thread/TRACE] [mcp/mcp]: Sending event FMLLoadCompleteEvent to mod mcp
+[01:48:54] [Server thread/TRACE] [mcp/mcp]: Sent event FMLLoadCompleteEvent to mod mcp
+[01:48:54] [Server thread/TRACE] [FML/FML]: Sending event FMLLoadCompleteEvent to mod FML
+[01:48:54] [Server thread/TRACE] [FML/FML]: Sent event FMLLoadCompleteEvent to mod FML
+[01:48:54] [Server thread/TRACE] [Forge/Forge]: Sending event FMLLoadCompleteEvent to mod Forge
+[01:48:54] [Server thread/DEBUG] [FML/Forge]: Forge RecipeSorter Baking:
+[01:48:54] [Server thread/DEBUG] [FML/Forge]: 11: RecipeEntry("Before", UNKNOWN, )
+[01:48:54] [Server thread/DEBUG] [FML/Forge]: 10: RecipeEntry("minecraft:shaped", SHAPED, net.minecraft.item.crafting.ShapedRecipes) Before: minecraft:shapeless
+[01:48:54] [Server thread/DEBUG] [FML/Forge]: 9: RecipeEntry("forge:shapedore", SHAPED, net.minecraftforge.oredict.ShapedOreRecipe) Before: minecraft:shapeless After: minecraft:shaped
+[01:48:54] [Server thread/DEBUG] [FML/Forge]: 8: RecipeEntry("minecraft:mapextending", SHAPED, net.minecraft.item.crafting.RecipesMapExtending) Before: minecraft:shapeless After: minecraft:shaped
+[01:48:54] [Server thread/DEBUG] [FML/Forge]: 7: RecipeEntry("minecraft:shapeless", SHAPELESS, net.minecraft.item.crafting.ShapelessRecipes) After: minecraft:shaped
+[01:48:54] [Server thread/DEBUG] [FML/Forge]: 6: RecipeEntry("forge:shapelessore", SHAPELESS, net.minecraftforge.oredict.ShapelessOreRecipe) After: minecraft:shapeless
+[01:48:54] [Server thread/DEBUG] [FML/Forge]: 5: RecipeEntry("minecraft:armordyes", SHAPELESS, net.minecraft.item.crafting.RecipesArmorDyes) After: minecraft:shapeless
+[01:48:54] [Server thread/DEBUG] [FML/Forge]: 4: RecipeEntry("minecraft:fireworks", SHAPELESS, net.minecraft.item.crafting.RecipeFireworks) After: minecraft:shapeless
+[01:48:54] [Server thread/DEBUG] [FML/Forge]: 3: RecipeEntry("minecraft:bookcloning", SHAPELESS, net.minecraft.item.crafting.RecipeBookCloning) After: minecraft:shapeless
+[01:48:54] [Server thread/DEBUG] [FML/Forge]: 2: RecipeEntry("minecraft:mapcloning", SHAPELESS, net.minecraft.item.crafting.RecipesMapCloning) After: minecraft:shapeless
+[01:48:54] [Server thread/DEBUG] [FML/Forge]: 1: RecipeEntry("After", UNKNOWN, )
+[01:48:54] [Server thread/DEBUG] [FML/Forge]: Sorting recipies
+[01:48:54] [Server thread/TRACE] [Forge/Forge]: Sent event FMLLoadCompleteEvent to mod Forge
+[01:48:54] [Server thread/TRACE] [Uptime/Uptime]: Sending event FMLLoadCompleteEvent to mod Uptime
+[01:48:54] [Server thread/TRACE] [Uptime/Uptime]: Sent event FMLLoadCompleteEvent to mod Uptime
+[01:48:54] [Server thread/TRACE] [examplemod/examplemod]: Sending event FMLLoadCompleteEvent to mod examplemod
+[01:48:54] [Server thread/TRACE] [examplemod/examplemod]: Sent event FMLLoadCompleteEvent to mod examplemod
+[01:48:54] [Server thread/DEBUG] [FML/]: Freezing block and item id maps
+[01:48:54] [Server thread/DEBUG] [FML/]: Registry consistency check successful
+[01:48:54] [Server thread/DEBUG] [FML/]: Registry consistency check successful
+[01:48:54] [Server thread/INFO] [FML/]: Forge Mod Loader has successfully loaded 5 mods
+[01:48:54] [Server thread/TRACE] [mcp/mcp]: Sending event FMLServerAboutToStartEvent to mod mcp
+[01:48:54] [Server thread/TRACE] [mcp/mcp]: Sent event FMLServerAboutToStartEvent to mod mcp
+[01:48:54] [Server thread/TRACE] [FML/FML]: Sending event FMLServerAboutToStartEvent to mod FML
+[01:48:54] [Server thread/TRACE] [FML/FML]: Sent event FMLServerAboutToStartEvent to mod FML
+[01:48:54] [Server thread/TRACE] [Forge/Forge]: Sending event FMLServerAboutToStartEvent to mod Forge
+[01:48:54] [Server thread/TRACE] [Forge/Forge]: Sent event FMLServerAboutToStartEvent to mod Forge
+[01:48:54] [Server thread/TRACE] [Uptime/Uptime]: Sending event FMLServerAboutToStartEvent to mod Uptime
+[01:48:54] [Server thread/TRACE] [Uptime/Uptime]: Sent event FMLServerAboutToStartEvent to mod Uptime
+[01:48:54] [Server thread/TRACE] [examplemod/examplemod]: Sending event FMLServerAboutToStartEvent to mod examplemod
+[01:48:54] [Server thread/TRACE] [examplemod/examplemod]: Sent event FMLServerAboutToStartEvent to mod examplemod
+[01:48:55] [Server thread/INFO] [FML/]: Loading dimension 0 (world) (net.minecraft.server.dedicated.DedicatedServer@7c5bf89c)
+[01:48:55] [Server thread/INFO] [FML/]: Loading dimension 1 (world) (net.minecraft.server.dedicated.DedicatedServer@7c5bf89c)
+[01:48:55] [Server thread/INFO] [FML/]: Loading dimension -1 (world) (net.minecraft.server.dedicated.DedicatedServer@7c5bf89c)
+[01:49:02] [Server thread/TRACE] [mcp/mcp]: Sending event FMLServerStartingEvent to mod mcp
+[01:49:02] [Server thread/TRACE] [mcp/mcp]: Sent event FMLServerStartingEvent to mod mcp
+[01:49:02] [Server thread/TRACE] [FML/FML]: Sending event FMLServerStartingEvent to mod FML
+[01:49:02] [Server thread/TRACE] [FML/FML]: Sent event FMLServerStartingEvent to mod FML
+[01:49:02] [Server thread/TRACE] [Forge/Forge]: Sending event FMLServerStartingEvent to mod Forge
+[01:49:02] [Server thread/TRACE] [Forge/Forge]: Sent event FMLServerStartingEvent to mod Forge
+[01:49:02] [Server thread/TRACE] [Uptime/Uptime]: Sending event FMLServerStartingEvent to mod Uptime
+[01:49:02] [Server thread/INFO] [FML/Uptime]: Uptime: No uptime or backup found, creating a new one.
+[01:49:02] [Server thread/INFO] [FML/Uptime]: Uptime: No uptime file, estimating uptime from worlds total time.
+[01:49:02] [Server thread/TRACE] [FML/Uptime]: Uptime: Uptime is currently saveing its data.
+[01:49:02] [Server thread/TRACE] [FML/Uptime]: Uptime: Uptime has finished saving it's data.
+[01:49:02] [Server thread/TRACE] [Uptime/Uptime]: Sent event FMLServerStartingEvent to mod Uptime
+[01:49:02] [Server thread/TRACE] [examplemod/examplemod]: Sending event FMLServerStartingEvent to mod examplemod
+[01:49:02] [Server thread/TRACE] [examplemod/examplemod]: Sent event FMLServerStartingEvent to mod examplemod
+[01:49:02] [Server thread/TRACE] [mcp/mcp]: Sending event FMLServerStartedEvent to mod mcp
+[01:49:02] [Server thread/TRACE] [mcp/mcp]: Sent event FMLServerStartedEvent to mod mcp
+[01:49:02] [Server thread/TRACE] [FML/FML]: Sending event FMLServerStartedEvent to mod FML
+[01:49:02] [Server thread/TRACE] [FML/FML]: Sent event FMLServerStartedEvent to mod FML
+[01:49:02] [Server thread/TRACE] [Forge/Forge]: Sending event FMLServerStartedEvent to mod Forge
+[01:49:02] [Server thread/TRACE] [Forge/Forge]: Sent event FMLServerStartedEvent to mod Forge
+[01:49:02] [Server thread/TRACE] [Uptime/Uptime]: Sending event FMLServerStartedEvent to mod Uptime
+[01:49:02] [Server thread/TRACE] [Uptime/Uptime]: Sent event FMLServerStartedEvent to mod Uptime
+[01:49:02] [Server thread/TRACE] [examplemod/examplemod]: Sending event FMLServerStartedEvent to mod examplemod
+[01:49:02] [Server thread/TRACE] [examplemod/examplemod]: Sent event FMLServerStartedEvent to mod examplemod
+[01:49:39] [Netty IO #2/TRACE] [FML/]: $ClientHello->FMLHandshakeServerState$2:HELLO
+[01:49:39] [Netty IO #2/INFO] [FML/]: Client protocol version 2
+[01:49:39] [Netty IO #2/TRACE] [FML/]: $ModList:5 mods->FMLHandshakeServerState$2:HELLO
+[01:49:39] [Netty IO #2/INFO] [FML/]: Client attempting to join with 5 mods : FML@7.10.99.99,Uptime@2,Forge@10.13.4.1448,mcp@9.05,examplemod@1.0
+[01:49:39] [Netty IO #2/INFO] [FML/]: Attempting connection with missing mods [] at CLIENT
+[01:49:39] [Netty IO #2/TRACE] [FML/]: $HandshakeAck:{2}->FMLHandshakeServerState$3:WAITINGCACK
+[01:49:39] [Netty IO #2/TRACE] [FML/]: $HandshakeAck:{3}->FMLHandshakeServerState$4:COMPLETE
+[01:49:39] [Netty IO #2/TRACE] [FML/]: $HandshakeAck:{4}->FMLHandshakeServerState$5:DONE
+[01:49:39] [Netty IO #2/TRACE] [FML/]: $HandshakeAck:{5}->FMLHandshakeServerState$5:DONE
+[01:49:39] [Server thread/INFO] [FML/]: [Server thread] Server side modded connection established
+[01:49:47] [Server thread/DEBUG] [FML/]: Gathering id map for writing to world save world
+[01:50:02] [AWT-EventQueue-0/TRACE] [FML/]: Uptime: Uptime is currently saveing its data.
+[01:50:02] [AWT-EventQueue-0/TRACE] [FML/]: Uptime: Uptime has finished saving it's data.
+[01:50:21] [Netty IO #4/TRACE] [FML/]: $ClientHello->FMLHandshakeServerState$2:HELLO
+[01:50:21] [Netty IO #4/INFO] [FML/]: Client protocol version 2
+[01:50:21] [Netty IO #4/TRACE] [FML/]: $ModList:4 mods->FMLHandshakeServerState$2:HELLO
+[01:50:21] [Netty IO #4/INFO] [FML/]: Client attempting to join with 4 mods : FML@7.10.99.99,Forge@10.13.4.1448,mcp@9.05,examplemod@1.0
+[01:50:21] [Netty IO #4/INFO] [FML/]: Attempting connection with missing mods [Uptime] at CLIENT
+[01:50:21] [Netty IO #4/TRACE] [FML/]: $HandshakeAck:{2}->FMLHandshakeServerState$3:WAITINGCACK
+[01:50:21] [Netty IO #4/TRACE] [FML/]: $HandshakeAck:{3}->FMLHandshakeServerState$4:COMPLETE
+[01:50:21] [Netty IO #4/TRACE] [FML/]: $HandshakeAck:{4}->FMLHandshakeServerState$5:DONE
+[01:50:21] [Netty IO #4/TRACE] [FML/]: $HandshakeAck:{5}->FMLHandshakeServerState$5:DONE
+[01:50:21] [Server thread/INFO] [FML/]: [Server thread] Server side modded connection established
+[01:50:32] [Server thread/DEBUG] [FML/]: Gathering id map for writing to world save world
+[01:51:02] [AWT-EventQueue-0/TRACE] [FML/]: Uptime: Uptime is currently saveing its data.
+[01:51:02] [AWT-EventQueue-0/TRACE] [FML/]: Uptime: Uptime has finished saving it's data.
+[01:51:17] [Server thread/DEBUG] [FML/]: Gathering id map for writing to world save world
+[01:52:02] [AWT-EventQueue-0/TRACE] [FML/]: Uptime: Uptime is currently saveing its data.
+[01:52:02] [AWT-EventQueue-0/TRACE] [FML/]: Uptime: Uptime has finished saving it's data.
+[01:52:02] [Server thread/DEBUG] [FML/]: Gathering id map for writing to world save world
+[01:52:22] [Server thread/TRACE] [mcp/mcp]: Sending event FMLServerStoppingEvent to mod mcp
+[01:52:22] [Server thread/TRACE] [mcp/mcp]: Sent event FMLServerStoppingEvent to mod mcp
+[01:52:22] [Server thread/TRACE] [FML/FML]: Sending event FMLServerStoppingEvent to mod FML
+[01:52:22] [Server thread/TRACE] [FML/FML]: Sent event FMLServerStoppingEvent to mod FML
+[01:52:22] [Server thread/TRACE] [Forge/Forge]: Sending event FMLServerStoppingEvent to mod Forge
+[01:52:22] [Server thread/TRACE] [Forge/Forge]: Sent event FMLServerStoppingEvent to mod Forge
+[01:52:22] [Server thread/TRACE] [Uptime/Uptime]: Sending event FMLServerStoppingEvent to mod Uptime
+[01:52:22] [Server thread/TRACE] [FML/Uptime]: Uptime: Uptime is currently saveing its data.
+[01:52:22] [Server thread/TRACE] [FML/Uptime]: Uptime: Uptime has finished saving it's data.
+[01:52:22] [Server thread/TRACE] [Uptime/Uptime]: Sent event FMLServerStoppingEvent to mod Uptime
+[01:52:22] [Server thread/TRACE] [examplemod/examplemod]: Sending event FMLServerStoppingEvent to mod examplemod
+[01:52:22] [Server thread/TRACE] [examplemod/examplemod]: Sent event FMLServerStoppingEvent to mod examplemod
+[01:52:22] [Server thread/DEBUG] [FML/]: Gathering id map for writing to world save world
+[01:52:22] [Server thread/INFO] [FML/]: Unloading dimension 0
+[01:52:22] [Server thread/INFO] [FML/]: Unloading dimension -1
+[01:52:22] [Server thread/INFO] [FML/]: Unloading dimension 1
+[01:52:22] [Server thread/DEBUG] [FML/]: Reverting to frozen data state.
+[01:52:22] [Server thread/INFO] [FML/]: Applying holder lookups
+[01:52:22] [Server thread/INFO] [FML/]: Holder lookups applied
+[01:52:22] [Server thread/TRACE] [mcp/mcp]: Sending event FMLServerStoppedEvent to mod mcp
+[01:52:22] [Server thread/TRACE] [mcp/mcp]: Sent event FMLServerStoppedEvent to mod mcp
+[01:52:22] [Server thread/TRACE] [FML/FML]: Sending event FMLServerStoppedEvent to mod FML
+[01:52:22] [Server thread/TRACE] [FML/FML]: Sent event FMLServerStoppedEvent to mod FML
+[01:52:22] [Server thread/TRACE] [Forge/Forge]: Sending event FMLServerStoppedEvent to mod Forge
+[01:52:22] [Server thread/TRACE] [Forge/Forge]: Sent event FMLServerStoppedEvent to mod Forge
+[01:52:22] [Server thread/TRACE] [Uptime/Uptime]: Sending event FMLServerStoppedEvent to mod Uptime
+[01:52:22] [Server thread/TRACE] [Uptime/Uptime]: Sent event FMLServerStoppedEvent to mod Uptime
+[01:52:22] [Server thread/TRACE] [examplemod/examplemod]: Sending event FMLServerStoppedEvent to mod examplemod
+[01:52:22] [Server thread/TRACE] [examplemod/examplemod]: Sent event FMLServerStoppedEvent to mod examplemod
diff --git a/logs/fml-server-2.log b/logs/fml-server-2.log
new file mode 100644
index 0000000000..d17a58293a
--- /dev/null
+++ b/logs/fml-server-2.log
@@ -0,0 +1,489 @@
+[02:05:07] [main/DEBUG] [FML/]: Injecting tracing printstreams for STDOUT/STDERR.
+[02:05:07] [main/INFO] [FML/]: Forge Mod Loader version 7.99.16.1448 for Minecraft 1.7.10 loading
+[02:05:07] [main/INFO] [FML/]: Java is Java HotSpot(TM) 64-Bit Server VM, version 1.8.0_60, running on Windows 7:amd64:6.1, installed at C:\Program Files\Java\jre1.8.0_60
+[02:05:07] [main/DEBUG] [FML/]: Java classpath at launch is C:\eclipse\workspace\upTime\bin;C:\eclipse\Forge\bin;C:\Users\Jordan\.gradle\caches\minecraft\net\minecraftforge\forge\1.7.10-10.13.4.1448-1.7.10\forgeSrc-1.7.10-10.13.4.1448-1.7.10.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\net.minecraft\launchwrapper\1.11\9c0592c6e1e9ea296a70948081bd4cc84dda1289\launchwrapper-1.11.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.google.code.findbugs\jsr305\1.3.9\40719ea6961c0cb6afaeb6a921eaa1f6afd4cfdf\jsr305-1.3.9.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.ow2.asm\asm-debug-all\5.0.3\f9e364ae2a66ce2a543012a4668856e84e5dab74\asm-debug-all-5.0.3.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.typesafe.akka\akka-actor_2.11\2.3.3\ed62e9fc709ca0f2ff1a3220daa8b70a2870078e\akka-actor_2.11-2.3.3.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.typesafe\config\1.2.1\f771f71fdae3df231bcd54d5ca2d57f0bf93f467\config-1.2.1.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang\scala-actors-migration_2.11\1.1.0\dfa8bc42b181d5b9f1a5dd147f8ae308b893eb6f\scala-actors-migration_2.11-1.1.0.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang\scala-compiler\2.11.1\56ea2e6c025e0821f28d73ca271218b8dd04926a\scala-compiler-2.11.1.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang.plugins\scala-continuations-library_2.11\1.0.2\e517c53a7e9acd6b1668c5a35eccbaa3bab9aac\scala-continuations-library_2.11-1.0.2.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang.plugins\scala-continuations-plugin_2.11.1\1.0.2\f361a3283452c57fa30c1ee69448995de23c60f7\scala-continuations-plugin_2.11.1-1.0.2.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang\scala-library\2.11.1\e11da23da3eabab9f4777b9220e60d44c1aab6a\scala-library-2.11.1.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang\scala-parser-combinators_2.11\1.0.1\f05d7345bf5a58924f2837c6c1f4d73a938e1ff0\scala-parser-combinators_2.11-1.0.1.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang\scala-reflect\2.11.1\6580347e61cc7f8e802941e7fde40fa83b8badeb\scala-reflect-2.11.1.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang\scala-swing_2.11\1.0.1\b1cdd92bd47b1e1837139c1c53020e86bb9112ae\scala-swing_2.11-1.0.1.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang\scala-xml_2.11\1.0.2\7a80ec00aec122fba7cd4e0d4cdd87ff7e4cb6d0\scala-xml_2.11-1.0.2.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\net.sf.jopt-simple\jopt-simple\4.5\6065cc95c661255349c1d0756657be17c29a4fd3\jopt-simple-4.5.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\lzma\lzma\0.0.1\521616dc7487b42bef0e803bd2fa3faf668101d7\lzma-0.0.1.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.mojang\realms\1.3.5\807ae355ee63583becd7ea60e76aab1532bb42e\realms-1.3.5.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.apache.commons\commons-compress\1.8.1\a698750c16740fd5b3871425f4cb3bbaa87f529d\commons-compress-1.8.1.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.apache.httpcomponents\httpclient\4.3.3\18f4247ff4572a074444572cee34647c43e7c9c7\httpclient-4.3.3.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\commons-logging\commons-logging\1.1.3\f6f66e966c70a83ffbdb6f17a0919eaf7c8aca7f\commons-logging-1.1.3.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.apache.httpcomponents\httpcore\4.3.2\31fbbff1ddbf98f3aa7377c94d33b0447c646b6e\httpcore-4.3.2.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\java3d\vecmath\1.3.1\a0ae4f51da409fa0c20fa0ca59e6bbc9413ae71d\vecmath-1.3.1.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\net.sf.trove4j\trove4j\3.0.3\42ccaf4761f0dfdfa805c9e340d99a755907e2dd\trove4j-3.0.3.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.ibm.icu\icu4j-core-mojang\51.2\63d216a9311cca6be337c1e458e587f99d382b84\icu4j-core-mojang-51.2.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.paulscode\codecjorbis\20101023\c73b5636faf089d9f00e8732a829577de25237ee\codecjorbis-20101023.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.paulscode\codecwav\20101023\12f031cfe88fef5c1dd36c563c0a3a69bd7261da\codecwav-20101023.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.paulscode\libraryjavasound\20101123\5c5e304366f75f9eaa2e8cca546a1fb6109348b3\libraryjavasound-20101123.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.paulscode\librarylwjglopenal\20100824\73e80d0794c39665aec3f62eee88ca91676674ef\librarylwjglopenal-20100824.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.paulscode\soundsystem\20120107\419c05fe9be71f792b2d76cfc9b67f1ed0fec7f6\soundsystem-20120107.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\io.netty\netty-all\4.0.10.Final\9e50bd52ffe257a0e2cd8d971688d6ce7d174325\netty-all-4.0.10.Final.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.google.guava\guava\17.0\9c6ef172e8de35fd8d4d8783e4821e57cdef7445\guava-17.0.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.apache.commons\commons-lang3\3.3.2\90a3822c38ec8c996e84c16a3477ef632cbc87a3\commons-lang3-3.3.2.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\commons-io\commons-io\2.4\b1b6ea3b7e4aa4f492509a4952029cd8e48019ad\commons-io-2.4.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\commons-codec\commons-codec\1.9\9ce04e34240f674bc72680f8b843b1457383161a\commons-codec-1.9.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\net.java.jinput\jinput\2.0.5\39c7796b469a600f72380316f6b1f11db6c2c7c4\jinput-2.0.5.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\net.java.jutils\jutils\1.0.0\e12fe1fda814bd348c1579329c86943d2cd3c6a6\jutils-1.0.0.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.google.code.gson\gson\2.2.4\a60a5e993c98c864010053cb901b7eab25306568\gson-2.2.4.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.mojang\authlib\1.5.16\ef1582b11fd0943d069cdcb72e99008ac209a283\authlib-1.5.16.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.apache.logging.log4j\log4j-api\2.0-beta9\1dd66e68cccd907880229f9e2de1314bd13ff785\log4j-api-2.0-beta9.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.apache.logging.log4j\log4j-core\2.0-beta9\678861ba1b2e1fccb594bb0ca03114bb05da9695\log4j-core-2.0-beta9.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.lwjgl.lwjgl\lwjgl\2.9.1\f58c5aabcef0e41718a564be9f8e412fff8db847\lwjgl-2.9.1.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.lwjgl.lwjgl\lwjgl_util\2.9.1\290d7ba8a1bd9566f5ddf16ad06f09af5ec9b20e\lwjgl_util-2.9.1.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\tv.twitch\twitch\5.16\1f55f009c61637c10c0acfb8b5ffc600f30044b4\twitch-5.16.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang\scala-actors\2.11.0\8ccfb6541de179bb1c4d45cf414acee069b7f78b\scala-actors-2.11.0.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang.modules\scala-xml_2.11\1.0.2\820fbca7e524b530fdadc594c39d49a21ea0337e\scala-xml_2.11-1.0.2.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang.modules\scala-parser-combinators_2.11\1.0.1\f05d7345bf5a58924f2837c6c1f4d73a938e1ff0\scala-parser-combinators_2.11-1.0.1.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\net.java.jinput\jinput-platform\2.0.5\7ff832a6eb9ab6a767f1ade2b548092d0fa64795\jinput-platform-2.0.5-natives-linux.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\net.java.jinput\jinput-platform\2.0.5\385ee093e01f587f30ee1c8a2ee7d408fd732e16\jinput-platform-2.0.5-natives-windows.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\net.java.jinput\jinput-platform\2.0.5\53f9c919f34d2ca9de8c51fc4e1e8282029a9232\jinput-platform-2.0.5-natives-osx.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\tv.twitch\twitch-platform\5.16\7c6affe439099806a4f552da14c42f9d643d8b23\twitch-platform-5.16-natives-windows-32.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\tv.twitch\twitch-platform\5.16\39d0c3d363735b4785598e0e7fbf8297c706a9f9\twitch-platform-5.16-natives-windows-64.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\tv.twitch\twitch-platform\5.16\62503ee712766cf77f97252e5902786fd834b8c5\twitch-platform-5.16-natives-osx.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\tv.twitch\twitch-external-platform\4.5\18215140f010c05b9f86ef6f0f8871954d2ccebf\twitch-external-platform-4.5-natives-windows-32.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\tv.twitch\twitch-external-platform\4.5\c3cde57891b935d41b6680a9c5e1502eeab76d86\twitch-external-platform-4.5-natives-windows-64.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.lwjgl.lwjgl\lwjgl-platform\2.9.1\4c517eca808522457dd95ee8fc1fbcdbb602efbe\lwjgl-platform-2.9.1-natives-windows.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.lwjgl.lwjgl\lwjgl-platform\2.9.1\aa9aae879af8eb378e22cfc64db56ec2ca9a44d1\lwjgl-platform-2.9.1-natives-linux.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.lwjgl.lwjgl\lwjgl-platform\2.9.1\2d12c83fdfbc04ecabf02c7bc8cc54d034f0daac\lwjgl-platform-2.9.1-natives-osx.jar;C:\Users\Jordan\.gradle\caches\minecraft\net\minecraftforge\forge\1.7.10-10.13.4.1448-1.7.10\start
+[02:05:07] [main/DEBUG] [FML/]: Java library path at launch is C:\Program Files\Java\jre1.8.0_60\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:/Program Files/Java/jre1.8.0_60/bin/server;C:/Program Files/Java/jre1.8.0_60/bin;C:/Program Files/Java/jre1.8.0_60/lib/amd64;C:\ProgramData\Oracle\Java\javapath;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files (x86)\Intel\iCLS Client\;C:\Program Files\Intel\iCLS Client\;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files\FileBot\;C:\Program Files (x86)\Skype\Phone\;C:\eclipse;;.
+[02:05:07] [main/INFO] [FML/]: Managed to load a deobfuscated Minecraft name- we are in a deobfuscated environment. Skipping runtime deobfuscation
+[02:05:07] [main/DEBUG] [FML/]: Instantiating coremod class FMLCorePlugin
+[02:05:07] [main/DEBUG] [FML/]: Added access transformer class cpw.mods.fml.common.asm.transformers.AccessTransformer to enqueued access transformers
+[02:05:07] [main/DEBUG] [FML/]: Enqueued coremod FMLCorePlugin
+[02:05:07] [main/DEBUG] [FML/]: Instantiating coremod class FMLForgePlugin
+[02:05:07] [main/DEBUG] [FML/]: Added access transformer class net.minecraftforge.transformers.ForgeAccessTransformer to enqueued access transformers
+[02:05:07] [main/DEBUG] [FML/]: Enqueued coremod FMLForgePlugin
+[02:05:07] [main/DEBUG] [FML/]: All fundamental core mods are successfully located
+[02:05:07] [main/DEBUG] [FML/]: Attempting to load commandline specified mods, relative to C:\eclipse\workspace\upTime\.
+[02:05:07] [main/DEBUG] [FML/]: Discovering coremods
+[02:05:07] [main/INFO] [LaunchWrapper/]: Calling tweak class net.minecraftforge.gradle.tweakers.CoremodTweaker
+[02:05:07] [main/INFO] [GradleStart/]: Injecting location in coremod cpw.mods.fml.relauncher.FMLCorePlugin
+[02:05:07] [main/INFO] [GradleStart/]: Injecting location in coremod net.minecraftforge.classloading.FMLForgePlugin
+[02:05:07] [main/INFO] [LaunchWrapper/]: Loading tweak class name cpw.mods.fml.common.launcher.FMLInjectionAndSortingTweaker
+[02:05:07] [main/INFO] [LaunchWrapper/]: Loading tweak class name cpw.mods.fml.common.launcher.FMLDeobfTweaker
+[02:05:07] [main/INFO] [LaunchWrapper/]: Loading tweak class name net.minecraftforge.gradle.tweakers.AccessTransformerTweaker
+[02:05:07] [main/INFO] [LaunchWrapper/]: Calling tweak class cpw.mods.fml.common.launcher.FMLInjectionAndSortingTweaker
+[02:05:07] [main/INFO] [LaunchWrapper/]: Calling tweak class cpw.mods.fml.common.launcher.FMLInjectionAndSortingTweaker
+[02:05:07] [main/INFO] [LaunchWrapper/]: Calling tweak class cpw.mods.fml.relauncher.CoreModManager$FMLPluginWrapper
+[02:05:07] [main/DEBUG] [FML/]: Injecting coremod FMLCorePlugin {cpw.mods.fml.relauncher.FMLCorePlugin} class transformers
+[02:05:07] [main/TRACE] [FML/]: Registering transformer cpw.mods.fml.common.asm.transformers.MarkerTransformer
+[02:05:07] [main/TRACE] [FML/]: Registering transformer cpw.mods.fml.common.asm.transformers.SideTransformer
+[02:05:07] [main/TRACE] [FML/]: Registering transformer cpw.mods.fml.common.asm.transformers.EventSubscriptionTransformer
+[02:05:07] [main/DEBUG] [FML/]: Injection complete
+[02:05:07] [main/DEBUG] [FML/]: Running coremod plugin for FMLCorePlugin {cpw.mods.fml.relauncher.FMLCorePlugin}
+[02:05:07] [main/DEBUG] [FML/]: Running coremod plugin FMLCorePlugin
+[02:05:07] [main/ERROR] [FML/]: The binary patch set is missing. Either you are in a development environment, or things are not going to work!
+[02:05:08] [main/ERROR] [FML/]: FML appears to be missing any signature data. This is not a good thing
+[02:05:08] [main/DEBUG] [FML/]: Coremod plugin class FMLCorePlugin run successfully
+[02:05:08] [main/INFO] [LaunchWrapper/]: Calling tweak class cpw.mods.fml.relauncher.CoreModManager$FMLPluginWrapper
+[02:05:08] [main/DEBUG] [FML/]: Injecting coremod FMLForgePlugin {net.minecraftforge.classloading.FMLForgePlugin} class transformers
+[02:05:08] [main/TRACE] [FML/]: Registering transformer net.minecraftforge.classloading.FluidIdTransformer
+[02:05:08] [main/DEBUG] [FML/]: Injection complete
+[02:05:08] [main/DEBUG] [FML/]: Running coremod plugin for FMLForgePlugin {net.minecraftforge.classloading.FMLForgePlugin}
+[02:05:08] [main/DEBUG] [FML/]: Running coremod plugin FMLForgePlugin
+[02:05:08] [main/DEBUG] [FML/]: Coremod plugin class FMLForgePlugin run successfully
+[02:05:08] [main/INFO] [LaunchWrapper/]: Calling tweak class cpw.mods.fml.common.launcher.FMLDeobfTweaker
+[02:05:08] [main/DEBUG] [FML/]: Loaded 57 rules from AccessTransformer config file fml_at.cfg
+[02:05:08] [main/DEBUG] [FML/]: Loaded 89 rules from AccessTransformer config file forge_at.cfg
+[02:05:08] [main/DEBUG] [FML/]: Validating minecraft
+[02:05:08] [main/DEBUG] [FML/]: Minecraft validated, launching...
+[02:05:08] [main/INFO] [LaunchWrapper/]: Calling tweak class net.minecraftforge.gradle.tweakers.AccessTransformerTweaker
+[02:05:08] [main/INFO] [LaunchWrapper/]: Loading tweak class name cpw.mods.fml.common.launcher.TerminalTweaker
+[02:05:08] [main/INFO] [LaunchWrapper/]: Calling tweak class cpw.mods.fml.common.launcher.TerminalTweaker
+[02:05:08] [main/INFO] [LaunchWrapper/]: Launching wrapped minecraft {net.minecraft.server.MinecraftServer}
+[02:05:10] [main/WARN] [FML/]: =============================================================
+[02:05:10] [main/WARN] [FML/]: MOD HAS DIRECT REFERENCE System.exit() THIS IS NOT ALLOWED REROUTING TO FML!
+[02:05:10] [main/WARN] [FML/]: Offendor: net/minecraft/server/gui/MinecraftServerGui$1.windowClosing(Ljava/awt/event/WindowEvent;)V
+[02:05:10] [main/WARN] [FML/]: Use FMLCommonHandler.exitJava instead
+[02:05:10] [main/WARN] [FML/]: =============================================================
+[02:05:10] [Server thread/INFO] [MinecraftForge/]: Attempting early MinecraftForge initialization
+[02:05:10] [Server thread/INFO] [FML/]: MinecraftForge v10.13.4.1448 Initialized
+[02:05:10] [Server thread/INFO] [FML/]: Replaced 183 ore recipies
+[02:05:10] [Server thread/INFO] [MinecraftForge/]: Completed early MinecraftForge initialization
+[02:05:10] [Server thread/DEBUG] [FML/]: File C:\eclipse\workspace\upTime\config\injectedDependencies.json not found. No dependencies injected
+[02:05:10] [Server thread/DEBUG] [FML/]: Building injected Mod Containers [cpw.mods.fml.common.FMLContainer, net.minecraftforge.common.ForgeModContainer]
+[02:05:10] [Server thread/DEBUG] [FML/]: Attempting to load mods contained in the minecraft jar file and associated classes
+[02:05:10] [Server thread/DEBUG] [FML/]: Found a minecraft related directory at C:\eclipse\workspace\upTime\bin, examining for mod candidates
+[02:05:10] [Server thread/DEBUG] [FML/]: Found a minecraft related directory at C:\eclipse\Forge\bin, examining for mod candidates
+[02:05:10] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\minecraft\net\minecraftforge\forge\1.7.10-10.13.4.1448-1.7.10\forgeSrc-1.7.10-10.13.4.1448-1.7.10.jar, examining for mod candidates
+[02:05:10] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\net.minecraft\launchwrapper\1.11\9c0592c6e1e9ea296a70948081bd4cc84dda1289\launchwrapper-1.11.jar, examining for mod candidates
+[02:05:10] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.google.code.findbugs\jsr305\1.3.9\40719ea6961c0cb6afaeb6a921eaa1f6afd4cfdf\jsr305-1.3.9.jar, examining for mod candidates
+[02:05:10] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.ow2.asm\asm-debug-all\5.0.3\f9e364ae2a66ce2a543012a4668856e84e5dab74\asm-debug-all-5.0.3.jar, examining for mod candidates
+[02:05:10] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.typesafe.akka\akka-actor_2.11\2.3.3\ed62e9fc709ca0f2ff1a3220daa8b70a2870078e\akka-actor_2.11-2.3.3.jar, examining for mod candidates
+[02:05:10] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.typesafe\config\1.2.1\f771f71fdae3df231bcd54d5ca2d57f0bf93f467\config-1.2.1.jar, examining for mod candidates
+[02:05:10] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang\scala-actors-migration_2.11\1.1.0\dfa8bc42b181d5b9f1a5dd147f8ae308b893eb6f\scala-actors-migration_2.11-1.1.0.jar, examining for mod candidates
+[02:05:10] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang\scala-compiler\2.11.1\56ea2e6c025e0821f28d73ca271218b8dd04926a\scala-compiler-2.11.1.jar, examining for mod candidates
+[02:05:10] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang.plugins\scala-continuations-library_2.11\1.0.2\e517c53a7e9acd6b1668c5a35eccbaa3bab9aac\scala-continuations-library_2.11-1.0.2.jar, examining for mod candidates
+[02:05:10] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang.plugins\scala-continuations-plugin_2.11.1\1.0.2\f361a3283452c57fa30c1ee69448995de23c60f7\scala-continuations-plugin_2.11.1-1.0.2.jar, examining for mod candidates
+[02:05:10] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang\scala-library\2.11.1\e11da23da3eabab9f4777b9220e60d44c1aab6a\scala-library-2.11.1.jar, examining for mod candidates
+[02:05:10] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang\scala-parser-combinators_2.11\1.0.1\f05d7345bf5a58924f2837c6c1f4d73a938e1ff0\scala-parser-combinators_2.11-1.0.1.jar, examining for mod candidates
+[02:05:10] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang\scala-reflect\2.11.1\6580347e61cc7f8e802941e7fde40fa83b8badeb\scala-reflect-2.11.1.jar, examining for mod candidates
+[02:05:10] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang\scala-swing_2.11\1.0.1\b1cdd92bd47b1e1837139c1c53020e86bb9112ae\scala-swing_2.11-1.0.1.jar, examining for mod candidates
+[02:05:10] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang\scala-xml_2.11\1.0.2\7a80ec00aec122fba7cd4e0d4cdd87ff7e4cb6d0\scala-xml_2.11-1.0.2.jar, examining for mod candidates
+[02:05:10] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\net.sf.jopt-simple\jopt-simple\4.5\6065cc95c661255349c1d0756657be17c29a4fd3\jopt-simple-4.5.jar, examining for mod candidates
+[02:05:10] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\lzma\lzma\0.0.1\521616dc7487b42bef0e803bd2fa3faf668101d7\lzma-0.0.1.jar, examining for mod candidates
+[02:05:10] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.mojang\realms\1.3.5\807ae355ee63583becd7ea60e76aab1532bb42e\realms-1.3.5.jar, examining for mod candidates
+[02:05:10] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.apache.commons\commons-compress\1.8.1\a698750c16740fd5b3871425f4cb3bbaa87f529d\commons-compress-1.8.1.jar, examining for mod candidates
+[02:05:10] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.apache.httpcomponents\httpclient\4.3.3\18f4247ff4572a074444572cee34647c43e7c9c7\httpclient-4.3.3.jar, examining for mod candidates
+[02:05:10] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\commons-logging\commons-logging\1.1.3\f6f66e966c70a83ffbdb6f17a0919eaf7c8aca7f\commons-logging-1.1.3.jar, examining for mod candidates
+[02:05:10] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.apache.httpcomponents\httpcore\4.3.2\31fbbff1ddbf98f3aa7377c94d33b0447c646b6e\httpcore-4.3.2.jar, examining for mod candidates
+[02:05:10] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\java3d\vecmath\1.3.1\a0ae4f51da409fa0c20fa0ca59e6bbc9413ae71d\vecmath-1.3.1.jar, examining for mod candidates
+[02:05:10] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\net.sf.trove4j\trove4j\3.0.3\42ccaf4761f0dfdfa805c9e340d99a755907e2dd\trove4j-3.0.3.jar, examining for mod candidates
+[02:05:10] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.ibm.icu\icu4j-core-mojang\51.2\63d216a9311cca6be337c1e458e587f99d382b84\icu4j-core-mojang-51.2.jar, examining for mod candidates
+[02:05:10] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.paulscode\codecjorbis\20101023\c73b5636faf089d9f00e8732a829577de25237ee\codecjorbis-20101023.jar, examining for mod candidates
+[02:05:10] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.paulscode\codecwav\20101023\12f031cfe88fef5c1dd36c563c0a3a69bd7261da\codecwav-20101023.jar, examining for mod candidates
+[02:05:10] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.paulscode\libraryjavasound\20101123\5c5e304366f75f9eaa2e8cca546a1fb6109348b3\libraryjavasound-20101123.jar, examining for mod candidates
+[02:05:10] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.paulscode\librarylwjglopenal\20100824\73e80d0794c39665aec3f62eee88ca91676674ef\librarylwjglopenal-20100824.jar, examining for mod candidates
+[02:05:10] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.paulscode\soundsystem\20120107\419c05fe9be71f792b2d76cfc9b67f1ed0fec7f6\soundsystem-20120107.jar, examining for mod candidates
+[02:05:10] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\io.netty\netty-all\4.0.10.Final\9e50bd52ffe257a0e2cd8d971688d6ce7d174325\netty-all-4.0.10.Final.jar, examining for mod candidates
+[02:05:10] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.google.guava\guava\17.0\9c6ef172e8de35fd8d4d8783e4821e57cdef7445\guava-17.0.jar, examining for mod candidates
+[02:05:10] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.apache.commons\commons-lang3\3.3.2\90a3822c38ec8c996e84c16a3477ef632cbc87a3\commons-lang3-3.3.2.jar, examining for mod candidates
+[02:05:10] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\commons-io\commons-io\2.4\b1b6ea3b7e4aa4f492509a4952029cd8e48019ad\commons-io-2.4.jar, examining for mod candidates
+[02:05:10] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\commons-codec\commons-codec\1.9\9ce04e34240f674bc72680f8b843b1457383161a\commons-codec-1.9.jar, examining for mod candidates
+[02:05:10] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\net.java.jinput\jinput\2.0.5\39c7796b469a600f72380316f6b1f11db6c2c7c4\jinput-2.0.5.jar, examining for mod candidates
+[02:05:10] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\net.java.jutils\jutils\1.0.0\e12fe1fda814bd348c1579329c86943d2cd3c6a6\jutils-1.0.0.jar, examining for mod candidates
+[02:05:10] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.google.code.gson\gson\2.2.4\a60a5e993c98c864010053cb901b7eab25306568\gson-2.2.4.jar, examining for mod candidates
+[02:05:10] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.mojang\authlib\1.5.16\ef1582b11fd0943d069cdcb72e99008ac209a283\authlib-1.5.16.jar, examining for mod candidates
+[02:05:10] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.apache.logging.log4j\log4j-api\2.0-beta9\1dd66e68cccd907880229f9e2de1314bd13ff785\log4j-api-2.0-beta9.jar, examining for mod candidates
+[02:05:10] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.apache.logging.log4j\log4j-core\2.0-beta9\678861ba1b2e1fccb594bb0ca03114bb05da9695\log4j-core-2.0-beta9.jar, examining for mod candidates
+[02:05:10] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.lwjgl.lwjgl\lwjgl\2.9.1\f58c5aabcef0e41718a564be9f8e412fff8db847\lwjgl-2.9.1.jar, examining for mod candidates
+[02:05:10] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.lwjgl.lwjgl\lwjgl_util\2.9.1\290d7ba8a1bd9566f5ddf16ad06f09af5ec9b20e\lwjgl_util-2.9.1.jar, examining for mod candidates
+[02:05:10] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\tv.twitch\twitch\5.16\1f55f009c61637c10c0acfb8b5ffc600f30044b4\twitch-5.16.jar, examining for mod candidates
+[02:05:10] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang\scala-actors\2.11.0\8ccfb6541de179bb1c4d45cf414acee069b7f78b\scala-actors-2.11.0.jar, examining for mod candidates
+[02:05:10] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang.modules\scala-xml_2.11\1.0.2\820fbca7e524b530fdadc594c39d49a21ea0337e\scala-xml_2.11-1.0.2.jar, examining for mod candidates
+[02:05:10] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang.modules\scala-parser-combinators_2.11\1.0.1\f05d7345bf5a58924f2837c6c1f4d73a938e1ff0\scala-parser-combinators_2.11-1.0.1.jar, examining for mod candidates
+[02:05:10] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\net.java.jinput\jinput-platform\2.0.5\7ff832a6eb9ab6a767f1ade2b548092d0fa64795\jinput-platform-2.0.5-natives-linux.jar, examining for mod candidates
+[02:05:10] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\net.java.jinput\jinput-platform\2.0.5\385ee093e01f587f30ee1c8a2ee7d408fd732e16\jinput-platform-2.0.5-natives-windows.jar, examining for mod candidates
+[02:05:10] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\net.java.jinput\jinput-platform\2.0.5\53f9c919f34d2ca9de8c51fc4e1e8282029a9232\jinput-platform-2.0.5-natives-osx.jar, examining for mod candidates
+[02:05:10] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\tv.twitch\twitch-platform\5.16\7c6affe439099806a4f552da14c42f9d643d8b23\twitch-platform-5.16-natives-windows-32.jar, examining for mod candidates
+[02:05:10] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\tv.twitch\twitch-platform\5.16\39d0c3d363735b4785598e0e7fbf8297c706a9f9\twitch-platform-5.16-natives-windows-64.jar, examining for mod candidates
+[02:05:10] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\tv.twitch\twitch-platform\5.16\62503ee712766cf77f97252e5902786fd834b8c5\twitch-platform-5.16-natives-osx.jar, examining for mod candidates
+[02:05:10] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\tv.twitch\twitch-external-platform\4.5\18215140f010c05b9f86ef6f0f8871954d2ccebf\twitch-external-platform-4.5-natives-windows-32.jar, examining for mod candidates
+[02:05:10] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\tv.twitch\twitch-external-platform\4.5\c3cde57891b935d41b6680a9c5e1502eeab76d86\twitch-external-platform-4.5-natives-windows-64.jar, examining for mod candidates
+[02:05:10] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.lwjgl.lwjgl\lwjgl-platform\2.9.1\4c517eca808522457dd95ee8fc1fbcdbb602efbe\lwjgl-platform-2.9.1-natives-windows.jar, examining for mod candidates
+[02:05:10] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.lwjgl.lwjgl\lwjgl-platform\2.9.1\aa9aae879af8eb378e22cfc64db56ec2ca9a44d1\lwjgl-platform-2.9.1-natives-linux.jar, examining for mod candidates
+[02:05:10] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.lwjgl.lwjgl\lwjgl-platform\2.9.1\2d12c83fdfbc04ecabf02c7bc8cc54d034f0daac\lwjgl-platform-2.9.1-natives-osx.jar, examining for mod candidates
+[02:05:10] [Server thread/DEBUG] [FML/]: Found a minecraft related directory at C:\Users\Jordan\.gradle\caches\minecraft\net\minecraftforge\forge\1.7.10-10.13.4.1448-1.7.10\start, examining for mod candidates
+[02:05:10] [Server thread/DEBUG] [FML/]: Minecraft jar mods loaded successfully
+[02:05:10] [Server thread/INFO] [FML/]: Found 0 mods from the command line. Injecting into mod discoverer
+[02:05:10] [Server thread/INFO] [FML/]: Searching C:\eclipse\workspace\upTime\mods for mods
+[02:05:10] [Server thread/DEBUG] [FML/]: Examining directory bin for potential mods
+[02:05:10] [Server thread/DEBUG] [FML/]: Found an mcmod.info file in directory bin
+[02:05:10] [Server thread/TRACE] [FML/]: Recursing into package com
+[02:05:10] [Server thread/TRACE] [FML/]: Recursing into package com.skidinc
+[02:05:10] [Server thread/TRACE] [FML/]: Recursing into package com.skidinc.uptime
+[02:05:10] [Server thread/DEBUG] [FML/]: Identified a mod of type Lcpw/mods/fml/common/Mod; (com.skidinc.uptime.Uptime) - loading
+[02:05:10] [Server thread/TRACE] [Uptime/]: Parsed dependency info : [] [] []
+[02:05:10] [Server thread/DEBUG] [FML/]: Examining directory bin for potential mods
+[02:05:10] [Server thread/DEBUG] [FML/]: Found an mcmod.info file in directory bin
+[02:05:10] [Server thread/TRACE] [FML/]: Recursing into package com
+[02:05:10] [Server thread/TRACE] [FML/]: Recursing into package com.example
+[02:05:10] [Server thread/TRACE] [FML/]: Recursing into package com.example.examplemod
+[02:05:10] [Server thread/DEBUG] [FML/]: Identified a mod of type Lcpw/mods/fml/common/Mod; (com.example.examplemod.ExampleMod) - loading
+[02:05:10] [Server thread/TRACE] [examplemod/]: Parsed dependency info : [] [] []
+[02:05:10] [Server thread/DEBUG] [FML/]: Examining file forgeSrc-1.7.10-10.13.4.1448-1.7.10.jar for potential mods
+[02:05:10] [Server thread/DEBUG] [FML/]: The mod container forgeSrc-1.7.10-10.13.4.1448-1.7.10.jar appears to be missing an mcmod.info file
+[02:05:11] [Server thread/DEBUG] [FML/]: Examining file launchwrapper-1.11.jar for potential mods
+[02:05:11] [Server thread/DEBUG] [FML/]: The mod container launchwrapper-1.11.jar appears to be missing an mcmod.info file
+[02:05:11] [Server thread/DEBUG] [FML/]: Examining file jsr305-1.3.9.jar for potential mods
+[02:05:11] [Server thread/DEBUG] [FML/]: The mod container jsr305-1.3.9.jar appears to be missing an mcmod.info file
+[02:05:11] [Server thread/DEBUG] [FML/]: Examining file asm-debug-all-5.0.3.jar for potential mods
+[02:05:11] [Server thread/DEBUG] [FML/]: The mod container asm-debug-all-5.0.3.jar appears to be missing an mcmod.info file
+[02:05:11] [Server thread/DEBUG] [FML/]: Examining file akka-actor_2.11-2.3.3.jar for potential mods
+[02:05:11] [Server thread/DEBUG] [FML/]: The mod container akka-actor_2.11-2.3.3.jar appears to be missing an mcmod.info file
+[02:05:11] [Server thread/DEBUG] [FML/]: Examining file config-1.2.1.jar for potential mods
+[02:05:11] [Server thread/DEBUG] [FML/]: The mod container config-1.2.1.jar appears to be missing an mcmod.info file
+[02:05:11] [Server thread/DEBUG] [FML/]: Examining file scala-actors-migration_2.11-1.1.0.jar for potential mods
+[02:05:11] [Server thread/DEBUG] [FML/]: The mod container scala-actors-migration_2.11-1.1.0.jar appears to be missing an mcmod.info file
+[02:05:11] [Server thread/DEBUG] [FML/]: Examining file scala-compiler-2.11.1.jar for potential mods
+[02:05:11] [Server thread/DEBUG] [FML/]: The mod container scala-compiler-2.11.1.jar appears to be missing an mcmod.info file
+[02:05:11] [Server thread/DEBUG] [FML/]: Examining file scala-continuations-library_2.11-1.0.2.jar for potential mods
+[02:05:11] [Server thread/DEBUG] [FML/]: The mod container scala-continuations-library_2.11-1.0.2.jar appears to be missing an mcmod.info file
+[02:05:11] [Server thread/DEBUG] [FML/]: Examining file scala-continuations-plugin_2.11.1-1.0.2.jar for potential mods
+[02:05:11] [Server thread/DEBUG] [FML/]: The mod container scala-continuations-plugin_2.11.1-1.0.2.jar appears to be missing an mcmod.info file
+[02:05:11] [Server thread/DEBUG] [FML/]: Examining file scala-library-2.11.1.jar for potential mods
+[02:05:11] [Server thread/DEBUG] [FML/]: The mod container scala-library-2.11.1.jar appears to be missing an mcmod.info file
+[02:05:12] [Server thread/DEBUG] [FML/]: Examining file scala-parser-combinators_2.11-1.0.1.jar for potential mods
+[02:05:12] [Server thread/DEBUG] [FML/]: The mod container scala-parser-combinators_2.11-1.0.1.jar appears to be missing an mcmod.info file
+[02:05:12] [Server thread/DEBUG] [FML/]: Examining file scala-reflect-2.11.1.jar for potential mods
+[02:05:12] [Server thread/DEBUG] [FML/]: The mod container scala-reflect-2.11.1.jar appears to be missing an mcmod.info file
+[02:05:12] [Server thread/DEBUG] [FML/]: Examining file scala-swing_2.11-1.0.1.jar for potential mods
+[02:05:12] [Server thread/DEBUG] [FML/]: The mod container scala-swing_2.11-1.0.1.jar appears to be missing an mcmod.info file
+[02:05:12] [Server thread/DEBUG] [FML/]: Examining file scala-xml_2.11-1.0.2.jar for potential mods
+[02:05:12] [Server thread/DEBUG] [FML/]: The mod container scala-xml_2.11-1.0.2.jar appears to be missing an mcmod.info file
+[02:05:12] [Server thread/DEBUG] [FML/]: Examining file jopt-simple-4.5.jar for potential mods
+[02:05:12] [Server thread/DEBUG] [FML/]: The mod container jopt-simple-4.5.jar appears to be missing an mcmod.info file
+[02:05:12] [Server thread/DEBUG] [FML/]: Examining file lzma-0.0.1.jar for potential mods
+[02:05:12] [Server thread/DEBUG] [FML/]: The mod container lzma-0.0.1.jar appears to be missing an mcmod.info file
+[02:05:12] [Server thread/DEBUG] [FML/]: Examining file realms-1.3.5.jar for potential mods
+[02:05:12] [Server thread/DEBUG] [FML/]: The mod container realms-1.3.5.jar appears to be missing an mcmod.info file
+[02:05:12] [Server thread/DEBUG] [FML/]: Examining file commons-compress-1.8.1.jar for potential mods
+[02:05:12] [Server thread/DEBUG] [FML/]: The mod container commons-compress-1.8.1.jar appears to be missing an mcmod.info file
+[02:05:12] [Server thread/DEBUG] [FML/]: Examining file httpclient-4.3.3.jar for potential mods
+[02:05:12] [Server thread/DEBUG] [FML/]: The mod container httpclient-4.3.3.jar appears to be missing an mcmod.info file
+[02:05:12] [Server thread/DEBUG] [FML/]: Examining file commons-logging-1.1.3.jar for potential mods
+[02:05:12] [Server thread/DEBUG] [FML/]: The mod container commons-logging-1.1.3.jar appears to be missing an mcmod.info file
+[02:05:12] [Server thread/DEBUG] [FML/]: Examining file httpcore-4.3.2.jar for potential mods
+[02:05:12] [Server thread/DEBUG] [FML/]: The mod container httpcore-4.3.2.jar appears to be missing an mcmod.info file
+[02:05:12] [Server thread/DEBUG] [FML/]: Examining file vecmath-1.3.1.jar for potential mods
+[02:05:12] [Server thread/DEBUG] [FML/]: The mod container vecmath-1.3.1.jar appears to be missing an mcmod.info file
+[02:05:12] [Server thread/DEBUG] [FML/]: Examining file trove4j-3.0.3.jar for potential mods
+[02:05:12] [Server thread/DEBUG] [FML/]: The mod container trove4j-3.0.3.jar appears to be missing an mcmod.info file
+[02:05:12] [Server thread/DEBUG] [FML/]: Examining file icu4j-core-mojang-51.2.jar for potential mods
+[02:05:12] [Server thread/DEBUG] [FML/]: The mod container icu4j-core-mojang-51.2.jar appears to be missing an mcmod.info file
+[02:05:12] [Server thread/DEBUG] [FML/]: Examining file codecjorbis-20101023.jar for potential mods
+[02:05:12] [Server thread/DEBUG] [FML/]: The mod container codecjorbis-20101023.jar appears to be missing an mcmod.info file
+[02:05:12] [Server thread/DEBUG] [FML/]: Examining file codecwav-20101023.jar for potential mods
+[02:05:12] [Server thread/DEBUG] [FML/]: The mod container codecwav-20101023.jar appears to be missing an mcmod.info file
+[02:05:12] [Server thread/DEBUG] [FML/]: Examining file libraryjavasound-20101123.jar for potential mods
+[02:05:12] [Server thread/DEBUG] [FML/]: The mod container libraryjavasound-20101123.jar appears to be missing an mcmod.info file
+[02:05:12] [Server thread/DEBUG] [FML/]: Examining file librarylwjglopenal-20100824.jar for potential mods
+[02:05:12] [Server thread/DEBUG] [FML/]: The mod container librarylwjglopenal-20100824.jar appears to be missing an mcmod.info file
+[02:05:12] [Server thread/DEBUG] [FML/]: Examining file soundsystem-20120107.jar for potential mods
+[02:05:12] [Server thread/DEBUG] [FML/]: The mod container soundsystem-20120107.jar appears to be missing an mcmod.info file
+[02:05:12] [Server thread/DEBUG] [FML/]: Examining file netty-all-4.0.10.Final.jar for potential mods
+[02:05:12] [Server thread/DEBUG] [FML/]: The mod container netty-all-4.0.10.Final.jar appears to be missing an mcmod.info file
+[02:05:12] [Server thread/DEBUG] [FML/]: Examining file guava-17.0.jar for potential mods
+[02:05:12] [Server thread/DEBUG] [FML/]: The mod container guava-17.0.jar appears to be missing an mcmod.info file
+[02:05:12] [Server thread/DEBUG] [FML/]: Examining file commons-lang3-3.3.2.jar for potential mods
+[02:05:12] [Server thread/DEBUG] [FML/]: The mod container commons-lang3-3.3.2.jar appears to be missing an mcmod.info file
+[02:05:12] [Server thread/DEBUG] [FML/]: Examining file commons-io-2.4.jar for potential mods
+[02:05:12] [Server thread/DEBUG] [FML/]: The mod container commons-io-2.4.jar appears to be missing an mcmod.info file
+[02:05:12] [Server thread/DEBUG] [FML/]: Examining file commons-codec-1.9.jar for potential mods
+[02:05:12] [Server thread/DEBUG] [FML/]: The mod container commons-codec-1.9.jar appears to be missing an mcmod.info file
+[02:05:12] [Server thread/DEBUG] [FML/]: Examining file jinput-2.0.5.jar for potential mods
+[02:05:12] [Server thread/DEBUG] [FML/]: The mod container jinput-2.0.5.jar appears to be missing an mcmod.info file
+[02:05:12] [Server thread/DEBUG] [FML/]: Examining file jutils-1.0.0.jar for potential mods
+[02:05:12] [Server thread/DEBUG] [FML/]: The mod container jutils-1.0.0.jar appears to be missing an mcmod.info file
+[02:05:12] [Server thread/DEBUG] [FML/]: Examining file gson-2.2.4.jar for potential mods
+[02:05:12] [Server thread/DEBUG] [FML/]: The mod container gson-2.2.4.jar appears to be missing an mcmod.info file
+[02:05:12] [Server thread/DEBUG] [FML/]: Examining file authlib-1.5.16.jar for potential mods
+[02:05:12] [Server thread/DEBUG] [FML/]: The mod container authlib-1.5.16.jar appears to be missing an mcmod.info file
+[02:05:12] [Server thread/DEBUG] [FML/]: Examining file log4j-api-2.0-beta9.jar for potential mods
+[02:05:12] [Server thread/DEBUG] [FML/]: The mod container log4j-api-2.0-beta9.jar appears to be missing an mcmod.info file
+[02:05:12] [Server thread/DEBUG] [FML/]: Examining file log4j-core-2.0-beta9.jar for potential mods
+[02:05:12] [Server thread/DEBUG] [FML/]: The mod container log4j-core-2.0-beta9.jar appears to be missing an mcmod.info file
+[02:05:13] [Server thread/DEBUG] [FML/]: Examining file lwjgl-2.9.1.jar for potential mods
+[02:05:13] [Server thread/DEBUG] [FML/]: The mod container lwjgl-2.9.1.jar appears to be missing an mcmod.info file
+[02:05:13] [Server thread/DEBUG] [FML/]: Examining file lwjgl_util-2.9.1.jar for potential mods
+[02:05:13] [Server thread/DEBUG] [FML/]: The mod container lwjgl_util-2.9.1.jar appears to be missing an mcmod.info file
+[02:05:13] [Server thread/DEBUG] [FML/]: Examining file twitch-5.16.jar for potential mods
+[02:05:13] [Server thread/DEBUG] [FML/]: The mod container twitch-5.16.jar appears to be missing an mcmod.info file
+[02:05:13] [Server thread/DEBUG] [FML/]: Examining file scala-actors-2.11.0.jar for potential mods
+[02:05:13] [Server thread/DEBUG] [FML/]: The mod container scala-actors-2.11.0.jar appears to be missing an mcmod.info file
+[02:05:13] [Server thread/DEBUG] [FML/]: Examining file scala-xml_2.11-1.0.2.jar for potential mods
+[02:05:13] [Server thread/DEBUG] [FML/]: The mod container scala-xml_2.11-1.0.2.jar appears to be missing an mcmod.info file
+[02:05:13] [Server thread/DEBUG] [FML/]: Examining file scala-parser-combinators_2.11-1.0.1.jar for potential mods
+[02:05:13] [Server thread/DEBUG] [FML/]: The mod container scala-parser-combinators_2.11-1.0.1.jar appears to be missing an mcmod.info file
+[02:05:13] [Server thread/DEBUG] [FML/]: Examining file jinput-platform-2.0.5-natives-linux.jar for potential mods
+[02:05:13] [Server thread/DEBUG] [FML/]: The mod container jinput-platform-2.0.5-natives-linux.jar appears to be missing an mcmod.info file
+[02:05:13] [Server thread/DEBUG] [FML/]: Examining file jinput-platform-2.0.5-natives-windows.jar for potential mods
+[02:05:13] [Server thread/DEBUG] [FML/]: The mod container jinput-platform-2.0.5-natives-windows.jar appears to be missing an mcmod.info file
+[02:05:13] [Server thread/DEBUG] [FML/]: Examining file jinput-platform-2.0.5-natives-osx.jar for potential mods
+[02:05:13] [Server thread/DEBUG] [FML/]: The mod container jinput-platform-2.0.5-natives-osx.jar appears to be missing an mcmod.info file
+[02:05:13] [Server thread/DEBUG] [FML/]: Examining file twitch-platform-5.16-natives-windows-32.jar for potential mods
+[02:05:13] [Server thread/DEBUG] [FML/]: The mod container twitch-platform-5.16-natives-windows-32.jar appears to be missing an mcmod.info file
+[02:05:13] [Server thread/DEBUG] [FML/]: Examining file twitch-platform-5.16-natives-windows-64.jar for potential mods
+[02:05:13] [Server thread/DEBUG] [FML/]: The mod container twitch-platform-5.16-natives-windows-64.jar appears to be missing an mcmod.info file
+[02:05:13] [Server thread/DEBUG] [FML/]: Examining file twitch-platform-5.16-natives-osx.jar for potential mods
+[02:05:13] [Server thread/DEBUG] [FML/]: The mod container twitch-platform-5.16-natives-osx.jar appears to be missing an mcmod.info file
+[02:05:13] [Server thread/DEBUG] [FML/]: Examining file twitch-external-platform-4.5-natives-windows-32.jar for potential mods
+[02:05:13] [Server thread/DEBUG] [FML/]: The mod container twitch-external-platform-4.5-natives-windows-32.jar appears to be missing an mcmod.info file
+[02:05:13] [Server thread/DEBUG] [FML/]: Examining file twitch-external-platform-4.5-natives-windows-64.jar for potential mods
+[02:05:13] [Server thread/DEBUG] [FML/]: The mod container twitch-external-platform-4.5-natives-windows-64.jar appears to be missing an mcmod.info file
+[02:05:13] [Server thread/DEBUG] [FML/]: Examining file lwjgl-platform-2.9.1-natives-windows.jar for potential mods
+[02:05:13] [Server thread/DEBUG] [FML/]: The mod container lwjgl-platform-2.9.1-natives-windows.jar appears to be missing an mcmod.info file
+[02:05:13] [Server thread/DEBUG] [FML/]: Examining file lwjgl-platform-2.9.1-natives-linux.jar for potential mods
+[02:05:13] [Server thread/DEBUG] [FML/]: The mod container lwjgl-platform-2.9.1-natives-linux.jar appears to be missing an mcmod.info file
+[02:05:13] [Server thread/DEBUG] [FML/]: Examining file lwjgl-platform-2.9.1-natives-osx.jar for potential mods
+[02:05:13] [Server thread/DEBUG] [FML/]: The mod container lwjgl-platform-2.9.1-natives-osx.jar appears to be missing an mcmod.info file
+[02:05:13] [Server thread/DEBUG] [FML/]: Examining directory start for potential mods
+[02:05:13] [Server thread/DEBUG] [FML/]: No mcmod.info file found in directory start
+[02:05:13] [Server thread/TRACE] [FML/]: Recursing into package net
+[02:05:13] [Server thread/TRACE] [FML/]: Recursing into package net.minecraftforge
+[02:05:13] [Server thread/TRACE] [FML/]: Recursing into package net.minecraftforge.gradle
+[02:05:13] [Server thread/TRACE] [FML/]: Recursing into package net.minecraftforge.gradle.tweakers
+[02:05:13] [Server thread/INFO] [FML/]: Forge Mod Loader has identified 5 mods to load
+[02:05:13] [Server thread/TRACE] [FML/]: Received a system property request ''
+[02:05:13] [Server thread/TRACE] [FML/]: System property request managing the state of 0 mods
+[02:05:13] [Server thread/DEBUG] [FML/]: After merging, found state information for 0 mods
+[02:05:13] [Server thread/DEBUG] [FML/]: Found translations in forgeSrc-1.7.10-10.13.4.1448-1.7.10.jar [en_US, af_ZA, ar_SA, br_FR, ca_ES, cs_CZ, da_DK, de_DE, el_GR, en_US, es_ES, fa_IR, fi_FI, fr_FR, he_IL, hu_HU, it_IT, ja_JP, ko_KR, lt_LT, nb_NO, nl_NL, nn_NO, no_NO, pl_PL, pt_BR, pt_PT, ro_RO, ru_RU, sl_SI, sr_SP, sv_SE, tr_TR, uk_UA, vi_VN, zh_CN, zh_TW, en_US]
+[02:05:13] [Server thread/DEBUG] [FML/]: Found translations in forgeSrc-1.7.10-10.13.4.1448-1.7.10.jar [en_US, af_ZA, ar_SA, br_FR, ca_ES, cs_CZ, da_DK, de_DE, el_GR, en_US, es_ES, fa_IR, fi_FI, fr_FR, he_IL, hu_HU, it_IT, ja_JP, ko_KR, lt_LT, nb_NO, nl_NL, nn_NO, no_NO, pl_PL, pt_BR, pt_PT, ro_RO, ru_RU, sl_SI, sr_SP, sv_SE, tr_TR, uk_UA, vi_VN, zh_CN, zh_TW, en_US]
+[02:05:13] [Server thread/DEBUG] [Uptime/]: Enabling mod Uptime
+[02:05:13] [Server thread/DEBUG] [examplemod/]: Enabling mod examplemod
+[02:05:13] [Server thread/TRACE] [FML/]: Verifying mod requirements are satisfied
+[02:05:13] [Server thread/TRACE] [FML/]: All mod requirements are satisfied
+[02:05:13] [Server thread/TRACE] [FML/]: Sorting mods into an ordered list
+[02:05:13] [Server thread/TRACE] [FML/]: Mod sorting completed successfully
+[02:05:13] [Server thread/DEBUG] [FML/]: Mod sorting data
+[02:05:13] [Server thread/DEBUG] [FML/]: Uptime(Uptime:2): bin ()
+[02:05:13] [Server thread/DEBUG] [FML/]: examplemod(Example Mod:1.0): bin ()
+[02:05:13] [Server thread/TRACE] [mcp/mcp]: Sending event FMLConstructionEvent to mod mcp
+[02:05:13] [Server thread/TRACE] [mcp/mcp]: Sent event FMLConstructionEvent to mod mcp
+[02:05:13] [Server thread/TRACE] [FML/FML]: Sending event FMLConstructionEvent to mod FML
+[02:05:13] [Server thread/TRACE] [FML/FML]: Mod FML is using network checker : Invoking method checkModLists
+[02:05:13] [Server thread/TRACE] [FML/FML]: Testing mod FML to verify it accepts its own version in a remote connection
+[02:05:13] [Server thread/TRACE] [FML/FML]: The mod FML accepts its own version (7.10.99.99)
+[02:05:13] [Server thread/INFO] [FML/FML]: Attempting connection with missing mods [mcp, FML, Forge, Uptime, examplemod] at CLIENT
+[02:05:13] [Server thread/INFO] [FML/FML]: Attempting connection with missing mods [mcp, FML, Forge, Uptime, examplemod] at SERVER
+[02:05:13] [Server thread/TRACE] [FML/FML]: Sent event FMLConstructionEvent to mod FML
+[02:05:13] [Server thread/TRACE] [Forge/Forge]: Sending event FMLConstructionEvent to mod Forge
+[02:05:13] [Server thread/TRACE] [FML/Forge]: Mod Forge is using network checker : No network checking performed
+[02:05:13] [Server thread/TRACE] [FML/Forge]: Testing mod Forge to verify it accepts its own version in a remote connection
+[02:05:13] [Server thread/TRACE] [FML/Forge]: The mod Forge accepts its own version (10.13.4.1448)
+[02:05:13] [Server thread/TRACE] [Forge/Forge]: Sent event FMLConstructionEvent to mod Forge
+[02:05:13] [Server thread/TRACE] [Uptime/Uptime]: Sending event FMLConstructionEvent to mod Uptime
+[02:05:13] [Server thread/TRACE] [FML/Uptime]: Mod Uptime is using network checker : No network checking performed
+[02:05:13] [Server thread/TRACE] [FML/Uptime]: Testing mod Uptime to verify it accepts its own version in a remote connection
+[02:05:13] [Server thread/TRACE] [FML/Uptime]: The mod Uptime accepts its own version (2)
+[02:05:13] [Server thread/DEBUG] [FML/Uptime]: Attempting to inject @SidedProxy classes into Uptime
+[02:05:13] [Server thread/TRACE] [Uptime/Uptime]: Sent event FMLConstructionEvent to mod Uptime
+[02:05:13] [Server thread/TRACE] [examplemod/examplemod]: Sending event FMLConstructionEvent to mod examplemod
+[02:05:13] [Server thread/TRACE] [FML/examplemod]: Mod examplemod is using network checker : Accepting version 1.0
+[02:05:13] [Server thread/TRACE] [FML/examplemod]: Testing mod examplemod to verify it accepts its own version in a remote connection
+[02:05:13] [Server thread/TRACE] [FML/examplemod]: The mod examplemod accepts its own version (1.0)
+[02:05:13] [Server thread/DEBUG] [FML/examplemod]: Attempting to inject @SidedProxy classes into examplemod
+[02:05:13] [Server thread/TRACE] [examplemod/examplemod]: Sent event FMLConstructionEvent to mod examplemod
+[02:05:13] [Server thread/DEBUG] [FML/]: Mod signature data
+[02:05:13] [Server thread/DEBUG] [FML/]: Valid Signatures:
+[02:05:13] [Server thread/DEBUG] [FML/]: Missing Signatures:
+[02:05:13] [Server thread/DEBUG] [FML/]: mcp (Minecraft Coder Pack 9.05) minecraft.jar
+[02:05:13] [Server thread/DEBUG] [FML/]: FML (Forge Mod Loader 7.10.99.99) forgeSrc-1.7.10-10.13.4.1448-1.7.10.jar
+[02:05:13] [Server thread/DEBUG] [FML/]: Forge (Minecraft Forge 10.13.4.1448) forgeSrc-1.7.10-10.13.4.1448-1.7.10.jar
+[02:05:13] [Server thread/DEBUG] [FML/]: Uptime (Uptime 2) bin
+[02:05:13] [Server thread/DEBUG] [FML/]: examplemod (Example Mod 1.0) bin
+[02:05:13] [Server thread/INFO] [FML/]: Processing ObjectHolder annotations
+[02:05:13] [Server thread/INFO] [FML/]: Found 341 ObjectHolder annotations
+[02:05:13] [Server thread/INFO] [FML/]: Identifying ItemStackHolder annotations
+[02:05:13] [Server thread/INFO] [FML/]: Found 0 ItemStackHolder annotations
+[02:05:13] [Server thread/TRACE] [mcp/mcp]: Sending event FMLPreInitializationEvent to mod mcp
+[02:05:13] [Server thread/TRACE] [mcp/mcp]: Sent event FMLPreInitializationEvent to mod mcp
+[02:05:13] [Server thread/TRACE] [FML/FML]: Sending event FMLPreInitializationEvent to mod FML
+[02:05:13] [Server thread/TRACE] [FML/FML]: Sent event FMLPreInitializationEvent to mod FML
+[02:05:13] [Server thread/TRACE] [Forge/Forge]: Sending event FMLPreInitializationEvent to mod Forge
+[02:05:13] [Server thread/INFO] [FML/Forge]: Configured a dormant chunk cache size of 0
+[02:05:13] [Server thread/TRACE] [Forge/Forge]: Sent event FMLPreInitializationEvent to mod Forge
+[02:05:13] [Server thread/TRACE] [Uptime/Uptime]: Sending event FMLPreInitializationEvent to mod Uptime
+[02:05:13] [Server thread/TRACE] [Uptime/Uptime]: Sent event FMLPreInitializationEvent to mod Uptime
+[02:05:13] [Server thread/TRACE] [examplemod/examplemod]: Sending event FMLPreInitializationEvent to mod examplemod
+[02:05:13] [Server thread/TRACE] [examplemod/examplemod]: Sent event FMLPreInitializationEvent to mod examplemod
+[02:05:13] [Server thread/INFO] [FML/]: Applying holder lookups
+[02:05:13] [Server thread/INFO] [FML/]: Holder lookups applied
+[02:05:13] [Server thread/INFO] [FML/]: Injecting itemstacks
+[02:05:13] [Server thread/INFO] [FML/]: Itemstack injection complete
+[02:05:14] [Server thread/TRACE] [mcp/mcp]: Sending event FMLInitializationEvent to mod mcp
+[02:05:14] [Server thread/TRACE] [mcp/mcp]: Sent event FMLInitializationEvent to mod mcp
+[02:05:14] [Server thread/TRACE] [FML/FML]: Sending event FMLInitializationEvent to mod FML
+[02:05:14] [Server thread/TRACE] [FML/FML]: Sent event FMLInitializationEvent to mod FML
+[02:05:14] [Server thread/TRACE] [Forge/Forge]: Sending event FMLInitializationEvent to mod Forge
+[02:05:14] [Server thread/TRACE] [Forge/Forge]: Sent event FMLInitializationEvent to mod Forge
+[02:05:14] [Server thread/TRACE] [Uptime/Uptime]: Sending event FMLInitializationEvent to mod Uptime
+[02:05:14] [Server thread/TRACE] [Uptime/Uptime]: Sent event FMLInitializationEvent to mod Uptime
+[02:05:14] [Server thread/TRACE] [examplemod/examplemod]: Sending event FMLInitializationEvent to mod examplemod
+[02:05:14] [Server thread/INFO] [STDOUT/examplemod]: [com.example.examplemod.ExampleMod:init:18]: DIRT BLOCK >> tile.dirt
+[02:05:14] [Server thread/TRACE] [examplemod/examplemod]: Sent event FMLInitializationEvent to mod examplemod
+[02:05:14] [Server thread/TRACE] [FML/]: Attempting to deliver 0 IMC messages to mod mcp
+[02:05:14] [Server thread/TRACE] [mcp/mcp]: Sending event IMCEvent to mod mcp
+[02:05:14] [Server thread/TRACE] [mcp/mcp]: Sent event IMCEvent to mod mcp
+[02:05:14] [Server thread/TRACE] [FML/]: Attempting to deliver 0 IMC messages to mod FML
+[02:05:14] [Server thread/TRACE] [FML/FML]: Sending event IMCEvent to mod FML
+[02:05:14] [Server thread/TRACE] [FML/FML]: Sent event IMCEvent to mod FML
+[02:05:14] [Server thread/TRACE] [FML/]: Attempting to deliver 0 IMC messages to mod Forge
+[02:05:14] [Server thread/TRACE] [Forge/Forge]: Sending event IMCEvent to mod Forge
+[02:05:14] [Server thread/TRACE] [Forge/Forge]: Sent event IMCEvent to mod Forge
+[02:05:14] [Server thread/TRACE] [FML/]: Attempting to deliver 0 IMC messages to mod Uptime
+[02:05:14] [Server thread/TRACE] [Uptime/Uptime]: Sending event IMCEvent to mod Uptime
+[02:05:14] [Server thread/TRACE] [Uptime/Uptime]: Sent event IMCEvent to mod Uptime
+[02:05:14] [Server thread/TRACE] [FML/]: Attempting to deliver 0 IMC messages to mod examplemod
+[02:05:14] [Server thread/TRACE] [examplemod/examplemod]: Sending event IMCEvent to mod examplemod
+[02:05:14] [Server thread/TRACE] [examplemod/examplemod]: Sent event IMCEvent to mod examplemod
+[02:05:14] [Server thread/INFO] [FML/]: Injecting itemstacks
+[02:05:14] [Server thread/INFO] [FML/]: Itemstack injection complete
+[02:05:14] [Server thread/TRACE] [mcp/mcp]: Sending event FMLPostInitializationEvent to mod mcp
+[02:05:14] [Server thread/TRACE] [mcp/mcp]: Sent event FMLPostInitializationEvent to mod mcp
+[02:05:14] [Server thread/TRACE] [FML/FML]: Sending event FMLPostInitializationEvent to mod FML
+[02:05:14] [Server thread/TRACE] [FML/FML]: Sent event FMLPostInitializationEvent to mod FML
+[02:05:14] [Server thread/TRACE] [Forge/Forge]: Sending event FMLPostInitializationEvent to mod Forge
+[02:05:14] [Server thread/TRACE] [Forge/Forge]: Sent event FMLPostInitializationEvent to mod Forge
+[02:05:14] [Server thread/TRACE] [Uptime/Uptime]: Sending event FMLPostInitializationEvent to mod Uptime
+[02:05:14] [Server thread/TRACE] [Uptime/Uptime]: Sent event FMLPostInitializationEvent to mod Uptime
+[02:05:14] [Server thread/TRACE] [examplemod/examplemod]: Sending event FMLPostInitializationEvent to mod examplemod
+[02:05:14] [Server thread/TRACE] [examplemod/examplemod]: Sent event FMLPostInitializationEvent to mod examplemod
+[02:05:14] [Server thread/TRACE] [mcp/mcp]: Sending event FMLLoadCompleteEvent to mod mcp
+[02:05:14] [Server thread/TRACE] [mcp/mcp]: Sent event FMLLoadCompleteEvent to mod mcp
+[02:05:14] [Server thread/TRACE] [FML/FML]: Sending event FMLLoadCompleteEvent to mod FML
+[02:05:14] [Server thread/TRACE] [FML/FML]: Sent event FMLLoadCompleteEvent to mod FML
+[02:05:14] [Server thread/TRACE] [Forge/Forge]: Sending event FMLLoadCompleteEvent to mod Forge
+[02:05:14] [Server thread/DEBUG] [FML/Forge]: Forge RecipeSorter Baking:
+[02:05:14] [Server thread/DEBUG] [FML/Forge]: 11: RecipeEntry("Before", UNKNOWN, )
+[02:05:14] [Server thread/DEBUG] [FML/Forge]: 10: RecipeEntry("minecraft:shaped", SHAPED, net.minecraft.item.crafting.ShapedRecipes) Before: minecraft:shapeless
+[02:05:14] [Server thread/DEBUG] [FML/Forge]: 9: RecipeEntry("forge:shapedore", SHAPED, net.minecraftforge.oredict.ShapedOreRecipe) Before: minecraft:shapeless After: minecraft:shaped
+[02:05:14] [Server thread/DEBUG] [FML/Forge]: 8: RecipeEntry("minecraft:mapextending", SHAPED, net.minecraft.item.crafting.RecipesMapExtending) Before: minecraft:shapeless After: minecraft:shaped
+[02:05:14] [Server thread/DEBUG] [FML/Forge]: 7: RecipeEntry("minecraft:shapeless", SHAPELESS, net.minecraft.item.crafting.ShapelessRecipes) After: minecraft:shaped
+[02:05:14] [Server thread/DEBUG] [FML/Forge]: 6: RecipeEntry("forge:shapelessore", SHAPELESS, net.minecraftforge.oredict.ShapelessOreRecipe) After: minecraft:shapeless
+[02:05:14] [Server thread/DEBUG] [FML/Forge]: 5: RecipeEntry("minecraft:armordyes", SHAPELESS, net.minecraft.item.crafting.RecipesArmorDyes) After: minecraft:shapeless
+[02:05:14] [Server thread/DEBUG] [FML/Forge]: 4: RecipeEntry("minecraft:fireworks", SHAPELESS, net.minecraft.item.crafting.RecipeFireworks) After: minecraft:shapeless
+[02:05:14] [Server thread/DEBUG] [FML/Forge]: 3: RecipeEntry("minecraft:bookcloning", SHAPELESS, net.minecraft.item.crafting.RecipeBookCloning) After: minecraft:shapeless
+[02:05:14] [Server thread/DEBUG] [FML/Forge]: 2: RecipeEntry("minecraft:mapcloning", SHAPELESS, net.minecraft.item.crafting.RecipesMapCloning) After: minecraft:shapeless
+[02:05:14] [Server thread/DEBUG] [FML/Forge]: 1: RecipeEntry("After", UNKNOWN, )
+[02:05:14] [Server thread/DEBUG] [FML/Forge]: Sorting recipies
+[02:05:14] [Server thread/TRACE] [Forge/Forge]: Sent event FMLLoadCompleteEvent to mod Forge
+[02:05:14] [Server thread/TRACE] [Uptime/Uptime]: Sending event FMLLoadCompleteEvent to mod Uptime
+[02:05:14] [Server thread/TRACE] [Uptime/Uptime]: Sent event FMLLoadCompleteEvent to mod Uptime
+[02:05:14] [Server thread/TRACE] [examplemod/examplemod]: Sending event FMLLoadCompleteEvent to mod examplemod
+[02:05:14] [Server thread/TRACE] [examplemod/examplemod]: Sent event FMLLoadCompleteEvent to mod examplemod
+[02:05:14] [Server thread/DEBUG] [FML/]: Freezing block and item id maps
+[02:05:14] [Server thread/DEBUG] [FML/]: Registry consistency check successful
+[02:05:14] [Server thread/DEBUG] [FML/]: Registry consistency check successful
+[02:05:14] [Server thread/INFO] [FML/]: Forge Mod Loader has successfully loaded 5 mods
+[02:05:14] [Server thread/TRACE] [mcp/mcp]: Sending event FMLServerAboutToStartEvent to mod mcp
+[02:05:14] [Server thread/TRACE] [mcp/mcp]: Sent event FMLServerAboutToStartEvent to mod mcp
+[02:05:14] [Server thread/TRACE] [FML/FML]: Sending event FMLServerAboutToStartEvent to mod FML
+[02:05:14] [Server thread/TRACE] [FML/FML]: Sent event FMLServerAboutToStartEvent to mod FML
+[02:05:14] [Server thread/TRACE] [Forge/Forge]: Sending event FMLServerAboutToStartEvent to mod Forge
+[02:05:14] [Server thread/TRACE] [Forge/Forge]: Sent event FMLServerAboutToStartEvent to mod Forge
+[02:05:14] [Server thread/TRACE] [Uptime/Uptime]: Sending event FMLServerAboutToStartEvent to mod Uptime
+[02:05:14] [Server thread/TRACE] [Uptime/Uptime]: Sent event FMLServerAboutToStartEvent to mod Uptime
+[02:05:14] [Server thread/TRACE] [examplemod/examplemod]: Sending event FMLServerAboutToStartEvent to mod examplemod
+[02:05:14] [Server thread/TRACE] [examplemod/examplemod]: Sent event FMLServerAboutToStartEvent to mod examplemod
+[02:05:14] [Server thread/INFO] [FML/]: Injecting existing block and item data into this server instance
+[02:05:14] [Server thread/DEBUG] [FML/]: Registry consistency check successful
+[02:05:14] [Server thread/DEBUG] [FML/]: Registry consistency check successful
+[02:05:14] [Server thread/TRACE] [FML/]: Skipping remap event - no remaps occured
+[02:05:14] [Server thread/INFO] [FML/]: Applying holder lookups
+[02:05:14] [Server thread/INFO] [FML/]: Holder lookups applied
+[02:05:14] [Server thread/DEBUG] [FML/]: Loading persistent fluid defaults from world
+[02:05:14] [Server thread/DEBUG] [FML/]: The fluid Forge:lava has been selected as the default fluid for lava
+[02:05:14] [Server thread/DEBUG] [FML/]: The fluid Forge:water has been selected as the default fluid for water
+[02:05:15] [Server thread/INFO] [FML/]: Loading dimension 0 (world) (net.minecraft.server.dedicated.DedicatedServer@25797e09)
+[02:05:15] [Server thread/INFO] [FML/]: Loading dimension 1 (world) (net.minecraft.server.dedicated.DedicatedServer@25797e09)
+[02:05:15] [Server thread/INFO] [FML/]: Loading dimension -1 (world) (net.minecraft.server.dedicated.DedicatedServer@25797e09)
+[02:05:16] [Server thread/TRACE] [mcp/mcp]: Sending event FMLServerStartingEvent to mod mcp
+[02:05:16] [Server thread/TRACE] [mcp/mcp]: Sent event FMLServerStartingEvent to mod mcp
+[02:05:16] [Server thread/TRACE] [FML/FML]: Sending event FMLServerStartingEvent to mod FML
+[02:05:16] [Server thread/TRACE] [FML/FML]: Sent event FMLServerStartingEvent to mod FML
+[02:05:16] [Server thread/TRACE] [Forge/Forge]: Sending event FMLServerStartingEvent to mod Forge
+[02:05:16] [Server thread/TRACE] [Forge/Forge]: Sent event FMLServerStartingEvent to mod Forge
+[02:05:16] [Server thread/TRACE] [Uptime/Uptime]: Sending event FMLServerStartingEvent to mod Uptime
+[02:05:16] [Server thread/INFO] [FML/Uptime]: Uptime: Found uptime file, restoring it.
+[02:05:16] [Server thread/TRACE] [FML/Uptime]: Uptime: Uptime is currently saveing its data.
+[02:05:16] [Server thread/TRACE] [FML/Uptime]: Uptime: Uptime has finished saving it's data.
+[02:05:16] [Server thread/TRACE] [Uptime/Uptime]: Sent event FMLServerStartingEvent to mod Uptime
+[02:05:16] [Server thread/TRACE] [examplemod/examplemod]: Sending event FMLServerStartingEvent to mod examplemod
+[02:05:16] [Server thread/TRACE] [examplemod/examplemod]: Sent event FMLServerStartingEvent to mod examplemod
+[02:05:16] [Server thread/TRACE] [mcp/mcp]: Sending event FMLServerStartedEvent to mod mcp
+[02:05:16] [Server thread/TRACE] [mcp/mcp]: Sent event FMLServerStartedEvent to mod mcp
+[02:05:16] [Server thread/TRACE] [FML/FML]: Sending event FMLServerStartedEvent to mod FML
+[02:05:16] [Server thread/TRACE] [FML/FML]: Sent event FMLServerStartedEvent to mod FML
+[02:05:16] [Server thread/TRACE] [Forge/Forge]: Sending event FMLServerStartedEvent to mod Forge
+[02:05:16] [Server thread/TRACE] [Forge/Forge]: Sent event FMLServerStartedEvent to mod Forge
+[02:05:16] [Server thread/TRACE] [Uptime/Uptime]: Sending event FMLServerStartedEvent to mod Uptime
+[02:05:16] [Server thread/TRACE] [Uptime/Uptime]: Sent event FMLServerStartedEvent to mod Uptime
+[02:05:16] [Server thread/TRACE] [examplemod/examplemod]: Sending event FMLServerStartedEvent to mod examplemod
+[02:05:16] [Server thread/TRACE] [examplemod/examplemod]: Sent event FMLServerStartedEvent to mod examplemod
+[02:05:30] [Netty IO #2/TRACE] [FML/]: $ClientHello->FMLHandshakeServerState$2:HELLO
+[02:05:30] [Netty IO #2/INFO] [FML/]: Client protocol version 2
+[02:05:30] [Netty IO #2/TRACE] [FML/]: $ModList:4 mods->FMLHandshakeServerState$2:HELLO
+[02:05:30] [Netty IO #2/INFO] [FML/]: Client attempting to join with 4 mods : FML@7.10.99.99,Forge@10.13.4.1448,mcp@9.05,examplemod@1.0
+[02:05:30] [Netty IO #2/INFO] [FML/]: Attempting connection with missing mods [Uptime] at CLIENT
+[02:05:30] [Netty IO #2/TRACE] [FML/]: $HandshakeAck:{2}->FMLHandshakeServerState$3:WAITINGCACK
+[02:05:30] [Netty IO #2/TRACE] [FML/]: $HandshakeAck:{3}->FMLHandshakeServerState$4:COMPLETE
+[02:05:30] [Netty IO #2/TRACE] [FML/]: $HandshakeAck:{4}->FMLHandshakeServerState$5:DONE
+[02:05:30] [Netty IO #2/TRACE] [FML/]: $HandshakeAck:{5}->FMLHandshakeServerState$5:DONE
+[02:05:30] [Server thread/INFO] [FML/]: [Server thread] Server side modded connection established
+[02:06:01] [Server thread/DEBUG] [FML/]: Gathering id map for writing to world save world
+[02:06:16] [AWT-EventQueue-0/TRACE] [FML/]: Uptime: Uptime is currently saveing its data.
+[02:06:16] [AWT-EventQueue-0/TRACE] [FML/]: Uptime: Uptime has finished saving it's data.
+[02:06:46] [Server thread/DEBUG] [FML/]: Gathering id map for writing to world save world
+[02:07:16] [AWT-EventQueue-0/TRACE] [FML/]: Uptime: Uptime is currently saveing its data.
+[02:07:16] [AWT-EventQueue-0/TRACE] [FML/]: Uptime: Uptime has finished saving it's data.
+[02:07:31] [Server thread/DEBUG] [FML/]: Gathering id map for writing to world save world
+[02:08:16] [AWT-EventQueue-0/TRACE] [FML/]: Uptime: Uptime is currently saveing its data.
+[02:08:16] [AWT-EventQueue-0/TRACE] [FML/]: Uptime: Uptime has finished saving it's data.
+[02:08:16] [Server thread/DEBUG] [FML/]: Gathering id map for writing to world save world
+[02:08:36] [Server thread/TRACE] [mcp/mcp]: Sending event FMLServerStoppingEvent to mod mcp
+[02:08:36] [Server thread/TRACE] [mcp/mcp]: Sent event FMLServerStoppingEvent to mod mcp
+[02:08:36] [Server thread/TRACE] [FML/FML]: Sending event FMLServerStoppingEvent to mod FML
+[02:08:36] [Server thread/TRACE] [FML/FML]: Sent event FMLServerStoppingEvent to mod FML
+[02:08:36] [Server thread/TRACE] [Forge/Forge]: Sending event FMLServerStoppingEvent to mod Forge
+[02:08:36] [Server thread/TRACE] [Forge/Forge]: Sent event FMLServerStoppingEvent to mod Forge
+[02:08:36] [Server thread/TRACE] [Uptime/Uptime]: Sending event FMLServerStoppingEvent to mod Uptime
+[02:08:36] [Server thread/TRACE] [FML/Uptime]: Uptime: Uptime is currently saveing its data.
+[02:08:36] [Server thread/TRACE] [FML/Uptime]: Uptime: Uptime has finished saving it's data.
+[02:08:36] [Server thread/TRACE] [Uptime/Uptime]: Sent event FMLServerStoppingEvent to mod Uptime
+[02:08:36] [Server thread/TRACE] [examplemod/examplemod]: Sending event FMLServerStoppingEvent to mod examplemod
+[02:08:36] [Server thread/TRACE] [examplemod/examplemod]: Sent event FMLServerStoppingEvent to mod examplemod
+[02:08:36] [Server thread/DEBUG] [FML/]: Gathering id map for writing to world save world
+[02:08:37] [Server thread/INFO] [FML/]: Unloading dimension 0
+[02:08:37] [Server thread/INFO] [FML/]: Unloading dimension -1
+[02:08:37] [Server thread/INFO] [FML/]: Unloading dimension 1
+[02:08:37] [Server thread/DEBUG] [FML/]: Reverting to frozen data state.
+[02:08:37] [Server thread/INFO] [FML/]: Applying holder lookups
+[02:08:37] [Server thread/INFO] [FML/]: Holder lookups applied
+[02:08:37] [Server thread/TRACE] [mcp/mcp]: Sending event FMLServerStoppedEvent to mod mcp
+[02:08:37] [Server thread/TRACE] [mcp/mcp]: Sent event FMLServerStoppedEvent to mod mcp
+[02:08:37] [Server thread/TRACE] [FML/FML]: Sending event FMLServerStoppedEvent to mod FML
+[02:08:37] [Server thread/TRACE] [FML/FML]: Sent event FMLServerStoppedEvent to mod FML
+[02:08:37] [Server thread/TRACE] [Forge/Forge]: Sending event FMLServerStoppedEvent to mod Forge
+[02:08:37] [Server thread/TRACE] [Forge/Forge]: Sent event FMLServerStoppedEvent to mod Forge
+[02:08:37] [Server thread/TRACE] [Uptime/Uptime]: Sending event FMLServerStoppedEvent to mod Uptime
+[02:08:37] [Server thread/TRACE] [Uptime/Uptime]: Sent event FMLServerStoppedEvent to mod Uptime
+[02:08:37] [Server thread/TRACE] [examplemod/examplemod]: Sending event FMLServerStoppedEvent to mod examplemod
+[02:08:37] [Server thread/TRACE] [examplemod/examplemod]: Sent event FMLServerStoppedEvent to mod examplemod
diff --git a/logs/fml-server-3.log b/logs/fml-server-3.log
new file mode 100644
index 0000000000..929a4ac525
--- /dev/null
+++ b/logs/fml-server-3.log
@@ -0,0 +1,505 @@
+[03:18:22] [main/DEBUG] [FML/]: Injecting tracing printstreams for STDOUT/STDERR.
+[03:18:22] [main/INFO] [FML/]: Forge Mod Loader version 7.99.16.1448 for Minecraft 1.7.10 loading
+[03:18:22] [main/INFO] [FML/]: Java is Java HotSpot(TM) 64-Bit Server VM, version 1.8.0_60, running on Windows 7:amd64:6.1, installed at C:\Program Files\Java\jre1.8.0_60
+[03:18:22] [main/DEBUG] [FML/]: Java classpath at launch is C:\eclipse\workspace\upTime\bin;C:\eclipse\Forge\bin;C:\Users\Jordan\.gradle\caches\minecraft\net\minecraftforge\forge\1.7.10-10.13.4.1448-1.7.10\forgeSrc-1.7.10-10.13.4.1448-1.7.10.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\net.minecraft\launchwrapper\1.11\9c0592c6e1e9ea296a70948081bd4cc84dda1289\launchwrapper-1.11.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.google.code.findbugs\jsr305\1.3.9\40719ea6961c0cb6afaeb6a921eaa1f6afd4cfdf\jsr305-1.3.9.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.ow2.asm\asm-debug-all\5.0.3\f9e364ae2a66ce2a543012a4668856e84e5dab74\asm-debug-all-5.0.3.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.typesafe.akka\akka-actor_2.11\2.3.3\ed62e9fc709ca0f2ff1a3220daa8b70a2870078e\akka-actor_2.11-2.3.3.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.typesafe\config\1.2.1\f771f71fdae3df231bcd54d5ca2d57f0bf93f467\config-1.2.1.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang\scala-actors-migration_2.11\1.1.0\dfa8bc42b181d5b9f1a5dd147f8ae308b893eb6f\scala-actors-migration_2.11-1.1.0.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang\scala-compiler\2.11.1\56ea2e6c025e0821f28d73ca271218b8dd04926a\scala-compiler-2.11.1.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang.plugins\scala-continuations-library_2.11\1.0.2\e517c53a7e9acd6b1668c5a35eccbaa3bab9aac\scala-continuations-library_2.11-1.0.2.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang.plugins\scala-continuations-plugin_2.11.1\1.0.2\f361a3283452c57fa30c1ee69448995de23c60f7\scala-continuations-plugin_2.11.1-1.0.2.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang\scala-library\2.11.1\e11da23da3eabab9f4777b9220e60d44c1aab6a\scala-library-2.11.1.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang\scala-parser-combinators_2.11\1.0.1\f05d7345bf5a58924f2837c6c1f4d73a938e1ff0\scala-parser-combinators_2.11-1.0.1.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang\scala-reflect\2.11.1\6580347e61cc7f8e802941e7fde40fa83b8badeb\scala-reflect-2.11.1.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang\scala-swing_2.11\1.0.1\b1cdd92bd47b1e1837139c1c53020e86bb9112ae\scala-swing_2.11-1.0.1.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang\scala-xml_2.11\1.0.2\7a80ec00aec122fba7cd4e0d4cdd87ff7e4cb6d0\scala-xml_2.11-1.0.2.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\net.sf.jopt-simple\jopt-simple\4.5\6065cc95c661255349c1d0756657be17c29a4fd3\jopt-simple-4.5.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\lzma\lzma\0.0.1\521616dc7487b42bef0e803bd2fa3faf668101d7\lzma-0.0.1.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.mojang\realms\1.3.5\807ae355ee63583becd7ea60e76aab1532bb42e\realms-1.3.5.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.apache.commons\commons-compress\1.8.1\a698750c16740fd5b3871425f4cb3bbaa87f529d\commons-compress-1.8.1.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.apache.httpcomponents\httpclient\4.3.3\18f4247ff4572a074444572cee34647c43e7c9c7\httpclient-4.3.3.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\commons-logging\commons-logging\1.1.3\f6f66e966c70a83ffbdb6f17a0919eaf7c8aca7f\commons-logging-1.1.3.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.apache.httpcomponents\httpcore\4.3.2\31fbbff1ddbf98f3aa7377c94d33b0447c646b6e\httpcore-4.3.2.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\java3d\vecmath\1.3.1\a0ae4f51da409fa0c20fa0ca59e6bbc9413ae71d\vecmath-1.3.1.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\net.sf.trove4j\trove4j\3.0.3\42ccaf4761f0dfdfa805c9e340d99a755907e2dd\trove4j-3.0.3.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.ibm.icu\icu4j-core-mojang\51.2\63d216a9311cca6be337c1e458e587f99d382b84\icu4j-core-mojang-51.2.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.paulscode\codecjorbis\20101023\c73b5636faf089d9f00e8732a829577de25237ee\codecjorbis-20101023.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.paulscode\codecwav\20101023\12f031cfe88fef5c1dd36c563c0a3a69bd7261da\codecwav-20101023.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.paulscode\libraryjavasound\20101123\5c5e304366f75f9eaa2e8cca546a1fb6109348b3\libraryjavasound-20101123.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.paulscode\librarylwjglopenal\20100824\73e80d0794c39665aec3f62eee88ca91676674ef\librarylwjglopenal-20100824.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.paulscode\soundsystem\20120107\419c05fe9be71f792b2d76cfc9b67f1ed0fec7f6\soundsystem-20120107.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\io.netty\netty-all\4.0.10.Final\9e50bd52ffe257a0e2cd8d971688d6ce7d174325\netty-all-4.0.10.Final.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.google.guava\guava\17.0\9c6ef172e8de35fd8d4d8783e4821e57cdef7445\guava-17.0.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.apache.commons\commons-lang3\3.3.2\90a3822c38ec8c996e84c16a3477ef632cbc87a3\commons-lang3-3.3.2.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\commons-io\commons-io\2.4\b1b6ea3b7e4aa4f492509a4952029cd8e48019ad\commons-io-2.4.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\commons-codec\commons-codec\1.9\9ce04e34240f674bc72680f8b843b1457383161a\commons-codec-1.9.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\net.java.jinput\jinput\2.0.5\39c7796b469a600f72380316f6b1f11db6c2c7c4\jinput-2.0.5.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\net.java.jutils\jutils\1.0.0\e12fe1fda814bd348c1579329c86943d2cd3c6a6\jutils-1.0.0.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.google.code.gson\gson\2.2.4\a60a5e993c98c864010053cb901b7eab25306568\gson-2.2.4.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.mojang\authlib\1.5.16\ef1582b11fd0943d069cdcb72e99008ac209a283\authlib-1.5.16.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.apache.logging.log4j\log4j-api\2.0-beta9\1dd66e68cccd907880229f9e2de1314bd13ff785\log4j-api-2.0-beta9.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.apache.logging.log4j\log4j-core\2.0-beta9\678861ba1b2e1fccb594bb0ca03114bb05da9695\log4j-core-2.0-beta9.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.lwjgl.lwjgl\lwjgl\2.9.1\f58c5aabcef0e41718a564be9f8e412fff8db847\lwjgl-2.9.1.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.lwjgl.lwjgl\lwjgl_util\2.9.1\290d7ba8a1bd9566f5ddf16ad06f09af5ec9b20e\lwjgl_util-2.9.1.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\tv.twitch\twitch\5.16\1f55f009c61637c10c0acfb8b5ffc600f30044b4\twitch-5.16.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang\scala-actors\2.11.0\8ccfb6541de179bb1c4d45cf414acee069b7f78b\scala-actors-2.11.0.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang.modules\scala-xml_2.11\1.0.2\820fbca7e524b530fdadc594c39d49a21ea0337e\scala-xml_2.11-1.0.2.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang.modules\scala-parser-combinators_2.11\1.0.1\f05d7345bf5a58924f2837c6c1f4d73a938e1ff0\scala-parser-combinators_2.11-1.0.1.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\net.java.jinput\jinput-platform\2.0.5\7ff832a6eb9ab6a767f1ade2b548092d0fa64795\jinput-platform-2.0.5-natives-linux.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\net.java.jinput\jinput-platform\2.0.5\385ee093e01f587f30ee1c8a2ee7d408fd732e16\jinput-platform-2.0.5-natives-windows.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\net.java.jinput\jinput-platform\2.0.5\53f9c919f34d2ca9de8c51fc4e1e8282029a9232\jinput-platform-2.0.5-natives-osx.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\tv.twitch\twitch-platform\5.16\7c6affe439099806a4f552da14c42f9d643d8b23\twitch-platform-5.16-natives-windows-32.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\tv.twitch\twitch-platform\5.16\39d0c3d363735b4785598e0e7fbf8297c706a9f9\twitch-platform-5.16-natives-windows-64.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\tv.twitch\twitch-platform\5.16\62503ee712766cf77f97252e5902786fd834b8c5\twitch-platform-5.16-natives-osx.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\tv.twitch\twitch-external-platform\4.5\18215140f010c05b9f86ef6f0f8871954d2ccebf\twitch-external-platform-4.5-natives-windows-32.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\tv.twitch\twitch-external-platform\4.5\c3cde57891b935d41b6680a9c5e1502eeab76d86\twitch-external-platform-4.5-natives-windows-64.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.lwjgl.lwjgl\lwjgl-platform\2.9.1\4c517eca808522457dd95ee8fc1fbcdbb602efbe\lwjgl-platform-2.9.1-natives-windows.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.lwjgl.lwjgl\lwjgl-platform\2.9.1\aa9aae879af8eb378e22cfc64db56ec2ca9a44d1\lwjgl-platform-2.9.1-natives-linux.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.lwjgl.lwjgl\lwjgl-platform\2.9.1\2d12c83fdfbc04ecabf02c7bc8cc54d034f0daac\lwjgl-platform-2.9.1-natives-osx.jar;C:\Users\Jordan\.gradle\caches\minecraft\net\minecraftforge\forge\1.7.10-10.13.4.1448-1.7.10\start
+[03:18:22] [main/DEBUG] [FML/]: Java library path at launch is C:\Program Files\Java\jre1.8.0_60\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:/Program Files/Java/jre1.8.0_60/bin/server;C:/Program Files/Java/jre1.8.0_60/bin;C:/Program Files/Java/jre1.8.0_60/lib/amd64;C:\ProgramData\Oracle\Java\javapath;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files (x86)\Intel\iCLS Client\;C:\Program Files\Intel\iCLS Client\;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files\FileBot\;C:\Program Files (x86)\Skype\Phone\;C:\eclipse;;.
+[03:18:22] [main/INFO] [FML/]: Managed to load a deobfuscated Minecraft name- we are in a deobfuscated environment. Skipping runtime deobfuscation
+[03:18:22] [main/DEBUG] [FML/]: Instantiating coremod class FMLCorePlugin
+[03:18:22] [main/DEBUG] [FML/]: Added access transformer class cpw.mods.fml.common.asm.transformers.AccessTransformer to enqueued access transformers
+[03:18:22] [main/DEBUG] [FML/]: Enqueued coremod FMLCorePlugin
+[03:18:22] [main/DEBUG] [FML/]: Instantiating coremod class FMLForgePlugin
+[03:18:22] [main/DEBUG] [FML/]: Added access transformer class net.minecraftforge.transformers.ForgeAccessTransformer to enqueued access transformers
+[03:18:22] [main/DEBUG] [FML/]: Enqueued coremod FMLForgePlugin
+[03:18:22] [main/DEBUG] [FML/]: All fundamental core mods are successfully located
+[03:18:22] [main/DEBUG] [FML/]: Attempting to load commandline specified mods, relative to C:\eclipse\workspace\upTime\.
+[03:18:22] [main/DEBUG] [FML/]: Discovering coremods
+[03:18:22] [main/INFO] [LaunchWrapper/]: Calling tweak class net.minecraftforge.gradle.tweakers.CoremodTweaker
+[03:18:22] [main/INFO] [GradleStart/]: Injecting location in coremod cpw.mods.fml.relauncher.FMLCorePlugin
+[03:18:22] [main/INFO] [GradleStart/]: Injecting location in coremod net.minecraftforge.classloading.FMLForgePlugin
+[03:18:22] [main/INFO] [LaunchWrapper/]: Loading tweak class name cpw.mods.fml.common.launcher.FMLInjectionAndSortingTweaker
+[03:18:22] [main/INFO] [LaunchWrapper/]: Loading tweak class name cpw.mods.fml.common.launcher.FMLDeobfTweaker
+[03:18:22] [main/INFO] [LaunchWrapper/]: Loading tweak class name net.minecraftforge.gradle.tweakers.AccessTransformerTweaker
+[03:18:22] [main/INFO] [LaunchWrapper/]: Calling tweak class cpw.mods.fml.common.launcher.FMLInjectionAndSortingTweaker
+[03:18:22] [main/INFO] [LaunchWrapper/]: Calling tweak class cpw.mods.fml.common.launcher.FMLInjectionAndSortingTweaker
+[03:18:22] [main/INFO] [LaunchWrapper/]: Calling tweak class cpw.mods.fml.relauncher.CoreModManager$FMLPluginWrapper
+[03:18:22] [main/DEBUG] [FML/]: Injecting coremod FMLCorePlugin {cpw.mods.fml.relauncher.FMLCorePlugin} class transformers
+[03:18:22] [main/TRACE] [FML/]: Registering transformer cpw.mods.fml.common.asm.transformers.MarkerTransformer
+[03:18:22] [main/TRACE] [FML/]: Registering transformer cpw.mods.fml.common.asm.transformers.SideTransformer
+[03:18:22] [main/TRACE] [FML/]: Registering transformer cpw.mods.fml.common.asm.transformers.EventSubscriptionTransformer
+[03:18:22] [main/DEBUG] [FML/]: Injection complete
+[03:18:22] [main/DEBUG] [FML/]: Running coremod plugin for FMLCorePlugin {cpw.mods.fml.relauncher.FMLCorePlugin}
+[03:18:22] [main/DEBUG] [FML/]: Running coremod plugin FMLCorePlugin
+[03:18:22] [main/ERROR] [FML/]: The binary patch set is missing. Either you are in a development environment, or things are not going to work!
+[03:18:23] [main/ERROR] [FML/]: FML appears to be missing any signature data. This is not a good thing
+[03:18:23] [main/DEBUG] [FML/]: Coremod plugin class FMLCorePlugin run successfully
+[03:18:23] [main/INFO] [LaunchWrapper/]: Calling tweak class cpw.mods.fml.relauncher.CoreModManager$FMLPluginWrapper
+[03:18:23] [main/DEBUG] [FML/]: Injecting coremod FMLForgePlugin {net.minecraftforge.classloading.FMLForgePlugin} class transformers
+[03:18:23] [main/TRACE] [FML/]: Registering transformer net.minecraftforge.classloading.FluidIdTransformer
+[03:18:23] [main/DEBUG] [FML/]: Injection complete
+[03:18:23] [main/DEBUG] [FML/]: Running coremod plugin for FMLForgePlugin {net.minecraftforge.classloading.FMLForgePlugin}
+[03:18:23] [main/DEBUG] [FML/]: Running coremod plugin FMLForgePlugin
+[03:18:23] [main/DEBUG] [FML/]: Coremod plugin class FMLForgePlugin run successfully
+[03:18:23] [main/INFO] [LaunchWrapper/]: Calling tweak class cpw.mods.fml.common.launcher.FMLDeobfTweaker
+[03:18:23] [main/DEBUG] [FML/]: Loaded 57 rules from AccessTransformer config file fml_at.cfg
+[03:18:23] [main/DEBUG] [FML/]: Loaded 89 rules from AccessTransformer config file forge_at.cfg
+[03:18:23] [main/DEBUG] [FML/]: Validating minecraft
+[03:18:23] [main/DEBUG] [FML/]: Minecraft validated, launching...
+[03:18:23] [main/INFO] [LaunchWrapper/]: Calling tweak class net.minecraftforge.gradle.tweakers.AccessTransformerTweaker
+[03:18:23] [main/INFO] [LaunchWrapper/]: Loading tweak class name cpw.mods.fml.common.launcher.TerminalTweaker
+[03:18:23] [main/INFO] [LaunchWrapper/]: Calling tweak class cpw.mods.fml.common.launcher.TerminalTweaker
+[03:18:23] [main/INFO] [LaunchWrapper/]: Launching wrapped minecraft {net.minecraft.server.MinecraftServer}
+[03:18:25] [main/WARN] [FML/]: =============================================================
+[03:18:25] [main/WARN] [FML/]: MOD HAS DIRECT REFERENCE System.exit() THIS IS NOT ALLOWED REROUTING TO FML!
+[03:18:25] [main/WARN] [FML/]: Offendor: net/minecraft/server/gui/MinecraftServerGui$1.windowClosing(Ljava/awt/event/WindowEvent;)V
+[03:18:25] [main/WARN] [FML/]: Use FMLCommonHandler.exitJava instead
+[03:18:25] [main/WARN] [FML/]: =============================================================
+[03:18:25] [Server thread/INFO] [MinecraftForge/]: Attempting early MinecraftForge initialization
+[03:18:25] [Server thread/INFO] [FML/]: MinecraftForge v10.13.4.1448 Initialized
+[03:18:25] [Server thread/INFO] [FML/]: Replaced 183 ore recipies
+[03:18:25] [Server thread/INFO] [MinecraftForge/]: Completed early MinecraftForge initialization
+[03:18:25] [Server thread/DEBUG] [FML/]: File C:\eclipse\workspace\upTime\config\injectedDependencies.json not found. No dependencies injected
+[03:18:26] [Server thread/DEBUG] [FML/]: Building injected Mod Containers [cpw.mods.fml.common.FMLContainer, net.minecraftforge.common.ForgeModContainer]
+[03:18:26] [Server thread/DEBUG] [FML/]: Attempting to load mods contained in the minecraft jar file and associated classes
+[03:18:26] [Server thread/DEBUG] [FML/]: Found a minecraft related directory at C:\eclipse\workspace\upTime\bin, examining for mod candidates
+[03:18:26] [Server thread/DEBUG] [FML/]: Found a minecraft related directory at C:\eclipse\Forge\bin, examining for mod candidates
+[03:18:26] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\minecraft\net\minecraftforge\forge\1.7.10-10.13.4.1448-1.7.10\forgeSrc-1.7.10-10.13.4.1448-1.7.10.jar, examining for mod candidates
+[03:18:26] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\net.minecraft\launchwrapper\1.11\9c0592c6e1e9ea296a70948081bd4cc84dda1289\launchwrapper-1.11.jar, examining for mod candidates
+[03:18:26] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.google.code.findbugs\jsr305\1.3.9\40719ea6961c0cb6afaeb6a921eaa1f6afd4cfdf\jsr305-1.3.9.jar, examining for mod candidates
+[03:18:26] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.ow2.asm\asm-debug-all\5.0.3\f9e364ae2a66ce2a543012a4668856e84e5dab74\asm-debug-all-5.0.3.jar, examining for mod candidates
+[03:18:26] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.typesafe.akka\akka-actor_2.11\2.3.3\ed62e9fc709ca0f2ff1a3220daa8b70a2870078e\akka-actor_2.11-2.3.3.jar, examining for mod candidates
+[03:18:26] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.typesafe\config\1.2.1\f771f71fdae3df231bcd54d5ca2d57f0bf93f467\config-1.2.1.jar, examining for mod candidates
+[03:18:26] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang\scala-actors-migration_2.11\1.1.0\dfa8bc42b181d5b9f1a5dd147f8ae308b893eb6f\scala-actors-migration_2.11-1.1.0.jar, examining for mod candidates
+[03:18:26] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang\scala-compiler\2.11.1\56ea2e6c025e0821f28d73ca271218b8dd04926a\scala-compiler-2.11.1.jar, examining for mod candidates
+[03:18:26] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang.plugins\scala-continuations-library_2.11\1.0.2\e517c53a7e9acd6b1668c5a35eccbaa3bab9aac\scala-continuations-library_2.11-1.0.2.jar, examining for mod candidates
+[03:18:26] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang.plugins\scala-continuations-plugin_2.11.1\1.0.2\f361a3283452c57fa30c1ee69448995de23c60f7\scala-continuations-plugin_2.11.1-1.0.2.jar, examining for mod candidates
+[03:18:26] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang\scala-library\2.11.1\e11da23da3eabab9f4777b9220e60d44c1aab6a\scala-library-2.11.1.jar, examining for mod candidates
+[03:18:26] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang\scala-parser-combinators_2.11\1.0.1\f05d7345bf5a58924f2837c6c1f4d73a938e1ff0\scala-parser-combinators_2.11-1.0.1.jar, examining for mod candidates
+[03:18:26] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang\scala-reflect\2.11.1\6580347e61cc7f8e802941e7fde40fa83b8badeb\scala-reflect-2.11.1.jar, examining for mod candidates
+[03:18:26] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang\scala-swing_2.11\1.0.1\b1cdd92bd47b1e1837139c1c53020e86bb9112ae\scala-swing_2.11-1.0.1.jar, examining for mod candidates
+[03:18:26] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang\scala-xml_2.11\1.0.2\7a80ec00aec122fba7cd4e0d4cdd87ff7e4cb6d0\scala-xml_2.11-1.0.2.jar, examining for mod candidates
+[03:18:26] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\net.sf.jopt-simple\jopt-simple\4.5\6065cc95c661255349c1d0756657be17c29a4fd3\jopt-simple-4.5.jar, examining for mod candidates
+[03:18:26] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\lzma\lzma\0.0.1\521616dc7487b42bef0e803bd2fa3faf668101d7\lzma-0.0.1.jar, examining for mod candidates
+[03:18:26] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.mojang\realms\1.3.5\807ae355ee63583becd7ea60e76aab1532bb42e\realms-1.3.5.jar, examining for mod candidates
+[03:18:26] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.apache.commons\commons-compress\1.8.1\a698750c16740fd5b3871425f4cb3bbaa87f529d\commons-compress-1.8.1.jar, examining for mod candidates
+[03:18:26] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.apache.httpcomponents\httpclient\4.3.3\18f4247ff4572a074444572cee34647c43e7c9c7\httpclient-4.3.3.jar, examining for mod candidates
+[03:18:26] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\commons-logging\commons-logging\1.1.3\f6f66e966c70a83ffbdb6f17a0919eaf7c8aca7f\commons-logging-1.1.3.jar, examining for mod candidates
+[03:18:26] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.apache.httpcomponents\httpcore\4.3.2\31fbbff1ddbf98f3aa7377c94d33b0447c646b6e\httpcore-4.3.2.jar, examining for mod candidates
+[03:18:26] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\java3d\vecmath\1.3.1\a0ae4f51da409fa0c20fa0ca59e6bbc9413ae71d\vecmath-1.3.1.jar, examining for mod candidates
+[03:18:26] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\net.sf.trove4j\trove4j\3.0.3\42ccaf4761f0dfdfa805c9e340d99a755907e2dd\trove4j-3.0.3.jar, examining for mod candidates
+[03:18:26] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.ibm.icu\icu4j-core-mojang\51.2\63d216a9311cca6be337c1e458e587f99d382b84\icu4j-core-mojang-51.2.jar, examining for mod candidates
+[03:18:26] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.paulscode\codecjorbis\20101023\c73b5636faf089d9f00e8732a829577de25237ee\codecjorbis-20101023.jar, examining for mod candidates
+[03:18:26] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.paulscode\codecwav\20101023\12f031cfe88fef5c1dd36c563c0a3a69bd7261da\codecwav-20101023.jar, examining for mod candidates
+[03:18:26] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.paulscode\libraryjavasound\20101123\5c5e304366f75f9eaa2e8cca546a1fb6109348b3\libraryjavasound-20101123.jar, examining for mod candidates
+[03:18:26] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.paulscode\librarylwjglopenal\20100824\73e80d0794c39665aec3f62eee88ca91676674ef\librarylwjglopenal-20100824.jar, examining for mod candidates
+[03:18:26] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.paulscode\soundsystem\20120107\419c05fe9be71f792b2d76cfc9b67f1ed0fec7f6\soundsystem-20120107.jar, examining for mod candidates
+[03:18:26] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\io.netty\netty-all\4.0.10.Final\9e50bd52ffe257a0e2cd8d971688d6ce7d174325\netty-all-4.0.10.Final.jar, examining for mod candidates
+[03:18:26] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.google.guava\guava\17.0\9c6ef172e8de35fd8d4d8783e4821e57cdef7445\guava-17.0.jar, examining for mod candidates
+[03:18:26] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.apache.commons\commons-lang3\3.3.2\90a3822c38ec8c996e84c16a3477ef632cbc87a3\commons-lang3-3.3.2.jar, examining for mod candidates
+[03:18:26] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\commons-io\commons-io\2.4\b1b6ea3b7e4aa4f492509a4952029cd8e48019ad\commons-io-2.4.jar, examining for mod candidates
+[03:18:26] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\commons-codec\commons-codec\1.9\9ce04e34240f674bc72680f8b843b1457383161a\commons-codec-1.9.jar, examining for mod candidates
+[03:18:26] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\net.java.jinput\jinput\2.0.5\39c7796b469a600f72380316f6b1f11db6c2c7c4\jinput-2.0.5.jar, examining for mod candidates
+[03:18:26] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\net.java.jutils\jutils\1.0.0\e12fe1fda814bd348c1579329c86943d2cd3c6a6\jutils-1.0.0.jar, examining for mod candidates
+[03:18:26] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.google.code.gson\gson\2.2.4\a60a5e993c98c864010053cb901b7eab25306568\gson-2.2.4.jar, examining for mod candidates
+[03:18:26] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.mojang\authlib\1.5.16\ef1582b11fd0943d069cdcb72e99008ac209a283\authlib-1.5.16.jar, examining for mod candidates
+[03:18:26] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.apache.logging.log4j\log4j-api\2.0-beta9\1dd66e68cccd907880229f9e2de1314bd13ff785\log4j-api-2.0-beta9.jar, examining for mod candidates
+[03:18:26] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.apache.logging.log4j\log4j-core\2.0-beta9\678861ba1b2e1fccb594bb0ca03114bb05da9695\log4j-core-2.0-beta9.jar, examining for mod candidates
+[03:18:26] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.lwjgl.lwjgl\lwjgl\2.9.1\f58c5aabcef0e41718a564be9f8e412fff8db847\lwjgl-2.9.1.jar, examining for mod candidates
+[03:18:26] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.lwjgl.lwjgl\lwjgl_util\2.9.1\290d7ba8a1bd9566f5ddf16ad06f09af5ec9b20e\lwjgl_util-2.9.1.jar, examining for mod candidates
+[03:18:26] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\tv.twitch\twitch\5.16\1f55f009c61637c10c0acfb8b5ffc600f30044b4\twitch-5.16.jar, examining for mod candidates
+[03:18:26] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang\scala-actors\2.11.0\8ccfb6541de179bb1c4d45cf414acee069b7f78b\scala-actors-2.11.0.jar, examining for mod candidates
+[03:18:26] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang.modules\scala-xml_2.11\1.0.2\820fbca7e524b530fdadc594c39d49a21ea0337e\scala-xml_2.11-1.0.2.jar, examining for mod candidates
+[03:18:26] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang.modules\scala-parser-combinators_2.11\1.0.1\f05d7345bf5a58924f2837c6c1f4d73a938e1ff0\scala-parser-combinators_2.11-1.0.1.jar, examining for mod candidates
+[03:18:26] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\net.java.jinput\jinput-platform\2.0.5\7ff832a6eb9ab6a767f1ade2b548092d0fa64795\jinput-platform-2.0.5-natives-linux.jar, examining for mod candidates
+[03:18:26] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\net.java.jinput\jinput-platform\2.0.5\385ee093e01f587f30ee1c8a2ee7d408fd732e16\jinput-platform-2.0.5-natives-windows.jar, examining for mod candidates
+[03:18:26] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\net.java.jinput\jinput-platform\2.0.5\53f9c919f34d2ca9de8c51fc4e1e8282029a9232\jinput-platform-2.0.5-natives-osx.jar, examining for mod candidates
+[03:18:26] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\tv.twitch\twitch-platform\5.16\7c6affe439099806a4f552da14c42f9d643d8b23\twitch-platform-5.16-natives-windows-32.jar, examining for mod candidates
+[03:18:26] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\tv.twitch\twitch-platform\5.16\39d0c3d363735b4785598e0e7fbf8297c706a9f9\twitch-platform-5.16-natives-windows-64.jar, examining for mod candidates
+[03:18:26] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\tv.twitch\twitch-platform\5.16\62503ee712766cf77f97252e5902786fd834b8c5\twitch-platform-5.16-natives-osx.jar, examining for mod candidates
+[03:18:26] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\tv.twitch\twitch-external-platform\4.5\18215140f010c05b9f86ef6f0f8871954d2ccebf\twitch-external-platform-4.5-natives-windows-32.jar, examining for mod candidates
+[03:18:26] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\tv.twitch\twitch-external-platform\4.5\c3cde57891b935d41b6680a9c5e1502eeab76d86\twitch-external-platform-4.5-natives-windows-64.jar, examining for mod candidates
+[03:18:26] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.lwjgl.lwjgl\lwjgl-platform\2.9.1\4c517eca808522457dd95ee8fc1fbcdbb602efbe\lwjgl-platform-2.9.1-natives-windows.jar, examining for mod candidates
+[03:18:26] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.lwjgl.lwjgl\lwjgl-platform\2.9.1\aa9aae879af8eb378e22cfc64db56ec2ca9a44d1\lwjgl-platform-2.9.1-natives-linux.jar, examining for mod candidates
+[03:18:26] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.lwjgl.lwjgl\lwjgl-platform\2.9.1\2d12c83fdfbc04ecabf02c7bc8cc54d034f0daac\lwjgl-platform-2.9.1-natives-osx.jar, examining for mod candidates
+[03:18:26] [Server thread/DEBUG] [FML/]: Found a minecraft related directory at C:\Users\Jordan\.gradle\caches\minecraft\net\minecraftforge\forge\1.7.10-10.13.4.1448-1.7.10\start, examining for mod candidates
+[03:18:26] [Server thread/DEBUG] [FML/]: Minecraft jar mods loaded successfully
+[03:18:26] [Server thread/INFO] [FML/]: Found 0 mods from the command line. Injecting into mod discoverer
+[03:18:26] [Server thread/INFO] [FML/]: Searching C:\eclipse\workspace\upTime\mods for mods
+[03:18:26] [Server thread/DEBUG] [FML/]: Examining directory bin for potential mods
+[03:18:26] [Server thread/DEBUG] [FML/]: Found an mcmod.info file in directory bin
+[03:18:26] [Server thread/TRACE] [FML/]: Recursing into package assets
+[03:18:26] [Server thread/TRACE] [FML/]: Recursing into package assets.upTime
+[03:18:26] [Server thread/TRACE] [FML/]: Recursing into package assets.upTime.lang
+[03:18:26] [Server thread/TRACE] [FML/]: Recursing into package assets.upTime.textures
+[03:18:26] [Server thread/TRACE] [FML/]: Recursing into package assets.upTime.textures.blocks
+[03:18:26] [Server thread/TRACE] [FML/]: Recursing into package assets.upTime.textures.items
+[03:18:26] [Server thread/TRACE] [FML/]: Recursing into package blocks
+[03:18:26] [Server thread/TRACE] [FML/]: Recursing into package uptimeR2
+[03:18:26] [Server thread/DEBUG] [FML/]: Identified a mod of type Lcpw/mods/fml/common/Mod; (uptimeR2.Uptime) - loading
+[03:18:26] [Server thread/TRACE] [Uptime/]: Parsed dependency info : [] [] []
+[03:18:26] [Server thread/DEBUG] [FML/]: Examining directory bin for potential mods
+[03:18:26] [Server thread/DEBUG] [FML/]: Found an mcmod.info file in directory bin
+[03:18:26] [Server thread/TRACE] [FML/]: Recursing into package com
+[03:18:26] [Server thread/TRACE] [FML/]: Recursing into package com.example
+[03:18:26] [Server thread/TRACE] [FML/]: Recursing into package com.example.examplemod
+[03:18:26] [Server thread/DEBUG] [FML/]: Identified a mod of type Lcpw/mods/fml/common/Mod; (com.example.examplemod.ExampleMod) - loading
+[03:18:26] [Server thread/TRACE] [examplemod/]: Parsed dependency info : [] [] []
+[03:18:26] [Server thread/DEBUG] [FML/]: Examining file forgeSrc-1.7.10-10.13.4.1448-1.7.10.jar for potential mods
+[03:18:26] [Server thread/DEBUG] [FML/]: The mod container forgeSrc-1.7.10-10.13.4.1448-1.7.10.jar appears to be missing an mcmod.info file
+[03:18:26] [Server thread/DEBUG] [FML/]: Examining file launchwrapper-1.11.jar for potential mods
+[03:18:26] [Server thread/DEBUG] [FML/]: The mod container launchwrapper-1.11.jar appears to be missing an mcmod.info file
+[03:18:26] [Server thread/DEBUG] [FML/]: Examining file jsr305-1.3.9.jar for potential mods
+[03:18:26] [Server thread/DEBUG] [FML/]: The mod container jsr305-1.3.9.jar appears to be missing an mcmod.info file
+[03:18:26] [Server thread/DEBUG] [FML/]: Examining file asm-debug-all-5.0.3.jar for potential mods
+[03:18:26] [Server thread/DEBUG] [FML/]: The mod container asm-debug-all-5.0.3.jar appears to be missing an mcmod.info file
+[03:18:26] [Server thread/DEBUG] [FML/]: Examining file akka-actor_2.11-2.3.3.jar for potential mods
+[03:18:26] [Server thread/DEBUG] [FML/]: The mod container akka-actor_2.11-2.3.3.jar appears to be missing an mcmod.info file
+[03:18:26] [Server thread/DEBUG] [FML/]: Examining file config-1.2.1.jar for potential mods
+[03:18:26] [Server thread/DEBUG] [FML/]: The mod container config-1.2.1.jar appears to be missing an mcmod.info file
+[03:18:26] [Server thread/DEBUG] [FML/]: Examining file scala-actors-migration_2.11-1.1.0.jar for potential mods
+[03:18:26] [Server thread/DEBUG] [FML/]: The mod container scala-actors-migration_2.11-1.1.0.jar appears to be missing an mcmod.info file
+[03:18:26] [Server thread/DEBUG] [FML/]: Examining file scala-compiler-2.11.1.jar for potential mods
+[03:18:26] [Server thread/DEBUG] [FML/]: The mod container scala-compiler-2.11.1.jar appears to be missing an mcmod.info file
+[03:18:26] [Server thread/DEBUG] [FML/]: Examining file scala-continuations-library_2.11-1.0.2.jar for potential mods
+[03:18:26] [Server thread/DEBUG] [FML/]: The mod container scala-continuations-library_2.11-1.0.2.jar appears to be missing an mcmod.info file
+[03:18:26] [Server thread/DEBUG] [FML/]: Examining file scala-continuations-plugin_2.11.1-1.0.2.jar for potential mods
+[03:18:26] [Server thread/DEBUG] [FML/]: The mod container scala-continuations-plugin_2.11.1-1.0.2.jar appears to be missing an mcmod.info file
+[03:18:26] [Server thread/DEBUG] [FML/]: Examining file scala-library-2.11.1.jar for potential mods
+[03:18:26] [Server thread/DEBUG] [FML/]: The mod container scala-library-2.11.1.jar appears to be missing an mcmod.info file
+[03:18:26] [Server thread/DEBUG] [FML/]: Examining file scala-parser-combinators_2.11-1.0.1.jar for potential mods
+[03:18:26] [Server thread/DEBUG] [FML/]: The mod container scala-parser-combinators_2.11-1.0.1.jar appears to be missing an mcmod.info file
+[03:18:26] [Server thread/DEBUG] [FML/]: Examining file scala-reflect-2.11.1.jar for potential mods
+[03:18:26] [Server thread/DEBUG] [FML/]: The mod container scala-reflect-2.11.1.jar appears to be missing an mcmod.info file
+[03:18:27] [Server thread/DEBUG] [FML/]: Examining file scala-swing_2.11-1.0.1.jar for potential mods
+[03:18:27] [Server thread/DEBUG] [FML/]: The mod container scala-swing_2.11-1.0.1.jar appears to be missing an mcmod.info file
+[03:18:27] [Server thread/DEBUG] [FML/]: Examining file scala-xml_2.11-1.0.2.jar for potential mods
+[03:18:27] [Server thread/DEBUG] [FML/]: The mod container scala-xml_2.11-1.0.2.jar appears to be missing an mcmod.info file
+[03:18:27] [Server thread/DEBUG] [FML/]: Examining file jopt-simple-4.5.jar for potential mods
+[03:18:27] [Server thread/DEBUG] [FML/]: The mod container jopt-simple-4.5.jar appears to be missing an mcmod.info file
+[03:18:27] [Server thread/DEBUG] [FML/]: Examining file lzma-0.0.1.jar for potential mods
+[03:18:27] [Server thread/DEBUG] [FML/]: The mod container lzma-0.0.1.jar appears to be missing an mcmod.info file
+[03:18:27] [Server thread/DEBUG] [FML/]: Examining file realms-1.3.5.jar for potential mods
+[03:18:27] [Server thread/DEBUG] [FML/]: The mod container realms-1.3.5.jar appears to be missing an mcmod.info file
+[03:18:27] [Server thread/DEBUG] [FML/]: Examining file commons-compress-1.8.1.jar for potential mods
+[03:18:27] [Server thread/DEBUG] [FML/]: The mod container commons-compress-1.8.1.jar appears to be missing an mcmod.info file
+[03:18:27] [Server thread/DEBUG] [FML/]: Examining file httpclient-4.3.3.jar for potential mods
+[03:18:27] [Server thread/DEBUG] [FML/]: The mod container httpclient-4.3.3.jar appears to be missing an mcmod.info file
+[03:18:27] [Server thread/DEBUG] [FML/]: Examining file commons-logging-1.1.3.jar for potential mods
+[03:18:27] [Server thread/DEBUG] [FML/]: The mod container commons-logging-1.1.3.jar appears to be missing an mcmod.info file
+[03:18:27] [Server thread/DEBUG] [FML/]: Examining file httpcore-4.3.2.jar for potential mods
+[03:18:27] [Server thread/DEBUG] [FML/]: The mod container httpcore-4.3.2.jar appears to be missing an mcmod.info file
+[03:18:27] [Server thread/DEBUG] [FML/]: Examining file vecmath-1.3.1.jar for potential mods
+[03:18:27] [Server thread/DEBUG] [FML/]: The mod container vecmath-1.3.1.jar appears to be missing an mcmod.info file
+[03:18:27] [Server thread/DEBUG] [FML/]: Examining file trove4j-3.0.3.jar for potential mods
+[03:18:27] [Server thread/DEBUG] [FML/]: The mod container trove4j-3.0.3.jar appears to be missing an mcmod.info file
+[03:18:27] [Server thread/DEBUG] [FML/]: Examining file icu4j-core-mojang-51.2.jar for potential mods
+[03:18:27] [Server thread/DEBUG] [FML/]: The mod container icu4j-core-mojang-51.2.jar appears to be missing an mcmod.info file
+[03:18:27] [Server thread/DEBUG] [FML/]: Examining file codecjorbis-20101023.jar for potential mods
+[03:18:27] [Server thread/DEBUG] [FML/]: The mod container codecjorbis-20101023.jar appears to be missing an mcmod.info file
+[03:18:27] [Server thread/DEBUG] [FML/]: Examining file codecwav-20101023.jar for potential mods
+[03:18:27] [Server thread/DEBUG] [FML/]: The mod container codecwav-20101023.jar appears to be missing an mcmod.info file
+[03:18:27] [Server thread/DEBUG] [FML/]: Examining file libraryjavasound-20101123.jar for potential mods
+[03:18:27] [Server thread/DEBUG] [FML/]: The mod container libraryjavasound-20101123.jar appears to be missing an mcmod.info file
+[03:18:27] [Server thread/DEBUG] [FML/]: Examining file librarylwjglopenal-20100824.jar for potential mods
+[03:18:27] [Server thread/DEBUG] [FML/]: The mod container librarylwjglopenal-20100824.jar appears to be missing an mcmod.info file
+[03:18:27] [Server thread/DEBUG] [FML/]: Examining file soundsystem-20120107.jar for potential mods
+[03:18:27] [Server thread/DEBUG] [FML/]: The mod container soundsystem-20120107.jar appears to be missing an mcmod.info file
+[03:18:27] [Server thread/DEBUG] [FML/]: Examining file netty-all-4.0.10.Final.jar for potential mods
+[03:18:27] [Server thread/DEBUG] [FML/]: The mod container netty-all-4.0.10.Final.jar appears to be missing an mcmod.info file
+[03:18:27] [Server thread/DEBUG] [FML/]: Examining file guava-17.0.jar for potential mods
+[03:18:27] [Server thread/DEBUG] [FML/]: The mod container guava-17.0.jar appears to be missing an mcmod.info file
+[03:18:27] [Server thread/DEBUG] [FML/]: Examining file commons-lang3-3.3.2.jar for potential mods
+[03:18:27] [Server thread/DEBUG] [FML/]: The mod container commons-lang3-3.3.2.jar appears to be missing an mcmod.info file
+[03:18:27] [Server thread/DEBUG] [FML/]: Examining file commons-io-2.4.jar for potential mods
+[03:18:27] [Server thread/DEBUG] [FML/]: The mod container commons-io-2.4.jar appears to be missing an mcmod.info file
+[03:18:27] [Server thread/DEBUG] [FML/]: Examining file commons-codec-1.9.jar for potential mods
+[03:18:27] [Server thread/DEBUG] [FML/]: The mod container commons-codec-1.9.jar appears to be missing an mcmod.info file
+[03:18:27] [Server thread/DEBUG] [FML/]: Examining file jinput-2.0.5.jar for potential mods
+[03:18:27] [Server thread/DEBUG] [FML/]: The mod container jinput-2.0.5.jar appears to be missing an mcmod.info file
+[03:18:27] [Server thread/DEBUG] [FML/]: Examining file jutils-1.0.0.jar for potential mods
+[03:18:27] [Server thread/DEBUG] [FML/]: The mod container jutils-1.0.0.jar appears to be missing an mcmod.info file
+[03:18:27] [Server thread/DEBUG] [FML/]: Examining file gson-2.2.4.jar for potential mods
+[03:18:27] [Server thread/DEBUG] [FML/]: The mod container gson-2.2.4.jar appears to be missing an mcmod.info file
+[03:18:27] [Server thread/DEBUG] [FML/]: Examining file authlib-1.5.16.jar for potential mods
+[03:18:27] [Server thread/DEBUG] [FML/]: The mod container authlib-1.5.16.jar appears to be missing an mcmod.info file
+[03:18:27] [Server thread/DEBUG] [FML/]: Examining file log4j-api-2.0-beta9.jar for potential mods
+[03:18:27] [Server thread/DEBUG] [FML/]: The mod container log4j-api-2.0-beta9.jar appears to be missing an mcmod.info file
+[03:18:27] [Server thread/DEBUG] [FML/]: Examining file log4j-core-2.0-beta9.jar for potential mods
+[03:18:27] [Server thread/DEBUG] [FML/]: The mod container log4j-core-2.0-beta9.jar appears to be missing an mcmod.info file
+[03:18:27] [Server thread/DEBUG] [FML/]: Examining file lwjgl-2.9.1.jar for potential mods
+[03:18:27] [Server thread/DEBUG] [FML/]: The mod container lwjgl-2.9.1.jar appears to be missing an mcmod.info file
+[03:18:27] [Server thread/DEBUG] [FML/]: Examining file lwjgl_util-2.9.1.jar for potential mods
+[03:18:27] [Server thread/DEBUG] [FML/]: The mod container lwjgl_util-2.9.1.jar appears to be missing an mcmod.info file
+[03:18:27] [Server thread/DEBUG] [FML/]: Examining file twitch-5.16.jar for potential mods
+[03:18:27] [Server thread/DEBUG] [FML/]: The mod container twitch-5.16.jar appears to be missing an mcmod.info file
+[03:18:27] [Server thread/DEBUG] [FML/]: Examining file scala-actors-2.11.0.jar for potential mods
+[03:18:27] [Server thread/DEBUG] [FML/]: The mod container scala-actors-2.11.0.jar appears to be missing an mcmod.info file
+[03:18:27] [Server thread/DEBUG] [FML/]: Examining file scala-xml_2.11-1.0.2.jar for potential mods
+[03:18:27] [Server thread/DEBUG] [FML/]: The mod container scala-xml_2.11-1.0.2.jar appears to be missing an mcmod.info file
+[03:18:27] [Server thread/DEBUG] [FML/]: Examining file scala-parser-combinators_2.11-1.0.1.jar for potential mods
+[03:18:27] [Server thread/DEBUG] [FML/]: The mod container scala-parser-combinators_2.11-1.0.1.jar appears to be missing an mcmod.info file
+[03:18:27] [Server thread/DEBUG] [FML/]: Examining file jinput-platform-2.0.5-natives-linux.jar for potential mods
+[03:18:27] [Server thread/DEBUG] [FML/]: The mod container jinput-platform-2.0.5-natives-linux.jar appears to be missing an mcmod.info file
+[03:18:27] [Server thread/DEBUG] [FML/]: Examining file jinput-platform-2.0.5-natives-windows.jar for potential mods
+[03:18:27] [Server thread/DEBUG] [FML/]: The mod container jinput-platform-2.0.5-natives-windows.jar appears to be missing an mcmod.info file
+[03:18:27] [Server thread/DEBUG] [FML/]: Examining file jinput-platform-2.0.5-natives-osx.jar for potential mods
+[03:18:27] [Server thread/DEBUG] [FML/]: The mod container jinput-platform-2.0.5-natives-osx.jar appears to be missing an mcmod.info file
+[03:18:27] [Server thread/DEBUG] [FML/]: Examining file twitch-platform-5.16-natives-windows-32.jar for potential mods
+[03:18:27] [Server thread/DEBUG] [FML/]: The mod container twitch-platform-5.16-natives-windows-32.jar appears to be missing an mcmod.info file
+[03:18:27] [Server thread/DEBUG] [FML/]: Examining file twitch-platform-5.16-natives-windows-64.jar for potential mods
+[03:18:27] [Server thread/DEBUG] [FML/]: The mod container twitch-platform-5.16-natives-windows-64.jar appears to be missing an mcmod.info file
+[03:18:27] [Server thread/DEBUG] [FML/]: Examining file twitch-platform-5.16-natives-osx.jar for potential mods
+[03:18:27] [Server thread/DEBUG] [FML/]: The mod container twitch-platform-5.16-natives-osx.jar appears to be missing an mcmod.info file
+[03:18:27] [Server thread/DEBUG] [FML/]: Examining file twitch-external-platform-4.5-natives-windows-32.jar for potential mods
+[03:18:27] [Server thread/DEBUG] [FML/]: The mod container twitch-external-platform-4.5-natives-windows-32.jar appears to be missing an mcmod.info file
+[03:18:27] [Server thread/DEBUG] [FML/]: Examining file twitch-external-platform-4.5-natives-windows-64.jar for potential mods
+[03:18:27] [Server thread/DEBUG] [FML/]: The mod container twitch-external-platform-4.5-natives-windows-64.jar appears to be missing an mcmod.info file
+[03:18:27] [Server thread/DEBUG] [FML/]: Examining file lwjgl-platform-2.9.1-natives-windows.jar for potential mods
+[03:18:27] [Server thread/DEBUG] [FML/]: The mod container lwjgl-platform-2.9.1-natives-windows.jar appears to be missing an mcmod.info file
+[03:18:27] [Server thread/DEBUG] [FML/]: Examining file lwjgl-platform-2.9.1-natives-linux.jar for potential mods
+[03:18:27] [Server thread/DEBUG] [FML/]: The mod container lwjgl-platform-2.9.1-natives-linux.jar appears to be missing an mcmod.info file
+[03:18:27] [Server thread/DEBUG] [FML/]: Examining file lwjgl-platform-2.9.1-natives-osx.jar for potential mods
+[03:18:27] [Server thread/DEBUG] [FML/]: The mod container lwjgl-platform-2.9.1-natives-osx.jar appears to be missing an mcmod.info file
+[03:18:27] [Server thread/DEBUG] [FML/]: Examining directory start for potential mods
+[03:18:27] [Server thread/DEBUG] [FML/]: No mcmod.info file found in directory start
+[03:18:27] [Server thread/TRACE] [FML/]: Recursing into package net
+[03:18:27] [Server thread/TRACE] [FML/]: Recursing into package net.minecraftforge
+[03:18:27] [Server thread/TRACE] [FML/]: Recursing into package net.minecraftforge.gradle
+[03:18:27] [Server thread/TRACE] [FML/]: Recursing into package net.minecraftforge.gradle.tweakers
+[03:18:27] [Server thread/INFO] [FML/]: Forge Mod Loader has identified 5 mods to load
+[03:18:27] [Server thread/TRACE] [FML/]: Received a system property request ''
+[03:18:27] [Server thread/TRACE] [FML/]: System property request managing the state of 0 mods
+[03:18:27] [Server thread/DEBUG] [FML/]: After merging, found state information for 0 mods
+[03:18:27] [Server thread/DEBUG] [FML/]: Found translations in forgeSrc-1.7.10-10.13.4.1448-1.7.10.jar [en_US, af_ZA, ar_SA, br_FR, ca_ES, cs_CZ, da_DK, de_DE, el_GR, en_US, es_ES, fa_IR, fi_FI, fr_FR, he_IL, hu_HU, it_IT, ja_JP, ko_KR, lt_LT, nb_NO, nl_NL, nn_NO, no_NO, pl_PL, pt_BR, pt_PT, ro_RO, ru_RU, sl_SI, sr_SP, sv_SE, tr_TR, uk_UA, vi_VN, zh_CN, zh_TW, en_US]
+[03:18:27] [Server thread/DEBUG] [FML/]: Found translations in forgeSrc-1.7.10-10.13.4.1448-1.7.10.jar [en_US, af_ZA, ar_SA, br_FR, ca_ES, cs_CZ, da_DK, de_DE, el_GR, en_US, es_ES, fa_IR, fi_FI, fr_FR, he_IL, hu_HU, it_IT, ja_JP, ko_KR, lt_LT, nb_NO, nl_NL, nn_NO, no_NO, pl_PL, pt_BR, pt_PT, ro_RO, ru_RU, sl_SI, sr_SP, sv_SE, tr_TR, uk_UA, vi_VN, zh_CN, zh_TW, en_US]
+[03:18:27] [Server thread/DEBUG] [Uptime/]: Enabling mod Uptime
+[03:18:27] [Server thread/DEBUG] [FML/]: Injecting found translation assets for lang en_US at assets/upTime/lang/en_US.lang into language system
+[03:18:27] [Server thread/DEBUG] [examplemod/]: Enabling mod examplemod
+[03:18:27] [Server thread/TRACE] [FML/]: Verifying mod requirements are satisfied
+[03:18:27] [Server thread/TRACE] [FML/]: All mod requirements are satisfied
+[03:18:28] [Server thread/TRACE] [FML/]: Sorting mods into an ordered list
+[03:18:28] [Server thread/TRACE] [FML/]: Mod sorting completed successfully
+[03:18:28] [Server thread/DEBUG] [FML/]: Mod sorting data
+[03:18:28] [Server thread/DEBUG] [FML/]: Uptime(Uptime:2): bin ()
+[03:18:28] [Server thread/DEBUG] [FML/]: examplemod(Example Mod:1.0): bin ()
+[03:18:28] [Server thread/TRACE] [mcp/mcp]: Sending event FMLConstructionEvent to mod mcp
+[03:18:28] [Server thread/TRACE] [mcp/mcp]: Sent event FMLConstructionEvent to mod mcp
+[03:18:28] [Server thread/TRACE] [FML/FML]: Sending event FMLConstructionEvent to mod FML
+[03:18:28] [Server thread/TRACE] [FML/FML]: Mod FML is using network checker : Invoking method checkModLists
+[03:18:28] [Server thread/TRACE] [FML/FML]: Testing mod FML to verify it accepts its own version in a remote connection
+[03:18:28] [Server thread/TRACE] [FML/FML]: The mod FML accepts its own version (7.10.99.99)
+[03:18:28] [Server thread/INFO] [FML/FML]: Attempting connection with missing mods [mcp, FML, Forge, Uptime, examplemod] at CLIENT
+[03:18:28] [Server thread/INFO] [FML/FML]: Attempting connection with missing mods [mcp, FML, Forge, Uptime, examplemod] at SERVER
+[03:18:28] [Server thread/TRACE] [FML/FML]: Sent event FMLConstructionEvent to mod FML
+[03:18:28] [Server thread/TRACE] [Forge/Forge]: Sending event FMLConstructionEvent to mod Forge
+[03:18:28] [Server thread/TRACE] [FML/Forge]: Mod Forge is using network checker : No network checking performed
+[03:18:28] [Server thread/TRACE] [FML/Forge]: Testing mod Forge to verify it accepts its own version in a remote connection
+[03:18:28] [Server thread/TRACE] [FML/Forge]: The mod Forge accepts its own version (10.13.4.1448)
+[03:18:28] [Server thread/TRACE] [Forge/Forge]: Sent event FMLConstructionEvent to mod Forge
+[03:18:28] [Server thread/TRACE] [Uptime/Uptime]: Sending event FMLConstructionEvent to mod Uptime
+[03:18:28] [Server thread/TRACE] [FML/Uptime]: Mod Uptime is using network checker : No network checking performed
+[03:18:28] [Server thread/TRACE] [FML/Uptime]: Testing mod Uptime to verify it accepts its own version in a remote connection
+[03:18:28] [Server thread/TRACE] [FML/Uptime]: The mod Uptime accepts its own version (2)
+[03:18:28] [Server thread/DEBUG] [FML/Uptime]: Attempting to inject @SidedProxy classes into Uptime
+[03:18:28] [Server thread/TRACE] [Uptime/Uptime]: Sent event FMLConstructionEvent to mod Uptime
+[03:18:28] [Server thread/TRACE] [examplemod/examplemod]: Sending event FMLConstructionEvent to mod examplemod
+[03:18:28] [Server thread/TRACE] [FML/examplemod]: Mod examplemod is using network checker : Accepting version 1.0
+[03:18:28] [Server thread/TRACE] [FML/examplemod]: Testing mod examplemod to verify it accepts its own version in a remote connection
+[03:18:28] [Server thread/TRACE] [FML/examplemod]: The mod examplemod accepts its own version (1.0)
+[03:18:28] [Server thread/DEBUG] [FML/examplemod]: Attempting to inject @SidedProxy classes into examplemod
+[03:18:28] [Server thread/TRACE] [examplemod/examplemod]: Sent event FMLConstructionEvent to mod examplemod
+[03:18:28] [Server thread/DEBUG] [FML/]: Mod signature data
+[03:18:28] [Server thread/DEBUG] [FML/]: Valid Signatures:
+[03:18:28] [Server thread/DEBUG] [FML/]: Missing Signatures:
+[03:18:28] [Server thread/DEBUG] [FML/]: mcp (Minecraft Coder Pack 9.05) minecraft.jar
+[03:18:28] [Server thread/DEBUG] [FML/]: FML (Forge Mod Loader 7.10.99.99) forgeSrc-1.7.10-10.13.4.1448-1.7.10.jar
+[03:18:28] [Server thread/DEBUG] [FML/]: Forge (Minecraft Forge 10.13.4.1448) forgeSrc-1.7.10-10.13.4.1448-1.7.10.jar
+[03:18:28] [Server thread/DEBUG] [FML/]: Uptime (Uptime 2) bin
+[03:18:28] [Server thread/DEBUG] [FML/]: examplemod (Example Mod 1.0) bin
+[03:18:28] [Server thread/INFO] [FML/]: Processing ObjectHolder annotations
+[03:18:28] [Server thread/INFO] [FML/]: Found 341 ObjectHolder annotations
+[03:18:28] [Server thread/INFO] [FML/]: Identifying ItemStackHolder annotations
+[03:18:28] [Server thread/INFO] [FML/]: Found 0 ItemStackHolder annotations
+[03:18:28] [Server thread/TRACE] [mcp/mcp]: Sending event FMLPreInitializationEvent to mod mcp
+[03:18:28] [Server thread/TRACE] [mcp/mcp]: Sent event FMLPreInitializationEvent to mod mcp
+[03:18:28] [Server thread/TRACE] [FML/FML]: Sending event FMLPreInitializationEvent to mod FML
+[03:18:28] [Server thread/TRACE] [FML/FML]: Sent event FMLPreInitializationEvent to mod FML
+[03:18:28] [Server thread/TRACE] [Forge/Forge]: Sending event FMLPreInitializationEvent to mod Forge
+[03:18:28] [Server thread/INFO] [FML/Forge]: Configured a dormant chunk cache size of 0
+[03:18:28] [Server thread/TRACE] [Forge/Forge]: Sent event FMLPreInitializationEvent to mod Forge
+[03:18:28] [Server thread/TRACE] [Uptime/Uptime]: Sending event FMLPreInitializationEvent to mod Uptime
+[03:18:28] [Server thread/TRACE] [Uptime/Uptime]: Sent event FMLPreInitializationEvent to mod Uptime
+[03:18:28] [Server thread/TRACE] [examplemod/examplemod]: Sending event FMLPreInitializationEvent to mod examplemod
+[03:18:28] [Server thread/TRACE] [examplemod/examplemod]: Sent event FMLPreInitializationEvent to mod examplemod
+[03:18:28] [Server thread/INFO] [FML/]: Applying holder lookups
+[03:18:28] [Server thread/INFO] [FML/]: Holder lookups applied
+[03:18:28] [Server thread/INFO] [FML/]: Injecting itemstacks
+[03:18:28] [Server thread/INFO] [FML/]: Itemstack injection complete
+[03:18:28] [Server thread/TRACE] [mcp/mcp]: Sending event FMLInitializationEvent to mod mcp
+[03:18:28] [Server thread/TRACE] [mcp/mcp]: Sent event FMLInitializationEvent to mod mcp
+[03:18:28] [Server thread/TRACE] [FML/FML]: Sending event FMLInitializationEvent to mod FML
+[03:18:28] [Server thread/TRACE] [FML/FML]: Sent event FMLInitializationEvent to mod FML
+[03:18:28] [Server thread/TRACE] [Forge/Forge]: Sending event FMLInitializationEvent to mod Forge
+[03:18:28] [Server thread/TRACE] [Forge/Forge]: Sent event FMLInitializationEvent to mod Forge
+[03:18:28] [Server thread/TRACE] [Uptime/Uptime]: Sending event FMLInitializationEvent to mod Uptime
+[03:18:28] [Server thread/TRACE] [Uptime/Uptime]: Sent event FMLInitializationEvent to mod Uptime
+[03:18:28] [Server thread/TRACE] [examplemod/examplemod]: Sending event FMLInitializationEvent to mod examplemod
+[03:18:28] [Server thread/INFO] [STDOUT/examplemod]: [com.example.examplemod.ExampleMod:init:18]: DIRT BLOCK >> tile.dirt
+[03:18:28] [Server thread/TRACE] [examplemod/examplemod]: Sent event FMLInitializationEvent to mod examplemod
+[03:18:28] [Server thread/TRACE] [FML/]: Attempting to deliver 0 IMC messages to mod mcp
+[03:18:28] [Server thread/TRACE] [mcp/mcp]: Sending event IMCEvent to mod mcp
+[03:18:28] [Server thread/TRACE] [mcp/mcp]: Sent event IMCEvent to mod mcp
+[03:18:28] [Server thread/TRACE] [FML/]: Attempting to deliver 0 IMC messages to mod FML
+[03:18:28] [Server thread/TRACE] [FML/FML]: Sending event IMCEvent to mod FML
+[03:18:28] [Server thread/TRACE] [FML/FML]: Sent event IMCEvent to mod FML
+[03:18:28] [Server thread/TRACE] [FML/]: Attempting to deliver 0 IMC messages to mod Forge
+[03:18:28] [Server thread/TRACE] [Forge/Forge]: Sending event IMCEvent to mod Forge
+[03:18:28] [Server thread/TRACE] [Forge/Forge]: Sent event IMCEvent to mod Forge
+[03:18:28] [Server thread/TRACE] [FML/]: Attempting to deliver 0 IMC messages to mod Uptime
+[03:18:28] [Server thread/TRACE] [Uptime/Uptime]: Sending event IMCEvent to mod Uptime
+[03:18:28] [Server thread/TRACE] [Uptime/Uptime]: Sent event IMCEvent to mod Uptime
+[03:18:28] [Server thread/TRACE] [FML/]: Attempting to deliver 0 IMC messages to mod examplemod
+[03:18:28] [Server thread/TRACE] [examplemod/examplemod]: Sending event IMCEvent to mod examplemod
+[03:18:28] [Server thread/TRACE] [examplemod/examplemod]: Sent event IMCEvent to mod examplemod
+[03:18:28] [Server thread/INFO] [FML/]: Injecting itemstacks
+[03:18:28] [Server thread/INFO] [FML/]: Itemstack injection complete
+[03:18:28] [Server thread/TRACE] [mcp/mcp]: Sending event FMLPostInitializationEvent to mod mcp
+[03:18:28] [Server thread/TRACE] [mcp/mcp]: Sent event FMLPostInitializationEvent to mod mcp
+[03:18:28] [Server thread/TRACE] [FML/FML]: Sending event FMLPostInitializationEvent to mod FML
+[03:18:28] [Server thread/TRACE] [FML/FML]: Sent event FMLPostInitializationEvent to mod FML
+[03:18:28] [Server thread/TRACE] [Forge/Forge]: Sending event FMLPostInitializationEvent to mod Forge
+[03:18:29] [Server thread/TRACE] [Forge/Forge]: Sent event FMLPostInitializationEvent to mod Forge
+[03:18:29] [Server thread/TRACE] [Uptime/Uptime]: Sending event FMLPostInitializationEvent to mod Uptime
+[03:18:29] [Server thread/TRACE] [Uptime/Uptime]: Sent event FMLPostInitializationEvent to mod Uptime
+[03:18:29] [Server thread/TRACE] [examplemod/examplemod]: Sending event FMLPostInitializationEvent to mod examplemod
+[03:18:29] [Server thread/TRACE] [examplemod/examplemod]: Sent event FMLPostInitializationEvent to mod examplemod
+[03:18:29] [Server thread/TRACE] [mcp/mcp]: Sending event FMLLoadCompleteEvent to mod mcp
+[03:18:29] [Server thread/TRACE] [mcp/mcp]: Sent event FMLLoadCompleteEvent to mod mcp
+[03:18:29] [Server thread/TRACE] [FML/FML]: Sending event FMLLoadCompleteEvent to mod FML
+[03:18:29] [Server thread/TRACE] [FML/FML]: Sent event FMLLoadCompleteEvent to mod FML
+[03:18:29] [Server thread/TRACE] [Forge/Forge]: Sending event FMLLoadCompleteEvent to mod Forge
+[03:18:29] [Server thread/DEBUG] [FML/Forge]: Forge RecipeSorter Baking:
+[03:18:29] [Server thread/DEBUG] [FML/Forge]: 11: RecipeEntry("Before", UNKNOWN, )
+[03:18:29] [Server thread/DEBUG] [FML/Forge]: 10: RecipeEntry("minecraft:shaped", SHAPED, net.minecraft.item.crafting.ShapedRecipes) Before: minecraft:shapeless
+[03:18:29] [Server thread/DEBUG] [FML/Forge]: 9: RecipeEntry("forge:shapedore", SHAPED, net.minecraftforge.oredict.ShapedOreRecipe) Before: minecraft:shapeless After: minecraft:shaped
+[03:18:29] [Server thread/DEBUG] [FML/Forge]: 8: RecipeEntry("minecraft:mapextending", SHAPED, net.minecraft.item.crafting.RecipesMapExtending) Before: minecraft:shapeless After: minecraft:shaped
+[03:18:29] [Server thread/DEBUG] [FML/Forge]: 7: RecipeEntry("minecraft:shapeless", SHAPELESS, net.minecraft.item.crafting.ShapelessRecipes) After: minecraft:shaped
+[03:18:29] [Server thread/DEBUG] [FML/Forge]: 6: RecipeEntry("forge:shapelessore", SHAPELESS, net.minecraftforge.oredict.ShapelessOreRecipe) After: minecraft:shapeless
+[03:18:29] [Server thread/DEBUG] [FML/Forge]: 5: RecipeEntry("minecraft:armordyes", SHAPELESS, net.minecraft.item.crafting.RecipesArmorDyes) After: minecraft:shapeless
+[03:18:29] [Server thread/DEBUG] [FML/Forge]: 4: RecipeEntry("minecraft:fireworks", SHAPELESS, net.minecraft.item.crafting.RecipeFireworks) After: minecraft:shapeless
+[03:18:29] [Server thread/DEBUG] [FML/Forge]: 3: RecipeEntry("minecraft:bookcloning", SHAPELESS, net.minecraft.item.crafting.RecipeBookCloning) After: minecraft:shapeless
+[03:18:29] [Server thread/DEBUG] [FML/Forge]: 2: RecipeEntry("minecraft:mapcloning", SHAPELESS, net.minecraft.item.crafting.RecipesMapCloning) After: minecraft:shapeless
+[03:18:29] [Server thread/DEBUG] [FML/Forge]: 1: RecipeEntry("After", UNKNOWN, )
+[03:18:29] [Server thread/DEBUG] [FML/Forge]: Sorting recipies
+[03:18:29] [Server thread/TRACE] [Forge/Forge]: Sent event FMLLoadCompleteEvent to mod Forge
+[03:18:29] [Server thread/TRACE] [Uptime/Uptime]: Sending event FMLLoadCompleteEvent to mod Uptime
+[03:18:29] [Server thread/TRACE] [Uptime/Uptime]: Sent event FMLLoadCompleteEvent to mod Uptime
+[03:18:29] [Server thread/TRACE] [examplemod/examplemod]: Sending event FMLLoadCompleteEvent to mod examplemod
+[03:18:29] [Server thread/TRACE] [examplemod/examplemod]: Sent event FMLLoadCompleteEvent to mod examplemod
+[03:18:29] [Server thread/DEBUG] [FML/]: Freezing block and item id maps
+[03:18:29] [Server thread/DEBUG] [FML/]: Registry consistency check successful
+[03:18:29] [Server thread/DEBUG] [FML/]: Registry consistency check successful
+[03:18:29] [Server thread/INFO] [FML/]: Forge Mod Loader has successfully loaded 5 mods
+[03:18:29] [Server thread/TRACE] [mcp/mcp]: Sending event FMLServerAboutToStartEvent to mod mcp
+[03:18:29] [Server thread/TRACE] [mcp/mcp]: Sent event FMLServerAboutToStartEvent to mod mcp
+[03:18:29] [Server thread/TRACE] [FML/FML]: Sending event FMLServerAboutToStartEvent to mod FML
+[03:18:29] [Server thread/TRACE] [FML/FML]: Sent event FMLServerAboutToStartEvent to mod FML
+[03:18:29] [Server thread/TRACE] [Forge/Forge]: Sending event FMLServerAboutToStartEvent to mod Forge
+[03:18:29] [Server thread/TRACE] [Forge/Forge]: Sent event FMLServerAboutToStartEvent to mod Forge
+[03:18:29] [Server thread/TRACE] [Uptime/Uptime]: Sending event FMLServerAboutToStartEvent to mod Uptime
+[03:18:29] [Server thread/TRACE] [Uptime/Uptime]: Sent event FMLServerAboutToStartEvent to mod Uptime
+[03:18:29] [Server thread/TRACE] [examplemod/examplemod]: Sending event FMLServerAboutToStartEvent to mod examplemod
+[03:18:29] [Server thread/TRACE] [examplemod/examplemod]: Sent event FMLServerAboutToStartEvent to mod examplemod
+[03:18:29] [Server thread/INFO] [FML/]: Injecting existing block and item data into this server instance
+[03:18:29] [Server thread/DEBUG] [FML/]: Registry consistency check successful
+[03:18:29] [Server thread/INFO] [FML/]: Injecting new block and item data into this server instance.
+[03:18:29] [Server thread/INFO] [FML/]: Injected new block/item Uptime:genericDirt: 165 (init) -> 165 (map).
+[03:18:29] [Server thread/INFO] [FML/]: Injected new block/item Uptime:genericDirt: 165 (init) -> 165 (map).
+[03:18:29] [Server thread/DEBUG] [FML/]: Registry consistency check successful
+[03:18:29] [Server thread/TRACE] [FML/]: Skipping remap event - no remaps occured
+[03:18:29] [Server thread/INFO] [FML/]: Applying holder lookups
+[03:18:29] [Server thread/INFO] [FML/]: Holder lookups applied
+[03:18:29] [Server thread/DEBUG] [FML/]: Loading persistent fluid defaults from world
+[03:18:29] [Server thread/DEBUG] [FML/]: The fluid Forge:lava has been selected as the default fluid for lava
+[03:18:29] [Server thread/DEBUG] [FML/]: The fluid Forge:water has been selected as the default fluid for water
+[03:18:29] [Server thread/INFO] [FML/]: Loading dimension 0 (world) (net.minecraft.server.dedicated.DedicatedServer@4ce44e69)
+[03:18:29] [Server thread/INFO] [FML/]: Loading dimension 1 (world) (net.minecraft.server.dedicated.DedicatedServer@4ce44e69)
+[03:18:29] [Server thread/INFO] [FML/]: Loading dimension -1 (world) (net.minecraft.server.dedicated.DedicatedServer@4ce44e69)
+[03:18:30] [Server thread/TRACE] [mcp/mcp]: Sending event FMLServerStartingEvent to mod mcp
+[03:18:30] [Server thread/TRACE] [mcp/mcp]: Sent event FMLServerStartingEvent to mod mcp
+[03:18:30] [Server thread/TRACE] [FML/FML]: Sending event FMLServerStartingEvent to mod FML
+[03:18:30] [Server thread/TRACE] [FML/FML]: Sent event FMLServerStartingEvent to mod FML
+[03:18:30] [Server thread/TRACE] [Forge/Forge]: Sending event FMLServerStartingEvent to mod Forge
+[03:18:30] [Server thread/TRACE] [Forge/Forge]: Sent event FMLServerStartingEvent to mod Forge
+[03:18:30] [Server thread/TRACE] [Uptime/Uptime]: Sending event FMLServerStartingEvent to mod Uptime
+[03:18:30] [Server thread/INFO] [FML/Uptime]: Uptime: Found uptime file, restoring it.
+[03:18:30] [Server thread/TRACE] [FML/Uptime]: Uptime: Uptime is currently saveing its data.
+[03:18:30] [Server thread/TRACE] [FML/Uptime]: Uptime: Uptime has finished saving it's data.
+[03:18:30] [Server thread/TRACE] [Uptime/Uptime]: Sent event FMLServerStartingEvent to mod Uptime
+[03:18:30] [Server thread/TRACE] [examplemod/examplemod]: Sending event FMLServerStartingEvent to mod examplemod
+[03:18:30] [Server thread/TRACE] [examplemod/examplemod]: Sent event FMLServerStartingEvent to mod examplemod
+[03:18:30] [Server thread/TRACE] [mcp/mcp]: Sending event FMLServerStartedEvent to mod mcp
+[03:18:30] [Server thread/TRACE] [mcp/mcp]: Sent event FMLServerStartedEvent to mod mcp
+[03:18:30] [Server thread/TRACE] [FML/FML]: Sending event FMLServerStartedEvent to mod FML
+[03:18:30] [Server thread/TRACE] [FML/FML]: Sent event FMLServerStartedEvent to mod FML
+[03:18:30] [Server thread/TRACE] [Forge/Forge]: Sending event FMLServerStartedEvent to mod Forge
+[03:18:30] [Server thread/TRACE] [Forge/Forge]: Sent event FMLServerStartedEvent to mod Forge
+[03:18:30] [Server thread/TRACE] [Uptime/Uptime]: Sending event FMLServerStartedEvent to mod Uptime
+[03:18:30] [Server thread/TRACE] [Uptime/Uptime]: Sent event FMLServerStartedEvent to mod Uptime
+[03:18:30] [Server thread/TRACE] [examplemod/examplemod]: Sending event FMLServerStartedEvent to mod examplemod
+[03:18:30] [Server thread/TRACE] [examplemod/examplemod]: Sent event FMLServerStartedEvent to mod examplemod
+[03:18:43] [Netty IO #2/TRACE] [FML/]: $ClientHello->FMLHandshakeServerState$2:HELLO
+[03:18:43] [Netty IO #2/INFO] [FML/]: Client protocol version 2
+[03:18:43] [Netty IO #2/TRACE] [FML/]: $ModList:4 mods->FMLHandshakeServerState$2:HELLO
+[03:18:43] [Netty IO #2/INFO] [FML/]: Client attempting to join with 4 mods : FML@7.10.99.99,Forge@10.13.4.1448,mcp@9.05,examplemod@1.0
+[03:18:43] [Netty IO #2/INFO] [FML/]: Attempting connection with missing mods [Uptime] at CLIENT
+[03:18:43] [Netty IO #2/TRACE] [FML/]: $HandshakeAck:{2}->FMLHandshakeServerState$3:WAITINGCACK
+[03:19:15] [Server thread/DEBUG] [FML/]: Gathering id map for writing to world save world
+[03:19:30] [AWT-EventQueue-0/TRACE] [FML/]: Uptime: Uptime is currently saveing its data.
+[03:19:30] [AWT-EventQueue-0/TRACE] [FML/]: Uptime: Uptime has finished saving it's data.
+[03:20:00] [Server thread/DEBUG] [FML/]: Gathering id map for writing to world save world
+[03:20:30] [AWT-EventQueue-0/TRACE] [FML/]: Uptime: Uptime is currently saveing its data.
+[03:20:30] [AWT-EventQueue-0/TRACE] [FML/]: Uptime: Uptime has finished saving it's data.
+[03:20:45] [Server thread/DEBUG] [FML/]: Gathering id map for writing to world save world
+[03:21:30] [AWT-EventQueue-0/TRACE] [FML/]: Uptime: Uptime is currently saveing its data.
+[03:21:30] [AWT-EventQueue-0/TRACE] [FML/]: Uptime: Uptime has finished saving it's data.
+[03:21:30] [Server thread/DEBUG] [FML/]: Gathering id map for writing to world save world
+[03:22:15] [Server thread/DEBUG] [FML/]: Gathering id map for writing to world save world
+[03:22:30] [AWT-EventQueue-0/TRACE] [FML/]: Uptime: Uptime is currently saveing its data.
+[03:22:30] [AWT-EventQueue-0/TRACE] [FML/]: Uptime: Uptime has finished saving it's data.
+[03:23:00] [Server thread/DEBUG] [FML/]: Gathering id map for writing to world save world
+[03:23:30] [AWT-EventQueue-0/TRACE] [FML/]: Uptime: Uptime is currently saveing its data.
+[03:23:30] [AWT-EventQueue-0/TRACE] [FML/]: Uptime: Uptime has finished saving it's data.
+[03:23:45] [Server thread/DEBUG] [FML/]: Gathering id map for writing to world save world
+[03:24:30] [AWT-EventQueue-0/TRACE] [FML/]: Uptime: Uptime is currently saveing its data.
+[03:24:30] [AWT-EventQueue-0/TRACE] [FML/]: Uptime: Uptime has finished saving it's data.
+[03:24:30] [Server thread/DEBUG] [FML/]: Gathering id map for writing to world save world
+[03:25:15] [Server thread/DEBUG] [FML/]: Gathering id map for writing to world save world
+[03:25:20] [Server thread/TRACE] [mcp/mcp]: Sending event FMLServerStoppingEvent to mod mcp
+[03:25:20] [Server thread/TRACE] [mcp/mcp]: Sent event FMLServerStoppingEvent to mod mcp
+[03:25:20] [Server thread/TRACE] [FML/FML]: Sending event FMLServerStoppingEvent to mod FML
+[03:25:20] [Server thread/TRACE] [FML/FML]: Sent event FMLServerStoppingEvent to mod FML
+[03:25:20] [Server thread/TRACE] [Forge/Forge]: Sending event FMLServerStoppingEvent to mod Forge
+[03:25:20] [Server thread/TRACE] [Forge/Forge]: Sent event FMLServerStoppingEvent to mod Forge
+[03:25:20] [Server thread/TRACE] [Uptime/Uptime]: Sending event FMLServerStoppingEvent to mod Uptime
+[03:25:20] [Server thread/TRACE] [FML/Uptime]: Uptime: Uptime is currently saveing its data.
+[03:25:20] [Server thread/TRACE] [FML/Uptime]: Uptime: Uptime has finished saving it's data.
+[03:25:20] [Server thread/TRACE] [Uptime/Uptime]: Sent event FMLServerStoppingEvent to mod Uptime
+[03:25:20] [Server thread/TRACE] [examplemod/examplemod]: Sending event FMLServerStoppingEvent to mod examplemod
+[03:25:20] [Server thread/TRACE] [examplemod/examplemod]: Sent event FMLServerStoppingEvent to mod examplemod
+[03:25:20] [Server thread/DEBUG] [FML/]: Gathering id map for writing to world save world
+[03:25:20] [Server thread/INFO] [FML/]: Unloading dimension 0
+[03:25:20] [Server thread/INFO] [FML/]: Unloading dimension -1
+[03:25:20] [Server thread/INFO] [FML/]: Unloading dimension 1
+[03:25:20] [Server thread/DEBUG] [FML/]: Reverting to frozen data state.
+[03:25:20] [Server thread/INFO] [FML/]: Applying holder lookups
+[03:25:20] [Server thread/INFO] [FML/]: Holder lookups applied
+[03:25:20] [Server thread/TRACE] [mcp/mcp]: Sending event FMLServerStoppedEvent to mod mcp
+[03:25:20] [Server thread/TRACE] [mcp/mcp]: Sent event FMLServerStoppedEvent to mod mcp
+[03:25:20] [Server thread/TRACE] [FML/FML]: Sending event FMLServerStoppedEvent to mod FML
+[03:25:20] [Server thread/TRACE] [FML/FML]: Sent event FMLServerStoppedEvent to mod FML
+[03:25:20] [Server thread/TRACE] [Forge/Forge]: Sending event FMLServerStoppedEvent to mod Forge
+[03:25:20] [Server thread/TRACE] [Forge/Forge]: Sent event FMLServerStoppedEvent to mod Forge
+[03:25:20] [Server thread/TRACE] [Uptime/Uptime]: Sending event FMLServerStoppedEvent to mod Uptime
+[03:25:20] [Server thread/TRACE] [Uptime/Uptime]: Sent event FMLServerStoppedEvent to mod Uptime
+[03:25:20] [Server thread/TRACE] [examplemod/examplemod]: Sending event FMLServerStoppedEvent to mod examplemod
+[03:25:20] [Server thread/TRACE] [examplemod/examplemod]: Sent event FMLServerStoppedEvent to mod examplemod
diff --git a/logs/fml-server-latest.log b/logs/fml-server-latest.log
new file mode 100644
index 0000000000..5d86d647ff
--- /dev/null
+++ b/logs/fml-server-latest.log
@@ -0,0 +1,639 @@
+[13:00:56] [main/DEBUG] [FML/]: Injecting tracing printstreams for STDOUT/STDERR.
+[13:00:56] [main/INFO] [FML/]: Forge Mod Loader version 7.99.16.1448 for Minecraft 1.7.10 loading
+[13:00:56] [main/INFO] [FML/]: Java is Java HotSpot(TM) 64-Bit Server VM, version 1.8.0_60, running on Windows 7:amd64:6.1, installed at C:\Program Files\Java\jre1.8.0_60
+[13:00:56] [main/DEBUG] [FML/]: Java classpath at launch is C:\eclipse\workspace\MiscUtil\bin;C:\eclipse\Forge\bin;C:\Users\Jordan\.gradle\caches\minecraft\net\minecraftforge\forge\1.7.10-10.13.4.1448-1.7.10\forgeSrc-1.7.10-10.13.4.1448-1.7.10.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\net.minecraft\launchwrapper\1.11\9c0592c6e1e9ea296a70948081bd4cc84dda1289\launchwrapper-1.11.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.google.code.findbugs\jsr305\1.3.9\40719ea6961c0cb6afaeb6a921eaa1f6afd4cfdf\jsr305-1.3.9.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.ow2.asm\asm-debug-all\5.0.3\f9e364ae2a66ce2a543012a4668856e84e5dab74\asm-debug-all-5.0.3.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.typesafe.akka\akka-actor_2.11\2.3.3\ed62e9fc709ca0f2ff1a3220daa8b70a2870078e\akka-actor_2.11-2.3.3.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.typesafe\config\1.2.1\f771f71fdae3df231bcd54d5ca2d57f0bf93f467\config-1.2.1.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang\scala-actors-migration_2.11\1.1.0\dfa8bc42b181d5b9f1a5dd147f8ae308b893eb6f\scala-actors-migration_2.11-1.1.0.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang\scala-compiler\2.11.1\56ea2e6c025e0821f28d73ca271218b8dd04926a\scala-compiler-2.11.1.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang.plugins\scala-continuations-library_2.11\1.0.2\e517c53a7e9acd6b1668c5a35eccbaa3bab9aac\scala-continuations-library_2.11-1.0.2.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang.plugins\scala-continuations-plugin_2.11.1\1.0.2\f361a3283452c57fa30c1ee69448995de23c60f7\scala-continuations-plugin_2.11.1-1.0.2.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang\scala-library\2.11.1\e11da23da3eabab9f4777b9220e60d44c1aab6a\scala-library-2.11.1.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang\scala-parser-combinators_2.11\1.0.1\f05d7345bf5a58924f2837c6c1f4d73a938e1ff0\scala-parser-combinators_2.11-1.0.1.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang\scala-reflect\2.11.1\6580347e61cc7f8e802941e7fde40fa83b8badeb\scala-reflect-2.11.1.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang\scala-swing_2.11\1.0.1\b1cdd92bd47b1e1837139c1c53020e86bb9112ae\scala-swing_2.11-1.0.1.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang\scala-xml_2.11\1.0.2\7a80ec00aec122fba7cd4e0d4cdd87ff7e4cb6d0\scala-xml_2.11-1.0.2.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\net.sf.jopt-simple\jopt-simple\4.5\6065cc95c661255349c1d0756657be17c29a4fd3\jopt-simple-4.5.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\lzma\lzma\0.0.1\521616dc7487b42bef0e803bd2fa3faf668101d7\lzma-0.0.1.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.mojang\realms\1.3.5\807ae355ee63583becd7ea60e76aab1532bb42e\realms-1.3.5.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.apache.commons\commons-compress\1.8.1\a698750c16740fd5b3871425f4cb3bbaa87f529d\commons-compress-1.8.1.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.apache.httpcomponents\httpclient\4.3.3\18f4247ff4572a074444572cee34647c43e7c9c7\httpclient-4.3.3.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\commons-logging\commons-logging\1.1.3\f6f66e966c70a83ffbdb6f17a0919eaf7c8aca7f\commons-logging-1.1.3.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.apache.httpcomponents\httpcore\4.3.2\31fbbff1ddbf98f3aa7377c94d33b0447c646b6e\httpcore-4.3.2.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\java3d\vecmath\1.3.1\a0ae4f51da409fa0c20fa0ca59e6bbc9413ae71d\vecmath-1.3.1.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\net.sf.trove4j\trove4j\3.0.3\42ccaf4761f0dfdfa805c9e340d99a755907e2dd\trove4j-3.0.3.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.ibm.icu\icu4j-core-mojang\51.2\63d216a9311cca6be337c1e458e587f99d382b84\icu4j-core-mojang-51.2.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.paulscode\codecjorbis\20101023\c73b5636faf089d9f00e8732a829577de25237ee\codecjorbis-20101023.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.paulscode\codecwav\20101023\12f031cfe88fef5c1dd36c563c0a3a69bd7261da\codecwav-20101023.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.paulscode\libraryjavasound\20101123\5c5e304366f75f9eaa2e8cca546a1fb6109348b3\libraryjavasound-20101123.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.paulscode\librarylwjglopenal\20100824\73e80d0794c39665aec3f62eee88ca91676674ef\librarylwjglopenal-20100824.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.paulscode\soundsystem\20120107\419c05fe9be71f792b2d76cfc9b67f1ed0fec7f6\soundsystem-20120107.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\io.netty\netty-all\4.0.10.Final\9e50bd52ffe257a0e2cd8d971688d6ce7d174325\netty-all-4.0.10.Final.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.google.guava\guava\17.0\9c6ef172e8de35fd8d4d8783e4821e57cdef7445\guava-17.0.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.apache.commons\commons-lang3\3.3.2\90a3822c38ec8c996e84c16a3477ef632cbc87a3\commons-lang3-3.3.2.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\commons-io\commons-io\2.4\b1b6ea3b7e4aa4f492509a4952029cd8e48019ad\commons-io-2.4.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\commons-codec\commons-codec\1.9\9ce04e34240f674bc72680f8b843b1457383161a\commons-codec-1.9.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\net.java.jinput\jinput\2.0.5\39c7796b469a600f72380316f6b1f11db6c2c7c4\jinput-2.0.5.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\net.java.jutils\jutils\1.0.0\e12fe1fda814bd348c1579329c86943d2cd3c6a6\jutils-1.0.0.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.google.code.gson\gson\2.2.4\a60a5e993c98c864010053cb901b7eab25306568\gson-2.2.4.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.mojang\authlib\1.5.16\ef1582b11fd0943d069cdcb72e99008ac209a283\authlib-1.5.16.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.apache.logging.log4j\log4j-api\2.0-beta9\1dd66e68cccd907880229f9e2de1314bd13ff785\log4j-api-2.0-beta9.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.apache.logging.log4j\log4j-core\2.0-beta9\678861ba1b2e1fccb594bb0ca03114bb05da9695\log4j-core-2.0-beta9.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.lwjgl.lwjgl\lwjgl\2.9.1\f58c5aabcef0e41718a564be9f8e412fff8db847\lwjgl-2.9.1.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.lwjgl.lwjgl\lwjgl_util\2.9.1\290d7ba8a1bd9566f5ddf16ad06f09af5ec9b20e\lwjgl_util-2.9.1.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\tv.twitch\twitch\5.16\1f55f009c61637c10c0acfb8b5ffc600f30044b4\twitch-5.16.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang\scala-actors\2.11.0\8ccfb6541de179bb1c4d45cf414acee069b7f78b\scala-actors-2.11.0.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang.modules\scala-xml_2.11\1.0.2\820fbca7e524b530fdadc594c39d49a21ea0337e\scala-xml_2.11-1.0.2.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang.modules\scala-parser-combinators_2.11\1.0.1\f05d7345bf5a58924f2837c6c1f4d73a938e1ff0\scala-parser-combinators_2.11-1.0.1.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\net.java.jinput\jinput-platform\2.0.5\7ff832a6eb9ab6a767f1ade2b548092d0fa64795\jinput-platform-2.0.5-natives-linux.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\net.java.jinput\jinput-platform\2.0.5\385ee093e01f587f30ee1c8a2ee7d408fd732e16\jinput-platform-2.0.5-natives-windows.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\net.java.jinput\jinput-platform\2.0.5\53f9c919f34d2ca9de8c51fc4e1e8282029a9232\jinput-platform-2.0.5-natives-osx.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\tv.twitch\twitch-platform\5.16\7c6affe439099806a4f552da14c42f9d643d8b23\twitch-platform-5.16-natives-windows-32.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\tv.twitch\twitch-platform\5.16\39d0c3d363735b4785598e0e7fbf8297c706a9f9\twitch-platform-5.16-natives-windows-64.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\tv.twitch\twitch-platform\5.16\62503ee712766cf77f97252e5902786fd834b8c5\twitch-platform-5.16-natives-osx.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\tv.twitch\twitch-external-platform\4.5\18215140f010c05b9f86ef6f0f8871954d2ccebf\twitch-external-platform-4.5-natives-windows-32.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\tv.twitch\twitch-external-platform\4.5\c3cde57891b935d41b6680a9c5e1502eeab76d86\twitch-external-platform-4.5-natives-windows-64.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.lwjgl.lwjgl\lwjgl-platform\2.9.1\4c517eca808522457dd95ee8fc1fbcdbb602efbe\lwjgl-platform-2.9.1-natives-windows.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.lwjgl.lwjgl\lwjgl-platform\2.9.1\aa9aae879af8eb378e22cfc64db56ec2ca9a44d1\lwjgl-platform-2.9.1-natives-linux.jar;C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.lwjgl.lwjgl\lwjgl-platform\2.9.1\2d12c83fdfbc04ecabf02c7bc8cc54d034f0daac\lwjgl-platform-2.9.1-natives-osx.jar;C:\Users\Jordan\.gradle\caches\minecraft\net\minecraftforge\forge\1.7.10-10.13.4.1448-1.7.10\start;C:\eclipse\workspace\MiscUtil\libs\industrialcraft-2-2.2.720-experimental-api.jar
+[13:00:56] [main/DEBUG] [FML/]: Java library path at launch is C:\Program Files\Java\jre1.8.0_60\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:/Program Files/Java/jre1.8.0_60/bin/server;C:/Program Files/Java/jre1.8.0_60/bin;C:/Program Files/Java/jre1.8.0_60/lib/amd64;C:\ProgramData\Oracle\Java\javapath;C:\Program Files (x86)\Intel\iCLS Client\;C:\Program Files\Intel\iCLS Client\;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files\FileBot\;C:\Program Files (x86)\Skype\Phone\;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files (x86)\Paragon Software\Paragon ExtFS for Windows;C:\eclipse;;.
+[13:00:56] [main/INFO] [FML/]: Managed to load a deobfuscated Minecraft name- we are in a deobfuscated environment. Skipping runtime deobfuscation
+[13:00:56] [main/DEBUG] [FML/]: Instantiating coremod class FMLCorePlugin
+[13:00:56] [main/DEBUG] [FML/]: Added access transformer class cpw.mods.fml.common.asm.transformers.AccessTransformer to enqueued access transformers
+[13:00:56] [main/DEBUG] [FML/]: Enqueued coremod FMLCorePlugin
+[13:00:56] [main/DEBUG] [FML/]: Instantiating coremod class FMLForgePlugin
+[13:00:56] [main/DEBUG] [FML/]: Added access transformer class net.minecraftforge.transformers.ForgeAccessTransformer to enqueued access transformers
+[13:00:56] [main/DEBUG] [FML/]: Enqueued coremod FMLForgePlugin
+[13:00:56] [main/DEBUG] [FML/]: All fundamental core mods are successfully located
+[13:00:56] [main/DEBUG] [FML/]: Attempting to load commandline specified mods, relative to C:\eclipse\workspace\MiscUtil\.
+[13:00:56] [main/DEBUG] [FML/]: Discovering coremods
+[13:00:56] [main/DEBUG] [FML/]: Examining for coremod candidacy CodeChickenCore-1.7.10-1.0.4.29-dev.jar
+[13:00:56] [main/TRACE] [FML/]: Adding CodeChickenCore-1.7.10-1.0.4.29-dev.jar to the list of known coremods, it will not be examined again
+[13:00:56] [main/DEBUG] [FML/]: Instantiating coremod class CodeChickenCorePlugin
+[13:00:56] [main/WARN] [FML/]: The coremod codechicken.core.launch.CodeChickenCorePlugin does not have a MCVersion annotation, it may cause issues with this version of Minecraft
+[13:00:56] [main/DEBUG] [FML/]: Added access transformer class codechicken.core.asm.CodeChickenAccessTransformer to enqueued access transformers
+[13:00:56] [main/DEBUG] [FML/]: Enqueued coremod CodeChickenCorePlugin
+[13:00:56] [main/DEBUG] [FML/]: Examining for coremod candidacy CodeChickenLib-1.7.10-1.1.1.99-dev.jar
+[13:00:56] [main/DEBUG] [FML/]: Not found coremod data in CodeChickenLib-1.7.10-1.1.1.99-dev.jar
+[13:00:56] [main/INFO] [LaunchWrapper/]: Calling tweak class net.minecraftforge.gradle.tweakers.CoremodTweaker
+[13:00:56] [main/INFO] [GradleStart/]: Injecting location in coremod cpw.mods.fml.relauncher.FMLCorePlugin
+[13:00:56] [main/INFO] [GradleStart/]: Injecting location in coremod net.minecraftforge.classloading.FMLForgePlugin
+[13:00:56] [main/INFO] [GradleStart/]: Injecting location in coremod codechicken.core.asm.MCPDeobfuscationTransformer.LoadPlugin
+[13:00:56] [main/INFO] [GradleStart/]: Injecting location in coremod codechicken.core.launch.CodeChickenCorePlugin
+[13:00:56] [main/INFO] [LaunchWrapper/]: Loading tweak class name cpw.mods.fml.common.launcher.FMLInjectionAndSortingTweaker
+[13:00:56] [main/INFO] [LaunchWrapper/]: Loading tweak class name cpw.mods.fml.common.launcher.FMLDeobfTweaker
+[13:00:56] [main/INFO] [LaunchWrapper/]: Loading tweak class name net.minecraftforge.gradle.tweakers.AccessTransformerTweaker
+[13:00:56] [main/INFO] [LaunchWrapper/]: Calling tweak class cpw.mods.fml.common.launcher.FMLInjectionAndSortingTweaker
+[13:00:56] [main/INFO] [LaunchWrapper/]: Calling tweak class cpw.mods.fml.common.launcher.FMLInjectionAndSortingTweaker
+[13:00:56] [main/INFO] [LaunchWrapper/]: Calling tweak class cpw.mods.fml.relauncher.CoreModManager$FMLPluginWrapper
+[13:00:56] [main/DEBUG] [FML/]: Injecting coremod FMLCorePlugin {cpw.mods.fml.relauncher.FMLCorePlugin} class transformers
+[13:00:56] [main/TRACE] [FML/]: Registering transformer cpw.mods.fml.common.asm.transformers.MarkerTransformer
+[13:00:56] [main/TRACE] [FML/]: Registering transformer cpw.mods.fml.common.asm.transformers.SideTransformer
+[13:00:56] [main/TRACE] [FML/]: Registering transformer cpw.mods.fml.common.asm.transformers.EventSubscriptionTransformer
+[13:00:56] [main/DEBUG] [FML/]: Injection complete
+[13:00:56] [main/DEBUG] [FML/]: Running coremod plugin for FMLCorePlugin {cpw.mods.fml.relauncher.FMLCorePlugin}
+[13:00:56] [main/DEBUG] [FML/]: Running coremod plugin FMLCorePlugin
+[13:00:56] [main/ERROR] [FML/]: The binary patch set is missing. Either you are in a development environment, or things are not going to work!
+[13:00:58] [main/ERROR] [FML/]: FML appears to be missing any signature data. This is not a good thing
+[13:00:58] [main/DEBUG] [FML/]: Coremod plugin class FMLCorePlugin run successfully
+[13:00:58] [main/INFO] [LaunchWrapper/]: Calling tweak class cpw.mods.fml.relauncher.CoreModManager$FMLPluginWrapper
+[13:00:58] [main/DEBUG] [FML/]: Injecting coremod FMLForgePlugin {net.minecraftforge.classloading.FMLForgePlugin} class transformers
+[13:00:58] [main/TRACE] [FML/]: Registering transformer net.minecraftforge.classloading.FluidIdTransformer
+[13:00:58] [main/DEBUG] [FML/]: Injection complete
+[13:00:58] [main/DEBUG] [FML/]: Running coremod plugin for FMLForgePlugin {net.minecraftforge.classloading.FMLForgePlugin}
+[13:00:58] [main/DEBUG] [FML/]: Running coremod plugin FMLForgePlugin
+[13:00:58] [main/DEBUG] [FML/]: Coremod plugin class FMLForgePlugin run successfully
+[13:00:58] [main/INFO] [LaunchWrapper/]: Calling tweak class cpw.mods.fml.relauncher.CoreModManager$FMLPluginWrapper
+[13:00:58] [main/DEBUG] [FML/]: Injecting coremod CCCDeobfPlugin {codechicken.core.asm.MCPDeobfuscationTransformer$LoadPlugin} class transformers
+[13:00:58] [main/DEBUG] [FML/]: Injection complete
+[13:00:58] [main/DEBUG] [FML/]: Running coremod plugin for CCCDeobfPlugin {codechicken.core.asm.MCPDeobfuscationTransformer$LoadPlugin}
+[13:00:58] [main/DEBUG] [FML/]: Running coremod plugin CCCDeobfPlugin
+[13:00:58] [main/DEBUG] [FML/]: Coremod plugin class LoadPlugin run successfully
+[13:00:58] [main/INFO] [LaunchWrapper/]: Calling tweak class cpw.mods.fml.relauncher.CoreModManager$FMLPluginWrapper
+[13:00:58] [main/DEBUG] [FML/]: Injecting coremod CodeChickenCorePlugin {codechicken.core.launch.CodeChickenCorePlugin} class transformers
+[13:00:58] [main/TRACE] [FML/]: Registering transformer codechicken.lib.asm.ClassHeirachyManager
+[13:00:58] [main/TRACE] [FML/]: Registering transformer codechicken.core.asm.InterfaceDependancyTransformer
+[13:00:58] [main/TRACE] [FML/]: Registering transformer codechicken.core.asm.TweakTransformer
+[13:00:58] [main/TRACE] [FML/]: Registering transformer codechicken.core.asm.DelegatedTransformer
+[13:00:58] [main/TRACE] [FML/]: Registering transformer codechicken.core.asm.DefaultImplementationTransformer
+[13:00:58] [main/DEBUG] [FML/]: Injection complete
+[13:00:58] [main/DEBUG] [FML/]: Running coremod plugin for CodeChickenCorePlugin {codechicken.core.launch.CodeChickenCorePlugin}
+[13:00:58] [main/DEBUG] [FML/]: Running coremod plugin CodeChickenCorePlugin
+[13:00:58] [main/DEBUG] [FML/]: Coremod plugin class CodeChickenCorePlugin run successfully
+[13:00:58] [main/INFO] [LaunchWrapper/]: Calling tweak class cpw.mods.fml.common.launcher.FMLDeobfTweaker
+[13:00:58] [main/DEBUG] [FML/]: Loaded 57 rules from AccessTransformer config file fml_at.cfg
+[13:00:58] [main/DEBUG] [FML/]: Loaded 89 rules from AccessTransformer config file forge_at.cfg
+[13:00:58] [main/DEBUG] [FML/]: Loaded 57 rules from AccessTransformer config file fml_at.cfg
+[13:00:58] [main/DEBUG] [FML/]: Validating minecraft
+[13:00:58] [main/DEBUG] [FML/]: Minecraft validated, launching...
+[13:00:58] [main/INFO] [LaunchWrapper/]: Calling tweak class net.minecraftforge.gradle.tweakers.AccessTransformerTweaker
+[13:00:58] [main/INFO] [LaunchWrapper/]: Loading tweak class name cpw.mods.fml.common.launcher.TerminalTweaker
+[13:00:58] [main/INFO] [LaunchWrapper/]: Calling tweak class cpw.mods.fml.common.launcher.TerminalTweaker
+[13:00:59] [main/INFO] [LaunchWrapper/]: Launching wrapped minecraft {net.minecraft.server.MinecraftServer}
+[13:00:59] [main/DEBUG] [CCL ASM/]: Writing method [net/minecraft/block/Block.canBeReplacedByLeaves(Lnet/minecraft/world/IBlockAccess;III)Z]
+[13:01:02] [main/WARN] [FML/]: =============================================================
+[13:01:02] [main/WARN] [FML/]: MOD HAS DIRECT REFERENCE System.exit() THIS IS NOT ALLOWED REROUTING TO FML!
+[13:01:02] [main/WARN] [FML/]: Offendor: net/minecraft/server/gui/MinecraftServerGui$1.windowClosing(Ljava/awt/event/WindowEvent;)V
+[13:01:02] [main/WARN] [FML/]: Use FMLCommonHandler.exitJava instead
+[13:01:02] [main/WARN] [FML/]: =============================================================
+[13:01:02] [Server thread/INFO] [MinecraftForge/]: Attempting early MinecraftForge initialization
+[13:01:02] [Server thread/INFO] [FML/]: MinecraftForge v10.13.4.1448 Initialized
+[13:01:02] [Server thread/INFO] [FML/]: Replaced 183 ore recipies
+[13:01:02] [Server thread/INFO] [MinecraftForge/]: Completed early MinecraftForge initialization
+[13:01:02] [Server thread/DEBUG] [FML/]: File C:\eclipse\workspace\MiscUtil\config\injectedDependencies.json not found. No dependencies injected
+[13:01:02] [Server thread/DEBUG] [FML/]: Building injected Mod Containers [cpw.mods.fml.common.FMLContainer, net.minecraftforge.common.ForgeModContainer, codechicken.core.asm.CodeChickenCoreModContainer]
+[13:01:02] [Server thread/DEBUG] [FML/]: Attempting to load mods contained in the minecraft jar file and associated classes
+[13:01:02] [Server thread/DEBUG] [FML/]: Found a minecraft related directory at C:\eclipse\workspace\MiscUtil\bin, examining for mod candidates
+[13:01:02] [Server thread/DEBUG] [FML/]: Found a minecraft related directory at C:\eclipse\Forge\bin, examining for mod candidates
+[13:01:02] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\minecraft\net\minecraftforge\forge\1.7.10-10.13.4.1448-1.7.10\forgeSrc-1.7.10-10.13.4.1448-1.7.10.jar, examining for mod candidates
+[13:01:02] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\net.minecraft\launchwrapper\1.11\9c0592c6e1e9ea296a70948081bd4cc84dda1289\launchwrapper-1.11.jar, examining for mod candidates
+[13:01:02] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.google.code.findbugs\jsr305\1.3.9\40719ea6961c0cb6afaeb6a921eaa1f6afd4cfdf\jsr305-1.3.9.jar, examining for mod candidates
+[13:01:02] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.ow2.asm\asm-debug-all\5.0.3\f9e364ae2a66ce2a543012a4668856e84e5dab74\asm-debug-all-5.0.3.jar, examining for mod candidates
+[13:01:02] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.typesafe.akka\akka-actor_2.11\2.3.3\ed62e9fc709ca0f2ff1a3220daa8b70a2870078e\akka-actor_2.11-2.3.3.jar, examining for mod candidates
+[13:01:02] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.typesafe\config\1.2.1\f771f71fdae3df231bcd54d5ca2d57f0bf93f467\config-1.2.1.jar, examining for mod candidates
+[13:01:02] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang\scala-actors-migration_2.11\1.1.0\dfa8bc42b181d5b9f1a5dd147f8ae308b893eb6f\scala-actors-migration_2.11-1.1.0.jar, examining for mod candidates
+[13:01:02] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang\scala-compiler\2.11.1\56ea2e6c025e0821f28d73ca271218b8dd04926a\scala-compiler-2.11.1.jar, examining for mod candidates
+[13:01:02] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang.plugins\scala-continuations-library_2.11\1.0.2\e517c53a7e9acd6b1668c5a35eccbaa3bab9aac\scala-continuations-library_2.11-1.0.2.jar, examining for mod candidates
+[13:01:02] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang.plugins\scala-continuations-plugin_2.11.1\1.0.2\f361a3283452c57fa30c1ee69448995de23c60f7\scala-continuations-plugin_2.11.1-1.0.2.jar, examining for mod candidates
+[13:01:02] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang\scala-library\2.11.1\e11da23da3eabab9f4777b9220e60d44c1aab6a\scala-library-2.11.1.jar, examining for mod candidates
+[13:01:02] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang\scala-parser-combinators_2.11\1.0.1\f05d7345bf5a58924f2837c6c1f4d73a938e1ff0\scala-parser-combinators_2.11-1.0.1.jar, examining for mod candidates
+[13:01:02] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang\scala-reflect\2.11.1\6580347e61cc7f8e802941e7fde40fa83b8badeb\scala-reflect-2.11.1.jar, examining for mod candidates
+[13:01:02] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang\scala-swing_2.11\1.0.1\b1cdd92bd47b1e1837139c1c53020e86bb9112ae\scala-swing_2.11-1.0.1.jar, examining for mod candidates
+[13:01:02] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang\scala-xml_2.11\1.0.2\7a80ec00aec122fba7cd4e0d4cdd87ff7e4cb6d0\scala-xml_2.11-1.0.2.jar, examining for mod candidates
+[13:01:02] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\net.sf.jopt-simple\jopt-simple\4.5\6065cc95c661255349c1d0756657be17c29a4fd3\jopt-simple-4.5.jar, examining for mod candidates
+[13:01:02] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\lzma\lzma\0.0.1\521616dc7487b42bef0e803bd2fa3faf668101d7\lzma-0.0.1.jar, examining for mod candidates
+[13:01:02] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.mojang\realms\1.3.5\807ae355ee63583becd7ea60e76aab1532bb42e\realms-1.3.5.jar, examining for mod candidates
+[13:01:02] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.apache.commons\commons-compress\1.8.1\a698750c16740fd5b3871425f4cb3bbaa87f529d\commons-compress-1.8.1.jar, examining for mod candidates
+[13:01:02] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.apache.httpcomponents\httpclient\4.3.3\18f4247ff4572a074444572cee34647c43e7c9c7\httpclient-4.3.3.jar, examining for mod candidates
+[13:01:02] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\commons-logging\commons-logging\1.1.3\f6f66e966c70a83ffbdb6f17a0919eaf7c8aca7f\commons-logging-1.1.3.jar, examining for mod candidates
+[13:01:02] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.apache.httpcomponents\httpcore\4.3.2\31fbbff1ddbf98f3aa7377c94d33b0447c646b6e\httpcore-4.3.2.jar, examining for mod candidates
+[13:01:02] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\java3d\vecmath\1.3.1\a0ae4f51da409fa0c20fa0ca59e6bbc9413ae71d\vecmath-1.3.1.jar, examining for mod candidates
+[13:01:02] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\net.sf.trove4j\trove4j\3.0.3\42ccaf4761f0dfdfa805c9e340d99a755907e2dd\trove4j-3.0.3.jar, examining for mod candidates
+[13:01:02] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.ibm.icu\icu4j-core-mojang\51.2\63d216a9311cca6be337c1e458e587f99d382b84\icu4j-core-mojang-51.2.jar, examining for mod candidates
+[13:01:02] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.paulscode\codecjorbis\20101023\c73b5636faf089d9f00e8732a829577de25237ee\codecjorbis-20101023.jar, examining for mod candidates
+[13:01:02] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.paulscode\codecwav\20101023\12f031cfe88fef5c1dd36c563c0a3a69bd7261da\codecwav-20101023.jar, examining for mod candidates
+[13:01:02] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.paulscode\libraryjavasound\20101123\5c5e304366f75f9eaa2e8cca546a1fb6109348b3\libraryjavasound-20101123.jar, examining for mod candidates
+[13:01:02] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.paulscode\librarylwjglopenal\20100824\73e80d0794c39665aec3f62eee88ca91676674ef\librarylwjglopenal-20100824.jar, examining for mod candidates
+[13:01:02] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.paulscode\soundsystem\20120107\419c05fe9be71f792b2d76cfc9b67f1ed0fec7f6\soundsystem-20120107.jar, examining for mod candidates
+[13:01:02] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\io.netty\netty-all\4.0.10.Final\9e50bd52ffe257a0e2cd8d971688d6ce7d174325\netty-all-4.0.10.Final.jar, examining for mod candidates
+[13:01:02] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.google.guava\guava\17.0\9c6ef172e8de35fd8d4d8783e4821e57cdef7445\guava-17.0.jar, examining for mod candidates
+[13:01:02] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.apache.commons\commons-lang3\3.3.2\90a3822c38ec8c996e84c16a3477ef632cbc87a3\commons-lang3-3.3.2.jar, examining for mod candidates
+[13:01:02] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\commons-io\commons-io\2.4\b1b6ea3b7e4aa4f492509a4952029cd8e48019ad\commons-io-2.4.jar, examining for mod candidates
+[13:01:02] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\commons-codec\commons-codec\1.9\9ce04e34240f674bc72680f8b843b1457383161a\commons-codec-1.9.jar, examining for mod candidates
+[13:01:02] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\net.java.jinput\jinput\2.0.5\39c7796b469a600f72380316f6b1f11db6c2c7c4\jinput-2.0.5.jar, examining for mod candidates
+[13:01:02] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\net.java.jutils\jutils\1.0.0\e12fe1fda814bd348c1579329c86943d2cd3c6a6\jutils-1.0.0.jar, examining for mod candidates
+[13:01:02] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.google.code.gson\gson\2.2.4\a60a5e993c98c864010053cb901b7eab25306568\gson-2.2.4.jar, examining for mod candidates
+[13:01:02] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\com.mojang\authlib\1.5.16\ef1582b11fd0943d069cdcb72e99008ac209a283\authlib-1.5.16.jar, examining for mod candidates
+[13:01:02] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.apache.logging.log4j\log4j-api\2.0-beta9\1dd66e68cccd907880229f9e2de1314bd13ff785\log4j-api-2.0-beta9.jar, examining for mod candidates
+[13:01:03] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.apache.logging.log4j\log4j-core\2.0-beta9\678861ba1b2e1fccb594bb0ca03114bb05da9695\log4j-core-2.0-beta9.jar, examining for mod candidates
+[13:01:03] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.lwjgl.lwjgl\lwjgl\2.9.1\f58c5aabcef0e41718a564be9f8e412fff8db847\lwjgl-2.9.1.jar, examining for mod candidates
+[13:01:03] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.lwjgl.lwjgl\lwjgl_util\2.9.1\290d7ba8a1bd9566f5ddf16ad06f09af5ec9b20e\lwjgl_util-2.9.1.jar, examining for mod candidates
+[13:01:03] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\tv.twitch\twitch\5.16\1f55f009c61637c10c0acfb8b5ffc600f30044b4\twitch-5.16.jar, examining for mod candidates
+[13:01:03] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang\scala-actors\2.11.0\8ccfb6541de179bb1c4d45cf414acee069b7f78b\scala-actors-2.11.0.jar, examining for mod candidates
+[13:01:03] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang.modules\scala-xml_2.11\1.0.2\820fbca7e524b530fdadc594c39d49a21ea0337e\scala-xml_2.11-1.0.2.jar, examining for mod candidates
+[13:01:03] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.scala-lang.modules\scala-parser-combinators_2.11\1.0.1\f05d7345bf5a58924f2837c6c1f4d73a938e1ff0\scala-parser-combinators_2.11-1.0.1.jar, examining for mod candidates
+[13:01:03] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\net.java.jinput\jinput-platform\2.0.5\7ff832a6eb9ab6a767f1ade2b548092d0fa64795\jinput-platform-2.0.5-natives-linux.jar, examining for mod candidates
+[13:01:03] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\net.java.jinput\jinput-platform\2.0.5\385ee093e01f587f30ee1c8a2ee7d408fd732e16\jinput-platform-2.0.5-natives-windows.jar, examining for mod candidates
+[13:01:03] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\net.java.jinput\jinput-platform\2.0.5\53f9c919f34d2ca9de8c51fc4e1e8282029a9232\jinput-platform-2.0.5-natives-osx.jar, examining for mod candidates
+[13:01:03] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\tv.twitch\twitch-platform\5.16\7c6affe439099806a4f552da14c42f9d643d8b23\twitch-platform-5.16-natives-windows-32.jar, examining for mod candidates
+[13:01:03] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\tv.twitch\twitch-platform\5.16\39d0c3d363735b4785598e0e7fbf8297c706a9f9\twitch-platform-5.16-natives-windows-64.jar, examining for mod candidates
+[13:01:03] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\tv.twitch\twitch-platform\5.16\62503ee712766cf77f97252e5902786fd834b8c5\twitch-platform-5.16-natives-osx.jar, examining for mod candidates
+[13:01:03] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\tv.twitch\twitch-external-platform\4.5\18215140f010c05b9f86ef6f0f8871954d2ccebf\twitch-external-platform-4.5-natives-windows-32.jar, examining for mod candidates
+[13:01:03] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\tv.twitch\twitch-external-platform\4.5\c3cde57891b935d41b6680a9c5e1502eeab76d86\twitch-external-platform-4.5-natives-windows-64.jar, examining for mod candidates
+[13:01:03] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.lwjgl.lwjgl\lwjgl-platform\2.9.1\4c517eca808522457dd95ee8fc1fbcdbb602efbe\lwjgl-platform-2.9.1-natives-windows.jar, examining for mod candidates
+[13:01:03] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.lwjgl.lwjgl\lwjgl-platform\2.9.1\aa9aae879af8eb378e22cfc64db56ec2ca9a44d1\lwjgl-platform-2.9.1-natives-linux.jar, examining for mod candidates
+[13:01:03] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\Users\Jordan\.gradle\caches\modules-2\files-2.1\org.lwjgl.lwjgl\lwjgl-platform\2.9.1\2d12c83fdfbc04ecabf02c7bc8cc54d034f0daac\lwjgl-platform-2.9.1-natives-osx.jar, examining for mod candidates
+[13:01:03] [Server thread/DEBUG] [FML/]: Found a minecraft related directory at C:\Users\Jordan\.gradle\caches\minecraft\net\minecraftforge\forge\1.7.10-10.13.4.1448-1.7.10\start, examining for mod candidates
+[13:01:03] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\eclipse\workspace\MiscUtil\libs\industrialcraft-2-2.2.720-experimental-api.jar, examining for mod candidates
+[13:01:03] [Server thread/TRACE] [FML/]: Skipping known library file C:\eclipse\workspace\MiscUtil\mods\CodeChickenCore-1.7.10-1.0.4.29-dev.jar
+[13:01:03] [Server thread/DEBUG] [FML/]: Found a minecraft related file at C:\eclipse\workspace\MiscUtil\.\mods\1.7.10\CodeChickenLib-1.7.10-1.1.1.99-dev.jar, examining for mod candidates
+[13:01:03] [Server thread/DEBUG] [FML/]: Minecraft jar mods loaded successfully
+[13:01:03] [Server thread/INFO] [FML/]: Found 0 mods from the command line. Injecting into mod discoverer
+[13:01:03] [Server thread/INFO] [FML/]: Searching C:\eclipse\workspace\MiscUtil\mods for mods
+[13:01:03] [Server thread/DEBUG] [FML/]: Found a candidate mod directory 1.7.10
+[13:01:03] [Server thread/TRACE] [FML/]: Skipping already parsed coremod or tweaker CodeChickenCore-1.7.10-1.0.4.29-dev.jar
+[13:01:03] [Server thread/INFO] [FML/]: Also searching C:\eclipse\workspace\MiscUtil\mods\1.7.10 for mods
+[13:01:03] [Server thread/DEBUG] [FML/]: Found a candidate zip or jar file CodeChickenLib-1.7.10-1.1.1.99-dev.jar
+[13:01:03] [Server thread/DEBUG] [FML/]: Examining directory bin for potential mods
+[13:01:03] [Server thread/DEBUG] [FML/]: Found an mcmod.info file in directory bin
+[13:01:03] [Server thread/TRACE] [FML/]: Recursing into package assets
+[13:01:03] [Server thread/TRACE] [FML/]: Recursing into package assets.miscutils
+[13:01:03] [Server thread/TRACE] [FML/]: Recursing into package assets.miscutils.lang
+[13:01:03] [Server thread/TRACE] [FML/]: Recursing into package assets.miscutils.textures
+[13:01:03] [Server thread/TRACE] [FML/]: Recursing into package assets.miscutils.textures.armor
+[13:01:03] [Server thread/TRACE] [FML/]: Recursing into package assets.miscutils.textures.blocks
+[13:01:03] [Server thread/TRACE] [FML/]: Recursing into package assets.miscutils.textures.entity
+[13:01:03] [Server thread/TRACE] [FML/]: Recursing into package assets.miscutils.textures.gui
+[13:01:03] [Server thread/TRACE] [FML/]: Recursing into package assets.miscutils.textures.gui.container
+[13:01:03] [Server thread/TRACE] [FML/]: Recursing into package assets.miscutils.textures.items
+[13:01:03] [Server thread/TRACE] [FML/]: Recursing into package miscutil
+[13:01:03] [Server thread/TRACE] [FML/]: Recursing into package miscutil.block
+[13:01:03] [Server thread/TRACE] [FML/]: Recursing into package miscutil.creativetabs
+[13:01:03] [Server thread/TRACE] [FML/]: Recursing into package miscutil.entity
+[13:01:03] [Server thread/TRACE] [FML/]: Recursing into package miscutil.gui
+[13:01:03] [Server thread/TRACE] [FML/]: Recursing into package miscutil.handler
+[13:01:03] [Server thread/TRACE] [FML/]: Recursing into package miscutil.inventory
+[13:01:03] [Server thread/TRACE] [FML/]: Recursing into package miscutil.item
+[13:01:03] [Server thread/TRACE] [FML/]: Recursing into package miscutil.lib
+[13:01:03] [Server thread/TRACE] [FML/]: Recursing into package miscutil.main
+[13:01:03] [Server thread/DEBUG] [FML/]: Identified a mod of type Lcpw/mods/fml/common/Mod; (miscutil.MiscUtils) - loading
+[13:01:03] [Server thread/TRACE] [miscutils/]: Parsed dependency info : [] [] []
+[13:01:03] [Server thread/TRACE] [FML/]: Recursing into package miscutil.model
+[13:01:03] [Server thread/TRACE] [FML/]: Recursing into package miscutil.proxy
+[13:01:03] [Server thread/TRACE] [FML/]: Recursing into package miscutil.render
+[13:01:03] [Server thread/TRACE] [FML/]: Recursing into package miscutil.render.item
+[13:01:03] [Server thread/TRACE] [FML/]: Recursing into package miscutil.render.tile_entity
+[13:01:03] [Server thread/TRACE] [FML/]: Recursing into package miscutil.tile_entity
+[13:01:03] [Server thread/TRACE] [FML/]: Recursing into package miscutil.world
+[13:01:03] [Server thread/DEBUG] [FML/]: Examining directory bin for potential mods
+[13:01:03] [Server thread/DEBUG] [FML/]: No mcmod.info file found in directory bin
+[13:01:03] [Server thread/DEBUG] [FML/]: Examining file forgeSrc-1.7.10-10.13.4.1448-1.7.10.jar for potential mods
+[13:01:03] [Server thread/DEBUG] [FML/]: The mod container forgeSrc-1.7.10-10.13.4.1448-1.7.10.jar appears to be missing an mcmod.info file
+[13:01:03] [Server thread/DEBUG] [FML/]: Examining file launchwrapper-1.11.jar for potential mods
+[13:01:03] [Server thread/DEBUG] [FML/]: The mod container launchwrapper-1.11.jar appears to be missing an mcmod.info file
+[13:01:03] [Server thread/DEBUG] [FML/]: Examining file jsr305-1.3.9.jar for potential mods
+[13:01:03] [Server thread/DEBUG] [FML/]: The mod container jsr305-1.3.9.jar appears to be missing an mcmod.info file
+[13:01:03] [Server thread/DEBUG] [FML/]: Examining file asm-debug-all-5.0.3.jar for potential mods
+[13:01:03] [Server thread/DEBUG] [FML/]: The mod container asm-debug-all-5.0.3.jar appears to be missing an mcmod.info file
+[13:01:03] [Server thread/DEBUG] [FML/]: Examining file akka-actor_2.11-2.3.3.jar for potential mods
+[13:01:03] [Server thread/DEBUG] [FML/]: The mod container akka-actor_2.11-2.3.3.jar appears to be missing an mcmod.info file
+[13:01:03] [Server thread/DEBUG] [FML/]: Examining file config-1.2.1.jar for potential mods
+[13:01:03] [Server thread/DEBUG] [FML/]: The mod container config-1.2.1.jar appears to be missing an mcmod.info file
+[13:01:03] [Server thread/DEBUG] [FML/]: Examining file scala-actors-migration_2.11-1.1.0.jar for potential mods
+[13:01:03] [Server thread/DEBUG] [FML/]: The mod container scala-actors-migration_2.11-1.1.0.jar appears to be missing an mcmod.info file
+[13:01:03] [Server thread/DEBUG] [FML/]: Examining file scala-compiler-2.11.1.jar for potential mods
+[13:01:03] [Server thread/DEBUG] [FML/]: The mod container scala-compiler-2.11.1.jar appears to be missing an mcmod.info file
+[13:01:03] [Server thread/DEBUG] [FML/]: Examining file scala-continuations-library_2.11-1.0.2.jar for potential mods
+[13:01:03] [Server thread/DEBUG] [FML/]: The mod container scala-continuations-library_2.11-1.0.2.jar appears to be missing an mcmod.info file
+[13:01:03] [Server thread/DEBUG] [FML/]: Examining file scala-continuations-plugin_2.11.1-1.0.2.jar for potential mods
+[13:01:03] [Server thread/DEBUG] [FML/]: The mod container scala-continuations-plugin_2.11.1-1.0.2.jar appears to be missing an mcmod.info file
+[13:01:03] [Server thread/DEBUG] [FML/]: Examining file scala-library-2.11.1.jar for potential mods
+[13:01:03] [Server thread/DEBUG] [FML/]: The mod container scala-library-2.11.1.jar appears to be missing an mcmod.info file
+[13:01:03] [Server thread/DEBUG] [FML/]: Examining file scala-parser-combinators_2.11-1.0.1.jar for potential mods
+[13:01:03] [Server thread/DEBUG] [FML/]: The mod container scala-parser-combinators_2.11-1.0.1.jar appears to be missing an mcmod.info file
+[13:01:03] [Server thread/DEBUG] [FML/]: Examining file scala-reflect-2.11.1.jar for potential mods
+[13:01:03] [Server thread/DEBUG] [FML/]: The mod container scala-reflect-2.11.1.jar appears to be missing an mcmod.info file
+[13:01:03] [Server thread/DEBUG] [FML/]: Examining file scala-swing_2.11-1.0.1.jar for potential mods
+[13:01:03] [Server thread/DEBUG] [FML/]: The mod container scala-swing_2.11-1.0.1.jar appears to be missing an mcmod.info file
+[13:01:03] [Server thread/DEBUG] [FML/]: Examining file scala-xml_2.11-1.0.2.jar for potential mods
+[13:01:03] [Server thread/DEBUG] [FML/]: The mod container scala-xml_2.11-1.0.2.jar appears to be missing an mcmod.info file
+[13:01:03] [Server thread/DEBUG] [FML/]: Examining file jopt-simple-4.5.jar for potential mods
+[13:01:03] [Server thread/DEBUG] [FML/]: The mod container jopt-simple-4.5.jar appears to be missing an mcmod.info file
+[13:01:03] [Server thread/DEBUG] [FML/]: Examining file lzma-0.0.1.jar for potential mods
+[13:01:03] [Server thread/DEBUG] [FML/]: The mod container lzma-0.0.1.jar appears to be missing an mcmod.info file
+[13:01:03] [Server thread/DEBUG] [FML/]: Examining file realms-1.3.5.jar for potential mods
+[13:01:03] [Server thread/DEBUG] [FML/]: The mod container realms-1.3.5.jar appears to be missing an mcmod.info file
+[13:01:03] [Server thread/DEBUG] [FML/]: Examining file commons-compress-1.8.1.jar for potential mods
+[13:01:03] [Server thread/DEBUG] [FML/]: The mod container commons-compress-1.8.1.jar appears to be missing an mcmod.info file
+[13:01:03] [Server thread/DEBUG] [FML/]: Examining file httpclient-4.3.3.jar for potential mods
+[13:01:03] [Server thread/DEBUG] [FML/]: The mod container httpclient-4.3.3.jar appears to be missing an mcmod.info file
+[13:01:03] [Server thread/DEBUG] [FML/]: Examining file commons-logging-1.1.3.jar for potential mods
+[13:01:03] [Server thread/DEBUG] [FML/]: The mod container commons-logging-1.1.3.jar appears to be missing an mcmod.info file
+[13:01:03] [Server thread/DEBUG] [FML/]: Examining file httpcore-4.3.2.jar for potential mods
+[13:01:03] [Server thread/DEBUG] [FML/]: The mod container httpcore-4.3.2.jar appears to be missing an mcmod.info file
+[13:01:04] [Server thread/DEBUG] [FML/]: Examining file vecmath-1.3.1.jar for potential mods
+[13:01:04] [Server thread/DEBUG] [FML/]: The mod container vecmath-1.3.1.jar appears to be missing an mcmod.info file
+[13:01:04] [Server thread/DEBUG] [FML/]: Examining file trove4j-3.0.3.jar for potential mods
+[13:01:04] [Server thread/DEBUG] [FML/]: The mod container trove4j-3.0.3.jar appears to be missing an mcmod.info file
+[13:01:04] [Server thread/DEBUG] [FML/]: Examining file icu4j-core-mojang-51.2.jar for potential mods
+[13:01:04] [Server thread/DEBUG] [FML/]: The mod container icu4j-core-mojang-51.2.jar appears to be missing an mcmod.info file
+[13:01:04] [Server thread/DEBUG] [FML/]: Examining file codecjorbis-20101023.jar for potential mods
+[13:01:04] [Server thread/DEBUG] [FML/]: The mod container codecjorbis-20101023.jar appears to be missing an mcmod.info file
+[13:01:04] [Server thread/DEBUG] [FML/]: Examining file codecwav-20101023.jar for potential mods
+[13:01:04] [Server thread/DEBUG] [FML/]: The mod container codecwav-20101023.jar appears to be missing an mcmod.info file
+[13:01:04] [Server thread/DEBUG] [FML/]: Examining file libraryjavasound-20101123.jar for potential mods
+[13:01:04] [Server thread/DEBUG] [FML/]: The mod container libraryjavasound-20101123.jar appears to be missing an mcmod.info file
+[13:01:04] [Server thread/DEBUG] [FML/]: Examining file librarylwjglopenal-20100824.jar for potential mods
+[13:01:04] [Server thread/DEBUG] [FML/]: The mod container librarylwjglopenal-20100824.jar appears to be missing an mcmod.info file
+[13:01:04] [Server thread/DEBUG] [FML/]: Examining file soundsystem-20120107.jar for potential mods
+[13:01:04] [Server thread/DEBUG] [FML/]: The mod container soundsystem-20120107.jar appears to be missing an mcmod.info file
+[13:01:04] [Server thread/DEBUG] [FML/]: Examining file netty-all-4.0.10.Final.jar for potential mods
+[13:01:04] [Server thread/DEBUG] [FML/]: The mod container netty-all-4.0.10.Final.jar appears to be missing an mcmod.info file
+[13:01:04] [Server thread/DEBUG] [FML/]: Examining file guava-17.0.jar for potential mods
+[13:01:04] [Server thread/DEBUG] [FML/]: The mod container guava-17.0.jar appears to be missing an mcmod.info file
+[13:01:04] [Server thread/DEBUG] [FML/]: Examining file commons-lang3-3.3.2.jar for potential mods
+[13:01:04] [Server thread/DEBUG] [FML/]: The mod container commons-lang3-3.3.2.jar appears to be missing an mcmod.info file
+[13:01:04] [Server thread/DEBUG] [FML/]: Examining file commons-io-2.4.jar for potential mods
+[13:01:04] [Server thread/DEBUG] [FML/]: The mod container commons-io-2.4.jar appears to be missing an mcmod.info file
+[13:01:04] [Server thread/DEBUG] [FML/]: Examining file commons-codec-1.9.jar for potential mods
+[13:01:04] [Server thread/DEBUG] [FML/]: The mod container commons-codec-1.9.jar appears to be missing an mcmod.info file
+[13:01:04] [Server thread/DEBUG] [FML/]: Examining file jinput-2.0.5.jar for potential mods
+[13:01:04] [Server thread/DEBUG] [FML/]: The mod container jinput-2.0.5.jar appears to be missing an mcmod.info file
+[13:01:04] [Server thread/DEBUG] [FML/]: Examining file jutils-1.0.0.jar for potential mods
+[13:01:04] [Server thread/DEBUG] [FML/]: The mod container jutils-1.0.0.jar appears to be missing an mcmod.info file
+[13:01:04] [Server thread/DEBUG] [FML/]: Examining file gson-2.2.4.jar for potential mods
+[13:01:04] [Server thread/DEBUG] [FML/]: The mod container gson-2.2.4.jar appears to be missing an mcmod.info file
+[13:01:04] [Server thread/DEBUG] [FML/]: Examining file authlib-1.5.16.jar for potential mods
+[13:01:04] [Server thread/DEBUG] [FML/]: The mod container authlib-1.5.16.jar appears to be missing an mcmod.info file
+[13:01:04] [Server thread/DEBUG] [FML/]: Examining file log4j-api-2.0-beta9.jar for potential mods
+[13:01:04] [Server thread/DEBUG] [FML/]: The mod container log4j-api-2.0-beta9.jar appears to be missing an mcmod.info file
+[13:01:04] [Server thread/DEBUG] [FML/]: Examining file log4j-core-2.0-beta9.jar for potential mods
+[13:01:04] [Server thread/DEBUG] [FML/]: The mod container log4j-core-2.0-beta9.jar appears to be missing an mcmod.info file
+[13:01:04] [Server thread/DEBUG] [FML/]: Examining file lwjgl-2.9.1.jar for potential mods
+[13:01:04] [Server thread/DEBUG] [FML/]: The mod container lwjgl-2.9.1.jar appears to be missing an mcmod.info file
+[13:01:04] [Server thread/DEBUG] [FML/]: Examining file lwjgl_util-2.9.1.jar for potential mods
+[13:01:04] [Server thread/DEBUG] [FML/]: The mod container lwjgl_util-2.9.1.jar appears to be missing an mcmod.info file
+[13:01:04] [Server thread/DEBUG] [FML/]: Examining file twitch-5.16.jar for potential mods
+[13:01:04] [Server thread/DEBUG] [FML/]: The mod container twitch-5.16.jar appears to be missing an mcmod.info file
+[13:01:04] [Server thread/DEBUG] [FML/]: Examining file scala-actors-2.11.0.jar for potential mods
+[13:01:04] [Server thread/DEBUG] [FML/]: The mod container scala-actors-2.11.0.jar appears to be missing an mcmod.info file
+[13:01:04] [Server thread/DEBUG] [FML/]: Examining file scala-xml_2.11-1.0.2.jar for potential mods
+[13:01:04] [Server thread/DEBUG] [FML/]: The mod container scala-xml_2.11-1.0.2.jar appears to be missing an mcmod.info file
+[13:01:04] [Server thread/DEBUG] [FML/]: Examining file scala-parser-combinators_2.11-1.0.1.jar for potential mods
+[13:01:04] [Server thread/DEBUG] [FML/]: The mod container scala-parser-combinators_2.11-1.0.1.jar appears to be missing an mcmod.info file
+[13:01:04] [Server thread/DEBUG] [FML/]: Examining file jinput-platform-2.0.5-natives-linux.jar for potential mods
+[13:01:04] [Server thread/DEBUG] [FML/]: The mod container jinput-platform-2.0.5-natives-linux.jar appears to be missing an mcmod.info file
+[13:01:04] [Server thread/DEBUG] [FML/]: Examining file jinput-platform-2.0.5-natives-windows.jar for potential mods
+[13:01:04] [Server thread/DEBUG] [FML/]: The mod container jinput-platform-2.0.5-natives-windows.jar appears to be missing an mcmod.info file
+[13:01:04] [Server thread/DEBUG] [FML/]: Examining file jinput-platform-2.0.5-natives-osx.jar for potential mods
+[13:01:04] [Server thread/DEBUG] [FML/]: The mod container jinput-platform-2.0.5-natives-osx.jar appears to be missing an mcmod.info file
+[13:01:04] [Server thread/DEBUG] [FML/]: Examining file twitch-platform-5.16-natives-windows-32.jar for potential mods
+[13:01:04] [Server thread/DEBUG] [FML/]: The mod container twitch-platform-5.16-natives-windows-32.jar appears to be missing an mcmod.info file
+[13:01:04] [Server thread/DEBUG] [FML/]: Examining file twitch-platform-5.16-natives-windows-64.jar for potential mods
+[13:01:04] [Server thread/DEBUG] [FML/]: The mod container twitch-platform-5.16-natives-windows-64.jar appears to be missing an mcmod.info file
+[13:01:04] [Server thread/DEBUG] [FML/]: Examining file twitch-platform-5.16-natives-osx.jar for potential mods
+[13:01:04] [Server thread/DEBUG] [FML/]: The mod container twitch-platform-5.16-natives-osx.jar appears to be missing an mcmod.info file
+[13:01:04] [Server thread/DEBUG] [FML/]: Examining file twitch-external-platform-4.5-natives-windows-32.jar for potential mods
+[13:01:04] [Server thread/DEBUG] [FML/]: The mod container twitch-external-platform-4.5-natives-windows-32.jar appears to be missing an mcmod.info file
+[13:01:04] [Server thread/DEBUG] [FML/]: Examining file twitch-external-platform-4.5-natives-windows-64.jar for potential mods
+[13:01:04] [Server thread/DEBUG] [FML/]: The mod container twitch-external-platform-4.5-natives-windows-64.jar appears to be missing an mcmod.info file
+[13:01:04] [Server thread/DEBUG] [FML/]: Examining file lwjgl-platform-2.9.1-natives-windows.jar for potential mods
+[13:01:04] [Server thread/DEBUG] [FML/]: The mod container lwjgl-platform-2.9.1-natives-windows.jar appears to be missing an mcmod.info file
+[13:01:04] [Server thread/DEBUG] [FML/]: Examining file lwjgl-platform-2.9.1-natives-linux.jar for potential mods
+[13:01:04] [Server thread/DEBUG] [FML/]: The mod container lwjgl-platform-2.9.1-natives-linux.jar appears to be missing an mcmod.info file
+[13:01:04] [Server thread/DEBUG] [FML/]: Examining file lwjgl-platform-2.9.1-natives-osx.jar for potential mods
+[13:01:04] [Server thread/DEBUG] [FML/]: The mod container lwjgl-platform-2.9.1-natives-osx.jar appears to be missing an mcmod.info file
+[13:01:04] [Server thread/DEBUG] [FML/]: Examining directory start for potential mods
+[13:01:04] [Server thread/DEBUG] [FML/]: No mcmod.info file found in directory start
+[13:01:04] [Server thread/TRACE] [FML/]: Recursing into package net
+[13:01:04] [Server thread/TRACE] [FML/]: Recursing into package net.minecraftforge
+[13:01:04] [Server thread/TRACE] [FML/]: Recursing into package net.minecraftforge.gradle
+[13:01:04] [Server thread/TRACE] [FML/]: Recursing into package net.minecraftforge.gradle.tweakers
+[13:01:04] [Server thread/DEBUG] [FML/]: Examining file industrialcraft-2-2.2.720-experimental-api.jar for potential mods
+[13:01:04] [Server thread/DEBUG] [FML/]: The mod container industrialcraft-2-2.2.720-experimental-api.jar appears to be missing an mcmod.info file
+[13:01:04] [Server thread/DEBUG] [FML/]: Examining file CodeChickenLib-1.7.10-1.1.1.99-dev.jar for potential mods
+[13:01:04] [Server thread/DEBUG] [FML/]: The mod container CodeChickenLib-1.7.10-1.1.1.99-dev.jar appears to be missing an mcmod.info file
+[13:01:04] [Server thread/DEBUG] [FML/]: Examining directory 1.7.10 for potential mods
+[13:01:04] [Server thread/DEBUG] [FML/]: No mcmod.info file found in directory 1.7.10
+[13:01:04] [Server thread/DEBUG] [FML/]: Examining file CodeChickenLib-1.7.10-1.1.1.99-dev.jar for potential mods
+[13:01:04] [Server thread/DEBUG] [FML/]: The mod container CodeChickenLib-1.7.10-1.1.1.99-dev.jar appears to be missing an mcmod.info file
+[13:01:04] [Server thread/INFO] [FML/]: Forge Mod Loader has identified 5 mods to load
+[13:01:04] [Server thread/DEBUG] [FML/]: Creating API container dummy for API IC2API: owner: IC2, dependents: []
+[13:01:04] [Server thread/TRACE] [FML/]: Received a system property request ''
+[13:01:04] [Server thread/TRACE] [FML/]: System property request managing the state of 0 mods
+[13:01:04] [Server thread/DEBUG] [FML/]: After merging, found state information for 0 mods
+[13:01:04] [Server thread/DEBUG] [FML/]: Found translations in forgeSrc-1.7.10-10.13.4.1448-1.7.10.jar [en_US, af_ZA, ar_SA, br_FR, ca_ES, cs_CZ, da_DK, de_DE, el_GR, en_US, es_ES, fa_IR, fi_FI, fr_FR, he_IL, hu_HU, it_IT, ja_JP, ko_KR, lt_LT, nb_NO, nl_NL, nn_NO, no_NO, pl_PL, pt_BR, pt_PT, ro_RO, ru_RU, sl_SI, sr_SP, sv_SE, tr_TR, uk_UA, vi_VN, zh_CN, zh_TW, en_US]
+[13:01:04] [Server thread/DEBUG] [FML/]: Found translations in forgeSrc-1.7.10-10.13.4.1448-1.7.10.jar [en_US, af_ZA, ar_SA, br_FR, ca_ES, cs_CZ, da_DK, de_DE, el_GR, en_US, es_ES, fa_IR, fi_FI, fr_FR, he_IL, hu_HU, it_IT, ja_JP, ko_KR, lt_LT, nb_NO, nl_NL, nn_NO, no_NO, pl_PL, pt_BR, pt_PT, ro_RO, ru_RU, sl_SI, sr_SP, sv_SE, tr_TR, uk_UA, vi_VN, zh_CN, zh_TW, en_US]
+[13:01:04] [Server thread/DEBUG] [miscutils/]: Enabling mod miscutils
+[13:01:04] [Server thread/DEBUG] [FML/]: Injecting found translation assets for lang en_US at assets/miscutils/lang/en_US.lang into language system
+[13:01:04] [Server thread/TRACE] [FML/]: Verifying mod requirements are satisfied
+[13:01:04] [Server thread/TRACE] [FML/]: All mod requirements are satisfied
+[13:01:04] [Server thread/TRACE] [FML/]: Sorting mods into an ordered list
+[13:01:04] [Server thread/TRACE] [FML/]: Mod sorting completed successfully
+[13:01:04] [Server thread/DEBUG] [FML/]: Mod sorting data
+[13:01:04] [Server thread/DEBUG] [FML/]: miscutils(miscutils:0.2.2): bin ()
+[13:01:04] [Server thread/DEBUG] [FML/]: IC2API(API: IC2API:1.0): industrialcraft-2-2.2.720-experimental-api.jar ()
+[13:01:04] [Server thread/INFO] [FML/]: FML has found a non-mod file CodeChickenLib-1.7.10-1.1.1.99-dev.jar in your mods directory. It will now be injected into your classpath. This could severe stability issues, it should be removed if possible.
+[13:01:04] [Server thread/TRACE] [mcp/mcp]: Sending event FMLConstructionEvent to mod mcp
+[13:01:04] [Server thread/TRACE] [mcp/mcp]: Sent event FMLConstructionEvent to mod mcp
+[13:01:04] [Server thread/TRACE] [FML/FML]: Sending event FMLConstructionEvent to mod FML
+[13:01:04] [Server thread/TRACE] [FML/FML]: Mod FML is using network checker : Invoking method checkModLists
+[13:01:04] [Server thread/TRACE] [FML/FML]: Testing mod FML to verify it accepts its own version in a remote connection
+[13:01:04] [Server thread/TRACE] [FML/FML]: The mod FML accepts its own version (7.10.99.99)
+[13:01:04] [Server thread/INFO] [FML/FML]: Attempting connection with missing mods [mcp, FML, Forge, CodeChickenCore, miscutils] at CLIENT
+[13:01:04] [Server thread/INFO] [FML/FML]: Attempting connection with missing mods [mcp, FML, Forge, CodeChickenCore, miscutils] at SERVER
+[13:01:05] [Server thread/TRACE] [FML/FML]: Sent event FMLConstructionEvent to mod FML
+[13:01:05] [Server thread/TRACE] [Forge/Forge]: Sending event FMLConstructionEvent to mod Forge
+[13:01:05] [Server thread/TRACE] [FML/Forge]: Mod Forge is using network checker : No network checking performed
+[13:01:05] [Server thread/TRACE] [FML/Forge]: Testing mod Forge to verify it accepts its own version in a remote connection
+[13:01:05] [Server thread/TRACE] [FML/Forge]: The mod Forge accepts its own version (10.13.4.1448)
+[13:01:05] [Server thread/TRACE] [Forge/Forge]: Sent event FMLConstructionEvent to mod Forge
+[13:01:05] [Server thread/TRACE] [CodeChickenCore/CodeChickenCore]: Sending event FMLConstructionEvent to mod CodeChickenCore
+[13:01:05] [Server thread/TRACE] [CodeChickenCore/CodeChickenCore]: Sent event FMLConstructionEvent to mod CodeChickenCore
+[13:01:05] [Server thread/TRACE] [miscutils/miscutils]: Sending event FMLConstructionEvent to mod miscutils
+[13:01:05] [Server thread/TRACE] [FML/miscutils]: Mod miscutils is using network checker : Accepting version 0.2.2
+[13:01:05] [Server thread/TRACE] [FML/miscutils]: Testing mod miscutils to verify it accepts its own version in a remote connection
+[13:01:05] [Server thread/TRACE] [FML/miscutils]: The mod miscutils accepts its own version (0.2.2)
+[13:01:05] [Server thread/DEBUG] [FML/miscutils]: Attempting to inject @SidedProxy classes into miscutils
+[13:01:05] [Server thread/TRACE] [miscutils/miscutils]: Sent event FMLConstructionEvent to mod miscutils
+[13:01:05] [Server thread/DEBUG] [FML/]: Mod signature data
+[13:01:05] [Server thread/DEBUG] [FML/]: Valid Signatures:
+[13:01:05] [Server thread/DEBUG] [FML/]: Missing Signatures:
+[13:01:05] [Server thread/DEBUG] [FML/]: mcp (Minecraft Coder Pack 9.05) minecraft.jar
+[13:01:05] [Server thread/DEBUG] [FML/]: FML (Forge Mod Loader 7.10.99.99) forgeSrc-1.7.10-10.13.4.1448-1.7.10.jar
+[13:01:05] [Server thread/DEBUG] [FML/]: Forge (Minecraft Forge 10.13.4.1448) forgeSrc-1.7.10-10.13.4.1448-1.7.10.jar
+[13:01:05] [Server thread/DEBUG] [FML/]: CodeChickenCore (CodeChicken Core 1.0.4.29) minecraft.jar
+[13:01:05] [Server thread/DEBUG] [FML/]: miscutils (miscutils 0.2.2) bin
+[13:01:05] [Server thread/INFO] [FML/]: Processing ObjectHolder annotations
+[13:01:05] [Server thread/INFO] [FML/]: Found 341 ObjectHolder annotations
+[13:01:05] [Server thread/INFO] [FML/]: Identifying ItemStackHolder annotations
+[13:01:05] [Server thread/INFO] [FML/]: Found 0 ItemStackHolder annotations
+[13:01:05] [Server thread/TRACE] [mcp/mcp]: Sending event FMLPreInitializationEvent to mod mcp
+[13:01:05] [Server thread/TRACE] [mcp/mcp]: Sent event FMLPreInitializationEvent to mod mcp
+[13:01:05] [Server thread/TRACE] [FML/FML]: Sending event FMLPreInitializationEvent to mod FML
+[13:01:05] [Server thread/TRACE] [FML/FML]: Sent event FMLPreInitializationEvent to mod FML
+[13:01:05] [Server thread/TRACE] [Forge/Forge]: Sending event FMLPreInitializationEvent to mod Forge
+[13:01:05] [Server thread/INFO] [FML/Forge]: Configured a dormant chunk cache size of 0
+[13:01:05] [Server thread/TRACE] [Forge/Forge]: Sent event FMLPreInitializationEvent to mod Forge
+[13:01:05] [Server thread/TRACE] [CodeChickenCore/CodeChickenCore]: Sending event FMLPreInitializationEvent to mod CodeChickenCore
+[13:01:05] [Server thread/TRACE] [CodeChickenCore/CodeChickenCore]: Sent event FMLPreInitializationEvent to mod CodeChickenCore
+[13:01:05] [Server thread/TRACE] [miscutils/miscutils]: Sending event FMLPreInitializationEvent to mod miscutils
+[13:01:05] [Server thread/DEBUG] [FML/miscutils]: Skipping automatic mod miscutils entity registration for already registered class miscutil.entity.EntityBloodSteelMob
+[13:01:05] [Server thread/DEBUG] [FML/miscutils]: Skipping automatic mod miscutils entity registration for already registered class miscutil.entity.EntityBloodSteelHostileMob
+[13:01:05] [Server thread/INFO] [FML/miscutils]: Development mode enabled.
+[13:01:05] [Server thread/INFO] [FML/miscutils]: EnderIO Found - Loading Resources
+[13:01:05] [Server thread/INFO] [FML/miscutils]: BigReactors Found - Loading Resources
+[13:01:05] [Server thread/INFO] [FML/miscutils]: Thaumcraft Found - Loading Resources
+[13:01:05] [Server thread/INFO] [FML/miscutils]: ExtraUtils Found - Loading Resources
+[13:01:05] [Server thread/INFO] [FML/miscutils]: Pneumaticraft Found - Loading Resources
+[13:01:05] [Server thread/INFO] [FML/miscutils]: SimplyJetpacks Found - Loading Resources
+[13:01:05] [Server thread/INFO] [FML/miscutils]: rfTools Found - Loading Resources
+[13:01:05] [Server thread/INFO] [FML/miscutils]: Loading Furnace.
+[13:01:05] [Server thread/INFO] [FML/miscutils]: Loading Arcane Infuser.
+[13:01:05] [Server thread/INFO] [FML/miscutils]: Loading Blood Steel Chest.
+[13:01:05] [Server thread/TRACE] [miscutils/miscutils]: Sent event FMLPreInitializationEvent to mod miscutils
+[13:01:05] [Server thread/INFO] [FML/]: Applying holder lookups
+[13:01:05] [Server thread/INFO] [FML/]: Holder lookups applied
+[13:01:05] [Server thread/INFO] [FML/]: Injecting itemstacks
+[13:01:05] [Server thread/INFO] [FML/]: Itemstack injection complete
+[13:01:05] [Server thread/TRACE] [mcp/mcp]: Sending event FMLInitializationEvent to mod mcp
+[13:01:05] [Server thread/TRACE] [mcp/mcp]: Sent event FMLInitializationEvent to mod mcp
+[13:01:05] [Server thread/TRACE] [FML/FML]: Sending event FMLInitializationEvent to mod FML
+[13:01:05] [Server thread/TRACE] [FML/FML]: Sent event FMLInitializationEvent to mod FML
+[13:01:05] [Server thread/TRACE] [Forge/Forge]: Sending event FMLInitializationEvent to mod Forge
+[13:01:05] [Server thread/TRACE] [Forge/Forge]: Sent event FMLInitializationEvent to mod Forge
+[13:01:05] [Server thread/TRACE] [CodeChickenCore/CodeChickenCore]: Sending event FMLInitializationEvent to mod CodeChickenCore
+[13:01:05] [Server thread/TRACE] [CodeChickenCore/CodeChickenCore]: Sent event FMLInitializationEvent to mod CodeChickenCore
+[13:01:05] [Server thread/TRACE] [miscutils/miscutils]: Sending event FMLInitializationEvent to mod miscutils
+[13:01:05] [Server thread/TRACE] [miscutils/miscutils]: Sent event FMLInitializationEvent to mod miscutils
+[13:01:05] [Server thread/TRACE] [FML/]: Attempting to deliver 0 IMC messages to mod mcp
+[13:01:05] [Server thread/TRACE] [mcp/mcp]: Sending event IMCEvent to mod mcp
+[13:01:05] [Server thread/TRACE] [mcp/mcp]: Sent event IMCEvent to mod mcp
+[13:01:05] [Server thread/TRACE] [FML/]: Attempting to deliver 0 IMC messages to mod FML
+[13:01:05] [Server thread/TRACE] [FML/FML]: Sending event IMCEvent to mod FML
+[13:01:05] [Server thread/TRACE] [FML/FML]: Sent event IMCEvent to mod FML
+[13:01:05] [Server thread/TRACE] [FML/]: Attempting to deliver 0 IMC messages to mod Forge
+[13:01:05] [Server thread/TRACE] [Forge/Forge]: Sending event IMCEvent to mod Forge
+[13:01:05] [Server thread/TRACE] [Forge/Forge]: Sent event IMCEvent to mod Forge
+[13:01:05] [Server thread/TRACE] [FML/]: Attempting to deliver 0 IMC messages to mod CodeChickenCore
+[13:01:05] [Server thread/TRACE] [CodeChickenCore/CodeChickenCore]: Sending event IMCEvent to mod CodeChickenCore
+[13:01:05] [Server thread/TRACE] [CodeChickenCore/CodeChickenCore]: Sent event IMCEvent to mod CodeChickenCore
+[13:01:05] [Server thread/TRACE] [FML/]: Attempting to deliver 0 IMC messages to mod miscutils
+[13:01:05] [Server thread/TRACE] [miscutils/miscutils]: Sending event IMCEvent to mod miscutils
+[13:01:05] [Server thread/TRACE] [miscutils/miscutils]: Sent event IMCEvent to mod miscutils
+[13:01:05] [Server thread/INFO] [FML/]: Injecting itemstacks
+[13:01:05] [Server thread/INFO] [FML/]: Itemstack injection complete
+[13:01:05] [Server thread/TRACE] [mcp/mcp]: Sending event FMLPostInitializationEvent to mod mcp
+[13:01:05] [Server thread/TRACE] [mcp/mcp]: Sent event FMLPostInitializationEvent to mod mcp
+[13:01:05] [Server thread/TRACE] [FML/FML]: Sending event FMLPostInitializationEvent to mod FML
+[13:01:05] [Server thread/TRACE] [FML/FML]: Sent event FMLPostInitializationEvent to mod FML
+[13:01:05] [Server thread/TRACE] [Forge/Forge]: Sending event FMLPostInitializationEvent to mod Forge
+[13:01:06] [Server thread/TRACE] [Forge/Forge]: Sent event FMLPostInitializationEvent to mod Forge
+[13:01:06] [Server thread/TRACE] [CodeChickenCore/CodeChickenCore]: Sending event FMLPostInitializationEvent to mod CodeChickenCore
+[13:01:06] [Server thread/TRACE] [CodeChickenCore/CodeChickenCore]: Sent event FMLPostInitializationEvent to mod CodeChickenCore
+[13:01:06] [Server thread/TRACE] [miscutils/miscutils]: Sending event FMLPostInitializationEvent to mod miscutils
+[13:01:06] [Server thread/TRACE] [miscutils/miscutils]: Sent event FMLPostInitializationEvent to mod miscutils
+[13:01:06] [Server thread/TRACE] [mcp/mcp]: Sending event FMLLoadCompleteEvent to mod mcp
+[13:01:06] [Server thread/TRACE] [mcp/mcp]: Sent event FMLLoadCompleteEvent to mod mcp
+[13:01:06] [Server thread/TRACE] [FML/FML]: Sending event FMLLoadCompleteEvent to mod FML
+[13:01:06] [Server thread/TRACE] [FML/FML]: Sent event FMLLoadCompleteEvent to mod FML
+[13:01:06] [Server thread/TRACE] [Forge/Forge]: Sending event FMLLoadCompleteEvent to mod Forge
+[13:01:06] [Server thread/DEBUG] [FML/Forge]: Forge RecipeSorter Baking:
+[13:01:06] [Server thread/DEBUG] [FML/Forge]: 11: RecipeEntry("Before", UNKNOWN, )
+[13:01:06] [Server thread/DEBUG] [FML/Forge]: 10: RecipeEntry("minecraft:shaped", SHAPED, net.minecraft.item.crafting.ShapedRecipes) Before: minecraft:shapeless
+[13:01:06] [Server thread/DEBUG] [FML/Forge]: 9: RecipeEntry("forge:shapedore", SHAPED, net.minecraftforge.oredict.ShapedOreRecipe) Before: minecraft:shapeless After: minecraft:shaped
+[13:01:06] [Server thread/DEBUG] [FML/Forge]: 8: RecipeEntry("minecraft:mapextending", SHAPED, net.minecraft.item.crafting.RecipesMapExtending) Before: minecraft:shapeless After: minecraft:shaped
+[13:01:06] [Server thread/DEBUG] [FML/Forge]: 7: RecipeEntry("minecraft:shapeless", SHAPELESS, net.minecraft.item.crafting.ShapelessRecipes) After: minecraft:shaped
+[13:01:06] [Server thread/DEBUG] [FML/Forge]: 6: RecipeEntry("forge:shapelessore", SHAPELESS, net.minecraftforge.oredict.ShapelessOreRecipe) After: minecraft:shapeless
+[13:01:06] [Server thread/DEBUG] [FML/Forge]: 5: RecipeEntry("minecraft:armordyes", SHAPELESS, net.minecraft.item.crafting.RecipesArmorDyes) After: minecraft:shapeless
+[13:01:06] [Server thread/DEBUG] [FML/Forge]: 4: RecipeEntry("minecraft:fireworks", SHAPELESS, net.minecraft.item.crafting.RecipeFireworks) After: minecraft:shapeless
+[13:01:06] [Server thread/DEBUG] [FML/Forge]: 3: RecipeEntry("minecraft:bookcloning", SHAPELESS, net.minecraft.item.crafting.RecipeBookCloning) After: minecraft:shapeless
+[13:01:06] [Server thread/DEBUG] [FML/Forge]: 2: RecipeEntry("minecraft:mapcloning", SHAPELESS, net.minecraft.item.crafting.RecipesMapCloning) After: minecraft:shapeless
+[13:01:06] [Server thread/DEBUG] [FML/Forge]: 1: RecipeEntry("After", UNKNOWN, )
+[13:01:06] [Server thread/DEBUG] [FML/Forge]: Sorting recipies
+[13:01:06] [Server thread/TRACE] [Forge/Forge]: Sent event FMLLoadCompleteEvent to mod Forge
+[13:01:06] [Server thread/TRACE] [CodeChickenCore/CodeChickenCore]: Sending event FMLLoadCompleteEvent to mod CodeChickenCore
+[13:01:06] [Server thread/TRACE] [CodeChickenCore/CodeChickenCore]: Sent event FMLLoadCompleteEvent to mod CodeChickenCore
+[13:01:06] [Server thread/TRACE] [miscutils/miscutils]: Sending event FMLLoadCompleteEvent to mod miscutils
+[13:01:06] [Server thread/TRACE] [miscutils/miscutils]: Sent event FMLLoadCompleteEvent to mod miscutils
+[13:01:06] [Server thread/DEBUG] [FML/]: Freezing block and item id maps
+[13:01:06] [Server thread/DEBUG] [FML/]: Registry consistency check successful
+[13:01:06] [Server thread/DEBUG] [FML/]: Registry consistency check successful
+[13:01:06] [Server thread/INFO] [FML/]: Forge Mod Loader has successfully loaded 5 mods
+[13:01:06] [Server thread/TRACE] [mcp/mcp]: Sending event FMLServerAboutToStartEvent to mod mcp
+[13:01:06] [Server thread/TRACE] [mcp/mcp]: Sent event FMLServerAboutToStartEvent to mod mcp
+[13:01:06] [Server thread/TRACE] [FML/FML]: Sending event FMLServerAboutToStartEvent to mod FML
+[13:01:06] [Server thread/TRACE] [FML/FML]: Sent event FMLServerAboutToStartEvent to mod FML
+[13:01:06] [Server thread/TRACE] [Forge/Forge]: Sending event FMLServerAboutToStartEvent to mod Forge
+[13:01:06] [Server thread/TRACE] [Forge/Forge]: Sent event FMLServerAboutToStartEvent to mod Forge
+[13:01:06] [Server thread/TRACE] [CodeChickenCore/CodeChickenCore]: Sending event FMLServerAboutToStartEvent to mod CodeChickenCore
+[13:01:06] [Server thread/TRACE] [CodeChickenCore/CodeChickenCore]: Sent event FMLServerAboutToStartEvent to mod CodeChickenCore
+[13:01:06] [Server thread/TRACE] [miscutils/miscutils]: Sending event FMLServerAboutToStartEvent to mod miscutils
+[13:01:06] [Server thread/TRACE] [miscutils/miscutils]: Sent event FMLServerAboutToStartEvent to mod miscutils
+[13:01:06] [Server thread/ERROR] [fml.ModTracker/]: This world was saved with mod Uptime which appears to be missing, things may not work well
+[13:01:06] [Server thread/ERROR] [fml.ModTracker/]: This world was saved with mod examplemod which appears to be missing, things may not work well
+[13:01:06] [Server thread/INFO] [FML/]: Injecting existing block and item data into this server instance
+[13:01:06] [Server thread/DEBUG] [FML/]: Registry consistency check successful
+[13:01:06] [Server thread/INFO] [FML/]: Found a missing id from the world Uptime:genericDirt
+[13:01:06] [Server thread/INFO] [FML/]: Found a missing id from the world Uptime:genericDirt
+[13:01:06] [Server thread/DEBUG] [FML/]: There are 2 mappings missing - attempting a mod remap
+[13:01:06] [Server thread/TRACE] [mcp/mcp]: Sending event FMLMissingMappingsEvent to mod mcp
+[13:01:06] [Server thread/TRACE] [mcp/mcp]: Sent event FMLMissingMappingsEvent to mod mcp
+[13:01:06] [Server thread/TRACE] [FML/FML]: Sending event FMLMissingMappingsEvent to mod FML
+[13:01:06] [Server thread/TRACE] [FML/FML]: Sent event FMLMissingMappingsEvent to mod FML
+[13:01:06] [Server thread/TRACE] [Forge/Forge]: Sending event FMLMissingMappingsEvent to mod Forge
+[13:01:06] [Server thread/TRACE] [Forge/Forge]: Sent event FMLMissingMappingsEvent to mod Forge
+[13:01:06] [Server thread/TRACE] [CodeChickenCore/CodeChickenCore]: Sending event FMLMissingMappingsEvent to mod CodeChickenCore
+[13:01:06] [Server thread/TRACE] [CodeChickenCore/CodeChickenCore]: Sent event FMLMissingMappingsEvent to mod CodeChickenCore
+[13:01:06] [Server thread/TRACE] [miscutils/miscutils]: Sending event FMLMissingMappingsEvent to mod miscutils
+[13:01:06] [Server thread/TRACE] [miscutils/miscutils]: Sent event FMLMissingMappingsEvent to mod miscutils
+[13:01:06] [Server thread/ERROR] [FML/]: There are unidentified mappings in this world - we are going to attempt to process anyway
+[13:01:06] [Server thread/ERROR] [FML/]: Unidentified block: Uptime:genericDirt, id 165
+[13:01:06] [Server thread/ERROR] [FML/]: Unidentified item: Uptime:genericDirt, id 165
+[13:01:06] [Server thread/WARN] [FML/]: Forge Mod Loader detected missing blocks/items.
+
+There are 2 missing blocks and items in this save.
+If you continue the missing blocks/items will get removed.
+A world backup will be automatically created in your saves directory.
+
+Missing Blocks/Items:
+Uptime:genericDirt
+Uptime:genericDirt
+
+
+Run the command /fml confirm or or /fml cancel to proceed.
+Alternatively start the server with -Dfml.queryResult=confirm or -Dfml.queryResult=cancel to preselect the answer.
+[13:01:19] [Server thread/INFO] [FML/]: confirmed
+[13:01:19] [Server thread/INFO] [FML/]: World backup created at C:\eclipse\workspace\MiscUtil\world-20151005-130119.zip.
+[13:01:19] [Server thread/ERROR] [FML/]: This world contains block and item mappings that may cause world breakage
+[13:01:19] [Server thread/INFO] [FML/]: Injecting new block and item data into this server instance.
+[13:01:19] [Server thread/INFO] [FML/]: Injected new block/item miscutils:tile.ArcaneInfuser: 169 (init) -> 169 (map).
+[13:01:19] [Server thread/INFO] [FML/]: Injected new block/item miscutils:tile.ArcaneInfuserActive: 176 (init) -> 176 (map).
+[13:01:19] [Server thread/INFO] [FML/]: Injected new block/item miscutils:tile.BloodSteelFurnaceActive: 168 (init) -> 168 (map).
+[13:01:19] [Server thread/INFO] [FML/]: Injected new block/item miscutils:tile.BloodSteelChest: 166 (init) -> 166 (map).
+[13:01:19] [Server thread/INFO] [FML/]: Injected new block/item miscutils:blockBloodSteel: 165 (init) -> 167 (map).
+[13:01:19] [Server thread/INFO] [FML/]: Injected new block/item miscutils:tile.BloodSteelFurnace: 167 (init) -> 177 (map).
+[13:01:19] [Server thread/INFO] [FML/]: Injected new block/item miscutils:tile.ArcaneInfuser: 169 (init) -> 169 (map).
+[13:01:19] [Server thread/INFO] [FML/]: Injected new block/item miscutils:itemPlateCyanite: 4114 (init) -> 4114 (map).
+[13:01:19] [Server thread/INFO] [FML/]: Injected new block/item miscutils:item.BloodSteelAxe: 4097 (init) -> 4097 (map).
+[13:01:19] [Server thread/INFO] [FML/]: Injected new block/item miscutils:tile.BloodSteelChest: 166 (init) -> 166 (map).
+[13:01:19] [Server thread/INFO] [FML/]: Injected new block/item miscutils:item.BloodSteelPickaxe: 4096 (init) -> 4096 (map).
+[13:01:19] [Server thread/INFO] [FML/]: Injected new block/item miscutils:tile.BloodSteelFurnace: 167 (init) -> 177 (map).
+[13:01:19] [Server thread/INFO] [FML/]: Injected new block/item miscutils:itemPlatePulsatingIron: 4108 (init) -> 4108 (map).
+[13:01:19] [Server thread/INFO] [FML/]: Injected new block/item miscutils:itemPlateElectricalSteel: 4107 (init) -> 4107 (map).
+[13:01:19] [Server thread/INFO] [FML/]: Injected new block/item miscutils:itemPlateRedstoneAlloy: 4106 (init) -> 4106 (map).
+[13:01:19] [Server thread/INFO] [FML/]: Injected new block/item miscutils:itemPlateEnergeticAlloy: 4109 (init) -> 4109 (map).
+[13:01:19] [Server thread/INFO] [FML/]: Injected new block/item miscutils:item.BloodSteelBoots: 4104 (init) -> 4104 (map).
+[13:01:19] [Server thread/INFO] [FML/]: Injected new block/item miscutils:itemPlateDarkSteel: 4112 (init) -> 4112 (map).
+[13:01:19] [Server thread/INFO] [FML/]: Injected new block/item miscutils:item.BloodSteelHelmet: 4101 (init) -> 4101 (map).
+[13:01:19] [Server thread/INFO] [FML/]: Injected new block/item miscutils:item.BloodSteelHoe: 4099 (init) -> 4099 (map).
+[13:01:19] [Server thread/INFO] [FML/]: Injected new block/item miscutils:item.BloodSteelPlate: 4102 (init) -> 4102 (map).
+[13:01:19] [Server thread/INFO] [FML/]: Injected new block/item miscutils:itemPlateBlutonium: 4113 (init) -> 4113 (map).
+[13:01:19] [Server thread/INFO] [FML/]: Injected new block/item miscutils:item.BloodSteelSpade: 4100 (init) -> 4100 (map).
+[13:01:19] [Server thread/INFO] [FML/]: Injected new block/item miscutils:itemPlateCompressedIron: 4118 (init) -> 4118 (map).
+[13:01:19] [Server thread/INFO] [FML/]: Injected new block/item miscutils:tile.ArcaneInfuserActive: 176 (init) -> 176 (map).
+[13:01:19] [Server thread/INFO] [FML/]: Injected new block/item miscutils:item.BloodSteelPants: 4103 (init) -> 4103 (map).
+[13:01:19] [Server thread/INFO] [FML/]: Injected new block/item miscutils:itemPlateConductiveIron: 4111 (init) -> 4111 (map).
+[13:01:19] [Server thread/INFO] [FML/]: Injected new block/item miscutils:itemPlateDimensionShard: 4120 (init) -> 4120 (map).
+[13:01:19] [Server thread/INFO] [FML/]: Injected new block/item miscutils:itemPlateEnrichedSoularium: 4119 (init) -> 4119 (map).
+[13:01:19] [Server thread/INFO] [FML/]: Injected new block/item miscutils:itemPlateBedrockium: 4117 (init) -> 4117 (map).
+[13:01:19] [Server thread/INFO] [FML/]: Injected new block/item miscutils:itemPlateBloodSteel: 4122 (init) -> 4122 (map).
+[13:01:19] [Server thread/INFO] [FML/]: Injected new block/item miscutils:tile.BloodSteelFurnaceActive: 168 (init) -> 168 (map).
+[13:01:19] [Server thread/INFO] [FML/]: Injected new block/item miscutils:itemPlateVibrantAlloy: 4110 (init) -> 4110 (map).
+[13:01:19] [Server thread/INFO] [FML/]: Injected new block/item miscutils:itemPlateVoidMetal: 4116 (init) -> 4116 (map).
+[13:01:19] [Server thread/INFO] [FML/]: Injected new block/item miscutils:itemPlateSoularium: 4105 (init) -> 4105 (map).
+[13:01:19] [Server thread/INFO] [FML/]: Injected new block/item miscutils:blockBloodSteel: 165 (init) -> 167 (map).
+[13:01:19] [Server thread/INFO] [FML/]: Injected new block/item miscutils:itemIngotBloodSteel: 4121 (init) -> 4121 (map).
+[13:01:19] [Server thread/INFO] [FML/]: Injected new block/item miscutils:itemPlateLudicrite: 4115 (init) -> 4115 (map).
+[13:01:19] [Server thread/INFO] [FML/]: Injected new block/item miscutils:item.BloodSteelSword: 4098 (init) -> 4098 (map).
+[13:01:19] [Server thread/DEBUG] [FML/]: Registry consistency check successful
+[13:01:19] [Server thread/TRACE] [mcp/mcp]: Sending event FMLModIdMappingEvent to mod mcp
+[13:01:19] [Server thread/TRACE] [mcp/mcp]: Sent event FMLModIdMappingEvent to mod mcp
+[13:01:19] [Server thread/TRACE] [FML/FML]: Sending event FMLModIdMappingEvent to mod FML
+[13:01:19] [Server thread/TRACE] [FML/FML]: Sent event FMLModIdMappingEvent to mod FML
+[13:01:19] [Server thread/TRACE] [Forge/Forge]: Sending event FMLModIdMappingEvent to mod Forge
+[13:01:19] [Server thread/TRACE] [Forge/Forge]: Sent event FMLModIdMappingEvent to mod Forge
+[13:01:19] [Server thread/TRACE] [CodeChickenCore/CodeChickenCore]: Sending event FMLModIdMappingEvent to mod CodeChickenCore
+[13:01:19] [Server thread/TRACE] [CodeChickenCore/CodeChickenCore]: Sent event FMLModIdMappingEvent to mod CodeChickenCore
+[13:01:19] [Server thread/TRACE] [miscutils/miscutils]: Sending event FMLModIdMappingEvent to mod miscutils
+[13:01:19] [Server thread/TRACE] [miscutils/miscutils]: Sent event FMLModIdMappingEvent to mod miscutils
+[13:01:19] [Server thread/INFO] [FML/]: Applying holder lookups
+[13:01:19] [Server thread/INFO] [FML/]: Holder lookups applied
+[13:01:19] [Server thread/DEBUG] [FML/]: Loading persistent fluid defaults from world
+[13:01:19] [Server thread/DEBUG] [FML/]: The fluid Forge:lava has been selected as the default fluid for lava
+[13:01:19] [Server thread/DEBUG] [FML/]: The fluid Forge:water has been selected as the default fluid for water
+[13:01:19] [Server thread/INFO] [FML/]: Loading dimension 0 (world) (net.minecraft.server.dedicated.DedicatedServer@67e1ea73)
+[13:01:20] [Server thread/INFO] [FML/]: Loading dimension 1 (world) (net.minecraft.server.dedicated.DedicatedServer@67e1ea73)
+[13:01:20] [Server thread/INFO] [FML/]: Loading dimension -1 (world) (net.minecraft.server.dedicated.DedicatedServer@67e1ea73)
+[13:01:20] [Server thread/TRACE] [mcp/mcp]: Sending event FMLServerStartingEvent to mod mcp
+[13:01:20] [Server thread/TRACE] [mcp/mcp]: Sent event FMLServerStartingEvent to mod mcp
+[13:01:20] [Server thread/TRACE] [FML/FML]: Sending event FMLServerStartingEvent to mod FML
+[13:01:20] [Server thread/TRACE] [FML/FML]: Sent event FMLServerStartingEvent to mod FML
+[13:01:20] [Server thread/TRACE] [Forge/Forge]: Sending event FMLServerStartingEvent to mod Forge
+[13:01:20] [Server thread/TRACE] [Forge/Forge]: Sent event FMLServerStartingEvent to mod Forge
+[13:01:20] [Server thread/TRACE] [CodeChickenCore/CodeChickenCore]: Sending event FMLServerStartingEvent to mod CodeChickenCore
+[13:01:20] [Server thread/TRACE] [CodeChickenCore/CodeChickenCore]: Sent event FMLServerStartingEvent to mod CodeChickenCore
+[13:01:20] [Server thread/TRACE] [miscutils/miscutils]: Sending event FMLServerStartingEvent to mod miscutils
+[13:01:20] [Server thread/TRACE] [miscutils/miscutils]: Sent event FMLServerStartingEvent to mod miscutils
+[13:01:20] [Server thread/TRACE] [mcp/mcp]: Sending event FMLServerStartedEvent to mod mcp
+[13:01:20] [Server thread/TRACE] [mcp/mcp]: Sent event FMLServerStartedEvent to mod mcp
+[13:01:20] [Server thread/TRACE] [FML/FML]: Sending event FMLServerStartedEvent to mod FML
+[13:01:20] [Server thread/TRACE] [FML/FML]: Sent event FMLServerStartedEvent to mod FML
+[13:01:20] [Server thread/TRACE] [Forge/Forge]: Sending event FMLServerStartedEvent to mod Forge
+[13:01:20] [Server thread/TRACE] [Forge/Forge]: Sent event FMLServerStartedEvent to mod Forge
+[13:01:20] [Server thread/TRACE] [CodeChickenCore/CodeChickenCore]: Sending event FMLServerStartedEvent to mod CodeChickenCore
+[13:01:20] [Server thread/TRACE] [CodeChickenCore/CodeChickenCore]: Sent event FMLServerStartedEvent to mod CodeChickenCore
+[13:01:20] [Server thread/TRACE] [miscutils/miscutils]: Sending event FMLServerStartedEvent to mod miscutils
+[13:01:20] [Server thread/TRACE] [miscutils/miscutils]: Sent event FMLServerStartedEvent to mod miscutils
+[13:01:36] [Netty IO #2/TRACE] [FML/]: $ClientHello->FMLHandshakeServerState$2:HELLO
+[13:01:36] [Netty IO #2/INFO] [FML/]: Client protocol version 2
+[13:01:36] [Netty IO #2/TRACE] [FML/]: $ModList:5 mods->FMLHandshakeServerState$2:HELLO
+[13:01:36] [Netty IO #2/INFO] [FML/]: Client attempting to join with 5 mods : CodeChickenCore@1.0.4.29,FML@7.10.99.99,miscutils@0.2.2,Forge@10.13.4.1448,mcp@9.05
+[13:01:36] [Netty IO #2/INFO] [FML/]: Attempting connection with missing mods [] at CLIENT
+[13:01:36] [Netty IO #2/TRACE] [FML/]: $HandshakeAck:{2}->FMLHandshakeServerState$3:WAITINGCACK
+[13:01:36] [Netty IO #2/TRACE] [FML/]: $HandshakeAck:{3}->FMLHandshakeServerState$4:COMPLETE
+[13:01:36] [Netty IO #2/TRACE] [FML/]: $HandshakeAck:{4}->FMLHandshakeServerState$5:DONE
+[13:01:36] [Netty IO #2/TRACE] [FML/]: $HandshakeAck:{5}->FMLHandshakeServerState$5:DONE
+[13:01:36] [Server thread/INFO] [FML/]: [Server thread] Server side modded connection established
+[13:02:05] [Server thread/DEBUG] [FML/]: Gathering id map for writing to world save world
+[13:02:50] [Server thread/DEBUG] [FML/]: Gathering id map for writing to world save world
+[13:03:35] [Server thread/DEBUG] [FML/]: Gathering id map for writing to world save world
+[13:04:20] [Server thread/DEBUG] [FML/]: Gathering id map for writing to world save world
+[13:05:05] [Server thread/DEBUG] [FML/]: Gathering id map for writing to world save world
+[13:05:50] [Server thread/DEBUG] [FML/]: Gathering id map for writing to world save world
+[13:06:35] [Server thread/DEBUG] [FML/]: Gathering id map for writing to world save world
+[13:07:21] [Server thread/DEBUG] [FML/]: Gathering id map for writing to world save world
+[13:08:05] [Server thread/DEBUG] [FML/]: Gathering id map for writing to world save world
+[13:08:18] [Server thread/TRACE] [mcp/mcp]: Sending event FMLServerStoppingEvent to mod mcp
+[13:08:18] [Server thread/TRACE] [mcp/mcp]: Sent event FMLServerStoppingEvent to mod mcp
+[13:08:18] [Server thread/TRACE] [FML/FML]: Sending event FMLServerStoppingEvent to mod FML
+[13:08:18] [Server thread/TRACE] [FML/FML]: Sent event FMLServerStoppingEvent to mod FML
+[13:08:18] [Server thread/TRACE] [Forge/Forge]: Sending event FMLServerStoppingEvent to mod Forge
+[13:08:18] [Server thread/TRACE] [Forge/Forge]: Sent event FMLServerStoppingEvent to mod Forge
+[13:08:18] [Server thread/TRACE] [CodeChickenCore/CodeChickenCore]: Sending event FMLServerStoppingEvent to mod CodeChickenCore
+[13:08:18] [Server thread/TRACE] [CodeChickenCore/CodeChickenCore]: Sent event FMLServerStoppingEvent to mod CodeChickenCore
+[13:08:18] [Server thread/TRACE] [miscutils/miscutils]: Sending event FMLServerStoppingEvent to mod miscutils
+[13:08:18] [Server thread/TRACE] [miscutils/miscutils]: Sent event FMLServerStoppingEvent to mod miscutils
+[13:08:18] [Server thread/DEBUG] [FML/]: Gathering id map for writing to world save world
+[13:08:19] [Server thread/INFO] [FML/]: Unloading dimension 0
+[13:08:19] [Server thread/INFO] [FML/]: Unloading dimension -1
+[13:08:19] [Server thread/INFO] [FML/]: Unloading dimension 1
+[13:08:19] [Server thread/DEBUG] [FML/]: Reverting to frozen data state.
+[13:08:19] [Server thread/INFO] [FML/]: Applying holder lookups
+[13:08:19] [Server thread/INFO] [FML/]: Holder lookups applied
+[13:08:19] [Server thread/TRACE] [mcp/mcp]: Sending event FMLServerStoppedEvent to mod mcp
+[13:08:19] [Server thread/TRACE] [mcp/mcp]: Sent event FMLServerStoppedEvent to mod mcp
+[13:08:19] [Server thread/TRACE] [FML/FML]: Sending event FMLServerStoppedEvent to mod FML
+[13:08:19] [Server thread/TRACE] [FML/FML]: Sent event FMLServerStoppedEvent to mod FML
+[13:08:19] [Server thread/TRACE] [Forge/Forge]: Sending event FMLServerStoppedEvent to mod Forge
+[13:08:19] [Server thread/TRACE] [Forge/Forge]: Sent event FMLServerStoppedEvent to mod Forge
+[13:08:19] [Server thread/TRACE] [CodeChickenCore/CodeChickenCore]: Sending event FMLServerStoppedEvent to mod CodeChickenCore
+[13:08:19] [Server thread/TRACE] [CodeChickenCore/CodeChickenCore]: Sent event FMLServerStoppedEvent to mod CodeChickenCore
+[13:08:19] [Server thread/TRACE] [miscutils/miscutils]: Sending event FMLServerStoppedEvent to mod miscutils
+[13:08:19] [Server thread/TRACE] [miscutils/miscutils]: Sent event FMLServerStoppedEvent to mod miscutils
diff --git a/logs/latest.log b/logs/latest.log
new file mode 100644
index 0000000000..cb93cadf4a
--- /dev/null
+++ b/logs/latest.log
@@ -0,0 +1,11 @@
+[13:39:37] [main/INFO]: Setting user: Player909
+[13:39:38] [Client thread/INFO]: LWJGL Version: 2.9.1
+[13:39:40] [Client thread/INFO]: Reloading ResourceManager: Default, FMLFileResourcePack:Forge Mod Loader, FMLFileResourcePack:Minecraft Forge, FMLFileResourcePack:miscutils
+[13:39:41] [Sound Library Loader/INFO]: Sound engine started
+[13:39:42] [Client thread/INFO]: Created: 512x256 textures/blocks-atlas
+[13:39:42] [Client thread/INFO]: Created: 256x256 textures/items-atlas
+[13:39:42] [Client thread/INFO]: Reloading ResourceManager: Default, FMLFileResourcePack:Forge Mod Loader, FMLFileResourcePack:Minecraft Forge, FMLFileResourcePack:miscutils
+[13:39:42] [Client thread/INFO]: Created: 256x256 textures/items-atlas
+[13:39:43] [Client thread/INFO]: Created: 512x256 textures/blocks-atlas
+[13:39:43] [Sound Library Loader/INFO]: Sound engine started
+[13:39:56] [Client thread/INFO]: Stopping!
diff --git a/ops.json b/ops.json
new file mode 100644
index 0000000000..34ee1a275b
--- /dev/null
+++ b/ops.json
@@ -0,0 +1,7 @@
+[
+ {
+ "uuid": "5652713c-668e-47f3-853a-3fa959a9dfd3",
+ "name": "Draknyte1",
+ "level": 4
+ }
+] \ No newline at end of file
diff --git a/options.txt b/options.txt
new file mode 100644
index 0000000000..9f897ccfe9
--- /dev/null
+++ b/options.txt
@@ -0,0 +1,96 @@
+invertYMouse:false
+mouseSensitivity:0.5
+fov:0.0
+gamma:0.0
+saturation:0.0
+renderDistance:12
+guiScale:0
+particles:0
+bobView:true
+anaglyph3d:false
+advancedOpengl:false
+maxFps:120
+fboEnable:true
+difficulty:2
+fancyGraphics:true
+ao:2
+clouds:true
+resourcePacks:[]
+lastServer:
+lang:en_US
+chatVisibility:0
+chatColors:true
+chatLinks:true
+chatLinksPrompt:true
+chatOpacity:1.0
+snooperEnabled:true
+fullscreen:false
+enableVsync:true
+hideServerAddress:false
+advancedItemTooltips:false
+pauseOnLostFocus:true
+showCape:true
+touchscreen:false
+overrideWidth:0
+overrideHeight:0
+heldItemTooltips:true
+chatHeightFocused:1.0
+chatHeightUnfocused:0.44366196
+chatScale:1.0
+chatWidth:1.0
+showInventoryAchievementHint:false
+mipmapLevels:4
+anisotropicFiltering:1
+streamBytesPerPixel:0.5
+streamMicVolume:1.0
+streamSystemVolume:1.0
+streamKbps:0.5412844
+streamFps:0.31690142
+streamCompression:1
+streamSendMetadata:true
+streamPreferredServer:
+streamChatEnabled:0
+streamChatUserFilter:0
+streamMicToggleBehavior:0
+forceUnicodeFont:false
+key_key.attack:-100
+key_key.use:-99
+key_key.forward:17
+key_key.left:30
+key_key.back:31
+key_key.right:32
+key_key.jump:57
+key_key.sneak:42
+key_key.drop:16
+key_key.inventory:18
+key_key.chat:20
+key_key.playerlist:15
+key_key.pickItem:-98
+key_key.command:53
+key_key.screenshot:60
+key_key.togglePerspective:63
+key_key.smoothCamera:0
+key_key.sprint:29
+key_key.streamStartStop:64
+key_key.streamPauseUnpause:65
+key_key.streamCommercial:0
+key_key.streamToggleMic:0
+key_key.fullscreen:87
+key_key.hotbar.1:2
+key_key.hotbar.2:3
+key_key.hotbar.3:4
+key_key.hotbar.4:5
+key_key.hotbar.5:6
+key_key.hotbar.6:7
+key_key.hotbar.7:8
+key_key.hotbar.8:9
+key_key.hotbar.9:10
+soundCategory_master:1.0
+soundCategory_music:1.0
+soundCategory_record:1.0
+soundCategory_weather:1.0
+soundCategory_block:1.0
+soundCategory_hostile:1.0
+soundCategory_neutral:1.0
+soundCategory_player:1.0
+soundCategory_ambient:1.0
diff --git a/replay_pid16588.log b/replay_pid16588.log
new file mode 100644
index 0000000000..bed22c3100
--- /dev/null
+++ b/replay_pid16588.log
@@ -0,0 +1,5346 @@
+JvmtiExport can_access_local_variables 0
+JvmtiExport can_hotswap_or_post_breakpoint 0
+JvmtiExport can_post_on_exceptions 0
+# 623 ciObject found
+ciMethod java/lang/Object <init> ()V 4097 1 3609194 0 0
+ciMethod java/lang/Object getClass ()Ljava/lang/Class; 2049 1 256 0 -1
+ciMethod java/lang/Object hashCode ()I 2049 1 256 0 -1
+ciMethod java/lang/Object equals (Ljava/lang/Object;)Z 97 1 46180 0 -1
+ciMethod java/lang/Object clone ()Ljava/lang/Object; 2049 1 256 0 -1
+ciMethod java/lang/String <init> ([CII)V 4097 1 6764 0 -1
+ciMethod java/lang/String equals (Ljava/lang/Object;)Z 2129 10745 5433 0 -1
+ciMethod java/lang/String startsWith (Ljava/lang/String;)Z 2065 1 316141 0 -1
+ciMethod java/lang/String lastIndexOf (I)I 3073 1 138139 0 288
+ciMethod java/lang/String lastIndexOf (II)I 841 90513 956 0 320
+ciMethod java/lang/String lastIndexOfSupplementary (II)I 0 0 1 0 -1
+ciMethod java/lang/String substring (II)Ljava/lang/String; 2417 1 5825 0 928
+ciMethod java/lang/Class isAssignableFrom (Ljava/lang/Class;)Z 2049 1 256 0 -1
+ciMethod java/lang/Class isInterface ()Z 2049 1 256 0 -1
+ciMethod java/lang/Class getName ()Ljava/lang/String; 2049 1 19357 0 0
+ciMethod java/lang/Class getName0 ()Ljava/lang/String; 2073 1 259 0 -1
+ciMethod java/lang/Class getClassLoader ()Ljava/lang/ClassLoader; 2049 1 9636 0 -1
+ciMethod java/lang/Class getClassLoader0 ()Ljava/lang/ClassLoader; 1033 1 129 0 0
+ciMethod java/lang/Class getInterfaces ()[Ljava/lang/Class; 3081 1 1113 0 0
+ciMethod java/lang/Class getInterfaces0 ()[Ljava/lang/Class; 1369 1 171 0 -1
+ciMethod java/lang/Class getModifiers ()I 3073 1 384 0 -1
+ciMethod java/lang/Class getConstructor ([Ljava/lang/Class;)Ljava/lang/reflect/Constructor; 4097 1 2342 0 0
+ciMethod java/lang/Class checkMemberAccess (ILjava/lang/Class;Z)V 3073 1 4203 0 0
+ciMethod java/lang/Class checkPackageAccess (Ljava/lang/ClassLoader;Z)V 20129 1 2909 0 0
+ciMethod java/lang/Class reflectionData ()Ljava/lang/Class$ReflectionData; 2121 1 5086 0 0
+ciMethod java/lang/Class newReflectionData (Ljava/lang/ref/SoftReference;I)Ljava/lang/Class$ReflectionData; 641 1 586 0 0
+ciMethod java/lang/Class privateGetDeclaredConstructors (Z)[Ljava/lang/reflect/Constructor; 2081 1 2586 0 0
+ciMethod java/lang/Class getConstructor0 ([Ljava/lang/Class;I)Ljava/lang/reflect/Constructor; 2113 9 2558 0 0
+ciMethod java/lang/Class arrayContentsEq ([Ljava/lang/Object;[Ljava/lang/Object;)Z 337 105 3815 0 0
+ciMethod java/lang/Class getDeclaredConstructors0 (Z)[Ljava/lang/reflect/Constructor; 2057 1 257 0 -1
+ciMethod java/lang/Class argumentTypesToString ([Ljava/lang/Class;)Ljava/lang/String; 1 1 336 0 0
+ciMethod java/lang/Class getReflectionFactory ()Lsun/reflect/ReflectionFactory; 3073 1 3343 0 0
+ciMethod java/lang/Class checkInitted ()V 2049 1 3973 0 0
+ciMethod java/lang/ClassLoader getParent ()Ljava/lang/ClassLoader; 345 1 130 0 -1
+ciMethod java/lang/ClassLoader getClassLoader (Ljava/lang/Class;)Ljava/lang/ClassLoader; 1345 1 5745 0 0
+ciMethod java/lang/System getSecurityManager ()Ljava/lang/SecurityManager; 3209 1 55426 0 0
+ciMethod java/lang/Throwable printStackTrace ()V 0 0 1 0 0
+ciMethod java/lang/Throwable printStackTrace (Ljava/io/PrintStream;)V 9 1 1 0 -1
+ciMethod java/lang/SecurityManager checkPermission (Ljava/security/Permission;)V 0 0 1 0 -1
+ciMethod java/lang/SecurityManager getPackages (Ljava/lang/String;)[Ljava/lang/String; 9 385 1 0 -1
+ciMethod java/lang/SecurityManager checkPackageAccess (Ljava/lang/String;)V 857 41089 815 0 3136
+ciMethod java/lang/ReflectiveOperationException <init> (Ljava/lang/String;)V 2057 1 340 0 -1
+ciMethod java/lang/ref/Reference get ()Ljava/lang/Object; 1313 1 164 0 -1
+ciMethod java/lang/ref/Reference <init> (Ljava/lang/Object;)V 2081 1 4023 0 0
+ciMethod java/lang/ref/Reference <init> (Ljava/lang/Object;Ljava/lang/ref/ReferenceQueue;)V 2049 1 22231 0 128
+ciMethod java/lang/ref/SoftReference <init> (Ljava/lang/Object;)V 1857 1 1029 0 0
+ciMethod java/lang/ref/SoftReference get ()Ljava/lang/Object; 2081 1 22211 0 0
+ciMethod java/lang/reflect/AccessibleObject <init> ()V 5505 1 6483 0 0
+ciMethod java/lang/reflect/AccessibleObject checkAccess (Ljava/lang/Class;Ljava/lang/Class;Ljava/lang/Object;I)V 0 0 4 0 0
+ciMethod java/lang/reflect/AccessibleObject slowCheckMemberAccess (Ljava/lang/Class;Ljava/lang/Class;Ljava/lang/Object;ILjava/lang/Class;)V 17 1 2 0 -1
+ciMethod java/lang/reflect/Executable <init> ()V 2201 1 5698 0 0
+ciMethod java/lang/reflect/Constructor <init> (Ljava/lang/Class;[Ljava/lang/Class;[Ljava/lang/Class;IILjava/lang/String;[B[B)V 3161 1 2555 0 0
+ciMethod java/lang/reflect/Constructor copy ()Ljava/lang/reflect/Constructor; 2145 1 2555 0 0
+ciMethod java/lang/reflect/Constructor getDeclaringClass ()Ljava/lang/Class; 1025 1 128 0 -1
+ciMethod java/lang/reflect/Constructor getParameterTypes ()[Ljava/lang/Class; 2105 1 3152 0 0
+ciMethod java/lang/reflect/Constructor newInstance ([Ljava/lang/Object;)Ljava/lang/Object; 2097 1 4080 0 0
+ciMethod java/lang/reflect/Constructor acquireConstructorAccessor ()Lsun/reflect/ConstructorAccessor; 377 1 317 0 0
+ciMethod java/lang/reflect/Constructor getConstructorAccessor ()Lsun/reflect/ConstructorAccessor; 1025 1 128 0 0
+ciMethod java/lang/reflect/Constructor setConstructorAccessor (Lsun/reflect/ConstructorAccessor;)V 2049 1 632 0 0
+ciMethod sun/reflect/ConstructorAccessor newInstance ([Ljava/lang/Object;)Ljava/lang/Object; 0 0 1 0 -1
+ciMethod sun/reflect/ConstructorAccessorImpl newInstance ([Ljava/lang/Object;)Ljava/lang/Object; 0 0 1 0 -1
+ciMethod java/lang/AbstractStringBuilder <init> (I)V 1257 1 293839 0 224
+ciMethod java/lang/AbstractStringBuilder append (Ljava/lang/String;)Ljava/lang/AbstractStringBuilder; 2049 1 11790 0 -1
+ciMethod java/lang/StringBuilder <init> ()V 1161 1 169875 0 192
+ciMethod java/lang/StringBuilder append (Ljava/lang/String;)Ljava/lang/StringBuilder; 2049 1 543963 0 928
+ciMethod java/lang/StringBuilder toString ()Ljava/lang/String; 1185 1 198607 0 832
+ciMethod sun/misc/Unsafe allocateInstance (Ljava/lang/Class;)Ljava/lang/Object; 305 1 38 0 -1
+ciMethod sun/misc/Unsafe compareAndSwapObject (Ljava/lang/Object;JLjava/lang/Object;Ljava/lang/Object;)Z 2049 1 256 0 -1
+ciMethod sun/misc/Unsafe compareAndSwapLong (Ljava/lang/Object;JJJ)Z 2049 1 256 0 -1
+ciMethod java/lang/Boolean booleanValue ()Z 1033 1 129 0 -1
+ciMethod java/lang/Boolean valueOf (Z)Ljava/lang/Boolean; 2049 1 115450 0 -1
+ciMethod java/lang/RuntimePermission <init> (Ljava/lang/String;)V 201 1 80 0 -1
+ciMethod java/security/AccessController doPrivileged (Ljava/security/PrivilegedAction;)Ljava/lang/Object; 2049 1 256 0 -1
+ciMethod sun/reflect/ReflectionFactory$GetReflectionFactoryAction <init> ()V 25 1 3 0 -1
+ciMethod java/util/Collection iterator ()Ljava/util/Iterator; 0 0 1 0 -1
+ciMethod java/util/Collection toArray ()[Ljava/lang/Object; 0 0 1 0 -1
+ciMethod java/util/List size ()I 0 0 1 0 -1
+ciMethod java/util/List isEmpty ()Z 0 0 1 0 -1
+ciMethod java/util/List toArray ()[Ljava/lang/Object; 0 0 1 0 -1
+ciMethod java/util/List add (Ljava/lang/Object;)Z 0 0 1 0 -1
+ciMethod java/util/List get (I)Ljava/lang/Object; 0 0 1 0 -1
+ciMethod java/util/List set (ILjava/lang/Object;)Ljava/lang/Object; 0 0 1 0 -1
+ciMethod java/util/List listIterator ()Ljava/util/ListIterator; 0 0 1 0 -1
+ciMethod java/util/AbstractList <init> ()V 2649 1 283504 0 32
+ciMethod java/util/AbstractCollection <init> ()V 753 1 341289 0 32
+ciMethod sun/reflect/ReflectionFactory newConstructorAccessor (Ljava/lang/reflect/Constructor;)Lsun/reflect/ConstructorAccessor; 2049 1 316 0 0
+ciMethod sun/reflect/ReflectionFactory copyConstructor (Ljava/lang/reflect/Constructor;)Ljava/lang/reflect/Constructor; 2145 1 2554 0 0
+ciMethod sun/reflect/ReflectionFactory checkInitted ()V 2057 1 1628 0 -1
+ciMethod sun/reflect/ReflectionFactory langReflectAccess ()Lsun/reflect/LangReflectAccess; 2281 1 5792 0 0
+ciMethod java/lang/ref/ReferenceQueue reallyPoll ()Ljava/lang/ref/Reference; 9 1 11418 0 256
+ciMethod java/lang/ref/ReferenceQueue poll ()Ljava/lang/ref/Reference; 2057 1 24079 0 0
+ciMethod sun/misc/VM addFinalRefCount (I)V 2457 1 21187 0 -1
+ciMethod java/lang/Math min (II)I 4097 1 165325 0 -1
+ciMethod java/util/Set iterator ()Ljava/util/Iterator; 0 0 1 0 -1
+ciMethod java/util/AbstractSet <init> ()V 65 1 30787 0 32
+ciMethod java/util/Collections shuffle (Ljava/util/List;)V 1985 1 2617 0 0
+ciMethod java/util/Collections shuffle (Ljava/util/List;Ljava/util/Random;)V 1985 1 2696 0 0
+ciMethod java/util/Collections swap (Ljava/util/List;II)V 89 1 3755 0 0
+ciMethod java/util/Collections swap ([Ljava/lang/Object;II)V 0 0 1 0 -1
+ciMethod java/util/Objects requireNonNull (Ljava/lang/Object;)Ljava/lang/Object; 2073 1 41399 0 64
+ciMethod java/util/Iterator hasNext ()Z 0 0 1 0 -1
+ciMethod java/util/Iterator next ()Ljava/lang/Object; 0 0 1 0 -1
+ciMethod java/util/ArrayList <init> (Ljava/util/Collection;)V 817 1 5226 0 384
+ciMethod java/util/ArrayList size ()I 1025 1 128 0 0
+ciMethod java/util/ArrayList elementData (I)Ljava/lang/Object; 2025 1 24175 0 96
+ciMethod java/util/ArrayList get (I)Ljava/lang/Object; 2025 1 8082 0 128
+ciMethod java/util/ArrayList set (ILjava/lang/Object;)Ljava/lang/Object; 17249 1 13133 0 224
+ciMethod java/util/ArrayList rangeCheck (I)V 2025 1 24175 0 64
+ciMethod java/util/ArrayList iterator ()Ljava/util/Iterator; 2121 1 39366 0 160
+ciMethod java/util/ArrayList access$100 (Ljava/util/ArrayList;)I 1025 1 128 0 0
+ciMethod sun/reflect/Reflection getCallerClass ()Ljava/lang/Class; 2049 1 256 0 -1
+ciMethod sun/reflect/Reflection getClassAccessFlags (Ljava/lang/Class;)I 2049 1 256 0 -1
+ciMethod sun/reflect/Reflection quickCheckMemberAccess (Ljava/lang/Class;I)Z 7481 1 6416 0 0
+ciMethod sun/reflect/Reflection ensureMemberAccess (Ljava/lang/Class;Ljava/lang/Class;Ljava/lang/Object;I)V 121 1 16 0 -1
+ciMethod sun/reflect/Reflection verifyMemberAccess (Ljava/lang/Class;Ljava/lang/Class;Ljava/lang/Object;I)Z 129 1 16 0 -1
+ciMethod sun/reflect/Reflection isSubclassOf (Ljava/lang/Class;Ljava/lang/Class;)Z 2049 5881 316 0 -1
+ciMethod java/util/HashMap hash (Ljava/lang/Object;)I 4097 1 164691 0 160
+ciMethod java/util/HashMap size ()I 2049 1 256 0 0
+ciMethod java/util/HashMap get (Ljava/lang/Object;)Ljava/lang/Object; 2073 1 61601 0 672
+ciMethod java/util/HashMap getNode (ILjava/lang/Object;)Ljava/util/HashMap$Node; 3073 177 20983 0 544
+ciMethod java/util/HashMap containsKey (Ljava/lang/Object;)Z 3105 1 22832 0 -1
+ciMethod java/util/HashMap put (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; 2049 1 44439 0 -1
+ciMethod java/util/HashMap clear ()V 2049 143745 5667 0 -1
+ciMethod java/util/HashMap keySet ()Ljava/util/Set; 2089 1 6416 0 192
+ciMethod java/lang/Class$3 <init> ()V 33 1 4 0 -1
+ciMethod java/lang/Class$ReflectionData <init> (I)V 1665 1 586 0 0
+ciMethod java/lang/Class$Atomic casReflectionData (Ljava/lang/Class;Ljava/lang/ref/SoftReference;Ljava/lang/ref/SoftReference;)Z 1665 1 586 0 0
+ciMethod java/lang/reflect/Modifier isPublic (I)Z 825 1 7088 0 0
+ciMethod java/lang/reflect/Modifier isProtected (I)Z 809 1 101 0 -1
+ciMethod java/lang/reflect/Modifier isAbstract (I)Z 2065 1 977 0 -1
+ciMethod java/lang/reflect/Modifier toString (I)Ljava/lang/String; 0 0 1 0 -1
+ciMethod sun/reflect/LangReflectAccess copyConstructor (Ljava/lang/reflect/Constructor;)Ljava/lang/reflect/Constructor; 0 0 1 0 -1
+ciMethod java/lang/reflect/ReflectAccess copyConstructor (Ljava/lang/reflect/Constructor;)Ljava/lang/reflect/Constructor; 2145 1 2555 0 0
+ciMethod sun/reflect/misc/ReflectUtil checkPackageAccess (Ljava/lang/Class;)V 561 1 76 0 -1
+ciMethod sun/reflect/misc/ReflectUtil isAncestor (Ljava/lang/ClassLoader;Ljava/lang/ClassLoader;)Z 9 177 25 0 0
+ciMethod sun/reflect/misc/ReflectUtil needsPackageAccessCheck (Ljava/lang/ClassLoader;Ljava/lang/ClassLoader;)Z 2729 1 846 0 0
+ciMethod sun/reflect/misc/ReflectUtil checkProxyPackageAccess (Ljava/lang/ClassLoader;[Ljava/lang/Class;)V 2425 2425 476 0 0
+ciMethod sun/reflect/misc/ReflectUtil isNonPublicProxyClass (Ljava/lang/Class;)Z 369 1 6039 0 0
+ciMethod sun/reflect/misc/ReflectUtil isVMAnonymousClass (Ljava/lang/Class;)Z 2041 1 319 0 -1
+ciMethod java/util/Arrays copyOf ([Ljava/lang/Object;ILjava/lang/Class;)[Ljava/lang/Object; 1449 1 9437 0 -1
+ciMethod sun/reflect/NativeConstructorAccessorImpl <init> (Ljava/lang/reflect/Constructor;)V 1857 1 279 0 -1
+ciMethod sun/reflect/NativeConstructorAccessorImpl setParent (Lsun/reflect/DelegatingConstructorAccessorImpl;)V 1857 1 279 0 -1
+ciMethod sun/reflect/DelegatingConstructorAccessorImpl <init> (Lsun/reflect/ConstructorAccessorImpl;)V 1857 1 279 0 -1
+ciMethod sun/reflect/DelegatingConstructorAccessorImpl newInstance ([Ljava/lang/Object;)Ljava/lang/Object; 4097 1 4049 0 0
+ciMethodData java/lang/Object <init> ()V 2 3609194 orig 264 216 160 217 88 0 0 0 0 104 4 251 27 0 0 0 0 32 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 68 79 32 101 120 116 114 97 32 100 97 116 97 32 108 111 99 107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 81 131 184 1 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 3 0 1 0 0 0 0 0 0 0 255 255 255 255 0 0 0 0 0 0 0 0 data 0 oops 0
+ciMethod java/util/concurrent/ConcurrentMap remove (Ljava/lang/Object;)Ljava/lang/Object; 0 0 1 0 -1
+ciMethod java/util/concurrent/ConcurrentMap values ()Ljava/util/Collection; 0 0 1 0 -1
+ciMethod java/util/concurrent/ConcurrentMap containsKey (Ljava/lang/Object;)Z 0 0 1 0 -1
+ciMethod java/util/HashMap$TreeNode root ()Ljava/util/HashMap$TreeNode; 0 0 1 0 -1
+ciMethod java/util/HashMap$TreeNode find (ILjava/lang/Object;Ljava/lang/Class;)Ljava/util/HashMap$TreeNode; 1 1 3 0 -1
+ciMethod java/util/HashMap$TreeNode getTreeNode (ILjava/lang/Object;)Ljava/util/HashMap$TreeNode; 25 1 3 0 0
+ciMethodData java/lang/String substring (II)Ljava/lang/String; 2 5825 orig 264 216 160 217 88 0 0 0 0 32 89 251 27 0 0 0 0 40 2 0 0 208 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 68 79 32 101 120 116 114 97 32 100 97 116 97 32 108 111 99 107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 25 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 46 1 0 0 153 172 0 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 15 0 2 0 0 0 248 0 0 0 255 255 255 255 7 0 1 0 0 0 0 0 data 31 0x10007 0x1593 0x30 0x0 0x90002 0x0 0x130007 0x1593 0x30 0x0 0x1b0002 0x0 0x240007 0x1593 0x30 0x0 0x2c0002 0x0 0x310007 0x1db 0x58 0x13b8 0x3a0007 0x7f2 0x38 0xbc6 0x3e0003 0xbc6 0x28 0x4b0002 0x9cd oops 0
+ciMethod java/util/HashMap$HashIterator <init> (Ljava/util/HashMap;)V 2057 6369 4592 0 608
+ciMethodData java/lang/StringBuilder append (Ljava/lang/String;)Ljava/lang/StringBuilder; 2 543973 orig 264 216 160 217 88 0 0 0 0 88 52 2 28 0 0 0 0 56 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 68 79 32 101 120 116 114 97 32 100 97 116 97 32 108 111 99 107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 19 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 41 95 66 0 1 0 0 0 214 28 0 0 0 0 0 0 2 0 0 0 0 0 3 0 2 0 0 0 16 0 0 0 255 255 255 255 2 0 2 0 0 0 0 0 data 2 0x20002 0x84be4 oops 0
+ciMethodData java/lang/StringBuilder <init> ()V 2 169880 orig 264 216 160 217 88 0 0 0 0 96 49 2 28 0 0 0 0 48 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 68 79 32 101 120 116 114 97 32 100 97 116 97 32 108 111 99 107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 145 0 0 0 57 184 20 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 3 0 2 0 0 0 16 0 0 0 255 255 255 255 2 0 3 0 0 0 0 0 data 2 0x30002 0x29707 oops 0
+ciMethodData java/lang/AbstractStringBuilder <init> (I)V 2 293842 orig 264 216 160 217 88 0 0 0 0 136 247 1 28 0 0 0 0 56 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 68 79 32 101 120 116 114 97 32 100 97 116 97 32 108 111 99 107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 157 0 0 0 169 217 35 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 3 0 2 0 0 0 16 0 0 0 255 255 255 255 2 0 1 0 0 0 0 0 data 2 0x10002 0x47b35 oops 0
+ciMethodData java/lang/StringBuilder toString ()Ljava/lang/String; 2 198611 orig 264 216 160 217 88 0 0 0 0 120 71 2 28 0 0 0 0 48 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 68 79 32 101 120 116 114 97 32 100 97 116 97 32 108 111 99 107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 29 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 148 0 0 0 249 57 24 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 3 0 2 0 0 0 16 0 0 0 255 255 255 255 2 0 13 0 0 0 0 0 data 2 0xd0002 0x3073f oops 0
+ciMethodData java/util/HashMap hash (Ljava/lang/Object;)I 2 164691 orig 264 216 160 217 88 0 0 0 0 248 68 10 28 0 0 0 0 176 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 68 79 32 101 120 116 114 97 32 100 97 116 97 32 108 111 99 107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 0 0 0 0 17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 153 10 20 0 1 0 0 0 233 113 0 0 0 0 0 0 2 0 0 0 0 0 6 0 2 0 0 0 104 0 0 0 255 255 255 255 7 224 1 0 0 0 0 0 data 13 0x1e007 0x28149 0x38 0xd 0x50003 0xd 0x48 0x90005 0x13cb4 0x23b3e50 0x139dc 0x1da45080 0x89a oops 2 9 java/lang/String 11 java/io/File
+ciMethodData java/lang/System getSecurityManager ()Ljava/lang/SecurityManager; 2 55426 orig 264 216 160 217 88 0 0 0 0 8 135 252 27 0 0 0 0 24 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 68 79 32 101 120 116 114 97 32 100 97 116 97 32 108 111 99 107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 145 1 0 0 137 183 6 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 3 0 1 0 0 0 0 0 0 0 255 255 255 255 0 0 0 0 0 0 0 0 data 0 oops 0
+ciMethodData java/lang/String lastIndexOf (II)I 2 45006 orig 264 216 160 217 88 0 0 0 0 176 80 251 27 0 0 0 0 240 1 0 0 32 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 68 79 32 101 120 116 114 97 32 100 97 116 97 32 108 111 99 107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 50 44 0 0 153 26 0 0 225 28 4 0 0 0 0 0 0 0 0 0 2 0 0 0 1 0 14 0 2 0 0 0 152 0 0 0 255 255 255 255 7 0 3 0 0 0 0 0 data 19 0x30007 0x0 0x88 0x353 0x100002 0x353 0x170007 0x8d 0x58 0x8662 0x1f0007 0x839c 0x20 0x2c6 0x280003 0x839c 0xffffffffffffffc0 0x300002 0x0 oops 0
+ciMethodData java/lang/ref/Reference <init> (Ljava/lang/Object;Ljava/lang/ref/ReferenceQueue;)V 2 22231 orig 264 216 160 217 88 0 0 0 0 48 104 253 27 0 0 0 0 120 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 68 79 32 101 120 116 114 97 32 100 97 116 97 32 108 111 99 107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 185 174 2 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 6 0 2 0 0 0 72 0 0 0 255 255 255 255 2 0 1 0 0 0 0 0 data 9 0x10002 0x55d7 0xb0007 0x4793 0x38 0xe44 0x110003 0xe44 0x18 oops 0
+ciMethodData java/util/HashMap getNode (ILjava/lang/Object;)Ljava/util/HashMap$Node; 2 20983 orig 264 216 160 217 88 0 0 0 0 48 78 10 28 0 0 0 0 8 4 0 0 96 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 68 79 32 101 120 116 114 97 32 100 97 116 97 32 108 111 99 107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 0 0 0 0 17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 128 1 0 0 185 131 2 0 129 26 0 0 98 40 0 0 253 2 0 0 2 0 0 0 2 0 45 0 2 0 0 0 176 2 0 0 255 255 255 255 7 0 6 0 0 0 0 0 data 86 0x60007 0x1755 0x2b0 0x3929 0xe0007 0x0 0x290 0x3928 0x1c0007 0x10a7 0x270 0x2882 0x250007 0x891 0xb0 0x1ff1 0x310007 0xe33 0x90 0x11be 0x350007 0x0 0x70 0x11be 0x3b0005 0x9fd 0x1da45470 0x14b 0x23b3e50 0x676 0x3e0007 0x60 0x20 0x115e 0x4c0007 0x3cf 0x1a0 0x522 0x510004 0xfffffffffffffade 0x26e75f90 0x2b 0x0 0x0 0x54e007 0x522 0x80 0x3 0x590004 0x0 0x261ee180 0x3 0x0 0x0 0x5e0005 0x3 0x0 0x0 0x0 0x0 0x680007 0x35a 0xb0 0x3e7 0x740007 0xe0 0x90 0x307 0x780007 0x0 0x70 0x307 0x7e0005 0x1cf 0x23b3e50 0xd2 0x261efdd0 0x66 0x81e007 0x6 0x20 0x303 0x8f0007 0x21f 0xffffffffffffff50 0x141 oops 6 26 java/security/CodeSource 28 java/lang/String 40 java/util/HashMap$Node 50 java/util/HashMap$TreeNode 74 java/lang/String 76 java/util/jar/Attributes$Name
+ciMethodData java/util/ArrayList get (I)Ljava/lang/Object; 2 8082 orig 264 216 160 217 88 0 0 0 0 8 203 9 28 0 0 0 0 144 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 68 79 32 101 120 116 114 97 32 100 97 116 97 32 108 111 99 107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 253 0 0 0 169 244 0 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 64 0 0 0 255 255 255 255 2 0 2 0 0 0 0 0 data 8 0x20002 0x1e95 0x70005 0x0 0x32414c80 0x1e95 0x0 0x0 oops 1 4 java/util/ArrayList
+ciMethodData java/util/ArrayList rangeCheck (I)V 2 24175 orig 264 216 160 217 88 0 0 0 0 80 211 9 28 0 0 0 0 104 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 68 79 32 101 120 116 114 97 32 100 97 116 97 32 108 111 99 107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 25 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 253 0 0 0 145 235 2 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 64 0 0 0 255 255 255 255 7 0 5 0 0 0 0 0 data 8 0x50007 0x5d72 0x40 0x0 0xe0002 0x0 0x110002 0x0 oops 0
+ciMethodData java/util/ArrayList elementData (I)Ljava/lang/Object; 2 24175 orig 264 216 160 217 88 0 0 0 0 112 202 9 28 0 0 0 0 40 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 68 79 32 101 120 116 114 97 32 100 97 116 97 32 108 111 99 107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 253 0 0 0 145 235 2 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 255 255 255 255 0 0 0 0 0 0 0 0 data 0 oops 0
+ciMethod java/lang/IllegalAccessException <init> (Ljava/lang/String;)V 0 0 1 0 -1
+ciMethodData java/util/AbstractSet <init> ()V 2 30787 orig 264 216 160 217 88 0 0 0 0 32 33 8 28 0 0 0 0 48 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 68 79 32 101 120 116 114 97 32 100 97 116 97 32 108 111 99 107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 0 0 0 217 193 3 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 3 0 2 0 0 0 16 0 0 0 255 255 255 255 2 0 1 0 0 0 0 0 data 2 0x10002 0x783b oops 0
+ciMethodData java/util/AbstractCollection <init> ()V 2 341289 orig 264 216 160 217 88 0 0 0 0 136 240 6 28 0 0 0 0 48 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 68 79 32 101 120 116 114 97 32 100 97 116 97 32 108 111 99 107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 94 0 0 0 89 166 41 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 3 0 2 0 0 0 16 0 0 0 255 255 255 255 2 0 1 0 0 0 0 0 data 2 0x10002 0x534ce oops 0
+ciMethodData java/lang/String lastIndexOf (I)I 2 138139 orig 264 216 160 217 88 0 0 0 0 240 79 251 27 0 0 0 0 128 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 68 79 32 101 120 116 114 97 32 100 97 116 97 32 108 111 99 107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 128 1 0 0 217 208 16 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 3 0 2 0 0 0 48 0 0 0 255 255 255 255 5 0 9 0 0 0 0 0 data 6 0x90005 0x0 0x23b3e50 0x21a1b 0x0 0x0 oops 1 2 java/lang/String
+ciMethodData java/util/HashMap get (Ljava/lang/Object;)Ljava/lang/Object; 2 61601 orig 264 216 160 217 88 0 0 0 0 16 77 10 28 0 0 0 0 200 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 68 79 32 101 120 116 114 97 32 100 97 116 97 32 108 111 99 107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 1 0 0 241 124 7 0 1 0 0 0 109 50 0 0 0 0 0 0 2 0 0 0 0 0 10 0 2 0 0 0 120 0 0 0 255 255 255 255 2 0 2 0 0 0 0 0 data 15 0x20002 0xef9e 0x60005 0x17e 0x32414bd0 0xee22 0x261e9240 0x1 0xb0007 0xc1b7 0x38 0x2deb 0xf0003 0x2deb 0x18 oops 2 4 java/util/HashMap 6 sun/net/www/http/KeepAliveCache
+ciMethod java/util/ArrayList$Itr <init> (Ljava/util/ArrayList;)V 2121 1 55900 0 0
+ciMethod java/util/ArrayList$Itr hasNext ()Z 2097 1 26722 0 96
+ciMethod java/util/ArrayList$Itr next ()Ljava/lang/Object; 3185 1 28534 0 224
+ciMethod java/util/ArrayList$Itr checkForComodification ()V 3185 1 30606 0 0
+ciMethod java/util/ArrayList$Itr <init> (Ljava/util/ArrayList;Ljava/util/ArrayList$1;)V 2121 1 55900 0 96
+ciMethodData java/lang/ref/ReferenceQueue poll ()Ljava/lang/ref/Reference; 2 24079 orig 264 216 160 217 88 0 0 0 0 72 79 7 28 0 0 0 0 80 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 68 79 32 101 120 116 114 97 32 100 97 116 97 32 108 111 99 107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 113 232 2 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 9 0 2 0 0 0 48 0 0 0 255 255 255 255 7 0 4 0 0 0 0 0 data 6 0x40007 0x39 0x20 0x5cd5 0x110002 0x39 oops 0
+ciMethodData java/lang/ref/ReferenceQueue reallyPoll ()Ljava/lang/ref/Reference; 2 11418 orig 264 216 160 217 88 0 0 0 0 144 78 7 28 0 0 0 0 0 2 0 0 64 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 68 79 32 101 120 116 114 97 32 100 97 116 97 32 108 111 99 107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 201 100 1 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 14 0 2 0 0 0 184 0 0 0 255 255 255 255 7 0 6 0 0 0 0 0 data 23 0x60007 0x54 0xb8 0x2c45 0xf0007 0x2a58 0x38 0x1ed 0x130003 0x1ed 0x18 0x340004 0xffffffffffffffc6 0x23b4fe0 0x2c0b 0x0 0x0 0x370007 0x3a 0x30 0x2c0b 0x3b0002 0x2c0b oops 1 13 java/lang/ref/Finalizer
+ciMethod java/util/ListIterator next ()Ljava/lang/Object; 0 0 1 0 -1
+ciMethod java/util/ListIterator set (Ljava/lang/Object;)V 0 0 1 0 -1
+ciMethod java/util/HashMap$KeySet <init> (Ljava/util/HashMap;)V 1129 1 1618 0 0
+ciMethod java/util/HashMap$KeySet iterator ()Ljava/util/Iterator; 2609 1 6508 0 768
+ciMethod java/util/HashMap$KeyIterator <init> (Ljava/util/HashMap;)V 2681 1 6508 0 0
+ciMethod java/lang/reflect/Proxy isProxyClass (Ljava/lang/Class;)Z 2049 1 6392 0 0
+ciMethod java/lang/reflect/WeakCache containsValue (Ljava/lang/Object;)Z 657 1 390 0 0
+ciMethod java/lang/reflect/WeakCache expungeStaleEntries ()V 2537 1 956 0 0
+ciMethod java/util/concurrent/atomic/AtomicLong get ()J 4097 1 9136 0 0
+ciMethod java/util/concurrent/atomic/AtomicLong compareAndSet (JJ)Z 4097 1 9136 0 0
+ciMethod java/lang/reflect/WeakCache$CacheKey expungeFrom (Ljava/util/concurrent/ConcurrentMap;Ljava/util/concurrent/ConcurrentMap;)V 0 0 1 0 0
+ciMethodData java/lang/Class getName ()Ljava/lang/String; 2 19357 orig 264 216 160 217 88 0 0 0 0 24 193 251 27 0 0 0 0 80 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 68 79 32 101 120 116 114 97 32 100 97 116 97 32 108 111 99 107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 233 84 2 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 6 0 2 0 0 0 48 0 0 0 255 255 255 255 7 0 6 0 0 0 0 0 data 6 0x60007 0x43f4 0x30 0x6a9 0xb0002 0x6a9 oops 0
+ciMethodData java/util/ArrayList$Itr hasNext ()Z 2 26722 orig 264 216 160 217 88 0 0 0 0 24 126 36 28 0 0 0 0 144 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 68 79 32 101 120 116 114 97 32 100 97 116 97 32 108 111 99 107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 1 0 0 225 58 3 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 6 0 2 0 0 0 72 0 0 0 255 255 255 255 2 0 8 0 0 0 0 0 data 9 0x80002 0x675c 0xb0007 0x5388 0x38 0x13d4 0xf0003 0x13d4 0x18 oops 0
+ciMethodData java/util/ArrayList$Itr next ()Ljava/lang/Object; 2 28534 orig 264 216 160 217 88 0 0 0 0 232 126 36 28 0 0 0 0 232 1 0 0 96 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 68 79 32 101 120 116 114 97 32 100 97 116 97 32 108 111 99 107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 25 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 142 1 0 0 65 111 3 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 10 0 2 0 0 0 160 0 0 0 255 255 255 255 5 0 1 0 0 0 0 0 data 20 0x10005 0x78 0x32414ff0 0x187b 0x20060a90 0x54f5 0xe0002 0x6de8 0x110007 0x6de8 0x30 0x0 0x180002 0x0 0x270007 0x6de8 0x30 0x0 0x2e0002 0x0 oops 2 2 java/util/ArrayList$Itr 4 java/util/ArrayList$ListItr
+ciMethodData java/util/ArrayList$Itr checkForComodification ()V 2 30606 orig 264 216 160 217 88 0 0 0 0 80 129 36 28 0 0 0 0 80 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 68 79 32 101 120 116 114 97 32 100 97 116 97 32 108 111 99 107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 25 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 142 1 0 0 1 176 3 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 5 0 2 0 0 0 48 0 0 0 255 255 255 255 7 0 11 0 0 0 0 0 data 6 0xb0007 0x7600 0x30 0x0 0x120002 0x0 oops 0
+ciMethodData java/lang/Class arrayContentsEq ([Ljava/lang/Object;[Ljava/lang/Object;)Z 2 3816 orig 264 216 160 217 88 0 0 0 0 216 250 251 27 0 0 0 0 152 2 0 0 208 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 68 79 32 101 120 116 114 97 32 100 97 116 97 32 108 111 99 107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 42 0 0 0 241 117 0 0 177 77 0 0 0 0 0 0 0 0 0 0 2 0 0 0 1 0 23 0 2 0 0 0 72 1 0 0 255 255 255 255 7 0 1 0 0 0 0 0 data 41 0x10007 0xeb1 0x78 0xd 0x50007 0x0 0x40 0xd 0xa0007 0x4 0x38 0x9 0xe0003 0x9 0x18 0x140007 0xeb1 0x58 0x0 0x190007 0x0 0x38 0x0 0x1d0003 0x0 0x18 0x260007 0xcb9 0x20 0x1f8 0x300007 0xbf0 0x58 0xa7f 0x390007 0x9b6 0x20 0xc9 0x410003 0x9b6 0xffffffffffffffc0 oops 0
+ciMethodData java/lang/ref/SoftReference get ()Ljava/lang/Object; 2 22211 orig 264 216 160 217 88 0 0 0 0 136 111 253 27 0 0 0 0 112 1 0 0 48 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 68 79 32 101 120 116 114 97 32 100 97 116 97 32 108 111 99 107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 1 0 0 249 173 2 0 1 0 0 0 16 47 0 0 0 0 0 0 2 0 0 0 0 0 8 0 2 0 0 0 80 0 0 0 255 255 255 255 2 0 1 0 0 0 0 0 data 10 0x10002 0x55bf 0x60007 0x4 0x40 0x55bb 0x11e007 0x54a3 0x20 0x119 oops 0
+ciMethodData java/lang/Class reflectionData ()Ljava/lang/Class$ReflectionData; 2 5086 orig 264 216 160 217 88 0 0 0 0 152 233 251 27 0 0 0 0 56 2 0 0 192 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 68 79 32 101 120 116 114 97 32 100 97 116 97 32 108 111 99 107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9 1 0 0 169 150 0 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 18 0 2 0 0 0 240 0 0 0 255 255 255 255 7 0 13 0 0 0 0 0 data 30 0xd0007 0x0 0xe0 0x12d5 0x110007 0x1fb 0xc0 0x10da 0x150005 0x0 0x23b4d10 0x10da 0x0 0x0 0x180004 0x0 0x27304f90 0x10da 0x0 0x0 0x1d0007 0x0 0x40 0x10da 0x250007 0x0 0x20 0x10da 0x2d0002 0x1fb oops 2 10 java/lang/ref/SoftReference 16 java/lang/Class$ReflectionData
+ciMethodData java/lang/Class newReflectionData (Ljava/lang/ref/SoftReference;I)Ljava/lang/Class$ReflectionData; 1 586 orig 264 216 160 217 88 0 0 0 0 112 234 251 27 0 0 0 0 160 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 68 79 32 101 120 116 114 97 32 100 97 116 97 32 108 111 99 107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 25 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 80 0 0 0 209 15 0 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 1 0 26 0 2 0 0 0 72 1 0 0 255 255 255 255 7 0 3 0 0 0 0 0 data 41 0x30007 0x1fa 0x20 0x0 0xd0002 0x1fa 0x180002 0x1fa 0x1b0002 0x1fa 0x1e0007 0x0 0x20 0x1fa 0x2e0007 0x0 0xc0 0x0 0x320005 0x0 0x0 0x0 0x0 0x0 0x350004 0x0 0x0 0x0 0x0 0x0 0x3a0007 0x0 0x40 0x0 0x420007 0x0 0x20 0x0 0x470003 0x0 0xfffffffffffffef0 oops 0
+ciMethodData sun/reflect/ReflectionFactory langReflectAccess ()Lsun/reflect/LangReflectAccess; 2 5792 orig 264 216 160 217 88 0 0 0 0 240 49 7 28 0 0 0 0 112 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 68 79 32 101 120 116 114 97 32 100 97 116 97 32 108 111 99 107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 29 1 0 0 25 172 0 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 9 0 2 0 0 0 48 0 0 0 255 255 255 255 7 0 3 0 0 0 0 0 data 6 0x30007 0x1583 0x30 0x0 0x70002 0x0 oops 0
+ciMethodData java/lang/reflect/Modifier isPublic (I)Z 2 7088 orig 264 216 160 217 88 0 0 0 0 64 131 11 28 0 0 0 0 88 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 68 79 32 101 120 116 114 97 32 100 97 116 97 32 108 111 99 107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 103 0 0 0 73 218 0 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 6 0 2 0 0 0 56 0 0 0 255 255 255 255 7 0 3 0 0 0 0 0 data 7 0x30007 0x4d 0x38 0x1afc 0x70003 0x1afc 0x18 oops 0
+ciMethodData java/lang/reflect/Executable <init> ()V 2 5698 orig 264 216 160 217 88 0 0 0 0 72 18 255 27 0 0 0 0 48 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 68 79 32 101 120 116 114 97 32 100 97 116 97 32 108 111 99 107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 19 1 0 0 121 169 0 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 3 0 2 0 0 0 16 0 0 0 255 255 255 255 2 0 1 0 0 0 0 0 data 2 0x10002 0x152f oops 0
+ciMethodData java/lang/reflect/AccessibleObject <init> ()V 2 6483 orig 264 216 160 217 88 0 0 0 0 16 137 254 27 0 0 0 0 48 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 68 79 32 101 120 116 114 97 32 100 97 116 97 32 108 111 99 107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 56 1 0 0 25 181 0 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 3 0 2 0 0 0 16 0 0 0 255 255 255 255 2 0 1 0 0 0 0 0 data 2 0x10002 0x16a3 oops 0
+ciMethodData java/lang/ref/Reference <init> (Ljava/lang/Object;)V 2 4023 orig 264 216 160 217 88 0 0 0 0 136 103 253 27 0 0 0 0 56 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 68 79 32 101 120 116 114 97 32 100 97 116 97 32 108 111 99 107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 1 0 0 153 117 0 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 6 0 2 0 0 0 16 0 0 0 255 255 255 255 2 0 3 0 0 0 0 0 data 2 0x30002 0xeb3 oops 0
+ciMethodData java/util/AbstractList <init> ()V 2 283504 orig 264 216 160 217 88 0 0 0 0 168 221 6 28 0 0 0 0 48 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 68 79 32 101 120 116 114 97 32 100 97 116 97 32 108 111 99 107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 75 1 0 0 41 145 34 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 3 0 2 0 0 0 16 0 0 0 255 255 255 255 2 0 1 0 0 0 0 0 data 2 0x10002 0x45229 oops 0
+ciMethod java/lang/NoSuchMethodException <init> (Ljava/lang/String;)V 1545 1 338 0 0
+ciMethodData java/lang/ClassLoader getClassLoader (Ljava/lang/Class;)Ljava/lang/ClassLoader; 2 5745 orig 264 216 160 217 88 0 0 0 0 8 92 252 27 0 0 0 0 152 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 68 79 32 101 120 116 114 97 32 100 97 116 97 32 108 111 99 107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 168 0 0 0 73 174 0 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 80 0 0 0 255 255 255 255 7 0 1 0 0 0 0 0 data 10 0x10007 0x15c9 0x20 0x0 0x70005 0x11a 0x23b3ee0 0x14af 0x0 0x0 oops 1 6 java/lang/Class
+ciMethodData java/lang/Class checkInitted ()V 2 3973 orig 264 216 160 217 88 0 0 0 0 160 3 252 27 0 0 0 0 128 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 68 79 32 101 120 116 114 97 32 100 97 116 97 32 108 111 99 107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 41 116 0 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 5 0 2 0 0 0 64 0 0 0 255 255 255 255 7 0 3 0 0 0 0 0 data 8 0x30007 0x0 0x20 0xe85 0xb0002 0x0 0xe0002 0x0 oops 0
+ciMethodData java/util/Objects requireNonNull (Ljava/lang/Object;)Ljava/lang/Object; 2 41399 orig 264 216 160 217 88 0 0 0 0 72 2 9 28 0 0 0 0 80 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 68 79 32 101 120 116 114 97 32 100 97 116 97 32 108 111 99 107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 27 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 3 1 0 0 161 5 5 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 5 0 2 0 0 0 48 0 0 0 255 255 255 255 7 0 1 0 0 0 0 0 data 6 0x10007 0xa0b4 0x30 0x0 0x80002 0x0 oops 0
+ciMethodData java/util/ArrayList iterator ()Ljava/util/Iterator; 2 39366 orig 264 216 160 217 88 0 0 0 0 248 218 9 28 0 0 0 0 48 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 68 79 32 101 120 116 114 97 32 100 97 116 97 32 108 111 99 107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9 1 0 0 233 197 4 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 3 0 2 0 0 0 16 0 0 0 255 255 255 255 2 0 6 0 0 0 0 0 data 2 0x60002 0x98bd oops 0
+ciMethodData java/util/ArrayList$Itr <init> (Ljava/util/ArrayList;Ljava/util/ArrayList$1;)V 2 55900 orig 264 216 160 217 88 0 0 0 0 224 129 36 28 0 0 0 0 64 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 68 79 32 101 120 116 114 97 32 100 97 116 97 32 108 111 99 107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 4 0 0 0 0 0 0 0 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9 1 0 0 153 202 6 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 3 0 2 0 0 0 16 0 0 0 255 255 255 255 2 0 2 0 0 0 0 0 data 2 0x20002 0xd953 oops 0
+ciMethodData java/util/ArrayList$Itr <init> (Ljava/util/ArrayList;)V 2 55900 orig 264 216 160 217 88 0 0 0 0 120 125 36 28 0 0 0 0 56 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 68 79 32 101 120 116 114 97 32 100 97 116 97 32 108 111 99 107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9 1 0 0 153 202 6 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 3 0 2 0 0 0 16 0 0 0 255 255 255 255 2 0 6 0 0 0 0 0 data 2 0x60002 0xd953 oops 0
+ciMethod sun/reflect/BootstrapConstructorAccessorImpl <init> (Ljava/lang/reflect/Constructor;)V 193 1 37 0 -1
+ciMethod sun/reflect/BootstrapConstructorAccessorImpl newInstance ([Ljava/lang/Object;)Ljava/lang/Object; 297 1 37 0 0
+ciMethodData java/lang/ref/SoftReference <init> (Ljava/lang/Object;)V 1 1029 orig 264 216 160 217 88 0 0 0 0 72 110 253 27 0 0 0 0 56 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 68 79 32 101 120 116 114 97 32 100 97 116 97 32 108 111 99 107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 232 0 0 0 233 24 0 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 7 0 2 0 0 0 16 0 0 0 255 255 255 255 2 0 2 0 0 0 0 0 data 2 0x20002 0x31d oops 0
+ciMethodData java/util/HashMap$HashIterator <init> (Ljava/util/HashMap;)V 2 21127 orig 264 216 160 217 88 0 0 0 0 136 66 25 28 0 0 0 0 184 1 0 0 48 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 68 79 32 101 120 116 114 97 32 100 97 116 97 32 108 111 99 107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 28 3 0 0 121 135 0 0 89 123 2 0 0 0 0 0 0 0 0 0 2 0 0 0 1 0 13 0 2 0 0 0 144 0 0 0 255 255 255 255 2 0 6 0 0 0 0 0 data 18 0x60002 0x10ef 0x260007 0x10a 0x80 0xfe5 0x2d0007 0x3a 0x60 0xfab 0x360007 0x0 0x40 0x4f6b 0x4b0007 0x3fc0 0xffffffffffffffe0 0xfab oops 0
+ciMethodData java/lang/Class getReflectionFactory ()Lsun/reflect/ReflectionFactory; 2 3344 orig 264 216 160 217 88 0 0 0 0 0 3 252 27 0 0 0 0 176 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 68 79 32 101 120 116 114 97 32 100 97 116 97 32 108 111 99 107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 128 1 0 0 129 92 0 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 6 0 2 0 0 0 112 0 0 0 255 255 255 255 7 0 3 0 0 0 0 0 data 14 0x30007 0xb90 0x70 0x0 0xa0002 0x0 0xd0002 0x0 0x100004 0x0 0x0 0x0 0x0 0x0 oops 0
+ciMethodData java/lang/Class checkMemberAccess (ILjava/lang/Class;Z)V 2 4203 orig 264 216 160 217 88 0 0 0 0 0 231 251 27 0 0 0 0 80 2 0 0 176 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 68 79 32 101 120 116 114 97 32 100 97 116 97 32 108 111 99 107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 128 1 0 0 89 119 0 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 14 0 2 0 0 0 240 0 0 0 255 255 255 255 2 0 0 0 0 0 0 0 data 30 0x2 0xeeb 0x70007 0x3e0 0xe0 0xb0b 0xb0002 0xb0b 0x110005 0x0 0x23b3ee0 0xb0b 0x0 0x0 0x170007 0x85e 0x70 0x2ad 0x1e0007 0x15e 0x50 0x14f 0x260005 0x0 0x20884780 0x14f 0x0 0x0 0x2d0002 0xb0b oops 2 10 java/lang/Class 24 cpw/mods/fml/relauncher/FMLSecurityManager
+ciMethodData java/lang/Class checkPackageAccess (Ljava/lang/ClassLoader;Z)V 1 2909 orig 264 216 160 217 88 0 0 0 0 232 231 251 27 0 0 0 0 184 3 0 0 160 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 68 79 32 101 120 116 114 97 32 100 97 116 97 32 108 111 99 107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 81 12 0 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 1 0 47 0 2 0 0 0 96 2 0 0 255 255 255 255 2 0 0 0 0 0 0 0 data 76 0x2 0x18a 0x50007 0x18 0x250 0x172 0x90005 0x172 0x0 0x0 0x0 0x0 0x110002 0x172 0x140007 0x150 0x160 0x22 0x180005 0x22 0x0 0x0 0x0 0x0 0x210005 0x22 0x0 0x0 0x0 0x0 0x290007 0x0 0xe0 0x22 0x310005 0x22 0x0 0x0 0x0 0x0 0x370002 0x22 0x3a0007 0x22 0x50 0x0 0x3e0002 0x0 0x410007 0x0 0x50 0x0 0x470005 0x0 0x20884780 0x22 0x0 0x0 0x4b0007 0x33 0x90 0x13f 0x4f0002 0x13f 0x520007 0xa7 0x60 0x98 0x570005 0x98 0x0 0x0 0x0 0x0 0x5a0002 0x98 oops 1 54 cpw/mods/fml/relauncher/FMLSecurityManager
+ciMethodData java/lang/Class getInterfaces ()[Ljava/lang/Class; 1 1113 orig 264 216 160 217 88 0 0 0 0 64 198 251 27 0 0 0 0 24 2 0 0 96 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 68 79 32 101 120 116 114 97 32 100 97 116 97 32 108 111 99 107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 129 1 0 0 193 22 0 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 8 0 2 0 0 0 208 0 0 0 255 255 255 255 2 0 1 0 0 0 0 0 data 26 0x10002 0x2d8 0x60007 0x2d8 0x30 0x0 0xa0002 0x0 0x140007 0x289 0x30 0x4f 0x180002 0x4f 0x220005 0x0 0x20621400 0x2d8 0x0 0x0 0x250004 0x0 0x20621400 0x2d8 0x0 0x0 oops 2 16 [Ljava/lang/Class; 22 [Ljava/lang/Class;
+ciMethodData java/lang/Class privateGetDeclaredConstructors (Z)[Ljava/lang/reflect/Constructor; 2 2586 orig 264 216 160 217 88 0 0 0 0 88 242 251 27 0 0 0 0 232 2 0 0 48 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 68 79 32 101 120 116 114 97 32 100 97 116 97 32 108 111 99 107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 1 0 0 177 72 0 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 22 0 2 0 0 0 152 1 0 0 255 255 255 255 2 0 0 0 0 0 0 0 data 51 0x2 0x916 0x40002 0x916 0x90007 0x0 0x78 0x916 0xd0007 0xbc 0x38 0x85a 0x140003 0x85a 0x18 0x1d0007 0x113 0x20 0x803 0x230005 0x0 0x23b3ee0 0x113 0x0 0x0 0x260007 0x10f 0x68 0x4 0x2d0004 0x0 0x0 0x0 0x0 0x0 0x350003 0x4 0x28 0x3a0002 0x10f 0x3f0007 0x0 0x58 0x113 0x430007 0xa6 0x38 0x6d 0x4b0003 0x6d 0x18 oops 1 21 java/lang/Class
+ciMethodData java/lang/reflect/Constructor getParameterTypes ()[Ljava/lang/Class; 2 3153 orig 264 216 160 217 88 0 0 0 0 8 70 255 27 0 0 0 0 168 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 68 79 32 101 120 116 114 97 32 100 97 116 97 32 108 111 99 107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7 1 0 0 81 90 0 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 3 0 2 0 0 0 96 0 0 0 255 255 255 255 5 0 4 0 0 0 0 0 data 12 0x40005 0x0 0x20621400 0xb4a 0x0 0x0 0x70004 0x0 0x20621400 0xb4a 0x0 0x0 oops 2 2 [Ljava/lang/Class; 8 [Ljava/lang/Class;
+ciMethodData java/lang/reflect/Constructor newInstance ([Ljava/lang/Object;)Ljava/lang/Object; 2 4086 orig 264 216 160 217 88 0 0 0 0 248 76 255 27 0 0 0 0 160 2 0 0 16 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 68 79 32 101 120 116 114 97 32 100 97 116 97 32 108 111 99 107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 25 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 1 0 0 129 119 0 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 18 0 2 0 0 0 80 1 0 0 255 255 255 255 7 0 4 0 0 0 0 0 data 42 0x40007 0x5ee 0x90 0x902 0xf0002 0x902 0x120007 0x8ff 0x60 0x3 0x150002 0x3 0x240005 0x0 0x23b5650 0x3 0x0 0x0 0x2b0005 0x7 0x23b3ee0 0xee9 0x0 0x0 0x320007 0xef0 0x30 0x0 0x3b0002 0x0 0x450007 0xde2 0x30 0x10e 0x490002 0x10e 0x4f0005 0x0 0x26c35810 0xecf 0x26c358c0 0x21 oops 4 14 java/lang/reflect/Constructor 20 java/lang/Class 38 sun/reflect/DelegatingConstructorAccessorImpl 40 sun/reflect/BootstrapConstructorAccessorImpl
+ciMethodData sun/reflect/Reflection quickCheckMemberAccess (Ljava/lang/Class;I)Z 2 6416 orig 264 216 160 217 88 0 0 0 0 32 32 10 28 0 0 0 0 112 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 68 79 32 101 120 116 114 97 32 100 97 116 97 32 108 111 99 107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 79 1 0 0 73 171 0 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 3 0 2 0 0 0 32 0 0 0 255 255 255 255 2 0 1 0 0 0 0 0 data 4 0x10002 0x1569 0x60002 0x1569 oops 0
+ciMethodData java/lang/reflect/AccessibleObject checkAccess (Ljava/lang/Class;Ljava/lang/Class;Ljava/lang/Object;I)V 1 4 orig 264 216 160 217 88 0 0 0 0 8 142 254 27 0 0 0 0 128 3 0 0 200 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 68 79 32 101 120 116 114 97 32 100 97 116 97 32 108 111 99 107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 33 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 24 2 0 0 255 255 255 255 7 0 2 0 0 0 0 0 data 67 0x20007 0x4 0x20 0x0 0x100007 0x4 0x1a8 0x0 0x150002 0x0 0x180007 0x0 0x178 0x0 0x1c0005 0x0 0x0 0x0 0x0 0x0 0x230007 0x0 0x128 0x0 0x280004 0x0 0x0 0x0 0x0 0x0 0x2b0007 0x0 0xf8 0x0 0x300004 0x0 0x0 0x0 0x0 0x0 0x330004 0x0 0x0 0x0 0x0 0x0 0x3e0007 0x0 0x40 0x0 0x460007 0x0 0x20 0x0 0x4a0003 0x0 0x38 0x500007 0x2 0x20 0x2 0x5c0005 0x0 0x23b53f0 0x1 0x23b5650 0x1 oops 2 63 java/lang/reflect/Field 65 java/lang/reflect/Constructor
+ciMethodData java/lang/reflect/Constructor acquireConstructorAccessor ()Lsun/reflect/ConstructorAccessor; 1 317 orig 264 216 160 217 88 0 0 0 0 232 78 255 27 0 0 0 0 48 2 0 0 112 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 68 79 32 101 120 116 114 97 32 100 97 116 97 32 108 111 99 107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 47 0 0 0 113 8 0 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 232 0 0 0 255 255 255 255 7 0 6 0 0 0 0 0 data 29 0x60007 0x0 0x50 0x10e 0xd0005 0x10e 0x0 0x0 0x0 0x0 0x120007 0x10d 0x38 0x1 0x1a0003 0x1 0x78 0x210005 0x0 0x27309ba0 0x10d 0x0 0x0 0x270005 0x10d 0x0 0x0 0x0 0x0 oops 1 19 sun/reflect/ReflectionFactory
+ciMethodData java/lang/Class getConstructor0 ([Ljava/lang/Class;I)Ljava/lang/reflect/Constructor; 2 2558 orig 264 216 160 217 88 0 0 0 0 8 250 251 27 0 0 0 0 152 3 0 0 56 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 68 79 32 101 120 116 114 97 32 100 97 116 97 32 108 111 99 107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 1 0 0 177 71 0 0 241 17 0 0 0 0 0 0 0 0 0 0 2 0 0 0 1 0 27 0 2 0 0 0 64 2 0 0 255 255 255 255 7 0 2 0 0 0 0 0 data 72 0x20007 0xb0 0x38 0x846 0x60003 0x846 0x18 0xa0002 0x8f6 0x1d0007 0x15 0xd8 0xb1f 0x2a0005 0x9 0x23b5650 0xb16 0x0 0x0 0x2d0002 0xb1f 0x300007 0x23e 0x60 0x8e1 0x330002 0x8e1 0x380005 0x0 0x27309ba0 0x8e1 0x0 0x0 0x3f0003 0x23e 0xffffffffffffff40 0x4a0002 0x15 0x4e0005 0x0 0x23b3ee0 0x15 0x0 0x0 0x510005 0x0 0x1da44e20 0x15 0x0 0x0 0x560005 0x0 0x1da44e20 0x15 0x0 0x0 0x5a0002 0x15 0x5d0005 0x0 0x1da44e20 0x15 0x0 0x0 0x600005 0x0 0x1da44e20 0x15 0x0 0x0 0x630002 0x15 oops 7 15 java/lang/reflect/Constructor 29 sun/reflect/ReflectionFactory 40 java/lang/Class 46 java/lang/StringBuilder 52 java/lang/StringBuilder 60 java/lang/StringBuilder 66 java/lang/StringBuilder
+ciMethodData sun/reflect/ReflectionFactory copyConstructor (Ljava/lang/reflect/Constructor;)Ljava/lang/reflect/Constructor; 2 2555 orig 264 216 160 217 88 0 0 0 0 152 46 7 28 0 0 0 0 144 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 68 79 32 101 120 116 114 97 32 100 97 116 97 32 108 111 99 107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12 1 0 0 121 71 0 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 64 0 0 0 255 255 255 255 2 0 0 0 0 0 0 0 data 8 0x2 0x8ef 0x40005 0x0 0x1fd96510 0x8ef 0x0 0x0 oops 1 4 java/lang/reflect/ReflectAccess
+ciMethodData java/lang/reflect/ReflectAccess copyConstructor (Ljava/lang/reflect/Constructor;)Ljava/lang/reflect/Constructor; 2 2555 orig 264 216 160 217 88 0 0 0 0 224 170 11 28 0 0 0 0 128 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 68 79 32 101 120 116 114 97 32 100 97 116 97 32 108 111 99 107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12 1 0 0 121 71 0 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 48 0 0 0 255 255 255 255 5 0 1 0 0 0 0 0 data 6 0x10005 0x16 0x23b5650 0x8d9 0x0 0x0 oops 1 2 java/lang/reflect/Constructor
+ciMethodData java/lang/reflect/Constructor copy ()Ljava/lang/reflect/Constructor; 2 2555 orig 264 216 160 217 88 0 0 0 0 240 65 255 27 0 0 0 0 96 1 0 0 32 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 68 79 32 101 120 116 114 97 32 100 97 116 97 32 108 111 99 107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12 1 0 0 121 71 0 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 5 0 2 0 0 0 64 0 0 0 255 255 255 255 7 0 4 0 0 0 0 0 data 8 0x40007 0x8ef 0x30 0x0 0xd0002 0x0 0x350002 0x8ef oops 0
+ciMethodData java/lang/Class argumentTypesToString ([Ljava/lang/Class;)Ljava/lang/String; 1 336 orig 264 216 160 217 88 0 0 0 0 56 0 252 27 0 0 0 0 40 3 0 0 64 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 68 79 32 101 120 116 114 97 32 100 97 116 97 32 108 111 99 107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 25 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 129 10 0 0 217 5 0 0 0 0 0 0 0 0 0 0 2 0 0 0 1 0 18 0 2 0 0 0 224 1 0 0 255 255 255 255 2 0 4 0 0 0 0 0 data 60 0x40002 0x150 0xb0005 0x12b 0x1da44e20 0x25 0x0 0x0 0x100007 0x0 0x140 0x150 0x180007 0x150 0x120 0xbc 0x1c0007 0xa0 0x50 0x1c 0x220005 0x1b 0x1da44e20 0x1 0x0 0x0 0x2c0007 0xbc 0x38 0x0 0x310003 0x0 0x48 0x350005 0xa9 0x23b3ee0 0x13 0x0 0x0 0x380005 0xa9 0x1da44e20 0x13 0x0 0x0 0x3f0003 0xbc 0xfffffffffffffef8 0x460005 0x12b 0x1da44e20 0x25 0x0 0x0 0x4b0005 0x12b 0x1da44e20 0x25 0x0 0x0 oops 6 4 java/lang/StringBuilder 22 java/lang/StringBuilder 35 java/lang/Class 41 java/lang/StringBuilder 50 java/lang/StringBuilder 56 java/lang/StringBuilder
+ciMethodData sun/reflect/misc/ReflectUtil isNonPublicProxyClass (Ljava/lang/Class;)Z 2 6039 orig 264 216 160 217 88 0 0 0 0 96 193 11 28 0 0 0 0 168 2 0 0 176 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 68 79 32 101 120 116 114 97 32 100 97 116 97 32 108 111 99 107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 46 0 0 0 73 187 0 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 27 0 2 0 0 0 96 1 0 0 255 255 255 255 5 0 1 0 0 0 0 0 data 44 0x10005 0x104 0x23b3ee0 0x1665 0x0 0x0 0x80005 0x104 0x23b3e50 0x1665 0x0 0x0 0xe0007 0x0 0x68 0x1769 0x140005 0x104 0x23b3e50 0x1665 0x0 0x0 0x170003 0x1769 0x18 0x1e0002 0x1769 0x210007 0x167b 0x88 0xee 0x270005 0x96 0x23b3e50 0x58 0x0 0x0 0x2a0007 0xee 0x38 0x0 0x2e0003 0x0 0x18 oops 4 2 java/lang/Class 8 java/lang/String 18 java/lang/String 33 java/lang/String
+ciMethodData java/lang/Class$ReflectionData <init> (I)V 1 586 orig 264 216 160 217 88 0 0 0 0 128 253 10 28 0 0 0 0 56 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 68 79 32 101 120 116 114 97 32 100 97 116 97 32 108 111 99 107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 208 0 0 0 209 11 0 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 16 0 0 0 255 255 255 255 2 0 1 0 0 0 0 0 data 2 0x10002 0x17a oops 0
+ciMethodData java/lang/Class$Atomic casReflectionData (Ljava/lang/Class;Ljava/lang/ref/SoftReference;Ljava/lang/ref/SoftReference;)Z 1 586 orig 264 216 160 217 88 0 0 0 0 40 5 11 28 0 0 0 0 136 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 68 79 32 101 120 116 114 97 32 100 97 116 97 32 108 111 99 107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 208 0 0 0 209 11 0 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 48 0 0 0 255 255 255 255 5 0 9 0 0 0 0 0 data 6 0x90005 0x1 0x0 0x0 0x0 0x0 oops 0
+ciMethodData java/lang/reflect/Constructor <init> (Ljava/lang/Class;[Ljava/lang/Class;[Ljava/lang/Class;IILjava/lang/String;[B[B)V 2 2555 orig 264 216 160 217 88 0 0 0 0 24 65 255 27 0 0 0 0 112 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 68 79 32 101 120 116 114 97 32 100 97 116 97 32 108 111 99 107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 139 1 0 0 129 67 0 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 3 0 2 0 0 0 16 0 0 0 255 255 255 255 2 0 1 0 0 0 0 0 data 2 0x10002 0x870 oops 0
+ciMethodData sun/reflect/DelegatingConstructorAccessorImpl newInstance ([Ljava/lang/Object;)Ljava/lang/Object; 2 4049 orig 264 216 160 217 88 0 0 0 0 104 62 14 28 0 0 0 0 128 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 68 79 32 101 120 116 114 97 32 100 97 116 97 32 108 111 99 107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 137 110 0 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 3 0 2 0 0 0 48 0 0 0 255 255 255 255 5 0 5 0 0 0 0 0 data 6 0x50005 0xa84 0x224e9d90 0x314 0x224ee4a0 0x39 oops 2 2 sun/reflect/NativeConstructorAccessorImpl 4 sun/reflect/GeneratedConstructorAccessor8
+ciMethodData java/lang/Class getConstructor ([Ljava/lang/Class;)Ljava/lang/reflect/Constructor; 2 2347 orig 264 216 160 217 88 0 0 0 0 80 221 251 27 0 0 0 0 128 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 68 79 32 101 120 116 114 97 32 100 97 116 97 32 108 111 99 107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 89 57 0 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 3 0 2 0 0 0 48 0 0 0 255 255 255 255 2 0 2 0 0 0 0 0 data 6 0x20002 0x72b 0x60002 0x72b 0xc0002 0x72b oops 0
+ciMethod java/util/Random <init> ()V 2049 1 1913 0 -1
+ciMethod java/util/Random next (I)I 4097 1 7221 0 160
+ciMethod java/util/Random nextInt (I)I 1 1 25631 0 416
+ciMethod java/util/Random nextFloat ()F 3265 1 37595 0 192
+ciMethodData java/util/concurrent/atomic/AtomicLong get ()J 2 9136 orig 264 216 160 217 88 0 0 0 0 88 110 47 28 0 0 0 0 32 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 68 79 32 101 120 116 114 97 32 100 97 116 97 32 108 111 99 107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 129 13 1 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 3 0 1 0 0 0 0 0 0 0 255 255 255 255 0 0 0 0 0 0 0 0 data 0 oops 0
+ciMethodData java/util/concurrent/atomic/AtomicLong compareAndSet (JJ)Z 2 9136 orig 264 216 160 217 88 0 0 0 0 176 112 47 28 0 0 0 0 152 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 68 79 32 101 120 116 114 97 32 100 97 116 97 32 108 111 99 107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 129 13 1 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 3 0 1 0 0 0 48 0 0 0 255 255 255 255 5 0 9 0 0 0 0 0 data 6 0x90005 0x80 0x0 0x0 0x0 0x0 oops 0
+ciMethodData java/util/Random next (I)I 2 7221 orig 264 216 160 217 88 0 0 0 0 16 191 169 33 0 0 0 0 208 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 68 79 32 101 120 116 114 97 32 100 97 116 97 32 108 111 99 107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 169 209 0 0 145 194 0 0 0 0 0 0 0 0 0 0 2 0 0 0 1 0 6 0 2 0 0 0 128 0 0 0 255 255 255 255 5 0 8 0 0 0 0 0 data 16 0x80005 0x1e3 0x226f0a80 0x1852 0x0 0x0 0x200005 0x1e3 0x226f0a80 0x1852 0x0 0x0 0x230007 0x0 0xffffffffffffffa0 0x1a35 oops 2 2 java/util/concurrent/atomic/AtomicLong 8 java/util/concurrent/atomic/AtomicLong
+ciMethodData java/util/HashMap keySet ()Ljava/util/Set; 2 6416 orig 264 216 160 217 88 0 0 0 0 64 89 10 28 0 0 0 0 104 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 68 79 32 101 120 116 114 97 32 100 97 116 97 32 108 111 99 107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 1 0 0 89 192 0 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 6 0 2 0 0 0 72 0 0 0 255 255 255 255 7 0 6 0 0 0 0 0 data 9 0x60007 0x123f 0x48 0x5cc 0xf0002 0x5cc 0x160003 0x5cc 0x18 oops 0
+ciMethodData java/util/HashMap$KeySet <init> (Ljava/util/HashMap;)V 2 1618 orig 264 216 160 217 88 0 0 0 0 216 201 46 28 0 0 0 0 56 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 68 79 32 101 120 116 114 97 32 100 97 116 97 32 108 111 99 107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 141 0 0 0 41 46 0 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 16 0 0 0 255 255 255 255 2 0 6 0 0 0 0 0 data 2 0x60002 0x5c5 oops 0
+ciMethodData java/util/HashMap$KeySet iterator ()Ljava/util/Iterator; 2 6508 orig 264 216 160 217 88 0 0 0 0 144 203 46 28 0 0 0 0 48 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 68 79 32 101 120 116 114 97 32 100 97 116 97 32 108 111 99 107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 29 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 69 1 0 0 49 193 0 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 3 0 2 0 0 0 16 0 0 0 255 255 255 255 2 0 8 0 0 0 0 0 data 2 0x80002 0x1826 oops 0
+ciMethodData java/util/HashMap$KeyIterator <init> (Ljava/util/HashMap;)V 2 6508 orig 264 216 160 217 88 0 0 0 0 160 211 46 28 0 0 0 0 56 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 68 79 32 101 120 116 114 97 32 100 97 116 97 32 108 111 99 107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 1 0 0 233 192 0 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 3 0 2 0 0 0 16 0 0 0 255 255 255 255 2 0 7 0 0 0 0 0 data 2 0x70002 0x181d oops 0
+ciMethod java/lang/SecurityManager$1 <init> (Ljava/lang/SecurityManager;)V 9 1 1 0 -1
+ciMethod java/lang/reflect/WeakCache$LookupValue <init> (Ljava/lang/Object;)V 657 1 390 0 0
+ciMethodData java/lang/reflect/WeakCache expungeStaleEntries ()V 1 956 orig 264 216 160 217 88 0 0 0 0 40 71 47 28 0 0 0 0 16 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 68 79 32 101 120 116 114 97 32 100 97 116 97 32 108 111 99 107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 61 1 0 0 249 19 0 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 1 0 12 0 2 0 0 0 200 0 0 0 255 255 255 255 5 0 4 0 0 0 0 0 data 25 0x40005 0x0 0x20d90620 0x27f 0x0 0x0 0x70104 0x0 0x0 0x0 0x0 0x0 0xc0007 0x27f 0x68 0x0 0x180005 0x0 0x0 0x0 0x0 0x0 0x1b0003 0x0 0xffffffffffffff50 oops 1 2 java/lang/ref/ReferenceQueue
+ciMethodData java/lang/reflect/WeakCache$CacheKey expungeFrom (Ljava/util/concurrent/ConcurrentMap;Ljava/util/concurrent/ConcurrentMap;)V 1 0 orig 264 216 160 217 88 0 0 0 0 184 91 53 28 0 0 0 0 0 3 0 0 176 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 68 79 32 101 120 116 114 97 32 100 97 116 97 32 108 111 99 107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 168 1 0 0 255 255 255 255 5 0 2 0 0 0 0 0 data 53 0x20005 0x0 0x0 0x0 0x0 0x0 0x70004 0x0 0x0 0x0 0x0 0x0 0xc0007 0x0 0x148 0x0 0x100005 0x0 0x0 0x0 0x0 0x0 0x150005 0x0 0x0 0x0 0x0 0x0 0x1e0005 0x0 0x0 0x0 0x0 0x0 0x230007 0x0 0x98 0x0 0x280005 0x0 0x0 0x0 0x0 0x0 0x320005 0x0 0x0 0x0 0x0 0x0 0x380003 0x0 0xffffffffffffff50 oops 0
+ciMethodData java/lang/SecurityManager checkPackageAccess (Ljava/lang/String;)V 2 38928 orig 264 216 160 217 88 0 0 0 0 208 247 252 27 0 0 0 0 136 4 0 0 176 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 68 79 32 101 120 116 114 97 32 100 97 116 97 32 108 111 99 107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16 20 0 0 33 22 0 0 1 32 4 0 0 0 0 0 0 0 0 0 2 0 0 0 1 0 22 0 2 0 0 0 56 3 0 0 255 255 255 255 7 0 1 0 0 0 0 0 data 103 0x10007 0x2c4 0x30 0x0 0xa0002 0x0 0x170007 0x2c4 0x80 0x0 0x1f0002 0x0 0x220002 0x0 0x250004 0x0 0x0 0x0 0x0 0x0 0x2c0002 0x0 0x3c0003 0x2c4 0x18 0x4b0007 0x2c0 0x270 0x8404 0x520005 0xf0 0x23b3e50 0x8314 0x0 0x0 0x550007 0x4 0x110 0x8400 0x5f0002 0x8400 0x630005 0xf0 0x1da44e20 0x8310 0x0 0x0 0x680005 0xf0 0x1da44e20 0x8310 0x0 0x0 0x6b0005 0xf0 0x1da44e20 0x8310 0x0 0x0 0x6e0005 0xf0 0x23b3e50 0x8310 0x0 0x0 0x710007 0x8400 0x118 0x0 0x7d0002 0x4 0x820005 0x0 0x1da44e20 0x4 0x0 0x0 0x860005 0x0 0x1da44e20 0x4 0x0 0x0 0x890005 0x0 0x1da44e20 0x4 0x0 0x0 0x8c0002 0x4 0x8f0005 0x0 0x20884780 0x4 0x0 0x0 0x920003 0x4 0x30 0x980003 0x8400 0xfffffffffffffda8 oops 9 31 java/lang/String 43 java/lang/StringBuilder 49 java/lang/StringBuilder 55 java/lang/StringBuilder 61 java/lang/String 73 java/lang/StringBuilder 79 java/lang/StringBuilder 85 java/lang/StringBuilder 93 cpw/mods/fml/relauncher/FMLSecurityManager
+ciMethodData java/lang/reflect/Constructor setConstructorAccessor (Lsun/reflect/ConstructorAccessor;)V 1 632 orig 264 216 160 217 88 0 0 0 0 24 80 255 27 0 0 0 0 160 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 68 79 32 101 120 116 114 97 32 100 97 116 97 32 108 111 99 107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 193 11 0 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 9 0 2 0 0 0 80 0 0 0 255 255 255 255 7 0 9 0 0 0 0 0 data 10 0x90007 0xbc 0x50 0xbc 0x110005 0x0 0x23b5650 0xbc 0x0 0x0 oops 1 6 java/lang/reflect/Constructor
+ciMethodData java/lang/reflect/Proxy isProxyClass (Ljava/lang/Class;)Z 2 6392 orig 264 216 160 217 88 0 0 0 0 40 50 47 28 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 68 79 32 101 120 116 114 97 32 100 97 116 97 32 108 111 99 107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 193 191 0 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 1 0 17 0 2 0 0 0 184 0 0 0 255 255 255 255 5 0 3 0 0 0 0 0 data 23 0x30005 0x11 0x23b3ee0 0x17e7 0x0 0x0 0x60007 0x16c4 0x88 0x134 0xd0005 0xc 0x20d8c870 0x128 0x0 0x0 0x100007 0x0 0x38 0x134 0x140003 0x134 0x18 oops 2 2 java/lang/Class 12 java/lang/reflect/WeakCache
+ciMethodData java/lang/reflect/WeakCache containsValue (Ljava/lang/Object;)Z 1 390 orig 264 216 160 217 88 0 0 0 0 232 69 47 28 0 0 0 0 176 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 68 79 32 101 120 116 114 97 32 100 97 116 97 32 108 111 99 107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 82 0 0 0 161 9 0 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 96 0 0 0 255 255 255 255 2 0 1 0 0 0 0 0 data 12 0x10002 0x134 0x60002 0x134 0x120002 0x134 0x150005 0x0 0x20d8ee70 0x134 0x0 0x0 oops 1 8 java/util/concurrent/ConcurrentHashMap
+ciMethodData java/lang/reflect/WeakCache$LookupValue <init> (Ljava/lang/Object;)V 1 390 orig 264 216 160 217 88 0 0 0 0 64 116 206 33 0 0 0 0 56 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 68 79 32 101 120 116 114 97 32 100 97 116 97 32 108 111 99 107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 82 0 0 0 161 9 0 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 16 0 0 0 255 255 255 255 2 0 1 0 0 0 0 0 data 2 0x10002 0x134 oops 0
+ciMethodData sun/reflect/misc/ReflectUtil needsPackageAccessCheck (Ljava/lang/ClassLoader;Ljava/lang/ClassLoader;)Z 1 846 orig 264 216 160 217 88 0 0 0 0 24 191 11 28 0 0 0 0 248 1 0 0 64 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 68 79 32 101 120 116 114 97 32 100 97 116 97 32 108 111 99 107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 1 0 0 201 15 0 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 1 0 19 0 2 0 0 0 168 0 0 0 255 255 255 255 7 0 1 0 0 0 0 0 data 21 0x10007 0x1aa 0x40 0x4f 0x60007 0x21 0x20 0x2e 0xc0007 0x18 0x20 0x9 0x130002 0x18 0x160007 0x0 0x38 0x18 0x1a0003 0x18 0x18 oops 0
+ciMethodData sun/reflect/misc/ReflectUtil isAncestor (Ljava/lang/ClassLoader;Ljava/lang/ClassLoader;)Z 1 52 orig 264 216 160 217 88 0 0 0 0 112 190 11 28 0 0 0 0 192 1 0 0 48 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 68 79 32 101 120 116 114 97 32 100 97 116 97 32 108 111 99 107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 193 0 0 0 241 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 112 0 0 0 255 255 255 255 5 0 3 0 0 0 0 0 data 14 0x30005 0x6 0x20d01600 0x12 0x1da45350 0x6 0x90007 0x1e 0x20 0x0 0xf0007 0x6 0xffffffffffffffb0 0x18 oops 2 2 net/minecraft/launchwrapper/LaunchClassLoader 4 sun/misc/Launcher$AppClassLoader
+ciMethodData sun/reflect/misc/ReflectUtil checkProxyPackageAccess (Ljava/lang/ClassLoader;[Ljava/lang/Class;)V 1 476 orig 264 216 160 217 88 0 0 0 0 160 192 11 28 0 0 0 0 40 2 0 0 16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 68 79 32 101 120 116 114 97 32 100 97 116 97 32 108 111 99 107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 47 1 0 0 105 5 0 0 105 5 0 0 0 0 0 0 0 0 0 0 2 0 0 0 3 0 64 0 2 0 0 0 216 0 0 0 255 255 255 255 2 0 0 0 0 0 0 0 data 27 0x2 0xad 0x50007 0x0 0xc8 0xad 0x150007 0xad 0xa8 0xad 0x200005 0x8a 0x23b3ee0 0x23 0x0 0x0 0x280002 0xad 0x2b0007 0xad 0x30 0x0 0x300002 0x0 0x360003 0xad 0xffffffffffffff70 oops 1 12 java/lang/Class
+ciMethod net/minecraft/util/ReportedException <init> (Lnet/minecraft/crash/CrashReport;)V 0 0 1 0 -1
+ciMethod net/minecraft/world/World getBlock (III)Lnet/minecraft/block/Block; 3153 1 97404 0 2240
+ciMethod net/minecraft/world/World chunkExists (II)Z 2089 1 151175 0 -1
+ciMethod net/minecraft/world/World getChunkFromChunkCoords (II)Lnet/minecraft/world/chunk/Chunk; 2097 1 270078 0 -1
+ciMethod net/minecraft/world/World spawnEntityInWorld (Lnet/minecraft/entity/Entity;)Z 1105 1 185 0 0
+ciMethod net/minecraft/world/World onEntityAdded (Lnet/minecraft/entity/Entity;)V 4097 4089 671 0 -1
+ciMethod net/minecraft/world/World doesBlockHaveSolidTopSurface (Lnet/minecraft/world/IBlockAccess;III)Z 49 1 7464 0 -1
+ciMethod net/minecraft/world/World getClosestPlayer (DDDD)Lnet/minecraft/entity/player/EntityPlayer; 3217 1 20130 0 1504
+ciMethod net/minecraft/world/World getSpawnPoint ()Lnet/minecraft/util/ChunkCoordinates; 1169 1 3721 0 -1
+ciMethod net/minecraft/world/World getChunkProvider ()Lnet/minecraft/world/chunk/IChunkProvider; 1033 1 129 0 -1
+ciMethod net/minecraft/world/World updateAllPlayersSleepingFlag ()V 9 1 1 0 -1
+ciMethod net/minecraft/world/World getActualHeight ()I 0 0 1 0 -1
+ciMethod net/minecraft/world/World countEntities (Lnet/minecraft/entity/EnumCreatureType;Z)I 865 110665 486 0 768
+ciMethod net/minecraftforge/event/world/WorldEvent <init> (Lnet/minecraft/world/World;)V 2049 1 3342 0 -1
+ciMethod net/minecraft/entity/Entity setPosition (DDD)V 2049 1 5380 0 224
+ciMethod net/minecraft/entity/Entity setLocationAndAngles (DDDFF)V 25 1 503 0 0
+ciMethod net/minecraft/entity/Entity getDistanceSq (DDD)D 65 1 1196 0 96
+ciMethod net/minecraft/entity/Entity isCreatureType (Lnet/minecraft/entity/EnumCreatureType;Z)Z 4097 1 64340 0 224
+ciMethod net/minecraft/world/WorldServer spawnRandomCreature (Lnet/minecraft/entity/EnumCreatureType;III)Lnet/minecraft/world/biome/BiomeGenBase$SpawnListEntry; 1 1 283 0 -1
+ciMethod cpw/mods/fml/common/eventhandler/Event isCancelable ()Z 1473 1 184 0 -1
+ciMethod cpw/mods/fml/common/eventhandler/Event isCanceled ()Z 121 1 15 0 -1
+ciMethod cpw/mods/fml/common/eventhandler/Event getResult ()Lcpw/mods/fml/common/eventhandler/Event$Result; 1041 1 130 0 0
+ciMethod cpw/mods/fml/common/eventhandler/Event getListenerList ()Lcpw/mods/fml/common/eventhandler/ListenerList; 97 1 26 0 -1
+ciMethodData java/lang/Throwable printStackTrace ()V 1 0 orig 264 216 160 217 88 0 0 0 0 0 173 252 27 0 0 0 0 120 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 68 79 32 101 120 116 114 97 32 100 97 116 97 32 108 111 99 107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 48 0 0 0 255 255 255 255 5 0 4 0 0 0 0 0 data 6 0x40005 0x0 0x0 0x0 0x0 0x0 oops 0
+ciMethodData java/util/ArrayList set (ILjava/lang/Object;)Ljava/lang/Object; 2 13133 orig 264 216 160 217 88 0 0 0 0 168 203 9 28 0 0 0 0 200 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 68 79 32 101 120 116 114 97 32 100 97 116 97 32 108 111 99 107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 9 87 1 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 6 0 2 0 0 0 112 0 0 0 255 255 255 255 2 0 2 0 0 0 0 0 data 14 0x20002 0x2ae1 0x70005 0x0 0x32414c80 0x2ae1 0x0 0x0 0x110004 0x0 0x1da45620 0x446 0x2a773b60 0x5 oops 3 4 java/util/ArrayList 10 java/lang/Boolean 12 net/minecraft/item/ItemStack
+ciMethod net/minecraft/block/Block getMaterial ()Lnet/minecraft/block/material/Material; 2753 1 344 0 0
+ciMethod net/minecraft/block/Block isNormalCube ()Z 3073 1 105136 0 192
+ciMethod net/minecraft/block/Block renderAsNormalBlock ()Z 1329 1 166 0 -1
+ciMethod net/minecraft/block/Block canProvidePower ()Z 1025 1 128 0 -1
+ciMethod net/minecraft/block/Block canCreatureSpawn (Lnet/minecraft/entity/EnumCreatureType;Lnet/minecraft/world/IBlockAccess;III)Z 633 1 1891 0 -1
+ciMethod net/minecraft/block/material/Material isLiquid ()Z 1305 1 163 0 -1
+ciMethod net/minecraft/block/material/Material blocksMovement ()Z 1641 1 205 0 -1
+ciMethod net/minecraft/block/material/Material isOpaque ()Z 3073 1 122171 0 0
+ciMethod net/minecraft/entity/EntityLiving getCanSpawnHere ()Z 257 1 32 0 -1
+ciMethod net/minecraft/entity/EntityLiving getMaxSpawnedInChunk ()I 225 1 28 0 -1
+ciMethod net/minecraft/entity/EntityLiving onSpawnWithEgg (Lnet/minecraft/entity/IEntityLivingData;)Lnet/minecraft/entity/IEntityLivingData; 225 1 28 0 -1
+ciMethod cpw/mods/fml/common/eventhandler/IEventExceptionHandler handleException (Lcpw/mods/fml/common/eventhandler/EventBus;Lcpw/mods/fml/common/eventhandler/Event;[Lcpw/mods/fml/common/eventhandler/IEventListener;ILjava/lang/Throwable;)V 0 0 1 0 -1
+ciMethod cpw/mods/fml/common/eventhandler/EventBus post (Lcpw/mods/fml/common/eventhandler/Event;)Z 2049 801 5445 0 992
+ciMethod cpw/mods/fml/common/eventhandler/IEventListener invoke (Lcpw/mods/fml/common/eventhandler/Event;)V 0 0 1 0 -1
+ciMethod cpw/mods/fml/common/eventhandler/ListenerList getListeners (I)[Lcpw/mods/fml/common/eventhandler/IEventListener; 2049 1 5445 0 -1
+ciMethod net/minecraft/crash/CrashReport makeCategory (Ljava/lang/String;)Lnet/minecraft/crash/CrashReportCategory; 0 0 1 0 -1
+ciMethod net/minecraft/crash/CrashReport makeCrashReport (Ljava/lang/Throwable;Ljava/lang/String;)Lnet/minecraft/crash/CrashReport; 9 1 1 0 -1
+ciMethod net/minecraft/crash/CrashReportCategory getLocationInfo (III)Ljava/lang/String; 0 0 1 0 -1
+ciMethod net/minecraft/crash/CrashReportCategory addCrashSection (Ljava/lang/String;Ljava/lang/Object;)V 161 1 20 0 -1
+ciMethod net/minecraft/util/MathHelper floor_double (D)I 3073 1 1387142 0 -1
+ciMethodData sun/reflect/Reflection ensureMemberAccess (Ljava/lang/Class;Ljava/lang/Class;Ljava/lang/Object;I)V 1 16 orig 264 216 160 217 88 0 0 0 0 8 33 10 28 0 0 0 0 240 3 0 0 64 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 68 79 32 101 120 116 114 97 32 100 97 116 97 32 108 111 99 107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 15 0 0 0 9 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 144 2 0 0 255 255 255 255 7 0 1 0 0 0 0 0 data 82 0x10007 0x0 0x40 0x1 0x50007 0x1 0x30 0x0 0xc0002 0x0 0x140002 0x1 0x170007 0x1 0x230 0x0 0x220002 0x0 0x270005 0x0 0x0 0x0 0x0 0x0 0x2b0005 0x0 0x0 0x0 0x0 0x0 0x2e0005 0x0 0x0 0x0 0x0 0x0 0x330005 0x0 0x0 0x0 0x0 0x0 0x370005 0x0 0x0 0x0 0x0 0x0 0x3a0005 0x0 0x0 0x0 0x0 0x0 0x3f0005 0x0 0x0 0x0 0x0 0x0 0x430002 0x0 0x460005 0x0 0x0 0x0 0x0 0x0 0x4b0005 0x0 0x0 0x0 0x0 0x0 0x4e0005 0x0 0x0 0x0 0x0 0x0 0x510002 0x0 oops 0
+ciMethodData sun/reflect/ReflectionFactory newConstructorAccessor (Ljava/lang/reflect/Constructor;)Lsun/reflect/ConstructorAccessor; 1 316 orig 264 216 160 217 88 0 0 0 0 136 40 7 28 0 0 0 0 64 4 0 0 112 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 68 79 32 101 120 116 114 97 32 100 97 116 97 32 108 111 99 107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 25 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 225 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 1 0 35 0 2 0 0 0 240 2 0 0 255 255 255 255 2 0 0 0 0 0 0 0 data 94 0x2 0x3c 0x40005 0x0 0x23b5650 0x3c 0x0 0x0 0x90005 0x0 0x23b3ee0 0x3c 0x0 0x0 0xc0002 0x3c 0xf0007 0x3c 0x30 0x0 0x170002 0x0 0x1e0007 0x3c 0x30 0x0 0x270002 0x0 0x2e0002 0x3c 0x310007 0x2f 0x30 0xd 0x390002 0xd 0x400007 0x2f 0x180 0x0 0x440005 0x0 0x0 0x0 0x0 0x0 0x470002 0x0 0x4a0007 0x0 0x120 0x0 0x510002 0x0 0x550005 0x0 0x0 0x0 0x0 0x0 0x590005 0x0 0x0 0x0 0x0 0x0 0x5d0005 0x0 0x0 0x0 0x0 0x0 0x610005 0x0 0x0 0x0 0x0 0x0 0x640005 0x0 0x0 0x0 0x0 0x0 0x6d0002 0x2f 0x760002 0x2f 0x7e0005 0x0 0x224e9d90 0x2f 0x0 0x0 oops 3 4 java/lang/reflect/Constructor 10 java/lang/Class 90 sun/reflect/NativeConstructorAccessorImpl
+ciMethod net/minecraft/world/chunk/Chunk getTopFilledSegment ()I 1169 12065 1789 0 -1
+ciMethod net/minecraft/world/chunk/Chunk getBlock (III)Lnet/minecraft/block/Block; 2257 1 35167 0 -1
+ciMethod net/minecraft/world/chunk/Chunk addEntity (Lnet/minecraft/entity/Entity;)V 4097 1 1256 0 -1
+ciMethod net/minecraft/world/ChunkCoordIntPair <init> (II)V 73 1 189429 0 -1
+ciMethod net/minecraft/world/ChunkCoordIntPair hashCode ()I 2049 1 1431 0 64
+ciMethod net/minecraft/world/ChunkCoordIntPair equals (Ljava/lang/Object;)Z 1 1 56335 0 128
+ciMethod net/minecraft/world/SpawnerAnimals func_151350_a (Lnet/minecraft/world/World;II)Lnet/minecraft/world/ChunkPosition; 1 1 5336 0 2048
+ciMethod net/minecraft/world/SpawnerAnimals findChunksForSpawning (Lnet/minecraft/world/WorldServer;ZZZ)I 985 75145 1295 0 -1
+ciMethod net/minecraft/world/SpawnerAnimals canCreatureTypeSpawnAtLocation (Lnet/minecraft/entity/EnumCreatureType;Lnet/minecraft/world/World;III)Z 1 1 7362 0 2848
+ciMethod net/minecraft/util/WeightedRandom getRandomItem (Ljava/util/Random;Ljava/util/Collection;)Lnet/minecraft/util/WeightedRandom$Item; 2057 1 286 0 -1
+ciMethod net/minecraft/world/ChunkPosition <init> (III)V 2049 1 11003 0 -1
+ciMethod net/minecraft/util/AxisAlignedBB setBounds (DDDDDD)Lnet/minecraft/util/AxisAlignedBB; 2049 1 1287 0 -1
+ciMethodData net/minecraftforge/event/world/WorldEvent <init> (Lnet/minecraft/world/World;)V 2 3342 orig 264 216 160 217 88 0 0 0 0 80 229 191 35 0 0 0 0 56 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 68 79 32 101 120 116 114 97 32 100 97 116 97 32 108 111 99 107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 113 96 0 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 3 0 2 0 0 0 16 0 0 0 255 255 255 255 2 0 1 0 0 0 0 0 data 2 0x10002 0xc0e oops 0
+ciMethodData net/minecraft/entity/Entity setPosition (DDD)V 2 5380 orig 264 216 160 217 88 0 0 0 0 136 65 194 35 0 0 0 0 168 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 68 79 32 101 120 116 114 97 32 100 97 116 97 32 108 111 99 107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 33 160 0 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 3 0 2 0 0 0 48 0 0 0 255 255 255 255 5 0 86 0 0 0 0 0 data 6 0x560005 0x0 0x2077d5a0 0x1404 0x0 0x0 oops 1 2 net/minecraft/util/AxisAlignedBB
+ciMethodData net/minecraft/world/ChunkCoordIntPair hashCode ()I 2 1431 orig 264 216 160 217 88 0 0 0 0 176 182 212 43 0 0 0 0 32 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 68 79 32 101 120 116 114 97 32 100 97 116 97 32 108 111 99 107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 185 36 0 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 3 0 1 0 0 0 0 0 0 0 255 255 255 255 0 0 0 0 0 0 0 0 data 0 oops 0
+ciMethodData net/minecraft/world/ChunkCoordIntPair equals (Ljava/lang/Object;)Z 2 56335 orig 264 216 160 217 88 0 0 0 0 152 183 212 43 0 0 0 0 72 2 0 0 192 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 68 79 32 101 120 116 114 97 32 100 97 116 97 32 108 111 99 107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 121 224 6 0 1 0 0 0 149 142 0 0 0 0 0 0 2 0 0 0 0 0 13 0 2 0 0 0 248 0 0 0 255 255 255 255 7 0 2 0 0 0 0 0 data 31 0x20007 0xdb32 0x20 0xdd 0x80004 0x0 0x324150a0 0xdb32 0x0 0x0 0xb0007 0xdb32 0x20 0x0 0x110004 0x0 0x324150a0 0xdb32 0x0 0x0 0x1d0007 0xc906 0x58 0x122c 0x28e007 0xea9 0x38 0x384 0x2c0003 0x384 0x18 oops 2 6 net/minecraft/world/ChunkCoordIntPair 16 net/minecraft/world/ChunkCoordIntPair
+ciMethod net/minecraft/entity/EnumCreatureType values ()[Lnet/minecraft/entity/EnumCreatureType; 985 1 1293 0 -1
+ciMethod net/minecraft/entity/EnumCreatureType getCreatureClass ()Ljava/lang/Class; 3737 1 467 0 -1
+ciMethod net/minecraft/entity/EnumCreatureType getMaxNumberOfCreature ()I 1081 1 135 0 0
+ciMethod net/minecraft/entity/EnumCreatureType getCreatureMaterial ()Lnet/minecraft/block/material/Material; 5089 1 636 0 0
+ciMethod net/minecraft/entity/EnumCreatureType getPeacefulCreature ()Z 1105 1 138 0 0
+ciMethod net/minecraft/entity/EnumCreatureType getAnimal ()Z 1033 1 129 0 0
+ciMethodData net/minecraft/entity/Entity isCreatureType (Lnet/minecraft/entity/EnumCreatureType;Z)Z 2 64340 orig 264 216 160 217 88 0 0 0 0 128 207 194 35 0 0 0 0 232 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 68 79 32 101 120 116 114 97 32 100 97 116 97 32 108 111 99 107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 161 202 7 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 3 0 2 0 0 0 144 0 0 0 255 255 255 255 5 0 1 0 0 0 0 0 data 18 0x10005 0x22f 0x32414e90 0xf725 0x0 0x0 0x50005 0x8773 0x2085bde0 0x4618 0x20434c80 0x2bc9 0x80005 0x22f 0x23b3ee0 0xf725 0x0 0x0 oops 4 2 net/minecraft/entity/EnumCreatureType 8 net/minecraft/entity/passive/EntityChicken 10 net/minecraft/entity/item/EntityItem 14 java/lang/Class
+ciMethodData net/minecraft/world/World getChunkFromChunkCoords (II)Lnet/minecraft/world/chunk/Chunk; 2 270078 orig 264 216 160 217 88 0 0 0 0 224 135 189 35 0 0 0 0 136 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 68 79 32 101 120 116 114 97 32 100 97 116 97 32 108 111 99 107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 1 0 0 193 239 32 0 1 0 0 0 207 194 1 0 0 0 0 0 2 0 0 0 0 0 3 0 2 0 0 0 48 0 0 0 255 255 255 255 5 192 6 0 0 0 0 0 data 6 0x6c005 0x0 0x26c24dd0 0x334f2 0x26c24e80 0xebb1 oops 2 2 net/minecraft/world/gen/ChunkProviderServer 4 net/minecraft/client/multiplayer/ChunkProviderClient
+ciMethodData net/minecraft/world/World getBlock (III)Lnet/minecraft/block/Block; 2 97404 orig 264 216 160 217 88 0 0 0 0 248 128 189 35 0 0 0 0 136 3 0 0 192 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 68 79 32 101 120 116 114 97 32 100 97 116 97 32 108 111 99 107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 134 1 0 0 145 215 11 0 1 0 0 0 124 167 0 0 0 0 0 0 2 0 0 0 0 0 26 0 2 0 0 0 40 2 0 0 255 255 255 255 7 0 4 0 0 0 0 0 data 69 0x40007 0x0 0x228 0x17bce 0xb0007 0x0 0x208 0x17bf4 0x120007 0x0 0x1e8 0x17c1b 0x190007 0x0 0x1c8 0x17c39 0x1d0007 0x0 0x1a8 0x17c45 0x240007 0x0 0x188 0x17c4e 0x310005 0x0 0x324139d0 0x11d4a 0x26c24470 0x60ab 0x410005 0x0 0x20433990 0x17c71 0x26c24520 0x16 0x4c0002 0x0 0x560005 0x0 0x0 0x0 0x0 0x0 0x620007 0x0 0x38 0x0 0x660003 0x0 0x18 0x6a0002 0x0 0x6d0005 0x0 0x0 0x0 0x0 0x0 0x770002 0x0 0x7a0005 0x0 0x0 0x0 0x0 0x0 0x830002 0x0 oops 4 26 net/minecraft/world/WorldServer 28 net/minecraft/client/multiplayer/WorldClient 32 net/minecraft/world/chunk/Chunk 34 net/minecraft/world/chunk/EmptyChunk
+ciMethodData net/minecraft/block/Block isNormalCube ()Z 2 105295 orig 264 216 160 217 88 0 0 0 0 136 237 12 40 0 0 0 0 80 2 0 0 160 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 68 79 32 101 120 116 114 97 32 100 97 116 97 32 108 111 99 107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 128 1 0 0 121 206 12 0 1 0 0 0 178 72 1 0 0 0 0 0 2 0 0 0 0 0 15 0 2 0 0 0 8 1 0 0 255 255 255 255 5 0 4 0 0 0 0 0 data 33 0x40005 0x4a1d 0x2080d780 0xe60 0x3336fbd0 0x14157 0x70007 0x18761 0xd8 0x1271 0xb0005 0x3de 0x32415150 0xdc3 0x3336fc80 0xd0 0xe0007 0x270 0x88 0x1001 0x12f005 0x1c4 0x32415150 0xdc3 0x22680540 0x7f 0x150007 0x0 0x38 0x1006 0x190003 0x1006 0x18 oops 6 2 net/minecraft/block/material/MaterialLiquid 4 net/minecraft/block/material/MaterialTransparent 12 net/minecraft/block/BlockStone 14 net/minecraft/block/BlockPressurePlate 22 net/minecraft/block/BlockStone 24 net/minecraft/block/Block
+ciMethodData net/minecraft/block/material/Material isOpaque ()Z 2 122171 orig 264 216 160 217 88 0 0 0 0 136 186 15 40 0 0 0 0 176 1 0 0 32 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 68 79 32 101 120 116 114 97 32 100 97 116 97 32 108 111 99 107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 128 1 0 0 217 221 14 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 6 0 2 0 0 0 104 0 0 0 255 255 255 255 7 0 4 0 0 0 0 0 data 13 0x40007 0x1db4c 0x38 0x70 0x80003 0x70 0x48 0xc0005 0x62b3 0x2080d780 0xe9f 0x3336fbd0 0x169fe oops 2 9 net/minecraft/block/material/MaterialLiquid 11 net/minecraft/block/material/MaterialTransparent
+ciMethodData net/minecraft/world/World getClosestPlayer (DDDD)Lnet/minecraft/entity/player/EntityPlayer; 2 20130 orig 264 216 160 217 88 0 0 0 0 224 76 190 35 0 0 0 0 0 3 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 68 79 32 101 120 116 114 97 32 100 97 116 97 32 108 111 99 107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 146 1 0 0 129 104 2 0 233 255 1 0 204 55 0 0 184 42 0 0 2 0 0 0 1 0 17 0 2 0 0 0 120 1 0 0 255 255 255 255 5 0 17 0 0 0 0 0 data 47 0x110005 0x0 0x32414c80 0x8d0d 0x0 0x0 0x160007 0x4d11 0x148 0x3ffc 0x1f0005 0x0 0x32414c80 0x3ffc 0x0 0x0 0x240004 0x0 0x32414d30 0x3910 0x20812d90 0x6ec 0x2f0005 0x0 0x32414d30 0x3910 0x20812d90 0x6ec 0x380007 0x2644 0x40 0x19b8 0x43e007 0x19b5 0x60 0x4 0x4c0007 0x2648 0x40 0x0 0x540007 0x0 0x20 0x0 0x620003 0x3ffd 0xfffffffffffffea0 oops 6 2 java/util/ArrayList 12 java/util/ArrayList 18 net/minecraft/entity/player/EntityPlayerMP 20 net/minecraft/client/entity/EntityClientPlayerMP 24 net/minecraft/entity/player/EntityPlayerMP 26 net/minecraft/client/entity/EntityClientPlayerMP
+ciMethodData net/minecraft/entity/Entity getDistanceSq (DDD)D 2 1196 orig 264 216 160 217 88 0 0 0 0 152 117 194 35 0 0 0 0 80 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 68 79 32 101 120 116 114 97 32 100 97 116 97 32 108 111 99 107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 0 0 0 33 37 0 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 3 0 1 0 0 0 0 0 0 0 255 255 255 255 0 0 0 0 0 0 0 0 data 0 oops 0
+ciMethodData java/util/HashMap$TreeNode getTreeNode (ILjava/lang/Object;)Ljava/util/HashMap$TreeNode; 1 3 orig 264 216 160 217 88 0 0 0 0 56 248 20 28 0 0 0 0 240 1 0 0 80 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 68 79 32 101 120 116 114 97 32 100 97 116 97 32 108 111 99 107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 152 0 0 0 255 255 255 255 7 0 4 0 0 0 0 0 data 19 0x40007 0x0 0x68 0x0 0x80005 0x0 0x0 0x0 0x0 0x0 0xb0003 0x0 0x18 0x120005 0x0 0x0 0x0 0x0 0x0 oops 0
+ciMethodData net/minecraft/world/World countEntities (Lnet/minecraft/entity/EnumCreatureType;Z)I 2 72745 orig 264 216 160 217 88 0 0 0 0 24 131 190 35 0 0 0 0 112 2 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 68 79 32 101 120 116 114 97 32 100 97 116 97 32 108 111 99 107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 222 53 0 0 209 11 0 0 1 49 7 0 0 0 0 0 0 0 0 0 2 0 0 0 1 0 9 0 2 0 0 0 24 1 0 0 255 255 255 255 5 0 11 0 0 0 0 0 data 35 0xb0005 0x0 0x32414c80 0xe682 0x0 0x0 0x100007 0x17a 0xe8 0xe508 0x190005 0x0 0x32414c80 0xe508 0x0 0x0 0x1e0004 0x0 0x2085a1d0 0x1b12 0x2085a280 0x1f02 0x230005 0xaaf4 0x2085a1d0 0x1b12 0x2085a280 0x1f02 0x260007 0xd283 0x20 0x1285 0x2f0003 0xe508 0xffffffffffffff00 oops 6 2 java/util/ArrayList 12 java/util/ArrayList 18 net/minecraft/entity/passive/EntitySheep 20 net/minecraft/entity/passive/EntityPig 24 net/minecraft/entity/passive/EntitySheep 26 net/minecraft/entity/passive/EntityPig
+ciMethod net/minecraftforge/event/ForgeEventFactory canEntitySpawn (Lnet/minecraft/entity/EntityLiving;Lnet/minecraft/world/World;FFF)Lcpw/mods/fml/common/eventhandler/Event$Result; 1 1 500 0 0
+ciMethod net/minecraftforge/event/ForgeEventFactory doSpecialSpawn (Lnet/minecraft/entity/EntityLiving;Lnet/minecraft/world/World;FFF)Z 0 0 28 0 0
+ciMethod net/minecraftforge/event/ForgeEventFactory getPotentialSpawns (Lnet/minecraft/world/WorldServer;Lnet/minecraft/entity/EnumCreatureType;IIILjava/util/List;)Ljava/util/List; 2057 1 286 0 -1
+ciMethod net/minecraftforge/event/ForgeEventFactory getMaxSpawnPackSize (Lnet/minecraft/entity/EntityLiving;)I 0 0 28 0 0
+ciMethod net/minecraftforge/event/entity/living/LivingSpawnEvent <init> (Lnet/minecraft/entity/EntityLiving;Lnet/minecraft/world/World;FFF)V 2057 1 6457 0 -1
+ciMethod net/minecraftforge/event/entity/living/LivingPackSizeEvent <init> (Lnet/minecraft/entity/EntityLiving;)V 225 1 28 0 -1
+ciMethod net/minecraftforge/event/entity/living/LivingSpawnEvent$CheckSpawn <init> (Lnet/minecraft/entity/EntityLiving;Lnet/minecraft/world/World;FFF)V 2057 1 505 0 -1
+ciMethod net/minecraftforge/event/entity/living/LivingSpawnEvent$SpecialSpawn <init> (Lnet/minecraft/entity/EntityLiving;Lnet/minecraft/world/World;FFF)V 129 1 28 0 -1
+ciMethodData java/util/Collections shuffle (Ljava/util/List;)V 2 2617 orig 264 216 160 217 88 0 0 0 0 32 77 8 28 0 0 0 0 136 1 0 0 32 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 68 79 32 101 120 116 114 97 32 100 97 116 97 32 108 111 99 107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 248 0 0 0 9 74 0 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 64 0 0 0 255 255 255 255 7 0 5 0 0 0 0 0 data 8 0x50007 0x941 0x30 0x0 0xc0002 0x0 0x160002 0x941 oops 0
+ciMethodData java/util/Collections shuffle (Ljava/util/List;Ljava/util/Random;)V 2 3744 orig 264 216 160 217 88 0 0 0 0 48 78 8 28 0 0 0 0 240 3 0 0 216 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 68 79 32 101 120 116 114 97 32 100 97 116 97 32 108 111 99 107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 248 0 0 0 129 76 0 0 1 117 0 0 0 0 0 0 0 0 0 0 2 0 0 0 3 0 18 0 2 0 0 0 160 2 0 0 255 255 255 255 5 0 1 0 0 0 0 0 data 84 0x10005 0x0 0x32414c80 0x987 0x26e79b80 0x9 0x90007 0x983 0x70 0xd 0xd0004 0x0 0x32414c80 0xd 0x0 0x0 0x100007 0x0 0xb0 0xd 0x170007 0x990 0x78 0xea0 0x200005 0x0 0x32415360 0xea0 0x0 0x0 0x230002 0xea0 0x290003 0xea0 0xffffffffffffffa0 0x2c0003 0x990 0x188 0x300005 0x0 0x0 0x0 0x0 0x0 0x3c0007 0x0 0x78 0x0 0x470005 0x0 0x0 0x0 0x0 0x0 0x4a0002 0x0 0x500003 0x0 0xffffffffffffffa0 0x540005 0x0 0x0 0x0 0x0 0x0 0x620007 0x0 0x98 0x0 0x670005 0x0 0x0 0x0 0x0 0x0 0x730005 0x0 0x0 0x0 0x0 0x0 0x7b0003 0x0 0xffffffffffffff80 oops 4 2 java/util/ArrayList 4 java/util/Arrays$ArrayList 12 java/util/ArrayList 26 java/util/Random
+ciMethodData java/util/Random nextInt (I)I 2 25631 orig 264 216 160 217 88 0 0 0 0 176 195 169 33 0 0 0 0 80 2 0 0 152 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 68 79 32 101 120 116 114 97 32 100 97 116 97 32 108 111 99 107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 0 0 0 0 25 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 249 32 3 0 25 0 0 0 14 80 0 0 2 0 0 0 2 0 0 0 1 0 11 0 2 0 0 0 0 1 0 0 255 255 255 255 7 0 1 0 0 0 0 0 data 32 0x10007 0x641f 0x30 0x0 0xa0002 0x0 0x110005 0x0 0x32415360 0x641f 0x0 0x0 0x1c0007 0x5c44 0x38 0x7db 0x290003 0x7db 0x80 0x3ae007 0x5c47 0x68 0x3 0x400005 0x0 0x32415360 0x3 0x0 0x0 0x450003 0x3 0xffffffffffffffb0 oops 2 8 java/util/Random 25 java/util/Random
+ciMethod java/lang/InternalError <init> ()V 0 0 1 0 -1
+ciMethodData java/util/ArrayList <init> (Ljava/util/Collection;)V 2 5226 orig 264 216 160 217 88 0 0 0 0 72 192 9 28 0 0 0 0 40 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 68 79 32 101 120 116 114 97 32 100 97 116 97 32 108 111 99 107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 102 0 0 0 33 160 0 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 8 0 2 0 0 0 216 0 0 0 255 255 255 255 2 0 1 0 0 0 0 0 data 27 0x10002 0x1404 0x60005 0xaf4 0x32414c80 0x90e 0x26e79b80 0x2 0x180007 0x1276 0x98 0x18e 0x1f0005 0x2c 0x20621600 0x161 0x26e79c30 0x1 0x240007 0x18c 0x48 0x2 0x320002 0x2 0x380003 0x2 0x18 oops 4 4 java/util/ArrayList 6 java/util/Arrays$ArrayList 14 [Ljava/lang/Object; 16 [Lnet/minecraft/world/biome/BiomeGenBase;
+ciMethodData java/lang/NoSuchMethodException <init> (Ljava/lang/String;)V 1 338 orig 264 216 160 217 88 0 0 0 0 80 175 81 28 0 0 0 0 56 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 68 79 32 101 120 116 114 97 32 100 97 116 97 32 108 111 99 107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 193 0 0 0 137 4 0 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 3 0 2 0 0 0 16 0 0 0 255 255 255 255 2 0 2 0 0 0 0 0 data 2 0x20002 0x91 oops 0
+ciMethod net/minecraftforge/event/entity/EntityJoinWorldEvent <init> (Lnet/minecraft/entity/Entity;Lnet/minecraft/world/World;)V 0 0 485 0 -1
+ciMethod net/minecraftforge/event/world/WorldEvent$PotentialSpawns <init> (Lnet/minecraft/world/World;Lnet/minecraft/entity/EnumCreatureType;IIILjava/util/List;)V 2289 1 286 0 -1
+ciMethodData java/util/Random nextFloat ()F 2 37614 orig 264 216 160 217 88 0 0 0 0 128 197 169 33 0 0 0 0 120 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 68 79 32 101 120 116 114 97 32 100 97 116 97 32 108 111 99 107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 152 1 0 0 177 138 4 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 3 0 2 0 0 0 48 0 0 0 255 255 255 255 5 0 3 0 0 0 0 0 data 6 0x30005 0x0 0x32415360 0x9156 0x0 0x0 oops 1 2 java/util/Random
+ciMethodData net/minecraft/crash/CrashReport makeCrashReport (Ljava/lang/Throwable;Ljava/lang/String;)Lnet/minecraft/crash/CrashReport; 1 1 orig 264 216 160 217 88 0 0 0 0 128 157 119 41 0 0 0 0 40 2 0 0 176 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 68 79 32 101 120 116 114 97 32 100 97 116 97 32 108 111 99 107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 25 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 216 0 0 0 255 255 255 255 4 0 1 0 0 0 0 0 data 27 0x10004 0x0 0x0 0x0 0x0 0x0 0x40007 0x0 0x98 0x0 0x80004 0x0 0x0 0x0 0x0 0x0 0xb0005 0x0 0x0 0x0 0x0 0x0 0xf0003 0x0 0x28 0x180002 0x0 oops 0
+ciMethodData cpw/mods/fml/common/eventhandler/EventBus post (Lcpw/mods/fml/common/eventhandler/Event;)Z 2 5445 orig 264 216 160 217 88 0 0 0 0 112 255 93 41 0 0 0 0 8 3 0 0 16 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 68 79 32 101 120 116 114 97 32 100 97 116 97 32 108 111 99 107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 41 162 0 0 129 78 0 0 0 0 0 0 0 0 0 0 2 0 0 0 1 0 16 0 2 0 0 0 184 1 0 0 255 255 255 255 5 0 1 0 0 0 0 0 data 55 0x10005 0x119f 0x22f684f0 0xe2 0x22f685a0 0x1c4 0x80005 0x0 0x20780ee0 0x1445 0x0 0x0 0x110007 0x1445 0x68 0x9d0 0x180005 0x0 0x22f68650 0x4e8 0x22f68700 0x4e8 0x200003 0x9d0 0xffffffffffffffb0 0x230003 0x1445 0x58 0x320005 0x0 0x0 0x0 0x0 0x0 0x390002 0x0 0x3e0005 0x119f 0x22f684f0 0xe2 0x22f685a0 0x1c4 0x410007 0xd4a 0x68 0x6fb 0x450005 0x615 0x22f687b0 0xe2 0x22f68860 0x4 0x480003 0x6fb 0x18 oops 9 2 net/minecraftforge/client/event/GuiScreenEvent$DrawScreenEvent$Post 4 cpw/mods/fml/common/gameevent/TickEvent$RenderTickEvent 8 cpw/mods/fml/common/eventhandler/ListenerList 18 cpw/mods/fml/common/eventhandler/EventPriority 20 cpw/mods/fml/common/eventhandler/ASMEventHandler 38 net/minecraftforge/client/event/GuiScreenEvent$DrawScreenEvent$Post 40 cpw/mods/fml/common/gameevent/TickEvent$RenderTickEvent 48 net/minecraftforge/client/event/GuiScreenEvent$DrawScreenEvent$Pre 50 net/minecraftforge/client/event/GuiScreenEvent$InitGuiEvent$Pre
+ciMethod net/minecraft/world/chunk/IChunkProvider getPossibleCreatures (Lnet/minecraft/entity/EnumCreatureType;III)Ljava/util/List; 0 0 1 0 -1
+ciMethodData net/minecraft/world/SpawnerAnimals findChunksForSpawning (Lnet/minecraft/world/WorldServer;ZZZ)I 2 148851 orig 264 216 160 217 88 0 0 0 0 16 39 214 43 0 0 0 0 224 16 0 0 48 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 68 79 32 101 120 116 114 97 32 100 97 116 97 32 108 111 99 107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 175 36 0 0 161 36 0 0 121 4 17 0 95 3 0 0 0 112 1 0 2 0 0 0 7 0 130 0 2 0 0 0 104 15 0 0 255 255 255 255 7 0 1 0 0 0 0 0 data 493 0x10007 0x494 0x40 0x0 0x50007 0x0 0x20 0x0 0xe0005 0x0 0x32414bd0 0x494 0x0 0x0 0x1a0005 0x0 0x32414c80 0x619 0x0 0x0 0x1f0007 0x492 0x2d8 0x187 0x280005 0x0 0x32414c80 0x187 0x0 0x0 0x2d0004 0x0 0x32414d30 0x187 0x0 0x0 0x3b0002 0x187 0x490002 0x187 0x5b0007 0x185 0x220 0x19dd 0x670007 0x19db 0x1e8 0x1b7a4 0x6f0007 0x19f7 0x80 0x19dad 0x760007 0x19d5 0x60 0x183d8 0x7e0007 0x16d1 0x40 0x16d07 0x850007 0x15638 0x38 0x16cf 0x890003 0x616c 0x18 0x9d0002 0x1b7a4 0xa40007 0x616c 0x78 0x15638 0xae0002 0x15638 0xb10005 0x0 0x32414bd0 0x15638 0x0 0x0 0xb50003 0x15638 0xa8 0xbe0005 0x0 0x32414bd0 0x616c 0x0 0x0 0xc10007 0x0 0x60 0x616c 0xcb0002 0x616c 0xce0005 0x0 0x32414bd0 0x616c 0x0 0x0 0xd50003 0x1b7a4 0xfffffffffffffe30 0xdb0003 0x19db 0xfffffffffffffdf8 0xe10003 0x185 0xfffffffffffffd10 0xe80005 0x0 0x32414de0 0x30d 0x324139d0 0x185 0xed0002 0x492 0xfe0007 0x496 0xbb0 0x1253 0x10a0005 0x6e 0x32414e90 0x11e5 0x0 0x0 0x10d0007 0x492 0x40 0xdc1 0x1110007 0x0 0xb28 0xdc1 0x1160005 0x6e 0x32414e90 0x11e5 0x0 0x0 0x1190007 0xdc1 0x40 0x492 0x11d0007 0x0 0xab8 0x492 0x1220005 0x6e 0x32414e90 0x11e5 0x0 0x0 0x1250007 0xdbe 0x40 0x495 0x12ae007 0x493 0xa48 0x3 0x1310005 0x0 0x32414de0 0x92b 0x324139d0 0x496 0x1360005 0x55 0x32414e90 0xd6c 0x0 0x0 0x13d0005 0x0 0x32414bd0 0xdc1 0x0 0x0 0x1450007 0x489 0x998 0x938 0x14c0005 0x0 0x32414bd0 0x938 0x0 0x0 0x14f0005 0x0 0x32414f40 0x938 0x0 0x0 0x15e0005 0x0 0x32414bd0 0x938 0x0 0x0 0x1610002 0x938 0x1680002 0x938 0x16d0005 0x0 0x32414c80 0x938 0x0 0x0 0x1740005 0x0 0x32414ff0 0x1a6c 0x0 0x0 0x1790007 0x93b 0x868 0x1131 0x17e0005 0x0 0x32414ff0 0x1131 0x0 0x0 0x1830004 0x0 0x324150a0 0x1131 0x0 0x0 0x18e0005 0x0 0x32414bd0 0x1131 0x0 0x0 0x1910004 0x0 0x1da45620 0x1131 0x0 0x0 0x1940005 0x35b 0x1da45620 0xdd6 0x0 0x0 0x1970007 0x3cd 0x740 0xd64 0x1a50002 0xd64 0x1c60005 0x0 0x324139d0 0xd63 0x0 0x0 0x1c90005 0x1e7 0x32415150 0x8b3 0x32415200 0x2c9 0x1cc0007 0xa5d 0x6b0 0x306 0x1d60005 0x0 0x324139d0 0x306 0x0 0x0 0x1d90005 0x18 0x32415200 0x2c9 0x324152b0 0x25 0x1de0005 0xa3 0x32414e90 0x263 0x0 0x0 0x1e10007 0x3d 0x600 0x2c9 0x1ed0007 0x2cd 0x5e0 0x861 0x20c0007 0x865 0x590 0x218a 0x2170005 0x0 0x32415360 0x218a 0x0 0x0 0x2200005 0x0 0x32415360 0x218a 0x0 0x0 0x22e0005 0x0 0x32415360 0x218a 0x0 0x0 0x2360005 0x0 0x32415360 0x218a 0x0 0x0 0x2450005 0x0 0x32415360 0x218a 0x0 0x0 0x24e0005 0x0 0x32415360 0x218a 0x0 0x0 0x25e0002 0x218a 0x2610007 0x205a 0x428 0x131 0x2860005 0x0 0x324139d0 0x131 0x0 0x0 0x2890007 0x6 0x3d8 0x12b 0x2c60007 0x9 0x3b8 0x122 0x2cb0007 0x88 0x88 0x9a 0x2d70005 0x0 0x324139d0 0x9a 0x0 0x0 0x2de0007 0x9a 0x38 0x0 0x2e10003 0x0 0x340 0x2f10004 0x0 0x23b3ee0 0x122 0x0 0x0 0x2f20005 0x58 0x23b3ee0 0xca 0x0 0x0 0x2fc0004 0x0 0x324139d0 0x122 0x0 0x0 0x2fd0005 0x58 0x23b5650 0xca 0x0 0x0 0x300c004 0x0 0x32415410 0x10 0x324154c0 0x3a 0x3050003 0x126 0x48 0x30c0005 0x0 0x0 0x0 0x0 0x0 0x3210005 0x0 0x32415360 0x126 0x0 0x0 0x3290005 0xdc 0x32415410 0x10 0x324154c0 0x3a 0x3350002 0x126 0x33f0007 0x0 0x90 0x126 0x3470007 0x0 0x148 0x126 0x34c0005 0xdc 0x32415410 0x10 0x324154c0 0x3a 0x34f0007 0x113 0xf8 0x13 0x3580005 0x0 0x324139d0 0x13 0x0 0x0 0x3650002 0x13 0x3680007 0x0 0x50 0x13 0x36f0005 0xd 0x32415410 0x1 0x324154c0 0x5 0x3780002 0x13 0x37b0007 0x13 0x38 0x0 0x37e0003 0x0 0xfffffffffffff7e0 0x38b0003 0x218f 0xfffffffffffffa88 0x3910003 0x865 0x18 0x3940003 0x865 0xfffffffffffffa38 0x3970003 0x1134 0xfffffffffffff780 0x39d0003 0x1257 0xfffffffffffff468 oops 55 10 java/util/HashMap 16 java/util/ArrayList 26 java/util/ArrayList 32 net/minecraft/entity/player/EntityPlayerMP 77 java/util/HashMap 86 java/util/HashMap 98 java/util/HashMap 113 net/minecraft/world/WorldServerMulti 115 net/minecraft/world/WorldServer 125 net/minecraft/entity/EnumCreatureType 139 net/minecraft/entity/EnumCreatureType 153 net/minecraft/entity/EnumCreatureType 167 net/minecraft/world/WorldServerMulti 169 net/minecraft/world/WorldServer 173 net/minecraft/entity/EnumCreatureType 179 java/util/HashMap 189 java/util/HashMap 195 java/util/HashMap$KeySet 201 java/util/HashMap 211 java/util/ArrayList 217 java/util/ArrayList$Itr 227 java/util/ArrayList$Itr 233 net/minecraft/world/ChunkCoordIntPair 239 java/util/HashMap 245 java/lang/Boolean 251 java/lang/Boolean 263 net/minecraft/world/WorldServer 269 net/minecraft/block/BlockStone 271 net/minecraft/block/BlockAir 279 net/minecraft/world/WorldServer 285 net/minecraft/block/BlockAir 287 net/minecraft/block/BlockStaticLiquid 291 net/minecraft/entity/EnumCreatureType 309 java/util/Random 315 java/util/Random 321 java/util/Random 327 java/util/Random 333 java/util/Random 339 java/util/Random 351 net/minecraft/world/WorldServer 369 net/minecraft/world/WorldServer 382 java/lang/Class 388 java/lang/Class 394 net/minecraft/world/WorldServer 400 java/lang/reflect/Constructor 406 net/minecraft/entity/passive/EntityBat 408 net/minecraft/entity/monster/EntitySkeleton 421 java/util/Random 427 net/minecraft/entity/passive/EntityBat 429 net/minecraft/entity/monster/EntitySkeleton 443 net/minecraft/entity/passive/EntityBat 445 net/minecraft/entity/monster/EntitySkeleton 453 net/minecraft/world/WorldServer 465 net/minecraft/entity/passive/EntityBat 467 net/minecraft/entity/monster/EntitySkeleton
+ciMethodData net/minecraft/world/SpawnerAnimals func_151350_a (Lnet/minecraft/world/World;II)Lnet/minecraft/world/ChunkPosition; 2 5336 orig 264 216 160 217 88 0 0 0 0 0 32 214 43 0 0 0 0 192 2 0 0 40 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 68 79 32 101 120 116 114 97 32 100 97 116 97 32 108 111 99 107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 193 166 0 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 11 0 2 0 0 0 104 1 0 0 255 255 255 255 5 0 3 0 0 0 0 0 data 45 0x30005 0x0 0x324139d0 0x14d8 0x0 0x0 0x110005 0x0 0x32415360 0x14d8 0x0 0x0 0x210005 0x0 0x32415360 0x14d8 0x0 0x0 0x2c0007 0x14d8 0x68 0x0 0x300005 0x0 0x0 0x0 0x0 0x0 0x330003 0x0 0x48 0x370005 0x0 0x20433990 0x14d8 0x0 0x0 0x3f0005 0x0 0x32415360 0x14d8 0x0 0x0 0x4e0002 0x14d8 oops 5 2 net/minecraft/world/WorldServer 8 java/util/Random 14 java/util/Random 33 net/minecraft/world/chunk/Chunk 39 java/util/Random
+ciMethodData net/minecraft/world/SpawnerAnimals canCreatureTypeSpawnAtLocation (Lnet/minecraft/entity/EnumCreatureType;Lnet/minecraft/world/World;III)Z 2 7362 orig 264 216 160 217 88 0 0 0 0 112 42 214 43 0 0 0 0 72 6 0 0 168 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 68 79 32 101 120 116 114 97 32 100 97 116 97 32 108 111 99 107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17 230 0 0 1 0 0 0 201 5 0 0 0 0 0 0 2 0 0 0 0 0 66 0 2 0 0 0 224 4 0 0 255 255 255 255 5 0 1 0 0 0 0 0 data 156 0x10005 0x27c 0x32414e90 0x1a46 0x0 0x0 0x70007 0x1cc2 0x218 0x0 0xf0005 0x0 0x0 0x0 0x0 0x0 0x120005 0x0 0x0 0x0 0x0 0x0 0x150005 0x0 0x0 0x0 0x0 0x0 0x180007 0x0 0x168 0x0 0x220005 0x0 0x0 0x0 0x0 0x0 0x250005 0x0 0x0 0x0 0x0 0x0 0x280005 0x0 0x0 0x0 0x0 0x0 0x2b0007 0x0 0xb8 0x0 0x350005 0x0 0x0 0x0 0x0 0x0 0x380005 0x0 0x0 0x0 0x0 0x0 0x3b0007 0x0 0x38 0x0 0x3f0003 0x0 0x18 0x4b0002 0x1cc2 0x4e0007 0x34c 0x20 0x1976 0x5a0005 0x0 0x324139d0 0x34c 0x0 0x0 0x690005 0xe3 0x20d05130 0x98 0x32415150 0x1d1 0x700007 0x0 0x208 0x34c 0x780007 0x0 0x1e8 0x34c 0x800005 0x0 0x324139d0 0x34c 0x0 0x0 0x830005 0x2a6 0x20d05130 0x68 0x20d051e0 0x3e 0x860007 0x245 0x168 0x107 0x8e0005 0x0 0x324139d0 0x107 0x0 0x0 0x910005 0xc 0x20d051e0 0x3e 0x32415200 0xbd 0x940005 0x6 0x20d05290 0x44 0x3336fbd0 0xbd 0x970007 0x2 0xb8 0x105 0xa10005 0x0 0x324139d0 0x105 0x0 0x0 0xa40005 0xe 0x32415200 0xf6 0x20d05340 0x1 0xa7e007 0x6 0x38 0x100 0xab0003 0x100 0x18 oops 15 2 net/minecraft/entity/EnumCreatureType 81 net/minecraft/world/WorldServer 87 net/minecraft/block/BlockDirt 89 net/minecraft/block/BlockStone 101 net/minecraft/world/WorldServer 107 net/minecraft/block/BlockDirt 109 net/minecraft/block/BlockTallGrass 117 net/minecraft/world/WorldServer 123 net/minecraft/block/BlockTallGrass 125 net/minecraft/block/BlockAir 129 net/minecraft/block/material/MaterialLogic 131 net/minecraft/block/material/MaterialTransparent 139 net/minecraft/world/WorldServer 145 net/minecraft/block/BlockAir 147 net/minecraft/block/BlockNewLeaf
+ciMethodData net/minecraft/world/WorldServer spawnRandomCreature (Lnet/minecraft/entity/EnumCreatureType;III)Lnet/minecraft/world/biome/BiomeGenBase$SpawnListEntry; 1 286 orig 264 216 160 217 88 0 0 0 0 0 117 200 35 0 0 0 0 160 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 68 79 32 101 120 116 114 97 32 100 97 116 97 32 108 111 99 107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 241 8 0 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 13 0 2 0 0 0 56 1 0 0 255 255 255 255 5 0 1 0 0 0 0 0 data 39 0x10005 0x0 0x324139d0 0x11e 0x0 0x0 0x90005 0x0 0x26c24dd0 0x11e 0x0 0x0 0x180002 0x11e 0x1f0007 0x0 0xc8 0x11e 0x240005 0x0 0x32414c80 0x11e 0x0 0x0 0x290007 0x0 0x78 0x11e 0x320002 0x11e 0x350004 0x0 0x20621350 0x11e 0x0 0x0 0x380003 0x11e 0x18 oops 4 2 net/minecraft/world/WorldServer 8 net/minecraft/world/gen/ChunkProviderServer 20 java/util/ArrayList 32 net/minecraft/world/biome/BiomeGenBase$SpawnListEntry
+ciMethodData net/minecraft/entity/Entity setLocationAndAngles (DDDFF)V 1 508 orig 264 216 160 217 88 0 0 0 0 120 115 194 35 0 0 0 0 184 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 68 79 32 101 120 116 114 97 32 100 97 116 97 32 108 111 99 107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 0 0 0 201 15 0 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 3 0 2 0 0 0 48 0 0 0 255 255 255 255 5 0 77 0 0 0 0 0 data 6 0x4d0005 0xf0 0x32415410 0xc7 0x324154c0 0x42 oops 2 2 net/minecraft/entity/passive/EntityBat 4 net/minecraft/entity/monster/EntitySkeleton
+ciMethodData net/minecraftforge/event/ForgeEventFactory canEntitySpawn (Lnet/minecraft/entity/EntityLiving;Lnet/minecraft/world/World;FFF)Lcpw/mods/fml/common/eventhandler/Event$Result; 1 505 orig 264 216 160 217 88 0 0 0 0 184 51 41 46 0 0 0 0 216 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 68 79 32 101 120 116 114 97 32 100 97 116 97 32 108 111 99 107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 25 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 201 15 0 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 3 0 2 0 0 0 112 0 0 0 255 255 255 255 2 0 10 0 0 0 0 0 data 14 0xa0002 0x1f9 0x140005 0x0 0x2077e500 0x1f9 0x0 0x0 0x1a0005 0x0 0x2077e130 0x1f9 0x0 0x0 oops 2 4 cpw/mods/fml/common/eventhandler/EventBus 10 net/minecraftforge/event/entity/living/LivingSpawnEvent$CheckSpawn
+ciMethodData net/minecraft/world/World spawnEntityInWorld (Lnet/minecraft/entity/Entity;)Z 1 186 orig 264 216 160 217 88 0 0 0 0 32 191 189 35 0 0 0 0 0 5 0 0 208 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 68 79 32 101 120 116 114 97 32 100 97 116 97 32 108 111 99 107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 138 0 0 0 129 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 176 3 0 0 255 255 255 255 7 0 4 0 0 0 0 0 data 118 0x40007 0x12 0xb0 0x1e 0x80007 0x0 0x90 0x1e 0xc0004 0xffffffffffffffe4 0x32415410 0x6 0x20434c80 0x2 0xf0007 0x1c 0x40 0x2 0x160007 0x2 0x20 0x0 0x230002 0x30 0x2f0002 0x30 0x3a0004 0xffffffffffffffd0 0x32415410 0xb 0x20434c80 0x4 0x3d0007 0x30 0x20 0x0 0x450007 0x0 0x70 0x30 0x4b0005 0x0 0x324139d0 0x1e 0x26c24470 0x12 0x4e0007 0x30 0x20 0x0 0x540004 0xffffffffffffffd0 0x32415410 0xb 0x20434c80 0x4 0x570007 0x30 0xb0 0x0 0x5b0004 0x0 0x0 0x0 0x0 0x0 0x660005 0x0 0x0 0x0 0x0 0x0 0x6d0005 0x0 0x0 0x0 0x0 0x0 0x790002 0x30 0x7c0005 0x0 0x2077e500 0x30 0x0 0x0 0x7f0007 0x30 0x40 0x0 0x840007 0x0 0x20 0x0 0x8c0005 0x0 0x324139d0 0x1e 0x26c24470 0x12 0x900005 0x0 0x20433990 0x30 0x0 0x0 0x980005 0x0 0x32414c80 0x30 0x0 0x0 0xa00005 0x0 0x324139d0 0x1e 0x26c24470 0x12 oops 15 10 net/minecraft/entity/passive/EntityBat 12 net/minecraft/entity/item/EntityItem 28 net/minecraft/entity/passive/EntityBat 30 net/minecraft/entity/item/EntityItem 42 net/minecraft/world/WorldServer 44 net/minecraft/client/multiplayer/WorldClient 52 net/minecraft/entity/passive/EntityBat 54 net/minecraft/entity/item/EntityItem 82 cpw/mods/fml/common/eventhandler/EventBus 96 net/minecraft/world/WorldServer 98 net/minecraft/client/multiplayer/WorldClient 102 net/minecraft/world/chunk/Chunk 108 java/util/ArrayList 114 net/minecraft/world/WorldServer 116 net/minecraft/client/multiplayer/WorldClient
+ciMethodData net/minecraftforge/event/ForgeEventFactory doSpecialSpawn (Lnet/minecraft/entity/EntityLiving;Lnet/minecraft/world/World;FFF)Z 1 28 orig 264 216 160 217 88 0 0 0 0 152 52 41 46 0 0 0 0 168 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 68 79 32 101 120 116 114 97 32 100 97 116 97 32 108 111 99 107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 25 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 225 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 64 0 0 0 255 255 255 255 2 0 13 0 0 0 0 0 data 8 0xd0002 0x1c 0x100005 0x0 0x2077e500 0x1c 0x0 0x0 oops 1 4 cpw/mods/fml/common/eventhandler/EventBus
+ciMethodData net/minecraftforge/event/ForgeEventFactory getMaxSpawnPackSize (Lnet/minecraft/entity/EntityLiving;)I 1 28 orig 264 216 160 217 88 0 0 0 0 80 55 41 46 0 0 0 0 32 2 0 0 144 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 68 79 32 101 120 116 114 97 32 100 97 116 97 32 108 111 99 107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 25 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 225 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 216 0 0 0 255 255 255 255 2 0 5 0 0 0 0 0 data 27 0x50002 0x1c 0xd0005 0x0 0x2077e500 0x1c 0x0 0x0 0x120005 0x0 0x204362c0 0x1c 0x0 0x0 0x180007 0x1c 0x38 0x0 0x1f0003 0x0 0x48 0x230005 0xe 0x32415410 0x6 0x324154c0 0x8 oops 4 4 cpw/mods/fml/common/eventhandler/EventBus 10 net/minecraftforge/event/entity/living/LivingPackSizeEvent 23 net/minecraft/entity/passive/EntityBat 25 net/minecraft/entity/monster/EntitySkeleton
+ciMethodData net/minecraftforge/event/entity/living/LivingSpawnEvent <init> (Lnet/minecraft/entity/EntityLiving;Lnet/minecraft/world/World;FFF)V 2 6457 orig 264 216 160 217 88 0 0 0 0 144 160 41 46 0 0 0 0 88 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 68 79 32 101 120 116 114 97 32 100 97 116 97 32 108 111 99 107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 193 193 0 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 3 0 2 0 0 0 16 0 0 0 255 255 255 255 2 0 2 0 0 0 0 0 data 2 0x20002 0x1838 oops 0
+ciMethodData java/util/Collections swap (Ljava/util/List;II)V 2 3755 orig 264 216 160 217 88 0 0 0 0 216 78 8 28 0 0 0 0 232 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 68 79 32 101 120 116 114 97 32 100 97 116 97 32 108 111 99 107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11 0 0 0 1 117 0 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 144 0 0 0 255 255 255 255 5 0 8 0 0 0 0 0 data 18 0x80005 0x0 0x32414c80 0xea0 0x0 0x0 0xd0005 0x0 0x32414c80 0xea0 0x0 0x0 0x120005 0x0 0x32414c80 0xea0 0x0 0x0 oops 3 2 java/util/ArrayList 8 java/util/ArrayList 14 java/util/ArrayList
+ciMethodData net/minecraft/world/World getActualHeight ()I 1 0 orig 264 216 160 217 88 0 0 0 0 232 110 190 35 0 0 0 0 120 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 68 79 32 101 120 116 114 97 32 100 97 116 97 32 108 111 99 107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 48 0 0 0 255 255 255 255 5 0 4 0 0 0 0 0 data 6 0x40005 0x0 0x0 0x0 0x0 0x0 oops 0
+ciMethodData net/minecraftforge/event/entity/living/LivingSpawnEvent$CheckSpawn <init> (Lnet/minecraft/entity/EntityLiving;Lnet/minecraft/world/World;FFF)V 1 505 orig 264 216 160 217 88 0 0 0 0 32 192 41 46 0 0 0 0 88 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 68 79 32 101 120 116 114 97 32 100 97 116 97 32 108 111 99 107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 193 7 0 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 16 0 0 0 255 255 255 255 2 0 8 0 0 0 0 0 data 2 0x80002 0xf8 oops 0
+ciMethodData net/minecraftforge/event/ForgeEventFactory getPotentialSpawns (Lnet/minecraft/world/WorldServer;Lnet/minecraft/entity/EnumCreatureType;IIILjava/util/List;)Ljava/util/List; 1 286 orig 264 216 160 217 88 0 0 0 0 104 54 41 46 0 0 0 0 208 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 68 79 32 101 120 116 114 97 32 100 97 116 97 32 108 111 99 107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 233 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 96 0 0 0 255 255 255 255 2 0 12 0 0 0 0 0 data 12 0xc0002 0x1d 0x160005 0x0 0x2077e500 0x1d 0x0 0x0 0x190007 0x1d 0x20 0x0 oops 1 4 cpw/mods/fml/common/eventhandler/EventBus
+instanceKlass net/minecraft/entity/monster/EntityZombie$GroupData
+instanceKlass net/minecraft/entity/monster/EntitySpider$GroupData
+instanceKlass net/minecraft/entity/IEntityLivingData
+instanceKlass net/minecraft/network/NetHandlerPlayServer$SwitchEnumState
+instanceKlass net/minecraft/client/renderer/tileentity/TileEntityRendererChestHelper
+instanceKlass net/minecraft/client/gui/inventory/CreativeCrafting
+instanceKlass org/lwjgl/opengl/WindowsKeycodes
+instanceKlass net/minecraftforge/client/event/RenderGameOverlayEvent$1
+instanceKlass net/minecraft/world/storage/ThreadedFileIOBase
+instanceKlass net/minecraft/world/chunk/storage/AnvilChunkLoader$PendingChunk
+instanceKlass cpw/mods/fml/common/registry/GameData$GameDataSnapshot
+instanceKlass org/lwjgl/input/Cursor
+instanceKlass net/minecraftforge/client/IItemRenderer
+instanceKlass com/google/common/collect/MapMakerInternalMap$HashIterator
+instanceKlass net/minecraft/block/Block$6
+instanceKlass net/minecraft/src/FMLRenderAccessLibrary
+instanceKlass net/minecraft/client/entity/AbstractClientPlayer$SwitchType
+instanceKlass sun/java2d/loops/GraphicsPrimitive$GeneralBinaryOp
+instanceKlass sun/awt/image/MultiResolutionImage
+instanceKlass sun/java2d/loops/GraphicsPrimitiveMgr$PrimitiveSpec
+instanceKlass sun/java2d/loops/GraphicsPrimitiveMgr$2
+instanceKlass sun/java2d/loops/GraphicsPrimitiveMgr$1
+instanceKlass sun/java2d/loops/GeneralRenderer
+instanceKlass sun/java2d/loops/CustomComponent
+instanceKlass sun/java2d/pipe/ValidatePipe
+instanceKlass java/awt/BasicStroke
+instanceKlass java/awt/Stroke
+instanceKlass java/awt/AlphaComposite
+instanceKlass sun/java2d/loops/XORComposite
+instanceKlass java/awt/Composite
+instanceKlass sun/awt/ConstrainableGraphics
+instanceKlass sun/java2d/loops/GraphicsPrimitiveMgr
+instanceKlass sun/java2d/loops/GraphicsPrimitive
+instanceKlass sun/java2d/loops/CompositeType
+instanceKlass sun/java2d/DefaultDisposerRecord
+instanceKlass sun/java2d/loops/RenderLoops
+instanceKlass sun/awt/image/BufImgSurfaceData$ICMColorData
+instanceKlass com/sun/imageio/stream/CloseableDisposerRecord
+instanceKlass net/minecraft/client/resources/SkinManager$2
+instanceKlass net/minecraft/client/renderer/ImageBufferDownload
+instanceKlass org/apache/commons/io/FilenameUtils
+instanceKlass net/minecraft/client/resources/SkinManager$3$1
+instanceKlass com/google/gson/internal/UnsafeAllocator
+instanceKlass com/google/gson/internal/ConstructorConstructor$12
+instanceKlass com/mojang/authlib/minecraft/MinecraftProfileTexture
+instanceKlass com/mojang/authlib/yggdrasil/response/MinecraftTexturesPayload
+instanceKlass org/apache/commons/codec/binary/BaseNCodec$Context
+instanceKlass org/apache/commons/codec/Charsets
+instanceKlass org/apache/commons/codec/binary/StringUtils
+instanceKlass org/apache/commons/codec/binary/BaseNCodec
+instanceKlass org/apache/commons/codec/BinaryDecoder
+instanceKlass org/apache/commons/codec/Decoder
+instanceKlass org/apache/commons/codec/BinaryEncoder
+instanceKlass org/apache/commons/codec/Encoder
+instanceKlass org/apache/commons/lang3/SystemUtils
+instanceKlass org/apache/commons/lang3/builder/ToStringStyle
+instanceKlass org/apache/commons/lang3/builder/ToStringBuilder
+instanceKlass org/apache/commons/lang3/builder/Builder
+instanceKlass com/mojang/authlib/properties/Property
+instanceKlass net/minecraft/client/renderer/tileentity/TileEntitySpecialRenderer
+instanceKlass net/minecraft/client/renderer/tileentity/TileEntityRendererDispatcher
+instanceKlass net/minecraft/client/shader/TesselatorVertexState
+instanceKlass net/minecraft/client/util/QuadComparator
+instanceKlass net/minecraft/client/shader/ShaderLinkHelper
+instanceKlass net/minecraft/potion/PotionEffect
+instanceKlass net/minecraft/entity/boss/BossStatus
+instanceKlass net/minecraft/util/CombatEntry
+instanceKlass net/minecraft/util/DamageSource
+instanceKlass net/minecraft/util/Facing
+instanceKlass org/lwjgl/opengl/GL13
+instanceKlass com/google/common/collect/ComparisonChain
+instanceKlass net/minecraft/client/util/RenderDistanceSorter
+instanceKlass net/minecraft/client/renderer/EntitySorter
+instanceKlass net/minecraft/client/renderer/RenderSorter
+instanceKlass net/minecraft/client/renderer/culling/Frustrum
+instanceKlass net/minecraft/client/renderer/RenderHelper
+instanceKlass net/minecraft/network/play/server/S21PacketChunkData$Extracted
+instanceKlass net/minecraft/client/renderer/culling/ClippingHelper
+instanceKlass org/lwjgl/util/glu/GLUtessellator
+instanceKlass org/lwjgl/util/glu/GLU
+instanceKlass net/minecraft/client/renderer/ActiveRenderInfo
+instanceKlass net/minecraft/world/biome/BiomeCache$Block
+instanceKlass com/google/common/collect/LinkedHashMultimap$ValueSet$1
+instanceKlass net/minecraft/client/gui/GuiPlayerInfo
+instanceKlass net/minecraft/client/gui/IProgressMeter
+instanceKlass java/util/PriorityQueue$Itr
+instanceKlass java/util/concurrent/FutureTask$WaitNode
+instanceKlass java/util/concurrent/FutureTask
+instanceKlass net/minecraft/client/resources/SkinManager$3
+instanceKlass net/minecraft/client/multiplayer/ChunkProviderClient
+instanceKlass net/minecraft/world/storage/SaveHandlerMP
+instanceKlass net/minecraft/client/multiplayer/PlayerControllerMP
+instanceKlass net/minecraft/server/management/PlayerManager$PlayerInstance$2
+instanceKlass net/minecraft/server/management/PlayerManager$PlayerInstance$1
+instanceKlass net/minecraft/server/management/PlayerManager$PlayerInstance
+instanceKlass net/minecraftforge/common/util/ChunkCoordComparator
+instanceKlass net/minecraft/util/ChatComponentStyle$2
+instanceKlass net/minecraft/util/ChatComponentStyle$1
+instanceKlass net/minecraft/event/ClickEvent
+instanceKlass cpw/mods/fml/common/ObfuscationReflectionHelper
+instanceKlass net/minecraftforge/event/ForgeEventFactory
+instanceKlass cpw/mods/fml/common/network/NetworkHandshakeEstablished
+instanceKlass io/netty/util/CharsetUtil
+instanceKlass io/netty/buffer/ByteBufUtil
+instanceKlass cpw/mods/fml/common/network/ByteBufUtils
+instanceKlass java/util/ArrayDeque$DeqIterator
+instanceKlass io/netty/util/ResourceLeak
+instanceKlass io/netty/util/ResourceLeakDetector
+instanceKlass net/minecraft/client/stream/Metadata
+instanceKlass net/minecraft/client/network/NetHandlerPlayClient
+instanceKlass net/minecraft/network/play/INetHandlerPlayClient
+instanceKlass io/netty/buffer/Unpooled
+instanceKlass net/minecraft/network/NetHandlerPlayServer
+instanceKlass net/minecraft/network/play/INetHandlerPlayServer
+instanceKlass cpw/mods/fml/common/network/handshake/NetworkDispatcher$VanillaTimeoutWaiter$1
+instanceKlass io/netty/channel/DefaultChannelPipeline$3
+instanceKlass net/minecraft/util/TupleIntJsonSerializable
+instanceKlass org/apache/commons/io/FileUtils
+instanceKlass net/minecraft/stats/StatFileWriter
+instanceKlass net/minecraftforge/oredict/OreDictionary$UnmodifiableArrayList$2
+instanceKlass net/minecraft/inventory/InventoryCraftResult
+instanceKlass net/minecraft/inventory/Slot
+instanceKlass net/minecraft/entity/player/PlayerCapabilities
+instanceKlass net/minecraft/util/FoodStats
+instanceKlass net/minecraft/entity/player/InventoryPlayer
+instanceKlass cpw/mods/fml/common/network/handshake/IHandshakeState
+instanceKlass net/minecraft/server/management/ItemInWorldManager
+instanceKlass cpw/mods/fml/common/network/handshake/FMLHandshakeMessage
+instanceKlass net/minecraft/server/network/NetHandlerLoginServer
+instanceKlass net/minecraft/network/login/INetHandlerLoginServer
+instanceKlass net/minecraft/client/network/NetHandlerHandshakeMemory$SwitchEnumConnectionState
+instanceKlass io/netty/channel/local/LocalChannel$6
+instanceKlass io/netty/util/ReferenceCountUtil
+instanceKlass io/netty/channel/FileRegion
+instanceKlass io/netty/buffer/ByteBufHolder
+instanceKlass net/minecraft/network/NetworkManager$1
+instanceKlass net/minecraft/client/network/NetHandlerLoginClient
+instanceKlass net/minecraft/network/login/INetHandlerLoginClient
+instanceKlass io/netty/util/concurrent/DefaultFutureListeners
+instanceKlass gnu/trove/map/hash/TIntObjectHashMap$1
+instanceKlass gnu/trove/procedure/TIntObjectProcedure
+instanceKlass gnu/trove/iterator/TIntObjectIterator
+instanceKlass gnu/trove/set/TIntSet
+instanceKlass gnu/trove/TIntCollection
+instanceKlass io/netty/channel/DefaultChannelHandlerContext$17
+instanceKlass gnu/trove/map/TIntObjectMap
+instanceKlass net/minecraft/client/network/NetHandlerHandshakeMemory
+instanceKlass net/minecraft/network/handshake/INetHandlerHandshakeServer
+instanceKlass io/netty/channel/local/LocalChannel$4
+instanceKlass io/netty/channel/local/LocalServerChannel$2
+instanceKlass io/netty/bootstrap/Bootstrap$2
+instanceKlass io/netty/bootstrap/Bootstrap$1
+instanceKlass io/netty/channel/local/LocalChannel$3
+instanceKlass io/netty/channel/local/LocalChannel$2
+instanceKlass net/minecraft/network/NetworkStatistics$PacketStatData
+instanceKlass net/minecraft/network/NetworkStatistics$Tracker
+instanceKlass net/minecraft/network/NetworkStatistics
+instanceKlass java/nio/channels/spi/AbstractSelector$1
+instanceKlass io/netty/channel/ChannelFutureListener$3
+instanceKlass io/netty/channel/ChannelFutureListener$2
+instanceKlass io/netty/channel/ChannelFutureListener$1
+instanceKlass io/netty/channel/AbstractChannel$AbstractUnsafe$2
+instanceKlass io/netty/channel/local/LocalChannelRegistry
+instanceKlass io/netty/util/concurrent/DefaultPromise$CauseHolder
+instanceKlass io/netty/bootstrap/AbstractBootstrap$2
+instanceKlass io/netty/util/concurrent/DefaultPromise$4
+instanceKlass io/netty/bootstrap/AbstractBootstrap$1
+instanceKlass io/netty/channel/ChannelFutureListener
+instanceKlass io/netty/util/concurrent/SingleThreadEventExecutor$PurgeTask
+instanceKlass io/netty/channel/AbstractChannel$AbstractUnsafe$1
+instanceKlass io/netty/channel/local/LocalServerChannel$1
+instanceKlass io/netty/bootstrap/AbstractBootstrap$BootstrapChannelFactory
+instanceKlass io/netty/bootstrap/ChannelFactory
+instanceKlass io/netty/bootstrap/AbstractBootstrap
+instanceKlass net/minecraft/network/ServerStatusResponse$PlayerCountData
+instanceKlass net/minecraft/network/play/server/S20PacketEntityProperties$Snapshot
+instanceKlass net/minecraft/entity/Entity$SwitchEnumEntitySize
+instanceKlass net/minecraft/enchantment/Enchantment
+instanceKlass net/minecraft/enchantment/EnchantmentHelper$DamageIterator
+instanceKlass net/minecraft/enchantment/EnchantmentHelper$HurtIterator
+instanceKlass net/minecraft/enchantment/EnchantmentHelper$ModifierLiving
+instanceKlass net/minecraft/enchantment/EnchantmentHelper$ModifierDamage
+instanceKlass net/minecraft/enchantment/EnchantmentHelper$IModifier
+instanceKlass net/minecraft/enchantment/EnchantmentHelper
+instanceKlass net/minecraft/util/MovingObjectPosition
+instanceKlass net/minecraft/pathfinding/PathEntity
+instanceKlass net/minecraft/pathfinding/PathPoint
+instanceKlass net/minecraft/pathfinding/Path
+instanceKlass net/minecraft/pathfinding/PathFinder
+instanceKlass net/minecraft/world/ChunkCache
+instanceKlass net/minecraft/entity/ai/RandomPositionGenerator
+instanceKlass net/minecraftforge/fluids/IFluidBlock
+instanceKlass cpw/mods/fml/relauncher/ReflectionHelper
+instanceKlass net/minecraftforge/common/ForgeHooks
+instanceKlass net/minecraft/network/ServerStatusResponse$MinecraftProtocolVersionIdentifier
+instanceKlass net/minecraft/world/NextTickListEntry
+instanceKlass net/minecraft/util/Tuple
+instanceKlass net/minecraft/entity/ai/EntityAIAvoidEntity$1
+instanceKlass net/minecraft/entity/ai/EntityAINearestAttackableTarget$1
+instanceKlass net/minecraft/entity/ai/EntityAINearestAttackableTarget$Sorter
+instanceKlass net/minecraft/inventory/InventoryBasic
+instanceKlass net/minecraft/entity/passive/EntityHorse$1
+instanceKlass net/minecraft/tileentity/MobSpawnerBaseLogic
+instanceKlass net/minecraft/entity/EntityTrackerEntry
+instanceKlass cpw/mods/fml/common/registry/EntityRegistry
+instanceKlass net/minecraft/entity/ai/EntityAITasks$EntityAITaskEntry
+instanceKlass net/minecraft/inventory/InventoryCrafting
+instanceKlass net/minecraft/entity/ai/EntitySenses
+instanceKlass net/minecraft/pathfinding/PathNavigate
+instanceKlass net/minecraft/entity/EntityBodyHelper
+instanceKlass net/minecraft/entity/ai/EntityJumpHelper
+instanceKlass net/minecraft/entity/ai/EntityMoveHelper
+instanceKlass net/minecraft/entity/ai/EntityLookHelper
+instanceKlass net/minecraft/entity/ai/EntityAITasks
+instanceKlass java/lang/Math$RandomNumberGeneratorHolder
+instanceKlass org/apache/commons/lang3/ObjectUtils$Null
+instanceKlass org/apache/commons/lang3/ObjectUtils
+instanceKlass net/minecraft/entity/ai/attributes/ModifiableAttributeInstance
+instanceKlass net/minecraft/server/management/LowerStringMap
+instanceKlass net/minecraft/entity/ai/attributes/IAttributeInstance
+instanceKlass net/minecraft/util/CombatTracker
+instanceKlass net/minecraft/entity/DataWatcher$WatchableObject
+instanceKlass net/minecraft/entity/DataWatcher
+instanceKlass net/minecraft/util/AxisAlignedBB
+instanceKlass net/minecraft/inventory/Container
+instanceKlass net/minecraft/entity/ai/EntityAIBase
+instanceKlass net/minecraft/entity/ai/attributes/BaseAttributeMap
+instanceKlass net/minecraft/world/ChunkPosition
+instanceKlass net/minecraft/util/WeightedRandom
+instanceKlass net/minecraft/world/gen/layer/GenLayerEdge$SwitchMode
+instanceKlass net/minecraft/world/gen/structure/StructureBoundingBox
+instanceKlass net/minecraft/world/gen/structure/ComponentScatteredFeaturePieces
+instanceKlass net/minecraft/world/gen/structure/StructureComponent$BlockSelector
+instanceKlass net/minecraft/world/gen/structure/StructureStrongholdPieces$PieceWeight
+instanceKlass net/minecraft/world/gen/structure/StructureStrongholdPieces
+instanceKlass net/minecraft/world/gen/structure/StructureNetherBridgePieces$PieceWeight
+instanceKlass net/minecraft/world/gen/structure/StructureNetherBridgePieces
+instanceKlass net/minecraft/world/gen/structure/StructureVillagePieces
+instanceKlass net/minecraft/world/gen/structure/StructureComponent
+instanceKlass net/minecraft/world/gen/structure/StructureMineshaftPieces
+instanceKlass net/minecraft/world/gen/structure/MapGenStructureIO
+instanceKlass net/minecraft/world/chunk/NibbleArray
+instanceKlass net/minecraftforge/common/chunkio/QueuedChunk
+instanceKlass net/minecraftforge/common/chunkio/ChunkIOProvider
+instanceKlass net/minecraftforge/common/util/AsynchronousExecutor$Task
+instanceKlass net/minecraftforge/common/util/AsynchronousExecutor
+instanceKlass net/minecraftforge/common/util/AsynchronousExecutor$CallBackProvider
+instanceKlass net/minecraftforge/common/chunkio/ChunkIOExecutor
+instanceKlass net/minecraft/world/chunk/storage/RegionFile
+instanceKlass net/minecraft/world/gen/ChunkProviderHell
+instanceKlass net/minecraft/world/WorldManager
+instanceKlass net/minecraft/world/gen/ChunkProviderEnd
+instanceKlass net/minecraft/world/Teleporter
+instanceKlass net/minecraft/server/management/PlayerManager
+instanceKlass net/minecraft/entity/EntityTracker
+instanceKlass net/minecraft/world/SpawnerAnimals
+instanceKlass net/minecraft/village/VillageDoorInfo
+instanceKlass net/minecraft/util/ChunkCoordinates
+instanceKlass net/minecraft/village/Village
+instanceKlass net/minecraftforge/common/WorldSpecificSaveHandler
+instanceKlass net/minecraft/world/chunk/storage/ExtendedBlockStorage
+instanceKlass net/minecraftforge/event/terraingen/TerrainGen
+instanceKlass net/minecraft/world/ChunkCoordIntPair
+instanceKlass net/minecraft/world/gen/structure/StructureStart
+instanceKlass net/minecraft/world/gen/MapGenBase
+instanceKlass net/minecraft/world/gen/ChunkProviderGenerate
+instanceKlass net/minecraft/world/chunk/Chunk
+instanceKlass net/minecraft/world/gen/ChunkProviderServer
+instanceKlass net/minecraft/world/chunk/storage/AnvilChunkLoader
+instanceKlass net/minecraft/world/storage/IThreadedFileIO
+instanceKlass net/minecraftforge/common/BiomeManager
+instanceKlass net/minecraft/util/LongHashMap$Entry
+instanceKlass net/minecraft/util/LongHashMap
+instanceKlass net/minecraft/world/biome/BiomeCache
+instanceKlass java/util/IdentityHashMap$EntryIterator$Entry
+instanceKlass cpw/mods/fml/common/event/FMLModIdMappingEvent$1
+instanceKlass cpw/mods/fml/common/event/FMLModIdMappingEvent$ModRemapping
+instanceKlass com/google/common/collect/MapMakerInternalMap$StrongValueReference
+instanceKlass net/minecraft/world/storage/MapStorage
+instanceKlass net/minecraft/scoreboard/ScoreObjective
+instanceKlass net/minecraft/village/VillageSiege
+instanceKlass com/google/common/collect/AbstractMapBasedMultiset$1
+instanceKlass net/minecraftforge/common/DimensionManager
+instanceKlass net/minecraft/world/WorldProvider
+instanceKlass net/minecraft/scoreboard/Scoreboard
+instanceKlass java/math/BitSieve
+instanceKlass sun/security/jca/JCAUtil
+instanceKlass java/security/spec/RSAKeyGenParameterSpec
+instanceKlass net/minecraft/util/CryptManager
+instanceKlass cpw/mods/fml/common/StartupQuery
+instanceKlass net/minecraft/server/management/UserList$Serializer
+instanceKlass net/minecraft/server/management/UserList$1
+instanceKlass net/minecraft/server/management/UserList
+instanceKlass net/minecraft/server/management/UserListEntry
+instanceKlass com/mojang/authlib/yggdrasil/YggdrasilGameProfileRepository
+instanceKlass net/minecraft/command/CommandBase
+instanceKlass net/minecraft/command/CommandHandler
+instanceKlass net/minecraft/command/IAdminCommand
+instanceKlass io/netty/util/concurrent/MultithreadEventExecutorGroup$1
+instanceKlass sun/nio/ch/OptionKey
+instanceKlass sun/nio/ch/SocketOptionRegistry$LazyInitialization
+instanceKlass sun/nio/ch/SocketOptionRegistry$RegistryKey
+instanceKlass sun/nio/ch/SocketOptionRegistry
+instanceKlass jdk/net/SocketFlow
+instanceKlass sun/net/ExtendedOptionsImpl$$Lambda$17
+instanceKlass sun/net/ExtendedOptionsImpl
+instanceKlass sun/nio/ch/ExtendedSocketOption$1
+instanceKlass sun/nio/ch/ExtendedSocketOption
+instanceKlass sun/nio/ch/SocketChannelImpl$DefaultOptionsHolder
+instanceKlass java/net/StandardSocketOptions$StdSocketOption
+instanceKlass java/net/SocketOption
+instanceKlass java/net/StandardSocketOptions
+instanceKlass java/net/ServerSocket
+instanceKlass sun/nio/ch/Net$3
+instanceKlass sun/nio/ch/Net$4
+instanceKlass sun/nio/ch/Net$1
+instanceKlass java/net/ProtocolFamily
+instanceKlass sun/nio/ch/Net
+instanceKlass sun/nio/ch/SelChImpl
+instanceKlass java/nio/channels/NetworkChannel
+instanceKlass sun/nio/ch/PipeImpl$Initializer$LoopbackConnector
+instanceKlass sun/nio/ch/PipeImpl$Initializer
+instanceKlass java/nio/channels/Pipe
+instanceKlass sun/nio/ch/NativeObject
+instanceKlass sun/nio/ch/PollArrayWrapper
+instanceKlass sun/nio/ch/WindowsSelectorImpl$FinishLock
+instanceKlass sun/nio/ch/WindowsSelectorImpl$StartLock
+instanceKlass sun/nio/ch/WindowsSelectorImpl$SubSelector
+instanceKlass java/nio/channels/SelectionKey
+instanceKlass sun/nio/ch/Util$2
+instanceKlass io/netty/util/concurrent/SingleThreadEventExecutor$2
+instanceKlass io/netty/util/concurrent/SingleThreadEventExecutor$1
+instanceKlass java/nio/channels/Selector
+instanceKlass io/netty/util/concurrent/GlobalEventExecutor$TaskRunner
+instanceKlass io/netty/util/concurrent/DefaultThreadFactory
+instanceKlass java/util/concurrent/Executors$RunnableAdapter
+instanceKlass io/netty/util/concurrent/GlobalEventExecutor$PurgeTask
+instanceKlass io/netty/util/concurrent/ScheduledFuture
+instanceKlass sun/nio/ch/DefaultSelectorProvider
+instanceKlass java/nio/channels/spi/SelectorProvider$1
+instanceKlass java/nio/channels/spi/SelectorProvider
+instanceKlass com/google/common/util/concurrent/ThreadFactoryBuilder$1
+instanceKlass com/google/common/util/concurrent/ThreadFactoryBuilder
+instanceKlass io/netty/util/concurrent/FutureListener
+instanceKlass io/netty/util/concurrent/GenericFutureListener
+instanceKlass io/netty/util/concurrent/AbstractEventExecutorGroup
+instanceKlass net/minecraft/network/NetworkSystem
+instanceKlass com/google/common/collect/Lists$ReverseList$1
+instanceKlass net/minecraft/server/management/PlayerProfileCache$Serializer
+instanceKlass net/minecraft/server/management/PlayerProfileCache$ProfileEntry
+instanceKlass net/minecraft/server/management/PlayerProfileCache$1
+instanceKlass com/mojang/authlib/ProfileLookupCallback
+instanceKlass net/minecraft/server/management/PlayerProfileCache
+instanceKlass net/minecraft/network/ServerStatusResponse
+instanceKlass net/minecraft/server/management/ServerConfigurationManager
+instanceKlass net/minecraft/world/WorldSettings
+instanceKlass net/minecraft/world/chunk/storage/IChunkLoader
+instanceKlass net/minecraft/world/chunk/storage/RegionFileCache
+instanceKlass net/minecraft/client/gui/GuiSlot
+instanceKlass net/minecraft/world/storage/SaveFormatComparator
+instanceKlass net/minecraft/world/GameRules$Value
+instanceKlass net/minecraft/world/GameRules
+instanceKlass net/minecraft/world/gen/layer/GenLayer
+instanceKlass net/minecraft/world/chunk/IChunkProvider
+instanceKlass net/minecraft/world/WorldType
+instanceKlass net/minecraft/nbt/NBTSizeTracker
+instanceKlass net/minecraft/nbt/CompressedStreamTools
+instanceKlass javax/sound/sampled/AudioFormat$Encoding
+instanceKlass com/jcraft/jorbis/Residue0$LookResidue0
+instanceKlass com/jcraft/jorbis/Floor1$LookFloor1
+instanceKlass com/jcraft/jorbis/Mapping0$LookMapping0
+instanceKlass com/jcraft/jorbis/CodeBook$DecodeAux
+instanceKlass com/jcraft/jorbis/CodeBook
+instanceKlass com/jcraft/jorbis/Mdct
+instanceKlass com/jcraft/jorbis/InfoMode
+instanceKlass com/jcraft/jorbis/Mapping0$InfoMapping0
+instanceKlass com/jcraft/jorbis/FuncMapping
+instanceKlass com/jcraft/jorbis/Util
+instanceKlass com/jcraft/jorbis/Residue0$InfoResidue0
+instanceKlass com/jcraft/jorbis/FuncResidue
+instanceKlass com/jcraft/jorbis/Floor1$InfoFloor1
+instanceKlass com/jcraft/jorbis/FuncFloor
+instanceKlass com/jcraft/jorbis/FuncTime
+instanceKlass com/jcraft/jorbis/StaticCodeBook
+instanceKlass net/minecraft/client/audio/ITickableSound
+instanceKlass com/jcraft/jorbis/PsyInfo
+instanceKlass com/jcraft/jorbis/Info
+instanceKlass com/jcraft/jorbis/Comment
+instanceKlass com/jcraft/jogg/Buffer
+instanceKlass com/jcraft/jorbis/Block
+instanceKlass com/jcraft/jorbis/DspState
+instanceKlass com/jcraft/jogg/SyncState
+instanceKlass com/jcraft/jogg/StreamState
+instanceKlass com/jcraft/jogg/Page
+instanceKlass com/jcraft/jogg/Packet
+instanceKlass net/minecraft/client/audio/PositionedSound
+instanceKlass sun/net/www/protocol/http/HttpURLConnection$8
+instanceKlass net/minecraft/util/HttpUtil
+instanceKlass net/minecraft/client/renderer/WorldRenderer
+instanceKlass net/minecraftforge/client/ForgeHooksClient$1
+instanceKlass org/lwjgl/opengl/GL14
+instanceKlass org/lwjgl/util/glu/Util
+instanceKlass net/minecraft/client/LoadingScreenRenderer
+instanceKlass net/minecraft/client/gui/ScaledResolution
+instanceKlass java/awt/datatransfer/Transferable
+instanceKlass net/minecraft/client/gui/GuiStreamIndicator
+instanceKlass net/minecraft/scoreboard/Team
+instanceKlass net/minecraftforge/client/gui/ForgeGuiFactory
+instanceKlass cpw/mods/fml/client/IModGuiFactory$RuntimeOptionCategoryElement
+instanceKlass cpw/mods/fml/client/IModGuiFactory$RuntimeOptionGuiHandler
+instanceKlass cpw/mods/fml/client/FMLConfigGuiFactory
+instanceKlass cpw/mods/fml/client/IModGuiFactory
+instanceKlass net/minecraftforge/oredict/RecipeSorter$SortEntry
+instanceKlass net/minecraftforge/oredict/RecipeSorter
+instanceKlass net/minecraftforge/common/BiomeDictionary$BiomeInfo
+instanceKlass net/minecraft/world/gen/NoiseGeneratorSimplex
+instanceKlass net/minecraft/world/gen/NoiseGenerator
+instanceKlass net/minecraft/util/WeightedRandom$Item
+instanceKlass net/minecraft/world/biome/BiomeGenBase$Height
+instanceKlass net/minecraft/world/biome/BiomeDecorator
+instanceKlass net/minecraft/world/biome/BiomeGenBase
+instanceKlass net/minecraftforge/common/BiomeDictionary
+instanceKlass cpw/mods/fml/common/event/FMLInterModComms$IMCMessage
+instanceKlass cpw/mods/fml/common/event/FMLInterModComms
+instanceKlass cpw/mods/fml/common/eventhandler/ASMEventHandler_8_CCCEventHandler_posGuiRender_Post
+instanceKlass cpw/mods/fml/common/eventhandler/ASMEventHandler_7_CCCEventHandler_renderTick_RenderTickEvent
+instanceKlass cpw/mods/fml/common/eventhandler/ASMEventHandler_6_CCCEventHandler_clientTick_ClientTickEvent
+instanceKlass codechicken/core/internal/CCCEventHandler
+instanceKlass codechicken/core/CCUpdateChecker$1
+instanceKlass codechicken/core/CCUpdateChecker
+instanceKlass net/minecraft/client/particle/EffectRenderer
+instanceKlass net/minecraft/client/renderer/texture/Stitcher$Slot
+instanceKlass net/minecraft/client/resources/data/AnimationFrame
+instanceKlass net/minecraft/client/renderer/texture/Stitcher$Holder
+instanceKlass net/minecraft/client/renderer/texture/Stitcher
+instanceKlass net/minecraft/client/renderer/IconFlipped
+instanceKlass net/minecraft/client/renderer/texture/TextureAtlasSprite
+instanceKlass net/minecraft/client/renderer/texture/IIconRegister
+instanceKlass java/lang/StrictMath
+instanceKlass net/minecraft/client/renderer/Tessellator
+instanceKlass org/lwjgl/opengl/ARBOcclusionQuery
+instanceKlass net/minecraft/client/renderer/OpenGlCapsChecker
+instanceKlass net/minecraft/client/renderer/RenderList
+instanceKlass net/minecraft/client/renderer/RenderGlobal
+instanceKlass net/minecraft/util/MouseHelper
+instanceKlass net/minecraft/client/Minecraft$2
+instanceKlass net/minecraft/client/gui/MapItemRenderer
+instanceKlass net/minecraft/util/MouseFilter
+instanceKlass net/minecraft/client/renderer/culling/ICamera
+instanceKlass net/minecraft/client/renderer/EntityRenderer
+instanceKlass net/minecraft/client/renderer/ItemRenderer
+instanceKlass net/minecraft/client/model/TextureOffset
+instanceKlass net/minecraft/util/Vec3
+instanceKlass net/minecraft/client/model/TexturedQuad
+instanceKlass net/minecraft/client/model/PositionTextureVertex
+instanceKlass net/minecraft/client/model/ModelBox
+instanceKlass net/minecraft/client/model/ModelRenderer
+instanceKlass net/minecraft/client/model/ModelBase
+instanceKlass net/minecraft/client/renderer/entity/RenderManager
+instanceKlass net/minecraft/world/ColorizerFoliage
+instanceKlass net/minecraft/client/resources/FoliageColorReloadListener
+instanceKlass net/minecraft/world/ColorizerGrass
+instanceKlass net/minecraft/client/resources/GrassColorReloadListener
+instanceKlass net/minecraft/client/audio/MusicTicker
+instanceKlass net/minecraft/client/audio/SoundHandler$2
+instanceKlass com/google/gson/internal/bind/ObjectTypeAdapter$2
+instanceKlass com/google/common/io/ByteArrayDataOutput
+instanceKlass com/google/common/io/ByteArrayDataInput
+instanceKlass com/google/common/io/ByteStreams
+instanceKlass org/lwjgl/openal/EFX10
+instanceKlass org/lwjgl/openal/AL11
+instanceKlass org/lwjgl/openal/ALC11
+instanceKlass org/lwjgl/openal/Util
+instanceKlass org/lwjgl/openal/ALCcontext
+instanceKlass org/lwjgl/openal/ALCdevice
+instanceKlass org/lwjgl/openal/ALC10
+instanceKlass org/lwjgl/openal/AL10
+instanceKlass org/lwjgl/LWJGLUtil$3
+instanceKlass org/lwjgl/openal/AL
+instanceKlass paulscode/sound/Vector3D
+instanceKlass paulscode/sound/ListenerData
+instanceKlass javax/sound/sampled/AudioFormat
+instanceKlass paulscode/sound/SoundBuffer
+instanceKlass paulscode/sound/FilenameURL
+instanceKlass paulscode/sound/Channel
+instanceKlass paulscode/sound/Source
+instanceKlass paulscode/sound/CommandObject
+instanceKlass net/minecraft/client/audio/SoundEventAccessor
+instanceKlass net/minecraft/client/audio/SoundHandler$SwitchType
+instanceKlass net/minecraft/client/audio/SoundEventAccessorComposite
+instanceKlass net/minecraft/client/audio/ISoundEventAccessor
+instanceKlass net/minecraft/client/audio/SoundList$SoundEntry
+instanceKlass paulscode/sound/SoundSystemLogger
+instanceKlass paulscode/sound/SoundSystem
+instanceKlass net/minecraft/client/audio/SoundManager$1
+instanceKlass paulscode/sound/SoundSystemConfig$Codec
+instanceKlass paulscode/sound/codecs/CodecJOrbis
+instanceKlass paulscode/sound/ICodec
+instanceKlass paulscode/sound/SoundSystemConfig
+instanceKlass paulscode/sound/Library
+instanceKlass net/minecraft/client/audio/ISound
+instanceKlass net/minecraft/client/audio/SoundManager
+instanceKlass sun/net/www/http/HttpCapture$1
+instanceKlass sun/net/www/http/HttpCapture
+instanceKlass sun/net/www/protocol/http/HttpURLConnection$7
+instanceKlass sun/net/www/protocol/http/HttpURLConnection$6
+instanceKlass sun/net/www/protocol/http/HttpURLConnection$9
+instanceKlass java/net/HostPortrange
+instanceKlass java/net/URLPermission$Authority
+instanceKlass java/util/StringJoiner
+instanceKlass net/minecraft/client/audio/SoundPoolEntry
+instanceKlass net/minecraft/client/audio/SoundHandler$1
+instanceKlass net/minecraft/client/audio/SoundListSerializer
+instanceKlass net/minecraft/client/audio/SoundList
+instanceKlass net/minecraft/client/audio/SoundHandler
+instanceKlass net/minecraft/server/gui/IUpdatePlayerListBox
+instanceKlass net/minecraft/client/renderer/IImageBuffer
+instanceKlass net/minecraft/client/resources/SkinManager
+instanceKlass net/minecraft/client/renderer/texture/ITickableTextureObject
+instanceKlass net/minecraft/client/renderer/texture/TextureManager
+instanceKlass net/minecraft/client/renderer/texture/ITickable
+instanceKlass miscutil/block/ModBlocks
+instanceKlass cpw/mods/fml/common/registry/GameRegistry
+instanceKlass miscutil/item/ModItems
+instanceKlass codechicken/core/featurehack/LiquidTextures
+instanceKlass sun/net/www/protocol/http/HttpURLConnection$5
+instanceKlass cpw/mods/fml/common/eventhandler/ASMEventHandler_5_ForgeModContainer_playerLogin_PlayerLoggedInEvent
+instanceKlass cpw/mods/fml/common/eventhandler/ASMEventHandler_4_ForgeModContainer_onConfigChanged_OnConfigChangedEvent
+instanceKlass net/minecraftforge/common/ForgeChunkManager
+instanceKlass cpw/mods/fml/common/eventhandler/ASMEventHandler_3_ForgeInternalHandler_onDimensionSave_Save
+instanceKlass cpw/mods/fml/common/eventhandler/ASMEventHandler_2_ForgeInternalHandler_onDimensionLoad_Load
+instanceKlass cpw/mods/fml/common/eventhandler/ASMEventHandler_1_ForgeInternalHandler_onDimensionUnload_Unload
+instanceKlass cpw/mods/fml/common/eventhandler/ASMEventHandler_0_ForgeInternalHandler_onEntityJoinWorld_EntityJoinWorldEvent
+instanceKlass cpw/mods/fml/common/eventhandler/ASMEventHandler
+instanceKlass cpw/mods/fml/common/registry/GameRegistry$ItemStackHolder
+instanceKlass cpw/mods/fml/common/registry/ObjectHolderRef
+instanceKlass cpw/mods/fml/common/registry/GameRegistry$ObjectHolder
+instanceKlass net/minecraft/client/resources/Language
+instanceKlass net/minecraft/client/resources/SimpleResource
+instanceKlass org/apache/commons/io/filefilter/AbstractFileFilter
+instanceKlass org/apache/commons/io/filefilter/IOFileFilter
+instanceKlass net/minecraft/client/resources/IResource
+instanceKlass net/minecraft/client/resources/FallbackResourceManager
+instanceKlass net/minecraft/client/resources/SimpleReloadableResourceManager$1
+instanceKlass cpw/mods/fml/common/Loader$1
+instanceKlass cpw/mods/fml/common/FMLModContainer$2
+instanceKlass cpw/mods/fml/common/Mod$Metadata
+instanceKlass cpw/mods/fml/common/FMLModContainer$1
+instanceKlass cpw/mods/fml/common/Mod$Instance
+instanceKlass miscutil/CommonProxy
+instanceKlass cpw/mods/fml/common/SidedProxy
+instanceKlass cpw/mods/fml/common/ProxyInjector
+instanceKlass cpw/mods/fml/common/Mod$EventHandler
+instanceKlass miscutil/MiscUtils
+instanceKlass net/minecraftforge/common/network/ForgeMessage
+instanceKlass net/minecraftforge/common/network/ForgeNetworkHandler
+instanceKlass java/util/RegularEnumSet$EnumSetIterator
+instanceKlass io/netty/channel/ChannelHandler$Sharable
+instanceKlass io/netty/channel/ServerChannel
+instanceKlass io/netty/channel/DefaultMessageSizeEstimator$HandleImpl
+instanceKlass io/netty/channel/MessageSizeEstimator$Handle
+instanceKlass io/netty/channel/DefaultMessageSizeEstimator
+instanceKlass io/netty/channel/MessageSizeEstimator
+instanceKlass io/netty/channel/RecvByteBufAllocator$Handle
+instanceKlass io/netty/channel/AdaptiveRecvByteBufAllocator
+instanceKlass io/netty/buffer/ByteBuf
+instanceKlass io/netty/util/ReferenceCounted
+instanceKlass io/netty/buffer/AbstractByteBufAllocator
+instanceKlass io/netty/channel/RecvByteBufAllocator
+instanceKlass io/netty/buffer/ByteBufAllocator
+instanceKlass io/netty/channel/DefaultChannelConfig
+instanceKlass java/util/concurrent/ScheduledFuture
+instanceKlass io/netty/channel/EventLoop
+instanceKlass io/netty/channel/EventLoopGroup
+instanceKlass io/netty/channel/DefaultChannelPipeline$HeadHandler
+instanceKlass io/netty/util/internal/StringUtil
+instanceKlass io/netty/channel/DefaultChannelPipeline$TailHandler
+instanceKlass io/netty/channel/ChannelHandlerContext
+instanceKlass io/netty/channel/DefaultChannelPipeline
+instanceKlass io/netty/util/Recycler$Stack
+instanceKlass java/util/concurrent/atomic/AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl$1
+instanceKlass java/util/concurrent/atomic/AtomicIntegerFieldUpdater
+instanceKlass io/netty/channel/ChannelOutboundBuffer$Entry
+instanceKlass java/util/concurrent/atomic/AtomicLongFieldUpdater$CASUpdater$1
+instanceKlass java/util/concurrent/atomic/AtomicLongFieldUpdater
+instanceKlass io/netty/util/Recycler$Handle
+instanceKlass io/netty/util/Recycler
+instanceKlass io/netty/channel/ChannelOutboundBuffer
+instanceKlass io/netty/channel/ChannelFlushPromiseNotifier$FlushCheckpoint
+instanceKlass io/netty/util/concurrent/EventExecutor
+instanceKlass io/netty/util/concurrent/EventExecutorGroup
+instanceKlass io/netty/util/concurrent/AbstractFuture
+instanceKlass io/netty/channel/ChannelMetadata
+instanceKlass io/netty/util/internal/EmptyArrays
+instanceKlass io/netty/channel/AbstractChannel$AbstractUnsafe
+instanceKlass io/netty/channel/ChannelConfig
+instanceKlass io/netty/channel/ChannelPipeline
+instanceKlass io/netty/channel/ChannelInboundInvoker
+instanceKlass io/netty/channel/ChannelProgressivePromise
+instanceKlass io/netty/channel/ChannelProgressiveFuture
+instanceKlass io/netty/util/concurrent/ProgressivePromise
+instanceKlass io/netty/util/concurrent/ProgressiveFuture
+instanceKlass io/netty/channel/ChannelPromise
+instanceKlass io/netty/util/concurrent/Promise
+instanceKlass io/netty/channel/Channel$Unsafe
+instanceKlass io/netty/channel/ChannelFuture
+instanceKlass io/netty/util/concurrent/Future
+instanceKlass io/netty/util/Attribute
+instanceKlass io/netty/channel/Channel
+instanceKlass io/netty/channel/ChannelPropertyAccess
+instanceKlass io/netty/channel/ChannelOutboundInvoker
+instanceKlass io/netty/util/DefaultAttributeMap
+instanceKlass io/netty/util/AttributeMap
+instanceKlass gnu/trove/map/hash/TObjectByteHashMap$1
+instanceKlass gnu/trove/procedure/TObjectByteProcedure
+instanceKlass gnu/trove/iterator/TObjectByteIterator
+instanceKlass gnu/trove/map/TObjectByteMap
+instanceKlass gnu/trove/map/hash/TByteObjectHashMap$1
+instanceKlass gnu/trove/impl/Constants
+instanceKlass gnu/trove/impl/PrimeFinder
+instanceKlass gnu/trove/impl/HashFunctions
+instanceKlass gnu/trove/procedure/TByteObjectProcedure
+instanceKlass gnu/trove/iterator/TByteObjectIterator
+instanceKlass gnu/trove/iterator/TAdvancingIterator
+instanceKlass gnu/trove/iterator/TIterator
+instanceKlass gnu/trove/set/TByteSet
+instanceKlass gnu/trove/TByteCollection
+instanceKlass gnu/trove/map/TByteObjectMap
+instanceKlass gnu/trove/impl/hash/THash
+instanceKlass java/io/Externalizable
+instanceKlass cpw/mods/fml/common/network/internal/FMLMessage
+instanceKlass io/netty/util/internal/TypeParameterMatcher
+instanceKlass io/netty/channel/ChannelOutboundHandler
+instanceKlass io/netty/channel/ChannelInboundHandler
+instanceKlass io/netty/channel/ChannelHandlerAdapter
+instanceKlass io/netty/channel/ChannelHandler
+instanceKlass cpw/mods/fml/common/network/internal/FMLNetworkHandler
+instanceKlass com/google/common/collect/FilteredEntryMultimap$ValuePredicate
+instanceKlass com/google/common/collect/FilteredSetMultimap
+instanceKlass com/google/common/collect/FilteredMultimap
+instanceKlass com/google/common/base/Predicates$CompositionPredicate
+instanceKlass cpw/mods/fml/common/discovery/ASMDataTable$ModContainerPredicate
+instanceKlass cpw/mods/fml/common/network/internal/NetworkModHolder$NetworkChecker
+instanceKlass cpw/mods/fml/common/network/internal/NetworkModHolder
+instanceKlass io/netty/util/internal/JavassistTypeParameterMatcherGenerator
+instanceKlass sun/misc/VMNotification
+instanceKlass io/netty/util/internal/PlatformDependent0
+instanceKlass java/time/Clock
+instanceKlass io/netty/util/internal/SystemPropertyUtil
+instanceKlass io/netty/util/internal/logging/AbstractInternalLogger
+instanceKlass io/netty/util/internal/logging/InternalLogger
+instanceKlass io/netty/util/internal/logging/InternalLoggerFactory
+instanceKlass io/netty/util/internal/PlatformDependent
+instanceKlass io/netty/util/UniqueName
+instanceKlass com/google/common/eventbus/DeadEvent
+instanceKlass cpw/mods/fml/common/toposort/TopologicalSort
+instanceKlass cpw/mods/fml/common/toposort/TopologicalSort$DirectedGraph$1
+instanceKlass cpw/mods/fml/common/toposort/TopologicalSort$DirectedGraph
+instanceKlass cpw/mods/fml/common/toposort/ModSorter
+instanceKlass com/google/common/collect/Multimaps
+instanceKlass com/google/common/base/Predicates$NotPredicate
+instanceKlass com/google/common/base/Predicates$InPredicate
+instanceKlass cpw/mods/fml/common/functions/ArtifactVersionNameFunction
+instanceKlass cpw/mods/fml/common/eventhandler/SubscribeEvent
+instanceKlass cpw/mods/fml/common/FMLContainerHolder
+instanceKlass cpw/mods/fml/common/network/NetworkCheckHandler
+instanceKlass net/minecraft/world/storage/WorldInfo
+instanceKlass net/minecraft/world/storage/SaveHandler
+instanceKlass net/minecraft/world/storage/IPlayerFileData
+instanceKlass com/google/common/eventbus/EventBus$EventWithSubscriber
+instanceKlass com/google/common/collect/Maps$11
+instanceKlass com/google/common/collect/Maps$7
+instanceKlass cpw/mods/fml/common/Loader$2
+instanceKlass com/google/common/base/Splitter$MapSplitter
+instanceKlass cpw/mods/fml/common/asm/transformers/ModAPITransformer
+instanceKlass cpw/mods/fml/common/ModAPIManager
+instanceKlass cpw/mods/fml/common/functions/ModIdFunction
+instanceKlass com/google/common/collect/Multisets$AbstractEntry
+instanceKlass com/google/common/collect/AbstractMapBasedMultimap$AsMap$AsMapIterator
+instanceKlass com/google/common/collect/SortedMultiset
+instanceKlass com/google/common/collect/SortedIterable
+instanceKlass com/google/common/collect/SortedMultisetBridge
+instanceKlass com/google/common/collect/Multiset$Entry
+instanceKlass com/google/common/collect/Multisets
+instanceKlass com/google/common/collect/SortedSetMultimap
+instanceKlass com/google/common/collect/Ordering$ArbitraryOrdering$1
+instanceKlass com/google/common/collect/Ordering$ArbitraryOrderingHolder
+instanceKlass cpw/mods/fml/common/Loader$ModIdComparator
+instanceKlass java/nio/file/attribute/FileTime
+instanceKlass java/util/WeakHashMap$HashIterator
+instanceKlass cpw/mods/fml/common/ILanguageAdapter$JavaAdapter
+instanceKlass cpw/mods/fml/common/discovery/ASMDataTable$ASMData
+instanceKlass cpw/mods/fml/common/discovery/asm/ModAnnotation$EnumHolder
+instanceKlass cpw/mods/fml/common/discovery/asm/ModAnnotation
+instanceKlass cpw/mods/fml/common/ILanguageAdapter
+instanceKlass cpw/mods/fml/common/FMLModContainer
+instanceKlass cpw/mods/fml/common/Mod
+instanceKlass cpw/mods/fml/common/ModContainerFactory
+instanceKlass cpw/mods/fml/common/discovery/asm/ASMModParser
+instanceKlass cpw/mods/fml/common/discovery/DirectoryDiscoverer$ClassFilter
+instanceKlass cpw/mods/fml/common/discovery/DirectoryDiscoverer
+instanceKlass cpw/mods/fml/common/discovery/JarDiscoverer
+instanceKlass cpw/mods/fml/common/discovery/ITypeDiscoverer
+instanceKlass cpw/mods/fml/common/discovery/ModCandidate
+instanceKlass cpw/mods/fml/common/discovery/ASMDataTable
+instanceKlass cpw/mods/fml/common/discovery/ModDiscoverer
+instanceKlass net/minecraftforge/common/config/Property
+instanceKlass net/minecraftforge/common/config/ConfigCategory
+instanceKlass net/minecraftforge/common/config/Configuration
+instanceKlass net/minecraft/command/ICommand
+instanceKlass cpw/mods/fml/common/WorldAccessContainer
+instanceKlass org/lwjgl/opengl/Sync$1
+instanceKlass cpw/mods/fml/common/InjectedModContainer
+instanceKlass org/lwjgl/opengl/Sync$RunningAvg
+instanceKlass org/lwjgl/opengl/Sync
+instanceKlass com/google/common/eventbus/AllowConcurrentEvents
+instanceKlass com/google/common/util/concurrent/Uninterruptibles
+instanceKlass com/google/common/eventbus/AnnotatedSubscriberFinder$MethodIdentifier
+instanceKlass com/google/common/eventbus/Subscribe
+instanceKlass cpw/mods/fml/common/event/FMLLoadEvent
+instanceKlass net/minecraft/client/gui/FontRenderer
+instanceKlass com/google/common/reflect/TypeVisitor
+instanceKlass com/google/common/collect/Ordering
+instanceKlass com/google/common/reflect/TypeToken$TypeCollector
+instanceKlass com/google/common/base/Platform
+instanceKlass com/google/common/base/Stopwatch
+instanceKlass com/google/common/util/concurrent/ExecutionList
+instanceKlass com/google/common/util/concurrent/AbstractFuture
+instanceKlass com/google/common/cache/LocalCache$LoadingValueReference
+instanceKlass com/google/common/eventbus/EventSubscriber
+instanceKlass com/google/common/eventbus/AnnotatedSubscriberFinder
+instanceKlass com/google/common/eventbus/EventBus$LoggingSubscriberExceptionHandler
+instanceKlass com/google/common/eventbus/SubscriberExceptionHandler
+instanceKlass com/google/common/eventbus/SubscriberFindingStrategy
+instanceKlass com/google/common/eventbus/EventBus
+instanceKlass cpw/mods/fml/common/LoadController
+instanceKlass net/minecraft/util/StringUtils
+instanceKlass com/google/gson/internal/ConstructorConstructor$10
+instanceKlass com/google/common/reflect/TypeCapture
+instanceKlass net/minecraftforge/common/UsernameCache
+instanceKlass net/minecraft/client/renderer/texture/TextureMap$3
+instanceKlass net/minecraft/client/renderer/texture/TextureMap$2
+instanceKlass net/minecraft/client/renderer/texture/TextureMap$1
+instanceKlass net/minecraft/client/renderer/texture/TextureManager$1
+instanceKlass net/minecraft/client/renderer/texture/TextureAtlasSprite$1
+instanceKlass net/minecraft/client/renderer/entity/RenderItem$4
+instanceKlass net/minecraft/client/renderer/entity/RenderItem$3
+instanceKlass net/minecraft/client/renderer/entity/RenderItem$2
+instanceKlass net/minecraft/client/renderer/entity/RenderItem$1
+instanceKlass net/minecraft/client/renderer/RenderGlobal$1
+instanceKlass net/minecraft/server/integrated/IntegratedServer$2
+instanceKlass net/minecraft/server/integrated/IntegratedServer$1
+instanceKlass net/minecraft/client/renderer/EntityRenderer$3
+instanceKlass net/minecraft/client/renderer/EntityRenderer$2
+instanceKlass net/minecraft/client/renderer/EntityRenderer$1
+instanceKlass net/minecraft/client/multiplayer/WorldClient$4
+instanceKlass net/minecraft/client/multiplayer/WorldClient$3
+instanceKlass net/minecraft/client/multiplayer/WorldClient$2
+instanceKlass net/minecraft/client/multiplayer/WorldClient$1
+instanceKlass net/minecraft/client/Minecraft$15
+instanceKlass net/minecraft/client/Minecraft$14
+instanceKlass net/minecraft/client/Minecraft$13
+instanceKlass net/minecraft/client/Minecraft$12
+instanceKlass net/minecraft/client/Minecraft$11
+instanceKlass net/minecraft/client/Minecraft$10
+instanceKlass net/minecraft/client/Minecraft$9
+instanceKlass net/minecraft/client/Minecraft$8
+instanceKlass net/minecraft/client/Minecraft$7
+instanceKlass net/minecraft/client/Minecraft$6
+instanceKlass net/minecraft/client/Minecraft$5
+instanceKlass net/minecraft/client/Minecraft$4
+instanceKlass net/minecraft/client/Minecraft$3
+instanceKlass net/minecraft/world/storage/WorldInfo$9
+instanceKlass net/minecraft/world/storage/WorldInfo$8
+instanceKlass net/minecraft/world/storage/WorldInfo$7
+instanceKlass net/minecraft/world/storage/WorldInfo$6
+instanceKlass net/minecraft/world/storage/WorldInfo$5
+instanceKlass net/minecraft/world/storage/WorldInfo$4
+instanceKlass net/minecraft/world/storage/WorldInfo$3
+instanceKlass net/minecraft/world/storage/WorldInfo$2
+instanceKlass net/minecraft/world/storage/WorldInfo$1
+instanceKlass net/minecraft/tileentity/TileEntity$3
+instanceKlass net/minecraft/tileentity/TileEntity$2
+instanceKlass net/minecraft/tileentity/TileEntity$1
+instanceKlass net/minecraft/network/NetworkSystem$3
+instanceKlass net/minecraft/network/NetHandlerPlayServer$2
+instanceKlass net/minecraft/nbt/NBTTagCompound$2
+instanceKlass net/minecraft/nbt/NBTTagCompound$1
+instanceKlass net/minecraft/server/MinecraftServer$5
+instanceKlass net/minecraft/server/MinecraftServer$4
+instanceKlass net/minecraft/server/MinecraftServer$3
+instanceKlass net/minecraft/world/gen/structure/MapGenStructure$3
+instanceKlass net/minecraft/world/gen/structure/MapGenStructure$2
+instanceKlass net/minecraft/world/gen/structure/MapGenStructure$1
+instanceKlass net/minecraft/entity/player/InventoryPlayer$1
+instanceKlass net/minecraft/world/gen/layer/GenLayer$2
+instanceKlass net/minecraft/world/gen/layer/GenLayer$1
+instanceKlass net/minecraft/entity/EntityTracker$1
+instanceKlass net/minecraft/entity/Entity$2
+instanceKlass net/minecraft/entity/Entity$1
+instanceKlass net/minecraft/crash/CrashReportCategory$3
+instanceKlass net/minecraft/crash/CrashReportCategory$2
+instanceKlass net/minecraft/crash/CrashReportCategory$1
+instanceKlass net/minecraft/world/chunk/Chunk$1
+instanceKlass net/minecraft/world/World$4
+instanceKlass net/minecraft/world/World$3
+instanceKlass net/minecraft/world/World$2
+instanceKlass net/minecraft/world/World$1
+instanceKlass net/minecraftforge/oredict/ShapelessOreRecipe
+instanceKlass net/minecraftforge/oredict/ShapedOreRecipe
+instanceKlass cpw/mods/fml/client/SplashProgress$Texture
+instanceKlass net/minecraftforge/oredict/OreDictionary
+instanceKlass net/minecraftforge/common/ForgeVersion
+instanceKlass cpw/mods/fml/common/FMLLog
+instanceKlass cpw/mods/fml/client/SplashProgress$4
+instanceKlass cpw/mods/fml/client/SplashProgress$3
+instanceKlass net/minecraft/world/gen/layer/IntCache
+instanceKlass net/minecraft/crash/CrashReport$8
+instanceKlass net/minecraft/crash/CrashReport$7
+instanceKlass net/minecraft/crash/CrashReport$6
+instanceKlass net/minecraft/crash/CrashReport$5
+instanceKlass net/minecraft/crash/CrashReport$4
+instanceKlass net/minecraft/crash/CrashReport$3
+instanceKlass net/minecraft/crash/CrashReport$2
+instanceKlass net/minecraft/crash/CrashReportCategory$Entry
+instanceKlass net/minecraft/crash/CrashReport$1
+instanceKlass net/minecraft/crash/CrashReportCategory
+instanceKlass net/minecraft/crash/CrashReport
+instanceKlass cpw/mods/fml/client/SplashProgress$1
+instanceKlass sun/util/locale/provider/TimeZoneNameUtility$TimeZoneNameGetter
+instanceKlass sun/util/locale/provider/TimeZoneNameUtility
+instanceKlass net/minecraft/client/resources/AbstractResourcePack
+instanceKlass java/util/concurrent/CountDownLatch
+instanceKlass cpw/mods/fml/common/IFMLHandledException
+instanceKlass cpw/mods/fml/client/FMLClientHandler
+instanceKlass cpw/mods/fml/common/IFMLSidedHandler
+instanceKlass cpw/mods/fml/common/registry/LanguageRegistry
+instanceKlass cpw/mods/fml/common/ClassNameUtils
+instanceKlass cpw/mods/fml/common/Loader$3
+instanceKlass cpw/mods/fml/common/FMLCommonHandler
+instanceKlass cpw/mods/fml/common/ProgressManager$ProgressBar
+instanceKlass cpw/mods/fml/common/ProgressManager
+instanceKlass net/minecraft/client/resources/I18n
+instanceKlass net/minecraft/client/resources/Locale
+instanceKlass net/minecraft/client/resources/LanguageManager
+instanceKlass net/minecraft/client/resources/SimpleReloadableResourceManager
+instanceKlass net/minecraft/client/resources/ResourcePackRepository$1
+instanceKlass net/minecraft/util/HttpUtil$DownloadListener
+instanceKlass net/minecraft/client/resources/ResourcePackRepository
+instanceKlass net/minecraft/world/biome/WorldChunkManager
+instanceKlass net/minecraft/world/storage/ISaveHandler
+instanceKlass net/minecraft/world/storage/SaveFormatOld
+instanceKlass net/minecraft/client/resources/data/LanguageMetadataSection
+instanceKlass net/minecraft/client/resources/data/PackMetadataSection
+instanceKlass net/minecraft/client/resources/data/AnimationMetadataSection
+instanceKlass net/minecraft/client/resources/data/FontMetadataSection
+instanceKlass net/minecraft/client/resources/data/IMetadataSerializer$Registration
+instanceKlass net/minecraft/client/resources/data/TextureMetadataSection
+instanceKlass net/minecraft/client/resources/data/IMetadataSection
+instanceKlass net/minecraft/client/resources/data/BaseMetadataSectionSerializer
+instanceKlass net/minecraft/client/renderer/RenderBlocks
+instanceKlass net/minecraft/client/renderer/entity/Render
+instanceKlass net/minecraftforge/client/MinecraftForgeClient
+instanceKlass org/lwjgl/opengl/GLChecks
+instanceKlass cpw/mods/fml/client/SplashProgress
+instanceKlass net/minecraft/client/renderer/texture/AbstractTexture
+instanceKlass net/minecraft/client/renderer/texture/ITextureObject
+instanceKlass net/minecraft/client/renderer/GLAllocation
+instanceKlass net/minecraft/client/renderer/texture/TextureUtil
+instanceKlass net/minecraft/client/shader/Framebuffer
+instanceKlass tv/twitch/chat/Chat
+instanceKlass tv/twitch/chat/ChatAPI
+instanceKlass net/minecraft/client/stream/ChatController
+instanceKlass tv/twitch/chat/IChatCallbacks
+instanceKlass tv/twitch/broadcast/Stream
+instanceKlass tv/twitch/Core
+instanceKlass tv/twitch/broadcast/ArchivingState
+instanceKlass tv/twitch/broadcast/StreamInfo
+instanceKlass tv/twitch/broadcast/UserInfo
+instanceKlass tv/twitch/broadcast/ChannelInfo
+instanceKlass tv/twitch/AuthToken
+instanceKlass tv/twitch/broadcast/IngestServer
+instanceKlass tv/twitch/broadcast/IngestList
+instanceKlass net/minecraft/util/ThreadSafeBoundList
+instanceKlass tv/twitch/broadcast/StreamAPI
+instanceKlass tv/twitch/CoreAPI
+instanceKlass net/minecraft/client/stream/BroadcastController
+instanceKlass tv/twitch/broadcast/IStreamCallbacks
+instanceKlass tv/twitch/broadcast/IStatCallbacks
+instanceKlass net/minecraft/client/stream/TwitchStream
+instanceKlass net/minecraft/client/stream/IngestServerTester$IngestTestListener
+instanceKlass net/minecraft/client/stream/ChatController$ChatListener
+instanceKlass net/minecraft/client/stream/BroadcastController$BroadcastListener
+instanceKlass net/minecraft/client/renderer/OpenGlHelper
+instanceKlass org/lwjgl/input/Controllers
+instanceKlass org/lwjgl/opengl/ReferencesStack
+instanceKlass org/lwjgl/opengl/GLContext$1
+instanceKlass org/lwjgl/opengl/Util
+instanceKlass org/lwjgl/opengl/GL30
+instanceKlass org/lwjgl/BufferChecks
+instanceKlass org/lwjgl/opengl/GL11
+instanceKlass org/lwjgl/opengl/StateStack
+instanceKlass org/lwjgl/opengl/FastIntMap$Entry
+instanceKlass org/lwjgl/opengl/FastIntMap
+instanceKlass org/lwjgl/opengl/BaseReferences
+instanceKlass org/lwjgl/opengl/StateTracker
+instanceKlass org/lwjgl/opengl/APIUtil
+instanceKlass org/lwjgl/opengl/ContextCapabilities
+instanceKlass org/lwjgl/opengl/WindowsContextImplementation
+instanceKlass org/lwjgl/opengl/ContextImplementation
+instanceKlass org/lwjgl/opengl/ContextGL
+instanceKlass org/lwjgl/opengl/WindowsKeyboard
+instanceKlass org/lwjgl/input/Keyboard$KeyEvent
+instanceKlass org/lwjgl/input/Keyboard
+instanceKlass org/lwjgl/opengl/EventQueue
+instanceKlass org/lwjgl/opengl/WindowsMouse
+instanceKlass org/lwjgl/opengles/ContextAttribs
+instanceKlass org/lwjgl/input/OpenGLPackageAccess$2
+instanceKlass org/lwjgl/input/OpenGLPackageAccess$1
+instanceKlass org/lwjgl/input/OpenGLPackageAccess
+instanceKlass org/lwjgl/input/Mouse$1
+instanceKlass org/lwjgl/input/Mouse
+instanceKlass org/lwjgl/MemoryUtil$CharSequenceNT
+instanceKlass org/lwjgl/MemoryUtilSun$AccessorReflectFast
+instanceKlass org/lwjgl/MemoryUtilSun
+instanceKlass org/lwjgl/MemoryUtilSun$AccessorUnsafe
+instanceKlass org/lwjgl/MemoryUtil$Accessor
+instanceKlass org/lwjgl/MemoryUtil
+instanceKlass org/lwjgl/opengl/Display$7
+instanceKlass org/lwjgl/opengl/GLContext$CapabilitiesCacheEntry
+instanceKlass org/lwjgl/opengl/GLContext
+instanceKlass org/lwjgl/opengl/Display$4
+instanceKlass org/lwjgl/opengl/Display$3
+instanceKlass net/minecraftforge/fluids/RenderBlockFluid
+instanceKlass cpw/mods/fml/common/eventhandler/ListenerList$ListenerListInst
+instanceKlass net/minecraftforge/common/ForgeInternalHandler
+instanceKlass cpw/mods/fml/common/eventhandler/ListenerList
+instanceKlass com/google/common/collect/MapMaker$RemovalListener
+instanceKlass com/google/common/collect/MapMakerInternalMap$1
+instanceKlass com/google/common/collect/MapMakerInternalMap$ReferenceEntry
+instanceKlass com/google/common/collect/MapMakerInternalMap$ValueReference
+instanceKlass com/google/common/collect/GenericMapMaker
+instanceKlass cpw/mods/fml/common/eventhandler/IEventListener
+instanceKlass cpw/mods/fml/common/eventhandler/EventBus
+instanceKlass cpw/mods/fml/common/eventhandler/IEventExceptionHandler
+instanceKlass net/minecraftforge/common/MinecraftForge
+instanceKlass net/minecraftforge/fluids/FluidRegistry$FluidDelegate
+instanceKlass net/minecraftforge/fluids/Fluid
+instanceKlass net/minecraftforge/fluids/FluidRegistry
+instanceKlass cpw/mods/fml/client/registry/RenderingRegistry
+instanceKlass cpw/mods/fml/client/registry/ISimpleBlockRenderingHandler
+instanceKlass net/minecraftforge/client/ForgeHooksClient
+instanceKlass java/util/ArrayList$1
+instanceKlass com/sun/imageio/plugins/common/ReaderUtil
+instanceKlass java/awt/image/BufferedImage$1
+instanceKlass java/awt/image/WritableRenderedImage
+instanceKlass sun/awt/image/NativeLibLoader$1
+instanceKlass sun/awt/image/NativeLibLoader
+instanceKlass sun/java2d/cmm/CMSManager
+instanceKlass java/awt/image/SampleModel
+instanceKlass java/awt/image/Raster
+instanceKlass java/awt/image/DataBuffer$1
+instanceKlass sun/awt/image/SunWritableRaster$DataStealer
+instanceKlass java/awt/image/DataBuffer
+instanceKlass com/sun/imageio/plugins/png/PNGImageDataEnumeration
+instanceKlass javax/imageio/IIOParam
+instanceKlass javax/imageio/metadata/IIOMetadata
+instanceKlass javax/imageio/ImageIO$ImageReaderIterator
+instanceKlass javax/imageio/spi/FilterIterator
+instanceKlass javax/imageio/ImageIO$CanDecodeInputFilter
+instanceKlass javax/imageio/spi/ServiceRegistry$Filter
+instanceKlass javax/imageio/stream/MemoryCacheImageInputStream$StreamDisposerRecord
+instanceKlass javax/imageio/stream/MemoryCache
+instanceKlass javax/imageio/stream/ImageInputStreamImpl
+instanceKlass javax/imageio/spi/PartialOrderIterator
+instanceKlass org/lwjgl/opengl/GlobalLock
+instanceKlass org/lwjgl/opengl/WindowsFileVersion
+instanceKlass org/lwjgl/opengl/ContextAttribs
+instanceKlass org/lwjgl/opengl/PixelFormat
+instanceKlass org/lwjgl/opengl/WindowsDisplay$Rect
+instanceKlass java/awt/event/FocusAdapter
+instanceKlass org/lwjgl/opengl/PeerInfo
+instanceKlass org/lwjgl/opengl/WindowsDisplay
+instanceKlass java/awt/event/ComponentAdapter
+instanceKlass org/lwjgl/opengl/DrawableGLES
+instanceKlass org/lwjgl/opengl/PixelFormatLWJGL
+instanceKlass org/lwjgl/opengl/DrawableGL
+instanceKlass org/lwjgl/opengl/DrawableLWJGL
+instanceKlass org/lwjgl/opengl/DisplayImplementation
+instanceKlass org/lwjgl/opengl/InputImplementation
+instanceKlass org/lwjgl/opengl/Drawable
+instanceKlass org/lwjgl/opengl/Context
+instanceKlass org/lwjgl/opengl/Display
+instanceKlass org/apache/commons/lang3/ArrayUtils
+instanceKlass net/minecraft/util/IntHashMap$Entry
+instanceKlass net/minecraft/util/IntHashMap
+instanceKlass net/minecraft/client/settings/KeyBinding
+instanceKlass net/minecraft/client/settings/GameSettings$1
+instanceKlass net/minecraft/client/settings/GameSettings
+instanceKlass net/minecraft/init/Bootstrap$5
+instanceKlass net/minecraft/util/IJsonSerializable
+instanceKlass net/minecraft/stats/AchievementList
+instanceKlass net/minecraft/item/crafting/FurnaceRecipes
+instanceKlass net/minecraft/item/crafting/CraftingManager$1
+instanceKlass net/minecraft/item/crafting/RecipeFireworks
+instanceKlass net/minecraft/item/crafting/RecipesMapCloning
+instanceKlass net/minecraft/item/crafting/RecipeBookCloning
+instanceKlass net/minecraft/item/crafting/RecipesArmorDyes
+instanceKlass net/minecraft/item/crafting/RecipesDyes
+instanceKlass net/minecraft/item/crafting/RecipesArmor
+instanceKlass net/minecraft/item/crafting/RecipesCrafting
+instanceKlass net/minecraft/item/crafting/ShapelessRecipes
+instanceKlass net/minecraft/item/crafting/RecipesFood
+instanceKlass net/minecraft/item/crafting/RecipesIngots
+instanceKlass net/minecraft/item/crafting/RecipesWeapons
+instanceKlass net/minecraft/item/crafting/ShapedRecipes
+instanceKlass net/minecraft/item/crafting/IRecipe
+instanceKlass net/minecraft/init/Items
+instanceKlass net/minecraft/item/crafting/RecipesTools
+instanceKlass net/minecraft/item/crafting/CraftingManager
+instanceKlass net/minecraft/entity/INpc
+instanceKlass net/minecraft/entity/IMerchant
+instanceKlass net/minecraft/inventory/IInvBasic
+instanceKlass net/minecraft/entity/IEntityOwnable
+instanceKlass net/minecraft/entity/IEntityMultiPart
+instanceKlass net/minecraft/entity/EntityList$EntityEggInfo
+instanceKlass net/minecraft/entity/EntityList
+instanceKlass net/minecraft/util/MathHelper
+instanceKlass net/minecraft/event/HoverEvent
+instanceKlass net/minecraft/util/StringTranslate
+instanceKlass net/minecraft/util/StatCollector
+instanceKlass net/minecraft/item/ItemStack
+instanceKlass net/minecraft/scoreboard/ScoreDummyCriteria
+instanceKlass net/minecraft/util/ChatComponentStyle
+instanceKlass net/minecraft/stats/StatBase$4
+instanceKlass net/minecraft/stats/StatBase$3
+instanceKlass net/minecraft/stats/StatBase$2
+instanceKlass net/minecraft/stats/StatBase$1
+instanceKlass net/minecraft/stats/IStatType
+instanceKlass net/minecraft/scoreboard/IScoreObjectiveCriteria
+instanceKlass net/minecraft/stats/StatList
+instanceKlass net/minecraft/world/WorldSavedData
+instanceKlass net/minecraft/inventory/ICrafting
+instanceKlass net/minecraft/command/IEntitySelector
+instanceKlass net/minecraft/entity/ai/attributes/AttributeModifier
+instanceKlass net/minecraft/entity/ai/attributes/BaseAttribute
+instanceKlass net/minecraft/entity/ai/attributes/IAttribute
+instanceKlass net/minecraft/entity/SharedMonsterAttributes
+instanceKlass net/minecraft/potion/Potion
+instanceKlass net/minecraft/potion/PotionHelper
+instanceKlass net/minecraft/entity/IProjectile
+instanceKlass net/minecraft/block/BlockFire$FireInfo
+instanceKlass net/minecraft/init/Blocks
+instanceKlass com/google/common/collect/Iterators$5
+instanceKlass net/minecraft/tileentity/IHopper
+instanceKlass net/minecraft/entity/boss/IBossDisplayData
+instanceKlass net/minecraft/stats/StatBase
+instanceKlass net/minecraft/nbt/NBTBase
+instanceKlass net/minecraft/entity/monster/IMob
+instanceKlass net/minecraft/entity/passive/IAnimals
+instanceKlass net/minecraft/entity/IRangedAttackMob
+instanceKlass net/minecraft/inventory/ISidedInventory
+instanceKlass net/minecraft/dispenser/BehaviorDefaultDispenseItem
+instanceKlass net/minecraft/dispenser/IBehaviorDispenseItem
+instanceKlass net/minecraft/dispenser/IBlockSource
+instanceKlass net/minecraft/dispenser/ILocatableSource
+instanceKlass net/minecraft/dispenser/ILocation
+instanceKlass net/minecraft/dispenser/IPosition
+instanceKlass net/minecraft/inventory/IInventory
+instanceKlass net/minecraft/tileentity/TileEntity
+instanceKlass com/google/common/collect/HashBiMap$Itr
+instanceKlass codechicken/lib/asm/InsnComparator
+instanceKlass net/minecraft/util/IIcon
+instanceKlass net/minecraft/world/gen/feature/WorldGenerator
+instanceKlass net/minecraftforge/common/IPlantable
+instanceKlass net/minecraftforge/common/IShearable
+instanceKlass net/minecraft/block/IGrowable
+instanceKlass net/minecraft/creativetab/CreativeTabs
+instanceKlass com/google/common/collect/AbstractIterator$1
+instanceKlass com/google/common/collect/TransformedIterator
+instanceKlass cpw/mods/fml/common/functions/TypeCastFunction
+instanceKlass cpw/mods/fml/common/functions/GenericIterableFactory$1
+instanceKlass cpw/mods/fml/common/functions/GenericIterableFactory
+instanceKlass com/google/common/base/Predicates
+instanceKlass net/minecraft/block/ITileEntityProvider
+instanceKlass cpw/mods/fml/common/registry/RegistryDelegate$Delegate
+instanceKlass net/minecraft/block/material/MapColor
+instanceKlass net/minecraft/block/material/Material
+instanceKlass com/google/common/collect/HashBasedTable$Factory
+instanceKlass com/google/common/collect/AbstractTable
+instanceKlass net/minecraft/item/Item
+instanceKlass net/minecraft/util/ObjectIntIdentityMap
+instanceKlass cpw/mods/fml/common/registry/RegistryDelegate
+instanceKlass com/google/common/collect/Table
+instanceKlass net/minecraft/block/Block$SoundType
+instanceKlass net/minecraft/util/IObjectIntIterable
+instanceKlass net/minecraft/block/Block
+instanceKlass codechicken/lib/asm/ASMHelper$1
+instanceKlass net/minecraft/init/Bootstrap
+instanceKlass javax/imageio/ImageIO$CacheInfo
+instanceKlass javax/imageio/ImageTypeSpecifier
+instanceKlass javax/imageio/ImageWriter
+instanceKlass javax/imageio/ImageTranscoder
+instanceKlass javax/imageio/metadata/IIOMetadataFormat
+instanceKlass javax/imageio/ImageReader
+instanceKlass javax/imageio/spi/IIORegistry$1
+instanceKlass com/sun/imageio/plugins/jpeg/JPEG
+instanceKlass javax/imageio/stream/ImageOutputStream
+instanceKlass javax/imageio/spi/DigraphNode
+instanceKlass javax/imageio/stream/ImageInputStream
+instanceKlass javax/imageio/spi/SubRegistry
+instanceKlass javax/imageio/spi/IIOServiceProvider
+instanceKlass javax/imageio/spi/RegisterableService
+instanceKlass javax/imageio/spi/ServiceRegistry
+instanceKlass javax/imageio/ImageIO
+instanceKlass com/google/common/cache/LocalCache$AbstractReferenceEntry
+instanceKlass java/util/concurrent/atomic/AtomicReferenceArray
+instanceKlass com/google/common/cache/RemovalListener
+instanceKlass com/google/common/cache/Weigher
+instanceKlass com/google/common/base/Equivalence
+instanceKlass com/google/common/cache/LocalCache$StrongValueReference
+instanceKlass com/google/common/cache/LocalCache$1
+instanceKlass java/util/concurrent/RunnableFuture
+instanceKlass com/google/common/util/concurrent/ListeningScheduledExecutorService
+instanceKlass java/util/concurrent/ScheduledExecutorService
+instanceKlass com/google/common/util/concurrent/ListeningExecutorService
+instanceKlass com/google/common/util/concurrent/MoreExecutors
+instanceKlass com/google/common/cache/LocalCache$ReferenceEntry
+instanceKlass com/google/common/cache/LocalCache$ValueReference
+instanceKlass com/google/common/cache/LocalCache$LocalManualCache
+instanceKlass java/util/logging/Logger$SystemLoggerHelper$1
+instanceKlass java/util/logging/Logger$SystemLoggerHelper
+instanceKlass com/google/common/cache/CacheBuilder$2
+instanceKlass com/google/common/cache/CacheStats
+instanceKlass com/google/common/base/Suppliers$SupplierOfInstance
+instanceKlass com/google/common/base/Suppliers
+instanceKlass com/google/common/cache/CacheBuilder$1
+instanceKlass com/google/common/cache/AbstractCache$StatsCounter
+instanceKlass com/google/common/cache/LoadingCache
+instanceKlass com/google/common/cache/Cache
+instanceKlass com/google/common/base/Ticker
+instanceKlass com/google/common/base/Supplier
+instanceKlass com/google/common/cache/CacheBuilder
+instanceKlass com/google/common/cache/CacheLoader
+instanceKlass com/mojang/authlib/minecraft/BaseMinecraftSessionService
+instanceKlass com/mojang/authlib/yggdrasil/response/ProfileSearchResultsResponse$Serializer
+instanceKlass com/mojang/authlib/yggdrasil/response/Response
+instanceKlass com/mojang/authlib/properties/PropertyMap$Serializer
+instanceKlass com/mojang/authlib/yggdrasil/YggdrasilAuthenticationService$GameProfileSerializer
+instanceKlass com/mojang/authlib/GameProfile
+instanceKlass com/mojang/authlib/GameProfileRepository
+instanceKlass com/mojang/authlib/minecraft/MinecraftSessionService
+instanceKlass com/mojang/authlib/UserAuthentication
+instanceKlass com/mojang/authlib/BaseAuthenticationService
+instanceKlass com/mojang/authlib/AuthenticationService
+instanceKlass net/minecraft/util/JsonUtils
+instanceKlass com/google/common/collect/FluentIterable
+instanceKlass com/google/common/io/ByteSink
+instanceKlass com/google/common/collect/TreeTraverser
+instanceKlass com/google/common/io/Files
+instanceKlass net/minecraft/client/resources/ResourceIndex
+instanceKlass net/minecraft/client/resources/DefaultResourcePack
+instanceKlass com/google/common/collect/Queues
+instanceKlass net/minecraft/util/EnumTypeAdapterFactory
+instanceKlass net/minecraft/util/ChatStyle$Serializer
+instanceKlass net/minecraft/util/ChatStyle
+instanceKlass com/google/gson/TreeTypeAdapter$SingleTypeFactory
+instanceKlass net/minecraft/util/IChatComponent$Serializer
+instanceKlass net/minecraft/util/RegistrySimple
+instanceKlass net/minecraft/util/IRegistry
+instanceKlass net/minecraft/client/resources/data/IMetadataSerializer
+instanceKlass net/minecraft/profiler/Profiler
+instanceKlass java/util/Timer$1
+instanceKlass java/util/TaskQueue
+instanceKlass java/util/Timer
+instanceKlass java/util/UUID$Holder
+instanceKlass java/awt/image/RenderedImage
+instanceKlass net/minecraft/world/IWorldAccess
+instanceKlass net/minecraft/util/IProgressUpdate
+instanceKlass net/minecraft/command/ICommandManager
+instanceKlass net/minecraft/server/MinecraftServer
+instanceKlass java/util/TimerTask
+instanceKlass net/minecraft/profiler/PlayerUsageSnooper
+instanceKlass net/minecraft/util/Timer
+instanceKlass net/minecraft/util/Session
+instanceKlass com/google/gson/internal/ConstructorConstructor$11
+instanceKlass net/minecraft/client/main/Main$1$1
+instanceKlass joptsimple/internal/Strings
+instanceKlass joptsimple/util/KeyValuePair
+instanceKlass joptsimple/OptionSet
+instanceKlass joptsimple/ArgumentList
+instanceKlass org/lwjgl/PointerWrapper
+instanceKlass java/lang/ClassLoaderHelper
+instanceKlass org/lwjgl/Sys$1
+instanceKlass org/lwjgl/DefaultSysImplementation
+instanceKlass org/lwjgl/LWJGLUtil$2
+instanceKlass org/lwjgl/LWJGLUtil$4
+instanceKlass org/lwjgl/BufferUtils
+instanceKlass org/lwjgl/LWJGLUtil
+instanceKlass org/lwjgl/SysImplementation
+instanceKlass org/lwjgl/Sys
+instanceKlass org/lwjgl/opengl/DisplayMode
+instanceKlass net/minecraft/util/Util
+instanceKlass net/minecraft/util/ResourceLocation
+instanceKlass com/google/common/util/concurrent/ListenableFuture
+instanceKlass java/util/concurrent/Future
+instanceKlass net/minecraft/util/IChatComponent
+instanceKlass net/minecraft/network/INetHandler
+instanceKlass net/minecraft/network/Packet
+instanceKlass net/minecraft/util/MovementInput
+instanceKlass net/minecraft/client/resources/SkinManager$SkinAvailableCallback
+instanceKlass net/minecraft/entity/Entity
+instanceKlass net/minecraft/command/ICommandSender
+instanceKlass net/minecraft/client/gui/GuiYesNoCallback
+instanceKlass net/minecraft/world/World
+instanceKlass net/minecraft/world/IBlockAccess
+instanceKlass net/minecraft/stats/IStatStringFormat
+instanceKlass net/minecraft/client/resources/IResourceManagerReloadListener
+instanceKlass net/minecraft/client/resources/IReloadableResourceManager
+instanceKlass net/minecraft/client/resources/IResourceManager
+instanceKlass net/minecraft/client/resources/IResourcePack
+instanceKlass net/minecraft/world/storage/ISaveFormat
+instanceKlass net/minecraft/client/resources/data/IMetadataSectionSerializer
+instanceKlass net/minecraft/client/stream/IStream
+instanceKlass net/minecraft/client/gui/Gui
+instanceKlass net/minecraft/client/Minecraft
+instanceKlass net/minecraft/profiler/IPlayerUsage
+instanceKlass org/objectweb/asm/tree/InsnList$InsnListIterator
+instanceKlass joptsimple/internal/ConstructorInvokingValueConverter
+instanceKlass joptsimple/internal/Objects
+instanceKlass joptsimple/internal/MethodInvokingValueConverter
+instanceKlass joptsimple/internal/Classes
+instanceKlass joptsimple/ValueConverter
+instanceKlass joptsimple/internal/Reflection
+instanceKlass joptsimple/ParserRules
+instanceKlass joptsimple/OptionParserState
+instanceKlass joptsimple/internal/AbbreviationMap
+instanceKlass joptsimple/internal/Rows
+instanceKlass joptsimple/BuiltinHelpFormatter
+instanceKlass joptsimple/HelpFormatter
+instanceKlass joptsimple/AbstractOptionSpec
+instanceKlass joptsimple/OptionDescriptor
+instanceKlass joptsimple/OptionParser
+instanceKlass net/minecraft/client/main/Main$1
+instanceKlass java/net/Authenticator
+instanceKlass joptsimple/OptionSpec
+instanceKlass net/minecraft/client/main/Main
+instanceKlass cpw/mods/fml/common/asm/transformers/TerminalTransformer
+instanceKlass cpw/mods/fml/common/launcher/TerminalTweaker
+instanceKlass net/minecraftforge/gradle/GradleStartCommon$AccessTransformerTransformer
+instanceKlass com/google/gson/internal/LinkedTreeMap$LinkedTreeMapIterator
+instanceKlass com/google/gson/internal/ConstructorConstructor$6
+instanceKlass com/google/gson/internal/ConstructorConstructor$8
+instanceKlass com/google/gson/internal/$Gson$Types$ParameterizedTypeImpl
+instanceKlass com/google/gson/internal/Primitives
+instanceKlass com/google/gson/annotations/SerializedName
+instanceKlass codechicken/core/asm/InterfaceDependancies
+instanceKlass com/google/gson/internal/ConstructorConstructor$3
+instanceKlass com/google/gson/internal/bind/ReflectiveTypeAdapterFactory$BoundField
+instanceKlass com/google/gson/internal/bind/ReflectiveTypeAdapterFactory
+instanceKlass com/google/gson/internal/bind/MapTypeAdapterFactory
+instanceKlass com/google/gson/internal/bind/CollectionTypeAdapterFactory
+instanceKlass com/google/gson/internal/bind/ArrayTypeAdapter$1
+instanceKlass com/google/gson/internal/bind/SqlDateTypeAdapter$1
+instanceKlass com/google/gson/internal/bind/TimeTypeAdapter$1
+instanceKlass com/google/gson/internal/bind/DateTypeAdapter$1
+instanceKlass com/google/gson/internal/bind/ObjectTypeAdapter$1
+instanceKlass com/google/gson/internal/ObjectConstructor
+instanceKlass com/google/gson/internal/ConstructorConstructor
+instanceKlass com/google/gson/Gson$2
+instanceKlass com/google/gson/Gson$1
+instanceKlass com/google/gson/JsonSerializationContext
+instanceKlass com/google/gson/JsonDeserializationContext
+instanceKlass com/google/gson/Gson
+instanceKlass com/google/gson/internal/bind/TypeAdapters$27
+instanceKlass com/google/gson/internal/$Gson$Types$GenericArrayTypeImpl
+instanceKlass com/google/gson/internal/$Gson$Types
+instanceKlass com/google/gson/reflect/TypeToken
+instanceKlass com/google/gson/InstanceCreator
+instanceKlass com/google/gson/JsonDeserializer
+instanceKlass com/google/gson/JsonSerializer
+instanceKlass com/google/gson/internal/Excluder
+instanceKlass com/google/gson/FieldNamingStrategy
+instanceKlass com/google/gson/GsonBuilder
+instanceKlass cpw/mods/fml/common/MetadataCollection
+instanceKlass cpw/mods/fml/common/ModMetadata
+instanceKlass cpw/mods/fml/common/registry/GameData
+instanceKlass com/google/common/collect/AbstractMapBasedMultimap$Itr
+instanceKlass cpw/mods/fml/common/event/FMLEvent
+instanceKlass cpw/mods/fml/common/ICrashCallable
+instanceKlass org/objectweb/asm/Handle
+instanceKlass cpw/mods/fml/common/Loader
+instanceKlass org/objectweb/asm/signature/SignatureReader
+instanceKlass cpw/mods/fml/common/asm/transformers/ItemStackTransformer
+instanceKlass codechicken/lib/asm/ClassHeirachyManager$SuperCache
+instanceKlass com/google/common/base/Splitter$2
+instanceKlass cpw/mods/fml/common/asm/transformers/AccessTransformer$1
+instanceKlass codechicken/lib/asm/ModularASMTransformer$ClassNodeTransformerList
+instanceKlass codechicken/lib/asm/InsnListSection$InsnListSectionIterator
+instanceKlass codechicken/core/asm/DefaultImplementationTransformer
+instanceKlass java/lang/AssertionStatusDirectives
+instanceKlass codechicken/core/asm/DelegatedTransformer
+instanceKlass org/objectweb/asm/util/Printer
+instanceKlass codechicken/lib/asm/InsnListSection
+instanceKlass codechicken/lib/asm/ASMBlock
+instanceKlass codechicken/lib/asm/ASMReader
+instanceKlass codechicken/lib/asm/ModularASMTransformer
+instanceKlass codechicken/lib/asm/ModularASMTransformer$ClassNodeTransformer
+instanceKlass codechicken/core/asm/TweakTransformer
+instanceKlass codechicken/core/asm/InterfaceDependancyTransformer
+instanceKlass codechicken/lib/asm/ClassHeirachyManager
+instanceKlass cpw/mods/fml/common/versioning/Restriction
+instanceKlass cpw/mods/fml/common/versioning/DefaultArtifactVersion
+instanceKlass cpw/mods/fml/common/versioning/VersionRange
+instanceKlass org/objectweb/asm/Opcodes
+instanceKlass cpw/mods/fml/common/versioning/VersionParser
+instanceKlass org/objectweb/asm/Handler
+instanceKlass org/objectweb/asm/tree/TryCatchBlockNode
+instanceKlass com/google/common/collect/AbstractMapBasedMultimap$WrappedCollection$WrappedIterator
+instanceKlass codechicken/obfuscator/ObfuscationMap$2
+instanceKlass codechicken/obfuscator/ObfuscationMap$1
+instanceKlass codechicken/obfuscator/ConstantObfuscator
+instanceKlass codechicken/obfuscator/SystemLogStreams
+instanceKlass codechicken/obfuscator/ObfuscationMap$ObfuscationEntry
+instanceKlass codechicken/obfuscator/ObfuscationMap
+instanceKlass codechicken/obfuscator/ObfDirection
+instanceKlass codechicken/obfuscator/ObfuscationRun
+instanceKlass codechicken/obfuscator/ILogStreams
+instanceKlass codechicken/lib/asm/ASMHelper$Acceptor
+instanceKlass codechicken/lib/asm/ASMHelper
+instanceKlass codechicken/lib/asm/ObfMapping
+instanceKlass codechicken/lib/config/ConfigTagParent$TagOrderComparator
+instanceKlass codechicken/lib/config/ConfigTagParent
+instanceKlass cpw/mods/fml/common/DummyModContainer
+instanceKlass cpw/mods/fml/common/ModContainer
+instanceKlass org/objectweb/asm/tree/InnerClassNode
+instanceKlass cpw/mods/fml/common/asm/transformers/AccessTransformer$Modifier
+instanceKlass cpw/mods/fml/common/asm/transformers/AccessTransformer
+instanceKlass codechicken/lib/asm/ASMInit
+instanceKlass org/objectweb/asm/Frame
+instanceKlass org/objectweb/asm/Edge
+instanceKlass org/objectweb/asm/Type
+instanceKlass org/objectweb/asm/Item
+instanceKlass org/objectweb/asm/ByteVector
+instanceKlass org/objectweb/asm/tree/InsnList$InsnListIterator
+instanceKlass org/objectweb/asm/tree/LocalVariableNode
+instanceKlass org/objectweb/asm/Label
+instanceKlass org/objectweb/asm/tree/InsnList
+instanceKlass org/objectweb/asm/tree/AbstractInsnNode
+instanceKlass org/objectweb/asm/Context
+instanceKlass org/objectweb/asm/Attribute
+instanceKlass org/objectweb/asm/ClassReader
+instanceKlass org/objectweb/asm/FieldVisitor
+instanceKlass org/objectweb/asm/MethodVisitor
+instanceKlass org/objectweb/asm/AnnotationVisitor
+instanceKlass net/minecraftforge/classloading/FluidIdTransformer
+instanceKlass net/minecraft/client/ClientBrandRetriever
+instanceKlass com/google/common/collect/Hashing
+instanceKlass java/awt/TrayIcon
+instanceKlass java/awt/MenuComponent
+instanceKlass sun/awt/AppContext$PostShutdownEventRunnable
+instanceKlass com/google/common/collect/Platform
+instanceKlass com/google/common/collect/ImmutableCollection$Builder
+instanceKlass com/google/common/collect/ImmutableMap$Builder
+instanceKlass LZMA/CRangeDecoder
+instanceKlass org/objectweb/asm/signature/SignatureVisitor
+instanceKlass org/objectweb/asm/commons/Remapper
+instanceKlass cpw/mods/fml/common/asm/FMLSanityChecker
+instanceKlass cpw/mods/fml/common/eventhandler/Event
+instanceKlass cpw/mods/fml/relauncher/SideOnly
+instanceKlass org/objectweb/asm/tree/InnerClassNode
+instanceKlass org/objectweb/asm/Handler
+instanceKlass org/objectweb/asm/Frame
+instanceKlass org/objectweb/asm/Edge
+instanceKlass org/objectweb/asm/Type
+instanceKlass org/objectweb/asm/Item
+instanceKlass org/objectweb/asm/ByteVector
+instanceKlass org/objectweb/asm/tree/TryCatchBlockNode
+instanceKlass org/objectweb/asm/tree/LocalVariableNode
+instanceKlass org/objectweb/asm/Label
+instanceKlass org/objectweb/asm/tree/InsnList
+instanceKlass org/objectweb/asm/Context
+instanceKlass org/objectweb/asm/Attribute
+instanceKlass org/objectweb/asm/ClassReader
+instanceKlass org/objectweb/asm/FieldVisitor
+instanceKlass org/objectweb/asm/MethodVisitor
+instanceKlass org/objectweb/asm/AnnotationVisitor
+instanceKlass org/objectweb/asm/tree/AbstractInsnNode
+instanceKlass cpw/mods/fml/common/asm/transformers/EventSubscriptionTransformer
+instanceKlass cpw/mods/fml/common/asm/transformers/SideTransformer
+instanceKlass com/google/common/base/AbstractIterator$1
+instanceKlass com/google/common/collect/Iterators$2
+instanceKlass com/google/common/collect/PeekingIterator
+instanceKlass com/google/common/collect/Iterators
+instanceKlass com/google/common/collect/Iterables
+instanceKlass com/google/common/base/Splitter$5
+instanceKlass com/google/common/base/AbstractIterator
+instanceKlass com/google/common/base/Splitter$1
+instanceKlass com/google/common/base/CharMatcher
+instanceKlass com/google/common/base/Predicate
+instanceKlass com/google/common/base/Splitter$Strategy
+instanceKlass com/google/common/base/Splitter
+instanceKlass com/google/common/io/LineBuffer
+instanceKlass com/google/common/io/LineReader
+instanceKlass com/google/common/io/Closer$SuppressingSuppressor
+instanceKlass com/google/common/io/Closer$Suppressor
+instanceKlass com/google/common/io/Closer
+instanceKlass com/google/common/io/CharSink
+instanceKlass com/google/common/io/OutputSupplier
+instanceKlass com/google/common/io/CharStreams
+instanceKlass com/google/common/io/CharSource
+instanceKlass com/google/common/hash/PrimitiveSink
+instanceKlass cpw/mods/fml/common/asm/transformers/MarkerTransformer$1
+instanceKlass com/google/common/base/Charsets
+instanceKlass com/google/common/base/Objects
+instanceKlass com/google/common/io/ByteSource
+instanceKlass com/google/common/io/InputSupplier
+instanceKlass com/google/common/io/Resources
+instanceKlass org/objectweb/asm/ClassVisitor
+instanceKlass cpw/mods/fml/common/asm/transformers/MarkerTransformer
+instanceKlass cpw/mods/fml/relauncher/CoreModManager$3
+instanceKlass net/minecraftforge/gradle/tweakers/AccessTransformerTweaker
+instanceKlass cpw/mods/fml/common/launcher/FMLDeobfTweaker
+instanceKlass cpw/mods/fml/common/launcher/FMLInjectionAndSortingTweaker
+instanceKlass codechicken/core/asm/MCPDeobfuscationTransformer
+instanceKlass codechicken/obfuscator/IHeirachyEvaluator
+instanceKlass org/objectweb/asm/Opcodes
+instanceKlass org/apache/logging/log4j/message/ParameterizedMessage
+instanceKlass codechicken/core/asm/MCPDeobfuscationTransformer$LoadPlugin
+instanceKlass java/util/concurrent/locks/LockSupport
+instanceKlass javax/swing/KeyboardManager
+instanceKlass java/awt/EventQueue$4
+instanceKlass java/awt/EventQueue$3
+instanceKlass javax/swing/plaf/basic/BasicOptionPaneUI$Handler
+instanceKlass sun/awt/dnd/SunDragSourceContextPeer
+instanceKlass java/awt/dnd/peer/DragSourceContextPeer
+instanceKlass sun/awt/EventQueueDelegate
+instanceKlass java/awt/ModalEventFilter
+instanceKlass java/awt/EventDispatchThread$HierarchyEventFilter
+instanceKlass java/awt/EventDispatchThread$1
+instanceKlass java/awt/EventFilter
+instanceKlass java/awt/Conditional
+instanceKlass java/awt/EventQueue$5
+instanceKlass sun/awt/EventQueueItem
+instanceKlass java/awt/event/InvocationEvent$1
+instanceKlass sun/awt/AWTAccessor$InvocationEventAccessor
+instanceKlass java/awt/ActiveEvent
+instanceKlass javax/swing/JComponent$$Lambda$16
+instanceKlass javax/swing/plaf/basic/BasicOptionPaneUI$2
+instanceKlass sun/font/CMap
+instanceKlass sun/font/T2KFontScaler$1
+instanceKlass sun/font/FontScaler
+instanceKlass sun/font/TrueTypeFont$DirectoryEntry
+instanceKlass sun/nio/ch/Util$BufferCache
+instanceKlass sun/nio/ch/Util
+instanceKlass sun/nio/ch/IOStatus
+instanceKlass sun/nio/ch/NativeThread
+instanceKlass java/nio/channels/spi/AbstractInterruptibleChannel$1
+instanceKlass sun/nio/ch/FileDispatcherImpl$1
+instanceKlass sun/nio/ch/NativeDispatcher
+instanceKlass sun/nio/ch/NativeThreadSet
+instanceKlass sun/font/TrueTypeFont$1
+instanceKlass sun/font/TrueTypeFont$TTDisposerRecord
+instanceKlass sun/font/StrikeCache$DisposableStrike
+instanceKlass sun/font/FontStrikeDisposer
+instanceKlass sun/java2d/Disposer$PollDisposable
+instanceKlass sun/font/FontStrikeDesc
+instanceKlass sun/font/FontDesignMetrics$MetricsKey
+instanceKlass java/awt/GraphicsConfiguration
+instanceKlass sun/awt/image/SurfaceManager$ProxiedGraphicsConfig
+instanceKlass sun/java2d/pipe/hw/AccelGraphicsConfig
+instanceKlass sun/java2d/pipe/hw/BufferedContextProvider
+instanceKlass sun/java2d/pipe/BufferedContext
+instanceKlass sun/java2d/pipe/hw/ContextCapabilities
+instanceKlass sun/java2d/d3d/D3DGraphicsDevice$1
+instanceKlass sun/java2d/d3d/D3DGraphicsDevice$1Result
+instanceKlass sun/java2d/d3d/D3DRenderQueue$1
+instanceKlass sun/java2d/pipe/RenderBuffer
+instanceKlass sun/java2d/pipe/RenderQueue
+instanceKlass sun/misc/PerfCounter$WindowsClientCounters
+instanceKlass java/awt/GraphicsDevice
+instanceKlass sun/awt/Win32FontManager$2
+instanceKlass sun/font/SunFontManager$3
+instanceKlass sun/font/FontFamily
+instanceKlass sun/font/Font2DHandle
+instanceKlass sun/font/CompositeFontDescriptor
+instanceKlass sun/awt/FontDescriptor
+instanceKlass sun/awt/FontConfiguration
+instanceKlass sun/font/SunFontManager$FontRegistrationInfo
+instanceKlass sun/font/SunFontManager$2
+instanceKlass sun/awt/Win32FontManager$1
+instanceKlass sun/font/FontManagerFactory$1
+instanceKlass sun/font/FontManagerFactory
+instanceKlass sun/font/GlyphList
+instanceKlass sun/font/StrikeCache$1
+instanceKlass sun/font/StrikeCache
+instanceKlass sun/font/FontStrike
+instanceKlass sun/font/CharToGlyphMapper
+instanceKlass java/awt/geom/Path2D
+instanceKlass sun/font/StrikeMetrics
+instanceKlass java/awt/geom/Point2D
+instanceKlass sun/font/Font2D
+instanceKlass sun/font/FontUtilities$1
+instanceKlass sun/font/FontUtilities
+instanceKlass sun/font/FontManagerNativeLibrary$1
+instanceKlass sun/font/FontManagerNativeLibrary
+instanceKlass sun/font/SunFontManager$1
+instanceKlass sun/font/SunFontManager$T1Filter
+instanceKlass sun/font/SunFontManager$TTFilter
+instanceKlass sun/font/SunFontManager
+instanceKlass sun/font/FontManagerForSGE
+instanceKlass sun/font/FontManager
+instanceKlass sun/java2d/FontSupport
+instanceKlass java/awt/FontMetrics
+instanceKlass javax/swing/plaf/basic/BasicGraphicsUtils
+instanceKlass javax/swing/plaf/basic/BasicOptionPaneUI$ButtonActionListener
+instanceKlass javax/swing/ArrayTable
+instanceKlass java/awt/event/KeyEvent$1
+instanceKlass sun/awt/AWTAccessor$KeyEventAccessor
+instanceKlass java/awt/VKCollection
+instanceKlass javax/swing/InputMap
+instanceKlass javax/swing/ActionMap
+instanceKlass java/beans/VetoableChangeListener
+instanceKlass javax/swing/event/AncestorListener
+instanceKlass java/awt/AWTEventMulticaster
+instanceKlass java/awt/event/MouseWheelListener
+instanceKlass java/awt/event/HierarchyBoundsListener
+instanceKlass java/awt/event/HierarchyListener
+instanceKlass java/awt/event/InputMethodListener
+instanceKlass java/awt/event/TextListener
+instanceKlass java/awt/event/AdjustmentListener
+instanceKlass java/awt/event/WindowStateListener
+instanceKlass java/awt/event/WindowFocusListener
+instanceKlass java/awt/event/KeyListener
+instanceKlass java/awt/event/ContainerListener
+instanceKlass java/awt/event/ComponentListener
+instanceKlass javax/swing/plaf/basic/BasicButtonListener
+instanceKlass java/awt/event/FocusListener
+instanceKlass java/awt/event/MouseMotionListener
+instanceKlass java/awt/event/MouseListener
+instanceKlass javax/swing/plaf/metal/MetalBorders
+instanceKlass java/awt/Graphics
+instanceKlass javax/swing/AbstractButton$Handler
+instanceKlass java/awt/event/ItemListener
+instanceKlass javax/swing/event/ChangeListener
+instanceKlass java/awt/event/ActionListener
+instanceKlass javax/swing/DefaultButtonModel
+instanceKlass javax/swing/ButtonModel
+instanceKlass java/awt/ItemSelectable
+instanceKlass javax/swing/plaf/basic/BasicOptionPaneUI$ButtonFactory
+instanceKlass javax/swing/plaf/basic/BasicOptionPaneUI$ButtonAreaLayout
+instanceKlass javax/swing/ScrollPaneConstants
+instanceKlass javax/swing/plaf/basic/BasicHTML
+instanceKlass javax/swing/plaf/metal/DefaultMetalTheme$FontDelegate$1
+instanceKlass javax/swing/Icon
+instanceKlass java/awt/GridBagConstraints
+instanceKlass java/awt/GridBagLayout
+instanceKlass java/awt/BorderLayout
+instanceKlass java/awt/FlowLayout
+instanceKlass javax/swing/BoxLayout
+instanceKlass java/awt/LayoutManager2
+instanceKlass com/sun/java/swing/SwingUtilities3
+instanceKlass javax/swing/RepaintManager$ProcessingRunnable
+instanceKlass java/awt/geom/RectangularShape
+instanceKlass java/awt/Shape
+instanceKlass sun/swing/SwingLazyValue$1
+instanceKlass sun/reflect/misc/Trampoline
+instanceKlass sun/reflect/misc/MethodUtil$1
+instanceKlass javax/swing/plaf/ComponentUI
+instanceKlass sun/util/ResourceBundleEnumeration
+instanceKlass javax/swing/UIManager$2
+instanceKlass sun/awt/KeyboardFocusManagerPeerImpl
+instanceKlass java/awt/peer/KeyboardFocusManagerPeer
+instanceKlass java/awt/FocusTraversalPolicy
+instanceKlass java/awt/DefaultKeyboardFocusManager$1
+instanceKlass sun/awt/AWTAccessor$DefaultKeyboardFocusManagerAccessor
+instanceKlass java/awt/AWTKeyStroke$1
+instanceKlass java/awt/AWTKeyStroke
+instanceKlass java/awt/KeyboardFocusManager$1
+instanceKlass sun/awt/AWTAccessor$KeyboardFocusManagerAccessor
+instanceKlass java/awt/KeyboardFocusManager
+instanceKlass java/awt/KeyEventPostProcessor
+instanceKlass java/awt/KeyEventDispatcher
+instanceKlass sun/awt/PaintEventDispatcher
+instanceKlass sun/swing/SwingAccessor
+instanceKlass javax/swing/RepaintManager$1
+instanceKlass sun/swing/SwingAccessor$RepaintManagerAccessor
+instanceKlass javax/swing/RepaintManager$DisplayChangedHandler
+instanceKlass javax/swing/RepaintManager
+instanceKlass javax/swing/plaf/metal/OceanTheme$6
+instanceKlass javax/swing/plaf/metal/OceanTheme$5
+instanceKlass javax/swing/plaf/metal/OceanTheme$4
+instanceKlass javax/swing/plaf/metal/OceanTheme$3
+instanceKlass javax/swing/plaf/metal/OceanTheme$2
+instanceKlass javax/swing/plaf/metal/OceanTheme$1
+instanceKlass java/util/EventListenerProxy
+instanceKlass sun/swing/SwingUtilities2$AATextInfo
+instanceKlass sun/java2d/SunGraphicsEnvironment$1
+instanceKlass sun/awt/SunDisplayChanger
+instanceKlass sun/java2d/SurfaceManagerFactory
+instanceKlass sun/java2d/windows/WindowsFlags$1
+instanceKlass sun/java2d/windows/WindowsFlags
+instanceKlass javax/swing/plaf/metal/MetalLookAndFeel$$Lambda$15
+instanceKlass javax/swing/plaf/metal/MetalLookAndFeel$$Lambda$14
+instanceKlass javax/swing/plaf/metal/MetalLookAndFeel$$Lambda$13
+instanceKlass javax/swing/plaf/metal/MetalLookAndFeel$$Lambda$12
+instanceKlass javax/swing/plaf/metal/MetalLookAndFeel$$Lambda$11
+instanceKlass javax/swing/plaf/metal/MetalLookAndFeel$FontActiveValue
+instanceKlass javax/swing/plaf/metal/MetalLookAndFeel$$Lambda$10
+instanceKlass javax/swing/plaf/metal/MetalLookAndFeel$$Lambda$9
+instanceKlass javax/swing/UIDefaults$LazyInputMap
+instanceKlass javax/swing/plaf/basic/BasicLookAndFeel$2
+instanceKlass sun/swing/SwingUtilities2$2
+instanceKlass javax/swing/border/AbstractBorder
+instanceKlass javax/swing/border/Border
+instanceKlass javax/swing/UIDefaults$ActiveValue
+instanceKlass sun/swing/SwingLazyValue
+instanceKlass javax/swing/UIDefaults$LazyValue
+instanceKlass javax/swing/plaf/metal/DefaultMetalTheme$FontDelegate
+instanceKlass javax/swing/plaf/UIResource
+instanceKlass javax/swing/plaf/metal/MetalTheme
+instanceKlass sun/swing/DefaultLookup
+instanceKlass javax/swing/LookAndFeel
+instanceKlass javax/swing/UIManager$1
+instanceKlass javax/swing/UIManager$LAFState
+instanceKlass sun/swing/SwingUtilities2$LSBCacheEntry
+instanceKlass sun/swing/StringUIClientPropertyKey
+instanceKlass sun/swing/UIClientPropertyKey
+instanceKlass java/awt/font/FontRenderContext
+instanceKlass sun/swing/SwingUtilities2
+instanceKlass java/util/IdentityHashMap$IdentityHashMapIterator
+instanceKlass java/awt/Toolkit$DesktopPropertyChangeSupport$1
+instanceKlass sun/awt/SunHints$Value
+instanceKlass java/awt/RenderingHints$Key
+instanceKlass sun/awt/SunHints
+instanceKlass java/awt/RenderingHints
+instanceKlass sun/awt/windows/WDesktopProperties$WinPlaySound
+instanceKlass java/awt/Color
+instanceKlass java/awt/Paint
+instanceKlass sun/awt/windows/ThemeReader
+instanceKlass sun/awt/windows/WDesktopProperties
+instanceKlass sun/awt/windows/WToolkit$$Lambda$8
+instanceKlass java/lang/invoke/LambdaForm$DMH
+instanceKlass sun/awt/windows/WToolkit$$Lambda$7
+instanceKlass sun/awt/windows/WToolkit$$Lambda$6
+instanceKlass sun/awt/windows/WToolkit$$Lambda$5
+instanceKlass sun/awt/AWTAutoShutdown
+instanceKlass sun/misc/ThreadGroupUtils
+instanceKlass sun/java2d/Disposer$$Lambda$4
+instanceKlass java/lang/invoke/LambdaForm$DMH
+instanceKlass sun/java2d/Disposer$1
+instanceKlass sun/java2d/Disposer
+instanceKlass sun/awt/windows/WToolkit$ToolkitDisposer
+instanceKlass sun/java2d/DisposerRecord
+instanceKlass sun/misc/PerformanceLogger$TimeData
+instanceKlass sun/misc/PerformanceLogger
+instanceKlass sun/awt/SunToolkit$ModalityListenerList
+instanceKlass sun/awt/ModalityListener
+instanceKlass java/beans/ChangeListenerMap
+instanceKlass java/beans/PropertyChangeSupport
+instanceKlass sun/awt/windows/WToolkit$2
+instanceKlass sun/awt/DisplayChangedListener
+instanceKlass sun/awt/image/SurfaceManager
+instanceKlass sun/awt/image/SurfaceManager$ImageAccessor
+instanceKlass java/awt/ImageCapabilities
+instanceKlass java/awt/Image
+instanceKlass sun/java2d/DestSurfaceProvider
+instanceKlass sun/java2d/loops/RenderCache$Entry
+instanceKlass sun/java2d/loops/RenderCache
+instanceKlass sun/java2d/pipe/DrawImage
+instanceKlass sun/java2d/pipe/GeneralCompositePipe
+instanceKlass sun/java2d/pipe/SpanShapeRenderer
+instanceKlass sun/java2d/pipe/AlphaPaintPipe
+instanceKlass sun/java2d/pipe/AAShapePipe
+instanceKlass sun/java2d/pipe/RegionIterator
+instanceKlass sun/java2d/pipe/Region
+instanceKlass sun/java2d/pipe/SpanClipRenderer
+instanceKlass sun/java2d/pipe/PixelToShapeConverter
+instanceKlass sun/java2d/pipe/AlphaColorPipe
+instanceKlass sun/java2d/pipe/CompositePipe
+instanceKlass sun/java2d/pipe/GlyphListPipe
+instanceKlass sun/java2d/pipe/OutlineTextRenderer
+instanceKlass sun/java2d/pipe/RenderingEngine$1
+instanceKlass sun/java2d/pipe/RenderingEngine
+instanceKlass sun/java2d/pipe/LoopPipe
+instanceKlass sun/java2d/pipe/LoopBasedPipe
+instanceKlass sun/java2d/pipe/ParallelogramPipe
+instanceKlass sun/java2d/pipe/NullPipe
+instanceKlass sun/java2d/pipe/DrawImagePipe
+instanceKlass sun/java2d/pipe/TextPipe
+instanceKlass sun/java2d/pipe/ShapeDrawPipe
+instanceKlass sun/java2d/pipe/PixelFillPipe
+instanceKlass sun/java2d/pipe/PixelDrawPipe
+instanceKlass sun/java2d/StateTrackableDelegate$2
+instanceKlass sun/java2d/StateTrackableDelegate
+instanceKlass java/awt/color/ICC_Profile$1
+instanceKlass sun/java2d/cmm/ProfileActivator
+instanceKlass sun/java2d/cmm/ProfileDeferralMgr
+instanceKlass java/awt/color/ICC_Profile
+instanceKlass java/awt/color/ColorSpace
+instanceKlass java/awt/image/ColorModel$1
+instanceKlass java/awt/image/ColorModel
+instanceKlass sun/awt/image/PixelConverter
+instanceKlass sun/java2d/loops/SurfaceType
+instanceKlass sun/java2d/SurfaceData
+instanceKlass sun/java2d/Surface
+instanceKlass sun/java2d/StateTrackable
+instanceKlass sun/java2d/DisposerTarget
+instanceKlass java/awt/Transparency
+instanceKlass sun/awt/windows/WToolkit$1
+instanceKlass java/awt/Toolkit$2
+instanceKlass sun/awt/OSInfo$1
+instanceKlass sun/awt/OSInfo$WindowsVersion
+instanceKlass sun/awt/OSInfo
+instanceKlass javax/swing/UIManager$LookAndFeelInfo
+instanceKlass javax/swing/UIManager
+instanceKlass javax/swing/SwingUtilities
+instanceKlass javax/swing/event/EventListenerList
+instanceKlass sun/awt/PostEventQueue
+instanceKlass sun/awt/MostRecentKeyValue
+instanceKlass java/awt/Queue
+instanceKlass java/awt/EventQueue$2
+instanceKlass sun/awt/AWTAccessor$EventQueueAccessor
+instanceKlass java/awt/EventQueue$1
+instanceKlass java/awt/EventQueue
+instanceKlass sun/awt/AppContext$1
+instanceKlass sun/awt/KeyboardFocusManagerPeerProvider
+instanceKlass sun/awt/InputMethodSupport
+instanceKlass sun/awt/ComponentFactory
+instanceKlass sun/awt/WindowClosingListener
+instanceKlass sun/awt/WindowClosingSupport
+instanceKlass sun/awt/AppContext$2
+instanceKlass sun/awt/AppContext$3
+instanceKlass sun/awt/AppContext$6
+instanceKlass sun/misc/JavaAWTAccess
+instanceKlass sun/awt/AppContext$GetAppContextLock
+instanceKlass sun/awt/AppContext
+instanceKlass java/awt/Component$3
+instanceKlass java/awt/ComponentOrientation
+instanceKlass javax/swing/JComponent$1
+instanceKlass java/awt/Container$1
+instanceKlass sun/awt/AWTAccessor$ContainerAccessor
+instanceKlass java/awt/geom/Dimension2D
+instanceKlass java/awt/LightweightDispatcher
+instanceKlass java/awt/event/AWTEventListener
+instanceKlass java/awt/LayoutManager
+instanceKlass java/awt/Component$DummyRequestFocusController
+instanceKlass sun/awt/RequestFocusController
+instanceKlass java/awt/Component$1
+instanceKlass sun/awt/AWTAccessor$ComponentAccessor
+instanceKlass sun/font/AttributeValues
+instanceKlass java/awt/geom/AffineTransform
+instanceKlass sun/font/FontAccess
+instanceKlass java/awt/Font
+instanceKlass sun/awt/windows/WObjectPeer
+instanceKlass java/awt/dnd/peer/DropTargetPeer
+instanceKlass java/awt/peer/ComponentPeer
+instanceKlass java/awt/event/InputEvent$1
+instanceKlass sun/awt/AWTAccessor$InputEventAccessor
+instanceKlass java/awt/event/NativeLibLoader$1
+instanceKlass java/awt/event/NativeLibLoader
+instanceKlass java/awt/AWTEvent$1
+instanceKlass sun/awt/AWTAccessor$AWTEventAccessor
+instanceKlass java/awt/Insets
+instanceKlass java/lang/invoke/LambdaForm$MH
+instanceKlass java/lang/invoke/LambdaForm$MH
+instanceKlass java/lang/invoke/InnerClassLambdaMetafactory$1
+instanceKlass java/awt/GraphicsEnvironment$$Lambda$3
+instanceKlass java/awt/GraphicsEnvironment
+instanceKlass java/awt/Toolkit$1
+instanceKlass java/awt/Toolkit$3
+instanceKlass java/awt/Toolkit$5
+instanceKlass sun/awt/AWTAccessor
+instanceKlass java/awt/Toolkit$4
+instanceKlass sun/awt/AWTAccessor$ToolkitAccessor
+instanceKlass java/awt/Toolkit
+instanceKlass java/awt/Component$AWTTreeLock
+instanceKlass java/util/logging/LogManager$7
+instanceKlass javax/swing/RootPaneContainer
+instanceKlass javax/swing/WindowConstants
+instanceKlass java/awt/event/WindowListener
+instanceKlass javax/swing/SwingConstants
+instanceKlass java/awt/Component
+instanceKlass java/awt/MenuContainer
+instanceKlass java/awt/image/ImageObserver
+instanceKlass javax/swing/TransferHandler$HasGetTransferHandler
+instanceKlass javax/accessibility/Accessible
+instanceKlass codechicken/core/launch/DepLoader$Dependency
+instanceKlass cpw/mods/fml/common/versioning/ComparableVersion$IntegerItem
+instanceKlass cpw/mods/fml/common/versioning/ComparableVersion$Item
+instanceKlass cpw/mods/fml/common/versioning/ComparableVersion
+instanceKlass codechicken/core/launch/DepLoader$VersionedFile
+instanceKlass com/google/gson/internal/$Gson$Preconditions
+instanceKlass com/google/gson/internal/LinkedTreeMap$Node
+instanceKlass com/google/gson/internal/LinkedTreeMap$1
+instanceKlass com/google/gson/internal/bind/TypeAdapters$32
+instanceKlass com/google/gson/internal/bind/TypeAdapters$26
+instanceKlass com/google/gson/internal/bind/TypeAdapters$30
+instanceKlass com/google/gson/internal/bind/TypeAdapters$22
+instanceKlass com/google/gson/internal/bind/TypeAdapters$31
+instanceKlass com/google/gson/internal/bind/TypeAdapters$29
+instanceKlass com/google/gson/internal/bind/TypeAdapters$28
+instanceKlass com/google/gson/stream/JsonWriter
+instanceKlass com/google/gson/TypeAdapter
+instanceKlass com/google/gson/TypeAdapterFactory
+instanceKlass com/google/gson/internal/bind/TypeAdapters
+instanceKlass com/google/gson/JsonElement
+instanceKlass com/google/gson/internal/Streams
+instanceKlass com/google/gson/internal/JsonReaderInternalAccess
+instanceKlass com/google/gson/stream/JsonReader
+instanceKlass com/google/gson/JsonParser
+instanceKlass codechicken/core/launch/DepLoader$IDownloadDisplay
+instanceKlass codechicken/core/launch/DepLoader$DepLoadInst
+instanceKlass java/nio/DirectByteBuffer$Deallocator
+instanceKlass codechicken/core/launch/DepLoader
+instanceKlass java/util/Collections$UnmodifiableMap$UnmodifiableEntrySet$UnmodifiableEntry
+instanceKlass java/util/Collections$UnmodifiableMap$UnmodifiableEntrySet$1
+instanceKlass java/lang/Thread$1
+instanceKlass java/lang/Thread$Caches
+instanceKlass java/util/ServiceLoader$LazyIterator$1
+instanceKlass javax/swing/event/HyperlinkListener
+instanceKlass cpw/mods/fml/common/versioning/ArtifactVersion
+instanceKlass cpw/mods/fml/repackage/com/nothome/delta/SeekableSource
+instanceKlass cpw/mods/fml/repackage/com/nothome/delta/GDiffPatcher
+instanceKlass com/google/common/collect/ListMultimap
+instanceKlass cpw/mods/fml/common/patcher/ClassPatchManager
+instanceKlass codechicken/core/launch/CodeChickenCorePlugin
+instanceKlass cpw/mods/fml/relauncher/IFMLCallHook
+instanceKlass java/util/concurrent/Callable
+instanceKlass cpw/mods/fml/relauncher/FileListHelper
+instanceKlass com/google/common/collect/ObjectArrays
+instanceKlass cpw/mods/fml/relauncher/CoreModManager$2
+instanceKlass cpw/mods/fml/relauncher/CoreModManager$1
+instanceKlass cpw/mods/fml/relauncher/ModListHelper
+instanceKlass net/minecraftforge/classloading/FMLForgePlugin
+instanceKlass com/google/common/primitives/Ints
+instanceKlass cpw/mods/fml/relauncher/CoreModManager$FMLPluginWrapper
+instanceKlass cpw/mods/fml/relauncher/IFMLLoadingPlugin$SortingIndex
+instanceKlass cpw/mods/fml/relauncher/IFMLLoadingPlugin$DependsOn
+instanceKlass cpw/mods/fml/relauncher/IFMLLoadingPlugin$TransformerExclusions
+instanceKlass cpw/mods/fml/relauncher/IFMLLoadingPlugin$MCVersion
+instanceKlass cpw/mods/fml/relauncher/IFMLLoadingPlugin$Name
+instanceKlass cpw/mods/fml/relauncher/FMLCorePlugin
+instanceKlass cpw/mods/fml/relauncher/IFMLLoadingPlugin
+instanceKlass net/minecraft/launchwrapper/IClassNameTransformer
+instanceKlass cpw/mods/fml/common/asm/transformers/PatchingTransformer
+instanceKlass java/net/URLClassLoader$4
+instanceKlass cpw/mods/fml/relauncher/CoreModManager
+instanceKlass org/apache/logging/log4j/core/helpers/Loader$1
+instanceKlass java/lang/reflect/WeakCache$LookupValue
+instanceKlass cpw/mods/fml/relauncher/FMLInjectionData
+instanceKlass cpw/mods/fml/relauncher/FMLRelaunchLog
+instanceKlass cpw/mods/fml/relauncher/FMLLaunchHandler
+instanceKlass cpw/mods/fml/common/launcher/Yggdrasil
+instanceKlass net/minecraftforge/gradle/tweakers/CoremodTweaker
+instanceKlass java/lang/ClassLoader$1
+instanceKlass java/util/Collections$3
+instanceKlass java/security/PermissionsEnumerator
+instanceKlass sun/security/provider/PolicyFile$7
+instanceKlass sun/security/provider/PolicyFile$5
+instanceKlass sun/security/provider/PolicyFile$PolicyEntry
+instanceKlass sun/security/provider/PolicyParser$PermissionEntry
+instanceKlass sun/security/provider/PolicyParser$GrantEntry
+instanceKlass sun/security/util/PolicyUtil
+instanceKlass sun/security/provider/PolicyParser
+instanceKlass sun/security/util/PropertyExpander
+instanceKlass sun/security/provider/PolicyFile$3
+instanceKlass java/security/ProtectionDomain$2$1
+instanceKlass sun/misc/JavaSecurityProtectionDomainAccess$ProtectionDomainCache
+instanceKlass sun/security/provider/PolicyFile$PolicyInfo
+instanceKlass sun/security/provider/PolicyFile$1
+instanceKlass java/security/Policy$1
+instanceKlass java/security/Policy$PolicyInfo
+instanceKlass java/security/Policy
+instanceKlass java/lang/System$1
+instanceKlass java/lang/SecurityManager$1
+instanceKlass cpw/mods/fml/common/launcher/FMLTweaker
+instanceKlass net/minecraft/launchwrapper/ITweaker
+instanceKlass java/util/Formattable
+instanceKlass net/minecraft/launchwrapper/LogWrapper
+instanceKlass java/io/FileFilter
+instanceKlass java/io/FilenameFilter
+instanceKlass java/io/ObjectInput
+instanceKlass net/minecraft/launchwrapper/Launch
+instanceKlass com/google/common/collect/Sets
+instanceKlass com/google/common/io/LineProcessor
+instanceKlass org/objectweb/asm/ClassVisitor
+instanceKlass cpw/mods/fml/common/asm/transformers/AccessTransformer
+instanceKlass net/minecraft/launchwrapper/IClassTransformer
+instanceKlass com/google/gson/internal/ConstructorConstructor$11
+instanceKlass com/google/gson/internal/$Gson$Types$ParameterizedTypeImpl
+instanceKlass GradleStart$AssetIndex$AssetEntry
+instanceKlass GradleStart$AssetIndex
+instanceKlass com/google/gson/internal/LinkedTreeMap$LinkedTreeMapIterator
+instanceKlass com/google/common/collect/AbstractMapBasedMultimap$KeySet$1
+instanceKlass com/google/common/collect/LinkedHashMultimap$1
+instanceKlass net/minecraftforge/gradle/OldPropertyMapSerializer
+instanceKlass com/google/gson/internal/LinkedTreeMap$Node
+instanceKlass com/google/gson/internal/LinkedTreeMap$1
+instanceKlass com/google/gson/internal/bind/TypeAdapters$32
+instanceKlass com/mojang/authlib/yggdrasil/response/User
+instanceKlass com/google/gson/internal/ConstructorConstructor$3
+instanceKlass com/google/gson/internal/JsonReaderInternalAccess
+instanceKlass sun/net/www/http/KeepAliveEntry
+instanceKlass sun/net/www/http/KeepAliveCache$1
+instanceKlass sun/net/www/http/KeepAliveStreamCleaner$2
+instanceKlass sun/net/www/http/KeepAliveStreamCleaner$1
+instanceKlass sun/net/www/http/Hurryable
+instanceKlass sun/net/www/HeaderParser
+instanceKlass sun/net/www/protocol/http/AuthCacheImpl
+instanceKlass sun/net/www/protocol/http/AuthCache
+instanceKlass sun/net/www/protocol/http/AuthCacheValue
+instanceKlass sun/net/DefaultProgressMeteringPolicy
+instanceKlass sun/net/ProgressMeteringPolicy
+instanceKlass sun/net/ProgressMonitor
+instanceKlass org/apache/commons/io/IOUtils
+instanceKlass sun/security/ssl/SSLSocketImpl$NotifyHandshakeThread$1
+instanceKlass sun/security/ssl/CipherBox$1
+instanceKlass sun/security/internal/spec/TlsPrfParameterSpec
+instanceKlass sun/security/internal/spec/TlsKeyMaterialSpec
+instanceKlass sun/security/internal/spec/TlsKeyMaterialParameterSpec
+instanceKlass com/sun/crypto/provider/TlsMasterSecretGenerator$TlsMasterSecretKey
+instanceKlass sun/security/internal/interfaces/TlsMasterSecret
+instanceKlass javax/crypto/KeyGeneratorSpi
+instanceKlass javax/crypto/KeyGenerator
+instanceKlass sun/security/internal/spec/TlsMasterSecretParameterSpec
+instanceKlass javax/crypto/KeyAgreementSpi
+instanceKlass java/security/KeyPair
+instanceKlass java/security/interfaces/ECPrivateKey
+instanceKlass sun/security/ssl/ECDHCrypt
+instanceKlass java/security/spec/ECPublicKeySpec
+instanceKlass sun/security/ssl/ClientHandshaker$2
+instanceKlass java/util/Vector$Itr
+instanceKlass java/security/cert/PKIXCertPathValidatorResult
+instanceKlass java/security/cert/CertPathValidatorResult
+instanceKlass sun/security/util/Length
+instanceKlass sun/security/util/KeyUtil
+instanceKlass sun/security/provider/certpath/PKIXMasterCertPathValidator
+instanceKlass sun/security/provider/certpath/PolicyNodeImpl
+instanceKlass java/security/cert/PolicyNode
+instanceKlass sun/security/provider/certpath/CertPathHelper
+instanceKlass java/security/cert/X509CertSelector
+instanceKlass java/security/cert/CertSelector
+instanceKlass sun/security/provider/certpath/PKIX$ValidatorParams
+instanceKlass sun/security/provider/certpath/PKIX
+instanceKlass java/security/cert/CertPathValidatorSpi
+instanceKlass java/security/cert/CertPathValidator
+instanceKlass sun/security/ssl/SSLAlgorithmConstraints$SupportedSignatureAlgorithmConstraints
+instanceKlass sun/security/util/HostnameChecker
+instanceKlass java/security/cert/PKIXParameters
+instanceKlass java/security/cert/CertPathParameters
+instanceKlass sun/security/ssl/RandomCookie
+instanceKlass sun/security/ssl/ExtensionType
+instanceKlass sun/security/ssl/HelloExtension
+instanceKlass sun/security/ssl/CipherSuiteList$1
+instanceKlass sun/security/ssl/HelloExtensions
+instanceKlass sun/security/ssl/HandshakeMessage
+instanceKlass sun/security/ssl/HandshakeHash
+instanceKlass sun/text/normalizer/UnicodeSet
+instanceKlass sun/text/normalizer/UnicodeMatcher
+instanceKlass sun/text/normalizer/NormalizerImpl$AuxTrieImpl
+instanceKlass sun/text/normalizer/NormalizerImpl$NormTrieImpl
+instanceKlass sun/text/normalizer/NormalizerImpl$FCDTrieImpl
+instanceKlass sun/text/normalizer/NormalizerDataReader
+instanceKlass sun/text/normalizer/ICUData
+instanceKlass sun/text/normalizer/NormalizerImpl
+instanceKlass sun/text/normalizer/VersionInfo
+instanceKlass sun/text/normalizer/CharTrie$FriendAgent
+instanceKlass sun/text/normalizer/Trie
+instanceKlass sun/net/idn/StringPrep$StringPrepTrieImpl
+instanceKlass sun/text/normalizer/Trie$DataManipulate
+instanceKlass sun/text/normalizer/ICUBinary
+instanceKlass sun/net/idn/StringPrepDataReader
+instanceKlass sun/text/normalizer/ICUBinary$Authenticate
+instanceKlass sun/net/idn/StringPrep
+instanceKlass java/net/IDN
+instanceKlass javax/net/ssl/SNIServerName
+instanceKlass sun/security/ssl/Utilities
+instanceKlass sun/security/ssl/Handshaker
+instanceKlass java/net/Socket$3
+instanceKlass java/net/Socket$2
+instanceKlass sun/net/NetHooks
+instanceKlass sun/net/spi/DefaultProxySelector$3
+instanceKlass sun/net/spi/DefaultProxySelector$NonProxyInfo
+instanceKlass sun/net/NetProperties$1
+instanceKlass sun/net/NetProperties
+instanceKlass sun/net/spi/DefaultProxySelector$1
+instanceKlass java/net/ProxySelector
+instanceKlass java/net/SocksSocketImpl$3
+instanceKlass sun/net/util/IPAddressUtil
+instanceKlass sun/security/ssl/Record
+instanceKlass sun/security/ssl/CipherSuiteList
+instanceKlass com/sun/crypto/provider/GHASH
+instanceKlass com/sun/crypto/provider/GCTR
+instanceKlass com/sun/crypto/provider/PKCS5Padding
+instanceKlass com/sun/crypto/provider/Padding
+instanceKlass com/sun/crypto/provider/FeedbackCipher
+instanceKlass com/sun/crypto/provider/CipherCore
+instanceKlass com/sun/crypto/provider/AESConstants
+instanceKlass com/sun/crypto/provider/SymmetricCipher
+instanceKlass javax/crypto/CipherSpi
+instanceKlass javax/crypto/spec/GCMParameterSpec
+instanceKlass com/sun/crypto/provider/SunJCE$1
+instanceKlass javax/crypto/Cipher$Transform
+instanceKlass javax/crypto/spec/IvParameterSpec
+instanceKlass javax/crypto/spec/SecretKeySpec
+instanceKlass javax/crypto/SecretKey
+instanceKlass sun/security/ssl/SSLAlgorithmDecomposer$1
+instanceKlass java/security/spec/ECGenParameterSpec
+instanceKlass sun/security/util/ECKeySizeParameterSpec
+instanceKlass java/security/KeyPairGeneratorSpi
+instanceKlass java/security/cert/TrustAnchor
+instanceKlass sun/security/x509/X509CertImpl$$Lambda$2
+instanceKlass sun/security/util/UntrustedCertificates$1
+instanceKlass sun/security/util/UntrustedCertificates
+instanceKlass java/security/cert/PKIXCertPathChecker
+instanceKlass java/security/cert/CertPathChecker
+instanceKlass javax/crypto/JarVerifier$JarHolder
+instanceKlass javax/crypto/JarVerifier$2
+instanceKlass javax/crypto/KeyAgreement
+instanceKlass javax/crypto/JceSecurity$2
+instanceKlass javax/crypto/JceSecurityManager$1
+instanceKlass javax/crypto/spec/RC5ParameterSpec
+instanceKlass javax/crypto/spec/RC2ParameterSpec
+instanceKlass java/security/spec/DSAParameterSpec
+instanceKlass java/security/interfaces/DSAParams
+instanceKlass java/security/interfaces/DSAPrivateKey
+instanceKlass sun/security/validator/EndEntityChecker
+instanceKlass sun/security/validator/Validator
+instanceKlass javax/crypto/JarVerifier$1
+instanceKlass javax/crypto/JarVerifier
+instanceKlass java/util/Vector$1
+instanceKlass javax/crypto/CryptoPolicyParser$CryptoPermissionEntry
+instanceKlass javax/crypto/CryptoPolicyParser$GrantEntry
+instanceKlass java/io/StreamTokenizer
+instanceKlass javax/crypto/CryptoPolicyParser
+instanceKlass java/util/zip/ZipFile$ZipEntryIterator
+instanceKlass java/util/jar/JarFile$JarEntryIterator
+instanceKlass javax/crypto/JceSecurity$1
+instanceKlass javax/crypto/JceSecurity
+instanceKlass javax/crypto/Cipher
+instanceKlass sun/security/ssl/ProtocolList
+instanceKlass sun/security/ssl/Authenticator
+instanceKlass sun/security/ssl/CipherBox
+instanceKlass sun/security/ssl/SignatureAndHashAlgorithm
+instanceKlass sun/security/ssl/SessionId
+instanceKlass sun/security/ssl/CipherSuite$MacAlg
+instanceKlass sun/security/ssl/CipherSuite$BulkCipher
+instanceKlass sun/security/ssl/CipherSuite
+instanceKlass javax/net/ssl/ExtendedSSLSession
+instanceKlass javax/net/ssl/SSLSession
+instanceKlass java/net/InetSocketAddress$InetSocketAddressHolder
+instanceKlass java/net/SocketAddress
+instanceKlass sun/misc/FloatingDecimal$ASCIIToBinaryBuffer
+instanceKlass java/net/PlainSocketImpl$1
+instanceKlass java/net/AbstractPlainSocketImpl$1
+instanceKlass java/net/SocketImpl
+instanceKlass java/net/SocketOptions
+instanceKlass java/net/SocksConsts
+instanceKlass java/net/Socket
+instanceKlass sun/net/www/http/KeepAliveKey
+instanceKlass sun/net/NetworkClient$1
+instanceKlass sun/net/NetworkClient
+instanceKlass javax/net/ssl/HandshakeCompletedListener
+instanceKlass org/apache/commons/io/Charsets
+instanceKlass java/net/ResponseCache
+instanceKlass sun/net/www/protocol/http/HttpURLConnection$3
+instanceKlass java/net/CookieHandler
+instanceKlass sun/net/www/protocol/http/HttpURLConnection$2
+instanceKlass java/util/ResourceBundle$Control$1
+instanceKlass java/util/logging/Logger$1
+instanceKlass sun/security/action/GetIntegerAction
+instanceKlass sun/nio/fs/BasicFileAttributesHolder
+instanceKlass sun/nio/fs/WindowsDirectoryStream$WindowsDirectoryIterator
+instanceKlass sun/nio/fs/WindowsFileAttributes
+instanceKlass java/nio/file/attribute/DosFileAttributes
+instanceKlass java/nio/file/attribute/BasicFileAttributes
+instanceKlass sun/nio/fs/NativeBuffer$Deallocator
+instanceKlass sun/nio/fs/NativeBuffer
+instanceKlass sun/nio/fs/NativeBuffers
+instanceKlass sun/nio/fs/WindowsNativeDispatcher$BackupResult
+instanceKlass sun/nio/fs/WindowsNativeDispatcher$CompletionStatus
+instanceKlass sun/nio/fs/WindowsNativeDispatcher$AclInformation
+instanceKlass sun/nio/fs/WindowsNativeDispatcher$Account
+instanceKlass sun/nio/fs/WindowsNativeDispatcher$DiskFreeSpace
+instanceKlass sun/nio/fs/WindowsNativeDispatcher$VolumeInformation
+instanceKlass sun/nio/fs/WindowsNativeDispatcher$FirstStream
+instanceKlass sun/nio/fs/WindowsNativeDispatcher$FirstFile
+instanceKlass sun/nio/fs/WindowsNativeDispatcher$1
+instanceKlass sun/nio/fs/WindowsNativeDispatcher
+instanceKlass sun/nio/fs/WindowsDirectoryStream
+instanceKlass java/nio/file/DirectoryStream
+instanceKlass java/nio/file/Files$AcceptAllFilter
+instanceKlass java/nio/file/DirectoryStream$Filter
+instanceKlass java/nio/file/Files
+instanceKlass sun/nio/fs/AbstractPath
+instanceKlass sun/nio/fs/Util
+instanceKlass sun/nio/fs/WindowsPathParser$Result
+instanceKlass sun/nio/fs/WindowsPathParser
+instanceKlass java/nio/file/FileSystem
+instanceKlass java/nio/file/spi/FileSystemProvider
+instanceKlass sun/nio/fs/DefaultFileSystemProvider
+instanceKlass java/nio/file/FileSystems$DefaultFileSystemHolder$1
+instanceKlass java/nio/file/FileSystems$DefaultFileSystemHolder
+instanceKlass java/nio/file/FileSystems
+instanceKlass java/net/NetworkInterface$2
+instanceKlass java/net/DefaultInterface
+instanceKlass java/net/InterfaceAddress
+instanceKlass java/net/NetworkInterface$1
+instanceKlass java/net/NetworkInterface
+instanceKlass sun/security/provider/SeedGenerator$1
+instanceKlass sun/security/provider/SeedGenerator
+instanceKlass sun/security/provider/SecureRandom$SeederHolder
+instanceKlass java/security/SecureRandomSpi
+instanceKlass java/util/Random
+instanceKlass sun/security/krb5/Realm
+instanceKlass sun/security/krb5/PrincipalName
+instanceKlass sun/security/ssl/JsseJce$1
+instanceKlass sun/security/ssl/JsseJce
+instanceKlass sun/security/validator/KeyStores
+instanceKlass javax/net/ssl/X509ExtendedTrustManager
+instanceKlass javax/net/ssl/X509TrustManager
+instanceKlass javax/net/ssl/TrustManager
+instanceKlass javax/net/ssl/TrustManagerFactory$1
+instanceKlass javax/net/ssl/TrustManagerFactory
+instanceKlass sun/security/x509/AccessDescription
+instanceKlass sun/security/x509/CertificatePolicyMap
+instanceKlass sun/security/util/ECUtil
+instanceKlass java/security/interfaces/ECPublicKey
+instanceKlass java/security/interfaces/ECKey
+instanceKlass sun/security/x509/DNSName
+instanceKlass java/net/URI$Parser
+instanceKlass sun/security/x509/URIName
+instanceKlass sun/security/x509/DistributionPoint
+instanceKlass java/security/cert/PolicyQualifierInfo
+instanceKlass sun/security/x509/CertificatePolicyId
+instanceKlass sun/security/x509/PolicyInformation
+instanceKlass sun/security/provider/JavaKeyStore$TrustedCertEntry
+instanceKlass sun/security/ssl/TrustManagerFactoryImpl$1
+instanceKlass sun/security/ssl/TrustManagerFactoryImpl$2
+instanceKlass javax/net/ssl/TrustManagerFactorySpi
+instanceKlass java/util/Collections$EmptyEnumeration
+instanceKlass javax/net/ssl/X509ExtendedKeyManager
+instanceKlass javax/net/ssl/X509KeyManager
+instanceKlass javax/net/ssl/KeyManager
+instanceKlass javax/net/ssl/KeyManagerFactorySpi
+instanceKlass javax/net/ssl/KeyManagerFactory$1
+instanceKlass javax/net/ssl/KeyManagerFactory
+instanceKlass sun/security/provider/KeyStoreDelegator$1
+instanceKlass java/security/KeyStoreSpi
+instanceKlass java/security/KeyStore$1
+instanceKlass java/security/KeyStore
+instanceKlass sun/security/ssl/SSLContextImpl$DefaultSSLContext$1
+instanceKlass sun/security/ssl/SSLSessionContextImpl$1
+instanceKlass sun/security/ssl/SSLSessionContextImpl
+instanceKlass javax/net/ssl/SSLSessionContext
+instanceKlass sun/security/ssl/EphemeralKeyManager$EphemeralKeyPair
+instanceKlass sun/security/ssl/EphemeralKeyManager
+instanceKlass sun/security/util/DisabledAlgorithmConstraints$1
+instanceKlass sun/security/util/DisabledAlgorithmConstraints$KeySizeConstraint
+instanceKlass sun/security/util/DisabledAlgorithmConstraints$KeySizeConstraints
+instanceKlass java/lang/invoke/LambdaForm$MH
+instanceKlass sun/security/util/AbstractAlgorithmConstraints$$Lambda$1
+instanceKlass java/lang/invoke/InfoFromMemberName
+instanceKlass java/lang/invoke/MethodHandleInfo
+instanceKlass sun/security/util/SecurityConstants
+instanceKlass java/security/AccessController$1
+instanceKlass java/lang/invoke/AbstractValidatingLambdaMetafactory
+instanceKlass java/lang/invoke/LambdaForm$BMH
+instanceKlass java/lang/invoke/LambdaForm$BMH
+instanceKlass java/lang/invoke/LambdaForm$BMH
+instanceKlass java/lang/invoke/LambdaForm$BMH
+instanceKlass jdk/internal/org/objectweb/asm/FieldVisitor
+instanceKlass java/lang/invoke/LambdaForm$BMH
+instanceKlass java/lang/invoke/LambdaForm$MH
+instanceKlass java/lang/invoke/LambdaForm$BMH
+instanceKlass java/lang/invoke/LambdaForm$MH
+instanceKlass java/lang/invoke/LambdaForm$DMH
+instanceKlass java/lang/invoke/LambdaForm$DMH
+instanceKlass java/lang/invoke/LambdaForm$BMH
+instanceKlass java/lang/invoke/LambdaForm$BMH
+instanceKlass java/lang/invoke/LambdaForm$MH
+instanceKlass java/lang/invoke/LambdaFormBuffer
+instanceKlass java/lang/invoke/LambdaFormEditor
+instanceKlass java/lang/invoke/LambdaForm$BMH
+instanceKlass java/lang/invoke/LambdaForm$DMH
+instanceKlass java/lang/invoke/LambdaForm$DMH
+instanceKlass java/lang/invoke/LambdaForm$DMH
+instanceKlass java/lang/invoke/LambdaForm$DMH
+instanceKlass java/lang/invoke/LambdaForm$MH
+instanceKlass java/lang/invoke/LambdaForm$DMH
+instanceKlass java/lang/invoke/LambdaForm$DMH
+instanceKlass java/lang/invoke/LambdaForm$MH
+instanceKlass java/lang/invoke/LambdaForm$DMH
+instanceKlass java/lang/invoke/LambdaForm$DMH
+instanceKlass java/lang/invoke/LambdaForm$MH
+instanceKlass java/lang/invoke/LambdaForm$DMH
+instanceKlass java/lang/invoke/LambdaForm$DMH
+instanceKlass java/lang/invoke/LambdaForm$MH
+instanceKlass java/lang/invoke/LambdaForm$DMH
+instanceKlass java/lang/invoke/LambdaForm$DMH
+instanceKlass java/lang/invoke/LambdaForm$MH
+instanceKlass java/lang/invoke/LambdaForm$DMH
+instanceKlass java/lang/invoke/LambdaForm$MH
+instanceKlass java/lang/invoke/LambdaForm$DMH
+instanceKlass java/lang/invoke/LambdaForm$DMH
+instanceKlass java/lang/invoke/LambdaForm$MH
+instanceKlass java/lang/invoke/LambdaForm$DMH
+instanceKlass java/lang/invoke/LambdaForm$DMH
+instanceKlass java/lang/invoke/LambdaForm$MH
+instanceKlass java/lang/invoke/LambdaForm$DMH
+instanceKlass java/lang/invoke/LambdaForm$MH
+instanceKlass java/lang/invoke/LambdaForm$DMH
+instanceKlass java/lang/invoke/LambdaForm$MH
+instanceKlass java/lang/invoke/LambdaForm$DMH
+instanceKlass java/lang/invoke/LambdaForm$DMH
+instanceKlass java/lang/invoke/MethodHandleImpl$Lazy
+instanceKlass java/lang/invoke/LambdaForm$BMH
+instanceKlass java/lang/invoke/LambdaForm$MH
+instanceKlass java/lang/invoke/LambdaForm$DMH
+instanceKlass java/lang/invoke/LambdaForm$DMH
+instanceKlass java/lang/invoke/LambdaForm$DMH
+instanceKlass java/lang/invoke/LambdaForm$DMH
+instanceKlass java/util/SubList$1
+instanceKlass java/lang/invoke/LambdaForm$MH
+instanceKlass java/lang/invoke/LambdaForm$MH
+instanceKlass java/lang/invoke/LambdaForm$MH
+instanceKlass java/lang/invoke/LambdaForm$MH
+instanceKlass java/lang/invoke/LambdaForm$MH
+instanceKlass java/lang/invoke/LambdaForm$MH
+instanceKlass java/lang/invoke/LambdaForm$MH
+instanceKlass java/lang/invoke/LambdaForm$MH
+instanceKlass java/lang/invoke/LambdaForm$MH
+instanceKlass java/lang/invoke/LambdaForm$MH
+instanceKlass java/lang/invoke/LambdaForm$MH
+instanceKlass java/lang/invoke/LambdaForm$MH
+instanceKlass java/lang/invoke/InvokerBytecodeGenerator$CpPatch
+instanceKlass java/lang/invoke/LambdaForm$DMH
+instanceKlass java/lang/invoke/LambdaForm$DMH
+instanceKlass java/lang/invoke/LambdaForm$DMH
+instanceKlass java/lang/invoke/LambdaForm$DMH
+instanceKlass java/lang/invoke/LambdaForm$DMH
+instanceKlass sun/invoke/empty/Empty
+instanceKlass sun/invoke/util/VerifyType
+instanceKlass java/lang/invoke/InvokerBytecodeGenerator$2
+instanceKlass jdk/internal/org/objectweb/asm/AnnotationVisitor
+instanceKlass jdk/internal/org/objectweb/asm/Frame
+instanceKlass jdk/internal/org/objectweb/asm/Label
+instanceKlass jdk/internal/org/objectweb/asm/Type
+instanceKlass jdk/internal/org/objectweb/asm/MethodVisitor
+instanceKlass jdk/internal/org/objectweb/asm/Item
+instanceKlass jdk/internal/org/objectweb/asm/ByteVector
+instanceKlass jdk/internal/org/objectweb/asm/ClassVisitor
+instanceKlass java/lang/invoke/InvokerBytecodeGenerator
+instanceKlass java/lang/invoke/DirectMethodHandle$Lazy
+instanceKlass sun/invoke/util/BytecodeDescriptor
+instanceKlass java/lang/invoke/BoundMethodHandle$Factory
+instanceKlass java/lang/invoke/BoundMethodHandle$SpeciesData
+instanceKlass java/lang/invoke/LambdaForm$NamedFunction
+instanceKlass java/lang/invoke/LambdaForm$Name
+instanceKlass sun/invoke/util/ValueConversions
+instanceKlass sun/invoke/util/VerifyAccess
+instanceKlass java/lang/Long$LongCache
+instanceKlass java/lang/Short$ShortCache
+instanceKlass java/lang/Byte$ByteCache
+instanceKlass sun/invoke/util/Wrapper$Format
+instanceKlass java/lang/invoke/MethodHandles
+instanceKlass java/lang/invoke/Invokers
+instanceKlass java/lang/invoke/MethodTypeForm
+instanceKlass java/lang/invoke/MethodType$ConcurrentWeakInternSet
+instanceKlass java/lang/invoke/MethodHandles$Lookup
+instanceKlass java/lang/invoke/LambdaMetafactory
+instanceKlass sun/security/util/AlgorithmDecomposer
+instanceKlass sun/security/util/AbstractAlgorithmConstraints
+instanceKlass sun/security/ssl/SSLAlgorithmConstraints
+instanceKlass java/security/AlgorithmConstraints
+instanceKlass sun/security/ssl/ProtocolVersion
+instanceKlass javax/net/ssl/SSLParameters
+instanceKlass sun/security/ssl/Debug
+instanceKlass sun/security/ssl/SunJSSE$1
+instanceKlass java/security/spec/ECFieldF2m
+instanceKlass java/security/spec/ECParameterSpec
+instanceKlass java/security/spec/AlgorithmParameterSpec
+instanceKlass java/security/spec/ECPoint
+instanceKlass java/security/spec/EllipticCurve
+instanceKlass java/security/spec/ECFieldFp
+instanceKlass java/security/spec/ECField
+instanceKlass sun/security/ec/CurveDB
+instanceKlass sun/security/ec/SunECEntries
+instanceKlass sun/security/ec/SunEC$1
+instanceKlass sun/security/util/ManifestEntryVerifier$SunProviderHolder
+instanceKlass sun/nio/cs/Surrogate
+instanceKlass sun/nio/cs/Surrogate$Parser
+instanceKlass java/util/Base64$Encoder
+instanceKlass java/util/Base64$Decoder
+instanceKlass java/util/Base64
+instanceKlass java/security/cert/CertPath
+instanceKlass java/math/MutableBigInteger
+instanceKlass sun/security/provider/ByteArrayAccess
+instanceKlass sun/security/rsa/RSAPadding
+instanceKlass sun/security/rsa/RSACore
+instanceKlass java/security/MessageDigestSpi
+instanceKlass sun/text/normalizer/NormalizerBase$1
+instanceKlass sun/text/normalizer/NormalizerBase$QuickCheckResult
+instanceKlass sun/text/normalizer/NormalizerBase$Mode
+instanceKlass sun/text/normalizer/NormalizerBase
+instanceKlass java/text/Normalizer
+instanceKlass sun/security/pkcs/PKCS9Attribute
+instanceKlass sun/security/x509/AVAKeyword
+instanceKlass sun/security/jca/ServiceId
+instanceKlass java/security/SignatureSpi
+instanceKlass sun/security/pkcs/SignerInfo
+instanceKlass java/security/interfaces/DSAPublicKey
+instanceKlass java/security/interfaces/DSAKey
+instanceKlass java/security/spec/DSAPublicKeySpec
+instanceKlass java/security/AlgorithmParametersSpi
+instanceKlass java/security/AlgorithmParameters
+instanceKlass sun/security/util/MemoryCache$CacheEntry
+instanceKlass sun/security/x509/X509AttributeName
+instanceKlass sun/security/x509/RFC822Name
+instanceKlass sun/security/x509/GeneralName
+instanceKlass sun/security/x509/GeneralNames
+instanceKlass sun/security/x509/KeyIdentifier
+instanceKlass sun/security/x509/NetscapeCertTypeExtension$MapEntry
+instanceKlass sun/security/x509/OIDMap$OIDInfo
+instanceKlass sun/security/x509/PKIXExtensions
+instanceKlass sun/security/x509/OIDMap
+instanceKlass sun/security/x509/Extension
+instanceKlass java/security/cert/Extension
+instanceKlass sun/security/x509/CertificateExtensions
+instanceKlass sun/security/pkcs/PKCS8Key
+instanceKlass java/security/interfaces/RSAPrivateCrtKey
+instanceKlass java/security/interfaces/RSAPrivateKey
+instanceKlass java/security/PrivateKey
+instanceKlass javax/security/auth/Destroyable
+instanceKlass java/security/interfaces/RSAPublicKey
+instanceKlass java/security/interfaces/RSAKey
+instanceKlass java/security/spec/RSAPrivateKeySpec
+instanceKlass java/security/spec/RSAPublicKeySpec
+instanceKlass java/security/KeyFactorySpi
+instanceKlass sun/security/jca/ProviderList$ServiceList$1
+instanceKlass java/security/KeyFactory
+instanceKlass java/security/spec/EncodedKeySpec
+instanceKlass java/security/spec/KeySpec
+instanceKlass sun/security/util/BitArray
+instanceKlass sun/security/x509/X509Key
+instanceKlass java/security/PublicKey
+instanceKlass java/security/Key
+instanceKlass sun/security/x509/CertificateX509Key
+instanceKlass sun/security/x509/CertificateValidity
+instanceKlass sun/security/x509/AVA
+instanceKlass sun/security/x509/RDN
+instanceKlass javax/security/auth/x500/X500Principal
+instanceKlass sun/security/x509/X500Name$1
+instanceKlass sun/security/x509/X500Name
+instanceKlass sun/security/x509/GeneralNameInterface
+instanceKlass sun/security/x509/CertificateAlgorithmId
+instanceKlass sun/security/x509/SerialNumber
+instanceKlass sun/security/x509/CertificateSerialNumber
+instanceKlass sun/security/x509/CertificateVersion
+instanceKlass sun/security/x509/X509CertInfo
+instanceKlass sun/security/x509/CertAttrSet
+instanceKlass sun/security/util/Cache$EqualByteArray
+instanceKlass java/security/cert/X509Extension
+instanceKlass sun/security/jca/GetInstance$Instance
+instanceKlass sun/security/util/Cache
+instanceKlass java/security/cert/CertificateFactorySpi
+instanceKlass java/security/cert/CertificateFactory
+instanceKlass sun/security/x509/AlgorithmId
+instanceKlass sun/security/util/ByteArrayTagOrder
+instanceKlass sun/security/util/ByteArrayLexOrder
+instanceKlass sun/security/util/DerEncoder
+instanceKlass sun/security/util/DerValue
+instanceKlass sun/security/util/ObjectIdentifier
+instanceKlass sun/security/pkcs/ContentInfo
+instanceKlass sun/security/util/DerIndefLenConverter
+instanceKlass sun/security/util/DerInputStream
+instanceKlass sun/security/pkcs/PKCS7
+instanceKlass sun/security/util/ManifestDigester$Entry
+instanceKlass sun/security/util/ManifestDigester$Position
+instanceKlass sun/security/util/ManifestDigester
+instanceKlass sun/security/rsa/SunRsaSignEntries
+instanceKlass java/security/Provider$UString
+instanceKlass java/security/Provider$Service
+instanceKlass sun/security/provider/NativePRNG$NonBlocking
+instanceKlass sun/security/provider/NativePRNG$Blocking
+instanceKlass sun/security/provider/NativePRNG
+instanceKlass sun/security/provider/SunEntries$1
+instanceKlass sun/security/provider/SunEntries
+instanceKlass sun/security/jca/ProviderConfig$2
+instanceKlass sun/security/jca/ProviderList$2
+instanceKlass sun/misc/FDBigInteger
+instanceKlass sun/misc/FloatingDecimal$PreparedASCIIToBinaryBuffer
+instanceKlass sun/misc/FloatingDecimal$ASCIIToBinaryConverter
+instanceKlass sun/misc/FloatingDecimal$BinaryToASCIIBuffer
+instanceKlass sun/misc/FloatingDecimal$ExceptionalBinaryToASCIIBuffer
+instanceKlass sun/misc/FloatingDecimal$BinaryToASCIIConverter
+instanceKlass sun/misc/FloatingDecimal
+instanceKlass java/security/Provider$EngineDescription
+instanceKlass java/security/Provider$ServiceKey
+instanceKlass sun/security/jca/ProviderConfig
+instanceKlass sun/security/jca/ProviderList
+instanceKlass sun/security/jca/Providers
+instanceKlass sun/security/jca/GetInstance
+instanceKlass javax/net/ssl/SSLContextSpi
+instanceKlass javax/net/ssl/SSLContext
+instanceKlass javax/net/ssl/SSLSocketFactory$1
+instanceKlass javax/net/SocketFactory
+instanceKlass javax/net/ssl/HttpsURLConnection$DefaultHostnameVerifier
+instanceKlass javax/net/ssl/HostnameVerifier
+instanceKlass com/google/gson/internal/Primitives
+instanceKlass com/google/gson/annotations/SerializedName
+instanceKlass com/google/gson/internal/UnsafeAllocator
+instanceKlass com/google/gson/internal/ConstructorConstructor$12
+instanceKlass java/util/Formatter$Conversion
+instanceKlass java/util/Formatter$Flags
+instanceKlass java/util/Formatter$FormatSpecifier
+instanceKlass java/util/Formatter$FixedString
+instanceKlass java/util/Formatter$FormatString
+instanceKlass java/util/regex/Matcher
+instanceKlass java/util/regex/MatchResult
+instanceKlass java/util/Formatter
+instanceKlass com/google/gson/internal/Streams
+instanceKlass com/mojang/authlib/yggdrasil/request/AuthenticationRequest
+instanceKlass java/util/zip/Deflater
+instanceKlass java/io/RandomAccessFile$1
+instanceKlass org/apache/logging/log4j/core/appender/rolling/RolloverDescriptionImpl
+instanceKlass org/apache/logging/log4j/core/appender/rolling/helper/AbstractAction
+instanceKlass org/apache/commons/lang3/StringUtils
+instanceKlass com/google/common/collect/AbstractMapEntry
+instanceKlass com/google/common/collect/LinkedHashMultimap$ValueSetLink
+instanceKlass com/google/common/collect/CollectPreconditions
+instanceKlass com/google/common/collect/AbstractMultimap
+instanceKlass com/google/common/collect/SetMultimap
+instanceKlass com/mojang/authlib/BaseUserAuthentication
+instanceKlass com/mojang/authlib/Agent
+instanceKlass com/mojang/authlib/yggdrasil/response/ProfileSearchResultsResponse$Serializer
+instanceKlass com/mojang/authlib/yggdrasil/response/Response
+instanceKlass com/google/gson/internal/bind/TypeAdapters$27
+instanceKlass com/mojang/authlib/properties/PropertyMap$Serializer
+instanceKlass com/google/common/collect/ForwardingObject
+instanceKlass com/google/common/collect/Multimap
+instanceKlass com/google/gson/TreeTypeAdapter$SingleTypeFactory
+instanceKlass com/google/gson/internal/$Gson$Types$GenericArrayTypeImpl
+instanceKlass java/lang/reflect/WildcardType
+instanceKlass com/google/gson/internal/$Gson$Types
+instanceKlass com/google/gson/reflect/TypeToken
+instanceKlass com/google/gson/InstanceCreator
+instanceKlass com/google/gson/internal/$Gson$Preconditions
+instanceKlass com/mojang/authlib/yggdrasil/YggdrasilAuthenticationService$GameProfileSerializer
+instanceKlass com/google/gson/JsonDeserializer
+instanceKlass com/google/gson/JsonSerializer
+instanceKlass com/mojang/authlib/GameProfile
+instanceKlass org/apache/commons/lang3/Validate
+instanceKlass java/net/Proxy
+instanceKlass com/mojang/authlib/GameProfileRepository
+instanceKlass com/mojang/authlib/minecraft/MinecraftSessionService
+instanceKlass com/mojang/authlib/UserAuthentication
+instanceKlass com/mojang/authlib/BaseAuthenticationService
+instanceKlass com/mojang/authlib/AuthenticationService
+instanceKlass java/text/FieldPosition$Delegate
+instanceKlass org/apache/logging/log4j/core/appender/RandomAccessFileManager$FactoryData
+instanceKlass org/apache/logging/log4j/core/appender/RandomAccessFileManager$RandomAccessFileManagerFactory
+instanceKlass org/apache/logging/log4j/message/MapMessage
+instanceKlass org/apache/logging/log4j/message/MultiformatMessage
+instanceKlass org/apache/logging/log4j/message/LoggerNameAwareMessage
+instanceKlass org/apache/logging/log4j/message/TimestampMessage
+instanceKlass org/apache/logging/log4j/spi/DefaultThreadContextMap
+instanceKlass org/apache/logging/log4j/spi/DefaultThreadContextStack
+instanceKlass org/apache/logging/log4j/spi/MutableThreadContextStack
+instanceKlass org/apache/logging/log4j/spi/ThreadContextMap
+instanceKlass org/apache/logging/log4j/spi/ThreadContextStack
+instanceKlass org/apache/logging/log4j/ThreadContext
+instanceKlass org/apache/logging/log4j/ThreadContext$ContextStack
+instanceKlass org/apache/logging/log4j/core/impl/Log4jLogEvent
+instanceKlass joptsimple/internal/Objects
+instanceKlass joptsimple/internal/Strings
+instanceKlass joptsimple/util/KeyValuePair
+instanceKlass joptsimple/OptionSet
+instanceKlass joptsimple/ArgumentList
+instanceKlass joptsimple/internal/ConstructorInvokingValueConverter
+instanceKlass joptsimple/internal/Classes
+instanceKlass joptsimple/ValueConverter
+instanceKlass joptsimple/internal/Reflection
+instanceKlass joptsimple/ParserRules
+instanceKlass java/lang/Character$CharacterCache
+instanceKlass joptsimple/OptionParserState
+instanceKlass joptsimple/internal/AbbreviationMap
+instanceKlass joptsimple/internal/Rows
+instanceKlass joptsimple/BuiltinHelpFormatter
+instanceKlass joptsimple/HelpFormatter
+instanceKlass joptsimple/AbstractOptionSpec
+instanceKlass joptsimple/OptionDescriptor
+instanceKlass joptsimple/OptionSpec
+instanceKlass joptsimple/OptionParser
+instanceKlass com/google/common/collect/Lists
+instanceKlass com/google/common/base/Strings
+instanceKlass com/google/gson/internal/bind/ReflectiveTypeAdapterFactory$BoundField
+instanceKlass com/google/gson/internal/bind/ReflectiveTypeAdapterFactory
+instanceKlass com/google/gson/internal/bind/MapTypeAdapterFactory
+instanceKlass com/google/gson/internal/bind/CollectionTypeAdapterFactory
+instanceKlass com/google/gson/internal/bind/ArrayTypeAdapter$1
+instanceKlass com/google/gson/internal/bind/SqlDateTypeAdapter$1
+instanceKlass com/google/gson/internal/bind/TimeTypeAdapter$1
+instanceKlass com/google/gson/internal/bind/DateTypeAdapter$1
+instanceKlass com/google/gson/internal/bind/ObjectTypeAdapter$1
+instanceKlass com/google/gson/internal/bind/TypeAdapters$26
+instanceKlass com/google/gson/internal/bind/TypeAdapters$30
+instanceKlass com/google/gson/internal/bind/TypeAdapters$22
+instanceKlass java/util/UUID
+instanceKlass com/google/gson/internal/bind/TypeAdapters$31
+instanceKlass java/net/URI
+instanceKlass com/google/gson/internal/bind/TypeAdapters$29
+instanceKlass com/google/gson/internal/bind/TypeAdapters$28
+instanceKlass com/google/gson/internal/bind/TypeAdapters
+instanceKlass com/google/gson/internal/ObjectConstructor
+instanceKlass com/google/gson/internal/ConstructorConstructor
+instanceKlass com/google/gson/Gson$2
+instanceKlass com/google/gson/Gson$1
+instanceKlass java/util/Collections$SynchronizedMap
+instanceKlass com/google/gson/JsonSerializationContext
+instanceKlass com/google/gson/JsonDeserializationContext
+instanceKlass com/google/gson/stream/JsonReader
+instanceKlass com/google/gson/stream/JsonWriter
+instanceKlass com/google/gson/Gson
+instanceKlass com/google/gson/JsonElement
+instanceKlass com/google/gson/internal/Excluder
+instanceKlass com/google/gson/TypeAdapterFactory
+instanceKlass com/google/gson/FieldNamingStrategy
+instanceKlass com/google/gson/GsonBuilder
+instanceKlass com/google/common/base/Joiner$MapJoiner
+instanceKlass com/google/common/base/Preconditions
+instanceKlass com/google/common/base/Joiner
+instanceKlass com/google/common/collect/Multiset
+instanceKlass com/google/common/collect/Collections2
+instanceKlass com/google/common/base/Converter
+instanceKlass com/google/common/collect/SortedMapDifference
+instanceKlass com/google/common/collect/MapDifference
+instanceKlass com/google/common/collect/ImmutableMap
+instanceKlass com/google/common/collect/UnmodifiableIterator
+instanceKlass com/google/common/base/Function
+instanceKlass com/google/common/collect/Maps$EntryTransformer
+instanceKlass com/google/common/collect/BiMap
+instanceKlass com/google/common/collect/Maps
+instanceKlass org/apache/logging/log4j/core/Logger$PrivateConfig
+instanceKlass org/apache/logging/log4j/core/helpers/NameUtil
+instanceKlass org/apache/logging/log4j/core/config/Loggers
+instanceKlass java/util/function/Consumer
+instanceKlass java/util/Spliterator
+instanceKlass org/apache/logging/log4j/util/EnglishEnums
+instanceKlass org/apache/logging/log4j/core/async/AsyncLoggerContextSelector
+instanceKlass java/util/concurrent/ConcurrentHashMap$MapEntry
+instanceKlass org/apache/logging/log4j/core/appender/rolling/PatternProcessor
+instanceKlass java/util/concurrent/Semaphore
+instanceKlass java/io/RandomAccessFile
+instanceKlass org/apache/logging/log4j/core/appender/rolling/RollingRandomAccessFileManager$FactoryData
+instanceKlass org/apache/logging/log4j/core/appender/rolling/RollingRandomAccessFileManager$RollingRandomAccessFileManagerFactory
+instanceKlass org/apache/logging/log4j/core/appender/rolling/RollingFileManager$RollingFileManagerFactory
+instanceKlass org/apache/logging/log4j/core/appender/FileManager$FileManagerFactory
+instanceKlass org/apache/logging/log4j/core/helpers/Integers
+instanceKlass org/apache/logging/log4j/core/config/plugins/PluginValue
+instanceKlass org/apache/logging/log4j/core/config/plugins/PluginNode
+instanceKlass org/apache/logging/log4j/core/config/plugins/PluginElement
+instanceKlass org/apache/logging/log4j/core/config/plugins/PluginConfiguration
+instanceKlass org/apache/logging/log4j/core/config/plugins/PluginAttribute
+instanceKlass org/apache/logging/log4j/core/config/plugins/PluginFactory
+instanceKlass com/sun/org/apache/xerces/internal/dom/NodeListCache
+instanceKlass com/sun/org/apache/xerces/internal/dom/CharacterDataImpl$1
+instanceKlass org/w3c/dom/Text
+instanceKlass org/w3c/dom/CharacterData
+instanceKlass org/apache/logging/log4j/core/config/plugins/PluginAliases
+instanceKlass com/google/gson/TypeAdapter
+instanceKlass java/util/zip/ZipUtils
+instanceKlass java/net/URLEncoder
+instanceKlass java/net/URLDecoder
+instanceKlass java/net/InetAddress$CacheEntry
+instanceKlass java/util/LinkedList$ListItr
+instanceKlass sun/net/InetAddressCachePolicy$2
+instanceKlass java/security/Security$1
+instanceKlass java/security/Security
+instanceKlass sun/net/InetAddressCachePolicy$1
+instanceKlass sun/net/InetAddressCachePolicy
+instanceKlass java/net/Inet4AddressImpl
+instanceKlass java/net/Inet6Address$Inet6AddressHolder
+instanceKlass java/net/InetAddress$2
+instanceKlass sun/net/spi/nameservice/NameService
+instanceKlass java/net/Inet6AddressImpl
+instanceKlass java/net/InetAddressImpl
+instanceKlass java/net/InetAddressImplFactory
+instanceKlass java/net/InetAddress$Cache
+instanceKlass java/net/InetAddress$InetAddressHolder
+instanceKlass java/net/InetAddress$1
+instanceKlass java/net/InetAddress
+instanceKlass org/apache/logging/log4j/core/helpers/NetUtils
+instanceKlass org/apache/logging/log4j/status/StatusConsoleListener
+instanceKlass org/w3c/dom/Attr
+instanceKlass com/sun/org/apache/xerces/internal/dom/NamedNodeMapImpl
+instanceKlass org/w3c/dom/NamedNodeMap
+instanceKlass org/w3c/dom/TypeInfo
+instanceKlass org/w3c/dom/Element
+instanceKlass com/sun/org/apache/xerces/internal/dom/DeferredDocumentImpl$RefCount
+instanceKlass com/sun/org/apache/xerces/internal/dom/NodeImpl
+instanceKlass org/w3c/dom/events/EventTarget
+instanceKlass org/w3c/dom/NodeList
+instanceKlass org/w3c/dom/Document
+instanceKlass org/w3c/dom/ranges/DocumentRange
+instanceKlass org/w3c/dom/events/DocumentEvent
+instanceKlass org/w3c/dom/traversal/DocumentTraversal
+instanceKlass com/sun/org/apache/xerces/internal/dom/DeferredNode
+instanceKlass org/w3c/dom/Node
+instanceKlass com/sun/org/apache/xerces/internal/utils/XMLLimitAnalyzer
+instanceKlass com/sun/org/apache/xerces/internal/impl/Constants$ArrayEnumeration
+instanceKlass java/util/ArrayList$SubList$1
+instanceKlass com/sun/org/apache/xerces/internal/impl/Constants
+instanceKlass com/sun/org/apache/xerces/internal/util/IntStack
+instanceKlass com/sun/org/apache/xerces/internal/xinclude/XIncludeMessageFormatter
+instanceKlass com/sun/org/apache/xerces/internal/util/XMLSymbols
+instanceKlass com/sun/org/apache/xerces/internal/xinclude/XIncludeHandler
+instanceKlass com/sun/org/apache/xerces/internal/util/XMLChar
+instanceKlass com/sun/xml/internal/stream/Entity
+instanceKlass com/sun/xml/internal/stream/util/BufferAllocator
+instanceKlass com/sun/xml/internal/stream/util/ThreadLocalBufferAllocator
+instanceKlass com/sun/org/apache/xerces/internal/xni/parser/XMLInputSource
+instanceKlass com/sun/org/apache/xerces/internal/utils/XMLSecurityManager
+instanceKlass com/sun/org/apache/xerces/internal/utils/SecuritySupport$8
+instanceKlass com/sun/org/apache/xerces/internal/utils/XMLSecurityPropertyManager
+instanceKlass com/sun/org/apache/xerces/internal/util/PropertyState
+instanceKlass com/sun/org/apache/xerces/internal/util/FeatureState
+instanceKlass com/sun/org/apache/xerces/internal/impl/msg/XMLMessageFormatter
+instanceKlass com/sun/org/apache/xerces/internal/util/MessageFormatter
+instanceKlass com/sun/org/apache/xerces/internal/impl/XMLVersionDetector
+instanceKlass com/sun/org/apache/xerces/internal/impl/validation/ValidationManager
+instanceKlass com/sun/org/apache/xerces/internal/impl/dv/dtd/NMTOKENDatatypeValidator
+instanceKlass com/sun/org/apache/xerces/internal/impl/dv/dtd/NOTATIONDatatypeValidator
+instanceKlass com/sun/org/apache/xerces/internal/impl/dv/dtd/ENTITYDatatypeValidator
+instanceKlass com/sun/org/apache/xerces/internal/impl/dv/dtd/ListDatatypeValidator
+instanceKlass com/sun/org/apache/xerces/internal/impl/dv/dtd/IDREFDatatypeValidator
+instanceKlass com/sun/org/apache/xerces/internal/impl/dv/dtd/IDDatatypeValidator
+instanceKlass com/sun/org/apache/xerces/internal/impl/dv/dtd/StringDatatypeValidator
+instanceKlass com/sun/org/apache/xerces/internal/impl/dv/DatatypeValidator
+instanceKlass com/sun/org/apache/xerces/internal/utils/SecuritySupport$3
+instanceKlass com/sun/org/apache/xerces/internal/utils/SecuritySupport$2
+instanceKlass com/sun/org/apache/xerces/internal/utils/SecuritySupport$1
+instanceKlass com/sun/org/apache/xerces/internal/utils/SecuritySupport$4
+instanceKlass com/sun/org/apache/xerces/internal/utils/SecuritySupport
+instanceKlass com/sun/org/apache/xerces/internal/utils/ObjectFactory
+instanceKlass com/sun/org/apache/xerces/internal/impl/dv/DTDDVFactory
+instanceKlass com/sun/org/apache/xerces/internal/impl/dtd/DTDGrammarBucket
+instanceKlass com/sun/org/apache/xerces/internal/impl/dtd/XMLAttributeDecl
+instanceKlass com/sun/org/apache/xerces/internal/impl/dtd/XMLSimpleType
+instanceKlass com/sun/org/apache/xerces/internal/impl/dtd/XMLElementDecl
+instanceKlass com/sun/org/apache/xerces/internal/impl/validation/ValidationState
+instanceKlass com/sun/org/apache/xerces/internal/impl/dv/ValidationContext
+instanceKlass com/sun/org/apache/xerces/internal/impl/dtd/XMLDTDValidator
+instanceKlass com/sun/org/apache/xerces/internal/impl/RevalidationHandler
+instanceKlass com/sun/org/apache/xerces/internal/impl/dtd/XMLDTDValidatorFilter
+instanceKlass com/sun/org/apache/xerces/internal/xni/parser/XMLDocumentFilter
+instanceKlass com/sun/org/apache/xerces/internal/impl/dtd/XMLEntityDecl
+instanceKlass com/sun/org/apache/xerces/internal/impl/dtd/XMLDTDProcessor
+instanceKlass com/sun/org/apache/xerces/internal/xni/parser/XMLDTDContentModelFilter
+instanceKlass com/sun/org/apache/xerces/internal/xni/parser/XMLDTDFilter
+instanceKlass com/sun/org/apache/xerces/internal/xni/parser/XMLDTDScanner
+instanceKlass com/sun/org/apache/xerces/internal/xni/parser/XMLDTDContentModelSource
+instanceKlass com/sun/org/apache/xerces/internal/xni/parser/XMLDTDSource
+instanceKlass com/sun/org/apache/xerces/internal/xni/grammars/XMLDTDDescription
+instanceKlass com/sun/org/apache/xerces/internal/xni/grammars/XMLGrammarDescription
+instanceKlass com/sun/org/apache/xerces/internal/impl/XMLDocumentScannerImpl$TrailingMiscDriver
+instanceKlass com/sun/org/apache/xerces/internal/impl/XMLDocumentScannerImpl$PrologDriver
+instanceKlass com/sun/org/apache/xerces/internal/impl/XMLDocumentScannerImpl$XMLDeclDriver
+instanceKlass com/sun/org/apache/xerces/internal/util/NamespaceSupport
+instanceKlass com/sun/org/apache/xerces/internal/xni/NamespaceContext
+instanceKlass com/sun/org/apache/xerces/internal/util/XMLAttributesImpl$Attribute
+instanceKlass com/sun/org/apache/xerces/internal/util/XMLAttributesImpl
+instanceKlass com/sun/org/apache/xerces/internal/xni/XMLAttributes
+instanceKlass com/sun/org/apache/xerces/internal/impl/XMLDocumentFragmentScannerImpl$FragmentContentDriver
+instanceKlass com/sun/org/apache/xerces/internal/impl/XMLDocumentFragmentScannerImpl$Driver
+instanceKlass com/sun/org/apache/xerces/internal/impl/XMLDocumentFragmentScannerImpl$ElementStack2
+instanceKlass com/sun/org/apache/xerces/internal/xni/QName
+instanceKlass com/sun/org/apache/xerces/internal/impl/XMLDocumentFragmentScannerImpl$ElementStack
+instanceKlass com/sun/org/apache/xerces/internal/xni/XMLString
+instanceKlass com/sun/org/apache/xerces/internal/impl/XMLScanner
+instanceKlass com/sun/xml/internal/stream/XMLBufferListener
+instanceKlass com/sun/org/apache/xerces/internal/impl/XMLEntityHandler
+instanceKlass com/sun/org/apache/xerces/internal/xni/parser/XMLDocumentScanner
+instanceKlass com/sun/org/apache/xerces/internal/xni/parser/XMLDocumentSource
+instanceKlass com/sun/org/apache/xerces/internal/impl/XMLErrorReporter
+instanceKlass com/sun/org/apache/xerces/internal/impl/XMLEntityScanner
+instanceKlass com/sun/org/apache/xerces/internal/xni/XMLLocator
+instanceKlass com/sun/xml/internal/stream/XMLEntityStorage
+instanceKlass com/sun/org/apache/xerces/internal/impl/XMLEntityManager$CharacterBuffer
+instanceKlass com/sun/org/apache/xerces/internal/impl/XMLEntityManager$CharacterBufferPool
+instanceKlass com/sun/org/apache/xerces/internal/util/AugmentationsImpl$AugmentationsItemsContainer
+instanceKlass com/sun/org/apache/xerces/internal/util/AugmentationsImpl
+instanceKlass com/sun/org/apache/xerces/internal/xni/Augmentations
+instanceKlass com/sun/org/apache/xerces/internal/util/XMLResourceIdentifierImpl
+instanceKlass com/sun/org/apache/xerces/internal/xni/XMLResourceIdentifier
+instanceKlass com/sun/org/apache/xerces/internal/impl/XMLEntityManager
+instanceKlass com/sun/org/apache/xerces/internal/xni/parser/XMLEntityResolver
+instanceKlass com/sun/org/apache/xerces/internal/xni/parser/XMLComponent
+instanceKlass com/sun/org/apache/xerces/internal/util/SymbolTable$Entry
+instanceKlass com/sun/org/apache/xerces/internal/util/SymbolTable
+instanceKlass com/sun/org/apache/xerces/internal/util/ParserConfigurationSettings
+instanceKlass com/sun/org/apache/xerces/internal/parsers/XML11Configurable
+instanceKlass com/sun/org/apache/xerces/internal/xni/parser/XMLPullParserConfiguration
+instanceKlass com/sun/org/apache/xerces/internal/xni/parser/XMLParserConfiguration
+instanceKlass com/sun/org/apache/xerces/internal/xni/parser/XMLComponentManager
+instanceKlass com/sun/org/apache/xerces/internal/parsers/XMLParser
+instanceKlass com/sun/org/apache/xerces/internal/xni/XMLDTDContentModelHandler
+instanceKlass com/sun/org/apache/xerces/internal/xni/XMLDTDHandler
+instanceKlass com/sun/org/apache/xerces/internal/xni/XMLDocumentHandler
+instanceKlass javax/xml/parsers/DocumentBuilder
+instanceKlass com/sun/org/apache/xerces/internal/jaxp/JAXPConstants
+instanceKlass javax/xml/parsers/SecuritySupport$1
+instanceKlass javax/xml/parsers/FactoryFinder$1
+instanceKlass javax/xml/parsers/SecuritySupport$5
+instanceKlass javax/xml/parsers/SecuritySupport$2
+instanceKlass javax/xml/parsers/SecuritySupport
+instanceKlass javax/xml/parsers/FactoryFinder
+instanceKlass javax/xml/parsers/DocumentBuilderFactory
+instanceKlass org/xml/sax/InputSource
+instanceKlass javax/xml/transform/Source
+instanceKlass org/apache/logging/log4j/core/config/Reconfigurable
+instanceKlass org/apache/logging/log4j/core/config/ConfigurationFactory$ConfigurationSource
+instanceKlass org/apache/logging/log4j/core/helpers/FileUtils
+instanceKlass org/apache/logging/log4j/core/config/ConfigurationFactory$WeightedFactory
+instanceKlass org/apache/logging/log4j/core/config/Order
+instanceKlass org/apache/logging/log4j/core/appender/DefaultErrorHandler
+instanceKlass org/apache/logging/log4j/core/appender/ConsoleAppender$FactoryData
+instanceKlass org/apache/logging/log4j/core/impl/ThrowableFormatOptions
+instanceKlass org/apache/logging/log4j/core/pattern/PatternFormatter
+instanceKlass org/apache/logging/log4j/core/pattern/PatternParser$1
+instanceKlass org/apache/logging/log4j/core/pattern/FormattingInfo
+instanceKlass sun/reflect/ClassDefiner$1
+instanceKlass sun/reflect/ClassDefiner
+instanceKlass sun/reflect/MethodAccessorGenerator$1
+instanceKlass sun/reflect/Label$PatchInfo
+instanceKlass sun/reflect/Label
+instanceKlass sun/reflect/UTF8
+instanceKlass sun/reflect/ClassFileAssembler
+instanceKlass sun/reflect/ByteVectorImpl
+instanceKlass sun/reflect/ByteVector
+instanceKlass sun/reflect/ByteVectorFactory
+instanceKlass sun/reflect/AccessorGenerator
+instanceKlass sun/reflect/ClassFileConstants
+instanceKlass org/apache/logging/log4j/core/config/plugins/Plugin
+instanceKlass org/apache/logging/log4j/core/pattern/ConverterKeys
+instanceKlass org/apache/logging/log4j/core/config/plugins/ResolverUtil$ClassTest
+instanceKlass org/apache/logging/log4j/core/helpers/Closer
+instanceKlass org/apache/logging/log4j/core/lookup/WebLookup
+instanceKlass org/apache/logging/log4j/core/lookup/ContextMapLookup
+instanceKlass org/apache/logging/log4j/core/lookup/DateLookup
+instanceKlass org/apache/logging/log4j/core/lookup/StructuredDataLookup
+instanceKlass org/apache/logging/log4j/core/pattern/FileDatePatternConverter
+instanceKlass org/apache/logging/log4j/core/pattern/NameAbbreviator
+instanceKlass java/util/EnumMap$1
+instanceKlass org/apache/logging/log4j/core/config/plugins/AppendersPlugin
+instanceKlass org/apache/logging/log4j/core/layout/RFC5424Layout$ListChecker
+instanceKlass org/apache/logging/log4j/core/appender/ConsoleAppender$ConsoleManagerFactory
+instanceKlass org/apache/logging/log4j/core/appender/ManagerFactory
+instanceKlass org/apache/logging/log4j/core/helpers/KeyValuePair
+instanceKlass org/apache/logging/log4j/core/layout/LoggerFields
+instanceKlass org/apache/logging/log4j/core/pattern/RegexReplacement
+instanceKlass org/apache/logging/log4j/core/appender/rewrite/MapRewritePolicy
+instanceKlass java/lang/Throwable$PrintStreamOrWriter
+instanceKlass org/apache/logging/log4j/core/net/MulticastDNSAdvertiser
+instanceKlass java/util/concurrent/Delayed
+instanceKlass org/apache/logging/log4j/core/appender/rewrite/PropertiesRewritePolicy
+instanceKlass org/apache/logging/log4j/core/appender/rewrite/RewritePolicy
+instanceKlass org/apache/logging/log4j/core/appender/db/jdbc/DataSourceConnectionSource
+instanceKlass org/apache/logging/log4j/core/appender/FailoversPlugin
+instanceKlass org/apache/logging/log4j/core/appender/routing/Routes
+instanceKlass org/apache/logging/log4j/core/config/Property
+instanceKlass org/apache/logging/log4j/core/config/AppenderRef
+instanceKlass org/apache/logging/log4j/core/appender/rolling/TimeBasedTriggeringPolicy
+instanceKlass org/apache/logging/log4j/core/appender/db/jdbc/DriverManagerConnectionSource
+instanceKlass org/apache/logging/log4j/core/config/plugins/LoggersPlugin
+instanceKlass java/util/regex/ASCII
+instanceKlass org/apache/logging/log4j/core/appender/rolling/SizeBasedTriggeringPolicy
+instanceKlass org/apache/logging/log4j/core/appender/rolling/RolloverDescription
+instanceKlass org/apache/logging/log4j/core/appender/rolling/helper/Action
+instanceKlass org/apache/logging/log4j/core/appender/rolling/DefaultRolloverStrategy
+instanceKlass org/apache/logging/log4j/core/appender/rolling/RolloverStrategy
+instanceKlass org/apache/logging/log4j/core/appender/db/nosql/mongo/MongoDBProvider
+instanceKlass javax/sql/DataSource
+instanceKlass java/sql/Wrapper
+instanceKlass javax/sql/CommonDataSource
+instanceKlass org/apache/logging/log4j/core/appender/db/jdbc/FactoryMethodConnectionSource
+instanceKlass org/apache/logging/log4j/core/appender/db/jdbc/ConnectionSource
+instanceKlass org/apache/logging/log4j/core/net/ssl/SSLConfiguration
+instanceKlass org/apache/logging/log4j/core/config/plugins/PropertiesPlugin
+instanceKlass org/apache/logging/log4j/core/appender/db/nosql/NoSQLConnection
+instanceKlass org/apache/logging/log4j/core/appender/db/nosql/couch/CouchDBProvider
+instanceKlass org/apache/logging/log4j/core/appender/db/nosql/NoSQLProvider
+instanceKlass org/apache/logging/log4j/core/filter/CompositeFilter
+instanceKlass org/apache/logging/log4j/core/net/ssl/StoreConfiguration
+instanceKlass org/apache/logging/log4j/core/appender/db/jdbc/ColumnConfig
+instanceKlass org/apache/logging/log4j/core/filter/AbstractFilter
+instanceKlass java/util/regex/Pattern$TreeInfo
+instanceKlass java/util/regex/Pattern$Node
+instanceKlass java/util/regex/Pattern
+instanceKlass java/io/Bits
+instanceKlass java/io/ObjectOutputStream$ReplaceTable
+instanceKlass java/io/ObjectOutputStream$HandleTable
+instanceKlass java/io/ObjectStreamConstants
+instanceKlass java/io/ObjectOutput
+instanceKlass org/apache/logging/log4j/core/appender/rolling/CompositeTriggeringPolicy
+instanceKlass org/apache/logging/log4j/core/helpers/Constants
+instanceKlass org/apache/logging/log4j/core/appender/AbstractManager
+instanceKlass org/apache/logging/log4j/core/appender/rolling/OnStartupTriggeringPolicy
+instanceKlass org/apache/logging/log4j/core/appender/rolling/TriggeringPolicy
+instanceKlass org/apache/logging/log4j/core/appender/routing/Route
+instanceKlass org/apache/logging/log4j/core/ErrorHandler
+instanceKlass org/apache/logging/log4j/core/config/plugins/PluginType
+instanceKlass org/apache/logging/log4j/core/config/ConfigurationFactory
+instanceKlass org/apache/logging/log4j/core/config/plugins/ResolverUtil
+instanceKlass org/apache/logging/log4j/core/pattern/ArrayPatternConverter
+instanceKlass org/apache/logging/log4j/core/pattern/AbstractPatternConverter
+instanceKlass org/apache/logging/log4j/core/pattern/PatternConverter
+instanceKlass org/apache/logging/log4j/core/pattern/PatternParser
+instanceKlass org/apache/logging/log4j/core/helpers/Booleans
+instanceKlass org/apache/logging/log4j/core/helpers/Charsets
+instanceKlass org/apache/logging/log4j/core/layout/AbstractLayout
+instanceKlass org/apache/logging/log4j/core/config/Node
+instanceKlass org/apache/logging/log4j/core/config/plugins/ResolverUtil$Test
+instanceKlass org/apache/logging/log4j/core/config/plugins/PluginManager
+instanceKlass org/apache/logging/log4j/core/LogEvent
+instanceKlass org/apache/logging/log4j/core/impl/DefaultLogEventFactory
+instanceKlass org/apache/logging/log4j/core/impl/LogEventFactory
+instanceKlass org/apache/logging/log4j/core/helpers/Strings
+instanceKlass java/util/DualPivotQuicksort
+instanceKlass org/apache/logging/log4j/core/lookup/StrMatcher
+instanceKlass org/apache/logging/log4j/core/lookup/StrSubstitutor
+instanceKlass org/apache/logging/log4j/core/lookup/JndiLookup
+instanceKlass org/apache/logging/log4j/core/lookup/EnvironmentLookup
+instanceKlass org/apache/logging/log4j/core/lookup/SystemPropertiesLookup
+instanceKlass org/apache/logging/log4j/core/lookup/MapLookup
+instanceKlass org/apache/logging/log4j/core/lookup/Interpolator
+instanceKlass org/apache/logging/log4j/core/config/DefaultAdvertiser
+instanceKlass org/apache/logging/log4j/core/config/DefaultConfigurationMonitor
+instanceKlass org/apache/logging/log4j/core/Appender
+instanceKlass org/apache/logging/log4j/core/Layout
+instanceKlass org/apache/logging/log4j/core/lookup/StrLookup
+instanceKlass org/apache/logging/log4j/core/net/Advertiser
+instanceKlass org/apache/logging/log4j/core/config/ConfigurationMonitor
+instanceKlass org/apache/logging/log4j/core/Filter
+instanceKlass org/apache/logging/log4j/core/filter/AbstractFilterable
+instanceKlass org/apache/logging/log4j/core/config/Configuration
+instanceKlass org/apache/logging/log4j/core/filter/Filterable
+instanceKlass org/apache/logging/log4j/core/LoggerContext
+instanceKlass org/apache/logging/log4j/core/LifeCycle
+instanceKlass org/apache/logging/log4j/core/config/ConfigurationListener
+instanceKlass java/text/DontCareFieldPosition$1
+instanceKlass java/text/Format$FieldDelegate
+instanceKlass java/text/DigitList
+instanceKlass java/text/FieldPosition
+instanceKlass java/util/Currency$CurrencyNameGetter
+instanceKlass java/util/Currency$1
+instanceKlass java/util/Currency
+instanceKlass java/text/DecimalFormatSymbols
+instanceKlass java/util/concurrent/atomic/AtomicMarkableReference$Pair
+instanceKlass java/util/concurrent/atomic/AtomicMarkableReference
+instanceKlass java/text/DateFormatSymbols
+instanceKlass sun/util/calendar/CalendarUtils
+instanceKlass sun/util/calendar/CalendarDate
+instanceKlass sun/util/locale/LanguageTag
+instanceKlass java/util/LinkedList$Node
+instanceKlass java/util/ResourceBundle$CacheKeyReference
+instanceKlass java/util/ResourceBundle$CacheKey
+instanceKlass java/util/ResourceBundle$RBClassLoader$1
+instanceKlass java/util/spi/ResourceBundleControlProvider
+instanceKlass java/util/ResourceBundle
+instanceKlass java/util/ResourceBundle$Control
+instanceKlass sun/util/resources/LocaleData$1
+instanceKlass sun/util/resources/LocaleData
+instanceKlass sun/util/locale/provider/LocaleResources
+instanceKlass sun/util/locale/provider/CalendarDataUtility$CalendarWeekParameterGetter
+instanceKlass sun/util/locale/provider/LocaleServiceProviderPool$LocalizedObjectGetter
+instanceKlass java/util/ServiceLoader$1
+instanceKlass java/util/ServiceLoader$LazyIterator
+instanceKlass java/util/ServiceLoader
+instanceKlass sun/util/locale/provider/SPILocaleProviderAdapter$1
+instanceKlass sun/util/locale/provider/LocaleServiceProviderPool
+instanceKlass sun/util/locale/provider/CalendarDataUtility
+instanceKlass java/util/Calendar$Builder
+instanceKlass sun/util/locale/provider/JRELocaleProviderAdapter$1
+instanceKlass sun/util/locale/provider/LocaleDataMetaInfo
+instanceKlass sun/util/locale/provider/AvailableLanguageTags
+instanceKlass sun/util/locale/provider/LocaleProviderAdapter$1
+instanceKlass sun/util/locale/provider/ResourceBundleBasedAdapter
+instanceKlass sun/util/locale/provider/LocaleProviderAdapter
+instanceKlass java/util/spi/LocaleServiceProvider
+instanceKlass java/util/Calendar
+instanceKlass java/util/TimeZone$1
+instanceKlass java/util/zip/CRC32
+instanceKlass java/util/zip/Checksum
+instanceKlass sun/util/calendar/ZoneInfoFile$ZoneOffsetTransitionRule
+instanceKlass java/io/DataInput
+instanceKlass sun/util/calendar/ZoneInfoFile$1
+instanceKlass sun/util/calendar/ZoneInfoFile
+instanceKlass java/util/TimeZone
+instanceKlass java/util/Locale$1
+instanceKlass java/text/AttributedCharacterIterator$Attribute
+instanceKlass org/apache/logging/log4j/message/SimpleMessage
+instanceKlass java/util/Collections$UnmodifiableCollection$1
+instanceKlass java/util/concurrent/ConcurrentHashMap$Traverser
+instanceKlass org/apache/logging/log4j/core/helpers/Assert
+instanceKlass org/apache/logging/log4j/core/jmx/ContextSelectorAdmin
+instanceKlass org/apache/logging/log4j/core/jmx/ContextSelectorAdminMBean
+instanceKlass javax/management/NotificationFilter
+instanceKlass javax/management/NotificationListener
+instanceKlass org/apache/logging/log4j/status/StatusData
+instanceKlass org/apache/logging/log4j/core/jmx/StatusLoggerAdminMBean
+instanceKlass org/apache/logging/log4j/status/StatusListener
+instanceKlass java/util/concurrent/Executors$DefaultThreadFactory
+instanceKlass java/util/concurrent/ThreadFactory
+instanceKlass java/util/concurrent/LinkedBlockingQueue$Node
+instanceKlass java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject
+instanceKlass java/util/concurrent/locks/Condition
+instanceKlass java/util/concurrent/BlockingQueue
+instanceKlass java/util/concurrent/ThreadPoolExecutor$AbortPolicy
+instanceKlass java/util/concurrent/RejectedExecutionHandler
+instanceKlass java/util/concurrent/AbstractExecutorService
+instanceKlass java/util/concurrent/ExecutorService
+instanceKlass java/util/concurrent/Executors
+instanceKlass sun/management/Flag$1
+instanceKlass sun/management/Flag
+instanceKlass sun/management/ExtendedPlatformComponent
+instanceKlass java/util/AbstractList$Itr
+instanceKlass sun/management/DiagnosticCommandImpl$Wrapper
+instanceKlass sun/management/DiagnosticCommandArgumentInfo
+instanceKlass sun/management/DiagnosticCommandInfo
+instanceKlass sun/management/DiagnosticCommandImpl$OperationInfoComparator
+instanceKlass java/lang/management/ManagementFactory$3
+instanceKlass com/sun/management/DiagnosticCommandMBean
+instanceKlass com/sun/management/VMOption
+instanceKlass sun/management/HotSpotDiagnostic
+instanceKlass com/sun/management/HotSpotDiagnosticMXBean
+instanceKlass java/util/Collections$EmptyIterator
+instanceKlass com/sun/management/UnixOperatingSystemMXBean
+instanceKlass sun/nio/ch/FileChannelImpl$1
+instanceKlass sun/nio/ch/IOUtil$1
+instanceKlass sun/nio/ch/IOUtil
+instanceKlass java/nio/file/attribute/FileAttribute
+instanceKlass java/nio/channels/spi/AbstractInterruptibleChannel
+instanceKlass java/nio/channels/InterruptibleChannel
+instanceKlass java/nio/channels/ScatteringByteChannel
+instanceKlass java/nio/channels/GatheringByteChannel
+instanceKlass java/nio/channels/SeekableByteChannel
+instanceKlass java/nio/channels/ByteChannel
+instanceKlass java/nio/channels/WritableByteChannel
+instanceKlass java/nio/channels/ReadableByteChannel
+instanceKlass java/nio/channels/Channel
+instanceKlass sun/management/ManagementFactoryHelper$1
+instanceKlass java/nio/Bits$1$1
+instanceKlass sun/misc/JavaNioAccess$BufferPool
+instanceKlass java/lang/management/BufferPoolMXBean
+instanceKlass javax/management/MBeanInfo$ArrayGettersSafeAction
+instanceKlass javax/management/openmbean/OpenMBeanOperationInfo
+instanceKlass sun/management/ManagementFactoryHelper$PlatformLoggingImpl
+instanceKlass sun/management/ManagementFactoryHelper$LoggingMXBean
+instanceKlass java/util/logging/LoggingMXBean
+instanceKlass java/lang/management/PlatformLoggingMXBean
+instanceKlass java/lang/management/LockInfo
+instanceKlass java/lang/management/ThreadInfo
+instanceKlass sun/management/ThreadImpl
+instanceKlass com/sun/management/ThreadMXBean
+instanceKlass java/lang/management/ThreadMXBean
+instanceKlass sun/reflect/generics/tree/TypeVariableSignature
+instanceKlass sun/management/RuntimeImpl
+instanceKlass java/lang/management/RuntimeMXBean
+instanceKlass sun/management/BaseOperatingSystemImpl
+instanceKlass com/sun/management/OperatingSystemMXBean
+instanceKlass java/lang/management/OperatingSystemMXBean
+instanceKlass sun/management/Sensor
+instanceKlass sun/management/MemoryPoolImpl
+instanceKlass java/lang/management/MemoryPoolMXBean
+instanceKlass javax/management/DescriptorKey
+instanceKlass sun/reflect/generics/reflectiveObjects/LazyReflectiveObjectGenerator
+instanceKlass java/lang/reflect/TypeVariable
+instanceKlass sun/reflect/generics/tree/ClassSignature
+instanceKlass sun/reflect/generics/reflectiveObjects/ParameterizedTypeImpl
+instanceKlass java/lang/reflect/ParameterizedType
+instanceKlass sun/reflect/generics/tree/MethodTypeSignature
+instanceKlass sun/reflect/generics/tree/Signature
+instanceKlass sun/reflect/generics/tree/FormalTypeParameter
+instanceKlass com/sun/management/GcInfo
+instanceKlass javax/management/openmbean/CompositeDataView
+instanceKlass java/lang/annotation/Target
+instanceKlass java/lang/reflect/WeakCache$Value
+instanceKlass sun/misc/ProxyGenerator$ExceptionTableEntry
+instanceKlass sun/misc/ProxyGenerator$PrimitiveTypeInfo
+instanceKlass sun/misc/ProxyGenerator$FieldInfo
+instanceKlass java/io/DataOutput
+instanceKlass sun/misc/ProxyGenerator$ConstantPool$Entry
+instanceKlass sun/misc/ProxyGenerator$MethodInfo
+instanceKlass sun/misc/ProxyGenerator$ProxyMethod
+instanceKlass sun/misc/ProxyGenerator$ConstantPool
+instanceKlass sun/misc/ProxyGenerator
+instanceKlass java/lang/reflect/WeakCache$Factory
+instanceKlass java/util/function/Supplier
+instanceKlass sun/reflect/annotation/AnnotationInvocationHandler
+instanceKlass sun/reflect/annotation/AnnotationParser$1
+instanceKlass java/lang/Class$4
+instanceKlass java/lang/annotation/Documented
+instanceKlass java/lang/annotation/Inherited
+instanceKlass java/lang/annotation/Retention
+instanceKlass sun/reflect/annotation/ExceptionProxy
+instanceKlass sun/reflect/annotation/AnnotationType$1
+instanceKlass jdk/Exported
+instanceKlass sun/reflect/generics/visitor/Reifier
+instanceKlass sun/reflect/generics/visitor/TypeTreeVisitor
+instanceKlass sun/reflect/generics/factory/CoreReflectionFactory
+instanceKlass sun/reflect/generics/factory/GenericsFactory
+instanceKlass sun/reflect/generics/scope/AbstractScope
+instanceKlass sun/reflect/generics/scope/Scope
+instanceKlass sun/reflect/generics/tree/ClassTypeSignature
+instanceKlass sun/reflect/generics/tree/SimpleClassTypeSignature
+instanceKlass sun/reflect/generics/tree/FieldTypeSignature
+instanceKlass sun/reflect/generics/tree/BaseType
+instanceKlass sun/reflect/generics/tree/TypeSignature
+instanceKlass sun/reflect/generics/tree/ReturnType
+instanceKlass sun/reflect/generics/tree/TypeArgument
+instanceKlass sun/reflect/generics/tree/TypeTree
+instanceKlass sun/reflect/generics/tree/Tree
+instanceKlass sun/reflect/generics/parser/SignatureParser
+instanceKlass com/sun/management/GarbageCollectorMXBean
+instanceKlass sun/management/ManagementFactory
+instanceKlass java/lang/management/GarbageCollectorMXBean
+instanceKlass java/lang/management/MemoryManagerMXBean
+instanceKlass com/sun/jmx/mbeanserver/PerInterface$MethodAndSig
+instanceKlass java/lang/management/MemoryUsage
+instanceKlass sun/management/NotificationEmitterSupport
+instanceKlass java/lang/management/MemoryMXBean
+instanceKlass sun/management/CompilationImpl
+instanceKlass sun/management/VMManagementImpl$1
+instanceKlass java/lang/management/CompilationMXBean
+instanceKlass com/sun/jmx/mbeanserver/WeakIdentityHashMap
+instanceKlass com/sun/jmx/mbeanserver/MXBeanLookup
+instanceKlass com/sun/jmx/mbeanserver/PerInterface$InitMaps
+instanceKlass com/sun/jmx/mbeanserver/PerInterface
+instanceKlass javax/management/openmbean/OpenMBeanAttributeInfo
+instanceKlass javax/management/openmbean/OpenMBeanParameterInfo
+instanceKlass java/lang/reflect/GenericArrayType
+instanceKlass com/sun/jmx/mbeanserver/MBeanIntrospector$MBeanInfoMaker
+instanceKlass com/sun/jmx/mbeanserver/MBeanAnalyzer$MBeanVisitor
+instanceKlass java/util/LinkedHashMap$LinkedHashIterator
+instanceKlass com/sun/jmx/mbeanserver/MBeanAnalyzer$AttrMethods
+instanceKlass com/sun/jmx/mbeanserver/MXBeanMapping
+instanceKlass javax/management/openmbean/TabularData
+instanceKlass javax/management/openmbean/CompositeData
+instanceKlass javax/management/openmbean/OpenType
+instanceKlass com/sun/jmx/mbeanserver/MXBeanMappingFactory
+instanceKlass com/sun/jmx/mbeanserver/ConvertingMethod
+instanceKlass java/util/TimSort
+instanceKlass com/sun/jmx/mbeanserver/MBeanAnalyzer$MethodOrder
+instanceKlass com/sun/jmx/mbeanserver/MBeanAnalyzer
+instanceKlass com/sun/jmx/mbeanserver/MBeanIntrospector
+instanceKlass java/lang/reflect/Proxy$ProxyClassFactory
+instanceKlass java/lang/reflect/Proxy$KeyFactory
+instanceKlass java/util/function/BiFunction
+instanceKlass java/lang/reflect/WeakCache
+instanceKlass java/lang/reflect/InvocationHandler
+instanceKlass java/lang/reflect/Proxy
+instanceKlass sun/reflect/annotation/AnnotationParser
+instanceKlass javax/management/MXBean
+instanceKlass com/sun/jmx/mbeanserver/MBeanSupport
+instanceKlass com/sun/jmx/mbeanserver/DescriptorCache
+instanceKlass javax/management/JMX
+instanceKlass javax/management/StandardMBean
+instanceKlass java/lang/management/ManagementFactory$2
+instanceKlass sun/management/Util
+instanceKlass java/util/Collections$1
+instanceKlass sun/management/ClassLoadingImpl
+instanceKlass sun/management/VMManagementImpl
+instanceKlass sun/management/VMManagement
+instanceKlass sun/management/ManagementFactoryHelper$4
+instanceKlass sun/management/ManagementFactoryHelper
+instanceKlass java/lang/management/ClassLoadingMXBean
+instanceKlass java/lang/management/PlatformManagedObject
+instanceKlass java/lang/management/PlatformComponent$15
+instanceKlass java/lang/management/PlatformComponent$14
+instanceKlass java/lang/management/PlatformComponent$13
+instanceKlass java/lang/management/PlatformComponent$12
+instanceKlass java/lang/management/PlatformComponent$11
+instanceKlass java/lang/management/PlatformComponent$10
+instanceKlass java/lang/management/PlatformComponent$9
+instanceKlass java/lang/management/PlatformComponent$8
+instanceKlass java/lang/management/PlatformComponent$7
+instanceKlass java/lang/management/PlatformComponent$6
+instanceKlass java/lang/management/PlatformComponent$5
+instanceKlass java/lang/management/PlatformComponent$4
+instanceKlass java/lang/management/PlatformComponent$3
+instanceKlass java/lang/management/PlatformComponent$2
+instanceKlass java/lang/management/PlatformComponent$1
+instanceKlass java/lang/management/PlatformComponent$MXBeanFetcher
+instanceKlass com/sun/jmx/mbeanserver/JmxMBeanServer$3
+instanceKlass javax/management/ObjectInstance
+instanceKlass java/util/concurrent/CopyOnWriteArrayList$COWIterator
+instanceKlass java/util/ListIterator
+instanceKlass sun/util/calendar/CalendarSystem
+instanceKlass java/util/Date
+instanceKlass java/util/EventObject
+instanceKlass com/sun/jmx/mbeanserver/NamedObject
+instanceKlass com/sun/jmx/interceptor/DefaultMBeanServerInterceptor$ResourceContext$1
+instanceKlass com/sun/jmx/interceptor/DefaultMBeanServerInterceptor$ResourceContext
+instanceKlass com/sun/jmx/mbeanserver/Repository$RegistrationContext
+instanceKlass com/sun/jmx/mbeanserver/DynamicMBean2
+instanceKlass com/sun/jmx/defaults/JmxProperties
+instanceKlass com/sun/jmx/mbeanserver/Introspector
+instanceKlass com/sun/jmx/mbeanserver/JmxMBeanServer$2
+instanceKlass com/sun/jmx/interceptor/DefaultMBeanServerInterceptor
+instanceKlass com/sun/jmx/interceptor/MBeanServerInterceptor
+instanceKlass com/sun/jmx/mbeanserver/Repository
+instanceKlass com/sun/jmx/mbeanserver/JmxMBeanServer$1
+instanceKlass com/sun/jmx/mbeanserver/SecureClassLoaderRepository
+instanceKlass com/sun/jmx/mbeanserver/MBeanInstantiator
+instanceKlass com/sun/jmx/mbeanserver/ClassLoaderRepositorySupport$LoaderEntry
+instanceKlass com/sun/jmx/mbeanserver/ClassLoaderRepositorySupport
+instanceKlass com/sun/jmx/mbeanserver/ModifiableClassLoaderRepository
+instanceKlass javax/management/loading/ClassLoaderRepository
+instanceKlass java/util/NavigableSet
+instanceKlass java/util/SortedSet
+instanceKlass java/util/TreeMap$PrivateEntryIterator
+instanceKlass javax/management/ImmutableDescriptor
+instanceKlass javax/management/Descriptor
+instanceKlass java/util/logging/LogManager$5
+instanceKlass sun/reflect/UnsafeFieldAccessorFactory
+instanceKlass java/util/logging/LoggingProxyImpl
+instanceKlass sun/util/logging/LoggingProxy
+instanceKlass sun/util/logging/LoggingSupport$1
+instanceKlass sun/util/logging/LoggingSupport
+instanceKlass sun/util/logging/PlatformLogger$LoggerProxy
+instanceKlass sun/util/logging/PlatformLogger$1
+instanceKlass sun/util/logging/PlatformLogger
+instanceKlass java/util/logging/LogManager$LoggerContext$1
+instanceKlass java/util/logging/LogManager$3
+instanceKlass java/util/logging/LogManager$2
+instanceKlass java/lang/Shutdown$Lock
+instanceKlass java/lang/Shutdown
+instanceKlass java/lang/ApplicationShutdownHooks$1
+instanceKlass java/lang/ApplicationShutdownHooks
+instanceKlass java/util/logging/LogManager$LogNode
+instanceKlass java/util/logging/LogManager$LoggerContext
+instanceKlass java/util/logging/LogManager$1
+instanceKlass java/util/logging/LogManager
+instanceKlass java/util/logging/Logger$LoggerBundle
+instanceKlass java/util/logging/Level$KnownLevel
+instanceKlass java/util/logging/Level
+instanceKlass java/util/logging/Handler
+instanceKlass java/util/logging/Logger
+instanceKlass com/sun/jmx/remote/util/ClassLogger
+instanceKlass javax/management/NotificationBroadcasterSupport$1
+instanceKlass javax/management/NotificationBroadcasterSupport
+instanceKlass java/util/ComparableTimSort
+instanceKlass sun/security/action/GetBooleanAction
+instanceKlass java/util/Arrays$LegacyMergeSort
+instanceKlass javax/management/ObjectName$Property
+instanceKlass javax/management/ObjectName
+instanceKlass javax/management/QueryExp
+instanceKlass com/sun/jmx/mbeanserver/Util
+instanceKlass javax/management/MBeanInfo
+instanceKlass javax/management/MBeanFeatureInfo
+instanceKlass javax/management/DescriptorRead
+instanceKlass javax/management/MBeanServerDelegate
+instanceKlass javax/management/NotificationEmitter
+instanceKlass javax/management/NotificationBroadcaster
+instanceKlass javax/management/MBeanServerDelegateMBean
+instanceKlass javax/management/MBeanRegistration
+instanceKlass javax/management/DynamicMBean
+instanceKlass com/sun/jmx/mbeanserver/JmxMBeanServer
+instanceKlass com/sun/jmx/mbeanserver/SunJmxMBeanServer
+instanceKlass javax/management/MBeanServer
+instanceKlass javax/management/MBeanServerConnection
+instanceKlass javax/management/MBeanServerBuilder
+instanceKlass com/sun/jmx/mbeanserver/GetPropertyAction
+instanceKlass javax/management/MBeanServerFactory
+instanceKlass java/lang/management/ManagementFactory
+instanceKlass java/beans/PropertyChangeListener
+instanceKlass java/util/EventListener
+instanceKlass java/util/concurrent/Executor
+instanceKlass org/apache/logging/log4j/core/jmx/Server
+instanceKlass org/apache/logging/log4j/core/helpers/Loader
+instanceKlass org/apache/logging/log4j/core/impl/ReflectiveCallerClassUtility
+instanceKlass java/util/concurrent/atomic/AtomicReference
+instanceKlass org/apache/logging/log4j/core/selector/ClassLoaderContextSelector
+instanceKlass org/apache/logging/log4j/spi/LoggerContext
+instanceKlass org/apache/logging/log4j/core/selector/ContextSelector
+instanceKlass org/apache/logging/log4j/core/impl/Log4jContextFactory
+instanceKlass java/util/ArrayList$Itr
+instanceKlass java/text/Format
+instanceKlass java/util/concurrent/ConcurrentLinkedQueue$Node
+instanceKlass java/util/concurrent/locks/ReentrantReadWriteLock$WriteLock
+instanceKlass java/util/concurrent/locks/ReentrantReadWriteLock$ReadLock
+instanceKlass sun/nio/ch/Interruptible
+instanceKlass java/util/concurrent/locks/ReentrantReadWriteLock
+instanceKlass java/util/concurrent/locks/ReadWriteLock
+instanceKlass java/util/concurrent/locks/AbstractQueuedSynchronizer$Node
+instanceKlass java/util/concurrent/locks/AbstractOwnableSynchronizer
+instanceKlass java/util/concurrent/CopyOnWriteArrayList
+instanceKlass java/net/URLClassLoader$2
+instanceKlass org/apache/logging/log4j/spi/Provider
+instanceKlass java/util/Properties$LineReader
+instanceKlass sun/net/www/protocol/jar/JarFileFactory
+instanceKlass sun/net/www/protocol/jar/URLJarFile$URLJarFileCloseController
+instanceKlass java/net/URLClassLoader$3$1
+instanceKlass sun/misc/CompoundEnumeration
+instanceKlass java/net/URLClassLoader$3
+instanceKlass sun/misc/URLClassPath$1
+instanceKlass java/lang/ClassLoader$2
+instanceKlass sun/misc/URLClassPath$2
+instanceKlass sun/misc/Launcher$BootClassPathHolder$1
+instanceKlass sun/misc/Launcher$BootClassPathHolder
+instanceKlass org/apache/logging/log4j/util/ProviderUtil
+instanceKlass org/apache/logging/log4j/util/PropertiesUtil
+instanceKlass org/apache/logging/log4j/message/AbstractMessageFactory
+instanceKlass org/apache/logging/log4j/MarkerManager$Log4jMarker
+instanceKlass org/apache/logging/log4j/Marker
+instanceKlass org/apache/logging/log4j/MarkerManager
+instanceKlass org/apache/logging/log4j/message/Message
+instanceKlass org/apache/logging/log4j/spi/AbstractLogger
+instanceKlass org/apache/logging/log4j/message/MessageFactory
+instanceKlass org/apache/logging/log4j/spi/LoggerContextFactory
+instanceKlass org/apache/logging/log4j/Logger
+instanceKlass org/apache/logging/log4j/LogManager
+instanceKlass java/lang/Void
+instanceKlass sun/security/util/ManifestEntryVerifier
+instanceKlass sun/security/util/SignatureFileVerifier
+instanceKlass java/util/jar/JarVerifier$3
+instanceKlass java/security/CodeSigner
+instanceKlass java/util/jar/JarVerifier
+instanceKlass sun/misc/ASCIICaseInsensitiveComparator
+instanceKlass java/util/jar/Attributes$Name
+instanceKlass java/util/jar/Attributes
+instanceKlass java/lang/Class$MethodArray
+instanceKlass sun/launcher/LauncherHelper$FXHelper
+instanceKlass net/minecraftforge/gradle/GradleStartCommon
+instanceKlass java/lang/Package
+instanceKlass java/io/FilePermission$1
+instanceKlass sun/net/www/MessageHeader
+instanceKlass java/net/URLConnection
+instanceKlass java/security/PermissionCollection
+instanceKlass sun/nio/ByteBuffered
+instanceKlass sun/misc/Resource
+instanceKlass sun/misc/IOUtils
+instanceKlass java/util/zip/ZStreamRef
+instanceKlass java/util/zip/Inflater
+instanceKlass java/util/zip/ZipEntry
+instanceKlass sun/misc/ExtensionDependency
+instanceKlass sun/misc/JarIndex
+instanceKlass sun/nio/ch/DirectBuffer
+instanceKlass sun/misc/PerfCounter$CoreCounters
+instanceKlass sun/misc/Perf
+instanceKlass sun/misc/Perf$GetPerfAction
+instanceKlass sun/misc/PerfCounter
+instanceKlass java/util/zip/ZipCoder
+instanceKlass java/util/Deque
+instanceKlass java/util/Queue
+instanceKlass java/nio/charset/StandardCharsets
+instanceKlass java/util/jar/JavaUtilJarAccessImpl
+instanceKlass sun/misc/JavaUtilJarAccess
+instanceKlass sun/misc/FileURLMapper
+instanceKlass sun/misc/URLClassPath$JarLoader$1
+instanceKlass sun/nio/cs/ThreadLocalCoders$Cache
+instanceKlass sun/nio/cs/ThreadLocalCoders
+instanceKlass java/util/zip/ZipFile$1
+instanceKlass sun/misc/JavaUtilZipFileAccess
+instanceKlass java/util/zip/ZipFile
+instanceKlass java/util/zip/ZipConstants
+instanceKlass sun/misc/URLClassPath$Loader
+instanceKlass sun/misc/URLClassPath$3
+instanceKlass sun/net/util/URLUtil
+instanceKlass java/net/URLClassLoader$1
+instanceKlass java/lang/StringCoding$StringDecoder
+instanceKlass java/io/FileOutputStream$1
+instanceKlass java/lang/StringCoding$StringEncoder
+instanceKlass java/lang/ThreadLocal$ThreadLocalMap
+instanceKlass java/lang/StringCoding
+instanceKlass sun/usagetracker/UsageTrackerClient$3
+instanceKlass java/util/TreeMap$Entry
+instanceKlass java/lang/ProcessEnvironment$CheckedEntry
+instanceKlass java/util/HashMap$HashIterator
+instanceKlass java/lang/ProcessEnvironment$CheckedEntrySet$1
+instanceKlass java/util/NavigableMap
+instanceKlass java/util/SortedMap
+instanceKlass java/util/Collections$UnmodifiableMap
+instanceKlass java/lang/ProcessEnvironment$EntryComparator
+instanceKlass java/lang/ProcessEnvironment$NameComparator
+instanceKlass sun/usagetracker/UsageTrackerClient$2
+instanceKlass sun/usagetracker/UsageTrackerClient$4
+instanceKlass sun/usagetracker/UsageTrackerClient$1
+instanceKlass java/util/concurrent/atomic/AtomicBoolean
+instanceKlass sun/usagetracker/UsageTrackerClient
+instanceKlass sun/misc/PostVMInitHook
+instanceKlass java/lang/invoke/MethodHandleStatics$1
+instanceKlass java/lang/invoke/MethodHandleStatics
+instanceKlass java/lang/invoke/MemberName$Factory
+instanceKlass java/lang/ClassValue$Version
+instanceKlass java/lang/ClassValue$Identity
+instanceKlass java/lang/ClassValue
+instanceKlass java/lang/invoke/MethodHandleImpl$3
+instanceKlass java/lang/invoke/MethodHandleImpl$2
+instanceKlass java/util/function/Function
+instanceKlass java/lang/invoke/MethodHandleImpl$1
+instanceKlass java/lang/invoke/MethodHandleImpl
+instanceKlass java/lang/SystemClassLoaderAction
+instanceKlass sun/misc/Launcher$AppClassLoader$1
+instanceKlass sun/misc/URLClassPath
+instanceKlass java/security/Principal
+instanceKlass java/security/ProtectionDomain$Key
+instanceKlass java/security/ProtectionDomain$2
+instanceKlass sun/misc/JavaSecurityProtectionDomainAccess
+instanceKlass java/security/ProtectionDomain$JavaSecurityAccessImpl
+instanceKlass sun/misc/JavaSecurityAccess
+instanceKlass java/net/URLStreamHandler
+instanceKlass java/net/Parts
+instanceKlass java/util/BitSet
+instanceKlass sun/net/www/ParseUtil
+instanceKlass java/io/FileInputStream$1
+instanceKlass java/lang/CharacterData
+instanceKlass sun/util/locale/LocaleUtils
+instanceKlass java/util/Locale$LocaleKey
+instanceKlass sun/util/locale/BaseLocale$Key
+instanceKlass sun/util/locale/BaseLocale
+instanceKlass java/util/concurrent/ConcurrentHashMap$CollectionView
+instanceKlass java/util/concurrent/ConcurrentHashMap$CounterCell
+instanceKlass java/util/concurrent/ConcurrentHashMap$Node
+instanceKlass java/util/concurrent/locks/ReentrantLock
+instanceKlass java/util/concurrent/locks/Lock
+instanceKlass java/util/concurrent/ConcurrentMap
+instanceKlass sun/util/locale/LocaleObjectCache
+instanceKlass java/util/Locale
+instanceKlass java/lang/reflect/Array
+instanceKlass java/nio/charset/CoderResult$Cache
+instanceKlass java/nio/charset/CoderResult
+instanceKlass java/nio/charset/CharsetDecoder
+instanceKlass sun/nio/cs/ArrayDecoder
+instanceKlass java/io/Reader
+instanceKlass java/lang/Readable
+instanceKlass sun/misc/MetaIndex
+instanceKlass sun/misc/Launcher$ExtClassLoader$1
+instanceKlass java/util/StringTokenizer
+instanceKlass java/net/URLClassLoader$7
+instanceKlass sun/misc/JavaNetAccess
+instanceKlass java/lang/ClassLoader$ParallelLoaders
+instanceKlass sun/security/util/Debug
+instanceKlass sun/misc/Launcher$Factory
+instanceKlass java/net/URLStreamHandlerFactory
+instanceKlass java/lang/Compiler$1
+instanceKlass java/lang/Compiler
+instanceKlass java/lang/System$2
+instanceKlass sun/misc/JavaLangAccess
+instanceKlass sun/io/Win32ErrorMode
+instanceKlass sun/misc/OSEnvironment
+instanceKlass java/lang/Integer$IntegerCache
+instanceKlass sun/misc/NativeSignalHandler
+instanceKlass sun/misc/Signal
+instanceKlass java/lang/Terminator$1
+instanceKlass sun/misc/SignalHandler
+instanceKlass java/lang/Terminator
+instanceKlass java/lang/ClassLoader$NativeLibrary
+instanceKlass java/io/ExpiringCache$Entry
+instanceKlass java/lang/ClassLoader$3
+instanceKlass java/nio/file/Path
+instanceKlass java/nio/file/Watchable
+instanceKlass java/lang/Enum
+instanceKlass java/io/ExpiringCache
+instanceKlass java/io/FileSystem
+instanceKlass java/io/DefaultFileSystem
+instanceKlass java/nio/Bits$1
+instanceKlass sun/misc/JavaNioAccess
+instanceKlass java/nio/ByteOrder
+instanceKlass java/nio/Bits
+instanceKlass java/nio/charset/CodingErrorAction
+instanceKlass java/nio/charset/CharsetEncoder
+instanceKlass sun/nio/cs/ArrayEncoder
+instanceKlass sun/reflect/ReflectionFactory$1
+instanceKlass java/lang/Class$1
+instanceKlass sun/nio/cs/SingleByte
+instanceKlass sun/nio/cs/HistoricallyNamedCharset
+instanceKlass java/util/Arrays
+instanceKlass sun/security/action/GetPropertyAction
+instanceKlass java/lang/ThreadLocal
+instanceKlass java/nio/charset/spi/CharsetProvider
+instanceKlass java/nio/charset/Charset
+instanceKlass java/io/Writer
+instanceKlass sun/reflect/misc/ReflectUtil
+instanceKlass java/lang/reflect/ReflectAccess
+instanceKlass sun/reflect/LangReflectAccess
+instanceKlass java/lang/reflect/Modifier
+instanceKlass sun/reflect/annotation/AnnotationType
+instanceKlass java/lang/Class$AnnotationData
+instanceKlass sun/reflect/generics/repository/AbstractRepository
+instanceKlass java/lang/Class$Atomic
+instanceKlass java/lang/Class$ReflectionData
+instanceKlass java/lang/Class$3
+instanceKlass java/util/concurrent/atomic/AtomicReferenceFieldUpdater$AtomicReferenceFieldUpdaterImpl$1
+instanceKlass java/security/PrivilegedExceptionAction
+instanceKlass java/util/concurrent/atomic/AtomicReferenceFieldUpdater
+instanceKlass java/io/OutputStream
+instanceKlass java/io/Flushable
+instanceKlass java/util/HashMap$Node
+instanceKlass sun/reflect/Reflection
+instanceKlass java/util/Collections$UnmodifiableCollection
+instanceKlass sun/misc/SharedSecrets
+instanceKlass java/io/FileDescriptor$1
+instanceKlass sun/misc/JavaIOFileDescriptorAccess
+instanceKlass java/io/FileDescriptor
+instanceKlass sun/misc/Version
+instanceKlass java/lang/Runtime
+instanceKlass java/util/Hashtable$Enumerator
+instanceKlass java/util/Iterator
+instanceKlass java/util/Enumeration
+instanceKlass java/util/Objects
+instanceKlass java/util/Collections$SynchronizedCollection
+instanceKlass java/util/AbstractMap
+instanceKlass java/util/Collections
+instanceKlass java/util/Set
+instanceKlass java/lang/Math
+instanceKlass java/util/Hashtable$Entry
+instanceKlass java/util/Map$Entry
+instanceKlass sun/misc/VM
+instanceKlass java/lang/ref/ReferenceQueue$Lock
+instanceKlass java/lang/ref/ReferenceQueue
+instanceKlass java/lang/ref/Reference$Lock
+instanceKlass sun/reflect/ReflectionFactory
+instanceKlass java/util/AbstractCollection
+instanceKlass java/util/RandomAccess
+instanceKlass java/util/List
+instanceKlass java/util/Collection
+instanceKlass java/lang/Iterable
+instanceKlass java/security/cert/Certificate
+instanceKlass sun/reflect/ReflectionFactory$GetReflectionFactoryAction
+instanceKlass java/security/PrivilegedAction
+instanceKlass java/security/AccessController
+instanceKlass java/security/Permission
+instanceKlass java/security/Guard
+instanceKlass java/lang/String$CaseInsensitiveComparator
+instanceKlass java/util/Comparator
+instanceKlass java/io/ObjectStreamField
+instanceKlass java/lang/Number
+instanceKlass java/lang/Character
+instanceKlass java/lang/Boolean
+instanceKlass java/nio/Buffer
+instanceKlass java/lang/StackTraceElement
+instanceKlass java/security/CodeSource
+instanceKlass sun/misc/Launcher
+instanceKlass java/util/jar/Manifest
+instanceKlass java/net/URL
+instanceKlass java/io/File
+instanceKlass java/io/InputStream
+instanceKlass java/io/Closeable
+instanceKlass java/lang/AutoCloseable
+instanceKlass sun/misc/Unsafe
+instanceKlass java/lang/AbstractStringBuilder
+instanceKlass java/lang/Appendable
+instanceKlass java/lang/invoke/CallSite
+instanceKlass java/lang/invoke/MethodType
+instanceKlass java/lang/invoke/LambdaForm
+instanceKlass java/lang/invoke/MethodHandleNatives
+instanceKlass java/lang/invoke/MemberName
+instanceKlass java/lang/invoke/MethodHandle
+instanceKlass sun/reflect/CallerSensitive
+instanceKlass java/lang/annotation/Annotation
+instanceKlass sun/reflect/FieldAccessor
+instanceKlass sun/reflect/ConstantPool
+instanceKlass sun/reflect/ConstructorAccessor
+instanceKlass sun/reflect/MethodAccessor
+instanceKlass sun/reflect/MagicAccessorImpl
+instanceKlass java/lang/reflect/Parameter
+instanceKlass java/lang/reflect/Member
+instanceKlass java/lang/reflect/AccessibleObject
+instanceKlass java/util/Dictionary
+instanceKlass java/util/Map
+instanceKlass java/lang/ThreadGroup
+instanceKlass java/lang/Thread$UncaughtExceptionHandler
+instanceKlass java/lang/Thread
+instanceKlass java/lang/Runnable
+instanceKlass java/lang/ref/Reference
+instanceKlass java/security/AccessControlContext
+instanceKlass java/security/ProtectionDomain
+instanceKlass java/lang/SecurityManager
+instanceKlass java/lang/Throwable
+instanceKlass java/lang/System
+instanceKlass java/lang/ClassLoader
+instanceKlass java/lang/Cloneable
+instanceKlass java/lang/Class
+instanceKlass java/lang/reflect/Type
+instanceKlass java/lang/reflect/GenericDeclaration
+instanceKlass java/lang/reflect/AnnotatedElement
+instanceKlass java/lang/String
+instanceKlass java/lang/CharSequence
+instanceKlass java/lang/Comparable
+instanceKlass java/io/Serializable
+ciInstanceKlass java/lang/Object 1 1 75 3 8 8 8 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 7 7 100 7 7 7 7 7 1 1 1 12 12 12 12 12 12 12 12 12 12 10 10 10 10 10 10 10 10 10 10
+ciInstanceKlass java/io/Serializable 1 0 5 1 1 100 100
+ciInstanceKlass java/lang/String 1 1 537 3 3 3 3 8 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 5 0 100 100 100 100 7 7 100 7 100 7 7 100 100 7 100 100 100 7 100 100 7 100 7 7 100 7 100 100 7 100 7 100 100 7 7 7 7 100 7 7 100 100 7 7 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 9 9 9 9 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 11 11 11 11 11 11 11 11 1
+staticfield java/lang/String serialPersistentFields [Ljava/io/ObjectStreamField; 0 [Ljava/io/ObjectStreamField;
+staticfield java/lang/String CASE_INSENSITIVE_ORDER Ljava/util/Comparator; java/lang/String$CaseInsensitiveComparator
+ciInstanceKlass java/lang/Class 1 1 1187 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 7 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 3 3 3 5 0 8 8 8 8 8 7 7 7 100 100 100 7 7 100 7 100 7 7 7 7 100 7 7 100 7 100 100 100 7 100 100 100 100 100 7 7 7 7 7 100 100 7 7 7 7 100 100 7 7 100 100 7 7 100 7 100 7 7 7 100 100 7 7 7 7 7 7 7 7 7 7 7 7 7 7 100 100 7 7 7 7 100 7 100 7 7 100 100 7 7 7 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 1 1 1 1 1 1 1
+staticfield java/lang/Class serialPersistentFields [Ljava/io/ObjectStreamField; 0 [Ljava/io/ObjectStreamField;
+ciInstanceKlass java/lang/Cloneable 1 0 5 1 1 100 100
+instanceKlass cpw/mods/fml/common/eventhandler/ASMEventHandler$ASMClassLoader
+instanceKlass java/util/ResourceBundle$RBClassLoader
+instanceKlass sun/reflect/DelegatingClassLoader
+instanceKlass java/security/SecureClassLoader
+ciInstanceKlass java/lang/ClassLoader 1 1 839 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 7 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 100 100 7 7 7 7 100 100 100 7 7 7 7 7 7 7 7 7 100 7 100 100 7 7 100 7 7 100 7 7 100 100 100 100 7 100 7 7 7 100 7 7 100 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 11 11 11 11 11 11 1 1
+staticfield java/lang/ClassLoader nocerts [Ljava/security/cert/Certificate; 0 [Ljava/security/cert/Certificate;
+ciInstanceKlass java/lang/System 1 1 366 8 8 8 8 8 8 8 8 8 8 8 8 8 7 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 7 7 7 7 7 100 7 100 7 100 100 100 7 7 7 7 7 7 7 7 7 7 7 7 100 100 7 7 7 100 7 7 7 7 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 9 9 9 9 9 9 9 9 9 9 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 11
+staticfield java/lang/System in Ljava/io/InputStream; java/io/BufferedInputStream
+staticfield java/lang/System out Ljava/io/PrintStream; cpw/mods/fml/common/TracingPrintStream
+staticfield java/lang/System err Ljava/io/PrintStream; cpw/mods/fml/common/TracingPrintStream
+instanceKlass cpw/mods/fml/client/SplashProgress$2
+instanceKlass java/lang/Exception
+instanceKlass java/lang/Error
+ciInstanceKlass java/lang/Throwable 1 1 324 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 7 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 5 0 7 100 100 100 100 100 100 7 100 100 100 100 7 7 100 7 100 100 100 7 100 7 100 7 7 7 100 100 100 7 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 9 9 9 9 9 9 9 9 9 9 9 9 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 11 11 11 11 11 11 11 11 1 1 1 1
+staticfield java/lang/Throwable UNASSIGNED_STACK [Ljava/lang/StackTraceElement; 0 [Ljava/lang/StackTraceElement;
+staticfield java/lang/Throwable SUPPRESSED_SENTINEL Ljava/util/List; java/util/Collections$UnmodifiableRandomAccessList
+staticfield java/lang/Throwable EMPTY_THROWABLE_ARRAY [Ljava/lang/Throwable; 0 [Ljava/lang/Throwable;
+staticfield java/lang/Throwable $assertionsDisabled Z 1
+instanceKlass io/netty/util/Signal
+instanceKlass com/google/common/util/concurrent/ExecutionError
+instanceKlass net/minecraft/util/MinecraftError
+instanceKlass java/lang/AssertionError
+instanceKlass java/lang/VirtualMachineError
+instanceKlass java/lang/LinkageError
+instanceKlass java/lang/ThreadDeath
+ciInstanceKlass java/lang/Error 1 1 27 1 1 1 1 1 1 1 1 1 1 5 0 100 7 1 1 12 12 12 12 12 10 10 10 10 10
+ciInstanceKlass java/lang/ThreadDeath 0 0 15 1 1 1 1 1 1 1 1 5 0 100 100 12 10
+instanceKlass org/apache/commons/codec/EncoderException
+instanceKlass org/apache/commons/codec/DecoderException
+instanceKlass java/util/zip/DataFormatException
+instanceKlass paulscode/sound/SoundSystemException
+instanceKlass net/minecraft/nbt/NBTException
+instanceKlass com/ibm/icu/text/ArabicShapingException
+instanceKlass net/minecraft/client/AnvilConverterException
+instanceKlass cpw/mods/fml/common/registry/ExistingSubstitutionException
+instanceKlass java/util/concurrent/TimeoutException
+instanceKlass java/util/concurrent/ExecutionException
+instanceKlass com/mojang/authlib/exceptions/AuthenticationException
+instanceKlass net/minecraft/world/MinecraftException
+instanceKlass org/lwjgl/LWJGLException
+instanceKlass cpw/mods/fml/common/versioning/InvalidVersionSpecificationException
+instanceKlass java/lang/CloneNotSupportedException
+instanceKlass javax/xml/parsers/ParserConfigurationException
+instanceKlass org/xml/sax/SAXException
+instanceKlass java/sql/SQLException
+instanceKlass java/text/ParseException
+instanceKlass org/apache/logging/log4j/core/net/ssl/StoreConfigurationException
+instanceKlass java/security/GeneralSecurityException
+instanceKlass java/net/URISyntaxException
+instanceKlass javax/naming/NamingException
+instanceKlass javax/management/JMException
+instanceKlass java/lang/InterruptedException
+instanceKlass java/security/PrivilegedActionException
+instanceKlass java/io/IOException
+instanceKlass com/mojang/authlib/exceptions/AuthenticationException
+instanceKlass java/lang/ReflectiveOperationException
+instanceKlass java/lang/RuntimeException
+ciInstanceKlass java/lang/Exception 1 1 27 1 1 1 1 1 1 1 1 1 1 5 0 100 7 1 1 12 12 12 12 12 10 10 10 10 10
+instanceKlass io/netty/util/ResourceLeakException
+instanceKlass cpw/mods/fml/relauncher/ReflectionHelper$UnableToFindFieldException
+instanceKlass cpw/mods/fml/relauncher/ReflectionHelper$UnableToAccessFieldException
+instanceKlass cpw/mods/fml/relauncher/ReflectionHelper$UnableToFindMethodException
+instanceKlass cpw/mods/fml/relauncher/ReflectionHelper$UnableToFindClassException
+instanceKlass org/apache/commons/lang3/exception/CloneFailedException
+instanceKlass com/mojang/authlib/yggdrasil/ProfileNotFoundException
+instanceKlass net/minecraft/command/CommandException
+instanceKlass net/minecraft/client/renderer/StitcherException
+instanceKlass org/lwjgl/openal/OpenALException
+instanceKlass io/netty/channel/ChannelException
+instanceKlass io/netty/handler/codec/CodecException
+instanceKlass cpw/mods/fml/common/network/FMLNetworkException
+instanceKlass com/google/common/collect/ComputationException
+instanceKlass cpw/mods/fml/common/registry/IncompatibleSubstitutionException
+instanceKlass java/util/concurrent/RejectedExecutionException
+instanceKlass com/google/common/cache/CacheLoader$InvalidCacheLoadException
+instanceKlass com/google/common/util/concurrent/UncheckedExecutionException
+instanceKlass com/mojang/authlib/minecraft/InsecureTextureException
+instanceKlass cpw/mods/fml/common/StartupQuery$AbortedException
+instanceKlass org/lwjgl/opengl/OpenGLException
+instanceKlass net/minecraft/util/ReportedException
+instanceKlass joptsimple/internal/ReflectionException
+instanceKlass joptsimple/ValueConversionException
+instanceKlass joptsimple/OptionException
+instanceKlass cpw/mods/fml/common/WrongMinecraftVersionException
+instanceKlass cpw/mods/fml/common/toposort/ModSortingException
+instanceKlass cpw/mods/fml/common/EnhancedRuntimeException
+instanceKlass com/google/gson/JsonParseException
+instanceKlass java/util/ConcurrentModificationException
+instanceKlass java/security/ProviderException
+instanceKlass java/lang/invoke/WrongMethodTypeException
+instanceKlass java/util/NoSuchElementException
+instanceKlass joptsimple/internal/ReflectionException
+instanceKlass joptsimple/ValueConversionException
+instanceKlass joptsimple/OptionException
+instanceKlass com/google/gson/JsonParseException
+instanceKlass com/sun/org/apache/xerces/internal/xni/XNIException
+instanceKlass java/lang/reflect/UndeclaredThrowableException
+instanceKlass java/lang/UnsupportedOperationException
+instanceKlass org/apache/logging/log4j/core/config/ConfigurationException
+instanceKlass org/apache/logging/log4j/LoggingException
+instanceKlass java/lang/IndexOutOfBoundsException
+instanceKlass java/lang/SecurityException
+instanceKlass java/lang/IllegalStateException
+instanceKlass java/lang/IllegalArgumentException
+instanceKlass java/lang/ArithmeticException
+instanceKlass java/lang/NullPointerException
+instanceKlass java/lang/IllegalMonitorStateException
+instanceKlass java/lang/ArrayStoreException
+instanceKlass java/lang/ClassCastException
+ciInstanceKlass java/lang/RuntimeException 1 1 27 1 1 1 1 1 1 1 1 1 1 5 0 7 100 1 1 12 12 12 12 12 10 10 10 10 10
+instanceKlass cpw/mods/fml/common/LoadController$FMLSecurityManager
+instanceKlass sun/awt/AWTSecurityManager
+instanceKlass cpw/mods/fml/relauncher/FMLSecurityManager
+instanceKlass javax/crypto/JceSecurityManager
+ciInstanceKlass java/lang/SecurityManager 1 1 372 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 7 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 100 100 7 100 100 100 7 7 100 7 100 7 7 7 7 7 100 100 7 100 7 100 100 7 7 7 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10
+staticfield java/lang/SecurityManager packageAccessLock Ljava/lang/Object; java/lang/Object
+staticfield java/lang/SecurityManager packageDefinitionLock Ljava/lang/Object; java/lang/Object
+ciInstanceKlass java/security/ProtectionDomain 1 1 267 8 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 7 100 100 7 100 100 100 100 100 100 100 100 100 7 7 7 7 7 100 7 7 7 100 100 100 7 7 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 9 9 9 9 9 9 9 9 9 9 9 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 11 11 11 11 11 11 11 1
+staticfield java/security/ProtectionDomain debug Lsun/security/util/Debug; null
+ciInstanceKlass java/security/AccessControlContext 1 1 302 8 8 8 8 8 8 8 8 8 8 8 8 8 7 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 7 100 100 7 100 100 7 100 100 7 100 100 7 100 100 7 100 7 100 100 100 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 9 9 9 9 9 9 9 9 9 9 9 9 9 9 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 11 11 11 11 11 11
+instanceKlass sun/reflect/misc/MethodUtil
+instanceKlass java/net/URLClassLoader
+ciInstanceKlass java/security/SecureClassLoader 1 1 127 8 8 8 8 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 7 100 100 7 100 7 100 7 7 7 7 7 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 9 9 9 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10
+staticfield java/security/SecureClassLoader debug Lsun/security/util/Debug; null
+instanceKlass java/lang/NoSuchMethodException
+instanceKlass java/lang/NoSuchFieldException
+instanceKlass java/lang/reflect/InvocationTargetException
+instanceKlass java/lang/InstantiationException
+instanceKlass java/lang/IllegalAccessException
+instanceKlass java/lang/ClassNotFoundException
+ciInstanceKlass java/lang/ReflectiveOperationException 1 1 24 1 1 1 1 1 1 1 1 1 1 5 0 7 100 1 12 12 12 12 10 10 10 10
+ciInstanceKlass java/lang/ClassNotFoundException 1 1 29 1 1 1 1 1 1 1 1 1 1 1 1 1 1 5 0 7 7 100 1 1 1 12 12 12 9 10 10
+instanceKlass java/lang/ClassFormatError
+instanceKlass java/lang/UnsatisfiedLinkError
+instanceKlass java/lang/ExceptionInInitializerError
+instanceKlass java/lang/IncompatibleClassChangeError
+instanceKlass java/lang/BootstrapMethodError
+instanceKlass java/lang/NoClassDefFoundError
+ciInstanceKlass java/lang/LinkageError 1 1 21 1 1 1 1 1 1 1 1 1 5 0 7 100 1 12 12 12 10 10 10
+ciInstanceKlass java/lang/NoClassDefFoundError 1 1 18 1 1 1 1 1 1 1 1 1 5 0 7 100 12 12 10 10
+ciInstanceKlass java/lang/ClassCastException 1 1 18 1 1 1 1 1 1 1 1 1 5 0 100 100 12 12 10 10
+ciInstanceKlass java/lang/ArrayStoreException 1 1 18 1 1 1 1 1 1 1 1 1 5 0 100 100 12 12 10 10
+instanceKlass java/lang/InternalError
+instanceKlass java/lang/StackOverflowError
+instanceKlass java/lang/OutOfMemoryError
+ciInstanceKlass java/lang/VirtualMachineError 1 1 24 1 1 1 1 1 1 1 1 1 1 5 0 100 100 1 12 12 12 12 10 10 10 10
+ciInstanceKlass java/lang/OutOfMemoryError 1 1 18 1 1 1 1 1 1 1 1 1 5 0 100 100 12 12 10 10
+ciInstanceKlass java/lang/StackOverflowError 1 1 18 1 1 1 1 1 1 1 1 1 5 0 100 100 12 12 10 10
+ciInstanceKlass java/lang/IllegalMonitorStateException 1 1 18 1 1 1 1 1 1 1 1 1 5 0 100 100 12 12 10 10
+instanceKlass java/lang/ref/PhantomReference
+instanceKlass java/lang/ref/FinalReference
+instanceKlass java/lang/ref/WeakReference
+instanceKlass java/lang/ref/SoftReference
+ciInstanceKlass java/lang/ref/Reference 1 1 114 8 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 7 7 7 7 100 7 7 7 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 9 9 9 9 9 9 9 10 10 10 10 10 10 10 10 10 10 10 1 1
+instanceKlass com/google/common/cache/LocalCache$SoftValueReference
+instanceKlass sun/font/FontDesignMetrics$KeyReference
+instanceKlass sun/font/StrikeCache$SoftDisposerRef
+instanceKlass java/lang/invoke/LambdaFormEditor$Transform
+instanceKlass sun/security/util/MemoryCache$SoftCacheEntry
+instanceKlass sun/util/locale/provider/LocaleResources$ResourceReference
+instanceKlass java/util/ResourceBundle$BundleReference
+instanceKlass sun/util/locale/LocaleObjectCache$CacheEntry
+ciInstanceKlass java/lang/ref/SoftReference 1 1 32 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 7 7 1 1 1 1 12 12 12 12 12 9 9 10 10 10
+instanceKlass com/google/common/collect/MapMakerInternalMap$WeakValueReference
+instanceKlass com/google/common/collect/MapMakerInternalMap$WeakEntry
+instanceKlass com/google/common/cache/LocalCache$WeakEntry
+instanceKlass com/google/common/cache/LocalCache$WeakValueReference
+instanceKlass javax/swing/plaf/metal/MetalLookAndFeel$AATextListener
+instanceKlass java/lang/Thread$WeakClassKey
+instanceKlass java/lang/invoke/MethodType$ConcurrentWeakInternSet$WeakEntry
+instanceKlass java/util/ResourceBundle$LoaderReference
+instanceKlass java/lang/reflect/WeakCache$CacheValue
+instanceKlass java/lang/reflect/Proxy$Key1
+instanceKlass java/lang/reflect/WeakCache$CacheKey
+instanceKlass com/sun/jmx/mbeanserver/WeakIdentityHashMap$IdentityWeakReference
+instanceKlass java/util/logging/LogManager$LoggerWeakRef
+instanceKlass java/lang/ThreadLocal$ThreadLocalMap$Entry
+instanceKlass java/lang/ClassValue$Entry
+instanceKlass java/util/WeakHashMap$Entry
+ciInstanceKlass java/lang/ref/WeakReference 1 1 17 1 1 1 1 1 1 7 100 1 1 1 1 12 12 10 10
+instanceKlass java/lang/ref/Finalizer
+ciInstanceKlass java/lang/ref/FinalReference 1 1 13 1 1 1 1 1 100 7 1 1 1 12 10
+instanceKlass io/netty/util/ResourceLeakDetector$DefaultResourceLeak
+instanceKlass sun/misc/Cleaner
+ciInstanceKlass java/lang/ref/PhantomReference 1 1 16 1 1 1 1 1 1 1 1 100 7 1 1 1 12 10
+ciInstanceKlass sun/misc/Cleaner 1 1 71 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 7 100 7 7 100 7 100 1 1 1 1 1 1 1 1 1 1 1 1 12 12 12 12 12 12 12 12 12 12 12 12 12 9 9 9 9 9 10 10 10 10 10 10 10 11
+staticfield sun/misc/Cleaner dummyQueue Ljava/lang/ref/ReferenceQueue; java/lang/ref/ReferenceQueue
+ciInstanceKlass java/lang/ref/Finalizer 1 1 145 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 7 7 7 7 100 7 7 100 100 100 7 7 100 7 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 9 9 9 9 9 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 11 1
+staticfield java/lang/ref/Finalizer lock Ljava/lang/Object; java/lang/Object
+instanceKlass net/minecraft/client/renderer/ThreadDownloadImageData$1
+instanceKlass net/minecraft/server/MinecraftServer$2
+instanceKlass codechicken/core/CCUpdateChecker$ThreadUpdateCheck
+instanceKlass paulscode/sound/SimpleThread
+instanceKlass net/minecraftforge/common/ForgeVersion$1
+instanceKlass io/netty/util/internal/ThreadLocalRandom$1
+instanceKlass net/minecraft/client/stream/TwitchStream$1
+instanceKlass org/lwjgl/opengl/Display$1
+instanceKlass java/util/TimerThread
+instanceKlass net/minecraft/client/Minecraft$1
+instanceKlass net/minecraft/client/main/Main$3
+instanceKlass java/awt/EventDispatchThread
+instanceKlass sun/security/ssl/SSLSocketImpl$NotifyHandshakeThread
+instanceKlass org/apache/logging/log4j/core/LoggerContext$ShutdownThread
+instanceKlass java/util/logging/LogManager$Cleaner
+instanceKlass java/lang/ref/Finalizer$FinalizerThread
+instanceKlass java/lang/ref/Reference$ReferenceHandler
+ciInstanceKlass java/lang/Thread 1 1 543 3 3 8 8 8 8 8 8 8 8 8 8 8 8 7 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 3 3 3 100 100 100 7 7 100 7 100 100 100 100 100 7 7 7 7 7 7 7 7 7 7 100 100 7 100 7 7 100 100 100 100 7 100 7 100 100 7 7 100 7 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 11 11 11 11 11 11 11 1 1 1 1
+staticfield java/lang/Thread EMPTY_STACK_TRACE [Ljava/lang/StackTraceElement; 0 [Ljava/lang/StackTraceElement;
+staticfield java/lang/Thread SUBCLASS_IMPLEMENTATION_PERMISSION Ljava/lang/RuntimePermission; java/lang/RuntimePermission
+ciInstanceKlass java/lang/ThreadGroup 1 1 265 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 7 100 100 100 100 100 7 7 100 7 7 100 100 7 100 7 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 9 9 9 9 9 9 9 9 9 9 9 9 9 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 11 1
+instanceKlass java/util/Hashtable
+ciInstanceKlass java/util/Dictionary 1 1 28 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 7 100 1 1 1 1 1 1 12 10
+instanceKlass javax/swing/UIDefaults
+instanceKlass java/util/Properties
+ciInstanceKlass java/util/Hashtable 1 1 394 3 3 4 4 8 8 8 8 8 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 3 3 3 5 0 100 100 100 100 100 100 100 100 100 100 7 100 100 7 100 7 100 100 100 7 100 7 7 100 7 7 7 7 7 7 7 7 7 7 100 100 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 9 9 9 9 9 9 9 9 9 9 9 9 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 11 11 11 11 11 11 11 11 11 11 11 11 1 1 1 1
+instanceKlass java/security/Provider
+ciInstanceKlass java/util/Properties 1 1 260 3 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 5 0 100 7 100 100 100 100 100 100 100 100 100 7 7 7 100 7 7 7 100 100 7 7 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 9 9 9 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 11 11 1 1
+staticfield java/util/Properties hexDigit [C 16
+instanceKlass com/google/common/reflect/Element
+instanceKlass java/lang/reflect/Executable
+instanceKlass java/lang/reflect/Field
+ciInstanceKlass java/lang/reflect/AccessibleObject 1 1 141 8 8 8 7 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 100 100 7 100 7 7 7 7 7 100 7 7 7 7 7 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 9 9 9 9 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 11 1
+staticfield java/lang/reflect/AccessibleObject ACCESS_PERMISSION Ljava/security/Permission; java/lang/reflect/ReflectPermission
+staticfield java/lang/reflect/AccessibleObject reflectionFactory Lsun/reflect/ReflectionFactory; sun/reflect/ReflectionFactory
+ciInstanceKlass java/lang/reflect/Field 1 1 359 8 8 8 8 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 7 100 100 100 100 7 7 7 100 7 100 7 7 7 7 7 7 7 7 100 100 100 100 7 7 7 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 1
+ciInstanceKlass java/lang/reflect/Parameter 0 0 207 8 8 8 8 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 9 9 9 9 9 9 9 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 11 11 11 11
+instanceKlass java/lang/reflect/Constructor
+instanceKlass java/lang/reflect/Method
+ciInstanceKlass java/lang/reflect/Executable 1 1 375 3 8 8 8 8 8 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 100 100 100 7 100 7 100 100 100 100 100 7 7 7 100 100 100 100 100 100 100 7 7 7 7 7 100 100 100 100 7 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 9 9 9 9 9 9 9 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 11 11 11 1
+ciInstanceKlass java/lang/reflect/Method 1 1 343 8 8 8 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 7 100 7 100 100 7 7 100 100 7 100 7 100 100 100 7 7 7 7 7 7 7 7 7 7 7 7 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 11 11 11
+ciInstanceKlass java/lang/reflect/Constructor 1 1 327 8 8 8 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 7 100 7 100 100 100 100 100 100 7 7 100 100 100 100 100 7 7 7 100 100 100 100 100 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 9 9 9 9 9 9 9 9 9 9 9 9 9 9 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 11 11 1
+instanceKlass sun/reflect/FieldAccessorImpl
+instanceKlass sun/reflect/ConstructorAccessorImpl
+instanceKlass sun/reflect/MethodAccessorImpl
+ciInstanceKlass sun/reflect/MagicAccessorImpl 1 1 10 1 1 1 1 1 7 100 12 10
+instanceKlass sun/reflect/GeneratedMethodAccessor6
+instanceKlass sun/reflect/GeneratedMethodAccessor5
+instanceKlass sun/reflect/GeneratedMethodAccessor4
+instanceKlass sun/reflect/GeneratedMethodAccessor3
+instanceKlass sun/reflect/GeneratedMethodAccessor2
+instanceKlass sun/reflect/GeneratedMethodAccessor1
+instanceKlass sun/reflect/DelegatingMethodAccessorImpl
+instanceKlass sun/reflect/NativeMethodAccessorImpl
+ciInstanceKlass sun/reflect/MethodAccessorImpl 1 1 19 1 1 1 1 1 1 1 1 1 1 1 100 100 7 100 100 12 10
+ciInstanceKlass sun/reflect/ConstructorAccessor 1 0 14 1 1 1 1 1 1 1 1 100 100 100 100 100
+instanceKlass sun/reflect/GeneratedConstructorAccessor37
+instanceKlass sun/reflect/GeneratedConstructorAccessor36
+instanceKlass sun/reflect/GeneratedConstructorAccessor35
+instanceKlass sun/reflect/GeneratedConstructorAccessor34
+instanceKlass sun/reflect/GeneratedConstructorAccessor33
+instanceKlass sun/reflect/GeneratedConstructorAccessor32
+instanceKlass sun/reflect/GeneratedConstructorAccessor31
+instanceKlass sun/reflect/GeneratedConstructorAccessor30
+instanceKlass sun/reflect/GeneratedConstructorAccessor29
+instanceKlass sun/reflect/GeneratedConstructorAccessor28
+instanceKlass sun/reflect/GeneratedConstructorAccessor27
+instanceKlass sun/reflect/GeneratedConstructorAccessor26
+instanceKlass sun/reflect/GeneratedConstructorAccessor25
+instanceKlass sun/reflect/GeneratedConstructorAccessor24
+instanceKlass sun/reflect/GeneratedConstructorAccessor23
+instanceKlass sun/reflect/GeneratedConstructorAccessor22
+instanceKlass sun/reflect/GeneratedConstructorAccessor21
+instanceKlass sun/reflect/GeneratedConstructorAccessor20
+instanceKlass sun/reflect/GeneratedConstructorAccessor19
+instanceKlass sun/reflect/GeneratedConstructorAccessor18
+instanceKlass sun/reflect/GeneratedConstructorAccessor17
+instanceKlass sun/reflect/GeneratedConstructorAccessor16
+instanceKlass sun/reflect/GeneratedConstructorAccessor15
+instanceKlass sun/reflect/GeneratedConstructorAccessor14
+instanceKlass sun/reflect/GeneratedConstructorAccessor13
+instanceKlass sun/reflect/GeneratedConstructorAccessor12
+instanceKlass sun/reflect/GeneratedConstructorAccessor11
+instanceKlass sun/reflect/GeneratedConstructorAccessor10
+instanceKlass sun/reflect/GeneratedConstructorAccessor9
+instanceKlass sun/reflect/GeneratedConstructorAccessor8
+instanceKlass sun/reflect/GeneratedConstructorAccessor7
+instanceKlass sun/reflect/GeneratedConstructorAccessor6
+instanceKlass sun/reflect/GeneratedConstructorAccessor5
+instanceKlass sun/reflect/GeneratedConstructorAccessor4
+instanceKlass sun/reflect/GeneratedConstructorAccessor3
+instanceKlass sun/reflect/GeneratedConstructorAccessor2
+instanceKlass sun/reflect/BootstrapConstructorAccessorImpl
+instanceKlass sun/reflect/GeneratedConstructorAccessor1
+instanceKlass sun/reflect/DelegatingConstructorAccessorImpl
+instanceKlass sun/reflect/NativeConstructorAccessorImpl
+ciInstanceKlass sun/reflect/ConstructorAccessorImpl 1 1 21 1 1 1 1 1 1 1 1 1 1 1 1 100 100 100 100 100 7 12 10
+ciInstanceKlass sun/reflect/DelegatingClassLoader 1 1 10 1 1 1 1 7 100 1 12 10
+ciInstanceKlass sun/reflect/ConstantPool 1 1 103 8 7 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 7 7 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 9 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10
+instanceKlass sun/reflect/UnsafeFieldAccessorImpl
+ciInstanceKlass sun/reflect/FieldAccessorImpl 1 1 53 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 100 100 100 7 1 1 1 1 1 1 1 1 1 1 1 1 1 12 10
+instanceKlass sun/reflect/UnsafeIntegerFieldAccessorImpl
+instanceKlass sun/reflect/UnsafeLongFieldAccessorImpl
+instanceKlass sun/reflect/UnsafeBooleanFieldAccessorImpl
+instanceKlass sun/reflect/UnsafeQualifiedFieldAccessorImpl
+instanceKlass sun/reflect/UnsafeObjectFieldAccessorImpl
+instanceKlass sun/reflect/UnsafeStaticFieldAccessorImpl
+ciInstanceKlass sun/reflect/UnsafeFieldAccessorImpl 1 1 226 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 100 100 7 100 100 100 100 100 100 7 100 100 100 7 7 7 7 7 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 9 9 9 9 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10
+staticfield sun/reflect/UnsafeFieldAccessorImpl unsafe Lsun/misc/Unsafe; sun/misc/Unsafe
+instanceKlass sun/reflect/UnsafeStaticObjectFieldAccessorImpl
+instanceKlass sun/reflect/UnsafeQualifiedStaticFieldAccessorImpl
+ciInstanceKlass sun/reflect/UnsafeStaticFieldAccessorImpl 1 1 35 8 7 1 1 1 1 1 1 1 1 1 1 1 1 1 1 7 7 7 7 1 1 1 1 12 12 12 12 12 9 9 10 10 10
+ciInstanceKlass sun/reflect/CallerSensitive 0 0 15 1 1 1 1 1 1 1 100 100 100 1 1 1 1
+instanceKlass java/lang/invoke/DelegatingMethodHandle
+instanceKlass java/lang/invoke/BoundMethodHandle
+instanceKlass java/lang/invoke/DirectMethodHandle
+ciInstanceKlass java/lang/invoke/MethodHandle 1 1 435 8 8 8 8 8 8 8 8 8 8 8 8 8 7 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 7 100 100 100 100 7 100 100 100 7 100 100 7 7 7 100 7 7 7 7 100 100 100 7 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 9 9 9 9 9 9 9 9 9 9 9 9 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 11 1 1
+staticfield java/lang/invoke/MethodHandle FORM_OFFSET J 20
+staticfield java/lang/invoke/MethodHandle $assertionsDisabled Z 1
+instanceKlass java/lang/invoke/DirectMethodHandle$Special
+instanceKlass java/lang/invoke/DirectMethodHandle$Accessor
+ciInstanceKlass java/lang/invoke/DirectMethodHandle 1 1 691 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 7 7 7 7 7 7 7 7 7 7 7 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 100 7 7 7 100 7 100 7 100 100 100 7 100 7 100 100 7 7 100 7 7 100 7 7 100 7 7 7 100 100 100 7 7 7 7 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 1 1 1 1 1 1 1 1
+staticfield java/lang/invoke/DirectMethodHandle IMPL_NAMES Ljava/lang/invoke/MemberName$Factory; java/lang/invoke/MemberName$Factory
+staticfield java/lang/invoke/DirectMethodHandle ACCESSOR_FORMS [Ljava/lang/invoke/LambdaForm; 132 [Ljava/lang/invoke/LambdaForm;
+staticfield java/lang/invoke/DirectMethodHandle $assertionsDisabled Z 1
+ciInstanceKlass java/lang/invoke/MemberName 1 1 641 3 3 3 3 3 3 3 3 3 3 3 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 7 7 7 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 3 3 3 3 3 3 3 3 7 7 100 100 100 7 7 100 100 100 100 100 100 100 100 100 7 100 7 7 7 7 7 100 7 7 100 100 100 100 7 100 100 100 7 7 7 100 7 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 9 9 9 9 9 9 9 9 9 9 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 1 1 1
+staticfield java/lang/invoke/MemberName $assertionsDisabled Z 1
+ciInstanceKlass java/lang/invoke/MethodHandleNatives 1 1 422 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 100 100 7 7 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 100 100 100 7 100 100 100 100 100 100 100 100 100 100 100 100 7 100 7 100 100 100 7 7 7 7 7 7 100 7 7 100 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 9 9 9 9 9 9 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 1 1
+staticfield java/lang/invoke/MethodHandleNatives COUNT_GWT Z 1
+staticfield java/lang/invoke/MethodHandleNatives $assertionsDisabled Z 1
+ciInstanceKlass java/lang/invoke/LambdaForm 1 1 964 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 100 7 7 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 3 3 3 3 8 100 100 100 100 7 7 100 100 100 7 100 100 100 100 100 100 100 100 7 7 7 100 7 7 100 100 100 7 100 7 100 100 7 7 7 7 7 100 100 7 7 7 7 100 100 7 7 7 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 11 11 11 11 11 1 1 1 1 1
+staticfield java/lang/invoke/LambdaForm COMPILE_THRESHOLD I 0
+staticfield java/lang/invoke/LambdaForm INTERNED_ARGUMENTS [[Ljava/lang/invoke/LambdaForm$Name; 5 [[Ljava/lang/invoke/LambdaForm$Name;
+staticfield java/lang/invoke/LambdaForm IMPL_NAMES Ljava/lang/invoke/MemberName$Factory; java/lang/invoke/MemberName$Factory
+staticfield java/lang/invoke/LambdaForm LF_identityForm [Ljava/lang/invoke/LambdaForm; 6 [Ljava/lang/invoke/LambdaForm;
+staticfield java/lang/invoke/LambdaForm LF_zeroForm [Ljava/lang/invoke/LambdaForm; 6 [Ljava/lang/invoke/LambdaForm;
+staticfield java/lang/invoke/LambdaForm NF_identity [Ljava/lang/invoke/LambdaForm$NamedFunction; 6 [Ljava/lang/invoke/LambdaForm$NamedFunction;
+staticfield java/lang/invoke/LambdaForm NF_zero [Ljava/lang/invoke/LambdaForm$NamedFunction; 6 [Ljava/lang/invoke/LambdaForm$NamedFunction;
+staticfield java/lang/invoke/LambdaForm DEBUG_NAME_COUNTERS Ljava/util/HashMap; null
+staticfield java/lang/invoke/LambdaForm TRACE_INTERPRETER Z 0
+staticfield java/lang/invoke/LambdaForm $assertionsDisabled Z 1
+ciInstanceKlass java/lang/invoke/MethodType 1 1 588 8 8 8 8 8 8 8 8 8 8 8 8 7 7 7 7 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 3 3 3 5 0 7 100 100 100 7 100 100 7 100 7 100 100 100 100 100 7 7 7 7 100 7 7 7 7 7 7 7 7 7 7 100 100 7 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 11 11 11 11 1
+staticfield java/lang/invoke/MethodType internTable Ljava/lang/invoke/MethodType$ConcurrentWeakInternSet; java/lang/invoke/MethodType$ConcurrentWeakInternSet
+staticfield java/lang/invoke/MethodType NO_PTYPES [Ljava/lang/Class; 0 [Ljava/lang/Class;
+staticfield java/lang/invoke/MethodType objectOnlyTypes [Ljava/lang/invoke/MethodType; 20 [Ljava/lang/invoke/MethodType;
+staticfield java/lang/invoke/MethodType serialPersistentFields [Ljava/io/ObjectStreamField; 0 [Ljava/io/ObjectStreamField;
+staticfield java/lang/invoke/MethodType rtypeOffset J 12
+staticfield java/lang/invoke/MethodType ptypesOffset J 16
+staticfield java/lang/invoke/MethodType $assertionsDisabled Z 1
+ciInstanceKlass java/lang/BootstrapMethodError 0 0 35 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 5 0 100 100 100 100 1 1 12 12 12 12 12 10 10 10 10 10
+instanceKlass java/lang/invoke/VolatileCallSite
+instanceKlass java/lang/invoke/MutableCallSite
+instanceKlass java/lang/invoke/ConstantCallSite
+ciInstanceKlass java/lang/invoke/CallSite 1 1 308 8 8 8 8 8 8 8 8 7 7 7 7 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 7 100 100 100 100 7 100 100 100 100 100 100 7 100 7 100 7 7 100 100 7 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 9 9 9 9 9 9 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 1
+staticfield java/lang/invoke/CallSite GET_TARGET Ljava/lang/invoke/MethodHandle; java/lang/invoke/DirectMethodHandle
+staticfield java/lang/invoke/CallSite THROW_UCS Ljava/lang/invoke/MethodHandle; java/lang/invoke/MethodHandleImpl$AsVarargsCollector
+staticfield java/lang/invoke/CallSite TARGET_OFFSET J 12
+ciInstanceKlass java/lang/invoke/ConstantCallSite 1 1 39 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 100 100 7 7 1 1 12 12 12 12 12 12 9 9 10 10 10 10 10
+ciInstanceKlass java/lang/invoke/MutableCallSite 0 0 54 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 100 100 100 1 1 1 1 1 1 12 12 12 12 12 12 12 12 12 12 9 9 10 10 10 10 10 10 10 10
+ciInstanceKlass java/lang/invoke/VolatileCallSite 0 0 30 1 1 1 1 1 1 1 1 1 1 1 1 100 100 1 1 1 12 12 12 12 12 12 10 10 10 10 10 10
+instanceKlass java/lang/StringBuilder
+instanceKlass java/lang/StringBuffer
+ciInstanceKlass java/lang/AbstractStringBuilder 1 1 309 3 3 8 8 8 8 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 5 0 100 7 100 7 100 100 100 7 7 7 100 7 100 100 100 7 7 7 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 9 9 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 11 11
+ciInstanceKlass java/lang/StringBuffer 1 1 369 8 8 8 7 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 5 0 100 100 100 100 100 7 100 7 7 100 100 7 7 7 100 7 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 9 9 9 9 9 9 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 11 1 1
+staticfield java/lang/StringBuffer serialPersistentFields [Ljava/io/ObjectStreamField; 3 [Ljava/io/ObjectStreamField;
+ciInstanceKlass java/lang/StringBuilder 1 1 323 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 5 0 100 100 100 100 100 7 100 100 7 7 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 9 9 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 11
+ciInstanceKlass sun/misc/Unsafe 1 1 386 8 8 7 7 7 7 7 7 7 7 7 7 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 3 100 7 100 7 7 100 7 100 100 7 7 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10
+staticfield sun/misc/Unsafe theUnsafe Lsun/misc/Unsafe; sun/misc/Unsafe
+staticfield sun/misc/Unsafe ARRAY_BOOLEAN_BASE_OFFSET I 16
+staticfield sun/misc/Unsafe ARRAY_BYTE_BASE_OFFSET I 16
+staticfield sun/misc/Unsafe ARRAY_SHORT_BASE_OFFSET I 16
+staticfield sun/misc/Unsafe ARRAY_CHAR_BASE_OFFSET I 16
+staticfield sun/misc/Unsafe ARRAY_INT_BASE_OFFSET I 16
+staticfield sun/misc/Unsafe ARRAY_LONG_BASE_OFFSET I 16
+staticfield sun/misc/Unsafe ARRAY_FLOAT_BASE_OFFSET I 16
+staticfield sun/misc/Unsafe ARRAY_DOUBLE_BASE_OFFSET I 16
+staticfield sun/misc/Unsafe ARRAY_OBJECT_BASE_OFFSET I 16
+staticfield sun/misc/Unsafe ARRAY_BOOLEAN_INDEX_SCALE I 1
+staticfield sun/misc/Unsafe ARRAY_BYTE_INDEX_SCALE I 1
+staticfield sun/misc/Unsafe ARRAY_SHORT_INDEX_SCALE I 2
+staticfield sun/misc/Unsafe ARRAY_CHAR_INDEX_SCALE I 2
+staticfield sun/misc/Unsafe ARRAY_INT_INDEX_SCALE I 4
+staticfield sun/misc/Unsafe ARRAY_LONG_INDEX_SCALE I 8
+staticfield sun/misc/Unsafe ARRAY_FLOAT_INDEX_SCALE I 4
+staticfield sun/misc/Unsafe ARRAY_DOUBLE_INDEX_SCALE I 8
+staticfield sun/misc/Unsafe ARRAY_OBJECT_INDEX_SCALE I 4
+staticfield sun/misc/Unsafe ADDRESS_SIZE I 8
+instanceKlass sun/net/www/protocol/http/EmptyInputStream
+instanceKlass com/sun/imageio/plugins/common/InputStreamAdapter
+instanceKlass java/io/SequenceInputStream
+instanceKlass org/apache/commons/io/input/ClosedInputStream
+instanceKlass sun/java2d/cmm/ProfileDeferralInfo
+instanceKlass java/io/ObjectInputStream
+instanceKlass sun/security/ssl/HandshakeInStream
+instanceKlass sun/security/ssl/AppInputStream
+instanceKlass java/util/jar/JarVerifier$VerifierStream
+instanceKlass com/sun/org/apache/xerces/internal/impl/XMLEntityManager$RewindableInputStream
+instanceKlass java/util/zip/ZipFile$ZipFileInputStream
+instanceKlass java/io/FilterInputStream
+instanceKlass java/io/FileInputStream
+instanceKlass java/io/ByteArrayInputStream
+ciInstanceKlass java/io/InputStream 1 1 58 8 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 3 5 0 100 100 100 7 100 100 100 7 12 12 12 12 12 10 10 10 10 10 10 10
+instanceKlass sun/security/ssl/InputRecord
+instanceKlass sun/security/util/DerInputBuffer
+ciInstanceKlass java/io/ByteArrayInputStream 1 1 59 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 7 100 7 100 7 100 7 1 12 12 12 12 12 12 12 9 9 9 9 10 10 10 10 10
+ciInstanceKlass java/io/File 1 1 575 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 7 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 5 0 7 7 7 100 7 100 7 7 7 7 100 100 100 100 100 7 7 100 100 100 100 7 100 100 100 7 7 7 7 100 7 7 100 100 7 7 100 7 7 7 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 11 11 11 11 11 1 1 1
+staticfield java/io/File fs Ljava/io/FileSystem; java/io/WinNTFileSystem
+staticfield java/io/File separatorChar C 92
+staticfield java/io/File separator Ljava/lang/String; "\"
+staticfield java/io/File pathSeparatorChar C 59
+staticfield java/io/File pathSeparator Ljava/lang/String; ";"
+staticfield java/io/File PATH_OFFSET J 16
+staticfield java/io/File PREFIX_LENGTH_OFFSET J 12
+staticfield java/io/File UNSAFE Lsun/misc/Unsafe; sun/misc/Unsafe
+staticfield java/io/File $assertionsDisabled Z 1
+instanceKlass cpw/mods/fml/common/ModClassLoader
+instanceKlass net/minecraft/launchwrapper/LaunchClassLoader
+instanceKlass sun/misc/Launcher$ExtClassLoader
+instanceKlass sun/misc/Launcher$AppClassLoader
+ciInstanceKlass java/net/URLClassLoader 1 1 519 8 8 8 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 100 7 7 7 100 100 7 7 7 7 100 7 100 100 7 7 7 7 100 7 100 7 7 7 7 7 7 100 100 7 7 100 100 100 7 7 7 7 100 7 100 100 100 7 7 7 100 7 7 7 7 7 100 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 9 9 9 9 9 9 9 9 9 9 9 9 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 11 11 11 11 11 11 11 11
+ciInstanceKlass java/net/URL 1 1 454 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 5 0 100 100 100 100 7 7 100 100 100 100 100 7 7 7 7 7 100 100 100 100 7 7 7 7 100 7 7 7 100 7 7 7 100 7 7 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 11
+ciInstanceKlass java/util/jar/Manifest 1 1 227 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 100 100 100 100 100 7 7 7 100 7 7 100 7 100 100 7 7 7 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 9 9 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 11 11 11 11 11 11 11 11 11 11 11 11 1
+ciInstanceKlass sun/misc/Launcher 1 1 215 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 100 7 100 100 100 100 100 100 100 100 7 100 7 100 7 7 100 7 7 100 7 7 7 7 7 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 9 9 9 9 9 9 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 1 1 1 1
+ciInstanceKlass sun/misc/Launcher$AppClassLoader 1 1 198 8 8 7 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 100 100 7 100 7 7 7 7 7 7 7 100 7 7 100 7 100 7 100 7 7 7 100 7 7 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 9 9 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 11 1
+staticfield sun/misc/Launcher$AppClassLoader $assertionsDisabled Z 1
+ciInstanceKlass sun/misc/Launcher$ExtClassLoader 1 1 206 8 8 8 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 100 100 100 7 100 7 7 7 7 7 100 7 100 100 100 7 7 7 7 7 7 100 7 7 7 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 9 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 11 1
+ciInstanceKlass java/security/CodeSource 1 1 319 8 8 8 8 8 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 5 0 100 7 7 100 100 100 100 100 100 7 100 7 100 100 7 7 7 7 100 100 100 100 100 7 100 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 9 9 9 9 9 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 11 11 11 11
+ciInstanceKlass java/lang/StackTraceElement 1 1 95 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 5 0 100 100 7 100 7 100 1 1 1 1 1 1 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 9 9 9 9 10 10 10 10 10 10 10 10 10 10 10 10
+instanceKlass java/nio/FloatBuffer
+instanceKlass java/nio/DoubleBuffer
+instanceKlass java/nio/ShortBuffer
+instanceKlass java/nio/IntBuffer
+instanceKlass java/nio/LongBuffer
+instanceKlass java/nio/CharBuffer
+instanceKlass java/nio/ByteBuffer
+ciInstanceKlass java/nio/Buffer 1 1 100 8 8 8 8 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 3 100 100 7 100 7 100 100 100 1 1 1 1 12 12 12 12 12 12 12 12 12 12 12 9 9 9 9 10 10 10 10 10 10 10 10 10 10 10 10 10
+ciInstanceKlass java/lang/Boolean 1 1 107 8 8 8 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 5 0 100 7 7 100 100 100 7 100 7 7 1 1 1 1 1 1 1 1 12 12 12 12 12 12 12 12 12 12 12 12 12 12 9 9 9 9 10 10 10 10 10 10 10 10 10 10
+staticfield java/lang/Boolean TRUE Ljava/lang/Boolean; java/lang/Boolean
+staticfield java/lang/Boolean FALSE Ljava/lang/Boolean; java/lang/Boolean
+staticfield java/lang/Boolean TYPE Ljava/lang/Class; java/lang/Class
+ciInstanceKlass java/lang/Character 1 1 456 3 3 3 3 3 3 3 3 8 8 7 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 5 0 5 0 100 100 7 7 100 100 100 7 100 7 100 100 100 100 7 7 100 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 9 9 9 9 9 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 11 11 1 1 1 1
+staticfield java/lang/Character TYPE Ljava/lang/Class; java/lang/Class
+staticfield java/lang/Character $assertionsDisabled Z 1
+instanceKlass com/google/gson/internal/LazilyParsedNumber
+instanceKlass com/google/gson/internal/LazilyParsedNumber
+instanceKlass java/math/BigInteger
+instanceKlass java/math/BigDecimal
+instanceKlass java/util/concurrent/atomic/AtomicLong
+instanceKlass java/util/concurrent/atomic/AtomicInteger
+instanceKlass java/lang/Long
+instanceKlass java/lang/Integer
+instanceKlass java/lang/Short
+instanceKlass java/lang/Byte
+instanceKlass java/lang/Double
+instanceKlass java/lang/Float
+ciInstanceKlass java/lang/Number 1 1 31 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 5 0 100 100 7 12 12 10 10
+ciInstanceKlass java/lang/Float 1 1 166 3 3 3 4 4 4 4 8 8 8 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 3 3 3 3 4 4 5 0 7 100 100 7 100 7 100 100 7 1 1 1 1 1 1 1 1 1 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 9 9 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10
+staticfield java/lang/Float TYPE Ljava/lang/Class; java/lang/Class
+ciInstanceKlass java/lang/Double 1 1 220 8 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 3 3 3 3 5 0 5 0 5 0 5 0 5 0 6 0 6 0 6 0 6 0 6 0 6 0 6 0 7 100 7 100 100 7 100 100 100 7 1 1 1 1 1 1 1 1 1 1 1 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 9 9 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10
+staticfield java/lang/Double TYPE Ljava/lang/Class; java/lang/Class
+ciInstanceKlass java/lang/Byte 1 1 150 8 8 8 8 8 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 3 3 3 3 5 0 5 0 7 7 7 100 7 7 100 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 9 9 9 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 1
+staticfield java/lang/Byte TYPE Ljava/lang/Class; java/lang/Class
+ciInstanceKlass java/lang/Short 1 1 156 3 3 8 8 8 8 8 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 3 3 3 3 5 0 5 0 7 100 7 7 100 7 7 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 9 9 9 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 1
+staticfield java/lang/Short TYPE Ljava/lang/Class; java/lang/Class
+ciInstanceKlass java/lang/Integer 1 1 306 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 3 3 5 0 5 0 5 0 100 7 7 100 100 7 7 100 7 100 7 7 100 100 7 100 7 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 9 9 9 9 9 9 9 9 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 1
+staticfield java/lang/Integer TYPE Ljava/lang/Class; java/lang/Class
+staticfield java/lang/Integer digits [C 36
+staticfield java/lang/Integer DigitTens [C 100
+staticfield java/lang/Integer DigitOnes [C 100
+staticfield java/lang/Integer sizeTable [I 10
+ciInstanceKlass java/lang/Long 1 1 353 3 3 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 3 3 5 0 5 0 5 0 5 0 5 0 5 0 5 0 5 0 5 0 5 0 5 0 5 0 5 0 5 0 5 0 100 7 7 100 100 7 7 7 7 100 7 100 100 100 7 100 100 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 9 9 9 9 9 9 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 1
+staticfield java/lang/Long TYPE Ljava/lang/Class; java/lang/Class
+ciInstanceKlass java/lang/NullPointerException 1 1 18 1 1 1 1 1 1 1 1 1 5 0 100 7 12 12 10 10
+ciInstanceKlass java/lang/ArithmeticException 1 1 18 1 1 1 1 1 1 1 1 1 5 0 100 100 12 12 10 10
+instanceKlass java/net/URLPermission
+instanceKlass sun/security/provider/PolicyFile$SelfPermission
+instanceKlass javax/crypto/CryptoPermission
+instanceKlass java/net/SocketPermission
+instanceKlass java/security/UnresolvedPermission
+instanceKlass java/security/AllPermission
+instanceKlass java/io/FilePermission
+instanceKlass java/security/BasicPermission
+ciInstanceKlass java/security/Permission 1 1 84 8 8 8 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 5 0 100 100 7 100 100 100 100 100 100 7 1 1 1 1 1 1 1 12 12 12 12 12 12 12 12 12 12 9 10 10 10 10 10 10 10 10 10 10
+ciInstanceKlass java/lang/RuntimePermission 1 1 18 1 1 1 1 1 1 1 1 1 5 0 100 7 12 12 10 10
+ciInstanceKlass java/security/AccessController 1 1 184 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 100 100 100 100 100 7 100 7 7 100 100 100 7 7 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10
+ciInstanceKlass java/security/PrivilegedAction 1 0 10 1 1 1 1 1 1 100 100 1
+ciInstanceKlass sun/reflect/ReflectionFactory$GetReflectionFactoryAction 1 1 26 1 1 1 1 1 1 1 1 1 1 1 1 7 100 7 7 1 1 12 12 12 10 10 10 1
+ciInstanceKlass java/util/Collection 1 1 84 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 100 100 100 100 100 100 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 12 12 12 12 12 12 12 12 12 10 10 10 11 11 11 11 11 11
+ciInstanceKlass java/util/List 1 1 109 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 100 100 100 100 100 100 100 100 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 12 12 12 12 12 12 12 12 12 10 10 10 11 11 11 11 11 11
+ciInstanceKlass java/util/RandomAccess 1 0 5 1 1 100 100
+instanceKlass java/util/Hashtable$ValueCollection
+instanceKlass com/google/common/collect/Collections2$FilteredCollection
+instanceKlass com/google/common/collect/Collections2$TransformedCollection
+instanceKlass com/google/common/collect/AbstractMultiset
+instanceKlass com/google/common/collect/AbstractMultimap$Values
+instanceKlass java/util/IdentityHashMap$Values
+instanceKlass com/google/common/collect/Multimaps$Entries
+instanceKlass com/google/common/collect/AbstractMapBasedMultimap$WrappedCollection
+instanceKlass com/google/common/collect/ImmutableCollection
+instanceKlass java/util/LinkedHashMap$LinkedValues
+instanceKlass java/util/TreeMap$Values
+instanceKlass java/util/HashMap$Values
+instanceKlass java/util/AbstractQueue
+instanceKlass java/util/ArrayDeque
+instanceKlass java/util/AbstractSet
+instanceKlass java/util/AbstractList
+ciInstanceKlass java/util/AbstractCollection 1 1 140 3 3 8 8 8 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 7 7 7 100 7 100 100 7 7 100 7 7 7 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 11 11 11 11 11
+instanceKlass com/google/common/collect/Lists$ReverseList
+instanceKlass java/util/SubList
+instanceKlass sun/security/jca/ProviderList$ServiceList
+instanceKlass sun/security/jca/ProviderList$3
+instanceKlass com/google/common/collect/Lists$Partition
+instanceKlass com/google/common/collect/Lists$TransformingRandomAccessList
+instanceKlass java/util/ArrayList$SubList
+instanceKlass java/util/AbstractSequentialList
+instanceKlass java/util/Collections$SingletonList
+instanceKlass java/util/Arrays$ArrayList
+instanceKlass java/util/ArrayList
+instanceKlass java/util/Collections$EmptyList
+instanceKlass java/util/Vector
+ciInstanceKlass java/util/AbstractList 1 1 164 8 8 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 7 100 100 7 7 100 7 7 100 7 7 7 7 7 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 9 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 11 11 11 11 11 11 11 11 11 11 11 1 1
+ciInstanceKlass sun/reflect/ReflectionFactory 1 1 270 8 8 7 7 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 7 7 7 7 7 100 7 7 7 7 7 100 7 100 7 7 7 7 7 100 7 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 9 9 9 9 9 9 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 1
+staticfield sun/reflect/ReflectionFactory reflectionFactoryAccessPerm Ljava/security/Permission; java/lang/RuntimePermission
+staticfield sun/reflect/ReflectionFactory soleInstance Lsun/reflect/ReflectionFactory; sun/reflect/ReflectionFactory
+instanceKlass java/lang/ref/ReferenceQueue$Null
+ciInstanceKlass java/lang/ref/ReferenceQueue 1 1 118 8 7 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 5 0 100 7 100 100 7 100 100 7 7 100 7 7 7 1 1 1 1 1 1 1 1 1 1 1 1 1 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 9 9 9 9 9 9 9 9 10 10 10 10 10 10 10 10 10 10 10 10 1
+staticfield java/lang/ref/ReferenceQueue $assertionsDisabled Z 1
+ciInstanceKlass java/lang/ref/ReferenceQueue$Lock 1 1 18 1 1 1 1 1 1 1 1 7 100 100 7 1 12 10 10 1
+ciInstanceKlass sun/misc/VM 1 1 223 8 8 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 3 3 3 3 3 3 3 5 0 5 0 100 100 7 100 7 7 7 100 7 100 100 7 7 7 1 1 1 1 1 1 1 1 1 1 1 1 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10
+staticfield sun/misc/VM lock Ljava/lang/Object; java/lang/Object
+staticfield sun/misc/VM savedProps Ljava/util/Properties; java/util/Properties
+ciInstanceKlass java/lang/Math 1 1 278 3 3 3 3 3 3 4 4 4 4 4 8 8 7 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 5 0 5 0 5 0 5 0 5 0 5 0 5 0 5 0 5 0 5 0 6 0 6 0 6 0 6 0 6 0 6 0 6 0 6 0 6 0 100 100 7 7 7 7 100 7 7 1 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 9 9 9 9 9 9 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 1
+staticfield java/lang/Math $assertionsDisabled Z 1
+ciInstanceKlass java/util/Set 1 1 45 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 100 100 100 1 1 1 1 1 1 1 1 1 1 1 1 12 10
+instanceKlass java/util/IdentityHashMap$EntrySet
+instanceKlass io/netty/channel/nio/SelectedSelectionKeySet
+instanceKlass java/util/WeakHashMap$EntrySet
+instanceKlass com/google/common/collect/MapMakerInternalMap$KeySet
+instanceKlass javax/imageio/spi/PartiallyOrderedSet
+instanceKlass com/google/gson/internal/LinkedTreeMap$EntrySet
+instanceKlass com/google/common/collect/Sets$SetView
+instanceKlass com/google/gson/internal/LinkedTreeMap$EntrySet
+instanceKlass java/util/Hashtable$KeySet
+instanceKlass java/util/EnumSet
+instanceKlass com/google/common/collect/Sets$ImprovedAbstractSet
+instanceKlass java/util/LinkedHashMap$LinkedKeySet
+instanceKlass java/util/IdentityHashMap$KeySet
+instanceKlass sun/util/resources/ParallelListResourceBundle$KeySet
+instanceKlass java/util/TreeSet
+instanceKlass java/util/LinkedHashMap$LinkedEntrySet
+instanceKlass java/util/HashMap$KeySet
+instanceKlass java/util/Collections$SingletonSet
+instanceKlass java/util/TreeMap$KeySet
+instanceKlass java/util/TreeMap$EntrySet
+instanceKlass java/util/HashMap$EntrySet
+instanceKlass java/lang/ProcessEnvironment$CheckedEntrySet
+instanceKlass java/util/HashSet
+instanceKlass java/util/WeakHashMap$KeySet
+instanceKlass java/util/Collections$SetFromMap
+instanceKlass java/util/Collections$EmptySet
+instanceKlass java/util/Hashtable$EntrySet
+ciInstanceKlass java/util/AbstractSet 1 1 68 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 100 7 7 7 7 7 7 7 1 1 1 1 12 12 12 12 12 12 12 12 12 12 12 10 10 10 10 10 10 10 11 11 11 11 11 11
+ciInstanceKlass java/util/Collections 1 1 672 8 8 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 3 3 3 3 3 3 3 3 100 100 100 100 100 100 100 7 7 7 7 100 7 100 100 100 100 100 100 100 100 100 100 100 100 7 7 7 100 7 7 100 100 7 7 100 7 7 100 7 100 100 7 7 7 100 7 100 7 100 100 100 7 7 100 7 100 7 100 7 100 7 7 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 9 9 9 9 9 9 9 9 9 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
+staticfield java/util/Collections EMPTY_SET Ljava/util/Set; java/util/Collections$EmptySet
+staticfield java/util/Collections EMPTY_LIST Ljava/util/List; java/util/Collections$EmptyList
+staticfield java/util/Collections EMPTY_MAP Ljava/util/Map; java/util/Collections$EmptyMap
+instanceKlass com/google/common/collect/MapMaker$NullConcurrentMap
+instanceKlass com/google/common/collect/MapMakerInternalMap
+instanceKlass com/google/common/collect/HashBiMap$Inverse
+instanceKlass com/google/common/cache/LocalCache
+instanceKlass com/google/common/collect/HashBiMap
+instanceKlass sun/misc/SoftCache
+instanceKlass com/google/gson/internal/LinkedTreeMap
+instanceKlass com/google/gson/internal/LinkedTreeMap
+instanceKlass com/google/common/collect/Maps$ImprovedAbstractMap
+instanceKlass java/util/EnumMap
+instanceKlass java/util/IdentityHashMap
+instanceKlass java/util/TreeMap
+instanceKlass java/util/concurrent/ConcurrentHashMap
+instanceKlass sun/util/PreHashedMap
+instanceKlass java/util/WeakHashMap
+instanceKlass java/util/HashMap
+instanceKlass java/util/Collections$EmptyMap
+ciInstanceKlass java/util/AbstractMap 1 1 147 8 8 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 100 100 7 7 100 7 100 100 100 100 7 7 7 7 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 9 9 10 10 10 10 10 10 10 10 10 10 10 10 10 10 11 11 11 11 11 11 11 11 11 11 11 11 11 1 1
+ciInstanceKlass java/util/Objects 1 1 79 8 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 100 7 100 7 100 100 100 1 1 1 1 1 1 1 1 1 1 1 1 1 12 12 12 12 12 12 12 12 12 12 12 10 10 10 10 10 10 10 10 10 10 11 11
+ciInstanceKlass java/util/Iterator 1 1 42 8 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 100 100 100 100 1 1 1 1 12 12 12 12 12 10 10 11 11 11
+instanceKlass io/netty/util/internal/RecyclableArrayList
+instanceKlass net/minecraft/world/WorldServer$ServerBlockEventList
+instanceKlass net/minecraftforge/common/BiomeManager$TrackedList
+instanceKlass org/objectweb/asm/tree/MethodNode$1
+instanceKlass org/objectweb/asm/tree/MethodNode$1
+instanceKlass net/minecraftforge/oredict/OreDictionary$UnmodifiableArrayList
+instanceKlass cpw/mods/fml/common/versioning/ComparableVersion$ListItem
+ciInstanceKlass java/util/ArrayList 1 1 339 3 3 8 8 8 8 8 8 8 8 7 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 3 5 0 100 100 100 100 100 100 100 100 100 100 7 7 100 100 7 100 7 7 100 100 7 7 7 7 100 7 100 100 7 100 100 100 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 9 9 9 9 9 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 11 11 11 11 11 1 1 1 1
+staticfield java/util/ArrayList EMPTY_ELEMENTDATA [Ljava/lang/Object; 0 [Ljava/lang/Object;
+staticfield java/util/ArrayList DEFAULTCAPACITY_EMPTY_ELEMENTDATA [Ljava/lang/Object; 0 [Ljava/lang/Object;
+ciInstanceKlass sun/reflect/Reflection 1 1 230 8 8 8 8 8 8 8 8 8 8 7 7 100 7 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 7 7 7 7 100 7 100 100 7 7 100 7 7 100 7 7 7 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 9 9 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 11 11 11
+instanceKlass sun/nio/ch/WindowsSelectorImpl$FdMap
+instanceKlass javax/swing/UIDefaults$TextAndMnemonicHashMap
+instanceKlass sun/net/www/http/KeepAliveCache
+instanceKlass java/lang/ProcessEnvironment
+instanceKlass java/util/LinkedHashMap
+ciInstanceKlass java/util/HashMap 1 1 465 3 3 4 4 4 4 4 8 8 8 100 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 3 3 3 3 5 0 100 7 100 100 100 100 100 100 100 100 100 7 100 100 100 100 7 100 100 100 7 100 100 7 100 7 100 100 100 100 7 100 7 7 100 100 7 7 7 7 7 100 100 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 9 9 9 9 9 9 9 9 9 9 9 9 9 9 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 11 11 11 11 11 11 11 11 11 11 11 11 11 1 1 1 1 1 1 1 1 1 1 1 1
+instanceKlass java/util/LinkedHashMap$Entry
+ciInstanceKlass java/util/HashMap$Node 1 1 82 8 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 7 100 100 7 100 7 7 1 1 1 1 1 1 1 1 1 12 12 12 12 12 12 12 12 12 12 12 12 9 9 9 9 10 10 10 10 10 10 10 11 11
+ciInstanceKlass java/lang/Class$3 1 1 53 8 8 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 7 7 7 100 7 100 1 1 12 12 12 12 12 12 12 12 9 10 10 10 10 10 10
+ciInstanceKlass java/lang/Class$ReflectionData 1 1 36 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 7 7 1 1 1 12 12 9 10 1
+ciInstanceKlass java/lang/Class$Atomic 1 1 99 8 8 8 8 8 7 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 7 100 100 100 100 100 7 1 1 1 1 1 1 1 1 1 1 1 1 1 1 12 12 12 12 12 12 12 12 12 12 12 12 12 12 9 9 9 9 10 10 10 10 10 10 10 10 10 10 10 1 1 1
+staticfield java/lang/Class$Atomic unsafe Lsun/misc/Unsafe; sun/misc/Unsafe
+staticfield java/lang/Class$Atomic reflectionDataOffset J 28
+staticfield java/lang/Class$Atomic annotationTypeOffset J 48
+staticfield java/lang/Class$Atomic annotationDataOffset J 44
+ciInstanceKlass java/lang/reflect/Modifier 1 1 149 3 8 8 8 8 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 100 100 100 100 7 7 7 7 1 1 1 12 12 12 12 12 12 12 10 10 10 10 10 10 10 10 10 10 1
+ciInstanceKlass sun/reflect/LangReflectAccess 1 0 44 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
+ciInstanceKlass java/lang/reflect/ReflectAccess 1 1 108 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 7 7 100 7 7 100 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10
+ciInstanceKlass sun/reflect/misc/ReflectUtil 1 1 227 8 8 8 8 8 8 8 8 8 8 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 7 7 100 100 100 100 100 7 7 100 7 100 100 7 7 7 7 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 9 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 11 11
+instanceKlass cpw/mods/fml/common/TracingPrintStream
+ciInstanceKlass java/io/PrintStream 1 1 279 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 7 100 100 100 7 100 100 7 7 7 100 100 100 100 100 100 7 100 100 7 100 100 100 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 9 9 9 9 9 9 9 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 11 11
+ciInstanceKlass java/util/Arrays 1 1 797 3 8 8 8 8 8 8 8 8 100 100 100 100 100 100 7 100 100 7 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 3 3 100 100 100 7 7 100 100 100 7 7 7 7 7 100 100 100 7 100 100 100 100 100 7 7 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 7 7 7 100 100 100 100 100 100 100 100 7 100 100 100 100 100 100 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 9 9 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 11 11 11 11 11 11 11 11 11 11 11 11 15 15 15 15 15 16 18 18 18 18 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
+staticfield java/util/Arrays $assertionsDisabled Z 1
+ciInstanceKlass sun/reflect/NativeConstructorAccessorImpl 1 1 84 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 100 7 100 7 7 7 7 7 7 1 1 1 1 1 1 1 1 1 1 1 1 1 12 12 12 12 12 12 12 12 12 12 12 12 12 9 9 9 10 10 10 10 10 10 10 10 10 10 10
+ciInstanceKlass sun/reflect/DelegatingConstructorAccessorImpl 1 1 29 1 1 1 1 1 1 1 1 1 1 1 1 1 100 100 100 7 7 1 1 12 12 12 12 9 10 10 10
+instanceKlass net/minecraft/network/play/client/C16PacketClientStatus$EnumState
+instanceKlass com/google/common/cache/RemovalCause
+instanceKlass com/mojang/authlib/minecraft/MinecraftProfileTexture$Type
+instanceKlass org/apache/commons/lang3/JavaVersion
+instanceKlass net/minecraftforge/client/IItemRenderer$ItemRenderType
+instanceKlass net/minecraftforge/client/event/RenderGameOverlayEvent$ElementType
+instanceKlass com/google/common/cache/LocalCache$NullEntry
+instanceKlass net/minecraftforge/common/EnumPlantType
+instanceKlass net/minecraft/world/EnumSkyBlock
+instanceKlass net/minecraft/event/ClickEvent$Action
+instanceKlass cpw/mods/fml/common/network/handshake/NetworkDispatcher$ConnectionType
+instanceKlass cpw/mods/fml/common/network/handshake/FMLHandshakeServerState
+instanceKlass cpw/mods/fml/common/network/handshake/NetworkDispatcher$ConnectionState
+instanceKlass cpw/mods/fml/common/network/handshake/FMLHandshakeClientState
+instanceKlass net/minecraft/server/network/NetHandlerLoginServer$LoginState
+instanceKlass net/minecraft/network/EnumConnectionState
+instanceKlass net/minecraftforge/common/util/ForgeDirection
+instanceKlass net/minecraft/util/MovingObjectPosition$MovingObjectType
+instanceKlass net/minecraft/entity/EnumCreatureType
+instanceKlass net/minecraft/entity/Entity$EnumEntitySize
+instanceKlass net/minecraft/world/biome/BiomeGenBase$TempCategory
+instanceKlass net/minecraftforge/event/terraingen/InitMapGenEvent$EventType
+instanceKlass net/minecraftforge/common/BiomeManager$BiomeType
+instanceKlass net/minecraft/world/gen/layer/GenLayerEdge$Mode
+instanceKlass cpw/mods/fml/common/event/FMLModIdMappingEvent$RemapTarget
+instanceKlass java/net/StandardProtocolFamily
+instanceKlass net/minecraft/world/WorldSettings$GameType
+instanceKlass net/minecraft/client/audio/ISound$AttenuationType
+instanceKlass net/minecraft/client/audio/MusicTicker$MusicType
+instanceKlass cpw/mods/fml/common/gameevent/TickEvent$Type
+instanceKlass net/minecraftforge/oredict/RecipeSorter$Category
+instanceKlass net/minecraftforge/common/BiomeDictionary$Type
+instanceKlass cpw/mods/fml/common/gameevent/TickEvent$Phase
+instanceKlass net/minecraft/client/audio/SoundList$SoundEntry$Type
+instanceKlass cpw/mods/fml/common/registry/ItemStackHolderInjector
+instanceKlass cpw/mods/fml/common/registry/ObjectHolderRegistry
+instanceKlass cpw/mods/fml/common/network/FMLOutboundHandler$OutboundTarget
+instanceKlass com/google/common/collect/Maps$EntryFunction
+instanceKlass cpw/mods/fml/common/network/NetworkRegistry
+instanceKlass cpw/mods/fml/common/ModContainer$Disableable
+instanceKlass cpw/mods/fml/common/discovery/asm/ASMModParser$AnnotationType
+instanceKlass cpw/mods/fml/common/discovery/ContainerType
+instanceKlass net/minecraftforge/common/config/Property$Type
+instanceKlass net/minecraftforge/common/ForgeVersion$Status
+instanceKlass net/minecraft/client/stream/ChatController$ChatState
+instanceKlass net/minecraft/client/stream/BroadcastController$BroadcastState
+instanceKlass net/minecraft/client/stream/IStream$AuthFailureReason
+instanceKlass cpw/mods/fml/common/eventhandler/Event$Result
+instanceKlass cpw/mods/fml/common/eventhandler/EventPriority
+instanceKlass com/google/common/collect/GenericMapMaker$NullListener
+instanceKlass com/google/common/collect/MapMakerInternalMap$EntryFactory
+instanceKlass com/google/common/collect/MapMakerInternalMap$Strength
+instanceKlass net/minecraft/client/settings/GameSettings$Options
+instanceKlass net/minecraft/world/EnumDifficulty
+instanceKlass net/minecraft/client/audio/SoundCategory
+instanceKlass net/minecraft/entity/player/EntityPlayer$EnumChatVisibility
+instanceKlass net/minecraft/item/ItemFishFood$FishType
+instanceKlass net/minecraft/util/EnumChatFormatting
+instanceKlass net/minecraft/item/EnumRarity
+instanceKlass net/minecraft/event/HoverEvent$Action
+instanceKlass net/minecraft/item/ItemArmor$ArmorMaterial
+instanceKlass net/minecraft/item/Item$ToolMaterial
+instanceKlass net/minecraft/block/BlockPressurePlate$Sensitivity
+instanceKlass net/minecraft/enchantment/EnumEnchantmentType
+instanceKlass com/google/common/collect/AbstractIterator$State
+instanceKlass com/google/common/base/Predicates$ObjectPredicate
+instanceKlass com/google/common/cache/LocalCache$EntryFactory
+instanceKlass com/google/common/cache/CacheBuilder$NullListener
+instanceKlass com/google/common/cache/CacheBuilder$OneWeigher
+instanceKlass com/google/common/cache/LocalCache$Strength
+instanceKlass net/minecraft/util/Session$Type
+instanceKlass net/minecraft/util/Util$EnumOS
+instanceKlass com/google/gson/FieldNamingPolicy
+instanceKlass com/google/gson/LongSerializationPolicy
+instanceKlass cpw/mods/fml/common/LoaderState$ModState
+instanceKlass cpw/mods/fml/common/LoaderState
+instanceKlass com/google/common/base/AbstractIterator$State
+instanceKlass java/awt/EventFilter$FilterAction
+instanceKlass java/awt/Component$BaselineResizeBehavior
+instanceKlass sun/java2d/StateTrackable$State
+instanceKlass sun/awt/OSInfo$OSType
+instanceKlass sun/awt/AppContext$State
+instanceKlass sun/font/EAttribute
+instanceKlass com/google/gson/stream/JsonToken
+instanceKlass cpw/mods/fml/relauncher/FileListHelper$CaseInsensitiveFileComparator
+instanceKlass cpw/mods/fml/relauncher/Side
+instanceKlass com/mojang/authlib/UserType
+instanceKlass com/google/gson/stream/JsonToken
+instanceKlass sun/security/ssl/SignatureAndHashAlgorithm$SignatureAlgorithm
+instanceKlass sun/security/ssl/SignatureAndHashAlgorithm$HashAlgorithm
+instanceKlass sun/security/ssl/CipherSuite$PRF
+instanceKlass sun/security/ssl/CipherSuite$KeyExchange
+instanceKlass sun/security/ssl/CipherSuite$CipherType
+instanceKlass sun/net/www/protocol/http/HttpURLConnection$TunnelState
+instanceKlass sun/nio/fs/WindowsPathType
+instanceKlass java/security/CryptoPrimitive
+instanceKlass sun/security/util/DisabledAlgorithmConstraints$KeySizeConstraint$Operator
+instanceKlass java/lang/invoke/LambdaFormEditor$Transform$Kind
+instanceKlass java/lang/invoke/MethodHandleImpl$Intrinsic
+instanceKlass java/lang/invoke/LambdaForm$BasicType
+instanceKlass sun/invoke/util/Wrapper
+instanceKlass java/text/Normalizer$Form
+instanceKlass java/net/Proxy$Type
+instanceKlass com/google/gson/FieldNamingPolicy
+instanceKlass com/google/gson/LongSerializationPolicy
+instanceKlass org/apache/logging/log4j/core/Filter$Result
+instanceKlass org/apache/logging/log4j/core/appender/rolling/RolloverFrequency
+instanceKlass java/net/InetAddress$Cache$Type
+instanceKlass com/sun/org/apache/xerces/internal/utils/XMLSecurityManager$NameMap
+instanceKlass com/sun/org/apache/xerces/internal/utils/XMLSecurityManager$State
+instanceKlass com/sun/org/apache/xerces/internal/utils/XMLSecurityManager$Limit
+instanceKlass com/sun/org/apache/xerces/internal/utils/XMLSecurityPropertyManager$Property
+instanceKlass com/sun/org/apache/xerces/internal/utils/XMLSecurityPropertyManager$State
+instanceKlass com/sun/org/apache/xerces/internal/util/Status
+instanceKlass org/apache/logging/log4j/core/LoggerContext$Status
+instanceKlass org/apache/logging/log4j/core/appender/ConsoleAppender$Target
+instanceKlass org/apache/logging/log4j/core/pattern/PatternParser$ParserState
+instanceKlass org/apache/logging/log4j/core/pattern/AnsiEscape
+instanceKlass java/math/RoundingMode
+instanceKlass sun/util/locale/provider/LocaleProviderAdapter$Type
+instanceKlass java/util/Locale$Category
+instanceKlass java/util/concurrent/TimeUnit
+instanceKlass com/sun/management/VMOption$Origin
+instanceKlass java/lang/Thread$State
+instanceKlass java/lang/annotation/ElementType
+instanceKlass java/lang/management/MemoryType
+instanceKlass java/lang/annotation/RetentionPolicy
+instanceKlass java/lang/management/PlatformComponent
+instanceKlass sun/util/logging/PlatformLogger$Level
+instanceKlass org/apache/logging/log4j/Level
+instanceKlass sun/launcher/LauncherHelper
+instanceKlass java/io/File$PathStatus
+ciInstanceKlass java/lang/Enum 1 1 116 8 8 8 8 7 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 100 100 100 7 100 100 100 100 100 100 7 100 7 1 1 1 1 1 1 1 1 1 1 12 12 12 12 12 12 12 12 12 12 12 12 12 12 9 9 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 11
+instanceKlass java/util/IllegalFormatException
+instanceKlass net/minecraft/util/ChatComponentTranslationFormatException
+instanceKlass java/util/regex/PatternSyntaxException
+instanceKlass java/security/InvalidParameterException
+instanceKlass java/lang/NumberFormatException
+ciInstanceKlass java/lang/IllegalArgumentException 1 1 24 1 1 1 1 1 1 1 1 1 1 5 0 100 7 1 12 12 12 12 10 10 10 10
+ciInstanceKlass java/util/concurrent/ConcurrentMap 1 1 178 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 100 100 100 100 100 100 100 100 100 100 100 100 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 10 10 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 15 15 16 18 1 1 100 1 8 1 1 12 10 1 1 1 8 1 1 8 1 1 1 8 1 1 1 8 1 1 1 8 1 1 1 8 1 1 1 8 1 1 1 8 1 1 1 8 1 1 8 1 1 1 8 1
+ciInstanceKlass java/util/concurrent/ConcurrentHashMap 1 1 1009 3 3 3 4 8 8 8 8 7 7 100 100 7 7 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 3 3 3 3 3 3 3 3 5 0 5 0 5 0 5 0 5 0 5 0 8 8 8 8 8 8 100 100 100 100 100 100 7 100 100 7 100 100 100 100 100 7 100 100 7 7 100 100 100 100 100 7 100 7 7 7 7 100 100 100 100 7 100 100 100 100 100 100 100 100 100 7 100 7 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 7 100 100 100 7 100 100 100 100 100 100 100 100 100 100 100 7 100 100 100 100 100 100 7 7 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 11 11 11 11 11 11 11 11 11 11 11 11 11 11 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
+staticfield java/util/concurrent/ConcurrentHashMap MAX_RESIZERS I 65535
+staticfield java/util/concurrent/ConcurrentHashMap RESIZE_STAMP_SHIFT I 16
+staticfield java/util/concurrent/ConcurrentHashMap NCPU I 8
+staticfield java/util/concurrent/ConcurrentHashMap serialPersistentFields [Ljava/io/ObjectStreamField; 3 [Ljava/io/ObjectStreamField;
+staticfield java/util/concurrent/ConcurrentHashMap U Lsun/misc/Unsafe; sun/misc/Unsafe
+staticfield java/util/concurrent/ConcurrentHashMap SIZECTL J 20
+staticfield java/util/concurrent/ConcurrentHashMap TRANSFERINDEX J 32
+staticfield java/util/concurrent/ConcurrentHashMap BASECOUNT J 24
+staticfield java/util/concurrent/ConcurrentHashMap CELLSBUSY J 36
+staticfield java/util/concurrent/ConcurrentHashMap CELLVALUE J 144
+staticfield java/util/concurrent/ConcurrentHashMap ABASE J 16
+staticfield java/util/concurrent/ConcurrentHashMap ASHIFT I 2
+ciInstanceKlass java/util/HashMap$TreeNode 1 1 174 7 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 100 7 7 100 100 7 7 100 7 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 9 9 9 9 9 9 9 9 9 9 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 1
+staticfield java/util/HashMap$TreeNode $assertionsDisabled Z 1
+instanceKlass java/util/HashMap$KeyIterator
+instanceKlass java/util/HashMap$ValueIterator
+instanceKlass java/util/HashMap$EntryIterator
+ciInstanceKlass java/util/HashMap$HashIterator 1 1 78 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 100 7 100 7 7 7 100 1 1 1 1 1 1 1 1 12 12 12 12 12 12 12 12 12 12 12 12 9 9 9 9 9 9 9 9 9 9 10 10 10 10 10 10 1
+ciInstanceKlass java/util/jar/Attributes$Name 1 1 169 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 100 7 7 7 100 7 7 1 1 1 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 10 10 10 10 10 10 10 10 10 10 10 10 11
+staticfield java/util/jar/Attributes$Name MANIFEST_VERSION Ljava/util/jar/Attributes$Name; java/util/jar/Attributes$Name
+staticfield java/util/jar/Attributes$Name SIGNATURE_VERSION Ljava/util/jar/Attributes$Name; java/util/jar/Attributes$Name
+staticfield java/util/jar/Attributes$Name CONTENT_TYPE Ljava/util/jar/Attributes$Name; java/util/jar/Attributes$Name
+staticfield java/util/jar/Attributes$Name CLASS_PATH Ljava/util/jar/Attributes$Name; java/util/jar/Attributes$Name
+staticfield java/util/jar/Attributes$Name MAIN_CLASS Ljava/util/jar/Attributes$Name; java/util/jar/Attributes$Name
+staticfield java/util/jar/Attributes$Name SEALED Ljava/util/jar/Attributes$Name; java/util/jar/Attributes$Name
+staticfield java/util/jar/Attributes$Name EXTENSION_LIST Ljava/util/jar/Attributes$Name; java/util/jar/Attributes$Name
+staticfield java/util/jar/Attributes$Name EXTENSION_NAME Ljava/util/jar/Attributes$Name; java/util/jar/Attributes$Name
+staticfield java/util/jar/Attributes$Name EXTENSION_INSTALLATION Ljava/util/jar/Attributes$Name; java/util/jar/Attributes$Name
+staticfield java/util/jar/Attributes$Name IMPLEMENTATION_TITLE Ljava/util/jar/Attributes$Name; java/util/jar/Attributes$Name
+staticfield java/util/jar/Attributes$Name IMPLEMENTATION_VERSION Ljava/util/jar/Attributes$Name; java/util/jar/Attributes$Name
+staticfield java/util/jar/Attributes$Name IMPLEMENTATION_VENDOR Ljava/util/jar/Attributes$Name; java/util/jar/Attributes$Name
+staticfield java/util/jar/Attributes$Name IMPLEMENTATION_VENDOR_ID Ljava/util/jar/Attributes$Name; java/util/jar/Attributes$Name
+staticfield java/util/jar/Attributes$Name IMPLEMENTATION_URL Ljava/util/jar/Attributes$Name; java/util/jar/Attributes$Name
+staticfield java/util/jar/Attributes$Name SPECIFICATION_TITLE Ljava/util/jar/Attributes$Name; java/util/jar/Attributes$Name
+staticfield java/util/jar/Attributes$Name SPECIFICATION_VERSION Ljava/util/jar/Attributes$Name; java/util/jar/Attributes$Name
+staticfield java/util/jar/Attributes$Name SPECIFICATION_VENDOR Ljava/util/jar/Attributes$Name; java/util/jar/Attributes$Name
+ciInstanceKlass java/lang/IllegalAccessException 0 0 18 1 1 1 1 1 1 1 1 1 5 0 100 100 12 12 10 10
+ciInstanceKlass java/lang/InstantiationException 0 0 18 1 1 1 1 1 1 1 1 1 5 0 100 100 12 12 10 10
+instanceKlass java/util/ArrayList$ListItr
+ciInstanceKlass java/util/ArrayList$Itr 1 1 89 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 100 100 7 7 100 7 100 100 100 100 100 1 1 1 1 1 1 1 1 1 12 12 12 12 12 12 12 12 12 12 12 12 12 9 9 9 9 9 9 10 10 10 10 10 10 10 10 10 11 1
+ciInstanceKlass java/lang/reflect/InvocationTargetException 0 0 29 1 1 1 1 1 1 1 1 1 1 1 1 1 5 0 100 100 100 1 1 1 1 12 12 12 9 10 10
+ciInstanceKlass java/util/ListIterator 1 0 25 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 100 100 1 1
+ciInstanceKlass java/util/Arrays$ArrayList 1 1 114 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 5 0 7 100 7 7 7 7 7 7 100 100 100 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 12 12 12 12 12 12 12 12 12 12 12 12 12 12 9 10 10 10 10 10 10 10 10 10 10 10 11 11 1
+ciInstanceKlass java/util/HashMap$KeySet 1 1 95 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 100 7 100 7 7 7 100 100 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 12 12 12 12 12 12 12 12 12 12 12 12 12 12 9 9 9 9 9 9 10 10 10 10 10 10 10 10 10 11 1 1 1
+ciInstanceKlass java/util/HashMap$KeyIterator 1 1 37 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 7 7 7 100 1 1 1 1 12 12 12 12 9 9 10 10 1 1
+instanceKlass com/sun/proxy/$Proxy19
+instanceKlass com/sun/proxy/$Proxy18
+instanceKlass com/sun/proxy/$Proxy17
+instanceKlass com/sun/proxy/$Proxy16
+instanceKlass com/sun/proxy/$Proxy15
+instanceKlass com/sun/proxy/$Proxy14
+instanceKlass com/sun/proxy/$Proxy13
+instanceKlass com/sun/proxy/$Proxy12
+instanceKlass com/sun/proxy/$Proxy11
+instanceKlass com/sun/proxy/$Proxy10
+instanceKlass com/sun/proxy/$Proxy9
+instanceKlass com/sun/proxy/$Proxy8
+instanceKlass com/sun/proxy/$Proxy7
+instanceKlass com/sun/proxy/$Proxy6
+instanceKlass com/sun/proxy/$Proxy5
+instanceKlass com/sun/proxy/$Proxy4
+instanceKlass com/sun/proxy/$Proxy3
+instanceKlass com/sun/proxy/$Proxy2
+instanceKlass com/sun/proxy/$Proxy1
+instanceKlass com/sun/proxy/$Proxy0
+ciInstanceKlass java/lang/reflect/Proxy 1 1 283 3 8 8 8 8 7 7 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 5 0 7 100 7 100 100 100 100 100 100 7 100 100 100 100 100 7 100 7 100 7 100 100 100 7 100 7 100 7 100 7 7 7 7 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 9 9 9 9 9 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 1 1 1 1
+staticfield java/lang/reflect/Proxy constructorParams [Ljava/lang/Class; 1 [Ljava/lang/Class;
+staticfield java/lang/reflect/Proxy proxyClassCache Ljava/lang/reflect/WeakCache; java/lang/reflect/WeakCache
+staticfield java/lang/reflect/Proxy key0 Ljava/lang/Object; java/lang/Object
+ciInstanceKlass java/lang/reflect/WeakCache 1 1 125 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 7 7 7 7 100 7 7 100 7 7 7 7 7 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 9 9 9 9 9 10 10 10 10 10 10 10 10 10 10 11 11 11 11 11 11 11 1 1 1 1
+ciInstanceKlass java/util/concurrent/atomic/AtomicLong 1 1 128 8 7 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 5 0 5 0 100 7 100 100 100 7 100 100 7 1 1 1 1 1 1 1 1 1 1 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 9 9 9 9 10 10 10 10 10 10 10 10 10 10 10 10 10 11 11
+staticfield java/util/concurrent/atomic/AtomicLong unsafe Lsun/misc/Unsafe; sun/misc/Unsafe
+staticfield java/util/concurrent/atomic/AtomicLong valueOffset J 16
+staticfield java/util/concurrent/atomic/AtomicLong VM_SUPPORTS_LONG_CAS Z 1
+ciInstanceKlass java/lang/reflect/WeakCache$CacheKey 1 1 82 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 7 7 7 100 7 100 100 100 1 1 1 1 1 1 1 1 1 1 1 12 12 12 12 12 12 12 12 12 12 12 12 9 9 10 10 10 10 10 10 11 11 11 11 11 1
+staticfield java/lang/reflect/WeakCache$CacheKey NULL_KEY Ljava/lang/Object; java/lang/Object
+instanceKlass java/lang/ArrayIndexOutOfBoundsException
+ciInstanceKlass java/lang/IndexOutOfBoundsException 1 1 18 1 1 1 1 1 1 1 1 1 5 0 100 7 12 12 10 10
+ciInstanceKlass java/lang/NoSuchMethodException 1 1 18 1 1 1 1 1 1 1 1 1 5 0 100 7 12 12 10 10
+ciInstanceKlass sun/reflect/MethodAccessorGenerator 1 1 441 3 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 3 3 7 100 100 7 7 7 7 7 7 7 7 7 7 7 7 7 7 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 11 11
+ciInstanceKlass sun/reflect/BootstrapConstructorAccessorImpl 1 1 49 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 100 7 100 7 7 7 7 1 1 1 1 1 1 1 12 12 12 12 12 12 9 9 10 10 10 10
+ciInstanceKlass java/util/NoSuchElementException 0 0 18 1 1 1 1 1 1 1 1 1 5 0 100 100 12 12 10 10
+ciInstanceKlass sun/security/util/SecurityConstants 1 1 174 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 8 8 8 8 8 8 8 8 8 8 100 7 7 7 7 7 7 100 1 1 1 1 1 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 10 10 10 10 10 10
+staticfield sun/security/util/SecurityConstants ALL_PERMISSION Ljava/security/AllPermission; java/security/AllPermission
+staticfield sun/security/util/SecurityConstants SPECIFY_HANDLER_PERMISSION Ljava/net/NetPermission; java/net/NetPermission
+staticfield sun/security/util/SecurityConstants SET_PROXYSELECTOR_PERMISSION Ljava/net/NetPermission; java/net/NetPermission
+staticfield sun/security/util/SecurityConstants GET_PROXYSELECTOR_PERMISSION Ljava/net/NetPermission; java/net/NetPermission
+staticfield sun/security/util/SecurityConstants SET_COOKIEHANDLER_PERMISSION Ljava/net/NetPermission; java/net/NetPermission
+staticfield sun/security/util/SecurityConstants GET_COOKIEHANDLER_PERMISSION Ljava/net/NetPermission; java/net/NetPermission
+staticfield sun/security/util/SecurityConstants SET_RESPONSECACHE_PERMISSION Ljava/net/NetPermission; java/net/NetPermission
+staticfield sun/security/util/SecurityConstants GET_RESPONSECACHE_PERMISSION Ljava/net/NetPermission; java/net/NetPermission
+staticfield sun/security/util/SecurityConstants CREATE_CLASSLOADER_PERMISSION Ljava/lang/RuntimePermission; java/lang/RuntimePermission
+staticfield sun/security/util/SecurityConstants CHECK_MEMBER_ACCESS_PERMISSION Ljava/lang/RuntimePermission; java/lang/RuntimePermission
+staticfield sun/security/util/SecurityConstants MODIFY_THREAD_PERMISSION Ljava/lang/RuntimePermission; java/lang/RuntimePermission
+staticfield sun/security/util/SecurityConstants MODIFY_THREADGROUP_PERMISSION Ljava/lang/RuntimePermission; java/lang/RuntimePermission
+staticfield sun/security/util/SecurityConstants GET_PD_PERMISSION Ljava/lang/RuntimePermission; java/lang/RuntimePermission
+staticfield sun/security/util/SecurityConstants GET_CLASSLOADER_PERMISSION Ljava/lang/RuntimePermission; java/lang/RuntimePermission
+staticfield sun/security/util/SecurityConstants STOP_THREAD_PERMISSION Ljava/lang/RuntimePermission; java/lang/RuntimePermission
+staticfield sun/security/util/SecurityConstants GET_STACK_TRACE_PERMISSION Ljava/lang/RuntimePermission; java/lang/RuntimePermission
+staticfield sun/security/util/SecurityConstants CREATE_ACC_PERMISSION Ljava/security/SecurityPermission; java/security/SecurityPermission
+staticfield sun/security/util/SecurityConstants GET_COMBINER_PERMISSION Ljava/security/SecurityPermission; java/security/SecurityPermission
+staticfield sun/security/util/SecurityConstants GET_POLICY_PERMISSION Ljava/security/SecurityPermission; java/security/SecurityPermission
+staticfield sun/security/util/SecurityConstants LOCAL_LISTEN_PERMISSION Ljava/net/SocketPermission; java/net/SocketPermission
+ciInstanceKlass sun/reflect/GeneratedConstructorAccessor8 1 1 115 1 100 1 100 1 7 1 1 12 10 1 1 1 100 1 100 1 100 1 100 1 100 1 1 12 10 10 1 12 10 1 12 10 10 1 100 1 1 12 10 1 1 1 100 1 12 10 1 1 12 10 1 100 1 12 10 1 1 12 10 1 100 1 12 10 1 1 12 10 1 100 1 12 10 1 1 12 10 1 100 1 12 10 1 1 12 10 1 100 1 12 10 1 1 12 10 1 100 1 12 10 1 1 12 10 1 100 1 12 10 1 1 12 10
+instanceKlass io/netty/util/internal/ThreadLocalRandom
+instanceKlass java/security/SecureRandom
+ciInstanceKlass java/util/Random 1 1 339 3 4 8 8 8 8 8 8 8 7 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 5 0 5 0 5 0 5 0 5 0 5 0 5 0 5 0 6 0 6 0 6 0 6 0 100 100 100 100 100 7 100 100 7 7 100 7 100 100 100 7 7 7 7 7 100 100 100 100 100 100 100 7 100 7 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 9 9 9 9 9 9 9 9 9 9 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 1 1 1 1 1 1 1 1
+staticfield java/util/Random seedUniquifier Ljava/util/concurrent/atomic/AtomicLong; java/util/concurrent/atomic/AtomicLong
+staticfield java/util/Random serialPersistentFields [Ljava/io/ObjectStreamField; 3 [Ljava/io/ObjectStreamField;
+staticfield java/util/Random unsafe Lsun/misc/Unsafe; sun/misc/Unsafe
+staticfield java/util/Random seedOffset J 24
+ciInstanceKlass sun/net/www/http/KeepAliveCache 1 1 211 8 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 3 3 5 0 5 0 100 100 100 7 100 100 100 7 7 100 100 7 7 7 7 7 7 7 7 7 7 7 7 7 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 9 9 9 9 9 9 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 11 11 11 11
+ciInstanceKlass java/util/ConcurrentModificationException 0 0 24 1 1 1 1 1 1 1 1 1 1 5 0 100 100 1 12 12 12 12 10 10 10 10
+ciInstanceKlass java/lang/SecurityManager$1 1 1 39 8 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 7 100 7 100 7 1 1 1 12 12 12 12 12 9 10 10 10
+ciInstanceKlass net/minecraft/launchwrapper/LaunchClassLoader 1 1 789 10 10 10 9 7 10 9 7 10 9 7 10 9 10 9 9 9 10 9 10 9 7 10 9 10 10 9 8 10 8 8 8 8 8 10 8 8 8 8 8 9 100 9 8 10 9 10 7 10 10 10 10 8 7 10 8 10 10 10 10 10 7 11 7 9 100 9 8 10 11 7 10 11 11 11 7 10 10 11 11 7 10 11 11 10 10 10 8 10 8 10 10 8 7 10 10 10 10 10 10 10 10 10 10 8 10 10 10 8 10 9 8 10 10 10 7 10 10 7 9 9 8 8 10 11 10 9 10 10 8 10 100 10 10 10 100 9 8 11 11 10 9 10 10 8 10 10 10 100 10 9 8 10 10 11 10 8 11 8 8 10 10 10 10 8 10 7 10 10 10 9 9 10 8 8 10 10 8 10 10 11 11 7 10 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 10 10 8 8 7 7 1 1 1 3 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 100 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 100 100 100 100 100 100 100 100 100 100 100 100 1 1 1 1 1 1 1 1 1 1 1 100 100 1 1 1 1 1 1 1 1 1 100 1 1 1 1 100 1 1 1 1 100 100 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 12 12 12 12 1 12 12 1 12 12 1 12 12 12 12 12 7 12 12 1 12 7 12 12 12 1 12 1 1 1 1 1 12 1 1 1 1 1 12 1 100 12 1 12 12 12 1 12 12 12 1 1 100 12 1 12 12 12 12 12 1 7 12 1 12 1 100 12 1 12 7 12 1 12 12 7 12 12 1 12 7 7 12 12 1 12 12 12 12 12 1 12 1 12 12 1 1 12 7 12 12 12 12 7 12 12 12 7 12 12 1 12 12 12 1 12 12 1 7 12 12 12 1 12 12 1 12 12 1 1 100 12 100 12 12 12 12 12 1 12 1 12 100 12 12 1 12 1 12 12 12 7 12 7 12 12 1 12 12 7 12 1 12 12 1 100 12 12 1 12 1 1 12 12 7 12 7 12 1 12 12 12 12 12 7 12 12 1 1 12 12 1 12 7 12 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 12 7 12 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
+staticfield net/minecraft/launchwrapper/LaunchClassLoader EMPTY Ljava/util/jar/Manifest; java/util/jar/Manifest
+staticfield net/minecraft/launchwrapper/LaunchClassLoader RESERVED_NAMES [Ljava/lang/String; 22 [Ljava/lang/String;
+staticfield net/minecraft/launchwrapper/LaunchClassLoader DEBUG Z 0
+staticfield net/minecraft/launchwrapper/LaunchClassLoader DEBUG_FINER Z 0
+staticfield net/minecraft/launchwrapper/LaunchClassLoader DEBUG_SAVE Z 0
+ciInstanceKlass cpw/mods/fml/relauncher/FMLSecurityManager 1 1 82 10 10 8 8 10 10 10 8 8 8 10 8 8 100 10 8 100 8 10 100 7 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 100 1 1 12 7 12 1 1 7 12 12 100 1 1 1 12 1 1 1 1 1 1 12 1 1 1 1 1 1 1 1 1 1 1 1 1 1
+ciInstanceKlass java/lang/reflect/WeakCache$LookupValue 1 1 42 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 7 7 100 7 7 1 1 1 12 12 12 12 9 10 10 11 1
+ciInstanceKlass java/util/ArrayList$ListItr 1 1 79 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 100 100 7 100 7 7 100 100 100 1 1 1 1 1 1 1 12 12 12 12 12 12 12 12 12 12 12 9 9 9 9 9 9 10 10 10 10 10 10 10 1 1
+instanceKlass net/minecraftforge/event/brewing/PotionBrewEvent
+instanceKlass net/minecraftforge/event/world/ExplosionEvent
+instanceKlass net/minecraftforge/client/event/ClientChatReceivedEvent
+instanceKlass net/minecraftforge/event/world/ChunkWatchEvent
+instanceKlass net/minecraftforge/event/AnvilUpdateEvent
+instanceKlass net/minecraftforge/event/ServerChatEvent
+instanceKlass net/minecraftforge/event/terraingen/InitMapGenEvent
+instanceKlass net/minecraftforge/event/terraingen/ChunkProviderEvent
+instanceKlass net/minecraftforge/event/terraingen/WorldTypeEvent
+instanceKlass net/minecraftforge/event/CommandEvent
+instanceKlass net/minecraftforge/client/event/RenderGameOverlayEvent
+instanceKlass net/minecraftforge/event/terraingen/OreGenEvent
+instanceKlass net/minecraftforge/event/terraingen/DecorateBiomeEvent
+instanceKlass net/minecraftforge/event/terraingen/BiomeEvent
+instanceKlass net/minecraftforge/client/event/GuiScreenEvent
+instanceKlass net/minecraftforge/client/event/EntityViewRenderEvent
+instanceKlass net/minecraftforge/client/event/RenderBlockOverlayEvent
+instanceKlass net/minecraftforge/client/event/RenderItemInFrameEvent
+instanceKlass net/minecraftforge/client/event/RenderLivingEvent
+instanceKlass net/minecraftforge/common/ForgeChunkManager$UnforceChunkEvent
+instanceKlass net/minecraftforge/common/ForgeChunkManager$ForceChunkEvent
+instanceKlass cpw/mods/fml/client/event/ConfigChangedEvent
+instanceKlass net/minecraftforge/oredict/OreDictionary$OreRegisterEvent
+instanceKlass cpw/mods/fml/common/network/FMLNetworkEvent
+instanceKlass cpw/mods/fml/common/gameevent/PlayerEvent
+instanceKlass cpw/mods/fml/common/gameevent/InputEvent
+instanceKlass cpw/mods/fml/common/gameevent/TickEvent
+instanceKlass net/minecraftforge/fluids/FluidRegistry$FluidRegisterEvent
+instanceKlass net/minecraftforge/client/event/FOVUpdateEvent
+instanceKlass net/minecraftforge/client/event/MouseEvent
+instanceKlass net/minecraftforge/client/event/RenderWorldEvent
+instanceKlass net/minecraftforge/client/event/TextureStitchEvent
+instanceKlass net/minecraftforge/client/event/RenderHandEvent
+instanceKlass net/minecraftforge/client/event/RenderWorldLastEvent
+instanceKlass net/minecraftforge/client/event/DrawBlockHighlightEvent
+instanceKlass net/minecraftforge/client/event/sound/SoundEvent
+instanceKlass net/minecraftforge/event/entity/EntityEvent
+instanceKlass net/minecraftforge/event/world/BlockEvent
+instanceKlass net/minecraftforge/event/world/WorldEvent
+instanceKlass net/minecraftforge/client/event/GuiOpenEvent
+ciInstanceKlass cpw/mods/fml/common/eventhandler/Event 1 1 101 1 7 1 7 1 1 7 1 1 100 1 1 1 1 1 1 1 1 1 1 1 12 10 12 9 1 12 9 12 9 12 9 1 12 10 1 1 1 1 1 1 12 10 1 100 1 8 1 12 10 1 1 1 1 1 1 1 1 1 12 9 1 1 1 1 1 1 1 8 1 7 1 1 12 10 1 7 1 1 12 10 1 8 1 12 10 1 1 1 1 7 10 1 1 1 1 1 1 1 1
+ciInstanceKlass net/minecraft/util/ReportedException 0 0 41 1 100 1 100 1 1 1 1 1 1 8 1 1 1 12 10 12 9 1 1 1 1 1 1 1 1 100 1 12 10 1 1 1 12 10 1 1 1 1 1
+ciInstanceKlass net/minecraft/world/IBlockAccess 1 0 31 1 100 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
+instanceKlass net/minecraft/world/WorldServer
+instanceKlass net/minecraft/client/multiplayer/WorldClient
+ciInstanceKlass net/minecraft/world/World 1 1 2578 1 7 1 7 1 7 1 1 100 1 100 1 100 1 100 1 7 1 100 1 1 100 1 7 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 3 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 8 1 1 1 1 1 1 1 1 12 9 1 7 12 10 1 1 1 1 1 1 100 1 1 12 10 1 1 12 10 1 1 12 9 1 7 1 1 12 10 1 8 1 100 1 1 12 10 1 8 1 1 12 10 1 8 1 1 12 10 1 100 1 1 12 10 1 100 1 12 10 1 100 1 12 10 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 12 10 1 7 10 12 9 12 9 12 9 12 9 12 9 12 9 12 9 5 0 12 9 1 7 10 1 1 12 10 12 9 12 9 12 9 12 9 1 7 1 12 10 12 9 1 7 1 1 12 10 12 9 1 7 10 12 9 1 7 10 12 9 12 9 12 9 12 9 1 12 10 12 9 12 9 12 9 12 9 3 12 9 12 9 12 9 1 7 1 12 10 12 9 1 7 1 7 1 12 10 12 9 1 1 1 1 1 1 1 12 9 1 7 1 8 1 1 12 10 10 12 9 1 1 12 10 1 12 10 1 12 9 1 12 10 1 1 12 10 12 9 1 12 10 1 12 10 1 1 1 1 1 12 10 1 1 12 11 1 100 1 100 1 7 1 12 10 1 1 12 10 1 1 12 10 1 7 1 7 1 12 10 1 1 12 10 1 1 12 10 1 8 1 1 12 10 1 1 12 10 1 1 1 1 1 1 12 9 12 9 1 1 1 1 12 10 1 1 1 12 10 1 1 12 10 1 1 1 3 3 1 12 10 10 1 8 1 8 1 8 1 100 1 1 12 10 1 1 12 10 1 1 12 10 1 7 1 1 12 9 1 1 1 1 7 1 1 12 10 1 1 1 1 1 1 12 10 1 1 1 1 1 1 1 12 10 1 1 1 1 1 1 1 1 1 1 1 1 1 7 11 1 1 1 1 1 12 11 1 1 1 1 1 100 12 9 1 1 12 10 1 1 12 10 1 1 12 10 1 12 10 1 8 1 12 10 1 12 10 1 12 10 1 1 12 10 1 1 1 1 1 1 1 1 1 1 1 12 10 1 12 10 1 1 12 10 1 12 10 1 12 10 1 1 1 1 1 1 1 12 10 1 1 1 1 1 1 12 10 1 1 1 1 1 1 1 12 10 1 1 1 1 1 1 1 12 10 1 7 1 12 9 10 1 1 12 10 1 1 12 10 1 1 12 10 1 1 1 1 1 1 1 1 1 1 1 7 1 12 11 1 1 12 11 1 7 11 1 1 1 1 12 10 1 1 1 1 1 1 1 12 9 1 7 1 1 12 9 1 1 12 10 1 1 12 10 1 1 1 1 1 11 1 1 1 1 1 1 1 12 10 1 1 1 1 1 1 1 1 1 1 1 1 12 10 1 8 1 8 1 8 1 12 10 1 1 12 10 1 1 1 1 1 1 1 1 1 1 12 10 1 1 1 1 1 1 12 10 1 1 1 1 1 12 10 1 1 1 1 12 10 12 9 1 1 1 1 1 1 12 10 1 1 1 1 12 9 1 1 1 1 1 12 9 1 12 10 10 1 1 1 1 1 1 1 1 1 1 1 1 12 10 1 12 11 1 1 1 1 1 1 1 1 1 1 12 10 1 12 9 1 1 1 1 1 1 1 1 12 9 12 10 1 1 1 1 12 10 1 1 1 1 12 10 1 1 1 1 1 1 1 1 7 1 12 9 1 7 1 1 12 10 1 12 9 1 12 9 1 7 1 1 12 10 1 1 12 10 1 1 12 10 1 1 12 10 1 7 6 0 1 1 12 10 1 12 10 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 7 12 10 1 7 1 1 12 9 1 7 1 1 12 10 1 12 9 1 7 1 12 9 1 12 9 1 12 9 1 12 9 1 1 12 11 1 1 1 1 1 1 1 1 1 1 7 9 9 9 9 1 12 11 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 12 11 1 1 1 1 1 1 12 11 1 1 1 1 1 1 1 1 1 11 1 1 1 7 6 0 1 12 9 1 12 10 1 7 1 12 10 1 1 12 10 1 12 10 1 1 1 12 11 1 1 1 12 11 1 1 1 12 9 1 12 10 1 12 9 1 12 10 11 12 10 1 1 1 12 9 1 12 9 1 12 9 12 10 1 1 1 1 1 1 1 1 12 10 1 7 1 12 9 1 12 9 1 12 9 1 12 9 1 12 9 1 12 9 1 12 9 1 1 12 10 6 0 1 1 12 10 1 12 10 1 1 12 10 1 1 12 10 1 1 12 10 1 1 1 1 1 1 1 1 12 9 1 1 1 1 1 12 10 4 1 1 1 12 10 4 1 12 10 4 1 12 10 4 1 12 10 1 1 1 1 12 10 1 1 4 4 1 1 12 10 1 1 1 1 7 1 1 12 10 4 4 4 4 4 4 12 9 4 1 1 1 1 1 1 1 1 1 12 10 1 1 12 10 1 1 1 12 10 1 1 12 10 1 1 12 9 1 1 1 1 1 12 10 1 1 5 0 4 4 4 4 4 1 1 1 12 10 1 1 12 10 1 1 1 1 12 10 1 12 10 1 12 9 1 12 10 1 1 1 12 10 1 1 4 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 8 1 8 1 12 9 1 12 10 1 8 1 8 1 8 1 8 1 1 12 10 1 100 1 12 9 1 100 1 1 12 10 1 100 1 1 12 9 1 1 12 10 1 100 1 1 12 11 10 1 12 9 12 11 8 1 12 10 1 1 12 11 11 1 8 1 8 1 12 10 1 8 12 9 1 1 12 11 1 7 1 12 11 1 1 12 11 1 7 1 12 10 1 12 10 12 9 12 9 12 9 12 10 1 8 1 8 1 12 10 1 12 9 1 12 10 12 10 12 11 1 12 10 1 12 11 1 12 10 1 8 1 12 11 1 1 1 1 1 1 1 1 1 1 1 1 7 11 1 12 10 1 1 1 1 1 12 10 1 1 1 12 10 1 7 1 12 10 1 7 1 12 10 12 10 12 9 1 12 9 1 12 9 1 12 9 1 12 9 1 12 9 1 12 9 1 12 9 1 12 10 1 8 1 12 10 1 12 9 1 1 12 10 1 1 1 1 1 1 12 10 1 1 12 9 1 1 1 1 1 1 1 12 10 1 1 1 1 12 9 1 1 12 9 1 12 9 1 12 10 1 1 1 1 7 1 1 12 10 1 1 12 10 1 1 12 10 1 12 10 1 1 12 10 6 0 1 12 9 1 12 9 1 12 9 1 1 1 1 1 1 1 1 1 6 0 1 1 1 1 1 1 12 10 1 1 1 1 1 1 1 100 1 12 10 1 12 9 1 12 9 1 100 1 1 12 10 1 12 10 1 12 10 1 1 1 1 1 1 1 1 1 1 1 6 0 12 10 1 1 1 1 1 1 1 12 10 1 1 1 1 1 1 1 100 10 1 8 1 1 12 10 1 12 10 1 12 10 1 1 12 11 1 1 1 12 10 1 1 1 1 1 1 12 10 1 1 1 1 1 12 10 1 1 1 1 1 1 1 1 12 10 1 1 1 1 1 11 1 7 1 1 12 9 1 1 12 10 1 1 1 1 1 1 10 1 12 10 1 1 1 1 12 10 1 1 12 10 1 1 1 12 10 10 1 1 12 10 12 9 1 12 10 12 9 10 1 1 12 10 1 1 12 10 3 1 12 10 12 9 6 0 1 1 12 10 1 12 10 1 12 10 1 12 10 12 9 1 1 7 11 1 8 1 1 12 10 1 12 11 1 12 10 11 1 8 1 1 1 8 12 10 6 0 1 1 12 10 1 1 12 10 6 0 1 8 4 1 12 10 12 10 1 12 10 1 1 1 1 12 10 1 1 12 10 1 1 1 1 1 1 1 10 1 1 1 1 1 10 1 7 1 12 10 1 12 9 1 12 9 12 9 1 1 1 1 1 12 10 1 1 1 1 1 1 12 9 1 1 12 10 1 1 1 1 1 10 1 1 12 10 1 12 10 1 7 1 12 9 1 12 9 1 12 9 1 1 1 1 1 12 10 1 8 12 10 3 10 1 12 10 1 100 1 12 10 1 8 1 12 10 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 12 10 1 1 12 9 1 1 12 10 1 1 1 1 1 1 1 1 1 12 10 1 1 1 1 100 1 1 12 10 1 1 1 1 1 12 10 6 0 1 1 12 10 1 1 1 1 1 1 1 1 1 1 12 10 1 1 1 1 1 1 1 100 1 12 10 1 1 12 10 1 1 12 10 1 1 1 1 1 11 1 1 1 1 12 9 1 12 9 1 12 10 1 1 12 10 1 1 1 1 1 1 1 1 1 1 1 1 8 4 1 7 1 12 10 1 7 1 12 10 1 1 12 10 1 1 1 1 1 1 1 1 1 1 1 1 1 4 1 12 10 1 1 1 1 1 1 1 1 1 1 1 1 12 10 1 1 1 1 1 12 10 1 1 1 1 1 12 10 1 1 1 1 1 1 12 10 12 10 1 12 10 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 6 0 1 1 1 1 1 1 1 12 10 1 1 1 1 12 9 1 7 1 12 9 1 12 10 1 12 10 6 0 1 12 10 1 12 10 1 1 1 1 1 1 1 12 10 1 12 10 1 1 1 1 1 12 10 1 100 10 1 1 1 1 1 100 12 11 1 1 1 12 10 1 1 12 10 1 1 12 10 10 1 12 10 1 1 1 12 10 1 12 10 1 1 1 1 1 1 1 12 10 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 12 10 1 1 1 1 1 1 1 1 1 1 1 1 12 10 1 1 1 1 1 1 1 6 0 6 0 1 10 10 1 12 10 12 10 1 12 10 1 1 1 1 12 10 1 1 1 1 1 1 1 1 1 1 1 1 12 10 1 1 1 12 11 1 1 1 1 1 1 1 1 1 1 12 11 1 8 1 8 1 8 1 8 1 8 1 100 1 12 10 1 8 1 1 1 1 1 1 1 12 10 1 12 10 1 1 5 0 5 0 12 10 10 1 12 10 1 1 1 1 1 12 10 1 1 12 11 1 1 1 1 1 1 12 10 1 8 1 1 12 10 1 8 1 8 1 12 10 1 8 10 1 8 10 1 12 10 1 8 1 1 12 10 1 1 1 12 11 1 1 1 1 1 1 1 12 10 5 0 1 100 1 12 10 1 12 10 1 1 1 1 1 1 1 1 1 1 1 1 1 1 12 9 100 1 12 9 1 12 9 1 12 9 1 1 12 10 1 12 10 1 1 1 1 1 1 1 1 1 12 10 1 1 1 12 9 1 7 1 12 9 10 1 12 9 4 1 12 9 1 12 9 1 12 10 4 1 1 1 1 1 12 11 1 1 1 12 10 1 1 1 1 12 10 1 1 12 10 1 1 1 12 10 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
+ciInstanceKlass net/minecraft/client/multiplayer/WorldClient 1 1 684 1 7 1 7 1 1 1 1 1 1 100 1 100 1 100 1 100 1 7 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 8 1 1 1 7 1 12 10 1 8 1 7 1 1 12 10 1 12 10 1 7 10 12 9 1 7 10 12 9 12 9 1 7 1 1 12 10 12 9 12 9 12 9 1 1 12 9 1 7 1 1 12 9 1 12 9 1 1 12 9 1 12 10 1 1 12 10 1 7 1 1 12 9 1 12 10 1 7 1 1 12 10 1 1 1 1 1 1 1 1 1 1 1 12 10 1 1 12 10 1 1 12 10 1 1 12 10 1 8 1 7 1 1 12 10 1 12 10 1 12 10 1 12 9 1 8 1 7 1 1 12 10 1 7 1 1 12 11 1 1 12 11 1 7 1 1 12 11 1 7 1 1 12 11 1 1 12 9 1 100 1 12 11 1 1 12 10 1 8 1 12 10 1 12 10 1 8 12 9 1 7 1 12 10 1 8 1 12 10 1 12 10 1 1 1 1 1 1 1 1 1 1 1 1 1 10 10 1 12 9 1 1 12 11 1 1 12 11 1 12 11 1 12 11 1 7 11 1 12 9 1 12 9 1 8 1 1 12 10 1 1 12 10 1 12 11 1 1 1 1 1 1 1 1 1 1 12 10 1 1 12 10 1 12 10 1 1 1 10 1 7 1 1 12 10 1 100 1 12 10 1 7 1 1 12 10 1 1 1 1 12 10 1 1 12 10 1 1 12 10 1 12 10 1 7 1 1 12 9 1 1 12 10 1 7 1 12 10 1 1 12 9 1 100 1 12 10 1 1 1 1 1 12 10 10 1 1 12 10 1 1 12 10 1 1 1 1 1 12 9 1 7 1 12 10 1 1 12 10 1 1 1 12 10 1 1 1 12 10 1 1 12 10 1 1 1 1 1 1 1 1 1 12 10 1 100 1 8 12 10 1 100 1 1 12 10 1 12 10 1 1 1 12 9 1 12 9 1 1 1 12 9 1 7 1 12 9 1 1 7 10 1 1 12 9 1 1 12 10 1 1 12 10 1 7 1 1 12 10 1 7 1 1 12 9 1 12 10 1 8 1 1 12 10 1 1 12 10 1 1 12 10 1 1 1 1 1 1 1 1 1 1 1 1 1 12 9 1 12 11 11 1 12 11 1 12 9 1 12 9 1 12 9 1 1 12 10 1 100 10 10 11 1 12 9 1 12 9 1 12 9 12 11 1 1 12 10 1 8 1 12 10 1 100 1 1 12 10 1 8 10 1 8 10 1 8 10 1 1 1 1 1 1 1 12 9 1 7 1 1 12 10 1 7 1 7 10 1 12 10 6 0 1 100 1 1 12 10 6 0 6 0 1 1 12 10 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 12 9 1 100 1 12 10 1 100 1 1 12 10 1 1 1 1 1 1 1 1 1 1 1 1 12 9 1 1 8 1 1 12 10 1 8 10 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
+instanceKlass net/minecraftforge/event/terraingen/InitNoiseGensEvent
+instanceKlass net/minecraftforge/event/terraingen/SaplingGrowTreeEvent
+instanceKlass net/minecraftforge/event/world/ChunkEvent
+instanceKlass net/minecraftforge/event/world/WorldEvent$PotentialSpawns
+instanceKlass net/minecraftforge/event/world/WorldEvent$CreateSpawnPosition
+instanceKlass net/minecraftforge/event/world/WorldEvent$Save
+instanceKlass net/minecraftforge/event/world/WorldEvent$Load
+instanceKlass net/minecraftforge/event/world/WorldEvent$Unload
+ciInstanceKlass net/minecraftforge/event/world/WorldEvent 1 1 54 1 7 1 7 1 1 7 1 1 7 1 1 7 1 1 7 1 1 7 1 1 1 1 1 1 1 1 12 10 12 9 1 1 1 12 10 12 9 1 7 1 1 12 10 1 12 10 1 1 1 1 1 1
+instanceKlass net/minecraft/client/particle/EntityFX
+instanceKlass net/minecraft/entity/effect/EntityWeatherEffect
+instanceKlass net/minecraft/entity/item/EntityEnderCrystal
+instanceKlass net/minecraft/entity/projectile/EntityFireball
+instanceKlass net/minecraft/entity/item/EntityFireworkRocket
+instanceKlass net/minecraft/entity/item/EntityEnderEye
+instanceKlass net/minecraft/entity/projectile/EntityFishHook
+instanceKlass net/minecraft/entity/item/EntityBoat
+instanceKlass net/minecraft/entity/projectile/EntityThrowable
+instanceKlass net/minecraft/entity/item/EntityMinecart
+instanceKlass net/minecraft/entity/EntityHanging
+instanceKlass net/minecraft/entity/projectile/EntityArrow
+instanceKlass net/minecraft/entity/item/EntityTNTPrimed
+instanceKlass net/minecraft/entity/item/EntityFallingBlock
+instanceKlass net/minecraft/entity/item/EntityXPOrb
+instanceKlass net/minecraft/entity/item/EntityItem
+instanceKlass net/minecraft/entity/EntityLivingBase
+ciInstanceKlass net/minecraft/entity/Entity 1 1 1788 1 7 1 7 1 1 100 1 1 7 1 1 100 1 100 1 7 1 7 1 1 7 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 8 1 1 1 1 1 1 1 1 1 1 1 1 12 9 1 1 1 1 1 1 1 12 10 12 9 1 7 10 12 9 12 9 12 9 1 7 1 1 12 10 12 9 12 9 4 12 9 4 12 9 12 9 1 7 10 12 9 12 9 12 9 1 7 1 1 12 10 12 9 1 12 9 12 9 12 9 1 1 12 10 1 7 1 1 12 9 1 7 1 12 9 12 9 1 7 1 12 10 12 9 1 7 1 1 12 10 1 1 12 10 1 7 1 12 10 1 12 10 1 7 10 12 9 1 7 1 1 12 9 10 1 7 1 1 12 10 1 1 12 10 1 7 1 1 12 11 1 7 1 1 12 11 1 1 12 11 1 100 1 1 12 11 1 1 1 1 1 1 1 1 1 1 1 12 9 12 9 12 9 1 1 12 10 1 7 1 12 11 12 9 12 9 12 9 12 9 1 12 9 1 1 1 12 9 1 12 9 1 12 9 1 12 9 1 12 9 1 12 9 1 12 9 1 12 10 6 0 1 12 9 6 0 1 12 9 6 0 1 12 9 6 0 1 12 9 1 12 9 1 1 1 1 4 12 9 1 1 12 9 12 9 1 12 10 1 1 1 1 1 1 6 0 4 4 12 9 12 9 1 1 1 1 1 12 10 1 1 12 9 1 8 1 7 1 1 12 10 12 9 12 9 12 9 12 9 12 9 12 9 1 7 1 8 1 1 12 10 1 12 10 12 9 1 100 1 12 10 12 9 1 12 10 12 9 1 12 10 1 12 10 1 12 10 1 12 10 1 7 1 1 12 10 6 0 1 1 12 10 1 1 12 10 1 7 1 1 12 9 1 7 10 1 8 1 1 12 10 1 1 12 10 1 12 10 1 8 1 1 12 10 1 1 12 10 1 1 12 10 6 0 6 0 6 0 6 0 1 1 12 10 1 12 10 12 9 12 9 1 7 1 1 12 9 1 1 12 10 1 12 10 1 12 10 12 9 4 6 0 1 12 10 1 1 12 10 1 1 1 1 1 1 1 1 1 1 12 9 4 1 12 10 1 7 1 1 12 10 1 1 12 10 1 1 1 1 12 10 1 1 12 10 1 1 1 1 1 1 1 100 12 9 1 12 10 6 0 1 8 4 12 9 6 0 6 0 1 1 12 10 12 9 1 12 10 1 100 6 0 6 0 1 12 10 1 12 11 1 1 12 11 1 1 12 10 1 12 10 1 12 10 12 9 4 1 1 12 10 1 8 12 9 12 9 12 9 1 1 12 10 1 12 10 1 12 10 1 7 1 12 9 1 1 12 10 6 0 12 9 4 1 12 10 1 1 12 10 1 1 12 10 1 1 12 10 1 12 10 1 8 1 100 1 1 12 10 1 8 1 1 12 10 1 1 12 10 1 100 1 12 10 1 12 10 6 0 1 12 10 1 12 10 1 12 10 1 8 4 4 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 8 1 1 12 10 1 12 10 1 8 1 8 1 100 1 1 12 10 1 1 1 1 1 12 9 1 12 9 1 12 10 1 12 10 4 1 12 10 1 12 10 1 1 1 1 1 1 1 12 10 1 1 1 1 1 12 10 1 1 1 12 9 1 12 9 1 12 9 1 1 12 10 6 0 1 12 10 1 12 9 1 1 12 10 4 1 12 10 4 1 8 1 8 1 8 1 1 1 12 10 1 1 12 10 1 7 1 1 12 11 1 1 1 6 0 12 9 1 1 12 10 1 1 4 1 1 12 10 4 4 1 12 10 1 12 10 1 1 1 1 1 1 1 12 10 6 0 1 1 12 10 1 1 1 1 12 10 1 1 1 1 1 6 0 6 0 12 10 1 1 1 1 1 1 12 9 12 9 12 9 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 12 10 6 0 12 9 1 12 10 1 12 9 1 1 1 1 12 9 1 12 10 12 10 1 1 1 1 1 1 1 1 1 1 1 12 10 1 1 1 1 1 12 10 6 0 1 1 1 1 12 10 1 8 1 7 1 1 12 10 1 1 12 10 1 100 1 1 1 1 1 8 1 1 12 10 1 1 12 10 1 8 1 8 1 1 12 10 1 8 1 1 12 10 1 8 1 1 12 10 1 8 1 12 10 1 8 1 1 12 10 1 8 1 1 12 10 1 8 12 9 1 8 1 8 1 12 10 1 1 12 10 1 1 12 10 1 8 1 12 10 12 9 1 8 1 1 12 10 1 7 11 1 12 10 1 12 11 1 8 1 100 1 1 12 10 1 12 10 1 12 10 10 12 10 1 8 1 8 1 8 1 1 1 1 1 1 1 12 10 1 7 1 1 12 10 1 7 1 1 12 10 6 0 1 1 12 10 1 1 12 10 1 1 12 10 1 12 10 1 1 12 10 1 1 12 10 1 1 12 10 1 1 12 10 1 12 10 12 10 1 1 12 10 1 12 11 1 8 1 8 1 8 1 12 10 1 12 10 1 8 1 8 1 1 1 1 1 1 7 1 12 10 1 10 1 100 1 7 1 12 10 1 1 12 10 1 1 1 100 1 7 12 10 1 1 1 1 1 1 12 10 1 1 1 1 7 1 12 10 1 1 12 10 1 1 1 1 12 9 1 1 12 10 1 7 1 12 10 1 12 9 1 12 10 1 1 12 10 1 1 1 1 1 1 1 1 4 4 1 12 10 1 1 1 1 1 1 1 12 10 1 12 10 12 9 12 9 6 0 4 1 12 10 1 12 10 1 12 10 1 1 1 1 6 0 1 1 1 1 1 1 1 1 1 1 1 100 1 1 12 10 12 9 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 12 10 1 1 12 10 1 1 1 1 1 1 1 12 10 1 1 1 1 1 1 1 1 12 10 1 1 12 10 1 1 1 1 12 10 1 1 1 1 1 1 1 1 1 1 1 1 12 10 1 12 10 6 0 1 1 1 1 1 1 1 1 1 8 1 8 1 8 1 7 1 1 12 10 1 1 1 1 1 1 1 1 1 1 1 8 1 1 12 10 1 7 1 12 10 12 10 1 100 1 12 10 1 8 1 100 1 1 12 10 1 100 1 12 10 1 100 1 12 10 1 1 12 10 1 1 1 1 12 10 1 1 1 1 8 1 12 10 1 1 12 10 1 12 10 1 8 1 1 12 10 1 100 1 1 12 10 1 8 1 12 10 1 1 12 10 12 10 1 1 12 10 1 100 12 9 12 9 1 1 12 10 12 9 10 1 12 10 1 1 1 1 1 1 1 1 1 1 1 12 10 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 8 10 1 1 12 10 1 8 1 1 12 10 1 8 10 1 8 1 8 1 8 1 1 12 10 1 8 1 1 12 10 1 1 1 1 100 12 10 1 1 1 1 1 1 1 100 1 100 1 12 9 1 12 10 1 100 1 12 9 1 100 1 1 12 10 1 12 9 12 10 1 100 1 12 10 1 100 1 12 9 1 1 12 10 1 12 9 1 12 10 1 12 9 1 1 1 1 1 1 1 1 1 1 7 1 12 10 1 1 12 10 1 1 1 1 1 1 8 1 12 10 1 8 1 8 1 8 1 8 1 12 10 1 1 12 10 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1
+instanceKlass net/minecraft/entity/EntityLiving
+instanceKlass net/minecraft/entity/player/EntityPlayer
+ciInstanceKlass net/minecraft/entity/EntityLivingBase 1 1 1845 1 7 1 7 1 1 100 1 7 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 8 1 1 12 10 1 7 1 12 10 12 9 1 7 1 12 10 12 9 1 7 12 9 12 9 4 12 9 12 9 1 12 10 1 1 12 10 1 1 12 10 1 12 9 1 7 1 1 12 10 4 12 9 1 12 9 1 12 9 1 12 9 1 1 12 10 4 12 9 6 0 6 0 1 12 9 12 9 4 1 12 9 1 1 1 1 1 1 12 9 1 7 1 1 12 10 1 7 1 1 12 10 1 7 1 12 10 1 7 1 12 10 1 1 12 10 1 7 1 1 12 9 1 7 1 1 12 10 1 12 9 1 12 9 1 1 12 10 1 12 10 6 0 1 7 1 1 12 11 1 1 1 12 10 1 12 10 1 12 9 1 7 1 1 12 10 6 0 1 12 9 1 12 9 1 7 1 1 12 10 1 1 12 10 1 7 1 1 12 9 1 1 12 10 1 12 9 4 1 1 12 10 1 1 12 10 1 1 12 10 12 10 1 1 1 1 1 1 1 1 1 1 12 9 12 9 12 10 1 1 12 9 1 8 1 7 1 1 12 10 1 12 10 1 12 10 1 7 1 1 12 9 1 1 12 10 1 12 10 1 12 10 1 7 1 1 12 9 1 7 1 12 9 1 12 9 1 1 12 10 12 10 1 7 1 1 12 9 1 12 9 1 1 12 10 1 12 10 1 1 12 10 1 1 12 10 1 1 12 9 1 7 1 12 10 1 8 1 12 9 1 12 9 1 12 9 1 1 12 10 1 12 9 1 12 10 1 1 12 9 1 1 12 10 1 1 12 10 1 12 10 12 9 12 9 12 9 12 9 1 12 9 1 7 1 12 10 1 12 10 12 9 12 9 12 9 12 9 1 12 10 1 12 9 12 9 1 12 10 12 9 12 9 12 9 12 9 12 9 1 12 9 1 12 9 1 12 9 1 12 10 1 1 1 1 1 12 9 1 12 10 1 12 10 1 1 12 10 1 8 1 7 1 1 12 10 1 1 12 10 1 100 1 12 10 1 12 10 1 12 10 1 12 10 1 12 10 6 0 1 8 1 12 9 1 12 9 1 1 1 12 10 1 7 1 1 12 10 1 12 10 1 1 1 1 1 1 1 1 7 1 1 12 10 1 1 1 12 9 1 1 1 12 9 1 1 1 8 1 7 1 1 12 10 1 8 1 1 12 10 1 1 12 10 1 8 1 8 1 8 1 8 1 12 10 1 1 12 10 100 12 9 1 1 12 10 1 1 12 10 1 8 1 1 12 10 1 1 12 10 1 12 10 1 12 10 1 100 10 1 1 12 10 1 100 1 1 12 11 1 7 1 12 11 1 1 12 11 1 100 10 1 1 12 10 1 1 12 10 1 8 1 1 1 1 1 1 1 1 1 1 1 1 1 12 10 1 12 10 1 1 12 10 1 1 12 10 1 1 12 10 1 12 10 1 1 12 10 1 1 12 10 1 12 10 1 1 12 10 1 1 12 10 1 100 1 1 12 10 1 100 1 12 10 1 100 1 1 12 10 1 1 12 10 1 1 1 1 1 1 12 10 1 7 11 1 1 12 10 1 1 12 10 1 12 11 1 1 12 10 1 12 10 1 1 12 10 1 12 10 1 1 12 10 1 100 1 1 12 10 1 1 12 10 1 12 9 1 12 10 1 1 12 10 1 12 10 1 12 10 6 0 1 8 1 8 1 100 1 12 10 6 0 1 1 1 1 1 1 1 12 10 1 1 1 1 1 1 1 1 1 12 10 1 12 10 1 12 10 1 1 1 12 10 1 100 1 1 12 9 1 12 9 1 12 9 1 1 1 12 10 1 1 1 1 1 12 9 1 12 10 1 1 12 10 1 1 12 10 1 1 1 1 1 7 1 1 12 10 1 1 1 12 10 1 1 12 10 1 1 1 12 10 1 12 10 1 12 10 1 12 9 12 10 1 12 9 1 12 9 1 1 12 10 4 1 1 12 10 4 4 12 9 12 9 1 1 12 10 12 9 12 9 12 9 1 1 12 10 1 100 1 12 10 1 1 12 10 1 12 10 9 9 6 0 6 0 1 1 12 10 6 0 1 1 12 10 1 1 12 10 1 12 10 1 12 10 1 1 12 10 1 1 12 10 1 12 10 1 1 1 1 1 1 1 1 1 8 4 9 4 6 0 1 7 1 1 12 10 4 4 1 12 10 1 12 10 6 0 6 0 1 12 10 1 12 10 1 100 10 1 8 1 1 12 10 1 1 12 10 1 7 1 1 12 10 1 12 10 1 12 10 1 12 9 1 12 9 1 12 9 6 0 1 1 1 1 1 1 12 10 1 12 10 12 9 1 1 12 10 1 12 10 12 9 1 1 12 10 1 12 10 1 12 10 1 12 9 1 1 12 9 1 7 1 12 10 1 1 12 10 1 12 10 1 12 10 1 1 12 10 10 1 7 1 1 1 1 1 1 1 12 11 1 12 9 1 1 12 10 6 0 1 1 1 1 1 8 1 8 1 1 1 1 1 1 12 9 1 7 1 12 9 1 1 12 10 1 12 9 1 1 12 10 12 10 1 12 9 12 10 1 1 12 10 12 9 1 1 12 9 1 12 10 1 12 10 1 12 10 1 1 1 8 1 8 1 1 1 1 1 1 1 1 100 1 12 9 1 1 1 1 1 12 10 12 10 12 10 4 1 1 1 1 12 10 1 7 1 12 9 1 12 9 1 1 12 10 1 1 1 1 12 10 12 10 12 10 1 1 12 10 1 1 12 10 1 1 1 12 10 1 1 1 1 1 12 9 1 12 9 1 1 1 12 10 1 1 12 10 12 9 12 9 12 10 1 7 1 1 12 10 1 100 12 10 1 7 1 1 12 10 1 1 1 1 4 1 12 9 12 10 1 1 1 1 1 12 10 1 1 7 10 1 12 9 1 1 1 12 10 12 9 1 1 12 11 12 9 1 1 12 11 1 12 11 1 1 1 1 1 1 1 12 10 1 1 1 1 9 9 1 1 12 10 1 1 12 10 1 7 11 1 1 12 10 12 10 1 1 1 1 1 1 1 12 10 1 12 10 1 1 12 10 1 1 12 10 1 100 1 1 6 0 4 1 12 10 4 1 1 12 10 1 12 10 1 12 10 1 1 1 12 9 4 1 1 12 10 1 12 10 6 0 1 12 9 6 0 1 1 12 10 6 0 1 12 10 4 1 12 9 1 12 9 4 1 12 10 12 10 4 6 0 1 12 10 6 0 1 1 12 10 1 1 12 10 1 7 1 12 9 6 0 6 0 6 0 12 9 1 12 9 1 12 9 12 9 1 1 1 1 1 1 12 9 1 1 1 12 10 1 1 1 12 10 12 10 12 10 12 9 12 10 1 1 12 10 1 7 1 12 10 1 12 10 1 12 10 12 10 12 9 12 9 4 1 12 10 4 4 1 8 1 12 10 1 8 4 4 1 1 12 10 4 4 4 4 4 1 1 12 9 12 9 12 9 12 9 12 9 12 9 1 12 10 12 9 1 12 10 1 12 10 6 0 1 12 10 6 0 1 8 12 10 12 9 12 9 12 9 12 9 1 8 1 12 10 1 8 1 12 10 8 12 10 6 0 1 8 4 4 12 10 1 8 1 12 10 1 1 12 10 1 1 12 10 1 12 11 1 12 11 1 12 10 1 12 10 1 1 1 12 10 1 1 12 10 1 1 1 1 1 1 1 1 1 1 1 1 9 1 100 10 1 12 10 1 100 1 1 1 1 1 9 10 1 1 12 10 1 1 1 1 1 12 10 1 1 1 1 1 12 9 1 1 1 12 10 1 1 12 10 1 1 1 1 4 1 12 9 1 1 1 12 9 1 1 1 1 12 10 1 1 12 10 1 1 100 1 12 10 1 1 1 1 1 12 10 1 1 1 1 1 1 1 1 100 1 1 1 1 1 8 1 7 1 1 12 10 1 7 1 8 1 12 10 1 1 12 10 1 1 1 1 1 1 1 1 1
+staticfield net/minecraft/entity/EntityLivingBase sprintingSpeedBoostModifierUUID Ljava/util/UUID; java/util/UUID
+staticfield net/minecraft/entity/EntityLivingBase sprintingSpeedBoostModifier Lnet/minecraft/entity/ai/attributes/AttributeModifier; net/minecraft/entity/ai/attributes/AttributeModifier
+instanceKlass net/minecraft/entity/player/EntityPlayerMP
+instanceKlass net/minecraft/client/entity/AbstractClientPlayer
+ciInstanceKlass net/minecraft/entity/player/EntityPlayer 1 1 2305 1 7 1 7 1 100 1 1 100 1 1 100 1 1 100 1 100 1 1 100 1 100 1 1 100 1 100 1 1 100 1 100 1 1 100 1 100 1 1 7 1 7 1 1 1 1 8 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 8 1 1 1 1 1 12 10 1 7 1 12 10 12 9 12 9 1 7 1 12 10 12 9 1 7 10 12 9 1 7 10 12 9 1 7 10 12 9 4 12 9 4 12 9 1 1 12 10 1 1 12 9 12 9 1 7 1 7 1 12 9 1 7 1 12 10 12 9 12 9 4 1 12 9 1 1 12 10 1 7 1 12 9 6 0 1 12 9 1 12 9 1 1 12 10 4 1 12 9 1 12 9 1 1 12 10 12 9 1 1 1 1 1 1 1 12 10 1 1 12 10 1 7 1 1 12 9 1 7 1 1 12 10 1 7 1 1 12 11 1 12 10 1 1 12 9 1 7 1 1 12 10 1 7 1 1 12 10 1 7 1 12 10 1 7 1 12 10 1 1 12 9 1 1 12 9 1 1 1 12 10 1 7 1 12 10 1 1 7 1 1 12 10 1 12 9 1 1 12 10 1 12 10 1 1 12 10 1 1 1 12 10 1 7 1 1 12 10 1 100 1 1 12 9 1 1 7 1 1 12 10 1 12 10 1 12 10 1 1 12 10 1 12 10 1 1 12 10 1 1 12 10 12 9 1 12 10 12 9 1 12 10 1 1 12 10 1 12 10 12 10 1 7 1 1 12 10 1 12 10 1 12 10 1 12 9 1 12 10 12 9 12 9 12 9 12 9 12 9 12 9 12 9 12 9 12 9 6 0 6 0 1 1 12 9 12 9 12 10 1 7 1 1 12 9 1 1 12 10 1 12 10 1 1 1 1 1 1 1 1 1 8 1 1 8 1 1 1 1 1 12 10 1 1 1 1 12 10 1 12 9 1 8 4 1 1 12 9 1 100 1 12 10 4 12 10 1 12 9 9 6 0 1 7 1 1 12 10 1 7 1 1 12 10 1 12 9 4 1 1 12 10 1 12 9 1 12 10 6 0 6 0 1 12 10 1 12 10 1 7 10 1 8 1 1 12 10 1 1 12 10 1 12 10 1 12 10 1 12 10 1 8 1 12 10 1 100 1 12 9 1 12 9 1 12 9 6 0 1 1 12 10 1 8 1 1 12 10 4 1 1 1 1 1 1 1 1 12 9 1 1 12 10 1 12 10 1 1 12 9 1 12 9 1 1 1 12 10 1 1 1 1 12 10 1 1 1 12 10 1 100 1 12 9 12 10 1 1 1 12 10 10 1 12 10 12 10 12 9 12 9 1 1 12 10 1 1 12 10 1 12 9 9 1 1 1 4 4 1 1 12 10 12 10 1 12 10 1 12 10 1 12 9 1 12 10 1 12 10 1 12 9 1 1 12 9 1 7 1 12 9 1 1 12 10 1 8 1 100 1 1 12 10 1 12 9 1 12 10 1 12 10 12 10 1 12 9 1 12 10 1 12 10 1 12 9 1 12 10 1 12 11 1 12 10 1 12 9 1 12 9 1 7 1 1 12 10 1 12 9 6 0 1 1 12 10 4 1 12 9 4 1 12 9 4 1 12 9 1 1 12 9 9 1 7 1 1 12 10 1 1 12 10 1 1 12 10 1 7 1 12 11 1 1 12 11 1 12 10 1 1 1 1 1 1 1 12 10 1 1 1 12 10 1 1 1 12 10 1 1 12 10 1 1 1 1 1 12 10 12 10 1 12 10 6 0 1 12 9 1 1 12 9 1 100 1 12 10 1 12 10 1 8 1 1 12 10 1 7 1 1 12 9 1 12 10 1 1 12 10 1 8 1 12 10 1 100 1 12 9 1 100 1 12 10 1 100 1 1 12 9 1 100 1 1 12 10 1 1 12 10 1 7 1 12 11 1 1 12 11 1 100 1 1 12 10 1 12 9 1 1 12 10 1 12 10 1 12 9 1 1 1 1 1 1 1 1 8 1 1 8 1 1 12 10 1 1 12 10 1 100 1 1 12 9 1 7 1 1 12 10 1 12 9 1 12 9 1 100 1 1 12 11 1 12 9 11 1 100 1 1 12 10 1 100 1 12 10 1 1 1 1 1 1 1 1 1 1 1 1 1 12 10 1 1 12 10 1 1 12 10 1 1 1 1 1 1 1 6 0 1 12 10 1 12 9 1 1 12 10 9 9 9 4 12 10 12 10 1 12 9 1 1 1 1 1 1 12 10 1 1 12 10 1 1 1 1 1 1 12 10 1 1 1 1 1 1 1 12 10 1 100 1 1 12 10 1 1 12 10 4 1 100 1 100 1 1 12 9 1 1 12 10 1 1 12 10 1 100 1 12 10 1 12 9 1 7 1 1 12 9 1 1 12 10 1 1 12 10 4 1 12 10 1 1 1 1 1 1 1 12 10 1 1 12 10 1 1 1 12 10 1 8 1 7 1 1 12 10 1 1 12 10 1 8 1 1 12 10 1 8 1 12 10 12 9 1 8 1 1 12 10 1 8 1 1 12 10 12 9 1 8 12 9 1 8 12 9 1 8 12 10 1 1 12 10 1 12 10 12 9 1 7 1 8 1 1 12 10 1 8 1 8 12 9 1 8 12 9 1 8 1 12 10 1 1 12 10 1 8 1 1 12 10 1 100 1 12 10 1 12 10 1 12 10 1 8 1 12 10 1 1 1 1 1 1 1 1 1 12 10 10 1 1 12 10 1 1 12 10 1 1 12 10 1 1 12 10 1 1 12 10 1 1 12 10 1 1 12 10 1 7 11 1 12 11 1 12 11 1 12 10 10 1 12 10 1 12 10 1 1 12 10 1 12 10 1 12 10 1 1 12 10 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 12 10 1 12 10 1 12 10 1 12 9 1 12 10 1 12 9 1 12 9 4 1 1 12 10 1 100 1 12 9 1 12 9 4 1 1 12 10 12 10 1 1 1 1 1 12 10 1 100 1 1 12 10 1 12 10 1 1 1 1 1 12 10 1 1 12 10 1 1 12 9 100 1 1 1 1 1 1 12 10 1 12 10 12 10 1 1 12 10 1 1 12 10 1 12 10 1 1 12 10 1 12 10 1 12 10 1 12 10 1 1 12 10 1 100 1 1 12 10 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 12 10 1 12 10 1 12 10 1 12 10 1 12 9 1 1 12 10 1 12 10 1 1 1 1 12 10 1 100 1 12 10 1 1 1 1 100 10 1 1 12 10 1 12 10 1 12 10 1 1 12 10 1 1 12 10 1 12 9 1 12 10 1 12 10 1 12 9 4 1 12 10 10 1 12 10 1 1 12 10 10 1 12 10 1 12 10 1 12 10 1 12 10 4 1 100 1 1 12 9 1 1 12 10 1 12 10 1 1 12 10 1 12 10 1 100 1 1 12 9 1 100 1 1 12 10 1 12 9 10 1 1 1 1 1 1 1 1 1 1 1 12 10 1 100 1 12 10 1 12 10 1 1 1 1 1 100 1 12 10 1 1 12 9 1 12 10 1 12 9 1 1 12 9 1 100 1 12 10 1 12 9 1 12 9 1 12 10 6 0 6 0 1 12 9 6 0 6 0 1 100 1 1 12 10 1 1 12 10 1 12 11 1 12 9 1 12 10 1 1 12 10 1 1 12 10 1 1 12 10 1 12 10 4 1 12 10 1 12 9 1 1 1 1 1 12 9 12 9 4 1 1 100 1 12 10 12 10 1 1 12 10 1 1 12 10 1 1 12 10 1 1 12 10 1 1 1 1 1 1 1 1 12 10 1 100 1 1 12 11 1 1 12 10 1 12 10 1 12 10 1 1 1 1 1 1 1 1 4 4 1 1 1 1 1 1 12 10 1 1 1 1 1 1 1 1 1 1 1 1 12 9 1 12 10 1 12 10 1 12 10 1 12 10 1 1 1 1 1 1 12 10 1 12 9 1 1 12 9 1 12 10 12 10 1 12 10 1 1 1 4 1 12 9 4 4 1 12 9 1 12 9 6 0 1 12 10 1 12 9 4 1 12 9 1 1 1 1 100 1 12 9 1 1 12 10 6 0 1 12 9 1 100 1 12 9 1 100 1 12 9 1 100 1 12 9 1 1 1 1 1 12 9 1 12 9 12 10 1 100 1 12 10 1 1 1 1 8 1 8 1 1 1 1 100 1 12 9 1 1 12 10 1 12 9 1 12 9 1 1 1 1 1 12 10 1 1 12 10 1 1 12 9 12 9 1 100 1 1 12 10 1 100 1 1 12 9 1 100 1 1 12 10 1 1 12 10 1 1 1 1 1 1 1 12 10 1 1 3 1 12 10 1 12 10 1 12 9 4 1 8 4 1 1 12 10 1 10 1 1 1 1 1 1 12 10 1 1 1 1 12 10 1 1 1 1 12 9 1 12 9 1 12 10 1 12 10 1 1 12 10 1 1 1 1 1 1 12 10 1 1 1 1 1 1 1 1 1 1 1 1 1 1 12 10 1 12 9 1 12 9 1 1 12 10 1 100 1 1 12 11 1 1 12 10 12 10 1 1 12 10 1 12 10 1 1 1 1 1 1 1 1 1 1 1 1 12 10 1 1 1 1 1 1 1 1 1 1 1 1 12 10 1 12 10 1 1 1 12 10 1 1 12 10 1 1 12 10 1 1 1 7 1 12 10 1 7 1 1 12 10 12 10 1 1 12 10 1 1 12 9 1 8 1 8 1 12 10 1 7 1 1 12 10 1 1 1 1 12 10 1 1 1 12 10 1 1 12 10 1 8 1 100 1 1 12 9 1 1 12 10 1 100 1 1 12 10 1 1 1 1 1 100 1 12 10 1 1 1 1 1 1 12 9 1 12 9 1 12 9 1 1 12 10 1 4 12 9 1 1 12 10 1 1 1 1 1 1 1 1 1 1 1 1
+ciInstanceKlass net/minecraft/client/entity/EntityClientPlayerMP 1 1 385 1 7 1 7 1 1 1 1 1 1 100 1 7 1 1 7 1 1 7 1 1 100 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 8 1 1 1 12 10 12 9 12 9 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 12 10 1 100 1 12 9 1 100 1 1 12 10 1 100 1 12 10 1 100 1 1 12 10 1 1 1 1 1 12 9 1 12 9 1 7 1 1 12 10 1 12 9 1 7 1 1 12 10 12 10 1 1 12 10 1 12 9 1 12 9 1 12 9 1 12 10 1 7 1 1 12 10 1 100 1 12 9 1 12 9 1 1 12 9 1 100 1 12 9 1 12 9 1 12 10 1 12 10 1 12 10 12 9 1 100 1 12 10 1 12 10 12 9 12 9 1 1 12 9 1 7 1 12 9 12 9 12 9 12 9 12 9 6 0 12 9 1 12 9 1 12 9 6 0 1 12 9 1 12 10 1 12 9 1 12 10 1 12 10 12 9 12 9 1 1 1 1 1 1 1 1 1 1 1 1 100 1 12 10 1 1 1 1 1 1 1 1 1 100 12 10 1 1 12 10 1 100 10 1 1 1 12 9 1 12 10 1 1 1 12 10 1 1 12 10 1 12 10 1 1 1 1 100 1 1 12 9 1 100 1 12 9 1 12 10 1 12 10 1 1 12 9 1 100 1 100 1 1 12 10 12 10 1 12 9 12 10 1 1 1 1 100 1 12 9 12 10 1 1 1 1 1 100 1 1 12 9 1 12 10 1 1 12 10 4 1 12 10 1 1 12 9 1 1 1 1 1 1 1 1 1 1 1 1 1
+instanceKlass net/minecraft/world/WorldServerMulti
+instanceKlass net/minecraft/world/demo/DemoWorldServer
+ciInstanceKlass net/minecraft/world/WorldServer 1 1 1480 1 7 1 7 1 1 7 1 1 7 1 100 1 1 7 1 100 1 1 100 1 7 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 8 1 1 1 1 1 1 1 7 1 1 12 10 1 12 10 1 7 1 12 10 12 9 1 12 10 12 9 1 7 10 12 9 1 7 10 12 9 12 9 12 9 1 7 1 12 10 12 9 1 7 10 12 9 12 9 1 7 10 1 7 1 7 1 100 1 100 1 7 12 9 12 9 1 7 10 1 7 10 12 9 1 7 1 12 10 1 1 12 9 1 1 12 9 1 7 1 8 1 7 1 1 12 10 10 1 1 12 10 1 7 1 1 12 10 1 1 12 10 1 7 1 1 12 10 1 1 1 1 1 1 1 1 1 1 1 1 1 1 12 10 1 1 12 10 1 7 1 1 12 10 1 1 12 9 1 100 1 12 9 1 1 12 9 1 1 12 9 1 7 1 12 10 1 12 10 1 1 12 10 1 8 1 7 1 1 12 10 1 1 12 9 1 1 12 10 5 0 1 1 12 10 1 12 10 1 12 9 1 8 1 1 12 10 1 8 1 12 9 1 12 9 1 12 10 5 0 1 1 12 10 1 8 1 12 10 1 1 12 9 1 7 1 12 11 1 1 12 10 1 12 9 1 12 10 1 8 1 1 12 10 1 8 1 12 10 1 8 1 12 10 1 8 1 1 12 9 1 7 10 1 1 12 9 1 7 10 1 8 1 12 10 1 12 10 1 7 1 1 12 11 1 7 1 12 11 1 1 12 11 1 12 10 1 12 10 1 1 1 1 1 1 1 1 12 10 1 1 12 11 1 7 1 1 12 10 1 12 11 1 1 12 9 1 1 12 10 1 1 1 1 1 1 1 1 12 9 12 9 1 7 1 12 10 1 1 1 1 1 12 10 1 12 10 10 1 12 9 1 12 10 1 1 1 1 1 1 1 12 10 1 1 12 10 1 12 10 1 12 10 1 1 12 10 1 7 1 1 12 10 1 7 1 1 12 9 1 7 1 1 12 10 1 12 10 1 12 10 1 10 1 12 9 1 7 11 1 7 1 12 9 1 12 9 1 8 1 1 12 10 1 1 12 10 1 8 1 7 1 1 12 10 1 8 1 1 12 10 3 1 12 10 1 12 10 1 12 9 3 1 1 12 10 1 1 12 10 1 100 1 12 10 1 1 12 10 1 8 1 12 10 1 12 10 1 7 1 1 12 9 1 1 12 10 1 1 12 10 1 12 9 1 1 12 10 1 12 10 1 1 12 10 1 1 12 10 1 1 12 10 1 100 1 7 1 12 10 1 12 10 1 12 10 1 12 10 1 1 12 10 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 7 1 12 10 1 1 12 11 1 1 1 1 1 1 1 1 1 1 12 10 1 1 1 1 1 1 12 9 1 12 10 1 12 9 1 12 9 1 12 9 1 1 12 10 1 1 12 10 1 1 12 10 1 12 10 11 1 12 11 10 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 12 10 1 7 10 12 9 1 12 10 12 10 1 100 1 12 10 11 1 100 1 8 12 10 1 8 1 12 10 1 12 9 1 12 10 11 11 1 8 12 11 1 1 12 10 1 8 1 100 1 1 12 10 1 8 1 1 12 10 1 1 12 10 1 100 1 1 12 10 1 100 1 12 10 12 10 1 12 11 10 1 1 1 1 1 1 1 1 1 1 1 1 12 10 10 12 9 1 100 10 1 8 1 1 12 10 11 1 12 10 1 1 12 10 1 100 1 12 11 10 1 1 1 1 1 1 1 12 10 1 100 1 100 1 7 1 12 10 1 12 10 1 100 12 10 1 1 1 1 1 12 9 1 1 12 11 1 7 1 12 10 1 12 10 12 9 1 1 1 1 1 1 12 9 1 7 1 1 12 11 1 7 11 1 7 1 12 10 9 9 9 1 1 1 1 1 1 1 1 1 1 1 1 1 1 12 10 1 1 1 1 1 1 1 12 10 1 1 1 1 1 1 1 12 10 12 10 1 1 12 10 1 12 10 1 1 12 10 1 1 12 10 1 12 9 1 1 12 10 1 12 10 12 10 1 1 12 10 1 100 1 12 9 1 12 9 1 8 1 12 11 1 1 12 10 1 12 10 1 12 10 1 1 1 1 1 1 100 1 8 1 100 1 1 12 10 1 1 12 10 1 12 10 1 12 10 1 1 12 10 1 1 1 1 12 10 1 1 1 100 1 12 11 1 8 1 100 1 12 11 1 12 10 1 8 1 12 11 1 1 12 11 1 7 1 1 12 9 1 12 10 1 7 1 1 12 10 1 12 10 1 7 1 1 12 10 10 1 12 9 1 12 9 1 12 10 1 1 12 10 1 1 1 1 1 12 11 1 12 10 1 1 12 10 1 7 1 1 12 10 1 1 12 11 1 12 10 1 12 9 1 1 12 10 1 12 10 1 1 12 10 1 1 12 10 1 100 1 1 1 12 10 1 1 12 10 1 1 1 1 12 10 1 10 1 1 12 9 1 12 9 1 12 9 6 0 1 12 9 1 100 12 10 1 1 12 10 1 1 1 1 1 12 10 1 7 12 10 1 1 12 10 1 1 1 1 1 100 1 12 10 1 12 9 1 12 9 1 1 12 10 1 12 10 1 12 10 1 12 9 1 1 12 10 6 0 1 100 1 1 12 9 1 100 1 1 12 10 1 1 12 11 1 100 1 12 10 1 100 1 1 12 10 1 1 1 1 1 1 1 1 1 1 1 1 100 12 10 12 9 10 10 1 12 10 1 1 1 1 1 1 1 1 1 10 1 1 12 10 1 12 10 1 12 10 1 12 10 6 0 1 100 12 10 1 12 10 1 12 10 10 10 1 1 12 10 1 1 12 11 1 12 10 1 12 9 1 12 9 1 7 1 12 10 1 1 12 10 1 12 9 1 12 9 1 1 1 12 10 1 1 1 1 1 1 1 1 1 100 1 12 10 12 11 1 12 10 1 100 12 9 12 9 12 9 6 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 12 9 1 7 1 1 12 9 1 1 7 1 1 12 10 1 7 1 7 1 1 12 9 1 12 10 1 12 9 1 7 1 1 12 10 1 12 9 1 12 9 1 12 9 1 12 9 1 12 9 1 12 9 1 12 9 1 12 9 12 9 1 1 1 1 1 1 1 1 1 1
+staticfield net/minecraft/world/WorldServer logger Lorg/apache/logging/log4j/Logger; org/apache/logging/log4j/core/Logger
+staticfield net/minecraft/world/WorldServer bonusChestContent [Lnet/minecraft/util/WeightedRandomChestContent; 10 [Lnet/minecraft/util/WeightedRandomChestContent;
+ciInstanceKlass net/minecraft/world/WorldServerMulti 1 1 74 1 7 1 7 1 1 1 1 8 1 1 1 12 10 1 1 12 9 9 1 1 12 10 1 1 12 9 1 7 1 1 12 10 1 12 10 1 1 12 9 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 12 9 1 7 1 12 10 1 1 1 1 1 1
+instanceKlass miscutil/block/BasicBlock
+instanceKlass net/minecraft/block/BlockPackedIce
+instanceKlass net/minecraft/block/BlockHardenedClay
+instanceKlass net/minecraft/block/BlockCarpet
+instanceKlass net/minecraft/block/BlockQuartz
+instanceKlass net/minecraft/block/BlockWall
+instanceKlass net/minecraft/block/BlockTripWire
+instanceKlass net/minecraft/block/BlockTripWireHook
+instanceKlass net/minecraft/block/BlockRedstoneLight
+instanceKlass net/minecraft/block/BlockDragonEgg
+instanceKlass net/minecraft/block/BlockEndPortalFrame
+instanceKlass net/minecraft/block/BlockCauldron
+instanceKlass net/minecraft/block/BlockMycelium
+instanceKlass net/minecraft/block/BlockVine
+instanceKlass net/minecraft/block/BlockMelon
+instanceKlass net/minecraft/block/BlockPane
+instanceKlass net/minecraft/block/BlockHugeMushroom
+instanceKlass net/minecraft/block/BlockStoneBrick
+instanceKlass net/minecraft/block/BlockSilverfish
+instanceKlass net/minecraft/block/BlockTrapDoor
+instanceKlass net/minecraft/block/BlockCake
+instanceKlass net/minecraft/block/BlockGlowstone
+instanceKlass net/minecraft/block/BlockSoulSand
+instanceKlass net/minecraft/block/BlockNetherrack
+instanceKlass net/minecraft/block/BlockFence
+instanceKlass net/minecraft/block/BlockReed
+instanceKlass net/minecraft/block/BlockClay
+instanceKlass net/minecraft/block/BlockCactus
+instanceKlass net/minecraft/block/BlockSnowBlock
+instanceKlass net/minecraft/block/BlockSnow
+instanceKlass net/minecraft/block/BlockButton
+instanceKlass net/minecraft/block/BlockRedstoneOre
+instanceKlass net/minecraft/block/BlockBasePressurePlate
+instanceKlass net/minecraft/block/BlockLever
+instanceKlass net/minecraft/block/BlockLadder
+instanceKlass net/minecraft/block/BlockDoor
+instanceKlass net/minecraft/block/BlockFarmland
+instanceKlass net/minecraft/block/BlockWorkbench
+instanceKlass net/minecraft/block/BlockRedstoneWire
+instanceKlass net/minecraft/block/BlockStairs
+instanceKlass net/minecraft/block/BlockTorch
+instanceKlass net/minecraft/block/BlockBookshelf
+instanceKlass net/minecraft/block/BlockTNT
+instanceKlass net/minecraft/block/BlockSlab
+instanceKlass net/minecraft/block/BlockColored
+instanceKlass net/minecraft/block/BlockWeb
+instanceKlass net/minecraft/block/BlockPistonExtension
+instanceKlass net/minecraft/block/BlockPistonBase
+instanceKlass net/minecraft/block/BlockRailBase
+instanceKlass net/minecraft/block/BlockDirectional
+instanceKlass net/minecraft/block/BlockSandStone
+instanceKlass net/minecraft/block/BlockCompressed
+instanceKlass net/minecraft/block/BlockBreakable
+instanceKlass net/minecraft/block/BlockSponge
+instanceKlass net/minecraft/block/BlockLeavesBase
+instanceKlass net/minecraft/block/BlockRotatedPillar
+instanceKlass net/minecraft/block/BlockOre
+instanceKlass net/minecraft/block/BlockFalling
+instanceKlass net/minecraft/block/BlockFire
+instanceKlass net/minecraft/block/BlockLiquid
+instanceKlass net/minecraft/block/BlockWood
+instanceKlass net/minecraft/block/BlockDirt
+instanceKlass net/minecraft/block/BlockGrass
+instanceKlass net/minecraft/block/BlockContainer
+instanceKlass net/minecraft/block/BlockBush
+instanceKlass net/minecraft/block/BlockStone
+instanceKlass net/minecraft/block/BlockAir
+ciInstanceKlass net/minecraft/block/Block 1 1 2700 1 7 1 7 1 1 7 1 7 1 1 7 1 7 1 7 1 7 1 7 1 7 1 7 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 8 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 12 9 1 7 1 1 12 10 1 1 1 1 1 1 12 10 1 7 1 12 9 1 1 1 1 1 7 1 1 12 10 12 10 1 1 1 1 1 100 1 1 12 10 1 1 12 10 1 100 1 1 12 10 1 1 1 1 1 12 9 1 1 1 12 9 1 12 9 1 12 9 1 12 9 1 1 12 9 1 1 12 10 1 7 1 1 12 10 1 1 1 8 1 7 1 12 10 1 12 10 1 1 12 10 1 8 1 7 10 4 1 1 12 10 4 1 12 10 12 9 1 1 12 10 10 1 12 10 1 8 1 7 10 4 10 12 9 1 8 1 7 10 4 10 12 9 1 12 9 1 12 10 10 1 8 1 7 1 12 9 1 1 12 10 1 8 1 7 10 10 4 12 9 1 8 1 8 1 8 1 7 10 10 1 8 1 1 12 10 4 1 12 10 1 8 1 7 1 12 9 10 4 10 1 12 10 8 1 8 1 7 10 10 1 8 1 8 1 12 9 1 12 10 8 1 8 1 8 1 8 1 7 10 10 12 9 1 8 1 7 10 10 1 8 1 7 10 4 10 1 8 1 8 1 8 1 8 1 8 1 8 1 7 10 10 1 8 1 7 10 10 1 8 1 7 10 10 1 8 1 7 12 9 1 12 10 4 10 12 9 1 8 1 8 1 8 1 7 1 7 1 1 12 9 1 12 10 10 1 8 1 8 1 7 10 4 10 1 7 10 10 4 1 8 1 8 1 8 1 7 10 10 1 8 1 8 1 7 10 4 10 1 8 1 7 10 4 10 12 9 1 8 1 8 1 8 1 7 10 10 1 8 1 8 1 8 1 7 1 12 10 1 8 10 1 8 1 7 10 10 4 1 8 1 7 10 10 1 8 1 7 10 10 1 8 1 8 1 8 1 7 10 1 8 1 7 1 12 9 10 10 12 9 8 1 8 1 8 1 7 10 1 8 1 7 1 12 10 10 1 8 1 8 1 8 1 8 1 8 1 8 1 7 10 10 4 1 8 1 8 1 8 1 8 1 8 1 12 9 1 8 1 8 1 12 9 1 8 1 8 1 7 10 10 1 8 1 8 1 8 1 8 1 8 1 7 10 10 1 8 1 7 10 10 1 8 1 8 1 8 1 8 1 7 10 4 10 4 1 8 1 7 10 10 4 1 8 1 8 1 7 10 10 1 8 1 7 10 10 1 8 1 8 1 7 1 12 10 1 8 10 1 8 1 7 10 4 10 1 8 1 7 10 10 12 9 1 8 1 8 1 8 1 8 1 8 1 12 9 1 8 1 8 1 7 10 10 1 8 1 8 1 7 10 1 8 10 1 7 10 10 1 8 1 8 1 7 10 10 1 12 9 1 8 4 1 8 1 7 1 7 1 12 10 10 1 8 1 8 1 7 12 9 10 10 1 8 1 8 1 8 1 7 10 4 10 12 9 1 8 1 7 10 10 1 8 1 8 1 8 1 8 1 8 1 7 10 10 1 8 1 1 12 9 1 12 10 10 1 8 1 8 1 12 9 1 8 1 8 1 8 1 8 1 12 9 1 8 1 7 10 10 1 8 1 8 4 10 1 8 1 7 10 10 1 8 1 8 1 8 1 12 9 1 8 1 8 1 7 10 10 1 8 1 8 1 7 10 4 10 12 9 1 8 1 8 1 7 10 10 1 7 10 10 1 8 1 7 10 10 1 8 1 7 10 10 1 8 1 7 10 10 1 8 1 7 10 10 1 8 1 7 1 12 10 10 1 7 10 10 1 8 1 8 1 7 10 10 1 8 1 8 1 7 10 10 1 8 1 8 1 7 10 10 1 8 1 8 1 7 10 4 10 4 1 8 1 8 1 8 1 7 10 10 1 8 1 7 10 10 1 8 1 8 1 8 1 8 1 8 1 7 10 10 1 8 1 8 1 7 10 10 1 8 1 7 10 10 1 8 1 7 10 10 1 8 1 8 1 7 1 12 10 10 1 8 1 8 1 8 1 7 1 12 10 10 1 8 1 8 1 8 1 8 1 7 10 10 1 8 1 8 1 8 1 7 1 12 10 10 1 8 1 8 1 8 1 7 10 10 1 8 1 7 10 10 1 8 1 8 1 8 1 8 1 8 1 8 1 7 10 10 1 8 1 8 1 7 10 10 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 7 10 1 8 10 1 8 1 7 10 10 1 8 1 8 1 7 10 10 1 8 1 8 1 7 10 10 1 8 1 7 12 9 10 10 1 8 1 7 10 10 1 8 1 8 1 8 4 1 8 1 8 1 7 10 10 1 8 1 8 1 7 10 10 1 8 1 8 1 8 1 8 1 8 1 7 10 10 1 8 1 8 1 8 1 7 10 10 1 8 1 8 1 8 1 8 1 8 1 7 10 4 10 4 1 8 1 8 1 7 10 1 8 10 1 8 1 8 1 7 10 1 8 10 1 8 1 8 1 12 9 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 7 10 10 1 8 1 8 1 7 10 10 1 8 1 7 10 1 8 10 1 8 1 7 10 10 1 8 1 8 1 7 10 10 1 8 1 7 10 10 1 8 1 7 10 10 1 8 1 7 10 10 1 8 1 7 10 10 12 9 1 8 1 8 1 8 1 7 1 12 10 10 1 8 1 8 1 8 1 8 1 7 10 10 1 8 1 8 1 8 1 8 1 8 1 7 10 10 1 8 1 8 1 7 1 12 9 10 10 1 8 1 8 1 8 1 8 1 7 10 10 4 1 7 10 10 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 7 10 10 1 8 4 4 1 8 1 8 1 8 1 7 10 10 1 8 1 8 1 7 10 10 1 8 1 7 10 10 1 8 1 8 1 8 1 8 1 8 1 7 10 10 1 8 1 8 1 7 10 10 1 8 1 8 1 7 10 10 1 8 1 8 1 8 1 8 1 7 10 10 1 8 1 8 1 8 1 7 10 1 1 12 10 1 7 1 12 11 1 1 12 11 12 9 1 12 10 1 7 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 10 12 9 12 9 1 7 1 1 12 10 12 9 1 7 10 12 9 12 9 1 7 12 9 1 7 12 9 12 9 10 12 9 10 12 9 12 9 12 9 12 9 1 1 12 10 1 12 10 12 10 1 1 1 1 12 9 1 1 1 12 10 1 12 10 1 1 12 10 1 12 10 1 1 1 1 1 1 1 12 9 1 1 1 1 1 1 1 1 1 1 12 9 1 1 1 1 1 12 10 12 9 12 9 12 9 12 9 12 9 12 9 1 1 1 1 1 1 1 1 1 7 1 1 12 11 12 10 1 1 12 11 1 1 1 1 1 1 1 1 1 1 1 1 1 1 12 10 1 1 1 1 1 1 1 1 1 12 11 1 12 10 1 1 1 1 1 12 9 1 1 1 1 1 1 12 10 1 7 1 1 12 10 1 7 1 1 12 11 1 1 1 1 1 1 1 1 1 1 1 1 1 12 10 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 12 10 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 100 1 1 12 10 1 1 1 1 1 1 1 1 1 1 1 1 1 12 10 1 1 1 1 1 1 100 1 1 12 10 1 1 1 1 1 1 1 1 1 1 12 10 1 1 1 1 1 1 1 12 9 1 12 9 1 1 12 10 1 12 10 1 100 1 100 1 1 12 10 1 100 10 1 7 1 12 9 1 100 1 1 12 10 1 12 10 1 1 1 1 1 1 1 1 1 1 1 1 1 1 12 10 1 8 1 100 1 12 10 1 100 1 12 10 6 0 1 100 1 12 10 1 12 9 1 1 12 10 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 12 10 1 12 10 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 12 10 1 7 1 1 12 10 1 1 12 10 1 12 10 1 12 10 1 1 12 10 1 12 10 1 12 10 1 1 12 10 1 7 1 12 10 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 12 9 1 12 9 1 1 12 9 1 1 1 1 1 1 1 1 1 1 1 1 1 1 12 10 1 1 1 1 1 1 1 1 1 12 10 1 1 1 1 1 10 1 12 10 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 3 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 12 9 12 10 1 1 12 10 4 1 1 12 10 1 1 12 10 1 100 1 1 12 10 10 1 1 12 10 10 1 1 12 10 1 1 12 10 12 10 1 1 1 1 1 1 1 1 1 12 10 1 1 1 12 10 1 12 10 1 1 1 1 12 10 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 12 9 1 1 1 1 7 10 1 12 10 1 1 12 10 1 8 1 12 10 1 100 1 1 12 10 1 8 1 1 1 1 1 1 1 1 1 1 1 12 10 1 12 10 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 10 12 10 1 1 1 1 1 1 1 1 1 12 9 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 12 10 1 1 1 1 1 1 1 1 1 1 12 9 1 1 1 8 1 12 10 1 8 1 1 1 1 1 12 10 1 7 1 1 12 11 1 1 1 12 10 1 1 1 1 1 1 1 1 1 1 7 1 1 12 9 12 10 1 12 9 1 12 10 12 10 1 1 12 10 1 1 1 1 1 12 10 1 1 1 1 12 10 1 1 1 12 10 1 1 1 12 9 12 10 1 1 12 10 1 1 12 10 1 1 12 9 1 1 12 9 1 100 12 9 1 1 1 1 12 11 1 12 10 1 1 12 10 12 10 1 1 1 1 12 10 12 10 1 1 12 10 1 1 1 12 9 1 1 1 1 12 10 1 1 1 1 12 10 1 1 1 12 10 1 1 12 10 1 1 1 12 9 1 12 10 1 1 1 1 1 12 10 1 1 1 1 1 12 10 1 1 1 12 9 12 9 12 9 12 9 1 12 10 1 1 1 1 12 10 1 12 10 1 100 12 10 12 10 12 10 1 1 1 1 1 1 1 1 1 1 1 7 1 1 12 11 1 1 12 11 12 9 1 100 12 9 1 7 1 12 10 1 12 9 10 1 12 9 12 9 12 9 1 12 9 12 9 1 1 1 1 1 1 1 1 1 1 1 1 12 10 1 1 1 1 12 10 1 1 1 100 12 9 12 9 12 9 1 100 12 9 12 9 1 1 12 9 12 9 12 9 12 9 1 1 1 1 1 100 1 1 12 10 1 1 1 1 1 12 10 1 12 9 1 1 12 9 1 1 12 10 1 1 1 1 1 1 1 1 1 12 10 1 1 1 1 12 10 1 1 1 1 1 1 1 1 1 8 1 12 10 12 9 12 9 1 1 12 10 1 12 11 1 1 1 7 1 1 12 10 1 12 10 10 10 10 1 1 1 1 1 1 1 1 1 1 1 1 1
+staticfield net/minecraft/block/Block blockRegistry Lnet/minecraft/util/RegistryNamespaced; cpw/mods/fml/common/registry/FMLControlledNamespacedRegistry
+staticfield net/minecraft/block/Block soundTypeStone Lnet/minecraft/block/Block$SoundType; net/minecraft/block/Block$SoundType
+staticfield net/minecraft/block/Block soundTypeWood Lnet/minecraft/block/Block$SoundType; net/minecraft/block/Block$SoundType
+staticfield net/minecraft/block/Block soundTypeGravel Lnet/minecraft/block/Block$SoundType; net/minecraft/block/Block$SoundType
+staticfield net/minecraft/block/Block soundTypeGrass Lnet/minecraft/block/Block$SoundType; net/minecraft/block/Block$SoundType
+staticfield net/minecraft/block/Block soundTypePiston Lnet/minecraft/block/Block$SoundType; net/minecraft/block/Block$SoundType
+staticfield net/minecraft/block/Block soundTypeMetal Lnet/minecraft/block/Block$SoundType; net/minecraft/block/Block$SoundType
+staticfield net/minecraft/block/Block soundTypeGlass Lnet/minecraft/block/Block$SoundType; net/minecraft/block/Block$1
+staticfield net/minecraft/block/Block soundTypeCloth Lnet/minecraft/block/Block$SoundType; net/minecraft/block/Block$SoundType
+staticfield net/minecraft/block/Block soundTypeSand Lnet/minecraft/block/Block$SoundType; net/minecraft/block/Block$SoundType
+staticfield net/minecraft/block/Block soundTypeSnow Lnet/minecraft/block/Block$SoundType; net/minecraft/block/Block$SoundType
+staticfield net/minecraft/block/Block soundTypeLadder Lnet/minecraft/block/Block$SoundType; net/minecraft/block/Block$2
+staticfield net/minecraft/block/Block soundTypeAnvil Lnet/minecraft/block/Block$SoundType; net/minecraft/block/Block$3
+ciInstanceKlass net/minecraft/entity/item/EntityItem 1 1 634 1 7 1 7 1 1 100 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 8 1 1 1 1 12 10 12 9 12 9 1 7 1 1 12 10 6 0 6 0 12 9 4 1 1 12 10 1 12 9 1 12 9 1 1 12 10 6 0 1 12 9 6 0 6 0 1 1 12 9 1 12 9 1 12 9 1 1 1 1 1 1 1 1 12 10 1 1 12 10 1 7 1 1 12 10 1 7 1 7 1 1 12 10 1 1 1 1 1 1 1 1 1 1 1 1 1 12 10 1 7 1 1 12 10 1 1 1 12 10 1 1 12 10 1 1 12 10 1 12 10 12 10 12 9 1 12 9 1 12 9 1 12 9 1 12 9 1 12 9 1 12 9 6 0 1 1 12 9 1 7 1 12 9 1 12 9 1 1 12 10 1 1 12 9 1 12 10 1 12 9 1 12 9 1 7 1 1 12 10 1 1 12 10 1 7 1 1 12 10 1 7 1 1 12 9 1 1 12 9 1 100 1 1 12 10 4 1 8 4 1 1 12 10 1 12 9 1 12 10 4 1 12 9 1 12 9 6 0 6 0 12 9 1 7 1 12 10 1 100 1 1 12 9 1 7 1 1 12 10 1 12 9 1 12 9 1 1 1 1 1 1 6 0 1 1 12 10 1 1 12 10 1 7 1 1 12 11 1 7 1 12 11 1 1 12 11 1 12 10 1 1 1 12 10 1 12 10 1 1 12 10 1 7 1 1 12 10 1 12 10 1 1 12 10 1 12 10 1 1 12 10 1 12 10 1 1 1 1 1 1 12 9 1 1 12 10 1 1 1 100 1 1 12 9 1 1 12 10 1 1 12 10 1 100 1 1 12 9 1 12 10 1 12 10 1 1 1 1 1 8 1 1 12 10 1 8 1 8 1 1 12 10 1 1 12 10 1 8 12 9 1 1 12 10 1 12 10 1 8 12 9 1 8 12 10 1 1 12 10 1 1 12 10 1 1 1 1 1 12 10 1 1 12 10 1 1 12 10 1 1 12 10 1 1 12 10 1 1 12 10 1 1 1 1 1 100 1 12 10 1 100 1 12 10 1 100 10 1 1 12 10 1 1 12 9 1 1 12 9 1 100 1 1 12 10 1 100 1 1 12 9 1 1 12 10 1 100 1 1 12 9 1 1 12 10 1 12 9 1 12 9 1 12 9 1 12 9 1 12 9 1 12 9 1 12 9 1 1 12 10 1 12 9 1 100 1 1 12 10 1 12 10 1 8 4 1 1 12 10 1 1 12 10 1 1 1 1 1 1 100 10 1 8 1 1 12 10 1 12 10 1 12 10 1 100 1 12 10 1 1 12 10 1 1 12 9 1 12 10 1 1 12 10 1 12 10 1 1 1 1 1 1 1 1 7 1 1 12 10 12 9 1 1 1 1 1 1 1
+staticfield net/minecraft/entity/item/EntityItem logger Lorg/apache/logging/log4j/Logger; org/apache/logging/log4j/core/Logger
+ciInstanceKlass net/minecraft/block/BlockAir 1 1 55 1 100 1 7 1 1 1 1 8 1 1 1 7 1 1 12 9 1 12 10 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
+instanceKlass net/minecraft/block/material/Material$1
+instanceKlass net/minecraft/block/material/MaterialPortal
+instanceKlass net/minecraft/block/material/MaterialLogic
+instanceKlass net/minecraft/block/material/MaterialLiquid
+instanceKlass net/minecraft/block/material/MaterialTransparent
+ciInstanceKlass net/minecraft/block/material/Material 1 1 257 1 7 1 7 1 1 7 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 8 1 1 1 12 10 12 9 12 9 1 1 1 1 1 1 1 1 1 12 9 1 1 12 9 1 1 12 9 1 1 12 10 1 1 1 12 9 1 1 1 12 9 1 1 1 1 7 1 7 1 12 9 12 10 12 9 1 12 9 10 12 9 1 12 9 12 9 1 12 9 12 10 12 9 1 12 9 12 10 12 9 1 12 9 12 9 12 10 12 9 1 7 1 12 9 10 12 10 12 9 1 12 9 12 9 1 12 9 12 10 10 12 9 1 7 10 10 12 9 10 12 10 12 9 1 12 9 12 9 12 9 10 12 9 1 12 9 12 9 12 9 12 9 12 10 12 9 12 9 12 9 12 9 1 12 9 12 9 12 9 1 12 9 10 12 9 12 9 12 9 1 12 9 12 9 12 9 12 9 1 7 10 10 12 9 12 9 10 10 12 9 12 9 1 1 1 1 1 1 1
+staticfield net/minecraft/block/material/Material air Lnet/minecraft/block/material/Material; net/minecraft/block/material/MaterialTransparent
+staticfield net/minecraft/block/material/Material grass Lnet/minecraft/block/material/Material; net/minecraft/block/material/Material
+staticfield net/minecraft/block/material/Material ground Lnet/minecraft/block/material/Material; net/minecraft/block/material/Material
+staticfield net/minecraft/block/material/Material wood Lnet/minecraft/block/material/Material; net/minecraft/block/material/Material
+staticfield net/minecraft/block/material/Material rock Lnet/minecraft/block/material/Material; net/minecraft/block/material/Material
+staticfield net/minecraft/block/material/Material iron Lnet/minecraft/block/material/Material; net/minecraft/block/material/Material
+staticfield net/minecraft/block/material/Material anvil Lnet/minecraft/block/material/Material; net/minecraft/block/material/Material
+staticfield net/minecraft/block/material/Material water Lnet/minecraft/block/material/Material; net/minecraft/block/material/MaterialLiquid
+staticfield net/minecraft/block/material/Material lava Lnet/minecraft/block/material/Material; net/minecraft/block/material/MaterialLiquid
+staticfield net/minecraft/block/material/Material leaves Lnet/minecraft/block/material/Material; net/minecraft/block/material/Material
+staticfield net/minecraft/block/material/Material plants Lnet/minecraft/block/material/Material; net/minecraft/block/material/MaterialLogic
+staticfield net/minecraft/block/material/Material vine Lnet/minecraft/block/material/Material; net/minecraft/block/material/MaterialLogic
+staticfield net/minecraft/block/material/Material sponge Lnet/minecraft/block/material/Material; net/minecraft/block/material/Material
+staticfield net/minecraft/block/material/Material cloth Lnet/minecraft/block/material/Material; net/minecraft/block/material/Material
+staticfield net/minecraft/block/material/Material fire Lnet/minecraft/block/material/Material; net/minecraft/block/material/MaterialTransparent
+staticfield net/minecraft/block/material/Material sand Lnet/minecraft/block/material/Material; net/minecraft/block/material/Material
+staticfield net/minecraft/block/material/Material circuits Lnet/minecraft/block/material/Material; net/minecraft/block/material/MaterialLogic
+staticfield net/minecraft/block/material/Material carpet Lnet/minecraft/block/material/Material; net/minecraft/block/material/MaterialLogic
+staticfield net/minecraft/block/material/Material glass Lnet/minecraft/block/material/Material; net/minecraft/block/material/Material
+staticfield net/minecraft/block/material/Material redstoneLight Lnet/minecraft/block/material/Material; net/minecraft/block/material/Material
+staticfield net/minecraft/block/material/Material tnt Lnet/minecraft/block/material/Material; net/minecraft/block/material/Material
+staticfield net/minecraft/block/material/Material coral Lnet/minecraft/block/material/Material; net/minecraft/block/material/Material
+staticfield net/minecraft/block/material/Material ice Lnet/minecraft/block/material/Material; net/minecraft/block/material/Material
+staticfield net/minecraft/block/material/Material packedIce Lnet/minecraft/block/material/Material; net/minecraft/block/material/Material
+staticfield net/minecraft/block/material/Material snow Lnet/minecraft/block/material/Material; net/minecraft/block/material/MaterialLogic
+staticfield net/minecraft/block/material/Material craftedSnow Lnet/minecraft/block/material/Material; net/minecraft/block/material/Material
+staticfield net/minecraft/block/material/Material cactus Lnet/minecraft/block/material/Material; net/minecraft/block/material/Material
+staticfield net/minecraft/block/material/Material clay Lnet/minecraft/block/material/Material; net/minecraft/block/material/Material
+staticfield net/minecraft/block/material/Material gourd Lnet/minecraft/block/material/Material; net/minecraft/block/material/Material
+staticfield net/minecraft/block/material/Material dragonEgg Lnet/minecraft/block/material/Material; net/minecraft/block/material/Material
+staticfield net/minecraft/block/material/Material portal Lnet/minecraft/block/material/Material; net/minecraft/block/material/MaterialPortal
+staticfield net/minecraft/block/material/Material cake Lnet/minecraft/block/material/Material; net/minecraft/block/material/Material
+staticfield net/minecraft/block/material/Material web Lnet/minecraft/block/material/Material; net/minecraft/block/material/Material$1
+staticfield net/minecraft/block/material/Material piston Lnet/minecraft/block/material/Material; net/minecraft/block/material/Material
+ciInstanceKlass net/minecraft/block/material/MaterialTransparent 1 1 31 1 7 1 7 1 1 1 1 8 1 1 12 10 1 1 12 10 1 1 1 1 1 1 1 1 1 1 1 1 1
+ciInstanceKlass net/minecraft/block/material/MaterialLiquid 1 1 34 1 7 1 7 1 1 1 1 8 1 1 12 10 1 1 12 10 1 12 10 1 1 1 1 1 1 1 1 1 1 1 1 1
+ciInstanceKlass net/minecraft/block/material/MaterialLogic 1 1 31 1 7 1 7 1 1 1 1 8 1 1 12 10 1 1 12 10 1 1 1 1 1 1 1 1 1 1 1 1 1
+instanceKlass net/minecraft/block/BlockObsidian
+ciInstanceKlass net/minecraft/block/BlockStone 1 1 57 1 7 1 7 1 1 1 1 8 1 1 1 7 1 1 12 9 1 12 10 1 7 1 1 12 9 1 1 12 10 1 1 1 1 1 100 1 1 12 9 1 100 1 1 12 10 1 1 1 1 1 1 1 1 1 1
+ciInstanceKlass net/minecraft/block/BlockTallGrass 1 1 263 1 7 1 7 1 100 1 100 1 1 1 1 1 1 1 1 1 1 1 1 8 1 1 1 7 1 1 12 9 1 12 10 4 4 4 1 1 12 10 1 1 1 1 1 1 12 9 1 1 1 1 1 6 0 1 100 1 1 12 10 1 1 1 1 1 12 10 1 1 1 1 1 1 1 3 1 1 1 1 7 1 1 12 11 1 1 12 11 1 7 1 12 10 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 12 10 1 1 1 1 12 10 1 1 1 1 1 1 1 1 1 1 100 10 1 1 1 1 1 1 1 100 1 12 10 1 100 1 1 12 11 1 1 1 1 1 1 1 1 1 12 9 1 7 1 7 1 1 12 11 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 12 9 1 100 1 12 10 1 1 12 10 1 1 1 1 1 1 1 1 1 1 100 12 10 1 12 9 1 100 1 1 12 10 10 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 12 10 1 1 7 1 8 1 8 1 8 1 1 1 1 1 1 1 1 1 1 1
+staticfield net/minecraft/block/BlockTallGrass field_149871_a [Ljava/lang/String; 3 [Ljava/lang/String;
+ciInstanceKlass net/minecraft/block/BlockDirt 1 1 184 1 7 1 7 1 1 1 1 1 1 1 1 1 1 1 1 1 8 1 1 1 7 1 1 12 9 1 12 10 1 7 1 1 12 9 1 1 12 10 1 1 1 1 12 9 12 9 1 12 9 1 1 1 1 1 1 1 1 7 1 1 12 11 1 1 12 11 1 1 12 10 1 12 9 1 12 9 1 100 1 1 12 9 1 100 12 10 1 1 12 9 1 1 1 1 1 1 1 1 1 1 1 12 10 1 1 1 1 7 1 12 10 1 7 1 1 12 11 1 1 1 1 1 1 1 12 10 1 7 12 10 1 1 12 10 1 1 12 10 1 8 1 8 1 12 10 1 7 1 1 12 11 1 8 1 1 1 1 1 100 10 1 1 1 1 1 1 1 1 7 1 8 1 8 12 9 1 1 1 1 1 1 1
+staticfield net/minecraft/block/BlockDirt field_150009_a [Ljava/lang/String; 3 [Ljava/lang/String;
+ciInstanceKlass net/minecraft/block/BlockStaticLiquid 1 1 143 1 7 1 7 1 1 1 1 8 1 1 12 10 1 1 12 10 1 7 1 1 12 9 1 1 1 1 1 12 10 1 7 1 1 12 10 1 1 12 10 1 1 1 1 1 1 1 1 1 1 12 10 1 7 1 1 12 10 1 1 12 10 1 1 12 10 1 1 12 10 1 1 12 10 1 1 1 1 1 1 1 1 12 9 1 7 1 1 12 10 9 1 12 9 1 1 12 10 1 100 1 1 12 9 1 12 10 1 1 12 10 1 1 12 10 1 1 1 1 1 1 1 1 1 1 1 1 12 10 1 12 10 1 1 1 1 1 1 1 1 1 1
+ciInstanceKlass net/minecraft/block/BlockPressurePlate 1 1 104 1 7 1 7 1 1 7 1 1 1 1 1 1 8 1 1 1 12 10 12 9 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 12 9 1 7 1 1 12 10 1 7 1 1 12 10 1 7 1 12 9 1 100 1 1 12 10 1 12 9 1 100 1 1 12 11 1 1 12 11 1 7 1 12 11 1 1 12 11 1 12 10 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
+instanceKlass net/minecraft/entity/passive/EntityAmbientCreature
+instanceKlass net/minecraft/entity/boss/EntityDragon
+instanceKlass net/minecraft/entity/EntityFlying
+instanceKlass net/minecraft/entity/monster/EntitySlime
+instanceKlass net/minecraft/entity/EntityCreature
+ciInstanceKlass net/minecraft/entity/EntityLiving 1 1 1200 1 7 1 7 1 1 7 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 8 1 1 12 10 1 7 12 9 12 9 1 7 1 7 1 1 12 9 1 7 1 12 10 12 9 12 9 1 7 1 12 10 12 9 1 7 10 12 9 1 7 10 12 9 1 7 1 12 10 12 9 1 7 1 12 10 12 9 1 7 10 12 9 4 1 1 1 1 1 1 1 12 10 1 1 12 10 1 7 1 1 12 9 1 7 1 1 12 10 6 0 1 7 1 1 12 11 1 1 1 1 1 1 1 1 1 1 1 1 12 9 1 1 7 1 1 12 10 1 1 1 1 7 1 7 1 1 1 1 12 10 1 1 12 9 1 7 1 1 12 10 1 7 1 1 12 10 1 8 1 1 1 1 1 12 10 1 1 12 10 1 12 10 1 1 12 10 1 7 1 1 12 10 1 12 9 1 8 1 1 12 10 1 1 12 10 1 1 12 9 1 7 1 1 12 10 12 9 12 10 12 10 1 12 10 1 1 12 9 1 1 12 10 100 1 1 1 1 1 1 1 12 10 6 0 6 0 1 8 1 1 12 9 1 12 10 1 12 9 1 12 9 1 12 9 1 12 9 1 1 12 10 1 1 1 1 1 12 10 1 12 9 1 12 10 1 1 1 12 10 1 12 10 12 10 1 1 1 1 1 7 1 1 12 10 1 1 12 10 1 1 12 10 1 1 1 1 1 1 1 12 10 1 8 12 10 1 7 1 1 12 10 1 8 12 9 1 7 12 10 10 1 1 12 10 1 1 12 10 1 8 1 1 12 10 1 7 1 12 10 1 8 1 8 1 12 10 1 1 12 10 1 8 1 12 10 1 8 12 9 12 9 1 8 1 100 1 1 12 10 1 100 1 1 12 10 1 1 12 10 1 8 1 12 10 1 100 1 8 1 12 9 1 1 12 10 1 8 1 12 9 8 1 12 9 1 8 1 1 1 1 1 1 1 1 12 10 1 1 12 10 1 1 12 10 1 1 12 10 1 1 12 10 1 12 10 1 12 10 1 12 10 1 1 12 10 1 1 12 10 1 1 12 10 1 12 10 1 1 12 10 1 1 12 10 12 9 1 1 1 12 9 1 1 12 10 12 10 1 1 12 10 1 8 1 12 9 1 1 12 10 1 8 1 7 1 12 10 1 7 1 1 12 9 1 7 1 1 12 10 1 1 12 10 1 7 1 1 12 11 1 7 1 12 11 1 1 12 11 1 12 9 1 1 12 10 1 1 12 10 1 1 12 10 1 12 10 1 100 1 12 10 1 12 10 1 12 10 1 100 1 12 9 4 1 1 12 10 1 100 1 12 9 1 12 10 1 1 12 10 1 100 1 1 12 9 1 7 1 1 12 10 1 1 12 10 1 1 12 10 1 12 10 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 12 9 1 7 1 1 12 10 1 1 12 9 1 12 9 10 6 0 1 1 12 10 9 9 9 12 10 6 0 6 0 1 1 1 8 12 10 1 8 1 12 10 1 8 1 12 10 1 8 1 8 1 12 10 1 8 1 12 10 1 8 1 8 1 12 10 1 8 1 12 10 1 12 10 1 8 1 12 10 1 12 10 1 12 9 4 4 12 9 12 9 4 4 1 12 9 4 1 12 10 1 1 12 10 9 1 1 12 10 4 1 12 9 12 9 1 12 9 1 12 10 1 12 10 4 1 12 9 1 1 9 9 9 1 12 10 10 9 1 12 9 1 12 9 6 0 1 100 1 1 12 10 1 100 1 1 12 10 6 0 6 0 4 1 1 12 10 1 1 1 1 1 1 1 1 12 10 1 1 1 1 1 1 12 10 1 1 12 10 1 12 11 1 12 10 1 1 1 12 10 1 12 10 1 12 10 4 1 1 12 9 1 7 1 12 10 1 1 1 1 1 1 1 4 1 12 10 1 12 10 1 1 12 10 1 1 12 10 1 1 1 1 4 1 1 12 10 1 12 9 4 4 12 10 1 1 12 10 1 12 10 1 100 1 1 12 9 1 1 12 10 1 12 9 1 12 9 1 1 12 9 1 12 9 1 12 9 1 12 9 1 12 9 1 12 9 1 12 9 1 12 9 1 12 9 1 12 9 1 12 9 1 12 9 1 12 9 1 12 9 1 12 9 1 12 9 1 12 9 1 12 9 1 12 9 1 12 9 1 1 1 12 10 4 1 100 1 1 12 10 1 1 1 12 10 1 7 1 8 6 0 1 12 10 1 1 12 11 1 1 1 1 1 12 10 12 10 1 1 12 10 1 1 1 12 10 1 1 1 12 10 1 1 1 1 1 1 1 1 1 12 9 1 1 1 1 1 12 10 1 1 12 10 1 1 12 9 1 100 1 12 9 1 1 12 10 1 1 12 9 1 100 1 12 10 1 12 9 1 12 10 1 100 1 12 10 1 1 12 10 1 12 9 1 1 12 10 1 12 10 12 10 1 1 1 12 10 1 100 1 1 12 10 1 100 1 12 10 1 100 1 1 12 10 1 1 1 100 1 1 1 1 12 10 1 12 10 10 1 1 12 10 1 1 12 10 1 100 1 1 12 10 1 12 10 1 1 1 1 1 1 1 1 1 1 1 1
+ciInstanceKlass net/minecraft/block/BlockNewLeaf 1 1 142 1 7 1 7 1 1 1 1 1 1 1 1 8 1 1 12 10 1 1 1 1 1 100 1 1 12 9 1 100 1 1 12 10 1 100 1 100 1 1 12 9 1 12 10 1 1 12 10 1 1 1 1 1 1 1 1 1 12 10 1 1 1 1 1 12 10 1 1 1 1 1 1 1 1 1 1 1 1 12 9 1 12 9 1 7 1 1 1 1 1 100 1 1 12 11 1 1 1 1 1 1 1 12 9 1 7 1 1 12 11 1 1 1 1 1 1 12 9 1 7 1 7 1 8 1 8 1 8 1 8 1 8 1 8 1 1 1 1 1 1 1
+staticfield net/minecraft/block/BlockNewLeaf field_150132_N [[Ljava/lang/String; 2 [[Ljava/lang/String;
+staticfield net/minecraft/block/BlockNewLeaf field_150133_O [Ljava/lang/String; 2 [Ljava/lang/String;
+ciInstanceKlass net/minecraft/init/Blocks 1 1 800 1 7 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 8 1 1 12 10 1 1 1 1 7 1 1 12 9 8 1 7 1 1 12 10 12 9 8 12 9 8 1 7 12 9 8 12 9 8 12 9 8 12 9 8 12 9 8 12 9 8 1 7 12 9 8 12 9 8 12 9 8 12 9 8 1 7 12 9 8 12 9 8 12 9 8 12 9 8 12 9 8 12 9 8 12 9 8 1 7 12 9 8 12 9 8 12 9 8 12 9 8 12 9 8 12 9 8 12 9 8 12 9 8 12 9 8 12 9 8 12 9 8 12 9 8 1 7 12 9 8 12 9 8 1 7 12 9 8 1 7 12 9 8 12 9 8 1 7 12 9 8 12 9 8 1 7 12 9 8 1 7 12 9 8 12 9 8 1 7 12 9 8 12 9 8 12 9 8 12 9 8 1 7 12 9 8 12 9 8 12 9 8 12 9 8 12 9 8 12 9 8 12 9 8 12 9 8 1 7 12 9 8 12 9 8 12 9 8 1 7 12 9 8 1 7 12 9 8 12 9 8 12 9 8 12 9 8 12 9 8 12 9 8 12 9 8 12 9 8 12 9 8 12 9 8 12 9 8 12 9 8 12 9 8 12 9 8 12 9 8 12 9 8 12 9 8 12 9 8 12 9 8 12 9 8 12 9 8 12 9 8 12 9 8 12 9 8 12 9 8 12 9 8 12 9 8 12 9 8 12 9 8 12 9 8 12 9 8 12 9 8 12 9 8 12 9 8 12 9 8 1 7 12 9 8 12 9 8 12 9 8 1 7 12 9 8 12 9 8 12 9 8 12 9 8 12 9 8 12 9 8 12 9 8 12 9 8 12 9 8 12 9 8 12 9 8 12 9 8 12 9 8 12 9 8 12 9 8 12 9 8 1 7 12 9 8 12 9 8 12 9 8 12 9 8 12 9 8 12 9 8 12 9 8 12 9 8 1 7 12 9 8 12 9 8 12 9 8 12 9 8 12 9 8 12 9 8 12 9 8 12 9 8 12 9 8 12 9 8 12 9 8 12 9 8 12 9 8 1 7 12 9 8 12 9 8 12 9 8 12 9 8 12 9 8 12 9 8 12 9 8 1 7 12 9 8 12 9 8 12 9 8 12 9 8 12 9 8 12 9 8 12 9 8 12 9 8 12 9 8 12 9 8 12 9 8 1 7 12 9 8 12 9 8 1 7 12 9 8 12 9 8 12 9 8 1 7 12 9 8 12 9 8 12 9 8 12 9 8 12 9 8 12 9 8 12 9 8 12 9 8 12 9 8 12 9 8 12 9 8 12 9 8 12 9 8 1 7 12 9 8 1 7 12 9 8 1 7 12 9 1 1 1 1 1
+staticfield net/minecraft/init/Blocks air Lnet/minecraft/block/Block; net/minecraft/block/BlockAir
+staticfield net/minecraft/init/Blocks stone Lnet/minecraft/block/Block; net/minecraft/block/BlockStone
+staticfield net/minecraft/init/Blocks grass Lnet/minecraft/block/BlockGrass; net/minecraft/block/BlockGrass
+staticfield net/minecraft/init/Blocks dirt Lnet/minecraft/block/Block; net/minecraft/block/BlockDirt
+staticfield net/minecraft/init/Blocks cobblestone Lnet/minecraft/block/Block; net/minecraft/block/Block
+staticfield net/minecraft/init/Blocks planks Lnet/minecraft/block/Block; net/minecraft/block/BlockWood
+staticfield net/minecraft/init/Blocks sapling Lnet/minecraft/block/Block; net/minecraft/block/BlockSapling
+staticfield net/minecraft/init/Blocks bedrock Lnet/minecraft/block/Block; net/minecraft/block/Block
+staticfield net/minecraft/init/Blocks flowing_water Lnet/minecraft/block/BlockLiquid; net/minecraft/block/BlockDynamicLiquid
+staticfield net/minecraft/init/Blocks water Lnet/minecraft/block/Block; net/minecraft/block/BlockStaticLiquid
+staticfield net/minecraft/init/Blocks flowing_lava Lnet/minecraft/block/BlockLiquid; net/minecraft/block/BlockDynamicLiquid
+staticfield net/minecraft/init/Blocks lava Lnet/minecraft/block/Block; net/minecraft/block/BlockStaticLiquid
+staticfield net/minecraft/init/Blocks sand Lnet/minecraft/block/BlockSand; net/minecraft/block/BlockSand
+staticfield net/minecraft/init/Blocks gravel Lnet/minecraft/block/Block; net/minecraft/block/BlockGravel
+staticfield net/minecraft/init/Blocks gold_ore Lnet/minecraft/block/Block; net/minecraft/block/BlockOre
+staticfield net/minecraft/init/Blocks iron_ore Lnet/minecraft/block/Block; net/minecraft/block/BlockOre
+staticfield net/minecraft/init/Blocks coal_ore Lnet/minecraft/block/Block; net/minecraft/block/BlockOre
+staticfield net/minecraft/init/Blocks log Lnet/minecraft/block/Block; net/minecraft/block/BlockOldLog
+staticfield net/minecraft/init/Blocks log2 Lnet/minecraft/block/Block; net/minecraft/block/BlockNewLog
+staticfield net/minecraft/init/Blocks leaves Lnet/minecraft/block/BlockLeaves; net/minecraft/block/BlockOldLeaf
+staticfield net/minecraft/init/Blocks leaves2 Lnet/minecraft/block/BlockLeaves; net/minecraft/block/BlockNewLeaf
+staticfield net/minecraft/init/Blocks sponge Lnet/minecraft/block/Block; net/minecraft/block/BlockSponge
+staticfield net/minecraft/init/Blocks glass Lnet/minecraft/block/Block; net/minecraft/block/BlockGlass
+staticfield net/minecraft/init/Blocks lapis_ore Lnet/minecraft/block/Block; net/minecraft/block/BlockOre
+staticfield net/minecraft/init/Blocks lapis_block Lnet/minecraft/block/Block; net/minecraft/block/BlockCompressed
+staticfield net/minecraft/init/Blocks dispenser Lnet/minecraft/block/Block; net/minecraft/block/BlockDispenser
+staticfield net/minecraft/init/Blocks sandstone Lnet/minecraft/block/Block; net/minecraft/block/BlockSandStone
+staticfield net/minecraft/init/Blocks noteblock Lnet/minecraft/block/Block; net/minecraft/block/BlockNote
+staticfield net/minecraft/init/Blocks bed Lnet/minecraft/block/Block; net/minecraft/block/BlockBed
+staticfield net/minecraft/init/Blocks golden_rail Lnet/minecraft/block/Block; net/minecraft/block/BlockRailPowered
+staticfield net/minecraft/init/Blocks detector_rail Lnet/minecraft/block/Block; net/minecraft/block/BlockRailDetector
+staticfield net/minecraft/init/Blocks sticky_piston Lnet/minecraft/block/BlockPistonBase; net/minecraft/block/BlockPistonBase
+staticfield net/minecraft/init/Blocks web Lnet/minecraft/block/Block; net/minecraft/block/BlockWeb
+staticfield net/minecraft/init/Blocks tallgrass Lnet/minecraft/block/BlockTallGrass; net/minecraft/block/BlockTallGrass
+staticfield net/minecraft/init/Blocks deadbush Lnet/minecraft/block/BlockDeadBush; net/minecraft/block/BlockDeadBush
+staticfield net/minecraft/init/Blocks piston Lnet/minecraft/block/BlockPistonBase; net/minecraft/block/BlockPistonBase
+staticfield net/minecraft/init/Blocks piston_head Lnet/minecraft/block/BlockPistonExtension; net/minecraft/block/BlockPistonExtension
+staticfield net/minecraft/init/Blocks wool Lnet/minecraft/block/Block; net/minecraft/block/BlockColored
+staticfield net/minecraft/init/Blocks piston_extension Lnet/minecraft/block/BlockPistonMoving; net/minecraft/block/BlockPistonMoving
+staticfield net/minecraft/init/Blocks yellow_flower Lnet/minecraft/block/BlockFlower; net/minecraft/block/BlockFlower
+staticfield net/minecraft/init/Blocks red_flower Lnet/minecraft/block/BlockFlower; net/minecraft/block/BlockFlower
+staticfield net/minecraft/init/Blocks brown_mushroom Lnet/minecraft/block/BlockBush; net/minecraft/block/BlockMushroom
+staticfield net/minecraft/init/Blocks red_mushroom Lnet/minecraft/block/BlockBush; net/minecraft/block/BlockMushroom
+staticfield net/minecraft/init/Blocks gold_block Lnet/minecraft/block/Block; net/minecraft/block/BlockCompressed
+staticfield net/minecraft/init/Blocks iron_block Lnet/minecraft/block/Block; net/minecraft/block/BlockCompressed
+staticfield net/minecraft/init/Blocks double_stone_slab Lnet/minecraft/block/BlockSlab; net/minecraft/block/BlockStoneSlab
+staticfield net/minecraft/init/Blocks stone_slab Lnet/minecraft/block/BlockSlab; net/minecraft/block/BlockStoneSlab
+staticfield net/minecraft/init/Blocks brick_block Lnet/minecraft/block/Block; net/minecraft/block/Block
+staticfield net/minecraft/init/Blocks tnt Lnet/minecraft/block/Block; net/minecraft/block/BlockTNT
+staticfield net/minecraft/init/Blocks bookshelf Lnet/minecraft/block/Block; net/minecraft/block/BlockBookshelf
+staticfield net/minecraft/init/Blocks mossy_cobblestone Lnet/minecraft/block/Block; net/minecraft/block/Block
+staticfield net/minecraft/init/Blocks obsidian Lnet/minecraft/block/Block; net/minecraft/block/BlockObsidian
+staticfield net/minecraft/init/Blocks torch Lnet/minecraft/block/Block; net/minecraft/block/BlockTorch
+staticfield net/minecraft/init/Blocks fire Lnet/minecraft/block/BlockFire; net/minecraft/block/BlockFire
+staticfield net/minecraft/init/Blocks mob_spawner Lnet/minecraft/block/Block; net/minecraft/block/BlockMobSpawner
+staticfield net/minecraft/init/Blocks oak_stairs Lnet/minecraft/block/Block; net/minecraft/block/BlockStairs
+staticfield net/minecraft/init/Blocks chest Lnet/minecraft/block/BlockChest; net/minecraft/block/BlockChest
+staticfield net/minecraft/init/Blocks redstone_wire Lnet/minecraft/block/BlockRedstoneWire; net/minecraft/block/BlockRedstoneWire
+staticfield net/minecraft/init/Blocks diamond_ore Lnet/minecraft/block/Block; net/minecraft/block/BlockOre
+staticfield net/minecraft/init/Blocks diamond_block Lnet/minecraft/block/Block; net/minecraft/block/BlockCompressed
+staticfield net/minecraft/init/Blocks crafting_table Lnet/minecraft/block/Block; net/minecraft/block/BlockWorkbench
+staticfield net/minecraft/init/Blocks wheat Lnet/minecraft/block/Block; net/minecraft/block/BlockCrops
+staticfield net/minecraft/init/Blocks farmland Lnet/minecraft/block/Block; net/minecraft/block/BlockFarmland
+staticfield net/minecraft/init/Blocks furnace Lnet/minecraft/block/Block; net/minecraft/block/BlockFurnace
+staticfield net/minecraft/init/Blocks lit_furnace Lnet/minecraft/block/Block; net/minecraft/block/BlockFurnace
+staticfield net/minecraft/init/Blocks standing_sign Lnet/minecraft/block/Block; net/minecraft/block/BlockSign
+staticfield net/minecraft/init/Blocks wooden_door Lnet/minecraft/block/Block; net/minecraft/block/BlockDoor
+staticfield net/minecraft/init/Blocks ladder Lnet/minecraft/block/Block; net/minecraft/block/BlockLadder
+staticfield net/minecraft/init/Blocks rail Lnet/minecraft/block/Block; net/minecraft/block/BlockRail
+staticfield net/minecraft/init/Blocks stone_stairs Lnet/minecraft/block/Block; net/minecraft/block/BlockStairs
+staticfield net/minecraft/init/Blocks wall_sign Lnet/minecraft/block/Block; net/minecraft/block/BlockSign
+staticfield net/minecraft/init/Blocks lever Lnet/minecraft/block/Block; net/minecraft/block/BlockLever
+staticfield net/minecraft/init/Blocks stone_pressure_plate Lnet/minecraft/block/Block; net/minecraft/block/BlockPressurePlate
+staticfield net/minecraft/init/Blocks iron_door Lnet/minecraft/block/Block; net/minecraft/block/BlockDoor
+staticfield net/minecraft/init/Blocks wooden_pressure_plate Lnet/minecraft/block/Block; net/minecraft/block/BlockPressurePlate
+staticfield net/minecraft/init/Blocks redstone_ore Lnet/minecraft/block/Block; net/minecraft/block/BlockRedstoneOre
+staticfield net/minecraft/init/Blocks lit_redstone_ore Lnet/minecraft/block/Block; net/minecraft/block/BlockRedstoneOre
+staticfield net/minecraft/init/Blocks unlit_redstone_torch Lnet/minecraft/block/Block; net/minecraft/block/BlockRedstoneTorch
+staticfield net/minecraft/init/Blocks redstone_torch Lnet/minecraft/block/Block; net/minecraft/block/BlockRedstoneTorch
+staticfield net/minecraft/init/Blocks stone_button Lnet/minecraft/block/Block; net/minecraft/block/BlockButtonStone
+staticfield net/minecraft/init/Blocks snow_layer Lnet/minecraft/block/Block; net/minecraft/block/BlockSnow
+staticfield net/minecraft/init/Blocks ice Lnet/minecraft/block/Block; net/minecraft/block/BlockIce
+staticfield net/minecraft/init/Blocks snow Lnet/minecraft/block/Block; net/minecraft/block/BlockSnowBlock
+staticfield net/minecraft/init/Blocks cactus Lnet/minecraft/block/Block; net/minecraft/block/BlockCactus
+staticfield net/minecraft/init/Blocks clay Lnet/minecraft/block/Block; net/minecraft/block/BlockClay
+staticfield net/minecraft/init/Blocks reeds Lnet/minecraft/block/Block; net/minecraft/block/BlockReed
+staticfield net/minecraft/init/Blocks jukebox Lnet/minecraft/block/Block; net/minecraft/block/BlockJukebox
+staticfield net/minecraft/init/Blocks fence Lnet/minecraft/block/Block; net/minecraft/block/BlockFence
+staticfield net/minecraft/init/Blocks pumpkin Lnet/minecraft/block/Block; net/minecraft/block/BlockPumpkin
+staticfield net/minecraft/init/Blocks netherrack Lnet/minecraft/block/Block; net/minecraft/block/BlockNetherrack
+staticfield net/minecraft/init/Blocks soul_sand Lnet/minecraft/block/Block; net/minecraft/block/BlockSoulSand
+staticfield net/minecraft/init/Blocks glowstone Lnet/minecraft/block/Block; net/minecraft/block/BlockGlowstone
+staticfield net/minecraft/init/Blocks portal Lnet/minecraft/block/BlockPortal; net/minecraft/block/BlockPortal
+staticfield net/minecraft/init/Blocks lit_pumpkin Lnet/minecraft/block/Block; net/minecraft/block/BlockPumpkin
+staticfield net/minecraft/init/Blocks cake Lnet/minecraft/block/Block; net/minecraft/block/BlockCake
+staticfield net/minecraft/init/Blocks unpowered_repeater Lnet/minecraft/block/BlockRedstoneRepeater; net/minecraft/block/BlockRedstoneRepeater
+staticfield net/minecraft/init/Blocks powered_repeater Lnet/minecraft/block/BlockRedstoneRepeater; net/minecraft/block/BlockRedstoneRepeater
+staticfield net/minecraft/init/Blocks trapdoor Lnet/minecraft/block/Block; net/minecraft/block/BlockTrapDoor
+staticfield net/minecraft/init/Blocks monster_egg Lnet/minecraft/block/Block; net/minecraft/block/BlockSilverfish
+staticfield net/minecraft/init/Blocks stonebrick Lnet/minecraft/block/Block; net/minecraft/block/BlockStoneBrick
+staticfield net/minecraft/init/Blocks brown_mushroom_block Lnet/minecraft/block/Block; net/minecraft/block/BlockHugeMushroom
+staticfield net/minecraft/init/Blocks red_mushroom_block Lnet/minecraft/block/Block; net/minecraft/block/BlockHugeMushroom
+staticfield net/minecraft/init/Blocks iron_bars Lnet/minecraft/block/Block; net/minecraft/block/BlockPane
+staticfield net/minecraft/init/Blocks glass_pane Lnet/minecraft/block/Block; net/minecraft/block/BlockPane
+staticfield net/minecraft/init/Blocks melon_block Lnet/minecraft/block/Block; net/minecraft/block/BlockMelon
+staticfield net/minecraft/init/Blocks pumpkin_stem Lnet/minecraft/block/Block; net/minecraft/block/BlockStem
+staticfield net/minecraft/init/Blocks melon_stem Lnet/minecraft/block/Block; net/minecraft/block/BlockStem
+staticfield net/minecraft/init/Blocks vine Lnet/minecraft/block/Block; net/minecraft/block/BlockVine
+staticfield net/minecraft/init/Blocks fence_gate Lnet/minecraft/block/Block; net/minecraft/block/BlockFenceGate
+staticfield net/minecraft/init/Blocks brick_stairs Lnet/minecraft/block/Block; net/minecraft/block/BlockStairs
+staticfield net/minecraft/init/Blocks stone_brick_stairs Lnet/minecraft/block/Block; net/minecraft/block/BlockStairs
+staticfield net/minecraft/init/Blocks mycelium Lnet/minecraft/block/BlockMycelium; net/minecraft/block/BlockMycelium
+staticfield net/minecraft/init/Blocks waterlily Lnet/minecraft/block/Block; net/minecraft/block/BlockLilyPad
+staticfield net/minecraft/init/Blocks nether_brick Lnet/minecraft/block/Block; net/minecraft/block/Block
+staticfield net/minecraft/init/Blocks nether_brick_fence Lnet/minecraft/block/Block; net/minecraft/block/BlockFence
+staticfield net/minecraft/init/Blocks nether_brick_stairs Lnet/minecraft/block/Block; net/minecraft/block/BlockStairs
+staticfield net/minecraft/init/Blocks nether_wart Lnet/minecraft/block/Block; net/minecraft/block/BlockNetherWart
+staticfield net/minecraft/init/Blocks enchanting_table Lnet/minecraft/block/Block; net/minecraft/block/BlockEnchantmentTable
+staticfield net/minecraft/init/Blocks brewing_stand Lnet/minecraft/block/Block; net/minecraft/block/BlockBrewingStand
+staticfield net/minecraft/init/Blocks cauldron Lnet/minecraft/block/BlockCauldron; net/minecraft/block/BlockCauldron
+staticfield net/minecraft/init/Blocks end_portal Lnet/minecraft/block/Block; net/minecraft/block/BlockEndPortal
+staticfield net/minecraft/init/Blocks end_portal_frame Lnet/minecraft/block/Block; net/minecraft/block/BlockEndPortalFrame
+staticfield net/minecraft/init/Blocks end_stone Lnet/minecraft/block/Block; net/minecraft/block/Block
+staticfield net/minecraft/init/Blocks dragon_egg Lnet/minecraft/block/Block; net/minecraft/block/BlockDragonEgg
+staticfield net/minecraft/init/Blocks redstone_lamp Lnet/minecraft/block/Block; net/minecraft/block/BlockRedstoneLight
+staticfield net/minecraft/init/Blocks lit_redstone_lamp Lnet/minecraft/block/Block; net/minecraft/block/BlockRedstoneLight
+staticfield net/minecraft/init/Blocks double_wooden_slab Lnet/minecraft/block/BlockSlab; net/minecraft/block/BlockWoodSlab
+staticfield net/minecraft/init/Blocks wooden_slab Lnet/minecraft/block/BlockSlab; net/minecraft/block/BlockWoodSlab
+staticfield net/minecraft/init/Blocks cocoa Lnet/minecraft/block/Block; net/minecraft/block/BlockCocoa
+staticfield net/minecraft/init/Blocks sandstone_stairs Lnet/minecraft/block/Block; net/minecraft/block/BlockStairs
+staticfield net/minecraft/init/Blocks emerald_ore Lnet/minecraft/block/Block; net/minecraft/block/BlockOre
+staticfield net/minecraft/init/Blocks ender_chest Lnet/minecraft/block/Block; net/minecraft/block/BlockEnderChest
+staticfield net/minecraft/init/Blocks tripwire_hook Lnet/minecraft/block/BlockTripWireHook; net/minecraft/block/BlockTripWireHook
+staticfield net/minecraft/init/Blocks tripwire Lnet/minecraft/block/Block; net/minecraft/block/BlockTripWire
+staticfield net/minecraft/init/Blocks emerald_block Lnet/minecraft/block/Block; net/minecraft/block/BlockCompressed
+staticfield net/minecraft/init/Blocks spruce_stairs Lnet/minecraft/block/Block; net/minecraft/block/BlockStairs
+staticfield net/minecraft/init/Blocks birch_stairs Lnet/minecraft/block/Block; net/minecraft/block/BlockStairs
+staticfield net/minecraft/init/Blocks jungle_stairs Lnet/minecraft/block/Block; net/minecraft/block/BlockStairs
+staticfield net/minecraft/init/Blocks command_block Lnet/minecraft/block/Block; net/minecraft/block/BlockCommandBlock
+staticfield net/minecraft/init/Blocks beacon Lnet/minecraft/block/BlockBeacon; net/minecraft/block/BlockBeacon
+staticfield net/minecraft/init/Blocks cobblestone_wall Lnet/minecraft/block/Block; net/minecraft/block/BlockWall
+staticfield net/minecraft/init/Blocks flower_pot Lnet/minecraft/block/Block; net/minecraft/block/BlockFlowerPot
+staticfield net/minecraft/init/Blocks carrots Lnet/minecraft/block/Block; net/minecraft/block/BlockCarrot
+staticfield net/minecraft/init/Blocks potatoes Lnet/minecraft/block/Block; net/minecraft/block/BlockPotato
+staticfield net/minecraft/init/Blocks wooden_button Lnet/minecraft/block/Block; net/minecraft/block/BlockButtonWood
+staticfield net/minecraft/init/Blocks skull Lnet/minecraft/block/Block; net/minecraft/block/BlockSkull
+staticfield net/minecraft/init/Blocks anvil Lnet/minecraft/block/Block; net/minecraft/block/BlockAnvil
+staticfield net/minecraft/init/Blocks trapped_chest Lnet/minecraft/block/Block; net/minecraft/block/BlockChest
+staticfield net/minecraft/init/Blocks light_weighted_pressure_plate Lnet/minecraft/block/Block; net/minecraft/block/BlockPressurePlateWeighted
+staticfield net/minecraft/init/Blocks heavy_weighted_pressure_plate Lnet/minecraft/block/Block; net/minecraft/block/BlockPressurePlateWeighted
+staticfield net/minecraft/init/Blocks unpowered_comparator Lnet/minecraft/block/BlockRedstoneComparator; net/minecraft/block/BlockRedstoneComparator
+staticfield net/minecraft/init/Blocks powered_comparator Lnet/minecraft/block/BlockRedstoneComparator; net/minecraft/block/BlockRedstoneComparator
+staticfield net/minecraft/init/Blocks daylight_detector Lnet/minecraft/block/BlockDaylightDetector; net/minecraft/block/BlockDaylightDetector
+staticfield net/minecraft/init/Blocks redstone_block Lnet/minecraft/block/Block; net/minecraft/block/BlockCompressedPowered
+staticfield net/minecraft/init/Blocks quartz_ore Lnet/minecraft/block/Block; net/minecraft/block/BlockOre
+staticfield net/minecraft/init/Blocks hopper Lnet/minecraft/block/BlockHopper; net/minecraft/block/BlockHopper
+staticfield net/minecraft/init/Blocks quartz_block Lnet/minecraft/block/Block; net/minecraft/block/BlockQuartz
+staticfield net/minecraft/init/Blocks quartz_stairs Lnet/minecraft/block/Block; net/minecraft/block/BlockStairs
+staticfield net/minecraft/init/Blocks activator_rail Lnet/minecraft/block/Block; net/minecraft/block/BlockRailPowered
+staticfield net/minecraft/init/Blocks dropper Lnet/minecraft/block/Block; net/minecraft/block/BlockDropper
+staticfield net/minecraft/init/Blocks stained_hardened_clay Lnet/minecraft/block/Block; net/minecraft/block/BlockColored
+staticfield net/minecraft/init/Blocks hay_block Lnet/minecraft/block/Block; net/minecraft/block/BlockHay
+staticfield net/minecraft/init/Blocks carpet Lnet/minecraft/block/Block; net/minecraft/block/BlockCarpet
+staticfield net/minecraft/init/Blocks hardened_clay Lnet/minecraft/block/Block; net/minecraft/block/BlockHardenedClay
+staticfield net/minecraft/init/Blocks coal_block Lnet/minecraft/block/Block; net/minecraft/block/Block
+staticfield net/minecraft/init/Blocks packed_ice Lnet/minecraft/block/Block; net/minecraft/block/BlockPackedIce
+staticfield net/minecraft/init/Blocks acacia_stairs Lnet/minecraft/block/Block; net/minecraft/block/BlockStairs
+staticfield net/minecraft/init/Blocks dark_oak_stairs Lnet/minecraft/block/Block; net/minecraft/block/BlockStairs
+staticfield net/minecraft/init/Blocks double_plant Lnet/minecraft/block/BlockDoublePlant; net/minecraft/block/BlockDoublePlant
+staticfield net/minecraft/init/Blocks stained_glass Lnet/minecraft/block/BlockStainedGlass; net/minecraft/block/BlockStainedGlass
+staticfield net/minecraft/init/Blocks stained_glass_pane Lnet/minecraft/block/BlockStainedGlassPane; net/minecraft/block/BlockStainedGlassPane
+instanceKlass net/minecraftforge/event/entity/EntityStruckByLightningEvent
+instanceKlass net/minecraftforge/event/entity/living/ZombieEvent
+instanceKlass net/minecraftforge/event/entity/minecart/MinecartEvent
+instanceKlass net/minecraftforge/event/entity/item/ItemEvent
+instanceKlass net/minecraftforge/event/entity/EntityEvent$EntityConstructing
+instanceKlass net/minecraftforge/event/entity/EntityEvent$EnteringChunk
+instanceKlass net/minecraftforge/event/entity/EntityEvent$CanUpdate
+instanceKlass net/minecraftforge/event/entity/PlaySoundAtEntityEvent
+instanceKlass net/minecraftforge/event/entity/EntityJoinWorldEvent
+instanceKlass net/minecraftforge/event/entity/living/LivingEvent
+ciInstanceKlass net/minecraftforge/event/entity/EntityEvent 1 1 48 1 7 1 7 1 1 100 1 1 100 1 1 100 1 1 1 1 1 1 1 1 12 10 12 9 1 1 1 12 10 12 9 1 7 1 1 12 10 1 12 10 1 1 1 1 1 1
+instanceKlass net/minecraftforge/event/entity/living/EnderTeleportEvent
+instanceKlass net/minecraftforge/event/entity/living/LivingHealEvent
+instanceKlass net/minecraftforge/event/entity/living/LivingPackSizeEvent
+instanceKlass net/minecraftforge/event/entity/living/LivingSpawnEvent
+instanceKlass net/minecraftforge/event/entity/living/LivingDeathEvent
+instanceKlass net/minecraftforge/event/entity/living/LivingEvent$LivingUpdateEvent
+instanceKlass net/minecraftforge/event/entity/living/LivingEvent$LivingJumpEvent
+instanceKlass net/minecraftforge/event/entity/living/LivingFallEvent
+instanceKlass net/minecraftforge/event/entity/living/LivingDropsEvent
+instanceKlass net/minecraftforge/event/entity/living/LivingHurtEvent
+instanceKlass net/minecraftforge/event/entity/living/LivingAttackEvent
+instanceKlass net/minecraftforge/event/entity/living/LivingSetAttackTargetEvent
+instanceKlass net/minecraftforge/event/entity/player/PlayerEvent
+ciInstanceKlass net/minecraftforge/event/entity/living/LivingEvent 1 1 49 1 7 1 7 1 1 100 1 1 100 1 1 1 1 1 1 1 1 12 10 12 9 1 1 1 1 12 10 1 12 10 12 9 1 7 1 1 12 10 1 12 10 1 1 1 1 1 1
+ciInstanceKlass net/minecraft/entity/passive/EntityPig 1 1 368 1 7 1 7 1 1 1 1 1 1 8 1 1 12 10 4 1 1 12 10 1 1 12 10 1 7 1 1 12 10 1 1 12 9 1 7 1 12 10 1 7 1 1 12 10 1 7 6 0 1 12 10 1 7 4 1 12 10 12 9 1 7 1 12 10 1 7 6 0 1 7 1 1 12 9 1 12 10 1 12 9 1 7 6 0 10 1 7 10 1 7 1 7 4 1 12 10 1 7 10 1 1 1 1 1 1 1 1 12 10 1 7 1 1 12 9 1 1 12 10 6 0 1 7 1 1 12 11 1 12 9 6 0 1 12 10 1 1 1 12 9 1 1 12 10 1 100 1 1 12 10 1 1 1 12 10 1 1 12 9 1 7 1 1 12 10 1 7 1 1 12 10 1 1 12 10 1 8 1 12 10 1 7 1 1 12 10 1 1 1 12 10 1 1 12 10 1 12 10 1 1 1 1 8 1 1 1 8 1 1 1 8 4 1 1 12 10 1 1 1 1 1 1 1 1 12 10 1 12 9 1 100 1 1 12 9 1 1 12 10 1 1 1 1 12 10 1 12 9 1 12 9 1 100 1 1 1 1 12 9 1 100 1 1 12 10 1 1 12 10 1 12 9 1 1 1 1 1 1 12 10 1 12 10 1 1 1 1 100 10 1 12 9 1 12 10 1 1 12 10 1 1 12 9 1 12 9 1 12 9 1 1 12 9 1 12 9 1 1 12 10 1 1 12 10 1 12 10 1 1 1 1 1 1 12 10 4 1 100 1 1 12 9 1 1 12 10 1 1 1 10 1 1 1 1 1 1 1 1 12 10 1 1 1 1 1 1
+instanceKlass net/minecraftforge/common/util/FakePlayer
+ciInstanceKlass net/minecraft/entity/player/EntityPlayerMP 1 1 1604 1 7 1 7 1 100 1 1 100 1 1 100 1 100 1 1 100 1 1 7 1 100 1 1 7 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 8 1 1 1 12 10 1 8 12 9 1 7 1 12 10 12 9 12 9 4 12 9 4 12 9 3 12 9 12 9 12 9 12 9 12 9 1 7 1 1 12 10 12 9 1 7 1 1 12 9 12 9 1 7 1 1 12 9 1 7 1 1 12 10 1 7 1 12 9 1 12 9 1 12 9 12 9 1 7 1 1 12 10 1 7 1 1 12 10 12 9 1 12 9 1 12 9 6 0 1 1 12 10 1 100 1 1 12 9 1 1 12 10 1 7 1 1 12 11 12 9 12 9 12 9 1 1 12 10 1 1 1 1 1 1 1 1 1 1 1 1 1 1 12 10 1 8 1 7 1 1 12 10 1 1 12 10 1 12 10 1 1 12 10 1 1 12 10 1 1 12 10 1 1 12 10 1 1 1 12 10 10 1 1 12 10 1 1 12 10 1 1 1 12 10 1 1 1 1 12 9 1 7 1 1 12 10 1 1 1 12 10 1 1 12 10 1 12 9 1 12 10 1 1 12 9 1 7 1 12 9 1 7 1 1 12 10 1 12 10 1 12 9 1 12 11 1 7 1 1 12 10 1 1 12 11 1 100 1 7 1 12 11 1 1 12 11 1 7 1 12 10 1 12 11 12 9 1 7 1 12 10 1 7 1 1 12 10 1 7 10 10 1 7 1 12 10 1 7 1 12 9 1 12 9 1 1 12 10 1 1 12 10 1 7 1 12 10 1 1 12 10 1 1 12 10 1 1 12 10 10 1 12 10 10 1 7 1 1 12 10 1 1 12 10 1 1 12 10 1 7 1 1 12 10 1 7 1 1 12 9 1 1 12 10 1 12 10 1 7 1 1 12 10 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 12 10 1 1 12 9 1 7 1 12 10 1 1 12 10 1 7 1 1 12 10 1 7 1 12 10 1 100 1 1 12 10 1 12 10 1 1 12 9 1 7 1 12 10 1 12 10 1 7 1 12 10 1 12 10 1 1 12 10 1 7 1 1 12 9 1 7 1 1 12 10 1 7 11 1 100 1 1 12 10 1 1 12 10 1 100 1 1 12 10 1 100 1 12 10 1 12 9 1 7 1 12 9 1 12 9 1 12 10 1 12 9 1 1 12 10 1 7 1 1 12 9 1 7 1 1 12 10 1 12 10 1 8 1 100 1 1 12 10 1 8 1 1 12 10 1 1 12 10 1 100 1 12 10 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 7 1 1 12 10 1 1 12 10 1 7 1 12 9 1 1 12 10 1 7 10 1 1 12 10 1 7 10 1 12 10 10 1 1 12 9 1 100 11 1 100 1 1 12 10 10 1 100 10 1 12 10 10 1 1 12 10 1 1 1 1 1 1 1 1 1 1 1 1 1 12 10 1 1 12 10 1 100 1 1 12 10 1 1 12 10 1 1 12 10 1 8 1 100 1 1 12 10 1 12 9 1 12 9 1 12 10 1 12 10 1 100 1 12 9 1 100 1 12 10 1 100 1 1 12 10 1 12 10 1 12 9 1 12 10 1 1 12 10 1 1 12 10 1 1 12 9 1 1 12 10 1 100 1 1 12 10 1 1 12 9 1 1 12 10 1 100 1 12 9 1 1 12 10 1 100 1 12 9 1 12 10 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 12 10 1 12 10 1 12 10 1 8 1 12 9 1 12 9 1 100 1 1 12 10 1 1 12 10 1 7 1 100 1 1 12 9 12 10 1 1 1 1 1 1 10 1 1 1 1 12 9 1 12 9 1 1 12 10 12 9 1 100 1 12 10 1 12 9 1 1 12 10 1 12 10 1 12 10 1 12 9 1 1 12 10 4 1 1 1 12 10 1 1 12 10 1 1 1 1 12 10 1 1 12 9 1 100 1 12 10 1 1 12 10 1 12 9 1 12 9 1 1 1 1 1 1 1 1 1 12 10 1 100 12 10 1 12 10 12 10 1 1 1 1 12 10 1 100 1 12 9 1 12 10 1 1 1 1 1 1 12 10 1 1 1 1 100 1 1 12 10 1 100 1 12 9 1 12 9 1 12 9 1 12 10 1 1 12 9 1 12 10 1 100 1 8 1 12 10 1 100 1 12 10 1 12 9 1 1 1 1 1 1 8 1 100 10 1 1 1 1 1 1 8 1 100 1 12 10 1 1 1 1 1 1 100 1 12 11 11 1 12 11 1 100 1 12 10 1 1 1 1 1 100 10 10 10 1 100 1 12 10 1 1 1 1 1 100 10 10 10 1 1 1 1 1 100 10 10 10 1 100 1 12 10 1 1 1 1 1 100 1 100 10 10 10 1 100 1 12 10 1 1 1 1 1 100 10 10 10 1 100 1 12 10 1 1 1 1 1 100 10 10 10 1 100 1 12 10 1 1 1 1 1 100 1 100 1 12 10 1 1 12 10 1 100 1 100 10 1 1 12 11 1 100 1 100 1 1 12 10 1 12 10 1 1 12 10 1 100 1 1 12 10 1 100 1 8 1 12 10 1 12 10 12 9 1 8 1 100 1 1 12 11 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 12 10 1 12 10 1 100 1 12 10 1 1 1 1 1 1 1 12 10 1 7 12 9 1 7 1 12 10 1 1 1 1 1 1 1 12 10 1 1 12 10 1 1 7 1 12 10 1 1 12 10 1 1 1 1 1 100 10 1 1 1 1 100 12 10 1 12 10 1 1 12 10 1 1 1 12 9 1 12 9 1 12 9 1 1 12 10 1 1 1 1 1 7 1 12 10 1 7 1 100 1 12 10 1 1 12 10 1 1 12 10 1 12 10 1 1 12 10 1 1 1 1 12 9 10 1 12 9 10 1 1 1 100 12 10 1 1 1 1 100 1 12 10 12 10 1 1 12 10 1 1 12 10 1 100 1 1 12 9 1 1 1 1 12 10 11 1 1 1 1 12 10 1 100 10 1 12 10 1 1 1 1 12 10 1 1 1 12 10 1 100 10 1 1 1 1 1 1 1 1 1 1 1 100 1 1 12 9 1 12 10 1 1 1 1 1 1 1 8 1 8 1 8 1 8 1 1 12 10 1 1 12 10 1 1 12 10 1 100 1 1 12 10 1 100 1 12 10 1 12 10 1 1 1 1 1 1 1 12 9 1 100 1 1 12 10 1 100 1 12 10 1 8 1 12 10 1 1 12 10 1 8 1 12 10 1 1 1 7 1 12 10 1 12 10 1 1 12 10 12 9 1 12 10 1 12 10 1 12 10 1 1 12 10 1 1 12 10 1 12 10 1 1 12 10 1 1 1 1 1 1 8 1 100 1 1 12 9 1 1 12 10 1 12 10 1 1 10 1 1 12 10 1 10 11 1 1 1 4 1 1 7 1 1 12 10 1 1 1 1 1 1 1
+staticfield net/minecraft/entity/player/EntityPlayerMP logger Lorg/apache/logging/log4j/Logger; org/apache/logging/log4j/core/Logger
+ciInstanceKlass net/minecraft/item/ItemStack 1 1 919 1 7 1 7 1 1 100 1 100 1 1 7 1 7 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 8 1 1 1 1 1 1 12 10 1 1 1 1 1 12 10 1 1 1 7 1 1 12 10 1 12 10 1 1 1 1 1 12 10 1 1 1 1 12 10 1 12 10 12 9 12 9 1 1 1 1 1 10 1 1 12 10 1 1 12 10 1 1 1 1 12 9 1 7 1 1 12 10 1 12 9 1 7 1 1 12 11 1 1 1 1 1 1 1 12 10 1 1 1 12 10 1 1 1 100 1 1 12 9 1 100 1 1 12 10 1 12 10 1 100 1 1 12 9 1 1 12 10 1 100 1 1 12 10 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 12 10 1 1 1 1 1 12 10 1 1 1 1 12 10 1 1 1 1 1 8 1 1 12 10 1 8 1 1 12 10 1 8 1 8 1 1 12 10 1 1 1 12 10 1 1 12 10 1 1 12 10 1 1 12 10 1 1 12 10 1 1 1 1 12 10 1 1 12 10 1 12 10 1 12 10 1 12 10 1 12 10 1 1 12 10 1 8 1 1 12 10 1 12 10 1 1 12 10 1 1 12 10 1 1 12 10 1 1 1 1 12 10 1 1 1 1 100 1 1 12 9 1 12 9 1 100 1 1 12 10 1 100 1 1 12 10 12 10 12 10 12 10 1 1 1 1 1 1 1 1 1 1 12 9 1 100 1 12 9 1 100 1 1 12 10 12 10 1 1 12 10 1 12 9 1 100 1 12 10 1 1 1 1 1 1 1 12 10 1 1 1 1 1 1 12 10 1 1 1 1 1 1 1 1 1 1 12 10 1 1 1 1 1 12 10 1 1 1 1 1 1 1 12 10 1 1 1 1 12 10 1 1 1 1 1 1 1 1 12 10 1 1 12 10 1 1 1 100 10 1 1 12 10 1 8 1 12 10 12 10 1 8 12 10 1 1 12 9 1 1 12 10 1 1 1 1 1 1 1 1 12 9 1 1 12 10 1 1 1 1 12 10 1 1 1 12 10 1 1 12 10 1 1 1 1 1 1 8 1 1 12 10 1 100 1 1 1 1 12 10 1 8 1 8 1 1 12 10 1 100 1 1 1 1 10 1 1 12 10 1 1 1 1 12 10 1 12 10 12 10 1 1 1 1 7 10 12 10 12 10 1 100 1 1 12 9 1 12 10 1 12 9 1 8 1 12 10 1 8 1 8 10 1 8 1 100 1 1 12 10 1 1 12 10 1 8 1 7 1 1 12 9 1 8 1 12 10 1 1 12 10 12 10 1 12 10 1 1 12 10 1 8 1 1 12 9 1 1 12 10 1 8 1 8 1 1 12 10 1 12 10 1 12 10 1 8 1 100 1 12 10 1 8 1 12 10 1 12 9 1 12 10 1 1 12 10 1 7 1 12 11 1 1 12 11 1 100 1 1 12 11 1 100 1 12 11 1 12 11 1 12 11 1 100 1 1 12 10 1 1 12 10 1 1 12 9 1 100 1 1 12 9 1 1 12 10 1 12 10 6 0 1 12 9 1 8 12 9 1 7 1 12 10 1 8 1 12 11 1 12 10 6 0 1 12 9 1 8 1 8 1 8 12 10 1 8 1 7 1 1 12 10 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 12 10 1 12 10 1 1 1 1 12 10 1 1 12 10 1 12 10 1 1 10 1 1 12 10 1 1 1 1 1 1 1 1 12 10 1 12 9 1 1 1 1 1 1 1 8 1 1 1 12 10 1 1 8 1 100 1 1 12 10 1 100 1 1 12 10 1 100 1 1 12 10 1 12 10 1 8 1 1 12 11 1 12 10 1 1 9 12 9 1 1 1 1 7 1 8 12 10 1 1 12 10 1 8 1 7 11 12 10 1 1 12 11 1 1 12 9 10 1 12 10 1 7 1 1 12 10 12 10 1 7 1 12 9 1 1 12 10 1 1 1 1 8 10 1 1 1 1 1 1 1 1 1 1
+staticfield net/minecraft/item/ItemStack field_111284_a Ljava/text/DecimalFormat; java/text/DecimalFormat
+ciInstanceKlass net/minecraft/util/MathHelper 1 1 235 1 7 1 100 1 1 1 1 1 1 1 1 8 1 1 12 10 1 1 1 1 12 9 4 3 1 1 1 4 1 1 1 7 1 1 12 10 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 6 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 7 1 1 12 10 1 1 1 1 7 1 12 10 1 1 1 1 1 1 1 1 12 10 1 1 1 1 1 1 1 12 10 1 1 1 1 1 1 100 1 1 1 1 1 1 4 4 4 1 1 6 0 6 0 6 0 1 1 1 1 100 1 100 1 1 12 10 1 1 1 1 1 1 1 1 1 1 100 1 1 12 10 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 12 10 12 10 12 9 5 0 1 1 12 10 1 1 1 1 1 3 6 0 6 0 6 0 12 10 1 1 1 1 1 1 1 1
+staticfield net/minecraft/util/MathHelper multiplyDeBruijnBitPosition [I 32
+ciInstanceKlass net/minecraft/entity/monster/EntitySkeleton 1 1 598 1 7 1 7 1 100 1 1 1 1 1 1 1 1 8 1 1 12 10 1 7 4 1 12 10 12 9 1 7 1 7 6 0 1 12 10 12 9 1 1 12 9 1 7 1 12 10 1 7 1 1 12 10 1 7 1 12 10 1 7 1 12 10 1 7 10 1 7 4 1 12 10 1 7 10 1 12 9 1 7 1 12 10 1 7 1 12 10 1 7 1 1 12 9 1 1 12 10 1 1 1 1 1 12 10 1 7 1 1 12 9 1 1 12 10 6 0 1 7 1 1 12 11 1 12 10 1 1 12 9 1 7 1 12 10 1 7 1 1 12 10 1 1 1 1 1 8 1 1 8 1 1 8 1 1 1 8 4 1 1 12 10 1 1 1 1 1 1 1 1 12 10 1 1 12 10 1 100 1 100 1 100 1 1 12 9 1 12 9 1 12 10 1 1 12 10 1 1 1 1 1 100 1 1 12 9 1 1 12 9 1 12 10 1 1 12 10 4 1 1 12 9 1 7 1 1 12 10 4 4 1 1 12 9 1 100 1 1 12 10 1 12 9 1 12 9 1 1 12 10 1 1 12 10 1 7 1 12 10 1 12 10 1 1 12 10 1 1 12 10 1 12 10 1 1 12 10 1 1 12 10 1 12 10 4 4 1 1 12 10 12 10 1 1 1 1 1 1 12 10 1 12 9 1 100 1 12 9 9 1 1 1 1 12 10 1 100 1 1 12 10 1 100 1 12 10 9 9 6 0 1 100 1 1 12 9 1 1 12 10 1 1 1 1 1 1 1 1 1 7 1 1 12 9 1 1 1 12 9 1 1 12 10 1 12 9 1 1 1 1 1 1 12 9 1 12 10 1 1 12 10 1 1 12 10 1 1 12 9 1 12 10 1 1 12 10 1 1 12 9 1 7 1 1 12 10 1 12 10 1 12 9 1 12 9 6 0 10 1 12 10 4 1 1 12 10 1 100 1 1 12 10 1 1 12 10 1 7 1 12 10 4 4 1 100 1 12 9 1 12 9 1 100 1 12 10 1 1 12 9 1 1 1 1 1 1 12 10 1 1 12 10 1 12 10 1 1 4 1 1 12 9 1 100 1 12 10 1 12 10 1 100 1 1 12 9 1 12 9 1 100 1 1 12 10 1 12 9 1 1 12 10 4 1 12 10 1 12 10 6 0 1 12 10 1 12 9 10 1 8 4 1 12 10 1 1 1 1 1 1 1 1 12 10 1 1 12 10 1 12 10 1 12 9 4 4 1 1 1 12 10 1 8 1 7 1 1 12 10 1 1 12 10 1 1 1 1 1 12 10 1 1 12 10 1 10 1 1 1 12 10 1 1 1 1 1 1
+ciInstanceKlass net/minecraft/entity/passive/EntityBat 1 1 336 1 7 1 7 1 1 1 1 1 1 8 1 1 12 10 4 4 1 1 12 10 1 1 12 10 1 1 1 1 1 1 12 10 1 1 12 9 1 7 1 12 10 1 7 1 1 12 10 1 1 4 1 12 10 4 1 1 1 1 12 10 1 1 12 9 1 7 1 1 12 10 1 8 1 100 1 1 8 1 1 8 1 1 1 1 1 1 1 12 10 1 7 1 1 12 9 1 1 12 10 6 0 1 7 1 1 12 11 1 1 12 10 1 1 12 10 1 12 10 1 1 1 1 1 1 12 10 1 1 12 9 1 12 9 1 12 9 1 12 9 1 7 1 1 12 10 1 1 12 9 6 0 1 12 10 1 12 9 1 12 9 1 12 9 1 7 1 1 12 10 1 7 1 12 10 1 100 1 1 12 10 1 12 9 6 0 1 1 12 10 12 9 1 7 1 12 9 12 9 12 9 1 1 12 10 1 1 12 10 4 1 12 10 6 0 6 0 1 7 1 1 12 10 6 0 6 0 1 1 12 10 6 0 6 0 4 1 12 9 1 1 12 10 1 12 9 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 12 10 1 12 9 12 10 1 1 1 1 1 12 10 1 8 1 7 1 1 12 10 1 1 1 12 10 1 1 12 10 1 1 1 1 12 9 1 7 1 12 9 1 1 12 10 1 1 12 10 1 7 1 12 10 1 12 10 12 10 1 1 1 1 1 1 1 1 1 1 1 1
+ciInstanceKlass net/minecraft/entity/passive/EntitySheep 1 1 477 1 7 1 7 1 100 1 1 7 1 1 1 1 1 1 1 1 1 1 1 8 1 1 12 10 1 7 1 12 10 1 12 10 12 9 1 7 1 12 10 12 9 4 4 1 1 12 10 1 1 12 10 1 7 1 1 12 10 1 1 12 9 1 7 10 1 7 1 1 12 10 1 7 6 0 1 12 10 1 7 1 12 10 1 7 6 0 1 7 1 1 12 9 1 12 10 1 7 10 1 7 10 1 7 1 7 4 1 12 10 1 7 10 1 7 1 12 9 1 12 10 1 1 12 10 1 1 1 1 1 1 1 1 1 1 12 10 12 9 12 10 1 1 12 9 1 7 1 1 12 9 1 7 1 1 12 10 12 10 1 12 10 1 7 1 1 12 9 1 1 12 10 6 0 1 7 1 1 12 11 1 12 9 6 0 1 12 10 1 1 12 9 1 7 1 12 10 1 7 1 1 12 10 1 1 1 12 10 1 100 1 1 12 9 1 100 1 1 12 10 1 12 10 1 1 12 10 1 1 1 1 1 1 1 1 1 12 10 1 1 1 1 12 10 1 1 1 1 4 1 1 1 4 4 4 4 1 100 1 12 10 1 12 9 4 1 1 1 1 12 10 1 8 1 7 1 1 12 10 1 8 1 1 12 10 1 1 1 12 10 1 1 12 10 1 12 10 1 1 12 10 1 1 12 10 1 1 1 1 8 1 1 1 1 1 8 4 1 1 12 10 1 1 1 1 1 1 12 10 1 1 12 10 1 12 10 1 1 1 1 1 1 100 1 1 12 10 1 1 1 1 1 10 1 1 12 10 1 1 1 1 1 1 12 10 1 12 10 1 1 12 10 1 12 9 12 10 1 1 1 1 12 10 1 1 12 10 1 12 10 1 100 1 1 12 10 1 1 12 10 1 12 10 1 12 10 1 12 10 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 12 10 9 1 12 10 1 1 12 10 1 8 1 1 1 1 1 12 10 1 1 7 4 4 4 4 4 4 4 4 4 4 4 4 12 9 1 1 1 1 1 1 1 1 1 1 1
+staticfield net/minecraft/entity/passive/EntitySheep fleeceColorTable [[F 16 [[F
+ciInstanceKlass net/minecraft/entity/passive/EntityChicken 1 1 342 1 7 1 7 1 1 1 1 1 1 1 1 1 1 1 1 1 1 8 1 1 12 10 12 9 4 4 1 1 12 10 1 1 12 9 1 7 1 1 12 10 12 9 1 1 12 9 1 7 1 12 10 1 7 1 1 12 10 1 7 6 0 1 12 10 1 7 1 12 10 1 7 1 7 1 1 12 9 1 12 10 1 7 6 0 10 1 7 10 1 7 1 7 4 1 12 10 1 7 10 1 1 1 1 1 1 1 1 12 10 1 7 1 1 12 9 1 1 12 10 6 0 1 7 1 1 12 11 1 12 9 6 0 1 12 10 12 9 12 9 12 9 12 9 1 12 9 6 0 6 0 1 1 12 9 6 0 1 12 9 1 7 1 12 9 1 12 10 1 12 10 1 8 1 1 12 10 4 1 1 12 10 1 12 9 1 1 12 10 1 1 1 1 1 1 8 1 1 8 1 1 1 1 8 4 1 1 1 1 1 1 1 1 12 9 1 1 1 12 10 1 12 9 1 12 9 1 1 1 1 1 1 10 1 1 1 1 1 100 1 12 10 1 100 1 1 1 1 12 10 1 8 1 7 1 1 12 10 12 9 1 1 1 1 12 10 1 1 1 12 10 1 1 12 10 1 1 1 1 12 9 1 12 10 1 12 9 4 4 1 100 1 1 12 10 1 12 10 4 1 12 9 1 12 9 1 12 9 4 1 100 1 1 12 10 1 12 9 1 1 12 10 1 100 9 1 1 1 1 1 1 1 1 12 10 1 1 1 1 1 1
+ciInstanceKlass net/minecraftforge/common/MinecraftForge 1 1 318 1 7 1 7 1 1 100 1 100 1 1 1 1 1 1 1 1 8 1 1 1 1 12 10 1 1 1 1 1 1 12 9 12 10 1 100 1 1 12 11 1 1 1 1 1 1 7 1 8 1 7 1 1 12 10 1 7 1 1 12 10 1 7 1 1 12 10 1 7 1 8 1 8 1 12 10 1 12 10 1 7 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 7 1 1 12 10 1 1 12 10 1 7 1 1 12 9 1 7 1 1 12 10 1 7 1 7 1 1 12 10 1 1 12 10 1 7 1 1 12 10 1 7 1 12 10 1 1 1 1 1 1 1 1 1 1 7 10 1 8 1 1 12 10 1 12 10 1 1 7 10 12 9 12 9 12 9 1 7 10 12 9 1 1 1 1 1 1 1
+staticfield net/minecraftforge/common/MinecraftForge EVENT_BUS Lcpw/mods/fml/common/eventhandler/EventBus; cpw/mods/fml/common/eventhandler/EventBus
+staticfield net/minecraftforge/common/MinecraftForge TERRAIN_GEN_BUS Lcpw/mods/fml/common/eventhandler/EventBus; cpw/mods/fml/common/eventhandler/EventBus
+staticfield net/minecraftforge/common/MinecraftForge ORE_GEN_BUS Lcpw/mods/fml/common/eventhandler/EventBus; cpw/mods/fml/common/eventhandler/EventBus
+staticfield net/minecraftforge/common/MinecraftForge INTERNAL_HANDLER Lnet/minecraftforge/common/ForgeInternalHandler; net/minecraftforge/common/ForgeInternalHandler
+ciInstanceKlass cpw/mods/fml/common/eventhandler/IEventExceptionHandler 1 0 9 1 100 1 100 1 1 1 1
+ciInstanceKlass cpw/mods/fml/common/eventhandler/EventBus 1 1 368 1 7 1 7 1 100 1 1 7 1 7 1 1 1 1 1 1 1 1 1 1 1 1 1 1 12 10 1 7 10 12 9 1 7 10 1 1 12 10 1 12 10 1 1 12 10 12 9 12 9 12 9 1 7 1 1 12 10 12 9 1 1 1 1 10 1 8 1 100 1 1 12 10 1 1 1 1 7 1 1 12 10 1 7 1 1 12 10 1 1 12 10 1 100 1 1 12 9 1 100 10 1 8 1 100 1 1 12 10 1 1 12 10 1 100 1 7 1 1 12 11 1 1 12 10 1 1 12 10 1 1 12 10 1 1 12 10 1 7 1 1 12 10 1 7 1 100 1 1 12 11 1 7 1 7 1 1 12 11 1 1 12 11 1 1 12 10 1 1 12 10 1 1 12 10 1 7 1 1 12 10 1 100 1 100 10 1 8 1 1 12 10 1 12 10 1 8 1 12 10 1 8 1 12 10 1 12 10 1 100 1 7 1 12 10 1 8 1 12 10 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 12 10 1 7 1 1 12 10 1 1 12 10 1 7 1 12 10 1 1 12 10 1 1 12 10 1 12 10 1 1 12 10 1 7 10 10 1 12 10 1 12 10 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 12 10 10 1 7 1 1 12 10 1 1 1 1 1 1 1 12 10 1 100 1 1 12 11 1 1 12 11 1 100 1 1 12 10 1 12 10 1 12 10 1 1 1 1 8 1 8 1 100 1 1 12 10 1 12 10 1 8 1 1 1 1 1 1 1 1 1 1 1 1 1
+ciInstanceKlass cpw/mods/fml/common/eventhandler/IEventListener 1 0 9 1 100 1 100 1 1 1 1
+ciInstanceKlass cpw/mods/fml/common/eventhandler/ListenerList 1 1 136 1 7 1 7 1 1 100 1 7 1 1 7 1 7 1 1 1 1 1 1 1 1 1 1 1 1 1 12 10 1 12 10 12 9 12 9 1 12 10 12 9 1 1 12 10 1 1 12 10 12 9 1 1 12 10 1 1 12 10 1 1 12 10 1 1 1 1 1 1 12 10 1 7 1 1 12 11 1 1 12 11 1 1 100 1 1 12 10 1 12 10 1 12 10 1 1 1 1 12 10 1 1 1 1 12 10 1 1 1 12 10 1 1 1 1 1 1 1 12 10 1 12 10 1 1 12 10 1 1 1 1 1 1 1 1
+ciInstanceKlass cpw/mods/fml/common/eventhandler/EventPriority 1 1 71 1 7 1 1 7 1 100 1 1 1 1 1 1 1 1 1 1 1 12 9 7 1 1 12 10 1 1 1 12 10 1 1 1 1 12 10 1 1 1 1 7 1 1 12 10 1 1 1 1 8 10 12 9 8 12 9 8 12 9 8 12 9 8 12 9 1 1 1 1 1
+staticfield cpw/mods/fml/common/eventhandler/EventPriority HIGHEST Lcpw/mods/fml/common/eventhandler/EventPriority; cpw/mods/fml/common/eventhandler/EventPriority
+staticfield cpw/mods/fml/common/eventhandler/EventPriority HIGH Lcpw/mods/fml/common/eventhandler/EventPriority; cpw/mods/fml/common/eventhandler/EventPriority
+staticfield cpw/mods/fml/common/eventhandler/EventPriority NORMAL Lcpw/mods/fml/common/eventhandler/EventPriority; cpw/mods/fml/common/eventhandler/EventPriority
+staticfield cpw/mods/fml/common/eventhandler/EventPriority LOW Lcpw/mods/fml/common/eventhandler/EventPriority; cpw/mods/fml/common/eventhandler/EventPriority
+staticfield cpw/mods/fml/common/eventhandler/EventPriority LOWEST Lcpw/mods/fml/common/eventhandler/EventPriority; cpw/mods/fml/common/eventhandler/EventPriority
+staticfield cpw/mods/fml/common/eventhandler/EventPriority $VALUES [Lcpw/mods/fml/common/eventhandler/EventPriority; 5 [Lcpw/mods/fml/common/eventhandler/EventPriority;
+ciInstanceKlass cpw/mods/fml/common/eventhandler/Event$Result 1 1 55 1 7 1 1 7 1 1 100 1 1 1 1 1 1 1 1 1 12 9 100 1 1 12 10 1 1 1 12 10 1 1 1 1 12 10 1 1 1 8 10 12 9 8 12 9 8 12 9 1 1 1 1 1 1
+staticfield cpw/mods/fml/common/eventhandler/Event$Result DENY Lcpw/mods/fml/common/eventhandler/Event$Result; cpw/mods/fml/common/eventhandler/Event$Result
+staticfield cpw/mods/fml/common/eventhandler/Event$Result DEFAULT Lcpw/mods/fml/common/eventhandler/Event$Result; cpw/mods/fml/common/eventhandler/Event$Result
+staticfield cpw/mods/fml/common/eventhandler/Event$Result ALLOW Lcpw/mods/fml/common/eventhandler/Event$Result; cpw/mods/fml/common/eventhandler/Event$Result
+staticfield cpw/mods/fml/common/eventhandler/Event$Result $VALUES [Lcpw/mods/fml/common/eventhandler/Event$Result; 3 [Lcpw/mods/fml/common/eventhandler/Event$Result;
+ciInstanceKlass java/util/ArrayList$1 0 0 9 1 1 1 1 1 100 100 100
+ciInstanceKlass java/lang/InternalError 0 0 24 1 1 1 1 1 1 1 1 1 1 5 0 100 100 1 12 12 12 12 10 10 10 10
+ciInstanceKlass cpw/mods/fml/common/gameevent/TickEvent$RenderTickEvent 1 1 61 1 7 1 7 1 1 100 1 1 1 7 1 1 1 1 1 1 1 1 1 12 9 1 7 1 1 12 9 1 12 10 12 9 1 1 1 1 1 12 10 1 12 10 12 9 1 7 1 1 12 10 1 12 10 1 1 1 1 1 1
+ciInstanceKlass net/minecraft/crash/CrashReport 1 1 486 1 7 1 7 1 1 7 1 7 1 7 1 7 1 7 1 7 1 7 1 7 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 8 1 1 1 12 10 1 7 1 8 1 12 10 12 9 1 7 10 12 9 12 9 1 7 12 9 12 9 12 9 1 12 10 1 1 1 1 1 8 1 12 10 1 1 12 10 1 8 10 1 8 10 1 8 10 1 8 10 1 8 10 1 8 10 1 8 10 1 7 1 1 12 10 1 1 12 10 1 1 1 1 1 1 1 7 1 1 12 11 1 1 12 11 1 1 12 10 1 100 1 1 12 10 100 1 8 1 7 1 1 12 10 1 8 1 8 1 8 1 12 10 1 8 1 1 12 11 1 7 1 1 12 11 1 1 12 11 1 12 10 1 8 1 1 1 1 1 1 1 1 1 1 1 1 7 1 12 10 1 100 1 12 10 1 7 1 7 1 100 10 1 100 10 1 12 10 1 1 12 10 10 10 1 12 10 1 1 12 10 10 1 7 1 12 10 1 7 1 1 1 1 1 1 1 1 10 1 8 1 8 1 12 10 1 8 1 7 10 1 7 10 1 1 12 10 1 8 12 10 1 8 1 8 12 10 10 1 1 1 1 1 1 1 12 9 1 1 1 100 1 12 10 1 12 10 1 100 1 12 10 12 10 1 12 10 1 12 10 12 9 1 8 1 12 10 1 100 1 12 11 1 1 1 1 1 1 1 1 1 1 12 10 1 1 1 12 10 1 7 1 1 12 9 1 8 1 12 10 1 8 1 8 1 100 1 12 10 1 1 12 10 1 12 11 1 1 12 10 1 1 12 10 1 1 12 11 1 1 1 1 1 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 1 12 10 1 100 1 8 1 1 1 1 7 1 1 12 10 12 10 1 1 1 1 1 7 1 1 12 10 1 1 1 1 1 1 1 1
+staticfield net/minecraft/crash/CrashReport logger Lorg/apache/logging/log4j/Logger; org/apache/logging/log4j/core/Logger
+ciInstanceKlass net/minecraft/crash/CrashReportCategory 1 1 294 1 7 1 7 1 1 7 1 1 100 1 100 1 100 1 1 1 1 1 1 1 1 1 1 8 1 1 1 12 10 1 7 10 12 9 1 7 12 9 12 9 12 9 1 1 1 1 1 1 1 1 1 1 1 8 1 100 1 1 12 10 1 100 1 1 12 10 1 1 12 10 1 100 1 1 12 10 1 1 1 1 1 100 1 7 10 1 8 1 100 1 12 10 1 1 12 10 1 8 1 8 1 8 1 8 1 8 1 1 12 10 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 7 1 1 12 11 1 1 12 10 1 1 12 10 1 1 1 12 10 1 7 1 1 12 11 1 1 1 1 1 1 1 1 100 1 1 12 10 1 1 12 10 100 1 100 1 1 12 10 1 1 1 1 1 1 1 12 10 1 12 10 1 12 10 1 12 10 1 12 10 10 1 1 1 1 1 1 1 1 1 1 8 1 8 1 8 1 1 12 11 1 7 1 12 11 1 12 11 1 8 1 12 10 1 8 1 12 10 1 8 1 8 10 1 1 1 1 1 1 1 1 1 1 1 100 1 1 12 10 1 8 1 12 10 12 10 1 8 12 10 1 8 1 12 10 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
+ciInstanceKlass net/minecraftforge/event/entity/EntityJoinWorldEvent 1 1 47 1 7 1 7 1 1 1 1 1 1 1 1 1 12 10 12 9 1 1 1 1 1 1 1 12 10 1 12 10 12 9 1 7 1 1 12 10 1 12 10 1 1 1 1 1 1
+ciInstanceKlass cpw/mods/fml/common/eventhandler/ASMEventHandler 1 1 334 1 7 1 7 1 7 1 1 100 1 7 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 12 10 12 9 1 1 12 10 1 7 1 1 12 10 1 7 1 1 12 10 12 9 1 7 1 7 1 1 12 10 12 9 1 7 10 1 8 1 1 12 10 1 12 10 1 8 1 1 12 10 1 7 1 1 12 10 1 12 10 12 9 1 1 1 1 1 1 1 1 12 9 1 8 1 100 11 1 100 1 1 12 10 1 8 1 7 1 1 12 10 1 12 10 1 12 11 12 11 1 1 12 10 1 1 1 1 1 12 11 12 9 1 7 1 1 12 10 1 1 12 10 1 7 1 12 10 1 12 10 1 7 1 1 12 10 1 1 12 10 1 1 12 10 1 1 12 10 8 12 9 1 1 12 10 1 8 1 12 10 1 8 8 1 1 12 10 1 7 1 12 10 8 1 8 1 1 12 10 1 7 1 12 10 1 1 12 10 8 1 1 12 10 1 1 12 10 1 12 10 1 12 10 10 8 12 9 1 1 12 10 10 12 9 1 1 12 10 1 1 12 10 1 12 10 1 1 1 1 1 1 1 1 1 1 1 1 1 8 1 12 10 10 12 9 1 7 1 1 12 10 1 12 10 1 1 12 10 1 1 1 12 10 1 12 10 1 7 1 1 12 10 1 8 1 8 1 7 1 1 12 10 1 7 1 1 12 10 1 1 1 1 1 1 1 1 1 1
+staticfield cpw/mods/fml/common/eventhandler/ASMEventHandler HANDLER_DESC Ljava/lang/String; "cpw/mods/fml/common/eventhandler/IEventListener"
+staticfield cpw/mods/fml/common/eventhandler/ASMEventHandler HANDLER_FUNC_DESC Ljava/lang/String; "(Lcpw/mods/fml/common/eventhandler/Event;)V"
+staticfield cpw/mods/fml/common/eventhandler/ASMEventHandler LOADER Lcpw/mods/fml/common/eventhandler/ASMEventHandler$ASMClassLoader; cpw/mods/fml/common/eventhandler/ASMEventHandler$ASMClassLoader
+staticfield cpw/mods/fml/common/eventhandler/ASMEventHandler cache Ljava/util/HashMap; java/util/HashMap
+staticfield cpw/mods/fml/common/eventhandler/ASMEventHandler GETCONTEXT Z 0
+ciInstanceKlass net/minecraftforge/event/world/WorldEvent$PotentialSpawns 1 1 82 1 7 1 7 1 1 1 100 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 12 10 12 9 12 9 12 9 12 9 12 9 1 100 1 100 1 100 1 100 1 12 10 1 1 1 1 1 1 1 10 1 12 10 12 9 1 7 1 1 12 10 1 12 10 1 1 1 1 1 1 1 1 1 1
+ciInstanceKlass net/minecraftforge/client/event/GuiScreenEvent$DrawScreenEvent$Pre 1 1 52 1 7 1 7 1 1 1 100 1 1 1 1 1 1 12 10 1 1 1 1 1 1 1 1 1 1 1 1 12 10 1 12 10 12 9 1 7 1 1 12 10 1 12 10 1 1 1 1 1 1 1
+ciInstanceKlass net/minecraftforge/client/event/GuiScreenEvent$DrawScreenEvent$Post 1 1 48 1 7 1 7 1 1 100 1 1 1 1 1 1 12 10 1 1 1 1 1 1 1 1 1 1 12 10 1 12 10 12 9 1 7 1 1 12 10 1 12 10 1 1 1 1 1 1
+instanceKlass net/minecraft/world/biome/BiomeGenMesa
+instanceKlass net/minecraft/world/biome/BiomeGenSavanna
+instanceKlass net/minecraft/world/biome/BiomeGenStoneBeach
+instanceKlass net/minecraft/world/biome/BiomeGenJungle
+instanceKlass net/minecraft/world/biome/BiomeGenBeach
+instanceKlass net/minecraft/world/biome/BiomeGenMushroomIsland
+instanceKlass net/minecraft/world/biome/BiomeGenSnow
+instanceKlass net/minecraft/world/biome/BiomeGenEnd
+instanceKlass net/minecraft/world/biome/BiomeGenHell
+instanceKlass net/minecraft/world/biome/BiomeGenRiver
+instanceKlass net/minecraft/world/biome/BiomeGenSwamp
+instanceKlass net/minecraft/world/biome/BiomeGenTaiga
+instanceKlass net/minecraft/world/biome/BiomeGenForest
+instanceKlass net/minecraft/world/biome/BiomeGenHills
+instanceKlass net/minecraft/world/biome/BiomeGenDesert
+instanceKlass net/minecraft/world/biome/BiomeGenPlains
+instanceKlass net/minecraft/world/biome/BiomeGenOcean
+instanceKlass net/minecraft/world/biome/BiomeGenMutated
+ciInstanceKlass net/minecraft/world/biome/BiomeGenBase 1 1 1090 1 7 1 7 1 1 7 1 1 7 1 1 7 1 1 7 1 1 7 1 100 1 1 7 1 1 7 1 1 100 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 8 1 1 1 1 1 12 10 1 1 1 12 10 1 7 10 12 9 1 7 1 1 12 9 12 9 12 9 1 12 9 12 9 3 12 9 12 9 12 9 9 1 12 9 12 9 4 12 9 12 9 3 12 9 12 9 12 9 12 9 12 9 12 9 1 7 1 12 10 12 9 1 7 10 12 9 1 7 10 12 9 12 9 12 9 1 1 12 10 12 9 1 7 1 12 10 1 7 1 1 12 11 1 7 1 7 1 7 1 7 1 7 1 7 1 7 1 7 1 7 1 7 1 7 1 7 1 12 10 1 1 7 10 1 1 12 10 1 1 4 4 1 100 1 8 1 12 10 1 1 1 1 1 1 1 1 1 1 7 1 1 12 10 1 100 1 1 1 1 1 100 1 1 12 9 1 12 10 1 1 1 1 100 1 1 12 9 1 12 9 1 100 1 1 1 1 1 12 9 1 1 12 9 1 1 1 1 1 1 1 12 10 1 1 12 9 1 12 9 3 1 1 1 1 1 1 1 1 4 4 4 4 1 7 1 1 12 10 1 1 12 10 1 1 1 1 7 1 1 12 9 1 12 9 1 12 9 1 12 9 1 1 1 1 12 10 1 1 4 1 1 1 4 1 1 1 12 9 6 0 1 7 1 1 12 10 4 4 4 1 1 1 1 1 1 1 1 12 10 1 1 1 1 1 1 1 12 10 1 7 1 1 12 10 12 10 1 7 1 1 12 10 1 12 10 1 1 1 1 1 1 1 1 7 1 12 10 1 12 10 1 1 1 1 1 1 12 10 1 1 1 1 1 1 1 1 1 6 0 1 1 12 10 6 0 1 100 100 100 1 100 1 12 9 1 1 12 10 1 100 1 1 12 9 1 12 9 4 1 12 9 1 12 9 1 12 9 1 1 12 9 1 100 1 1 12 10 1 12 9 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 7 1 12 10 1 1 1 12 10 1 1 12 10 1 1 1 6 0 1 1 12 9 1 12 9 1 12 9 1 1 1 12 9 1 100 10 1 8 1 1 12 10 1 12 10 1 8 1 1 12 10 1 100 1 12 11 12 9 1 1 7 1 12 10 1 1 1 12 10 1 7 1 1 12 9 1 7 1 1 12 10 1 12 9 1 1 10 9 1 10 9 1 1 1 12 9 1 12 10 1 12 9 1 1 1 1 1 1 1 12 10 12 10 1 1 12 10 12 9 1 1 12 10 12 9 1 1 12 10 1 1 1 1 1 1 1 1 1 1 1 7 1 1 12 10 1 12 10 4 12 9 12 9 4 12 9 4 12 9 12 9 4 4 12 9 4 4 12 9 12 9 12 9 4 12 9 12 9 4 12 9 1 7 1 1 12 10 12 9 1 7 12 10 12 10 1 8 12 10 12 10 1 7 10 3 10 1 8 12 9 1 7 10 3 10 1 8 12 10 12 10 12 9 1 7 10 3 10 1 8 12 9 1 7 1 12 10 3 10 1 8 12 9 1 7 10 3 10 1 8 3 12 10 4 12 9 1 7 10 3 10 1 8 3 4 12 9 1 7 10 10 1 8 12 9 1 7 10 3 10 1 8 12 9 1 7 10 3 10 1 8 12 9 3 1 8 12 10 12 9 3 1 8 12 9 1 7 10 10 1 8 12 9 3 1 8 12 9 1 7 10 3 10 1 8 12 9 3 1 8 12 9 1 7 10 3 10 1 8 4 12 9 3 1 8 12 9 3 1 8 12 9 3 1 8 12 9 3 1 8 1 1 12 10 12 9 1 7 10 3 10 1 8 4 12 9 3 1 8 12 9 3 1 8 12 9 1 8 12 9 1 7 10 3 10 1 8 12 9 3 1 8 12 9 1 8 10 3 10 12 9 1 8 3 12 9 3 1 8 12 9 3 1 8 12 10 12 9 3 1 8 12 9 3 1 8 12 9 3 1 8 12 9 3 1 8 12 9 1 7 10 3 10 1 8 4 12 9 3 1 8 12 9 1 7 1 12 10 3 10 1 8 12 9 3 1 8 12 9 3 1 8 12 9 12 10 100 1 7 11 1 12 11 5 0 1 12 10 1 12 10 5 0 12 9 1 7 10 12 9 1 1 1 1 1 1 1 1 1 1 1 1 1
+staticfield net/minecraft/world/biome/BiomeGenBase logger Lorg/apache/logging/log4j/Logger; org/apache/logging/log4j/core/Logger
+staticfield net/minecraft/world/biome/BiomeGenBase height_Default Lnet/minecraft/world/biome/BiomeGenBase$Height; net/minecraft/world/biome/BiomeGenBase$Height
+staticfield net/minecraft/world/biome/BiomeGenBase height_ShallowWaters Lnet/minecraft/world/biome/BiomeGenBase$Height; net/minecraft/world/biome/BiomeGenBase$Height
+staticfield net/minecraft/world/biome/BiomeGenBase height_Oceans Lnet/minecraft/world/biome/BiomeGenBase$Height; net/minecraft/world/biome/BiomeGenBase$Height
+staticfield net/minecraft/world/biome/BiomeGenBase height_DeepOceans Lnet/minecraft/world/biome/BiomeGenBase$Height; net/minecraft/world/biome/BiomeGenBase$Height
+staticfield net/minecraft/world/biome/BiomeGenBase height_LowPlains Lnet/minecraft/world/biome/BiomeGenBase$Height; net/minecraft/world/biome/BiomeGenBase$Height
+staticfield net/minecraft/world/biome/BiomeGenBase height_MidPlains Lnet/minecraft/world/biome/BiomeGenBase$Height; net/minecraft/world/biome/BiomeGenBase$Height
+staticfield net/minecraft/world/biome/BiomeGenBase height_LowHills Lnet/minecraft/world/biome/BiomeGenBase$Height; net/minecraft/world/biome/BiomeGenBase$Height
+staticfield net/minecraft/world/biome/BiomeGenBase height_HighPlateaus Lnet/minecraft/world/biome/BiomeGenBase$Height; net/minecraft/world/biome/BiomeGenBase$Height
+staticfield net/minecraft/world/biome/BiomeGenBase height_MidHills Lnet/minecraft/world/biome/BiomeGenBase$Height; net/minecraft/world/biome/BiomeGenBase$Height
+staticfield net/minecraft/world/biome/BiomeGenBase height_Shores Lnet/minecraft/world/biome/BiomeGenBase$Height; net/minecraft/world/biome/BiomeGenBase$Height
+staticfield net/minecraft/world/biome/BiomeGenBase height_RockyWaters Lnet/minecraft/world/biome/BiomeGenBase$Height; net/minecraft/world/biome/BiomeGenBase$Height
+staticfield net/minecraft/world/biome/BiomeGenBase height_LowIslands Lnet/minecraft/world/biome/BiomeGenBase$Height; net/minecraft/world/biome/BiomeGenBase$Height
+staticfield net/minecraft/world/biome/BiomeGenBase height_PartiallySubmerged Lnet/minecraft/world/biome/BiomeGenBase$Height; net/minecraft/world/biome/BiomeGenBase$Height
+staticfield net/minecraft/world/biome/BiomeGenBase biomeList [Lnet/minecraft/world/biome/BiomeGenBase; 256 [Lnet/minecraft/world/biome/BiomeGenBase;
+staticfield net/minecraft/world/biome/BiomeGenBase explorationBiomesList Ljava/util/Set; java/util/HashSet
+staticfield net/minecraft/world/biome/BiomeGenBase ocean Lnet/minecraft/world/biome/BiomeGenBase; net/minecraft/world/biome/BiomeGenOcean
+staticfield net/minecraft/world/biome/BiomeGenBase plains Lnet/minecraft/world/biome/BiomeGenBase; net/minecraft/world/biome/BiomeGenPlains
+staticfield net/minecraft/world/biome/BiomeGenBase desert Lnet/minecraft/world/biome/BiomeGenBase; net/minecraft/world/biome/BiomeGenDesert
+staticfield net/minecraft/world/biome/BiomeGenBase extremeHills Lnet/minecraft/world/biome/BiomeGenBase; net/minecraft/world/biome/BiomeGenHills
+staticfield net/minecraft/world/biome/BiomeGenBase forest Lnet/minecraft/world/biome/BiomeGenBase; net/minecraft/world/biome/BiomeGenForest
+staticfield net/minecraft/world/biome/BiomeGenBase taiga Lnet/minecraft/world/biome/BiomeGenBase; net/minecraft/world/biome/BiomeGenTaiga
+staticfield net/minecraft/world/biome/BiomeGenBase swampland Lnet/minecraft/world/biome/BiomeGenBase; net/minecraft/world/biome/BiomeGenSwamp
+staticfield net/minecraft/world/biome/BiomeGenBase river Lnet/minecraft/world/biome/BiomeGenBase; net/minecraft/world/biome/BiomeGenRiver
+staticfield net/minecraft/world/biome/BiomeGenBase hell Lnet/minecraft/world/biome/BiomeGenBase; net/minecraft/world/biome/BiomeGenHell
+staticfield net/minecraft/world/biome/BiomeGenBase sky Lnet/minecraft/world/biome/BiomeGenBase; net/minecraft/world/biome/BiomeGenEnd
+staticfield net/minecraft/world/biome/BiomeGenBase frozenOcean Lnet/minecraft/world/biome/BiomeGenBase; net/minecraft/world/biome/BiomeGenOcean
+staticfield net/minecraft/world/biome/BiomeGenBase frozenRiver Lnet/minecraft/world/biome/BiomeGenBase; net/minecraft/world/biome/BiomeGenRiver
+staticfield net/minecraft/world/biome/BiomeGenBase icePlains Lnet/minecraft/world/biome/BiomeGenBase; net/minecraft/world/biome/BiomeGenSnow
+staticfield net/minecraft/world/biome/BiomeGenBase iceMountains Lnet/minecraft/world/biome/BiomeGenBase; net/minecraft/world/biome/BiomeGenSnow
+staticfield net/minecraft/world/biome/BiomeGenBase mushroomIsland Lnet/minecraft/world/biome/BiomeGenBase; net/minecraft/world/biome/BiomeGenMushroomIsland
+staticfield net/minecraft/world/biome/BiomeGenBase mushroomIslandShore Lnet/minecraft/world/biome/BiomeGenBase; net/minecraft/world/biome/BiomeGenMushroomIsland
+staticfield net/minecraft/world/biome/BiomeGenBase beach Lnet/minecraft/world/biome/BiomeGenBase; net/minecraft/world/biome/BiomeGenBeach
+staticfield net/minecraft/world/biome/BiomeGenBase desertHills Lnet/minecraft/world/biome/BiomeGenBase; net/minecraft/world/biome/BiomeGenDesert
+staticfield net/minecraft/world/biome/BiomeGenBase forestHills Lnet/minecraft/world/biome/BiomeGenBase; net/minecraft/world/biome/BiomeGenForest
+staticfield net/minecraft/world/biome/BiomeGenBase taigaHills Lnet/minecraft/world/biome/BiomeGenBase; net/minecraft/world/biome/BiomeGenTaiga
+staticfield net/minecraft/world/biome/BiomeGenBase extremeHillsEdge Lnet/minecraft/world/biome/BiomeGenBase; net/minecraft/world/biome/BiomeGenHills
+staticfield net/minecraft/world/biome/BiomeGenBase jungle Lnet/minecraft/world/biome/BiomeGenBase; net/minecraft/world/biome/BiomeGenJungle
+staticfield net/minecraft/world/biome/BiomeGenBase jungleHills Lnet/minecraft/world/biome/BiomeGenBase; net/minecraft/world/biome/BiomeGenJungle
+staticfield net/minecraft/world/biome/BiomeGenBase jungleEdge Lnet/minecraft/world/biome/BiomeGenBase; net/minecraft/world/biome/BiomeGenJungle
+staticfield net/minecraft/world/biome/BiomeGenBase deepOcean Lnet/minecraft/world/biome/BiomeGenBase; net/minecraft/world/biome/BiomeGenOcean
+staticfield net/minecraft/world/biome/BiomeGenBase stoneBeach Lnet/minecraft/world/biome/BiomeGenBase; net/minecraft/world/biome/BiomeGenStoneBeach
+staticfield net/minecraft/world/biome/BiomeGenBase coldBeach Lnet/minecraft/world/biome/BiomeGenBase; net/minecraft/world/biome/BiomeGenBeach
+staticfield net/minecraft/world/biome/BiomeGenBase birchForest Lnet/minecraft/world/biome/BiomeGenBase; net/minecraft/world/biome/BiomeGenForest
+staticfield net/minecraft/world/biome/BiomeGenBase birchForestHills Lnet/minecraft/world/biome/BiomeGenBase; net/minecraft/world/biome/BiomeGenForest
+staticfield net/minecraft/world/biome/BiomeGenBase roofedForest Lnet/minecraft/world/biome/BiomeGenBase; net/minecraft/world/biome/BiomeGenForest
+staticfield net/minecraft/world/biome/BiomeGenBase coldTaiga Lnet/minecraft/world/biome/BiomeGenBase; net/minecraft/world/biome/BiomeGenTaiga
+staticfield net/minecraft/world/biome/BiomeGenBase coldTaigaHills Lnet/minecraft/world/biome/BiomeGenBase; net/minecraft/world/biome/BiomeGenTaiga
+staticfield net/minecraft/world/biome/BiomeGenBase megaTaiga Lnet/minecraft/world/biome/BiomeGenBase; net/minecraft/world/biome/BiomeGenTaiga
+staticfield net/minecraft/world/biome/BiomeGenBase megaTaigaHills Lnet/minecraft/world/biome/BiomeGenBase; net/minecraft/world/biome/BiomeGenTaiga
+staticfield net/minecraft/world/biome/BiomeGenBase extremeHillsPlus Lnet/minecraft/world/biome/BiomeGenBase; net/minecraft/world/biome/BiomeGenHills
+staticfield net/minecraft/world/biome/BiomeGenBase savanna Lnet/minecraft/world/biome/BiomeGenBase; net/minecraft/world/biome/BiomeGenSavanna
+staticfield net/minecraft/world/biome/BiomeGenBase savannaPlateau Lnet/minecraft/world/biome/BiomeGenBase; net/minecraft/world/biome/BiomeGenSavanna
+staticfield net/minecraft/world/biome/BiomeGenBase mesa Lnet/minecraft/world/biome/BiomeGenBase; net/minecraft/world/biome/BiomeGenMesa
+staticfield net/minecraft/world/biome/BiomeGenBase mesaPlateau_F Lnet/minecraft/world/biome/BiomeGenBase; net/minecraft/world/biome/BiomeGenMesa
+staticfield net/minecraft/world/biome/BiomeGenBase mesaPlateau Lnet/minecraft/world/biome/BiomeGenBase; net/minecraft/world/biome/BiomeGenMesa
+staticfield net/minecraft/world/biome/BiomeGenBase temperatureNoise Lnet/minecraft/world/gen/NoiseGeneratorPerlin; net/minecraft/world/gen/NoiseGeneratorPerlin
+staticfield net/minecraft/world/biome/BiomeGenBase plantNoise Lnet/minecraft/world/gen/NoiseGeneratorPerlin; net/minecraft/world/gen/NoiseGeneratorPerlin
+staticfield net/minecraft/world/biome/BiomeGenBase genTallFlowers Lnet/minecraft/world/gen/feature/WorldGenDoublePlant; net/minecraft/world/gen/feature/WorldGenDoublePlant
+instanceKlass net/minecraftforge/common/ForgeHooks$SeedEntry
+instanceKlass net/minecraftforge/common/BiomeManager$BiomeEntry
+instanceKlass net/minecraft/util/WeightedRandomChestContent
+instanceKlass net/minecraft/world/biome/BiomeGenBase$FlowerEntry
+instanceKlass net/minecraft/world/biome/BiomeGenBase$SpawnListEntry
+ciInstanceKlass net/minecraft/util/WeightedRandom$Item 1 1 31 1 7 1 7 1 1 100 1 1 1 1 1 1 8 1 1 1 12 10 12 9 1 1 1 1 1 1 1 1 1
+ciInstanceKlass net/minecraft/world/biome/BiomeGenBase$SpawnListEntry 1 1 74 1 7 1 7 1 1 100 1 1 100 1 1 1 1 1 1 1 1 1 8 1 1 1 12 10 12 9 12 9 12 9 1 1 1 1 1 1 1 1 1 100 1 12 10 1 100 1 12 10 1 1 12 10 1 8 1 12 10 1 8 1 8 1 12 9 12 10 1 1 1 1 1 1
+ciInstanceKlass net/minecraftforge/client/event/GuiScreenEvent$InitGuiEvent$Pre 1 1 49 1 7 1 7 1 1 1 100 1 1 1 1 1 1 12 10 1 1 1 1 1 1 1 1 1 12 10 1 12 10 12 9 1 7 1 1 12 10 1 12 10 1 1 1 1 1 1 1
+ciInstanceKlass net/minecraft/world/chunk/IChunkProvider 1 0 31 1 100 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
+ciInstanceKlass net/minecraft/world/gen/ChunkProviderServer 1 1 561 1 7 1 7 1 7 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 8 1 1 1 12 10 1 7 10 1 7 1 1 12 10 12 9 12 9 1 7 10 12 9 1 7 10 12 9 1 7 1 1 12 10 12 9 1 7 1 12 10 12 9 12 9 12 9 12 9 1 1 1 1 1 1 1 1 7 1 1 12 10 1 1 12 10 1 1 1 1 1 1 1 1 7 1 1 12 9 1 7 1 1 12 10 1 12 9 1 7 1 1 12 10 1 1 12 10 1 7 1 12 9 1 12 9 1 7 1 1 12 10 1 7 1 1 12 11 1 1 1 1 1 1 1 1 1 1 7 1 1 12 11 1 7 1 12 11 1 1 12 11 1 7 1 12 9 1 12 9 12 10 1 1 1 1 1 12 10 1 1 1 12 11 1 1 12 10 1 7 1 12 10 1 7 1 1 12 10 1 1 12 10 1 12 10 1 7 1 12 11 1 1 1 1 1 1 1 1 100 1 8 1 100 1 12 10 1 100 1 1 12 10 1 7 1 1 12 10 1 12 10 1 12 11 1 8 1 100 1 1 12 10 1 8 1 1 12 10 1 8 1 8 1 100 1 1 12 10 1 100 1 1 12 10 1 8 1 8 1 1 12 11 1 100 1 12 10 1 12 10 11 1 12 10 1 1 12 10 1 1 1 1 1 1 1 1 12 9 12 10 1 1 1 100 1 7 1 12 11 1 1 12 10 1 12 9 1 12 11 12 9 1 8 1 100 1 1 12 11 1 1 1 1 1 1 1 1 12 11 1 8 1 1 1 100 1 100 1 12 11 1 8 1 8 1 1 1 1 1 1 1 10 1 12 9 1 12 10 12 11 1 100 1 1 12 10 1 12 10 1 1 1 1 1 1 7 1 1 12 10 1 1 12 10 1 1 12 10 12 10 1 1 12 10 12 10 1 12 9 1 1 1 1 1 1 1 1 12 11 1 1 12 9 1 1 12 10 1 7 1 1 12 10 1 7 1 12 10 1 12 9 1 12 9 1 12 11 11 1 12 10 1 12 10 11 1 1 12 10 11 1 1 12 10 10 1 1 12 10 12 11 12 10 1 12 11 1 1 1 1 1 1 100 10 1 8 1 1 12 10 1 12 10 1 12 10 1 8 11 1 12 10 1 1 12 11 1 1 1 1 1 1 1 12 11 1 1 1 1 1 1 1 1 1 1 1 7 1 1 12 10 1 1 1 1 1 1 1
+staticfield net/minecraft/world/gen/ChunkProviderServer logger Lorg/apache/logging/log4j/Logger; org/apache/logging/log4j/core/Logger
+instanceKlass net/minecraft/world/chunk/EmptyChunk
+ciInstanceKlass net/minecraft/world/chunk/Chunk 1 1 974 1 7 1 7 1 1 100 1 7 1 100 1 1 7 1 100 1 1 7 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 8 1 1 1 12 10 1 7 12 9 12 9 12 9 12 9 1 7 10 12 9 12 9 1 7 12 9 12 9 12 9 12 9 12 9 1 7 1 7 10 1 7 1 1 12 10 1 12 10 1 1 1 1 1 1 1 12 10 1 1 12 9 1 7 1 12 9 1 100 1 7 1 1 12 10 1 7 1 1 12 9 1 12 10 1 1 12 10 1 1 1 1 1 1 1 1 1 1 1 1 100 1 7 12 9 1 1 12 10 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 12 10 1 1 1 1 1 1 1 1 12 10 3 12 9 1 1 12 10 1 1 12 10 12 9 1 1 1 12 10 1 1 12 10 1 1 1 1 12 9 1 1 1 1 1 1 12 9 8 1 100 1 1 12 10 1 1 12 10 12 10 1 12 10 1 12 10 1 12 10 1 1 10 1 12 10 1 1 1 1 7 1 1 12 9 1 1 12 10 1 1 1 1 1 1 12 10 1 1 1 1 1 1 1 12 10 1 1 1 1 1 1 100 1 12 10 1 8 1 100 1 1 12 10 1 8 1 1 12 10 1 8 1 12 10 1 100 1 1 12 10 1 100 1 12 10 1 1 1 1 1 1 1 1 1 1 1 12 10 1 1 1 1 1 12 10 100 1 12 9 1 1 12 10 1 1 12 10 1 1 12 10 1 7 1 1 12 10 1 12 10 1 1 12 10 10 12 10 12 10 1 1 12 10 1 12 9 12 10 1 1 12 10 1 12 10 1 12 10 1 12 9 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 12 10 1 12 9 1 12 10 1 12 10 1 1 1 1 1 1 1 12 10 1 1 1 1 1 1 1 12 9 1 1 1 1 1 1 12 9 1 7 1 1 12 9 6 0 1 7 1 1 12 10 1 12 9 12 9 1 100 10 1 8 1 1 12 10 1 12 10 1 8 1 12 10 1 8 1 8 1 8 1 1 12 10 1 100 1 12 11 1 100 1 12 10 1 12 9 1 7 1 1 12 9 1 12 9 1 12 9 1 12 10 1 7 1 1 12 10 1 12 9 1 12 9 1 1 12 11 1 1 1 1 1 12 10 1 1 12 11 1 1 1 1 1 1 7 12 10 1 7 1 1 12 11 1 1 12 10 12 11 1 1 12 10 1 1 12 10 1 1 1 1 1 1 1 1 1 12 9 1 12 9 1 12 9 1 12 10 12 9 12 10 1 1 1 12 10 1 12 11 1 12 10 1 12 10 1 1 12 11 1 1 1 1 1 1 1 1 1 1 1 12 11 1 1 12 10 1 1 12 11 1 7 1 12 11 1 1 12 11 12 10 1 1 12 10 1 12 10 1 1 1 1 7 11 1 12 10 1 12 10 10 1 1 1 1 7 1 12 9 1 12 9 1 12 9 1 12 10 1 12 11 1 12 11 1 1 12 9 1 1 12 10 1 7 1 1 12 11 1 1 12 10 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 12 10 1 7 1 1 12 10 1 1 1 1 1 1 1 1 1 12 10 12 9 5 0 1 1 1 1 7 1 12 10 3 3 5 0 3 1 12 10 1 1 1 1 12 9 1 7 1 12 11 1 1 12 11 1 1 12 11 1 1 1 1 1 1 1 12 10 1 12 10 1 1 1 1 12 10 12 9 12 9 1 12 10 1 1 1 1 1 7 12 10 1 12 10 1 1 1 1 1 1 1 12 10 1 1 12 10 1 1 12 10 1 7 1 1 12 10 1 1 12 10 1 7 1 12 9 1 12 10 1 12 10 1 12 10 1 12 10 1 12 10 1 12 10 12 10 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 7 1 1 12 10 1 7 1 12 9 1 1 12 10 1 1 12 9 1 1 1 1 1 1 1 1 1 1 1 10 1 12 10 1 12 10 1 1 12 10 1 12 10 1 12 10 1 1 12 10 1 1 1 1 1 1 1 1 7 1 1 12 10 1 1 1 1 1 1 1 1 1
+staticfield net/minecraft/world/chunk/Chunk logger Lorg/apache/logging/log4j/Logger; org/apache/logging/log4j/core/Logger
+ciInstanceKlass net/minecraft/world/chunk/EmptyChunk 1 1 188 1 100 1 7 1 1 1 1 8 1 1 12 10 1 1 1 1 1 1 1 1 1 1 12 9 1 12 9 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 7 1 1 12 9 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 12 9 1 100 1 1 12 10 3 3 5 0 3 1 12 10 1 1 1 1 1 1 1 1 1 1 1 1 1 1
+ciInstanceKlass net/minecraft/world/ChunkCoordIntPair 1 1 84 1 7 1 7 1 1 1 1 1 1 1 8 1 1 1 12 10 12 9 12 9 1 1 1 1 1 1 5 0 1 1 1 1 3 3 3 1 1 1 1 1 1 1 1 1 1 1 1 100 12 10 12 10 1 12 10 1 1 1 1 100 10 1 8 1 1 12 10 1 12 10 1 8 1 8 12 10 1 1 1 1 1 1
+ciInstanceKlass net/minecraft/util/ChunkCoordinates 1 1 94 1 7 1 7 1 100 1 1 1 1 1 1 1 1 8 1 1 12 10 1 1 1 12 9 12 9 12 9 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 12 10 1 1 1 1 100 10 1 8 1 1 12 10 1 12 10 1 8 1 8 1 12 10 12 10 1 12 10 1 1 1 1 1 1
+ciInstanceKlass net/minecraft/world/SpawnerAnimals 1 1 459 1 7 1 7 1 1 7 1 100 1 1 7 1 100 1 1 100 1 100 1 1 1 1 1 1 8 1 1 12 10 1 7 10 12 9 1 1 1 1 1 7 1 1 12 10 1 1 12 9 1 7 1 1 12 10 1 1 12 10 1 7 1 12 10 1 7 1 12 10 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 12 10 1 7 1 1 12 9 1 7 1 12 11 1 1 12 11 1 7 1 1 12 9 6 0 1 7 1 1 12 10 1 12 9 1 7 1 12 10 1 7 1 1 12 10 1 1 12 10 1 1 12 10 1 1 12 10 1 7 1 1 12 10 1 7 1 100 1 1 12 10 1 12 10 1 1 12 10 1 12 10 10 1 1 12 10 1 7 1 1 12 11 1 7 1 12 10 1 7 1 1 12 10 10 1 7 1 12 11 1 1 12 11 1 12 10 1 12 10 1 12 9 1 12 9 12 10 1 12 9 1 12 9 1 12 9 1 1 12 10 1 7 1 12 10 1 1 12 10 1 12 10 1 100 9 1 1 12 10 4 6 0 1 1 12 10 12 9 1 12 9 12 9 4 1 1 12 10 1 1 12 9 1 7 1 1 12 10 1 7 1 1 12 10 1 7 1 12 10 1 1 12 10 4 1 1 12 10 1 7 1 1 12 10 1 1 12 9 1 12 9 1 12 10 1 1 12 10 1 1 12 10 1 1 12 10 1 1 12 10 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 7 1 1 12 9 10 1 12 10 1 1 12 10 1 1 12 10 1 7 1 1 12 9 1 1 1 1 1 1 1 1 1 1 12 9 1 1 12 10 1 12 11 1 12 10 1 1 12 10 1 12 9 1 12 9 1 1 12 10 10 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
+ciInstanceKlass net/minecraft/util/WeightedRandom 1 1 105 1 7 1 100 1 1 7 1 1 1 1 8 1 1 12 10 1 1 1 1 1 7 1 1 12 11 1 7 1 1 12 11 1 1 12 11 1 1 12 9 1 1 1 1 1 1 1 1 1 100 10 1 7 1 1 12 10 1 1 12 10 1 1 1 1 1 1 1 1 12 10 12 10 1 1 1 1 100 1 1 1 1 1 12 10 1 1 1 1 1 1 12 10 12 10 1 1 1 1 1 1 1 1 1
+ciInstanceKlass net/minecraft/world/ChunkPosition 1 1 68 1 7 1 7 1 1 1 1 1 1 1 1 8 1 1 1 12 10 12 9 12 9 12 9 1 1 1 1 1 1 1 7 1 1 12 9 1 7 1 1 12 10 1 12 9 1 12 9 12 10 1 1 1 1 1 1 1 1 1 3 3 1 1 1 1 1 1
+ciInstanceKlass net/minecraft/util/AxisAlignedBB 1 1 212 1 7 1 7 1 1 1 1 1 1 1 1 1 1 1 8 1 1 1 1 12 10 1 1 1 1 1 1 1 12 10 12 9 12 9 12 9 12 9 12 9 12 9 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 12 10 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 12 10 1 12 10 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 12 9 1 12 9 1 12 9 1 1 1 1 6 0 1 1 1 1 1 1 1 1 1 1 12 10 1 12 10 1 12 10 1 12 10 1 12 10 1 12 10 1 1 12 10 1 100 1 12 10 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 10 1 8 1 1 12 10 1 12 10 1 8 1 8 1 8 12 10 1 1 1 1 1 1
+ciInstanceKlass net/minecraft/entity/EnumCreatureType 1 1 111 1 7 1 1 7 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 8 1 1 1 1 12 9 7 1 1 12 10 1 1 1 12 10 1 1 1 1 12 10 12 9 12 9 12 9 12 9 12 9 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 8 1 7 1 7 1 12 9 12 10 12 9 8 1 7 12 9 8 1 7 12 9 8 1 7 1 12 9 12 9 1 1 1 1 1 1 1
+staticfield net/minecraft/entity/EnumCreatureType monster Lnet/minecraft/entity/EnumCreatureType; net/minecraft/entity/EnumCreatureType
+staticfield net/minecraft/entity/EnumCreatureType creature Lnet/minecraft/entity/EnumCreatureType; net/minecraft/entity/EnumCreatureType
+staticfield net/minecraft/entity/EnumCreatureType ambient Lnet/minecraft/entity/EnumCreatureType; net/minecraft/entity/EnumCreatureType
+staticfield net/minecraft/entity/EnumCreatureType waterCreature Lnet/minecraft/entity/EnumCreatureType; net/minecraft/entity/EnumCreatureType
+staticfield net/minecraft/entity/EnumCreatureType $VALUES [Lnet/minecraft/entity/EnumCreatureType; 4 [Lnet/minecraft/entity/EnumCreatureType;
+ciInstanceKlass net/minecraftforge/event/ForgeEventFactory 1 1 499 1 100 1 100 1 1 100 1 100 1 1 100 1 1 100 1 100 1 1 100 1 1 100 1 100 1 1 7 1 100 1 1 7 1 100 1 1 7 1 1 7 1 100 1 1 100 1 100 1 1 7 1 1 100 1 1 7 1 100 1 1 100 1 100 1 1 100 1 100 1 1 7 1 1 100 1 1 100 1 1 100 1 1 7 1 1 100 1 1 7 1 1 7 1 1 100 1 100 1 100 1 1 100 1 1 100 1 1 1 12 10 1 1 1 1 1 100 1 1 12 11 1 100 1 1 12 9 1 1 12 9 1 100 1 1 12 10 1 12 9 1 12 9 1 12 9 1 12 9 1 12 9 1 100 1 1 12 10 1 12 10 1 7 1 1 12 9 1 7 1 1 12 10 1 1 1 1 1 1 1 1 1 1 1 1 1 1 12 10 1 1 1 1 1 1 12 10 1 1 12 9 1 1 1 1 1 1 12 10 1 1 1 1 12 10 4 1 12 9 1 1 1 1 12 10 1 1 1 1 12 10 1 1 1 1 100 12 10 1 1 1 1 1 12 10 1 1 12 10 1 1 1 1 1 10 1 1 1 12 10 10 1 1 1 1 12 10 1 12 9 1 1 1 1 1 1 1 1 1 7 10 10 1 1 12 9 1 12 9 1 7 1 1 12 10 1 1 1 1 1 12 10 1 1 12 9 1 1 1 1 1 12 10 1 12 9 1 1 1 1 1 1 1 1 1 1 7 1 12 10 1 1 1 1 1 1 1 1 1 12 10 1 1 1 1 1 1 1 1 1 1 1 100 1 12 10 1 1 1 1 1 1 12 10 1 12 9 1 1 1 10 1 1 10 1 1 1 12 10 1 12 9 1 1 1 1 12 10 1 10 1 1 12 10 1 1 1 1 10 1 1 7 1 7 1 8 1 8 1 7 1 1 12 10 1 7 1 1 1 1 1 1 1 1 12 10 1 1 1 1 1 12 10 1 1 1 1 1 12 10 1 1 1 1 1 7 1 12 10 1 12 9 1 1 1 1 100 1 100 1 1 12 10 1 12 10 1 1 12 10 1 1 12 10 1 12 10 1 1 1 1 10 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
+instanceKlass net/minecraftforge/event/entity/living/LivingSpawnEvent$SpecialSpawn
+instanceKlass net/minecraftforge/event/entity/living/LivingSpawnEvent$CheckSpawn
+instanceKlass net/minecraftforge/event/entity/living/LivingSpawnEvent$AllowDespawn
+ciInstanceKlass net/minecraftforge/event/entity/living/LivingSpawnEvent 1 1 63 1 7 1 7 1 1 100 1 1 100 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 12 10 12 9 12 9 12 9 12 9 1 1 1 1 1 12 10 1 12 10 12 9 1 7 1 1 12 10 1 12 10 1 1 1 1 1 1
+ciInstanceKlass net/minecraftforge/event/entity/living/LivingPackSizeEvent 1 1 51 1 7 1 7 1 1 1 100 1 100 1 1 1 1 1 1 1 1 12 10 1 1 1 1 1 1 1 12 10 1 12 10 12 9 1 7 1 1 12 10 1 12 10 1 1 1 1 1 1 1
+ciInstanceKlass net/minecraftforge/event/entity/living/LivingSpawnEvent$CheckSpawn 1 1 55 1 7 1 7 1 1 1 1 100 1 100 1 1 1 1 1 12 10 1 1 1 1 1 1 1 1 1 1 1 1 1 12 10 1 12 10 12 9 1 7 1 1 12 10 1 12 10 1 1 1 1 1 1 1
+ciInstanceKlass net/minecraftforge/event/entity/living/LivingSpawnEvent$SpecialSpawn 1 1 50 1 7 1 7 1 1 1 1 1 1 1 12 10 1 1 1 1 1 1 1 1 1 1 1 1 1 12 10 1 12 10 12 9 1 7 1 1 12 10 1 12 10 1 1 1 1 1 1 1
+ciInstanceKlass net/minecraft/client/multiplayer/ChunkProviderClient 1 1 249 1 7 1 7 1 100 1 1 1 1 1 1 7 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 8 1 1 1 12 10 1 7 10 12 9 1 7 10 12 9 1 7 1 12 10 12 9 12 9 1 1 1 1 1 1 1 1 1 1 1 1 12 10 1 7 1 1 12 10 1 12 10 1 7 1 1 12 10 1 1 12 10 1 7 1 12 11 1 1 1 1 10 1 1 12 10 12 11 1 7 1 1 12 9 1 12 10 1 7 1 1 12 10 1 1 12 9 1 1 1 12 10 1 1 1 1 1 1 1 1 1 1 7 1 1 12 10 1 1 12 11 1 7 1 12 11 1 1 12 11 5 0 1 1 12 10 5 0 12 9 1 8 1 100 1 1 12 10 1 100 1 1 12 11 1 1 1 1 1 1 1 1 1 1 1 1 1 100 10 1 8 1 1 12 10 1 1 12 10 1 12 10 1 8 1 12 11 1 12 10 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 7 1 1 12 10 1 1 1 1 1 1 1 1
+staticfield net/minecraft/client/multiplayer/ChunkProviderClient logger Lorg/apache/logging/log4j/Logger; org/apache/logging/log4j/core/Logger
+ciInstanceKlass net/minecraft/entity/IEntityLivingData 1 0 7 1 100 1 100 1 1
+compile net/minecraft/world/SpawnerAnimals findChunksForSpawning (Lnet/minecraft/world/WorldServer;ZZZ)I 521 4 inline 168 0 -1 net/minecraft/world/SpawnerAnimals findChunksForSpawning (Lnet/minecraft/world/WorldServer;ZZZ)I 1 535 java/util/Random nextInt (I)I 2 17 java/util/Random next (I)I 3 8 java/util/concurrent/atomic/AtomicLong get ()J 3 32 java/util/concurrent/atomic/AtomicLong compareAndSet (JJ)Z 1 544 java/util/Random nextInt (I)I 2 17 java/util/Random next (I)I 3 8 java/util/concurrent/atomic/AtomicLong get ()J 3 32 java/util/concurrent/atomic/AtomicLong compareAndSet (JJ)Z 1 558 java/util/Random nextInt (I)I 2 17 java/util/Random next (I)I 3 8 java/util/concurrent/atomic/AtomicLong get ()J 3 32 java/util/concurrent/atomic/AtomicLong compareAndSet (JJ)Z 1 566 java/util/Random nextInt (I)I 2 17 java/util/Random next (I)I 3 8 java/util/concurrent/atomic/AtomicLong get ()J 3 32 java/util/concurrent/atomic/AtomicLong compareAndSet (JJ)Z 1 581 java/util/Random nextInt (I)I 2 17 java/util/Random next (I)I 3 8 java/util/concurrent/atomic/AtomicLong get ()J 3 32 java/util/concurrent/atomic/AtomicLong compareAndSet (JJ)Z 1 590 java/util/Random nextInt (I)I 2 17 java/util/Random next (I)I 3 8 java/util/concurrent/atomic/AtomicLong get ()J 3 32 java/util/concurrent/atomic/AtomicLong compareAndSet (JJ)Z 1 646 net/minecraft/world/World getClosestPlayer (DDDD)Lnet/minecraft/entity/player/EntityPlayer; 2 17 java/util/ArrayList size ()I 2 31 java/util/ArrayList get (I)Ljava/lang/Object; 3 2 java/util/ArrayList rangeCheck (I)V 3 7 java/util/ArrayList elementData (I)Ljava/lang/Object; 2 47 net/minecraft/entity/Entity getDistanceSq (DDD)D 1 754 java/lang/Class getConstructor ([Ljava/lang/Class;)Ljava/lang/reflect/Constructor; 2 6 java/lang/Class checkMemberAccess (ILjava/lang/Class;Z)V 3 0 java/lang/System getSecurityManager ()Ljava/lang/SecurityManager; 3 11 java/lang/ClassLoader getClassLoader (Ljava/lang/Class;)Ljava/lang/ClassLoader; 4 7 java/lang/Class getClassLoader0 ()Ljava/lang/ClassLoader; 3 17 java/lang/Class getClassLoader0 ()Ljava/lang/ClassLoader; 3 45 java/lang/Class checkPackageAccess (Ljava/lang/ClassLoader;Z)V 4 0 java/lang/System getSecurityManager ()Ljava/lang/SecurityManager; 4 9 java/lang/Class getClassLoader0 ()Ljava/lang/ClassLoader; 4 17 sun/reflect/misc/ReflectUtil needsPackageAccessCheck (Ljava/lang/ClassLoader;Ljava/lang/ClassLoader;)Z 4 24 java/lang/Class getName ()Ljava/lang/String; 4 33 java/lang/String lastIndexOf (I)I 5 9 java/lang/String lastIndexOf (II)I 4 55 java/lang/reflect/Proxy isProxyClass (Ljava/lang/Class;)Z 5 13 java/lang/reflect/WeakCache containsValue (Ljava/lang/Object;)Z 6 1 java/util/Objects requireNonNull (Ljava/lang/Object;)Ljava/lang/Object; 6 6 java/lang/reflect/WeakCache expungeStaleEntries ()V 7 4 java/lang/ref/ReferenceQueue poll ()Ljava/lang/ref/Reference; 6 18 java/lang/reflect/WeakCache$LookupValue <init> (Ljava/lang/Object;)V 7 1 java/lang/Object <init> ()V 4 79 java/lang/reflect/Proxy isProxyClass (Ljava/lang/Class;)Z 5 13 java/lang/reflect/WeakCache containsValue (Ljava/lang/Object;)Z 6 1 java/util/Objects requireNonNull (Ljava/lang/Object;)Ljava/lang/Object; 6 6 java/lang/reflect/WeakCache expungeStaleEntries ()V 7 4 java/lang/ref/ReferenceQueue poll ()Ljava/lang/ref/Reference; 6 18 java/lang/reflect/WeakCache$LookupValue <init> (Ljava/lang/Object;)V 7 1 java/lang/Object <init> ()V 2 12 java/lang/Class getConstructor0 ([Ljava/lang/Class;I)Ljava/lang/reflect/Constructor; 3 10 java/lang/Class privateGetDeclaredConstructors (Z)[Ljava/lang/reflect/Constructor; 4 0 java/lang/Class checkInitted ()V 4 4 java/lang/Class reflectionData ()Ljava/lang/Class$ReflectionData; 5 21 java/lang/ref/SoftReference get ()Ljava/lang/Object; 5 45 java/lang/Class newReflectionData (Ljava/lang/ref/SoftReference;I)Ljava/lang/Class$ReflectionData; 6 13 java/lang/Class$ReflectionData <init> (I)V 7 1 java/lang/Object <init> ()V 6 24 java/lang/ref/SoftReference <init> (Ljava/lang/Object;)V 7 2 java/lang/ref/Reference <init> (Ljava/lang/Object;)V 8 3 java/lang/ref/Reference <init> (Ljava/lang/Object;Ljava/lang/ref/ReferenceQueue;)V 9 1 java/lang/Object <init> ()V 6 27 java/lang/Class$Atomic casReflectionData (Ljava/lang/Class;Ljava/lang/ref/SoftReference;Ljava/lang/ref/SoftReference;)Z 6 50 java/lang/ref/SoftReference get ()Ljava/lang/Object; 3 42 java/lang/reflect/Constructor getParameterTypes ()[Ljava/lang/Class; 3 45 java/lang/Class arrayContentsEq ([Ljava/lang/Object;[Ljava/lang/Object;)Z 3 51 java/lang/Class getReflectionFactory ()Lsun/reflect/ReflectionFactory; 3 56 sun/reflect/ReflectionFactory copyConstructor (Ljava/lang/reflect/Constructor;)Ljava/lang/reflect/Constructor; 4 0 sun/reflect/ReflectionFactory langReflectAccess ()Lsun/reflect/LangReflectAccess; 4 4 java/lang/reflect/ReflectAccess copyConstructor (Ljava/lang/reflect/Constructor;)Ljava/lang/reflect/Constructor; 5 1 java/lang/reflect/Constructor copy ()Ljava/lang/reflect/Constructor; 6 53 java/lang/reflect/Constructor <init> (Ljava/lang/Class;[Ljava/lang/Class;[Ljava/lang/Class;IILjava/lang/String;[B[B)V 7 1 java/lang/reflect/Executable <init> ()V 8 1 java/lang/reflect/AccessibleObject <init> ()V 9 1 java/lang/Object <init> ()V 3 74 java/lang/StringBuilder <init> ()V 4 3 java/lang/AbstractStringBuilder <init> (I)V 5 1 java/lang/Object <init> ()V 3 78 java/lang/Class getName ()Ljava/lang/String; 1 765 java/lang/reflect/Constructor newInstance ([Ljava/lang/Object;)Ljava/lang/Object; 2 15 sun/reflect/Reflection quickCheckMemberAccess (Ljava/lang/Class;I)Z 3 6 java/lang/reflect/Modifier isPublic (I)Z 2 73 java/lang/reflect/Constructor acquireConstructorAccessor ()Lsun/reflect/ConstructorAccessor; 3 13 java/lang/reflect/Constructor getConstructorAccessor ()Lsun/reflect/ConstructorAccessor; 3 39 java/lang/reflect/Constructor setConstructorAccessor (Lsun/reflect/ConstructorAccessor;)V 4 17 java/lang/reflect/Constructor setConstructorAccessor (Lsun/reflect/ConstructorAccessor;)V 2 79 sun/reflect/DelegatingConstructorAccessorImpl newInstance ([Ljava/lang/Object;)Ljava/lang/Object; 1 801 java/util/Random nextFloat ()F 2 3 java/util/Random next (I)I 3 8 java/util/concurrent/atomic/AtomicLong get ()J 3 32 java/util/concurrent/atomic/AtomicLong compareAndSet (JJ)Z 1 809 net/minecraft/entity/Entity setLocationAndAngles (DDDFF)V 1 821 net/minecraftforge/event/ForgeEventFactory canEntitySpawn (Lnet/minecraft/entity/EntityLiving;Lnet/minecraft/world/World;FFF)Lcpw/mods/fml/common/eventhandler/Event$Result; 2 26 cpw/mods/fml/common/eventhandler/Event getResult ()Lcpw/mods/fml/common/eventhandler/Event$Result; 1 372 java/util/ArrayList$Itr hasNext ()Z 2 8 java/util/ArrayList access$100 (Ljava/util/ArrayList;)I 1 266 net/minecraft/entity/EnumCreatureType getPeacefulCreature ()Z 1 278 net/minecraft/entity/EnumCreatureType getPeacefulCreature ()Z 1 290 net/minecraft/entity/EnumCreatureType getAnimal ()Z 1 305 net/minecraft/world/World countEntities (Lnet/minecraft/entity/EnumCreatureType;Z)I 2 11 java/util/ArrayList size ()I 2 25 java/util/ArrayList get (I)Ljava/lang/Object; 3 2 java/util/ArrayList rangeCheck (I)V 3 7 java/util/ArrayList elementData (I)Ljava/lang/Object; 2 35 net/minecraft/entity/Entity isCreatureType (Lnet/minecraft/entity/EnumCreatureType;Z)Z 1 310 net/minecraft/entity/EnumCreatureType getMaxNumberOfCreature ()I 1 317 java/util/HashMap size ()I 1 332 java/util/HashMap keySet ()Ljava/util/Set; 2 15 java/util/HashMap$KeySet <init> (Ljava/util/HashMap;)V 3 6 java/util/AbstractSet <init> ()V 4 1 java/util/AbstractCollection <init> ()V 5 1 java/lang/Object <init> ()V 1 335 java/util/HashMap$KeySet iterator ()Ljava/util/Iterator; 2 8 java/util/HashMap$KeyIterator <init> (Ljava/util/HashMap;)V 3 7 java/util/HashMap$HashIterator <init> (Ljava/util/HashMap;)V 4 6 java/lang/Object <init> ()V 1 350 java/util/HashMap keySet ()Ljava/util/Set; 2 15 java/util/HashMap$KeySet <init> (Ljava/util/HashMap;)V 3 6 java/util/AbstractSet <init> ()V 4 1 java/util/AbstractCollection <init> ()V 5 1 java/lang/Object <init> ()V 1 353 java/util/ArrayList <init> (Ljava/util/Collection;)V 2 1 java/util/AbstractList <init> ()V 3 1 java/util/AbstractCollection <init> ()V 4 1 java/lang/Object <init> ()V 1 360 java/util/Collections shuffle (Ljava/util/List;)V 2 22 java/util/Collections shuffle (Ljava/util/List;Ljava/util/Random;)V 3 1 java/util/ArrayList size ()I 3 32 java/util/Random nextInt (I)I 4 17 java/util/Random next (I)I 5 8 java/util/concurrent/atomic/AtomicLong get ()J 5 32 java/util/concurrent/atomic/AtomicLong compareAndSet (JJ)Z 3 35 java/util/Collections swap (Ljava/util/List;II)V 4 8 java/util/ArrayList get (I)Ljava/lang/Object; 5 2 java/util/ArrayList rangeCheck (I)V 5 7 java/util/ArrayList elementData (I)Ljava/lang/Object; 4 13 java/util/ArrayList set (ILjava/lang/Object;)Ljava/lang/Object; 5 2 java/util/ArrayList rangeCheck (I)V 5 7 java/util/ArrayList elementData (I)Ljava/lang/Object; 4 18 java/util/ArrayList set (ILjava/lang/Object;)Ljava/lang/Object; 5 2 java/util/ArrayList rangeCheck (I)V 5 7 java/util/ArrayList elementData (I)Ljava/lang/Object; 1 365 java/util/ArrayList iterator ()Ljava/util/Iterator; 2 6 java/util/ArrayList$Itr <init> (Ljava/util/ArrayList;Ljava/util/ArrayList$1;)V 3 2 java/util/ArrayList$Itr <init> (Ljava/util/ArrayList;)V 4 6 java/lang/Object <init> ()V 1 382 java/util/ArrayList$Itr next ()Ljava/lang/Object; 2 1 java/util/ArrayList$Itr checkForComodification ()V 2 14 java/util/ArrayList access$100 (Ljava/util/ArrayList;)I 1 398 java/util/HashMap get (Ljava/lang/Object;)Ljava/lang/Object; 2 2 java/util/HashMap hash (Ljava/lang/Object;)I 3 9 net/minecraft/world/ChunkCoordIntPair hashCode ()I 2 6 java/util/HashMap getNode (ILjava/lang/Object;)Ljava/util/HashMap$Node; 3 59 net/minecraft/world/ChunkCoordIntPair equals (Ljava/lang/Object;)Z 3 126 net/minecraft/world/ChunkCoordIntPair equals (Ljava/lang/Object;)Z 1 404 java/lang/Boolean booleanValue ()Z 1 457 net/minecraft/block/Block isNormalCube ()Z 2 4 net/minecraft/block/material/Material isOpaque ()Z 1 473 net/minecraft/block/Block getMaterial ()Lnet/minecraft/block/material/Material; 1 478 net/minecraft/entity/EnumCreatureType getCreatureMaterial ()Lnet/minecraft/block/material/Material;
diff --git a/saves/New World------/DIM-1/data/villages.dat b/saves/New World------/DIM-1/data/villages.dat
new file mode 100644
index 0000000000..45c85bbad9
--- /dev/null
+++ b/saves/New World------/DIM-1/data/villages.dat
Binary files differ
diff --git a/saves/New World------/DIM-1/forcedchunks.dat b/saves/New World------/DIM-1/forcedchunks.dat
new file mode 100644
index 0000000000..e4345475ef
--- /dev/null
+++ b/saves/New World------/DIM-1/forcedchunks.dat
Binary files differ
diff --git a/saves/New World------/DIM1/data/villages.dat b/saves/New World------/DIM1/data/villages.dat
new file mode 100644
index 0000000000..45c85bbad9
--- /dev/null
+++ b/saves/New World------/DIM1/data/villages.dat
Binary files differ
diff --git a/saves/New World------/DIM1/forcedchunks.dat b/saves/New World------/DIM1/forcedchunks.dat
new file mode 100644
index 0000000000..e4345475ef
--- /dev/null
+++ b/saves/New World------/DIM1/forcedchunks.dat
Binary files differ
diff --git a/saves/New World------/data/villages.dat b/saves/New World------/data/villages.dat
new file mode 100644
index 0000000000..45c85bbad9
--- /dev/null
+++ b/saves/New World------/data/villages.dat
Binary files differ
diff --git a/saves/New World------/forcedchunks.dat b/saves/New World------/forcedchunks.dat
new file mode 100644
index 0000000000..e4345475ef
--- /dev/null
+++ b/saves/New World------/forcedchunks.dat
Binary files differ
diff --git a/saves/New World------/level.dat b/saves/New World------/level.dat
new file mode 100644
index 0000000000..e58ed33771
--- /dev/null
+++ b/saves/New World------/level.dat
Binary files differ
diff --git a/saves/New World------/level.dat_mcr b/saves/New World------/level.dat_mcr
new file mode 100644
index 0000000000..7ca878414e
--- /dev/null
+++ b/saves/New World------/level.dat_mcr
Binary files differ
diff --git a/saves/New World------/level.dat_old b/saves/New World------/level.dat_old
new file mode 100644
index 0000000000..03c10bc691
--- /dev/null
+++ b/saves/New World------/level.dat_old
Binary files differ
diff --git a/saves/New World------/playerdata/5652713c-668e-47f3-853a-3fa959a9dfd3.dat b/saves/New World------/playerdata/5652713c-668e-47f3-853a-3fa959a9dfd3.dat
new file mode 100644
index 0000000000..ff6bd0eb94
--- /dev/null
+++ b/saves/New World------/playerdata/5652713c-668e-47f3-853a-3fa959a9dfd3.dat
Binary files differ
diff --git a/saves/New World------/region/r.-1.0.mca b/saves/New World------/region/r.-1.0.mca
new file mode 100644
index 0000000000..ee77db564c
--- /dev/null
+++ b/saves/New World------/region/r.-1.0.mca
Binary files differ
diff --git a/saves/New World------/region/r.0.0.mca b/saves/New World------/region/r.0.0.mca
new file mode 100644
index 0000000000..cf618e376c
--- /dev/null
+++ b/saves/New World------/region/r.0.0.mca
Binary files differ
diff --git a/saves/New World------/session.lock b/saves/New World------/session.lock
new file mode 100644
index 0000000000..a229651604
--- /dev/null
+++ b/saves/New World------/session.lock
Binary files differ
diff --git a/saves/New World------/stats/5652713c-668e-47f3-853a-3fa959a9dfd3.json b/saves/New World------/stats/5652713c-668e-47f3-853a-3fa959a9dfd3.json
new file mode 100644
index 0000000000..99886e2173
--- /dev/null
+++ b/saves/New World------/stats/5652713c-668e-47f3-853a-3fa959a9dfd3.json
@@ -0,0 +1 @@
+{"stat.walkOneCm":2632,"stat.drop":2,"stat.jump":2,"stat.playOneMinute":4844,"achievement.openInventory":5,"achievement.exploreAllBiomes":{"value":0,"progress":["Plains"]}} \ No newline at end of file
diff --git a/saves/New World------20151005-132002.zip b/saves/New World------20151005-132002.zip
new file mode 100644
index 0000000000..ef9fd9a812
--- /dev/null
+++ b/saves/New World------20151005-132002.zip
Binary files differ
diff --git a/saves/New World-----/DIM-1/data/villages.dat b/saves/New World-----/DIM-1/data/villages.dat
new file mode 100644
index 0000000000..2d0a48c140
--- /dev/null
+++ b/saves/New World-----/DIM-1/data/villages.dat
Binary files differ
diff --git a/saves/New World-----/DIM-1/forcedchunks.dat b/saves/New World-----/DIM-1/forcedchunks.dat
new file mode 100644
index 0000000000..e4345475ef
--- /dev/null
+++ b/saves/New World-----/DIM-1/forcedchunks.dat
Binary files differ
diff --git a/saves/New World-----/DIM1/data/villages.dat b/saves/New World-----/DIM1/data/villages.dat
new file mode 100644
index 0000000000..2d0a48c140
--- /dev/null
+++ b/saves/New World-----/DIM1/data/villages.dat
Binary files differ
diff --git a/saves/New World-----/DIM1/forcedchunks.dat b/saves/New World-----/DIM1/forcedchunks.dat
new file mode 100644
index 0000000000..e4345475ef
--- /dev/null
+++ b/saves/New World-----/DIM1/forcedchunks.dat
Binary files differ
diff --git a/saves/New World-----/data/Mineshaft.dat b/saves/New World-----/data/Mineshaft.dat
new file mode 100644
index 0000000000..15de2ade15
--- /dev/null
+++ b/saves/New World-----/data/Mineshaft.dat
Binary files differ
diff --git a/saves/New World-----/data/villages.dat b/saves/New World-----/data/villages.dat
new file mode 100644
index 0000000000..2d0a48c140
--- /dev/null
+++ b/saves/New World-----/data/villages.dat
Binary files differ
diff --git a/saves/New World-----/forcedchunks.dat b/saves/New World-----/forcedchunks.dat
new file mode 100644
index 0000000000..e4345475ef
--- /dev/null
+++ b/saves/New World-----/forcedchunks.dat
Binary files differ
diff --git a/saves/New World-----/level.dat b/saves/New World-----/level.dat
new file mode 100644
index 0000000000..cfba7b5d7b
--- /dev/null
+++ b/saves/New World-----/level.dat
Binary files differ
diff --git a/saves/New World-----/level.dat_mcr b/saves/New World-----/level.dat_mcr
new file mode 100644
index 0000000000..cd82e60f72
--- /dev/null
+++ b/saves/New World-----/level.dat_mcr
Binary files differ
diff --git a/saves/New World-----/level.dat_old b/saves/New World-----/level.dat_old
new file mode 100644
index 0000000000..761274c1ae
--- /dev/null
+++ b/saves/New World-----/level.dat_old
Binary files differ
diff --git a/saves/New World-----/playerdata/5652713c-668e-47f3-853a-3fa959a9dfd3.dat b/saves/New World-----/playerdata/5652713c-668e-47f3-853a-3fa959a9dfd3.dat
new file mode 100644
index 0000000000..45c7231bf3
--- /dev/null
+++ b/saves/New World-----/playerdata/5652713c-668e-47f3-853a-3fa959a9dfd3.dat
Binary files differ
diff --git a/saves/New World-----/region/r.0.0.mca b/saves/New World-----/region/r.0.0.mca
new file mode 100644
index 0000000000..b5fdef67a5
--- /dev/null
+++ b/saves/New World-----/region/r.0.0.mca
Binary files differ
diff --git a/saves/New World-----/session.lock b/saves/New World-----/session.lock
new file mode 100644
index 0000000000..c1461e7df5
--- /dev/null
+++ b/saves/New World-----/session.lock
Binary files differ
diff --git a/saves/New World-----/stats/5652713c-668e-47f3-853a-3fa959a9dfd3.json b/saves/New World-----/stats/5652713c-668e-47f3-853a-3fa959a9dfd3.json
new file mode 100644
index 0000000000..6f0c60143e
--- /dev/null
+++ b/saves/New World-----/stats/5652713c-668e-47f3-853a-3fa959a9dfd3.json
@@ -0,0 +1 @@
+{"stat.walkOneCm":297,"stat.playOneMinute":3964,"achievement.openInventory":2,"achievement.exploreAllBiomes":{"value":0,"progress":["Taiga"]}} \ No newline at end of file
diff --git a/saves/New World----/DIM-1/data/villages.dat b/saves/New World----/DIM-1/data/villages.dat
new file mode 100644
index 0000000000..a57018911b
--- /dev/null
+++ b/saves/New World----/DIM-1/data/villages.dat
Binary files differ
diff --git a/saves/New World----/DIM-1/forcedchunks.dat b/saves/New World----/DIM-1/forcedchunks.dat
new file mode 100644
index 0000000000..e4345475ef
--- /dev/null
+++ b/saves/New World----/DIM-1/forcedchunks.dat
Binary files differ
diff --git a/saves/New World----/DIM1/data/villages.dat b/saves/New World----/DIM1/data/villages.dat
new file mode 100644
index 0000000000..a57018911b
--- /dev/null
+++ b/saves/New World----/DIM1/data/villages.dat
Binary files differ
diff --git a/saves/New World----/DIM1/forcedchunks.dat b/saves/New World----/DIM1/forcedchunks.dat
new file mode 100644
index 0000000000..e4345475ef
--- /dev/null
+++ b/saves/New World----/DIM1/forcedchunks.dat
Binary files differ
diff --git a/saves/New World----/data/Mineshaft.dat b/saves/New World----/data/Mineshaft.dat
new file mode 100644
index 0000000000..a79a440ed5
--- /dev/null
+++ b/saves/New World----/data/Mineshaft.dat
Binary files differ
diff --git a/saves/New World----/data/villages.dat b/saves/New World----/data/villages.dat
new file mode 100644
index 0000000000..a57018911b
--- /dev/null
+++ b/saves/New World----/data/villages.dat
Binary files differ
diff --git a/saves/New World----/forcedchunks.dat b/saves/New World----/forcedchunks.dat
new file mode 100644
index 0000000000..e4345475ef
--- /dev/null
+++ b/saves/New World----/forcedchunks.dat
Binary files differ
diff --git a/saves/New World----/level.dat b/saves/New World----/level.dat
new file mode 100644
index 0000000000..fa3e5061dc
--- /dev/null
+++ b/saves/New World----/level.dat
Binary files differ
diff --git a/saves/New World----/level.dat_mcr b/saves/New World----/level.dat_mcr
new file mode 100644
index 0000000000..453e39910b
--- /dev/null
+++ b/saves/New World----/level.dat_mcr
Binary files differ
diff --git a/saves/New World----/level.dat_old b/saves/New World----/level.dat_old
new file mode 100644
index 0000000000..f51e3fcd61
--- /dev/null
+++ b/saves/New World----/level.dat_old
Binary files differ
diff --git a/saves/New World----/playerdata/5652713c-668e-47f3-853a-3fa959a9dfd3.dat b/saves/New World----/playerdata/5652713c-668e-47f3-853a-3fa959a9dfd3.dat
new file mode 100644
index 0000000000..917d2d8cbf
--- /dev/null
+++ b/saves/New World----/playerdata/5652713c-668e-47f3-853a-3fa959a9dfd3.dat
Binary files differ
diff --git a/saves/New World----/region/r.-1.0.mca b/saves/New World----/region/r.-1.0.mca
new file mode 100644
index 0000000000..3455ce0250
--- /dev/null
+++ b/saves/New World----/region/r.-1.0.mca
Binary files differ
diff --git a/saves/New World----/region/r.0.0.mca b/saves/New World----/region/r.0.0.mca
new file mode 100644
index 0000000000..6f16e45f2f
--- /dev/null
+++ b/saves/New World----/region/r.0.0.mca
Binary files differ
diff --git a/saves/New World----/session.lock b/saves/New World----/session.lock
new file mode 100644
index 0000000000..d1d339cbcd
--- /dev/null
+++ b/saves/New World----/session.lock
Binary files differ
diff --git a/saves/New World----/stats/5652713c-668e-47f3-853a-3fa959a9dfd3.json b/saves/New World----/stats/5652713c-668e-47f3-853a-3fa959a9dfd3.json
new file mode 100644
index 0000000000..f522c5dbde
--- /dev/null
+++ b/saves/New World----/stats/5652713c-668e-47f3-853a-3fa959a9dfd3.json
@@ -0,0 +1 @@
+{"stat.walkOneCm":164,"stat.playOneMinute":109,"achievement.openInventory":1,"achievement.exploreAllBiomes":{"value":0,"progress":["TaigaHills"]}} \ No newline at end of file
diff --git a/saves/New World----20150907-111329.zip b/saves/New World----20150907-111329.zip
new file mode 100644
index 0000000000..a88501538d
--- /dev/null
+++ b/saves/New World----20150907-111329.zip
Binary files differ
diff --git a/saves/New World---/DIM-1/data/villages.dat b/saves/New World---/DIM-1/data/villages.dat
new file mode 100644
index 0000000000..142ca76cd6
--- /dev/null
+++ b/saves/New World---/DIM-1/data/villages.dat
Binary files differ
diff --git a/saves/New World---/DIM-1/forcedchunks.dat b/saves/New World---/DIM-1/forcedchunks.dat
new file mode 100644
index 0000000000..e4345475ef
--- /dev/null
+++ b/saves/New World---/DIM-1/forcedchunks.dat
Binary files differ
diff --git a/saves/New World---/DIM1/data/villages.dat b/saves/New World---/DIM1/data/villages.dat
new file mode 100644
index 0000000000..142ca76cd6
--- /dev/null
+++ b/saves/New World---/DIM1/data/villages.dat
Binary files differ
diff --git a/saves/New World---/DIM1/forcedchunks.dat b/saves/New World---/DIM1/forcedchunks.dat
new file mode 100644
index 0000000000..e4345475ef
--- /dev/null
+++ b/saves/New World---/DIM1/forcedchunks.dat
Binary files differ
diff --git a/saves/New World---/data/Mineshaft.dat b/saves/New World---/data/Mineshaft.dat
new file mode 100644
index 0000000000..2f65251f34
--- /dev/null
+++ b/saves/New World---/data/Mineshaft.dat
Binary files differ
diff --git a/saves/New World---/data/Temple.dat b/saves/New World---/data/Temple.dat
new file mode 100644
index 0000000000..45d2c07da1
--- /dev/null
+++ b/saves/New World---/data/Temple.dat
Binary files differ
diff --git a/saves/New World---/data/villages.dat b/saves/New World---/data/villages.dat
new file mode 100644
index 0000000000..142ca76cd6
--- /dev/null
+++ b/saves/New World---/data/villages.dat
Binary files differ
diff --git a/saves/New World---/forcedchunks.dat b/saves/New World---/forcedchunks.dat
new file mode 100644
index 0000000000..e4345475ef
--- /dev/null
+++ b/saves/New World---/forcedchunks.dat
Binary files differ
diff --git a/saves/New World---/level.dat b/saves/New World---/level.dat
new file mode 100644
index 0000000000..a36abafa92
--- /dev/null
+++ b/saves/New World---/level.dat
Binary files differ
diff --git a/saves/New World---/level.dat_mcr b/saves/New World---/level.dat_mcr
new file mode 100644
index 0000000000..f898e53f75
--- /dev/null
+++ b/saves/New World---/level.dat_mcr
Binary files differ
diff --git a/saves/New World---/level.dat_old b/saves/New World---/level.dat_old
new file mode 100644
index 0000000000..39889fbd60
--- /dev/null
+++ b/saves/New World---/level.dat_old
Binary files differ
diff --git a/saves/New World---/playerdata/05d3c308-6531-310d-988c-a6164eaf800d.dat b/saves/New World---/playerdata/05d3c308-6531-310d-988c-a6164eaf800d.dat
new file mode 100644
index 0000000000..5d66c397e5
--- /dev/null
+++ b/saves/New World---/playerdata/05d3c308-6531-310d-988c-a6164eaf800d.dat
Binary files differ
diff --git a/saves/New World---/playerdata/18b3a035-3e67-34ed-889e-932160306e4f.dat b/saves/New World---/playerdata/18b3a035-3e67-34ed-889e-932160306e4f.dat
new file mode 100644
index 0000000000..ef1183ce1c
--- /dev/null
+++ b/saves/New World---/playerdata/18b3a035-3e67-34ed-889e-932160306e4f.dat
Binary files differ
diff --git a/saves/New World---/playerdata/27630cc8-9d92-34f7-8c10-85caa979d8b3.dat b/saves/New World---/playerdata/27630cc8-9d92-34f7-8c10-85caa979d8b3.dat
new file mode 100644
index 0000000000..0a5493cebc
--- /dev/null
+++ b/saves/New World---/playerdata/27630cc8-9d92-34f7-8c10-85caa979d8b3.dat
Binary files differ
diff --git a/saves/New World---/playerdata/38ee4029-e397-3902-8d79-d6c4d51a8fef.dat b/saves/New World---/playerdata/38ee4029-e397-3902-8d79-d6c4d51a8fef.dat
new file mode 100644
index 0000000000..41306ac2d7
--- /dev/null
+++ b/saves/New World---/playerdata/38ee4029-e397-3902-8d79-d6c4d51a8fef.dat
Binary files differ
diff --git a/saves/New World---/playerdata/5b6052a7-6bab-33d6-92c2-a3d77755ef06.dat b/saves/New World---/playerdata/5b6052a7-6bab-33d6-92c2-a3d77755ef06.dat
new file mode 100644
index 0000000000..3f01103144
--- /dev/null
+++ b/saves/New World---/playerdata/5b6052a7-6bab-33d6-92c2-a3d77755ef06.dat
Binary files differ
diff --git a/saves/New World---/playerdata/6116e2fa-a2e7-3242-8217-a93e1a963211.dat b/saves/New World---/playerdata/6116e2fa-a2e7-3242-8217-a93e1a963211.dat
new file mode 100644
index 0000000000..e231201374
--- /dev/null
+++ b/saves/New World---/playerdata/6116e2fa-a2e7-3242-8217-a93e1a963211.dat
Binary files differ
diff --git a/saves/New World---/playerdata/66212eae-12d0-33f7-bd64-547255e16b3f.dat b/saves/New World---/playerdata/66212eae-12d0-33f7-bd64-547255e16b3f.dat
new file mode 100644
index 0000000000..12e10ba227
--- /dev/null
+++ b/saves/New World---/playerdata/66212eae-12d0-33f7-bd64-547255e16b3f.dat
Binary files differ
diff --git a/saves/New World---/playerdata/7fef5833-06c9-398a-84c0-fbd3a81ff548.dat b/saves/New World---/playerdata/7fef5833-06c9-398a-84c0-fbd3a81ff548.dat
new file mode 100644
index 0000000000..2e0d11333c
--- /dev/null
+++ b/saves/New World---/playerdata/7fef5833-06c9-398a-84c0-fbd3a81ff548.dat
Binary files differ
diff --git a/saves/New World---/playerdata/909ca267-1200-3a4b-b154-ac49c5d6bf14.dat b/saves/New World---/playerdata/909ca267-1200-3a4b-b154-ac49c5d6bf14.dat
new file mode 100644
index 0000000000..a82171ddf9
--- /dev/null
+++ b/saves/New World---/playerdata/909ca267-1200-3a4b-b154-ac49c5d6bf14.dat
Binary files differ
diff --git a/saves/New World---/playerdata/9bfc7d2e-b7d2-36ba-8889-dc94b2f1b428.dat b/saves/New World---/playerdata/9bfc7d2e-b7d2-36ba-8889-dc94b2f1b428.dat
new file mode 100644
index 0000000000..70d48c577f
--- /dev/null
+++ b/saves/New World---/playerdata/9bfc7d2e-b7d2-36ba-8889-dc94b2f1b428.dat
Binary files differ
diff --git a/saves/New World---/playerdata/9f706b9c-a5d7-3950-a693-97c335e2631f.dat b/saves/New World---/playerdata/9f706b9c-a5d7-3950-a693-97c335e2631f.dat
new file mode 100644
index 0000000000..c870d817c7
--- /dev/null
+++ b/saves/New World---/playerdata/9f706b9c-a5d7-3950-a693-97c335e2631f.dat
Binary files differ
diff --git a/saves/New World---/playerdata/a7d84b43-620c-3be0-bbc6-d96e040e37ab.dat b/saves/New World---/playerdata/a7d84b43-620c-3be0-bbc6-d96e040e37ab.dat
new file mode 100644
index 0000000000..bc92176f0d
--- /dev/null
+++ b/saves/New World---/playerdata/a7d84b43-620c-3be0-bbc6-d96e040e37ab.dat
Binary files differ
diff --git a/saves/New World---/playerdata/ad4a30d4-53bd-30c6-b482-5d77fb42b2d7.dat b/saves/New World---/playerdata/ad4a30d4-53bd-30c6-b482-5d77fb42b2d7.dat
new file mode 100644
index 0000000000..69395fe25b
--- /dev/null
+++ b/saves/New World---/playerdata/ad4a30d4-53bd-30c6-b482-5d77fb42b2d7.dat
Binary files differ
diff --git a/saves/New World---/playerdata/c72e77a5-a3ff-38a0-b468-253b21a4bd27.dat b/saves/New World---/playerdata/c72e77a5-a3ff-38a0-b468-253b21a4bd27.dat
new file mode 100644
index 0000000000..900d681083
--- /dev/null
+++ b/saves/New World---/playerdata/c72e77a5-a3ff-38a0-b468-253b21a4bd27.dat
Binary files differ
diff --git a/saves/New World---/playerdata/cb84ed39-e436-34ce-8360-3a854fcf8ae6.dat b/saves/New World---/playerdata/cb84ed39-e436-34ce-8360-3a854fcf8ae6.dat
new file mode 100644
index 0000000000..23a1d71260
--- /dev/null
+++ b/saves/New World---/playerdata/cb84ed39-e436-34ce-8360-3a854fcf8ae6.dat
Binary files differ
diff --git a/saves/New World---/playerdata/e6f6e71e-f1b8-32cb-a47d-066aff706ad2.dat b/saves/New World---/playerdata/e6f6e71e-f1b8-32cb-a47d-066aff706ad2.dat
new file mode 100644
index 0000000000..3059446713
--- /dev/null
+++ b/saves/New World---/playerdata/e6f6e71e-f1b8-32cb-a47d-066aff706ad2.dat
Binary files differ
diff --git a/saves/New World---/playerdata/eb662411-185a-3694-b480-0c259ae00075.dat b/saves/New World---/playerdata/eb662411-185a-3694-b480-0c259ae00075.dat
new file mode 100644
index 0000000000..04fd988c71
--- /dev/null
+++ b/saves/New World---/playerdata/eb662411-185a-3694-b480-0c259ae00075.dat
Binary files differ
diff --git a/saves/New World---/region/r.-1.0.mca b/saves/New World---/region/r.-1.0.mca
new file mode 100644
index 0000000000..979003960a
--- /dev/null
+++ b/saves/New World---/region/r.-1.0.mca
Binary files differ
diff --git a/saves/New World---/region/r.0.0.mca b/saves/New World---/region/r.0.0.mca
new file mode 100644
index 0000000000..d2ada392cb
--- /dev/null
+++ b/saves/New World---/region/r.0.0.mca
Binary files differ
diff --git a/saves/New World---/session.lock b/saves/New World---/session.lock
new file mode 100644
index 0000000000..380d0783b3
--- /dev/null
+++ b/saves/New World---/session.lock
Binary files differ
diff --git a/saves/New World---/stats/05d3c308-6531-310d-988c-a6164eaf800d.json b/saves/New World---/stats/05d3c308-6531-310d-988c-a6164eaf800d.json
new file mode 100644
index 0000000000..abb4a7450f
--- /dev/null
+++ b/saves/New World---/stats/05d3c308-6531-310d-988c-a6164eaf800d.json
@@ -0,0 +1 @@
+{"stat.playOneMinute":111,"achievement.exploreAllBiomes":{"value":0,"progress":["Forest"]}} \ No newline at end of file
diff --git a/saves/New World---/stats/18b3a035-3e67-34ed-889e-932160306e4f.json b/saves/New World---/stats/18b3a035-3e67-34ed-889e-932160306e4f.json
new file mode 100644
index 0000000000..07585d7897
--- /dev/null
+++ b/saves/New World---/stats/18b3a035-3e67-34ed-889e-932160306e4f.json
@@ -0,0 +1 @@
+{"stat.playOneMinute":1543,"achievement.openInventory":2,"achievement.exploreAllBiomes":{"value":0,"progress":["Forest"]}} \ No newline at end of file
diff --git a/saves/New World---/stats/27630cc8-9d92-34f7-8c10-85caa979d8b3.json b/saves/New World---/stats/27630cc8-9d92-34f7-8c10-85caa979d8b3.json
new file mode 100644
index 0000000000..0d66b0a946
--- /dev/null
+++ b/saves/New World---/stats/27630cc8-9d92-34f7-8c10-85caa979d8b3.json
@@ -0,0 +1 @@
+{"stat.walkOneCm":1017,"stat.drop":1,"stat.jump":3,"stat.swimOneCm":155,"stat.playOneMinute":9299,"achievement.openInventory":2,"achievement.exploreAllBiomes":{"value":0,"progress":["Forest"]}} \ No newline at end of file
diff --git a/saves/New World---/stats/38ee4029-e397-3902-8d79-d6c4d51a8fef.json b/saves/New World---/stats/38ee4029-e397-3902-8d79-d6c4d51a8fef.json
new file mode 100644
index 0000000000..ffd1d1c9b4
--- /dev/null
+++ b/saves/New World---/stats/38ee4029-e397-3902-8d79-d6c4d51a8fef.json
@@ -0,0 +1 @@
+{"stat.playOneMinute":4579,"achievement.openInventory":1,"achievement.exploreAllBiomes":{"value":0,"progress":["Forest"]}} \ No newline at end of file
diff --git a/saves/New World---/stats/5b6052a7-6bab-33d6-92c2-a3d77755ef06.json b/saves/New World---/stats/5b6052a7-6bab-33d6-92c2-a3d77755ef06.json
new file mode 100644
index 0000000000..fb6d1d4701
--- /dev/null
+++ b/saves/New World---/stats/5b6052a7-6bab-33d6-92c2-a3d77755ef06.json
@@ -0,0 +1 @@
+{"stat.flyOneCm":2440,"stat.walkOneCm":727,"stat.jump":2,"stat.playOneMinute":3973,"achievement.openInventory":3,"achievement.exploreAllBiomes":{"value":0,"progress":["Birch Forest","Forest"]}} \ No newline at end of file
diff --git a/saves/New World---/stats/6116e2fa-a2e7-3242-8217-a93e1a963211.json b/saves/New World---/stats/6116e2fa-a2e7-3242-8217-a93e1a963211.json
new file mode 100644
index 0000000000..4207fd8e6e
--- /dev/null
+++ b/saves/New World---/stats/6116e2fa-a2e7-3242-8217-a93e1a963211.json
@@ -0,0 +1 @@
+{"stat.playOneMinute":2935,"achievement.exploreAllBiomes":{"value":0,"progress":["Forest"]}} \ No newline at end of file
diff --git a/saves/New World---/stats/66212eae-12d0-33f7-bd64-547255e16b3f.json b/saves/New World---/stats/66212eae-12d0-33f7-bd64-547255e16b3f.json
new file mode 100644
index 0000000000..976a1863aa
--- /dev/null
+++ b/saves/New World---/stats/66212eae-12d0-33f7-bd64-547255e16b3f.json
@@ -0,0 +1 @@
+{"stat.walkOneCm":895,"stat.jump":6,"stat.playOneMinute":179,"achievement.exploreAllBiomes":{"value":0,"progress":["Forest"]}} \ No newline at end of file
diff --git a/saves/New World---/stats/7fef5833-06c9-398a-84c0-fbd3a81ff548.json b/saves/New World---/stats/7fef5833-06c9-398a-84c0-fbd3a81ff548.json
new file mode 100644
index 0000000000..ae5d3c6e23
--- /dev/null
+++ b/saves/New World---/stats/7fef5833-06c9-398a-84c0-fbd3a81ff548.json
@@ -0,0 +1 @@
+{"stat.walkOneCm":2436,"stat.jump":5,"stat.playOneMinute":1542,"achievement.openInventory":4,"achievement.exploreAllBiomes":{"value":0,"progress":["Forest"]}} \ No newline at end of file
diff --git a/saves/New World---/stats/909ca267-1200-3a4b-b154-ac49c5d6bf14.json b/saves/New World---/stats/909ca267-1200-3a4b-b154-ac49c5d6bf14.json
new file mode 100644
index 0000000000..27e48a508f
--- /dev/null
+++ b/saves/New World---/stats/909ca267-1200-3a4b-b154-ac49c5d6bf14.json
@@ -0,0 +1 @@
+{"stat.playOneMinute":30,"achievement.exploreAllBiomes":{"value":0,"progress":["Forest"]}} \ No newline at end of file
diff --git a/saves/New World---/stats/9bfc7d2e-b7d2-36ba-8889-dc94b2f1b428.json b/saves/New World---/stats/9bfc7d2e-b7d2-36ba-8889-dc94b2f1b428.json
new file mode 100644
index 0000000000..a0dc630f96
--- /dev/null
+++ b/saves/New World---/stats/9bfc7d2e-b7d2-36ba-8889-dc94b2f1b428.json
@@ -0,0 +1 @@
+{"stat.playOneMinute":240143,"achievement.exploreAllBiomes":{"value":0,"progress":["Forest"]}} \ No newline at end of file
diff --git a/saves/New World---/stats/9f706b9c-a5d7-3950-a693-97c335e2631f.json b/saves/New World---/stats/9f706b9c-a5d7-3950-a693-97c335e2631f.json
new file mode 100644
index 0000000000..ef3a904a64
--- /dev/null
+++ b/saves/New World---/stats/9f706b9c-a5d7-3950-a693-97c335e2631f.json
@@ -0,0 +1 @@
+{"stat.walkOneCm":603,"stat.jump":2,"stat.playOneMinute":3652,"achievement.openInventory":1,"achievement.exploreAllBiomes":{"value":0,"progress":["Forest"]}} \ No newline at end of file
diff --git a/saves/New World---/stats/a7d84b43-620c-3be0-bbc6-d96e040e37ab.json b/saves/New World---/stats/a7d84b43-620c-3be0-bbc6-d96e040e37ab.json
new file mode 100644
index 0000000000..1828516caa
--- /dev/null
+++ b/saves/New World---/stats/a7d84b43-620c-3be0-bbc6-d96e040e37ab.json
@@ -0,0 +1 @@
+{"stat.walkOneCm":737,"stat.playOneMinute":250,"achievement.exploreAllBiomes":{"value":0,"progress":["Forest"]}} \ No newline at end of file
diff --git a/saves/New World---/stats/ad4a30d4-53bd-30c6-b482-5d77fb42b2d7.json b/saves/New World---/stats/ad4a30d4-53bd-30c6-b482-5d77fb42b2d7.json
new file mode 100644
index 0000000000..d5112690a8
--- /dev/null
+++ b/saves/New World---/stats/ad4a30d4-53bd-30c6-b482-5d77fb42b2d7.json
@@ -0,0 +1 @@
+{"stat.walkOneCm":1557,"stat.jump":1,"stat.playOneMinute":5126,"achievement.exploreAllBiomes":{"value":0,"progress":["Birch Forest","Forest"]}} \ No newline at end of file
diff --git a/saves/New World---/stats/c72e77a5-a3ff-38a0-b468-253b21a4bd27.json b/saves/New World---/stats/c72e77a5-a3ff-38a0-b468-253b21a4bd27.json
new file mode 100644
index 0000000000..bced5eb48e
--- /dev/null
+++ b/saves/New World---/stats/c72e77a5-a3ff-38a0-b468-253b21a4bd27.json
@@ -0,0 +1 @@
+{"stat.flyOneCm":28,"stat.walkOneCm":2484,"stat.jump":5,"stat.playOneMinute":1756,"achievement.openInventory":3,"achievement.exploreAllBiomes":{"value":0,"progress":["Birch Forest","Forest"]}} \ No newline at end of file
diff --git a/saves/New World---/stats/cb84ed39-e436-34ce-8360-3a854fcf8ae6.json b/saves/New World---/stats/cb84ed39-e436-34ce-8360-3a854fcf8ae6.json
new file mode 100644
index 0000000000..3856090380
--- /dev/null
+++ b/saves/New World---/stats/cb84ed39-e436-34ce-8360-3a854fcf8ae6.json
@@ -0,0 +1 @@
+{"stat.walkOneCm":639,"stat.jump":1,"stat.playOneMinute":476,"achievement.openInventory":1,"achievement.exploreAllBiomes":{"value":0,"progress":["Forest"]}} \ No newline at end of file
diff --git a/saves/New World---/stats/e6f6e71e-f1b8-32cb-a47d-066aff706ad2.json b/saves/New World---/stats/e6f6e71e-f1b8-32cb-a47d-066aff706ad2.json
new file mode 100644
index 0000000000..d919d21995
--- /dev/null
+++ b/saves/New World---/stats/e6f6e71e-f1b8-32cb-a47d-066aff706ad2.json
@@ -0,0 +1 @@
+{"stat.useItem.54":3,"stat.walkOneCm":1687,"stat.jump":1,"stat.playOneMinute":884,"achievement.openInventory":1,"achievement.exploreAllBiomes":{"value":0,"progress":["Forest"]}} \ No newline at end of file
diff --git a/saves/New World---/stats/eb662411-185a-3694-b480-0c259ae00075.json b/saves/New World---/stats/eb662411-185a-3694-b480-0c259ae00075.json
new file mode 100644
index 0000000000..1f0b51c4ab
--- /dev/null
+++ b/saves/New World---/stats/eb662411-185a-3694-b480-0c259ae00075.json
@@ -0,0 +1 @@
+{"stat.walkOneCm":874,"stat.jump":1,"stat.playOneMinute":8490,"achievement.openInventory":2,"achievement.exploreAllBiomes":{"value":0,"progress":["Forest"]}} \ No newline at end of file
diff --git a/saves/New World---20150906-160601.zip b/saves/New World---20150906-160601.zip
new file mode 100644
index 0000000000..aeb0ed7511
--- /dev/null
+++ b/saves/New World---20150906-160601.zip
Binary files differ
diff --git a/saves/New World--/DIM-1/data/villages.dat b/saves/New World--/DIM-1/data/villages.dat
new file mode 100644
index 0000000000..d9326bf541
--- /dev/null
+++ b/saves/New World--/DIM-1/data/villages.dat
Binary files differ
diff --git a/saves/New World--/DIM-1/forcedchunks.dat b/saves/New World--/DIM-1/forcedchunks.dat
new file mode 100644
index 0000000000..e4345475ef
--- /dev/null
+++ b/saves/New World--/DIM-1/forcedchunks.dat
Binary files differ
diff --git a/saves/New World--/DIM1/data/villages.dat b/saves/New World--/DIM1/data/villages.dat
new file mode 100644
index 0000000000..d9326bf541
--- /dev/null
+++ b/saves/New World--/DIM1/data/villages.dat
Binary files differ
diff --git a/saves/New World--/DIM1/forcedchunks.dat b/saves/New World--/DIM1/forcedchunks.dat
new file mode 100644
index 0000000000..e4345475ef
--- /dev/null
+++ b/saves/New World--/DIM1/forcedchunks.dat
Binary files differ
diff --git a/saves/New World--/data/Mineshaft.dat b/saves/New World--/data/Mineshaft.dat
new file mode 100644
index 0000000000..7ae8f8b3ed
--- /dev/null
+++ b/saves/New World--/data/Mineshaft.dat
Binary files differ
diff --git a/saves/New World--/data/villages.dat b/saves/New World--/data/villages.dat
new file mode 100644
index 0000000000..d9326bf541
--- /dev/null
+++ b/saves/New World--/data/villages.dat
Binary files differ
diff --git a/saves/New World--/forcedchunks.dat b/saves/New World--/forcedchunks.dat
new file mode 100644
index 0000000000..e4345475ef
--- /dev/null
+++ b/saves/New World--/forcedchunks.dat
Binary files differ
diff --git a/saves/New World--/level.dat b/saves/New World--/level.dat
new file mode 100644
index 0000000000..d78f39bff3
--- /dev/null
+++ b/saves/New World--/level.dat
Binary files differ
diff --git a/saves/New World--/level.dat_mcr b/saves/New World--/level.dat_mcr
new file mode 100644
index 0000000000..cae945780f
--- /dev/null
+++ b/saves/New World--/level.dat_mcr
Binary files differ
diff --git a/saves/New World--/level.dat_old b/saves/New World--/level.dat_old
new file mode 100644
index 0000000000..4df700d295
--- /dev/null
+++ b/saves/New World--/level.dat_old
Binary files differ
diff --git a/saves/New World--/playerdata/13e3d50f-de22-3147-8516-e5bdfb7eb52c.dat b/saves/New World--/playerdata/13e3d50f-de22-3147-8516-e5bdfb7eb52c.dat
new file mode 100644
index 0000000000..59e1981940
--- /dev/null
+++ b/saves/New World--/playerdata/13e3d50f-de22-3147-8516-e5bdfb7eb52c.dat
Binary files differ
diff --git a/saves/New World--/playerdata/18b3a035-3e67-34ed-889e-932160306e4f.dat b/saves/New World--/playerdata/18b3a035-3e67-34ed-889e-932160306e4f.dat
new file mode 100644
index 0000000000..30a5a34b17
--- /dev/null
+++ b/saves/New World--/playerdata/18b3a035-3e67-34ed-889e-932160306e4f.dat
Binary files differ
diff --git a/saves/New World--/playerdata/1b8d41ee-20e2-3849-a434-0d774a740ae1.dat b/saves/New World--/playerdata/1b8d41ee-20e2-3849-a434-0d774a740ae1.dat
new file mode 100644
index 0000000000..30ab0a9e1f
--- /dev/null
+++ b/saves/New World--/playerdata/1b8d41ee-20e2-3849-a434-0d774a740ae1.dat
Binary files differ
diff --git a/saves/New World--/playerdata/218a3571-b707-3992-b46a-db90429dc7f7.dat b/saves/New World--/playerdata/218a3571-b707-3992-b46a-db90429dc7f7.dat
new file mode 100644
index 0000000000..54809691f1
--- /dev/null
+++ b/saves/New World--/playerdata/218a3571-b707-3992-b46a-db90429dc7f7.dat
Binary files differ
diff --git a/saves/New World--/playerdata/24a37f0a-2af1-3ac4-9024-e5424f979e18.dat b/saves/New World--/playerdata/24a37f0a-2af1-3ac4-9024-e5424f979e18.dat
new file mode 100644
index 0000000000..c0caebac04
--- /dev/null
+++ b/saves/New World--/playerdata/24a37f0a-2af1-3ac4-9024-e5424f979e18.dat
Binary files differ
diff --git a/saves/New World--/playerdata/26d3a8a7-c365-3f1b-98bd-1e86d16aa724.dat b/saves/New World--/playerdata/26d3a8a7-c365-3f1b-98bd-1e86d16aa724.dat
new file mode 100644
index 0000000000..9a4f7312dd
--- /dev/null
+++ b/saves/New World--/playerdata/26d3a8a7-c365-3f1b-98bd-1e86d16aa724.dat
Binary files differ
diff --git a/saves/New World--/playerdata/3b1946fe-c2d1-3fab-8b74-bd39d8b52fb4.dat b/saves/New World--/playerdata/3b1946fe-c2d1-3fab-8b74-bd39d8b52fb4.dat
new file mode 100644
index 0000000000..1a5268bdfb
--- /dev/null
+++ b/saves/New World--/playerdata/3b1946fe-c2d1-3fab-8b74-bd39d8b52fb4.dat
Binary files differ
diff --git a/saves/New World--/playerdata/5652713c-668e-47f3-853a-3fa959a9dfd3.dat b/saves/New World--/playerdata/5652713c-668e-47f3-853a-3fa959a9dfd3.dat
new file mode 100644
index 0000000000..2f838bd83c
--- /dev/null
+++ b/saves/New World--/playerdata/5652713c-668e-47f3-853a-3fa959a9dfd3.dat
Binary files differ
diff --git a/saves/New World--/playerdata/56a50a28-2026-3b27-8279-243e3ff82a5a.dat b/saves/New World--/playerdata/56a50a28-2026-3b27-8279-243e3ff82a5a.dat
new file mode 100644
index 0000000000..5c1d04e79f
--- /dev/null
+++ b/saves/New World--/playerdata/56a50a28-2026-3b27-8279-243e3ff82a5a.dat
Binary files differ
diff --git a/saves/New World--/playerdata/588419cf-d7d5-3f7b-8fe7-89996b3b7551.dat b/saves/New World--/playerdata/588419cf-d7d5-3f7b-8fe7-89996b3b7551.dat
new file mode 100644
index 0000000000..d04faf343c
--- /dev/null
+++ b/saves/New World--/playerdata/588419cf-d7d5-3f7b-8fe7-89996b3b7551.dat
Binary files differ
diff --git a/saves/New World--/playerdata/5d36a45e-9473-37e3-8760-623ba7be7a5c.dat b/saves/New World--/playerdata/5d36a45e-9473-37e3-8760-623ba7be7a5c.dat
new file mode 100644
index 0000000000..abdfb11af1
--- /dev/null
+++ b/saves/New World--/playerdata/5d36a45e-9473-37e3-8760-623ba7be7a5c.dat
Binary files differ
diff --git a/saves/New World--/playerdata/84e9e4f6-df8d-3fc9-b2c7-0eb3b9531d39.dat b/saves/New World--/playerdata/84e9e4f6-df8d-3fc9-b2c7-0eb3b9531d39.dat
new file mode 100644
index 0000000000..3c93194e64
--- /dev/null
+++ b/saves/New World--/playerdata/84e9e4f6-df8d-3fc9-b2c7-0eb3b9531d39.dat
Binary files differ
diff --git a/saves/New World--/playerdata/a7507e7e-f998-31cf-a2de-0cc0fd0a4de6.dat b/saves/New World--/playerdata/a7507e7e-f998-31cf-a2de-0cc0fd0a4de6.dat
new file mode 100644
index 0000000000..3c1221bc16
--- /dev/null
+++ b/saves/New World--/playerdata/a7507e7e-f998-31cf-a2de-0cc0fd0a4de6.dat
Binary files differ
diff --git a/saves/New World--/playerdata/ad4a30d4-53bd-30c6-b482-5d77fb42b2d7.dat b/saves/New World--/playerdata/ad4a30d4-53bd-30c6-b482-5d77fb42b2d7.dat
new file mode 100644
index 0000000000..f83ddcfc9d
--- /dev/null
+++ b/saves/New World--/playerdata/ad4a30d4-53bd-30c6-b482-5d77fb42b2d7.dat
Binary files differ
diff --git a/saves/New World--/playerdata/b743052f-5855-37e7-a97b-fd551acafef4.dat b/saves/New World--/playerdata/b743052f-5855-37e7-a97b-fd551acafef4.dat
new file mode 100644
index 0000000000..63808b9b4b
--- /dev/null
+++ b/saves/New World--/playerdata/b743052f-5855-37e7-a97b-fd551acafef4.dat
Binary files differ
diff --git a/saves/New World--/playerdata/b7afed14-2796-3101-8914-97746139b82d.dat b/saves/New World--/playerdata/b7afed14-2796-3101-8914-97746139b82d.dat
new file mode 100644
index 0000000000..f7150f2be2
--- /dev/null
+++ b/saves/New World--/playerdata/b7afed14-2796-3101-8914-97746139b82d.dat
Binary files differ
diff --git a/saves/New World--/playerdata/ca1bc45b-4820-318c-8fd3-5eba4f447561.dat b/saves/New World--/playerdata/ca1bc45b-4820-318c-8fd3-5eba4f447561.dat
new file mode 100644
index 0000000000..0ca605f6b1
--- /dev/null
+++ b/saves/New World--/playerdata/ca1bc45b-4820-318c-8fd3-5eba4f447561.dat
Binary files differ
diff --git a/saves/New World--/playerdata/cdc68907-d5a3-31ac-b4e8-b157ad0dd513.dat b/saves/New World--/playerdata/cdc68907-d5a3-31ac-b4e8-b157ad0dd513.dat
new file mode 100644
index 0000000000..2c4d2bd746
--- /dev/null
+++ b/saves/New World--/playerdata/cdc68907-d5a3-31ac-b4e8-b157ad0dd513.dat
Binary files differ
diff --git a/saves/New World--/playerdata/e5bad5ae-87fa-3676-b10f-8a571200822c.dat b/saves/New World--/playerdata/e5bad5ae-87fa-3676-b10f-8a571200822c.dat
new file mode 100644
index 0000000000..6340d65502
--- /dev/null
+++ b/saves/New World--/playerdata/e5bad5ae-87fa-3676-b10f-8a571200822c.dat
Binary files differ
diff --git a/saves/New World--/playerdata/e5f3c748-0ea0-3a62-b5e9-4fef46853cc3.dat b/saves/New World--/playerdata/e5f3c748-0ea0-3a62-b5e9-4fef46853cc3.dat
new file mode 100644
index 0000000000..919d7be9ba
--- /dev/null
+++ b/saves/New World--/playerdata/e5f3c748-0ea0-3a62-b5e9-4fef46853cc3.dat
Binary files differ
diff --git a/saves/New World--/playerdata/e664a043-6e9c-3d0d-9b38-cc385e35aba9.dat b/saves/New World--/playerdata/e664a043-6e9c-3d0d-9b38-cc385e35aba9.dat
new file mode 100644
index 0000000000..55bd599135
--- /dev/null
+++ b/saves/New World--/playerdata/e664a043-6e9c-3d0d-9b38-cc385e35aba9.dat
Binary files differ
diff --git a/saves/New World--/playerdata/eb662411-185a-3694-b480-0c259ae00075.dat b/saves/New World--/playerdata/eb662411-185a-3694-b480-0c259ae00075.dat
new file mode 100644
index 0000000000..0c2cb5a897
--- /dev/null
+++ b/saves/New World--/playerdata/eb662411-185a-3694-b480-0c259ae00075.dat
Binary files differ
diff --git a/saves/New World--/playerdata/f0737fb5-4d0f-3bee-a039-92e456a5cc2e.dat b/saves/New World--/playerdata/f0737fb5-4d0f-3bee-a039-92e456a5cc2e.dat
new file mode 100644
index 0000000000..9905ccb821
--- /dev/null
+++ b/saves/New World--/playerdata/f0737fb5-4d0f-3bee-a039-92e456a5cc2e.dat
Binary files differ
diff --git a/saves/New World--/playerdata/fcd8643a-136f-38b6-9c1f-4f5463ba5d9d.dat b/saves/New World--/playerdata/fcd8643a-136f-38b6-9c1f-4f5463ba5d9d.dat
new file mode 100644
index 0000000000..a85e96322c
--- /dev/null
+++ b/saves/New World--/playerdata/fcd8643a-136f-38b6-9c1f-4f5463ba5d9d.dat
Binary files differ
diff --git a/saves/New World--/region/r.-1.0.mca b/saves/New World--/region/r.-1.0.mca
new file mode 100644
index 0000000000..7fdec71820
--- /dev/null
+++ b/saves/New World--/region/r.-1.0.mca
Binary files differ
diff --git a/saves/New World--/region/r.0.0.mca b/saves/New World--/region/r.0.0.mca
new file mode 100644
index 0000000000..549c12c2e2
--- /dev/null
+++ b/saves/New World--/region/r.0.0.mca
Binary files differ
diff --git a/saves/New World--/session.lock b/saves/New World--/session.lock
new file mode 100644
index 0000000000..1701b476fd
--- /dev/null
+++ b/saves/New World--/session.lock
Binary files differ
diff --git a/saves/New World--/stats/13e3d50f-de22-3147-8516-e5bdfb7eb52c.json b/saves/New World--/stats/13e3d50f-de22-3147-8516-e5bdfb7eb52c.json
new file mode 100644
index 0000000000..3d25cdab6b
--- /dev/null
+++ b/saves/New World--/stats/13e3d50f-de22-3147-8516-e5bdfb7eb52c.json
@@ -0,0 +1 @@
+{"stat.playOneMinute":38,"achievement.exploreAllBiomes":{"value":0,"progress":["Extreme Hills"]}} \ No newline at end of file
diff --git a/saves/New World--/stats/18b3a035-3e67-34ed-889e-932160306e4f.json b/saves/New World--/stats/18b3a035-3e67-34ed-889e-932160306e4f.json
new file mode 100644
index 0000000000..3e652d4405
--- /dev/null
+++ b/saves/New World--/stats/18b3a035-3e67-34ed-889e-932160306e4f.json
@@ -0,0 +1 @@
+{"stat.walkOneCm":608,"stat.playOneMinute":98,"achievement.exploreAllBiomes":{"value":0,"progress":["Extreme Hills"]}} \ No newline at end of file
diff --git a/saves/New World--/stats/1b8d41ee-20e2-3849-a434-0d774a740ae1.json b/saves/New World--/stats/1b8d41ee-20e2-3849-a434-0d774a740ae1.json
new file mode 100644
index 0000000000..0c682458d6
--- /dev/null
+++ b/saves/New World--/stats/1b8d41ee-20e2-3849-a434-0d774a740ae1.json
@@ -0,0 +1 @@
+{"stat.walkOneCm":349,"stat.playOneMinute":211,"achievement.openInventory":1,"achievement.exploreAllBiomes":{"value":0,"progress":["Extreme Hills"]}} \ No newline at end of file
diff --git a/saves/New World--/stats/218a3571-b707-3992-b46a-db90429dc7f7.json b/saves/New World--/stats/218a3571-b707-3992-b46a-db90429dc7f7.json
new file mode 100644
index 0000000000..99b4979959
--- /dev/null
+++ b/saves/New World--/stats/218a3571-b707-3992-b46a-db90429dc7f7.json
@@ -0,0 +1 @@
+{"stat.walkOneCm":521,"stat.playOneMinute":307,"achievement.openInventory":1,"achievement.exploreAllBiomes":{"value":0,"progress":["Extreme Hills"]}} \ No newline at end of file
diff --git a/saves/New World--/stats/24a37f0a-2af1-3ac4-9024-e5424f979e18.json b/saves/New World--/stats/24a37f0a-2af1-3ac4-9024-e5424f979e18.json
new file mode 100644
index 0000000000..2b3b4d77f2
--- /dev/null
+++ b/saves/New World--/stats/24a37f0a-2af1-3ac4-9024-e5424f979e18.json
@@ -0,0 +1 @@
+{"stat.playOneMinute":236,"achievement.openInventory":1,"achievement.exploreAllBiomes":{"value":0,"progress":["Extreme Hills"]}} \ No newline at end of file
diff --git a/saves/New World--/stats/26d3a8a7-c365-3f1b-98bd-1e86d16aa724.json b/saves/New World--/stats/26d3a8a7-c365-3f1b-98bd-1e86d16aa724.json
new file mode 100644
index 0000000000..58c08b56c6
--- /dev/null
+++ b/saves/New World--/stats/26d3a8a7-c365-3f1b-98bd-1e86d16aa724.json
@@ -0,0 +1 @@
+{"stat.walkOneCm":107,"stat.playOneMinute":437,"achievement.openInventory":1,"achievement.exploreAllBiomes":{"value":0,"progress":["Extreme Hills"]}} \ No newline at end of file
diff --git a/saves/New World--/stats/3b1946fe-c2d1-3fab-8b74-bd39d8b52fb4.json b/saves/New World--/stats/3b1946fe-c2d1-3fab-8b74-bd39d8b52fb4.json
new file mode 100644
index 0000000000..7e9b352c24
--- /dev/null
+++ b/saves/New World--/stats/3b1946fe-c2d1-3fab-8b74-bd39d8b52fb4.json
@@ -0,0 +1 @@
+{"stat.walkOneCm":150,"stat.playOneMinute":97,"achievement.exploreAllBiomes":{"value":0,"progress":["Extreme Hills"]}} \ No newline at end of file
diff --git a/saves/New World--/stats/5652713c-668e-47f3-853a-3fa959a9dfd3.json b/saves/New World--/stats/5652713c-668e-47f3-853a-3fa959a9dfd3.json
new file mode 100644
index 0000000000..711078571b
--- /dev/null
+++ b/saves/New World--/stats/5652713c-668e-47f3-853a-3fa959a9dfd3.json
@@ -0,0 +1 @@
+{"stat.walkOneCm":33511,"achievement.openInventory":21,"stat.killEntity.Enderman":1,"stat.mobKills":3,"stat.useItem.383":143,"stat.flyOneCm":8416,"stat.drop":79,"stat.jump":26,"stat.playOneMinute":968764,"stat.killEntity.BloodSteelHostileMob":1,"stat.killEntity.BloodSteelMob":1,"stat.damageDealt":1080,"achievement.mineWood":2,"achievement.exploreAllBiomes":{"value":0,"progress":["River","Plains","Extreme Hills"]}} \ No newline at end of file
diff --git a/saves/New World--/stats/56a50a28-2026-3b27-8279-243e3ff82a5a.json b/saves/New World--/stats/56a50a28-2026-3b27-8279-243e3ff82a5a.json
new file mode 100644
index 0000000000..570f7a915a
--- /dev/null
+++ b/saves/New World--/stats/56a50a28-2026-3b27-8279-243e3ff82a5a.json
@@ -0,0 +1 @@
+{"stat.walkOneCm":2957,"stat.drop":7,"stat.playOneMinute":3467,"achievement.openInventory":4,"achievement.exploreAllBiomes":{"value":0,"progress":["Extreme Hills"]}} \ No newline at end of file
diff --git a/saves/New World--/stats/588419cf-d7d5-3f7b-8fe7-89996b3b7551.json b/saves/New World--/stats/588419cf-d7d5-3f7b-8fe7-89996b3b7551.json
new file mode 100644
index 0000000000..89ce0abb8f
--- /dev/null
+++ b/saves/New World--/stats/588419cf-d7d5-3f7b-8fe7-89996b3b7551.json
@@ -0,0 +1 @@
+{"stat.walkOneCm":74,"stat.playOneMinute":64,"achievement.exploreAllBiomes":{"value":0,"progress":["Extreme Hills"]}} \ No newline at end of file
diff --git a/saves/New World--/stats/5d36a45e-9473-37e3-8760-623ba7be7a5c.json b/saves/New World--/stats/5d36a45e-9473-37e3-8760-623ba7be7a5c.json
new file mode 100644
index 0000000000..36991548a5
--- /dev/null
+++ b/saves/New World--/stats/5d36a45e-9473-37e3-8760-623ba7be7a5c.json
@@ -0,0 +1 @@
+{"stat.playOneMinute":179,"achievement.exploreAllBiomes":{"value":0,"progress":["Extreme Hills"]}} \ No newline at end of file
diff --git a/saves/New World--/stats/84e9e4f6-df8d-3fc9-b2c7-0eb3b9531d39.json b/saves/New World--/stats/84e9e4f6-df8d-3fc9-b2c7-0eb3b9531d39.json
new file mode 100644
index 0000000000..a564845dc0
--- /dev/null
+++ b/saves/New World--/stats/84e9e4f6-df8d-3fc9-b2c7-0eb3b9531d39.json
@@ -0,0 +1 @@
+{"stat.walkOneCm":1315,"stat.drop":6,"stat.playOneMinute":1581,"achievement.openInventory":3,"achievement.exploreAllBiomes":{"value":0,"progress":["Extreme Hills"]}} \ No newline at end of file
diff --git a/saves/New World--/stats/a7507e7e-f998-31cf-a2de-0cc0fd0a4de6.json b/saves/New World--/stats/a7507e7e-f998-31cf-a2de-0cc0fd0a4de6.json
new file mode 100644
index 0000000000..8087a45b96
--- /dev/null
+++ b/saves/New World--/stats/a7507e7e-f998-31cf-a2de-0cc0fd0a4de6.json
@@ -0,0 +1 @@
+{"stat.playOneMinute":21} \ No newline at end of file
diff --git a/saves/New World--/stats/ad4a30d4-53bd-30c6-b482-5d77fb42b2d7.json b/saves/New World--/stats/ad4a30d4-53bd-30c6-b482-5d77fb42b2d7.json
new file mode 100644
index 0000000000..3f50409f5c
--- /dev/null
+++ b/saves/New World--/stats/ad4a30d4-53bd-30c6-b482-5d77fb42b2d7.json
@@ -0,0 +1 @@
+{"stat.playOneMinute":308,"achievement.exploreAllBiomes":{"value":0,"progress":["Extreme Hills"]}} \ No newline at end of file
diff --git a/saves/New World--/stats/b743052f-5855-37e7-a97b-fd551acafef4.json b/saves/New World--/stats/b743052f-5855-37e7-a97b-fd551acafef4.json
new file mode 100644
index 0000000000..429b6d71ef
--- /dev/null
+++ b/saves/New World--/stats/b743052f-5855-37e7-a97b-fd551acafef4.json
@@ -0,0 +1 @@
+{"stat.playOneMinute":678,"achievement.exploreAllBiomes":{"value":0,"progress":["Extreme Hills"]}} \ No newline at end of file
diff --git a/saves/New World--/stats/b7afed14-2796-3101-8914-97746139b82d.json b/saves/New World--/stats/b7afed14-2796-3101-8914-97746139b82d.json
new file mode 100644
index 0000000000..be5fff0fad
--- /dev/null
+++ b/saves/New World--/stats/b7afed14-2796-3101-8914-97746139b82d.json
@@ -0,0 +1 @@
+{"stat.walkOneCm":143,"stat.drop":1,"stat.playOneMinute":333,"achievement.exploreAllBiomes":{"value":0,"progress":["Extreme Hills"]}} \ No newline at end of file
diff --git a/saves/New World--/stats/ca1bc45b-4820-318c-8fd3-5eba4f447561.json b/saves/New World--/stats/ca1bc45b-4820-318c-8fd3-5eba4f447561.json
new file mode 100644
index 0000000000..787c0e2cf1
--- /dev/null
+++ b/saves/New World--/stats/ca1bc45b-4820-318c-8fd3-5eba4f447561.json
@@ -0,0 +1 @@
+{"stat.playOneMinute":254,"achievement.openInventory":1,"achievement.exploreAllBiomes":{"value":0,"progress":["Extreme Hills"]}} \ No newline at end of file
diff --git a/saves/New World--/stats/cdc68907-d5a3-31ac-b4e8-b157ad0dd513.json b/saves/New World--/stats/cdc68907-d5a3-31ac-b4e8-b157ad0dd513.json
new file mode 100644
index 0000000000..28136b6bc9
--- /dev/null
+++ b/saves/New World--/stats/cdc68907-d5a3-31ac-b4e8-b157ad0dd513.json
@@ -0,0 +1 @@
+{"stat.walkOneCm":702,"stat.playOneMinute":3920,"achievement.openInventory":1,"achievement.exploreAllBiomes":{"value":0,"progress":["Extreme Hills"]}} \ No newline at end of file
diff --git a/saves/New World--/stats/e5bad5ae-87fa-3676-b10f-8a571200822c.json b/saves/New World--/stats/e5bad5ae-87fa-3676-b10f-8a571200822c.json
new file mode 100644
index 0000000000..78537a5896
--- /dev/null
+++ b/saves/New World--/stats/e5bad5ae-87fa-3676-b10f-8a571200822c.json
@@ -0,0 +1 @@
+{"stat.playOneMinute":842,"achievement.openInventory":2,"achievement.exploreAllBiomes":{"value":0,"progress":["Extreme Hills"]}} \ No newline at end of file
diff --git a/saves/New World--/stats/e5f3c748-0ea0-3a62-b5e9-4fef46853cc3.json b/saves/New World--/stats/e5f3c748-0ea0-3a62-b5e9-4fef46853cc3.json
new file mode 100644
index 0000000000..b4e4ea5eeb
--- /dev/null
+++ b/saves/New World--/stats/e5f3c748-0ea0-3a62-b5e9-4fef46853cc3.json
@@ -0,0 +1 @@
+{"stat.playOneMinute":36,"achievement.exploreAllBiomes":{"value":0,"progress":["Extreme Hills"]}} \ No newline at end of file
diff --git a/saves/New World--/stats/e664a043-6e9c-3d0d-9b38-cc385e35aba9.json b/saves/New World--/stats/e664a043-6e9c-3d0d-9b38-cc385e35aba9.json
new file mode 100644
index 0000000000..60927490e7
--- /dev/null
+++ b/saves/New World--/stats/e664a043-6e9c-3d0d-9b38-cc385e35aba9.json
@@ -0,0 +1 @@
+{"stat.walkOneCm":1525,"stat.drop":6,"stat.playOneMinute":8756,"achievement.openInventory":4,"achievement.exploreAllBiomes":{"value":0,"progress":["Extreme Hills"]}} \ No newline at end of file
diff --git a/saves/New World--/stats/eb662411-185a-3694-b480-0c259ae00075.json b/saves/New World--/stats/eb662411-185a-3694-b480-0c259ae00075.json
new file mode 100644
index 0000000000..ef8d4ae696
--- /dev/null
+++ b/saves/New World--/stats/eb662411-185a-3694-b480-0c259ae00075.json
@@ -0,0 +1 @@
+{"stat.playOneMinute":46,"achievement.exploreAllBiomes":{"value":0,"progress":["Extreme Hills"]}} \ No newline at end of file
diff --git a/saves/New World--/stats/f0737fb5-4d0f-3bee-a039-92e456a5cc2e.json b/saves/New World--/stats/f0737fb5-4d0f-3bee-a039-92e456a5cc2e.json
new file mode 100644
index 0000000000..e52ce81a2c
--- /dev/null
+++ b/saves/New World--/stats/f0737fb5-4d0f-3bee-a039-92e456a5cc2e.json
@@ -0,0 +1 @@
+{"stat.walkOneCm":567,"stat.drop":1,"stat.playOneMinute":2227,"achievement.openInventory":3,"achievement.exploreAllBiomes":{"value":0,"progress":["Extreme Hills"]}} \ No newline at end of file
diff --git a/saves/New World--/stats/fcd8643a-136f-38b6-9c1f-4f5463ba5d9d.json b/saves/New World--/stats/fcd8643a-136f-38b6-9c1f-4f5463ba5d9d.json
new file mode 100644
index 0000000000..4c7aa83746
--- /dev/null
+++ b/saves/New World--/stats/fcd8643a-136f-38b6-9c1f-4f5463ba5d9d.json
@@ -0,0 +1 @@
+{"stat.playOneMinute":486,"achievement.openInventory":1,"achievement.exploreAllBiomes":{"value":0,"progress":["Extreme Hills"]}} \ No newline at end of file
diff --git a/saves/New World--20150828-152510.zip b/saves/New World--20150828-152510.zip
new file mode 100644
index 0000000000..3c6793afef
--- /dev/null
+++ b/saves/New World--20150828-152510.zip
Binary files differ
diff --git a/saves/New World--20150828-152730.zip b/saves/New World--20150828-152730.zip
new file mode 100644
index 0000000000..c998bde662
--- /dev/null
+++ b/saves/New World--20150828-152730.zip
Binary files differ
diff --git a/saves/New World--20150828-153745.zip b/saves/New World--20150828-153745.zip
new file mode 100644
index 0000000000..5cf5b18c21
--- /dev/null
+++ b/saves/New World--20150828-153745.zip
Binary files differ
diff --git a/saves/New World--20150828-155212.zip b/saves/New World--20150828-155212.zip
new file mode 100644
index 0000000000..244ca80d23
--- /dev/null
+++ b/saves/New World--20150828-155212.zip
Binary files differ
diff --git a/saves/New World--20150831-213540.zip b/saves/New World--20150831-213540.zip
new file mode 100644
index 0000000000..84d8970258
--- /dev/null
+++ b/saves/New World--20150831-213540.zip
Binary files differ
diff --git a/saves/New World--20150901-172556.zip b/saves/New World--20150901-172556.zip
new file mode 100644
index 0000000000..3d8303263c
--- /dev/null
+++ b/saves/New World--20150901-172556.zip
Binary files differ
diff --git a/saves/New World--20150902-195402.zip b/saves/New World--20150902-195402.zip
new file mode 100644
index 0000000000..950bb923b6
--- /dev/null
+++ b/saves/New World--20150902-195402.zip
Binary files differ
diff --git a/saves/New World--20150903-004254.zip b/saves/New World--20150903-004254.zip
new file mode 100644
index 0000000000..0e47fbc6fe
--- /dev/null
+++ b/saves/New World--20150903-004254.zip
Binary files differ
diff --git a/saves/New World--20150903-010421.zip b/saves/New World--20150903-010421.zip
new file mode 100644
index 0000000000..235483f88b
--- /dev/null
+++ b/saves/New World--20150903-010421.zip
Binary files differ
diff --git a/saves/New World--20150903-012109.zip b/saves/New World--20150903-012109.zip
new file mode 100644
index 0000000000..537e7afa0e
--- /dev/null
+++ b/saves/New World--20150903-012109.zip
Binary files differ
diff --git a/saves/New World-/DIM-1/data/villages.dat b/saves/New World-/DIM-1/data/villages.dat
new file mode 100644
index 0000000000..1290d14d5c
--- /dev/null
+++ b/saves/New World-/DIM-1/data/villages.dat
Binary files differ
diff --git a/saves/New World-/DIM-1/forcedchunks.dat b/saves/New World-/DIM-1/forcedchunks.dat
new file mode 100644
index 0000000000..e4345475ef
--- /dev/null
+++ b/saves/New World-/DIM-1/forcedchunks.dat
Binary files differ
diff --git a/saves/New World-/DIM1/data/villages.dat b/saves/New World-/DIM1/data/villages.dat
new file mode 100644
index 0000000000..1290d14d5c
--- /dev/null
+++ b/saves/New World-/DIM1/data/villages.dat
Binary files differ
diff --git a/saves/New World-/DIM1/forcedchunks.dat b/saves/New World-/DIM1/forcedchunks.dat
new file mode 100644
index 0000000000..e4345475ef
--- /dev/null
+++ b/saves/New World-/DIM1/forcedchunks.dat
Binary files differ
diff --git a/saves/New World-/data/Mineshaft.dat b/saves/New World-/data/Mineshaft.dat
new file mode 100644
index 0000000000..c198db34f7
--- /dev/null
+++ b/saves/New World-/data/Mineshaft.dat
Binary files differ
diff --git a/saves/New World-/data/Temple.dat b/saves/New World-/data/Temple.dat
new file mode 100644
index 0000000000..a3f54fce38
--- /dev/null
+++ b/saves/New World-/data/Temple.dat
Binary files differ
diff --git a/saves/New World-/data/Village.dat b/saves/New World-/data/Village.dat
new file mode 100644
index 0000000000..108b67d6b8
--- /dev/null
+++ b/saves/New World-/data/Village.dat
Binary files differ
diff --git a/saves/New World-/data/villages.dat b/saves/New World-/data/villages.dat
new file mode 100644
index 0000000000..95544d234d
--- /dev/null
+++ b/saves/New World-/data/villages.dat
Binary files differ
diff --git a/saves/New World-/enderio/dimensionalTransceiver.json b/saves/New World-/enderio/dimensionalTransceiver.json
new file mode 100644
index 0000000000..0637a088a0
--- /dev/null
+++ b/saves/New World-/enderio/dimensionalTransceiver.json
@@ -0,0 +1 @@
+[] \ No newline at end of file
diff --git a/saves/New World-/forcedchunks.dat b/saves/New World-/forcedchunks.dat
new file mode 100644
index 0000000000..e4345475ef
--- /dev/null
+++ b/saves/New World-/forcedchunks.dat
Binary files differ
diff --git a/saves/New World-/level.dat b/saves/New World-/level.dat
new file mode 100644
index 0000000000..fcd87fbcef
--- /dev/null
+++ b/saves/New World-/level.dat
Binary files differ
diff --git a/saves/New World-/level.dat_mcr b/saves/New World-/level.dat_mcr
new file mode 100644
index 0000000000..468dd4756c
--- /dev/null
+++ b/saves/New World-/level.dat_mcr
Binary files differ
diff --git a/saves/New World-/level.dat_old b/saves/New World-/level.dat_old
new file mode 100644
index 0000000000..8878ccb673
--- /dev/null
+++ b/saves/New World-/level.dat_old
Binary files differ
diff --git a/saves/New World-/playerdata/5652713c-668e-47f3-853a-3fa959a9dfd3.dat b/saves/New World-/playerdata/5652713c-668e-47f3-853a-3fa959a9dfd3.dat
new file mode 100644
index 0000000000..6cb203edeb
--- /dev/null
+++ b/saves/New World-/playerdata/5652713c-668e-47f3-853a-3fa959a9dfd3.dat
Binary files differ
diff --git a/saves/New World-/region/r.-1.0.mca b/saves/New World-/region/r.-1.0.mca
new file mode 100644
index 0000000000..95493d6f15
--- /dev/null
+++ b/saves/New World-/region/r.-1.0.mca
Binary files differ
diff --git a/saves/New World-/region/r.-1.1.mca b/saves/New World-/region/r.-1.1.mca
new file mode 100644
index 0000000000..df13b380a9
--- /dev/null
+++ b/saves/New World-/region/r.-1.1.mca
Binary files differ
diff --git a/saves/New World-/region/r.0.0.mca b/saves/New World-/region/r.0.0.mca
new file mode 100644
index 0000000000..3260ffdc49
--- /dev/null
+++ b/saves/New World-/region/r.0.0.mca
Binary files differ
diff --git a/saves/New World-/region/r.0.1.mca b/saves/New World-/region/r.0.1.mca
new file mode 100644
index 0000000000..91f5753770
--- /dev/null
+++ b/saves/New World-/region/r.0.1.mca
Binary files differ
diff --git a/saves/New World-/session.lock b/saves/New World-/session.lock
new file mode 100644
index 0000000000..1d3a3d7016
--- /dev/null
+++ b/saves/New World-/session.lock
Binary files differ
diff --git a/saves/New World-/stats/5652713c-668e-47f3-853a-3fa959a9dfd3.json b/saves/New World-/stats/5652713c-668e-47f3-853a-3fa959a9dfd3.json
new file mode 100644
index 0000000000..52c40a41f6
--- /dev/null
+++ b/saves/New World-/stats/5652713c-668e-47f3-853a-3fa959a9dfd3.json
@@ -0,0 +1 @@
+{"stat.useItem.383":19,"stat.flyOneCm":45711,"stat.walkOneCm":21517,"stat.drop":15,"stat.jump":36,"stat.swimOneCm":185,"stat.playOneMinute":558537,"achievement.openInventory":39,"stat.damageDealt":10,"achievement.exploreAllBiomes":{"value":0,"progress":["ForestHills","Plains"]}} \ No newline at end of file
diff --git a/saves/New World-/uptime.txt b/saves/New World-/uptime.txt
new file mode 100644
index 0000000000..6575dc2b64
--- /dev/null
+++ b/saves/New World-/uptime.txt
@@ -0,0 +1,21 @@
+#Server Uptime
+#Fri Aug 28 01:46:31 AEST 2015
+played_time_0=50105
+players=1
+world_days=1
+first_joined_0=1440690341548
+server_lastday=1440690340948
+longest_life_0=0
+player_lastday_0=1440690341548
+last_death_0=1440690341548
+number_of_deaths_0=0
+server_ondays=1
+server_uptime=50705
+shortest_life_0=0
+name_0=Draknyte1
+player_ondays_0=1
+last_world_time=993
+last_active_0=1440690391653
+alive_time_0=50105
+this_death_0=1440690341548
+last_life_0=0
diff --git a/saves/New World-20150903-043620.zip b/saves/New World-20150903-043620.zip
new file mode 100644
index 0000000000..4fa7a870bf
--- /dev/null
+++ b/saves/New World-20150903-043620.zip
Binary files differ
diff --git a/saves/New World/DIM-1/data/villages.dat b/saves/New World/DIM-1/data/villages.dat
new file mode 100644
index 0000000000..4c26bd74de
--- /dev/null
+++ b/saves/New World/DIM-1/data/villages.dat
Binary files differ
diff --git a/saves/New World/DIM-1/forcedchunks.dat b/saves/New World/DIM-1/forcedchunks.dat
new file mode 100644
index 0000000000..e4345475ef
--- /dev/null
+++ b/saves/New World/DIM-1/forcedchunks.dat
Binary files differ
diff --git a/saves/New World/DIM1/data/villages.dat b/saves/New World/DIM1/data/villages.dat
new file mode 100644
index 0000000000..4c26bd74de
--- /dev/null
+++ b/saves/New World/DIM1/data/villages.dat
Binary files differ
diff --git a/saves/New World/DIM1/forcedchunks.dat b/saves/New World/DIM1/forcedchunks.dat
new file mode 100644
index 0000000000..e4345475ef
--- /dev/null
+++ b/saves/New World/DIM1/forcedchunks.dat
Binary files differ
diff --git a/saves/New World/data/Mineshaft.dat b/saves/New World/data/Mineshaft.dat
new file mode 100644
index 0000000000..d630c466d8
--- /dev/null
+++ b/saves/New World/data/Mineshaft.dat
Binary files differ
diff --git a/saves/New World/data/villages.dat b/saves/New World/data/villages.dat
new file mode 100644
index 0000000000..4c26bd74de
--- /dev/null
+++ b/saves/New World/data/villages.dat
Binary files differ
diff --git a/saves/New World/forcedchunks.dat b/saves/New World/forcedchunks.dat
new file mode 100644
index 0000000000..e4345475ef
--- /dev/null
+++ b/saves/New World/forcedchunks.dat
Binary files differ
diff --git a/saves/New World/level.dat b/saves/New World/level.dat
new file mode 100644
index 0000000000..9feb6448a2
--- /dev/null
+++ b/saves/New World/level.dat
Binary files differ
diff --git a/saves/New World/level.dat_mcr b/saves/New World/level.dat_mcr
new file mode 100644
index 0000000000..c3a3540aaa
--- /dev/null
+++ b/saves/New World/level.dat_mcr
Binary files differ
diff --git a/saves/New World/level.dat_old b/saves/New World/level.dat_old
new file mode 100644
index 0000000000..0daf62b7ba
--- /dev/null
+++ b/saves/New World/level.dat_old
Binary files differ
diff --git a/saves/New World/playerdata/5652713c-668e-47f3-853a-3fa959a9dfd3.dat b/saves/New World/playerdata/5652713c-668e-47f3-853a-3fa959a9dfd3.dat
new file mode 100644
index 0000000000..3c90b47fa9
--- /dev/null
+++ b/saves/New World/playerdata/5652713c-668e-47f3-853a-3fa959a9dfd3.dat
Binary files differ
diff --git a/saves/New World/region/r.0.-1.mca b/saves/New World/region/r.0.-1.mca
new file mode 100644
index 0000000000..b396c5f797
--- /dev/null
+++ b/saves/New World/region/r.0.-1.mca
Binary files differ
diff --git a/saves/New World/region/r.0.0.mca b/saves/New World/region/r.0.0.mca
new file mode 100644
index 0000000000..14d130303c
--- /dev/null
+++ b/saves/New World/region/r.0.0.mca
Binary files differ
diff --git a/saves/New World/session.lock b/saves/New World/session.lock
new file mode 100644
index 0000000000..f53634b189
--- /dev/null
+++ b/saves/New World/session.lock
Binary files differ
diff --git a/saves/New World/stats/5652713c-668e-47f3-853a-3fa959a9dfd3.json b/saves/New World/stats/5652713c-668e-47f3-853a-3fa959a9dfd3.json
new file mode 100644
index 0000000000..cc312e2f39
--- /dev/null
+++ b/saves/New World/stats/5652713c-668e-47f3-853a-3fa959a9dfd3.json
@@ -0,0 +1 @@
+{"stat.useItem.383":12,"stat.flyOneCm":3695,"stat.walkOneCm":5484,"stat.drop":2,"stat.jump":3,"stat.playOneMinute":10266,"achievement.openInventory":6,"achievement.exploreAllBiomes":{"value":0,"progress":["Plains"]}} \ No newline at end of file
diff --git a/saves/New World/uptime.txt b/saves/New World/uptime.txt
new file mode 100644
index 0000000000..881e0a4356
--- /dev/null
+++ b/saves/New World/uptime.txt
@@ -0,0 +1,21 @@
+#Server Uptime
+#Tue Aug 25 03:14:48 AEST 2015
+played_time_0=162673
+players=1
+world_days=1
+first_joined_0=1440434794888
+server_lastday=1440434794142
+longest_life_0=0
+player_lastday_0=1440434794888
+last_death_0=1440434794888
+number_of_deaths_0=0
+server_ondays=1
+server_uptime=164240
+shortest_life_0=0
+name_0=Draknyte1
+player_ondays_0=1
+last_world_time=3144
+last_active_0=1440436488105
+alive_time_0=162673
+this_death_0=1440434794888
+last_life_0=0
diff --git a/server.properties b/server.properties
new file mode 100644
index 0000000000..532891d8a6
--- /dev/null
+++ b/server.properties
@@ -0,0 +1,33 @@
+#Minecraft server properties
+#Mon Oct 05 13:01:06 AEST 2015
+generator-settings=
+op-permission-level=4
+allow-nether=true
+level-name=world
+enable-query=false
+allow-flight=false
+announce-player-achievements=true
+server-port=25565
+level-type=DEFAULT
+enable-rcon=false
+force-gamemode=false
+level-seed=
+server-ip=
+max-build-height=256
+spawn-npcs=true
+white-list=false
+spawn-animals=true
+snooper-enabled=true
+hardcore=false
+online-mode=true
+resource-pack=
+pvp=true
+difficulty=1
+enable-command-block=false
+player-idle-timeout=0
+gamemode=0
+max-players=20
+spawn-monsters=true
+view-distance=10
+generate-structures=true
+motd=A Minecraft Server
diff --git a/servers.dat b/servers.dat
new file mode 100644
index 0000000000..f107d801fb
--- /dev/null
+++ b/servers.dat
Binary files differ
diff --git a/src/Java/binnie/Binnie.java b/src/Java/binnie/Binnie.java
new file mode 100644
index 0000000000..a8bd664f1a
--- /dev/null
+++ b/src/Java/binnie/Binnie.java
@@ -0,0 +1,24 @@
+package binnie;
+
+import binnie.core.ManagerBase;
+import binnie.core.genetics.ManagerGenetics;
+import binnie.core.item.ManagerItem;
+import binnie.core.language.ManagerLanguage;
+import binnie.core.liquid.ManagerLiquid;
+import binnie.core.machines.ManagerMachine;
+import binnie.core.mod.config.ManagerConfig;
+import binnie.core.resource.ManagerResource;
+import java.util.ArrayList;
+import java.util.List;
+
+public final class Binnie
+{
+ public static final List<ManagerBase> Managers = new ArrayList();
+ public static final ManagerLanguage Language = new ManagerLanguage();
+ public static final ManagerGenetics Genetics = new ManagerGenetics();
+ public static final ManagerConfig Configuration = new ManagerConfig();
+ public static final ManagerLiquid Liquid = new ManagerLiquid();
+ public static final ManagerMachine Machine = new ManagerMachine();
+ public static final ManagerItem Item = new ManagerItem();
+ public static final ManagerResource Resource = new ManagerResource();
+}
diff --git a/src/Java/binnie/Constants.java b/src/Java/binnie/Constants.java
new file mode 100644
index 0000000000..30abf2c3c2
--- /dev/null
+++ b/src/Java/binnie/Constants.java
@@ -0,0 +1,11 @@
+package binnie;
+
+public final class Constants
+{
+ public static final String LiquidJuice = "juice";
+ public static final String LiquidWater = "water";
+ public static final String LiquidSeedOil = "seedoil";
+ public static final String LiquidCreosote = "Creosote Oil";
+ public static final String LiquidEthanol = "bioethanol";
+ public static final String LiquidHoney = "for.honey";
+}
diff --git a/src/Java/binnie/core/AbstractMod.java b/src/Java/binnie/core/AbstractMod.java
new file mode 100644
index 0000000000..74f274cdb7
--- /dev/null
+++ b/src/Java/binnie/core/AbstractMod.java
@@ -0,0 +1,158 @@
+package binnie.core;
+
+import binnie.Binnie;
+import binnie.core.gui.IBinnieGUID;
+import binnie.core.mod.config.ManagerConfig;
+import binnie.core.mod.parser.FieldParser;
+import binnie.core.network.BinniePacketHandler;
+import binnie.core.network.IPacketID;
+import binnie.core.network.IPacketProvider;
+import binnie.core.network.packet.MessageBinnie;
+import binnie.core.proxy.IProxyCore;
+import cpw.mods.fml.common.eventhandler.EventBus;
+import cpw.mods.fml.common.network.NetworkRegistry;
+import cpw.mods.fml.common.network.simpleimpl.SimpleNetworkWrapper;
+import cpw.mods.fml.relauncher.Side;
+import java.lang.reflect.Field;
+import java.util.ArrayList;
+import java.util.LinkedHashSet;
+import java.util.List;
+import net.minecraftforge.common.MinecraftForge;
+
+public abstract class AbstractMod
+ implements IPacketProvider, IInitializable
+{
+ private SimpleNetworkWrapper wrapper;
+
+ public AbstractMod()
+ {
+ BinnieCore.registerMod(this);
+ MinecraftForge.EVENT_BUS.register(this);
+ }
+
+ public abstract boolean isActive();
+
+ public abstract String getChannel();
+
+ public IPacketID[] getPacketIDs()
+ {
+ return new IPacketID[0];
+ }
+
+ public IBinnieGUID[] getGUIDs()
+ {
+ return new IBinnieGUID[0];
+ }
+
+ public Class[] getConfigs()
+ {
+ return new Class[0];
+ }
+
+ public abstract IProxyCore getProxy();
+
+ public abstract String getModID();
+
+ public SimpleNetworkWrapper getNetworkWrapper()
+ {
+ return this.wrapper;
+ }
+
+ protected abstract Class<? extends BinniePacketHandler> getPacketHandler();
+
+ public void preInit()
+ {
+ if (!isActive()) {
+ return;
+ }
+ if (getConfigs() != null) {
+ for (Class cls : getConfigs()) {
+ Binnie.Configuration.registerConfiguration(cls, this);
+ }
+ }
+ getProxy().preInit();
+ for (IInitializable module : this.modules) {
+ module.preInit();
+ }
+ for (Field field : getClass().getFields()) {
+ this.fields.add(field);
+ }
+ for (Class cls : getClass().getClasses()) {
+ for (Field field : getClass().getFields()) {
+ this.fields.add(field);
+ }
+ }
+ for (IInitializable module : this.modules) {
+ for (Field field : module.getClass().getFields()) {
+ this.fields.add(field);
+ }
+ }
+ for (Field field : this.fields) {
+ try
+ {
+ FieldParser.preInitParse(field, this);
+ }
+ catch (Exception e)
+ {
+ throw new RuntimeException(e);
+ }
+ }
+ }
+
+ public void init()
+ {
+ if (!isActive()) {
+ return;
+ }
+ getProxy().init();
+
+ this.wrapper = NetworkRegistry.INSTANCE.newSimpleChannel(getChannel());
+
+ this.wrapper.registerMessage(getPacketHandler(), MessageBinnie.class, 1, Side.CLIENT);
+ this.wrapper.registerMessage(getPacketHandler(), MessageBinnie.class, 1, Side.SERVER);
+ for (IInitializable module : this.modules) {
+ module.init();
+ }
+ for (Field field : this.fields) {
+ try
+ {
+ FieldParser.initParse(field, this);
+ }
+ catch (Exception e)
+ {
+ throw new RuntimeException(e);
+ }
+ }
+ }
+
+ private LinkedHashSet<Field> fields = new LinkedHashSet();
+
+ public void postInit()
+ {
+ if (!isActive()) {
+ return;
+ }
+ getProxy().postInit();
+ for (IInitializable module : this.modules) {
+ module.postInit();
+ }
+ for (Field field : this.fields) {
+ try
+ {
+ FieldParser.postInitParse(field, this);
+ }
+ catch (Exception e)
+ {
+ throw new RuntimeException(e);
+ }
+ }
+ }
+
+ protected final void addModule(IInitializable init)
+ {
+ this.modules.add(init);
+ MinecraftForge.EVENT_BUS.register(init);
+ }
+
+ protected List<IInitializable> modules = new ArrayList();
+}
diff --git a/src/Java/binnie/core/BinnieCore.java b/src/Java/binnie/core/BinnieCore.java
new file mode 100644
index 0000000000..6f1ce219ef
--- /dev/null
+++ b/src/Java/binnie/core/BinnieCore.java
@@ -0,0 +1,259 @@
+package binnie.core;
+
+import binnie.Binnie;
+import binnie.core.block.MultipassBlockRenderer;
+import binnie.core.block.TileEntityMetadata;
+import binnie.core.gui.BinnieCoreGUI;
+import binnie.core.gui.BinnieGUIHandler;
+import binnie.core.gui.IBinnieGUID;
+import binnie.core.item.ItemFieldKit;
+import binnie.core.item.ItemGenesis;
+import binnie.core.item.ModuleItems;
+import binnie.core.liquid.FluidContainer;
+import binnie.core.liquid.ItemFluidContainer;
+import binnie.core.liquid.ManagerLiquid;
+import binnie.core.machines.MachineGroup;
+import binnie.core.machines.storage.ModuleStorage;
+import binnie.core.mod.config.ConfigurationMain;
+import binnie.core.mod.config.ConfigurationMods;
+import binnie.core.mod.config.ManagerConfig;
+import binnie.core.mod.parser.FieldParser;
+import binnie.core.mod.parser.ItemParser;
+import binnie.core.network.BinnieCorePacketID;
+import binnie.core.network.BinniePacketHandler;
+import binnie.core.network.IPacketID;
+import binnie.core.proxy.BinnieProxy;
+import binnie.core.proxy.IBinnieProxy;
+import binnie.core.resource.ManagerResource;
+import binnie.core.triggers.ModuleTrigger;
+import binnie.craftgui.minecraft.ModuleCraftGUI;
+import com.mojang.authlib.GameProfile;
+import cpw.mods.fml.client.registry.RenderingRegistry;
+import cpw.mods.fml.common.Loader;
+import cpw.mods.fml.common.Mod;
+import cpw.mods.fml.common.Mod.EventHandler;
+import cpw.mods.fml.common.Mod.Instance;
+import cpw.mods.fml.common.SidedProxy;
+import cpw.mods.fml.common.event.FMLInitializationEvent;
+import cpw.mods.fml.common.event.FMLPostInitializationEvent;
+import cpw.mods.fml.common.event.FMLPreInitializationEvent;
+import cpw.mods.fml.common.eventhandler.SubscribeEvent;
+import cpw.mods.fml.common.network.NetworkRegistry;
+import cpw.mods.fml.common.registry.GameRegistry;
+import cpw.mods.fml.relauncher.Side;
+import cpw.mods.fml.relauncher.SideOnly;
+import forestry.api.core.ForestryEvent.SpeciesDiscovered;
+import forestry.api.genetics.IAlleleSpecies;
+import forestry.api.genetics.IBreedingTracker;
+import forestry.plugins.PluginManager.Module;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import net.minecraft.client.renderer.texture.TextureMap;
+import net.minecraft.entity.player.EntityPlayerMP;
+import net.minecraft.item.Item;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.server.MinecraftServer;
+import net.minecraft.server.management.ServerConfigurationManager;
+import net.minecraftforge.client.event.TextureStitchEvent.Pre;
+
+@Mod(modid="BinnieCore", name="Binnie Core", useMetadata=true)
+public final class BinnieCore
+ extends AbstractMod
+{
+ @Mod.Instance("BinnieCore")
+ public static BinnieCore instance;
+ @SidedProxy(clientSide="binnie.core.proxy.BinnieProxyClient", serverSide="binnie.core.proxy.BinnieProxyServer")
+ public static BinnieProxy proxy;
+ public static int multipassRenderID;
+
+ @Mod.EventHandler
+ public void preInit(FMLPreInitializationEvent evt)
+ {
+ Binnie.Configuration.registerConfiguration(ConfigurationMods.class, this);
+ for (ManagerBase baseManager : Binnie.Managers) {
+ addModule(baseManager);
+ }
+ addModule(new ModuleCraftGUI());
+ addModule(new ModuleStorage());
+ addModule(new ModuleItems());
+ if (Loader.isModLoaded("BuildCraft|Silicon")) {
+ addModule(new ModuleTrigger());
+ }
+ preInit();
+ }
+
+ @Mod.EventHandler
+ public void init(FMLInitializationEvent evt)
+ {
+ init();
+ }
+
+ @Mod.EventHandler
+ public void postInit(FMLPostInitializationEvent evt)
+ {
+ postInit();
+ }
+
+ public IBinnieGUID[] getGUIDs()
+ {
+ return BinnieCoreGUI.values();
+ }
+
+ public void preInit()
+ {
+ instance = this;
+ for (FluidContainer container : FluidContainer.values())
+ {
+ Item item = new ItemFluidContainer(container);
+ GameRegistry.registerItem(item, item.getUnlocalizedName().substring(5));
+ }
+ FieldParser.parsers.add(new ItemParser());
+
+ super.preInit();
+ }
+
+ public void init()
+ {
+ super.init();
+ for (AbstractMod mod : getActiveMods()) {
+ NetworkRegistry.INSTANCE.registerGuiHandler(mod, new BinnieGUIHandler(mod));
+ }
+ multipassRenderID = RenderingRegistry.getNextAvailableRenderId();
+ RenderingRegistry.registerBlockHandler(new MultipassBlockRenderer());
+
+ GameRegistry.registerTileEntity(TileEntityMetadata.class, "binnie.tile.metadata");
+ }
+
+ public static boolean isLepidopteryActive()
+ {
+ return PluginManager.Module.LEPIDOPTEROLOGY.isEnabled();
+ }
+
+ public static boolean isApicultureActive()
+ {
+ return PluginManager.Module.APICULTURE.isEnabled();
+ }
+
+ public static boolean isArboricultureActive()
+ {
+ return PluginManager.Module.ARBORICULTURE.isEnabled();
+ }
+
+ public static boolean isBotanyActive()
+ {
+ return ConfigurationMods.botany;
+ }
+
+ public static boolean isGeneticsActive()
+ {
+ return ConfigurationMods.genetics;
+ }
+
+ public static boolean isExtraBeesActive()
+ {
+ return (ConfigurationMods.extraBees) && (isApicultureActive());
+ }
+
+ public static boolean isExtraTreesActive()
+ {
+ return (ConfigurationMods.extraTrees) && (isArboricultureActive());
+ }
+
+ public void postInit()
+ {
+ super.postInit();
+ }
+
+ private static List<AbstractMod> modList = new ArrayList();
+ public static MachineGroup packageCompartment;
+ public static ItemGenesis genesis;
+ public static ItemFieldKit fieldKit;
+
+ static void registerMod(AbstractMod mod)
+ {
+ modList.add(mod);
+ }
+
+ private static List<AbstractMod> getActiveMods()
+ {
+ List<AbstractMod> list = new ArrayList();
+ for (AbstractMod mod : modList) {
+ if (mod.isActive()) {
+ list.add(mod);
+ }
+ }
+ return list;
+ }
+
+ @SubscribeEvent
+ @SideOnly(Side.CLIENT)
+ public void handleSpeciesDiscovered(ForestryEvent.SpeciesDiscovered event)
+ {
+ try
+ {
+ EntityPlayerMP player = MinecraftServer.getServer().getConfigurationManager().func_152612_a(event.username.getName());
+ if (player == null) {
+ return;
+ }
+ event.tracker.synchToPlayer(player);
+ NBTTagCompound nbt = new NBTTagCompound();
+ nbt.setString("species", event.species.getUID());
+ }
+ catch (Exception e) {}
+ }
+
+ public String getChannel()
+ {
+ return "BIN";
+ }
+
+ public IBinnieProxy getProxy()
+ {
+ return proxy;
+ }
+
+ public String getModID()
+ {
+ return "binniecore";
+ }
+
+ public IPacketID[] getPacketIDs()
+ {
+ return BinnieCorePacketID.values();
+ }
+
+ @SubscribeEvent
+ @SideOnly(Side.CLIENT)
+ public void handleTextureRemap(TextureStitchEvent.Pre event)
+ {
+ if (event.map.getTextureType() == 0) {
+ Binnie.Liquid.reloadIcons(event.map);
+ }
+ Binnie.Resource.registerIcons(event.map, event.map.getTextureType());
+ }
+
+ public Class<?>[] getConfigs()
+ {
+ return new Class[] { ConfigurationMain.class };
+ }
+
+ protected Class<? extends BinniePacketHandler> getPacketHandler()
+ {
+ return PacketHandler.class;
+ }
+
+ public static class PacketHandler
+ extends BinniePacketHandler
+ {
+ public PacketHandler()
+ {
+ super();
+ }
+ }
+
+ public boolean isActive()
+ {
+ return true;
+ }
+}
diff --git a/src/Java/binnie/core/IInitializable.java b/src/Java/binnie/core/IInitializable.java
new file mode 100644
index 0000000000..7a357faa12
--- /dev/null
+++ b/src/Java/binnie/core/IInitializable.java
@@ -0,0 +1,10 @@
+package binnie.core;
+
+public abstract interface IInitializable
+{
+ public abstract void preInit();
+
+ public abstract void init();
+
+ public abstract void postInit();
+}
diff --git a/src/Java/binnie/core/ManagerBase.java b/src/Java/binnie/core/ManagerBase.java
new file mode 100644
index 0000000000..9627ed20bd
--- /dev/null
+++ b/src/Java/binnie/core/ManagerBase.java
@@ -0,0 +1,19 @@
+package binnie.core;
+
+import binnie.Binnie;
+import java.util.List;
+
+public abstract class ManagerBase
+ implements IInitializable
+{
+ public ManagerBase()
+ {
+ Binnie.Managers.add(this);
+ }
+
+ public void preInit() {}
+
+ public void init() {}
+
+ public void postInit() {}
+}
diff --git a/src/Java/binnie/core/Mods.java b/src/Java/binnie/core/Mods.java
new file mode 100644
index 0000000000..9c242aa712
--- /dev/null
+++ b/src/Java/binnie/core/Mods.java
@@ -0,0 +1 @@
+// INTERNAL ERROR // \ No newline at end of file
diff --git a/src/Java/binnie/core/block/BlockMetadata.java b/src/Java/binnie/core/block/BlockMetadata.java
new file mode 100644
index 0000000000..39b461d01d
--- /dev/null
+++ b/src/Java/binnie/core/block/BlockMetadata.java
@@ -0,0 +1,138 @@
+package binnie.core.block;
+
+import binnie.core.BinnieCore;
+import binnie.core.proxy.BinnieProxy;
+import java.util.ArrayList;
+import java.util.List;
+import net.minecraft.block.Block;
+import net.minecraft.block.BlockContainer;
+import net.minecraft.block.material.Material;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.entity.player.PlayerCapabilities;
+import net.minecraft.item.ItemStack;
+import net.minecraft.tileentity.TileEntity;
+import net.minecraft.util.IIcon;
+import net.minecraft.util.MovingObjectPosition;
+import net.minecraft.world.IBlockAccess;
+import net.minecraft.world.World;
+import net.minecraftforge.common.util.ForgeDirection;
+
+public class BlockMetadata
+ extends BlockContainer
+ implements IBlockMetadata
+{
+ public BlockMetadata(Material material)
+ {
+ super(material);
+ }
+
+ public ArrayList<ItemStack> getDrops(World world, int x, int y, int z, int blockMeta, int fortune)
+ {
+ return getBlockDropped(this, world, x, y, z, blockMeta);
+ }
+
+ public boolean removedByPlayer(World world, EntityPlayer player, int x, int y, int z)
+ {
+ return breakBlock(this, player, world, x, y, z);
+ }
+
+ public TileEntity createNewTileEntity(World var1, int i)
+ {
+ return new TileEntityMetadata();
+ }
+
+ public boolean hasTileEntity(int meta)
+ {
+ return true;
+ }
+
+ public boolean onBlockEventReceived(World par1World, int par2, int par3, int par4, int par5, int par6)
+ {
+ super.onBlockEventReceived(par1World, par2, par3, par4, par5, par6);
+ TileEntity tileentity = par1World.getTileEntity(par2, par3, par4);
+ return tileentity != null ? tileentity.receiveClientEvent(par5, par6) : false;
+ }
+
+ public IIcon getIcon(IBlockAccess par1IBlockAccess, int par2, int par3, int par4, int par5)
+ {
+ int metadata = TileEntityMetadata.getTileMetadata(par1IBlockAccess, par2, par3, par4);
+ return getIcon(par5, metadata);
+ }
+
+ public String getBlockName(ItemStack par1ItemStack)
+ {
+ return getLocalizedName();
+ }
+
+ public void getBlockTooltip(ItemStack par1ItemStack, List par3List) {}
+
+ public int getPlacedMeta(ItemStack item, World world, int x, int y, int z, ForgeDirection clickedBlock)
+ {
+ int damage = TileEntityMetadata.getItemDamage(item);
+ return damage;
+ }
+
+ public int getDroppedMeta(int tileMeta, int blockMeta)
+ {
+ return tileMeta;
+ }
+
+ public static ArrayList<ItemStack> getBlockDropped(IBlockMetadata block, World world, int x, int y, int z, int blockMeta)
+ {
+ ArrayList<ItemStack> array = new ArrayList();
+ TileEntityMetadata tile = TileEntityMetadata.getTile(world, x, y, z);
+ if ((tile != null) && (!tile.hasDroppedBlock()))
+ {
+ int meta = block.getDroppedMeta(world.getBlockMetadata(x, y, z), tile.getTileMetadata());
+ array.add(TileEntityMetadata.getItemStack((Block)block, meta));
+ }
+ return array;
+ }
+
+ static int temporyMeta = -1;
+
+ public static boolean breakBlock(IBlockMetadata block, EntityPlayer player, World world, int i, int j, int k)
+ {
+ List<ItemStack> drops = new ArrayList();
+
+ Block block2 = (Block)block;
+
+ TileEntityMetadata tile = TileEntityMetadata.getTile(world, i, j, k);
+ if ((tile != null) && (!tile.hasDroppedBlock()))
+ {
+ int tileMeta = TileEntityMetadata.getTileMetadata(world, i, j, k);
+ drops = block2.getDrops(world, i, j, k, world.getBlockMetadata(i, j, k), 0);
+ }
+ boolean hasBeenBroken = world.setBlockToAir(i, j, k);
+ if ((hasBeenBroken) && (BinnieCore.proxy.isSimulating(world)) && (drops.size() > 0) && ((player == null) || (!player.capabilities.isCreativeMode)))
+ {
+ for (ItemStack drop : drops) {
+ block.dropAsStack(world, i, j, k, drop);
+ }
+ tile.dropBlock();
+ }
+ return hasBeenBroken;
+ }
+
+ public void dropAsStack(World world, int x, int y, int z, ItemStack drop)
+ {
+ dropBlockAsItem(world, x, y, z, drop);
+ }
+
+ public void breakBlock(World par1World, int par2, int par3, int par4, Block par5, int par6)
+ {
+ super.breakBlock(par1World, par2, par3, par4, par5, par6);
+ par1World.removeTileEntity(par2, par3, par4);
+ }
+
+ public static ItemStack getPickBlock(World world, int x, int y, int z)
+ {
+ List<ItemStack> list = getBlockDropped((IBlockMetadata)world.getBlock(x, y, z), world, x, y, z, world.getBlockMetadata(x, y, z));
+ return list.isEmpty() ? null : (ItemStack)list.get(0);
+ }
+
+ public ItemStack getPickBlock(MovingObjectPosition target, World world, int x, int y, int z)
+ {
+ return getPickBlock(world, x, y, z);
+ }
+}
diff --git a/src/Java/binnie/core/block/IBlockMetadata.java b/src/Java/binnie/core/block/IBlockMetadata.java
new file mode 100644
index 0000000000..b182139de7
--- /dev/null
+++ b/src/Java/binnie/core/block/IBlockMetadata.java
@@ -0,0 +1,21 @@
+package binnie.core.block;
+
+import java.util.List;
+import net.minecraft.block.ITileEntityProvider;
+import net.minecraft.item.ItemStack;
+import net.minecraft.world.World;
+import net.minecraftforge.common.util.ForgeDirection;
+
+public abstract interface IBlockMetadata
+ extends ITileEntityProvider
+{
+ public abstract int getPlacedMeta(ItemStack paramItemStack, World paramWorld, int paramInt1, int paramInt2, int paramInt3, ForgeDirection paramForgeDirection);
+
+ public abstract int getDroppedMeta(int paramInt1, int paramInt2);
+
+ public abstract String getBlockName(ItemStack paramItemStack);
+
+ public abstract void getBlockTooltip(ItemStack paramItemStack, List paramList);
+
+ public abstract void dropAsStack(World paramWorld, int paramInt1, int paramInt2, int paramInt3, ItemStack paramItemStack);
+}
diff --git a/src/Java/binnie/core/block/IMultipassBlock.java b/src/Java/binnie/core/block/IMultipassBlock.java
new file mode 100644
index 0000000000..fd578c0ee5
--- /dev/null
+++ b/src/Java/binnie/core/block/IMultipassBlock.java
@@ -0,0 +1,8 @@
+package binnie.core.block;
+
+public abstract interface IMultipassBlock
+{
+ public abstract int getNumberOfPasses();
+
+ public abstract int colorMultiplier(int paramInt);
+}
diff --git a/src/Java/binnie/core/block/ItemMetadata.java b/src/Java/binnie/core/block/ItemMetadata.java
new file mode 100644
index 0000000000..a3cd5173a9
--- /dev/null
+++ b/src/Java/binnie/core/block/ItemMetadata.java
@@ -0,0 +1,67 @@
+package binnie.core.block;
+
+import cpw.mods.fml.relauncher.Side;
+import cpw.mods.fml.relauncher.SideOnly;
+import java.util.List;
+import net.minecraft.block.Block;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.item.ItemBlock;
+import net.minecraft.item.ItemStack;
+import net.minecraft.util.IIcon;
+import net.minecraft.world.World;
+
+public class ItemMetadata
+ extends ItemBlock
+{
+ public ItemMetadata(Block block)
+ {
+ super(block);
+ }
+
+ public int getMetadata(int par1)
+ {
+ return 0;
+ }
+
+ public boolean placeBlockAt(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int side, float hitX, float hitY, float hitZ, int metadata)
+ {
+ Block block = this.field_150939_a;
+ if (!(block instanceof IBlockMetadata)) {
+ return false;
+ }
+ int placedMeta = ((IBlockMetadata)block).getPlacedMeta(stack, world, x, y, z, net.minecraftforge.common.util.ForgeDirection.values()[side]);
+ if (placedMeta < 0) {
+ return false;
+ }
+ if (!world.setBlock(x, y, z, block, metadata, 3)) {
+ return false;
+ }
+ if (world.getBlock(x, y, z) == block)
+ {
+ TileEntityMetadata tile = TileEntityMetadata.getTile(world, x, y, z);
+ if (tile != null) {
+ tile.setTileMetadata(placedMeta, false);
+ }
+ block.onBlockPlacedBy(world, x, y, z, player, stack);
+ block.onPostBlockPlaced(world, x, y, z, metadata);
+ }
+ return true;
+ }
+
+ @SideOnly(Side.CLIENT)
+ public String getItemStackDisplayName(ItemStack par1ItemStack)
+ {
+ return ((IBlockMetadata)this.field_150939_a).getBlockName(par1ItemStack);
+ }
+
+ @SideOnly(Side.CLIENT)
+ public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4)
+ {
+ ((IBlockMetadata)this.field_150939_a).getBlockTooltip(par1ItemStack, par3List);
+ }
+
+ public IIcon getIconFromDamage(int par1)
+ {
+ return this.field_150939_a.getIcon(1, par1);
+ }
+}
diff --git a/src/Java/binnie/core/block/ItemMetadataRenderer.java b/src/Java/binnie/core/block/ItemMetadataRenderer.java
new file mode 100644
index 0000000000..e96dd068c1
--- /dev/null
+++ b/src/Java/binnie/core/block/ItemMetadataRenderer.java
@@ -0,0 +1,64 @@
+package binnie.core.block;
+
+import net.minecraft.block.Block;
+import net.minecraft.client.renderer.OpenGlHelper;
+import net.minecraft.client.renderer.RenderBlocks;
+import net.minecraft.item.ItemStack;
+import net.minecraftforge.client.IItemRenderer;
+import net.minecraftforge.client.IItemRenderer.ItemRenderType;
+import net.minecraftforge.client.IItemRenderer.ItemRendererHelper;
+import org.lwjgl.opengl.GL11;
+
+public class ItemMetadataRenderer
+ implements IItemRenderer
+{
+ public boolean handleRenderType(ItemStack item, IItemRenderer.ItemRenderType type)
+ {
+ return (type == IItemRenderer.ItemRenderType.INVENTORY) || (type == IItemRenderer.ItemRenderType.ENTITY) || (type == IItemRenderer.ItemRenderType.EQUIPPED) || (type == IItemRenderer.ItemRenderType.EQUIPPED_FIRST_PERSON);
+ }
+
+ public boolean shouldUseRenderHelper(IItemRenderer.ItemRenderType type, ItemStack item, IItemRenderer.ItemRendererHelper helper)
+ {
+ if (type == IItemRenderer.ItemRenderType.INVENTORY) {
+ return helper == IItemRenderer.ItemRendererHelper.INVENTORY_BLOCK;
+ }
+ if (type == IItemRenderer.ItemRenderType.ENTITY) {
+ return (helper == IItemRenderer.ItemRendererHelper.ENTITY_BOBBING) || (helper == IItemRenderer.ItemRendererHelper.ENTITY_ROTATION);
+ }
+ if ((type == IItemRenderer.ItemRenderType.EQUIPPED) || (type == IItemRenderer.ItemRenderType.EQUIPPED_FIRST_PERSON)) {
+ return helper == IItemRenderer.ItemRendererHelper.EQUIPPED_BLOCK;
+ }
+ return false;
+ }
+
+ public void renderItem(IItemRenderer.ItemRenderType type, ItemStack item, Object... data)
+ {
+ GL11.glPushMatrix();
+
+
+
+
+
+
+
+
+
+
+ Block block = Block.getBlockFromItem(item.getItem());
+ if (type == IItemRenderer.ItemRenderType.EQUIPPED_FIRST_PERSON) {
+ GL11.glTranslated(0.5D, 0.5D, 0.5D);
+ }
+ if ((type == IItemRenderer.ItemRenderType.INVENTORY) &&
+ (block.getRenderBlockPass() != 0))
+ {
+ GL11.glAlphaFunc(516, 0.1F);
+ GL11.glEnable(3042);
+ OpenGlHelper.glBlendFunc(770, 771, 1, 0);
+ }
+ GL11.glPushMatrix();
+ ((RenderBlocks)data[0]).renderBlockAsItem(block, TileEntityMetadata.getItemDamage(item), 1.0F);
+
+ GL11.glPopMatrix();
+ GL11.glPopMatrix();
+ }
+}
diff --git a/src/Java/binnie/core/block/MultipassBlockRenderer.java b/src/Java/binnie/core/block/MultipassBlockRenderer.java
new file mode 100644
index 0000000000..cc809fb8e5
--- /dev/null
+++ b/src/Java/binnie/core/block/MultipassBlockRenderer.java
@@ -0,0 +1,106 @@
+package binnie.core.block;
+
+import binnie.core.BinnieCore;
+import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler;
+import net.minecraft.block.Block;
+import net.minecraft.client.renderer.RenderBlocks;
+import net.minecraft.client.renderer.Tessellator;
+import net.minecraft.world.IBlockAccess;
+import org.lwjgl.opengl.GL11;
+
+public class MultipassBlockRenderer
+ implements ISimpleBlockRenderingHandler
+{
+ public static MultipassBlockRenderer instance;
+
+ public MultipassBlockRenderer()
+ {
+ instance = this;
+ }
+
+ private void setColour(Tessellator tess, int colour)
+ {
+ float var6 = (colour >> 16 & 0xFF) / 255.0F;
+ float var7 = (colour >> 8 & 0xFF) / 255.0F;
+ float var8 = (colour & 0xFF) / 255.0F;
+ GL11.glColor3f(var6, var7, var8);
+ }
+
+ private static int layer = 0;
+
+ public static int getLayer()
+ {
+ return layer;
+ }
+
+ public void renderInventoryBlock(Block block, int meta, int modelID, RenderBlocks renderer)
+ {
+ block.setBlockBoundsForItemRender();
+ renderer.setRenderBoundsFromBlock(block);
+ GL11.glTranslatef(-0.5F, -0.5F, -0.5F);
+ for (layer = 0; layer < ((IMultipassBlock)block).getNumberOfPasses(); layer += 1) {
+ renderItem(block, renderer, meta);
+ }
+ layer = 0;
+ }
+
+ public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer)
+ {
+ boolean r = true;
+ for (layer = 0; layer < ((IMultipassBlock)block).getNumberOfPasses(); layer += 1) {
+ r = renderer.renderStandardBlock(block, x, y, z);
+ }
+ layer = 0;
+ return r;
+ }
+
+ public boolean shouldRender3DInInventory(int i)
+ {
+ return true;
+ }
+
+ public int getRenderId()
+ {
+ return BinnieCore.multipassRenderID;
+ }
+
+ public void renderItem(Block block, RenderBlocks renderer, int meta)
+ {
+ setColor(((IMultipassBlock)block).colorMultiplier(meta));
+
+ Tessellator tessellator = Tessellator.instance;
+
+ tessellator.startDrawingQuads();
+ tessellator.setNormal(0.0F, -1.0F, 0.0F);
+ renderer.renderFaceYNeg(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 0, meta));
+ tessellator.draw();
+ tessellator.startDrawingQuads();
+ tessellator.setNormal(0.0F, 1.0F, 0.0F);
+ renderer.renderFaceYPos(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 1, meta));
+ tessellator.draw();
+ tessellator.startDrawingQuads();
+ tessellator.setNormal(0.0F, 0.0F, -1.0F);
+ renderer.renderFaceZNeg(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 2, meta));
+ tessellator.draw();
+ tessellator.startDrawingQuads();
+ tessellator.setNormal(0.0F, 0.0F, 1.0F);
+ renderer.renderFaceZPos(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 3, meta));
+ tessellator.draw();
+ tessellator.startDrawingQuads();
+ tessellator.setNormal(-1.0F, 0.0F, 0.0F);
+ renderer.renderFaceXNeg(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 4, meta));
+ tessellator.draw();
+ tessellator.startDrawingQuads();
+ tessellator.setNormal(1.0F, 0.0F, 0.0F);
+ renderer.renderFaceXPos(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 5, meta));
+ tessellator.draw();
+ }
+
+ public void setColor(int l)
+ {
+ float f = (l >> 16 & 0xFF) / 255.0F;
+ float f1 = (l >> 8 & 0xFF) / 255.0F;
+ float f2 = (l & 0xFF) / 255.0F;
+ GL11.glColor3f(f, f1, f2);
+ }
+}
diff --git a/src/Java/binnie/core/block/MultipassItemRenderer.java b/src/Java/binnie/core/block/MultipassItemRenderer.java
new file mode 100644
index 0000000000..6e53642b2f
--- /dev/null
+++ b/src/Java/binnie/core/block/MultipassItemRenderer.java
@@ -0,0 +1,78 @@
+package binnie.core.block;
+
+import net.minecraft.block.Block;
+import net.minecraft.client.renderer.OpenGlHelper;
+import net.minecraft.client.renderer.RenderBlocks;
+import net.minecraft.item.ItemBlock;
+import net.minecraft.item.ItemStack;
+import net.minecraftforge.client.IItemRenderer;
+import net.minecraftforge.client.IItemRenderer.ItemRenderType;
+import net.minecraftforge.client.IItemRenderer.ItemRendererHelper;
+import org.lwjgl.opengl.GL11;
+
+public class MultipassItemRenderer
+ implements IItemRenderer
+{
+ private void render(RenderBlocks renderer, ItemStack item, float f, float g, float h)
+ {
+ GL11.glTranslatef(f, g, h);
+
+ Block block = ((ItemBlock)item.getItem()).field_150939_a;
+
+ GL11.glEnable(3008);
+ if (block.getRenderBlockPass() != 0)
+ {
+ GL11.glAlphaFunc(516, 0.1F);
+ GL11.glEnable(3042);
+ OpenGlHelper.glBlendFunc(770, 771, 1, 0);
+ }
+ else
+ {
+ GL11.glAlphaFunc(516, 0.5F);
+ GL11.glDisable(3042);
+ }
+ MultipassBlockRenderer.instance.renderInventoryBlock(block, TileEntityMetadata.getItemDamage(item), 0, renderer);
+ if (block.getRenderBlockPass() == 0) {
+ GL11.glAlphaFunc(516, 0.1F);
+ }
+ GL11.glTranslatef(-f, -g, -h);
+ }
+
+ public boolean handleRenderType(ItemStack item, IItemRenderer.ItemRenderType type)
+ {
+ switch (1.$SwitchMap$net$minecraftforge$client$IItemRenderer$ItemRenderType[type.ordinal()])
+ {
+ case 1:
+ return true;
+ case 2:
+ return true;
+ case 3:
+ return true;
+ case 4:
+ return true;
+ }
+ return false;
+ }
+
+ public boolean shouldUseRenderHelper(IItemRenderer.ItemRenderType type, ItemStack item, IItemRenderer.ItemRendererHelper helper)
+ {
+ return true;
+ }
+
+ public void renderItem(IItemRenderer.ItemRenderType type, ItemStack item, Object... data)
+ {
+ switch (1.$SwitchMap$net$minecraftforge$client$IItemRenderer$ItemRenderType[type.ordinal()])
+ {
+ case 1:
+ render((RenderBlocks)data[0], item, 0.0F, 0.0F, 0.0F);
+ break;
+ case 2:
+ case 4:
+ render((RenderBlocks)data[0], item, 0.5F, 0.5F, 0.5F);
+ break;
+ case 3:
+ render((RenderBlocks)data[0], item, 0.0F, 0.0F, 0.0F);
+ break;
+ }
+ }
+}
diff --git a/src/Java/binnie/core/block/TileEntityMetadata.java b/src/Java/binnie/core/block/TileEntityMetadata.java
new file mode 100644
index 0000000000..28563e66e7
--- /dev/null
+++ b/src/Java/binnie/core/block/TileEntityMetadata.java
@@ -0,0 +1,116 @@
+package binnie.core.block;
+
+import binnie.core.BinnieCore;
+import binnie.core.network.packet.MessageMetadata;
+import cpw.mods.fml.common.network.simpleimpl.SimpleNetworkWrapper;
+import net.minecraft.block.Block;
+import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.network.Packet;
+import net.minecraft.tileentity.TileEntity;
+import net.minecraft.world.IBlockAccess;
+import net.minecraft.world.World;
+
+public class TileEntityMetadata
+ extends TileEntity
+{
+ private int meta;
+
+ public boolean receiveClientEvent(int par1, int par2)
+ {
+ if (par1 == 42)
+ {
+ this.meta = par2;
+ this.worldObj.markBlockForUpdate(this.xCoord, this.yCoord, this.zCoord);
+ }
+ return true;
+ }
+
+ public void readFromNBT(NBTTagCompound nbt)
+ {
+ super.readFromNBT(nbt);
+ this.meta = nbt.getInteger("meta");
+ }
+
+ public void writeToNBT(NBTTagCompound nbt)
+ {
+ super.writeToNBT(nbt);
+ nbt.setInteger("meta", this.meta);
+ }
+
+ public boolean canUpdate()
+ {
+ return false;
+ }
+
+ public int getTileMetadata()
+ {
+ return this.meta;
+ }
+
+ public void setTileMetadata(int meta, boolean notify)
+ {
+ if (this.meta != meta)
+ {
+ this.meta = meta;
+ if (notify) {
+ this.worldObj.markBlockForUpdate(this.xCoord, this.yCoord, this.zCoord);
+ }
+ }
+ }
+
+ public Packet getDescriptionPacket()
+ {
+ return BinnieCore.instance.getNetworkWrapper().getPacketFrom(new MessageMetadata(this.xCoord, this.yCoord, this.zCoord, this.meta).GetMessage());
+ }
+
+ public static TileEntityMetadata getTile(IBlockAccess world, int x, int y, int z)
+ {
+ TileEntity tile = world.getTileEntity(x, y, z);
+ if (!(tile instanceof TileEntityMetadata)) {
+ return null;
+ }
+ return (TileEntityMetadata)tile;
+ }
+
+ public static ItemStack getItemStack(Block block, int damage)
+ {
+ ItemStack item = new ItemStack(block, 1, 0);
+ setItemDamage(item, damage);
+ return item;
+ }
+
+ public static void setItemDamage(ItemStack item, int i)
+ {
+ item.setItemDamage(i < 16387 ? i : 16387);
+ NBTTagCompound tag = new NBTTagCompound();
+ tag.setInteger("meta", i);
+ item.setTagCompound(tag);
+ }
+
+ public static int getItemDamage(ItemStack item)
+ {
+ if ((item.hasTagCompound()) && (item.getTagCompound().hasKey("meta"))) {
+ return item.getTagCompound().getInteger("meta");
+ }
+ return item.getItemDamage();
+ }
+
+ public static int getTileMetadata(IBlockAccess world, int x, int y, int z)
+ {
+ TileEntityMetadata tile = getTile(world, x, y, z);
+ return tile == null ? 0 : tile.getTileMetadata();
+ }
+
+ private boolean droppedBlock = false;
+
+ public boolean hasDroppedBlock()
+ {
+ return this.droppedBlock;
+ }
+
+ public void dropBlock()
+ {
+ this.droppedBlock = true;
+ }
+}
diff --git a/src/Java/binnie/core/circuits/BinnieCircuit.java b/src/Java/binnie/core/circuits/BinnieCircuit.java
new file mode 100644
index 0000000000..e7e2db0203
--- /dev/null
+++ b/src/Java/binnie/core/circuits/BinnieCircuit.java
@@ -0,0 +1,80 @@
+package binnie.core.circuits;
+
+import forestry.api.circuits.ChipsetManager;
+import forestry.api.circuits.ICircuit;
+import forestry.api.circuits.ICircuitLayout;
+import forestry.api.circuits.ICircuitRegistry;
+import forestry.api.circuits.ISolderManager;
+import java.util.ArrayList;
+import java.util.List;
+import net.minecraft.item.Item;
+import net.minecraft.item.ItemStack;
+import net.minecraft.tileentity.TileEntity;
+
+public class BinnieCircuit
+ implements ICircuit
+{
+ private String uid;
+ private int limit;
+ private List<String> tooltips = new ArrayList();
+
+ public BinnieCircuit(String uid, int limit, ICircuitLayout layout, ItemStack itemStack)
+ {
+ this.uid = ("binnie.circuit." + uid);
+ this.limit = limit;
+ ChipsetManager.circuitRegistry.registerCircuit(this);
+ if (itemStack != null) {
+ ChipsetManager.solderManager.addRecipe(layout, itemStack, this);
+ }
+ }
+
+ public BinnieCircuit(String uid, int limit, ICircuitLayout layout, Item item, int itemMeta)
+ {
+ this(uid, limit, layout, new ItemStack(item, 1, itemMeta));
+ }
+
+ public void addTooltipString(String string)
+ {
+ this.tooltips.add(string);
+ }
+
+ public String getUID()
+ {
+ return this.uid;
+ }
+
+ public boolean requiresDiscovery()
+ {
+ return false;
+ }
+
+ public int getLimit()
+ {
+ return this.limit;
+ }
+
+ public String getName()
+ {
+ return this.uid;
+ }
+
+ public boolean isCircuitable(TileEntity tile)
+ {
+ return false;
+ }
+
+ public void onInsertion(int slot, TileEntity tile) {}
+
+ public void onLoad(int slot, TileEntity tile) {}
+
+ public void onRemoval(int slot, TileEntity tile) {}
+
+ public void onTick(int slot, TileEntity tile) {}
+
+ public void addTooltip(List<String> list)
+ {
+ for (String string : this.tooltips) {
+ list.add(" - " + string);
+ }
+ }
+}
diff --git a/src/Java/binnie/core/circuits/BinnieCircuitLayout.java b/src/Java/binnie/core/circuits/BinnieCircuitLayout.java
new file mode 100644
index 0000000000..0f160054ce
--- /dev/null
+++ b/src/Java/binnie/core/circuits/BinnieCircuitLayout.java
@@ -0,0 +1,37 @@
+package binnie.core.circuits;
+
+import binnie.Binnie;
+import binnie.core.AbstractMod;
+import binnie.core.language.ManagerLanguage;
+import forestry.api.circuits.ChipsetManager;
+import forestry.api.circuits.ICircuitLayout;
+import forestry.api.circuits.ICircuitRegistry;
+
+public class BinnieCircuitLayout
+ implements ICircuitLayout
+{
+ private String uid;
+ private AbstractMod mod;
+
+ public BinnieCircuitLayout(AbstractMod mod, String uid)
+ {
+ this.uid = uid;
+ this.mod = mod;
+ ChipsetManager.circuitRegistry.registerLayout(this);
+ }
+
+ public String getUID()
+ {
+ return "binnie.circuitLayout" + this.uid;
+ }
+
+ public String getName()
+ {
+ return Binnie.Language.localise(this.mod, "circuit.layout." + this.uid.toLowerCase());
+ }
+
+ public String getUsage()
+ {
+ return Binnie.Language.localise(this.mod, "circuit.layout." + this.uid.toLowerCase() + ".usage");
+ }
+}
diff --git a/src/Java/binnie/core/genetics/BeeBreedingSystem.java b/src/Java/binnie/core/genetics/BeeBreedingSystem.java
new file mode 100644
index 0000000000..2c3947b5a0
--- /dev/null
+++ b/src/Java/binnie/core/genetics/BeeBreedingSystem.java
@@ -0,0 +1,125 @@
+package binnie.core.genetics;
+
+import binnie.Binnie;
+import binnie.core.BinnieCore;
+import binnie.core.language.ManagerLanguage;
+import binnie.core.resource.ManagerResource;
+import binnie.extrabees.ExtraBees;
+import forestry.api.apiculture.EnumBeeChromosome;
+import forestry.api.apiculture.EnumBeeType;
+import forestry.api.apiculture.IApiaristTracker;
+import forestry.api.apiculture.IBeeMutation;
+import forestry.api.apiculture.IBeeRoot;
+import forestry.api.genetics.IAllele;
+import forestry.api.genetics.IBreedingTracker;
+import forestry.api.genetics.IChromosomeType;
+import forestry.api.genetics.IMutation;
+import forestry.api.genetics.ISpeciesRoot;
+import java.util.TreeSet;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.item.ItemStack;
+
+class BeeBreedingSystem
+ extends BreedingSystem
+{
+ public BeeBreedingSystem()
+ {
+ this.iconUndiscovered = Binnie.Resource.getItemIcon(ExtraBees.instance, "icon/undiscoveredBee");
+ this.iconDiscovered = Binnie.Resource.getItemIcon(ExtraBees.instance, "icon/discoveredBee");
+ }
+
+ public float getChance(IMutation mutation, EntityPlayer player, IAllele species1, IAllele species2)
+ {
+ return ((IBeeMutation)mutation).getChance(new VirtualBeeHousing(player), species1, species2, getSpeciesRoot().templateAsGenome(getSpeciesRoot().getTemplate(species1.getUID())), getSpeciesRoot().templateAsGenome(getSpeciesRoot().getTemplate(species2.getUID())));
+ }
+
+ public ISpeciesRoot getSpeciesRoot()
+ {
+ return Binnie.Genetics.getBeeRoot();
+ }
+
+ public int getColour()
+ {
+ return 16767232;
+ }
+
+ public Class<? extends IBreedingTracker> getTrackerClass()
+ {
+ return IApiaristTracker.class;
+ }
+
+ public String getAlleleName(IChromosomeType chromosome, IAllele allele)
+ {
+ if (chromosome == EnumBeeChromosome.FERTILITY)
+ {
+ if (allele.getUID().contains("Low")) {
+ return Binnie.Language.localise(BinnieCore.instance, "allele.fertility.low");
+ }
+ if (allele.getUID().contains("Normal")) {
+ return Binnie.Language.localise(BinnieCore.instance, "allele.fertility.normal");
+ }
+ if (allele.getUID().contains("High")) {
+ return Binnie.Language.localise(BinnieCore.instance, "allele.fertility.high");
+ }
+ if (allele.getUID().contains("Maximum")) {
+ return Binnie.Language.localise(BinnieCore.instance, "allele.fertility.maximum");
+ }
+ }
+ return super.getAlleleName(chromosome, allele);
+ }
+
+ public boolean isDNAManipulable(ItemStack member)
+ {
+ return ((IBeeRoot)getSpeciesRoot()).getType(member) == EnumBeeType.LARVAE;
+ }
+
+ public int[] getActiveTypes()
+ {
+ return new int[] { EnumBeeType.DRONE.ordinal(), EnumBeeType.PRINCESS.ordinal(), EnumBeeType.QUEEN.ordinal(), EnumBeeType.LARVAE.ordinal() };
+ }
+
+ public void addExtraAlleles(IChromosomeType chromosome, TreeSet<IAllele> alleles)
+ {
+ switch (1.$SwitchMap$forestry$api$apiculture$EnumBeeChromosome[((EnumBeeChromosome)chromosome).ordinal()])
+ {
+ case 1:
+ for (ForestryAllele.Fertility a : ForestryAllele.Fertility.values()) {
+ alleles.add(a.getAllele());
+ }
+ break;
+ case 2:
+ for (ForestryAllele.Flowering a : ForestryAllele.Flowering.values()) {
+ alleles.add(a.getAllele());
+ }
+ break;
+ case 3:
+ case 4:
+ for (Tolerance a : Tolerance.values()) {
+ alleles.add(a.getAllele());
+ }
+ break;
+ case 5:
+ for (ForestryAllele.Lifespan a : ForestryAllele.Lifespan.values()) {
+ alleles.add(a.getAllele());
+ }
+ break;
+ case 6:
+ for (ForestryAllele.Speed a : ForestryAllele.Speed.values()) {
+ alleles.add(a.getAllele());
+ }
+ break;
+ case 7:
+ for (ForestryAllele.Territory a : ForestryAllele.Territory.values()) {
+ alleles.add(a.getAllele());
+ }
+ break;
+ case 8:
+ case 9:
+ case 10:
+ for (ForestryAllele.Bool a : ForestryAllele.Bool.values()) {
+ alleles.add(a.getAllele());
+ }
+ break;
+ }
+ }
+}
diff --git a/src/Java/binnie/core/genetics/BeeModifierLogic.java b/src/Java/binnie/core/genetics/BeeModifierLogic.java
new file mode 100644
index 0000000000..65a2ab3103
--- /dev/null
+++ b/src/Java/binnie/core/genetics/BeeModifierLogic.java
@@ -0,0 +1,47 @@
+package binnie.core.genetics;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class BeeModifierLogic
+{
+ private Map<EnumBeeModifier, Float[]> modifiers = new HashMap();
+ private List<EnumBeeBooleanModifier> booleanModifiers = new ArrayList();
+
+ public float getModifier(EnumBeeModifier modifier, float currentModifier)
+ {
+ if (!this.modifiers.containsKey(modifier)) {
+ return 1.0F;
+ }
+ float mult = ((Float[])this.modifiers.get(modifier))[0].floatValue();
+ float max = ((Float[])this.modifiers.get(modifier))[1].floatValue();
+ if (max >= 1.0F)
+ {
+ if (max <= currentModifier) {
+ return 1.0F;
+ }
+ return Math.min(max / currentModifier, mult);
+ }
+ if (max >= currentModifier) {
+ return 1.0F;
+ }
+ return Math.max(max / currentModifier, mult);
+ }
+
+ public boolean getModifier(EnumBeeBooleanModifier modifier)
+ {
+ return this.booleanModifiers.contains(modifier);
+ }
+
+ public void setModifier(EnumBeeBooleanModifier modifier)
+ {
+ this.booleanModifiers.add(modifier);
+ }
+
+ public void setModifier(EnumBeeModifier modifier, float mult, float max)
+ {
+ this.modifiers.put(modifier, new Float[] { Float.valueOf(mult), Float.valueOf(max) });
+ }
+}
diff --git a/src/Java/binnie/core/genetics/BreedingSystem.java b/src/Java/binnie/core/genetics/BreedingSystem.java
new file mode 100644
index 0000000000..1bdd5d6376
--- /dev/null
+++ b/src/Java/binnie/core/genetics/BreedingSystem.java
@@ -0,0 +1,558 @@
+package binnie.core.genetics;
+
+import binnie.Binnie;
+import binnie.core.BinnieCore;
+import binnie.core.language.ManagerLanguage;
+import binnie.core.proxy.BinnieProxy;
+import binnie.core.resource.BinnieIcon;
+import binnie.extrabees.genetics.ExtraBeeMutation;
+import com.mojang.authlib.GameProfile;
+import cpw.mods.fml.common.eventhandler.EventBus;
+import cpw.mods.fml.common.eventhandler.SubscribeEvent;
+import forestry.api.core.ForestryEvent.SyncedBreedingTracker;
+import forestry.api.genetics.AlleleManager;
+import forestry.api.genetics.IAllele;
+import forestry.api.genetics.IAlleleBoolean;
+import forestry.api.genetics.IAlleleRegistry;
+import forestry.api.genetics.IAlleleSpecies;
+import forestry.api.genetics.IBreedingTracker;
+import forestry.api.genetics.IChromosomeType;
+import forestry.api.genetics.IClassification;
+import forestry.api.genetics.IGenome;
+import forestry.api.genetics.IIndividual;
+import forestry.api.genetics.IMutation;
+import forestry.api.genetics.ISpeciesRoot;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.LinkedHashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.TreeSet;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.item.ItemStack;
+import net.minecraft.util.IIcon;
+import net.minecraft.world.World;
+import net.minecraftforge.common.MinecraftForge;
+
+public abstract class BreedingSystem
+ implements IItemStackRepresentitive
+{
+ protected BinnieIcon iconUndiscovered;
+ protected BinnieIcon iconDiscovered;
+
+ public BreedingSystem()
+ {
+ Binnie.Genetics.registerBreedingSystem(this);
+ MinecraftForge.EVENT_BUS.register(this);
+ }
+
+ public String getChromosomeName(IChromosomeType chromo)
+ {
+ return BinnieCore.proxy.localise(getSpeciesRoot().getUID() + ".chromosome." + chromo.getName());
+ }
+
+ public String getChromosomeShortName(IChromosomeType chromo)
+ {
+ return BinnieCore.proxy.localise(getSpeciesRoot().getUID() + ".chromosome." + chromo.getName() + ".short");
+ }
+
+ public final String getEpitome(float discoveredPercentage)
+ {
+ int i = 0;
+ if (discoveredPercentage == 1.0F) {
+ i = 6;
+ } else if (discoveredPercentage < 0.1F) {
+ i = 0;
+ } else if (discoveredPercentage < 0.3F) {
+ i = 1;
+ } else if (discoveredPercentage < 0.5F) {
+ i = 2;
+ } else if (discoveredPercentage < 0.7F) {
+ i = 3;
+ } else if (discoveredPercentage < 0.9F) {
+ i = 4;
+ } else if (discoveredPercentage < 1.0F) {
+ i = 5;
+ }
+ return BinnieCore.proxy.localise(getSpeciesRoot().getUID() + ".epitome." + i);
+ }
+
+ private List<IClassification> allBranches = new ArrayList();
+ List<IAlleleSpecies> allActiveSpecies = new ArrayList();
+ private List<IAlleleSpecies> allSpecies = new ArrayList();
+ private List<IMutation> allMutations = new ArrayList();
+ private Map<IAlleleSpecies, List<IMutation>> resultantMutations = new HashMap();
+ private Map<IAlleleSpecies, List<IMutation>> furtherMutations = new HashMap();
+ private Map<IAlleleSpecies, List<IMutation>> allResultantMutations = new HashMap();
+ private Map<IAlleleSpecies, List<IMutation>> allFurtherMutations = new HashMap();
+ public float discoveredSpeciesPercentage;
+ public int totalSpeciesCount;
+ public int discoveredSpeciesCount;
+ public int totalSecretCount;
+ public int discoveredSecretCount;
+ public float discoveredBranchPercentage;
+ public int totalBranchCount;
+ public int discoveredBranchCount;
+ private int totalSecretBranchCount;
+ private int discoveredSecretBranchCount;
+ String currentEpithet;
+
+ public abstract ISpeciesRoot getSpeciesRoot();
+
+ public final List<IClassification> getAllBranches()
+ {
+ return this.allBranches;
+ }
+
+ public final Collection<IAlleleSpecies> getAllSpecies()
+ {
+ return this.allActiveSpecies;
+ }
+
+ public final Collection<IMutation> getAllMutations()
+ {
+ return this.allMutations;
+ }
+
+ public void calculateArrays()
+ {
+ Collection<IAllele> allAlleles = AlleleManager.alleleRegistry.getRegisteredAlleles().values();
+
+
+ this.resultantMutations = new HashMap();
+ this.furtherMutations = new HashMap();
+ this.allResultantMutations = new HashMap();
+ this.allFurtherMutations = new HashMap();
+
+ this.allActiveSpecies = new ArrayList();
+ this.allSpecies = new ArrayList();
+ for (IAllele species : allAlleles) {
+ if (getSpeciesRoot().getTemplate(species.getUID()) != null)
+ {
+ this.resultantMutations.put((IAlleleSpecies)species, new ArrayList());
+
+ this.furtherMutations.put((IAlleleSpecies)species, new ArrayList());
+
+ this.allResultantMutations.put((IAlleleSpecies)species, new ArrayList());
+
+ this.allFurtherMutations.put((IAlleleSpecies)species, new ArrayList());
+
+ this.allSpecies.add((IAlleleSpecies)species);
+ if ((!isBlacklisted(species)) && (!species.getUID().contains("speciesBotAlfheim"))) {
+ this.allActiveSpecies.add((IAlleleSpecies)species);
+ }
+ }
+ }
+ this.allMutations = new ArrayList();
+
+ Collection<IClassification> allRegBranches = AlleleManager.alleleRegistry.getRegisteredClassifications().values();
+
+
+ this.allBranches = new ArrayList();
+ for (IClassification branch : allRegBranches) {
+ if ((branch.getMemberSpecies().length > 0) &&
+ (getSpeciesRoot().getTemplate(branch.getMemberSpecies()[0].getUID()) != null))
+ {
+ boolean possible = false;
+ for (IAlleleSpecies species : branch.getMemberSpecies()) {
+ if (this.allActiveSpecies.contains(species)) {
+ possible = true;
+ }
+ }
+ if (possible) {
+ this.allBranches.add(branch);
+ }
+ }
+ }
+ if (getSpeciesRoot().getMutations(false) != null)
+ {
+ Set<IMutation> mutations = new LinkedHashSet();
+ mutations.addAll(getSpeciesRoot().getMutations(false));
+ if (this == Binnie.Genetics.beeBreedingSystem) {
+ mutations.addAll(ExtraBeeMutation.mutations);
+ }
+ for (IMutation mutation : mutations)
+ {
+ this.allMutations.add(mutation);
+
+ Set<IAlleleSpecies> participatingSpecies = new LinkedHashSet();
+ if ((mutation.getAllele0() instanceof IAlleleSpecies)) {
+ participatingSpecies.add((IAlleleSpecies)mutation.getAllele0());
+ }
+ if ((mutation.getAllele1() instanceof IAlleleSpecies)) {
+ participatingSpecies.add((IAlleleSpecies)mutation.getAllele1());
+ }
+ for (IAlleleSpecies species : participatingSpecies)
+ {
+ ((List)this.allFurtherMutations.get(species)).add(mutation);
+ if (this.allActiveSpecies.contains(species)) {
+ ((List)this.furtherMutations.get(species)).add(mutation);
+ }
+ }
+ if (this.resultantMutations.containsKey(mutation.getTemplate()[0]))
+ {
+ ((List)this.allResultantMutations.get(mutation.getTemplate()[0])).add(mutation);
+ ((List)this.resultantMutations.get(mutation.getTemplate()[0])).add(mutation);
+ }
+ }
+ }
+ }
+
+ public final boolean isBlacklisted(IAllele allele)
+ {
+ return AlleleManager.alleleRegistry.isBlacklisted(allele.getUID());
+ }
+
+ public final List<IMutation> getResultantMutations(IAlleleSpecies species, boolean includeInactive)
+ {
+ if (this.resultantMutations.isEmpty()) {
+ calculateArrays();
+ }
+ return includeInactive ? (List)this.allResultantMutations.get(species) : (List)this.resultantMutations.get(species);
+ }
+
+ public final List<IMutation> getResultantMutations(IAlleleSpecies species)
+ {
+ if (this.resultantMutations.isEmpty()) {
+ calculateArrays();
+ }
+ return (List)this.resultantMutations.get(species);
+ }
+
+ public final List<IMutation> getFurtherMutations(IAlleleSpecies species, boolean includeInactive)
+ {
+ if (this.furtherMutations.isEmpty()) {
+ calculateArrays();
+ }
+ return includeInactive ? (List)this.allFurtherMutations.get(species) : (List)this.furtherMutations.get(species);
+ }
+
+ public final List<IMutation> getFurtherMutations(IAlleleSpecies species)
+ {
+ if (this.furtherMutations.isEmpty()) {
+ calculateArrays();
+ }
+ return (List)this.furtherMutations.get(species);
+ }
+
+ public final boolean isMutationDiscovered(IMutation mutation, World world, GameProfile name)
+ {
+ return isMutationDiscovered(mutation, getSpeciesRoot().getBreedingTracker(world, name));
+ }
+
+ public final boolean isMutationDiscovered(IMutation mutation, IBreedingTracker tracker)
+ {
+ if (tracker == null) {
+ return true;
+ }
+ return tracker.isDiscovered(mutation);
+ }
+
+ public final boolean isSpeciesDiscovered(IAlleleSpecies species, World world, GameProfile name)
+ {
+ return isSpeciesDiscovered(species, getSpeciesRoot().getBreedingTracker(world, name));
+ }
+
+ public final boolean isSpeciesDiscovered(IAlleleSpecies species, IBreedingTracker tracker)
+ {
+ if (tracker == null) {
+ return true;
+ }
+ return tracker.isDiscovered(species);
+ }
+
+ public final boolean isSecret(IAlleleSpecies species)
+ {
+ return !species.isCounted();
+ }
+
+ public final boolean isSecret(IClassification branch)
+ {
+ for (IAlleleSpecies species : branch.getMemberSpecies()) {
+ if (!isSecret(species)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ public final Collection<IClassification> getDiscoveredBranches(World world, GameProfile player)
+ {
+ List<IClassification> branches = new ArrayList();
+ for (IClassification branch : getAllBranches())
+ {
+ boolean discovered = false;
+ for (IAlleleSpecies species : branch.getMemberSpecies()) {
+ if (isSpeciesDiscovered(species, world, player)) {
+ discovered = true;
+ }
+ }
+ if (discovered) {
+ branches.add(branch);
+ }
+ }
+ return branches;
+ }
+
+ public final Collection<IClassification> getDiscoveredBranches(IBreedingTracker tracker)
+ {
+ List<IClassification> branches = new ArrayList();
+ for (IClassification branch : getAllBranches())
+ {
+ boolean discovered = false;
+ for (IAlleleSpecies species : branch.getMemberSpecies()) {
+ if (isSpeciesDiscovered(species, tracker)) {
+ discovered = true;
+ }
+ }
+ if (discovered) {
+ branches.add(branch);
+ }
+ }
+ return branches;
+ }
+
+ public final Collection<IAlleleSpecies> getDiscoveredSpecies(World world, GameProfile player)
+ {
+ List<IAlleleSpecies> speciesList = new ArrayList();
+ for (IAlleleSpecies species : getAllSpecies()) {
+ if (isSpeciesDiscovered(species, world, player)) {
+ speciesList.add(species);
+ }
+ }
+ return speciesList;
+ }
+
+ public final Collection<IAlleleSpecies> getDiscoveredSpecies(IBreedingTracker tracker)
+ {
+ List<IAlleleSpecies> speciesList = new ArrayList();
+ for (IAlleleSpecies species : getAllSpecies()) {
+ if (isSpeciesDiscovered(species, tracker)) {
+ speciesList.add(species);
+ }
+ }
+ return speciesList;
+ }
+
+ public final List<IMutation> getDiscoveredMutations(World world, GameProfile player)
+ {
+ List<IMutation> speciesList = new ArrayList();
+ for (IMutation species : getAllMutations()) {
+ if (isMutationDiscovered(species, world, player)) {
+ speciesList.add(species);
+ }
+ }
+ return speciesList;
+ }
+
+ public final List<IMutation> getDiscoveredMutations(IBreedingTracker tracker)
+ {
+ List<IMutation> speciesList = new ArrayList();
+ for (IMutation species : getAllMutations()) {
+ if (isMutationDiscovered(species, tracker)) {
+ speciesList.add(species);
+ }
+ }
+ return speciesList;
+ }
+
+ public final int getDiscoveredBranchMembers(IClassification branch, IBreedingTracker tracker)
+ {
+ int discoveredSpecies = 0;
+ for (IAlleleSpecies species : branch.getMemberSpecies()) {
+ if (isSpeciesDiscovered(species, tracker)) {
+ discoveredSpecies++;
+ }
+ }
+ return discoveredSpecies;
+ }
+
+ public IIcon getUndiscoveredIcon()
+ {
+ return this.iconUndiscovered.getIcon();
+ }
+
+ public IIcon getDiscoveredIcon()
+ {
+ return this.iconDiscovered.getIcon();
+ }
+
+ public abstract float getChance(IMutation paramIMutation, EntityPlayer paramEntityPlayer, IAllele paramIAllele1, IAllele paramIAllele2);
+
+ public abstract Class<? extends IBreedingTracker> getTrackerClass();
+
+ @SubscribeEvent
+ public final void onSyncBreedingTracker(ForestryEvent.SyncedBreedingTracker event)
+ {
+ IBreedingTracker tracker = event.tracker;
+ if (!getTrackerClass().isInstance(tracker)) {
+ return;
+ }
+ syncTracker(tracker);
+ }
+
+ public final void syncTracker(IBreedingTracker tracker)
+ {
+ this.discoveredSpeciesPercentage = 0.0F;
+
+ this.totalSpeciesCount = 0;
+ this.discoveredSpeciesCount = 0;
+
+ this.totalSecretCount = 0;
+ this.discoveredSecretCount = 0;
+
+ Collection<IAlleleSpecies> discoveredSpecies = getDiscoveredSpecies(tracker);
+ Collection<IAlleleSpecies> allSpecies = getAllSpecies();
+ for (IAlleleSpecies species : allSpecies) {
+ if (!isSecret(species))
+ {
+ this.totalSpeciesCount += 1;
+ if (isSpeciesDiscovered(species, tracker)) {
+ this.discoveredSpeciesCount += 1;
+ }
+ }
+ else
+ {
+ this.totalSecretCount += 1;
+ if (isSpeciesDiscovered(species, tracker)) {
+ this.discoveredSecretCount += 1;
+ }
+ }
+ }
+ this.discoveredBranchPercentage = 0.0F;
+
+ this.totalBranchCount = 0;
+ this.discoveredBranchCount = 0;
+
+ Collection<IClassification> discoveredBranches = getDiscoveredBranches(tracker);
+ Collection<IClassification> allBranches = getAllBranches();
+ for (IClassification branch : allBranches) {
+ if (!isSecret(branch))
+ {
+ this.totalBranchCount += 1;
+ if (discoveredBranches.contains(branch)) {
+ this.discoveredBranchCount += 1;
+ }
+ }
+ else
+ {
+ this.totalSecretBranchCount += 1;
+ if (discoveredBranches.contains(branch)) {
+ this.discoveredSecretBranchCount += 1;
+ }
+ }
+ }
+ this.discoveredSpeciesPercentage = (this.discoveredSpeciesCount / this.totalSpeciesCount);
+
+ this.discoveredBranchPercentage = (this.discoveredBranchCount / this.totalBranchCount);
+
+
+ String epithet = getEpitome();
+
+ onSyncBreedingTracker(tracker);
+ }
+
+ public void onSyncBreedingTracker(IBreedingTracker tracker) {}
+
+ public String getEpitome()
+ {
+ return getEpitome(this.discoveredSpeciesPercentage);
+ }
+
+ public final String getDescriptor()
+ {
+ return BinnieCore.proxy.localise(getSpeciesRoot().getUID() + ".descriptor");
+ }
+
+ public final String getIdent()
+ {
+ return getSpeciesRoot().getUID();
+ }
+
+ public final IChromosomeType getChromosome(int i)
+ {
+ for (IChromosomeType chromosome : getSpeciesRoot().getKaryotype()) {
+ if (i == chromosome.ordinal()) {
+ return chromosome;
+ }
+ }
+ return null;
+ }
+
+ public abstract int getColour();
+
+ public String getAlleleName(IChromosomeType chromosome, IAllele allele)
+ {
+ if ((allele instanceof IAlleleBoolean)) {
+ return ((IAlleleBoolean)allele).getValue() ? Binnie.Language.localise(BinnieCore.instance, "allele.true") : Binnie.Language.localise(BinnieCore.instance, "allele.false");
+ }
+ if (allele.getName() == "for.gui.maximum") {
+ return Binnie.Language.localise(BinnieCore.instance, "allele.fertility.maximum");
+ }
+ return allele.getName();
+ }
+
+ public String getName()
+ {
+ return BinnieCore.proxy.localise(getSpeciesRoot().getUID() + ".shortName");
+ }
+
+ public ItemStack getItemStackRepresentitive()
+ {
+ IIndividual first = (IIndividual)getSpeciesRoot().getIndividualTemplates().get(0);
+ return getSpeciesRoot().getMemberStack(first, getDefaultType());
+ }
+
+ public String toString()
+ {
+ return getName();
+ }
+
+ public abstract boolean isDNAManipulable(ItemStack paramItemStack);
+
+ public IIndividual getConversion(ItemStack stack)
+ {
+ return null;
+ }
+
+ public final IIndividual getDefaultIndividual()
+ {
+ return getSpeciesRoot().templateAsIndividual(getSpeciesRoot().getDefaultTemplate());
+ }
+
+ public final int getDefaultType()
+ {
+ return getActiveTypes()[0];
+ }
+
+ public abstract int[] getActiveTypes();
+
+ public abstract void addExtraAlleles(IChromosomeType paramIChromosomeType, TreeSet<IAllele> paramTreeSet);
+
+ public ItemStack getConversionStack(ItemStack stack)
+ {
+ return getSpeciesRoot().getMemberStack(getConversion(stack), getDefaultType());
+ }
+
+ public final Collection<IChromosomeType> getActiveKaryotype()
+ {
+ return Binnie.Genetics.getActiveChromosomes(getSpeciesRoot());
+ }
+
+ public ItemStack getDefaultMember(String uid)
+ {
+ return getSpeciesRoot().getMemberStack(getIndividual(uid), getDefaultType());
+ }
+
+ public IIndividual getIndividual(String uid)
+ {
+ return getSpeciesRoot().templateAsIndividual(getSpeciesRoot().getTemplate(uid));
+ }
+
+ public IGenome getGenome(String uid)
+ {
+ return getSpeciesRoot().templateAsGenome(getSpeciesRoot().getTemplate(uid));
+ }
+}
diff --git a/src/Java/binnie/core/genetics/EnumBeeBooleanModifier.java b/src/Java/binnie/core/genetics/EnumBeeBooleanModifier.java
new file mode 100644
index 0000000000..58eae12e79
--- /dev/null
+++ b/src/Java/binnie/core/genetics/EnumBeeBooleanModifier.java
@@ -0,0 +1,8 @@
+package binnie.core.genetics;
+
+public enum EnumBeeBooleanModifier
+{
+ Sealed, SelfLighted, SunlightStimulated, Hellish;
+
+ private EnumBeeBooleanModifier() {}
+}
diff --git a/src/Java/binnie/core/genetics/EnumBeeModifier.java b/src/Java/binnie/core/genetics/EnumBeeModifier.java
new file mode 100644
index 0000000000..92fc30bda0
--- /dev/null
+++ b/src/Java/binnie/core/genetics/EnumBeeModifier.java
@@ -0,0 +1,17 @@
+package binnie.core.genetics;
+
+import binnie.Binnie;
+import binnie.core.BinnieCore;
+import binnie.core.language.ManagerLanguage;
+
+public enum EnumBeeModifier
+{
+ Territory, Mutation, Lifespan, Production, Flowering, GeneticDecay;
+
+ private EnumBeeModifier() {}
+
+ public String getName()
+ {
+ return Binnie.Language.localise(BinnieCore.instance, "beemodifier." + name().toLowerCase());
+ }
+}
diff --git a/src/Java/binnie/core/genetics/FlowerBreedingSystem.java b/src/Java/binnie/core/genetics/FlowerBreedingSystem.java
new file mode 100644
index 0000000000..bc706976c8
--- /dev/null
+++ b/src/Java/binnie/core/genetics/FlowerBreedingSystem.java
@@ -0,0 +1,129 @@
+package binnie.core.genetics;
+
+import binnie.Binnie;
+import binnie.botany.api.EnumFlowerChromosome;
+import binnie.botany.api.EnumFlowerStage;
+import binnie.botany.api.IBotanistTracker;
+import binnie.botany.api.IFlowerMutation;
+import binnie.botany.api.IFlowerRoot;
+import binnie.botany.core.BotanyCore;
+import binnie.botany.genetics.EnumFlowerColor;
+import binnie.core.BinnieCore;
+import binnie.core.language.ManagerLanguage;
+import binnie.core.resource.ManagerResource;
+import binnie.extrabees.ExtraBees;
+import forestry.api.genetics.IAllele;
+import forestry.api.genetics.IBreedingTracker;
+import forestry.api.genetics.IChromosomeType;
+import forestry.api.genetics.IIndividual;
+import forestry.api.genetics.IMutation;
+import forestry.api.genetics.ISpeciesRoot;
+import java.util.TreeSet;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.item.ItemStack;
+
+class FlowerBreedingSystem
+ extends BreedingSystem
+{
+ public FlowerBreedingSystem()
+ {
+ this.iconUndiscovered = Binnie.Resource.getItemIcon(ExtraBees.instance, "icon/undiscoveredBee");
+ this.iconDiscovered = Binnie.Resource.getItemIcon(ExtraBees.instance, "icon/discoveredBee");
+ }
+
+ public float getChance(IMutation mutation, EntityPlayer player, IAllele species1, IAllele species2)
+ {
+ return ((IFlowerMutation)mutation).getBaseChance();
+ }
+
+ public ISpeciesRoot getSpeciesRoot()
+ {
+ return Binnie.Genetics.getFlowerRoot();
+ }
+
+ public int getColour()
+ {
+ return 14563127;
+ }
+
+ public Class<? extends IBreedingTracker> getTrackerClass()
+ {
+ return IBotanistTracker.class;
+ }
+
+ public String getAlleleName(IChromosomeType chromosome, IAllele allele)
+ {
+ if (chromosome == EnumFlowerChromosome.FERTILITY)
+ {
+ if (allele.getUID().contains("Low")) {
+ return Binnie.Language.localise(BinnieCore.instance, "allele.fertility.low");
+ }
+ if (allele.getUID().contains("Normal")) {
+ return Binnie.Language.localise(BinnieCore.instance, "allele.fertility.normal");
+ }
+ if (allele.getUID().contains("High")) {
+ return Binnie.Language.localise(BinnieCore.instance, "allele.fertility.high");
+ }
+ if (allele.getUID().contains("Maximum")) {
+ return Binnie.Language.localise(BinnieCore.instance, "allele.fertility.maximum");
+ }
+ }
+ return super.getAlleleName(chromosome, allele);
+ }
+
+ public boolean isDNAManipulable(ItemStack member)
+ {
+ return ((IFlowerRoot)getSpeciesRoot()).getType(member) == EnumFlowerStage.POLLEN;
+ }
+
+ public IIndividual getConversion(ItemStack stack)
+ {
+ return BotanyCore.getFlowerRoot().getConversion(stack);
+ }
+
+ public int[] getActiveTypes()
+ {
+ return new int[] { EnumFlowerStage.FLOWER.ordinal(), EnumFlowerStage.POLLEN.ordinal(), EnumFlowerStage.SEED.ordinal() };
+ }
+
+ public void addExtraAlleles(IChromosomeType chromosome, TreeSet<IAllele> alleles)
+ {
+ switch (1.$SwitchMap$binnie$botany$api$EnumFlowerChromosome[((EnumFlowerChromosome)chromosome).ordinal()])
+ {
+ case 1:
+ for (ForestryAllele.Fertility a : ForestryAllele.Fertility.values()) {
+ alleles.add(a.getAllele());
+ }
+ break;
+ case 2:
+ for (ForestryAllele.Lifespan a : ForestryAllele.Lifespan.values()) {
+ alleles.add(a.getAllele());
+ }
+ break;
+ case 3:
+ case 4:
+ case 5:
+ for (Tolerance a : Tolerance.values()) {
+ alleles.add(a.getAllele());
+ }
+ break;
+ case 6:
+ case 7:
+ case 8:
+ for (EnumFlowerColor a : EnumFlowerColor.values()) {
+ alleles.add(a.getAllele());
+ }
+ break;
+ case 9:
+ for (ForestryAllele.Sappiness a : ForestryAllele.Sappiness.values()) {
+ alleles.add(a.getAllele());
+ }
+ break;
+ case 10:
+ for (ForestryAllele.Territory a : ForestryAllele.Territory.values()) {
+ alleles.add(a.getAllele());
+ }
+ break;
+ }
+ }
+}
diff --git a/src/Java/binnie/core/genetics/ForestryAllele.java b/src/Java/binnie/core/genetics/ForestryAllele.java
new file mode 100644
index 0000000000..19a3ad8b6f
--- /dev/null
+++ b/src/Java/binnie/core/genetics/ForestryAllele.java
@@ -0,0 +1,211 @@
+package binnie.core.genetics;
+
+import binnie.Binnie;
+import forestry.api.apiculture.IAlleleBeeSpecies;
+import forestry.api.apiculture.IBeeRoot;
+import forestry.api.genetics.AlleleManager;
+import forestry.api.genetics.IAllele;
+import forestry.api.genetics.IAlleleRegistry;
+
+public class ForestryAllele
+{
+ public static enum Lifespan
+ {
+ Shortest, Shorter, Short, Shortened, Normal, Elongated, Long, Longer, Longest;
+
+ private Lifespan() {}
+
+ public IAllele getAllele()
+ {
+ return AlleleManager.alleleRegistry.getAllele("forestry.lifespan" + toString());
+ }
+ }
+
+ public static enum Speed
+ {
+ Slowest, Slower, Slow, Norm, Fast, Faster, Fastest;
+
+ private Speed() {}
+
+ public IAllele getAllele()
+ {
+ return AlleleManager.alleleRegistry.getAllele("forestry.speed" + toString());
+ }
+ }
+
+ public static enum Fertility
+ {
+ Low, Normal, High, Maximum;
+
+ private Fertility() {}
+
+ public IAllele getAllele()
+ {
+ return AlleleManager.alleleRegistry.getAllele("forestry.fertility" + toString());
+ }
+ }
+
+ public static enum Flowering
+ {
+ Slowest, Slower, Slow, Average, Fast, Faster, Fastest, Maximum;
+
+ private Flowering() {}
+
+ public IAllele getAllele()
+ {
+ return AlleleManager.alleleRegistry.getAllele("forestry.flowering" + toString());
+ }
+ }
+
+ public static enum Territory
+ {
+ Default, Large, Larger, Largest;
+
+ private Territory() {}
+
+ public IAllele getAllele()
+ {
+ return AlleleManager.alleleRegistry.getAllele("forestry.territory" + toString());
+ }
+ }
+
+ public static enum Sappiness
+ {
+ Lowest, Lower, Low, Average, High, Higher, Highest;
+
+ private Sappiness() {}
+
+ public IAllele getAllele()
+ {
+ return AlleleManager.alleleRegistry.getAllele("forestry.sappiness" + toString());
+ }
+ }
+
+ public static enum TreeHeight
+ {
+ Smallest, Smaller, Small, Average, Large, Larger, Largest, Gigantic;
+
+ private TreeHeight() {}
+
+ public IAllele getAllele()
+ {
+ return AlleleManager.alleleRegistry.getAllele("forestry.height" + (this == Average ? "Max10" : toString()));
+ }
+ }
+
+ public static enum Size
+ {
+ Smallest, Smaller, Small, Average, Large, Larger, Largest;
+
+ private Size() {}
+
+ public IAllele getAllele()
+ {
+ return AlleleManager.alleleRegistry.getAllele("forestry.size" + toString());
+ }
+ }
+
+ public static enum Saplings
+ {
+ Lowest, Lower, Low, Average, High, Higher, Highest;
+
+ private Saplings() {}
+
+ public IAllele getAllele()
+ {
+ String s = toString();
+ if (this == Average) {
+ s = "Default";
+ }
+ if (this == High) {
+ s = "Double";
+ }
+ if (this == Higher) {
+ s = "Triple";
+ }
+ return AlleleManager.alleleRegistry.getAllele("forestry.saplings" + s);
+ }
+ }
+
+ public static enum Yield
+ {
+ Lowest, Lower, Low, Average, High, Higher, Highest;
+
+ private Yield() {}
+
+ public IAllele getAllele()
+ {
+ return AlleleManager.alleleRegistry.getAllele("forestry.yield" + (this == Average ? "Default" : toString()));
+ }
+ }
+
+ public static enum Maturation
+ {
+ Slowest, Slower, Slow, Average, Fast, Faster, Fastest;
+
+ private Maturation() {}
+
+ public IAllele getAllele()
+ {
+ return AlleleManager.alleleRegistry.getAllele("forestry.maturation" + toString());
+ }
+ }
+
+ public static enum Bool
+ {
+ True, False;
+
+ private Bool() {}
+
+ public IAllele getAllele()
+ {
+ return AlleleManager.alleleRegistry.getAllele("forestry.bool" + toString());
+ }
+
+ public static IAllele get(boolean bool)
+ {
+ return (bool ? True : False).getAllele();
+ }
+ }
+
+ public static enum Growth
+ {
+ Tropical;
+
+ private Growth() {}
+
+ public IAllele getAllele()
+ {
+ return AlleleManager.alleleRegistry.getAllele("forestry.growth" + toString());
+ }
+ }
+
+ public static enum Int
+ {
+ Int1, Int2, Int3, Int4, Int5, Int6, Int7, Int8, Int9, Int10;
+
+ private Int() {}
+
+ public IAllele getAllele()
+ {
+ return AlleleManager.alleleRegistry.getAllele("forestry.i" + (ordinal() + 1) + "d");
+ }
+ }
+
+ public static enum BeeSpecies
+ {
+ Modest, Noble, Forest, Rural, Marshy, Sinister, Tropical, Wintry, Merry, Austere, Imperial, Ended, Meadows, Common, Frugal, Unweary, Diligent, Majestic, Cultivated, Industrious, Valiant, Secluded, Hermitic, Spectral, Exotic, Fiendish, Monastic, Steadfast, Miry, Farmerly, Boggy, Demonic;
+
+ private BeeSpecies() {}
+
+ public IAlleleBeeSpecies getAllele()
+ {
+ return (IAlleleBeeSpecies)AlleleManager.alleleRegistry.getAllele("forestry.species" + toString());
+ }
+
+ public IAllele[] getTemplate()
+ {
+ return Binnie.Genetics.getBeeRoot().getTemplate(getAllele().getUID());
+ }
+ }
+}
diff --git a/src/Java/binnie/core/genetics/Gene.java b/src/Java/binnie/core/genetics/Gene.java
new file mode 100644
index 0000000000..3d071cc1ab
--- /dev/null
+++ b/src/Java/binnie/core/genetics/Gene.java
@@ -0,0 +1,128 @@
+package binnie.core.genetics;
+
+import binnie.Binnie;
+import binnie.genetics.api.IGene;
+import forestry.api.core.INBTTagable;
+import forestry.api.genetics.AlleleManager;
+import forestry.api.genetics.IAllele;
+import forestry.api.genetics.IAlleleRegistry;
+import forestry.api.genetics.IChromosomeType;
+import forestry.api.genetics.ISpeciesRoot;
+import net.minecraft.nbt.NBTTagCompound;
+
+public class Gene
+ implements INBTTagable, IGene
+{
+ private IAllele allele;
+ private IChromosomeType chromosome;
+ private ISpeciesRoot root;
+
+ public ISpeciesRoot getSpeciesRoot()
+ {
+ return this.root;
+ }
+
+ public String toString()
+ {
+ return getAlleleName();
+ }
+
+ public Gene(IAllele allele, IChromosomeType chromosome, ISpeciesRoot root)
+ {
+ this.allele = allele;
+ this.chromosome = chromosome;
+ this.root = root;
+ }
+
+ public Gene(NBTTagCompound nbt)
+ {
+ readFromNBT(nbt);
+ }
+
+ public void readFromNBT(NBTTagCompound nbt)
+ {
+ this.allele = AlleleManager.alleleRegistry.getAllele(nbt.getString("allele"));
+
+ this.root = AlleleManager.alleleRegistry.getSpeciesRoot(nbt.getString("root"));
+
+ int chromoID = nbt.getByte("chromo");
+ if ((this.root != null) && (chromoID >= 0) && (chromoID < this.root.getKaryotype().length)) {
+ this.chromosome = this.root.getKaryotype()[chromoID];
+ }
+ }
+
+ public void writeToNBT(NBTTagCompound nbt)
+ {
+ nbt.setString("allele", this.allele.getUID());
+ nbt.setString("root", this.root.getUID());
+ nbt.setByte("chromo", (byte)this.chromosome.ordinal());
+ }
+
+ public boolean isCorrupted()
+ {
+ return (this.allele == null) || (this.chromosome == null) || (this.root == null);
+ }
+
+ public static Gene create(NBTTagCompound nbt)
+ {
+ Gene gene = new Gene(nbt);
+ return gene.isCorrupted() ? null : gene;
+ }
+
+ public static Gene create(IAllele allele, IChromosomeType chromosome, ISpeciesRoot root)
+ {
+ Gene gene = new Gene(allele, chromosome, root);
+ return gene.isCorrupted() ? null : gene;
+ }
+
+ public NBTTagCompound getNBTTagCompound()
+ {
+ NBTTagCompound nbt = new NBTTagCompound();
+ writeToNBT(nbt);
+ return nbt;
+ }
+
+ public String getName()
+ {
+ return Binnie.Genetics.getSystem(this.root).getAlleleName(this.chromosome, this.allele);
+ }
+
+ public BreedingSystem getSystem()
+ {
+ return Binnie.Genetics.getSystem(this.root);
+ }
+
+ public IChromosomeType getChromosome()
+ {
+ return this.chromosome;
+ }
+
+ public IAllele getAllele()
+ {
+ return this.allele;
+ }
+
+ public boolean equals(Object obj)
+ {
+ if (!(obj instanceof Gene)) {
+ return false;
+ }
+ Gene g = (Gene)obj;
+ return (this.allele == g.allele) && (this.chromosome.ordinal() == g.chromosome.ordinal()) && (this.root == g.root);
+ }
+
+ public String getAlleleName()
+ {
+ return getSystem().getAlleleName(this.chromosome, this.allele);
+ }
+
+ public String getChromosomeName()
+ {
+ return getSystem().getChromosomeName(this.chromosome);
+ }
+
+ public String getShortChromosomeName()
+ {
+ return getSystem().getChromosomeShortName(this.chromosome);
+ }
+}
diff --git a/src/Java/binnie/core/genetics/IAlleleProvider.java b/src/Java/binnie/core/genetics/IAlleleProvider.java
new file mode 100644
index 0000000000..30dc8992e4
--- /dev/null
+++ b/src/Java/binnie/core/genetics/IAlleleProvider.java
@@ -0,0 +1,8 @@
+package binnie.core.genetics;
+
+import forestry.api.genetics.IAllele;
+
+public abstract interface IAlleleProvider
+{
+ public abstract IAllele getAllele();
+}
diff --git a/src/Java/binnie/core/genetics/IBreedingMessage.java b/src/Java/binnie/core/genetics/IBreedingMessage.java
new file mode 100644
index 0000000000..fdd815c122
--- /dev/null
+++ b/src/Java/binnie/core/genetics/IBreedingMessage.java
@@ -0,0 +1,124 @@
+package binnie.core.genetics;
+
+import binnie.Binnie;
+import binnie.core.BinnieCore;
+import binnie.core.language.ManagerLanguage;
+import forestry.api.genetics.AlleleManager;
+import forestry.api.genetics.IAlleleRegistry;
+import forestry.api.genetics.IAlleleSpecies;
+import forestry.api.genetics.IChromosomeType;
+import forestry.api.genetics.IClassification;
+import forestry.api.genetics.ISpeciesRoot;
+import java.util.Map;
+import net.minecraft.item.ItemStack;
+
+abstract interface IBreedingMessage
+{
+ public abstract String getTitle();
+
+ public abstract String getBody();
+
+ public abstract ItemStack getIcon();
+
+ public static class MessageSpeciesDiscovered
+ implements IBreedingMessage
+ {
+ IAlleleSpecies species;
+ ItemStack stack;
+
+ public MessageSpeciesDiscovered(IAlleleSpecies species)
+ {
+ this.species = species;
+ ISpeciesRoot root = null;
+ for (ISpeciesRoot sRoot : AlleleManager.alleleRegistry.getSpeciesRoot().values()) {
+ if (sRoot.getKaryotype()[0].getAlleleClass().isInstance(species)) {
+ root = sRoot;
+ }
+ }
+ if (root != null) {
+ this.stack = root.getMemberStack(root.templateAsIndividual(root.getTemplate(species.getUID())), 0);
+ }
+ }
+
+ public String getTitle()
+ {
+ return Binnie.Language.localise(BinnieCore.instance, "gui.breedingmessage.species");
+ }
+
+ public String getBody()
+ {
+ return this.species.getName();
+ }
+
+ public ItemStack getIcon()
+ {
+ return this.stack;
+ }
+ }
+
+ public static class BranchDiscovered
+ implements IBreedingMessage
+ {
+ IAlleleSpecies species;
+ IClassification classification;
+ ItemStack stack;
+
+ public BranchDiscovered(IAlleleSpecies species, IClassification classification)
+ {
+ this.species = species;
+ this.classification = classification;
+ ISpeciesRoot root = null;
+ for (ISpeciesRoot sRoot : AlleleManager.alleleRegistry.getSpeciesRoot().values()) {
+ if (sRoot.getKaryotype()[0].getAlleleClass().isInstance(species)) {
+ root = sRoot;
+ }
+ }
+ if (root != null) {
+ this.stack = root.getMemberStack(root.templateAsIndividual(root.getTemplate(species.getUID())), 0);
+ }
+ }
+
+ public String getTitle()
+ {
+ return Binnie.Language.localise(BinnieCore.instance, "gui.breedingmessage.branch");
+ }
+
+ public String getBody()
+ {
+ return this.classification.getScientific();
+ }
+
+ public ItemStack getIcon()
+ {
+ return this.stack;
+ }
+ }
+
+ public static class EpithetGained
+ implements IBreedingMessage
+ {
+ String epithet;
+ ItemStack stack;
+
+ public EpithetGained(String epithet, ISpeciesRoot root)
+ {
+ this.epithet = epithet;
+ this.stack = root.getMemberStack(root.templateAsIndividual(root.getDefaultTemplate()), 0);
+ }
+
+ public String getTitle()
+ {
+ return Binnie.Language.localise(BinnieCore.instance, "gui.breedingmessage.epithet");
+ }
+
+ public String getBody()
+ {
+ return this.epithet;
+ }
+
+ public ItemStack getIcon()
+ {
+ return this.stack;
+ }
+ }
+}
diff --git a/src/Java/binnie/core/genetics/IItemStackRepresentitive.java b/src/Java/binnie/core/genetics/IItemStackRepresentitive.java
new file mode 100644
index 0000000000..ccaf2d4ec4
--- /dev/null
+++ b/src/Java/binnie/core/genetics/IItemStackRepresentitive.java
@@ -0,0 +1,8 @@
+package binnie.core.genetics;
+
+import net.minecraft.item.ItemStack;
+
+public abstract interface IItemStackRepresentitive
+{
+ public abstract ItemStack getItemStackRepresentitive();
+}
diff --git a/src/Java/binnie/core/genetics/ManagerGenetics.java b/src/Java/binnie/core/genetics/ManagerGenetics.java
new file mode 100644
index 0000000000..4ea18ca7a4
--- /dev/null
+++ b/src/Java/binnie/core/genetics/ManagerGenetics.java
@@ -0,0 +1,298 @@
+package binnie.core.genetics;
+
+import binnie.Binnie;
+import binnie.botany.api.IFlowerRoot;
+import binnie.botany.genetics.AlleleColor;
+import binnie.core.BinnieCore;
+import binnie.core.ManagerBase;
+import cpw.mods.fml.common.eventhandler.SubscribeEvent;
+import forestry.api.apiculture.IBeeRoot;
+import forestry.api.arboriculture.ITreeRoot;
+import forestry.api.genetics.AlleleManager;
+import forestry.api.genetics.EnumTolerance;
+import forestry.api.genetics.IAllele;
+import forestry.api.genetics.IAlleleFloat;
+import forestry.api.genetics.IAlleleInteger;
+import forestry.api.genetics.IAlleleRegistry;
+import forestry.api.genetics.IAlleleSpecies;
+import forestry.api.genetics.IChromosomeType;
+import forestry.api.genetics.IGenome;
+import forestry.api.genetics.IIndividual;
+import forestry.api.genetics.ISpeciesRoot;
+import forestry.api.lepidopterology.IButterflyRoot;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Comparator;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.TreeSet;
+import net.minecraft.item.ItemStack;
+import net.minecraft.world.World;
+import net.minecraftforge.event.world.WorldEvent.Load;
+
+public class ManagerGenetics
+ extends ManagerBase
+{
+ public BreedingSystem beeBreedingSystem;
+ public BreedingSystem treeBreedingSystem;
+ public BreedingSystem mothBreedingSystem;
+ public BreedingSystem flowerBreedingSystem;
+ private final Map<ISpeciesRoot, BreedingSystem> BREEDING_SYSTEMS;
+ private List<IChromosomeType> invalidChromosomeTypes;
+ private Map<ISpeciesRoot, Map<IChromosomeType, List<IAllele>>> chromosomeArray;
+
+ public void init()
+ {
+ if (BinnieCore.isApicultureActive()) {
+ this.beeBreedingSystem = new BeeBreedingSystem();
+ }
+ if (BinnieCore.isArboricultureActive()) {
+ this.treeBreedingSystem = new TreeBreedingSystem();
+ }
+ if (BinnieCore.isLepidopteryActive()) {
+ this.mothBreedingSystem = new MothBreedingSystem();
+ }
+ if (BinnieCore.isBotanyActive()) {
+ this.flowerBreedingSystem = new FlowerBreedingSystem();
+ }
+ }
+
+ public void postInit()
+ {
+ refreshData();
+ }
+
+ public boolean isSpeciesDiscovered(IAlleleSpecies species, World world, boolean nei)
+ {
+ return true;
+ }
+
+ public ITreeRoot getTreeRoot()
+ {
+ return (ITreeRoot)AlleleManager.alleleRegistry.getSpeciesRoot("rootTrees");
+ }
+
+ public IBeeRoot getBeeRoot()
+ {
+ return (IBeeRoot)AlleleManager.alleleRegistry.getSpeciesRoot("rootBees");
+ }
+
+ public IButterflyRoot getButterflyRoot()
+ {
+ return (IButterflyRoot)AlleleManager.alleleRegistry.getSpeciesRoot("rootButterflies");
+ }
+
+ public IFlowerRoot getFlowerRoot()
+ {
+ return (IFlowerRoot)AlleleManager.alleleRegistry.getSpeciesRoot("rootFlowers");
+ }
+
+ public BreedingSystem getSystem(String string)
+ {
+ for (BreedingSystem system : this.BREEDING_SYSTEMS.values()) {
+ if (system.getIdent().equals(string)) {
+ return system;
+ }
+ }
+ return null;
+ }
+
+ public BreedingSystem getSystem(ISpeciesRoot root)
+ {
+ return getSystem(root.getUID());
+ }
+
+ public ISpeciesRoot getSpeciesRoot(IAlleleSpecies species)
+ {
+ for (ISpeciesRoot root : AlleleManager.alleleRegistry.getSpeciesRoot().values()) {
+ if (root.getKaryotype()[0].getAlleleClass().isInstance(species)) {
+ return root;
+ }
+ }
+ return null;
+ }
+
+ public IAllele getToleranceAllele(EnumTolerance tol)
+ {
+ return AlleleManager.alleleRegistry.getAllele(Tolerance.values()[tol.ordinal()].getUID());
+ }
+
+ public int[] getTolerance(EnumTolerance tol)
+ {
+ return Tolerance.values()[tol.ordinal()].getBounds();
+ }
+
+ public Collection<BreedingSystem> getActiveSystems()
+ {
+ return this.BREEDING_SYSTEMS.values();
+ }
+
+ public void registerBreedingSystem(BreedingSystem system)
+ {
+ this.BREEDING_SYSTEMS.put(system.getSpeciesRoot(), system);
+ }
+
+ public BreedingSystem getConversionSystem(ItemStack stack)
+ {
+ for (BreedingSystem system : getActiveSystems()) {
+ if (system.getConversion(stack) != null) {
+ return system;
+ }
+ }
+ return null;
+ }
+
+ public ItemStack getConversionStack(ItemStack stack)
+ {
+ BreedingSystem system = getConversionSystem(stack);
+ return system == null ? null : system.getConversionStack(stack);
+ }
+
+ public IIndividual getConversion(ItemStack stack)
+ {
+ BreedingSystem system = getConversionSystem(stack);
+ return system == null ? null : system.getConversion(stack);
+ }
+
+ @SubscribeEvent
+ public void onWorldLoad(WorldEvent.Load event)
+ {
+ refreshData();
+ }
+
+ private void refreshData()
+ {
+ loadAlleles();
+ for (BreedingSystem system : Binnie.Genetics.getActiveSystems()) {
+ system.calculateArrays();
+ }
+ }
+
+ public ManagerGenetics()
+ {
+ this.BREEDING_SYSTEMS = new LinkedHashMap();
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ this.invalidChromosomeTypes = new ArrayList();
+
+ this.chromosomeArray = new LinkedHashMap();
+ }
+
+ private void loadAlleles()
+ {
+ this.invalidChromosomeTypes.clear();
+ for (ISpeciesRoot root : AlleleManager.alleleRegistry.getSpeciesRoot().values())
+ {
+ BreedingSystem system = getSystem(root);
+ Map<IChromosomeType, List<IAllele>> chromosomeMap = new LinkedHashMap();
+ for (IChromosomeType chromosome : root.getKaryotype())
+ {
+ TreeSet<IAllele> alleles = new TreeSet(new ComparatorAllele());
+ for (IIndividual individual : root.getIndividualTemplates())
+ {
+ IGenome genome = individual.getGenome();
+ try
+ {
+ IAllele a1 = genome.getActiveAllele(chromosome);
+ IAllele a2 = genome.getInactiveAllele(chromosome);
+ if (chromosome.getAlleleClass().isInstance(a1)) {
+ alleles.add(a1);
+ }
+ if (chromosome.getAlleleClass().isInstance(a2)) {
+ alleles.add(a2);
+ }
+ }
+ catch (Exception e) {}
+ }
+ system.addExtraAlleles(chromosome, alleles);
+ if (alleles.size() == 0)
+ {
+ this.invalidChromosomeTypes.add(chromosome);
+ }
+ else
+ {
+ List<IAllele> alleleList = new ArrayList();
+ alleleList.addAll(alleles);
+ chromosomeMap.put(chromosome, alleleList);
+ }
+ }
+ this.chromosomeArray.put(root, chromosomeMap);
+ }
+ }
+
+ static class ComparatorAllele
+ implements Comparator<IAllele>
+ {
+ public int compare(IAllele o1, IAllele o2)
+ {
+ if ((o1 == null) || (o2 == null)) {
+ throw new NullPointerException("Allele is null!");
+ }
+ if (((o1 instanceof IAlleleFloat)) && ((o2 instanceof IAlleleFloat))) {
+ return Float.valueOf(((IAlleleFloat)o1).getValue()).compareTo(Float.valueOf(((IAlleleFloat)o2).getValue()));
+ }
+ if (((o1 instanceof IAlleleInteger)) && ((o2 instanceof IAlleleInteger)) && (!(o1 instanceof AlleleColor))) {
+ return Integer.valueOf(((IAlleleInteger)o1).getValue()).compareTo(Integer.valueOf(((IAlleleInteger)o2).getValue()));
+ }
+ if ((o1.getName() != null) && (o2.getName() != null)) {
+ return o1.getName().compareTo(o2.getName());
+ }
+ return o1.getUID().compareTo(o2.getUID());
+ }
+ }
+
+ public Map<IChromosomeType, List<IAllele>> getChromosomeMap(ISpeciesRoot root)
+ {
+ return (Map)this.chromosomeArray.get(root);
+ }
+
+ public Collection<IChromosomeType> getActiveChromosomes(ISpeciesRoot root)
+ {
+ return getChromosomeMap(root).keySet();
+ }
+
+ public boolean isInvalidChromosome(IChromosomeType type)
+ {
+ return this.invalidChromosomeTypes.contains(type);
+ }
+}
diff --git a/src/Java/binnie/core/genetics/MothBreedingSystem.java b/src/Java/binnie/core/genetics/MothBreedingSystem.java
new file mode 100644
index 0000000000..e1a45c9a9c
--- /dev/null
+++ b/src/Java/binnie/core/genetics/MothBreedingSystem.java
@@ -0,0 +1,138 @@
+package binnie.core.genetics;
+
+import binnie.Binnie;
+import binnie.core.BinnieCore;
+import binnie.core.language.ManagerLanguage;
+import binnie.core.resource.ManagerResource;
+import binnie.extratrees.ExtraTrees;
+import forestry.api.genetics.IAllele;
+import forestry.api.genetics.IAlleleInteger;
+import forestry.api.genetics.IBreedingTracker;
+import forestry.api.genetics.IChromosomeType;
+import forestry.api.genetics.IMutation;
+import forestry.api.genetics.ISpeciesRoot;
+import forestry.api.lepidopterology.EnumButterflyChromosome;
+import forestry.api.lepidopterology.EnumFlutterType;
+import forestry.api.lepidopterology.IButterflyRoot;
+import forestry.api.lepidopterology.ILepidopteristTracker;
+import java.util.TreeSet;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.item.ItemStack;
+
+class MothBreedingSystem
+ extends BreedingSystem
+{
+ public MothBreedingSystem()
+ {
+ this.iconUndiscovered = Binnie.Resource.getItemIcon(ExtraTrees.instance, "icon/undiscoveredMoth");
+ this.iconDiscovered = Binnie.Resource.getItemIcon(ExtraTrees.instance, "icon/discoveredMoth");
+ }
+
+ public float getChance(IMutation mutation, EntityPlayer player, IAllele species1, IAllele species2)
+ {
+ return 0.0F;
+ }
+
+ public ISpeciesRoot getSpeciesRoot()
+ {
+ return Binnie.Genetics.getButterflyRoot();
+ }
+
+ public int getColour()
+ {
+ return 62194;
+ }
+
+ public Class<? extends IBreedingTracker> getTrackerClass()
+ {
+ return ILepidopteristTracker.class;
+ }
+
+ public String getAlleleName(IChromosomeType chromosome, IAllele allele)
+ {
+ if (chromosome == EnumButterflyChromosome.METABOLISM)
+ {
+ int metabolism = ((IAlleleInteger)allele).getValue();
+ if (metabolism >= 19) {
+ return Binnie.Language.localise(BinnieCore.instance, "allele.metabolism.highest");
+ }
+ if (metabolism >= 16) {
+ return Binnie.Language.localise(BinnieCore.instance, "allele.metabolism.higher");
+ }
+ if (metabolism >= 13) {
+ return Binnie.Language.localise(BinnieCore.instance, "allele.metabolism.high");
+ }
+ if (metabolism >= 10) {
+ return Binnie.Language.localise(BinnieCore.instance, "allele.metabolism.normal");
+ }
+ if (metabolism >= 7) {
+ return Binnie.Language.localise(BinnieCore.instance, "allele.metabolism.slow");
+ }
+ if (metabolism >= 4) {
+ return Binnie.Language.localise(BinnieCore.instance, "allele.metabolism.slower");
+ }
+ return Binnie.Language.localise(BinnieCore.instance, "allele.metabolism.slowest");
+ }
+ if (chromosome == EnumButterflyChromosome.FERTILITY)
+ {
+ int metabolism = ((IAlleleInteger)allele).getValue();
+ return metabolism + "x";
+ }
+ return super.getAlleleName(chromosome, allele);
+ }
+
+ public boolean isDNAManipulable(ItemStack member)
+ {
+ return ((IButterflyRoot)getSpeciesRoot()).getType(member) == EnumFlutterType.SERUM;
+ }
+
+ public int[] getActiveTypes()
+ {
+ return new int[] { EnumFlutterType.BUTTERFLY.ordinal(), EnumFlutterType.CATERPILLAR.ordinal(), EnumFlutterType.SERUM.ordinal() };
+ }
+
+ public void addExtraAlleles(IChromosomeType chromosome, TreeSet<IAllele> alleles)
+ {
+ switch (1.$SwitchMap$forestry$api$lepidopterology$EnumButterflyChromosome[((EnumButterflyChromosome)chromosome).ordinal()])
+ {
+ case 1:
+ for (ForestryAllele.Int a : ForestryAllele.Int.values()) {
+ alleles.add(a.getAllele());
+ }
+ break;
+ case 2:
+ for (ForestryAllele.Lifespan a : ForestryAllele.Lifespan.values()) {
+ alleles.add(a.getAllele());
+ }
+ break;
+ case 3:
+ for (ForestryAllele.Int a : ForestryAllele.Int.values()) {
+ alleles.add(a.getAllele());
+ }
+ break;
+ case 4:
+ case 5:
+ case 6:
+ for (ForestryAllele.Bool a : ForestryAllele.Bool.values()) {
+ alleles.add(a.getAllele());
+ }
+ break;
+ case 7:
+ for (ForestryAllele.Size a : ForestryAllele.Size.values()) {
+ alleles.add(a.getAllele());
+ }
+ break;
+ case 8:
+ for (ForestryAllele.Speed a : ForestryAllele.Speed.values()) {
+ alleles.add(a.getAllele());
+ }
+ break;
+ case 9:
+ case 10:
+ for (Tolerance a : Tolerance.values()) {
+ alleles.add(a.getAllele());
+ }
+ break;
+ }
+ }
+}
diff --git a/src/Java/binnie/core/genetics/Tolerance.java b/src/Java/binnie/core/genetics/Tolerance.java
new file mode 100644
index 0000000000..7d9f62dfbf
--- /dev/null
+++ b/src/Java/binnie/core/genetics/Tolerance.java
@@ -0,0 +1,48 @@
+package binnie.core.genetics;
+
+import forestry.api.genetics.AlleleManager;
+import forestry.api.genetics.EnumTolerance;
+import forestry.api.genetics.IAllele;
+import forestry.api.genetics.IAlleleRegistry;
+
+public enum Tolerance
+{
+ None(0, 0), Both1(-1, 1), Both2(-2, 2), Both3(-3, 3), Both4(-4, 4), Both5(-5, 5), Up1(0, 1), Up2(0, 2), Up3(0, 3), Up4(0, 4), Up5(0, 5), Down1(-1, 0), Down2(-2, 0), Down3(-3, 0), Down4(-4, 0), Down5(-5, 0);
+
+ private int[] bounds;
+
+ private Tolerance(int a, int b)
+ {
+ this.bounds = new int[] { a, b };
+ }
+
+ public String getUID()
+ {
+ return "forestry.tolerance" + toString();
+ }
+
+ public int[] getBounds()
+ {
+ return this.bounds;
+ }
+
+ public static Tolerance get(EnumTolerance tol)
+ {
+ return values()[tol.ordinal()];
+ }
+
+ public IAllele getAllele()
+ {
+ return AlleleManager.alleleRegistry.getAllele(getUID());
+ }
+
+ public <T extends Enum<T>> boolean canTolerate(T base, T test)
+ {
+ return (test.ordinal() <= base.ordinal() + this.bounds[1]) && (test.ordinal() >= base.ordinal() + this.bounds[0]);
+ }
+
+ public static <T extends Enum<T>> boolean canTolerate(T base, T test, EnumTolerance tol)
+ {
+ return get(tol).canTolerate(base, test);
+ }
+}
diff --git a/src/Java/binnie/core/genetics/TreeBreedingSystem.java b/src/Java/binnie/core/genetics/TreeBreedingSystem.java
new file mode 100644
index 0000000000..9793126cb1
--- /dev/null
+++ b/src/Java/binnie/core/genetics/TreeBreedingSystem.java
@@ -0,0 +1,303 @@
+package binnie.core.genetics;
+
+import binnie.Binnie;
+import binnie.core.BinnieCore;
+import binnie.core.language.ManagerLanguage;
+import binnie.core.resource.ManagerResource;
+import binnie.core.util.UniqueItemStackSet;
+import binnie.extratrees.ExtraTrees;
+import binnie.extratrees.machines.Lumbermill;
+import com.mojang.authlib.GameProfile;
+import forestry.api.arboriculture.EnumGermlingType;
+import forestry.api.arboriculture.EnumTreeChromosome;
+import forestry.api.arboriculture.IAlleleFruit;
+import forestry.api.arboriculture.IAlleleTreeSpecies;
+import forestry.api.arboriculture.IArboristTracker;
+import forestry.api.arboriculture.IFruitProvider;
+import forestry.api.arboriculture.ITreeGenome;
+import forestry.api.arboriculture.ITreeMutation;
+import forestry.api.arboriculture.ITreeRoot;
+import forestry.api.genetics.AlleleManager;
+import forestry.api.genetics.IAllele;
+import forestry.api.genetics.IAlleleInteger;
+import forestry.api.genetics.IAllelePlantType;
+import forestry.api.genetics.IAlleleSpecies;
+import forestry.api.genetics.IBreedingTracker;
+import forestry.api.genetics.IChromosomeType;
+import forestry.api.genetics.IFruitFamily;
+import forestry.api.genetics.IGenome;
+import forestry.api.genetics.IIndividual;
+import forestry.api.genetics.IMutation;
+import forestry.api.genetics.ISpeciesRoot;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.EnumSet;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map.Entry;
+import java.util.Set;
+import java.util.TreeSet;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.item.ItemStack;
+import net.minecraft.world.World;
+import net.minecraftforge.common.EnumPlantType;
+
+public class TreeBreedingSystem
+ extends BreedingSystem
+{
+ public UniqueItemStackSet allFruits = new UniqueItemStackSet();
+ public UniqueItemStackSet allWoods = new UniqueItemStackSet();
+ private UniqueItemStackSet discoveredFruits = new UniqueItemStackSet();
+ private UniqueItemStackSet discoveredWoods = new UniqueItemStackSet();
+ public UniqueItemStackSet discoveredPlanks = new UniqueItemStackSet();
+
+ public TreeBreedingSystem()
+ {
+ this.iconUndiscovered = Binnie.Resource.getItemIcon(ExtraTrees.instance, "icon/undiscoveredTree");
+ this.iconDiscovered = Binnie.Resource.getItemIcon(ExtraTrees.instance, "icon/discoveredTree");
+ }
+
+ public float getChance(IMutation mutation, EntityPlayer player, IAllele species1, IAllele species2)
+ {
+ IGenome genome0 = getSpeciesRoot().templateAsGenome(getSpeciesRoot().getTemplate(species1.getUID()));
+ IGenome genome1 = getSpeciesRoot().templateAsGenome(getSpeciesRoot().getTemplate(species2.getUID()));
+ return ((ITreeMutation)mutation).getChance(player.worldObj, (int)player.posX, (int)player.posY, (int)player.posZ, species1, species2, genome0, genome1);
+ }
+
+ public ISpeciesRoot getSpeciesRoot()
+ {
+ return Binnie.Genetics.getTreeRoot();
+ }
+
+ public int getColour()
+ {
+ return 53006;
+ }
+
+ public Class<? extends IBreedingTracker> getTrackerClass()
+ {
+ return IArboristTracker.class;
+ }
+
+ public String getAlleleName(IChromosomeType chromosome, IAllele allele)
+ {
+ if (chromosome == EnumTreeChromosome.GIRTH) {
+ return ((IAlleleInteger)allele).getValue() + "x" + ((IAlleleInteger)allele).getValue();
+ }
+ if (chromosome == EnumTreeChromosome.PLANT)
+ {
+ EnumSet<EnumPlantType> types = ((IAllelePlantType)allele).getPlantTypes();
+ return types.isEmpty() ? Binnie.Language.localise(BinnieCore.instance, "allele.none") : ((EnumPlantType)types.iterator().next()).toString();
+ }
+ if ((chromosome == EnumTreeChromosome.FRUITS) && (allele.getUID().contains(".")))
+ {
+ IFruitProvider provider = ((IAlleleFruit)allele).getProvider();
+ return provider.getProducts().length == 0 ? Binnie.Language.localise(BinnieCore.instance, "allele.none") : provider.getProducts()[0].getDisplayName();
+ }
+ if (chromosome == EnumTreeChromosome.GROWTH)
+ {
+ if (allele.getUID().contains("Tropical")) {
+ return Binnie.Language.localise(BinnieCore.instance, "allele.growth.tropical");
+ }
+ if (allele.getUID().contains("Lightlevel")) {
+ return Binnie.Language.localise(BinnieCore.instance, "allele.growth.lightlevel");
+ }
+ }
+ return super.getAlleleName(chromosome, allele);
+ }
+
+ public void onSyncBreedingTracker(IBreedingTracker tracker)
+ {
+ this.discoveredFruits.clear();
+ this.discoveredWoods.clear();
+ for (IAlleleSpecies species : getDiscoveredSpecies(tracker))
+ {
+ IAlleleTreeSpecies tSpecies = (IAlleleTreeSpecies)species;
+
+ ITreeGenome genome = (ITreeGenome)getSpeciesRoot().templateAsGenome(getSpeciesRoot().getTemplate(tSpecies.getUID()));
+ for (ItemStack wood : tSpecies.getLogStacks()) {
+ this.discoveredWoods.add(wood);
+ }
+ for (ItemStack fruit : genome.getFruitProvider().getProducts()) {
+ this.discoveredFruits.add(fruit);
+ }
+ for (Iterator i$ = this.discoveredWoods.iterator(); i$.hasNext(); wood = (ItemStack)i$.next()) {}
+ }
+ ItemStack wood;
+ }
+
+ public final void calculateArrays()
+ {
+ super.calculateArrays();
+ for (IAlleleSpecies species : this.allActiveSpecies)
+ {
+ IAlleleTreeSpecies tSpecies = (IAlleleTreeSpecies)species;
+
+
+ ITreeGenome genome = (ITreeGenome)getSpeciesRoot().templateAsGenome(getSpeciesRoot().getTemplate(tSpecies.getUID()));
+ for (ItemStack wood : tSpecies.getLogStacks()) {
+ this.allWoods.add(wood);
+ }
+ for (ItemStack fruit : genome.getFruitProvider().getProducts()) {
+ this.allFruits.add(fruit);
+ }
+ }
+ }
+
+ public Collection<IAlleleSpecies> getTreesThatBearFruit(ItemStack fruit, boolean nei, World world, GameProfile player)
+ {
+ Collection<IAlleleSpecies> set = nei ? getAllSpecies() : getDiscoveredSpecies(world, player);
+ List<IAlleleSpecies> found = new ArrayList();
+ for (IAlleleSpecies species : set)
+ {
+ IAlleleTreeSpecies tSpecies = (IAlleleTreeSpecies)species;
+ ITreeGenome genome = (ITreeGenome)getSpeciesRoot().templateAsGenome(getSpeciesRoot().getTemplate(tSpecies.getUID()));
+ for (ItemStack fruit2 : genome.getFruitProvider().getProducts()) {
+ if (fruit2.isItemEqual(fruit)) {
+ found.add(species);
+ }
+ }
+ }
+ return found;
+ }
+
+ public Collection<IAlleleSpecies> getTreesThatCanBearFruit(ItemStack fruit, boolean nei, World world, GameProfile player)
+ {
+ Collection<IAlleleSpecies> set = nei ? getAllSpecies() : getDiscoveredSpecies(world, player);
+ List<IAlleleSpecies> found = new ArrayList();
+
+ Set<IFruitFamily> providers = new HashSet();
+ for (IAlleleSpecies species : set)
+ {
+ IAlleleTreeSpecies tSpecies = (IAlleleTreeSpecies)species;
+ ITreeGenome genome = (ITreeGenome)getSpeciesRoot().templateAsGenome(getSpeciesRoot().getTemplate(tSpecies.getUID()));
+ for (ItemStack fruit2 : genome.getFruitProvider().getProducts()) {
+ if (fruit2.isItemEqual(fruit)) {
+ providers.add(genome.getFruitProvider().getFamily());
+ }
+ }
+ }
+ for (Iterator i$ = set.iterator(); i$.hasNext();)
+ {
+ species = (IAlleleSpecies)i$.next();
+ tSpecies = (IAlleleTreeSpecies)species;
+ for (IFruitFamily family : providers) {
+ if (tSpecies.getSuitableFruit().contains(family))
+ {
+ found.add(species);
+ break;
+ }
+ }
+ }
+ IAlleleSpecies species;
+ IAlleleTreeSpecies tSpecies;
+ return found;
+ }
+
+ public Collection<IAlleleSpecies> getTreesThatHaveWood(ItemStack fruit, boolean nei, World world, GameProfile player)
+ {
+ Collection<IAlleleSpecies> set = nei ? getAllSpecies() : getDiscoveredSpecies(world, player);
+ List<IAlleleSpecies> found = new ArrayList();
+ for (IAlleleSpecies species : set)
+ {
+ IAlleleTreeSpecies tSpecies = (IAlleleTreeSpecies)species;
+ for (ItemStack fruit2 : tSpecies.getLogStacks()) {
+ if (fruit2.isItemEqual(fruit)) {
+ found.add(species);
+ }
+ }
+ }
+ return found;
+ }
+
+ public Collection<IAlleleSpecies> getTreesThatMakePlanks(ItemStack fruit, boolean nei, World world, GameProfile player)
+ {
+ if (fruit == null) {
+ return new ArrayList();
+ }
+ Collection<IAlleleSpecies> set = nei ? getAllSpecies() : getDiscoveredSpecies(world, player);
+ List<IAlleleSpecies> found = new ArrayList();
+ for (IAlleleSpecies species : set)
+ {
+ IAlleleTreeSpecies tSpecies = (IAlleleTreeSpecies)species;
+ for (ItemStack fruit2 : tSpecies.getLogStacks()) {
+ if ((Lumbermill.getPlankProduct(fruit2) != null) && (fruit.isItemEqual(Lumbermill.getPlankProduct(fruit2)))) {
+ found.add(species);
+ }
+ }
+ }
+ return found;
+ }
+
+ public boolean isDNAManipulable(ItemStack member)
+ {
+ return ((ITreeRoot)getSpeciesRoot()).getType(member) == EnumGermlingType.POLLEN;
+ }
+
+ public IIndividual getConversion(ItemStack stack)
+ {
+ if (stack == null) {
+ return null;
+ }
+ for (Map.Entry<ItemStack, IIndividual> entry : AlleleManager.ersatzSaplings.entrySet()) {
+ if (ItemStack.areItemStacksEqual(stack, (ItemStack)entry.getKey())) {
+ return (IIndividual)entry.getValue();
+ }
+ }
+ return null;
+ }
+
+ public int[] getActiveTypes()
+ {
+ return new int[] { EnumGermlingType.SAPLING.ordinal(), EnumGermlingType.POLLEN.ordinal() };
+ }
+
+ public void addExtraAlleles(IChromosomeType chromosome, TreeSet<IAllele> alleles)
+ {
+ switch (1.$SwitchMap$forestry$api$arboriculture$EnumTreeChromosome[((EnumTreeChromosome)chromosome).ordinal()])
+ {
+ case 1:
+ for (ForestryAllele.Saplings a : ForestryAllele.Saplings.values()) {
+ alleles.add(a.getAllele());
+ }
+ break;
+ case 2:
+ for (ForestryAllele.Int a : ForestryAllele.Int.values()) {
+ alleles.add(a.getAllele());
+ }
+ break;
+ case 3:
+ for (ForestryAllele.TreeHeight a : ForestryAllele.TreeHeight.values()) {
+ alleles.add(a.getAllele());
+ }
+ break;
+ case 4:
+ for (ForestryAllele.Maturation a : ForestryAllele.Maturation.values()) {
+ alleles.add(a.getAllele());
+ }
+ break;
+ case 5:
+ for (ForestryAllele.Sappiness a : ForestryAllele.Sappiness.values()) {
+ alleles.add(a.getAllele());
+ }
+ break;
+ case 6:
+ for (ForestryAllele.Territory a : ForestryAllele.Territory.values()) {
+ alleles.add(a.getAllele());
+ }
+ break;
+ case 7:
+ for (ForestryAllele.Yield a : ForestryAllele.Yield.values()) {
+ alleles.add(a.getAllele());
+ }
+ break;
+ case 8:
+ for (ForestryAllele.Bool a : ForestryAllele.Bool.values()) {
+ alleles.add(a.getAllele());
+ }
+ break;
+ }
+ }
+}
diff --git a/src/Java/binnie/core/genetics/VirtualBeeHousing.java b/src/Java/binnie/core/genetics/VirtualBeeHousing.java
new file mode 100644
index 0000000000..b425a21d83
--- /dev/null
+++ b/src/Java/binnie/core/genetics/VirtualBeeHousing.java
@@ -0,0 +1,111 @@
+package binnie.core.genetics;
+
+import forestry.api.apiculture.IBee;
+import forestry.api.apiculture.IBeeGenome;
+import forestry.api.apiculture.IBeeHousing;
+import forestry.api.genetics.IIndividual;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.item.ItemStack;
+import net.minecraft.world.biome.BiomeGenBase;
+
+public class VirtualBeeHousing
+ extends VirtualHousing
+ implements IBeeHousing
+{
+ public VirtualBeeHousing(EntityPlayer player)
+ {
+ super(player);
+ }
+
+ public float getTerritoryModifier(IBeeGenome genome, float currentModifier)
+ {
+ return 1.0F;
+ }
+
+ public float getMutationModifier(IBeeGenome genome, IBeeGenome mate, float currentModifier)
+ {
+ return 1.0F;
+ }
+
+ public float getLifespanModifier(IBeeGenome genome, IBeeGenome mate, float currentModifier)
+ {
+ return 1.0F;
+ }
+
+ public float getProductionModifier(IBeeGenome genome, float currentModifier)
+ {
+ return 1.0F;
+ }
+
+ public ItemStack getQueen()
+ {
+ return null;
+ }
+
+ public ItemStack getDrone()
+ {
+ return null;
+ }
+
+ public void setQueen(ItemStack itemstack) {}
+
+ public void setDrone(ItemStack itemstack) {}
+
+ public boolean canBreed()
+ {
+ return true;
+ }
+
+ public boolean addProduct(ItemStack product, boolean all)
+ {
+ return false;
+ }
+
+ public void wearOutEquipment(int amount) {}
+
+ public void onQueenChange(ItemStack queen) {}
+
+ public boolean isSealed()
+ {
+ return false;
+ }
+
+ public boolean isSelfLighted()
+ {
+ return false;
+ }
+
+ public boolean isSunlightSimulated()
+ {
+ return false;
+ }
+
+ public boolean isHellish()
+ {
+ return getBiomeId() == BiomeGenBase.hell.biomeID;
+ }
+
+ public float getFloweringModifier(IBeeGenome genome, float currentModifier)
+ {
+ return 1.0F;
+ }
+
+ public void onQueenDeath(IBee queen) {}
+
+ public void onPostQueenDeath(IBee queen) {}
+
+ public boolean onPollenRetrieved(IBee queen, IIndividual pollen, boolean isHandled)
+ {
+ return false;
+ }
+
+ public boolean onEggLaid(IBee queen)
+ {
+ return false;
+ }
+
+ public float getGeneticDecay(IBeeGenome genome, float currentModifier)
+ {
+ return 1.0F;
+ }
+}
diff --git a/src/Java/binnie/core/genetics/VirtualHousing.java b/src/Java/binnie/core/genetics/VirtualHousing.java
new file mode 100644
index 0000000000..b6caa48360
--- /dev/null
+++ b/src/Java/binnie/core/genetics/VirtualHousing.java
@@ -0,0 +1,98 @@
+package binnie.core.genetics;
+
+import com.mojang.authlib.GameProfile;
+import forestry.api.core.EnumHumidity;
+import forestry.api.core.EnumTemperature;
+import forestry.api.core.IErrorState;
+import forestry.api.genetics.IHousing;
+import forestry.core.EnumErrorCode;
+import java.util.Set;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.item.ItemStack;
+import net.minecraft.world.World;
+import net.minecraft.world.biome.BiomeGenBase;
+
+class VirtualHousing
+ implements IHousing
+{
+ private EntityPlayer player;
+
+ public VirtualHousing(EntityPlayer player)
+ {
+ this.player = player;
+ }
+
+ public int getXCoord()
+ {
+ return (int)this.player.posX;
+ }
+
+ public int getYCoord()
+ {
+ return (int)this.player.posY;
+ }
+
+ public int getZCoord()
+ {
+ return (int)this.player.posZ;
+ }
+
+ public int getBiomeId()
+ {
+ return this.player.worldObj.getBiomeGenForCoords(getXCoord(), getYCoord()).biomeID;
+ }
+
+ public EnumTemperature getTemperature()
+ {
+ return EnumTemperature.getFromValue(getBiome().temperature);
+ }
+
+ public EnumHumidity getHumidity()
+ {
+ return EnumHumidity.getFromValue(getBiome().rainfall);
+ }
+
+ public World getWorld()
+ {
+ return this.player.worldObj;
+ }
+
+ public void setErrorState(int state) {}
+
+ public int getErrorOrdinal()
+ {
+ return 0;
+ }
+
+ public boolean addProduct(ItemStack product, boolean all)
+ {
+ return false;
+ }
+
+ public GameProfile getOwnerName()
+ {
+ return this.player.getGameProfile();
+ }
+
+ public BiomeGenBase getBiome()
+ {
+ return this.player.worldObj.getBiomeGenForCoords(getXCoord(), getZCoord());
+ }
+
+ public EnumErrorCode getErrorState()
+ {
+ return null;
+ }
+
+ public void setErrorState(IErrorState state) {}
+
+ public boolean setErrorCondition(boolean condition, IErrorState errorState)
+ {
+ return false;
+ }
+
+ public Set<IErrorState> getErrorStates()
+ {
+ return null;
+ }
+}
diff --git a/src/Java/binnie/core/genetics/VirtualMothHousing.java b/src/Java/binnie/core/genetics/VirtualMothHousing.java
new file mode 100644
index 0000000000..ad0f8d0cfc
--- /dev/null
+++ b/src/Java/binnie/core/genetics/VirtualMothHousing.java
@@ -0,0 +1,33 @@
+package binnie.core.genetics;
+
+import forestry.api.genetics.IIndividual;
+import forestry.api.lepidopterology.IButterfly;
+import forestry.api.lepidopterology.IButterflyNursery;
+import net.minecraft.entity.player.EntityPlayer;
+
+public class VirtualMothHousing
+ extends VirtualHousing
+ implements IButterflyNursery
+{
+ public VirtualMothHousing(EntityPlayer player)
+ {
+ super(player);
+ }
+
+ public IButterfly getCaterpillar()
+ {
+ return null;
+ }
+
+ public IIndividual getNanny()
+ {
+ return null;
+ }
+
+ public void setCaterpillar(IButterfly butterfly) {}
+
+ public boolean canNurse(IButterfly butterfly)
+ {
+ return false;
+ }
+}
diff --git a/src/Java/binnie/core/gui/BinnieCoreGUI.java b/src/Java/binnie/core/gui/BinnieCoreGUI.java
new file mode 100644
index 0000000000..50f99306f1
--- /dev/null
+++ b/src/Java/binnie/core/gui/BinnieCoreGUI.java
@@ -0,0 +1,54 @@
+package binnie.core.gui;
+
+import binnie.core.machines.storage.WindowCompartment;
+import binnie.craftgui.binniecore.WindowFieldKit;
+import binnie.craftgui.binniecore.WindowGenesis;
+import binnie.craftgui.minecraft.Window;
+import cpw.mods.fml.relauncher.Side;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.inventory.IInventory;
+import net.minecraft.tileentity.TileEntity;
+import net.minecraft.world.World;
+
+public enum BinnieCoreGUI
+ implements IBinnieGUID
+{
+ Compartment, FieldKit, Genesis;
+
+ private BinnieCoreGUI() {}
+
+ public Window getWindow(EntityPlayer player, IInventory object, Side side)
+ throws Exception
+ {
+ switch (1.$SwitchMap$binnie$core$gui$BinnieCoreGUI[ordinal()])
+ {
+ case 1:
+ return new WindowCompartment(player, object, side);
+ case 2:
+ return new WindowFieldKit(player, null, side);
+ case 3:
+ return new WindowGenesis(player, null, side);
+ }
+ return null;
+ }
+
+ public Window getWindow(EntityPlayer player, World world, int x, int y, int z, Side side)
+ {
+ Window window = null;
+ TileEntity tileEntity = world.getTileEntity(x, y, z);
+
+ IInventory object = null;
+ if ((tileEntity instanceof IInventory)) {
+ object = (IInventory)tileEntity;
+ }
+ try
+ {
+ window = getWindow(player, object, side);
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ }
+ return window;
+ }
+}
diff --git a/src/Java/binnie/core/gui/BinnieGUIHandler.java b/src/Java/binnie/core/gui/BinnieGUIHandler.java
new file mode 100644
index 0000000000..c146d914e0
--- /dev/null
+++ b/src/Java/binnie/core/gui/BinnieGUIHandler.java
@@ -0,0 +1,54 @@
+package binnie.core.gui;
+
+import binnie.core.AbstractMod;
+import binnie.core.BinnieCore;
+import binnie.core.proxy.BinnieProxy;
+import binnie.craftgui.minecraft.Window;
+import cpw.mods.fml.common.network.IGuiHandler;
+import cpw.mods.fml.relauncher.Side;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.world.World;
+
+public final class BinnieGUIHandler
+ implements IGuiHandler
+{
+ private AbstractMod mod;
+
+ public BinnieGUIHandler(AbstractMod mod)
+ {
+ this.mod = mod;
+ }
+
+ public final Object getServerGuiElement(int id, EntityPlayer player, World world, int x, int y, int z)
+ {
+ Window window = getWindow(id, player, world, x, y, z, Side.SERVER);
+ if (window == null) {
+ return null;
+ }
+ window.initialiseServer();
+
+ return window.getContainer();
+ }
+
+ public final Object getClientGuiElement(int id, EntityPlayer player, World world, int x, int y, int z)
+ {
+ if (BinnieCore.proxy.isSimulating(world)) {
+ return getServerGuiElement(id, player, world, x, y, z);
+ }
+ Window window = getWindow(id, player, world, x, y, z, Side.CLIENT);
+ if (window == null) {
+ return null;
+ }
+ return window.getGui();
+ }
+
+ public Window getWindow(int id, EntityPlayer player, World world, int x, int y, int z, Side side)
+ {
+ for (IBinnieGUID guid : this.mod.getGUIDs()) {
+ if (guid.ordinal() == id) {
+ return guid.getWindow(player, world, x, y, z, side);
+ }
+ }
+ return null;
+ }
+}
diff --git a/src/Java/binnie/core/gui/IBinnieGUID.java b/src/Java/binnie/core/gui/IBinnieGUID.java
new file mode 100644
index 0000000000..be0fd174da
--- /dev/null
+++ b/src/Java/binnie/core/gui/IBinnieGUID.java
@@ -0,0 +1,13 @@
+package binnie.core.gui;
+
+import binnie.core.network.IOrdinaled;
+import binnie.craftgui.minecraft.Window;
+import cpw.mods.fml.relauncher.Side;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.world.World;
+
+public abstract interface IBinnieGUID
+ extends IOrdinaled
+{
+ public abstract Window getWindow(EntityPlayer paramEntityPlayer, World paramWorld, int paramInt1, int paramInt2, int paramInt3, Side paramSide);
+}
diff --git a/src/Java/binnie/core/item/IItemEnum.java b/src/Java/binnie/core/item/IItemEnum.java
new file mode 100644
index 0000000000..70b27d7aa7
--- /dev/null
+++ b/src/Java/binnie/core/item/IItemEnum.java
@@ -0,0 +1,14 @@
+package binnie.core.item;
+
+import net.minecraft.item.ItemStack;
+
+public abstract interface IItemEnum
+{
+ public abstract boolean isActive();
+
+ public abstract String getName(ItemStack paramItemStack);
+
+ public abstract int ordinal();
+
+ public abstract ItemStack get(int paramInt);
+}
diff --git a/src/Java/binnie/core/item/IItemMisc.java b/src/Java/binnie/core/item/IItemMisc.java
new file mode 100644
index 0000000000..1538297884
--- /dev/null
+++ b/src/Java/binnie/core/item/IItemMisc.java
@@ -0,0 +1,19 @@
+package binnie.core.item;
+
+import cpw.mods.fml.relauncher.Side;
+import cpw.mods.fml.relauncher.SideOnly;
+import java.util.List;
+import net.minecraft.client.renderer.texture.IIconRegister;
+import net.minecraft.item.ItemStack;
+import net.minecraft.util.IIcon;
+
+public abstract interface IItemMisc
+ extends IItemEnum
+{
+ public abstract IIcon getIcon(ItemStack paramItemStack);
+
+ @SideOnly(Side.CLIENT)
+ public abstract void registerIcons(IIconRegister paramIIconRegister);
+
+ public abstract void addInformation(List paramList);
+}
diff --git a/src/Java/binnie/core/item/ItemFieldKit.java b/src/Java/binnie/core/item/ItemFieldKit.java
new file mode 100644
index 0000000000..0a6ec0b813
--- /dev/null
+++ b/src/Java/binnie/core/item/ItemFieldKit.java
@@ -0,0 +1,82 @@
+package binnie.core.item;
+
+import binnie.core.BinnieCore;
+import binnie.core.gui.BinnieCoreGUI;
+import binnie.core.proxy.BinnieProxy;
+import cpw.mods.fml.relauncher.Side;
+import cpw.mods.fml.relauncher.SideOnly;
+import java.util.List;
+import net.minecraft.client.renderer.texture.IIconRegister;
+import net.minecraft.creativetab.CreativeTabs;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.item.Item;
+import net.minecraft.item.ItemStack;
+import net.minecraft.util.IIcon;
+import net.minecraft.world.World;
+
+public class ItemFieldKit
+ extends Item
+{
+ private IIcon fieldKit0;
+ private IIcon fieldKit1;
+ private IIcon fieldKit2;
+ private IIcon fieldKit3;
+
+ public ItemFieldKit()
+ {
+ setUnlocalizedName("fieldKit");
+ setCreativeTab(CreativeTabs.tabTools);
+ setMaxStackSize(1);
+ setMaxDamage(64);
+ }
+
+ @SideOnly(Side.CLIENT)
+ public void registerIcons(IIconRegister register)
+ {
+ this.fieldKit0 = BinnieCore.proxy.getIcon(register, "fieldKit");
+ this.fieldKit1 = BinnieCore.proxy.getIcon(register, "fieldKit1");
+ this.fieldKit2 = BinnieCore.proxy.getIcon(register, "fieldKit2");
+ this.fieldKit3 = BinnieCore.proxy.getIcon(register, "fieldKit3");
+ this.itemIcon = this.fieldKit0;
+ }
+
+ public IIcon getIcon(ItemStack stack, int pass)
+ {
+ int damage = stack.getItemDamage();
+ if (damage < 24) {
+ return this.fieldKit3;
+ }
+ if (damage < 48) {
+ return this.fieldKit2;
+ }
+ if (damage < 64) {
+ return this.fieldKit1;
+ }
+ return this.fieldKit0;
+ }
+
+ public ItemStack onItemRightClick(ItemStack itemstack, World world, EntityPlayer player)
+ {
+ if (!player.isSneaking()) {
+ BinnieCore.proxy.openGui(BinnieCoreGUI.FieldKit, player, (int)player.posX, (int)player.posY, (int)player.posZ);
+ }
+ return itemstack;
+ }
+
+ @SideOnly(Side.CLIENT)
+ public void addInformation(ItemStack p_77624_1_, EntityPlayer p_77624_2_, List p_77624_3_, boolean p_77624_4_)
+ {
+ int i = getMaxDamage() - p_77624_1_.getItemDamage();
+ if (i == 0) {
+ p_77624_3_.add("No paper");
+ } else {
+ p_77624_3_.add("" + i + " sheet" + (i > 1 ? "s" : "") + " of paper");
+ }
+ super.addInformation(p_77624_1_, p_77624_2_, p_77624_3_, p_77624_4_);
+ }
+
+ public String getItemStackDisplayName(ItemStack p_77653_1_)
+ {
+ return "Field Kit";
+ }
+}
diff --git a/src/Java/binnie/core/item/ItemGenesis.java b/src/Java/binnie/core/item/ItemGenesis.java
new file mode 100644
index 0000000000..1e946372be
--- /dev/null
+++ b/src/Java/binnie/core/item/ItemGenesis.java
@@ -0,0 +1,42 @@
+package binnie.core.item;
+
+import binnie.core.BinnieCore;
+import binnie.core.gui.BinnieCoreGUI;
+import binnie.core.proxy.BinnieProxy;
+import cpw.mods.fml.relauncher.Side;
+import cpw.mods.fml.relauncher.SideOnly;
+import forestry.api.core.Tabs;
+import net.minecraft.client.renderer.texture.IIconRegister;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.item.Item;
+import net.minecraft.item.ItemStack;
+import net.minecraft.world.World;
+
+public class ItemGenesis
+ extends Item
+{
+ @SideOnly(Side.CLIENT)
+ public void registerIcons(IIconRegister register)
+ {
+ this.itemIcon = BinnieCore.proxy.getIcon(register, "genesis");
+ }
+
+ public ItemGenesis()
+ {
+ setCreativeTab(Tabs.tabApiculture);
+ setUnlocalizedName("genesis");
+ setMaxStackSize(1);
+ }
+
+ public ItemStack onItemRightClick(ItemStack itemstack, World world, EntityPlayer player)
+ {
+ BinnieCore.proxy.openGui(BinnieCoreGUI.Genesis, player, (int)player.posX, (int)player.posY, (int)player.posZ);
+
+ return itemstack;
+ }
+
+ public String getItemStackDisplayName(ItemStack i)
+ {
+ return "Genesis";
+ }
+}
diff --git a/src/Java/binnie/core/item/ItemMisc.java b/src/Java/binnie/core/item/ItemMisc.java
new file mode 100644
index 0000000000..db54b2c1dd
--- /dev/null
+++ b/src/Java/binnie/core/item/ItemMisc.java
@@ -0,0 +1,81 @@
+package binnie.core.item;
+
+import cpw.mods.fml.relauncher.Side;
+import cpw.mods.fml.relauncher.SideOnly;
+import java.util.List;
+import net.minecraft.client.renderer.texture.IIconRegister;
+import net.minecraft.creativetab.CreativeTabs;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.item.Item;
+import net.minecraft.item.ItemStack;
+import net.minecraft.util.IIcon;
+
+public class ItemMisc
+ extends Item
+{
+ private IItemMisc[] items;
+
+ protected ItemMisc(CreativeTabs tab, IItemMisc[] items2)
+ {
+ setCreativeTab(tab);
+ setHasSubtypes(true);
+ setUnlocalizedName("misc");
+ this.items = items2;
+ }
+
+ @SideOnly(Side.CLIENT)
+ public void getSubItems(Item par1, CreativeTabs par2CreativeTabs, List par3List)
+ {
+ for (IItemMisc item : this.items) {
+ if (item.isActive()) {
+ par3List.add(getStack(item, 1));
+ }
+ }
+ }
+
+ private IItemMisc getItem(int damage)
+ {
+ return damage >= this.items.length ? this.items[0] : this.items[damage];
+ }
+
+ public ItemStack getStack(IItemMisc type, int size)
+ {
+ return new ItemStack(this, size, type.ordinal());
+ }
+
+ @SideOnly(Side.CLIENT)
+ public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4)
+ {
+ super.addInformation(par1ItemStack, par2EntityPlayer, par3List, par4);
+ IItemMisc item = getItem(par1ItemStack.getItemDamage());
+ if (item != null) {
+ item.addInformation(par3List);
+ }
+ }
+
+ public String getItemStackDisplayName(ItemStack stack)
+ {
+ IItemMisc item = getItem(stack.getItemDamage());
+ return item != null ? item.getName(stack) : "null";
+ }
+
+ public IIcon getIcon(ItemStack stack, int pass)
+ {
+ IItemMisc item = getItem(stack.getItemDamage());
+ return item != null ? item.getIcon(stack) : null;
+ }
+
+ public IIcon getIconFromDamage(int damage)
+ {
+ IItemMisc item = getItem(damage);
+ return item != null ? item.getIcon(null) : null;
+ }
+
+ @SideOnly(Side.CLIENT)
+ public void registerIcons(IIconRegister register)
+ {
+ for (IItemMisc item : this.items) {
+ item.registerIcons(register);
+ }
+ }
+}
diff --git a/src/Java/binnie/core/item/ManagerItem.java b/src/Java/binnie/core/item/ManagerItem.java
new file mode 100644
index 0000000000..39ea70f826
--- /dev/null
+++ b/src/Java/binnie/core/item/ManagerItem.java
@@ -0,0 +1,11 @@
+package binnie.core.item;
+
+import net.minecraft.creativetab.CreativeTabs;
+
+public class ManagerItem
+{
+ public ItemMisc registerMiscItems(IItemMisc[] items, CreativeTabs tab)
+ {
+ return new ItemMisc(tab, items);
+ }
+}
diff --git a/src/Java/binnie/core/item/ModuleItems.java b/src/Java/binnie/core/item/ModuleItems.java
new file mode 100644
index 0000000000..335106e040
--- /dev/null
+++ b/src/Java/binnie/core/item/ModuleItems.java
@@ -0,0 +1,75 @@
+package binnie.core.item;
+
+import binnie.botany.Botany;
+import binnie.botany.api.IAlleleFlowerSpecies;
+import binnie.botany.api.IFlower;
+import binnie.botany.api.IFlowerColour;
+import binnie.botany.api.IFlowerGenome;
+import binnie.botany.flower.TileEntityFlower;
+import binnie.botany.network.PacketID;
+import binnie.botany.proxy.Proxy;
+import binnie.core.BinnieCore;
+import binnie.core.IInitializable;
+import binnie.core.network.packet.MessageNBT;
+import cpw.mods.fml.common.eventhandler.SubscribeEvent;
+import cpw.mods.fml.common.registry.GameRegistry;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.init.Blocks;
+import net.minecraft.init.Items;
+import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.tileentity.TileEntity;
+import net.minecraft.world.World;
+import net.minecraftforge.event.entity.player.PlayerInteractEvent;
+import net.minecraftforge.event.entity.player.PlayerInteractEvent.Action;
+
+public class ModuleItems
+ implements IInitializable
+{
+ public void preInit()
+ {
+ BinnieCore.fieldKit = new ItemFieldKit();
+ BinnieCore.genesis = new ItemGenesis();
+ }
+
+ public void init() {}
+
+ public void postInit()
+ {
+ GameRegistry.addRecipe(new ItemStack(BinnieCore.fieldKit, 1, 63), new Object[] { "g ", " is", " pi", Character.valueOf('g'), Blocks.glass_pane, Character.valueOf('i'), Items.iron_ingot, Character.valueOf('p'), Items.paper, Character.valueOf('s'), new ItemStack(Items.dye, 1) });
+ }
+
+ @SubscribeEvent
+ public void onUseFieldKit(PlayerInteractEvent event)
+ {
+ if (!BinnieCore.isBotanyActive()) {
+ return;
+ }
+ if (event.action != PlayerInteractEvent.Action.RIGHT_CLICK_BLOCK) {
+ return;
+ }
+ if ((event.entityPlayer != null) && (event.entityPlayer.getHeldItem() != null) && (event.entityPlayer.getHeldItem().getItem() == BinnieCore.fieldKit) && (event.entityPlayer.isSneaking()))
+ {
+ TileEntity tile = event.world.getTileEntity(event.x, event.y, event.z);
+ if ((tile instanceof TileEntityFlower))
+ {
+ TileEntityFlower tileFlower = (TileEntityFlower)tile;
+ IFlower flower = tileFlower.getFlower();
+ if (flower != null)
+ {
+ NBTTagCompound info = new NBTTagCompound();
+ info.setString("Species", flower.getGenome().getPrimary().getUID());
+ info.setString("Species2", flower.getGenome().getSecondary().getUID());
+ info.setFloat("Age", flower.getAge() / flower.getGenome().getLifespan());
+ info.setShort("Colour", (short)flower.getGenome().getPrimaryColor().getID());
+ info.setShort("Colour2", (short)flower.getGenome().getSecondaryColor().getID());
+ info.setBoolean("Wilting", flower.isWilted());
+ info.setBoolean("Flowered", flower.hasFlowered());
+
+ Botany.proxy.sendToPlayer(new MessageNBT(PacketID.Encylopedia.ordinal(), info), event.entityPlayer);
+ event.entityPlayer.getHeldItem().damageItem(1, event.entityPlayer);
+ }
+ }
+ }
+ }
+}
diff --git a/src/Java/binnie/core/language/ManagerLanguage.java b/src/Java/binnie/core/language/ManagerLanguage.java
new file mode 100644
index 0000000000..b4deb37344
--- /dev/null
+++ b/src/Java/binnie/core/language/ManagerLanguage.java
@@ -0,0 +1,59 @@
+package binnie.core.language;
+
+import binnie.core.AbstractMod;
+import binnie.core.ManagerBase;
+import java.util.HashMap;
+import java.util.Map;
+import net.minecraft.util.StatCollector;
+
+public class ManagerLanguage
+ extends ManagerBase
+{
+ private Map<Object, String> objNames = new HashMap();
+
+ public void addObjectName(Object obj, String name)
+ {
+ this.objNames.put(obj, name);
+ }
+
+ public String unlocalised(AbstractMod mod, String id)
+ {
+ return mod.getModID() + "." + id;
+ }
+
+ public String localise(Object key)
+ {
+ String loc = StatCollector.translateToLocal(key.toString());
+ if (loc.equals(key.toString())) {
+ return this.objNames.containsKey(key) ? localise(this.objNames.get(key)) : key.toString();
+ }
+ return loc;
+ }
+
+ public String localise(AbstractMod mod, String id)
+ {
+ return localise(unlocalised(mod, id));
+ }
+
+ public String localiseOrBlank(AbstractMod mod, String id)
+ {
+ return localiseOrBlank(unlocalised(mod, id));
+ }
+
+ public String localise(AbstractMod mod, String id, Object... objs)
+ {
+ return String.format(localise(mod, id), objs);
+ }
+
+ public String localiseOrBlank(Object key)
+ {
+ String trans = localise(key);
+ return trans.equals(key) ? "" : trans;
+ }
+
+ public boolean canLocalise(Object key)
+ {
+ String trans = localise(key);
+ return !trans.equals(key);
+ }
+}
diff --git a/src/Java/binnie/core/liquid/BinnieFluid.java b/src/Java/binnie/core/liquid/BinnieFluid.java
new file mode 100644
index 0000000000..e0ac5fc815
--- /dev/null
+++ b/src/Java/binnie/core/liquid/BinnieFluid.java
@@ -0,0 +1,32 @@
+package binnie.core.liquid;
+
+import net.minecraftforge.fluids.Fluid;
+
+class BinnieFluid
+ extends Fluid
+{
+ private final String name;
+ final IFluidType fluidType;
+
+ public String getLocalizedName()
+ {
+ return this.name;
+ }
+
+ public BinnieFluid(IFluidType fluid)
+ {
+ super(fluid.getIdentifier());
+ this.fluidType = fluid;
+ this.name = fluid.getName();
+ }
+
+ public int getColor()
+ {
+ return this.fluidType.getColour();
+ }
+
+ public IFluidType getType()
+ {
+ return this.fluidType;
+ }
+}
diff --git a/src/Java/binnie/core/liquid/FluidContainer.java b/src/Java/binnie/core/liquid/FluidContainer.java
new file mode 100644
index 0000000000..0bfb14512b
--- /dev/null
+++ b/src/Java/binnie/core/liquid/FluidContainer.java
@@ -0,0 +1,95 @@
+package binnie.core.liquid;
+
+import binnie.core.BinnieCore;
+import binnie.core.Mods;
+import binnie.core.Mods.Mod;
+import binnie.core.proxy.BinnieProxy;
+import binnie.genetics.item.GeneticsItems;
+import cpw.mods.fml.relauncher.Side;
+import cpw.mods.fml.relauncher.SideOnly;
+import net.minecraft.client.renderer.texture.IIconRegister;
+import net.minecraft.init.Items;
+import net.minecraft.item.ItemStack;
+import net.minecraft.util.IIcon;
+import net.minecraftforge.fluids.FluidContainerRegistry;
+import net.minecraftforge.fluids.FluidContainerRegistry.FluidContainerData;
+
+public enum FluidContainer
+{
+ Bucket, Capsule, Refractory, Can, Glass, Cylinder;
+
+ IIcon bottle;
+ IIcon contents;
+ ItemFluidContainer item;
+
+ private FluidContainer() {}
+
+ public int getMaxStackSize()
+ {
+ return this == Bucket ? 1 : 16;
+ }
+
+ @SideOnly(Side.CLIENT)
+ public void updateIcons(IIconRegister register)
+ {
+ this.bottle = BinnieCore.proxy.getIcon(register, this == Cylinder ? "binniecore" : "forestry", "liquids/" + toString().toLowerCase() + ".bottle");
+
+ this.contents = BinnieCore.proxy.getIcon(register, this == Cylinder ? "binniecore" : "forestry", "liquids/" + toString().toLowerCase() + ".contents");
+ }
+
+ public IIcon getBottleIcon()
+ {
+ return this.bottle;
+ }
+
+ public IIcon getContentsIcon()
+ {
+ return this.contents;
+ }
+
+ public String getName()
+ {
+ return BinnieCore.proxy.localise("item.container." + name().toLowerCase());
+ }
+
+ public boolean isActive()
+ {
+ return getEmpty() != null;
+ }
+
+ public ItemStack getEmpty()
+ {
+ switch (1.$SwitchMap$binnie$core$liquid$FluidContainer[ordinal()])
+ {
+ case 1:
+ return new ItemStack(Items.bucket, 1, 0);
+ case 2:
+ return Mods.Forestry.stack("canEmpty");
+ case 3:
+ return Mods.Forestry.stack("waxCapsule");
+ case 4:
+ return new ItemStack(Items.glass_bottle, 1, 0);
+ case 5:
+ return Mods.Forestry.stack("refractoryEmpty");
+ case 6:
+ return GeneticsItems.Cylinder.get(1);
+ }
+ return null;
+ }
+
+ public void registerContainerData(IFluidType fluid)
+ {
+ if (!isActive()) {
+ return;
+ }
+ ItemStack filled = this.item.getContainer(fluid);
+
+ ItemStack empty = getEmpty();
+ if ((filled == null) || (empty == null) || (fluid.get(1000) == null)) {
+ return;
+ }
+ FluidContainerRegistry.FluidContainerData data = new FluidContainerRegistry.FluidContainerData(fluid.get(1000), filled, empty);
+
+ FluidContainerRegistry.registerFluidContainer(data);
+ }
+}
diff --git a/src/Java/binnie/core/liquid/IFluidType.java b/src/Java/binnie/core/liquid/IFluidType.java
new file mode 100644
index 0000000000..3d0bd46d2b
--- /dev/null
+++ b/src/Java/binnie/core/liquid/IFluidType.java
@@ -0,0 +1,28 @@
+package binnie.core.liquid;
+
+import net.minecraft.client.renderer.texture.IIconRegister;
+import net.minecraft.util.IIcon;
+import net.minecraftforge.fluids.FluidStack;
+
+public abstract interface IFluidType
+{
+ public abstract IIcon getIcon();
+
+ public abstract void registerIcon(IIconRegister paramIIconRegister);
+
+ public abstract String getName();
+
+ public abstract String getIdentifier();
+
+ public abstract FluidStack get(int paramInt);
+
+ public abstract int getColour();
+
+ public abstract int getContainerColour();
+
+ public abstract int getTransparency();
+
+ public abstract boolean canPlaceIn(FluidContainer paramFluidContainer);
+
+ public abstract boolean showInCreative(FluidContainer paramFluidContainer);
+}
diff --git a/src/Java/binnie/core/liquid/ILiquidType.java b/src/Java/binnie/core/liquid/ILiquidType.java
new file mode 100644
index 0000000000..69e035a3c3
--- /dev/null
+++ b/src/Java/binnie/core/liquid/ILiquidType.java
@@ -0,0 +1,7 @@
+package binnie.core.liquid;
+
+public abstract interface ILiquidType
+ extends IFluidType
+{
+ public abstract int ordinal();
+}
diff --git a/src/Java/binnie/core/liquid/ItemFluidContainer.java b/src/Java/binnie/core/liquid/ItemFluidContainer.java
new file mode 100644
index 0000000000..fe3e72a123
--- /dev/null
+++ b/src/Java/binnie/core/liquid/ItemFluidContainer.java
@@ -0,0 +1,179 @@
+package binnie.core.liquid;
+
+import binnie.Binnie;
+import binnie.extratrees.alcohol.AlcoholEffect;
+import binnie.extratrees.alcohol.drink.DrinkManager;
+import binnie.extratrees.alcohol.drink.IDrinkLiquid;
+import cpw.mods.fml.relauncher.Side;
+import cpw.mods.fml.relauncher.SideOnly;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Random;
+import net.minecraft.client.renderer.texture.IIconRegister;
+import net.minecraft.creativetab.CreativeTabs;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.item.EnumAction;
+import net.minecraft.item.Item;
+import net.minecraft.item.ItemFood;
+import net.minecraft.item.ItemStack;
+import net.minecraft.util.FoodStats;
+import net.minecraft.util.IIcon;
+import net.minecraft.world.World;
+import net.minecraftforge.fluids.Fluid;
+import net.minecraftforge.fluids.FluidStack;
+
+public class ItemFluidContainer
+ extends ItemFood
+{
+ private FluidContainer container;
+ public static int LiquidExtraBee = 64;
+ public static int LiquidExtraTree = 128;
+ public static int LiquidJuice = 256;
+ public static int LiquidAlcohol = 384;
+ public static int LiquidSpirit = 512;
+ public static int LiquidLiqueuer = 640;
+ public static int LiquidGenetics = 768;
+ private static Map<Integer, String> idToFluid = new HashMap();
+ private static Map<String, Integer> fluidToID = new HashMap();
+
+ public static void registerFluid(IFluidType fluid, int id)
+ {
+ idToFluid.put(Integer.valueOf(id), fluid.getIdentifier().toLowerCase());
+ fluidToID.put(fluid.getIdentifier().toLowerCase(), Integer.valueOf(id));
+ }
+
+ public ItemFluidContainer(FluidContainer container)
+ {
+ super(0, false);
+ this.container = container;
+ container.item = this;
+ this.maxStackSize = container.getMaxStackSize();
+ setHasSubtypes(true);
+ setUnlocalizedName("container" + container.name());
+ setCreativeTab(CreativeTabs.tabMaterials);
+ }
+
+ private FluidStack getLiquid(ItemStack stack)
+ {
+ String liquid = (String)idToFluid.get(Integer.valueOf(stack.getItemDamage()));
+ return liquid == null ? null : Binnie.Liquid.getLiquidStack(liquid, 1000);
+ }
+
+ @SideOnly(Side.CLIENT)
+ public void registerIcons(IIconRegister register)
+ {
+ this.container.updateIcons(register);
+ }
+
+ public String getItemStackDisplayName(ItemStack itemstack)
+ {
+ if (itemstack == null) {
+ return "???";
+ }
+ FluidStack fluid = getLiquid(itemstack);
+ if (fluid == null) {
+ return "Missing Fluid";
+ }
+ return fluid.getFluid().getLocalizedName(fluid) + " " + this.container.getName();
+ }
+
+ public void getSubItems(Item par1, CreativeTabs par2CreativeTabs, List itemList)
+ {
+ for (IFluidType liquid : Binnie.Liquid.fluids.values()) {
+ if ((liquid.canPlaceIn(this.container)) &&
+
+ (liquid.showInCreative(this.container))) {
+ itemList.add(getContainer(liquid));
+ }
+ }
+ }
+
+ public ItemStack getContainer(IFluidType liquid)
+ {
+ int id = ((Integer)fluidToID.get(liquid.getIdentifier().toLowerCase())).intValue();
+ ItemStack itemstack = new ItemStack(this, 1, id);
+ return itemstack;
+ }
+
+ public IIcon getIcon(ItemStack itemstack, int j)
+ {
+ if (j > 0) {
+ return this.container.getBottleIcon();
+ }
+ return this.container.getContentsIcon();
+ }
+
+ @SideOnly(Side.CLIENT)
+ public int getColorFromItemStack(ItemStack item, int pass)
+ {
+ FluidStack fluid = getLiquid(item);
+ if (fluid == null) {
+ return 16777215;
+ }
+ if ((pass == 0) && ((fluid.getFluid() instanceof BinnieFluid))) {
+ return ((BinnieFluid)fluid.getFluid()).fluidType.getContainerColour();
+ }
+ return super.getColorFromItemStack(item, pass);
+ }
+
+ public boolean requiresMultipleRenderPasses()
+ {
+ return true;
+ }
+
+ public ItemStack onEaten(ItemStack stack, World world, EntityPlayer player)
+ {
+ player.getFoodStats().func_151686_a(this, stack);
+ world.playSoundAtEntity(player, "random.burp", 0.5F, world.rand.nextFloat() * 0.1F + 0.9F);
+ onFoodEaten(stack, world, player);
+ return this.container.getEmpty();
+ }
+
+ protected void onFoodEaten(ItemStack stack, World world, EntityPlayer player)
+ {
+ if (!world.isRemote)
+ {
+ FluidStack fluid = getLiquid(stack);
+ IDrinkLiquid liquid = DrinkManager.getLiquid(fluid);
+ if (liquid != null) {
+ AlcoholEffect.makeDrunk(player, liquid.getABV() * fluid.amount);
+ }
+ }
+ }
+
+ public int getMaxItemUseDuration(ItemStack stack)
+ {
+ return 32;
+ }
+
+ public EnumAction getItemUseAction(ItemStack stack)
+ {
+ return isDrinkable(stack) ? EnumAction.drink : EnumAction.none;
+ }
+
+ public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player)
+ {
+ if (isDrinkable(stack)) {
+ player.setItemInUse(stack, getMaxItemUseDuration(stack));
+ }
+ return stack;
+ }
+
+ public int func_150905_g(ItemStack p_150905_1_)
+ {
+ return 0;
+ }
+
+ public float func_150906_h(ItemStack p_150906_1_)
+ {
+ return 0.0F;
+ }
+
+ private boolean isDrinkable(ItemStack stack)
+ {
+ FluidStack fluid = getLiquid(stack);
+ IDrinkLiquid liquid = DrinkManager.getLiquid(fluid);
+ return liquid == null ? false : liquid.isConsumable();
+ }
+}
diff --git a/src/Java/binnie/core/liquid/ManagerLiquid.java b/src/Java/binnie/core/liquid/ManagerLiquid.java
new file mode 100644
index 0000000000..f0ab486cc0
--- /dev/null
+++ b/src/Java/binnie/core/liquid/ManagerLiquid.java
@@ -0,0 +1,80 @@
+package binnie.core.liquid;
+
+import binnie.core.ManagerBase;
+import cpw.mods.fml.relauncher.Side;
+import cpw.mods.fml.relauncher.SideOnly;
+import java.util.Collection;
+import java.util.LinkedHashMap;
+import java.util.Map;
+import net.minecraft.client.renderer.texture.IIconRegister;
+import net.minecraftforge.fluids.Fluid;
+import net.minecraftforge.fluids.FluidRegistry;
+import net.minecraftforge.fluids.FluidStack;
+
+public class ManagerLiquid
+ extends ManagerBase
+{
+ Map<String, IFluidType> fluids = new LinkedHashMap();
+
+ public Collection<IFluidType> getFluidTypes()
+ {
+ return this.fluids.values();
+ }
+
+ public void createLiquids(IFluidType[] liquids, int startID)
+ {
+ for (IFluidType liquid : liquids)
+ {
+ BinnieFluid fluid = createLiquid(liquid, startID++);
+ if (fluid == null) {
+ throw new RuntimeException("Liquid registered incorrectly - " + liquid.getIdentifier());
+ }
+ }
+ }
+
+ public BinnieFluid createLiquid(IFluidType fluid, int id)
+ {
+ this.fluids.put(fluid.getIdentifier().toLowerCase(), fluid);
+ BinnieFluid bFluid = new BinnieFluid(fluid);
+ FluidRegistry.registerFluid(bFluid);
+ ItemFluidContainer.registerFluid(fluid, id);
+ return bFluid;
+ }
+
+ public FluidStack getLiquidStack(String name, int amount)
+ {
+ return FluidRegistry.getFluidStack(name.toLowerCase(), amount);
+ }
+
+ @SideOnly(Side.CLIENT)
+ public void reloadIcons(IIconRegister register)
+ {
+ for (IFluidType type : this.fluids.values())
+ {
+ Fluid fluid = getLiquidStack(type.getIdentifier(), 1).getFluid();
+ type.registerIcon(register);
+ if (fluid == null) {
+ throw new RuntimeException("[Binnie] Liquid not registered properly - " + type.getIdentifier());
+ }
+ fluid.setIcons(type.getIcon());
+ }
+ }
+
+ public void init() {}
+
+ public void postInit()
+ {
+ for (IFluidType fluid : this.fluids.values()) {
+ for (FluidContainer container : FluidContainer.values()) {
+ if ((container.isActive()) && (fluid.canPlaceIn(container))) {
+ container.registerContainerData(fluid);
+ }
+ }
+ }
+ }
+
+ public IFluidType getFluidType(String liquid)
+ {
+ return (IFluidType)this.fluids.get(liquid.toLowerCase());
+ }
+}
diff --git a/src/Java/binnie/core/machines/BlockMachine.java b/src/Java/binnie/core/machines/BlockMachine.java
new file mode 100644
index 0000000000..042e213aec
--- /dev/null
+++ b/src/Java/binnie/core/machines/BlockMachine.java
@@ -0,0 +1,181 @@
+package binnie.core.machines;
+
+import binnie.Binnie;
+import binnie.core.BinnieCore;
+import binnie.core.machines.component.IRender.RandomDisplayTick;
+import binnie.core.proxy.BinnieProxy;
+import cpw.mods.fml.relauncher.Side;
+import cpw.mods.fml.relauncher.SideOnly;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Random;
+import net.minecraft.block.Block;
+import net.minecraft.block.BlockContainer;
+import net.minecraft.block.material.Material;
+import net.minecraft.client.renderer.texture.IIconRegister;
+import net.minecraft.creativetab.CreativeTabs;
+import net.minecraft.entity.EntityLivingBase;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.entity.player.PlayerCapabilities;
+import net.minecraft.init.Blocks;
+import net.minecraft.item.Item;
+import net.minecraft.item.ItemStack;
+import net.minecraft.tileentity.TileEntity;
+import net.minecraft.util.IIcon;
+import net.minecraft.world.IBlockAccess;
+import net.minecraft.world.World;
+
+class BlockMachine
+ extends BlockContainer
+ implements IBlockMachine
+{
+ private MachineGroup group;
+
+ public BlockMachine(MachineGroup group, String blockName)
+ {
+ super(Material.iron);
+ this.group = group;
+ setHardness(1.5F);
+ setBlockName(blockName);
+ }
+
+ public void getSubBlocks(Item par1, CreativeTabs par2CreativeTabs, List itemList)
+ {
+ for (MachinePackage pack : this.group.getPackages()) {
+ if (pack.isActive()) {
+ itemList.add(new ItemStack(this, 1, pack.getMetadata().intValue()));
+ }
+ }
+ }
+
+ public boolean isOpaqueCube()
+ {
+ return false;
+ }
+
+ public boolean renderAsNormalBlock()
+ {
+ return !this.group.customRenderer;
+ }
+
+ public int getRenderType()
+ {
+ return Binnie.Machine.getMachineRenderID();
+ }
+
+ public TileEntity createTileEntity(World world, int metadata)
+ {
+ if (this.group.getPackage(metadata) == null) {
+ return null;
+ }
+ return this.group.getPackage(metadata).createTileEntity();
+ }
+
+ public MachinePackage getPackage(int meta)
+ {
+ return this.group.getPackage(meta);
+ }
+
+ public String getMachineName(int meta)
+ {
+ return getPackage(meta) == null ? "Unnamed Machine" : getPackage(meta).getDisplayName();
+ }
+
+ public int damageDropped(int par1)
+ {
+ return par1;
+ }
+
+ public TileEntity createNewTileEntity(World var1, int meta)
+ {
+ return createTileEntity(var1, meta);
+ }
+
+ public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int par6, float par7, float par8, float par9)
+ {
+ if (!BinnieCore.proxy.isSimulating(world)) {
+ return true;
+ }
+ if (player.isSneaking()) {
+ return true;
+ }
+ TileEntity entity = world.getTileEntity(x, y, z);
+ if ((entity instanceof TileEntityMachine)) {
+ ((TileEntityMachine)entity).getMachine().onRightClick(world, player, x, y, z);
+ }
+ return true;
+ }
+
+ public void onBlockPlacedBy(World world, int i, int j, int k, EntityLivingBase entityliving, ItemStack stack)
+ {
+ super.onBlockPlacedBy(world, i, j, k, entityliving, stack);
+ if (!BinnieCore.proxy.isSimulating(world)) {
+ return;
+ }
+ IMachine machine = Machine.getMachine(world.getTileEntity(i, j, k));
+ if (machine == null) {
+ return;
+ }
+ if ((entityliving instanceof EntityPlayer)) {
+ machine.setOwner(((EntityPlayer)entityliving).getGameProfile());
+ }
+ }
+
+ public IIcon getIcon(IBlockAccess world, int x, int y, int z, int side)
+ {
+ TileEntity entity = world.getTileEntity(x, y, z);
+ if (((entity instanceof TileEntityMachine)) && (((TileEntityMachine)entity).getMachine().hasInterface(IMachineTexturedFaces.class))) {
+ return ((IMachineTexturedFaces)((TileEntityMachine)entity).getMachine().getInterface(IMachineTexturedFaces.class)).getIcon(side);
+ }
+ return Blocks.dirt.getIcon(0, 0);
+ }
+
+ public void breakBlock(World world, int x, int y, int z, Block par5, int par6)
+ {
+ TileEntity tileentity = world.getTileEntity(x, y, z);
+ if (!(tileentity instanceof TileEntityMachine)) {
+ return;
+ }
+ TileEntityMachine entity = (TileEntityMachine)tileentity;
+ if (entity != null) {
+ entity.onBlockDestroy();
+ }
+ super.breakBlock(world, x, y, z, par5, par6);
+ }
+
+ @SideOnly(Side.CLIENT)
+ public void registerBlockIcons(IIconRegister register) {}
+
+ @SideOnly(Side.CLIENT)
+ public void randomDisplayTick(World world, int x, int y, int z, Random rand)
+ {
+ IMachine machine = Machine.getMachine(world.getTileEntity(x, y, z));
+ if (machine != null) {
+ for (IRender.RandomDisplayTick renders : machine.getInterfaces(IRender.RandomDisplayTick.class)) {
+ renders.onRandomDisplayTick(world, x, y, z, rand);
+ }
+ }
+ }
+
+ public ArrayList<ItemStack> getDrops(World world, int x, int y, int z, int metadata, int fortune)
+ {
+ return new ArrayList();
+ }
+
+ public boolean removedByPlayer(World world, EntityPlayer player, int x, int y, int z, boolean willHarvest)
+ {
+ if ((BinnieCore.proxy.isSimulating(world)) && (canHarvestBlock(player, world.getBlockMetadata(x, y, z))) &&
+ (!player.capabilities.isCreativeMode))
+ {
+ int metadata = world.getBlockMetadata(x, y, z);
+ ItemStack stack = new ItemStack(Item.getItemFromBlock(this), 1, damageDropped(metadata));
+ dropBlockAsItem(world, x, y, z, stack);
+ }
+ return world.setBlockToAir(x, y, z);
+ }
+
+ public static abstract interface IMachineTexturedFaces
+ {
+ public abstract IIcon getIcon(int paramInt);
+ }
+}
diff --git a/src/Java/binnie/core/machines/IBlockMachine.java b/src/Java/binnie/core/machines/IBlockMachine.java
new file mode 100644
index 0000000000..01b7e321a1
--- /dev/null
+++ b/src/Java/binnie/core/machines/IBlockMachine.java
@@ -0,0 +1,8 @@
+package binnie.core.machines;
+
+abstract interface IBlockMachine
+{
+ public abstract MachinePackage getPackage(int paramInt);
+
+ public abstract String getMachineName(int paramInt);
+}
diff --git a/src/Java/binnie/core/machines/IMachine.java b/src/Java/binnie/core/machines/IMachine.java
new file mode 100644
index 0000000000..9a57b0e019
--- /dev/null
+++ b/src/Java/binnie/core/machines/IMachine.java
@@ -0,0 +1,25 @@
+package binnie.core.machines;
+
+import java.util.Collection;
+import net.minecraft.tileentity.TileEntity;
+import net.minecraft.world.World;
+
+public abstract interface IMachine
+ extends IOwnable
+{
+ public abstract void addComponent(MachineComponent paramMachineComponent);
+
+ public abstract MachineUtil getMachineUtil();
+
+ public abstract <T> T getInterface(Class<T> paramClass);
+
+ public abstract void markDirty();
+
+ public abstract World getWorld();
+
+ public abstract TileEntity getTileEntity();
+
+ public abstract <T> Collection<T> getInterfaces(Class<T> paramClass);
+
+ public abstract MachinePackage getPackage();
+}
diff --git a/src/Java/binnie/core/machines/IMachineType.java b/src/Java/binnie/core/machines/IMachineType.java
new file mode 100644
index 0000000000..06c02218a0
--- /dev/null
+++ b/src/Java/binnie/core/machines/IMachineType.java
@@ -0,0 +1,11 @@
+package binnie.core.machines;
+
+import binnie.core.network.IOrdinaled;
+
+public abstract interface IMachineType
+ extends IOrdinaled
+{
+ public abstract Class<? extends MachinePackage> getPackageClass();
+
+ public abstract boolean isActive();
+}
diff --git a/src/Java/binnie/core/machines/IOwnable.java b/src/Java/binnie/core/machines/IOwnable.java
new file mode 100644
index 0000000000..78aa1a76f9
--- /dev/null
+++ b/src/Java/binnie/core/machines/IOwnable.java
@@ -0,0 +1,10 @@
+package binnie.core.machines;
+
+import com.mojang.authlib.GameProfile;
+
+abstract interface IOwnable
+{
+ public abstract GameProfile getOwner();
+
+ public abstract void setOwner(GameProfile paramGameProfile);
+}
diff --git a/src/Java/binnie/core/machines/ItemMachine.java b/src/Java/binnie/core/machines/ItemMachine.java
new file mode 100644
index 0000000000..08426cdb7a
--- /dev/null
+++ b/src/Java/binnie/core/machines/ItemMachine.java
@@ -0,0 +1,29 @@
+package binnie.core.machines;
+
+import net.minecraft.block.Block;
+import net.minecraft.item.ItemBlock;
+import net.minecraft.item.ItemStack;
+
+public class ItemMachine
+ extends ItemBlock
+{
+ private IBlockMachine associatedBlock;
+
+ public ItemMachine(Block block)
+ {
+ super(block);
+ setMaxDamage(0);
+ setHasSubtypes(true);
+ this.associatedBlock = ((IBlockMachine)block);
+ }
+
+ public int getMetadata(int i)
+ {
+ return i;
+ }
+
+ public String getItemStackDisplayName(ItemStack itemstack)
+ {
+ return this.associatedBlock.getMachineName(itemstack.getItemDamage());
+ }
+}
diff --git a/src/Java/binnie/core/machines/Machine.java b/src/Java/binnie/core/machines/Machine.java
new file mode 100644
index 0000000000..474b32c627
--- /dev/null
+++ b/src/Java/binnie/core/machines/Machine.java
@@ -0,0 +1,320 @@
+package binnie.core.machines;
+
+import binnie.core.BinnieCore;
+import binnie.core.machines.component.IInteraction.RightClick;
+import binnie.core.machines.component.IRender.DisplayTick;
+import binnie.core.machines.network.INetwork.GuiNBT;
+import binnie.core.machines.network.INetwork.RecieveGuiNBT;
+import binnie.core.machines.network.INetwork.SendGuiNBT;
+import binnie.core.machines.network.INetwork.TilePacketSync;
+import binnie.core.machines.power.ITankMachine;
+import binnie.core.network.BinnieCorePacketID;
+import binnie.core.network.INetworkedEntity;
+import binnie.core.network.packet.MessageTileNBT;
+import binnie.core.network.packet.PacketPayload;
+import binnie.core.proxy.BinnieProxy;
+import com.mojang.authlib.GameProfile;
+import cpw.mods.fml.common.network.simpleimpl.SimpleNetworkWrapper;
+import cpw.mods.fml.relauncher.Side;
+import forestry.api.core.INBTTagable;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.inventory.IInventory;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.nbt.NBTUtil;
+import net.minecraft.network.Packet;
+import net.minecraft.tileentity.TileEntity;
+import net.minecraft.world.World;
+
+public class Machine
+ implements INetworkedEntity, INBTTagable, INetwork.TilePacketSync, IMachine, INetwork.GuiNBT
+{
+ private MachinePackage machinePackage;
+ private Map<Class, List<MachineComponent>> componentInterfaceMap = new LinkedHashMap();
+ private Map<Class<? extends MachineComponent>, MachineComponent> componentMap = new LinkedHashMap();
+ private TileEntity tile;
+
+ public Machine(MachinePackage pack, TileEntity tile)
+ {
+ this.tile = tile;
+
+ pack.createMachine(this);
+ this.machinePackage = pack;
+ }
+
+ public void addComponent(MachineComponent component)
+ {
+ if (component == null) {
+ throw new NullPointerException("Can't have a null machine component!");
+ }
+ component.setMachine(this);
+ this.componentMap.put(component.getClass(), component);
+ for (Class inter : component.getComponentInterfaces())
+ {
+ if (!this.componentInterfaceMap.containsKey(inter)) {
+ this.componentInterfaceMap.put(inter, new ArrayList());
+ }
+ ((List)this.componentInterfaceMap.get(inter)).add(component);
+ }
+ }
+
+ public Collection<MachineComponent> getComponents()
+ {
+ return this.componentMap.values();
+ }
+
+ public <T extends MachineComponent> T getComponent(Class<T> componentClass)
+ {
+ return hasComponent(componentClass) ? (MachineComponent)componentClass.cast(this.componentMap.get(componentClass)) : null;
+ }
+
+ public <T> T getInterface(Class<T> interfaceClass)
+ {
+ if (hasInterface(interfaceClass)) {
+ return getInterfaces(interfaceClass).get(0);
+ }
+ if (interfaceClass.isInstance(getPackage())) {
+ return interfaceClass.cast(getPackage());
+ }
+ for (MachineComponent component : getComponents()) {
+ if (interfaceClass.isInstance(component)) {
+ return interfaceClass.cast(component);
+ }
+ }
+ return null;
+ }
+
+ public <T> List<T> getInterfaces(Class<T> interfaceClass)
+ {
+ ArrayList<T> interfaces = new ArrayList();
+ if (!hasInterface(interfaceClass)) {
+ return interfaces;
+ }
+ for (MachineComponent component : (List)this.componentInterfaceMap.get(interfaceClass)) {
+ interfaces.add(interfaceClass.cast(component));
+ }
+ return interfaces;
+ }
+
+ public boolean hasInterface(Class<?> interfaceClass)
+ {
+ return this.componentInterfaceMap.containsKey(interfaceClass);
+ }
+
+ public boolean hasComponent(Class<? extends MachineComponent> componentClass)
+ {
+ return this.componentMap.containsKey(componentClass);
+ }
+
+ public TileEntity getTileEntity()
+ {
+ return this.tile;
+ }
+
+ public void sendPacket()
+ {
+ if (!BinnieCore.proxy.isSimulating(getTileEntity().getWorldObj())) {
+ return;
+ }
+ BinnieCore.proxy.sendNetworkEntityPacket((INetworkedEntity)getTileEntity());
+ }
+
+ public Side getSide()
+ {
+ return BinnieCore.proxy.isSimulating(getTileEntity().getWorldObj()) ? Side.SERVER : Side.CLIENT;
+ }
+
+ public void writeToPacket(PacketPayload payload)
+ {
+ for (MachineComponent component : getComponents()) {
+ if ((component instanceof INetworkedEntity)) {
+ ((INetworkedEntity)component).writeToPacket(payload);
+ }
+ }
+ }
+
+ public void readFromPacket(PacketPayload payload)
+ {
+ for (MachineComponent component : getComponents()) {
+ if ((component instanceof INetworkedEntity)) {
+ ((INetworkedEntity)component).readFromPacket(payload);
+ }
+ }
+ }
+
+ public void onRightClick(World world, EntityPlayer player, int x, int y, int z)
+ {
+ for (IInteraction.RightClick component : getInterfaces(IInteraction.RightClick.class)) {
+ component.onRightClick(world, player, x, y, z);
+ }
+ }
+
+ public void markDirty()
+ {
+ this.queuedInventoryUpdate = true;
+ }
+
+ private boolean queuedInventoryUpdate = false;
+
+ public void onUpdate()
+ {
+ if (BinnieCore.proxy.isSimulating(getWorld())) {
+ for (MachineComponent component : getComponents()) {
+ component.onUpdate();
+ }
+ } else {
+ for (IRender.DisplayTick renders : getInterfaces(IRender.DisplayTick.class)) {
+ renders.onDisplayTick(getWorld(), getTileEntity().xCoord, getTileEntity().yCoord, getTileEntity().zCoord, getWorld().rand);
+ }
+ }
+ if (this.queuedInventoryUpdate)
+ {
+ for (MachineComponent component : getComponents()) {
+ component.onInventoryUpdate();
+ }
+ this.queuedInventoryUpdate = false;
+ }
+ }
+
+ public IInventory getInventory()
+ {
+ return (IInventory)getInterface(IInventory.class);
+ }
+
+ public ITankMachine getTankContainer()
+ {
+ return (ITankMachine)getInterface(ITankMachine.class);
+ }
+
+ public void readFromNBT(NBTTagCompound nbttagcompound)
+ {
+ for (MachineComponent component : getComponents()) {
+ component.readFromNBT(nbttagcompound);
+ }
+ this.owner = NBTUtil.func_152459_a(nbttagcompound.getCompoundTag("owner"));
+ markDirty();
+ }
+
+ public void writeToNBT(NBTTagCompound nbttagcompound)
+ {
+ for (MachineComponent component : getComponents()) {
+ component.writeToNBT(nbttagcompound);
+ }
+ if (this.owner != null)
+ {
+ NBTTagCompound nbt = new NBTTagCompound();
+ NBTUtil.func_152460_a(nbt, this.owner);
+ nbttagcompound.setTag("owner", nbt);
+ }
+ }
+
+ public MachinePackage getPackage()
+ {
+ return this.machinePackage;
+ }
+
+ public static IMachine getMachine(Object inventory)
+ {
+ if ((inventory != null) && ((inventory instanceof IMachine))) {
+ return (IMachine)inventory;
+ }
+ if ((inventory != null) && ((inventory instanceof TileEntityMachine))) {
+ return ((TileEntityMachine)inventory).getMachine();
+ }
+ if ((inventory != null) && ((inventory instanceof MachineComponent))) {
+ return ((MachineComponent)inventory).getMachine();
+ }
+ return null;
+ }
+
+ public static <T> T getInterface(Class<T> interfac, Object inventory)
+ {
+ IMachine machine = getMachine(inventory);
+ if (machine != null) {
+ return machine.getInterface(interfac);
+ }
+ if (interfac.isInstance(inventory)) {
+ return interfac.cast(inventory);
+ }
+ return null;
+ }
+
+ public MachineUtil getMachineUtil()
+ {
+ return new MachineUtil(this);
+ }
+
+ public World getWorld()
+ {
+ return getTileEntity().getWorldObj();
+ }
+
+ public void onBlockDestroy()
+ {
+ for (MachineComponent component : getComponents()) {
+ component.onDestruction();
+ }
+ }
+
+ private int nextProgressBarID = 0;
+
+ public int getUniqueProgressBarID()
+ {
+ return this.nextProgressBarID++;
+ }
+
+ private GameProfile owner = null;
+
+ public GameProfile getOwner()
+ {
+ return this.owner;
+ }
+
+ public void setOwner(GameProfile owner)
+ {
+ this.owner = owner;
+ }
+
+ public Packet getDescriptionPacket()
+ {
+ NBTTagCompound nbt = new NBTTagCompound();
+
+ syncToNBT(nbt);
+ if (nbt.hasNoTags()) {
+ return null;
+ }
+ return BinnieCore.instance.getNetworkWrapper().getPacketFrom(new MessageTileNBT(BinnieCorePacketID.TileDescriptionSync.ordinal(), getTileEntity(), nbt).GetMessage());
+ }
+
+ public void syncToNBT(NBTTagCompound nbt)
+ {
+ for (INetwork.TilePacketSync comp : getInterfaces(INetwork.TilePacketSync.class)) {
+ comp.syncToNBT(nbt);
+ }
+ }
+
+ public void syncFromNBT(NBTTagCompound nbt)
+ {
+ for (INetwork.TilePacketSync comp : getInterfaces(INetwork.TilePacketSync.class)) {
+ comp.syncFromNBT(nbt);
+ }
+ }
+
+ public void recieveGuiNBT(Side side, EntityPlayer player, String name, NBTTagCompound nbt)
+ {
+ for (INetwork.RecieveGuiNBT recieve : getInterfaces(INetwork.RecieveGuiNBT.class)) {
+ recieve.recieveGuiNBT(side, player, name, nbt);
+ }
+ }
+
+ public void sendGuiNBT(Map<String, NBTTagCompound> nbt)
+ {
+ for (INetwork.SendGuiNBT recieve : getInterfaces(INetwork.SendGuiNBT.class)) {
+ recieve.sendGuiNBT(nbt);
+ }
+ }
+}
diff --git a/src/Java/binnie/core/machines/MachineComponent.java b/src/Java/binnie/core/machines/MachineComponent.java
new file mode 100644
index 0000000000..3b90497fc3
--- /dev/null
+++ b/src/Java/binnie/core/machines/MachineComponent.java
@@ -0,0 +1,61 @@
+package binnie.core.machines;
+
+import binnie.Binnie;
+import binnie.core.network.packet.MachinePayload;
+import forestry.api.core.INBTTagable;
+import net.minecraft.inventory.IInventory;
+import net.minecraft.nbt.NBTTagCompound;
+
+public class MachineComponent
+ implements INBTTagable
+{
+ private IMachine machine;
+
+ public MachineComponent(IMachine machine)
+ {
+ setMachine(machine);
+ machine.addComponent(this);
+ }
+
+ public void setMachine(IMachine machine)
+ {
+ this.machine = machine;
+ }
+
+ public IMachine getMachine()
+ {
+ return this.machine;
+ }
+
+ public void readFromNBT(NBTTagCompound nbttagcompound) {}
+
+ public void writeToNBT(NBTTagCompound nbttagcompound) {}
+
+ public void onUpdate() {}
+
+ public Class[] getComponentInterfaces()
+ {
+ return Binnie.Machine.getComponentInterfaces(getClass());
+ }
+
+ public void onInventoryUpdate() {}
+
+ public final MachinePayload getPayload()
+ {
+ return new MachinePayload(Binnie.Machine.getNetworkID(getClass()));
+ }
+
+ public void recieveData(MachinePayload payload) {}
+
+ public MachineUtil getUtil()
+ {
+ return getMachine().getMachineUtil();
+ }
+
+ public void onDestruction() {}
+
+ public IInventory getInventory()
+ {
+ return (IInventory)getMachine().getInterface(IInventory.class);
+ }
+}
diff --git a/src/Java/binnie/core/machines/MachineGroup.java b/src/Java/binnie/core/machines/MachineGroup.java
new file mode 100644
index 0000000000..03984f1f10
--- /dev/null
+++ b/src/Java/binnie/core/machines/MachineGroup.java
@@ -0,0 +1,113 @@
+package binnie.core.machines;
+
+import binnie.Binnie;
+import binnie.core.AbstractMod;
+import cpw.mods.fml.common.registry.GameRegistry;
+import java.util.Collection;
+import java.util.LinkedHashMap;
+import java.util.Map;
+import net.minecraft.creativetab.CreativeTabs;
+
+public class MachineGroup
+{
+ private AbstractMod mod;
+ private String blockName;
+ private String uid;
+
+ public MachineGroup(AbstractMod mod, String uid, String blockName, IMachineType[] types)
+ {
+ this.mod = mod;
+ this.uid = uid;
+ this.blockName = blockName;
+ for (IMachineType type : types) {
+ if ((type.getPackageClass() != null) && (type.isActive())) {
+ try
+ {
+ MachinePackage pack = (MachinePackage)type.getPackageClass().newInstance();
+ pack.assignMetadata(type.ordinal());
+ pack.setActive(type.isActive());
+ addPackage(pack);
+ }
+ catch (Exception e)
+ {
+ throw new RuntimeException("Failed to create machine package " + type.toString(), e);
+ }
+ }
+ }
+ Binnie.Machine.registerMachineGroup(this);
+
+ this.block = new BlockMachine(this, blockName);
+ if (this.block != null)
+ {
+ GameRegistry.registerBlock(this.block, ItemMachine.class, blockName);
+ for (MachinePackage pack : getPackages()) {
+ pack.register();
+ }
+ }
+ }
+
+ private Map<String, MachinePackage> packages = new LinkedHashMap();
+ private Map<Integer, MachinePackage> packagesID = new LinkedHashMap();
+ private BlockMachine block;
+
+ private void addPackage(MachinePackage pack)
+ {
+ this.packages.put(pack.getUID(), pack);
+ this.packagesID.put(pack.getMetadata(), pack);
+ pack.setGroup(this);
+ }
+
+ public Collection<MachinePackage> getPackages()
+ {
+ return this.packages.values();
+ }
+
+ public boolean customRenderer = true;
+
+ public BlockMachine getBlock()
+ {
+ return this.block;
+ }
+
+ public MachinePackage getPackage(int metadata)
+ {
+ return (MachinePackage)this.packagesID.get(Integer.valueOf(metadata));
+ }
+
+ public MachinePackage getPackage(String name)
+ {
+ return (MachinePackage)this.packages.get(name);
+ }
+
+ public String getUID()
+ {
+ return this.mod.getModID() + "." + this.uid;
+ }
+
+ public String getShortUID()
+ {
+ return this.uid;
+ }
+
+ private boolean renderedTileEntity = true;
+
+ boolean isTileEntityRenderered()
+ {
+ return this.renderedTileEntity;
+ }
+
+ public void renderAsBlock()
+ {
+ this.renderedTileEntity = false;
+ }
+
+ public void setCreativeTab(CreativeTabs tab)
+ {
+ this.block.setCreativeTab(tab);
+ }
+
+ public AbstractMod getMod()
+ {
+ return this.mod;
+ }
+}
diff --git a/src/Java/binnie/core/machines/MachinePackage.java b/src/Java/binnie/core/machines/MachinePackage.java
new file mode 100644
index 0000000000..943db084b6
--- /dev/null
+++ b/src/Java/binnie/core/machines/MachinePackage.java
@@ -0,0 +1,74 @@
+package binnie.core.machines;
+
+import binnie.Binnie;
+import binnie.core.language.ManagerLanguage;
+import net.minecraft.client.renderer.RenderBlocks;
+import net.minecraft.tileentity.TileEntity;
+
+public abstract class MachinePackage
+{
+ private String uid;
+ private boolean active = true;
+ boolean powered = false;
+ private int metadata = -1;
+ private MachineGroup group;
+
+ public String getUID()
+ {
+ return this.uid;
+ }
+
+ protected MachinePackage(String uid, boolean powered)
+ {
+ this.uid = uid;
+ this.powered = powered;
+ }
+
+ public abstract void createMachine(Machine paramMachine);
+
+ public abstract TileEntity createTileEntity();
+
+ public abstract void register();
+
+ public final String getDisplayName()
+ {
+ return Binnie.Language.localise(this.group.getMod(), "machine." + this.group.getShortUID() + "." + getUID());
+ }
+
+ public final Integer getMetadata()
+ {
+ return Integer.valueOf(this.metadata);
+ }
+
+ public void assignMetadata(int meta)
+ {
+ this.metadata = meta;
+ }
+
+ public MachineGroup getGroup()
+ {
+ return this.group;
+ }
+
+ public void setGroup(MachineGroup group)
+ {
+ this.group = group;
+ }
+
+ public abstract void renderMachine(Machine paramMachine, double paramDouble1, double paramDouble2, double paramDouble3, float paramFloat, RenderBlocks paramRenderBlocks);
+
+ public boolean isActive()
+ {
+ return this.active;
+ }
+
+ public void setActive(boolean active)
+ {
+ this.active = active;
+ }
+
+ public final String getInformation()
+ {
+ return Binnie.Language.localise(this.group.getMod(), "machine." + this.group.getShortUID() + "." + getUID() + ".info");
+ }
+}
diff --git a/src/Java/binnie/core/machines/MachineRendererBlock.java b/src/Java/binnie/core/machines/MachineRendererBlock.java
new file mode 100644
index 0000000000..9506746df4
--- /dev/null
+++ b/src/Java/binnie/core/machines/MachineRendererBlock.java
@@ -0,0 +1,41 @@
+package binnie.core.machines;
+
+import binnie.core.BinnieCore;
+import binnie.core.proxy.BinnieProxy;
+import binnie.core.resource.BinnieResource;
+import cpw.mods.fml.relauncher.Side;
+import cpw.mods.fml.relauncher.SideOnly;
+import org.lwjgl.opengl.GL11;
+
+@SideOnly(Side.CLIENT)
+public class MachineRendererBlock
+{
+ public static MachineRendererBlock instance = new MachineRendererBlock();
+ private BinnieResource texture;
+ private ModelBlock model;
+
+ public MachineRendererBlock()
+ {
+ this.model = new ModelBlock();
+ }
+
+ public void renderMachine(BinnieResource texture, double x, double y, double z, float var8)
+ {
+ this.texture = texture;
+
+ GL11.glPushMatrix();
+
+ GL11.glTranslated(x + 0.5D, y + 1.5D, z + 0.5D);
+ GL11.glRotatef(180.0F, 0.0F, 0.0F, 1.0F);
+
+ BinnieCore.proxy.bindTexture(texture);
+
+ GL11.glPushMatrix();
+
+ this.model.render((float)x, (float)y, (float)z, 0.0625F, 0.0625F, 0.0625F);
+
+ GL11.glPopMatrix();
+
+ GL11.glPopMatrix();
+ }
+}
diff --git a/src/Java/binnie/core/machines/MachineUtil.java b/src/Java/binnie/core/machines/MachineUtil.java
new file mode 100644
index 0000000000..97ff515061
--- /dev/null
+++ b/src/Java/binnie/core/machines/MachineUtil.java
@@ -0,0 +1,216 @@
+package binnie.core.machines;
+
+import binnie.core.BinnieCore;
+import binnie.core.machines.inventory.IChargedSlots;
+import binnie.core.machines.power.IPoweredMachine;
+import binnie.core.machines.power.IProcess;
+import binnie.core.machines.power.ITankMachine;
+import binnie.core.machines.power.PowerInterface;
+import binnie.core.machines.power.PowerSystem;
+import binnie.core.proxy.BinnieProxy;
+import binnie.core.util.ItemStackSet;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Random;
+import net.minecraft.inventory.IInventory;
+import net.minecraft.item.ItemStack;
+import net.minecraft.tileentity.TileEntity;
+import net.minecraft.world.World;
+import net.minecraftforge.fluids.FluidStack;
+import net.minecraftforge.fluids.IFluidTank;
+
+public class MachineUtil
+{
+ private IMachine machine;
+
+ public MachineUtil(IMachine machine)
+ {
+ this.machine = machine;
+ }
+
+ public IInventory getInventory()
+ {
+ return (IInventory)this.machine.getInterface(IInventory.class);
+ }
+
+ public ITankMachine getTankContainer()
+ {
+ return (ITankMachine)this.machine.getInterface(ITankMachine.class);
+ }
+
+ public IPoweredMachine getPoweredMachine()
+ {
+ return (IPoweredMachine)this.machine.getInterface(IPoweredMachine.class);
+ }
+
+ public boolean isSlotEmpty(int slot)
+ {
+ return getInventory().getStackInSlot(slot) == null;
+ }
+
+ public IFluidTank getTank(int id)
+ {
+ return getTankContainer().getTanks()[id];
+ }
+
+ public boolean spaceInTank(int id, int amount)
+ {
+ IFluidTank tank = getTank(id);
+ int space = tank.getCapacity() - tank.getFluidAmount();
+ return amount <= space;
+ }
+
+ public ItemStack getStack(int slot)
+ {
+ return getInventory().getStackInSlot(slot);
+ }
+
+ public void deleteStack(int slot)
+ {
+ setStack(slot, null);
+ }
+
+ public ItemStack decreaseStack(int slotWood, int amount)
+ {
+ return getInventory().decrStackSize(slotWood, amount);
+ }
+
+ public void setStack(int slot, ItemStack stack)
+ {
+ getInventory().setInventorySlotContents(slot, stack);
+ }
+
+ public void fillTank(int id, FluidStack liquidStack)
+ {
+ IFluidTank tank = getTank(id);
+ tank.fill(liquidStack, true);
+ }
+
+ public void addStack(int slot, ItemStack addition)
+ {
+ if (isSlotEmpty(slot))
+ {
+ setStack(slot, addition);
+ }
+ else
+ {
+ ItemStack merge = getStack(slot);
+ if ((merge.isItemEqual(addition)) && (merge.stackSize + addition.stackSize <= merge.getMaxStackSize()))
+ {
+ merge.stackSize += addition.stackSize;
+ setStack(slot, merge);
+ }
+ }
+ }
+
+ public FluidStack drainTank(int tank, int amount)
+ {
+ return getTank(tank).drain(amount, true);
+ }
+
+ public boolean liquidInTank(int tank, int amount)
+ {
+ return (getTank(tank).drain(amount, false) != null) && (getTank(tank).drain(amount, false).amount == amount);
+ }
+
+ public void damageItem(int slot, int damage)
+ {
+ ItemStack item = getStack(slot);
+ if (damage < 0) {
+ item.setItemDamage(Math.max(0, item.getItemDamage() + damage));
+ } else if (item.attemptDamageItem(damage, new Random())) {
+ setStack(slot, null);
+ }
+ setStack(slot, item);
+ }
+
+ public boolean isTankEmpty(int tankInput)
+ {
+ return getTank(tankInput).getFluidAmount() == 0;
+ }
+
+ public FluidStack getFluid(int tankInput)
+ {
+ return getTank(tankInput).getFluid() == null ? null : getTank(tankInput).getFluid();
+ }
+
+ public ItemStack[] getStacks(int[] slotGrains)
+ {
+ ItemStack[] stacks = new ItemStack[slotGrains.length];
+ for (int i = 0; i < slotGrains.length; i++) {
+ stacks[i] = getStack(slotGrains[i]);
+ }
+ return stacks;
+ }
+
+ public ItemStack hasIngredients(int recipe, int[] inventory)
+ {
+ return null;
+ }
+
+ public boolean hasIngredients(int[] recipe, int[] inventory)
+ {
+ ItemStackSet requiredStacks = new ItemStackSet();
+ for (ItemStack stack : getStacks(recipe)) {
+ requiredStacks.add(stack);
+ }
+ ItemStackSet inventoryStacks = new ItemStackSet();
+ for (ItemStack stack : getStacks(inventory)) {
+ inventoryStacks.add(stack);
+ }
+ requiredStacks.removeAll(inventoryStacks);
+
+ return requiredStacks.isEmpty();
+ }
+
+ public void useEnergyMJ(float powerUsage)
+ {
+ getPoweredMachine().getInterface().useEnergy(PowerSystem.MJ, powerUsage, true);
+ }
+
+ public boolean hasEnergyMJ(float powerUsage)
+ {
+ return getPoweredMachine().getInterface().useEnergy(PowerSystem.MJ, powerUsage, false) >= powerUsage;
+ }
+
+ public float getSlotCharge(int slot)
+ {
+ return ((IChargedSlots)this.machine.getInterface(IChargedSlots.class)).getCharge(slot);
+ }
+
+ public void useCharge(int slot, float loss)
+ {
+ ((IChargedSlots)this.machine.getInterface(IChargedSlots.class)).alterCharge(slot, -loss);
+ }
+
+ public Random getRandom()
+ {
+ return new Random();
+ }
+
+ public void refreshBlock()
+ {
+ this.machine.getWorld().markBlockForUpdate(this.machine.getTileEntity().xCoord, this.machine.getTileEntity().yCoord, this.machine.getTileEntity().zCoord);
+ }
+
+ public IProcess getProcess()
+ {
+ return (IProcess)this.machine.getInterface(IProcess.class);
+ }
+
+ public List<ItemStack> getNonNullStacks(int[] slotacclimatiser)
+ {
+ List<ItemStack> stacks = new ArrayList();
+ for (ItemStack stack : getStacks(slotacclimatiser)) {
+ if (stack != null) {
+ stacks.add(stack);
+ }
+ }
+ return stacks;
+ }
+
+ public boolean isServer()
+ {
+ return BinnieCore.proxy.isSimulating(this.machine.getWorld());
+ }
+}
diff --git a/src/Java/binnie/core/machines/ManagerMachine.java b/src/Java/binnie/core/machines/ManagerMachine.java
new file mode 100644
index 0000000000..53920e5496
--- /dev/null
+++ b/src/Java/binnie/core/machines/ManagerMachine.java
@@ -0,0 +1,108 @@
+package binnie.core.machines;
+
+import binnie.core.BinnieCore;
+import binnie.core.ManagerBase;
+import binnie.core.machines.inventory.ValidatorIcon;
+import binnie.core.proxy.BinnieProxy;
+import forestry.api.core.INBTTagable;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+
+public class ManagerMachine
+ extends ManagerBase
+{
+ private Map<Class<?>, Class<?>[]> componentInterfaceMap = new HashMap();
+ private Map<String, MachineGroup> machineGroups = new HashMap();
+ private Map<Integer, Class<?>> networkIDToComponent = new HashMap();
+ private Map<Class<?>, Integer> componentToNetworkID = new HashMap();
+ private int nextNetworkID = 0;
+ private int machineRenderID;
+
+ public void registerMachineGroup(MachineGroup group)
+ {
+ this.machineGroups.put(group.getUID(), group);
+ }
+
+ public MachineGroup getGroup(String name)
+ {
+ return (MachineGroup)this.machineGroups.get(name);
+ }
+
+ public MachinePackage getPackage(String group, String name)
+ {
+ MachineGroup machineGroup = getGroup(group);
+ return machineGroup == null ? null : machineGroup.getPackage(name);
+ }
+
+ private void registerComponentClass(Class<? extends MachineComponent> component)
+ {
+ if (this.componentInterfaceMap.containsKey(component)) {
+ return;
+ }
+ Set<Class<?>> interfaces = new HashSet();
+
+ Class<?> currentClass = component;
+ while (currentClass != null)
+ {
+ for (Class<?> clss : currentClass.getInterfaces()) {
+ interfaces.add(clss);
+ }
+ currentClass = currentClass.getSuperclass();
+ if (currentClass == Object.class) {
+ currentClass = null;
+ }
+ }
+ interfaces.remove(INBTTagable.class);
+
+ this.componentInterfaceMap.put(component, interfaces.toArray(new Class[0]));
+
+ int networkID = this.nextNetworkID++;
+
+ this.networkIDToComponent.put(Integer.valueOf(networkID), component);
+ this.componentToNetworkID.put(component, Integer.valueOf(networkID));
+ }
+
+ public int getNetworkID(Class<?> component)
+ {
+ return ((Integer)this.componentToNetworkID.get(component)).intValue();
+ }
+
+ public Class<?> getComponentClass(int networkID)
+ {
+ return (Class)this.networkIDToComponent.get(Integer.valueOf(networkID));
+ }
+
+ public int getMachineRenderID()
+ {
+ return this.machineRenderID;
+ }
+
+ public void init()
+ {
+ this.machineRenderID = BinnieCore.proxy.getUniqueRenderID();
+
+ binnie.core.machines.inventory.SlotValidator.IconBee = new ValidatorIcon(BinnieCore.instance, "validator/bee.0", "validator/bee.1");
+
+ binnie.core.machines.inventory.SlotValidator.IconFrame = new ValidatorIcon(BinnieCore.instance, "validator/frame.0", "validator/frame.1");
+
+ binnie.core.machines.inventory.SlotValidator.IconCircuit = new ValidatorIcon(BinnieCore.instance, "validator/circuit.0", "validator/circuit.1");
+
+ binnie.core.machines.inventory.SlotValidator.IconBlock = new ValidatorIcon(BinnieCore.instance, "validator/block.0", "validator/block.1");
+ }
+
+ public void postInit()
+ {
+ BinnieCore.proxy.registerBlockRenderer(BinnieCore.proxy.createObject("binnie.core.machines.RendererMachine"));
+ BinnieCore.proxy.registerTileEntity(TileEntityMachine.class, "binnie.tile.machine", BinnieCore.proxy.createObject("binnie.core.machines.RendererMachine"));
+ }
+
+ public Class<?>[] getComponentInterfaces(Class<? extends MachineComponent> clss)
+ {
+ if (!this.componentInterfaceMap.containsKey(clss)) {
+ registerComponentClass(clss);
+ }
+ return (Class[])this.componentInterfaceMap.get(clss);
+ }
+}
diff --git a/src/Java/binnie/core/machines/ModelBlock.java b/src/Java/binnie/core/machines/ModelBlock.java
new file mode 100644
index 0000000000..7258ec8654
--- /dev/null
+++ b/src/Java/binnie/core/machines/ModelBlock.java
@@ -0,0 +1,42 @@
+package binnie.core.machines;
+
+import net.minecraft.client.model.ModelBase;
+import net.minecraft.client.model.ModelRenderer;
+
+class ModelBlock
+ extends ModelBase
+{
+ private ModelRenderer Block;
+
+ public ModelBlock()
+ {
+ this.textureWidth = 64;
+ this.textureHeight = 32;
+
+ this.Block = new ModelRenderer(this, 0, 0);
+ this.Block.addBox(0.0F, 0.0F, 0.0F, 16, 16, 16);
+ this.Block.setRotationPoint(-8.0F, 8.0F, -8.0F);
+ this.Block.setTextureSize(64, 32);
+ this.Block.mirror = true;
+ setRotation(this.Block, 0.0F, 0.0F, 0.0F);
+ }
+
+ public void render(float f, float f1, float f2, float f3, float f4, float f5)
+ {
+ super.render(null, f, f1, f2, f3, f4, f5);
+ setRotationAngles(f, f1, f2, f3, f4, f5);
+ this.Block.render(f5);
+ }
+
+ private void setRotation(ModelRenderer model, float x, float y, float z)
+ {
+ model.rotateAngleX = x;
+ model.rotateAngleY = y;
+ model.rotateAngleZ = z;
+ }
+
+ public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5)
+ {
+ super.setRotationAngles(f, f1, f2, f3, f4, f5, null);
+ }
+}
diff --git a/src/Java/binnie/core/machines/RendererMachine.java b/src/Java/binnie/core/machines/RendererMachine.java
new file mode 100644
index 0000000000..18ad4afe92
--- /dev/null
+++ b/src/Java/binnie/core/machines/RendererMachine.java
@@ -0,0 +1,68 @@
+package binnie.core.machines;
+
+import binnie.Binnie;
+import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler;
+import net.minecraft.block.Block;
+import net.minecraft.client.renderer.RenderBlocks;
+import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
+import net.minecraft.tileentity.TileEntity;
+import net.minecraft.world.IBlockAccess;
+import net.minecraft.world.World;
+
+public class RendererMachine
+ extends TileEntitySpecialRenderer
+ implements ISimpleBlockRenderingHandler
+{
+ RenderBlocks blockRenderer;
+
+ public void renderTileEntityAt(TileEntity entity, double x, double y, double z, float var8)
+ {
+ renderTileEntity((TileEntityMachine)entity, x, y, z, var8, this.blockRenderer);
+ }
+
+ public void renderTileEntity(TileEntityMachine entity, double x, double y, double z, float var8, RenderBlocks renderer)
+ {
+ if ((entity != null) && (entity.getMachine() != null))
+ {
+ MachinePackage machinePackage = entity.getMachine().getPackage();
+ machinePackage.renderMachine(entity.getMachine(), x, y, z, var8, renderer);
+ }
+ }
+
+ public void renderInvBlock(RenderBlocks renderblocks, Block block, int i, int j)
+ {
+ TileEntity entity = block.createTileEntity(null, i);
+ renderTileEntity((TileEntityMachine)entity, 0.0D, -0.1D, 0.0D, 0.0625F, renderblocks);
+ }
+
+ public void renderInventoryBlock(Block block, int metadata, int modelID, RenderBlocks renderer)
+ {
+ if (modelID == Binnie.Machine.getMachineRenderID()) {
+ renderInvBlock(renderer, block, metadata, modelID);
+ }
+ }
+
+ public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer)
+ {
+ TileEntityMachine tile = (TileEntityMachine)world.getTileEntity(x, y, z);
+ if ((tile != null) && (tile.getMachine() != null) && (tile.getMachine().getPackage() != null) && (tile.getMachine().getPackage().getGroup() != null) && (!tile.getMachine().getPackage().getGroup().customRenderer)) {
+ renderTileEntity(tile, x, y, z, 1.0F, renderer);
+ }
+ return true;
+ }
+
+ public boolean shouldRender3DInInventory(int i)
+ {
+ return true;
+ }
+
+ public int getRenderId()
+ {
+ return Binnie.Machine.getMachineRenderID();
+ }
+
+ public void func_147496_a(World par1World)
+ {
+ this.blockRenderer = new RenderBlocks(par1World);
+ }
+}
diff --git a/src/Java/binnie/core/machines/TileEntityMachine.java b/src/Java/binnie/core/machines/TileEntityMachine.java
new file mode 100644
index 0000000000..c6acf1fda8
--- /dev/null
+++ b/src/Java/binnie/core/machines/TileEntityMachine.java
@@ -0,0 +1,112 @@
+package binnie.core.machines;
+
+import binnie.Binnie;
+import binnie.core.machines.base.TileEntityMachineBase;
+import binnie.core.machines.component.IInteraction.ChunkUnload;
+import binnie.core.machines.component.IInteraction.Invalidation;
+import binnie.core.network.INetworkedEntity;
+import binnie.core.network.packet.PacketPayload;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.network.Packet;
+
+public class TileEntityMachine
+ extends TileEntityMachineBase
+ implements INetworkedEntity
+{
+ private Machine machine;
+
+ public void updateEntity()
+ {
+ super.updateEntity();
+ if (this.machine != null) {
+ this.machine.onUpdate();
+ }
+ }
+
+ public boolean canUpdate()
+ {
+ return super.canUpdate();
+ }
+
+ public TileEntityMachine(MachinePackage pack)
+ {
+ setMachine(pack);
+ }
+
+ public TileEntityMachine() {}
+
+ public void setMachine(MachinePackage pack)
+ {
+ if (pack != null) {
+ this.machine = new Machine(pack, this);
+ }
+ }
+
+ public void readFromNBT(NBTTagCompound nbtTagCompound)
+ {
+ super.readFromNBT(nbtTagCompound);
+ String name = nbtTagCompound.getString("name");
+ String group = nbtTagCompound.getString("group");
+ MachinePackage pack = Binnie.Machine.getPackage(group, name);
+ if (pack == null)
+ {
+ invalidate();
+ return;
+ }
+ setMachine(pack);
+ getMachine().readFromNBT(nbtTagCompound);
+ }
+
+ public void writeToNBT(NBTTagCompound nbtTagCompound)
+ {
+ super.writeToNBT(nbtTagCompound);
+ String name = this.machine.getPackage().getUID();
+ String group = this.machine.getPackage().getGroup().getUID();
+ nbtTagCompound.setString("group", group);
+ nbtTagCompound.setString("name", name);
+ getMachine().writeToNBT(nbtTagCompound);
+ }
+
+ public void writeToPacket(PacketPayload payload)
+ {
+ this.machine.writeToPacket(payload);
+ }
+
+ public void readFromPacket(PacketPayload payload)
+ {
+ this.machine.readFromPacket(payload);
+ }
+
+ public Machine getMachine()
+ {
+ return this.machine;
+ }
+
+ public void onBlockDestroy()
+ {
+ if (getMachine() != null) {
+ getMachine().onBlockDestroy();
+ }
+ }
+
+ public final Packet getDescriptionPacket()
+ {
+ return getMachine() != null ? getMachine().getDescriptionPacket() : null;
+ }
+
+ public void invalidate()
+ {
+ super.invalidate();
+ for (IInteraction.Invalidation c : getMachine().getInterfaces(IInteraction.Invalidation.class)) {
+ c.onInvalidation();
+ }
+ }
+
+ public void onChunkUnload()
+ {
+ super.onChunkUnload();
+ for (IInteraction.ChunkUnload c : getMachine().getInterfaces(IInteraction.ChunkUnload.class)) {
+ c.onChunkUnload();
+ }
+ }
+}
diff --git a/src/Java/binnie/core/machines/base/DefaultInventory.java b/src/Java/binnie/core/machines/base/DefaultInventory.java
new file mode 100644
index 0000000000..b72ebd3b57
--- /dev/null
+++ b/src/Java/binnie/core/machines/base/DefaultInventory.java
@@ -0,0 +1,82 @@
+package binnie.core.machines.base;
+
+import binnie.core.machines.inventory.IInventoryMachine;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.item.ItemStack;
+
+class DefaultInventory
+ implements IInventoryMachine
+{
+ public int getSizeInventory()
+ {
+ return 0;
+ }
+
+ public ItemStack getStackInSlot(int i)
+ {
+ return null;
+ }
+
+ public ItemStack decrStackSize(int i, int j)
+ {
+ return null;
+ }
+
+ public ItemStack getStackInSlotOnClosing(int i)
+ {
+ return null;
+ }
+
+ public void setInventorySlotContents(int i, ItemStack itemstack) {}
+
+ public int getInventoryStackLimit()
+ {
+ return 64;
+ }
+
+ public boolean isUseableByPlayer(EntityPlayer entityplayer)
+ {
+ return false;
+ }
+
+ public boolean isItemValidForSlot(int i, ItemStack itemstack)
+ {
+ return false;
+ }
+
+ public int[] getAccessibleSlotsFromSide(int var1)
+ {
+ return new int[0];
+ }
+
+ public boolean canInsertItem(int i, ItemStack itemstack, int j)
+ {
+ return false;
+ }
+
+ public boolean canExtractItem(int i, ItemStack itemstack, int j)
+ {
+ return false;
+ }
+
+ public boolean isReadOnly(int slot)
+ {
+ return false;
+ }
+
+ public String getInventoryName()
+ {
+ return "";
+ }
+
+ public boolean hasCustomInventoryName()
+ {
+ return false;
+ }
+
+ public void markDirty() {}
+
+ public void openInventory() {}
+
+ public void closeInventory() {}
+}
diff --git a/src/Java/binnie/core/machines/base/DefaultPower.java b/src/Java/binnie/core/machines/base/DefaultPower.java
new file mode 100644
index 0000000000..5d3e143b2b
--- /dev/null
+++ b/src/Java/binnie/core/machines/base/DefaultPower.java
@@ -0,0 +1,71 @@
+package binnie.core.machines.base;
+
+import binnie.core.machines.power.IPoweredMachine;
+import binnie.core.machines.power.PowerInfo;
+import binnie.core.machines.power.PowerInterface;
+import cpw.mods.fml.common.Optional.Method;
+import net.minecraft.tileentity.TileEntity;
+import net.minecraftforge.common.util.ForgeDirection;
+
+class DefaultPower
+ implements IPoweredMachine
+{
+ public PowerInfo getPowerInfo()
+ {
+ return new PowerInfo(this, 0.0F);
+ }
+
+ @Optional.Method(modid="IC2")
+ public double getDemandedEnergy()
+ {
+ return 0.0D;
+ }
+
+ @Optional.Method(modid="IC2")
+ public int getSinkTier()
+ {
+ return 0;
+ }
+
+ @Optional.Method(modid="IC2")
+ public double injectEnergy(ForgeDirection directionFrom, double amount, double voltage)
+ {
+ return 0.0D;
+ }
+
+ @Optional.Method(modid="IC2")
+ public boolean acceptsEnergyFrom(TileEntity emitter, ForgeDirection direction)
+ {
+ return false;
+ }
+
+ public int receiveEnergy(ForgeDirection from, int maxReceive, boolean simulate)
+ {
+ return 0;
+ }
+
+ public int extractEnergy(ForgeDirection from, int maxExtract, boolean simulate)
+ {
+ return 0;
+ }
+
+ public int getEnergyStored(ForgeDirection from)
+ {
+ return 0;
+ }
+
+ public int getMaxEnergyStored(ForgeDirection from)
+ {
+ return 0;
+ }
+
+ public boolean canConnectEnergy(ForgeDirection from)
+ {
+ return false;
+ }
+
+ public PowerInterface getInterface()
+ {
+ return null;
+ }
+}
diff --git a/src/Java/binnie/core/machines/base/DefaultTankContainer.java b/src/Java/binnie/core/machines/base/DefaultTankContainer.java
new file mode 100644
index 0000000000..a0c93b1168
--- /dev/null
+++ b/src/Java/binnie/core/machines/base/DefaultTankContainer.java
@@ -0,0 +1,79 @@
+package binnie.core.machines.base;
+
+import binnie.core.machines.inventory.TankSlot;
+import binnie.core.machines.power.ITankMachine;
+import binnie.core.machines.power.TankInfo;
+import net.minecraftforge.common.util.ForgeDirection;
+import net.minecraftforge.fluids.Fluid;
+import net.minecraftforge.fluids.FluidStack;
+import net.minecraftforge.fluids.FluidTankInfo;
+import net.minecraftforge.fluids.IFluidTank;
+
+class DefaultTankContainer
+ implements ITankMachine
+{
+ public int fill(ForgeDirection from, FluidStack resource, boolean doFill)
+ {
+ return 0;
+ }
+
+ public FluidStack drain(ForgeDirection from, int maxDrain, boolean doDrain)
+ {
+ return null;
+ }
+
+ public TankInfo[] getTankInfos()
+ {
+ return new TankInfo[0];
+ }
+
+ public boolean isTankReadOnly(int tank)
+ {
+ return false;
+ }
+
+ public boolean isLiquidValidForTank(FluidStack liquid, int tank)
+ {
+ return false;
+ }
+
+ public TankSlot addTank(int index, String name, int capacity)
+ {
+ return null;
+ }
+
+ public IFluidTank getTank(int index)
+ {
+ return null;
+ }
+
+ public TankSlot getTankSlot(int slot)
+ {
+ return null;
+ }
+
+ public FluidStack drain(ForgeDirection from, FluidStack resource, boolean doDrain)
+ {
+ return null;
+ }
+
+ public boolean canFill(ForgeDirection from, Fluid fluid)
+ {
+ return false;
+ }
+
+ public boolean canDrain(ForgeDirection from, Fluid fluid)
+ {
+ return false;
+ }
+
+ public FluidTankInfo[] getTankInfo(ForgeDirection from)
+ {
+ return new FluidTankInfo[0];
+ }
+
+ public IFluidTank[] getTanks()
+ {
+ return new IFluidTank[0];
+ }
+}
diff --git a/src/Java/binnie/core/machines/base/TileEntityMachineBase.java b/src/Java/binnie/core/machines/base/TileEntityMachineBase.java
new file mode 100644
index 0000000000..927671b67a
--- /dev/null
+++ b/src/Java/binnie/core/machines/base/TileEntityMachineBase.java
@@ -0,0 +1,262 @@
+package binnie.core.machines.base;
+
+import binnie.core.machines.Machine;
+import binnie.core.machines.inventory.IInventoryMachine;
+import binnie.core.machines.inventory.TankSlot;
+import binnie.core.machines.power.IPoweredMachine;
+import binnie.core.machines.power.ITankMachine;
+import binnie.core.machines.power.PowerInfo;
+import binnie.core.machines.power.PowerInterface;
+import binnie.core.machines.power.TankInfo;
+import cpw.mods.fml.common.Optional.Method;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.item.ItemStack;
+import net.minecraft.tileentity.TileEntity;
+import net.minecraft.world.World;
+import net.minecraftforge.common.util.ForgeDirection;
+import net.minecraftforge.fluids.Fluid;
+import net.minecraftforge.fluids.FluidStack;
+import net.minecraftforge.fluids.FluidTankInfo;
+import net.minecraftforge.fluids.IFluidTank;
+
+public class TileEntityMachineBase
+ extends TileEntity
+ implements IInventoryMachine, ITankMachine, IPoweredMachine
+{
+ public IInventoryMachine getInventory()
+ {
+ IInventoryMachine inv = (IInventoryMachine)Machine.getInterface(IInventoryMachine.class, this);
+ return (inv == null) || (inv == this) ? new DefaultInventory() : inv;
+ }
+
+ public ITankMachine getTankContainer()
+ {
+ ITankMachine inv = (ITankMachine)Machine.getInterface(ITankMachine.class, this);
+ return (inv == null) || (inv == this) ? new DefaultTankContainer() : inv;
+ }
+
+ public IPoweredMachine getPower()
+ {
+ IPoweredMachine inv = (IPoweredMachine)Machine.getInterface(IPoweredMachine.class, this);
+ return (inv == null) || (inv == this) ? new DefaultPower() : inv;
+ }
+
+ public int getSizeInventory()
+ {
+ return getInventory().getSizeInventory();
+ }
+
+ public ItemStack getStackInSlot(int index)
+ {
+ return getInventory().getStackInSlot(index);
+ }
+
+ public ItemStack decrStackSize(int index, int amount)
+ {
+ return getInventory().decrStackSize(index, amount);
+ }
+
+ public ItemStack getStackInSlotOnClosing(int var1)
+ {
+ return getInventory().getStackInSlotOnClosing(var1);
+ }
+
+ public void setInventorySlotContents(int index, ItemStack itemStack)
+ {
+ getInventory().setInventorySlotContents(index, itemStack);
+ }
+
+ public String getInventoryName()
+ {
+ return getInventory().getInventoryName();
+ }
+
+ public int getInventoryStackLimit()
+ {
+ return getInventory().getInventoryStackLimit();
+ }
+
+ public boolean isUseableByPlayer(EntityPlayer entityplayer)
+ {
+ if (isInvalid()) {
+ return false;
+ }
+ if (getWorldObj().getTileEntity(this.xCoord, this.yCoord, this.zCoord) != this) {
+ return false;
+ }
+ if (entityplayer.getDistanceSq(this.xCoord + 0.5D, this.yCoord + 0.5D, this.zCoord + 0.5D) > 64.0D) {
+ return false;
+ }
+ return getInventory().isUseableByPlayer(entityplayer);
+ }
+
+ public void openInventory()
+ {
+ getInventory().openInventory();
+ }
+
+ public void closeInventory()
+ {
+ getInventory().closeInventory();
+ }
+
+ public boolean hasCustomInventoryName()
+ {
+ return getInventory().hasCustomInventoryName();
+ }
+
+ public void markDirty()
+ {
+ super.markDirty();
+ getInventory().markDirty();
+ }
+
+ public boolean isItemValidForSlot(int slot, ItemStack itemStack)
+ {
+ return getInventory().isItemValidForSlot(slot, itemStack);
+ }
+
+ public int[] getAccessibleSlotsFromSide(int var1)
+ {
+ return getInventory().getAccessibleSlotsFromSide(var1);
+ }
+
+ public boolean canInsertItem(int i, ItemStack itemstack, int j)
+ {
+ return getInventory().canInsertItem(i, itemstack, j);
+ }
+
+ public boolean canExtractItem(int i, ItemStack itemstack, int j)
+ {
+ return getInventory().canExtractItem(i, itemstack, j);
+ }
+
+ public boolean isReadOnly(int slot)
+ {
+ return getInventory().isReadOnly(slot);
+ }
+
+ public PowerInfo getPowerInfo()
+ {
+ return getPower().getPowerInfo();
+ }
+
+ public TankInfo[] getTankInfos()
+ {
+ return getTankContainer().getTankInfos();
+ }
+
+ public boolean isTankReadOnly(int tank)
+ {
+ return getTankContainer().isTankReadOnly(tank);
+ }
+
+ public boolean isLiquidValidForTank(FluidStack liquid, int tank)
+ {
+ return getTankContainer().isLiquidValidForTank(liquid, tank);
+ }
+
+ public TankSlot addTank(int index, String name, int capacity)
+ {
+ return getTankContainer().addTank(index, name, capacity);
+ }
+
+ public IFluidTank getTank(int index)
+ {
+ return getTankContainer().getTank(index);
+ }
+
+ public TankSlot getTankSlot(int index)
+ {
+ return getTankContainer().getTankSlot(index);
+ }
+
+ public int fill(ForgeDirection from, FluidStack resource, boolean doFill)
+ {
+ return getTankContainer().fill(from, resource, doFill);
+ }
+
+ public FluidStack drain(ForgeDirection from, FluidStack resource, boolean doDrain)
+ {
+ return getTankContainer().drain(from, resource, doDrain);
+ }
+
+ public FluidStack drain(ForgeDirection from, int maxDrain, boolean doDrain)
+ {
+ return getTankContainer().drain(from, maxDrain, doDrain);
+ }
+
+ public boolean canFill(ForgeDirection from, Fluid fluid)
+ {
+ return getTankContainer().canFill(from, fluid);
+ }
+
+ public boolean canDrain(ForgeDirection from, Fluid fluid)
+ {
+ return getTankContainer().canDrain(from, fluid);
+ }
+
+ public FluidTankInfo[] getTankInfo(ForgeDirection from)
+ {
+ return getTankContainer().getTankInfo(from);
+ }
+
+ public IFluidTank[] getTanks()
+ {
+ return getTankContainer().getTanks();
+ }
+
+ @Optional.Method(modid="IC2")
+ public double getDemandedEnergy()
+ {
+ return getPower().getDemandedEnergy();
+ }
+
+ @Optional.Method(modid="IC2")
+ public int getSinkTier()
+ {
+ return getPower().getSinkTier();
+ }
+
+ @Optional.Method(modid="IC2")
+ public double injectEnergy(ForgeDirection directionFrom, double amount, double voltage)
+ {
+ return getPower().injectEnergy(directionFrom, amount, voltage);
+ }
+
+ @Optional.Method(modid="IC2")
+ public boolean acceptsEnergyFrom(TileEntity emitter, ForgeDirection direction)
+ {
+ return getPower().acceptsEnergyFrom(emitter, direction);
+ }
+
+ public int receiveEnergy(ForgeDirection from, int maxReceive, boolean simulate)
+ {
+ return getPower().receiveEnergy(from, maxReceive, simulate);
+ }
+
+ public int extractEnergy(ForgeDirection from, int maxExtract, boolean simulate)
+ {
+ return getPower().extractEnergy(from, maxExtract, simulate);
+ }
+
+ public int getEnergyStored(ForgeDirection from)
+ {
+ return getPower().getEnergyStored(from);
+ }
+
+ public int getMaxEnergyStored(ForgeDirection from)
+ {
+ return getPower().getMaxEnergyStored(from);
+ }
+
+ public boolean canConnectEnergy(ForgeDirection from)
+ {
+ return getPower().canConnectEnergy(from);
+ }
+
+ public PowerInterface getInterface()
+ {
+ return getPower().getInterface();
+ }
+}
diff --git a/src/Java/binnie/core/machines/component/ComponentRecipe.java b/src/Java/binnie/core/machines/component/ComponentRecipe.java
new file mode 100644
index 0000000000..502967e83a
--- /dev/null
+++ b/src/Java/binnie/core/machines/component/ComponentRecipe.java
@@ -0,0 +1,14 @@
+package binnie.core.machines.component;
+
+import binnie.core.machines.Machine;
+import binnie.core.machines.MachineComponent;
+
+public abstract class ComponentRecipe
+ extends MachineComponent
+ implements IComponentRecipe
+{
+ public ComponentRecipe(Machine machine)
+ {
+ super(machine);
+ }
+}
diff --git a/src/Java/binnie/core/machines/component/IBuildcraft.java b/src/Java/binnie/core/machines/component/IBuildcraft.java
new file mode 100644
index 0000000000..42c4b315e6
--- /dev/null
+++ b/src/Java/binnie/core/machines/component/IBuildcraft.java
@@ -0,0 +1,20 @@
+package binnie.core.machines.component;
+
+import binnie.core.triggers.TriggerData;
+import buildcraft.api.statements.IActionExternal;
+import buildcraft.api.statements.IActionReceptor;
+import java.util.List;
+
+public abstract interface IBuildcraft
+{
+ public static abstract interface TriggerProvider
+ {
+ public abstract void getTriggers(List<TriggerData> paramList);
+ }
+
+ public static abstract interface ActionProvider
+ extends IActionReceptor
+ {
+ public abstract void getActions(List<IActionExternal> paramList);
+ }
+}
diff --git a/src/Java/binnie/core/machines/component/IComponentRecipe.java b/src/Java/binnie/core/machines/component/IComponentRecipe.java
new file mode 100644
index 0000000000..f512d1090f
--- /dev/null
+++ b/src/Java/binnie/core/machines/component/IComponentRecipe.java
@@ -0,0 +1,12 @@
+package binnie.core.machines.component;
+
+import net.minecraft.item.ItemStack;
+
+public abstract interface IComponentRecipe
+{
+ public abstract boolean isRecipe();
+
+ public abstract ItemStack doRecipe(boolean paramBoolean);
+
+ public abstract ItemStack getProduct();
+}
diff --git a/src/Java/binnie/core/machines/component/IInteraction.java b/src/Java/binnie/core/machines/component/IInteraction.java
new file mode 100644
index 0000000000..7556b5d567
--- /dev/null
+++ b/src/Java/binnie/core/machines/component/IInteraction.java
@@ -0,0 +1,22 @@
+package binnie.core.machines.component;
+
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.world.World;
+
+public abstract interface IInteraction
+{
+ public static abstract interface ChunkUnload
+ {
+ public abstract void onChunkUnload();
+ }
+
+ public static abstract interface Invalidation
+ {
+ public abstract void onInvalidation();
+ }
+
+ public static abstract interface RightClick
+ {
+ public abstract void onRightClick(World paramWorld, EntityPlayer paramEntityPlayer, int paramInt1, int paramInt2, int paramInt3);
+ }
+}
diff --git a/src/Java/binnie/core/machines/component/IRender.java b/src/Java/binnie/core/machines/component/IRender.java
new file mode 100644
index 0000000000..0b79e985bb
--- /dev/null
+++ b/src/Java/binnie/core/machines/component/IRender.java
@@ -0,0 +1,28 @@
+package binnie.core.machines.component;
+
+import cpw.mods.fml.relauncher.Side;
+import cpw.mods.fml.relauncher.SideOnly;
+import java.util.Random;
+import net.minecraft.client.renderer.entity.RenderItem;
+import net.minecraft.world.World;
+
+public abstract interface IRender
+{
+ public static abstract interface DisplayTick
+ {
+ @SideOnly(Side.CLIENT)
+ public abstract void onDisplayTick(World paramWorld, int paramInt1, int paramInt2, int paramInt3, Random paramRandom);
+ }
+
+ public static abstract interface RandomDisplayTick
+ {
+ @SideOnly(Side.CLIENT)
+ public abstract void onRandomDisplayTick(World paramWorld, int paramInt1, int paramInt2, int paramInt3, Random paramRandom);
+ }
+
+ public static abstract interface Render
+ {
+ @SideOnly(Side.CLIENT)
+ public abstract void renderInWorld(RenderItem paramRenderItem, double paramDouble1, double paramDouble2, double paramDouble3);
+ }
+}
diff --git a/src/Java/binnie/core/machines/inventory/AccessDirection.java b/src/Java/binnie/core/machines/inventory/AccessDirection.java
new file mode 100644
index 0000000000..10abf8d7f0
--- /dev/null
+++ b/src/Java/binnie/core/machines/inventory/AccessDirection.java
@@ -0,0 +1,97 @@
+package binnie.core.machines.inventory;
+
+ enum AccessDirection
+{
+ Both, In, Out, Neither;
+
+ private AccessDirection() {}
+
+ boolean canInsert()
+ {
+ return (this == Both) || (this == In);
+ }
+
+ boolean canExtract()
+ {
+ return (this == Both) || (this == Out);
+ }
+
+ boolean canAccess()
+ {
+ return this != Neither;
+ }
+
+ AccessDirection changeInsert(boolean b)
+ {
+ if (b)
+ {
+ if (this == Out) {
+ return Both;
+ }
+ if (this == Neither) {
+ return In;
+ }
+ }
+ else
+ {
+ if (this == Both) {
+ return Out;
+ }
+ if (this == In) {
+ return Neither;
+ }
+ }
+ return this;
+ }
+
+ AccessDirection changeExtract(boolean b)
+ {
+ if (b)
+ {
+ if (this == In) {
+ return Both;
+ }
+ if (this == Neither) {
+ return Out;
+ }
+ }
+ else
+ {
+ if (this == Both) {
+ return In;
+ }
+ if (this == Out) {
+ return Neither;
+ }
+ }
+ return this;
+ }
+
+ public String getTextColour()
+ {
+ switch (1.$SwitchMap$binnie$core$machines$inventory$AccessDirection[ordinal()])
+ {
+ case 1:
+ return "§a";
+ case 2:
+ return "§e";
+ case 3:
+ return "§c";
+ }
+ return "§b";
+ }
+
+ public int getShadeColour()
+ {
+ switch (1.$SwitchMap$binnie$core$machines$inventory$AccessDirection[ordinal()])
+ {
+ case 1:
+ return 1431699285;
+ case 2:
+ return 1442840405;
+ case 3:
+ return 1442796885;
+ }
+ return 1431699455;
+ }
+}
diff --git a/src/Java/binnie/core/machines/inventory/BaseSlot.java b/src/Java/binnie/core/machines/inventory/BaseSlot.java
new file mode 100644
index 0000000000..fe5cde21d3
--- /dev/null
+++ b/src/Java/binnie/core/machines/inventory/BaseSlot.java
@@ -0,0 +1,148 @@
+package binnie.core.machines.inventory;
+
+import binnie.core.util.IValidator;
+import forestry.api.core.INBTTagable;
+import java.util.Collection;
+import java.util.EnumSet;
+import net.minecraftforge.common.util.ForgeDirection;
+
+abstract class BaseSlot<T>
+ implements INBTTagable, IValidator<T>
+{
+ private SidedAccess access = new SidedAccess();
+ Validator<T> validator = null;
+ private boolean readOnly = false;
+ private int index;
+
+ public BaseSlot(int index, String unlocName)
+ {
+ setIndex(index);
+ setUnlocalisedName(unlocName);
+ }
+
+ public void setReadOnly()
+ {
+ this.readOnly = true;
+ forbidInsertion();
+ }
+
+ public boolean isValid(T item)
+ {
+ if (item == null) {
+ return true;
+ }
+ if (this.validator != null) {
+ return this.validator.isValid(item);
+ }
+ return true;
+ }
+
+ public abstract T getContent();
+
+ public abstract void setContent(T paramT);
+
+ public void setValidator(Validator<T> val)
+ {
+ this.validator = val;
+ }
+
+ public boolean isEmpty()
+ {
+ return getContent() == null;
+ }
+
+ public boolean isReadOnly()
+ {
+ return this.readOnly;
+ }
+
+ public int getIndex()
+ {
+ return this.index;
+ }
+
+ private void setIndex(int index)
+ {
+ this.index = index;
+ }
+
+ public boolean canInsert()
+ {
+ return !this.access.getInsertionSides().isEmpty();
+ }
+
+ public boolean canExtract()
+ {
+ return !this.access.getExtractionSides().isEmpty();
+ }
+
+ public void forbidInteraction()
+ {
+ forbidInsertion();
+ forbidExtraction();
+ }
+
+ public void setInputSides(EnumSet<ForgeDirection> sides)
+ {
+ for (ForgeDirection side : EnumSet.complementOf(sides)) {
+ if (side != ForgeDirection.UNKNOWN) {
+ this.access.setInsert(side, false);
+ }
+ }
+ }
+
+ public void setOutputSides(EnumSet<ForgeDirection> sides)
+ {
+ for (ForgeDirection side : EnumSet.complementOf(sides)) {
+ if (side != ForgeDirection.UNKNOWN) {
+ this.access.setExtract(side, false);
+ }
+ }
+ }
+
+ public void forbidExtraction()
+ {
+ this.access.setExtract(false);
+ this.access.forbidExtractChange();
+ }
+
+ public void forbidInsertion()
+ {
+ this.access.setInsert(false);
+ this.access.forbidInsertChange();
+ }
+
+ public boolean canInsert(ForgeDirection dir)
+ {
+ return this.access.canInsert(dir);
+ }
+
+ public boolean canExtract(ForgeDirection dir)
+ {
+ return this.access.canExtract(dir);
+ }
+
+ public Collection<ForgeDirection> getInputSides()
+ {
+ return this.access.getInsertionSides();
+ }
+
+ public Collection<ForgeDirection> getOutputSides()
+ {
+ return this.access.getExtractionSides();
+ }
+
+ protected String unlocName = "";
+
+ public void setUnlocalisedName(String name)
+ {
+ this.unlocName = name;
+ }
+
+ public abstract String getName();
+
+ public Validator<T> getValidator()
+ {
+ return this.validator;
+ }
+}
diff --git a/src/Java/binnie/core/machines/inventory/ComponentChargedSlots.java b/src/Java/binnie/core/machines/inventory/ComponentChargedSlots.java
new file mode 100644
index 0000000000..078a2f98d5
--- /dev/null
+++ b/src/Java/binnie/core/machines/inventory/ComponentChargedSlots.java
@@ -0,0 +1,117 @@
+package binnie.core.machines.inventory;
+
+import binnie.core.machines.Machine;
+import binnie.core.machines.MachineComponent;
+import binnie.core.machines.MachineUtil;
+import binnie.core.machines.network.INetwork.GuiNBT;
+import cpw.mods.fml.relauncher.Side;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Set;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.nbt.NBTTagList;
+
+public class ComponentChargedSlots
+ extends MachineComponent
+ implements INetwork.GuiNBT, IChargedSlots
+{
+ public ComponentChargedSlots(Machine machine)
+ {
+ super(machine);
+ }
+
+ public void readFromNBT(NBTTagCompound nbttagcompound)
+ {
+ super.readFromNBT(nbttagcompound);
+ this.charges.clear();
+ NBTTagList list = nbttagcompound.getTagList("charges", 10);
+ for (int i = 0; i < list.tagCount(); i++)
+ {
+ NBTTagCompound tag = list.getCompoundTagAt(i);
+ this.charges.put(Integer.valueOf(tag.getByte("i")), Float.valueOf(tag.getByte("v") / 100.0F));
+ }
+ }
+
+ public void writeToNBT(NBTTagCompound nbttagcompound)
+ {
+ super.writeToNBT(nbttagcompound);
+
+ NBTTagList chargeList = new NBTTagList();
+ for (Map.Entry<Integer, Float> entry : this.charges.entrySet())
+ {
+ NBTTagCompound chargesNBT = new NBTTagCompound();
+ chargesNBT.setByte("i", (byte)(0 + ((Integer)entry.getKey()).intValue()));
+ chargesNBT.setByte("v", (byte)(int)(((Float)entry.getValue()).floatValue() * 100.0F));
+ chargeList.appendTag(chargesNBT);
+ }
+ nbttagcompound.setTag("charges", chargeList);
+ }
+
+ private Map<Integer, Float> charges = new HashMap();
+
+ public void addCharge(int slot)
+ {
+ this.charges.put(Integer.valueOf(slot), Float.valueOf(0.0F));
+ }
+
+ public void recieveGuiNBT(Side side, EntityPlayer player, String name, NBTTagCompound nbt)
+ {
+ Iterator i$;
+ if (name.equals("slot-charges")) {
+ for (i$ = this.charges.keySet().iterator(); i$.hasNext();)
+ {
+ int i = ((Integer)i$.next()).intValue();
+ this.charges.put(Integer.valueOf(i), Float.valueOf(nbt.getShort("" + i) / 100.0F));
+ }
+ }
+ }
+
+ public void sendGuiNBT(Map<String, NBTTagCompound> nbt)
+ {
+ NBTTagCompound tag = new NBTTagCompound();
+ for (Iterator i$ = this.charges.keySet().iterator(); i$.hasNext();)
+ {
+ int i = ((Integer)i$.next()).intValue();
+ tag.setShort("" + i, (short)(int)(((Float)this.charges.get(Integer.valueOf(i))).floatValue() * 100.0F));
+ }
+ nbt.put("slot-charges", tag);
+ }
+
+ public float getCharge(int slot)
+ {
+ return this.charges.containsKey(Integer.valueOf(slot)) ? ((Float)this.charges.get(Integer.valueOf(slot))).floatValue() : 0.0F;
+ }
+
+ public void setCharge(int slot, float charge)
+ {
+ if (charge > 1.0F) {
+ charge = 1.0F;
+ }
+ if (charge < 0.0F) {
+ charge = 0.0F;
+ }
+ if (this.charges.containsKey(Integer.valueOf(slot))) {
+ this.charges.put(Integer.valueOf(slot), Float.valueOf(charge));
+ }
+ }
+
+ public void onUpdate()
+ {
+ for (Iterator i$ = this.charges.keySet().iterator(); i$.hasNext();)
+ {
+ int slot = ((Integer)i$.next()).intValue();
+ if ((getCharge(slot) <= 0.0F) &&
+ (getUtil().decreaseStack(slot, 1) != null)) {
+ setCharge(slot, 1.0F);
+ }
+ }
+ }
+
+ public void alterCharge(int slot, float charge)
+ {
+ setCharge(slot, getCharge(slot) + charge);
+ }
+}
diff --git a/src/Java/binnie/core/machines/inventory/ComponentInventory.java b/src/Java/binnie/core/machines/inventory/ComponentInventory.java
new file mode 100644
index 0000000000..66566e511c
--- /dev/null
+++ b/src/Java/binnie/core/machines/inventory/ComponentInventory.java
@@ -0,0 +1,22 @@
+package binnie.core.machines.inventory;
+
+import binnie.core.machines.IMachine;
+import binnie.core.machines.MachineComponent;
+import net.minecraft.inventory.IInventory;
+
+public abstract class ComponentInventory
+ extends MachineComponent
+ implements IInventory
+{
+ public ComponentInventory(IMachine machine)
+ {
+ super(machine);
+ }
+
+ public void markDirty()
+ {
+ if (getMachine() != null) {
+ getMachine().markDirty();
+ }
+ }
+}
diff --git a/src/Java/binnie/core/machines/inventory/ComponentInventorySlots.java b/src/Java/binnie/core/machines/inventory/ComponentInventorySlots.java
new file mode 100644
index 0000000000..42334f4485
--- /dev/null
+++ b/src/Java/binnie/core/machines/inventory/ComponentInventorySlots.java
@@ -0,0 +1,247 @@
+package binnie.core.machines.inventory;
+
+import binnie.core.machines.IMachine;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Random;
+import net.minecraft.entity.item.EntityItem;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.nbt.NBTTagList;
+import net.minecraft.tileentity.TileEntity;
+import net.minecraft.world.World;
+import net.minecraftforge.common.util.ForgeDirection;
+
+public class ComponentInventorySlots
+ extends ComponentInventory
+ implements IInventoryMachine, IInventorySlots
+{
+ public ComponentInventorySlots(IMachine machine)
+ {
+ super(machine);
+ }
+
+ private Map<Integer, InventorySlot> inventory = new LinkedHashMap();
+
+ public int getSizeInventory()
+ {
+ int size = 0;
+ for (Integer index : this.inventory.keySet()) {
+ size = Math.max(size, index.intValue() + 1);
+ }
+ return size;
+ }
+
+ public ItemStack getStackInSlot(int index)
+ {
+ if (this.inventory.containsKey(Integer.valueOf(index))) {
+ return ((InventorySlot)this.inventory.get(Integer.valueOf(index))).getContent();
+ }
+ return null;
+ }
+
+ public ItemStack decrStackSize(int index, int amount)
+ {
+ if (this.inventory.containsKey(Integer.valueOf(index)))
+ {
+ ItemStack stack = ((InventorySlot)this.inventory.get(Integer.valueOf(index))).decrStackSize(amount);
+ markDirty();
+ return stack;
+ }
+ return null;
+ }
+
+ public ItemStack getStackInSlotOnClosing(int var1)
+ {
+ return null;
+ }
+
+ public void setInventorySlotContents(int index, ItemStack itemStack)
+ {
+ if ((this.inventory.containsKey(Integer.valueOf(index))) && ((itemStack == null) || (((InventorySlot)this.inventory.get(Integer.valueOf(index))).isValid(itemStack)))) {
+ ((InventorySlot)this.inventory.get(Integer.valueOf(index))).setContent(itemStack);
+ }
+ markDirty();
+ }
+
+ protected void transferItem(int indexFrom, int indexTo)
+ {
+ if ((this.inventory.containsKey(Integer.valueOf(indexFrom))) && (this.inventory.containsKey(Integer.valueOf(indexTo))))
+ {
+ ItemStack newStack = ((InventorySlot)this.inventory.get(Integer.valueOf(indexFrom))).getContent().copy();
+ ((InventorySlot)this.inventory.get(Integer.valueOf(indexFrom))).setContent(null);
+ ((InventorySlot)this.inventory.get(Integer.valueOf(indexTo))).setContent(newStack);
+ }
+ markDirty();
+ }
+
+ public String getInventoryName()
+ {
+ return "";
+ }
+
+ public int getInventoryStackLimit()
+ {
+ return 64;
+ }
+
+ public boolean isUseableByPlayer(EntityPlayer var1)
+ {
+ return true;
+ }
+
+ public void openInventory() {}
+
+ public void closeInventory() {}
+
+ public void readFromNBT(NBTTagCompound nbttagcompound)
+ {
+ super.readFromNBT(nbttagcompound);
+ if (nbttagcompound.hasKey("inventory"))
+ {
+ NBTTagList inventoryNBT = nbttagcompound.getTagList("inventory", 10);
+ for (int i = 0; i < inventoryNBT.tagCount(); i++)
+ {
+ NBTTagCompound slotNBT = inventoryNBT.getCompoundTagAt(i);
+ int index = slotNBT.getInteger("id");
+ if (slotNBT.hasKey("Slot")) {
+ index = slotNBT.getByte("Slot") & 0xFF;
+ }
+ if (this.inventory.containsKey(Integer.valueOf(index))) {
+ ((InventorySlot)this.inventory.get(Integer.valueOf(index))).readFromNBT(slotNBT);
+ }
+ }
+ }
+ markDirty();
+ }
+
+ public void writeToNBT(NBTTagCompound nbttagcompound)
+ {
+ super.writeToNBT(nbttagcompound);
+
+ NBTTagList inventoryNBT = new NBTTagList();
+ for (Map.Entry<Integer, InventorySlot> entry : this.inventory.entrySet())
+ {
+ NBTTagCompound slotNBT = new NBTTagCompound();
+ slotNBT.setInteger("id", ((Integer)entry.getKey()).intValue());
+ ((InventorySlot)entry.getValue()).writeToNBT(slotNBT);
+ inventoryNBT.appendTag(slotNBT);
+ }
+ nbttagcompound.setTag("inventory", inventoryNBT);
+ }
+
+ public final InventorySlot addSlot(int index, String unlocName)
+ {
+ this.inventory.put(Integer.valueOf(index), new InventorySlot(index, unlocName));
+ return getSlot(index);
+ }
+
+ public final InventorySlot[] addSlotArray(int[] indexes, String unlocName)
+ {
+ for (int k : indexes) {
+ addSlot(k, unlocName);
+ }
+ return getSlots(indexes);
+ }
+
+ public InventorySlot getSlot(int index)
+ {
+ if (this.inventory.containsKey(Integer.valueOf(index))) {
+ return (InventorySlot)this.inventory.get(Integer.valueOf(index));
+ }
+ return null;
+ }
+
+ public InventorySlot[] getAllSlots()
+ {
+ return (InventorySlot[])this.inventory.values().toArray(new InventorySlot[0]);
+ }
+
+ public InventorySlot[] getSlots(int[] indexes)
+ {
+ List<InventorySlot> list = new ArrayList();
+ for (int i : indexes) {
+ if (getSlot(i) != null) {
+ list.add(getSlot(i));
+ }
+ }
+ return (InventorySlot[])list.toArray(new InventorySlot[0]);
+ }
+
+ public boolean isReadOnly(int slot)
+ {
+ InventorySlot iSlot = getSlot(slot);
+ return iSlot == null ? true : iSlot.isReadOnly();
+ }
+
+ public boolean hasCustomInventoryName()
+ {
+ return true;
+ }
+
+ public boolean isItemValidForSlot(int slot, ItemStack itemStack)
+ {
+ InventorySlot iSlot = getSlot(slot);
+ return iSlot != null;
+ }
+
+ public void onDestruction()
+ {
+ for (InventorySlot slot : this.inventory.values())
+ {
+ ItemStack stack = slot.getContent();
+ if ((!slot.isRecipe()) && (stack != null))
+ {
+ float f = getMachine().getWorld().rand.nextFloat() * 0.8F + 0.1F;
+ float f1 = getMachine().getWorld().rand.nextFloat() * 0.8F + 0.1F;
+ float f2 = getMachine().getWorld().rand.nextFloat() * 0.8F + 0.1F;
+ if (stack.stackSize == 0) {
+ stack.stackSize = 1;
+ }
+ EntityItem entityitem = new EntityItem(getMachine().getWorld(), getMachine().getTileEntity().xCoord + f, getMachine().getTileEntity().yCoord + f1, getMachine().getTileEntity().zCoord + f2, stack.copy());
+
+
+
+
+ float accel = 0.05F;
+ entityitem.motionX = ((float)getMachine().getWorld().rand.nextGaussian() * accel);
+
+ entityitem.motionY = ((float)getMachine().getWorld().rand.nextGaussian() * accel + 0.2F);
+
+ entityitem.motionZ = ((float)getMachine().getWorld().rand.nextGaussian() * accel);
+
+ getMachine().getWorld().spawnEntityInWorld(entityitem);
+ }
+ }
+ }
+
+ public int[] getAccessibleSlotsFromSide(int var1)
+ {
+ List<Integer> slots = new ArrayList();
+ for (InventorySlot slot : this.inventory.values()) {
+ if ((slot.canInsert()) || (slot.canExtract())) {
+ slots.add(Integer.valueOf(slot.getIndex()));
+ }
+ }
+ int[] ids = new int[slots.size()];
+ for (int i = 0; i < slots.size(); i++) {
+ ids[i] = ((Integer)slots.get(i)).intValue();
+ }
+ return ids;
+ }
+
+ public boolean canInsertItem(int i, ItemStack itemstack, int j)
+ {
+ return (isItemValidForSlot(i, itemstack)) && (getSlot(i).canInsert(ForgeDirection.getOrientation(j)));
+ }
+
+ public boolean canExtractItem(int i, ItemStack itemstack, int j)
+ {
+ return getSlot(i).canExtract(ForgeDirection.getOrientation(j));
+ }
+}
diff --git a/src/Java/binnie/core/machines/inventory/ComponentInventoryTransfer.java b/src/Java/binnie/core/machines/inventory/ComponentInventoryTransfer.java
new file mode 100644
index 0000000000..8ee10080e8
--- /dev/null
+++ b/src/Java/binnie/core/machines/inventory/ComponentInventoryTransfer.java
@@ -0,0 +1,161 @@
+package binnie.core.machines.inventory;
+
+import binnie.core.machines.IMachine;
+import binnie.core.machines.MachineComponent;
+import binnie.core.machines.transfer.TransferRequest;
+import java.util.ArrayList;
+import java.util.List;
+import net.minecraft.inventory.IInventory;
+import net.minecraft.item.ItemStack;
+
+public class ComponentInventoryTransfer
+ extends MachineComponent
+{
+ public ComponentInventoryTransfer(IMachine machine)
+ {
+ super(machine);
+ }
+
+ public abstract class Transfer
+ {
+ protected ComponentInventoryTransfer.Condition condition;
+ protected IMachine machine;
+
+ private Transfer(IMachine machine)
+ {
+ this.machine = machine;
+ }
+
+ public final void transfer(IInventory inv)
+ {
+ if ((this.condition == null) || (fufilled(inv))) {
+ doTransfer(inv);
+ }
+ }
+
+ protected boolean fufilled(IInventory inv)
+ {
+ return true;
+ }
+
+ protected void doTransfer(IInventory inv) {}
+
+ public final Transfer setCondition(ComponentInventoryTransfer.Condition condition)
+ {
+ this.condition = condition;
+ condition.transfer = this;
+ return this;
+ }
+
+ public final IMachine getMachine()
+ {
+ return this.machine;
+ }
+ }
+
+ private class Restock
+ extends ComponentInventoryTransfer.Transfer
+ {
+ int[] buffer;
+ int destination;
+ int limit;
+
+ private Restock(IMachine machine, int[] buffer, int destination, int limit)
+ {
+ super(machine, null);
+ this.buffer = buffer;
+ this.destination = destination;
+ this.limit = limit;
+ }
+
+ private Restock(IMachine machine, int[] buffer, int destination)
+ {
+ this(machine, buffer, destination, 64);
+ }
+
+ protected void doTransfer(IInventory inv)
+ {
+ if (inv.getStackInSlot(this.destination) == null) {
+ for (int i : this.buffer) {
+ if (inv.getStackInSlot(i) != null)
+ {
+ ItemStack newStack = inv.decrStackSize(i, this.limit);
+ if (newStack != null)
+ {
+ inv.setInventorySlotContents(this.destination, newStack);
+ return;
+ }
+ }
+ }
+ }
+ }
+ }
+
+ private class Storage
+ extends ComponentInventoryTransfer.Transfer
+ {
+ int source;
+ int[] destination;
+
+ private Storage(IMachine machine, int source, int[] destination)
+ {
+ super(machine, null);
+ this.source = source;
+ this.destination = destination;
+ }
+
+ protected void doTransfer(IInventory inv)
+ {
+ if (inv.getStackInSlot(this.source) != null) {
+ inv.setInventorySlotContents(this.source, new TransferRequest(inv.getStackInSlot(this.source), inv).setTargetSlots(this.destination).ignoreValidation().transfer(true));
+ }
+ }
+
+ protected boolean fufilled(IInventory inv)
+ {
+ ItemStack stack = inv.getStackInSlot(this.source);
+ return (stack != null) && (this.condition.fufilled(stack));
+ }
+ }
+
+ private List<Transfer> transfers = new ArrayList();
+
+ public void addRestock(int[] buffer, int destination, int limit)
+ {
+ this.transfers.add(new Restock(getMachine(), buffer, destination, limit, null));
+ }
+
+ public void addRestock(int[] buffer, int destination)
+ {
+ this.transfers.add(new Restock(getMachine(), buffer, destination, null));
+ }
+
+ public void addStorage(int source, int[] destination)
+ {
+ this.transfers.add(new Storage(getMachine(), source, destination, null));
+ }
+
+ public void performTransfer(int source, int[] destination)
+ {
+ new Storage(getMachine(), source, destination, null).transfer((IInventory)getMachine().getInterface(IInventoryMachine.class));
+ }
+
+ public void onUpdate()
+ {
+ for (Transfer transfer : this.transfers) {
+ transfer.transfer((IInventory)getMachine().getInterface(IInventoryMachine.class));
+ }
+ }
+
+ public void addStorage(int source, int[] destination, Condition condition)
+ {
+ this.transfers.add(new Storage(getMachine(), source, destination, null).setCondition(condition));
+ }
+
+ public static abstract class Condition
+ {
+ public ComponentInventoryTransfer.Transfer transfer;
+
+ public abstract boolean fufilled(ItemStack paramItemStack);
+ }
+}
diff --git a/src/Java/binnie/core/machines/inventory/ComponentTankContainer.java b/src/Java/binnie/core/machines/inventory/ComponentTankContainer.java
new file mode 100644
index 0000000000..0dee156475
--- /dev/null
+++ b/src/Java/binnie/core/machines/inventory/ComponentTankContainer.java
@@ -0,0 +1,207 @@
+package binnie.core.machines.inventory;
+
+import binnie.core.machines.IMachine;
+import binnie.core.machines.MachineComponent;
+import binnie.core.machines.power.ITankMachine;
+import binnie.core.machines.power.TankInfo;
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.nbt.NBTTagList;
+import net.minecraftforge.common.util.ForgeDirection;
+import net.minecraftforge.fluids.Fluid;
+import net.minecraftforge.fluids.FluidStack;
+import net.minecraftforge.fluids.FluidTankInfo;
+import net.minecraftforge.fluids.IFluidTank;
+
+public class ComponentTankContainer
+ extends MachineComponent
+ implements ITankMachine
+{
+ private Map<Integer, TankSlot> tanks = new LinkedHashMap();
+
+ public ComponentTankContainer(IMachine machine)
+ {
+ super(machine);
+ }
+
+ public final TankSlot addTank(int index, String name, int capacity)
+ {
+ TankSlot tank = new TankSlot(index, name, capacity);
+ this.tanks.put(Integer.valueOf(index), tank);
+ return tank;
+ }
+
+ public final int fill(ForgeDirection from, FluidStack resource, boolean doFill)
+ {
+ int index = getTankIndexToFill(from, resource);
+ if (this.tanks.containsKey(Integer.valueOf(index))) {
+ return fill(index, resource, doFill);
+ }
+ return 0;
+ }
+
+ public final FluidStack drain(ForgeDirection from, int maxDrain, boolean doDrain)
+ {
+ int index = getTankIndexToDrain(from, null);
+ if (this.tanks.containsKey(Integer.valueOf(index))) {
+ return drain(index, maxDrain, doDrain);
+ }
+ return null;
+ }
+
+ private final int fill(int tankIndex, FluidStack resource, boolean doFill)
+ {
+ if (!this.tanks.containsKey(Integer.valueOf(tankIndex))) {
+ return 0;
+ }
+ if (!isLiquidValidForTank(resource, tankIndex)) {
+ return 0;
+ }
+ TankSlot tank = (TankSlot)this.tanks.get(Integer.valueOf(tankIndex));
+ int filled = tank.getTank().fill(resource, doFill);
+ if (filled > 0) {
+ markDirty();
+ }
+ return filled;
+ }
+
+ private final FluidStack drain(int tankIndex, int maxDrain, boolean doDrain)
+ {
+ if (!this.tanks.containsKey(Integer.valueOf(tankIndex))) {
+ return null;
+ }
+ TankSlot tank = (TankSlot)this.tanks.get(Integer.valueOf(tankIndex));
+ FluidStack drained = tank.getTank().drain(maxDrain, doDrain);
+ if (drained != null) {
+ markDirty();
+ }
+ return drained;
+ }
+
+ private int getTankIndexToFill(ForgeDirection from, FluidStack resource)
+ {
+ for (TankSlot tank : this.tanks.values()) {
+ if ((tank.isValid(resource)) && (tank.canInsert(from)) && ((tank.getContent() == null) || (tank.getContent().isFluidEqual(resource)))) {
+ return tank.getIndex();
+ }
+ }
+ return -1;
+ }
+
+ private int getTankIndexToDrain(ForgeDirection from, FluidStack resource)
+ {
+ for (TankSlot tank : this.tanks.values()) {
+ if ((tank.getContent() != null) &&
+ (tank.canExtract(from)) && ((resource == null) || (resource.isFluidEqual(tank.getContent())))) {
+ return tank.getIndex();
+ }
+ }
+ return -1;
+ }
+
+ public void readFromNBT(NBTTagCompound nbttagcompound)
+ {
+ super.readFromNBT(nbttagcompound);
+ if (nbttagcompound.hasKey("liquidTanks"))
+ {
+ NBTTagList tanksNBT = nbttagcompound.getTagList("liquidTanks", 10);
+ for (int i = 0; i < tanksNBT.tagCount(); i++)
+ {
+ NBTTagCompound tankNBT = tanksNBT.getCompoundTagAt(i);
+ int index = tankNBT.getInteger("index");
+ if (this.tanks.containsKey(Integer.valueOf(index))) {
+ ((TankSlot)this.tanks.get(Integer.valueOf(index))).readFromNBT(tankNBT);
+ }
+ }
+ }
+ }
+
+ public void writeToNBT(NBTTagCompound nbttagcompound)
+ {
+ super.writeToNBT(nbttagcompound);
+
+ NBTTagList tanksNBT = new NBTTagList();
+ for (Map.Entry<Integer, TankSlot> entry : this.tanks.entrySet())
+ {
+ NBTTagCompound tankNBT = new NBTTagCompound();
+ tankNBT.setInteger("index", ((Integer)entry.getKey()).intValue());
+ ((TankSlot)entry.getValue()).writeToNBT(tankNBT);
+ tanksNBT.appendTag(tankNBT);
+ }
+ nbttagcompound.setTag("liquidTanks", tanksNBT);
+ }
+
+ public boolean isTankReadOnly(int tank)
+ {
+ return ((TankSlot)this.tanks.get(Integer.valueOf(tank))).isReadOnly();
+ }
+
+ public boolean isLiquidValidForTank(FluidStack liquid, int tank)
+ {
+ TankSlot slot = getTankSlot(tank);
+ return slot != null;
+ }
+
+ public TankInfo[] getTankInfos()
+ {
+ return TankInfo.get(this);
+ }
+
+ public IFluidTank getTank(int index)
+ {
+ return getTanks()[index];
+ }
+
+ public IFluidTank[] getTanks()
+ {
+ List<IFluidTank> ltanks = new ArrayList();
+ for (TankSlot tank : this.tanks.values()) {
+ ltanks.add(tank.getTank());
+ }
+ return (IFluidTank[])ltanks.toArray(new IFluidTank[0]);
+ }
+
+ public TankSlot getTankSlot(int index)
+ {
+ return (TankSlot)this.tanks.get(Integer.valueOf(index));
+ }
+
+ public FluidStack drain(ForgeDirection from, FluidStack resource, boolean doDrain)
+ {
+ int index = getTankIndexToDrain(from, null);
+ if (this.tanks.containsKey(Integer.valueOf(index))) {
+ return drain(index, resource.amount, doDrain);
+ }
+ return null;
+ }
+
+ public boolean canFill(ForgeDirection from, Fluid fluid)
+ {
+ return fill(from, new FluidStack(fluid, 1), false) > 0;
+ }
+
+ public boolean canDrain(ForgeDirection from, Fluid fluid)
+ {
+ return drain(from, new FluidStack(fluid, 1), false) != null;
+ }
+
+ public FluidTankInfo[] getTankInfo(ForgeDirection from)
+ {
+ FluidTankInfo[] info = new FluidTankInfo[getTanks().length];
+ for (int i = 0; i < info.length; i++) {
+ info[i] = new FluidTankInfo(getTanks()[i]);
+ }
+ return info;
+ }
+
+ public void markDirty()
+ {
+ if (getMachine() != null) {
+ getMachine().markDirty();
+ }
+ }
+}
diff --git a/src/Java/binnie/core/machines/inventory/IChargedSlots.java b/src/Java/binnie/core/machines/inventory/IChargedSlots.java
new file mode 100644
index 0000000000..e3fcae1f51
--- /dev/null
+++ b/src/Java/binnie/core/machines/inventory/IChargedSlots.java
@@ -0,0 +1,10 @@
+package binnie.core.machines.inventory;
+
+public abstract interface IChargedSlots
+{
+ public abstract float getCharge(int paramInt);
+
+ public abstract void setCharge(int paramInt, float paramFloat);
+
+ public abstract void alterCharge(int paramInt, float paramFloat);
+}
diff --git a/src/Java/binnie/core/machines/inventory/IInventoryMachine.java b/src/Java/binnie/core/machines/inventory/IInventoryMachine.java
new file mode 100644
index 0000000000..5c0c0a997f
--- /dev/null
+++ b/src/Java/binnie/core/machines/inventory/IInventoryMachine.java
@@ -0,0 +1,8 @@
+package binnie.core.machines.inventory;
+
+import net.minecraft.inventory.IInventory;
+import net.minecraft.inventory.ISidedInventory;
+
+public abstract interface IInventoryMachine
+ extends IInventory, ISidedInventory, IValidatedInventory
+{}
diff --git a/src/Java/binnie/core/machines/inventory/IInventorySlots.java b/src/Java/binnie/core/machines/inventory/IInventorySlots.java
new file mode 100644
index 0000000000..c860f00a63
--- /dev/null
+++ b/src/Java/binnie/core/machines/inventory/IInventorySlots.java
@@ -0,0 +1,14 @@
+package binnie.core.machines.inventory;
+
+public abstract interface IInventorySlots
+{
+ public abstract InventorySlot addSlot(int paramInt, String paramString);
+
+ public abstract InventorySlot[] addSlotArray(int[] paramArrayOfInt, String paramString);
+
+ public abstract InventorySlot getSlot(int paramInt);
+
+ public abstract InventorySlot[] getSlots(int[] paramArrayOfInt);
+
+ public abstract InventorySlot[] getAllSlots();
+}
diff --git a/src/Java/binnie/core/machines/inventory/IValidatedInventory.java b/src/Java/binnie/core/machines/inventory/IValidatedInventory.java
new file mode 100644
index 0000000000..56543612c8
--- /dev/null
+++ b/src/Java/binnie/core/machines/inventory/IValidatedInventory.java
@@ -0,0 +1,9 @@
+package binnie.core.machines.inventory;
+
+import net.minecraft.inventory.IInventory;
+
+abstract interface IValidatedInventory
+ extends IInventory
+{
+ public abstract boolean isReadOnly(int paramInt);
+}
diff --git a/src/Java/binnie/core/machines/inventory/IValidatedTankContainer.java b/src/Java/binnie/core/machines/inventory/IValidatedTankContainer.java
new file mode 100644
index 0000000000..6ca868ce02
--- /dev/null
+++ b/src/Java/binnie/core/machines/inventory/IValidatedTankContainer.java
@@ -0,0 +1,10 @@
+package binnie.core.machines.inventory;
+
+import net.minecraftforge.fluids.FluidStack;
+
+public abstract interface IValidatedTankContainer
+{
+ public abstract boolean isTankReadOnly(int paramInt);
+
+ public abstract boolean isLiquidValidForTank(FluidStack paramFluidStack, int paramInt);
+}
diff --git a/src/Java/binnie/core/machines/inventory/InventorySlot.java b/src/Java/binnie/core/machines/inventory/InventorySlot.java
new file mode 100644
index 0000000000..bfa904176a
--- /dev/null
+++ b/src/Java/binnie/core/machines/inventory/InventorySlot.java
@@ -0,0 +1,115 @@
+package binnie.core.machines.inventory;
+
+import binnie.Binnie;
+import binnie.core.BinnieCore;
+import binnie.core.language.ManagerLanguage;
+import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.NBTTagCompound;
+
+public class InventorySlot
+ extends BaseSlot<ItemStack>
+{
+ public static enum Type
+ {
+ Standard, Recipe;
+
+ private Type() {}
+ }
+
+ private ItemStack itemStack = null;
+ private Type type = Type.Standard;
+
+ public InventorySlot(int index, String unlocName)
+ {
+ super(index, unlocName);
+ }
+
+ public ItemStack getContent()
+ {
+ return this.itemStack;
+ }
+
+ public ItemStack getItemStack()
+ {
+ return getContent();
+ }
+
+ public void setContent(ItemStack itemStack)
+ {
+ this.itemStack = itemStack;
+ }
+
+ public ItemStack decrStackSize(int amount)
+ {
+ if (this.itemStack == null) {
+ return null;
+ }
+ if (this.itemStack.stackSize <= amount)
+ {
+ ItemStack returnStack = this.itemStack.copy();
+ this.itemStack = null;
+ return returnStack;
+ }
+ ItemStack returnStack = this.itemStack.copy();
+ this.itemStack.stackSize -= amount;
+ returnStack.stackSize = amount;
+ return returnStack;
+ }
+
+ public void readFromNBT(NBTTagCompound slotNBT)
+ {
+ if (slotNBT.hasKey("item"))
+ {
+ NBTTagCompound itemNBT = slotNBT.getCompoundTag("item");
+ this.itemStack = ItemStack.loadItemStackFromNBT(itemNBT);
+ }
+ else
+ {
+ this.itemStack = null;
+ }
+ }
+
+ public void writeToNBT(NBTTagCompound slotNBT)
+ {
+ NBTTagCompound itemNBT = new NBTTagCompound();
+ if (this.itemStack != null) {
+ this.itemStack.writeToNBT(itemNBT);
+ }
+ slotNBT.setTag("item", itemNBT);
+ }
+
+ public void setItemStack(ItemStack duplicate)
+ {
+ setContent(duplicate);
+ }
+
+ public SlotValidator getValidator()
+ {
+ return (SlotValidator)this.validator;
+ }
+
+ public void setType(Type type)
+ {
+ this.type = type;
+ if (type == Type.Recipe)
+ {
+ setReadOnly();
+ forbidInteraction();
+ }
+ }
+
+ public Type getType()
+ {
+ return this.type;
+ }
+
+ public boolean isRecipe()
+ {
+ return this.type == Type.Recipe;
+ }
+
+ public String getName()
+ {
+ return Binnie.Language.localise(BinnieCore.instance, "gui.slot." + this.unlocName);
+ }
+}
diff --git a/src/Java/binnie/core/machines/inventory/MachineSide.java b/src/Java/binnie/core/machines/inventory/MachineSide.java
new file mode 100644
index 0000000000..cba1c7417b
--- /dev/null
+++ b/src/Java/binnie/core/machines/inventory/MachineSide.java
@@ -0,0 +1,79 @@
+package binnie.core.machines.inventory;
+
+import java.util.Collection;
+import java.util.EnumSet;
+import net.minecraftforge.common.util.ForgeDirection;
+
+public class MachineSide
+{
+ private static EnumSet<ForgeDirection> All = EnumSet.of(ForgeDirection.UP, new ForgeDirection[] { ForgeDirection.DOWN, ForgeDirection.NORTH, ForgeDirection.SOUTH, ForgeDirection.EAST, ForgeDirection.WEST });
+ public static EnumSet<ForgeDirection> TopAndBottom = EnumSet.of(ForgeDirection.UP, ForgeDirection.DOWN);
+ public static EnumSet<ForgeDirection> None = EnumSet.noneOf(ForgeDirection.class);
+ public static EnumSet<ForgeDirection> Top = EnumSet.of(ForgeDirection.UP);
+ public static EnumSet<ForgeDirection> Bottom = EnumSet.of(ForgeDirection.DOWN);
+ public static EnumSet<ForgeDirection> Sides = EnumSet.of(ForgeDirection.NORTH, ForgeDirection.SOUTH, ForgeDirection.EAST, ForgeDirection.WEST);
+
+ public static String asString(Collection<ForgeDirection> sides)
+ {
+ if (sides.containsAll(All)) {
+ return "Any";
+ }
+ if (sides.isEmpty()) {
+ return "None";
+ }
+ String text = "";
+ if (sides.contains(ForgeDirection.UP))
+ {
+ if (sides.size() > 0) {
+ text = text + ", ";
+ }
+ text = text + "Up";
+ }
+ if (sides.contains(ForgeDirection.DOWN))
+ {
+ if (sides.size() > 0) {
+ text = text + ", ";
+ }
+ text = text + "Down";
+ }
+ if (sides.containsAll(Sides))
+ {
+ if (sides.size() > 0) {
+ text = text + ", ";
+ }
+ text = text + "Sides";
+ }
+ else
+ {
+ if (sides.contains(ForgeDirection.NORTH))
+ {
+ if (sides.size() > 0) {
+ text = text + ", ";
+ }
+ text = text + "North";
+ }
+ if (sides.contains(ForgeDirection.EAST))
+ {
+ if (sides.size() > 0) {
+ text = text + ", ";
+ }
+ text = text + "East";
+ }
+ if (sides.contains(ForgeDirection.SOUTH))
+ {
+ if (sides.size() > 0) {
+ text = text + ", ";
+ }
+ text = text + "South";
+ }
+ if (sides.contains(ForgeDirection.WEST))
+ {
+ if (sides.size() > 0) {
+ text = text + ", ";
+ }
+ text = text + "West";
+ }
+ }
+ return text;
+ }
+}
diff --git a/src/Java/binnie/core/machines/inventory/SetList.java b/src/Java/binnie/core/machines/inventory/SetList.java
new file mode 100644
index 0000000000..41c455a2fc
--- /dev/null
+++ b/src/Java/binnie/core/machines/inventory/SetList.java
@@ -0,0 +1,36 @@
+package binnie.core.machines.inventory;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Set;
+
+public class SetList<E>
+ extends ArrayList<E>
+ implements Set<E>
+{
+ private static final long serialVersionUID = 1277112003159980135L;
+
+ public boolean add(E e)
+ {
+ return contains(e) ? false : super.add(e);
+ }
+
+ public void add(int index, E e)
+ {
+ if (!contains(e)) {
+ super.add(index, e);
+ }
+ }
+
+ public boolean addAll(Collection<? extends E> c)
+ {
+ return addAll(size(), c);
+ }
+
+ public boolean addAll(int index, Collection<? extends E> c)
+ {
+ Collection<E> copy = new ArrayList(c);
+ copy.removeAll(this);
+ return super.addAll(index, copy);
+ }
+}
diff --git a/src/Java/binnie/core/machines/inventory/SidedAccess.java b/src/Java/binnie/core/machines/inventory/SidedAccess.java
new file mode 100644
index 0000000000..ee505891e2
--- /dev/null
+++ b/src/Java/binnie/core/machines/inventory/SidedAccess.java
@@ -0,0 +1,106 @@
+package binnie.core.machines.inventory;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import net.minecraftforge.common.util.ForgeDirection;
+
+class SidedAccess
+{
+ private Map<ForgeDirection, AccessDirection> accesses = new HashMap();
+ private AccessDirection base = AccessDirection.Both;
+ private boolean insertLocked = false;
+ private boolean extractLocked = false;
+
+ public AccessDirection getAccess(ForgeDirection side)
+ {
+ return this.accesses.containsKey(side) ? (AccessDirection)this.accesses.get(side) : this.base;
+ }
+
+ public boolean canInsert(ForgeDirection side)
+ {
+ return getAccess(side).canInsert();
+ }
+
+ public boolean canExtract(ForgeDirection side)
+ {
+ return getAccess(side).canExtract();
+ }
+
+ public boolean canAccess(ForgeDirection side)
+ {
+ return getAccess(side).canAccess();
+ }
+
+ public boolean canChangeInsert()
+ {
+ return !this.insertLocked;
+ }
+
+ public boolean canChangeExtract()
+ {
+ return !this.extractLocked;
+ }
+
+ public void forbidInsertChange()
+ {
+ this.insertLocked = true;
+ }
+
+ public void forbidExtractChange()
+ {
+ this.extractLocked = true;
+ }
+
+ public Collection<ForgeDirection> getInsertionSides()
+ {
+ List<ForgeDirection> dirs = new ArrayList();
+ for (ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) {
+ if (getAccess(dir).canInsert()) {
+ dirs.add(dir);
+ }
+ }
+ return dirs;
+ }
+
+ public Collection<ForgeDirection> getExtractionSides()
+ {
+ List<ForgeDirection> dirs = new ArrayList();
+ for (ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) {
+ if (getAccess(dir).canExtract()) {
+ dirs.add(dir);
+ }
+ }
+ return dirs;
+ }
+
+ public void setInsert(ForgeDirection side, boolean b)
+ {
+ if (getAccess(side).canInsert() != b) {
+ this.accesses.put(side, getAccess(side).changeInsert(b));
+ }
+ }
+
+ public void setExtract(ForgeDirection side, boolean b)
+ {
+ if (getAccess(side).canExtract() != b) {
+ this.accesses.put(side, getAccess(side).changeExtract(b));
+ }
+ }
+
+ public void setInsert(boolean b)
+ {
+ if (this.base.canInsert() != b) {
+ this.base = this.base.changeInsert(b);
+ }
+ }
+
+ public void setExtract(boolean b)
+ {
+ if (this.base.canExtract() != b) {
+ this.base = this.base.changeExtract(b);
+ }
+ }
+}
diff --git a/src/Java/binnie/core/machines/inventory/SlotValidator.java b/src/Java/binnie/core/machines/inventory/SlotValidator.java
new file mode 100644
index 0000000000..952ff99761
--- /dev/null
+++ b/src/Java/binnie/core/machines/inventory/SlotValidator.java
@@ -0,0 +1,68 @@
+package binnie.core.machines.inventory;
+
+import binnie.core.resource.BinnieIcon;
+import forestry.api.genetics.AlleleManager;
+import forestry.api.genetics.IAlleleRegistry;
+import net.minecraft.item.ItemStack;
+import net.minecraft.util.IIcon;
+
+public abstract class SlotValidator
+ extends Validator<ItemStack>
+{
+ public static ValidatorIcon IconBee;
+ public static ValidatorIcon IconFrame;
+ public static ValidatorIcon IconCircuit;
+ public static ValidatorIcon IconBlock;
+ private ValidatorIcon icon;
+
+ public SlotValidator(ValidatorIcon icon)
+ {
+ this.icon = icon;
+ }
+
+ public IIcon getIcon(boolean input)
+ {
+ return this.icon == null ? null : this.icon.getIcon(input).getIcon();
+ }
+
+ public static class Item
+ extends SlotValidator
+ {
+ private ItemStack target;
+
+ public Item(ItemStack target, ValidatorIcon icon)
+ {
+ super();
+ this.target = target;
+ }
+
+ public boolean isValid(ItemStack itemStack)
+ {
+ return itemStack.isItemEqual(this.target);
+ }
+
+ public String getTooltip()
+ {
+ return this.target.getDisplayName();
+ }
+ }
+
+ public static class Individual
+ extends SlotValidator
+ {
+ public Individual()
+ {
+ super();
+ }
+
+ public boolean isValid(ItemStack itemStack)
+ {
+ return AlleleManager.alleleRegistry.getIndividual(itemStack) != null;
+ }
+
+ public String getTooltip()
+ {
+ return "Breedable Individual";
+ }
+ }
+}
diff --git a/src/Java/binnie/core/machines/inventory/TankSlot.java b/src/Java/binnie/core/machines/inventory/TankSlot.java
new file mode 100644
index 0000000000..275ebfd646
--- /dev/null
+++ b/src/Java/binnie/core/machines/inventory/TankSlot.java
@@ -0,0 +1,58 @@
+package binnie.core.machines.inventory;
+
+import binnie.Binnie;
+import binnie.core.BinnieCore;
+import binnie.core.language.ManagerLanguage;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraftforge.fluids.FluidStack;
+import net.minecraftforge.fluids.FluidTank;
+import net.minecraftforge.fluids.IFluidTank;
+
+public class TankSlot
+ extends BaseSlot<FluidStack>
+{
+ public static final String NameJuice = "Juice Tank";
+ public static final String NameWater = "Water Tank";
+ public static String NameCupboard = "Cupboard Slot";
+ private FluidTank tank;
+
+ public TankSlot(int index, String name, int capacity)
+ {
+ super(index, name);
+ this.tank = new FluidTank(capacity);
+ }
+
+ public void readFromNBT(NBTTagCompound nbttagcompound)
+ {
+ FluidStack liquid = FluidStack.loadFluidStackFromNBT(nbttagcompound);
+
+ setContent(liquid);
+ }
+
+ public void writeToNBT(NBTTagCompound nbttagcompound)
+ {
+ if (getContent() != null) {
+ getContent().writeToNBT(nbttagcompound);
+ }
+ }
+
+ public FluidStack getContent()
+ {
+ return this.tank.getFluid();
+ }
+
+ public void setContent(FluidStack itemStack)
+ {
+ this.tank.setFluid(itemStack);
+ }
+
+ public IFluidTank getTank()
+ {
+ return this.tank;
+ }
+
+ public String getName()
+ {
+ return Binnie.Language.localise(BinnieCore.instance, "gui.slot." + this.unlocName);
+ }
+}
diff --git a/src/Java/binnie/core/machines/inventory/TankValidator.java b/src/Java/binnie/core/machines/inventory/TankValidator.java
new file mode 100644
index 0000000000..07c8f2f9c9
--- /dev/null
+++ b/src/Java/binnie/core/machines/inventory/TankValidator.java
@@ -0,0 +1,33 @@
+package binnie.core.machines.inventory;
+
+import binnie.Binnie;
+import binnie.core.liquid.ManagerLiquid;
+import net.minecraftforge.fluids.Fluid;
+import net.minecraftforge.fluids.FluidStack;
+
+public abstract class TankValidator
+ extends Validator<FluidStack>
+{
+ public abstract boolean isValid(FluidStack paramFluidStack);
+
+ public static class Basic
+ extends TankValidator
+ {
+ private Fluid fluid;
+
+ public Basic(String name)
+ {
+ this.fluid = Binnie.Liquid.getLiquidStack(name, 1).getFluid();
+ }
+
+ public boolean isValid(FluidStack stack)
+ {
+ return new FluidStack(this.fluid, 1).isFluidEqual(stack);
+ }
+
+ public String getTooltip()
+ {
+ return new FluidStack(this.fluid, 1).getLocalizedName();
+ }
+ }
+}
diff --git a/src/Java/binnie/core/machines/inventory/TransferHandler.java b/src/Java/binnie/core/machines/inventory/TransferHandler.java
new file mode 100644
index 0000000000..1fa4b2cac5
--- /dev/null
+++ b/src/Java/binnie/core/machines/inventory/TransferHandler.java
@@ -0,0 +1,227 @@
+package binnie.core.machines.inventory;
+
+import binnie.core.machines.Machine;
+import binnie.core.machines.power.ITankMachine;
+import net.minecraft.inventory.IInventory;
+import net.minecraft.item.ItemStack;
+import net.minecraftforge.fluids.FluidContainerRegistry;
+import net.minecraftforge.fluids.FluidContainerRegistry.FluidContainerData;
+import net.minecraftforge.fluids.FluidStack;
+import net.minecraftforge.fluids.IFluidTank;
+
+public class TransferHandler
+{
+ public static ItemStack transfer(ItemStack item, IInventory origin, IInventory destination, boolean doAdd)
+ {
+ ItemStack ret = transferItemToInventory(item, destination, doAdd);
+ if ((destination instanceof ITankMachine))
+ {
+ ret = transferContainerIntoTank(ret, origin, (ITankMachine)destination, doAdd);
+ ret = transferTankIntoContainer(ret, origin, (ITankMachine)destination, doAdd);
+ }
+ return ret;
+ }
+
+ public static ItemStack transferItemToInventory(ItemStack item, IInventory destination, boolean doAdd)
+ {
+ if ((item == null) || (destination == null)) {
+ return item;
+ }
+ ItemStack addition = item.copy();
+ for (int i = 0; i < destination.getSizeInventory(); i++)
+ {
+ addition = transferToInventory(addition, destination, new int[] { i }, doAdd, false);
+ if (addition == null) {
+ return null;
+ }
+ }
+ return addition;
+ }
+
+ public static ItemStack transferToInventory(ItemStack item, IInventory destination, int[] targetSlots, boolean doAdd, boolean ignoreValidation)
+ {
+ for (int i : targetSlots) {
+ if ((destination.isItemValidForSlot(i, item)) || (ignoreValidation))
+ {
+ if (destination.getStackInSlot(i) == null)
+ {
+ if (doAdd) {
+ destination.setInventorySlotContents(i, item.copy());
+ }
+ return null;
+ }
+ if (item.isStackable())
+ {
+ ItemStack merged = destination.getStackInSlot(i).copy();
+ ItemStack[] newStacks = mergeStacks(item.copy(), merged.copy());
+ item = newStacks[0];
+ if (doAdd) {
+ destination.setInventorySlotContents(i, newStacks[1]);
+ }
+ if (item == null) {
+ return null;
+ }
+ }
+ }
+ }
+ return item;
+ }
+
+ public static ItemStack[] mergeStacks(ItemStack itemstack, ItemStack merged)
+ {
+ if ((ItemStack.areItemStackTagsEqual(itemstack, merged)) && (itemstack.isItemEqual(merged)))
+ {
+ int space = merged.getMaxStackSize() - merged.stackSize;
+ if (space > 0) {
+ if (itemstack.stackSize > space)
+ {
+ itemstack.stackSize -= space;
+ merged.stackSize += space;
+ }
+ else if (itemstack.stackSize <= space)
+ {
+ merged.stackSize += itemstack.stackSize;
+ itemstack = null;
+ }
+ }
+ }
+ return new ItemStack[] { itemstack, merged };
+ }
+
+ public static ItemStack transferContainerIntoTank(ItemStack item, IInventory origin, ITankMachine destination, boolean doAdd)
+ {
+ if (item == null) {
+ return null;
+ }
+ IFluidTank[] tanks = destination.getTanks();
+ ItemStack stack = item.copy();
+ for (int i = 0; i < tanks.length; i++) {
+ stack = transferToTank(stack, origin, destination, i, doAdd);
+ }
+ return stack;
+ }
+
+ public static ItemStack transferTankIntoContainer(ItemStack item, IInventory origin, ITankMachine destination, boolean doAdd)
+ {
+ if (item == null) {
+ return null;
+ }
+ IFluidTank[] tanks = destination.getTanks();
+ ItemStack stack = item.copy();
+ for (int i = 0; i < tanks.length; i++) {
+ stack = transferFromTank(stack, origin, destination, i, doAdd);
+ }
+ return stack;
+ }
+
+ public static ItemStack transferToTank(ItemStack item, IInventory origin, ITankMachine destination, int tankID, boolean doAdd)
+ {
+ if (item == null) {
+ return item;
+ }
+ FluidStack containerLiquid = null;
+ FluidContainerRegistry.FluidContainerData containerLiquidData = null;
+ for (FluidContainerRegistry.FluidContainerData data : FluidContainerRegistry.getRegisteredFluidContainerData()) {
+ if (data.filledContainer.isItemEqual(item))
+ {
+ containerLiquidData = data;
+ containerLiquid = data.fluid.copy();
+ break;
+ }
+ }
+ if (containerLiquid == null) {
+ return item;
+ }
+ IFluidTank tank = destination.getTanks()[tankID];
+
+ IValidatedTankContainer validated = (IValidatedTankContainer)Machine.getInterface(IValidatedTankContainer.class, destination);
+ if ((validated != null) &&
+ (!validated.isLiquidValidForTank(containerLiquid, tankID))) {
+ return item;
+ }
+ FluidStack largeAmountOfLiquid = containerLiquid.copy();
+ largeAmountOfLiquid.amount = tank.getCapacity();
+ int amountAdded = tank.fill(largeAmountOfLiquid, false);
+
+ int numberOfContainersToAdd = amountAdded / containerLiquid.amount;
+ if (numberOfContainersToAdd > item.stackSize) {
+ numberOfContainersToAdd = item.stackSize;
+ }
+ ItemStack leftOverContainers = item.copy();
+ leftOverContainers.stackSize -= numberOfContainersToAdd;
+ if (leftOverContainers.stackSize <= 0) {
+ leftOverContainers = null;
+ }
+ ItemStack emptyContainers = containerLiquidData.emptyContainer.copy();
+ emptyContainers.stackSize = 0;
+ emptyContainers.stackSize += numberOfContainersToAdd;
+ if (emptyContainers.stackSize <= 0) {
+ emptyContainers = null;
+ }
+ ItemStack containersThatCantBeDumped = transferItemToInventory(emptyContainers, origin, false);
+ if (containersThatCantBeDumped != null) {
+ return item;
+ }
+ if (doAdd)
+ {
+ FluidStack liquidToFillTank = containerLiquid.copy();
+ liquidToFillTank.amount *= numberOfContainersToAdd;
+ tank.fill(liquidToFillTank, true);
+ transferItemToInventory(emptyContainers, origin, true);
+ }
+ return leftOverContainers;
+ }
+
+ public static ItemStack transferFromTank(ItemStack item, IInventory origin, ITankMachine destination, int tankID, boolean doAdd)
+ {
+ if (item == null) {
+ return item;
+ }
+ IFluidTank tank = destination.getTanks()[tankID];
+ FluidStack liquidInTank = tank.getFluid();
+ if (liquidInTank == null) {
+ return item;
+ }
+ FluidContainerRegistry.FluidContainerData containerLiquidData = null;
+ for (FluidContainerRegistry.FluidContainerData data : FluidContainerRegistry.getRegisteredFluidContainerData()) {
+ if ((data.emptyContainer.isItemEqual(item)) && (liquidInTank.isFluidEqual(data.fluid)))
+ {
+ containerLiquidData = data;
+ break;
+ }
+ }
+ if (containerLiquidData == null) {
+ return item;
+ }
+ int maximumExtractedLiquid = item.stackSize * containerLiquidData.fluid.amount;
+
+ FluidStack drainedLiquid = tank.drain(maximumExtractedLiquid, false);
+ int amountInTank = drainedLiquid == null ? 0 : drainedLiquid.amount;
+
+ int numberOfContainersToFill = amountInTank / containerLiquidData.fluid.amount;
+ if (numberOfContainersToFill > item.stackSize) {
+ numberOfContainersToFill = item.stackSize;
+ }
+ ItemStack leftOverContainers = item.copy();
+ leftOverContainers.stackSize -= numberOfContainersToFill;
+ if (leftOverContainers.stackSize <= 0) {
+ leftOverContainers = null;
+ }
+ ItemStack filledContainers = containerLiquidData.filledContainer.copy();
+ filledContainers.stackSize = 0;
+ filledContainers.stackSize += numberOfContainersToFill;
+ if (filledContainers.stackSize <= 0) {
+ filledContainers = null;
+ }
+ ItemStack containersThatCantBeDumped = transferItemToInventory(filledContainers, origin, false);
+ if (containersThatCantBeDumped != null) {
+ return item;
+ }
+ if (doAdd)
+ {
+ tank.drain(maximumExtractedLiquid, true);
+ transferItemToInventory(filledContainers, origin, true);
+ }
+ return leftOverContainers;
+ }
+}
diff --git a/src/Java/binnie/core/machines/inventory/Validator.java b/src/Java/binnie/core/machines/inventory/Validator.java
new file mode 100644
index 0000000000..f8dddf7fae
--- /dev/null
+++ b/src/Java/binnie/core/machines/inventory/Validator.java
@@ -0,0 +1,9 @@
+package binnie.core.machines.inventory;
+
+import binnie.core.util.IValidator;
+
+public abstract class Validator<T>
+ implements IValidator<T>
+{
+ public abstract String getTooltip();
+}
diff --git a/src/Java/binnie/core/machines/inventory/ValidatorIcon.java b/src/Java/binnie/core/machines/inventory/ValidatorIcon.java
new file mode 100644
index 0000000000..ff7f1ecb1e
--- /dev/null
+++ b/src/Java/binnie/core/machines/inventory/ValidatorIcon.java
@@ -0,0 +1,25 @@
+package binnie.core.machines.inventory;
+
+import binnie.Binnie;
+import binnie.core.AbstractMod;
+import binnie.core.resource.BinnieIcon;
+import binnie.core.resource.ManagerResource;
+import java.util.ArrayList;
+import java.util.List;
+
+public class ValidatorIcon
+{
+ private List<BinnieIcon> iconsInput = new ArrayList();
+ private List<BinnieIcon> iconsOutput = new ArrayList();
+
+ public ValidatorIcon(AbstractMod mod, String pathInput, String pathOutput)
+ {
+ this.iconsInput.add(Binnie.Resource.getItemIcon(mod, pathInput));
+ this.iconsOutput.add(Binnie.Resource.getItemIcon(mod, pathOutput));
+ }
+
+ public BinnieIcon getIcon(boolean input)
+ {
+ return input ? (BinnieIcon)this.iconsInput.get(0) : (BinnieIcon)this.iconsOutput.get(0);
+ }
+}
diff --git a/src/Java/binnie/core/machines/network/INetwork.java b/src/Java/binnie/core/machines/network/INetwork.java
new file mode 100644
index 0000000000..90b5621bed
--- /dev/null
+++ b/src/Java/binnie/core/machines/network/INetwork.java
@@ -0,0 +1,30 @@
+package binnie.core.machines.network;
+
+import cpw.mods.fml.relauncher.Side;
+import java.util.Map;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.nbt.NBTTagCompound;
+
+public abstract interface INetwork
+{
+ public static abstract interface SendGuiNBT
+ {
+ public abstract void sendGuiNBT(Map<String, NBTTagCompound> paramMap);
+ }
+
+ public static abstract interface TilePacketSync
+ {
+ public abstract void syncToNBT(NBTTagCompound paramNBTTagCompound);
+
+ public abstract void syncFromNBT(NBTTagCompound paramNBTTagCompound);
+ }
+
+ public static abstract interface RecieveGuiNBT
+ {
+ public abstract void recieveGuiNBT(Side paramSide, EntityPlayer paramEntityPlayer, String paramString, NBTTagCompound paramNBTTagCompound);
+ }
+
+ public static abstract interface GuiNBT
+ extends INetwork.RecieveGuiNBT, INetwork.SendGuiNBT
+ {}
+}
diff --git a/src/Java/binnie/core/machines/power/ComponentPowerReceptor.java b/src/Java/binnie/core/machines/power/ComponentPowerReceptor.java
new file mode 100644
index 0000000000..217af86c43
--- /dev/null
+++ b/src/Java/binnie/core/machines/power/ComponentPowerReceptor.java
@@ -0,0 +1,191 @@
+package binnie.core.machines.power;
+
+import binnie.core.Mods;
+import binnie.core.Mods.Mod;
+import binnie.core.machines.IMachine;
+import binnie.core.machines.MachineComponent;
+import binnie.core.machines.component.IBuildcraft.TriggerProvider;
+import binnie.core.machines.component.IInteraction.ChunkUnload;
+import binnie.core.machines.component.IInteraction.Invalidation;
+import binnie.core.triggers.TriggerData;
+import binnie.core.triggers.TriggerPower;
+import cpw.mods.fml.common.Optional.Interface;
+import cpw.mods.fml.common.Optional.Method;
+import cpw.mods.fml.common.eventhandler.EventBus;
+import ic2.api.energy.event.EnergyTileLoadEvent;
+import ic2.api.energy.event.EnergyTileUnloadEvent;
+import ic2.api.energy.tile.IEnergyTile;
+import java.util.LinkedList;
+import java.util.List;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.tileentity.TileEntity;
+import net.minecraftforge.common.MinecraftForge;
+import net.minecraftforge.common.util.ForgeDirection;
+
+@Optional.Interface(iface="binnie.core.machines.component.IBuildcraft.TriggerProvider", modid="BuildCraft|Silicon")
+public class ComponentPowerReceptor
+ extends MachineComponent
+ implements IPoweredMachine, IBuildcraft.TriggerProvider, IInteraction.ChunkUnload, IInteraction.Invalidation
+{
+ private boolean registeredToIC2EnergyNet = false;
+ float previousPower = 0.0F;
+ LinkedList<Float> inputs = new LinkedList();
+ static final int inputAverageTicks = 20;
+ private PowerInterface container;
+
+ public ComponentPowerReceptor(IMachine machine)
+ {
+ this(machine, 1000);
+ }
+
+ public ComponentPowerReceptor(IMachine machine, int storage)
+ {
+ super(machine);
+ this.container = new PowerInterface(storage);
+ if (!this.registeredToIC2EnergyNet) {
+ addToEnergyNet();
+ }
+ }
+
+ public void readFromNBT(NBTTagCompound nbttagcompound)
+ {
+ super.readFromNBT(nbttagcompound);
+ this.container.readFromNBT(nbttagcompound);
+ if (!this.registeredToIC2EnergyNet) {
+ addToEnergyNet();
+ }
+ }
+
+ public void writeToNBT(NBTTagCompound nbttagcompound)
+ {
+ super.writeToNBT(nbttagcompound);
+ this.container.writeToNBT(nbttagcompound);
+ }
+
+ public void onUpdate()
+ {
+ if ((!this.registeredToIC2EnergyNet) && (!getMachine().getTileEntity().isInvalid())) {
+ addToEnergyNet();
+ }
+ }
+
+ public PowerInfo getPowerInfo()
+ {
+ return new PowerInfo(this, 0.0F);
+ }
+
+ @Optional.Method(modid="BuildCraft|Silicon")
+ public final void getTriggers(List<TriggerData> triggers)
+ {
+ triggers.add(TriggerPower.powerNone(this));
+ triggers.add(TriggerPower.powerLow(this));
+ triggers.add(TriggerPower.powerMedium(this));
+ triggers.add(TriggerPower.powerHigh(this));
+ triggers.add(TriggerPower.powerFull(this));
+ }
+
+ @Optional.Method(modid="IC2")
+ public double getDemandedEnergy()
+ {
+ return this.container.getEnergySpace(PowerSystem.EU);
+ }
+
+ @Optional.Method(modid="IC2")
+ public int getSinkTier()
+ {
+ return 1;
+ }
+
+ @Optional.Method(modid="IC2")
+ public double injectEnergy(ForgeDirection directionFrom, double amount, double voltage)
+ {
+ this.container.addEnergy(PowerSystem.EU, amount, true);
+ return 0.0D;
+ }
+
+ @Optional.Method(modid="IC2")
+ public boolean acceptsEnergyFrom(TileEntity emitter, ForgeDirection direction)
+ {
+ return acceptsPowerSystem(PowerSystem.EU);
+ }
+
+ public int receiveEnergy(ForgeDirection from, int maxReceive, boolean simulate)
+ {
+ return (int)this.container.addEnergy(PowerSystem.RF, maxReceive, !simulate);
+ }
+
+ public int extractEnergy(ForgeDirection from, int maxExtract, boolean simulate)
+ {
+ return 0;
+ }
+
+ public int getEnergyStored(ForgeDirection from)
+ {
+ return (int)this.container.getEnergy(PowerSystem.RF);
+ }
+
+ public int getMaxEnergyStored(ForgeDirection from)
+ {
+ return (int)this.container.getCapacity(PowerSystem.RF);
+ }
+
+ public boolean canConnectEnergy(ForgeDirection from)
+ {
+ boolean can = acceptsPowerSystem(PowerSystem.RF);
+ return can;
+ }
+
+ public PowerInterface getInterface()
+ {
+ return this.container;
+ }
+
+ private boolean acceptsPowerSystem(PowerSystem system)
+ {
+ return true;
+ }
+
+ public void onInvalidation()
+ {
+ removeFromEnergyNet();
+ }
+
+ public void onChunkUnload()
+ {
+ removeFromEnergyNet();
+ }
+
+ private void addToEnergyNet()
+ {
+ if (getMachine().getWorld() == null) {
+ return;
+ }
+ if (Mods.IC2.active()) {
+ do_addToEnergyNet();
+ }
+ }
+
+ private void removeFromEnergyNet()
+ {
+ if (getMachine().getWorld() == null) {
+ return;
+ }
+ if (Mods.IC2.active()) {
+ do_removeFromEnergyNet();
+ }
+ }
+
+ @Optional.Method(modid="IC2")
+ private void do_addToEnergyNet()
+ {
+ MinecraftForge.EVENT_BUS.post(new EnergyTileLoadEvent((IEnergyTile)getMachine().getTileEntity()));
+ this.registeredToIC2EnergyNet = true;
+ }
+
+ @Optional.Method(modid="IC2")
+ private void do_removeFromEnergyNet()
+ {
+ MinecraftForge.EVENT_BUS.post(new EnergyTileUnloadEvent((IEnergyTile)getMachine().getTileEntity()));
+ this.registeredToIC2EnergyNet = false;
+ }
+}
diff --git a/src/Java/binnie/core/machines/power/ComponentProcess.java b/src/Java/binnie/core/machines/power/ComponentProcess.java
new file mode 100644
index 0000000000..b49e919e2d
--- /dev/null
+++ b/src/Java/binnie/core/machines/power/ComponentProcess.java
@@ -0,0 +1,90 @@
+package binnie.core.machines.power;
+
+import binnie.core.machines.IMachine;
+import net.minecraft.nbt.NBTTagCompound;
+
+public abstract class ComponentProcess
+ extends ComponentProcessIndefinate
+ implements IProcessTimed
+{
+ private float progressAmount = 0.0F;
+
+ public ComponentProcess(IMachine machine)
+ {
+ super(machine, 0.0F);
+ }
+
+ public float getEnergyPerTick()
+ {
+ return getProcessEnergy() / getProcessLength();
+ }
+
+ public float getProgressPerTick()
+ {
+ return 100.0F / getProcessLength();
+ }
+
+ protected void onStartTask()
+ {
+ this.progressAmount += 0.01F;
+ }
+
+ protected void onCancelTask()
+ {
+ this.progressAmount = 0.0F;
+ }
+
+ public void onUpdate()
+ {
+ super.onUpdate();
+ if (this.progressAmount >= 100.0F)
+ {
+ onFinishTask();
+ this.progressAmount = 0.0F;
+ }
+ }
+
+ public void alterProgress(float f)
+ {
+ this.progressAmount += f;
+ }
+
+ public void setProgress(float f)
+ {
+ this.progressAmount = f;
+ }
+
+ protected void progressTick()
+ {
+ super.progressTick();
+ alterProgress(getProgressPerTick());
+ }
+
+ public boolean inProgress()
+ {
+ return this.progressAmount > 0.0F;
+ }
+
+ public float getProgress()
+ {
+ return this.progressAmount;
+ }
+
+ protected void onFinishTask() {}
+
+ public void readFromNBT(NBTTagCompound nbt)
+ {
+ super.readFromNBT(nbt);
+ this.progressAmount = nbt.getFloat("progress");
+ }
+
+ public void writeToNBT(NBTTagCompound nbt)
+ {
+ super.writeToNBT(nbt);
+ nbt.setFloat("progress", this.progressAmount);
+ }
+
+ public abstract int getProcessLength();
+
+ public abstract int getProcessEnergy();
+}
diff --git a/src/Java/binnie/core/machines/power/ComponentProcessIndefinate.java b/src/Java/binnie/core/machines/power/ComponentProcessIndefinate.java
new file mode 100644
index 0000000000..f1442107f4
--- /dev/null
+++ b/src/Java/binnie/core/machines/power/ComponentProcessIndefinate.java
@@ -0,0 +1,120 @@
+package binnie.core.machines.power;
+
+import binnie.core.machines.IMachine;
+import binnie.core.machines.MachineComponent;
+import binnie.core.machines.MachineUtil;
+import binnie.core.machines.network.INetwork.TilePacketSync;
+import net.minecraft.nbt.NBTTagCompound;
+
+public abstract class ComponentProcessIndefinate
+ extends MachineComponent
+ implements IProcess, INetwork.TilePacketSync
+{
+ private float energyPerTick = 0.1F;
+ private boolean inProgress;
+
+ public void syncFromNBT(NBTTagCompound nbt)
+ {
+ this.inProgress = nbt.getBoolean("progress");
+ }
+
+ public void syncToNBT(NBTTagCompound nbt)
+ {
+ nbt.setBoolean("progress", this.inProgress);
+ }
+
+ public ComponentProcessIndefinate(IMachine machine, float energyPerTick)
+ {
+ super(machine);
+ this.energyPerTick = energyPerTick;
+ }
+
+ protected final IPoweredMachine getPower()
+ {
+ return (IPoweredMachine)getMachine().getInterface(IPoweredMachine.class);
+ }
+
+ public float getEnergyPerTick()
+ {
+ return this.energyPerTick;
+ }
+
+ private float actionPauseProcess = 0.0F;
+ private float actionCancelTask = 0.0F;
+
+ public void onUpdate()
+ {
+ float energyAvailable = (float)getPower().getInterface().useEnergy(PowerSystem.RF, getEnergyPerTick(), false);
+ if (canWork() == null)
+ {
+ if ((!isInProgress()) && (canProgress() == null))
+ {
+ onStartTask();
+ }
+ else if (canProgress() == null)
+ {
+ progressTick();
+ onTickTask();
+ }
+ }
+ else if (isInProgress()) {
+ onCancelTask();
+ }
+ if (this.actionPauseProcess > 0.0F) {
+ this.actionPauseProcess -= 1.0F;
+ }
+ if (this.actionCancelTask > 0.0F) {
+ this.actionCancelTask -= 1.0F;
+ }
+ super.onUpdate();
+ if (this.inProgress != inProgress())
+ {
+ this.inProgress = inProgress();
+ getUtil().refreshBlock();
+ }
+ }
+
+ protected void progressTick()
+ {
+ getPower().getInterface().useEnergy(PowerSystem.RF, getEnergyPerTick(), true);
+ }
+
+ public ErrorState canWork()
+ {
+ return this.actionCancelTask == 0.0F ? null : new ErrorState("Task Cancelled", "Cancelled by Buildcraft Gate");
+ }
+
+ public ErrorState canProgress()
+ {
+ if (this.actionPauseProcess != 0.0F) {
+ return new ErrorState("Process Paused", "Paused by Buildcraft Gate");
+ }
+ return getPower().getInterface().getEnergy(PowerSystem.RF) < getEnergyPerTick() ? new ErrorState.InsufficientPower() : null;
+ }
+
+ public final boolean isInProgress()
+ {
+ return this.inProgress;
+ }
+
+ int clientEnergyPerSecond = 0;
+ int clientInProgress;
+
+ protected abstract boolean inProgress();
+
+ protected void onCancelTask() {}
+
+ protected void onStartTask() {}
+
+ protected void onTickTask() {}
+
+ public String getTooltip()
+ {
+ return "Processing";
+ }
+
+ public final ProcessInfo getInfo()
+ {
+ return new ProcessInfo(this);
+ }
+}
diff --git a/src/Java/binnie/core/machines/power/ComponentProcessSetCost.java b/src/Java/binnie/core/machines/power/ComponentProcessSetCost.java
new file mode 100644
index 0000000000..b269763136
--- /dev/null
+++ b/src/Java/binnie/core/machines/power/ComponentProcessSetCost.java
@@ -0,0 +1,27 @@
+package binnie.core.machines.power;
+
+import binnie.core.machines.IMachine;
+
+public class ComponentProcessSetCost
+ extends ComponentProcess
+{
+ private int processLength;
+ private int processEnergy;
+
+ public ComponentProcessSetCost(IMachine machine, int rfCost, int timePeriod)
+ {
+ super(machine);
+ this.processLength = timePeriod;
+ this.processEnergy = rfCost;
+ }
+
+ public int getProcessLength()
+ {
+ return this.processLength;
+ }
+
+ public int getProcessEnergy()
+ {
+ return this.processEnergy;
+ }
+}
diff --git a/src/Java/binnie/core/machines/power/ErrorState.java b/src/Java/binnie/core/machines/power/ErrorState.java
new file mode 100644
index 0000000000..03ed4de1f0
--- /dev/null
+++ b/src/Java/binnie/core/machines/power/ErrorState.java
@@ -0,0 +1,187 @@
+package binnie.core.machines.power;
+
+import forestry.api.core.INBTTagable;
+import net.minecraft.nbt.NBTTagCompound;
+
+public class ErrorState
+ implements INBTTagable
+{
+ private String name = "";
+ private String desc = "";
+ private int[] data = new int[0];
+ private boolean progress = false;
+
+ public ErrorState(String name, String desc)
+ {
+ this.name = name;
+ this.desc = desc;
+ }
+
+ public ErrorState(String name, String desc, int[] data)
+ {
+ this.name = name;
+ this.desc = desc;
+ this.data = data;
+ }
+
+ public String toString()
+ {
+ return this.name;
+ }
+
+ public String getTooltip()
+ {
+ return this.desc;
+ }
+
+ public int[] getData()
+ {
+ return this.data;
+ }
+
+ public boolean isProgress()
+ {
+ return this.progress;
+ }
+
+ public void setIsProgress()
+ {
+ this.progress = true;
+ }
+
+ public static class Item
+ extends ErrorState
+ {
+ public Item(String name, String desc, int[] slots)
+ {
+ super(desc, slots);
+ }
+ }
+
+ public static class Tank
+ extends ErrorState
+ {
+ public Tank(String name, String desc, int[] slots)
+ {
+ super(desc, slots);
+ }
+ }
+
+ public static class NoItem
+ extends ErrorState.Item
+ {
+ public NoItem(String desc, int slot)
+ {
+ this(desc, new int[] { slot });
+ }
+
+ public NoItem(String desc, int[] slots)
+ {
+ super(desc, slots);
+ }
+ }
+
+ public static class InvalidItem
+ extends ErrorState.Item
+ {
+ public InvalidItem(String desc, int slot)
+ {
+ this("Invalid Item", desc, slot);
+ }
+
+ public InvalidItem(String name, String desc, int slot)
+ {
+ super(desc, new int[] { slot });
+ }
+ }
+
+ public static class NoSpace
+ extends ErrorState.Item
+ {
+ public NoSpace(String desc, int[] slots)
+ {
+ super(desc, slots);
+ }
+ }
+
+ public static class InsufficientPower
+ extends ErrorState
+ {
+ public InsufficientPower()
+ {
+ super("Not enough power to operate");
+ }
+ }
+
+ public static class TankSpace
+ extends ErrorState.Tank
+ {
+ public TankSpace(String desc, int tank)
+ {
+ super(desc, new int[] { tank });
+ }
+ }
+
+ public static class InsufficientLiquid
+ extends ErrorState.Tank
+ {
+ public InsufficientLiquid(String desc, int tank)
+ {
+ super(desc, new int[] { tank });
+ }
+ }
+
+ public static class InvalidRecipe
+ extends ErrorState.Item
+ {
+ public InvalidRecipe(String string, int[] slots)
+ {
+ super(string, slots);
+ }
+ }
+
+ public void readFromNBT(NBTTagCompound nbt)
+ {
+ this.name = nbt.getString("name");
+ this.desc = nbt.getString("desc");
+ this.data = nbt.getIntArray("data");
+ this.itemError = nbt.getBoolean("item");
+ this.tankError = nbt.getBoolean("tank");
+ this.powerError = nbt.getBoolean("power");
+ }
+
+ public void writeToNBT(NBTTagCompound nbt)
+ {
+ nbt.setString("name", toString());
+ nbt.setString("desc", getTooltip());
+ nbt.setIntArray("data", this.data);
+ if (isItemError()) {
+ nbt.setBoolean("item", true);
+ }
+ if (isTankError()) {
+ nbt.setBoolean("tank", true);
+ }
+ if (isPowerError()) {
+ nbt.setBoolean("power", true);
+ }
+ }
+
+ private boolean itemError = false;
+ private boolean tankError = false;
+ private boolean powerError = false;
+
+ public boolean isItemError()
+ {
+ return (this.itemError) || ((this instanceof Item));
+ }
+
+ public boolean isTankError()
+ {
+ return (this.tankError) || ((this instanceof Tank));
+ }
+
+ public boolean isPowerError()
+ {
+ return (this.powerError) || ((this instanceof InsufficientPower));
+ }
+}
diff --git a/src/Java/binnie/core/machines/power/IErrorStateSource.java b/src/Java/binnie/core/machines/power/IErrorStateSource.java
new file mode 100644
index 0000000000..bd2cd87d24
--- /dev/null
+++ b/src/Java/binnie/core/machines/power/IErrorStateSource.java
@@ -0,0 +1,8 @@
+package binnie.core.machines.power;
+
+public abstract interface IErrorStateSource
+{
+ public abstract ErrorState canWork();
+
+ public abstract ErrorState canProgress();
+}
diff --git a/src/Java/binnie/core/machines/power/IPoweredMachine.java b/src/Java/binnie/core/machines/power/IPoweredMachine.java
new file mode 100644
index 0000000000..b5e57aeff0
--- /dev/null
+++ b/src/Java/binnie/core/machines/power/IPoweredMachine.java
@@ -0,0 +1,14 @@
+package binnie.core.machines.power;
+
+import cofh.api.energy.IEnergyHandler;
+import cpw.mods.fml.common.Optional.Interface;
+import ic2.api.energy.tile.IEnergySink;
+
+@Optional.Interface(iface="ic2.api.energy.tile.IEnergySink", modid="IC2")
+public abstract interface IPoweredMachine
+ extends IEnergySink, IEnergyHandler
+{
+ public abstract PowerInfo getPowerInfo();
+
+ public abstract PowerInterface getInterface();
+}
diff --git a/src/Java/binnie/core/machines/power/IProcess.java b/src/Java/binnie/core/machines/power/IProcess.java
new file mode 100644
index 0000000000..83337cd980
--- /dev/null
+++ b/src/Java/binnie/core/machines/power/IProcess.java
@@ -0,0 +1,13 @@
+package binnie.core.machines.power;
+
+public abstract interface IProcess
+ extends IErrorStateSource
+{
+ public abstract float getEnergyPerTick();
+
+ public abstract String getTooltip();
+
+ public abstract boolean isInProgress();
+
+ public abstract ProcessInfo getInfo();
+}
diff --git a/src/Java/binnie/core/machines/power/IProcessTimed.java b/src/Java/binnie/core/machines/power/IProcessTimed.java
new file mode 100644
index 0000000000..1489d8837f
--- /dev/null
+++ b/src/Java/binnie/core/machines/power/IProcessTimed.java
@@ -0,0 +1,13 @@
+package binnie.core.machines.power;
+
+abstract interface IProcessTimed
+ extends IProcess, IErrorStateSource
+{
+ public abstract int getProcessLength();
+
+ public abstract int getProcessEnergy();
+
+ public abstract float getProgress();
+
+ public abstract float getProgressPerTick();
+}
diff --git a/src/Java/binnie/core/machines/power/ITankMachine.java b/src/Java/binnie/core/machines/power/ITankMachine.java
new file mode 100644
index 0000000000..fa92845cb7
--- /dev/null
+++ b/src/Java/binnie/core/machines/power/ITankMachine.java
@@ -0,0 +1,20 @@
+package binnie.core.machines.power;
+
+import binnie.core.machines.inventory.IValidatedTankContainer;
+import binnie.core.machines.inventory.TankSlot;
+import net.minecraftforge.fluids.IFluidHandler;
+import net.minecraftforge.fluids.IFluidTank;
+
+public abstract interface ITankMachine
+ extends IFluidHandler, IValidatedTankContainer
+{
+ public abstract TankInfo[] getTankInfos();
+
+ public abstract IFluidTank[] getTanks();
+
+ public abstract TankSlot addTank(int paramInt1, String paramString, int paramInt2);
+
+ public abstract IFluidTank getTank(int paramInt);
+
+ public abstract TankSlot getTankSlot(int paramInt);
+}
diff --git a/src/Java/binnie/core/machines/power/PowerInfo.java b/src/Java/binnie/core/machines/power/PowerInfo.java
new file mode 100644
index 0000000000..2c57f2c898
--- /dev/null
+++ b/src/Java/binnie/core/machines/power/PowerInfo.java
@@ -0,0 +1,41 @@
+package binnie.core.machines.power;
+
+import forestry.api.core.INBTTagable;
+import net.minecraft.nbt.NBTTagCompound;
+
+public class PowerInfo
+ implements INBTTagable
+{
+ private float currentEnergy = 0.0F;
+ private float maxEnergy = 0.0F;
+
+ public PowerInfo(IPoweredMachine machine, float currentInput)
+ {
+ this.currentEnergy = ((float)machine.getInterface().getEnergy(PowerSystem.RF));
+ this.maxEnergy = ((float)machine.getInterface().getCapacity(PowerSystem.RF));
+ }
+
+ public PowerInfo() {}
+
+ public int getStoredEnergy()
+ {
+ return (int)this.currentEnergy;
+ }
+
+ public int getMaxEnergy()
+ {
+ return (int)this.maxEnergy;
+ }
+
+ public void readFromNBT(NBTTagCompound nbttagcompound)
+ {
+ this.currentEnergy = nbttagcompound.getInteger("current");
+ this.maxEnergy = nbttagcompound.getInteger("max");
+ }
+
+ public void writeToNBT(NBTTagCompound nbttagcompound)
+ {
+ nbttagcompound.setInteger("current", getStoredEnergy());
+ nbttagcompound.setInteger("max", getMaxEnergy());
+ }
+}
diff --git a/src/Java/binnie/core/machines/power/PowerInterface.java b/src/Java/binnie/core/machines/power/PowerInterface.java
new file mode 100644
index 0000000000..e7e91bc18a
--- /dev/null
+++ b/src/Java/binnie/core/machines/power/PowerInterface.java
@@ -0,0 +1,90 @@
+package binnie.core.machines.power;
+
+import forestry.api.core.INBTTagable;
+import net.minecraft.nbt.NBTTagCompound;
+
+public class PowerInterface
+ implements INBTTagable
+{
+ private int capacity;
+ private int energy;
+
+ public PowerInterface(int capacity)
+ {
+ this.capacity = (capacity * 100);
+ this.energy = 0;
+ }
+
+ public int getCapacity()
+ {
+ return this.capacity;
+ }
+
+ public int getEnergy()
+ {
+ return this.energy;
+ }
+
+ public int addEnergy(int amount, boolean shouldDo)
+ {
+ int added = Math.min(getEnergySpace(), amount);
+ if (shouldDo) {
+ this.energy += added;
+ }
+ return added;
+ }
+
+ public int useEnergy(int amount, boolean simulate)
+ {
+ int added = Math.min(getEnergy(), amount);
+ if (simulate) {
+ this.energy -= added;
+ }
+ return added;
+ }
+
+ public int getEnergySpace()
+ {
+ return getCapacity() - getEnergy();
+ }
+
+ public double addEnergy(PowerSystem unit, double amount, boolean simulate)
+ {
+ return unit.convertTo(addEnergy(unit.convertFrom(amount), simulate));
+ }
+
+ public double useEnergy(PowerSystem unit, double amount, boolean simulate)
+ {
+ return unit.convertTo(useEnergy(unit.convertFrom(amount), simulate));
+ }
+
+ public double getEnergy(PowerSystem unit)
+ {
+ return unit.convertTo(getEnergy());
+ }
+
+ public double getCapacity(PowerSystem unit)
+ {
+ return unit.convertTo(getCapacity());
+ }
+
+ public double getEnergySpace(PowerSystem unit)
+ {
+ return unit.convertTo(getEnergySpace());
+ }
+
+ public void readFromNBT(NBTTagCompound nbt)
+ {
+ this.energy = nbt.getInteger("Energy");
+ if (this.energy > this.capacity) {
+ this.energy = this.capacity;
+ } else if (this.energy < 0) {
+ this.energy = 0;
+ }
+ }
+
+ public void writeToNBT(NBTTagCompound nbt)
+ {
+ nbt.setInteger("Energy", getEnergy());
+ }
+}
diff --git a/src/Java/binnie/core/machines/power/PowerSystem.java b/src/Java/binnie/core/machines/power/PowerSystem.java
new file mode 100644
index 0000000000..58c1cf9709
--- /dev/null
+++ b/src/Java/binnie/core/machines/power/PowerSystem.java
@@ -0,0 +1,44 @@
+package binnie.core.machines.power;
+
+import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.NBTTagCompound;
+
+public enum PowerSystem
+{
+ MJ(100.0D), RF(10.0D), EU(40.0D);
+
+ double conversion;
+
+ private PowerSystem(double conversion)
+ {
+ this.conversion = conversion;
+ }
+
+ public double convertTo(int value)
+ {
+ return value / this.conversion;
+ }
+
+ public int convertFrom(double value)
+ {
+ return (int)(value * this.conversion);
+ }
+
+ public static PowerSystem get(int i)
+ {
+ return values()[(i % values().length)];
+ }
+
+ public String getUnitName()
+ {
+ return name();
+ }
+
+ public ItemStack saveTo(ItemStack stack)
+ {
+ NBTTagCompound tag = stack.hasTagCompound() ? stack.getTagCompound() : new NBTTagCompound();
+ tag.setByte("power-system", (byte)ordinal());
+ stack.setTagCompound(tag);
+ return stack;
+ }
+}
diff --git a/src/Java/binnie/core/machines/power/ProcessInfo.java b/src/Java/binnie/core/machines/power/ProcessInfo.java
new file mode 100644
index 0000000000..7b4a9bd8a4
--- /dev/null
+++ b/src/Java/binnie/core/machines/power/ProcessInfo.java
@@ -0,0 +1,67 @@
+package binnie.core.machines.power;
+
+import forestry.api.core.INBTTagable;
+import net.minecraft.nbt.NBTTagCompound;
+
+public class ProcessInfo
+ implements INBTTagable
+{
+ private float currentProgress = 0.0F;
+ private int processEnergy = 0;
+ private int processTime = 0;
+ private float energyPerTick = 0.0F;
+
+ public ProcessInfo(IProcess process)
+ {
+ this.energyPerTick = process.getEnergyPerTick();
+ if ((process instanceof IProcessTimed))
+ {
+ IProcessTimed time = (IProcessTimed)process;
+ this.currentProgress = time.getProgress();
+ this.processEnergy = time.getProcessEnergy();
+ this.processTime = time.getProcessLength();
+ }
+ else
+ {
+ this.currentProgress = (process.isInProgress() ? 100.0F : 0.0F);
+ }
+ }
+
+ public ProcessInfo() {}
+
+ public float getCurrentProgress()
+ {
+ return this.currentProgress;
+ }
+
+ public int getProcessEnergy()
+ {
+ return this.processEnergy;
+ }
+
+ public int getProcessTime()
+ {
+ return this.processTime;
+ }
+
+ public float getEnergyPerTick()
+ {
+ return this.energyPerTick;
+ }
+
+ public void readFromNBT(NBTTagCompound nbttagcompound)
+ {
+ this.energyPerTick = nbttagcompound.getFloat("ept");
+ this.processEnergy = nbttagcompound.getInteger("e");
+ this.processTime = nbttagcompound.getInteger("t");
+ this.currentProgress = nbttagcompound.getFloat("p");
+ }
+
+ public void writeToNBT(NBTTagCompound nbttagcompound)
+ {
+ nbttagcompound.setFloat("ept", this.energyPerTick);
+ nbttagcompound.setFloat("p", this.currentProgress);
+ nbttagcompound.setInteger("e", this.processEnergy);
+ nbttagcompound.setInteger("t", this.processTime);
+ }
+}
diff --git a/src/Java/binnie/core/machines/power/TankInfo.java b/src/Java/binnie/core/machines/power/TankInfo.java
new file mode 100644
index 0000000000..d9e0b350d7
--- /dev/null
+++ b/src/Java/binnie/core/machines/power/TankInfo.java
@@ -0,0 +1,76 @@
+package binnie.core.machines.power;
+
+import forestry.api.core.INBTTagable;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.util.IIcon;
+import net.minecraftforge.fluids.Fluid;
+import net.minecraftforge.fluids.FluidStack;
+import net.minecraftforge.fluids.IFluidTank;
+
+public class TankInfo
+ implements INBTTagable
+{
+ public FluidStack liquid;
+ private float capacity = 0.0F;
+
+ public TankInfo(IFluidTank tank)
+ {
+ this.capacity = tank.getCapacity();
+ this.liquid = tank.getFluid();
+ }
+
+ public TankInfo() {}
+
+ public float getAmount()
+ {
+ return this.liquid == null ? 0.0F : this.liquid.amount;
+ }
+
+ public float getCapacity()
+ {
+ return this.capacity;
+ }
+
+ public boolean isEmpty()
+ {
+ return this.liquid == null;
+ }
+
+ public IIcon getIcon()
+ {
+ return this.liquid.getFluid().getStillIcon();
+ }
+
+ public String getName()
+ {
+ return this.liquid == null ? "" : this.liquid.getFluid().getLocalizedName();
+ }
+
+ public void readFromNBT(NBTTagCompound nbt)
+ {
+ this.capacity = nbt.getInteger("capacity");
+ if (nbt.hasKey("liquid")) {
+ this.liquid = FluidStack.loadFluidStackFromNBT(nbt.getCompoundTag("liquid"));
+ }
+ }
+
+ public void writeToNBT(NBTTagCompound nbt)
+ {
+ nbt.setInteger("capacity", (int)getCapacity());
+ if (this.liquid == null) {
+ return;
+ }
+ NBTTagCompound tag = new NBTTagCompound();
+ this.liquid.writeToNBT(tag);
+ nbt.setTag("liquid", tag);
+ }
+
+ public static TankInfo[] get(ITankMachine machine)
+ {
+ TankInfo[] info = new TankInfo[machine.getTanks().length];
+ for (int i = 0; i < info.length; i++) {
+ info[i] = new TankInfo(machine.getTanks()[i]);
+ }
+ return info;
+ }
+}
diff --git a/src/Java/binnie/core/machines/storage/Compartment.java b/src/Java/binnie/core/machines/storage/Compartment.java
new file mode 100644
index 0000000000..d7694e2502
--- /dev/null
+++ b/src/Java/binnie/core/machines/storage/Compartment.java
@@ -0,0 +1,65 @@
+package binnie.core.machines.storage;
+
+import binnie.core.BinnieCore;
+import binnie.core.machines.IMachineType;
+import binnie.core.machines.Machine;
+import binnie.core.machines.MachineGroup;
+import binnie.core.machines.MachinePackage;
+import binnie.core.machines.TileEntityMachine;
+import binnie.core.resource.BinnieResource;
+import binnie.core.resource.IBinnieTexture;
+import net.minecraft.client.renderer.RenderBlocks;
+import net.minecraft.item.ItemStack;
+import net.minecraft.tileentity.TileEntity;
+
+ enum Compartment
+ implements IMachineType
+{
+ Compartment(StandardCompartment.PackageCompartment.class), CompartmentCopper(StandardCompartment.PackageCompartmentCopper.class), CompartmentBronze(StandardCompartment.PackageCompartmentBronze.class), CompartmentIron(StandardCompartment.PackageCompartmentIron.class), CompartmentGold(StandardCompartment.PackageCompartmentGold.class), CompartmentDiamond(StandardCompartment.PackageCompartmentDiamond.class);
+
+ Class<? extends MachinePackage> clss;
+
+ private Compartment(Class<? extends MachinePackage> clss)
+ {
+ this.clss = clss;
+ }
+
+ public Class<? extends MachinePackage> getPackageClass()
+ {
+ return this.clss;
+ }
+
+ public static abstract class PackageCompartment
+ extends MachinePackage
+ {
+ private BinnieResource renderTexture;
+
+ protected PackageCompartment(String uid, IBinnieTexture renderTexture)
+ {
+ super(false);
+ this.renderTexture = renderTexture.getTexture();
+ }
+
+ public TileEntity createTileEntity()
+ {
+ return new TileEntityMachine(this);
+ }
+
+ public void register() {}
+
+ public void renderMachine(Machine machine, double x, double y, double z, float var8, RenderBlocks renderer)
+ {
+ MachineRendererCompartment.instance.renderMachine(machine, 16777215, this.renderTexture, x, y, z, var8);
+ }
+ }
+
+ public boolean isActive()
+ {
+ return true;
+ }
+
+ public ItemStack get(int i)
+ {
+ return new ItemStack(BinnieCore.packageCompartment.getBlock(), i, ordinal());
+ }
+}
diff --git a/src/Java/binnie/core/machines/storage/CompartmentTab.java b/src/Java/binnie/core/machines/storage/CompartmentTab.java
new file mode 100644
index 0000000000..025f73db31
--- /dev/null
+++ b/src/Java/binnie/core/machines/storage/CompartmentTab.java
@@ -0,0 +1,77 @@
+package binnie.core.machines.storage;
+
+import binnie.craftgui.minecraft.EnumColor;
+import forestry.api.core.INBTTagable;
+import net.minecraft.init.Items;
+import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.NBTTagCompound;
+
+class CompartmentTab
+ implements INBTTagable
+{
+ private String name;
+ private ItemStack icon;
+ private EnumColor color;
+ private int id;
+
+ public CompartmentTab(int id)
+ {
+ this.name = "";
+ this.icon = new ItemStack(Items.paper);
+ this.color = EnumColor.White;
+ this.id = id;
+ }
+
+ public void readFromNBT(NBTTagCompound nbt)
+ {
+ this.name = nbt.getString("name");
+ this.icon = ItemStack.loadItemStackFromNBT(nbt.getCompoundTag("icon"));
+ this.color = EnumColor.values()[nbt.getByte("color")];
+ this.id = nbt.getByte("id");
+ }
+
+ public void writeToNBT(NBTTagCompound nbt)
+ {
+ nbt.setString("name", this.name);
+ NBTTagCompound n = new NBTTagCompound();
+ this.icon.writeToNBT(n);
+ nbt.setTag("icon", n);
+ nbt.setByte("color", (byte)this.color.ordinal());
+ nbt.setByte("id", (byte)this.id);
+ }
+
+ public String getName()
+ {
+ return this.name;
+ }
+
+ public ItemStack getIcon()
+ {
+ return this.icon;
+ }
+
+ public EnumColor getColor()
+ {
+ return this.color;
+ }
+
+ public int getId()
+ {
+ return this.id;
+ }
+
+ public void setName(String name)
+ {
+ this.name = (name == null ? "" : name);
+ }
+
+ public void setIcon(ItemStack icon)
+ {
+ this.icon = icon;
+ }
+
+ public void setColor(EnumColor color)
+ {
+ this.color = color;
+ }
+}
diff --git a/src/Java/binnie/core/machines/storage/ComponentBinnieCoreGUI.java b/src/Java/binnie/core/machines/storage/ComponentBinnieCoreGUI.java
new file mode 100644
index 0000000000..d987129378
--- /dev/null
+++ b/src/Java/binnie/core/machines/storage/ComponentBinnieCoreGUI.java
@@ -0,0 +1,28 @@
+package binnie.core.machines.storage;
+
+import binnie.core.BinnieCore;
+import binnie.core.gui.BinnieCoreGUI;
+import binnie.core.machines.Machine;
+import binnie.core.machines.MachineComponent;
+import binnie.core.machines.component.IInteraction.RightClick;
+import binnie.core.proxy.BinnieProxy;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.world.World;
+
+class ComponentBinnieCoreGUI
+ extends MachineComponent
+ implements IInteraction.RightClick
+{
+ private BinnieCoreGUI id;
+
+ public ComponentBinnieCoreGUI(Machine machine, BinnieCoreGUI id)
+ {
+ super(machine);
+ this.id = id;
+ }
+
+ public void onRightClick(World world, EntityPlayer player, int x, int y, int z)
+ {
+ BinnieCore.proxy.openGui(this.id, player, x, y, z);
+ }
+}
diff --git a/src/Java/binnie/core/machines/storage/ComponentCompartmentInventory.java b/src/Java/binnie/core/machines/storage/ComponentCompartmentInventory.java
new file mode 100644
index 0000000000..ef55e9df9e
--- /dev/null
+++ b/src/Java/binnie/core/machines/storage/ComponentCompartmentInventory.java
@@ -0,0 +1,128 @@
+package binnie.core.machines.storage;
+
+import binnie.core.machines.IMachine;
+import binnie.core.machines.inventory.ComponentInventorySlots;
+import binnie.core.machines.network.INetwork.GuiNBT;
+import cpw.mods.fml.relauncher.Side;
+import java.util.HashMap;
+import java.util.Map;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.nbt.NBTTagList;
+import net.minecraft.tileentity.TileEntity;
+
+class ComponentCompartmentInventory
+ extends ComponentInventorySlots
+ implements INetwork.GuiNBT
+{
+ private int numberOfTabs;
+ private int slotsPerPage;
+
+ public ComponentCompartmentInventory(IMachine machine, int sections)
+ {
+ this(machine, sections, 4);
+ }
+
+ public ComponentCompartmentInventory(IMachine machine, int tabs, int pageSize)
+ {
+ super(machine);
+
+ this.numberOfTabs = tabs;
+ this.slotsPerPage = pageSize;
+ for (int i = 0; i < this.numberOfTabs * this.slotsPerPage; i++) {
+ addSlot(i, "compartment");
+ }
+ }
+
+ public int getPageSize()
+ {
+ return this.slotsPerPage;
+ }
+
+ public int getTabNumber()
+ {
+ return this.numberOfTabs;
+ }
+
+ public int[] getSlotsForTab(int currentTab)
+ {
+ int[] slots = new int[this.slotsPerPage];
+ for (int i = 0; i < this.slotsPerPage; i++) {
+ slots[i] = (i + currentTab * this.slotsPerPage);
+ }
+ return slots;
+ }
+
+ private Map<Integer, CompartmentTab> tabs = new HashMap();
+
+ public CompartmentTab getTab(int i)
+ {
+ if (!this.tabs.containsKey(Integer.valueOf(i))) {
+ this.tabs.put(Integer.valueOf(i), new CompartmentTab(i));
+ }
+ return (CompartmentTab)this.tabs.get(Integer.valueOf(i));
+ }
+
+ public void sendGuiNBT(Map<String, NBTTagCompound> nbt)
+ {
+ NBTTagList list = new NBTTagList();
+ for (int i = 0; i < this.numberOfTabs; i++)
+ {
+ NBTTagCompound nbt2 = new NBTTagCompound();
+ getTab(i).writeToNBT(nbt2);
+ list.appendTag(nbt2);
+ }
+ NBTTagCompound tag = new NBTTagCompound();
+ tag.setTag("tabs", list);
+ nbt.put("comp-tabs", tag);
+ }
+
+ public void recieveGuiNBT(Side side, EntityPlayer player, String name, NBTTagCompound nbt)
+ {
+ if (name.equals("comp-tabs"))
+ {
+ NBTTagList tags = nbt.getTagList("tabs", 10);
+ for (int i = 0; i < tags.tagCount(); i++)
+ {
+ NBTTagCompound tag = tags.getCompoundTagAt(i);
+ CompartmentTab tab = new CompartmentTab(0);
+ tab.readFromNBT(tag);
+ this.tabs.put(Integer.valueOf(tab.getId()), tab);
+ }
+ }
+ if (name.equals("comp-change-tab"))
+ {
+ NBTTagCompound tag = nbt;
+ CompartmentTab tab = new CompartmentTab(0);
+ tab.readFromNBT(tag);
+ this.tabs.put(Integer.valueOf(tab.getId()), tab);
+ getMachine().getTileEntity().markDirty();
+ }
+ }
+
+ public void readFromNBT(NBTTagCompound nbt)
+ {
+ super.readFromNBT(nbt);
+ NBTTagList tags = nbt.getTagList("tabs", 10);
+ for (int i = 0; i < tags.tagCount(); i++)
+ {
+ NBTTagCompound tag = tags.getCompoundTagAt(i);
+ CompartmentTab tab = new CompartmentTab(0);
+ tab.readFromNBT(tag);
+ this.tabs.put(Integer.valueOf(tab.getId()), tab);
+ }
+ }
+
+ public void writeToNBT(NBTTagCompound nbt)
+ {
+ super.writeToNBT(nbt);
+ NBTTagList list = new NBTTagList();
+ for (int i = 0; i < this.numberOfTabs; i++)
+ {
+ NBTTagCompound nbt2 = new NBTTagCompound();
+ getTab(i).writeToNBT(nbt2);
+ list.appendTag(nbt2);
+ }
+ nbt.setTag("tabs", list);
+ }
+}
diff --git a/src/Java/binnie/core/machines/storage/ControlColourSelector.java b/src/Java/binnie/core/machines/storage/ControlColourSelector.java
new file mode 100644
index 0000000000..c5320a2629
--- /dev/null
+++ b/src/Java/binnie/core/machines/storage/ControlColourSelector.java
@@ -0,0 +1,47 @@
+package binnie.core.machines.storage;
+
+import binnie.craftgui.controls.core.Control;
+import binnie.craftgui.controls.core.IControlValue;
+import binnie.craftgui.core.Attribute;
+import binnie.craftgui.core.CraftGUI;
+import binnie.craftgui.core.ITooltip;
+import binnie.craftgui.core.IWidget;
+import binnie.craftgui.core.Tooltip;
+import binnie.craftgui.core.renderer.Renderer;
+import binnie.craftgui.minecraft.EnumColor;
+
+class ControlColourSelector
+ extends Control
+ implements ITooltip, IControlValue<EnumColor>
+{
+ private EnumColor value;
+
+ public ControlColourSelector(IWidget parent, float x, float y, float w, float h, EnumColor value)
+ {
+ super(parent, x, y, w, h);
+ setValue(value);
+ addAttribute(Attribute.MouseOver);
+ }
+
+ public void getTooltip(Tooltip tooltip)
+ {
+ tooltip.add(this.value.toString());
+ }
+
+ public EnumColor getValue()
+ {
+ return this.value;
+ }
+
+ public void setValue(EnumColor value)
+ {
+ this.value = value;
+ setColour(getValue().getColour());
+ }
+
+ public void onRenderBackground()
+ {
+ super.onRenderBackground();
+ CraftGUI.Render.gradientRect(getArea(), -16777216 + this.value.getColour(), -16777216 + this.value.getColour());
+ }
+}
diff --git a/src/Java/binnie/core/machines/storage/MachineRendererCompartment.java b/src/Java/binnie/core/machines/storage/MachineRendererCompartment.java
new file mode 100644
index 0000000000..133b5293ff
--- /dev/null
+++ b/src/Java/binnie/core/machines/storage/MachineRendererCompartment.java
@@ -0,0 +1,50 @@
+package binnie.core.machines.storage;
+
+import binnie.core.BinnieCore;
+import binnie.core.machines.Machine;
+import binnie.core.proxy.BinnieProxy;
+import binnie.core.resource.BinnieResource;
+import cpw.mods.fml.relauncher.Side;
+import cpw.mods.fml.relauncher.SideOnly;
+import net.minecraft.tileentity.TileEntity;
+import org.lwjgl.opengl.GL11;
+
+@SideOnly(Side.CLIENT)
+class MachineRendererCompartment
+{
+ public static MachineRendererCompartment instance = new MachineRendererCompartment();
+ private ModelCompartment model;
+
+ public MachineRendererCompartment()
+ {
+ this.model = new ModelCompartment();
+ }
+
+ public void renderMachine(Machine machine, int colour, BinnieResource texture, double x, double y, double z, float var8)
+ {
+ GL11.glPushMatrix();
+
+ int i1 = 0;
+
+ int ix = machine.getTileEntity().xCoord;
+ int iy = machine.getTileEntity().yCoord;
+ int iz = machine.getTileEntity().zCoord;
+ if (machine.getTileEntity() != null) {
+ i1 = ix * iy * iz + ix * iy - ix * iz + iy * iz - ix + iy - iz;
+ }
+ float phase = (float)Math.max(0.0D, Math.sin((System.currentTimeMillis() + i1) * 0.003D));
+
+ GL11.glTranslated(x + 0.5D, y + 1.5D, z + 0.5D);
+ GL11.glRotatef(180.0F, 0.0F, 0.0F, 1.0F);
+
+ BinnieCore.proxy.bindTexture(texture);
+
+ GL11.glPushMatrix();
+
+ this.model.render(null, (float)x, (float)y, (float)z, 0.0625F, 0.0625F, 0.0625F);
+
+ GL11.glPopMatrix();
+
+ GL11.glPopMatrix();
+ }
+}
diff --git a/src/Java/binnie/core/machines/storage/ModelCompartment.java b/src/Java/binnie/core/machines/storage/ModelCompartment.java
new file mode 100644
index 0000000000..9e5aef450a
--- /dev/null
+++ b/src/Java/binnie/core/machines/storage/ModelCompartment.java
@@ -0,0 +1,171 @@
+package binnie.core.machines.storage;
+
+import net.minecraft.client.model.ModelBase;
+import net.minecraft.client.model.ModelRenderer;
+import net.minecraft.entity.Entity;
+
+class ModelCompartment
+ extends ModelBase
+{
+ private ModelRenderer Column1;
+ private ModelRenderer Column4;
+ private ModelRenderer Column2;
+ private ModelRenderer Column3;
+ private ModelRenderer Lid_1;
+ private ModelRenderer Body_1;
+ private ModelRenderer Lock_1;
+ private ModelRenderer Lid_2;
+ private ModelRenderer Body_2;
+ private ModelRenderer Lock_2;
+ private ModelRenderer Body;
+ private ModelRenderer Lid_3;
+ private ModelRenderer Body_3;
+ private ModelRenderer Lock_3;
+ private ModelRenderer Lid_4;
+ private ModelRenderer Body_4;
+ private ModelRenderer Lock_4;
+
+ public ModelCompartment()
+ {
+ this.textureWidth = 128;
+ this.textureHeight = 128;
+
+ this.Column1 = new ModelRenderer(this, 0, 0);
+ this.Column1.addBox(-8.0F, 8.0F, -8.0F, 4, 16, 4);
+ this.Column1.setRotationPoint(0.0F, 0.0F, 0.0F);
+ this.Column1.setTextureSize(128, 128);
+ this.Column1.mirror = true;
+ setRotation(this.Column1, 0.0F, 0.0F, 0.0F);
+ this.Column4 = new ModelRenderer(this, 0, 0);
+ this.Column4.addBox(4.0F, 8.0F, -8.0F, 4, 16, 4);
+ this.Column4.setRotationPoint(0.0F, 0.0F, 0.0F);
+ this.Column4.setTextureSize(128, 128);
+ this.Column4.mirror = true;
+ setRotation(this.Column4, 0.0F, 0.0F, 0.0F);
+ this.Column2 = new ModelRenderer(this, 0, 0);
+ this.Column2.addBox(-8.0F, 8.0F, 4.0F, 4, 16, 4);
+ this.Column2.setRotationPoint(0.0F, 0.0F, 0.0F);
+ this.Column2.setTextureSize(128, 128);
+ this.Column2.mirror = true;
+ setRotation(this.Column2, 0.0F, 0.0F, 0.0F);
+ this.Column3 = new ModelRenderer(this, 0, 0);
+ this.Column3.addBox(4.0F, 8.0F, 4.0F, 4, 16, 4);
+ this.Column3.setRotationPoint(0.0F, 0.0F, 0.0F);
+ this.Column3.setTextureSize(128, 128);
+ this.Column3.mirror = true;
+ setRotation(this.Column3, 0.0F, 0.0F, 0.0F);
+ this.Lid_1 = new ModelRenderer(this, 48, 0);
+ this.Lid_1.addBox(-4.0F, 9.0F, -7.0F, 8, 5, 3);
+ this.Lid_1.setRotationPoint(0.0F, 0.0F, 0.0F);
+ this.Lid_1.setTextureSize(128, 128);
+ this.Lid_1.mirror = true;
+ setRotation(this.Lid_1, 0.0F, 0.0F, 0.0F);
+ this.Body_1 = new ModelRenderer(this, 0, 24);
+ this.Body_1.addBox(-4.0F, 14.0F, -7.0F, 8, 10, 3);
+ this.Body_1.setRotationPoint(0.0F, 0.0F, 0.0F);
+ this.Body_1.setTextureSize(128, 128);
+ this.Body_1.mirror = true;
+ setRotation(this.Body_1, 0.0F, 0.0F, 0.0F);
+ this.Lock_1 = new ModelRenderer(this, 22, 24);
+ this.Lock_1.addBox(-1.0F, 12.0F, -8.0F, 2, 4, 1);
+ this.Lock_1.setRotationPoint(0.0F, 0.0F, 0.0F);
+ this.Lock_1.setTextureSize(128, 128);
+ this.Lock_1.mirror = true;
+ setRotation(this.Lock_1, 0.0F, 0.0F, 0.0F);
+ this.Lid_2 = new ModelRenderer(this, 48, 0);
+ this.Lid_2.addBox(-4.0F, 9.0F, -7.0F, 8, 5, 3);
+ this.Lid_2.setRotationPoint(0.0F, 0.0F, 0.0F);
+ this.Lid_2.setTextureSize(128, 128);
+ this.Lid_2.mirror = true;
+ setRotation(this.Lid_2, 0.0F, 1.570796F, 0.0F);
+ this.Body_2 = new ModelRenderer(this, 0, 24);
+ this.Body_2.addBox(-4.0F, 14.0F, -7.0F, 8, 10, 3);
+ this.Body_2.setRotationPoint(0.0F, 0.0F, 0.0F);
+ this.Body_2.setTextureSize(128, 128);
+ this.Body_2.mirror = true;
+ setRotation(this.Body_2, 0.0F, 1.570796F, 0.0F);
+ this.Lock_2 = new ModelRenderer(this, 22, 24);
+ this.Lock_2.addBox(-1.0F, 12.0F, -8.0F, 2, 4, 1);
+ this.Lock_2.setRotationPoint(0.0F, 0.0F, 0.0F);
+ this.Lock_2.setTextureSize(128, 128);
+ this.Lock_2.mirror = true;
+ setRotation(this.Lock_2, 0.0F, 1.570796F, 0.0F);
+ this.Body = new ModelRenderer(this, 16, 0);
+ this.Body.addBox(-4.0F, 8.0F, -4.0F, 8, 16, 8);
+ this.Body.setRotationPoint(0.0F, 0.0F, 0.0F);
+ this.Body.setTextureSize(128, 128);
+ this.Body.mirror = true;
+ setRotation(this.Body, 0.0F, 0.0F, 0.0F);
+ this.Lid_3 = new ModelRenderer(this, 48, 0);
+ this.Lid_3.addBox(-4.0F, 9.0F, -7.0F, 8, 5, 3);
+ this.Lid_3.setRotationPoint(0.0F, 0.0F, 0.0F);
+ this.Lid_3.setTextureSize(128, 128);
+ this.Lid_3.mirror = true;
+ setRotation(this.Lid_3, 0.0F, 3.141593F, 0.0F);
+ this.Body_3 = new ModelRenderer(this, 0, 24);
+ this.Body_3.addBox(-4.0F, 14.0F, -7.0F, 8, 10, 3);
+ this.Body_3.setRotationPoint(0.0F, 0.0F, 0.0F);
+ this.Body_3.setTextureSize(128, 128);
+ this.Body_3.mirror = true;
+ setRotation(this.Body_3, 0.0F, 3.141593F, 0.0F);
+ this.Lock_3 = new ModelRenderer(this, 22, 24);
+ this.Lock_3.addBox(-1.0F, 12.0F, -8.0F, 2, 4, 1);
+ this.Lock_3.setRotationPoint(0.0F, 0.0F, 0.0F);
+ this.Lock_3.setTextureSize(128, 128);
+ this.Lock_3.mirror = true;
+ setRotation(this.Lock_3, 0.0F, 3.141593F, 0.0F);
+ this.Lid_4 = new ModelRenderer(this, 48, 0);
+ this.Lid_4.addBox(-4.0F, 9.0F, -7.0F, 8, 5, 3);
+ this.Lid_4.setRotationPoint(0.0F, 0.0F, 0.0F);
+ this.Lid_4.setTextureSize(128, 128);
+ this.Lid_4.mirror = true;
+ setRotation(this.Lid_4, 0.0F, -1.570796F, 0.0F);
+ this.Body_4 = new ModelRenderer(this, 0, 24);
+ this.Body_4.addBox(-4.0F, 14.0F, -7.0F, 8, 10, 3);
+ this.Body_4.setRotationPoint(0.0F, 0.0F, 0.0F);
+ this.Body_4.setTextureSize(128, 128);
+ this.Body_4.mirror = true;
+ setRotation(this.Body_4, 0.0F, -1.570796F, 0.0F);
+ this.Lock_4 = new ModelRenderer(this, 22, 24);
+ this.Lock_4.addBox(-1.0F, 12.0F, -8.0F, 2, 4, 1);
+ this.Lock_4.setRotationPoint(0.0F, 0.0F, 0.0F);
+ this.Lock_4.setTextureSize(128, 128);
+ this.Lock_4.mirror = true;
+ setRotation(this.Lock_4, 0.0F, -1.570796F, 0.0F);
+ }
+
+ public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5)
+ {
+ super.render(entity, f, f1, f2, f3, f4, f5);
+ setRotationAngles(f, f1, f2, f3, f4, f5);
+ this.Column1.render(f5);
+ this.Column4.render(f5);
+ this.Column2.render(f5);
+ this.Column3.render(f5);
+ this.Lid_1.render(f5);
+ this.Body_1.render(f5);
+ this.Lock_1.render(f5);
+ this.Lid_2.render(f5);
+ this.Body_2.render(f5);
+ this.Lock_2.render(f5);
+ this.Body.render(f5);
+ this.Lid_3.render(f5);
+ this.Body_3.render(f5);
+ this.Lock_3.render(f5);
+ this.Lid_4.render(f5);
+ this.Body_4.render(f5);
+ this.Lock_4.render(f5);
+ }
+
+ private void setRotation(ModelRenderer model, float x, float y, float z)
+ {
+ model.rotateAngleX = x;
+ model.rotateAngleY = y;
+ model.rotateAngleZ = z;
+ }
+
+ public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5)
+ {
+ super.setRotationAngles(f, f1, f2, f3, f4, f5, null);
+ }
+}
diff --git a/src/Java/binnie/core/machines/storage/ModuleStorage.java b/src/Java/binnie/core/machines/storage/ModuleStorage.java
new file mode 100644
index 0000000000..7f8bb38ac4
--- /dev/null
+++ b/src/Java/binnie/core/machines/storage/ModuleStorage.java
@@ -0,0 +1,39 @@
+package binnie.core.machines.storage;
+
+import binnie.core.BinnieCore;
+import binnie.core.IInitializable;
+import binnie.core.machines.MachineGroup;
+import cpw.mods.fml.common.registry.GameRegistry;
+import java.util.ArrayList;
+import net.minecraft.creativetab.CreativeTabs;
+import net.minecraft.init.Blocks;
+import net.minecraft.init.Items;
+import net.minecraftforge.oredict.OreDictionary;
+import net.minecraftforge.oredict.ShapedOreRecipe;
+
+public class ModuleStorage
+ implements IInitializable
+{
+ public void preInit()
+ {
+ BinnieCore.packageCompartment = new MachineGroup(BinnieCore.instance, "storage", "storage", Compartment.values());
+ BinnieCore.packageCompartment.setCreativeTab(CreativeTabs.tabBlock);
+ }
+
+ public void init() {}
+
+ public void postInit()
+ {
+ String ironGear = OreDictionary.getOres("gearIron").isEmpty() ? "ingotIron" : "gearIron";
+ String goldGear = OreDictionary.getOres("gearGold").isEmpty() ? "ingotGold" : "gearGold";
+ String diamondGear = "gemDiamond";
+
+ GameRegistry.addRecipe(new ShapedOreRecipe(Compartment.Compartment.get(1), new Object[] { "pcp", "cbc", "pcp", Character.valueOf('b'), Items.book, Character.valueOf('c'), Blocks.chest, Character.valueOf('p'), Blocks.stone_button }));
+ GameRegistry.addRecipe(new ShapedOreRecipe(Compartment.CompartmentCopper.get(1), new Object[] { "pcp", "cbc", "pcp", Character.valueOf('b'), Compartment.Compartment.get(1), Character.valueOf('c'), "gearCopper", Character.valueOf('p'), Blocks.stone_button }));
+ GameRegistry.addRecipe(new ShapedOreRecipe(Compartment.CompartmentBronze.get(1), new Object[] { "pcp", "cbc", "pcp", Character.valueOf('b'), Compartment.CompartmentCopper.get(1), Character.valueOf('c'), "gearBronze", Character.valueOf('p'), Items.gold_nugget }));
+
+ GameRegistry.addRecipe(new ShapedOreRecipe(Compartment.CompartmentIron.get(1), new Object[] { "pcp", "cbc", "pcp", Character.valueOf('b'), Compartment.CompartmentCopper.get(1), Character.valueOf('c'), ironGear, Character.valueOf('p'), Items.gold_nugget }));
+ GameRegistry.addRecipe(new ShapedOreRecipe(Compartment.CompartmentGold.get(1), new Object[] { "pcp", "cbc", "pcp", Character.valueOf('b'), Compartment.CompartmentIron.get(1), Character.valueOf('c'), goldGear, Character.valueOf('p'), Items.emerald }));
+ GameRegistry.addRecipe(new ShapedOreRecipe(Compartment.CompartmentDiamond.get(1), new Object[] { "pcp", "cbc", "pcp", Character.valueOf('b'), Compartment.CompartmentGold.get(1), Character.valueOf('c'), diamondGear, Character.valueOf('p'), Items.emerald }));
+ }
+}
diff --git a/src/Java/binnie/core/machines/storage/StandardCompartment.java b/src/Java/binnie/core/machines/storage/StandardCompartment.java
new file mode 100644
index 0000000000..341657cb9e
--- /dev/null
+++ b/src/Java/binnie/core/machines/storage/StandardCompartment.java
@@ -0,0 +1,142 @@
+package binnie.core.machines.storage;
+
+import binnie.core.gui.BinnieCoreGUI;
+import binnie.core.machines.Machine;
+import binnie.core.machines.TileEntityMachine;
+import binnie.core.texture.BinnieCoreTexture;
+import net.minecraft.tileentity.TileEntity;
+
+class StandardCompartment
+{
+ public static class PackageCompartment
+ extends Compartment.PackageCompartment
+ {
+ public PackageCompartment()
+ {
+ super(BinnieCoreTexture.Compartment);
+ }
+
+ public void createMachine(Machine machine)
+ {
+ new ComponentBinnieCoreGUI(machine, BinnieCoreGUI.Compartment);
+ new ComponentCompartmentInventory(machine, 4, 25);
+ }
+
+ public TileEntity createTileEntity()
+ {
+ return new TileEntityMachine(this);
+ }
+
+ public void register() {}
+ }
+
+ public static class PackageCompartmentCopper
+ extends Compartment.PackageCompartment
+ {
+ public PackageCompartmentCopper()
+ {
+ super(BinnieCoreTexture.CompartmentCopper);
+ }
+
+ public void createMachine(Machine machine)
+ {
+ new ComponentBinnieCoreGUI(machine, BinnieCoreGUI.Compartment);
+ new ComponentCompartmentInventory(machine, 6, 25);
+ }
+
+ public TileEntity createTileEntity()
+ {
+ return new TileEntityMachine(this);
+ }
+
+ public void register() {}
+ }
+
+ public static class PackageCompartmentBronze
+ extends Compartment.PackageCompartment
+ {
+ public PackageCompartmentBronze()
+ {
+ super(BinnieCoreTexture.CompartmentBronze);
+ }
+
+ public void createMachine(Machine machine)
+ {
+ new ComponentBinnieCoreGUI(machine, BinnieCoreGUI.Compartment);
+ new ComponentCompartmentInventory(machine, 8, 25);
+ }
+
+ public TileEntity createTileEntity()
+ {
+ return new TileEntityMachine(this);
+ }
+
+ public void register() {}
+ }
+
+ public static class PackageCompartmentIron
+ extends Compartment.PackageCompartment
+ {
+ public PackageCompartmentIron()
+ {
+ super(BinnieCoreTexture.CompartmentIron);
+ }
+
+ public void createMachine(Machine machine)
+ {
+ new ComponentBinnieCoreGUI(machine, BinnieCoreGUI.Compartment);
+ new ComponentCompartmentInventory(machine, 4, 50);
+ }
+
+ public TileEntity createTileEntity()
+ {
+ return new TileEntityMachine(this);
+ }
+
+ public void register() {}
+ }
+
+ public static class PackageCompartmentGold
+ extends Compartment.PackageCompartment
+ {
+ public PackageCompartmentGold()
+ {
+ super(BinnieCoreTexture.CompartmentGold);
+ }
+
+ public void createMachine(Machine machine)
+ {
+ new ComponentBinnieCoreGUI(machine, BinnieCoreGUI.Compartment);
+ new ComponentCompartmentInventory(machine, 6, 50);
+ }
+
+ public TileEntity createTileEntity()
+ {
+ return new TileEntityMachine(this);
+ }
+
+ public void register() {}
+ }
+
+ public static class PackageCompartmentDiamond
+ extends Compartment.PackageCompartment
+ {
+ public PackageCompartmentDiamond()
+ {
+ super(BinnieCoreTexture.CompartmentDiamond);
+ }
+
+ public void createMachine(Machine machine)
+ {
+ new ComponentBinnieCoreGUI(machine, BinnieCoreGUI.Compartment);
+ new ComponentCompartmentInventory(machine, 8, 50);
+ }
+
+ public TileEntity createTileEntity()
+ {
+ return new TileEntityMachine(this);
+ }
+
+ public void register() {}
+ }
+}
diff --git a/src/Java/binnie/core/machines/storage/WindowCompartment.java b/src/Java/binnie/core/machines/storage/WindowCompartment.java
new file mode 100644
index 0000000000..6c28ed0714
--- /dev/null
+++ b/src/Java/binnie/core/machines/storage/WindowCompartment.java
@@ -0,0 +1,594 @@
+package binnie.core.machines.storage;
+
+import binnie.core.AbstractMod;
+import binnie.core.BinnieCore;
+import binnie.core.machines.IMachine;
+import binnie.core.machines.Machine;
+import binnie.core.machines.MachinePackage;
+import binnie.core.machines.transfer.TransferRequest;
+import binnie.craftgui.controls.ControlCheckbox;
+import binnie.craftgui.controls.ControlText;
+import binnie.craftgui.controls.ControlTextEdit;
+import binnie.craftgui.controls.button.ControlButton;
+import binnie.craftgui.controls.core.Control;
+import binnie.craftgui.controls.page.ControlPage;
+import binnie.craftgui.controls.page.ControlPages;
+import binnie.craftgui.controls.scroll.ControlScrollableContent;
+import binnie.craftgui.controls.tab.ControlTab;
+import binnie.craftgui.controls.tab.ControlTabBar;
+import binnie.craftgui.core.Attribute;
+import binnie.craftgui.core.CraftGUI;
+import binnie.craftgui.core.IWidget;
+import binnie.craftgui.core.geometry.CraftGUIUtil;
+import binnie.craftgui.core.geometry.IArea;
+import binnie.craftgui.core.geometry.IBorder;
+import binnie.craftgui.core.geometry.IPoint;
+import binnie.craftgui.core.geometry.Position;
+import binnie.craftgui.core.renderer.Renderer;
+import binnie.craftgui.events.EventHandler.Origin;
+import binnie.craftgui.events.EventMouse.Down;
+import binnie.craftgui.events.EventMouse.Down.Handler;
+import binnie.craftgui.events.EventTextEdit;
+import binnie.craftgui.events.EventTextEdit.Handler;
+import binnie.craftgui.events.EventValueChanged;
+import binnie.craftgui.events.EventValueChanged.Handler;
+import binnie.craftgui.genetics.machine.WindowMachine;
+import binnie.craftgui.minecraft.Dialog;
+import binnie.craftgui.minecraft.EnumColor;
+import binnie.craftgui.minecraft.IWindowAffectsShiftClick;
+import binnie.craftgui.minecraft.MinecraftGUI.PanelType;
+import binnie.craftgui.minecraft.Window;
+import binnie.craftgui.minecraft.control.ControlItemDisplay;
+import binnie.craftgui.minecraft.control.ControlPlayerInventory;
+import binnie.craftgui.minecraft.control.ControlSlide;
+import binnie.craftgui.minecraft.control.ControlSlot;
+import binnie.craftgui.minecraft.control.ControlSlotArray;
+import binnie.craftgui.minecraft.control.ControlTabIcon;
+import binnie.craftgui.resource.Texture;
+import binnie.craftgui.resource.minecraft.CraftGUITexture;
+import binnie.craftgui.window.Panel;
+import binnie.craftgui.window.Panel.IPanelType;
+import cpw.mods.fml.relauncher.Side;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.LinkedHashMap;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Set;
+import net.minecraft.block.Block;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.init.Blocks;
+import net.minecraft.init.Items;
+import net.minecraft.inventory.IInventory;
+import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.NBTTagCompound;
+
+public class WindowCompartment
+ extends WindowMachine
+ implements IWindowAffectsShiftClick
+{
+ public static Window create(EntityPlayer player, IInventory inventory, Side side)
+ {
+ return new WindowCompartment(player, inventory, side);
+ }
+
+ public WindowCompartment(EntityPlayer player, IInventory inventory, Side side)
+ {
+ super(320, 226, player, inventory, side);
+ }
+
+ private final Map<Panel, Integer> panels = new HashMap();
+ private ControlTextEdit tabName;
+ private ControlItemDisplay tabIcon;
+ private ControlColourSelector tabColour;
+ boolean dueUpdate;
+
+ public void initialiseClient()
+ {
+ setTitle(Machine.getMachine(getInventory()).getPackage().getDisplayName());
+
+ int x = 16;
+ int y = 32;
+
+ ComponentCompartmentInventory inv = (ComponentCompartmentInventory)Machine.getMachine(getInventory()).getInterface(ComponentCompartmentInventory.class);
+
+
+
+ Integer[] tabs1 = new Integer[0];
+ Integer[] tabs2 = new Integer[0];
+ if (inv.getTabNumber() == 4)
+ {
+ tabs1 = new Integer[] { Integer.valueOf(0), Integer.valueOf(1) };
+ tabs2 = new Integer[] { Integer.valueOf(2), Integer.valueOf(3) };
+ }
+ if (inv.getTabNumber() == 6)
+ {
+ tabs1 = new Integer[] { Integer.valueOf(0), Integer.valueOf(1), Integer.valueOf(2) };
+ tabs2 = new Integer[] { Integer.valueOf(3), Integer.valueOf(4), Integer.valueOf(5) };
+ }
+ if (inv.getTabNumber() == 8)
+ {
+ tabs1 = new Integer[] { Integer.valueOf(0), Integer.valueOf(1), Integer.valueOf(2), Integer.valueOf(3) };
+ tabs2 = new Integer[] { Integer.valueOf(4), Integer.valueOf(5), Integer.valueOf(6), Integer.valueOf(7) };
+ }
+ boolean doubleTabbed = tabs2.length > 0;
+
+ int compartmentPageWidth = 16 + 18 * inv.getPageSize() / 5;
+ int compartmentPageHeight = 106;
+ int compartmentWidth = compartmentPageWidth + (doubleTabbed ? 48 : 24);
+ int compartmentHeight = compartmentPageHeight;
+
+
+
+ Control controlCompartment = new Control(this, x, y, compartmentWidth, compartmentHeight);
+
+ final ControlTabBar<Integer> tab = new ControlTabBar(controlCompartment, 0.0F, 0.0F, 24.0F, compartmentPageHeight, Position.Left)
+ {
+ public ControlTab<Integer> createTab(float x, float y, float w, float h, Integer value)
+ {
+ new ControlTabIcon(this, x, y, w, h, value)
+ {
+ public ItemStack getItemStack()
+ {
+ return WindowCompartment.this.getTab(((Integer)this.value).intValue()).getIcon();
+ }
+
+ public String getName()
+ {
+ return WindowCompartment.this.getTab(((Integer)this.value).intValue()).getName();
+ }
+
+ public int getOutlineColour()
+ {
+ return WindowCompartment.this.getTab(((Integer)this.value).intValue()).getColor().getColour();
+ }
+
+ public boolean hasOutline()
+ {
+ return true;
+ }
+ };
+ }
+ };
+ String[] tabHelp = { "Compartment Tab", "Tabs that divide the inventory into sections. Each one can be labelled seperately." };
+
+ tab.addHelp(tabHelp);
+
+ tab.setValues(Arrays.asList(tabs1));
+ tab.setValue(Integer.valueOf(0));
+
+ tab.addEventHandler(new EventValueChanged.Handler()
+ {
+ public void onEvent(EventValueChanged event)
+ {
+ NBTTagCompound nbt = new NBTTagCompound();
+ int i = ((Integer)event.getValue()).intValue();
+ nbt.setByte("i", (byte)i);
+ Window.get(tab).sendClientAction("tab-change", nbt);
+ WindowCompartment.this.currentTab = i;
+ }
+ }.setOrigin(EventHandler.Origin.DirectChild, tab));
+
+
+
+
+ x += 24;
+
+ ControlPages<Integer> compartmentPages = new ControlPages(controlCompartment, 24.0F, 0.0F, compartmentPageWidth, compartmentPageHeight);
+
+ ControlPage[] page = new ControlPage[inv.getTabNumber()];
+ for (int p = 0; p < inv.getTabNumber(); p++) {
+ page[p] = new ControlPage(compartmentPages, Integer.valueOf(p));
+ }
+ CraftGUIUtil.linkWidgets(tab, compartmentPages);
+
+ int i = 0;
+ for (int p = 0; p < inv.getTabNumber(); p++)
+ {
+ ControlPage thisPage = page[p];
+
+ Panel panel = new Panel(thisPage, 0.0F, 0.0F, thisPage.w(), thisPage.h(), MinecraftGUI.PanelType.Black)
+ {
+ public void onRenderForeground()
+ {
+ Texture iTexture = CraftGUI.Render.getTexture(CraftGUITexture.TabOutline);
+
+ CraftGUI.Render.colour(WindowCompartment.this.getTab(((Integer)WindowCompartment.this.panels.get(this)).intValue()).getColor().getColour());
+
+ CraftGUI.Render.texture(iTexture, getArea().inset(3));
+ }
+ };
+ this.panels.put(panel, Integer.valueOf(p));
+
+ int[] slotsIDs = new int[inv.getPageSize()];
+ for (int k = 0; k < inv.getPageSize(); k++) {
+ slotsIDs[k] = (i++);
+ }
+ new ControlSlotArray(thisPage, 8, 8, inv.getPageSize() / 5, 5).create(slotsIDs);
+ }
+ x += compartmentPageWidth;
+ if (tabs2.length > 0)
+ {
+ ControlTabBar<Integer> tab2 = new ControlTabBar(controlCompartment, 24 + compartmentPageWidth, 0.0F, 24.0F, compartmentPageHeight, Position.Right)
+ {
+ public ControlTab<Integer> createTab(float x, float y, float w, float h, Integer value)
+ {
+ new ControlTabIcon(this, x, y, w, h, value)
+ {
+ public ItemStack getItemStack()
+ {
+ return WindowCompartment.this.getTab(((Integer)this.value).intValue()).getIcon();
+ }
+
+ public String getName()
+ {
+ return WindowCompartment.this.getTab(((Integer)this.value).intValue()).getName();
+ }
+
+ public int getOutlineColour()
+ {
+ return WindowCompartment.this.getTab(((Integer)this.value).intValue()).getColor().getColour();
+ }
+
+ public boolean hasOutline()
+ {
+ return true;
+ }
+ };
+ }
+ };
+ tab2.setValues(Arrays.asList(tabs2));
+ tab2.setValue(Integer.valueOf(0));
+ tab2.addHelp(tabHelp);
+
+ tab2.addEventHandler(new EventValueChanged.Handler()
+ {
+ public void onEvent(EventValueChanged event)
+ {
+ NBTTagCompound nbt = new NBTTagCompound();
+ int i = ((Integer)event.getValue()).intValue();
+ nbt.setByte("i", (byte)i);
+ Window.get(tab).sendClientAction("tab-change", nbt);
+ WindowCompartment.this.currentTab = i;
+ }
+ }.setOrigin(EventHandler.Origin.DirectChild, tab2));
+
+
+
+
+ CraftGUIUtil.linkWidgets(tab2, compartmentPages);
+
+ x += 24;
+ }
+ x += 16;
+
+ setSize(new IPoint(Math.max(32 + compartmentWidth, 252), h()));
+
+ controlCompartment.setPosition(new IPoint((w() - controlCompartment.w()) / 2.0F, controlCompartment.y()));
+
+
+
+ ControlPlayerInventory invent = new ControlPlayerInventory(this, true);
+
+ ControlSlide slide = new ControlSlide(this, 0.0F, 134.0F, 136.0F, 92.0F, Position.Left);
+ slide.setLabel("Tab Properties");
+ slide.setSlide(false);
+
+ slide.addHelp("Tab Properties");
+ slide.addHelp("The label, colour and icon of the Tab can be altered here. Clicking on the icon with a held item will change it.");
+
+ Panel tabPropertyPanel = new Panel(slide, 16.0F, 8.0F, 112.0F, 76.0F, MinecraftGUI.PanelType.Gray);
+
+ int y2 = 4;
+
+ new ControlText(tabPropertyPanel, new IPoint(4.0F, y2), "Tab Name:");
+ y2 += 12;this.tabName = new ControlTextEdit(tabPropertyPanel, 4.0F, y2, 104.0F, 12.0F);
+
+ this.tabName.addSelfEventHandler(new EventTextEdit.Handler()
+ {
+ public void onEvent(EventTextEdit event)
+ {
+ CompartmentTab tab = WindowCompartment.this.getCurrentTab();
+ tab.setName((String)event.getValue());
+ NBTTagCompound nbt = new NBTTagCompound();
+ tab.writeToNBT(nbt);
+ WindowCompartment.this.sendClientAction("comp-change-tab", nbt);
+ }
+ }.setOrigin(EventHandler.Origin.Self, this.tabName));
+
+
+
+
+ y2 += 20;
+
+ new ControlText(tabPropertyPanel, new IPoint(4.0F, y2), "Tab Icon: ");
+ this.tabIcon = new ControlItemDisplay(tabPropertyPanel, 58.0F, y2 - 4);
+ this.tabIcon.setItemStack(new ItemStack(Items.paper));
+ this.tabIcon.addAttribute(Attribute.MouseOver);
+ this.tabIcon.addSelfEventHandler(new EventMouse.Down.Handler()
+ {
+ public void onEvent(EventMouse.Down event)
+ {
+ if (WindowCompartment.this.getHeldItemStack() == null) {
+ return;
+ }
+ CompartmentTab tab = WindowCompartment.this.getCurrentTab();
+ ItemStack stack = WindowCompartment.this.getHeldItemStack().copy();
+ stack.stackSize = 1;
+ tab.setIcon(stack);
+ NBTTagCompound nbt = new NBTTagCompound();
+ tab.writeToNBT(nbt);
+ WindowCompartment.this.sendClientAction("comp-change-tab", nbt);
+ }
+ });
+ this.tabColour = new ControlColourSelector(tabPropertyPanel, 82.0F, y2 - 4, 16.0F, 16.0F, EnumColor.White);
+
+ this.tabIcon.addHelp("Icon for Current Tab");
+ this.tabIcon.addHelp("Click here with an item to change");
+
+ y2 += 20;
+
+ new ControlText(tabPropertyPanel, new IPoint(4.0F, y2), "Colour: ");
+
+ int cw = 8;
+
+ Panel panelColour = new Panel(tabPropertyPanel, 40.0F, y2 - 4, cw * 8 + 2, cw * 2 + 1, MinecraftGUI.PanelType.Gray);
+ for (int cc = 0; cc < 16; cc++)
+ {
+ final ControlColourSelector color = new ControlColourSelector(panelColour, 1 + cw * (cc % 8), 1 + cw * (cc / 8), cw, cw, EnumColor.values()[cc]);
+ color.addSelfEventHandler(new EventMouse.Down.Handler()
+ {
+ public void onEvent(EventMouse.Down event)
+ {
+ CompartmentTab tab = WindowCompartment.this.getCurrentTab();
+ tab.setColor(color.getValue());
+ NBTTagCompound nbt = new NBTTagCompound();
+ tab.writeToNBT(nbt);
+ WindowCompartment.this.sendClientAction("comp-change-tab", nbt);
+ }
+ });
+ color.addHelp("Colour Selector");
+ color.addHelp("Select a colour to highlight the current tab");
+ }
+ y2 += 20;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ControlButton searchButton = new ControlButton(controlCompartment, compartmentWidth - 24 - 64 - 8, compartmentPageHeight, 64.0F, 16.0F, "Search")
+ {
+ protected void onMouseClick(EventMouse.Down event)
+ {
+ WindowCompartment.this.createSearchDialog();
+ }
+
+ public void onRenderBackground()
+ {
+ Object texture = isMouseOver() ? CraftGUITexture.TabHighlighted : CraftGUITexture.Tab;
+ CraftGUI.Render.texture(CraftGUI.Render.getTexture(texture).crop(Position.Bottom, 8.0F), getArea());
+ }
+ };
+ searchButton.addHelp("Search Button");
+ searchButton.addHelp("Clicking this will open the Search dialog. This allows you to search the inventory for specific items.");
+ }
+
+ public void createSearchDialog()
+ {
+ new Dialog(this, 252.0F, 192.0F)
+ {
+ Control slotGrid;
+ String textSearch = "";
+ boolean sortByName = false;
+ boolean includeItems = true;
+ boolean includeBlocks = true;
+
+ public void onClose() {}
+
+ public void initialise()
+ {
+ ControlScrollableContent<IWidget> scroll = new ControlScrollableContent(this, 124.0F, 16.0F, 116.0F, 92.0F, 6.0F)
+ {
+ public void onRenderBackground()
+ {
+ CraftGUI.Render.colour(11184810);
+ CraftGUI.Render.texture(CraftGUITexture.Outline, getArea().inset(new IBorder(0.0F, 6.0F, 0.0F, 0.0F)));
+ }
+ };
+ this.slotGrid = new Control(scroll, 1.0F, 1.0F, 108.0F, 18.0F);
+
+ scroll.setScrollableContent(this.slotGrid);
+
+ new ControlPlayerInventory(this, true);
+
+ new ControlTextEdit(this, 16.0F, 16.0F, 100.0F, 14.0F).addEventHandler(new EventTextEdit.Handler()
+ {
+ public void onEvent(EventTextEdit event)
+ {
+ WindowCompartment.10.this.textSearch = ((String)event.value);
+ WindowCompartment.10.this.updateSearch();
+ }
+ });
+ this.includeItems = true;
+ this.includeBlocks = true;
+
+ new ControlCheckbox(this, 16.0F, 40.0F, 100.0F, "Sort A-Z", this.sortByName)
+ {
+ protected void onValueChanged(boolean value)
+ {
+ WindowCompartment.10.this.sortByName = value;
+ WindowCompartment.10.this.updateSearch();
+ }
+ };
+ new ControlCheckbox(this, 16.0F, 64.0F, 100.0F, "Include Items", this.includeItems)
+ {
+ protected void onValueChanged(boolean value)
+ {
+ WindowCompartment.10.this.includeItems = value;
+ WindowCompartment.10.this.updateSearch();
+ }
+ };
+ new ControlCheckbox(this, 16.0F, 88.0F, 100.0F, "Include Blocks", this.includeBlocks)
+ {
+ protected void onValueChanged(boolean value)
+ {
+ WindowCompartment.10.this.includeBlocks = value;
+ WindowCompartment.10.this.updateSearch();
+ }
+ };
+ updateSearch();
+ }
+
+ private void updateSearch()
+ {
+ Map<Integer, String> slotIds = new HashMap();
+ IInventory inv = WindowCompartment.this.getInventory();
+ for (int i = 0; i < inv.getSizeInventory(); i++)
+ {
+ ItemStack stack = inv.getStackInSlot(i);
+ if (stack != null)
+ {
+ String name = stack.getDisplayName().toLowerCase();
+ if ((this.textSearch == null) || (name.contains(this.textSearch))) {
+ if ((this.includeBlocks) || (Block.getBlockFromItem(stack.getItem()) == Blocks.air)) {
+ if ((this.includeItems) || (Block.getBlockFromItem(stack.getItem()) != Blocks.air)) {
+ slotIds.put(Integer.valueOf(i), name);
+ }
+ }
+ }
+ }
+ }
+ if (this.sortByName)
+ {
+ List list = new LinkedList(slotIds.entrySet());
+ Collections.sort(list, new Comparator()
+ {
+ public int compare(Object o1, Object o2)
+ {
+ return -((Comparable)((Map.Entry)o2).getValue()).compareTo(((Map.Entry)o1).getValue());
+ }
+ });
+ Map result = new LinkedHashMap();
+ for (Iterator it = list.iterator(); it.hasNext();)
+ {
+ Map.Entry entry = (Map.Entry)it.next();
+ result.put(entry.getKey(), entry.getValue());
+ }
+ slotIds = result;
+ }
+ int y = 0;
+ int x = 0;
+ int width = 108;
+ int height = 2 + 18 * (1 + (slotIds.size() - 1) / 6);
+ this.slotGrid.deleteAllChildren();
+ this.slotGrid.setSize(new IPoint(width, height));
+ for (Iterator i$ = slotIds.keySet().iterator(); i$.hasNext();)
+ {
+ int k = ((Integer)i$.next()).intValue();
+ new ControlSlot(this.slotGrid, x, y).assign(k);
+ x += 18;
+ if (x >= 108)
+ {
+ x = 0;
+ y += 18;
+ }
+ }
+ while ((y < 108) || (x != 0))
+ {
+ new ControlSlot(this.slotGrid, x, y);
+ x += 18;
+ if (x >= 108)
+ {
+ x = 0;
+ y += 18;
+ }
+ }
+ }
+ };
+ }
+
+ public void onUpdateClient()
+ {
+ super.onUpdateClient();
+ updateTabs();
+ }
+
+ public void updateTabs()
+ {
+ this.tabName.setValue(getCurrentTab().getName());
+ this.tabIcon.setItemStack(getCurrentTab().getIcon());
+ this.tabColour.setValue(getCurrentTab().getColor());
+ }
+
+ private int currentTab = 0;
+
+ public void recieveGuiNBT(Side side, EntityPlayer player, String name, NBTTagCompound action)
+ {
+ super.recieveGuiNBT(side, player, name, action);
+ if (name.equals("tab-change")) {
+ this.currentTab = action.getByte("i");
+ }
+ }
+
+ public String getTitle()
+ {
+ return "Compartment";
+ }
+
+ protected AbstractMod getMod()
+ {
+ return BinnieCore.instance;
+ }
+
+ protected String getName()
+ {
+ return "compartment";
+ }
+
+ public void alterRequest(TransferRequest request)
+ {
+ if (request.getDestination() == getInventory())
+ {
+ ComponentCompartmentInventory inv = (ComponentCompartmentInventory)Machine.getMachine(getInventory()).getInterface(ComponentCompartmentInventory.class);
+ request.setTargetSlots(inv.getSlotsForTab(this.currentTab));
+ }
+ }
+
+ public CompartmentTab getTab(int i)
+ {
+ return ((ComponentCompartmentInventory)Machine.getInterface(ComponentCompartmentInventory.class, getInventory())).getTab(i);
+ }
+
+ public CompartmentTab getCurrentTab()
+ {
+ return getTab(this.currentTab);
+ }
+}
diff --git a/src/Java/binnie/core/machines/storage/WindowTest.java b/src/Java/binnie/core/machines/storage/WindowTest.java
new file mode 100644
index 0000000000..55c2a0b9db
--- /dev/null
+++ b/src/Java/binnie/core/machines/storage/WindowTest.java
@@ -0,0 +1,40 @@
+package binnie.core.machines.storage;
+
+import binnie.core.AbstractMod;
+import binnie.core.BinnieCore;
+import binnie.craftgui.genetics.machine.WindowMachine;
+import binnie.craftgui.minecraft.Window;
+import cpw.mods.fml.relauncher.Side;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.inventory.IInventory;
+
+public class WindowTest
+ extends WindowMachine
+{
+ public static Window create(EntityPlayer player, IInventory inventory, Side side)
+ {
+ return new WindowCompartment(player, inventory, side);
+ }
+
+ public WindowTest(EntityPlayer player, IInventory inventory, Side side)
+ {
+ super(320, 240, player, inventory, side);
+ }
+
+ public void initialiseClient() {}
+
+ public String getTitle()
+ {
+ return "Test";
+ }
+
+ protected AbstractMod getMod()
+ {
+ return BinnieCore.instance;
+ }
+
+ protected String getName()
+ {
+ return "Test";
+ }
+}
diff --git a/src/Java/binnie/core/machines/transfer/TransferHandler.java b/src/Java/binnie/core/machines/transfer/TransferHandler.java
new file mode 100644
index 0000000000..8d8c2bdb57
--- /dev/null
+++ b/src/Java/binnie/core/machines/transfer/TransferHandler.java
@@ -0,0 +1,3 @@
+package binnie.core.machines.transfer;
+
+public class TransferHandler {}
diff --git a/src/Java/binnie/core/machines/transfer/TransferRequest.java b/src/Java/binnie/core/machines/transfer/TransferRequest.java
new file mode 100644
index 0000000000..8059a6b512
--- /dev/null
+++ b/src/Java/binnie/core/machines/transfer/TransferRequest.java
@@ -0,0 +1,419 @@
+package binnie.core.machines.transfer;
+
+import binnie.core.machines.Machine;
+import binnie.core.machines.inventory.IInventorySlots;
+import binnie.core.machines.inventory.IValidatedTankContainer;
+import binnie.core.machines.inventory.InventorySlot;
+import binnie.core.machines.power.ITankMachine;
+import java.util.ArrayList;
+import java.util.List;
+import net.minecraft.inventory.IInventory;
+import net.minecraft.item.ItemStack;
+import net.minecraftforge.fluids.FluidContainerRegistry;
+import net.minecraftforge.fluids.FluidContainerRegistry.FluidContainerData;
+import net.minecraftforge.fluids.FluidStack;
+import net.minecraftforge.fluids.IFluidContainerItem;
+import net.minecraftforge.fluids.IFluidTank;
+
+public class TransferRequest
+{
+ private ItemStack itemToTransfer = null;
+ private ItemStack returnItem = null;
+ private IInventory origin;
+ private IInventory destination;
+ private int[] targetSlots = new int[0];
+ private int[] targetTanks = new int[0];
+ private boolean transferLiquids = true;
+ private boolean ignoreReadOnly = false;
+
+ public TransferRequest(ItemStack toTransfer, IInventory destination)
+ {
+ int[] target = new int[destination.getSizeInventory()];
+ for (int i = 0; i < target.length; i++) {
+ target[i] = i;
+ }
+ int[] targetTanks = new int[0];
+ if ((destination instanceof ITankMachine))
+ {
+ targetTanks = new int[((ITankMachine)destination).getTanks().length];
+ for (int i = 0; i < targetTanks.length; i++) {
+ targetTanks[i] = i;
+ }
+ }
+ if (toTransfer != null)
+ {
+ setItemToTransfer(toTransfer.copy());
+ setReturnItem(toTransfer.copy());
+ }
+ setOrigin(null);
+ setDestination(destination);
+ setTargetSlots(target);
+ setTargetTanks(targetTanks);
+ this.transferLiquids = true;
+ }
+
+ private void setItemToTransfer(ItemStack itemToTransfer)
+ {
+ this.itemToTransfer = itemToTransfer;
+ }
+
+ private void setReturnItem(ItemStack returnItem)
+ {
+ this.returnItem = returnItem;
+ }
+
+ public TransferRequest setOrigin(IInventory origin)
+ {
+ this.origin = origin;
+ return this;
+ }
+
+ private void setDestination(IInventory destination)
+ {
+ this.destination = destination;
+ }
+
+ public TransferRequest setTargetSlots(int[] targetSlots)
+ {
+ this.targetSlots = targetSlots;
+ return this;
+ }
+
+ public TransferRequest setTargetTanks(int[] targetTanks)
+ {
+ this.targetTanks = targetTanks;
+ return this;
+ }
+
+ public TransferRequest ignoreValidation()
+ {
+ this.ignoreReadOnly = true;
+ return this;
+ }
+
+ public ItemStack getReturnItem()
+ {
+ return this.returnItem;
+ }
+
+ public ItemStack transfer(boolean doAdd)
+ {
+ ItemStack item = this.returnItem;
+ if ((item == null) || (this.destination == null)) {
+ return null;
+ }
+ if ((this.transferLiquids) && ((this.destination instanceof ITankMachine))) {
+ for (int tankID : this.targetTanks)
+ {
+ item = transferToTank(item, this.origin, (ITankMachine)this.destination, tankID, doAdd);
+ if (item != null) {
+ item = transferFromTank(item, this.origin, (ITankMachine)this.destination, tankID, doAdd);
+ }
+ }
+ }
+ if (item != null) {
+ for (int slot : this.targetSlots) {
+ if ((this.destination.isItemValidForSlot(slot, item)) || (this.ignoreReadOnly)) {
+ if ((!(this.destination instanceof IInventorySlots)) || (((IInventorySlots)this.destination).getSlot(slot) == null) || (!((IInventorySlots)this.destination).getSlot(slot).isRecipe())) {
+ if (this.destination.getStackInSlot(slot) != null) {
+ if (item.isStackable())
+ {
+ ItemStack merged = this.destination.getStackInSlot(slot).copy();
+ ItemStack[] newStacks = mergeStacks(item.copy(), merged.copy());
+ item = newStacks[0];
+ if (!areItemsEqual(merged, newStacks[1])) {
+ this.insertedSlots.add(new TransferSlot(slot, this.destination));
+ }
+ if (doAdd) {
+ this.destination.setInventorySlotContents(slot, newStacks[1]);
+ }
+ if (item == null) {
+ return null;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ if (item != null) {
+ for (int slot : this.targetSlots) {
+ if ((this.destination.isItemValidForSlot(slot, item)) || (this.ignoreReadOnly)) {
+ if ((!(this.destination instanceof IInventorySlots)) || (((IInventorySlots)this.destination).getSlot(slot) == null) || (!((IInventorySlots)this.destination).getSlot(slot).isRecipe())) {
+ if ((this.destination.getStackInSlot(slot) == null) && (item != null))
+ {
+ this.insertedSlots.add(new TransferSlot(slot, this.destination));
+ if (doAdd) {
+ this.destination.setInventorySlotContents(slot, item.copy());
+ }
+ return null;
+ }
+ }
+ }
+ }
+ }
+ setReturnItem(item);
+ return getReturnItem();
+ }
+
+ private static boolean areItemsEqual(ItemStack merged, ItemStack itemstack)
+ {
+ return (ItemStack.areItemStackTagsEqual(itemstack, merged)) && (itemstack.isItemEqual(merged));
+ }
+
+ public static ItemStack[] mergeStacks(ItemStack itemstack, ItemStack merged)
+ {
+ if (areItemsEqual(itemstack, merged))
+ {
+ int space = merged.getMaxStackSize() - merged.stackSize;
+ if (space > 0) {
+ if (itemstack.stackSize > space)
+ {
+ itemstack.stackSize -= space;
+ merged.stackSize += space;
+ }
+ else if (itemstack.stackSize <= space)
+ {
+ merged.stackSize += itemstack.stackSize;
+ itemstack = null;
+ }
+ }
+ }
+ return new ItemStack[] { itemstack, merged };
+ }
+
+ private ItemStack transferToTank(ItemStack item, IInventory origin, ITankMachine destination, int tankID, boolean doAdd)
+ {
+ item = transferToTankUsingContainerData(item, origin, destination, tankID, doAdd);
+ item = transferToTankUsingFluidContainer(item, origin, destination, tankID, doAdd);
+ return item;
+ }
+
+ private ItemStack transferToTankUsingFluidContainer(ItemStack item, IInventory origin, ITankMachine destination, int tankID, boolean doAdd)
+ {
+ if ((item == null) || (!(item.getItem() instanceof IFluidContainerItem))) {
+ return item;
+ }
+ IFluidContainerItem fluidContainer = (IFluidContainerItem)item.getItem();
+ FluidStack fluid = fluidContainer.getFluid(item);
+ if (fluid == null) {
+ return item;
+ }
+ IFluidTank tank = destination.getTanks()[tankID];
+
+ IValidatedTankContainer validated = (IValidatedTankContainer)Machine.getInterface(IValidatedTankContainer.class, destination);
+ if ((validated != null) && ((!validated.isLiquidValidForTank(fluid, tankID)) || (validated.isTankReadOnly(tankID)))) {
+ return item;
+ }
+ int maxFill = tank.fill(fluid, false);
+
+ FluidStack toTake = fluidContainer.drain(item, maxFill, true);
+ if (doAdd) {
+ tank.fill(toTake, true);
+ }
+ return item;
+ }
+
+ private ItemStack transferToTankUsingContainerData(ItemStack item, IInventory origin, ITankMachine destination, int tankID, boolean doAdd)
+ {
+ if (item == null) {
+ return item;
+ }
+ FluidStack containerLiquid = null;
+ FluidContainerRegistry.FluidContainerData containerLiquidData = null;
+ for (FluidContainerRegistry.FluidContainerData data : FluidContainerRegistry.getRegisteredFluidContainerData()) {
+ if (data.filledContainer.isItemEqual(item))
+ {
+ containerLiquidData = data;
+ containerLiquid = data.fluid.copy();
+ break;
+ }
+ }
+ if (containerLiquid == null) {
+ return item;
+ }
+ IFluidTank tank = destination.getTanks()[tankID];
+
+ IValidatedTankContainer validated = (IValidatedTankContainer)Machine.getInterface(IValidatedTankContainer.class, destination);
+ if ((validated != null) && (
+ (!validated.isLiquidValidForTank(containerLiquid, tankID)) || (validated.isTankReadOnly(tankID)))) {
+ return item;
+ }
+ FluidStack largeAmountOfLiquid = containerLiquid.copy();
+ largeAmountOfLiquid.amount = tank.getCapacity();
+ int amountAdded = tank.fill(largeAmountOfLiquid, false);
+
+ int numberOfContainersToAdd = amountAdded / containerLiquid.amount;
+ if (numberOfContainersToAdd > item.stackSize) {
+ numberOfContainersToAdd = item.stackSize;
+ }
+ ItemStack leftOverContainers = item.copy();
+ leftOverContainers.stackSize -= numberOfContainersToAdd;
+ if (leftOverContainers.stackSize <= 0) {
+ leftOverContainers = null;
+ }
+ ItemStack emptyContainers = containerLiquidData.emptyContainer.copy();
+ emptyContainers.stackSize = 0;
+ emptyContainers.stackSize += numberOfContainersToAdd;
+ if (emptyContainers.stackSize <= 0) {
+ emptyContainers = null;
+ }
+ TransferRequest containersDump = new TransferRequest(emptyContainers, origin);
+
+ ItemStack containersThatCantBeDumped = containersDump.transfer(false);
+ if (containersThatCantBeDumped != null) {
+ return item;
+ }
+ if (doAdd)
+ {
+ FluidStack liquidToFillTank = containerLiquid.copy();
+ liquidToFillTank.amount *= numberOfContainersToAdd;
+ tank.fill(liquidToFillTank, true);
+ containersDump.transfer(true);
+ }
+ return leftOverContainers;
+ }
+
+ private ItemStack transferFromTank(ItemStack item, IInventory origin, ITankMachine destination, int tankID, boolean doAdd)
+ {
+ item = transferFromTankUsingContainerData(item, origin, destination, tankID, doAdd);
+ item = transferFromTankUsingFluidContainer(item, origin, destination, tankID, doAdd);
+ return item;
+ }
+
+ private ItemStack transferFromTankUsingFluidContainer(ItemStack item, IInventory origin, ITankMachine destination, int tankID, boolean doAdd)
+ {
+ if ((item == null) || (!(item.getItem() instanceof IFluidContainerItem))) {
+ return item;
+ }
+ IFluidContainerItem fluidContainer = (IFluidContainerItem)item.getItem();
+
+ IFluidTank tank = destination.getTanks()[tankID];
+
+ FluidStack fluid = tank.getFluid();
+ if (fluid == null) {
+ return item;
+ }
+ int amount = fluidContainer.fill(item, fluid, false);
+
+ amount = Math.min(amount, tank.drain(amount, false) == null ? 0 : tank.drain(amount, false).amount);
+ if (amount <= 0) {
+ return item;
+ }
+ fluidContainer.fill(item, tank.drain(amount, doAdd), doAdd);
+
+ return item;
+ }
+
+ private ItemStack transferFromTankUsingContainerData(ItemStack item, IInventory origin, ITankMachine destination, int tankID, boolean doAdd)
+ {
+ if (item == null) {
+ return item;
+ }
+ IFluidTank tank = destination.getTanks()[tankID];
+ FluidStack liquidInTank = tank.getFluid();
+ if (liquidInTank == null) {
+ return item;
+ }
+ FluidContainerRegistry.FluidContainerData containerLiquidData = null;
+ for (FluidContainerRegistry.FluidContainerData data : FluidContainerRegistry.getRegisteredFluidContainerData()) {
+ if ((data.emptyContainer.isItemEqual(item)) && (liquidInTank.isFluidEqual(data.fluid)))
+ {
+ containerLiquidData = data;
+ break;
+ }
+ }
+ FluidStack fluid = null;
+ ItemStack filled = null;
+ if (containerLiquidData != null)
+ {
+ fluid = containerLiquidData.fluid;
+ filled = containerLiquidData.filledContainer;
+ }
+ if ((fluid == null) || (filled == null)) {
+ return item;
+ }
+ int maximumExtractedLiquid = item.stackSize * fluid.amount;
+
+ FluidStack drainedLiquid = tank.drain(maximumExtractedLiquid, false);
+ int amountInTank = drainedLiquid == null ? 0 : drainedLiquid.amount;
+
+ int numberOfContainersToFill = amountInTank / fluid.amount;
+ if (numberOfContainersToFill > item.stackSize) {
+ numberOfContainersToFill = item.stackSize;
+ }
+ ItemStack leftOverContainers = item.copy();
+ leftOverContainers.stackSize -= numberOfContainersToFill;
+ if (leftOverContainers.stackSize <= 0) {
+ leftOverContainers = null;
+ }
+ ItemStack filledContainers = filled.copy();
+ filledContainers.stackSize = 0;
+ filledContainers.stackSize += numberOfContainersToFill;
+ if (filledContainers.stackSize <= 0) {
+ filledContainers = null;
+ }
+ TransferRequest containersDump = new TransferRequest(filledContainers, origin);
+
+ ItemStack containersThatCantBeDumped = containersDump.transfer(false);
+ if (containersThatCantBeDumped != null) {
+ return item;
+ }
+ if (doAdd)
+ {
+ tank.drain(maximumExtractedLiquid, true);
+ containersDump.transfer(true);
+ }
+ return leftOverContainers;
+ }
+
+ private List<TransferSlot> insertedSlots = new ArrayList();
+ private List<Integer> insertedTanks = new ArrayList();
+
+ public List<TransferSlot> getInsertedSlots()
+ {
+ return this.insertedSlots;
+ }
+
+ public List<Integer> getInsertedTanks()
+ {
+ return this.insertedTanks;
+ }
+
+ public static class TransferSlot
+ {
+ public int id;
+ public IInventory inventory;
+
+ public TransferSlot(int id, IInventory inventory)
+ {
+ this.id = id;
+ this.inventory = inventory;
+ }
+ }
+
+ public IInventory getOrigin()
+ {
+ return this.origin;
+ }
+
+ public IInventory getDestination()
+ {
+ return this.destination;
+ }
+
+ public ItemStack getItemToTransfer()
+ {
+ return this.itemToTransfer;
+ }
+
+ public int[] getTargetSlots()
+ {
+ return this.targetSlots;
+ }
+
+ public int[] getTargetTanks()
+ {
+ return this.targetTanks;
+ }
+}
diff --git a/src/Java/binnie/core/mod/config/BinnieConfiguration.java b/src/Java/binnie/core/mod/config/BinnieConfiguration.java
new file mode 100644
index 0000000000..09e5a657da
--- /dev/null
+++ b/src/Java/binnie/core/mod/config/BinnieConfiguration.java
@@ -0,0 +1,21 @@
+package binnie.core.mod.config;
+
+import binnie.core.AbstractMod;
+import binnie.core.BinnieCore;
+import binnie.core.proxy.BinnieProxy;
+import java.io.File;
+import net.minecraftforge.common.config.Configuration;
+
+class BinnieConfiguration
+ extends Configuration
+{
+ public AbstractMod mod;
+ private String filename;
+
+ public BinnieConfiguration(String filename, AbstractMod mod)
+ {
+ super(new File(BinnieCore.proxy.getDirectory(), filename));
+ this.mod = mod;
+ this.filename = filename;
+ }
+}
diff --git a/src/Java/binnie/core/mod/config/BinnieItemData.java b/src/Java/binnie/core/mod/config/BinnieItemData.java
new file mode 100644
index 0000000000..435edc122d
--- /dev/null
+++ b/src/Java/binnie/core/mod/config/BinnieItemData.java
@@ -0,0 +1,15 @@
+package binnie.core.mod.config;
+
+class BinnieItemData
+{
+ private int item;
+ private BinnieConfiguration configFile;
+ private String configKey;
+
+ public BinnieItemData(int item, BinnieConfiguration configFile, String configKey)
+ {
+ this.item = item;
+ this.configFile = configFile;
+ this.configKey = configKey;
+ }
+}
diff --git a/src/Java/binnie/core/mod/config/ConfigFile.java b/src/Java/binnie/core/mod/config/ConfigFile.java
new file mode 100644
index 0000000000..425ee52e98
--- /dev/null
+++ b/src/Java/binnie/core/mod/config/ConfigFile.java
@@ -0,0 +1,11 @@
+package binnie.core.mod.config;
+
+import java.lang.annotation.Annotation;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+@Retention(RetentionPolicy.RUNTIME)
+public @interface ConfigFile
+{
+ String filename();
+}
diff --git a/src/Java/binnie/core/mod/config/ConfigProperty.java b/src/Java/binnie/core/mod/config/ConfigProperty.java
new file mode 100644
index 0000000000..d8e5f48339
--- /dev/null
+++ b/src/Java/binnie/core/mod/config/ConfigProperty.java
@@ -0,0 +1,26 @@
+package binnie.core.mod.config;
+
+import java.lang.annotation.Annotation;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Retention(RetentionPolicy.RUNTIME)
+@Target({java.lang.annotation.ElementType.FIELD})
+public @interface ConfigProperty
+{
+ String key();
+
+ String category() default "";
+
+ String[] comment() default {};
+
+ @Retention(RetentionPolicy.RUNTIME)
+ @Target({java.lang.annotation.ElementType.ANNOTATION_TYPE})
+ public static @interface Type
+ {
+ Class<? extends PropertyBase> propertyClass();
+
+ String category() default "general";
+ }
+}
diff --git a/src/Java/binnie/core/mod/config/ConfigurationMain.java b/src/Java/binnie/core/mod/config/ConfigurationMain.java
new file mode 100644
index 0000000000..e7924abe47
--- /dev/null
+++ b/src/Java/binnie/core/mod/config/ConfigurationMain.java
@@ -0,0 +1,4 @@
+package binnie.core.mod.config;
+
+@ConfigFile(filename="/config/forestry/binniecore/main.conf")
+public class ConfigurationMain {}
diff --git a/src/Java/binnie/core/mod/config/ConfigurationMods.java b/src/Java/binnie/core/mod/config/ConfigurationMods.java
new file mode 100644
index 0000000000..77c2f66930
--- /dev/null
+++ b/src/Java/binnie/core/mod/config/ConfigurationMods.java
@@ -0,0 +1,18 @@
+package binnie.core.mod.config;
+
+@ConfigFile(filename="/config/forestry/binnie-mods.conf")
+public class ConfigurationMods
+{
+ @ConfigProperty(key="extraBees", comment={"Enables the Extra Bees Mod."})
+ @PropBoolean
+ public static boolean extraBees = true;
+ @ConfigProperty(key="extraTrees", comment={"Enables the Extra Trees Mod."})
+ @PropBoolean
+ public static boolean extraTrees = true;
+ @ConfigProperty(key="botany", comment={"Enables the Botany Mod."})
+ @PropBoolean
+ public static boolean botany = true;
+ @ConfigProperty(key="genetics", comment={"Enables the Genetics Mod."})
+ @PropBoolean
+ public static boolean genetics = true;
+}
diff --git a/src/Java/binnie/core/mod/config/ManagerConfig.java b/src/Java/binnie/core/mod/config/ManagerConfig.java
new file mode 100644
index 0000000000..16e6df78f4
--- /dev/null
+++ b/src/Java/binnie/core/mod/config/ManagerConfig.java
@@ -0,0 +1,71 @@
+package binnie.core.mod.config;
+
+import binnie.core.AbstractMod;
+import binnie.core.ManagerBase;
+import java.lang.annotation.Annotation;
+import java.lang.reflect.Constructor;
+import java.lang.reflect.Field;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import net.minecraftforge.common.config.Configuration;
+
+public class ManagerConfig
+ extends ManagerBase
+{
+ private Map<Class<?>, Configuration> configurations = new LinkedHashMap();
+
+ public void registerConfiguration(Class<?> cls, AbstractMod mod)
+ {
+ if (cls.isAnnotationPresent(ConfigFile.class)) {
+ loadConfiguration(cls, mod);
+ }
+ }
+
+ public void loadConfiguration(Class<?> cls, AbstractMod mod)
+ {
+ try
+ {
+ String filename = ((ConfigFile)cls.getAnnotation(ConfigFile.class)).filename();
+
+
+ BinnieConfiguration config = new BinnieConfiguration(filename, mod);
+
+ config.load();
+ for (Field field : cls.getFields()) {
+ if (field.isAnnotationPresent(ConfigProperty.class))
+ {
+ ConfigProperty propertyAnnot = (ConfigProperty)field.getAnnotation(ConfigProperty.class);
+ PropertyBase property;
+ for (Annotation annotation : field.getAnnotations()) {
+ if (annotation.annotationType().isAnnotationPresent(ConfigProperty.Type.class))
+ {
+ Class<?> propertyClass = ((ConfigProperty.Type)annotation.annotationType().getAnnotation(ConfigProperty.Type.class)).propertyClass();
+
+ property = (PropertyBase)propertyClass.getConstructor(new Class[] { Field.class, BinnieConfiguration.class, ConfigProperty.class, annotation.annotationType() }).newInstance(new Object[] { field, config, propertyAnnot, annotation.annotationType().cast(annotation) });
+ }
+ }
+ }
+ }
+ config.save();
+
+ this.configurations.put(cls, config);
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ }
+ }
+
+ private Map<AbstractMod, List<BinnieItemData>> itemIDs = new HashMap();
+
+ public void addItemID(Integer configValue, String configKey, BinnieConfiguration configFile)
+ {
+ if (!this.itemIDs.containsKey(configFile.mod)) {
+ this.itemIDs.put(configFile.mod, new ArrayList());
+ }
+ ((List)this.itemIDs.get(configFile.mod)).add(new BinnieItemData(configValue.intValue() + 256, configFile, configKey));
+ }
+}
diff --git a/src/Java/binnie/core/mod/config/PropBoolean.java b/src/Java/binnie/core/mod/config/PropBoolean.java
new file mode 100644
index 0000000000..fc9094bdd8
--- /dev/null
+++ b/src/Java/binnie/core/mod/config/PropBoolean.java
@@ -0,0 +1,38 @@
+package binnie.core.mod.config;
+
+import java.lang.annotation.Annotation;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.reflect.Field;
+import net.minecraftforge.common.config.Configuration;
+import net.minecraftforge.common.config.Property;
+
+@Retention(RetentionPolicy.RUNTIME)
+@ConfigProperty.Type(propertyClass=PropertyBoolean.class)
+public @interface PropBoolean
+{
+ public static class PropertyBoolean
+ extends PropertyBase<Boolean, PropBoolean>
+ {
+ public PropertyBoolean(Field field, BinnieConfiguration file, ConfigProperty configProperty, PropBoolean annotedProperty)
+ throws IllegalArgumentException, IllegalAccessException
+ {
+ super(file, configProperty, annotedProperty);
+ }
+
+ protected Property getProperty()
+ {
+ return this.file.get(getCategory(), getKey(), ((Boolean)this.defaultValue).booleanValue());
+ }
+
+ protected Boolean getConfigValue()
+ {
+ return Boolean.valueOf(this.property.getBoolean(((Boolean)this.defaultValue).booleanValue()));
+ }
+
+ protected void addComments()
+ {
+ addComment("Default value is " + this.defaultValue + ".");
+ }
+ }
+}
diff --git a/src/Java/binnie/core/mod/config/PropDouble.java b/src/Java/binnie/core/mod/config/PropDouble.java
new file mode 100644
index 0000000000..331cd2774c
--- /dev/null
+++ b/src/Java/binnie/core/mod/config/PropDouble.java
@@ -0,0 +1,38 @@
+package binnie.core.mod.config;
+
+import java.lang.annotation.Annotation;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.reflect.Field;
+import net.minecraftforge.common.config.Configuration;
+import net.minecraftforge.common.config.Property;
+
+@Retention(RetentionPolicy.RUNTIME)
+@ConfigProperty.Type(propertyClass=PropertyDouble.class)
+public @interface PropDouble
+{
+ public static class PropertyDouble
+ extends PropertyBase<Double, PropDouble>
+ {
+ public PropertyDouble(Field field, BinnieConfiguration file, ConfigProperty configProperty, PropDouble annotedProperty)
+ throws IllegalArgumentException, IllegalAccessException
+ {
+ super(file, configProperty, annotedProperty);
+ }
+
+ protected Property getProperty()
+ {
+ return this.file.get(getCategory(), getKey(), ((Double)this.defaultValue).doubleValue());
+ }
+
+ protected Double getConfigValue()
+ {
+ return Double.valueOf(this.property.getDouble(((Double)this.defaultValue).doubleValue()));
+ }
+
+ protected void addComments()
+ {
+ addComment("Default value is " + this.defaultValue + ".");
+ }
+ }
+}
diff --git a/src/Java/binnie/core/mod/config/PropInteger.java b/src/Java/binnie/core/mod/config/PropInteger.java
new file mode 100644
index 0000000000..f74c625a8c
--- /dev/null
+++ b/src/Java/binnie/core/mod/config/PropInteger.java
@@ -0,0 +1,38 @@
+package binnie.core.mod.config;
+
+import java.lang.annotation.Annotation;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.reflect.Field;
+import net.minecraftforge.common.config.Configuration;
+import net.minecraftforge.common.config.Property;
+
+@Retention(RetentionPolicy.RUNTIME)
+@ConfigProperty.Type(propertyClass=PropertyInteger.class)
+public @interface PropInteger
+{
+ public static class PropertyInteger
+ extends PropertyBase<Integer, PropInteger>
+ {
+ public PropertyInteger(Field field, BinnieConfiguration file, ConfigProperty configProperty, PropInteger annotedProperty)
+ throws IllegalArgumentException, IllegalAccessException
+ {
+ super(file, configProperty, annotedProperty);
+ }
+
+ protected Property getProperty()
+ {
+ return this.file.get(getCategory(), getKey(), ((Integer)this.defaultValue).intValue());
+ }
+
+ protected Integer getConfigValue()
+ {
+ return Integer.valueOf(this.property.getInt(((Integer)this.defaultValue).intValue()));
+ }
+
+ protected void addComments()
+ {
+ addComment("Default value is " + this.defaultValue + ".");
+ }
+ }
+}
diff --git a/src/Java/binnie/core/mod/config/PropPercentage.java b/src/Java/binnie/core/mod/config/PropPercentage.java
new file mode 100644
index 0000000000..b51d8e3abf
--- /dev/null
+++ b/src/Java/binnie/core/mod/config/PropPercentage.java
@@ -0,0 +1,43 @@
+package binnie.core.mod.config;
+
+import java.lang.annotation.Annotation;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.reflect.Field;
+import net.minecraftforge.common.config.Configuration;
+import net.minecraftforge.common.config.Property;
+
+@Retention(RetentionPolicy.RUNTIME)
+@ConfigProperty.Type(propertyClass=PropertyPercentage.class)
+public @interface PropPercentage
+{
+ int upper() default 100;
+
+ int lower() default 0;
+
+ public static class PropertyPercentage
+ extends PropertyBase<Integer, PropPercentage>
+ {
+ public PropertyPercentage(Field field, BinnieConfiguration file, ConfigProperty configProperty, PropPercentage annotedProperty)
+ throws IllegalArgumentException, IllegalAccessException
+ {
+ super(file, configProperty, annotedProperty);
+ }
+
+ protected Integer getConfigValue()
+ {
+ return Integer.valueOf(this.property.getInt(((Integer)this.defaultValue).intValue()));
+ }
+
+ protected void addComments()
+ {
+ addComment("Default value is " + this.defaultValue + "%.");
+ addComment("Range is " + ((PropPercentage)this.annotatedProperty).lower() + "-" + ((PropPercentage)this.annotatedProperty).upper() + "%.");
+ }
+
+ protected Property getProperty()
+ {
+ return this.file.get(getCategory(), getKey(), ((Integer)this.defaultValue).intValue());
+ }
+ }
+}
diff --git a/src/Java/binnie/core/mod/config/PropertyBase.java b/src/Java/binnie/core/mod/config/PropertyBase.java
new file mode 100644
index 0000000000..8ad13f833e
--- /dev/null
+++ b/src/Java/binnie/core/mod/config/PropertyBase.java
@@ -0,0 +1,72 @@
+package binnie.core.mod.config;
+
+import java.lang.annotation.Annotation;
+import java.lang.reflect.Field;
+import java.util.ArrayList;
+import java.util.List;
+import net.minecraftforge.common.config.Configuration;
+import net.minecraftforge.common.config.Property;
+
+abstract class PropertyBase<ValueType, AnnotationType extends Annotation>
+{
+ Configuration file;
+ Property property;
+ ValueType defaultValue;
+ private ConfigProperty configProperty;
+ AnnotationType annotatedProperty;
+ private List<String> comments = new ArrayList();
+ private Field field;
+
+ protected PropertyBase(Field field, BinnieConfiguration file, ConfigProperty configProperty, AnnotationType annotedProperty)
+ throws IllegalArgumentException, IllegalAccessException
+ {
+ this.field = field;
+ this.file = file;
+ this.configProperty = configProperty;
+ this.annotatedProperty = annotedProperty;
+ this.defaultValue = getDefaultValue(field);
+ this.property = getProperty();
+ for (String comment : configProperty.comment()) {
+ addComment(comment);
+ }
+ addComments();
+ this.property.comment = getComment();
+ field.set(null, getConfigValue());
+ }
+
+ protected abstract Property getProperty();
+
+ protected abstract ValueType getConfigValue();
+
+ protected abstract void addComments();
+
+ protected String getCategory()
+ {
+ return this.configProperty.category().equals("") ? ((ConfigProperty.Type)this.annotatedProperty.annotationType().getAnnotation(ConfigProperty.Type.class)).category() : this.configProperty.category();
+ }
+
+ protected String getKey()
+ {
+ return this.configProperty.key();
+ }
+
+ protected ValueType getDefaultValue(Field field)
+ throws IllegalArgumentException, IllegalAccessException
+ {
+ return field.get(null);
+ }
+
+ protected void addComment(String comment)
+ {
+ this.comments.add(comment);
+ }
+
+ protected String getComment()
+ {
+ String comment = "";
+ for (String com : this.comments) {
+ comment = comment + com + " ";
+ }
+ return comment;
+ }
+}
diff --git a/src/Java/binnie/core/mod/parser/FieldParser.java b/src/Java/binnie/core/mod/parser/FieldParser.java
new file mode 100644
index 0000000000..c063d5aca9
--- /dev/null
+++ b/src/Java/binnie/core/mod/parser/FieldParser.java
@@ -0,0 +1,55 @@
+package binnie.core.mod.parser;
+
+import binnie.core.AbstractMod;
+import java.lang.reflect.Field;
+import java.util.ArrayList;
+import java.util.Collection;
+
+public abstract class FieldParser
+{
+ public static Collection<FieldParser> parsers = new ArrayList();
+
+ public abstract boolean isHandled(Field paramField, AbstractMod paramAbstractMod);
+
+ public void preInit(Field field, AbstractMod mod)
+ throws IllegalArgumentException, IllegalAccessException
+ {}
+
+ public void init(Field field, AbstractMod mod)
+ throws IllegalArgumentException, IllegalAccessException
+ {}
+
+ public void postInit(Field field, AbstractMod mod)
+ throws IllegalArgumentException, IllegalAccessException
+ {}
+
+ public static void preInitParse(Field field, AbstractMod mod)
+ throws IllegalArgumentException, IllegalAccessException
+ {
+ for (FieldParser parser : parsers) {
+ if (parser.isHandled(field, mod)) {
+ parser.preInit(field, mod);
+ }
+ }
+ }
+
+ public static void initParse(Field field, AbstractMod mod)
+ throws IllegalArgumentException, IllegalAccessException
+ {
+ for (FieldParser parser : parsers) {
+ if (parser.isHandled(field, mod)) {
+ parser.init(field, mod);
+ }
+ }
+ }
+
+ public static void postInitParse(Field field, AbstractMod mod)
+ throws IllegalArgumentException, IllegalAccessException
+ {
+ for (FieldParser parser : parsers) {
+ if (parser.isHandled(field, mod)) {
+ parser.postInit(field, mod);
+ }
+ }
+ }
+}
diff --git a/src/Java/binnie/core/mod/parser/ItemParser.java b/src/Java/binnie/core/mod/parser/ItemParser.java
new file mode 100644
index 0000000000..8892a20aba
--- /dev/null
+++ b/src/Java/binnie/core/mod/parser/ItemParser.java
@@ -0,0 +1,24 @@
+package binnie.core.mod.parser;
+
+import binnie.core.AbstractMod;
+import cpw.mods.fml.common.registry.GameRegistry;
+import java.lang.reflect.Field;
+import net.minecraft.item.Item;
+
+public class ItemParser
+ extends FieldParser
+{
+ public boolean isHandled(Field field, AbstractMod mod)
+ {
+ return Item.class.isAssignableFrom(field.getType());
+ }
+
+ public void preInit(Field field, AbstractMod mod)
+ throws IllegalArgumentException, IllegalAccessException
+ {
+ Item item = (Item)field.get(null);
+ if (item != null) {
+ GameRegistry.registerItem(item, item.getUnlocalizedName().substring(5));
+ }
+ }
+}
diff --git a/src/Java/binnie/core/multiblock/BlockMultiblockMachine.java b/src/Java/binnie/core/multiblock/BlockMultiblockMachine.java
new file mode 100644
index 0000000000..c2c549e1bd
--- /dev/null
+++ b/src/Java/binnie/core/multiblock/BlockMultiblockMachine.java
@@ -0,0 +1,27 @@
+package binnie.core.multiblock;
+
+import net.minecraft.block.BlockContainer;
+import net.minecraft.block.material.Material;
+import net.minecraft.tileentity.TileEntity;
+import net.minecraft.world.World;
+
+public class BlockMultiblockMachine
+ extends BlockContainer
+{
+ public BlockMultiblockMachine(String blockName)
+ {
+ super(Material.iron);
+ setHardness(1.5F);
+ setBlockName(blockName);
+ }
+
+ public TileEntity createTileEntity(World world, int metadata)
+ {
+ return new TileEntityMultiblockMachine();
+ }
+
+ public TileEntity createNewTileEntity(World var1, int i)
+ {
+ return new TileEntityMultiblockMachine();
+ }
+}
diff --git a/src/Java/binnie/core/multiblock/TileEntityMultiblockMachine.java b/src/Java/binnie/core/multiblock/TileEntityMultiblockMachine.java
new file mode 100644
index 0000000000..0aaefc91c4
--- /dev/null
+++ b/src/Java/binnie/core/multiblock/TileEntityMultiblockMachine.java
@@ -0,0 +1,37 @@
+package binnie.core.multiblock;
+
+import binnie.core.machines.Machine;
+import binnie.core.machines.TileEntityMachine;
+import net.minecraft.tileentity.TileEntity;
+import net.minecraft.world.World;
+
+class TileEntityMultiblockMachine
+ extends TileEntity
+{
+ private boolean inStructure;
+ private int tileX;
+ private int tileY;
+ private int tileZ;
+
+ boolean inStructure()
+ {
+ return this.inStructure;
+ }
+
+ public Machine getMachine()
+ {
+ return getMasterMachine();
+ }
+
+ private Machine getMasterMachine()
+ {
+ if (!this.inStructure) {
+ return null;
+ }
+ TileEntity tile = this.worldObj.getTileEntity(this.xCoord + this.tileX, this.yCoord + this.tileY, this.zCoord + this.tileZ);
+ if ((tile instanceof TileEntityMachine)) {
+ return ((TileEntityMachine)tile).getMachine();
+ }
+ return null;
+ }
+}
diff --git a/src/Java/binnie/core/network/BinnieCorePacketID.java b/src/Java/binnie/core/network/BinnieCorePacketID.java
new file mode 100644
index 0000000000..669065ca45
--- /dev/null
+++ b/src/Java/binnie/core/network/BinnieCorePacketID.java
@@ -0,0 +1,77 @@
+package binnie.core.network;
+
+import binnie.core.BinnieCore;
+import binnie.core.block.TileEntityMetadata;
+import binnie.core.machines.IMachine;
+import binnie.core.machines.Machine;
+import binnie.core.machines.network.INetwork.TilePacketSync;
+import binnie.core.network.packet.MessageBinnie;
+import binnie.core.network.packet.MessageCraftGUI;
+import binnie.core.network.packet.MessageMetadata;
+import binnie.core.network.packet.MessageTileNBT;
+import binnie.core.network.packet.MessageUpdate;
+import binnie.core.proxy.BinnieProxy;
+import binnie.craftgui.minecraft.ContainerCraftGUI;
+import cpw.mods.fml.common.network.simpleimpl.MessageContext;
+import cpw.mods.fml.relauncher.Side;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.network.NetHandlerPlayServer;
+import net.minecraft.tileentity.TileEntity;
+
+public enum BinnieCorePacketID
+ implements IPacketID
+{
+ NetworkEntityUpdate, TileMetadata, CraftGUIAction, TileDescriptionSync;
+
+ private BinnieCorePacketID() {}
+
+ public void onMessage(MessageBinnie message, MessageContext context)
+ {
+ if (this == NetworkEntityUpdate)
+ {
+ MessageUpdate packet = new MessageUpdate(message);
+ TileEntity tile = packet.getTileEntity(BinnieCore.proxy.getWorld());
+ if ((tile instanceof INetworkedEntity)) {
+ ((INetworkedEntity)tile).readFromPacket(packet.payload);
+ }
+ }
+ else if (this == TileMetadata)
+ {
+ MessageMetadata packet = new MessageMetadata(message);
+ TileEntity tile = packet.getTileEntity(BinnieCore.proxy.getWorld());
+ if ((tile instanceof TileEntityMetadata)) {
+ ((TileEntityMetadata)tile).setTileMetadata(packet.meta, true);
+ }
+ }
+ else if ((this == CraftGUIAction) && (context.side == Side.CLIENT))
+ {
+ MessageCraftGUI packet = new MessageCraftGUI(message);
+
+ EntityPlayer player = BinnieCore.proxy.getPlayer();
+ if (((player.openContainer instanceof ContainerCraftGUI)) && (packet.getTagCompound() != null)) {
+ ((ContainerCraftGUI)player.openContainer).recieveNBT(Side.CLIENT, player, packet.getTagCompound());
+ }
+ }
+ else if ((this == CraftGUIAction) && (context.side == Side.SERVER) && ((context.netHandler instanceof NetHandlerPlayServer)))
+ {
+ MessageCraftGUI packet = new MessageCraftGUI(message);
+
+ EntityPlayer player = ((NetHandlerPlayServer)context.netHandler).playerEntity;
+ if (((player.openContainer instanceof ContainerCraftGUI)) && (packet.getTagCompound() != null)) {
+ ((ContainerCraftGUI)player.openContainer).recieveNBT(Side.SERVER, player, packet.getTagCompound());
+ }
+ }
+ else if ((this == TileDescriptionSync) && (context.side == Side.CLIENT))
+ {
+ MessageTileNBT packet = new MessageTileNBT(message);
+ TileEntity tile = packet.getTarget(BinnieCore.proxy.getWorld());
+ if ((tile != null) && (packet.getTagCompound() != null))
+ {
+ IMachine machine = Machine.getMachine(tile);
+ if ((machine != null) && ((machine instanceof INetwork.TilePacketSync))) {
+ ((INetwork.TilePacketSync)machine).syncFromNBT(packet.getTagCompound());
+ }
+ }
+ }
+ }
+}
diff --git a/src/Java/binnie/core/network/BinniePacketHandler.java b/src/Java/binnie/core/network/BinniePacketHandler.java
new file mode 100644
index 0000000000..c7ad54c120
--- /dev/null
+++ b/src/Java/binnie/core/network/BinniePacketHandler.java
@@ -0,0 +1,43 @@
+package binnie.core.network;
+
+import binnie.core.AbstractMod;
+import binnie.core.network.packet.MessageBinnie;
+import cpw.mods.fml.common.network.simpleimpl.IMessage;
+import cpw.mods.fml.common.network.simpleimpl.IMessageHandler;
+import cpw.mods.fml.common.network.simpleimpl.MessageContext;
+
+public abstract class BinniePacketHandler
+ implements IMessageHandler<MessageBinnie, IMessage>
+{
+ private IPacketProvider provider;
+
+ public BinniePacketHandler(AbstractMod mod)
+ {
+ setProvider(mod);
+ }
+
+ public void setProvider(IPacketProvider provider)
+ {
+ this.provider = provider;
+ }
+
+ public IMessage onMessage(MessageBinnie message, MessageContext ctx)
+ {
+ try
+ {
+ int packetId = message.id;
+ for (IPacketID id : this.provider.getPacketIDs()) {
+ if (id.ordinal() == packetId)
+ {
+ id.onMessage(message, ctx);
+ return null;
+ }
+ }
+ }
+ catch (Exception ex)
+ {
+ throw new RuntimeException(ex);
+ }
+ return null;
+ }
+}
diff --git a/src/Java/binnie/core/network/INetworkedEntity.java b/src/Java/binnie/core/network/INetworkedEntity.java
new file mode 100644
index 0000000000..e126a4559b
--- /dev/null
+++ b/src/Java/binnie/core/network/INetworkedEntity.java
@@ -0,0 +1,10 @@
+package binnie.core.network;
+
+import binnie.core.network.packet.PacketPayload;
+
+public abstract interface INetworkedEntity
+{
+ public abstract void writeToPacket(PacketPayload paramPacketPayload);
+
+ public abstract void readFromPacket(PacketPayload paramPacketPayload);
+}
diff --git a/src/Java/binnie/core/network/IOrdinaled.java b/src/Java/binnie/core/network/IOrdinaled.java
new file mode 100644
index 0000000000..2022f04820
--- /dev/null
+++ b/src/Java/binnie/core/network/IOrdinaled.java
@@ -0,0 +1,6 @@
+package binnie.core.network;
+
+public abstract interface IOrdinaled
+{
+ public abstract int ordinal();
+}
diff --git a/src/Java/binnie/core/network/IPacketID.java b/src/Java/binnie/core/network/IPacketID.java
new file mode 100644
index 0000000000..193fbba617
--- /dev/null
+++ b/src/Java/binnie/core/network/IPacketID.java
@@ -0,0 +1,10 @@
+package binnie.core.network;
+
+import binnie.core.network.packet.MessageBinnie;
+import cpw.mods.fml.common.network.simpleimpl.MessageContext;
+
+public abstract interface IPacketID
+ extends IOrdinaled
+{
+ public abstract void onMessage(MessageBinnie paramMessageBinnie, MessageContext paramMessageContext);
+}
diff --git a/src/Java/binnie/core/network/IPacketProvider.java b/src/Java/binnie/core/network/IPacketProvider.java
new file mode 100644
index 0000000000..98f48f69b3
--- /dev/null
+++ b/src/Java/binnie/core/network/IPacketProvider.java
@@ -0,0 +1,8 @@
+package binnie.core.network;
+
+public abstract interface IPacketProvider
+{
+ public abstract String getChannel();
+
+ public abstract IPacketID[] getPacketIDs();
+}
diff --git a/src/Java/binnie/core/network/packet/IPacket.java b/src/Java/binnie/core/network/packet/IPacket.java
new file mode 100644
index 0000000000..b86516ea41
--- /dev/null
+++ b/src/Java/binnie/core/network/packet/IPacket.java
@@ -0,0 +1,8 @@
+package binnie.core.network.packet;
+
+import net.minecraft.network.Packet;
+
+public abstract interface IPacket
+{
+ public abstract Packet getPacket();
+}
diff --git a/src/Java/binnie/core/network/packet/IPacketLocation.java b/src/Java/binnie/core/network/packet/IPacketLocation.java
new file mode 100644
index 0000000000..d9d46cce70
--- /dev/null
+++ b/src/Java/binnie/core/network/packet/IPacketLocation.java
@@ -0,0 +1,15 @@
+package binnie.core.network.packet;
+
+import net.minecraft.tileentity.TileEntity;
+import net.minecraft.world.World;
+
+abstract interface IPacketLocation
+{
+ public abstract TileEntity getTarget(World paramWorld);
+
+ public abstract int getX();
+
+ public abstract int getY();
+
+ public abstract int getZ();
+}
diff --git a/src/Java/binnie/core/network/packet/IndexInPayload.java b/src/Java/binnie/core/network/packet/IndexInPayload.java
new file mode 100644
index 0000000000..ff59a0783f
--- /dev/null
+++ b/src/Java/binnie/core/network/packet/IndexInPayload.java
@@ -0,0 +1,15 @@
+package binnie.core.network.packet;
+
+public class IndexInPayload
+{
+ public IndexInPayload(int intIndex, int floatIndex, int stringIndex)
+ {
+ this.intIndex = intIndex;
+ this.floatIndex = floatIndex;
+ this.stringIndex = stringIndex;
+ }
+
+ public int intIndex = 0;
+ public int floatIndex = 0;
+ public int stringIndex = 0;
+}
diff --git a/src/Java/binnie/core/network/packet/MachinePayload.java b/src/Java/binnie/core/network/packet/MachinePayload.java
new file mode 100644
index 0000000000..11eb8b62b9
--- /dev/null
+++ b/src/Java/binnie/core/network/packet/MachinePayload.java
@@ -0,0 +1,77 @@
+package binnie.core.network.packet;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class MachinePayload
+{
+ private List<Integer> intPayload = new ArrayList();
+ private List<Float> floatPayload = new ArrayList();
+ private List<String> stringPayload = new ArrayList();
+ private int id = 0;
+
+ public MachinePayload(int id)
+ {
+ this.id = id;
+ this.intPayload.clear();
+ this.floatPayload.clear();
+ this.stringPayload.clear();
+ }
+
+ public MachinePayload() {}
+
+ public void addInteger(int a)
+ {
+ this.intPayload.add(Integer.valueOf(a));
+ }
+
+ public void addFloat(float a)
+ {
+ this.floatPayload.add(Float.valueOf(a));
+ }
+
+ public void addString(String a)
+ {
+ this.stringPayload.add(a);
+ }
+
+ public int getInteger()
+ {
+ return ((Integer)this.intPayload.remove(0)).intValue();
+ }
+
+ public float getFloat()
+ {
+ return ((Float)this.floatPayload.remove(0)).floatValue();
+ }
+
+ public String getString()
+ {
+ return (String)this.stringPayload.remove(0);
+ }
+
+ public void append(MachinePayload other)
+ {
+ if (other == null) {
+ return;
+ }
+ this.intPayload.addAll(other.intPayload);
+ this.floatPayload.addAll(other.floatPayload);
+ this.stringPayload.addAll(other.stringPayload);
+ }
+
+ public boolean isEmpty()
+ {
+ return (this.intPayload.isEmpty()) && (this.floatPayload.isEmpty()) && (this.stringPayload.isEmpty());
+ }
+
+ public int getID()
+ {
+ return this.id;
+ }
+
+ public void setID(int readInt)
+ {
+ this.id = readInt;
+ }
+}
diff --git a/src/Java/binnie/core/network/packet/MessageBase.java b/src/Java/binnie/core/network/packet/MessageBase.java
new file mode 100644
index 0000000000..e18da968ef
--- /dev/null
+++ b/src/Java/binnie/core/network/packet/MessageBase.java
@@ -0,0 +1,69 @@
+package binnie.core.network.packet;
+
+import io.netty.buffer.ByteBuf;
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import net.minecraft.nbt.CompressedStreamTools;
+import net.minecraft.nbt.NBTTagCompound;
+
+public class MessageBase
+{
+ private int id;
+
+ public MessageBase(int id)
+ {
+ this.id = id;
+ }
+
+ public MessageBase(MessageBinnie message)
+ {
+ try
+ {
+ readData(message.data);
+ }
+ catch (IOException e)
+ {
+ e.printStackTrace();
+ }
+ }
+
+ public MessageBinnie GetMessage()
+ {
+ return new MessageBinnie(this.id, this);
+ }
+
+ protected NBTTagCompound readNBTTagCompound(ByteBuf data)
+ throws IOException
+ {
+ short length = data.readShort();
+ if (length < 0) {
+ return null;
+ }
+ byte[] compressed = new byte[length];
+ data.readBytes(compressed);
+ return CompressedStreamTools.readCompressed(new ByteArrayInputStream(compressed));
+ }
+
+ protected void writeNBTTagCompound(NBTTagCompound nbttagcompound, ByteBuf data)
+ throws IOException
+ {
+ if (nbttagcompound == null)
+ {
+ data.writeShort(-1);
+ }
+ else
+ {
+ byte[] compressed = CompressedStreamTools.compress(nbttagcompound);
+ data.writeShort((short)compressed.length);
+ data.writeBytes(compressed);
+ }
+ }
+
+ public void writeData(ByteBuf data)
+ throws IOException
+ {}
+
+ public void readData(ByteBuf data)
+ throws IOException
+ {}
+}
diff --git a/src/Java/binnie/core/network/packet/MessageBinnie.java b/src/Java/binnie/core/network/packet/MessageBinnie.java
new file mode 100644
index 0000000000..0559a07e30
--- /dev/null
+++ b/src/Java/binnie/core/network/packet/MessageBinnie.java
@@ -0,0 +1,40 @@
+package binnie.core.network.packet;
+
+import cpw.mods.fml.common.network.simpleimpl.IMessage;
+import io.netty.buffer.ByteBuf;
+import java.io.IOException;
+
+public final class MessageBinnie
+ implements IMessage
+{
+ public int id;
+ private MessageBase message;
+ ByteBuf data;
+
+ public MessageBinnie() {}
+
+ public MessageBinnie(int id, MessageBase base)
+ {
+ this.id = id;
+ this.message = base;
+ }
+
+ public void toBytes(ByteBuf buf)
+ {
+ buf.writeByte(this.id);
+ try
+ {
+ this.message.writeData(buf);
+ }
+ catch (IOException e)
+ {
+ e.printStackTrace();
+ }
+ }
+
+ public void fromBytes(ByteBuf buf)
+ {
+ this.id = buf.readByte();
+ this.data = buf;
+ }
+}
diff --git a/src/Java/binnie/core/network/packet/MessageContainerUpdate.java b/src/Java/binnie/core/network/packet/MessageContainerUpdate.java
new file mode 100644
index 0000000000..98e64b0d1f
--- /dev/null
+++ b/src/Java/binnie/core/network/packet/MessageContainerUpdate.java
@@ -0,0 +1,17 @@
+package binnie.core.network.packet;
+
+import net.minecraft.nbt.NBTTagCompound;
+
+public class MessageContainerUpdate
+ extends MessageCraftGUI
+{
+ public MessageContainerUpdate(NBTTagCompound nbt)
+ {
+ super(nbt);
+ }
+
+ public MessageContainerUpdate(MessageBinnie message)
+ {
+ super(message);
+ }
+}
diff --git a/src/Java/binnie/core/network/packet/MessageCoordinates.java b/src/Java/binnie/core/network/packet/MessageCoordinates.java
new file mode 100644
index 0000000000..928ed59d05
--- /dev/null
+++ b/src/Java/binnie/core/network/packet/MessageCoordinates.java
@@ -0,0 +1,59 @@
+package binnie.core.network.packet;
+
+import io.netty.buffer.ByteBuf;
+import java.io.IOException;
+import net.minecraft.tileentity.TileEntity;
+import net.minecraft.util.ChunkCoordinates;
+import net.minecraft.world.World;
+
+public class MessageCoordinates
+ extends MessageBase
+{
+ public int posX;
+ public int posY;
+ public int posZ;
+
+ public MessageCoordinates(MessageBinnie message)
+ {
+ super(message);
+ }
+
+ public MessageCoordinates(int id, ChunkCoordinates coordinates)
+ {
+ this(id, coordinates.posX, coordinates.posY, coordinates.posZ);
+ }
+
+ public MessageCoordinates(int id, int posX, int posY, int posZ)
+ {
+ super(id);
+ this.posX = posX;
+ this.posY = posY;
+ this.posZ = posZ;
+ }
+
+ public void writeData(ByteBuf data)
+ throws IOException
+ {
+ data.writeInt(this.posX);
+ data.writeInt(this.posY);
+ data.writeInt(this.posZ);
+ }
+
+ public void readData(ByteBuf data)
+ throws IOException
+ {
+ this.posX = data.readInt();
+ this.posY = data.readInt();
+ this.posZ = data.readInt();
+ }
+
+ public ChunkCoordinates getCoordinates()
+ {
+ return new ChunkCoordinates(this.posX, this.posY, this.posZ);
+ }
+
+ public TileEntity getTileEntity(World world)
+ {
+ return world.getTileEntity(this.posX, this.posY, this.posZ);
+ }
+}
diff --git a/src/Java/binnie/core/network/packet/MessageCraftGUI.java b/src/Java/binnie/core/network/packet/MessageCraftGUI.java
new file mode 100644
index 0000000000..805c4a651b
--- /dev/null
+++ b/src/Java/binnie/core/network/packet/MessageCraftGUI.java
@@ -0,0 +1,18 @@
+package binnie.core.network.packet;
+
+import binnie.core.network.BinnieCorePacketID;
+import net.minecraft.nbt.NBTTagCompound;
+
+public class MessageCraftGUI
+ extends MessageNBT
+{
+ public MessageCraftGUI(MessageBinnie message)
+ {
+ super(message);
+ }
+
+ public MessageCraftGUI(NBTTagCompound action)
+ {
+ super(BinnieCorePacketID.CraftGUIAction.ordinal(), action);
+ }
+}
diff --git a/src/Java/binnie/core/network/packet/MessageMetadata.java b/src/Java/binnie/core/network/packet/MessageMetadata.java
new file mode 100644
index 0000000000..c8ce46dedb
--- /dev/null
+++ b/src/Java/binnie/core/network/packet/MessageMetadata.java
@@ -0,0 +1,36 @@
+package binnie.core.network.packet;
+
+import binnie.core.network.BinnieCorePacketID;
+import io.netty.buffer.ByteBuf;
+import java.io.IOException;
+
+public class MessageMetadata
+ extends MessageCoordinates
+{
+ public int meta;
+
+ public MessageMetadata(int posX, int posY, int posZ, int meta)
+ {
+ super(BinnieCorePacketID.TileMetadata.ordinal(), posX, posY, posZ);
+ this.meta = meta;
+ }
+
+ public MessageMetadata(MessageBinnie message)
+ {
+ super(message);
+ }
+
+ public void writeData(ByteBuf data)
+ throws IOException
+ {
+ super.writeData(data);
+ data.writeInt(this.meta);
+ }
+
+ public void readData(ByteBuf data)
+ throws IOException
+ {
+ super.readData(data);
+ this.meta = data.readInt();
+ }
+}
diff --git a/src/Java/binnie/core/network/packet/MessageNBT.java b/src/Java/binnie/core/network/packet/MessageNBT.java
new file mode 100644
index 0000000000..c1c5345987
--- /dev/null
+++ b/src/Java/binnie/core/network/packet/MessageNBT.java
@@ -0,0 +1,49 @@
+package binnie.core.network.packet;
+
+import io.netty.buffer.ByteBuf;
+import java.io.IOException;
+import net.minecraft.nbt.NBTTagCompound;
+
+public class MessageNBT
+ extends MessageBase
+{
+ NBTTagCompound nbt;
+
+ public NBTTagCompound getTagCompound()
+ {
+ return this.nbt;
+ }
+
+ void setTagCompound(NBTTagCompound nbt)
+ {
+ this.nbt = nbt;
+ }
+
+ public MessageNBT(int id)
+ {
+ super(id);
+ }
+
+ public MessageNBT(int id, NBTTagCompound nbt)
+ {
+ this(id);
+ setTagCompound(nbt);
+ }
+
+ public MessageNBT(MessageBinnie message)
+ {
+ super(message);
+ }
+
+ public void writeData(ByteBuf data)
+ throws IOException
+ {
+ writeNBTTagCompound(this.nbt, data);
+ }
+
+ public void readData(ByteBuf data)
+ throws IOException
+ {
+ this.nbt = readNBTTagCompound(data);
+ }
+}
diff --git a/src/Java/binnie/core/network/packet/MessageTileNBT.java b/src/Java/binnie/core/network/packet/MessageTileNBT.java
new file mode 100644
index 0000000000..7ba41b8d09
--- /dev/null
+++ b/src/Java/binnie/core/network/packet/MessageTileNBT.java
@@ -0,0 +1,82 @@
+package binnie.core.network.packet;
+
+import io.netty.buffer.ByteBuf;
+import java.io.IOException;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.tileentity.TileEntity;
+import net.minecraft.world.World;
+
+public class MessageTileNBT
+ extends MessageNBT
+ implements IPacketLocation
+{
+ private int posX;
+ private int posY;
+ private int posZ;
+
+ public MessageTileNBT(MessageBinnie message)
+ {
+ super(message);
+ }
+
+ public MessageTileNBT(int id, TileEntity tile, NBTTagCompound nbt)
+ {
+ super(id);
+
+ this.posX = tile.xCoord;
+ this.posY = tile.yCoord;
+ this.posZ = tile.zCoord;
+
+ this.nbt = nbt;
+ }
+
+ public void writeData(ByteBuf data)
+ throws IOException
+ {
+ data.writeInt(this.posX);
+ data.writeInt(this.posY);
+ data.writeInt(this.posZ);
+
+ super.writeData(data);
+ }
+
+ public void readData(ByteBuf data)
+ throws IOException
+ {
+ this.posX = data.readInt();
+ this.posY = data.readInt();
+ this.posZ = data.readInt();
+
+ super.readData(data);
+ }
+
+ public TileEntity getTarget(World world)
+ {
+ return world.getTileEntity(this.posX, this.posY, this.posZ);
+ }
+
+ public int getX()
+ {
+ return this.posX;
+ }
+
+ public int getY()
+ {
+ return this.posY;
+ }
+
+ public int getZ()
+ {
+ return this.posZ;
+ }
+
+ public NBTTagCompound getTagCompound()
+ {
+ return this.nbt;
+ }
+
+ void setTagCompound(NBTTagCompound nbt)
+ {
+ this.nbt = nbt;
+ }
+}
diff --git a/src/Java/binnie/core/network/packet/MessageUpdate.java b/src/Java/binnie/core/network/packet/MessageUpdate.java
new file mode 100644
index 0000000000..053246b318
--- /dev/null
+++ b/src/Java/binnie/core/network/packet/MessageUpdate.java
@@ -0,0 +1,92 @@
+package binnie.core.network.packet;
+
+import binnie.core.network.INetworkedEntity;
+import io.netty.buffer.ByteBuf;
+import java.io.IOException;
+import java.util.Iterator;
+import java.util.List;
+import net.minecraft.tileentity.TileEntity;
+import net.minecraft.world.World;
+
+public class MessageUpdate
+ extends MessageCoordinates
+{
+ public PacketPayload payload;
+
+ public MessageUpdate(MessageBinnie message)
+ {
+ super(message);
+ }
+
+ public MessageUpdate(int id, INetworkedEntity tile)
+ {
+ super(id, ((TileEntity)tile).xCoord, ((TileEntity)tile).yCoord, ((TileEntity)tile).zCoord);
+ this.payload = new PacketPayload();
+ tile.writeToPacket(this.payload);
+ }
+
+ public void writeData(ByteBuf data)
+ throws IOException
+ {
+ super.writeData(data);
+ if (this.payload == null)
+ {
+ data.writeInt(0);
+ data.writeInt(0);
+ data.writeInt(0);
+ return;
+ }
+ data.writeInt(this.payload.intPayload.size());
+ data.writeInt(this.payload.floatPayload.size());
+ data.writeInt(this.payload.stringPayload.size());
+ for (Iterator i$ = this.payload.intPayload.iterator(); i$.hasNext();)
+ {
+ int intData = ((Integer)i$.next()).intValue();
+ data.writeInt(intData);
+ }
+ for (Iterator i$ = this.payload.floatPayload.iterator(); i$.hasNext();)
+ {
+ float floatData = ((Float)i$.next()).floatValue();
+ data.writeFloat(floatData);
+ }
+ for (String stringData : this.payload.stringPayload)
+ {
+ byte[] bytes = stringData.getBytes("UTF-8");
+ data.writeShort(bytes.length);
+ data.writeBytes(bytes);
+ }
+ }
+
+ public void readData(ByteBuf data)
+ throws IOException
+ {
+ super.readData(data);
+
+ this.payload = new PacketPayload();
+
+ int intLength = data.readInt();
+ int floatLength = data.readInt();
+ int stringLength = data.readInt();
+
+ this.payload.intPayload.clear();
+ this.payload.floatPayload.clear();
+ this.payload.stringPayload.clear();
+ for (int i = 0; i < intLength; i++) {
+ this.payload.addInteger(data.readInt());
+ }
+ for (int i = 0; i < floatLength; i++) {
+ this.payload.addFloat(data.readFloat());
+ }
+ for (int i = 0; i < stringLength; i++)
+ {
+ int length = data.readShort();
+ byte[] string = data.readBytes(length).array();
+ this.payload.addString(new String(string, "UTF-8"));
+ }
+ }
+
+ public TileEntity getTarget(World world)
+ {
+ return world.getTileEntity(this.posX, this.posY, this.posZ);
+ }
+}
diff --git a/src/Java/binnie/core/network/packet/PacketPayload.java b/src/Java/binnie/core/network/packet/PacketPayload.java
new file mode 100644
index 0000000000..57d1a13759
--- /dev/null
+++ b/src/Java/binnie/core/network/packet/PacketPayload.java
@@ -0,0 +1,70 @@
+package binnie.core.network.packet;
+
+import binnie.core.network.INetworkedEntity;
+import java.util.ArrayList;
+import java.util.List;
+
+public class PacketPayload
+{
+ public List<Integer> intPayload = new ArrayList();
+ public List<Float> floatPayload = new ArrayList();
+ public List<String> stringPayload = new ArrayList();
+
+ public PacketPayload()
+ {
+ this.intPayload.clear();
+ this.floatPayload.clear();
+ this.stringPayload.clear();
+ }
+
+ public PacketPayload(INetworkedEntity tile)
+ {
+ this();
+ tile.writeToPacket(this);
+ }
+
+ public void addInteger(int a)
+ {
+ this.intPayload.add(Integer.valueOf(a));
+ }
+
+ public void addFloat(float a)
+ {
+ this.floatPayload.add(Float.valueOf(a));
+ }
+
+ public void addString(String a)
+ {
+ this.stringPayload.add(a);
+ }
+
+ public int getInteger()
+ {
+ return ((Integer)this.intPayload.remove(0)).intValue();
+ }
+
+ public float getFloat()
+ {
+ return ((Float)this.floatPayload.remove(0)).floatValue();
+ }
+
+ public String getString()
+ {
+ return (String)this.stringPayload.remove(0);
+ }
+
+ public void append(PacketPayload other)
+ {
+ if (other == null) {
+ return;
+ }
+ this.intPayload.addAll(other.intPayload);
+ this.floatPayload.addAll(other.floatPayload);
+ this.stringPayload.addAll(other.stringPayload);
+ }
+
+ public boolean isEmpty()
+ {
+ return (this.intPayload.isEmpty()) && (this.floatPayload.isEmpty()) && (this.stringPayload.isEmpty());
+ }
+}
diff --git a/src/Java/binnie/core/proxy/BinnieModProxy.java b/src/Java/binnie/core/proxy/BinnieModProxy.java
new file mode 100644
index 0000000000..a6697b384f
--- /dev/null
+++ b/src/Java/binnie/core/proxy/BinnieModProxy.java
@@ -0,0 +1,67 @@
+package binnie.core.proxy;
+
+import binnie.Binnie;
+import binnie.core.AbstractMod;
+import binnie.core.BinnieCore;
+import binnie.core.gui.IBinnieGUID;
+import binnie.core.language.ManagerLanguage;
+import binnie.core.network.packet.MessageBase;
+import cpw.mods.fml.common.network.simpleimpl.SimpleNetworkWrapper;
+import net.minecraft.client.renderer.texture.IIconRegister;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.entity.player.EntityPlayerMP;
+import net.minecraft.util.IIcon;
+
+public class BinnieModProxy
+ implements IBinnieModProxy
+{
+ private AbstractMod mod;
+
+ public BinnieModProxy(AbstractMod mod)
+ {
+ this.mod = mod;
+ }
+
+ public void openGui(IBinnieGUID ID, EntityPlayer player, int x, int y, int z)
+ {
+ BinnieCore.proxy.openGui(this.mod, ID.ordinal(), player, x, y, z);
+ }
+
+ public void sendToAll(MessageBase packet)
+ {
+ this.mod.getNetworkWrapper().sendToAll(packet.GetMessage());
+ }
+
+ public void sendToPlayer(MessageBase packet, EntityPlayer entityplayer)
+ {
+ if ((entityplayer instanceof EntityPlayerMP)) {
+ this.mod.getNetworkWrapper().sendTo(packet.GetMessage(), (EntityPlayerMP)entityplayer);
+ }
+ }
+
+ public void sendToServer(MessageBase packet)
+ {
+ this.mod.getNetworkWrapper().sendToServer(packet.GetMessage());
+ }
+
+ public IIcon getIcon(IIconRegister register, String string)
+ {
+ return BinnieCore.proxy.getIcon(register, this.mod.getModID(), string);
+ }
+
+ public void preInit() {}
+
+ public void init() {}
+
+ public void postInit() {}
+
+ public String localise(String string)
+ {
+ return Binnie.Language.localise(this.mod, string);
+ }
+
+ public String localiseOrBlank(String string)
+ {
+ return Binnie.Language.localiseOrBlank(this.mod, string);
+ }
+}
diff --git a/src/Java/binnie/core/proxy/BinnieProxy.java b/src/Java/binnie/core/proxy/BinnieProxy.java
new file mode 100644
index 0000000000..04a63b8c67
--- /dev/null
+++ b/src/Java/binnie/core/proxy/BinnieProxy.java
@@ -0,0 +1,156 @@
+package binnie.core.proxy;
+
+import binnie.core.AbstractMod;
+import binnie.core.BinnieCore;
+import binnie.core.network.BinnieCorePacketID;
+import binnie.core.network.INetworkedEntity;
+import binnie.core.network.packet.MessageUpdate;
+import binnie.core.resource.BinnieResource;
+import cpw.mods.fml.client.registry.RenderingRegistry;
+import cpw.mods.fml.common.FMLCommonHandler;
+import cpw.mods.fml.common.registry.GameRegistry;
+import java.io.File;
+import java.util.Map;
+import net.minecraft.client.Minecraft;
+import net.minecraft.client.renderer.texture.IIconRegister;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.item.Item;
+import net.minecraft.server.MinecraftServer;
+import net.minecraft.tileentity.TileEntity;
+import net.minecraft.util.IIcon;
+import net.minecraft.util.ResourceLocation;
+import net.minecraft.world.World;
+import net.minecraftforge.client.IItemRenderer;
+
+public class BinnieProxy
+ extends BinnieModProxy
+ implements IBinnieProxy
+{
+ public BinnieProxy()
+ {
+ super(BinnieCore.instance);
+ }
+
+ public void preInit() {}
+
+ public void init() {}
+
+ public void postInit() {}
+
+ public void bindTexture(BinnieResource texture) {}
+
+ public boolean checkTexture(BinnieResource location)
+ {
+ return false;
+ }
+
+ public int getUniqueRenderID()
+ {
+ return RenderingRegistry.getNextAvailableRenderId();
+ }
+
+ public void openGui(AbstractMod mod, int id, EntityPlayer player, int x, int y, int z)
+ {
+ player.openGui(mod, id, player.worldObj, x, y, z);
+ }
+
+ public boolean isSimulating(World world)
+ {
+ return true;
+ }
+
+ public void registerCustomItemRenderer(Item item, IItemRenderer itemRenderer) {}
+
+ public boolean needsTagCompoundSynched(Item item)
+ {
+ return item.getShareTag();
+ }
+
+ public World getWorld()
+ {
+ return null;
+ }
+
+ public void throwException(String message, Throwable e)
+ {
+ FMLCommonHandler.instance().raiseException(e, message, true);
+ }
+
+ public Minecraft getMinecraftInstance()
+ {
+ return null;
+ }
+
+ public boolean isClient()
+ {
+ return false;
+ }
+
+ public boolean isServer()
+ {
+ return true;
+ }
+
+ public File getDirectory()
+ {
+ return new File("./");
+ }
+
+ public void registerTileEntity(Class<? extends TileEntity> tile, String id, Object renderer)
+ {
+ GameRegistry.registerTileEntity(tile, id);
+ }
+
+ public void createPipe(Item pipe) {}
+
+ public boolean isDebug()
+ {
+ return System.getenv().containsKey("BINNIE_DEBUG");
+ }
+
+ public void registerBlockRenderer(Object renderer) {}
+
+ public Object createObject(String renderer)
+ {
+ return null;
+ }
+
+ public void sendNetworkEntityPacket(INetworkedEntity entity)
+ {
+ MessageUpdate packet = new MessageUpdate(BinnieCorePacketID.NetworkEntityUpdate.ordinal(), entity);
+ sendToAll(packet);
+ }
+
+ public IIcon getIcon(IIconRegister register, String mod, String name)
+ {
+ return null;
+ }
+
+ private short uniqueTextureUID = 1200;
+
+ public void handleTextureRefresh(IIconRegister register, int type) {}
+
+ public void handlePostTextureRefresh(IIconRegister register, int type) {}
+
+ public short getUniqueTextureUID()
+ {
+ return this.uniqueTextureUID++;
+ }
+
+ public void bindTexture(ResourceLocation location) {}
+
+ public boolean isShiftDown()
+ {
+ return false;
+ }
+
+ public EntityPlayer getPlayer()
+ {
+ return null;
+ }
+
+ public MinecraftServer getServer()
+ {
+ return MinecraftServer.getServer();
+ }
+}
diff --git a/src/Java/binnie/core/proxy/BinnieProxyClient.java b/src/Java/binnie/core/proxy/BinnieProxyClient.java
new file mode 100644
index 0000000000..4eb3db5727
--- /dev/null
+++ b/src/Java/binnie/core/proxy/BinnieProxyClient.java
@@ -0,0 +1,158 @@
+package binnie.core.proxy;
+
+import binnie.Binnie;
+import binnie.core.liquid.ManagerLiquid;
+import binnie.core.resource.BinnieResource;
+import binnie.craftgui.resource.minecraft.CraftGUIResourceManager;
+import cpw.mods.fml.client.FMLClientHandler;
+import cpw.mods.fml.client.registry.ClientRegistry;
+import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler;
+import cpw.mods.fml.client.registry.RenderingRegistry;
+import cpw.mods.fml.common.registry.GameRegistry;
+import java.io.File;
+import java.io.IOException;
+import net.minecraft.client.Minecraft;
+import net.minecraft.client.renderer.texture.IIconRegister;
+import net.minecraft.client.renderer.texture.ITextureObject;
+import net.minecraft.client.renderer.texture.SimpleTexture;
+import net.minecraft.client.renderer.texture.TextureManager;
+import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
+import net.minecraft.client.resources.IReloadableResourceManager;
+import net.minecraft.client.resources.IResourceManager;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.item.Item;
+import net.minecraft.tileentity.TileEntity;
+import net.minecraft.util.IIcon;
+import net.minecraft.util.ResourceLocation;
+import net.minecraft.world.World;
+import net.minecraftforge.client.IItemRenderer;
+import net.minecraftforge.client.MinecraftForgeClient;
+import org.lwjgl.input.Keyboard;
+import org.lwjgl.opengl.GL11;
+
+public final class BinnieProxyClient
+ extends BinnieProxy
+ implements IBinnieProxy
+{
+ public void bindTexture(BinnieResource texture)
+ {
+ GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
+ bindTexture(texture.getResourceLocation());
+ }
+
+ public void bindTexture(ResourceLocation location)
+ {
+ getMinecraftInstance().getTextureManager().bindTexture(location);
+ }
+
+ public boolean checkTexture(BinnieResource location)
+ {
+ SimpleTexture texture = new SimpleTexture(location.getResourceLocation());
+ try
+ {
+ texture.loadTexture(getMinecraftInstance().getResourceManager());
+ }
+ catch (IOException e)
+ {
+ return false;
+ }
+ return true;
+ }
+
+ public boolean isSimulating(World world)
+ {
+ return !world.isRemote;
+ }
+
+ public void registerCustomItemRenderer(Item item, IItemRenderer itemRenderer)
+ {
+ MinecraftForgeClient.registerItemRenderer(item, itemRenderer);
+ }
+
+ public World getWorld()
+ {
+ return getMinecraftInstance().theWorld;
+ }
+
+ public Minecraft getMinecraftInstance()
+ {
+ return FMLClientHandler.instance().getClient();
+ }
+
+ public boolean isClient()
+ {
+ return true;
+ }
+
+ public boolean isServer()
+ {
+ return false;
+ }
+
+ public File getDirectory()
+ {
+ return new File(".");
+ }
+
+ public void registerTileEntity(Class<? extends TileEntity> tile, String id, Object renderer)
+ {
+ if ((renderer != null) && ((renderer instanceof TileEntitySpecialRenderer))) {
+ ClientRegistry.registerTileEntity(tile, id, (TileEntitySpecialRenderer)renderer);
+ } else {
+ GameRegistry.registerTileEntity(tile, id);
+ }
+ }
+
+ public void registerBlockRenderer(Object renderer)
+ {
+ if ((renderer != null) && ((renderer instanceof ISimpleBlockRenderingHandler))) {
+ RenderingRegistry.registerBlockHandler((ISimpleBlockRenderingHandler)renderer);
+ }
+ }
+
+ public void createPipe(Item pipe) {}
+
+ public Object createObject(String renderer)
+ {
+ Object object = null;
+ try
+ {
+ Class<?> rendererClass = Class.forName(renderer);
+ if (rendererClass != null) {
+ object = rendererClass.newInstance();
+ }
+ }
+ catch (Exception e) {}
+ return object;
+ }
+
+ public IIcon getIcon(IIconRegister register, String mod, String name)
+ {
+ return register.registerIcon(mod + ":" + name);
+ }
+
+ public boolean isShiftDown()
+ {
+ return (Keyboard.isKeyDown(42)) || (Keyboard.isKeyDown(54));
+ }
+
+ public EntityPlayer getPlayer()
+ {
+ return Minecraft.getMinecraft().thePlayer;
+ }
+
+ public void handlePreTextureRefresh(IIconRegister register, int type)
+ {
+ if (type == 0) {
+ Binnie.Liquid.reloadIcons(register);
+ }
+ }
+
+ public void preInit()
+ {
+ IResourceManager manager = Minecraft.getMinecraft().getResourceManager();
+ if ((manager instanceof IReloadableResourceManager)) {
+ ((IReloadableResourceManager)manager).registerReloadListener(new CraftGUIResourceManager());
+ }
+ }
+}
diff --git a/src/Java/binnie/core/proxy/BinnieProxyServer.java b/src/Java/binnie/core/proxy/BinnieProxyServer.java
new file mode 100644
index 0000000000..99e0164974
--- /dev/null
+++ b/src/Java/binnie/core/proxy/BinnieProxyServer.java
@@ -0,0 +1,6 @@
+package binnie.core.proxy;
+
+public class BinnieProxyServer
+ extends BinnieProxy
+ implements IBinnieProxy
+{}
diff --git a/src/Java/binnie/core/proxy/IBinnieModProxy.java b/src/Java/binnie/core/proxy/IBinnieModProxy.java
new file mode 100644
index 0000000000..aa9dd11e62
--- /dev/null
+++ b/src/Java/binnie/core/proxy/IBinnieModProxy.java
@@ -0,0 +1,21 @@
+package binnie.core.proxy;
+
+import binnie.core.gui.IBinnieGUID;
+import binnie.core.network.packet.MessageBase;
+import net.minecraft.client.renderer.texture.IIconRegister;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.util.IIcon;
+
+abstract interface IBinnieModProxy
+ extends IProxyCore
+{
+ public abstract void openGui(IBinnieGUID paramIBinnieGUID, EntityPlayer paramEntityPlayer, int paramInt1, int paramInt2, int paramInt3);
+
+ public abstract void sendToAll(MessageBase paramMessageBase);
+
+ public abstract void sendToPlayer(MessageBase paramMessageBase, EntityPlayer paramEntityPlayer);
+
+ public abstract void sendToServer(MessageBase paramMessageBase);
+
+ public abstract IIcon getIcon(IIconRegister paramIIconRegister, String paramString);
+}
diff --git a/src/Java/binnie/core/proxy/IBinnieProxy.java b/src/Java/binnie/core/proxy/IBinnieProxy.java
new file mode 100644
index 0000000000..4ce037aa3d
--- /dev/null
+++ b/src/Java/binnie/core/proxy/IBinnieProxy.java
@@ -0,0 +1,54 @@
+package binnie.core.proxy;
+
+import binnie.core.AbstractMod;
+import binnie.core.resource.BinnieResource;
+import java.io.File;
+import net.minecraft.client.Minecraft;
+import net.minecraft.client.renderer.texture.IIconRegister;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.item.Item;
+import net.minecraft.tileentity.TileEntity;
+import net.minecraft.util.IIcon;
+import net.minecraft.util.ResourceLocation;
+import net.minecraft.world.World;
+import net.minecraftforge.client.IItemRenderer;
+
+public abstract interface IBinnieProxy
+ extends IProxyCore
+{
+ public abstract boolean isClient();
+
+ public abstract boolean isServer();
+
+ public abstract File getDirectory();
+
+ public abstract void bindTexture(BinnieResource paramBinnieResource);
+
+ public abstract void bindTexture(ResourceLocation paramResourceLocation);
+
+ public abstract int getUniqueRenderID();
+
+ public abstract void registerCustomItemRenderer(Item paramItem, IItemRenderer paramIItemRenderer);
+
+ public abstract void openGui(AbstractMod paramAbstractMod, int paramInt1, EntityPlayer paramEntityPlayer, int paramInt2, int paramInt3, int paramInt4);
+
+ public abstract boolean isSimulating(World paramWorld);
+
+ public abstract World getWorld();
+
+ public abstract Minecraft getMinecraftInstance();
+
+ public abstract boolean needsTagCompoundSynched(Item paramItem);
+
+ public abstract Object createObject(String paramString);
+
+ public abstract void registerTileEntity(Class<? extends TileEntity> paramClass, String paramString, Object paramObject);
+
+ public abstract void createPipe(Item paramItem);
+
+ public abstract boolean isDebug();
+
+ public abstract void registerBlockRenderer(Object paramObject);
+
+ public abstract IIcon getIcon(IIconRegister paramIIconRegister, String paramString1, String paramString2);
+}
diff --git a/src/Java/binnie/core/proxy/IProxyCore.java b/src/Java/binnie/core/proxy/IProxyCore.java
new file mode 100644
index 0000000000..4a0d5c231b
--- /dev/null
+++ b/src/Java/binnie/core/proxy/IProxyCore.java
@@ -0,0 +1,7 @@
+package binnie.core.proxy;
+
+import binnie.core.IInitializable;
+
+public abstract interface IProxyCore
+ extends IInitializable
+{}
diff --git a/src/Java/binnie/core/resource/BinnieIcon.java b/src/Java/binnie/core/resource/BinnieIcon.java
new file mode 100644
index 0000000000..cf7f44a018
--- /dev/null
+++ b/src/Java/binnie/core/resource/BinnieIcon.java
@@ -0,0 +1,47 @@
+package binnie.core.resource;
+
+import binnie.Binnie;
+import binnie.core.AbstractMod;
+import binnie.core.BinnieCore;
+import binnie.core.proxy.BinnieProxy;
+import cpw.mods.fml.relauncher.Side;
+import cpw.mods.fml.relauncher.SideOnly;
+import net.minecraft.client.renderer.texture.IIconRegister;
+import net.minecraft.util.IIcon;
+
+public class BinnieIcon
+ extends BinnieResource
+{
+ public BinnieIcon(AbstractMod mod, ResourceType type, String path)
+ {
+ super(mod, type, path);
+ this.textureSheet = (type == ResourceType.Block ? 0 : 1);
+ Binnie.Resource.registerIcon(this);
+ }
+
+ private int textureSheet = 0;
+ private IIcon icon = null;
+
+ public IIcon getIcon()
+ {
+ return this.icon;
+ }
+
+ @SideOnly(Side.CLIENT)
+ public IIcon getIcon(IIconRegister register)
+ {
+ registerIcon(register);
+ return this.icon;
+ }
+
+ @SideOnly(Side.CLIENT)
+ public void registerIcon(IIconRegister register)
+ {
+ this.icon = BinnieCore.proxy.getIcon(register, this.mod, this.path);
+ }
+
+ public int getTextureSheet()
+ {
+ return this.textureSheet;
+ }
+}
diff --git a/src/Java/binnie/core/resource/BinnieResource.java b/src/Java/binnie/core/resource/BinnieResource.java
new file mode 100644
index 0000000000..d9c3d54a0a
--- /dev/null
+++ b/src/Java/binnie/core/resource/BinnieResource.java
@@ -0,0 +1,38 @@
+package binnie.core.resource;
+
+import binnie.core.AbstractMod;
+import net.minecraft.util.ResourceLocation;
+
+public class BinnieResource
+{
+ String mod;
+ private ResourceType type;
+ String path;
+
+ public BinnieResource(AbstractMod mod, ResourceType type, String path)
+ {
+ this(mod.getModID(), type, path);
+ }
+
+ public BinnieResource(String modid, ResourceType type, String path)
+ {
+ this.mod = modid;
+ this.type = type;
+ this.path = path;
+ }
+
+ public String getFullPath()
+ {
+ return "/assets/" + this.mod + "/textures/" + this.type.toString() + "/" + this.path;
+ }
+
+ public ResourceLocation getResourceLocation()
+ {
+ return new ResourceLocation(this.mod, "textures/" + this.type.toString() + "/" + this.path);
+ }
+
+ public String getShortPath()
+ {
+ return "textures/" + this.type.toString() + "/" + this.path;
+ }
+}
diff --git a/src/Java/binnie/core/resource/IBinnieTexture.java b/src/Java/binnie/core/resource/IBinnieTexture.java
new file mode 100644
index 0000000000..8db06e2c6a
--- /dev/null
+++ b/src/Java/binnie/core/resource/IBinnieTexture.java
@@ -0,0 +1,6 @@
+package binnie.core.resource;
+
+public abstract interface IBinnieTexture
+{
+ public abstract BinnieResource getTexture();
+}
diff --git a/src/Java/binnie/core/resource/ManagerResource.java b/src/Java/binnie/core/resource/ManagerResource.java
new file mode 100644
index 0000000000..31a5116931
--- /dev/null
+++ b/src/Java/binnie/core/resource/ManagerResource.java
@@ -0,0 +1,48 @@
+package binnie.core.resource;
+
+import binnie.core.AbstractMod;
+import cpw.mods.fml.relauncher.Side;
+import cpw.mods.fml.relauncher.SideOnly;
+import java.util.ArrayList;
+import java.util.List;
+import net.minecraft.client.renderer.texture.IIconRegister;
+
+public class ManagerResource
+{
+ public BinnieResource getPNG(AbstractMod mod, ResourceType type, String path)
+ {
+ return getFile(mod, type, path + ".png");
+ }
+
+ public BinnieResource getFile(AbstractMod mod, ResourceType type, String path)
+ {
+ return new BinnieResource(mod, type, path);
+ }
+
+ private List<BinnieIcon> icons = new ArrayList();
+
+ public void registerIcon(BinnieIcon binnieIcon)
+ {
+ this.icons.add(binnieIcon);
+ }
+
+ public BinnieIcon getItemIcon(AbstractMod mod, String iconFile)
+ {
+ return new BinnieIcon(mod, ResourceType.Item, iconFile);
+ }
+
+ public BinnieIcon getBlockIcon(AbstractMod mod, String iconFile)
+ {
+ return new BinnieIcon(mod, ResourceType.Block, iconFile);
+ }
+
+ @SideOnly(Side.CLIENT)
+ public void registerIcons(IIconRegister register, int type)
+ {
+ for (BinnieIcon icon : this.icons) {
+ if (icon.getTextureSheet() == type) {
+ icon.registerIcon(register);
+ }
+ }
+ }
+}
diff --git a/src/Java/binnie/core/resource/ResourceType.java b/src/Java/binnie/core/resource/ResourceType.java
new file mode 100644
index 0000000000..e9705ce252
--- /dev/null
+++ b/src/Java/binnie/core/resource/ResourceType.java
@@ -0,0 +1,18 @@
+package binnie.core.resource;
+
+public enum ResourceType
+{
+ Item("items"), Block("blocks"), Tile("tile"), GUI("gui"), FX("fx"), Entity("entities");
+
+ String name;
+
+ private ResourceType(String name)
+ {
+ this.name = name;
+ }
+
+ public String toString()
+ {
+ return this.name;
+ }
+}
diff --git a/src/Java/binnie/core/texture/BinnieCoreTexture.java b/src/Java/binnie/core/texture/BinnieCoreTexture.java
new file mode 100644
index 0000000000..6e8cd9abee
--- /dev/null
+++ b/src/Java/binnie/core/texture/BinnieCoreTexture.java
@@ -0,0 +1,28 @@
+package binnie.core.texture;
+
+import binnie.Binnie;
+import binnie.core.BinnieCore;
+import binnie.core.resource.BinnieResource;
+import binnie.core.resource.IBinnieTexture;
+import binnie.core.resource.ManagerResource;
+import binnie.core.resource.ResourceType;
+
+public enum BinnieCoreTexture
+ implements IBinnieTexture
+{
+ Compartment(ResourceType.Tile, "Compartment"), CompartmentIron(ResourceType.Tile, "CompartmentIron"), CompartmentDiamond(ResourceType.Tile, "CompartmentDiamond"), CompartmentCopper(ResourceType.Tile, "CompartmentCopper"), CompartmentGold(ResourceType.Tile, "CompartmentGold"), CompartmentBronze(ResourceType.Tile, "CompartmentBronze"), GUIBreeding(ResourceType.GUI, "breeding"), GUIAnalyst(ResourceType.GUI, "guianalyst");
+
+ String texture;
+ ResourceType type;
+
+ private BinnieCoreTexture(ResourceType base, String texture)
+ {
+ this.texture = texture;
+ this.type = base;
+ }
+
+ public BinnieResource getTexture()
+ {
+ return Binnie.Resource.getPNG(BinnieCore.instance, this.type, this.texture);
+ }
+}
diff --git a/src/Java/binnie/core/texture/TextureManager.java b/src/Java/binnie/core/texture/TextureManager.java
new file mode 100644
index 0000000000..fceb0539a2
--- /dev/null
+++ b/src/Java/binnie/core/texture/TextureManager.java
@@ -0,0 +1,15 @@
+package binnie.core.texture;
+
+import cpw.mods.fml.relauncher.Side;
+import cpw.mods.fml.relauncher.SideOnly;
+import java.util.ArrayList;
+import java.util.List;
+import javax.swing.Icon;
+
+@SideOnly(Side.CLIENT)
+public class TextureManager
+{
+ static List<Icon> textures = new ArrayList();
+
+ public static void init() {}
+}
diff --git a/src/Java/binnie/core/triggers/ActionProvider.java b/src/Java/binnie/core/triggers/ActionProvider.java
new file mode 100644
index 0000000000..1fa519dc6c
--- /dev/null
+++ b/src/Java/binnie/core/triggers/ActionProvider.java
@@ -0,0 +1,38 @@
+package binnie.core.triggers;
+
+import binnie.core.machines.component.IBuildcraft.ActionProvider;
+import buildcraft.api.statements.IActionExternal;
+import buildcraft.api.statements.IActionInternal;
+import buildcraft.api.statements.IActionProvider;
+import buildcraft.api.statements.IStatementContainer;
+import cpw.mods.fml.common.Optional.Method;
+import java.util.Collection;
+import java.util.LinkedList;
+import net.minecraft.tileentity.TileEntity;
+import net.minecraftforge.common.util.ForgeDirection;
+
+class ActionProvider
+ implements IActionProvider
+{
+ @Optional.Method(modid="BuildCraft|Silicon")
+ public Collection<IActionInternal> getInternalActions(IStatementContainer container)
+ {
+ return null;
+ }
+
+ @Optional.Method(modid="BuildCraft|Silicon")
+ public Collection<IActionExternal> getExternalActions(ForgeDirection side, TileEntity tile)
+ {
+ LinkedList<IActionExternal> list = new LinkedList();
+ if ((tile instanceof IBuildcraft.ActionProvider)) {
+ ((IBuildcraft.ActionProvider)tile).getActions(list);
+ }
+ LinkedList<IActionExternal> list2 = new LinkedList();
+ for (IActionExternal action : list2) {
+ if ((action != null) && (action.getUniqueTag() != null)) {
+ list.add(action);
+ }
+ }
+ return list2;
+ }
+}
diff --git a/src/Java/binnie/core/triggers/BinnieAction.java b/src/Java/binnie/core/triggers/BinnieAction.java
new file mode 100644
index 0000000000..f9c0d24e78
--- /dev/null
+++ b/src/Java/binnie/core/triggers/BinnieAction.java
@@ -0,0 +1,88 @@
+package binnie.core.triggers;
+
+import binnie.Binnie;
+import binnie.core.AbstractMod;
+import binnie.core.BinnieCore;
+import binnie.core.resource.BinnieIcon;
+import binnie.core.resource.ManagerResource;
+import buildcraft.api.statements.IActionExternal;
+import buildcraft.api.statements.IStatement;
+import buildcraft.api.statements.IStatementContainer;
+import buildcraft.api.statements.IStatementParameter;
+import buildcraft.api.statements.StatementManager;
+import cpw.mods.fml.relauncher.Side;
+import cpw.mods.fml.relauncher.SideOnly;
+import net.minecraft.client.renderer.texture.IIconRegister;
+import net.minecraft.tileentity.TileEntity;
+import net.minecraft.util.IIcon;
+import net.minecraftforge.common.util.ForgeDirection;
+
+class BinnieAction
+ implements IActionExternal
+{
+ private static int incrementalID = 800;
+ public static BinnieAction actionPauseProcess;
+ public static BinnieAction actionCancelTask;
+ private String desc;
+ private BinnieIcon icon;
+ private String tag;
+ private int id = 0;
+
+ BinnieAction(String desc, String tag, String iconFile)
+ {
+ this(desc, tag, BinnieCore.instance, iconFile);
+ }
+
+ private BinnieAction(String desc, String tag, AbstractMod mod, String iconFile)
+ {
+ this.id = (incrementalID++);
+ this.tag = tag;
+ StatementManager.registerStatement(this);
+ this.icon = Binnie.Resource.getItemIcon(mod, iconFile);
+ this.desc = desc;
+ }
+
+ public String getDescription()
+ {
+ return this.desc;
+ }
+
+ public String getUniqueTag()
+ {
+ return this.tag;
+ }
+
+ @SideOnly(Side.CLIENT)
+ public IIcon getIcon()
+ {
+ return this.icon.getIcon();
+ }
+
+ @SideOnly(Side.CLIENT)
+ public void registerIcons(IIconRegister iconRegister)
+ {
+ this.icon.registerIcon(iconRegister);
+ }
+
+ public int maxParameters()
+ {
+ return 0;
+ }
+
+ public int minParameters()
+ {
+ return 0;
+ }
+
+ public IStatementParameter createParameter(int index)
+ {
+ return null;
+ }
+
+ public IStatement rotateLeft()
+ {
+ return this;
+ }
+
+ public void actionActivate(TileEntity target, ForgeDirection side, IStatementContainer source, IStatementParameter[] parameters) {}
+}
diff --git a/src/Java/binnie/core/triggers/BinnieTrigger.java b/src/Java/binnie/core/triggers/BinnieTrigger.java
new file mode 100644
index 0000000000..e5cac34dea
--- /dev/null
+++ b/src/Java/binnie/core/triggers/BinnieTrigger.java
@@ -0,0 +1,116 @@
+package binnie.core.triggers;
+
+import binnie.Binnie;
+import binnie.core.AbstractMod;
+import binnie.core.BinnieCore;
+import binnie.core.resource.BinnieIcon;
+import binnie.core.resource.ManagerResource;
+import buildcraft.api.statements.IStatement;
+import buildcraft.api.statements.IStatementContainer;
+import buildcraft.api.statements.IStatementParameter;
+import buildcraft.api.statements.ITriggerExternal;
+import buildcraft.api.statements.StatementManager;
+import cpw.mods.fml.relauncher.Side;
+import cpw.mods.fml.relauncher.SideOnly;
+import java.util.List;
+import net.minecraft.client.renderer.texture.IIconRegister;
+import net.minecraft.tileentity.TileEntity;
+import net.minecraft.util.IIcon;
+import net.minecraftforge.common.util.ForgeDirection;
+
+final class BinnieTrigger
+ implements ITriggerExternal
+{
+ private static int incrementalID = 800;
+ protected static BinnieTrigger triggerNoBlankTemplate;
+ protected static BinnieTrigger triggerNoTemplate;
+ protected static BinnieTrigger triggerIsWorking;
+ protected static BinnieTrigger triggerIsNotWorking;
+ protected static BinnieTrigger triggerCanWork;
+ protected static BinnieTrigger triggerCannotWork;
+ protected static BinnieTrigger triggerPowerNone;
+ protected static BinnieTrigger triggerPowerLow;
+ protected static BinnieTrigger triggerPowerMedium;
+ protected static BinnieTrigger triggerPowerHigh;
+ protected static BinnieTrigger triggerPowerFull;
+ protected static BinnieTrigger triggerSerumFull;
+ protected static BinnieTrigger triggerSerumPure;
+ protected static BinnieTrigger triggerSerumEmpty;
+ protected static BinnieTrigger triggerAcclimatiserNone;
+ protected static BinnieTrigger triggerAcclimatiserHot;
+ protected static BinnieTrigger triggerAcclimatiserCold;
+ protected static BinnieTrigger triggerAcclimatiserWet;
+ protected static BinnieTrigger triggerAcclimatiserDry;
+ private String desc;
+ private String tag;
+ private BinnieIcon icon;
+ private int id = 0;
+
+ public BinnieTrigger(String desc, String tag, String iconFile)
+ {
+ this(desc, tag, BinnieCore.instance, iconFile);
+ }
+
+ public BinnieTrigger(String desc, String tag, AbstractMod mod, String iconFile)
+ {
+ this.id = (incrementalID++);
+ this.tag = tag;
+ StatementManager.registerStatement(this);
+ TriggerProvider.triggers.add(this);
+ this.icon = Binnie.Resource.getItemIcon(mod, iconFile);
+ this.desc = desc;
+ }
+
+ public String getDescription()
+ {
+ return this.desc;
+ }
+
+ @SideOnly(Side.CLIENT)
+ public IIcon getIcon(IIconRegister register)
+ {
+ return this.icon.getIcon(register);
+ }
+
+ public String getUniqueTag()
+ {
+ return this.tag;
+ }
+
+ @SideOnly(Side.CLIENT)
+ public IIcon getIcon()
+ {
+ return this.icon.getIcon();
+ }
+
+ @SideOnly(Side.CLIENT)
+ public void registerIcons(IIconRegister iconRegister)
+ {
+ this.icon.registerIcon(iconRegister);
+ }
+
+ public int maxParameters()
+ {
+ return 0;
+ }
+
+ public int minParameters()
+ {
+ return 0;
+ }
+
+ public IStatementParameter createParameter(int index)
+ {
+ return null;
+ }
+
+ public IStatement rotateLeft()
+ {
+ return null;
+ }
+
+ public boolean isTriggerActive(TileEntity target, ForgeDirection side, IStatementContainer source, IStatementParameter[] parameters)
+ {
+ return false;
+ }
+}
diff --git a/src/Java/binnie/core/triggers/ModuleTrigger.java b/src/Java/binnie/core/triggers/ModuleTrigger.java
new file mode 100644
index 0000000000..1d39e816cb
--- /dev/null
+++ b/src/Java/binnie/core/triggers/ModuleTrigger.java
@@ -0,0 +1,45 @@
+package binnie.core.triggers;
+
+import binnie.core.IInitializable;
+import binnie.extrabees.ExtraBees;
+import buildcraft.api.statements.StatementManager;
+
+public class ModuleTrigger
+ implements IInitializable
+{
+ public void preInit() {}
+
+ public void init()
+ {
+ BinnieAction.actionPauseProcess = new BinnieAction("Pause Process", "binnie.action.pauseProcess", "actions/PauseProcess");
+ BinnieAction.actionCancelTask = new BinnieAction("Cancel Task", "binnie.action.cancelTask", "actions/CancelTask");
+
+ StatementManager.registerActionProvider(new ActionProvider());
+
+ BinnieTrigger.triggerNoBlankTemplate = new BinnieTrigger("No Blank Template", "binnie.trigger.noBlankTemplate", ExtraBees.instance, "triggers/NoBlankTemplate");
+
+
+ BinnieTrigger.triggerNoTemplate = new BinnieTrigger("No Template", "binnie.trigger.noTemplate", ExtraBees.instance, "triggers/NoTemplate");
+
+
+ BinnieTrigger.triggerIsWorking = new BinnieTrigger("Is Working", "binnie.trigger.isWorking", "triggers/IsWorking");
+ BinnieTrigger.triggerIsNotWorking = new BinnieTrigger("Is Not Working", "binnie.trigger.isNotWorking", "triggers/IsNotWorking");
+ BinnieTrigger.triggerCanWork = new BinnieTrigger("Can Work", "binnie.trigger.canWork", "triggers/CanWork");
+ BinnieTrigger.triggerCannotWork = new BinnieTrigger("Cannot Work", "binnie.trigger.cannotWork", "triggers/CannotWork");
+
+ BinnieTrigger.triggerPowerNone = new BinnieTrigger("Power None", "binnie.trigger.powerNone", "triggers/PowerNone");
+ BinnieTrigger.triggerPowerLow = new BinnieTrigger("Power Low", "binnie.trigger.powerLow", "triggers/PowerLow");
+ BinnieTrigger.triggerPowerMedium = new BinnieTrigger("Power Medium", "binnie.trigger.powerMedium", "triggers/PowerMedium");
+ BinnieTrigger.triggerPowerHigh = new BinnieTrigger("Power High", "binnie.trigger.powerHigh", "triggers/PowerHigh");
+ BinnieTrigger.triggerPowerFull = new BinnieTrigger("Power Full", "binnie.trigger.powerFull", "triggers/PowerFull");
+
+
+ BinnieTrigger.triggerSerumFull = new BinnieTrigger("Serum Full", "binnie.trigger.serumFull", ExtraBees.instance, "triggers/SerumFull");
+ BinnieTrigger.triggerSerumPure = new BinnieTrigger("Serum Pure", "binnie.trigger.serumPure", ExtraBees.instance, "triggers/SerumPure");
+ BinnieTrigger.triggerSerumEmpty = new BinnieTrigger("Serum Pure", "binnie.trigger.serumEmpty", ExtraBees.instance, "triggers/SerumEmpty");
+
+ StatementManager.registerTriggerProvider(new TriggerProvider());
+ }
+
+ public void postInit() {}
+}
diff --git a/src/Java/binnie/core/triggers/TriggerData.java b/src/Java/binnie/core/triggers/TriggerData.java
new file mode 100644
index 0000000000..8784e4278a
--- /dev/null
+++ b/src/Java/binnie/core/triggers/TriggerData.java
@@ -0,0 +1,37 @@
+package binnie.core.triggers;
+
+import buildcraft.api.statements.ITriggerExternal;
+import java.util.Map.Entry;
+
+public class TriggerData
+ implements Map.Entry<ITriggerExternal, Boolean>
+{
+ private final ITriggerExternal key;
+ private Boolean value;
+
+ public TriggerData(ITriggerExternal key, Boolean value)
+ {
+ if (key == null) {
+ throw new NullPointerException();
+ }
+ this.key = key;
+ this.value = value;
+ }
+
+ public ITriggerExternal getKey()
+ {
+ return this.key;
+ }
+
+ public Boolean getValue()
+ {
+ return this.value;
+ }
+
+ public Boolean setValue(Boolean value)
+ {
+ Boolean old = this.value;
+ this.value = value;
+ return old;
+ }
+}
diff --git a/src/Java/binnie/core/triggers/TriggerInventory.java b/src/Java/binnie/core/triggers/TriggerInventory.java
new file mode 100644
index 0000000000..2892f12c7e
--- /dev/null
+++ b/src/Java/binnie/core/triggers/TriggerInventory.java
@@ -0,0 +1,11 @@
+package binnie.core.triggers;
+
+import net.minecraft.inventory.IInventory;
+
+public class TriggerInventory
+{
+ private static Boolean isSlotEmpty(IInventory inventory, int slot)
+ {
+ return Boolean.valueOf(inventory.getStackInSlot(slot) != null);
+ }
+}
diff --git a/src/Java/binnie/core/triggers/TriggerPower.java b/src/Java/binnie/core/triggers/TriggerPower.java
new file mode 100644
index 0000000000..69c02decd9
--- /dev/null
+++ b/src/Java/binnie/core/triggers/TriggerPower.java
@@ -0,0 +1,48 @@
+package binnie.core.triggers;
+
+import binnie.core.machines.Machine;
+import binnie.core.machines.power.IPoweredMachine;
+import binnie.core.machines.power.PowerInterface;
+
+public class TriggerPower
+{
+ public static TriggerData powerNone(Object tile)
+ {
+ return new TriggerData(BinnieTrigger.triggerPowerNone, Boolean.valueOf(getPercentage(tile) < 0.0500000007450581D));
+ }
+
+ public static TriggerData powerLow(Object tile)
+ {
+ return new TriggerData(BinnieTrigger.triggerPowerLow, Boolean.valueOf(getPercentage(tile) < 0.3499999940395355D));
+ }
+
+ public static TriggerData powerMedium(Object tile)
+ {
+ double p = getPercentage(tile);
+ return new TriggerData(BinnieTrigger.triggerPowerMedium, Boolean.valueOf((p >= 0.3499999940395355D) && (p <= 0.6499999761581421D)));
+ }
+
+ public static TriggerData powerHigh(Object tile)
+ {
+ double p = getPercentage(tile);
+ return new TriggerData(BinnieTrigger.triggerPowerHigh, Boolean.valueOf(getPercentage(tile) > 0.6499999761581421D));
+ }
+
+ public static TriggerData powerFull(Object tile)
+ {
+ double p = getPercentage(tile);
+ return new TriggerData(BinnieTrigger.triggerPowerFull, Boolean.valueOf(getPercentage(tile) > 0.949999988079071D));
+ }
+
+ private static double getPercentage(Object tile)
+ {
+ IPoweredMachine process = (IPoweredMachine)Machine.getInterface(IPoweredMachine.class, tile);
+ if (process != null)
+ {
+ double percentage = process.getInterface().getEnergy() / process.getInterface().getCapacity();
+
+ return percentage;
+ }
+ return 0.0D;
+ }
+}
diff --git a/src/Java/binnie/core/triggers/TriggerProvider.java b/src/Java/binnie/core/triggers/TriggerProvider.java
new file mode 100644
index 0000000000..fc6da191e8
--- /dev/null
+++ b/src/Java/binnie/core/triggers/TriggerProvider.java
@@ -0,0 +1,57 @@
+package binnie.core.triggers;
+
+import binnie.core.machines.component.IBuildcraft.TriggerProvider;
+import buildcraft.api.statements.IStatementContainer;
+import buildcraft.api.statements.ITriggerExternal;
+import buildcraft.api.statements.ITriggerInternal;
+import buildcraft.api.statements.ITriggerProvider;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.LinkedList;
+import java.util.List;
+import net.minecraft.tileentity.TileEntity;
+import net.minecraftforge.common.util.ForgeDirection;
+
+class TriggerProvider
+ implements ITriggerProvider
+{
+ static TriggerProvider instance = new TriggerProvider();
+ public static List<BinnieTrigger> triggers = new ArrayList();
+
+ public Collection<ITriggerExternal> getExternalTriggers(ForgeDirection side, TileEntity tile)
+ {
+ LinkedList<TriggerData> list = new LinkedList();
+
+ LinkedList<ITriggerExternal> triggerData = new LinkedList();
+ if ((tile instanceof IBuildcraft.TriggerProvider)) {
+ ((IBuildcraft.TriggerProvider)tile).getTriggers(list);
+ }
+ for (TriggerData data : list) {
+ if ((data.getKey() != null) && (data.getKey().getUniqueTag() != null)) {
+ triggerData.add(data.getKey());
+ }
+ }
+ return triggerData;
+ }
+
+ public static boolean isTriggerActive(ITriggerExternal trigger, TileEntity tile)
+ {
+ LinkedList<TriggerData> list = new LinkedList();
+
+ LinkedList<ITriggerExternal> triggerData = new LinkedList();
+ if ((tile instanceof IBuildcraft.TriggerProvider)) {
+ ((IBuildcraft.TriggerProvider)tile).getTriggers(list);
+ }
+ for (TriggerData data : list) {
+ if (data.getKey() == trigger) {
+ return data.getValue().booleanValue();
+ }
+ }
+ return false;
+ }
+
+ public Collection<ITriggerInternal> getInternalTriggers(IStatementContainer container)
+ {
+ return new ArrayList();
+ }
+}
diff --git a/src/Java/binnie/core/triggers/TriggerWorking.java b/src/Java/binnie/core/triggers/TriggerWorking.java
new file mode 100644
index 0000000000..06feee0f86
--- /dev/null
+++ b/src/Java/binnie/core/triggers/TriggerWorking.java
@@ -0,0 +1,47 @@
+package binnie.core.triggers;
+
+import binnie.core.machines.Machine;
+import binnie.core.machines.power.IProcess;
+
+public class TriggerWorking
+{
+ public static TriggerData isNotWorking(Object inventory)
+ {
+ IProcess process = (IProcess)Machine.getInterface(IProcess.class, inventory);
+ boolean b = false;
+ if (process != null) {
+ b = (process.canWork() != null) && (process.canProgress() != null);
+ }
+ return new TriggerData(BinnieTrigger.triggerIsNotWorking, Boolean.valueOf(b));
+ }
+
+ public static TriggerData isWorking(Object inventory)
+ {
+ IProcess process = (IProcess)Machine.getInterface(IProcess.class, inventory);
+ boolean b = false;
+ if (process != null) {
+ b = (process.canWork() == null) && (process.canProgress() == null);
+ }
+ return new TriggerData(BinnieTrigger.triggerIsWorking, Boolean.valueOf(b));
+ }
+
+ public static TriggerData canWork(Object inventory)
+ {
+ IProcess process = (IProcess)Machine.getInterface(IProcess.class, inventory);
+ boolean b = false;
+ if (process != null) {
+ b = process.canWork() == null;
+ }
+ return new TriggerData(BinnieTrigger.triggerCanWork, Boolean.valueOf(b));
+ }
+
+ public static TriggerData cannotWork(Object inventory)
+ {
+ IProcess process = (IProcess)Machine.getInterface(IProcess.class, inventory);
+ boolean b = false;
+ if (process != null) {
+ b = process.canWork() != null;
+ }
+ return new TriggerData(BinnieTrigger.triggerCannotWork, Boolean.valueOf(b));
+ }
+}
diff --git a/src/Java/binnie/core/util/FluidStackSet.java b/src/Java/binnie/core/util/FluidStackSet.java
new file mode 100644
index 0000000000..1283435293
--- /dev/null
+++ b/src/Java/binnie/core/util/FluidStackSet.java
@@ -0,0 +1,128 @@
+package binnie.core.util;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+import net.minecraftforge.fluids.FluidStack;
+
+class FluidStackSet
+ implements Set<FluidStack>
+{
+ public String toString()
+ {
+ return this.itemStacks.toString();
+ }
+
+ List<FluidStack> itemStacks = new ArrayList();
+
+ protected FluidStack getExisting(FluidStack stack)
+ {
+ for (FluidStack stack2 : this.itemStacks) {
+ if (stack2.isFluidEqual(stack)) {
+ return stack2;
+ }
+ }
+ return null;
+ }
+
+ public boolean add(FluidStack e)
+ {
+ if (e != null)
+ {
+ if (getExisting(e) == null) {
+ return this.itemStacks.add(e.copy());
+ }
+ getExisting(e).amount += e.amount;
+ }
+ return false;
+ }
+
+ public boolean addAll(Collection<? extends FluidStack> c)
+ {
+ boolean addedAll = true;
+ for (FluidStack stack : c) {
+ addedAll = (add(stack)) && (addedAll);
+ }
+ return addedAll;
+ }
+
+ public void clear()
+ {
+ this.itemStacks.clear();
+ }
+
+ public boolean contains(Object o)
+ {
+ if (!(o instanceof FluidStack)) {
+ return false;
+ }
+ return getExisting((FluidStack)o) != null;
+ }
+
+ public boolean containsAll(Collection<?> c)
+ {
+ boolean addedAll = true;
+ for (Object o : c) {
+ addedAll = (addedAll) && (contains(o));
+ }
+ return false;
+ }
+
+ public boolean isEmpty()
+ {
+ return this.itemStacks.isEmpty();
+ }
+
+ public Iterator<FluidStack> iterator()
+ {
+ return this.itemStacks.iterator();
+ }
+
+ public boolean remove(Object o)
+ {
+ if (contains(o))
+ {
+ FluidStack r = (FluidStack)o;
+ FluidStack existing = getExisting(r);
+ if (existing.amount > r.amount) {
+ existing.amount -= r.amount;
+ } else {
+ this.itemStacks.remove(existing);
+ }
+ }
+ return false;
+ }
+
+ public boolean removeAll(Collection<?> c)
+ {
+ boolean addedAll = true;
+ for (Object o : c)
+ {
+ boolean removed = remove(o);
+ addedAll = (removed) && (addedAll);
+ }
+ return false;
+ }
+
+ public boolean retainAll(Collection<?> c)
+ {
+ return this.itemStacks.retainAll(c);
+ }
+
+ public int size()
+ {
+ return this.itemStacks.size();
+ }
+
+ public Object[] toArray()
+ {
+ return this.itemStacks.toArray();
+ }
+
+ public <T> T[] toArray(T[] a)
+ {
+ return this.itemStacks.toArray(a);
+ }
+}
diff --git a/src/Java/binnie/core/util/IValidator.java b/src/Java/binnie/core/util/IValidator.java
new file mode 100644
index 0000000000..c6b39dc153
--- /dev/null
+++ b/src/Java/binnie/core/util/IValidator.java
@@ -0,0 +1,6 @@
+package binnie.core.util;
+
+public abstract interface IValidator<T>
+{
+ public abstract boolean isValid(T paramT);
+}
diff --git a/src/Java/binnie/core/util/ItemStackSet.java b/src/Java/binnie/core/util/ItemStackSet.java
new file mode 100644
index 0000000000..a154f7edfc
--- /dev/null
+++ b/src/Java/binnie/core/util/ItemStackSet.java
@@ -0,0 +1,128 @@
+package binnie.core.util;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+import net.minecraft.item.ItemStack;
+
+public class ItemStackSet
+ implements Set<ItemStack>
+{
+ public String toString()
+ {
+ return this.itemStacks.toString();
+ }
+
+ List<ItemStack> itemStacks = new ArrayList();
+
+ protected ItemStack getExisting(ItemStack stack)
+ {
+ for (ItemStack stack2 : this.itemStacks) {
+ if (stack2.isItemEqual(stack)) {
+ return stack2;
+ }
+ }
+ return null;
+ }
+
+ public boolean add(ItemStack e)
+ {
+ if (e != null)
+ {
+ if (getExisting(e) == null) {
+ return this.itemStacks.add(e.copy());
+ }
+ getExisting(e).stackSize += e.stackSize;
+ }
+ return false;
+ }
+
+ public boolean addAll(Collection<? extends ItemStack> c)
+ {
+ boolean addedAll = true;
+ for (ItemStack stack : c) {
+ addedAll = (add(stack)) && (addedAll);
+ }
+ return addedAll;
+ }
+
+ public void clear()
+ {
+ this.itemStacks.clear();
+ }
+
+ public boolean contains(Object o)
+ {
+ if (!(o instanceof ItemStack)) {
+ return false;
+ }
+ return getExisting((ItemStack)o) != null;
+ }
+
+ public boolean containsAll(Collection<?> c)
+ {
+ boolean addedAll = true;
+ for (Object o : c) {
+ addedAll = (addedAll) && (contains(o));
+ }
+ return false;
+ }
+
+ public boolean isEmpty()
+ {
+ return this.itemStacks.isEmpty();
+ }
+
+ public Iterator<ItemStack> iterator()
+ {
+ return this.itemStacks.iterator();
+ }
+
+ public boolean remove(Object o)
+ {
+ if (contains(o))
+ {
+ ItemStack r = (ItemStack)o;
+ ItemStack existing = getExisting(r);
+ if (existing.stackSize > r.stackSize) {
+ existing.stackSize -= r.stackSize;
+ } else {
+ this.itemStacks.remove(existing);
+ }
+ }
+ return false;
+ }
+
+ public boolean removeAll(Collection<?> c)
+ {
+ boolean addedAll = true;
+ for (Object o : c)
+ {
+ boolean removed = remove(o);
+ addedAll = (removed) && (addedAll);
+ }
+ return false;
+ }
+
+ public boolean retainAll(Collection<?> c)
+ {
+ return this.itemStacks.retainAll(c);
+ }
+
+ public int size()
+ {
+ return this.itemStacks.size();
+ }
+
+ public Object[] toArray()
+ {
+ return this.itemStacks.toArray();
+ }
+
+ public <T> T[] toArray(T[] a)
+ {
+ return this.itemStacks.toArray(a);
+ }
+}
diff --git a/src/Java/binnie/core/util/UniqueFluidStackSet.java b/src/Java/binnie/core/util/UniqueFluidStackSet.java
new file mode 100644
index 0000000000..49a7dbab35
--- /dev/null
+++ b/src/Java/binnie/core/util/UniqueFluidStackSet.java
@@ -0,0 +1,28 @@
+package binnie.core.util;
+
+import java.util.List;
+import net.minecraftforge.fluids.FluidStack;
+
+public class UniqueFluidStackSet
+ extends FluidStackSet
+{
+ public boolean add(FluidStack e)
+ {
+ if ((e != null) &&
+ (getExisting(e) == null)) {
+ return this.itemStacks.add(e.copy());
+ }
+ return false;
+ }
+
+ public boolean remove(Object o)
+ {
+ if (contains(o))
+ {
+ FluidStack r = (FluidStack)o;
+ FluidStack existing = getExisting(r);
+ this.itemStacks.remove(existing);
+ }
+ return false;
+ }
+}
diff --git a/src/Java/binnie/core/util/UniqueItemStackSet.java b/src/Java/binnie/core/util/UniqueItemStackSet.java
new file mode 100644
index 0000000000..f9571e8fee
--- /dev/null
+++ b/src/Java/binnie/core/util/UniqueItemStackSet.java
@@ -0,0 +1,28 @@
+package binnie.core.util;
+
+import java.util.List;
+import net.minecraft.item.ItemStack;
+
+public class UniqueItemStackSet
+ extends ItemStackSet
+{
+ public boolean add(ItemStack e)
+ {
+ if ((e != null) &&
+ (getExisting(e) == null)) {
+ return this.itemStacks.add(e.copy());
+ }
+ return false;
+ }
+
+ public boolean remove(Object o)
+ {
+ if (contains(o))
+ {
+ ItemStack r = (ItemStack)o;
+ ItemStack existing = getExisting(r);
+ this.itemStacks.remove(existing);
+ }
+ return false;
+ }
+}
diff --git a/src/Java/binnie/craftgui/binniecore/WindowFieldKit.java b/src/Java/binnie/craftgui/binniecore/WindowFieldKit.java
new file mode 100644
index 0000000000..d52a6cde31
--- /dev/null
+++ b/src/Java/binnie/craftgui/binniecore/WindowFieldKit.java
@@ -0,0 +1,334 @@
+package binnie.craftgui.binniecore;
+
+import binnie.Binnie;
+import binnie.core.AbstractMod;
+import binnie.core.BinnieCore;
+import binnie.core.genetics.BreedingSystem;
+import binnie.core.genetics.ManagerGenetics;
+import binnie.core.language.ManagerLanguage;
+import binnie.core.machines.inventory.SlotValidator;
+import binnie.core.machines.inventory.ValidatorIcon;
+import binnie.craftgui.controls.ControlText;
+import binnie.craftgui.controls.core.Control;
+import binnie.craftgui.core.CraftGUI;
+import binnie.craftgui.core.geometry.IArea;
+import binnie.craftgui.core.geometry.IPoint;
+import binnie.craftgui.core.geometry.TextJustification;
+import binnie.craftgui.core.renderer.Renderer;
+import binnie.craftgui.events.EventHandler.Origin;
+import binnie.craftgui.events.EventValueChanged;
+import binnie.craftgui.events.EventValueChanged.Handler;
+import binnie.craftgui.minecraft.InventoryType;
+import binnie.craftgui.minecraft.Window;
+import binnie.craftgui.minecraft.WindowInventory;
+import binnie.craftgui.minecraft.control.ControlImage;
+import binnie.craftgui.minecraft.control.ControlPlayerInventory;
+import binnie.craftgui.minecraft.control.ControlSlot;
+import binnie.craftgui.resource.StyleSheet;
+import binnie.craftgui.resource.minecraft.CraftGUITexture;
+import binnie.craftgui.resource.minecraft.PaddedTexture;
+import binnie.craftgui.resource.minecraft.StandardTexture;
+import binnie.extrabees.core.ExtraBeeTexture;
+import binnie.extrabees.gui.punnett.ExtraBeeGUITexture;
+import binnie.genetics.gui.ControlChromosome;
+import binnie.genetics.machine.Analyser;
+import cpw.mods.fml.relauncher.Side;
+import forestry.api.genetics.AlleleManager;
+import forestry.api.genetics.IAllele;
+import forestry.api.genetics.IAlleleRegistry;
+import forestry.api.genetics.IChromosomeType;
+import forestry.api.genetics.IGenome;
+import forestry.api.genetics.IIndividual;
+import forestry.api.genetics.ISpeciesRoot;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Random;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.entity.player.EntityPlayerMP;
+import net.minecraft.init.Items;
+import net.minecraft.inventory.IInventory;
+import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.NBTTagCompound;
+
+public class WindowFieldKit
+ extends Window
+{
+ public WindowFieldKit(EntityPlayer player, IInventory inventory, Side side)
+ {
+ super(280.0F, 230.0F, player, inventory, side);
+ }
+
+ protected AbstractMod getMod()
+ {
+ return BinnieCore.instance;
+ }
+
+ protected String getName()
+ {
+ return "Field Kit";
+ }
+
+ private void setupValidators()
+ {
+ getWindowInventory().setValidator(0, new SlotValidator(null)
+ {
+ public boolean isValid(ItemStack object)
+ {
+ return (AlleleManager.alleleRegistry.isIndividual(object)) || (Binnie.Genetics.getConversion(object) != null);
+ }
+
+ public String getTooltip()
+ {
+ return "Individual";
+ }
+ });
+ getWindowInventory().setValidator(1, new SlotValidator(null)
+ {
+ public boolean isValid(ItemStack object)
+ {
+ return object.getItem() == Items.paper;
+ }
+
+ public String getTooltip()
+ {
+ return "Paper";
+ }
+ });
+ getWindowInventory().disableAutoDispense(1);
+ }
+
+ public void initialiseClient()
+ {
+ setTitle("Field Kit");
+
+ CraftGUI.Render.stylesheet(new StyleSheetPunnett());
+
+ getWindowInventory().createSlot(0);
+ getWindowInventory().createSlot(1);
+
+ setupValidators();
+
+ new ControlPlayerInventory(this);
+
+ IPoint handGlass = new IPoint(16.0F, 32.0F);
+ this.GlassControl = new ControlImage(this, handGlass.x(), handGlass.y(), new StandardTexture(0, 160, 96, 96, ExtraBeeTexture.GUIPunnett));
+ new ControlSlot(this, handGlass.x() + 54.0F, handGlass.y() + 26.0F).assign(InventoryType.Window, 0);
+
+ new ControlSlot(this, 208.0F, 8.0F).assign(InventoryType.Window, 1);
+
+ this.text = new ControlText(this, new IPoint(232.0F, 13.0F), "Paper");
+ this.text.setColour(2236962);
+
+ this.text = new ControlText(this, new IArea(0.0F, 120.0F, w(), 24.0F), "", TextJustification.MiddleCenter);
+ this.text.setColour(2236962);
+
+ this.chromo = new ControlChromosome(this, 150.0F, 24.0F);
+
+ addEventHandler(new EventValueChanged.Handler()
+ {
+ public void onEvent(EventValueChanged event)
+ {
+ IChromosomeType type = (IChromosomeType)event.getValue();
+ if ((type != null) && (WindowFieldKit.this.info.containsKey(type)))
+ {
+ String t = (String)WindowFieldKit.this.info.get(type);
+ WindowFieldKit.this.text.setValue(t);
+ }
+ else
+ {
+ WindowFieldKit.this.text.setValue("");
+ }
+ }
+ }.setOrigin(EventHandler.Origin.DirectChild, this.chromo));
+ }
+
+ public void initialiseServer()
+ {
+ ItemStack kit = getPlayer().getHeldItem();
+ int sheets = 64 - kit.getItemDamage();
+ if (sheets != 0) {
+ getWindowInventory().setInventorySlotContents(1, new ItemStack(Items.paper, sheets));
+ }
+ setupValidators();
+ }
+
+ private float glassOffsetX = 0.0F;
+ private float glassOffsetY = 0.0F;
+ private float glassVX = 0.0F;
+ private float glassVY = 0.0F;
+ private Random glassRand = new Random();
+ private Control GlassControl;
+ private ControlChromosome chromo;
+ private ControlText text;
+ private float analyseProgress = 1.0F;
+ private boolean isAnalysing = false;
+
+ public void onUpdateClient()
+ {
+ super.onUpdateClient();
+ if (this.isAnalysing)
+ {
+ this.analyseProgress += 0.01F;
+ if (this.analyseProgress >= 1.0F)
+ {
+ this.isAnalysing = false;
+ this.analyseProgress = 1.0F;
+ ItemStack stack = getWindowInventory().getStackInSlot(0);
+ if (stack != null) {
+ sendClientAction("analyse", new NBTTagCompound());
+ }
+ refreshSpecies();
+ }
+ }
+ this.glassVX += this.glassRand.nextFloat() - 0.5F - this.glassOffsetX * 0.2F;
+ this.glassVY += this.glassRand.nextFloat() - 0.5F - this.glassOffsetY * 0.2F;
+
+ this.glassOffsetX += this.glassVX;
+ this.glassOffsetX *= (1.0F - this.analyseProgress);
+ this.glassOffsetY += this.glassVY;
+ this.glassOffsetY *= (1.0F - this.analyseProgress);
+
+ this.GlassControl.setOffset(new IPoint(this.glassOffsetX, this.glassOffsetY));
+ }
+
+ private Map<IChromosomeType, String> info = new HashMap();
+
+ private void refreshSpecies()
+ {
+ ItemStack item = getWindowInventory().getStackInSlot(0);
+ if ((item == null) || (!AlleleManager.alleleRegistry.isIndividual(item))) {
+ return;
+ }
+ IIndividual ind = AlleleManager.alleleRegistry.getIndividual(item);
+ if (ind == null) {
+ return;
+ }
+ ISpeciesRoot root = AlleleManager.alleleRegistry.getSpeciesRoot(item);
+ this.chromo.setRoot(root);
+ Random rand = new Random();
+ this.info.clear();
+ for (IChromosomeType type : root.getKaryotype()) {
+ if (!Binnie.Genetics.isInvalidChromosome(type))
+ {
+ IAllele allele = ind.getGenome().getActiveAllele(type);
+ List<String> infos = new ArrayList();
+ int i = 0;
+ String pref = root.getUID() + ".fieldkit." + type.getName().toLowerCase() + ".";
+ while (Binnie.Language.canLocalise(pref + i))
+ {
+ infos.add(Binnie.Language.localise(pref + i));
+ i++;
+ }
+ String text = Binnie.Genetics.getSystem(root).getAlleleName(type, allele);
+ if (!infos.isEmpty()) {
+ text = (String)infos.get(rand.nextInt(infos.size()));
+ }
+ this.info.put(type, text);
+ this.chromo.setRoot(root);
+ }
+ }
+ }
+
+ private ItemStack prev = null;
+
+ public void onWindowInventoryChanged()
+ {
+ super.onWindowInventoryChanged();
+ if (isServer())
+ {
+ ItemStack kit = getPlayer().getHeldItem();
+ int sheets = 64 - kit.getItemDamage();
+ int size = getWindowInventory().getStackInSlot(1) == null ? 0 : getWindowInventory().getStackInSlot(1).stackSize;
+ if (sheets != size) {
+ kit.setItemDamage(64 - size);
+ }
+ ((EntityPlayerMP)getPlayer()).updateHeldItem();
+ }
+ if (isClient())
+ {
+ ItemStack item = getWindowInventory().getStackInSlot(0);
+ this.prev = item;
+ this.text.setValue("");
+ if ((item != null) && (!Analyser.isAnalysed(item)))
+ {
+ if (getWindowInventory().getStackInSlot(1) == null)
+ {
+ this.text.setValue("No Paper!");
+ this.isAnalysing = false;
+ this.analyseProgress = 1.0F;
+ }
+ else
+ {
+ startAnalysing();
+ this.chromo.setRoot(null);
+ if (!damageKit()) {}
+ }
+ }
+ else if (item != null)
+ {
+ this.isAnalysing = false;
+ this.analyseProgress = 1.0F;
+ refreshSpecies();
+ if (!damageKit()) {}
+ }
+ else
+ {
+ this.isAnalysing = false;
+ this.analyseProgress = 1.0F;
+
+ this.chromo.setRoot(null);
+ }
+ }
+ }
+
+ private boolean damageKit()
+ {
+ return false;
+ }
+
+ private void startAnalysing()
+ {
+ this.glassVX = 0.0F;
+ this.glassVY = 0.0F;
+ this.glassOffsetX = 0.0F;
+ this.glassOffsetY = 0.0F;
+ this.isAnalysing = true;
+ this.analyseProgress = 0.0F;
+ }
+
+ public boolean showHelpButton()
+ {
+ return true;
+ }
+
+ public String showInfoButton()
+ {
+ return "The Field Kit analyses bees, trees, flowers and butterflies. All that is required is a piece of paper to jot notes";
+ }
+
+ public void recieveGuiNBT(Side side, EntityPlayer player, String name, NBTTagCompound action)
+ {
+ super.recieveGuiNBT(side, player, name, action);
+ if ((side == Side.SERVER) && (name.equals("analyse")))
+ {
+ getWindowInventory().setInventorySlotContents(0, Analyser.analyse(getWindowInventory().getStackInSlot(0)));
+ getWindowInventory().decrStackSize(1, 1);
+ }
+ }
+
+ static class StyleSheetPunnett
+ extends StyleSheet
+ {
+ public StyleSheetPunnett()
+ {
+ this.textures.put(CraftGUITexture.Window, new PaddedTexture(0, 0, 160, 160, 0, ExtraBeeTexture.GUIPunnett, 32, 32, 32, 32));
+ this.textures.put(CraftGUITexture.Slot, new StandardTexture(160, 0, 18, 18, 0, ExtraBeeTexture.GUIPunnett));
+ this.textures.put(ExtraBeeGUITexture.Chromosome, new StandardTexture(160, 36, 16, 16, 0, ExtraBeeTexture.GUIPunnett));
+ this.textures.put(ExtraBeeGUITexture.Chromosome2, new StandardTexture(160, 52, 16, 16, 0, ExtraBeeTexture.GUIPunnett));
+ this.textures.put(CraftGUITexture.HelpButton, new StandardTexture(178, 0, 16, 16, 0, ExtraBeeTexture.GUIPunnett));
+ this.textures.put(CraftGUITexture.InfoButton, new StandardTexture(178, 16, 16, 16, 0, ExtraBeeTexture.GUIPunnett));
+ }
+ }
+}
diff --git a/src/Java/binnie/craftgui/binniecore/WindowGenesis.java b/src/Java/binnie/craftgui/binniecore/WindowGenesis.java
new file mode 100644
index 0000000000..8295645f5a
--- /dev/null
+++ b/src/Java/binnie/craftgui/binniecore/WindowGenesis.java
@@ -0,0 +1,264 @@
+package binnie.craftgui.binniecore;
+
+import binnie.Binnie;
+import binnie.core.AbstractMod;
+import binnie.core.BinnieCore;
+import binnie.core.genetics.BreedingSystem;
+import binnie.core.genetics.Gene;
+import binnie.core.genetics.ManagerGenetics;
+import binnie.craftgui.controls.listbox.ControlList;
+import binnie.craftgui.controls.listbox.ControlListBox;
+import binnie.craftgui.controls.listbox.ControlTextOption;
+import binnie.craftgui.controls.tab.ControlTab;
+import binnie.craftgui.controls.tab.ControlTabBar;
+import binnie.craftgui.core.IWidget;
+import binnie.craftgui.core.geometry.IArea;
+import binnie.craftgui.core.geometry.Position;
+import binnie.craftgui.events.EventHandler.Origin;
+import binnie.craftgui.events.EventMouse.Down;
+import binnie.craftgui.events.EventMouse.Down.Handler;
+import binnie.craftgui.events.EventValueChanged;
+import binnie.craftgui.events.EventValueChanged.Handler;
+import binnie.craftgui.minecraft.MinecraftGUI.PanelType;
+import binnie.craftgui.minecraft.Window;
+import binnie.craftgui.minecraft.control.ControlItemDisplay;
+import binnie.craftgui.minecraft.control.ControlPlayerInventory;
+import binnie.craftgui.minecraft.control.ControlTabIcon;
+import binnie.craftgui.window.Panel;
+import binnie.genetics.gui.ControlGenesisOption;
+import cpw.mods.fml.relauncher.Side;
+import forestry.api.genetics.IAllele;
+import forestry.api.genetics.IChromosomeType;
+import forestry.api.genetics.IIndividual;
+import forestry.api.genetics.ISpeciesRoot;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.entity.player.EntityPlayerMP;
+import net.minecraft.entity.player.InventoryPlayer;
+import net.minecraft.inventory.Container;
+import net.minecraft.inventory.IInventory;
+import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.NBTTagCompound;
+
+public class WindowGenesis
+ extends Window
+{
+ private ISpeciesRoot root;
+ private IAllele[] template;
+ private ControlListBox<Gene> geneList;
+ private ControlListBox<Gene> geneOptions;
+ private Panel panelPickup;
+
+ public WindowGenesis(EntityPlayer player, IInventory inventory, Side side)
+ {
+ super(342.0F, 228.0F, player, inventory, side);
+ }
+
+ protected AbstractMod getMod()
+ {
+ return BinnieCore.instance;
+ }
+
+ protected String getName()
+ {
+ return "Genesis";
+ }
+
+ public void initialiseClient()
+ {
+ new ControlPlayerInventory(this);
+ setTitle("Genesis");
+
+ ControlTabBar<BreedingSystem> tabSystems = new ControlTabBar(this, 8.0F, 28.0F, 23.0F, 100.0F, Position.Left)
+ {
+ public ControlTab<BreedingSystem> createTab(float x, float y, float w, float h, BreedingSystem value)
+ {
+ new ControlTabIcon(this, x, y, w, h, value)
+ {
+ public ItemStack getItemStack()
+ {
+ int type = ((BreedingSystem)this.value).getDefaultType();
+ IIndividual ind = ((BreedingSystem)this.value).getDefaultIndividual();
+ return ((BreedingSystem)this.value).getSpeciesRoot().getMemberStack(ind, type);
+ }
+
+ public String getName()
+ {
+ return ((BreedingSystem)this.value).getName();
+ }
+
+ public int getOutlineColour()
+ {
+ return ((BreedingSystem)this.value).getColour();
+ }
+
+ public boolean hasOutline()
+ {
+ return true;
+ }
+ };
+ }
+ };
+ tabSystems.setValues(Binnie.Genetics.getActiveSystems());
+
+ this.root = ((BreedingSystem)Binnie.Genetics.getActiveSystems().iterator().next()).getSpeciesRoot();
+ this.template = this.root.getDefaultTemplate();
+
+ IArea one = new IArea(32.0F, 28.0F, 170.0F, 100.0F);
+ IArea two = new IArea(214.0F, 28.0F, 100.0F, 100.0F);
+
+ new Panel(this, one.outset(1), MinecraftGUI.PanelType.Black);
+ new Panel(this, two.outset(1), MinecraftGUI.PanelType.Black);
+
+ this.geneList = new ControlListBox(this, one.x(), one.y(), one.w(), one.h(), 10.0F)
+ {
+ public IWidget createOption(Gene value, int y)
+ {
+ return new ControlGenesisOption((ControlList)getContent(), value, y);
+ }
+ };
+ this.geneOptions = new ControlListBox(this, two.x(), two.y(), two.w(), two.h(), 10.0F)
+ {
+ public IWidget createOption(Gene value, int y)
+ {
+ return new ControlTextOption((ControlList)getContent(), value, y);
+ }
+ };
+ tabSystems.addEventHandler(new EventValueChanged.Handler()
+ {
+ public void onEvent(EventValueChanged event)
+ {
+ WindowGenesis.this.root = ((BreedingSystem)event.getValue()).getSpeciesRoot();
+ WindowGenesis.this.template = WindowGenesis.this.root.getDefaultTemplate();
+ WindowGenesis.this.refreshTemplate(null);
+ }
+ }.setOrigin(EventHandler.Origin.Self, tabSystems));
+
+
+
+ this.geneList.addEventHandler(new EventValueChanged.Handler()
+ {
+ public void onEvent(EventValueChanged event)
+ {
+ Map<IChromosomeType, List<IAllele>> map = Binnie.Genetics.getChromosomeMap(WindowGenesis.this.root);
+ List<Gene> opts = new ArrayList();
+ IChromosomeType chromo = ((Gene)event.value).getChromosome();
+ for (IAllele allele : (List)map.get(chromo)) {
+ opts.add(new Gene(allele, chromo, WindowGenesis.this.root));
+ }
+ WindowGenesis.this.geneOptions.setOptions(opts);
+ }
+ }.setOrigin(EventHandler.Origin.Self, this.geneList));
+
+
+
+ this.geneOptions.addEventHandler(new EventValueChanged.Handler()
+ {
+ public void onEvent(EventValueChanged event)
+ {
+ if (event.value == null) {
+ return;
+ }
+ IChromosomeType chromo = ((Gene)event.value).getChromosome();
+ WindowGenesis.this.template[chromo.ordinal()] = ((Gene)event.value).getAllele();
+ if (chromo == ((Gene)event.value).getSpeciesRoot().getKaryotypeKey()) {
+ WindowGenesis.this.template = ((Gene)event.value).getSpeciesRoot().getTemplate(((Gene)event.value).getAllele().getUID());
+ }
+ WindowGenesis.this.refreshTemplate(chromo);
+ }
+ }.setOrigin(EventHandler.Origin.Self, this.geneOptions));
+
+
+
+
+ this.panelPickup = new Panel(this, 16.0F, 140.0F, 60.0F, 42.0F, MinecraftGUI.PanelType.Black);
+
+ refreshTemplate(null);
+ }
+
+ private void refreshTemplate(IChromosomeType selection)
+ {
+ List<Gene> genes = new ArrayList();
+ IChromosomeType[] chromos = (IChromosomeType[])Binnie.Genetics.getChromosomeMap(this.root).keySet().toArray(new IChromosomeType[0]);
+ for (IChromosomeType type : chromos)
+ {
+ IAllele allele = this.template[type.ordinal()];
+ if (allele == null) {
+ throw new NullPointerException("Allele missing for Chromosome " + type.getName());
+ }
+ genes.add(new Gene(allele, type, this.root));
+ }
+ Map<IChromosomeType, List<IAllele>> map = Binnie.Genetics.getChromosomeMap(this.root);
+ this.geneList.setOptions(genes);
+ if (selection != null) {
+ this.geneList.setValue(new Gene(this.template[selection.ordinal()], selection, this.root));
+ } else {
+ this.geneOptions.setOptions(new ArrayList());
+ }
+ refreshPickup();
+ }
+
+ private void refreshPickup()
+ {
+ this.panelPickup.deleteAllChildren();
+ int i = 0;
+ for (int type : Binnie.Genetics.getSystem(this.root).getActiveTypes())
+ {
+ IIndividual ind = this.root.templateAsIndividual(this.template);
+ ind.analyze();
+ final ItemStack stack = this.root.getMemberStack(ind, type);
+ ControlItemDisplay display = new ControlItemDisplay(this.panelPickup, 4 + i % 3 * 18, 4 + i / 3 * 18);
+ display.setItemStack(stack);
+ display.setTooltip();
+ display.addEventHandler(new EventMouse.Down.Handler()
+ {
+ public void onEvent(EventMouse.Down event)
+ {
+ NBTTagCompound nbt = new NBTTagCompound();
+ stack.writeToNBT(nbt);
+ Window.get(event.getOrigin()).sendClientAction("genesis", nbt);
+ }
+ }.setOrigin(EventHandler.Origin.Self, display));
+
+
+
+ i++;
+ }
+ }
+
+ public void recieveGuiNBT(Side side, EntityPlayer player, String name, NBTTagCompound action)
+ {
+ super.recieveGuiNBT(side, player, name, action);
+ if ((side == Side.SERVER) && (name.equals("genesis")))
+ {
+ ItemStack stack = ItemStack.loadItemStackFromNBT(action);
+ InventoryPlayer playerInv = player.inventory;
+ if (stack == null) {
+ return;
+ }
+ if (playerInv.getItemStack() == null)
+ {
+ playerInv.setItemStack(stack);
+ }
+ else if ((playerInv.getItemStack().isItemEqual(stack)) && (ItemStack.areItemStackTagsEqual(playerInv.getItemStack(), stack)))
+ {
+ int fit = stack.getMaxStackSize() - (stack.stackSize + playerInv.getItemStack().stackSize);
+ if (fit >= 0)
+ {
+ ItemStack rec = stack;
+ rec.stackSize += playerInv.getItemStack().stackSize;
+ playerInv.setItemStack(rec);
+ }
+ }
+ player.openContainer.detectAndSendChanges();
+ if ((player instanceof EntityPlayerMP)) {
+ ((EntityPlayerMP)player).updateHeldItem();
+ }
+ }
+ }
+}
diff --git a/src/Java/binnie/craftgui/botany/ControlColourDisplay.java b/src/Java/binnie/craftgui/botany/ControlColourDisplay.java
new file mode 100644
index 0000000000..21408ec4ad
--- /dev/null
+++ b/src/Java/binnie/craftgui/botany/ControlColourDisplay.java
@@ -0,0 +1,47 @@
+package binnie.craftgui.botany;
+
+import binnie.botany.api.IFlowerColour;
+import binnie.craftgui.controls.core.Control;
+import binnie.craftgui.controls.core.IControlValue;
+import binnie.craftgui.core.Attribute;
+import binnie.craftgui.core.CraftGUI;
+import binnie.craftgui.core.ITooltip;
+import binnie.craftgui.core.IWidget;
+import binnie.craftgui.core.Tooltip;
+import binnie.craftgui.core.geometry.IArea;
+import binnie.craftgui.core.renderer.Renderer;
+
+public class ControlColourDisplay
+ extends Control
+ implements IControlValue<IFlowerColour>, ITooltip
+{
+ IFlowerColour value;
+
+ public ControlColourDisplay(IWidget parent, float x, float y)
+ {
+ super(parent, x, y, 16.0F, 16.0F);
+ addAttribute(Attribute.MouseOver);
+ }
+
+ public IFlowerColour getValue()
+ {
+ return this.value;
+ }
+
+ public void setValue(IFlowerColour value)
+ {
+ this.value = value;
+ }
+
+ public void onRenderBackground()
+ {
+ CraftGUI.Render.solid(getArea(), -1);
+ CraftGUI.Render.solid(getArea().inset(1), -16777216 + getValue().getColor(false));
+ }
+
+ public void getTooltip(Tooltip tooltip)
+ {
+ super.getTooltip(tooltip);
+ tooltip.add(this.value.getName());
+ }
+}
diff --git a/src/Java/binnie/craftgui/botany/ControlColourMixBox.java b/src/Java/binnie/craftgui/botany/ControlColourMixBox.java
new file mode 100644
index 0000000000..7ca4fa98f2
--- /dev/null
+++ b/src/Java/binnie/craftgui/botany/ControlColourMixBox.java
@@ -0,0 +1,31 @@
+package binnie.craftgui.botany;
+
+import binnie.botany.api.IColourMix;
+import binnie.craftgui.controls.listbox.ControlList;
+import binnie.craftgui.controls.listbox.ControlListBox;
+import binnie.craftgui.core.IWidget;
+
+public class ControlColourMixBox
+ extends ControlListBox<IColourMix>
+{
+ private int index;
+ private Type type;
+
+ public IWidget createOption(IColourMix value, int y)
+ {
+ return new ControlColourMixItem((ControlList)getContent(), value, y);
+ }
+
+ static enum Type
+ {
+ Resultant, Further;
+
+ private Type() {}
+ }
+
+ public ControlColourMixBox(IWidget parent, int x, int y, int width, int height, Type type)
+ {
+ super(parent, x, y, width, height, 12.0F);
+ this.type = type;
+ }
+}
diff --git a/src/Java/binnie/craftgui/botany/ControlColourMixItem.java b/src/Java/binnie/craftgui/botany/ControlColourMixItem.java
new file mode 100644
index 0000000000..cf519b9a8e
--- /dev/null
+++ b/src/Java/binnie/craftgui/botany/ControlColourMixItem.java
@@ -0,0 +1,37 @@
+package binnie.craftgui.botany;
+
+import binnie.botany.api.IColourMix;
+import binnie.core.genetics.BreedingSystem;
+import binnie.craftgui.controls.listbox.ControlList;
+import binnie.craftgui.controls.listbox.ControlOption;
+import binnie.craftgui.mod.database.WindowAbstractDatabase;
+
+public class ControlColourMixItem
+ extends ControlOption<IColourMix>
+{
+ ControlColourDisplay itemWidget1;
+ ControlColourDisplay itemWidget2;
+ ControlColourDisplay itemWidget3;
+ ControlColourMixSymbol addSymbol;
+ ControlColourMixSymbol arrowSymbol;
+
+ public ControlColourMixItem(ControlList<IColourMix> controlList, IColourMix option, int y)
+ {
+ super(controlList, option, y);
+ this.itemWidget1 = new ControlColourDisplay(this, 4.0F, 4.0F);
+ this.itemWidget2 = new ControlColourDisplay(this, 44.0F, 4.0F);
+ this.itemWidget3 = new ControlColourDisplay(this, 104.0F, 4.0F);
+ this.addSymbol = new ControlColourMixSymbol(this, 24, 4, 0);
+ this.arrowSymbol = new ControlColourMixSymbol(this, 64, 4, 1);
+
+ BreedingSystem system = ((WindowAbstractDatabase)getSuperParent()).getBreedingSystem();
+ if (getValue() != null)
+ {
+ this.itemWidget1.setValue(((IColourMix)getValue()).getColour1());
+ this.itemWidget2.setValue(((IColourMix)getValue()).getColour2());
+ this.itemWidget3.setValue(((IColourMix)getValue()).getResult());
+ this.addSymbol.setValue((IColourMix)getValue());
+ this.arrowSymbol.setValue((IColourMix)getValue());
+ }
+ }
+}
diff --git a/src/Java/binnie/craftgui/botany/ControlColourMixSymbol.java b/src/Java/binnie/craftgui/botany/ControlColourMixSymbol.java
new file mode 100644
index 0000000000..5afb98d54f
--- /dev/null
+++ b/src/Java/binnie/craftgui/botany/ControlColourMixSymbol.java
@@ -0,0 +1,58 @@
+package binnie.craftgui.botany;
+
+import binnie.botany.api.IColourMix;
+import binnie.craftgui.controls.core.Control;
+import binnie.craftgui.core.Attribute;
+import binnie.craftgui.core.CraftGUI;
+import binnie.craftgui.core.ITooltip;
+import binnie.craftgui.core.IWidget;
+import binnie.craftgui.core.Tooltip;
+import binnie.craftgui.core.geometry.IPoint;
+import binnie.craftgui.core.renderer.Renderer;
+import binnie.craftgui.resource.Texture;
+import binnie.craftgui.resource.minecraft.CraftGUITextureSheet;
+import binnie.craftgui.resource.minecraft.StandardTexture;
+
+public class ControlColourMixSymbol
+ extends Control
+ implements ITooltip
+{
+ static Texture MutationPlus = new StandardTexture(2, 94, 16, 16, CraftGUITextureSheet.Controls2);
+ static Texture MutationArrow = new StandardTexture(20, 94, 32, 16, CraftGUITextureSheet.Controls2);
+ IColourMix value;
+ int type;
+
+ public void onRenderBackground()
+ {
+ super.onRenderBackground();
+ if (this.type == 0) {
+ CraftGUI.Render.texture(MutationPlus, IPoint.ZERO);
+ } else {
+ CraftGUI.Render.texture(MutationArrow, IPoint.ZERO);
+ }
+ }
+
+ protected ControlColourMixSymbol(IWidget parent, int x, int y, int type)
+ {
+ super(parent, x, y, 16 + type * 16, 16.0F);
+ this.value = null;
+ this.type = type;
+ addAttribute(Attribute.MouseOver);
+ }
+
+ public void setValue(IColourMix value)
+ {
+ this.value = value;
+
+ setColour(16777215);
+ }
+
+ public void getTooltip(Tooltip tooltip)
+ {
+ if (this.type == 1)
+ {
+ float chance = this.value.getChance();
+ tooltip.add("Current Chance - " + chance + "%");
+ }
+ }
+}
diff --git a/src/Java/binnie/craftgui/botany/ControlColourOption.java b/src/Java/binnie/craftgui/botany/ControlColourOption.java
new file mode 100644
index 0000000000..0a94e5690f
--- /dev/null
+++ b/src/Java/binnie/craftgui/botany/ControlColourOption.java
@@ -0,0 +1,38 @@
+package binnie.craftgui.botany;
+
+import binnie.botany.api.IFlowerColour;
+import binnie.craftgui.controls.ControlText;
+import binnie.craftgui.controls.listbox.ControlList;
+import binnie.craftgui.controls.listbox.ControlTextOption;
+import binnie.craftgui.core.Attribute;
+import binnie.craftgui.core.CraftGUI;
+import binnie.craftgui.core.geometry.CraftGUIUtil;
+import binnie.craftgui.core.geometry.IPoint;
+import binnie.craftgui.core.renderer.Renderer;
+
+public class ControlColourOption
+ extends ControlTextOption<IFlowerColour>
+{
+ ControlColourDisplay controlBee;
+ IPoint boxPosition;
+
+ public ControlColourOption(ControlList<IFlowerColour> controlList, IFlowerColour option, int y)
+ {
+ super(controlList, option, option.getName(), y);
+ setSize(new IPoint(getSize().x(), 20.0F));
+
+ this.controlBee = new ControlColourDisplay(this, 2.0F, 2.0F);
+ this.controlBee.setValue(option);
+
+ addAttribute(Attribute.MouseOver);
+
+ CraftGUIUtil.moveWidget(this.textWidget, new IPoint(22.0F, 0.0F));
+ this.textWidget.setSize(this.textWidget.getSize().sub(new IPoint(24.0F, 0.0F)));
+
+ int th = (int)CraftGUI.Render.textHeight(this.textWidget.getValue(), this.textWidget.getSize().x());
+ int height = Math.max(20, th + 6);
+ setSize(new IPoint(size().x(), height));
+ this.textWidget.setSize(new IPoint(this.textWidget.getSize().x(), height));
+ this.boxPosition = new IPoint(2.0F, (height - 18) / 2);
+ }
+}
diff --git a/src/Java/binnie/craftgui/botany/PageColourMix.java b/src/Java/binnie/craftgui/botany/PageColourMix.java
new file mode 100644
index 0000000000..5fc7e335db
--- /dev/null
+++ b/src/Java/binnie/craftgui/botany/PageColourMix.java
@@ -0,0 +1,40 @@
+package binnie.craftgui.botany;
+
+import binnie.botany.api.IColourMix;
+import binnie.botany.api.IFlowerColour;
+import binnie.botany.api.IFlowerRoot;
+import binnie.botany.core.BotanyCore;
+import binnie.craftgui.controls.ControlText;
+import binnie.craftgui.controls.ControlTextCentered;
+import binnie.craftgui.core.IWidget;
+import binnie.craftgui.mod.database.DatabaseTab;
+import binnie.craftgui.mod.database.PageAbstract;
+import java.util.ArrayList;
+import java.util.List;
+
+public class PageColourMix
+ extends PageAbstract<IFlowerColour>
+{
+ ControlText pageSpeciesFurther_Title;
+ ControlColourMixBox pageSpeciesFurther_List;
+
+ public PageColourMix(IWidget parent, DatabaseTab tab)
+ {
+ super(parent, tab);
+
+ this.pageSpeciesFurther_Title = new ControlTextCentered(this, 8.0F, "Further Mixes");
+
+ this.pageSpeciesFurther_List = new ControlColourMixBox(this, 4, 20, 136, 152, ControlColourMixBox.Type.Further);
+ }
+
+ public void onValueChanged(IFlowerColour colour)
+ {
+ List<IColourMix> mixes = new ArrayList();
+ for (IColourMix mix : BotanyCore.getFlowerRoot().getColourMixes(false)) {
+ if ((mix.getColour1() == colour) || (mix.getColour2() == colour)) {
+ mixes.add(mix);
+ }
+ }
+ this.pageSpeciesFurther_List.setOptions(mixes);
+ }
+}
diff --git a/src/Java/binnie/craftgui/botany/PageColourMixResultant.java b/src/Java/binnie/craftgui/botany/PageColourMixResultant.java
new file mode 100644
index 0000000000..a8a50f2cb7
--- /dev/null
+++ b/src/Java/binnie/craftgui/botany/PageColourMixResultant.java
@@ -0,0 +1,40 @@
+package binnie.craftgui.botany;
+
+import binnie.botany.api.IColourMix;
+import binnie.botany.api.IFlowerColour;
+import binnie.botany.api.IFlowerRoot;
+import binnie.botany.core.BotanyCore;
+import binnie.craftgui.controls.ControlText;
+import binnie.craftgui.controls.ControlTextCentered;
+import binnie.craftgui.core.IWidget;
+import binnie.craftgui.mod.database.DatabaseTab;
+import binnie.craftgui.mod.database.PageAbstract;
+import java.util.ArrayList;
+import java.util.List;
+
+public class PageColourMixResultant
+ extends PageAbstract<IFlowerColour>
+{
+ ControlText pageSpeciesFurther_Title;
+ ControlColourMixBox pageSpeciesFurther_List;
+
+ public PageColourMixResultant(IWidget parent, DatabaseTab tab)
+ {
+ super(parent, tab);
+
+ this.pageSpeciesFurther_Title = new ControlTextCentered(this, 8.0F, "Resultant Mixes");
+
+ this.pageSpeciesFurther_List = new ControlColourMixBox(this, 4, 20, 136, 152, ControlColourMixBox.Type.Resultant);
+ }
+
+ public void onValueChanged(IFlowerColour colour)
+ {
+ List<IColourMix> mixes = new ArrayList();
+ for (IColourMix mix : BotanyCore.getFlowerRoot().getColourMixes(false)) {
+ if (mix.getResult() == colour) {
+ mixes.add(mix);
+ }
+ }
+ this.pageSpeciesFurther_List.setOptions(mixes);
+ }
+}
diff --git a/src/Java/binnie/craftgui/botany/PageSpeciesFlowerGenome.java b/src/Java/binnie/craftgui/botany/PageSpeciesFlowerGenome.java
new file mode 100644
index 0000000000..dece27f306
--- /dev/null
+++ b/src/Java/binnie/craftgui/botany/PageSpeciesFlowerGenome.java
@@ -0,0 +1,137 @@
+package binnie.craftgui.botany;
+
+import binnie.Binnie;
+import binnie.botany.api.EnumFlowerChromosome;
+import binnie.botany.api.EnumFlowerStage;
+import binnie.botany.api.IAlleleFlowerSpecies;
+import binnie.botany.api.IFlower;
+import binnie.botany.api.IFlowerGenome;
+import binnie.botany.api.IFlowerRoot;
+import binnie.botany.core.BotanyCore;
+import binnie.core.genetics.ManagerGenetics;
+import binnie.core.language.ManagerLanguage;
+import binnie.craftgui.controls.ControlText;
+import binnie.craftgui.controls.core.Control;
+import binnie.craftgui.controls.scroll.ControlScrollableContent;
+import binnie.craftgui.core.IWidget;
+import binnie.craftgui.core.geometry.IArea;
+import binnie.craftgui.core.geometry.IPoint;
+import binnie.craftgui.core.geometry.TextJustification;
+import binnie.craftgui.minecraft.control.ControlItemDisplay;
+import binnie.craftgui.mod.database.DatabaseTab;
+import binnie.craftgui.mod.database.PageSpecies;
+import forestry.api.core.EnumTemperature;
+import forestry.api.genetics.IAllele;
+import forestry.api.genetics.IAlleleSpecies;
+import forestry.api.genetics.IGenome;
+import forestry.api.genetics.IIndividual;
+import net.minecraft.item.ItemStack;
+
+public class PageSpeciesFlowerGenome
+ extends PageSpecies
+{
+ public PageSpeciesFlowerGenome(IWidget parent, DatabaseTab tab)
+ {
+ super(parent, tab);
+ }
+
+ public void onValueChanged(IAlleleSpecies species)
+ {
+ deleteAllChildren();
+ IAllele[] template = Binnie.Genetics.getFlowerRoot().getTemplate(species.getUID());
+ if (template == null) {
+ return;
+ }
+ IFlower tree = Binnie.Genetics.getFlowerRoot().templateAsIndividual(template);
+ if (tree == null) {
+ return;
+ }
+ IFlowerGenome genome = tree.getGenome();
+ IAlleleFlowerSpecies treeSpecies = genome.getPrimary();
+
+ int w = 144;
+ int h = 176;
+
+ new ControlText(this, new IArea(0.0F, 4.0F, w, 16.0F), "Genome", TextJustification.MiddleCenter);
+
+ ControlScrollableContent scrollable = new ControlScrollableContent(this, 4.0F, 20.0F, w - 8, h - 8 - 16, 12.0F);
+
+ Control contents = new Control(scrollable, 0.0F, 0.0F, w - 8 - 12, h - 8 - 16);
+
+ int tw = w - 8 - 12;
+ int w1 = 55;
+ int w2 = tw - 50;
+ int y = 0;
+ int th = 14;
+ int th2 = 18;
+
+ new ControlText(contents, new IArea(0.0F, y, w1, th), "Temp. : ", TextJustification.MiddleRight);
+ new ControlText(contents, new IArea(w1, y, w2, th), treeSpecies.getTemperature().getName(), TextJustification.MiddleLeft);
+
+ y += th;
+
+ new ControlText(contents, new IArea(0.0F, y, w1, th), "Moist. : ", TextJustification.MiddleRight);
+ new ControlText(contents, new IArea(w1, y, w2, th), Binnie.Language.localise(treeSpecies.getMoisture()), TextJustification.MiddleLeft);
+
+
+ y += th;
+
+ new ControlText(contents, new IArea(0.0F, y, w1, th), "pH. : ", TextJustification.MiddleRight);
+ new ControlText(contents, new IArea(w1, y, w2, th), Binnie.Language.localise(treeSpecies.getPH()), TextJustification.MiddleLeft);
+
+ y += th;
+
+ new ControlText(contents, new IArea(0.0F, y, w1, th), "Fertility : ", TextJustification.MiddleRight);
+ new ControlText(contents, new IArea(w1, y, w2, th), genome.getFertility() + "x", TextJustification.MiddleLeft);
+ y += th;
+
+ float lifespan = genome.getLifespan() * 68.269997F / genome.getAgeChance() / 24000.0F;
+
+ new ControlText(contents, new IArea(0.0F, y, w1, th), "Lifespan : ", TextJustification.MiddleRight);
+ new ControlText(contents, new IArea(w1, y, w2, th), "" + String.format("%.2f", new Object[] { Float.valueOf(lifespan) }) + " days", TextJustification.MiddleLeft);
+
+ y += th;
+
+ new ControlText(contents, new IArea(0.0F, y, w1, th), "Nectar : ", TextJustification.MiddleRight);
+ new ControlText(contents, new IArea(w1, y, w2, th), genome.getActiveAllele(EnumFlowerChromosome.SAPPINESS).getName(), TextJustification.MiddleLeft);
+
+
+ y += th;
+
+ int x = w1;
+ int tot = 0;
+ for (IIndividual vid : BotanyCore.getFlowerRoot().getIndividualTemplates()) {
+ if (vid.getGenome().getPrimary() == treeSpecies)
+ {
+ if ((tot > 0) && (tot % 3 == 0))
+ {
+ x -= 54;
+ y += 18;
+ }
+ ItemStack stack = BotanyCore.getFlowerRoot().getMemberStack((IFlower)vid, EnumFlowerStage.FLOWER.ordinal());
+ ControlItemDisplay display = new ControlItemDisplay(contents, x, y);
+ display.setItemStack(stack);
+ tot++;
+ x += 18;
+ }
+ }
+ int numOfLines = 1 + (tot - 1) / 3;
+
+ new ControlText(contents, new IArea(0.0F, y - (numOfLines - 1) * 18, w1, 4 + 18 * numOfLines), "Varieties : ", TextJustification.MiddleRight);
+
+
+ y += th;
+
+ contents.setSize(new IPoint(contents.size().x(), y));
+
+ scrollable.setScrollableContent(contents);
+ }
+
+ public static String tolerated(boolean t)
+ {
+ if (t) {
+ return "Tolerated";
+ }
+ return "Not Tolerated";
+ }
+}
diff --git a/src/Java/binnie/craftgui/botany/WindowBotanistDatabase.java b/src/Java/binnie/craftgui/botany/WindowBotanistDatabase.java
new file mode 100644
index 0000000000..69a2a291ca
--- /dev/null
+++ b/src/Java/binnie/craftgui/botany/WindowBotanistDatabase.java
@@ -0,0 +1,103 @@
+package binnie.craftgui.botany;
+
+import binnie.Binnie;
+import binnie.botany.Botany;
+import binnie.botany.api.IFlowerColour;
+import binnie.botany.genetics.EnumFlowerColor;
+import binnie.botany.proxy.Proxy;
+import binnie.core.AbstractMod;
+import binnie.core.genetics.ManagerGenetics;
+import binnie.craftgui.controls.listbox.ControlList;
+import binnie.craftgui.controls.listbox.ControlListBox;
+import binnie.craftgui.core.IWidget;
+import binnie.craftgui.core.geometry.IArea;
+import binnie.craftgui.minecraft.Window;
+import binnie.craftgui.mod.database.DatabaseTab;
+import binnie.craftgui.mod.database.IDatabaseMode;
+import binnie.craftgui.mod.database.PageBranchOverview;
+import binnie.craftgui.mod.database.PageBranchSpecies;
+import binnie.craftgui.mod.database.PageBreeder;
+import binnie.craftgui.mod.database.PageSpeciesClassification;
+import binnie.craftgui.mod.database.PageSpeciesMutations;
+import binnie.craftgui.mod.database.PageSpeciesOverview;
+import binnie.craftgui.mod.database.PageSpeciesResultant;
+import binnie.craftgui.mod.database.WindowAbstractDatabase;
+import binnie.craftgui.mod.database.WindowAbstractDatabase.Mode;
+import binnie.craftgui.mod.database.WindowAbstractDatabase.ModeWidgets;
+import cpw.mods.fml.relauncher.Side;
+import java.util.ArrayList;
+import java.util.List;
+import net.minecraft.entity.player.EntityPlayer;
+
+public class WindowBotanistDatabase
+ extends WindowAbstractDatabase
+{
+ ControlListBox<EnumFlowerColor> selectionBoxColors;
+
+ static enum FlowerMode
+ implements IDatabaseMode
+ {
+ Colour;
+
+ private FlowerMode() {}
+
+ public String getName()
+ {
+ return Botany.proxy.localise("gui.database.mode." + name().toLowerCase());
+ }
+ }
+
+ public WindowBotanistDatabase(EntityPlayer player, Side side, boolean nei)
+ {
+ super(player, side, nei, Binnie.Genetics.flowerBreedingSystem, 130.0F);
+ }
+
+ public static Window create(EntityPlayer player, Side side, boolean nei)
+ {
+ return new WindowBotanistDatabase(player, side, nei);
+ }
+
+ protected void addTabs()
+ {
+ new PageSpeciesOverview(getInfoPages(WindowAbstractDatabase.Mode.Species), new DatabaseTab(Botany.instance, "species.overview", 0));
+ new PageSpeciesFlowerGenome(getInfoPages(WindowAbstractDatabase.Mode.Species), new DatabaseTab(Botany.instance, "species.genome", 0));
+ new PageSpeciesClassification(getInfoPages(WindowAbstractDatabase.Mode.Species), new DatabaseTab(Botany.instance, "species.classification", 0));
+ new PageSpeciesResultant(getInfoPages(WindowAbstractDatabase.Mode.Species), new DatabaseTab(Botany.instance, "species.resultant", 0));
+ new PageSpeciesMutations(getInfoPages(WindowAbstractDatabase.Mode.Species), new DatabaseTab(Botany.instance, "species.further", 0));
+
+ new PageBranchOverview(getInfoPages(WindowAbstractDatabase.Mode.Branches), new DatabaseTab(Botany.instance, "branches.overview", 0));
+ new PageBranchSpecies(getInfoPages(WindowAbstractDatabase.Mode.Branches), new DatabaseTab(Botany.instance, "branches.species", 0));
+
+ createMode(FlowerMode.Colour, new WindowAbstractDatabase.ModeWidgets(FlowerMode.Colour, this)
+ {
+ public void createListBox(IArea area)
+ {
+ this.listBox = new ControlListBox(this.modePage, area.x(), area.y(), area.w(), area.h(), 12.0F)
+ {
+ public IWidget createOption(IFlowerColour value, int y)
+ {
+ return new ControlColourOption((ControlList)getContent(), value, y);
+ }
+ };
+ List<IFlowerColour> colors = new ArrayList();
+ for (IFlowerColour c : EnumFlowerColor.values()) {
+ colors.add(c);
+ }
+ this.listBox.setOptions(colors);
+ }
+ });
+ new PageColourMixResultant(getInfoPages(FlowerMode.Colour), new DatabaseTab(Botany.instance, "colour.resultant", 0));
+ new PageColourMix(getInfoPages(FlowerMode.Colour), new DatabaseTab(Botany.instance, "colour.further", 0));
+ new PageBreeder(getInfoPages(WindowAbstractDatabase.Mode.Breeder), getUsername(), new DatabaseTab(Botany.instance, "breeder", 0));
+ }
+
+ protected AbstractMod getMod()
+ {
+ return Botany.instance;
+ }
+
+ protected String getName()
+ {
+ return "FlowerDatabase";
+ }
+}
diff --git a/src/Java/binnie/craftgui/controls/ControlCheckbox.java b/src/Java/binnie/craftgui/controls/ControlCheckbox.java
new file mode 100644
index 0000000000..edfeab631c
--- /dev/null
+++ b/src/Java/binnie/craftgui/controls/ControlCheckbox.java
@@ -0,0 +1,75 @@
+package binnie.craftgui.controls;
+
+import binnie.craftgui.controls.core.Control;
+import binnie.craftgui.controls.core.IControlValue;
+import binnie.craftgui.core.Attribute;
+import binnie.craftgui.core.CraftGUI;
+import binnie.craftgui.core.IWidget;
+import binnie.craftgui.core.geometry.IArea;
+import binnie.craftgui.core.geometry.IPoint;
+import binnie.craftgui.core.geometry.TextJustification;
+import binnie.craftgui.core.renderer.Renderer;
+import binnie.craftgui.events.EventHandler.Origin;
+import binnie.craftgui.events.EventMouse.Down;
+import binnie.craftgui.events.EventMouse.Down.Handler;
+import binnie.craftgui.events.EventValueChanged;
+import binnie.craftgui.resource.minecraft.CraftGUITexture;
+
+public class ControlCheckbox
+ extends Control
+ implements IControlValue<Boolean>
+{
+ boolean value;
+ String text;
+
+ public ControlCheckbox(IWidget parent, float x, float y, boolean bool)
+ {
+ this(parent, x, y, 0.0F, "", bool);
+ }
+
+ public ControlCheckbox(IWidget parent, float x, float y, float w, String text, boolean bool)
+ {
+ super(parent, x, y, w > 16.0F ? w : 16.0F, 16.0F);
+ this.text = text;
+ this.value = bool;
+ if (w > 16.0F) {
+ new ControlText(this, new IArea(16.0F, 1.0F, w - 16.0F, 16.0F), text, TextJustification.MiddleCenter).setColour(4473924);
+ }
+ addAttribute(Attribute.MouseOver);
+ addEventHandler(new EventMouse.Down.Handler()
+ {
+ public void onEvent(EventMouse.Down event)
+ {
+ ControlCheckbox.this.toggleValue();
+ }
+ }.setOrigin(EventHandler.Origin.Self, this));
+ }
+
+ protected void onValueChanged(boolean value) {}
+
+ public Boolean getValue()
+ {
+ return Boolean.valueOf(this.value);
+ }
+
+ public void setValue(Boolean value)
+ {
+ this.value = value.booleanValue();
+ onValueChanged(value.booleanValue());
+ callEvent(new EventValueChanged(this, value));
+ }
+
+ public void toggleValue()
+ {
+ setValue(Boolean.valueOf(!getValue().booleanValue()));
+ }
+
+ public void onRenderBackground()
+ {
+ Object texture = getValue().booleanValue() ? CraftGUITexture.CheckboxChecked : CraftGUITexture.Checkbox;
+ if (isMouseOver()) {
+ texture = getValue().booleanValue() ? CraftGUITexture.CheckboxCheckedHighlighted : CraftGUITexture.CheckboxHighlighted;
+ }
+ CraftGUI.Render.texture(texture, IPoint.ZERO);
+ }
+}
diff --git a/src/Java/binnie/craftgui/controls/ControlText.java b/src/Java/binnie/craftgui/controls/ControlText.java
new file mode 100644
index 0000000000..4df9c04db1
--- /dev/null
+++ b/src/Java/binnie/craftgui/controls/ControlText.java
@@ -0,0 +1,50 @@
+package binnie.craftgui.controls;
+
+import binnie.craftgui.controls.core.Control;
+import binnie.craftgui.controls.core.IControlValue;
+import binnie.craftgui.core.CraftGUI;
+import binnie.craftgui.core.IWidget;
+import binnie.craftgui.core.geometry.IArea;
+import binnie.craftgui.core.geometry.IPoint;
+import binnie.craftgui.core.geometry.TextJustification;
+import binnie.craftgui.core.renderer.Renderer;
+
+public class ControlText
+ extends Control
+ implements IControlValue<String>
+{
+ private String text;
+ private TextJustification align;
+
+ public ControlText(IWidget parent, IPoint pos, String text)
+ {
+ this(parent, new IArea(pos, new IPoint(500.0F, 0.0F)), text, TextJustification.TopLeft);
+ }
+
+ public ControlText(IWidget parent, String text, TextJustification align)
+ {
+ this(parent, parent.getArea(), text, align);
+ }
+
+ public ControlText(IWidget parent, IArea area, String text, TextJustification align)
+ {
+ super(parent, area.pos().x(), area.pos().y(), area.size().x(), area.size().y());
+ setValue(text);
+ this.align = align;
+ }
+
+ public void onRenderBackground()
+ {
+ CraftGUI.Render.text(getArea(), this.align, this.text, getColour());
+ }
+
+ public void setValue(String text)
+ {
+ this.text = text;
+ }
+
+ public String getValue()
+ {
+ return this.text;
+ }
+}
diff --git a/src/Java/binnie/craftgui/controls/ControlTextCentered.java b/src/Java/binnie/craftgui/controls/ControlTextCentered.java
new file mode 100644
index 0000000000..12434528db
--- /dev/null
+++ b/src/Java/binnie/craftgui/controls/ControlTextCentered.java
@@ -0,0 +1,15 @@
+package binnie.craftgui.controls;
+
+import binnie.craftgui.core.IWidget;
+import binnie.craftgui.core.geometry.IArea;
+import binnie.craftgui.core.geometry.IPoint;
+import binnie.craftgui.core.geometry.TextJustification;
+
+public class ControlTextCentered
+ extends ControlText
+{
+ public ControlTextCentered(IWidget parent, float y, String text)
+ {
+ super(parent, new IArea(new IPoint(0.0F, y), new IPoint(parent.size().x(), 0.0F)), text, TextJustification.TopCenter);
+ }
+}
diff --git a/src/Java/binnie/craftgui/controls/ControlTextEdit.java b/src/Java/binnie/craftgui/controls/ControlTextEdit.java
new file mode 100644
index 0000000000..8c07a12d7c
--- /dev/null
+++ b/src/Java/binnie/craftgui/controls/ControlTextEdit.java
@@ -0,0 +1,154 @@
+package binnie.craftgui.controls;
+
+import binnie.craftgui.controls.core.Control;
+import binnie.craftgui.controls.core.IControlValue;
+import binnie.craftgui.core.Attribute;
+import binnie.craftgui.core.CraftGUI;
+import binnie.craftgui.core.IWidget;
+import binnie.craftgui.core.geometry.IPoint;
+import binnie.craftgui.core.renderer.Renderer;
+import binnie.craftgui.events.EventHandler.Origin;
+import binnie.craftgui.events.EventKey.Down;
+import binnie.craftgui.events.EventKey.Down.Handler;
+import binnie.craftgui.events.EventMouse.Down;
+import binnie.craftgui.events.EventMouse.Down.Handler;
+import binnie.craftgui.events.EventTextEdit;
+import binnie.craftgui.events.EventWidget.GainFocus;
+import binnie.craftgui.events.EventWidget.GainFocus.Handler;
+import binnie.craftgui.events.EventWidget.LoseFocus;
+import binnie.craftgui.events.EventWidget.LoseFocus.Handler;
+import binnie.craftgui.minecraft.GuiCraftGUI;
+import binnie.craftgui.minecraft.Window;
+import binnie.craftgui.resource.minecraft.CraftGUITexture;
+import net.minecraft.client.gui.GuiTextField;
+
+public class ControlTextEdit
+ extends Control
+ implements IControlValue<String>
+{
+ GuiTextField field;
+
+ public ControlTextEdit(IWidget parent, float x, float y, float width, float height)
+ {
+ super(parent, x, y, width, height);
+
+ this.field = new GuiTextField(getWindow().getGui().getFontRenderer(), 0, 0, 10, 10);
+ addAttribute(Attribute.CanFocus);
+ addAttribute(Attribute.MouseOver);
+ this.field.setEnableBackgroundDrawing(false);
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ addEventHandler(new EventKey.Down.Handler()
+ {
+ public void onEvent(EventKey.Down event)
+ {
+ ControlTextEdit.this.field.textboxKeyTyped(event.getCharacter(), event.getKey());
+ String text = ControlTextEdit.this.getValue();
+ if (!text.equals(ControlTextEdit.this.cachedValue))
+ {
+ ControlTextEdit.this.cachedValue = text;
+ ControlTextEdit.this.callEvent(new EventTextEdit(ControlTextEdit.this, ControlTextEdit.this.cachedValue));
+ ControlTextEdit.this.onTextEdit(ControlTextEdit.this.cachedValue);
+ }
+ }
+ }.setOrigin(EventHandler.Origin.Self, this));
+
+
+
+
+ addEventHandler(new EventMouse.Down.Handler()
+ {
+ public void onEvent(EventMouse.Down event)
+ {
+ ControlTextEdit.this.field.mouseClicked((int)ControlTextEdit.this.getRelativeMousePosition().x(), (int)ControlTextEdit.this.getRelativeMousePosition().y(), event.getButton());
+ }
+ }.setOrigin(EventHandler.Origin.Self, this));
+
+
+
+ addEventHandler(new EventWidget.GainFocus.Handler()
+ {
+ public void onEvent(EventWidget.GainFocus event)
+ {
+ ControlTextEdit.this.field.setFocused(true);
+ }
+ }.setOrigin(EventHandler.Origin.Self, this));
+
+
+
+ addEventHandler(new EventWidget.LoseFocus.Handler()
+ {
+ public void onEvent(EventWidget.LoseFocus event)
+ {
+ ControlTextEdit.this.field.setFocused(false);
+ }
+ }.setOrigin(EventHandler.Origin.Self, this));
+ }
+
+ public String getValue()
+ {
+ return this.field.getText() == null ? "" : this.field.getText();
+ }
+
+ public void setValue(String value)
+ {
+ if (!getValue().equals(value))
+ {
+ this.field.setText(value);
+ this.field.setCursorPosition(0);
+ }
+ }
+
+ private String cachedValue = "";
+
+ public void onUpdateClient() {}
+
+ protected void onTextEdit(String value) {}
+
+ public void onRenderBackground()
+ {
+ CraftGUI.Render.texture(CraftGUITexture.Slot, getArea());
+ renderTextField();
+ }
+
+ protected void renderTextField()
+ {
+ this.field.width = ((int)w());
+ this.field.height = ((int)h());
+ this.field.xPosition = ((int)((h() - 8.0F) / 2.0F));
+ this.field.yPosition = ((int)((h() - 8.0F) / 2.0F));
+ this.field.drawTextBox();
+ }
+}
diff --git a/src/Java/binnie/craftgui/controls/IControlSelection.java b/src/Java/binnie/craftgui/controls/IControlSelection.java
new file mode 100644
index 0000000000..4648f49290
--- /dev/null
+++ b/src/Java/binnie/craftgui/controls/IControlSelection.java
@@ -0,0 +1,10 @@
+package binnie.craftgui.controls;
+
+public abstract interface IControlSelection<T>
+{
+ public abstract T getSelectedValue();
+
+ public abstract void setSelectedValue(T paramT);
+
+ public abstract boolean isSelected(IControlSelectionOption<T> paramIControlSelectionOption);
+}
diff --git a/src/Java/binnie/craftgui/controls/IControlSelectionOption.java b/src/Java/binnie/craftgui/controls/IControlSelectionOption.java
new file mode 100644
index 0000000000..9074a55541
--- /dev/null
+++ b/src/Java/binnie/craftgui/controls/IControlSelectionOption.java
@@ -0,0 +1,6 @@
+package binnie.craftgui.controls;
+
+public abstract interface IControlSelectionOption<T>
+{
+ public abstract T getValue();
+}
diff --git a/src/Java/binnie/craftgui/controls/button/ControlButton.java b/src/Java/binnie/craftgui/controls/button/ControlButton.java
new file mode 100644
index 0000000000..b41cb65116
--- /dev/null
+++ b/src/Java/binnie/craftgui/controls/button/ControlButton.java
@@ -0,0 +1,70 @@
+package binnie.craftgui.controls.button;
+
+import binnie.craftgui.controls.ControlText;
+import binnie.craftgui.controls.core.Control;
+import binnie.craftgui.core.Attribute;
+import binnie.craftgui.core.CraftGUI;
+import binnie.craftgui.core.IWidget;
+import binnie.craftgui.core.geometry.TextJustification;
+import binnie.craftgui.core.renderer.Renderer;
+import binnie.craftgui.events.EventButtonClicked;
+import binnie.craftgui.events.EventHandler.Origin;
+import binnie.craftgui.events.EventMouse.Down;
+import binnie.craftgui.events.EventMouse.Down.Handler;
+import binnie.craftgui.resource.minecraft.CraftGUITexture;
+
+public class ControlButton
+ extends Control
+{
+ private ControlText textWidget;
+ private String text;
+
+ public ControlButton(IWidget parent, float x, float y, float width, float height)
+ {
+ super(parent, x, y, width, height);
+
+ addAttribute(Attribute.MouseOver);
+
+ addEventHandler(new EventMouse.Down.Handler()
+ {
+ public void onEvent(EventMouse.Down event)
+ {
+ ControlButton.this.callEvent(new EventButtonClicked(ControlButton.this.getWidget()));
+ ControlButton.this.onMouseClick(event);
+ }
+ }.setOrigin(EventHandler.Origin.Self, this));
+ }
+
+ protected void onMouseClick(EventMouse.Down event) {}
+
+ public ControlButton(IWidget parent, float x, float y, float width, float height, String text)
+ {
+ this(parent, x, y, width, height);
+
+ this.text = text;
+ this.textWidget = new ControlText(this, getArea(), text, TextJustification.MiddleCenter);
+ }
+
+ public void onUpdateClient()
+ {
+ if (this.textWidget != null) {
+ this.textWidget.setValue(getText());
+ }
+ }
+
+ public String getText()
+ {
+ return this.text;
+ }
+
+ public void onRenderBackground()
+ {
+ Object texture = CraftGUITexture.ButtonDisabled;
+ if (isMouseOver()) {
+ texture = CraftGUITexture.ButtonHighlighted;
+ } else if (isEnabled()) {
+ texture = CraftGUITexture.Button;
+ }
+ CraftGUI.Render.texture(texture, getArea());
+ }
+}
diff --git a/src/Java/binnie/craftgui/controls/button/ControlEnumButton.java b/src/Java/binnie/craftgui/controls/button/ControlEnumButton.java
new file mode 100644
index 0000000000..924bd8c110
--- /dev/null
+++ b/src/Java/binnie/craftgui/controls/button/ControlEnumButton.java
@@ -0,0 +1,61 @@
+package binnie.craftgui.controls.button;
+
+import binnie.craftgui.controls.core.IControlValue;
+import binnie.craftgui.core.IWidget;
+import binnie.craftgui.events.EventMouse.Down;
+import binnie.craftgui.events.EventValueChanged;
+import java.util.ArrayList;
+import java.util.List;
+
+public class ControlEnumButton<T>
+ extends ControlButton
+ implements IControlValue<T>
+{
+ public static final String eventEnumChanged = "eventEnumButtonChanged";
+ private T currentSelection;
+
+ public String getText()
+ {
+ return this.currentSelection.toString();
+ }
+
+ public void onMouseClick(EventMouse.Down event)
+ {
+ int index = this.enumConstants.indexOf(this.currentSelection);
+ if (index < this.enumConstants.size() - 1) {
+ index++;
+ } else {
+ index = 0;
+ }
+ T newEnum = this.enumConstants.get(index);
+
+ setValue(newEnum);
+ }
+
+ public void setValue(T selection)
+ {
+ if (this.currentSelection != selection)
+ {
+ this.currentSelection = selection;
+ callEvent(new EventValueChanged(this, getValue()));
+ }
+ }
+
+ private List<T> enumConstants = new ArrayList();
+
+ public ControlEnumButton(IWidget parent, float x, float y, float width, float height, T[] values)
+ {
+ super(parent, x, y, width, height, "");
+ for (T value : values) {
+ this.enumConstants.add(value);
+ }
+ if (values.length > 0) {
+ this.currentSelection = values[0];
+ }
+ }
+
+ public T getValue()
+ {
+ return this.currentSelection;
+ }
+}
diff --git a/src/Java/binnie/craftgui/controls/button/ControlToggleButton.java b/src/Java/binnie/craftgui/controls/button/ControlToggleButton.java
new file mode 100644
index 0000000000..1a06801fbd
--- /dev/null
+++ b/src/Java/binnie/craftgui/controls/button/ControlToggleButton.java
@@ -0,0 +1,21 @@
+package binnie.craftgui.controls.button;
+
+import binnie.craftgui.core.IWidget;
+import binnie.craftgui.events.EventMouse.Down;
+import binnie.craftgui.events.EventToggleButtonClicked;
+
+public class ControlToggleButton
+ extends ControlButton
+{
+ boolean toggled;
+
+ public void onMouseClick(EventMouse.Down event)
+ {
+ callEvent(new EventToggleButtonClicked(this, this.toggled));
+ }
+
+ public ControlToggleButton(IWidget parent, int x, int y, int width, int height)
+ {
+ super(parent, x, y, width, height);
+ }
+}
diff --git a/src/Java/binnie/craftgui/controls/core/Control.java b/src/Java/binnie/craftgui/controls/core/Control.java
new file mode 100644
index 0000000000..f5f7bddabb
--- /dev/null
+++ b/src/Java/binnie/craftgui/controls/core/Control.java
@@ -0,0 +1,85 @@
+package binnie.craftgui.controls.core;
+
+import binnie.craftgui.core.Attribute;
+import binnie.craftgui.core.ITooltip;
+import binnie.craftgui.core.ITooltipHelp;
+import binnie.craftgui.core.IWidget;
+import binnie.craftgui.core.Tooltip;
+import binnie.craftgui.core.Widget;
+import binnie.craftgui.core.geometry.IArea;
+import binnie.craftgui.core.geometry.IPoint;
+import binnie.craftgui.minecraft.Window;
+import java.util.ArrayList;
+import java.util.List;
+
+public class Control
+ extends Widget
+ implements ITooltipHelp, ITooltip
+{
+ public Control(IWidget parent, float x, float y, float w, float h)
+ {
+ super(parent);
+ setPosition(new IPoint(x, y));
+ setSize(new IPoint(w, h));
+ initialise();
+ }
+
+ public Control(IWidget parent, IArea area)
+ {
+ this(parent, area.x(), area.y(), area.w(), area.h());
+ }
+
+ List<String> helpStrings = new ArrayList();
+ List<String> tooltipStrings = new ArrayList();
+
+ protected void initialise() {}
+
+ public void onUpdateClient() {}
+
+ public void addHelp(String string)
+ {
+ this.helpStrings.add(string);
+ }
+
+ public void addHelp(String[] strings)
+ {
+ for (String string : strings) {
+ addHelp(string);
+ }
+ }
+
+ public void addTooltip(String string)
+ {
+ addAttribute(Attribute.MouseOver);
+ this.tooltipStrings.add(string);
+ }
+
+ public void addTooltip(String[] strings)
+ {
+ for (String string : strings) {
+ addTooltip(string);
+ }
+ }
+
+ public int extraLevel = 0;
+
+ public int getLevel()
+ {
+ return this.extraLevel + super.getLevel();
+ }
+
+ public void getHelpTooltip(Tooltip tooltip)
+ {
+ tooltip.add(this.helpStrings);
+ }
+
+ public void getTooltip(Tooltip tooltip)
+ {
+ tooltip.add(this.tooltipStrings);
+ }
+
+ public Window getWindow()
+ {
+ return (Window)getSuperParent();
+ }
+}
diff --git a/src/Java/binnie/craftgui/controls/core/IControlIndexed.java b/src/Java/binnie/craftgui/controls/core/IControlIndexed.java
new file mode 100644
index 0000000000..a30bceb76c
--- /dev/null
+++ b/src/Java/binnie/craftgui/controls/core/IControlIndexed.java
@@ -0,0 +1,8 @@
+package binnie.craftgui.controls.core;
+
+public abstract interface IControlIndexed
+{
+ public abstract int getIndex();
+
+ public abstract void setIndex(int paramInt);
+}
diff --git a/src/Java/binnie/craftgui/controls/core/IControlValue.java b/src/Java/binnie/craftgui/controls/core/IControlValue.java
new file mode 100644
index 0000000000..9d44b8ad17
--- /dev/null
+++ b/src/Java/binnie/craftgui/controls/core/IControlValue.java
@@ -0,0 +1,11 @@
+package binnie.craftgui.controls.core;
+
+import binnie.craftgui.core.IWidget;
+
+public abstract interface IControlValue<T>
+ extends IWidget
+{
+ public abstract T getValue();
+
+ public abstract void setValue(T paramT);
+}
diff --git a/src/Java/binnie/craftgui/controls/core/IControlValues.java b/src/Java/binnie/craftgui/controls/core/IControlValues.java
new file mode 100644
index 0000000000..92bb5d1f13
--- /dev/null
+++ b/src/Java/binnie/craftgui/controls/core/IControlValues.java
@@ -0,0 +1,11 @@
+package binnie.craftgui.controls.core;
+
+import java.util.Collection;
+
+public abstract interface IControlValues<T>
+ extends IControlValue<T>
+{
+ public abstract Collection<T> getValues();
+
+ public abstract void setValues(Collection<T> paramCollection);
+}
diff --git a/src/Java/binnie/craftgui/controls/listbox/ControlList.java b/src/Java/binnie/craftgui/controls/listbox/ControlList.java
new file mode 100644
index 0000000000..d1b6be8821
--- /dev/null
+++ b/src/Java/binnie/craftgui/controls/listbox/ControlList.java
@@ -0,0 +1,146 @@
+package binnie.craftgui.controls.listbox;
+
+import binnie.core.util.IValidator;
+import binnie.craftgui.controls.core.Control;
+import binnie.craftgui.controls.core.IControlValue;
+import binnie.craftgui.core.IWidget;
+import binnie.craftgui.core.geometry.IPoint;
+import binnie.craftgui.events.EventValueChanged;
+import java.util.Collection;
+import java.util.LinkedHashMap;
+import java.util.Map;
+import java.util.Map.Entry;
+
+public class ControlList<T>
+ extends Control
+ implements IControlValue<T>
+{
+ ControlListBox<T> parent;
+
+ protected ControlList(ControlListBox<T> parent, float x, float y, float w, float h)
+ {
+ super(parent, x, y, w, h);
+ this.parent = parent;
+ }
+
+ T value = null;
+ Map<T, IWidget> allOptions = new LinkedHashMap();
+ Map<T, IWidget> optionWidgets = new LinkedHashMap();
+
+ public T getValue()
+ {
+ return this.value;
+ }
+
+ public void setValue(T value)
+ {
+ if (value == this.value) {
+ return;
+ }
+ this.value = value;
+ if ((value != null) && (this.optionWidgets.containsKey(value)))
+ {
+ IWidget child = (IWidget)this.optionWidgets.get(value);
+ this.parent.ensureVisible(child.y(), child.y() + child.h(), h());
+ }
+ getParent().callEvent(new EventValueChanged(getParent(), value));
+ }
+
+ boolean creating = false;
+ IValidator<IWidget> validator;
+
+ public void setOptions(Collection<T> options)
+ {
+ deleteAllChildren();
+ this.allOptions.clear();
+ int i = 0;
+ for (T option : options)
+ {
+ IWidget optionWidget = ((ControlListBox)getParent()).createOption(option, 0);
+ if (optionWidget != null) {
+ this.allOptions.put(option, optionWidget);
+ }
+ i++;
+ }
+ filterOptions();
+ }
+
+ public void filterOptions()
+ {
+ int height = 0;
+ this.optionWidgets.clear();
+ for (Map.Entry<T, IWidget> entry : this.allOptions.entrySet()) {
+ if (isValidOption((IWidget)entry.getValue()))
+ {
+ ((IWidget)entry.getValue()).show();
+ this.optionWidgets.put(entry.getKey(), entry.getValue());
+ ((IWidget)entry.getValue()).setPosition(new IPoint(0.0F, height));
+ height = (int)(height + ((IWidget)entry.getValue()).getSize().y());
+ }
+ else
+ {
+ ((IWidget)entry.getValue()).hide();
+ }
+ }
+ this.creating = true;
+ setValue(getValue());
+ setSize(new IPoint(getSize().x(), height));
+ }
+
+ public Collection<T> getOptions()
+ {
+ return this.optionWidgets.keySet();
+ }
+
+ public Collection<T> getAllOptions()
+ {
+ return this.allOptions.keySet();
+ }
+
+ public int getIndexOf(T value)
+ {
+ int index = 0;
+ for (T option : getOptions())
+ {
+ if (option.equals(value)) {
+ return index;
+ }
+ index++;
+ }
+ return -1;
+ }
+
+ public int getCurrentIndex()
+ {
+ return getIndexOf(getValue());
+ }
+
+ public void setIndex(int currentIndex)
+ {
+ int index = 0;
+ for (T option : getOptions())
+ {
+ if (index == currentIndex)
+ {
+ setValue(option);
+ return;
+ }
+ index++;
+ }
+ setValue(null);
+ }
+
+ private boolean isValidOption(IWidget widget)
+ {
+ return this.validator == null ? true : this.validator.isValid(widget);
+ }
+
+ public void setValidator(IValidator<IWidget> validator)
+ {
+ if (this.validator != validator)
+ {
+ this.validator = validator;
+ filterOptions();
+ }
+ }
+}
diff --git a/src/Java/binnie/craftgui/controls/listbox/ControlListBox.java b/src/Java/binnie/craftgui/controls/listbox/ControlListBox.java
new file mode 100644
index 0000000000..e9370daa3d
--- /dev/null
+++ b/src/Java/binnie/craftgui/controls/listbox/ControlListBox.java
@@ -0,0 +1,76 @@
+package binnie.craftgui.controls.listbox;
+
+import binnie.core.util.IValidator;
+import binnie.craftgui.controls.core.IControlValue;
+import binnie.craftgui.controls.scroll.ControlScrollableContent;
+import binnie.craftgui.core.IWidget;
+import binnie.craftgui.events.EventKey.Down;
+import binnie.craftgui.events.EventKey.Down.Handler;
+import java.util.Collection;
+
+public class ControlListBox<T>
+ extends ControlScrollableContent<ControlList<T>>
+ implements IControlValue<T>
+{
+ public ControlListBox(IWidget parent, float x, float y, float w, float h, float scrollBarSize)
+ {
+ super(parent, x, y, w, h, scrollBarSize);
+ }
+
+ public void initialise()
+ {
+ setScrollableContent(new ControlList(this, 1.0F, 1.0F, w() - 2.0F - this.scrollBarSize, h() - 2.0F));
+
+ addEventHandler(new EventKey.Down.Handler()
+ {
+ public void onEvent(EventKey.Down event)
+ {
+ EventKey.Down eventKey = event;
+ if (ControlListBox.this.calculateIsMouseOver())
+ {
+ int currentIndex = ((ControlList)ControlListBox.this.getContent()).getCurrentIndex();
+ if (eventKey.getKey() == 208)
+ {
+ currentIndex++;
+ if (currentIndex >= ((ControlList)ControlListBox.this.getContent()).getOptions().size()) {
+ currentIndex = 0;
+ }
+ }
+ else if (eventKey.getKey() == 200)
+ {
+ currentIndex--;
+ if (currentIndex < 0) {
+ currentIndex = ((ControlList)ControlListBox.this.getContent()).getOptions().size() - 1;
+ }
+ }
+ ((ControlList)ControlListBox.this.getContent()).setIndex(currentIndex);
+ }
+ }
+ });
+ }
+
+ public final T getValue()
+ {
+ return ((ControlList)getContent()).getValue();
+ }
+
+ public final void setValue(T value)
+ {
+ ((ControlList)getContent()).setValue(value);
+ }
+
+ public void setOptions(Collection<T> options)
+ {
+ ((ControlList)getContent()).setOptions(options);
+ }
+
+ public IWidget createOption(T value, int y)
+ {
+ return new ControlOption((ControlList)getContent(), value, y);
+ }
+
+ public void setValidator(IValidator<IWidget> validator)
+ {
+ ((ControlList)getContent()).setValidator(validator);
+ }
+}
diff --git a/src/Java/binnie/craftgui/controls/listbox/ControlOption.java b/src/Java/binnie/craftgui/controls/listbox/ControlOption.java
new file mode 100644
index 0000000000..7a643101cf
--- /dev/null
+++ b/src/Java/binnie/craftgui/controls/listbox/ControlOption.java
@@ -0,0 +1,73 @@
+package binnie.craftgui.controls.listbox;
+
+import binnie.craftgui.controls.core.Control;
+import binnie.craftgui.controls.core.IControlValue;
+import binnie.craftgui.core.Attribute;
+import binnie.craftgui.core.CraftGUI;
+import binnie.craftgui.core.geometry.IPoint;
+import binnie.craftgui.core.renderer.Renderer;
+import binnie.craftgui.events.EventMouse.Down;
+import binnie.craftgui.events.EventMouse.Down.Handler;
+import binnie.craftgui.resource.minecraft.CraftGUITexture;
+
+public class ControlOption<T>
+ extends Control
+ implements IControlValue<T>
+{
+ T value;
+
+ public void onUpdateClient()
+ {
+ if (getValue() == null) {
+ return;
+ }
+ int colour = 10526880;
+ if (isCurrentSelection()) {
+ colour = 16777215;
+ }
+ setColour(colour);
+ }
+
+ public ControlOption(ControlList<T> controlList, T option)
+ {
+ this(controlList, option, 16);
+ }
+
+ public ControlOption(ControlList<T> controlList, T option, int height)
+ {
+ super(controlList, 0.0F, height, controlList.getSize().x(), 20.0F);
+ this.value = option;
+ if (this.value != null) {
+ addAttribute(Attribute.MouseOver);
+ }
+ addSelfEventHandler(new EventMouse.Down.Handler()
+ {
+ public void onEvent(EventMouse.Down event)
+ {
+ ((IControlValue)ControlOption.this.getParent()).setValue(ControlOption.this.getValue());
+ }
+ });
+ }
+
+ public T getValue()
+ {
+ return this.value;
+ }
+
+ public void setValue(T value)
+ {
+ this.value = value;
+ }
+
+ public boolean isCurrentSelection()
+ {
+ return (getValue() != null) && (getValue().equals(((IControlValue)getParent()).getValue()));
+ }
+
+ public void onRenderForeground()
+ {
+ if (isCurrentSelection()) {
+ CraftGUI.Render.texture(CraftGUITexture.Outline, getArea());
+ }
+ }
+}
diff --git a/src/Java/binnie/craftgui/controls/listbox/ControlTextOption.java b/src/Java/binnie/craftgui/controls/listbox/ControlTextOption.java
new file mode 100644
index 0000000000..6a47ec5d41
--- /dev/null
+++ b/src/Java/binnie/craftgui/controls/listbox/ControlTextOption.java
@@ -0,0 +1,37 @@
+package binnie.craftgui.controls.listbox;
+
+import binnie.craftgui.controls.ControlText;
+import binnie.craftgui.core.geometry.TextJustification;
+import binnie.craftgui.events.EventHandler.Origin;
+import binnie.craftgui.events.EventWidget.ChangeColour;
+import binnie.craftgui.events.EventWidget.ChangeColour.Handler;
+
+public class ControlTextOption<T>
+ extends ControlOption<T>
+{
+ public ControlTextOption(ControlList<T> controlList, T option, String optionName, int y)
+ {
+ super(controlList, option, y);
+ this.textWidget = new ControlText(this, getArea(), optionName, TextJustification.MiddleCenter);
+
+ addEventHandler(new EventWidget.ChangeColour.Handler()
+ {
+ public void onEvent(EventWidget.ChangeColour event)
+ {
+ ControlTextOption.this.textWidget.setColour(ControlTextOption.this.getColour());
+ }
+ }.setOrigin(EventHandler.Origin.Self, this));
+ }
+
+ public ControlTextOption(ControlList<T> controlList, T option, int y)
+ {
+ this(controlList, option, option.toString(), y);
+ }
+
+ protected ControlText textWidget = null;
+
+ public String getText()
+ {
+ return this.textWidget.getValue();
+ }
+}
diff --git a/src/Java/binnie/craftgui/controls/page/ControlPage.java b/src/Java/binnie/craftgui/controls/page/ControlPage.java
new file mode 100644
index 0000000000..0e5c89492e
--- /dev/null
+++ b/src/Java/binnie/craftgui/controls/page/ControlPage.java
@@ -0,0 +1,36 @@
+package binnie.craftgui.controls.page;
+
+import binnie.craftgui.controls.core.Control;
+import binnie.craftgui.controls.core.IControlValue;
+import binnie.craftgui.core.IWidget;
+
+public class ControlPage<T>
+ extends Control
+ implements IControlValue<T>
+{
+ T value;
+
+ public ControlPage(IWidget parent, T value)
+ {
+ this(parent, 0.0F, 0.0F, parent.w(), parent.h(), value);
+ }
+
+ public ControlPage(IWidget parent, float x, float y, float w, float h, T value)
+ {
+ super(parent, x, y, w, h);
+ setValue(value);
+ if (((parent instanceof IControlValue)) && (((IControlValue)parent).getValue() == null)) {
+ ((IControlValue)parent).setValue(value);
+ }
+ }
+
+ public T getValue()
+ {
+ return this.value;
+ }
+
+ public void setValue(T value)
+ {
+ this.value = value;
+ }
+}
diff --git a/src/Java/binnie/craftgui/controls/page/ControlPages.java b/src/Java/binnie/craftgui/controls/page/ControlPages.java
new file mode 100644
index 0000000000..43a205e874
--- /dev/null
+++ b/src/Java/binnie/craftgui/controls/page/ControlPages.java
@@ -0,0 +1,57 @@
+package binnie.craftgui.controls.page;
+
+import binnie.craftgui.controls.core.Control;
+import binnie.craftgui.controls.core.IControlValue;
+import binnie.craftgui.controls.core.IControlValues;
+import binnie.craftgui.core.IWidget;
+import binnie.craftgui.events.EventValueChanged;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+public class ControlPages<T>
+ extends Control
+ implements IControlValues<T>, IControlValue<T>
+{
+ public boolean isChildVisible(IWidget child)
+ {
+ if (child == null) {
+ return false;
+ }
+ return this.value == ((IControlValue)child).getValue();
+ }
+
+ public ControlPages(IWidget parent, float x, float y, float w, float h)
+ {
+ super(parent, x, y, w, h);
+ }
+
+ T value = null;
+
+ public void onAddChild(IWidget widget) {}
+
+ public T getValue()
+ {
+ return this.value;
+ }
+
+ public void setValue(T value)
+ {
+ if (this.value != value)
+ {
+ this.value = value;
+ callEvent(new EventValueChanged(this, value));
+ }
+ }
+
+ public Collection<T> getValues()
+ {
+ List<T> list = new ArrayList();
+ for (IWidget child : getWidgets()) {
+ list.add(((IControlValue)child).getValue());
+ }
+ return list;
+ }
+
+ public void setValues(Collection<T> values) {}
+}
diff --git a/src/Java/binnie/craftgui/controls/scroll/ControlScroll.java b/src/Java/binnie/craftgui/controls/scroll/ControlScroll.java
new file mode 100644
index 0000000000..1d03f5fbc7
--- /dev/null
+++ b/src/Java/binnie/craftgui/controls/scroll/ControlScroll.java
@@ -0,0 +1,22 @@
+package binnie.craftgui.controls.scroll;
+
+import binnie.craftgui.controls.core.Control;
+import binnie.craftgui.core.IWidget;
+
+public class ControlScroll
+ extends Control
+{
+ private IControlScrollable scrollWidget;
+
+ public ControlScroll(IWidget parent, float x, float y, float width, float height, IControlScrollable scrollWidget)
+ {
+ super(parent, x, y, width, height);
+ this.scrollWidget = scrollWidget;
+ new ControlScrollBar(this);
+ }
+
+ public IControlScrollable getScrollableWidget()
+ {
+ return this.scrollWidget;
+ }
+}
diff --git a/src/Java/binnie/craftgui/controls/scroll/ControlScrollBar.java b/src/Java/binnie/craftgui/controls/scroll/ControlScrollBar.java
new file mode 100644
index 0000000000..a94705767d
--- /dev/null
+++ b/src/Java/binnie/craftgui/controls/scroll/ControlScrollBar.java
@@ -0,0 +1,94 @@
+package binnie.craftgui.controls.scroll;
+
+import binnie.craftgui.controls.core.Control;
+import binnie.craftgui.core.Attribute;
+import binnie.craftgui.core.CraftGUI;
+import binnie.craftgui.core.IWidget;
+import binnie.craftgui.core.geometry.IArea;
+import binnie.craftgui.core.geometry.IPoint;
+import binnie.craftgui.core.renderer.Renderer;
+import binnie.craftgui.events.EventMouse.Down;
+import binnie.craftgui.events.EventMouse.Down.Handler;
+import binnie.craftgui.events.EventMouse.Drag;
+import binnie.craftgui.events.EventMouse.Drag.Handler;
+import binnie.craftgui.resource.minecraft.CraftGUITexture;
+
+public class ControlScrollBar
+ extends Control
+{
+ protected final IControlScrollable scrollable;
+
+ public ControlScrollBar(ControlScroll parent)
+ {
+ this(parent, 0.0F, 0.0F, parent.getSize().x(), parent.getSize().y(), parent.getScrollableWidget());
+ }
+
+ public ControlScrollBar(IWidget parent, float x, float y, float w, float h, IControlScrollable scrollable2)
+ {
+ super(parent, x, y, w, h);
+ this.scrollable = scrollable2;
+ addAttribute(Attribute.MouseOver);
+
+ addSelfEventHandler(new EventMouse.Drag.Handler()
+ {
+ public void onEvent(EventMouse.Drag event)
+ {
+ ControlScrollBar.this.scrollable.movePercentage(event.getDy() / (ControlScrollBar.this.h() - ControlScrollBar.this.getBarHeight()));
+ }
+ });
+ addSelfEventHandler(new EventMouse.Down.Handler()
+ {
+ public void onEvent(EventMouse.Down event)
+ {
+ float shownPercentage = ControlScrollBar.this.scrollable.getPercentageShown();
+ float percentageIndex = ControlScrollBar.this.scrollable.getPercentageIndex();
+ float minPercent = (1.0F - shownPercentage) * percentageIndex;
+ float maxPercent = minPercent + shownPercentage;
+ float clickedPercentage = ControlScrollBar.this.getRelativeMousePosition().y() / (ControlScrollBar.this.h() - 2.0F);
+ clickedPercentage = Math.max(Math.min(clickedPercentage, 1.0F), 0.0F);
+ if (clickedPercentage > maxPercent) {
+ ControlScrollBar.this.scrollable.setPercentageIndex((clickedPercentage - shownPercentage) / (1.0F - shownPercentage));
+ }
+ if (clickedPercentage < minPercent) {
+ ControlScrollBar.this.scrollable.setPercentageIndex(clickedPercentage / (1.0F - shownPercentage));
+ }
+ }
+ });
+ }
+
+ public void onUpdateClient() {}
+
+ public boolean isEnabled()
+ {
+ return this.scrollable.getPercentageShown() < 0.99F;
+ }
+
+ public float getBarHeight()
+ {
+ return h() * this.scrollable.getPercentageShown();
+ }
+
+ protected IArea getRenderArea()
+ {
+ float height = getBarHeight();
+ if (height < 6.0F) {
+ height = 6.0F;
+ }
+ float yOffset = ((int)h() - (int)getBarHeight()) * this.scrollable.getPercentageIndex();
+
+ return new IArea(0.0F, yOffset, getSize().x(), height);
+ }
+
+ public void onRenderBackground()
+ {
+ IArea renderArea = getRenderArea();
+
+ Object texture = CraftGUITexture.ScrollDisabled;
+ if (isMouseOver()) {
+ texture = CraftGUITexture.ScrollHighlighted;
+ } else if (isEnabled()) {
+ texture = CraftGUITexture.Scroll;
+ }
+ CraftGUI.Render.texture(texture, renderArea);
+ }
+}
diff --git a/src/Java/binnie/craftgui/controls/scroll/ControlScrollableContent.java b/src/Java/binnie/craftgui/controls/scroll/ControlScrollableContent.java
new file mode 100644
index 0000000000..442c9d3226
--- /dev/null
+++ b/src/Java/binnie/craftgui/controls/scroll/ControlScrollableContent.java
@@ -0,0 +1,134 @@
+package binnie.craftgui.controls.scroll;
+
+import binnie.craftgui.controls.core.Control;
+import binnie.craftgui.core.IWidget;
+import binnie.craftgui.core.geometry.IArea;
+import binnie.craftgui.core.geometry.IPoint;
+import binnie.craftgui.events.EventMouse.Wheel;
+import binnie.craftgui.events.EventMouse.Wheel.Handler;
+import binnie.craftgui.events.EventWidget.ChangeSize;
+import binnie.craftgui.events.EventWidget.ChangeSize.Handler;
+
+public class ControlScrollableContent<T extends IWidget>
+ extends Control
+ implements IControlScrollable
+{
+ protected T controlChild;
+ protected float scrollBarSize;
+
+ public ControlScrollableContent(IWidget parent, float x, float y, float w, float h, float scrollBarSize)
+ {
+ super(parent, x, y, w, h);
+ if (scrollBarSize != 0.0F) {
+ new ControlScroll(this, getSize().x() - scrollBarSize, 0.0F, scrollBarSize, getSize().y(), this);
+ }
+ addEventHandler(new EventMouse.Wheel.Handler()
+ {
+ public void onEvent(EventMouse.Wheel event)
+ {
+ if ((ControlScrollableContent.this.getRelativeMousePosition().x() > 0.0F) && (ControlScrollableContent.this.getRelativeMousePosition().y() > 0.0F) && (ControlScrollableContent.this.getRelativeMousePosition().x() < ControlScrollableContent.this.getSize().x()) && (ControlScrollableContent.this.getRelativeMousePosition().y() < ControlScrollableContent.this.getSize().y()))
+ {
+ if (ControlScrollableContent.this.getMovementRange() == 0.0F) {
+ return;
+ }
+ float percentageMove = 0.8F / ControlScrollableContent.this.getMovementRange();
+ ControlScrollableContent.this.movePercentage(percentageMove * -event.getDWheel());
+ }
+ }
+ });
+ this.scrollBarSize = scrollBarSize;
+ }
+
+ public void setScrollableContent(T child)
+ {
+ this.controlChild = child;
+ if (child == null) {
+ return;
+ }
+ child.setCroppedZone(this, new IArea(1.0F, 1.0F, getSize().x() - 2.0F - this.scrollBarSize, getSize().y() - 2.0F));
+ child.addSelfEventHandler(new EventWidget.ChangeSize.Handler()
+ {
+ public void onEvent(EventWidget.ChangeSize event)
+ {
+ ControlScrollableContent.this.controlChild.setOffset(new IPoint(0.0F, -ControlScrollableContent.this.percentageIndex * ControlScrollableContent.this.getMovementRange()));
+ if (ControlScrollableContent.this.getMovementRange() == 0.0F) {
+ ControlScrollableContent.this.percentageIndex = 0.0F;
+ }
+ }
+ });
+ }
+
+ public T getContent()
+ {
+ return this.controlChild;
+ }
+
+ public float getPercentageShown()
+ {
+ if ((this.controlChild == null) || (this.controlChild.getSize().y() == 0.0F)) {
+ return 1.0F;
+ }
+ float shown = getSize().y() / this.controlChild.getSize().y();
+ return Math.min(shown, 1.0F);
+ }
+
+ float percentageIndex = 0.0F;
+
+ public float getPercentageIndex()
+ {
+ return this.percentageIndex;
+ }
+
+ public void movePercentage(float percentage)
+ {
+ if (this.controlChild == null) {
+ return;
+ }
+ this.percentageIndex += percentage;
+ if (this.percentageIndex > 1.0F) {
+ this.percentageIndex = 1.0F;
+ } else if (this.percentageIndex < 0.0F) {
+ this.percentageIndex = 0.0F;
+ }
+ if (getMovementRange() == 0.0F) {
+ this.percentageIndex = 0.0F;
+ }
+ this.controlChild.setOffset(new IPoint(0.0F, -this.percentageIndex * getMovementRange()));
+ }
+
+ public void setPercentageIndex(float index)
+ {
+ movePercentage(index - this.percentageIndex);
+ }
+
+ public float getMovementRange()
+ {
+ if (this.controlChild == null) {
+ return 0.0F;
+ }
+ float range = this.controlChild.getSize().y() - getSize().y();
+ return Math.max(range, 0.0F);
+ }
+
+ public void onUpdateClient()
+ {
+ setPercentageIndex(getPercentageIndex());
+ }
+
+ public void ensureVisible(float minY, float maxY, float totalY)
+ {
+ minY /= totalY;
+ maxY /= totalY;
+
+ float shownPercentage = getPercentageShown();
+ float percentageIndex = getPercentageIndex();
+ float minPercent = (1.0F - shownPercentage) * percentageIndex;
+ float maxPercent = minPercent + shownPercentage;
+ if (maxY > maxPercent) {
+ setPercentageIndex((maxY - shownPercentage) / (1.0F - shownPercentage));
+ }
+ if (minY < minPercent) {
+ setPercentageIndex(minY / (1.0F - shownPercentage));
+ }
+ }
+}
diff --git a/src/Java/binnie/craftgui/controls/scroll/IControlScrollable.java b/src/Java/binnie/craftgui/controls/scroll/IControlScrollable.java
new file mode 100644
index 0000000000..39154815e5
--- /dev/null
+++ b/src/Java/binnie/craftgui/controls/scroll/IControlScrollable.java
@@ -0,0 +1,17 @@
+package binnie.craftgui.controls.scroll;
+
+import binnie.craftgui.core.IWidget;
+
+public abstract interface IControlScrollable
+ extends IWidget
+{
+ public abstract float getPercentageShown();
+
+ public abstract float getPercentageIndex();
+
+ public abstract void movePercentage(float paramFloat);
+
+ public abstract void setPercentageIndex(float paramFloat);
+
+ public abstract float getMovementRange();
+}
diff --git a/src/Java/binnie/craftgui/controls/tab/ControlTab.java b/src/Java/binnie/craftgui/controls/tab/ControlTab.java
new file mode 100644
index 0000000000..e05b7ed01a
--- /dev/null
+++ b/src/Java/binnie/craftgui/controls/tab/ControlTab.java
@@ -0,0 +1,128 @@
+package binnie.craftgui.controls.tab;
+
+import binnie.craftgui.controls.core.Control;
+import binnie.craftgui.controls.core.IControlValue;
+import binnie.craftgui.core.Attribute;
+import binnie.craftgui.core.CraftGUI;
+import binnie.craftgui.core.ITooltip;
+import binnie.craftgui.core.Tooltip;
+import binnie.craftgui.core.geometry.IArea;
+import binnie.craftgui.core.geometry.IPoint;
+import binnie.craftgui.core.geometry.Position;
+import binnie.craftgui.core.renderer.Renderer;
+import binnie.craftgui.events.EventMouse.Down;
+import binnie.craftgui.events.EventMouse.Down.Handler;
+import binnie.craftgui.events.EventValueChanged;
+import binnie.craftgui.minecraft.control.ControlItemDisplay;
+import binnie.craftgui.minecraft.control.ControlTabIcon;
+import binnie.craftgui.resource.Texture;
+import binnie.craftgui.resource.minecraft.CraftGUITexture;
+import java.util.List;
+
+public class ControlTab<T>
+ extends Control
+ implements ITooltip, IControlValue<T>
+{
+ private ControlTabBar<T> tabBar;
+ protected T value;
+
+ public ControlTab(ControlTabBar<T> parent, float x, float y, float w, float h, T value)
+ {
+ super(parent, x, y, w, h);
+ setValue(value);
+ this.tabBar = parent;
+ addAttribute(Attribute.MouseOver);
+
+ addSelfEventHandler(new EventMouse.Down.Handler()
+ {
+ public void onEvent(EventMouse.Down event)
+ {
+ ControlTab.this.callEvent(new EventValueChanged(ControlTab.this.getWidget(), ControlTab.this.getValue()));
+ }
+ });
+ }
+
+ public void getTooltip(Tooltip tooltip)
+ {
+ String name = getName();
+ if ((name != null) && (!name.isEmpty())) {
+ tooltip.add(getName());
+ }
+ if ((this.value instanceof ITooltip)) {
+ ((ITooltip)this.value).getTooltip(tooltip);
+ }
+ }
+
+ public T getValue()
+ {
+ return this.value;
+ }
+
+ public void setValue(T value)
+ {
+ this.value = value;
+ }
+
+ public boolean isCurrentSelection()
+ {
+ return (getValue() != null) && (getValue().equals(this.tabBar.getValue()));
+ }
+
+ public Position getTabPosition()
+ {
+ return this.tabBar.position;
+ }
+
+ public String getName()
+ {
+ return this.value.toString();
+ }
+
+ public void onRenderBackground()
+ {
+ Object texture = CraftGUITexture.TabDisabled;
+ if (isMouseOver()) {
+ texture = CraftGUITexture.TabHighlighted;
+ } else if (isCurrentSelection()) {
+ texture = CraftGUITexture.Tab;
+ }
+ Texture lTexture = CraftGUI.Render.getTexture(texture);
+ Position position = getTabPosition();
+
+ Texture iTexture = lTexture.crop(position, 8.0F);
+
+
+ IArea area = getArea();
+ if (texture == CraftGUITexture.TabDisabled) {
+ if ((position == Position.Top) || (position == Position.Left))
+ {
+ area.setPosition(area.getPosition().sub(new IPoint(4 * position.x(), 4 * position.y())));
+ area.setSize(area.getSize().add(new IPoint(4 * position.x(), 4 * position.y())));
+ }
+ else
+ {
+ area.setSize(area.getSize().sub(new IPoint(4 * position.x(), 4 * position.y())));
+ }
+ }
+ CraftGUI.Render.texture(iTexture, area);
+ if ((this instanceof ControlTabIcon))
+ {
+ ControlTabIcon icon = (ControlTabIcon)this;
+ ControlItemDisplay item = (ControlItemDisplay)getWidgets().get(0);
+ if (texture == CraftGUITexture.TabDisabled) {
+ item.setColour(-1431655766);
+ } else {
+ item.setColour(-1);
+ }
+ if (icon.hasOutline())
+ {
+ iTexture = CraftGUI.Render.getTexture(CraftGUITexture.TabOutline);
+ iTexture = iTexture.crop(position, 8.0F);
+
+ CraftGUI.Render.colour(icon.getOutlineColour());
+
+ CraftGUI.Render.texture(iTexture, area.inset(2));
+ }
+ }
+ }
+}
diff --git a/src/Java/binnie/craftgui/controls/tab/ControlTabBar.java b/src/Java/binnie/craftgui/controls/tab/ControlTabBar.java
new file mode 100644
index 0000000000..d209887994
--- /dev/null
+++ b/src/Java/binnie/craftgui/controls/tab/ControlTabBar.java
@@ -0,0 +1,86 @@
+package binnie.craftgui.controls.tab;
+
+import binnie.craftgui.controls.core.Control;
+import binnie.craftgui.controls.core.IControlValue;
+import binnie.craftgui.core.IWidget;
+import binnie.craftgui.core.geometry.IPoint;
+import binnie.craftgui.core.geometry.Position;
+import binnie.craftgui.events.EventHandler.Origin;
+import binnie.craftgui.events.EventValueChanged;
+import binnie.craftgui.events.EventValueChanged.Handler;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.List;
+
+public class ControlTabBar<T>
+ extends Control
+ implements IControlValue<T>
+{
+ T value;
+ Position position;
+
+ public ControlTabBar(IWidget parent, float x, float y, float width, float height, Position position)
+ {
+ super(parent, x, y, width, height);
+ this.position = position;
+
+ addEventHandler(new EventValueChanged.Handler()
+ {
+ public void onEvent(EventValueChanged event)
+ {
+ ControlTabBar.this.setValue(event.getValue());
+ }
+ }.setOrigin(EventHandler.Origin.DirectChild, this));
+ }
+
+ public void setValues(Collection<T> values)
+ {
+ for (int i = 0; i < getWidgets().size();) {
+ deleteChild((IWidget)getWidgets().get(0));
+ }
+ float length = values.size();
+ int tabDimension = (int)(getSize().y() / length);
+ if ((this.position == Position.Top) || (this.position == Position.Bottom)) {
+ tabDimension = (int)(getSize().x() / length);
+ }
+ int i = 0;
+ for (T value : values)
+ {
+ IWidget tab;
+ IWidget tab;
+ if ((this.position == Position.Top) || (this.position == Position.Bottom)) {
+ tab = createTab(i * tabDimension, 0.0F, tabDimension, getSize().y(), value);
+ } else {
+ tab = createTab(0.0F, i * tabDimension, getSize().x(), tabDimension, value);
+ }
+ i++;
+ }
+ if ((this.value == null) && (!values.isEmpty())) {
+ setValue(values.iterator().next());
+ }
+ }
+
+ public ControlTab<T> createTab(float x, float y, float w, float h, T value)
+ {
+ return new ControlTab(this, x, y, w, h, value);
+ }
+
+ public T getValue()
+ {
+ return this.value;
+ }
+
+ public void setValue(T value)
+ {
+ boolean change = this.value != value;
+ this.value = value;
+ if (change) {
+ callEvent(new EventValueChanged(this, value));
+ }
+ }
+
+ public Position getDirection()
+ {
+ return this.position;
+ }
+}
diff --git a/src/Java/binnie/craftgui/core/Attribute.java b/src/Java/binnie/craftgui/core/Attribute.java
new file mode 100644
index 0000000000..5d73f58ae2
--- /dev/null
+++ b/src/Java/binnie/craftgui/core/Attribute.java
@@ -0,0 +1,9 @@
+package binnie.craftgui.core;
+
+public enum Attribute
+ implements IWidgetAttribute
+{
+ MouseOver, CanFocus, NeedsDeletion, AlwaysOnTop, BlockTooltip;
+
+ private Attribute() {}
+}
diff --git a/src/Java/binnie/craftgui/core/CraftGUI.java b/src/Java/binnie/craftgui/core/CraftGUI.java
new file mode 100644
index 0000000000..3cce3493cf
--- /dev/null
+++ b/src/Java/binnie/craftgui/core/CraftGUI.java
@@ -0,0 +1,10 @@
+package binnie.craftgui.core;
+
+import binnie.craftgui.core.renderer.Renderer;
+import binnie.craftgui.resource.minecraft.CraftGUIResourceManager;
+
+public class CraftGUI
+{
+ public static CraftGUIResourceManager ResourceManager;
+ public static Renderer Render;
+}
diff --git a/src/Java/binnie/craftgui/core/ITooltip.java b/src/Java/binnie/craftgui/core/ITooltip.java
new file mode 100644
index 0000000000..634ce476d5
--- /dev/null
+++ b/src/Java/binnie/craftgui/core/ITooltip.java
@@ -0,0 +1,6 @@
+package binnie.craftgui.core;
+
+public abstract interface ITooltip
+{
+ public abstract void getTooltip(Tooltip paramTooltip);
+}
diff --git a/src/Java/binnie/craftgui/core/ITooltipHelp.java b/src/Java/binnie/craftgui/core/ITooltipHelp.java
new file mode 100644
index 0000000000..f01744ab6f
--- /dev/null
+++ b/src/Java/binnie/craftgui/core/ITooltipHelp.java
@@ -0,0 +1,6 @@
+package binnie.craftgui.core;
+
+public abstract interface ITooltipHelp
+{
+ public abstract void getHelpTooltip(Tooltip paramTooltip);
+}
diff --git a/src/Java/binnie/craftgui/core/ITopLevelWidget.java b/src/Java/binnie/craftgui/core/ITopLevelWidget.java
new file mode 100644
index 0000000000..2e209b3ea6
--- /dev/null
+++ b/src/Java/binnie/craftgui/core/ITopLevelWidget.java
@@ -0,0 +1,29 @@
+package binnie.craftgui.core;
+
+import binnie.craftgui.core.geometry.IPoint;
+
+public abstract interface ITopLevelWidget
+ extends IWidget
+{
+ public abstract void setMousePosition(int paramInt1, int paramInt2);
+
+ public abstract IPoint getAbsoluteMousePosition();
+
+ public abstract IWidget getFocusedWidget();
+
+ public abstract IWidget getMousedOverWidget();
+
+ public abstract IWidget getDraggedWidget();
+
+ public abstract boolean isFocused(IWidget paramIWidget);
+
+ public abstract boolean isMouseOver(IWidget paramIWidget);
+
+ public abstract boolean isDragged(IWidget paramIWidget);
+
+ public abstract void updateTopLevel();
+
+ public abstract void widgetDeleted(IWidget paramIWidget);
+
+ public abstract IPoint getDragDistance();
+}
diff --git a/src/Java/binnie/craftgui/core/IWidget.java b/src/Java/binnie/craftgui/core/IWidget.java
new file mode 100644
index 0000000000..cd85fa7a40
--- /dev/null
+++ b/src/Java/binnie/craftgui/core/IWidget.java
@@ -0,0 +1,138 @@
+package binnie.craftgui.core;
+
+import binnie.craftgui.core.geometry.IArea;
+import binnie.craftgui.core.geometry.IPoint;
+import binnie.craftgui.events.Event;
+import binnie.craftgui.events.EventHandler;
+import java.util.List;
+
+public abstract interface IWidget
+{
+ public abstract IWidget getParent();
+
+ public abstract void deleteChild(IWidget paramIWidget);
+
+ public abstract void deleteAllChildren();
+
+ public abstract ITopLevelWidget getSuperParent();
+
+ public abstract boolean isTopLevel();
+
+ public abstract IPoint getPosition();
+
+ public abstract IPoint pos();
+
+ public abstract void setPosition(IPoint paramIPoint);
+
+ public abstract IPoint getSize();
+
+ public abstract IPoint size();
+
+ public abstract void setSize(IPoint paramIPoint);
+
+ public abstract IPoint getOriginalPosition();
+
+ public abstract IPoint getAbsolutePosition();
+
+ public abstract IPoint getOriginalAbsolutePosition();
+
+ public abstract IPoint getOffset();
+
+ public abstract IArea getArea();
+
+ public abstract IArea area();
+
+ public abstract void setOffset(IPoint paramIPoint);
+
+ public abstract IPoint getMousePosition();
+
+ public abstract IPoint getRelativeMousePosition();
+
+ public abstract void setColour(int paramInt);
+
+ public abstract int getColour();
+
+ public abstract void render();
+
+ public abstract void updateClient();
+
+ public abstract void enable();
+
+ public abstract void disable();
+
+ public abstract void show();
+
+ public abstract void hide();
+
+ public abstract boolean calculateIsMouseOver();
+
+ public abstract boolean isEnabled();
+
+ public abstract boolean isVisible();
+
+ public abstract boolean isFocused();
+
+ public abstract boolean isMouseOver();
+
+ public abstract boolean isDragged();
+
+ public abstract boolean isChildVisible(IWidget paramIWidget);
+
+ public abstract boolean isChildEnabled(IWidget paramIWidget);
+
+ public abstract boolean canMouseOver();
+
+ public abstract boolean canFocus();
+
+ public abstract IWidget addWidget(IWidget paramIWidget);
+
+ public abstract List<IWidget> getWidgets();
+
+ public abstract void callEvent(Event paramEvent);
+
+ public abstract void recieveEvent(Event paramEvent);
+
+ public abstract void onUpdateClient();
+
+ public abstract void delete();
+
+ public abstract void onDelete();
+
+ public abstract <T> T getWidget(Class<T> paramClass);
+
+ public abstract IArea getCroppedZone();
+
+ public abstract void setCroppedZone(IWidget paramIWidget, IArea paramIArea);
+
+ public abstract boolean isCroppedWidet();
+
+ public abstract IWidget getCropWidget();
+
+ public abstract boolean isMouseOverWidget(IPoint paramIPoint);
+
+ public abstract int getLevel();
+
+ public abstract boolean isDescendant(IWidget paramIWidget);
+
+ public abstract List<IWidgetAttribute> getAttributes();
+
+ public abstract boolean hasAttribute(IWidgetAttribute paramIWidgetAttribute);
+
+ public abstract boolean addAttribute(IWidgetAttribute paramIWidgetAttribute);
+
+ public abstract <E extends Event> void addEventHandler(EventHandler<E> paramEventHandler);
+
+ public abstract <E extends Event> void addSelfEventHandler(EventHandler<E> paramEventHandler);
+
+ public abstract boolean contains(IPoint paramIPoint);
+
+ public abstract float x();
+
+ public abstract float y();
+
+ public abstract float w();
+
+ public abstract float h();
+
+ public abstract void onRender(RenderStage paramRenderStage);
+}
diff --git a/src/Java/binnie/craftgui/core/IWidgetAttribute.java b/src/Java/binnie/craftgui/core/IWidgetAttribute.java
new file mode 100644
index 0000000000..87d994ca43
--- /dev/null
+++ b/src/Java/binnie/craftgui/core/IWidgetAttribute.java
@@ -0,0 +1,3 @@
+package binnie.craftgui.core;
+
+public abstract interface IWidgetAttribute {}
diff --git a/src/Java/binnie/craftgui/core/RenderStage.java b/src/Java/binnie/craftgui/core/RenderStage.java
new file mode 100644
index 0000000000..e710c833e6
--- /dev/null
+++ b/src/Java/binnie/craftgui/core/RenderStage.java
@@ -0,0 +1,8 @@
+package binnie.craftgui.core;
+
+public enum RenderStage
+{
+ PreChildren, PostChildren, PostSiblings;
+
+ private RenderStage() {}
+}
diff --git a/src/Java/binnie/craftgui/core/Tooltip.java b/src/Java/binnie/craftgui/core/Tooltip.java
new file mode 100644
index 0000000000..4afb7f6bc5
--- /dev/null
+++ b/src/Java/binnie/craftgui/core/Tooltip.java
@@ -0,0 +1,84 @@
+package binnie.craftgui.core;
+
+import java.util.ArrayList;
+import java.util.List;
+import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraftforge.fluids.FluidStack;
+
+public class Tooltip
+{
+ public void add(String string)
+ {
+ this.tooltip.add(string);
+ }
+
+ public String getLine(int index)
+ {
+ String string = (String)getList().get(index);
+ return string;
+ }
+
+ public void add(List list)
+ {
+ for (Object obj : list) {
+ this.tooltip.add((String)obj);
+ }
+ }
+
+ List<String> tooltip = new ArrayList();
+
+ public List<String> getList()
+ {
+ return this.tooltip;
+ }
+
+ public boolean exists()
+ {
+ return this.tooltip.size() > 0;
+ }
+
+ public static enum Type
+ implements Tooltip.ITooltipType
+ {
+ Standard, Help, Information, User, Power;
+
+ private Type() {}
+ }
+
+ public void setType(ITooltipType type)
+ {
+ this.type = type;
+ }
+
+ ITooltipType type = Type.Standard;
+ public int maxWidth = 256;
+
+ public void setMaxWidth(int w)
+ {
+ this.maxWidth = w;
+ }
+
+ public ITooltipType getType()
+ {
+ return this.type;
+ }
+
+ public void add(ItemStack item, String string)
+ {
+ NBTTagCompound nbt = new NBTTagCompound();
+ item.writeToNBT(nbt);
+ nbt.setByte("nbt-type", (byte)105);
+ add("~~~" + nbt.toString() + "~~~" + string);
+ }
+
+ public void add(FluidStack item, String string)
+ {
+ NBTTagCompound nbt = new NBTTagCompound();
+ item.writeToNBT(nbt);
+ nbt.setByte("nbt-type", (byte)102);
+ add("~~~" + nbt.toString() + "~~~" + string);
+ }
+
+ public static abstract interface ITooltipType {}
+}
diff --git a/src/Java/binnie/craftgui/core/TopLevelWidget.java b/src/Java/binnie/craftgui/core/TopLevelWidget.java
new file mode 100644
index 0000000000..6f2cdd18a6
--- /dev/null
+++ b/src/Java/binnie/craftgui/core/TopLevelWidget.java
@@ -0,0 +1,248 @@
+package binnie.craftgui.core;
+
+import binnie.craftgui.core.geometry.IArea;
+import binnie.craftgui.core.geometry.IPoint;
+import binnie.craftgui.events.EventMouse.Down;
+import binnie.craftgui.events.EventMouse.Down.Handler;
+import binnie.craftgui.events.EventMouse.Drag;
+import binnie.craftgui.events.EventMouse.Move;
+import binnie.craftgui.events.EventMouse.Up;
+import binnie.craftgui.events.EventMouse.Up.Handler;
+import binnie.craftgui.events.EventWidget.EndDrag;
+import binnie.craftgui.events.EventWidget.EndMouseOver;
+import binnie.craftgui.events.EventWidget.GainFocus;
+import binnie.craftgui.events.EventWidget.LoseFocus;
+import binnie.craftgui.events.EventWidget.StartDrag;
+import binnie.craftgui.events.EventWidget.StartDrag.Handler;
+import binnie.craftgui.events.EventWidget.StartMouseOver;
+import java.util.ArrayDeque;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Deque;
+import java.util.List;
+import java.util.ListIterator;
+import org.lwjgl.input.Mouse;
+
+public abstract class TopLevelWidget
+ extends Widget
+ implements ITopLevelWidget
+{
+ public TopLevelWidget()
+ {
+ super(null);
+
+ addEventHandler(new EventMouse.Down.Handler()
+ {
+ public void onEvent(EventMouse.Down event)
+ {
+ TopLevelWidget.this.setDraggedWidget(TopLevelWidget.this.mousedOverWidget, event.getButton());
+ TopLevelWidget.this.setFocusedWidget(TopLevelWidget.this.mousedOverWidget);
+ }
+ });
+ addEventHandler(new EventMouse.Up.Handler()
+ {
+ public void onEvent(EventMouse.Up event)
+ {
+ TopLevelWidget.this.setDraggedWidget(null);
+ }
+ });
+ addEventHandler(new EventWidget.StartDrag.Handler()
+ {
+ public void onEvent(EventWidget.StartDrag event)
+ {
+ TopLevelWidget.this.dragStart = TopLevelWidget.this.getRelativeMousePosition();
+ }
+ });
+ }
+
+ IWidget mousedOverWidget = null;
+ IWidget draggedWidget = null;
+ IWidget focusedWidget = null;
+
+ public void setMousedOverWidget(IWidget widget)
+ {
+ if (this.mousedOverWidget == widget) {
+ return;
+ }
+ if (this.mousedOverWidget != null) {
+ callEvent(new EventWidget.EndMouseOver(this.mousedOverWidget));
+ }
+ this.mousedOverWidget = widget;
+ if (this.mousedOverWidget != null) {
+ callEvent(new EventWidget.StartMouseOver(this.mousedOverWidget));
+ }
+ }
+
+ public void setDraggedWidget(IWidget widget)
+ {
+ setDraggedWidget(widget, -1);
+ }
+
+ public void setDraggedWidget(IWidget widget, int button)
+ {
+ if (this.draggedWidget == widget) {
+ return;
+ }
+ if (this.draggedWidget != null) {
+ callEvent(new EventWidget.EndDrag(this.draggedWidget));
+ }
+ this.draggedWidget = widget;
+ if (this.draggedWidget != null) {
+ callEvent(new EventWidget.StartDrag(this.draggedWidget, button));
+ }
+ }
+
+ public void setFocusedWidget(IWidget widget)
+ {
+ IWidget newWidget = widget;
+ if (this.focusedWidget == newWidget) {
+ return;
+ }
+ if ((newWidget != null) && (!newWidget.canFocus())) {
+ newWidget = null;
+ }
+ if (this.focusedWidget != null) {
+ callEvent(new EventWidget.LoseFocus(this.focusedWidget));
+ }
+ this.focusedWidget = newWidget;
+ if (this.focusedWidget != null) {
+ callEvent(new EventWidget.GainFocus(this.focusedWidget));
+ }
+ }
+
+ public IWidget getMousedOverWidget()
+ {
+ return this.mousedOverWidget;
+ }
+
+ public IWidget getDraggedWidget()
+ {
+ return this.draggedWidget;
+ }
+
+ public IWidget getFocusedWidget()
+ {
+ return this.focusedWidget;
+ }
+
+ public boolean isMouseOver(IWidget widget)
+ {
+ return getMousedOverWidget() == widget;
+ }
+
+ public boolean isDragged(IWidget widget)
+ {
+ return getDraggedWidget() == widget;
+ }
+
+ public boolean isFocused(IWidget widget)
+ {
+ return getFocusedWidget() == widget;
+ }
+
+ public void updateTopLevel()
+ {
+ setMousedOverWidget(calculateMousedOverWidget());
+ if ((getFocusedWidget() != null) && ((!getFocusedWidget().isVisible()) || (!getFocusedWidget().isEnabled()))) {
+ setFocusedWidget(null);
+ }
+ if (!Mouse.isButtonDown(0)) {
+ if (this.draggedWidget != null) {
+ setDraggedWidget(null);
+ }
+ }
+ }
+
+ private IWidget calculateMousedOverWidget()
+ {
+ Deque<IWidget> queue = calculateMousedOverWidgets();
+ while (!queue.isEmpty())
+ {
+ IWidget widget = (IWidget)queue.removeFirst();
+ if ((widget.isEnabled()) && (widget.isVisible()) && (widget.canMouseOver())) {
+ if ((widget.isEnabled()) && (widget.isVisible()) && (widget.canMouseOver()) && (widget.calculateIsMouseOver())) {
+ return widget;
+ }
+ }
+ }
+ return null;
+ }
+
+ public Deque<IWidget> calculateMousedOverWidgets()
+ {
+ Deque<IWidget> list = new ArrayDeque();
+ for (IWidget widget : getQueuedWidgets(this)) {
+ if (widget.calculateIsMouseOver()) {
+ list.addLast(widget);
+ }
+ }
+ return list;
+ }
+
+ private Collection<IWidget> getQueuedWidgets(IWidget widget)
+ {
+ List<IWidget> widgets = new ArrayList();
+
+ boolean addChildren = true;
+ if (widget.isCroppedWidet()) {
+ addChildren = widget.getCroppedZone().contains(widget.getCropWidget().getRelativeMousePosition());
+ }
+ if (addChildren)
+ {
+ ListIterator<IWidget> li = widget.getWidgets().listIterator(widget.getWidgets().size());
+ while (li.hasPrevious())
+ {
+ IWidget child = (IWidget)li.previous();
+ widgets.addAll(getQueuedWidgets(child));
+ }
+ }
+ widgets.add(widget);
+
+ return widgets;
+ }
+
+ protected IPoint mousePosition = new IPoint(0.0F, 0.0F);
+
+ public void setMousePosition(int x, int y)
+ {
+ float dx = x - this.mousePosition.x();
+ float dy = y - this.mousePosition.y();
+ if ((dx != 0.0F) || (dy != 0.0F)) {
+ if (getDraggedWidget() != null) {
+ callEvent(new EventMouse.Drag(getDraggedWidget(), dx, dy));
+ } else {
+ callEvent(new EventMouse.Move(this, dx, dy));
+ }
+ }
+ if ((this.mousePosition.x() != x) || (this.mousePosition.y() != y))
+ {
+ this.mousePosition = new IPoint(x, y);
+ setMousedOverWidget(calculateMousedOverWidget());
+ }
+ }
+
+ public IPoint getAbsoluteMousePosition()
+ {
+ return this.mousePosition;
+ }
+
+ public void widgetDeleted(IWidget widget)
+ {
+ if (isMouseOver(widget)) {
+ setMousedOverWidget(null);
+ }
+ if (isDragged(widget)) {
+ setDraggedWidget(null);
+ }
+ if (isFocused(widget)) {
+ setFocusedWidget(null);
+ }
+ }
+
+ IPoint dragStart = IPoint.ZERO;
+
+ public IPoint getDragDistance()
+ {
+ return getRelativeMousePosition().sub(this.dragStart);
+ }
+}
diff --git a/src/Java/binnie/craftgui/core/Widget.java b/src/Java/binnie/craftgui/core/Widget.java
new file mode 100644
index 0000000000..448bcbaed6
--- /dev/null
+++ b/src/Java/binnie/craftgui/core/Widget.java
@@ -0,0 +1,499 @@
+package binnie.craftgui.core;
+
+import binnie.craftgui.core.geometry.IArea;
+import binnie.craftgui.core.geometry.IPoint;
+import binnie.craftgui.core.renderer.Renderer;
+import binnie.craftgui.events.Event;
+import binnie.craftgui.events.EventHandler;
+import binnie.craftgui.events.EventHandler.Origin;
+import binnie.craftgui.events.EventWidget.ChangeColour;
+import binnie.craftgui.events.EventWidget.ChangeOffset;
+import binnie.craftgui.events.EventWidget.ChangePosition;
+import binnie.craftgui.events.EventWidget.ChangeSize;
+import binnie.craftgui.events.EventWidget.Disable;
+import binnie.craftgui.events.EventWidget.Enable;
+import binnie.craftgui.events.EventWidget.Hide;
+import binnie.craftgui.events.EventWidget.Show;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.ConcurrentModificationException;
+import java.util.List;
+
+public class Widget
+ implements IWidget
+{
+ public Widget(IWidget parent)
+ {
+ this.parent = parent;
+ if (parent != null) {
+ parent.addWidget(this);
+ }
+ }
+
+ private IWidget parent = null;
+ private List<IWidget> subWidgets = new ArrayList();
+ private List<IWidgetAttribute> attributes = new ArrayList();
+
+ public List<IWidgetAttribute> getAttributes()
+ {
+ return this.attributes;
+ }
+
+ public boolean hasAttribute(IWidgetAttribute attribute)
+ {
+ return this.attributes.contains(attribute);
+ }
+
+ public boolean addAttribute(IWidgetAttribute attribute)
+ {
+ return this.attributes.add(attribute);
+ }
+
+ public final void deleteChild(IWidget child)
+ {
+ if (child == null) {
+ return;
+ }
+ child.delete();
+ this.subWidgets.remove(child);
+ }
+
+ public final void deleteAllChildren()
+ {
+ while (!this.subWidgets.isEmpty()) {
+ deleteChild((IWidget)this.subWidgets.get(0));
+ }
+ }
+
+ public final IWidget getParent()
+ {
+ return this.parent;
+ }
+
+ public final ITopLevelWidget getSuperParent()
+ {
+ return isTopLevel() ? (ITopLevelWidget)this : this.parent.getSuperParent();
+ }
+
+ public final IWidget addWidget(IWidget widget)
+ {
+ if ((this.subWidgets.size() != 0) && (((IWidget)this.subWidgets.get(this.subWidgets.size() - 1)).hasAttribute(Attribute.AlwaysOnTop))) {
+ this.subWidgets.add(this.subWidgets.size() - 1, widget);
+ } else {
+ this.subWidgets.add(widget);
+ }
+ onAddChild(widget);
+ return widget;
+ }
+
+ protected void onAddChild(IWidget widget) {}
+
+ public final List<IWidget> getWidgets()
+ {
+ return this.subWidgets;
+ }
+
+ public final boolean isTopLevel()
+ {
+ return this instanceof ITopLevelWidget;
+ }
+
+ private IPoint position = new IPoint(0.0F, 0.0F);
+ private IPoint size = new IPoint(0.0F, 0.0F);
+ private IPoint offset = new IPoint(0.0F, 0.0F);
+ IArea cropArea;
+ IWidget cropWidget;
+
+ public final IPoint pos()
+ {
+ return this.position.add(this.offset);
+ }
+
+ public final IPoint size()
+ {
+ return this.size;
+ }
+
+ public final IArea area()
+ {
+ return getArea();
+ }
+
+ public final IPoint getPosition()
+ {
+ return pos();
+ }
+
+ public final IArea getArea()
+ {
+ return new IArea(IPoint.ZERO, size());
+ }
+
+ public final IPoint getOriginalPosition()
+ {
+ return this.position;
+ }
+
+ boolean cropped = false;
+
+ public IArea getCroppedZone()
+ {
+ return this.cropArea;
+ }
+
+ public void setCroppedZone(IWidget relative, IArea area)
+ {
+ this.cropArea = area;
+ this.cropped = true;
+ this.cropWidget = relative;
+ }
+
+ public final IPoint getAbsolutePosition()
+ {
+ return isTopLevel() ? getPosition() : getParent().getAbsolutePosition().add(getPosition());
+ }
+
+ public final IPoint getOriginalAbsolutePosition()
+ {
+ return isTopLevel() ? getOriginalPosition() : getParent().getOriginalPosition().sub(getOriginalPosition());
+ }
+
+ public final IPoint getSize()
+ {
+ return size();
+ }
+
+ public final IPoint getOffset()
+ {
+ return this.offset;
+ }
+
+ public final void setPosition(IPoint vector)
+ {
+ if (!vector.equals(this.position))
+ {
+ this.position = new IPoint(vector);
+ callEvent(new EventWidget.ChangePosition(this));
+ }
+ }
+
+ public final void setSize(IPoint vector)
+ {
+ if (!vector.equals(this.size))
+ {
+ this.size = new IPoint(vector);
+ callEvent(new EventWidget.ChangeSize(this));
+ }
+ }
+
+ public final void setOffset(IPoint vector)
+ {
+ if (vector != this.offset)
+ {
+ this.offset = new IPoint(vector);
+ callEvent(new EventWidget.ChangeOffset(this));
+ }
+ }
+
+ int colour = 16777215;
+
+ public final void setColour(int colour)
+ {
+ if (this.colour != colour)
+ {
+ this.colour = colour;
+ callEvent(new EventWidget.ChangeColour(this));
+ }
+ }
+
+ public final int getColour()
+ {
+ return this.colour;
+ }
+
+ public boolean canMouseOver()
+ {
+ return hasAttribute(Attribute.MouseOver);
+ }
+
+ public boolean canFocus()
+ {
+ return hasAttribute(Attribute.CanFocus);
+ }
+
+ private Collection<EventHandler> globalEventHandlers = new ArrayList();
+
+ public void addEventHandler(EventHandler handler)
+ {
+ this.globalEventHandlers.add(handler);
+ }
+
+ public void addSelfEventHandler(EventHandler handler)
+ {
+ addEventHandler(handler.setOrigin(EventHandler.Origin.Self, this));
+ }
+
+ public final void callEvent(Event event)
+ {
+ getSuperParent().recieveEvent(event);
+ }
+
+ public final void recieveEvent(Event event)
+ {
+ for (EventHandler handler : this.globalEventHandlers) {
+ if (handler.handles(event)) {
+ handler.onEvent(event);
+ }
+ }
+ try
+ {
+ for (IWidget child : getWidgets()) {
+ child.recieveEvent(event);
+ }
+ }
+ catch (ConcurrentModificationException e) {}
+ }
+
+ public final IPoint getMousePosition()
+ {
+ return getSuperParent().getAbsoluteMousePosition();
+ }
+
+ public final IPoint getRelativeMousePosition()
+ {
+ return isTopLevel() ? getMousePosition() : getParent().getRelativeMousePosition().sub(getPosition());
+ }
+
+ public boolean isCroppedWidet()
+ {
+ return this.cropped;
+ }
+
+ public final IWidget getCropWidget()
+ {
+ return this.cropWidget == null ? this : this.cropWidget;
+ }
+
+ public final void render()
+ {
+ if (isVisible())
+ {
+ CraftGUI.Render.preRender(this);
+ onRender(RenderStage.PreChildren);
+ for (IWidget widget : getWidgets()) {
+ widget.render();
+ }
+ for (IWidget widget : getWidgets())
+ {
+ CraftGUI.Render.preRender(widget);
+ widget.onRender(RenderStage.PostSiblings);
+ CraftGUI.Render.postRender(widget);
+ }
+ onRender(RenderStage.PostChildren);
+ CraftGUI.Render.postRender(this);
+ }
+ }
+
+ public final void updateClient()
+ {
+ if (!isVisible()) {
+ return;
+ }
+ if (getSuperParent() == this) {
+ ((ITopLevelWidget)this).updateTopLevel();
+ }
+ onUpdateClient();
+
+ List<IWidget> deletedWidgets = new ArrayList();
+ for (IWidget widget : getWidgets()) {
+ if (widget.hasAttribute(Attribute.NeedsDeletion)) {
+ deletedWidgets.add(widget);
+ } else {
+ widget.updateClient();
+ }
+ }
+ for (IWidget widget : deletedWidgets) {
+ deleteChild(widget);
+ }
+ }
+
+ public final boolean calculateIsMouseOver()
+ {
+ IPoint mouse = getRelativeMousePosition();
+ if (!this.cropped) {
+ return isMouseOverWidget(mouse);
+ }
+ IWidget cropRelative = this.cropWidget != null ? this.cropWidget : this;
+ IPoint pos = IPoint.sub(cropRelative.getAbsolutePosition(), getAbsolutePosition());
+ IPoint size = new IPoint(this.cropArea.size().x(), this.cropArea.size().y());
+ boolean inCrop = (mouse.x() > pos.x()) && (mouse.y() > pos.y()) && (mouse.x() < pos.x() + size.x()) && (mouse.y() < pos.y() + size.y());
+
+ return (inCrop) && (isMouseOverWidget(mouse));
+ }
+
+ public boolean isMouseOverWidget(IPoint relativeMouse)
+ {
+ return getArea().contains(relativeMouse);
+ }
+
+ private boolean enabled = true;
+ private boolean visible = true;
+
+ public final void enable()
+ {
+ this.enabled = true;
+ callEvent(new EventWidget.Enable(this));
+ }
+
+ public final void disable()
+ {
+ this.enabled = false;
+ callEvent(new EventWidget.Disable(this));
+ }
+
+ public final void show()
+ {
+ this.visible = true;
+ callEvent(new EventWidget.Show(this));
+ }
+
+ public final void hide()
+ {
+ this.visible = false;
+ callEvent(new EventWidget.Hide(this));
+ }
+
+ public boolean isEnabled()
+ {
+ return (this.enabled) && ((isTopLevel()) || ((getParent().isEnabled()) && (getParent().isChildEnabled(this))));
+ }
+
+ public final boolean isVisible()
+ {
+ return (this.visible) && ((isTopLevel()) || ((getParent().isVisible()) && (getParent().isChildVisible(this))));
+ }
+
+ public final boolean isFocused()
+ {
+ return getSuperParent().isFocused(this);
+ }
+
+ public final boolean isDragged()
+ {
+ return getSuperParent().isDragged(this);
+ }
+
+ public final boolean isMouseOver()
+ {
+ return getSuperParent().isMouseOver(this);
+ }
+
+ public boolean isChildVisible(IWidget child)
+ {
+ return true;
+ }
+
+ public boolean isChildEnabled(IWidget child)
+ {
+ return true;
+ }
+
+ public void onRender(RenderStage stage)
+ {
+ if (stage == RenderStage.PreChildren) {
+ onRenderBackground();
+ }
+ if (stage == RenderStage.PostChildren) {
+ onRenderForeground();
+ }
+ if (stage == RenderStage.PostSiblings) {
+ onRenderOverlay();
+ }
+ }
+
+ public void onRenderBackground() {}
+
+ public void onRenderForeground() {}
+
+ public void onRenderOverlay() {}
+
+ public void onUpdateClient() {}
+
+ public final void delete()
+ {
+ getSuperParent().widgetDeleted(this);
+ onDelete();
+ }
+
+ public void onDelete() {}
+
+ public <T> T getWidget(Class<T> x)
+ {
+ for (IWidget child : getWidgets())
+ {
+ if (x.isInstance(child)) {
+ return child;
+ }
+ T found = child.getWidget(x);
+ if (found != null) {
+ return found;
+ }
+ }
+ return null;
+ }
+
+ public final boolean contains(IPoint position)
+ {
+ return getArea().contains(position);
+ }
+
+ public void scheduleDeletion()
+ {
+ addAttribute(Attribute.NeedsDeletion);
+ }
+
+ public int getLevel()
+ {
+ int level = getParent() == null ? 0 : getParent().getLevel();
+ int index = getParent() == null ? 0 : getParent().getWidgets().indexOf(this);
+ return level + index;
+ }
+
+ public boolean isDescendant(IWidget widget)
+ {
+ IWidget clss = this;
+ do
+ {
+ if (clss == widget) {
+ return true;
+ }
+ clss = clss.getParent();
+ } while (clss != null);
+ return false;
+ }
+
+ public float x()
+ {
+ return pos().x();
+ }
+
+ public float y()
+ {
+ return pos().y();
+ }
+
+ public float w()
+ {
+ return size().x();
+ }
+
+ public float h()
+ {
+ return size().y();
+ }
+
+ public IWidget getWidget()
+ {
+ return this;
+ }
+}
diff --git a/src/Java/binnie/craftgui/core/geometry/CraftGUIUtil.java b/src/Java/binnie/craftgui/core/geometry/CraftGUIUtil.java
new file mode 100644
index 0000000000..5a21e313d4
--- /dev/null
+++ b/src/Java/binnie/craftgui/core/geometry/CraftGUIUtil.java
@@ -0,0 +1,77 @@
+package binnie.craftgui.core.geometry;
+
+import binnie.craftgui.controls.core.IControlValue;
+import binnie.craftgui.core.IWidget;
+import binnie.craftgui.events.EventValueChanged;
+import binnie.craftgui.events.EventValueChanged.Handler;
+
+public class CraftGUIUtil
+{
+ public static void alignToWidget(IWidget target, IWidget relativeTo)
+ {
+ IPoint startPos = target.getAbsolutePosition();
+ IPoint endPos = relativeTo.getAbsolutePosition();
+ moveWidget(target, endPos.sub(startPos));
+ }
+
+ public static void moveWidget(IWidget target, IPoint movement)
+ {
+ target.setPosition(target.getPosition().add(movement));
+ }
+
+ public static void horizontalGrid(float px, float py, IWidget... widgets)
+ {
+ horizontalGrid(px, py, TextJustification.MiddleCenter, 0.0F, widgets);
+ }
+
+ public static void horizontalGrid(float px, float py, TextJustification just, float spacing, IWidget... widgets)
+ {
+ float x = 0.0F;
+ float h = 0.0F;
+ for (IWidget widget : widgets) {
+ h = Math.max(h, widget.getSize().y());
+ }
+ for (IWidget widget : widgets)
+ {
+ widget.setPosition(new IPoint(px + x, py + (h - widget.getSize().y()) * just.yOffset));
+ x += widget.getSize().x() + spacing;
+ }
+ }
+
+ public static void verticalGrid(float px, float py, IWidget... widgets)
+ {
+ horizontalGrid(px, py, TextJustification.MiddleCenter, 0.0F, widgets);
+ }
+
+ public static void verticalGrid(float px, float py, TextJustification just, float spacing, IWidget... widgets)
+ {
+ float y = 0.0F;
+ float w = 0.0F;
+ for (IWidget widget : widgets) {
+ w = Math.max(w, widget.getSize().x());
+ }
+ for (IWidget widget : widgets)
+ {
+ widget.setPosition(new IPoint(px + (w - widget.getSize().x()) * just.xOffset, py + y));
+ y += widget.getSize().y() + spacing;
+ }
+ }
+
+ public static <T> void linkWidgets(IControlValue<T> tab, IControlValue<T> target)
+ {
+ tab.addSelfEventHandler(new EventValueChanged.Handler()
+ {
+ public void onEvent(EventValueChanged event)
+ {
+ this.val$target.setValue(event.getValue());
+ }
+ });
+ target.addSelfEventHandler(new EventValueChanged.Handler()
+ {
+ public void onEvent(EventValueChanged event)
+ {
+ this.val$tab.setValue(event.getValue());
+ }
+ });
+ }
+}
diff --git a/src/Java/binnie/craftgui/core/geometry/IArea.java b/src/Java/binnie/craftgui/core/geometry/IArea.java
new file mode 100644
index 0000000000..c6b5511773
--- /dev/null
+++ b/src/Java/binnie/craftgui/core/geometry/IArea.java
@@ -0,0 +1,143 @@
+package binnie.craftgui.core.geometry;
+
+public class IArea
+{
+ private IPoint pos;
+ private IPoint size;
+
+ public IArea(IArea area)
+ {
+ this(area.pos().x(), area.pos().y(), area.size().x(), area.size().y());
+ }
+
+ public IArea(IPoint pos, IPoint size)
+ {
+ this(pos.x(), pos.y(), size.x(), size.y());
+ }
+
+ public IArea(float xywh)
+ {
+ this(xywh, xywh, xywh, xywh);
+ }
+
+ public IArea(float xy, float wh)
+ {
+ this(xy, xy, wh, wh);
+ }
+
+ public IArea(float x, float y, float wh)
+ {
+ this(x, y, wh, wh);
+ }
+
+ public IArea(float x, float y, float w, float h)
+ {
+ setPosition(new IPoint(x, y));
+ setSize(new IPoint(w, h));
+ }
+
+ public IPoint pos()
+ {
+ return this.pos;
+ }
+
+ public IPoint getPosition()
+ {
+ return this.pos;
+ }
+
+ public void setPosition(IPoint position)
+ {
+ this.pos = position.copy();
+ }
+
+ public IPoint size()
+ {
+ return this.size;
+ }
+
+ public IPoint getSize()
+ {
+ return this.size;
+ }
+
+ public void setSize(IPoint size)
+ {
+ this.size = size.copy();
+ }
+
+ public boolean contains(IPoint position)
+ {
+ return (position.x() >= pos().x()) && (position.y() >= this.pos.y()) && (position.x() <= pos().x() + size().x()) && (position.y() <= pos().y() + size().y());
+ }
+
+ public float x()
+ {
+ return pos().x();
+ }
+
+ public float y()
+ {
+ return pos().y();
+ }
+
+ public float w()
+ {
+ return size().x();
+ }
+
+ public float h()
+ {
+ return size().y();
+ }
+
+ public float x(float n)
+ {
+ return this.pos.x(n);
+ }
+
+ public float y(float n)
+ {
+ return this.pos.y(n);
+ }
+
+ public float w(float n)
+ {
+ return this.size.x(n);
+ }
+
+ public float h(float n)
+ {
+ return this.size.y(n);
+ }
+
+ public IArea inset(IBorder border)
+ {
+ return new IArea(x() + border.l(), y() + border.t(), w() - border.l() - border.r(), h() - border.t() - border.b());
+ }
+
+ public IArea outset(int outset)
+ {
+ return outset(new IBorder(outset));
+ }
+
+ public IArea outset(IBorder border)
+ {
+ return new IArea(x() - border.l(), y() - border.t(), w() + border.l() + border.r(), h() + border.t() + border.b());
+ }
+
+ public IArea inset(int inset)
+ {
+ return inset(new IBorder(inset));
+ }
+
+ public String toString()
+ {
+ return w() + "x" + h() + "@" + x() + "," + y();
+ }
+
+ public IArea shift(float dx, float f)
+ {
+ return new IArea(x() + dx, y() + f, w(), h());
+ }
+}
diff --git a/src/Java/binnie/craftgui/core/geometry/IBorder.java b/src/Java/binnie/craftgui/core/geometry/IBorder.java
new file mode 100644
index 0000000000..e16b6d97f1
--- /dev/null
+++ b/src/Java/binnie/craftgui/core/geometry/IBorder.java
@@ -0,0 +1,126 @@
+package binnie.craftgui.core.geometry;
+
+public class IBorder
+{
+ public static final IBorder ZERO = new IBorder(0.0F);
+ float t;
+ float b;
+ float l;
+ float r;
+
+ public IBorder(float pad)
+ {
+ this(pad, pad, pad, pad);
+ }
+
+ public IBorder(float tb, float rl)
+ {
+ this(tb, rl, tb, rl);
+ }
+
+ public IBorder(float t, float rl, float b)
+ {
+ this(t, rl, b, rl);
+ }
+
+ public IBorder(float t, float r, float b, float l)
+ {
+ this.t = t;
+ this.b = b;
+ this.l = l;
+ this.r = r;
+ }
+
+ public IBorder(Position edge, float n)
+ {
+ this(edge == Position.Top ? n : 0.0F, edge == Position.Right ? n : 0.0F, edge == Position.Bottom ? n : 0.0F, edge == Position.Left ? n : 0.0F);
+ }
+
+ public IBorder(IBorder padding)
+ {
+ this(padding.t(), padding.r(), padding.b(), padding.l());
+ }
+
+ public float t()
+ {
+ return this.t;
+ }
+
+ public float b()
+ {
+ return this.b;
+ }
+
+ public float l()
+ {
+ return this.l;
+ }
+
+ public float r()
+ {
+ return this.r;
+ }
+
+ public float t(float n)
+ {
+ this.t = n;
+ return this.t;
+ }
+
+ public float b(float n)
+ {
+ this.b = n;
+ return this.b;
+ }
+
+ public float l(float n)
+ {
+ this.l = n;
+ return this.l;
+ }
+
+ public float r(float n)
+ {
+ this.r = n;
+ return this.r;
+ }
+
+ public boolean isNonZero()
+ {
+ return (this.t != 0.0F) || (this.r != 0.0F) || (this.l != 0.0F) || (this.r != 0.0F);
+ }
+
+ @Deprecated
+ public IPoint tl()
+ {
+ return new IPoint(l(), t());
+ }
+
+ @Deprecated
+ public IPoint tr()
+ {
+ return new IPoint(r(), t());
+ }
+
+ @Deprecated
+ public IPoint bl()
+ {
+ return new IPoint(l(), b());
+ }
+
+ @Deprecated
+ public IPoint br()
+ {
+ return new IPoint(r(), b());
+ }
+
+ public IBorder add(IBorder o)
+ {
+ return new IBorder(t() + o.t(), r() + o.r(), b() + o.b(), l() + o.l());
+ }
+
+ public String toString()
+ {
+ return t() + "-" + r() + "-" + b() + "-" + l();
+ }
+}
diff --git a/src/Java/binnie/craftgui/core/geometry/IPoint.java b/src/Java/binnie/craftgui/core/geometry/IPoint.java
new file mode 100644
index 0000000000..53be8972fd
--- /dev/null
+++ b/src/Java/binnie/craftgui/core/geometry/IPoint.java
@@ -0,0 +1,83 @@
+package binnie.craftgui.core.geometry;
+
+public class IPoint
+{
+ public static final IPoint ZERO = new IPoint(0.0F, 0.0F);
+ float x = 0.0F;
+ float y = 0.0F;
+
+ public IPoint(float x, float y)
+ {
+ this.x = x;
+ this.y = y;
+ }
+
+ public IPoint(IPoint o)
+ {
+ this.x = o.x();
+ this.y = o.y();
+ }
+
+ public static IPoint add(IPoint a, IPoint b)
+ {
+ return new IPoint(a.x() + b.x(), a.y() + b.y());
+ }
+
+ public static IPoint sub(IPoint a, IPoint b)
+ {
+ return new IPoint(a.x() - b.x(), a.y() - b.y());
+ }
+
+ public IPoint sub(IPoint a)
+ {
+ return sub(this, a);
+ }
+
+ public IPoint add(IPoint other)
+ {
+ return add(this, other);
+ }
+
+ public IPoint add(float dx, float dy)
+ {
+ return add(this, new IPoint(dx, dy));
+ }
+
+ public IPoint copy()
+ {
+ return new IPoint(this);
+ }
+
+ public float x()
+ {
+ return this.x;
+ }
+
+ public float y()
+ {
+ return this.y;
+ }
+
+ public void xy(float x, float y)
+ {
+ x(x);
+ y(y);
+ }
+
+ public float x(float x)
+ {
+ this.x = x;
+ return x;
+ }
+
+ public float y(float y)
+ {
+ this.y = y;
+ return y;
+ }
+
+ public boolean equals(IPoint other)
+ {
+ return (x() == other.x()) && (y() == other.y());
+ }
+}
diff --git a/src/Java/binnie/craftgui/core/geometry/Position.java b/src/Java/binnie/craftgui/core/geometry/Position.java
new file mode 100644
index 0000000000..51b856f120
--- /dev/null
+++ b/src/Java/binnie/craftgui/core/geometry/Position.java
@@ -0,0 +1,41 @@
+package binnie.craftgui.core.geometry;
+
+public enum Position
+{
+ Top(0, -1), Bottom(0, 1), Left(-1, 0), Right(1, 0);
+
+ int x;
+ int y;
+
+ private Position(int x, int y)
+ {
+ this.x = x;
+ this.y = y;
+ }
+
+ public int x()
+ {
+ return this.x;
+ }
+
+ public int y()
+ {
+ return this.y;
+ }
+
+ public Position opposite()
+ {
+ switch (1.$SwitchMap$binnie$craftgui$core$geometry$Position[ordinal()])
+ {
+ case 1:
+ return Top;
+ case 2:
+ return Right;
+ case 3:
+ return Left;
+ case 4:
+ return Bottom;
+ }
+ return null;
+ }
+}
diff --git a/src/Java/binnie/craftgui/core/geometry/TextJustification.java b/src/Java/binnie/craftgui/core/geometry/TextJustification.java
new file mode 100644
index 0000000000..99b759380b
--- /dev/null
+++ b/src/Java/binnie/craftgui/core/geometry/TextJustification.java
@@ -0,0 +1,25 @@
+package binnie.craftgui.core.geometry;
+
+public enum TextJustification
+{
+ TopLeft(0.0F, 0.0F), TopCenter(0.5F, 0.0F), TopRight(1.0F, 0.0F), MiddleLeft(0.0F, 0.5F), MiddleCenter(0.5F, 0.5F), MiddleRight(1.0F, 0.5F), BottomLeft(0.0F, 1.0F), BottomCenter(0.5F, 1.0F), BottomRight(1.0F, 1.0F);
+
+ float xOffset;
+ float yOffset;
+
+ private TextJustification(float xOffset, float yOffset)
+ {
+ this.xOffset = xOffset;
+ this.yOffset = yOffset;
+ }
+
+ public float getXOffset()
+ {
+ return this.xOffset;
+ }
+
+ public float getYOffset()
+ {
+ return this.yOffset;
+ }
+}
diff --git a/src/Java/binnie/craftgui/core/renderer/Renderer.java b/src/Java/binnie/craftgui/core/renderer/Renderer.java
new file mode 100644
index 0000000000..b1d099bf3a
--- /dev/null
+++ b/src/Java/binnie/craftgui/core/renderer/Renderer.java
@@ -0,0 +1,252 @@
+package binnie.craftgui.core.renderer;
+
+import binnie.core.BinnieCore;
+import binnie.core.proxy.BinnieProxy;
+import binnie.craftgui.core.IWidget;
+import binnie.craftgui.core.geometry.IArea;
+import binnie.craftgui.core.geometry.IBorder;
+import binnie.craftgui.core.geometry.IPoint;
+import binnie.craftgui.core.geometry.Position;
+import binnie.craftgui.core.geometry.TextJustification;
+import binnie.craftgui.minecraft.GuiCraftGUI;
+import binnie.craftgui.resource.IStyleSheet;
+import binnie.craftgui.resource.Texture;
+import java.util.List;
+import net.minecraft.client.gui.FontRenderer;
+import net.minecraft.client.renderer.texture.TextureMap;
+import net.minecraft.item.ItemStack;
+import net.minecraft.util.IIcon;
+import org.lwjgl.opengl.GL11;
+
+public class Renderer
+{
+ GuiCraftGUI gui;
+
+ public Renderer(GuiCraftGUI gui)
+ {
+ this.gui = gui;
+ }
+
+ public final void preRender(IWidget widget)
+ {
+ GL11.glPushMatrix();
+ GL11.glTranslatef(widget.getPosition().x(), widget.getPosition().y(), 0.0F);
+ colour(widget.getColour());
+ if (widget.isCroppedWidet())
+ {
+ IWidget cropRelative = widget.getCropWidget() != null ? widget.getCropWidget() : widget;
+ IPoint pos = cropRelative.getAbsolutePosition();
+ IArea cropZone = widget.getCroppedZone();
+ limitArea(new IArea(pos.add(cropZone.pos()), cropZone.size()));
+ GL11.glEnable(3089);
+ }
+ GL11.glDisable(2929);
+ }
+
+ public final void postRender(IWidget widget)
+ {
+ if (widget.isCroppedWidet()) {
+ GL11.glDisable(3089);
+ }
+ GL11.glEnable(2929);
+ GL11.glPopMatrix();
+ }
+
+ int currentColour = 16777215;
+ Texture currentTexture;
+ IStyleSheet stylesheet;
+
+ public void colour(int hex)
+ {
+ this.currentColour = hex;
+ int a = (hex & 0xFF000000) >> 24;
+ int r = (hex & 0xFF0000) >> 16;
+ int g = (hex & 0xFF00) >> 8;
+ int b = hex & 0xFF;
+ if (a < 0) {
+ a += 256;
+ }
+ if ((a > 0) && (a != 255))
+ {
+ GL11.glColor4f(r / 255.0F, g / 255.0F, b / 255.0F, a / 255.0F);
+ GL11.glEnable(3042);
+ }
+ else
+ {
+ GL11.glColor3f(r / 255.0F, g / 255.0F, b / 255.0F);
+ }
+ }
+
+ public Texture getTexture(Object key)
+ {
+ if ((key instanceof Texture)) {
+ return (Texture)key;
+ }
+ return this.stylesheet.getTexture(key);
+ }
+
+ public void setTexture(Texture texture)
+ {
+ if ((texture != this.currentTexture) && (texture != null)) {
+ BinnieCore.proxy.bindTexture(texture.getFilename());
+ }
+ colour(this.currentColour);
+ }
+
+ public void texture(Object texture, IPoint position)
+ {
+ texture(getTexture(texture), position);
+ }
+
+ public void texture(Texture texture, IPoint position)
+ {
+ if (texture == null) {
+ return;
+ }
+ setTexture(texture);
+ IPoint point = position.sub(new IPoint(texture.getBorder().l(), texture.getBorder().t()));
+ IArea textureArea = texture.getArea().outset(texture.getBorder());
+ this.gui.renderTexture(point, textureArea);
+ }
+
+ public void texture(Object window, IArea area)
+ {
+ texture(getTexture(window), area);
+ }
+
+ public void texture(Texture texture, IArea area)
+ {
+ if (texture == null) {
+ return;
+ }
+ setTexture(texture);
+ IArea textureArea = texture.getArea().outset(texture.getBorder());
+ IArea targetArea = area.outset(texture.getBorder());
+ if ((textureArea.w() == targetArea.w()) && (textureArea.h() == targetArea.h())) {
+ this.gui.renderTexture(targetArea.pos(), textureArea);
+ } else {
+ this.gui.renderTexturePadded(targetArea, textureArea, texture.getTotalPadding());
+ }
+ }
+
+ public void stylesheet(IStyleSheet sheet)
+ {
+ this.stylesheet = sheet;
+ }
+
+ public int textWidth(String text)
+ {
+ return this.gui.getFontRenderer().getStringWidth(text);
+ }
+
+ public int textHeight()
+ {
+ return this.gui.getFontRenderer() == null ? 0 : this.gui.getFontRenderer().FONT_HEIGHT;
+ }
+
+ public void text(IPoint pos, String text, int colour)
+ {
+ text(new IArea(pos, new IPoint(500.0F, 500.0F)), TextJustification.TopLeft, text, colour);
+ }
+
+ public void text(IArea area, TextJustification justification, String text, int colour)
+ {
+ IPoint pos = area.pos();
+ if (area.size().x() <= 0.0F) {
+ return;
+ }
+ List<String> wrappedStrings = this.gui.getFontRenderer().listFormattedStringToWidth(text, (int)area.size().x());
+ float totalHeight = wrappedStrings.size() * textHeight();
+ float posY = area.pos().y();
+ if (area.size().y() > totalHeight) {
+ posY += (area.size().y() - totalHeight) * justification.getYOffset();
+ }
+ for (String string : wrappedStrings)
+ {
+ float stringWidth = textWidth(string);
+ float posX = area.size().x() - stringWidth;
+ posX *= justification.getXOffset();
+ GL11.glDisable(2929);
+ this.gui.getFontRenderer().drawString(string, (int)(pos.x() + posX), (int)posY, colour);
+
+ posY += textHeight();
+ }
+ GL11.glColor3f(1.0F, 1.0F, 1.0F);
+ }
+
+ public void solid(IArea area, int colour)
+ {
+ this.gui.drawRect(area.pos().x(), area.pos().y(), area.pos().x() + area.size().x(), area.pos().y() + area.size().y(), 0xFF000000 | colour);
+ }
+
+ public void solidAlpha(IArea area, int c1)
+ {
+ this.gui.drawGradientArea(area.pos().x(), area.pos().y(), area.pos().x() + area.size().x(), area.pos().y() + area.size().y(), c1, c1);
+ }
+
+ public void gradientRect(IArea area, int c1, int c2)
+ {
+ this.gui.drawGradientArea(area.pos().x(), area.pos().y(), area.pos().x() + area.size().x(), area.pos().y() + area.size().y(), c1, c2);
+ }
+
+ public void item(IPoint pos, ItemStack item)
+ {
+ this.gui.renderItem(pos, item, false);
+ }
+
+ public void item(IPoint pos, ItemStack item, boolean rotating)
+ {
+ this.gui.renderItem(pos, item, rotating);
+ }
+
+ public void iconBlock(IPoint pos, IIcon icon)
+ {
+ this.gui.renderIcon(pos, icon, TextureMap.locationBlocksTexture);
+ }
+
+ public void iconItem(IPoint pos, IIcon icon)
+ {
+ this.gui.renderIcon(pos, icon, TextureMap.locationItemsTexture);
+ }
+
+ public void limitArea(IArea area)
+ {
+ this.gui.limitArea(area);
+ }
+
+ public float textHeight(String text, float width)
+ {
+ return this.gui.getFontRenderer().listFormattedStringToWidth(text, (int)width).size() * textHeight();
+ }
+
+ public void texturePercentage(Texture texture, IArea area, Position direction, float percentage)
+ {
+ float dist = (direction == Position.Top) || (direction == Position.Bottom) ? percentage * texture.h() : percentage * texture.w();
+
+ float dim = (direction == Position.Top) || (direction == Position.Bottom) ? texture.h() : texture.w();
+
+ float x = area.pos().x();
+ float y = area.pos().y();
+ float w = area.size().x();
+ float h = area.size().y();
+ switch (1.$SwitchMap$binnie$craftgui$core$geometry$Position[direction.ordinal()])
+ {
+ case 1:
+ h *= percentage;
+ break;
+ case 2:
+ x += (1.0F - percentage) * w;
+ w *= percentage;
+ break;
+ case 3:
+ w *= percentage;
+ break;
+ case 4:
+ y += h - (int)(percentage * h);
+ h *= percentage;
+ }
+ texture(texture.crop(direction, dim - dist), new IArea(x, y, w, h));
+ }
+
+ public void test(IWidget widget) {}
+}
diff --git a/src/Java/binnie/craftgui/core/renderer/TextureType.java b/src/Java/binnie/craftgui/core/renderer/TextureType.java
new file mode 100644
index 0000000000..1c9b0e0d1c
--- /dev/null
+++ b/src/Java/binnie/craftgui/core/renderer/TextureType.java
@@ -0,0 +1,8 @@
+package binnie.craftgui.core.renderer;
+
+public enum TextureType
+{
+ Stretched, Tiled;
+
+ private TextureType() {}
+}
diff --git a/src/Java/binnie/craftgui/events/Event.java b/src/Java/binnie/craftgui/events/Event.java
new file mode 100644
index 0000000000..0b4a39426a
--- /dev/null
+++ b/src/Java/binnie/craftgui/events/Event.java
@@ -0,0 +1,23 @@
+package binnie.craftgui.events;
+
+import binnie.craftgui.core.IWidget;
+
+public class Event
+{
+ IWidget origin;
+
+ public Event(IWidget origin)
+ {
+ this.origin = origin;
+ }
+
+ public IWidget getOrigin()
+ {
+ return this.origin;
+ }
+
+ public boolean isOrigin(IWidget widget)
+ {
+ return this.origin == widget;
+ }
+}
diff --git a/src/Java/binnie/craftgui/events/EventButtonClicked.java b/src/Java/binnie/craftgui/events/EventButtonClicked.java
new file mode 100644
index 0000000000..1823e6d430
--- /dev/null
+++ b/src/Java/binnie/craftgui/events/EventButtonClicked.java
@@ -0,0 +1,21 @@
+package binnie.craftgui.events;
+
+import binnie.craftgui.core.IWidget;
+
+public class EventButtonClicked
+ extends Event
+{
+ public EventButtonClicked(IWidget origin)
+ {
+ super(origin);
+ }
+
+ public static abstract class Handler
+ extends EventHandler<EventButtonClicked>
+ {
+ public Handler()
+ {
+ super();
+ }
+ }
+}
diff --git a/src/Java/binnie/craftgui/events/EventCycleChanged.java b/src/Java/binnie/craftgui/events/EventCycleChanged.java
new file mode 100644
index 0000000000..628a177449
--- /dev/null
+++ b/src/Java/binnie/craftgui/events/EventCycleChanged.java
@@ -0,0 +1,20 @@
+package binnie.craftgui.events;
+
+import binnie.craftgui.core.IWidget;
+
+public class EventCycleChanged
+ extends Event
+{
+ public int value;
+
+ public EventCycleChanged(IWidget origin, int value)
+ {
+ super(origin);
+ this.value = value;
+ }
+
+ public int getValue()
+ {
+ return this.value;
+ }
+}
diff --git a/src/Java/binnie/craftgui/events/EventHandler.java b/src/Java/binnie/craftgui/events/EventHandler.java
new file mode 100644
index 0000000000..9d2e5d2ad3
--- /dev/null
+++ b/src/Java/binnie/craftgui/events/EventHandler.java
@@ -0,0 +1,53 @@
+package binnie.craftgui.events;
+
+import binnie.craftgui.core.IWidget;
+import java.util.List;
+
+public abstract class EventHandler<E extends Event>
+{
+ Class<E> eventClass;
+ Origin origin = Origin.Any;
+ IWidget relative = null;
+
+ public EventHandler(Class<E> eventClass)
+ {
+ this.eventClass = eventClass;
+ }
+
+ public EventHandler setOrigin(Origin origin, IWidget relative)
+ {
+ this.origin = origin;
+ this.relative = relative;
+ return this;
+ }
+
+ public abstract void onEvent(E paramE);
+
+ public final boolean handles(Event e)
+ {
+ return (this.eventClass.isInstance(e)) && (this.origin.isOrigin(e.getOrigin(), this.relative));
+ }
+
+ public static enum Origin
+ {
+ Any, Self, Parent, DirectChild;
+
+ private Origin() {}
+
+ public boolean isOrigin(IWidget origin, IWidget test)
+ {
+ switch (EventHandler.1.$SwitchMap$binnie$craftgui$events$EventHandler$Origin[ordinal()])
+ {
+ case 1:
+ return true;
+ case 2:
+ return test.getWidgets().contains(origin);
+ case 3:
+ return test.getParent() == origin;
+ case 4:
+ return test == origin;
+ }
+ return false;
+ }
+ }
+}
diff --git a/src/Java/binnie/craftgui/events/EventKey.java b/src/Java/binnie/craftgui/events/EventKey.java
new file mode 100644
index 0000000000..e49b736f43
--- /dev/null
+++ b/src/Java/binnie/craftgui/events/EventKey.java
@@ -0,0 +1,63 @@
+package binnie.craftgui.events;
+
+import binnie.craftgui.core.IWidget;
+
+public abstract class EventKey
+ extends Event
+{
+ char character;
+ int key;
+
+ public EventKey(IWidget origin, char character, int key)
+ {
+ super(origin);
+ this.character = character;
+ this.key = key;
+ }
+
+ public char getCharacter()
+ {
+ return this.character;
+ }
+
+ public int getKey()
+ {
+ return this.key;
+ }
+
+ public static class Down
+ extends EventKey
+ {
+ public Down(IWidget origin, char character, int key)
+ {
+ super(character, key);
+ }
+
+ public static abstract class Handler
+ extends EventHandler<EventKey.Down>
+ {
+ public Handler()
+ {
+ super();
+ }
+ }
+ }
+
+ public static class Up
+ extends EventKey
+ {
+ public Up(IWidget origin, char character, int key)
+ {
+ super(character, key);
+ }
+
+ public static abstract class Handler
+ extends EventHandler<EventKey.Up>
+ {
+ public Handler()
+ {
+ super();
+ }
+ }
+ }
+}
diff --git a/src/Java/binnie/craftgui/events/EventMouse.java b/src/Java/binnie/craftgui/events/EventMouse.java
new file mode 100644
index 0000000000..162552098a
--- /dev/null
+++ b/src/Java/binnie/craftgui/events/EventMouse.java
@@ -0,0 +1,156 @@
+package binnie.craftgui.events;
+
+import binnie.craftgui.core.IWidget;
+
+public abstract class EventMouse
+ extends Event
+{
+ public EventMouse(IWidget origin)
+ {
+ super(origin);
+ }
+
+ public static class Button
+ extends EventMouse
+ {
+ int x;
+ int y;
+ int button;
+
+ public int getX()
+ {
+ return this.x;
+ }
+
+ public int getY()
+ {
+ return this.y;
+ }
+
+ public int getButton()
+ {
+ return this.button;
+ }
+
+ public Button(IWidget currentMousedOverWidget, int x, int y, int button)
+ {
+ super();
+ this.x = x;
+ this.y = y;
+ this.button = button;
+ }
+ }
+
+ public static class Down
+ extends EventMouse.Button
+ {
+ public Down(IWidget currentMousedOverWidget, int x, int y, int button)
+ {
+ super(x, y, button);
+ }
+
+ public static abstract class Handler
+ extends EventHandler<EventMouse.Down>
+ {
+ public Handler()
+ {
+ super();
+ }
+ }
+ }
+
+ public static class Up
+ extends EventMouse.Button
+ {
+ public Up(IWidget currentMousedOverWidget, int x, int y, int button)
+ {
+ super(x, y, button);
+ }
+
+ public static abstract class Handler
+ extends EventHandler<EventMouse.Up>
+ {
+ public Handler()
+ {
+ super();
+ }
+ }
+ }
+
+ public static class Move
+ extends EventMouse
+ {
+ float dx;
+ float dy;
+
+ public float getDx()
+ {
+ return this.dx;
+ }
+
+ public float getDy()
+ {
+ return this.dy;
+ }
+
+ public Move(IWidget origin, float dx, float dy)
+ {
+ super();
+ this.dx = dx;
+ this.dy = dy;
+ }
+
+ public static abstract class Handler
+ extends EventHandler<EventMouse.Move>
+ {
+ public Handler()
+ {
+ super();
+ }
+ }
+ }
+
+ public static class Drag
+ extends EventMouse.Move
+ {
+ public Drag(IWidget draggedWidget, float dx, float dy)
+ {
+ super(dx, dy);
+ }
+
+ public static abstract class Handler
+ extends EventHandler<EventMouse.Drag>
+ {
+ public Handler()
+ {
+ super();
+ }
+ }
+ }
+
+ public static class Wheel
+ extends EventMouse
+ {
+ int dWheel = 0;
+
+ public Wheel(IWidget origin, int dWheel)
+ {
+ super();
+ this.dWheel = (dWheel / 28);
+ }
+
+ public int getDWheel()
+ {
+ return this.dWheel;
+ }
+
+ public static abstract class Handler
+ extends EventHandler<EventMouse.Wheel>
+ {
+ public Handler()
+ {
+ super();
+ }
+ }
+ }
+}
diff --git a/src/Java/binnie/craftgui/events/EventTextEdit.java b/src/Java/binnie/craftgui/events/EventTextEdit.java
new file mode 100644
index 0000000000..d61ae34008
--- /dev/null
+++ b/src/Java/binnie/craftgui/events/EventTextEdit.java
@@ -0,0 +1,21 @@
+package binnie.craftgui.events;
+
+import binnie.craftgui.core.IWidget;
+
+public class EventTextEdit
+ extends EventValueChanged<String>
+{
+ public EventTextEdit(IWidget origin, String text)
+ {
+ super(origin, text);
+ }
+
+ public static abstract class Handler
+ extends EventHandler<EventTextEdit>
+ {
+ public Handler()
+ {
+ super();
+ }
+ }
+}
diff --git a/src/Java/binnie/craftgui/events/EventToggleButtonClicked.java b/src/Java/binnie/craftgui/events/EventToggleButtonClicked.java
new file mode 100644
index 0000000000..79ff26fa59
--- /dev/null
+++ b/src/Java/binnie/craftgui/events/EventToggleButtonClicked.java
@@ -0,0 +1,20 @@
+package binnie.craftgui.events;
+
+import binnie.craftgui.core.IWidget;
+
+public class EventToggleButtonClicked
+ extends Event
+{
+ boolean toggled;
+
+ public EventToggleButtonClicked(IWidget origin, boolean toggled)
+ {
+ super(origin);
+ this.toggled = toggled;
+ }
+
+ public boolean isActive()
+ {
+ return this.toggled;
+ }
+}
diff --git a/src/Java/binnie/craftgui/events/EventValueChanged.java b/src/Java/binnie/craftgui/events/EventValueChanged.java
new file mode 100644
index 0000000000..df804cbfa5
--- /dev/null
+++ b/src/Java/binnie/craftgui/events/EventValueChanged.java
@@ -0,0 +1,29 @@
+package binnie.craftgui.events;
+
+import binnie.craftgui.core.IWidget;
+
+public class EventValueChanged<T>
+ extends Event
+{
+ public T value;
+
+ public EventValueChanged(IWidget origin, T value)
+ {
+ super(origin);
+ this.value = value;
+ }
+
+ public T getValue()
+ {
+ return this.value;
+ }
+
+ public static abstract class Handler
+ extends EventHandler<EventValueChanged>
+ {
+ public Handler()
+ {
+ super();
+ }
+ }
+}
diff --git a/src/Java/binnie/craftgui/events/EventValuesChanged.java b/src/Java/binnie/craftgui/events/EventValuesChanged.java
new file mode 100644
index 0000000000..e102487f14
--- /dev/null
+++ b/src/Java/binnie/craftgui/events/EventValuesChanged.java
@@ -0,0 +1,20 @@
+package binnie.craftgui.events;
+
+import binnie.craftgui.core.IWidget;
+
+public class EventValuesChanged<T>
+ extends Event
+{
+ public T[] values;
+
+ public EventValuesChanged(IWidget origin, T[] values)
+ {
+ super(origin);
+ this.values = values;
+ }
+
+ public T[] getValues()
+ {
+ return this.values;
+ }
+}
diff --git a/src/Java/binnie/craftgui/events/EventWidget.java b/src/Java/binnie/craftgui/events/EventWidget.java
new file mode 100644
index 0000000000..87ca98521f
--- /dev/null
+++ b/src/Java/binnie/craftgui/events/EventWidget.java
@@ -0,0 +1,272 @@
+package binnie.craftgui.events;
+
+import binnie.craftgui.core.IWidget;
+
+public class EventWidget
+ extends Event
+{
+ public EventWidget(IWidget origin)
+ {
+ super(origin);
+ }
+
+ public static class Enable
+ extends EventWidget
+ {
+ public Enable(IWidget origin)
+ {
+ super();
+ }
+
+ public static abstract class Handler
+ extends EventHandler<EventWidget.Enable>
+ {
+ public Handler()
+ {
+ super();
+ }
+ }
+ }
+
+ public static class Disable
+ extends EventWidget
+ {
+ public Disable(IWidget origin)
+ {
+ super();
+ }
+
+ public static abstract class Handler
+ extends EventHandler<EventWidget.Disable>
+ {
+ public Handler()
+ {
+ super();
+ }
+ }
+ }
+
+ public static class Show
+ extends EventWidget
+ {
+ public Show(IWidget origin)
+ {
+ super();
+ }
+
+ public static abstract class Handler
+ extends EventHandler<EventWidget.Show>
+ {
+ public Handler()
+ {
+ super();
+ }
+ }
+ }
+
+ public static class Hide
+ extends EventWidget
+ {
+ public Hide(IWidget origin)
+ {
+ super();
+ }
+
+ public static abstract class Handler
+ extends EventHandler<EventWidget.Hide>
+ {
+ public Handler()
+ {
+ super();
+ }
+ }
+ }
+
+ public static class ChangePosition
+ extends EventWidget
+ {
+ public ChangePosition(IWidget origin)
+ {
+ super();
+ }
+
+ public static abstract class Handler
+ extends EventHandler<EventWidget.ChangePosition>
+ {
+ public Handler()
+ {
+ super();
+ }
+ }
+ }
+
+ public static class ChangeSize
+ extends EventWidget
+ {
+ public ChangeSize(IWidget origin)
+ {
+ super();
+ }
+
+ public static abstract class Handler
+ extends EventHandler<EventWidget.ChangeSize>
+ {
+ public Handler()
+ {
+ super();
+ }
+ }
+ }
+
+ public static class ChangeOffset
+ extends EventWidget
+ {
+ public ChangeOffset(IWidget origin)
+ {
+ super();
+ }
+
+ public static abstract class Handler
+ extends EventHandler<EventWidget.ChangeOffset>
+ {
+ public Handler()
+ {
+ super();
+ }
+ }
+ }
+
+ public static class ChangeColour
+ extends EventWidget
+ {
+ public ChangeColour(IWidget origin)
+ {
+ super();
+ }
+
+ public static abstract class Handler
+ extends EventHandler<EventWidget.ChangeColour>
+ {
+ public Handler()
+ {
+ super();
+ }
+ }
+ }
+
+ public static class StartMouseOver
+ extends EventWidget
+ {
+ public StartMouseOver(IWidget origin)
+ {
+ super();
+ }
+
+ public static abstract class Handler
+ extends EventHandler<EventWidget.StartMouseOver>
+ {
+ public Handler()
+ {
+ super();
+ }
+ }
+ }
+
+ public static class EndMouseOver
+ extends EventWidget
+ {
+ public EndMouseOver(IWidget origin)
+ {
+ super();
+ }
+
+ public static abstract class Handler
+ extends EventHandler<EventWidget.EndMouseOver>
+ {
+ public Handler()
+ {
+ super();
+ }
+ }
+ }
+
+ public static class StartDrag
+ extends EventWidget
+ {
+ int button;
+
+ public StartDrag(IWidget origin, int button)
+ {
+ super();
+ this.button = button;
+ }
+
+ public int getButton()
+ {
+ return this.button;
+ }
+
+ public static abstract class Handler
+ extends EventHandler<EventWidget.StartDrag>
+ {
+ public Handler()
+ {
+ super();
+ }
+ }
+ }
+
+ public static class EndDrag
+ extends EventWidget
+ {
+ public EndDrag(IWidget origin)
+ {
+ super();
+ }
+
+ public static abstract class Handler
+ extends EventHandler<EventWidget.EndDrag>
+ {
+ public Handler()
+ {
+ super();
+ }
+ }
+ }
+
+ public static class GainFocus
+ extends EventWidget
+ {
+ public GainFocus(IWidget origin)
+ {
+ super();
+ }
+
+ public static abstract class Handler
+ extends EventHandler<EventWidget.GainFocus>
+ {
+ public Handler()
+ {
+ super();
+ }
+ }
+ }
+
+ public static class LoseFocus
+ extends EventWidget
+ {
+ public LoseFocus(IWidget origin)
+ {
+ super();
+ }
+
+ public static abstract class Handler
+ extends EventHandler<EventWidget.LoseFocus>
+ {
+ public Handler()
+ {
+ super();
+ }
+ }
+ }
+}
diff --git a/src/Java/binnie/craftgui/extratrees/dictionary/ControlBlockIconDisplay.java b/src/Java/binnie/craftgui/extratrees/dictionary/ControlBlockIconDisplay.java
new file mode 100644
index 0000000000..58b93a2782
--- /dev/null
+++ b/src/Java/binnie/craftgui/extratrees/dictionary/ControlBlockIconDisplay.java
@@ -0,0 +1,25 @@
+package binnie.craftgui.extratrees.dictionary;
+
+import binnie.craftgui.controls.core.Control;
+import binnie.craftgui.core.CraftGUI;
+import binnie.craftgui.core.IWidget;
+import binnie.craftgui.core.geometry.IPoint;
+import binnie.craftgui.core.renderer.Renderer;
+import net.minecraft.util.IIcon;
+
+public class ControlBlockIconDisplay
+ extends Control
+{
+ IIcon icon;
+
+ public ControlBlockIconDisplay(IWidget parent, float x, float y, IIcon icon)
+ {
+ super(parent, x, y, 18.0F, 18.0F);
+ this.icon = icon;
+ }
+
+ public void onRenderBackground()
+ {
+ CraftGUI.Render.iconBlock(IPoint.ZERO, this.icon);
+ }
+}
diff --git a/src/Java/binnie/craftgui/extratrees/dictionary/ControlBreweryProgress.java b/src/Java/binnie/craftgui/extratrees/dictionary/ControlBreweryProgress.java
new file mode 100644
index 0000000000..d6d18d3a69
--- /dev/null
+++ b/src/Java/binnie/craftgui/extratrees/dictionary/ControlBreweryProgress.java
@@ -0,0 +1,115 @@
+package binnie.craftgui.extratrees.dictionary;
+
+import binnie.core.machines.Machine;
+import binnie.core.util.ItemStackSet;
+import binnie.craftgui.core.Attribute;
+import binnie.craftgui.core.CraftGUI;
+import binnie.craftgui.core.IWidget;
+import binnie.craftgui.core.geometry.IArea;
+import binnie.craftgui.core.geometry.IPoint;
+import binnie.craftgui.core.renderer.Renderer;
+import binnie.craftgui.minecraft.Window;
+import binnie.craftgui.minecraft.control.ControlProgressBase;
+import binnie.craftgui.resource.Texture;
+import binnie.craftgui.resource.minecraft.StandardTexture;
+import binnie.extratrees.core.ExtraTreeTexture;
+import binnie.extratrees.machines.Brewery;
+import binnie.extratrees.machines.Brewery.BreweryCrafting;
+import binnie.extratrees.machines.Brewery.ComponentBreweryLogic;
+import net.minecraft.item.ItemStack;
+import net.minecraft.util.IIcon;
+import net.minecraftforge.fluids.Fluid;
+import net.minecraftforge.fluids.FluidStack;
+import org.lwjgl.opengl.GL11;
+
+public class ControlBreweryProgress
+ extends ControlProgressBase
+{
+ static Texture Brewery = new StandardTexture(0, 69, 34, 39, ExtraTreeTexture.Gui);
+ static Texture BreweryOverlay = new StandardTexture(34, 69, 34, 39, ExtraTreeTexture.Gui);
+
+ public void onRenderBackground()
+ {
+ CraftGUI.Render.texture(Brewery, new IPoint(0.0F, 0.0F));
+
+ Brewery.ComponentBreweryLogic logic = (Brewery.ComponentBreweryLogic)Machine.getInterface(Brewery.ComponentBreweryLogic.class, Window.get(this).getInventory());
+ if (logic.currentCrafting == null) {
+ return;
+ }
+ if (logic.currentCrafting.currentInput == null) {
+ return;
+ }
+ int fermentedHeight = (int)(32.0F * logic.getProgress() / 100.0F);
+
+ CraftGUI.Render.limitArea(new IArea(new IPoint(1.0F, 6.0F).add(getAbsolutePosition()), new IPoint(32.0F, 32 - fermentedHeight)));
+
+ GL11.glEnable(3089);
+
+ renderFluid(logic.currentCrafting.currentInput, new IPoint(1.0F, 6.0F));
+ renderFluid(logic.currentCrafting.currentInput, new IPoint(17.0F, 6.0F));
+ renderFluid(logic.currentCrafting.currentInput, new IPoint(1.0F, 22.0F));
+ renderFluid(logic.currentCrafting.currentInput, new IPoint(17.0F, 22.0F));
+
+ GL11.glDisable(3089);
+
+ CraftGUI.Render.limitArea(new IArea(new IPoint(1.0F, 38 - fermentedHeight).add(getAbsolutePosition()), new IPoint(32.0F, fermentedHeight)));
+
+
+ GL11.glEnable(3089);
+
+ renderFluid(Brewery.getOutput(logic.currentCrafting), new IPoint(1.0F, 6.0F));
+ renderFluid(Brewery.getOutput(logic.currentCrafting), new IPoint(17.0F, 6.0F));
+ renderFluid(Brewery.getOutput(logic.currentCrafting), new IPoint(1.0F, 22.0F));
+ renderFluid(Brewery.getOutput(logic.currentCrafting), new IPoint(17.0F, 22.0F));
+
+ GL11.glDisable(3089);
+
+ ItemStackSet stacks = new ItemStackSet();
+ for (ItemStack stack : logic.currentCrafting.inputs) {
+ stacks.add(stack);
+ }
+ stacks.add(logic.currentCrafting.ingr);
+
+ int x = 1;
+ int y = 6;
+ for (ItemStack stack : stacks)
+ {
+ CraftGUI.Render.item(new IPoint(x, y), stack);
+ x += 16;
+ if (x > 18)
+ {
+ x = 1;
+ y += 16;
+ }
+ }
+ }
+
+ public void onRenderForeground() {}
+
+ protected ControlBreweryProgress(IWidget parent, float x, float y)
+ {
+ super(parent, x, y, 34.0F, 39.0F);
+ addAttribute(Attribute.MouseOver);
+ }
+
+ public void renderFluid(FluidStack fluid, IPoint pos)
+ {
+ int hex = fluid.getFluid().getColor(fluid);
+
+ int r = (hex & 0xFF0000) >> 16;
+ int g = (hex & 0xFF00) >> 8;
+ int b = hex & 0xFF;
+
+ IIcon icon = fluid.getFluid().getIcon();
+
+ GL11.glColor4f(r / 255.0F, g / 255.0F, b / 255.0F, 1.0F);
+
+ GL11.glEnable(3042);
+
+ GL11.glBlendFunc(770, 771);
+
+ CraftGUI.Render.iconBlock(pos, fluid.getFluid().getIcon());
+
+ GL11.glDisable(3042);
+ }
+}
diff --git a/src/Java/binnie/craftgui/extratrees/dictionary/ControlDistilleryProgress.java b/src/Java/binnie/craftgui/extratrees/dictionary/ControlDistilleryProgress.java
new file mode 100644
index 0000000000..5a44b09ca3
--- /dev/null
+++ b/src/Java/binnie/craftgui/extratrees/dictionary/ControlDistilleryProgress.java
@@ -0,0 +1,104 @@
+package binnie.craftgui.extratrees.dictionary;
+
+import binnie.core.machines.Machine;
+import binnie.craftgui.core.CraftGUI;
+import binnie.craftgui.core.IWidget;
+import binnie.craftgui.core.geometry.IArea;
+import binnie.craftgui.core.geometry.IPoint;
+import binnie.craftgui.core.geometry.Position;
+import binnie.craftgui.core.renderer.Renderer;
+import binnie.craftgui.events.EventMouse.Down;
+import binnie.craftgui.events.EventMouse.Down.Handler;
+import binnie.craftgui.minecraft.Window;
+import binnie.craftgui.minecraft.control.ControlProgressBase;
+import binnie.craftgui.resource.Texture;
+import binnie.craftgui.resource.minecraft.StandardTexture;
+import binnie.extratrees.core.ExtraTreeTexture;
+import binnie.extratrees.machines.Distillery.ComponentDistilleryLogic;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.util.IIcon;
+import net.minecraftforge.fluids.Fluid;
+import net.minecraftforge.fluids.FluidStack;
+import org.lwjgl.opengl.GL11;
+
+public class ControlDistilleryProgress
+ extends ControlProgressBase
+{
+ static Texture DistilleryBase = new StandardTexture(43, 0, 58, 66, ExtraTreeTexture.Gui);
+ static Texture DistilleryOverlay = new StandardTexture(139, 0, 18, 66, ExtraTreeTexture.Gui);
+ static Texture LiquidFlow = new StandardTexture(101, 0, 38, 66, ExtraTreeTexture.Gui);
+ static Texture Output = new StandardTexture(68, 66, 17, 7, ExtraTreeTexture.Gui);
+
+ public void onRenderBackground()
+ {
+ CraftGUI.Render.texture(DistilleryBase, new IPoint(0.0F, 0.0F));
+ CraftGUI.Render.texturePercentage(LiquidFlow, new IArea(18.0F, 0.0F, 38.0F, 66.0F), Position.Left, this.progress);
+
+ Distillery.ComponentDistilleryLogic component = (Distillery.ComponentDistilleryLogic)Machine.getInterface(Distillery.ComponentDistilleryLogic.class, Window.get(this).getInventory());
+
+
+ FluidStack stack = null;
+ if (component != null) {
+ stack = component.currentFluid;
+ }
+ if (stack != null) {
+ for (int y = 0; y < 4; y++) {
+ renderFluid(stack, new IPoint(1.0F, 1 + y * 16));
+ }
+ }
+ }
+
+ public void onRenderForeground()
+ {
+ int level = ((Distillery.ComponentDistilleryLogic)Machine.getInterface(Distillery.ComponentDistilleryLogic.class, Window.get(this).getInventory())).level;
+ CraftGUI.Render.texture(Output, new IPoint(47.0F, 14 + level * 15));
+ CraftGUI.Render.texture(DistilleryOverlay, new IPoint(0.0F, 0.0F));
+ }
+
+ protected ControlDistilleryProgress(IWidget parent, float x, float y)
+ {
+ super(parent, x, y, 58.0F, 66.0F);
+
+ addSelfEventHandler(new EventMouse.Down.Handler()
+ {
+ public void onEvent(EventMouse.Down event)
+ {
+ int distillationLevel = -1;
+ if (new IArea(45.0F, 8.0F, 19.0F, 11.0F).contains(ControlDistilleryProgress.this.getRelativeMousePosition())) {
+ distillationLevel = 0;
+ } else if (new IArea(45.0F, 23.0F, 19.0F, 11.0F).contains(ControlDistilleryProgress.this.getRelativeMousePosition())) {
+ distillationLevel = 1;
+ } else if (new IArea(45.0F, 38.0F, 19.0F, 11.0F).contains(ControlDistilleryProgress.this.getRelativeMousePosition())) {
+ distillationLevel = 2;
+ }
+ if (distillationLevel >= 0)
+ {
+ NBTTagCompound nbt = new NBTTagCompound();
+ nbt.setByte("i", (byte)distillationLevel);
+ Window.get(ControlDistilleryProgress.this.getWidget()).sendClientAction("still-level", nbt);
+ }
+ }
+ });
+ }
+
+ public void renderFluid(FluidStack fluid, IPoint pos)
+ {
+ int hex = fluid.getFluid().getColor(fluid);
+
+ int r = (hex & 0xFF0000) >> 16;
+ int g = (hex & 0xFF00) >> 8;
+ int b = hex & 0xFF;
+
+ IIcon icon = fluid.getFluid().getIcon();
+
+ GL11.glColor4f(r / 255.0F, g / 255.0F, b / 255.0F, 1.0F);
+
+ GL11.glEnable(3042);
+
+ GL11.glBlendFunc(770, 771);
+
+ CraftGUI.Render.iconBlock(pos, fluid.getFluid().getIcon());
+
+ GL11.glDisable(3042);
+ }
+}
diff --git a/src/Java/binnie/craftgui/extratrees/dictionary/ControlFruitPressProgress.java b/src/Java/binnie/craftgui/extratrees/dictionary/ControlFruitPressProgress.java
new file mode 100644
index 0000000000..79d21a3025
--- /dev/null
+++ b/src/Java/binnie/craftgui/extratrees/dictionary/ControlFruitPressProgress.java
@@ -0,0 +1,90 @@
+package binnie.craftgui.extratrees.dictionary;
+
+import binnie.craftgui.core.Attribute;
+import binnie.craftgui.core.CraftGUI;
+import binnie.craftgui.core.IWidget;
+import binnie.craftgui.core.geometry.IPoint;
+import binnie.craftgui.core.renderer.Renderer;
+import binnie.craftgui.events.EventMouse.Down;
+import binnie.craftgui.events.EventMouse.Down.Handler;
+import binnie.craftgui.minecraft.ContainerCraftGUI;
+import binnie.craftgui.minecraft.Window;
+import binnie.craftgui.minecraft.control.ControlProgressBase;
+import binnie.craftgui.resource.Texture;
+import binnie.craftgui.resource.minecraft.StandardTexture;
+import binnie.extratrees.core.ExtraTreeTexture;
+import binnie.extratrees.machines.Press;
+import net.minecraft.inventory.Slot;
+import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.util.IIcon;
+import net.minecraftforge.fluids.Fluid;
+import net.minecraftforge.fluids.FluidStack;
+import org.lwjgl.opengl.GL11;
+
+public class ControlFruitPressProgress
+ extends ControlProgressBase
+{
+ static Texture PressTexture = new StandardTexture(6, 0, 24, 52, ExtraTreeTexture.Gui);
+ static Texture PressSlot = new StandardTexture(9, 52, 34, 17, ExtraTreeTexture.Gui);
+
+ public void onRenderBackground()
+ {
+ CraftGUI.Render.texture(PressSlot, new IPoint(3.0F, 52.0F));
+
+ ItemStack input = Window.get(this).getContainer().getSlotFromInventory(Window.get(this).getInventory(), Press.slotCurrent).getStack();
+ if ((input == null) || (Press.getOutput(input) == null)) {
+ return;
+ }
+ Fluid fluid = Press.getOutput(input).getFluid();
+
+ int hex = fluid.getColor(Press.getOutput(input));
+
+ int r = (hex & 0xFF0000) >> 16;
+ int g = (hex & 0xFF00) >> 8;
+ int b = hex & 0xFF;
+
+ IIcon icon = fluid.getIcon();
+
+ GL11.glColor4f(r / 255.0F, g / 255.0F, b / 255.0F, 1.0F);
+
+ GL11.glEnable(3042);
+
+ GL11.glBlendFunc(770, 771);
+
+ CraftGUI.Render.iconBlock(new IPoint(4.0F, 52.0F), fluid.getIcon());
+
+ GL11.glDisable(3042);
+
+ icon = input.getIconIndex();
+ CraftGUI.Render.iconItem(new IPoint(4.0F, 52.0F), icon);
+ }
+
+ public void onRenderForeground()
+ {
+ CraftGUI.Render.texture(PressTexture, new IPoint(0.0F, 16.0F * this.progress));
+ }
+
+ protected ControlFruitPressProgress(IWidget parent, float x, float y)
+ {
+ super(parent, x, y, 37.0F, 69.0F);
+ addAttribute(Attribute.MouseOver);
+
+ addSelfEventHandler(new EventMouse.Down.Handler()
+ {
+ public void onEvent(EventMouse.Down event)
+ {
+ if (event.getButton() == 0)
+ {
+ NBTTagCompound action = new NBTTagCompound();
+ Window.get(ControlFruitPressProgress.this.getWidget()).sendClientAction("fruitpress-click", action);
+ }
+ else if (event.getButton() == 1)
+ {
+ NBTTagCompound action = new NBTTagCompound();
+ Window.get(ControlFruitPressProgress.this.getWidget()).sendClientAction("clear-fruit", action);
+ }
+ }
+ });
+ }
+}
diff --git a/src/Java/binnie/craftgui/extratrees/dictionary/ControlLumbermillProgress.java b/src/Java/binnie/craftgui/extratrees/dictionary/ControlLumbermillProgress.java
new file mode 100644
index 0000000000..b315c23927
--- /dev/null
+++ b/src/Java/binnie/craftgui/extratrees/dictionary/ControlLumbermillProgress.java
@@ -0,0 +1,96 @@
+package binnie.craftgui.extratrees.dictionary;
+
+import binnie.craftgui.core.CraftGUI;
+import binnie.craftgui.core.IWidget;
+import binnie.craftgui.core.geometry.IArea;
+import binnie.craftgui.core.geometry.IPoint;
+import binnie.craftgui.core.renderer.Renderer;
+import binnie.craftgui.minecraft.MinecraftGUI.PanelType;
+import binnie.craftgui.minecraft.Window;
+import binnie.craftgui.minecraft.control.ControlProgressBase;
+import binnie.craftgui.resource.Texture;
+import binnie.craftgui.resource.minecraft.StandardTexture;
+import binnie.craftgui.window.Panel;
+import binnie.extratrees.core.ExtraTreeTexture;
+import binnie.extratrees.machines.Lumbermill;
+import net.minecraft.block.Block;
+import net.minecraft.inventory.IInventory;
+import net.minecraft.item.ItemBlock;
+import net.minecraft.item.ItemStack;
+import net.minecraft.util.IIcon;
+import org.lwjgl.opengl.GL11;
+
+public class ControlLumbermillProgress
+ extends ControlProgressBase
+{
+ public void onUpdateClient()
+ {
+ super.onUpdateClient();
+ if (this.oldProgress != this.progress)
+ {
+ this.oldProgress = this.progress;
+ this.animation += 5.0F;
+ }
+ }
+
+ float oldProgress = 0.0F;
+ float animation = 0.0F;
+ static Texture Saw = new StandardTexture(0, 0, 6, 32, ExtraTreeTexture.Gui);
+ static Texture Saw2 = new StandardTexture(2, 0, 4, 32, ExtraTreeTexture.Gui);
+
+ public void onRenderForeground()
+ {
+ GL11.glDisable(2896);
+ int sawX = (int)(63.0F * this.progress);
+
+ CraftGUI.Render.texture(Saw, new IPoint(sawX, -8.0F + 6.0F * (float)Math.sin(this.animation)));
+
+ ItemStack item = Window.get(this).getInventory().getStackInSlot(Lumbermill.slotWood);
+ if (item == null) {
+ return;
+ }
+ GL11.glDisable(2896);
+
+ Block block = null;
+ if ((item.getItem() instanceof ItemBlock)) {
+ block = ((ItemBlock)item.getItem()).field_150939_a;
+ }
+ if (block == null) {
+ return;
+ }
+ IIcon icon = block.getIcon(2, item.getItemDamage());
+ for (int i = 0; i < 4; i++) {
+ CraftGUI.Render.iconBlock(new IPoint(1 + i * 16, 1.0F), icon);
+ }
+ ItemStack result = Lumbermill.getPlankProduct(item);
+ if (result == null) {
+ return;
+ }
+ Block block2 = null;
+ if ((item.getItem() instanceof ItemBlock)) {
+ block2 = ((ItemBlock)result.getItem()).field_150939_a;
+ }
+ if (block2 == null) {
+ return;
+ }
+ IIcon icon2 = block2.getIcon(2, result.getItemDamage());
+
+ IPoint size = getSize();
+ IPoint pos = getAbsolutePosition();
+ CraftGUI.Render.limitArea(new IArea(pos.add(new IPoint(0.0F, 0.0F)), new IPoint(this.progress * 64.0F + 2.0F, 18.0F)));
+
+ GL11.glEnable(3089);
+ for (int i = 0; i < 4; i++) {
+ CraftGUI.Render.iconBlock(new IPoint(1 + i * 16, 1.0F), icon2);
+ }
+ GL11.glDisable(3089);
+
+ CraftGUI.Render.texture(Saw2, new IPoint(sawX + 2, -8.0F + 6.0F * (float)Math.sin(this.animation)));
+ }
+
+ protected ControlLumbermillProgress(IWidget parent, float x, float y)
+ {
+ super(parent, x, y, 66.0F, 18.0F);
+ new Panel(this, 0.0F, 0.0F, 66.0F, 18.0F, MinecraftGUI.PanelType.Black);
+ }
+}
diff --git a/src/Java/binnie/craftgui/extratrees/dictionary/ControlRecipeSlot.java b/src/Java/binnie/craftgui/extratrees/dictionary/ControlRecipeSlot.java
new file mode 100644
index 0000000000..d65e825cb8
--- /dev/null
+++ b/src/Java/binnie/craftgui/extratrees/dictionary/ControlRecipeSlot.java
@@ -0,0 +1,42 @@
+package binnie.craftgui.extratrees.dictionary;
+
+import binnie.core.machines.Machine;
+import binnie.core.machines.TileEntityMachine;
+import binnie.core.machines.component.IComponentRecipe;
+import binnie.craftgui.core.IWidget;
+import binnie.craftgui.events.EventMouse.Down;
+import binnie.craftgui.events.EventMouse.Down.Handler;
+import binnie.craftgui.minecraft.Window;
+import binnie.craftgui.minecraft.control.ControlSlotBase;
+import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.tileentity.TileEntity;
+
+public class ControlRecipeSlot
+ extends ControlSlotBase
+{
+ public ControlRecipeSlot(IWidget parent, int x, int y)
+ {
+ super(parent, x, y, 50);
+
+ addSelfEventHandler(new EventMouse.Down.Handler()
+ {
+ public void onEvent(EventMouse.Down event)
+ {
+ TileEntity tile = (TileEntity)Window.get(ControlRecipeSlot.this.getWidget()).getInventory();
+ if ((tile == null) || (!(tile instanceof TileEntityMachine))) {
+ return;
+ }
+ NBTTagCompound nbt = new NBTTagCompound();
+ Window.get(ControlRecipeSlot.this.getWidget()).sendClientAction("recipe", nbt);
+ }
+ });
+ setRotating();
+ }
+
+ public ItemStack getItemStack()
+ {
+ IComponentRecipe recipe = (IComponentRecipe)Machine.getInterface(IComponentRecipe.class, Window.get(this).getInventory());
+ return recipe.isRecipe() ? recipe.getProduct() : null;
+ }
+}
diff --git a/src/Java/binnie/craftgui/extratrees/dictionary/ControlTileSelect.java b/src/Java/binnie/craftgui/extratrees/dictionary/ControlTileSelect.java
new file mode 100644
index 0000000000..cc5c79c529
--- /dev/null
+++ b/src/Java/binnie/craftgui/extratrees/dictionary/ControlTileSelect.java
@@ -0,0 +1,197 @@
+package binnie.craftgui.extratrees.dictionary;
+
+import binnie.Binnie;
+import binnie.core.BinnieCore;
+import binnie.core.language.ManagerLanguage;
+import binnie.core.machines.Machine;
+import binnie.core.machines.TileEntityMachine;
+import binnie.craftgui.controls.ControlText;
+import binnie.craftgui.controls.core.Control;
+import binnie.craftgui.controls.core.IControlValue;
+import binnie.craftgui.controls.scroll.IControlScrollable;
+import binnie.craftgui.core.Attribute;
+import binnie.craftgui.core.CraftGUI;
+import binnie.craftgui.core.ITooltip;
+import binnie.craftgui.core.IWidget;
+import binnie.craftgui.core.Tooltip;
+import binnie.craftgui.core.geometry.IArea;
+import binnie.craftgui.core.geometry.IPoint;
+import binnie.craftgui.core.renderer.Renderer;
+import binnie.craftgui.events.EventMouse.Down;
+import binnie.craftgui.events.EventMouse.Down.Handler;
+import binnie.craftgui.minecraft.Window;
+import binnie.craftgui.resource.minecraft.CraftGUITexture;
+import binnie.extratrees.api.CarpentryManager;
+import binnie.extratrees.api.ICarpentryInterface;
+import binnie.extratrees.api.IDesign;
+import binnie.extratrees.api.IDesignCategory;
+import binnie.extratrees.carpentry.EnumDesign;
+import binnie.extratrees.machines.Designer.ComponentWoodworkerRecipe;
+import binnie.extratrees.machines.DesignerType;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.NBTTagCompound;
+
+public class ControlTileSelect
+ extends Control
+ implements IControlValue<IDesign>, IControlScrollable
+{
+ public static class ControlTile
+ extends Control
+ implements IControlValue<IDesign>, ITooltip
+ {
+ IDesign value;
+
+ protected ControlTile(IWidget parent, float x, float y, IDesign value)
+ {
+ super(x, y, 18.0F, 18.0F);
+ setValue(value);
+ addAttribute(Attribute.MouseOver);
+
+ addSelfEventHandler(new EventMouse.Down.Handler()
+ {
+ public void onEvent(EventMouse.Down event)
+ {
+ TileEntityMachine tile = (TileEntityMachine)Window.get(ControlTileSelect.ControlTile.this.getWidget()).getInventory();
+ if (tile == null) {
+ return;
+ }
+ Designer.ComponentWoodworkerRecipe recipe = (Designer.ComponentWoodworkerRecipe)tile.getMachine().getComponent(Designer.ComponentWoodworkerRecipe.class);
+
+ NBTTagCompound nbt = new NBTTagCompound();
+ nbt.setShort("d", (short)CarpentryManager.carpentryInterface.getDesignIndex(ControlTileSelect.ControlTile.this.getValue()));
+
+ Window.get(ControlTileSelect.ControlTile.this.getWidget()).sendClientAction("design", nbt);
+ }
+ });
+ }
+
+ public void getTooltip(Tooltip tooltip)
+ {
+ tooltip.add(Binnie.Language.localise(BinnieCore.instance, "gui.designer.pattern", new Object[] { getValue().getName() }));
+ }
+
+ public IDesign getValue()
+ {
+ return this.value;
+ }
+
+ public void onRenderBackground()
+ {
+ CraftGUI.Render.texture(CraftGUITexture.Slot, IPoint.ZERO);
+ }
+
+ public void onRenderForeground()
+ {
+ ItemStack image = ((WindowWoodworker)getSuperParent()).getDesignerType().getDisplayStack(getValue());
+ CraftGUI.Render.item(new IPoint(1.0F, 1.0F), image);
+ if (((IControlValue)getParent()).getValue() != getValue()) {
+ if (Window.get(this).getMousedOverWidget() == this) {
+ CraftGUI.Render.gradientRect(getArea().inset(1), 1157627903, 1157627903);
+ } else {
+ CraftGUI.Render.gradientRect(getArea().inset(1), -1433892728, -1433892728);
+ }
+ }
+ }
+
+ public void setValue(IDesign value)
+ {
+ this.value = value;
+ }
+ }
+
+ IDesign value = EnumDesign.Blank;
+ float shownHeight = 92.0F;
+
+ protected ControlTileSelect(IWidget parent, float x, float y)
+ {
+ super(parent, x, y, 102.0F, 20 * (CarpentryManager.carpentryInterface.getSortedDesigns().size() / 4) + 22);
+
+ refresh("");
+ }
+
+ public float getPercentageIndex()
+ {
+ return 0.0F;
+ }
+
+ public float getPercentageShown()
+ {
+ return 0.0F;
+ }
+
+ public IDesign getValue()
+ {
+ return this.value;
+ }
+
+ public void movePercentage(float percentage) {}
+
+ public void onUpdateClient()
+ {
+ super.onUpdateClient();
+ TileEntityMachine tile = (TileEntityMachine)Window.get(this).getInventory();
+ if (tile == null) {
+ return;
+ }
+ Designer.ComponentWoodworkerRecipe recipe = (Designer.ComponentWoodworkerRecipe)tile.getMachine().getComponent(Designer.ComponentWoodworkerRecipe.class);
+
+ setValue(recipe.getDesign());
+ }
+
+ public void refresh(String filterText)
+ {
+ deleteAllChildren();
+ int cx = 2;
+ int cy = 2;
+
+ Map<IDesignCategory, List<IDesign>> designs = new HashMap();
+ for (IDesignCategory category : CarpentryManager.carpentryInterface.getAllDesignCategories())
+ {
+ designs.put(category, new ArrayList());
+ for (IDesign tile : category.getDesigns()) {
+ if ((filterText == "") || (tile.getName().toLowerCase().contains(filterText))) {
+ ((List)designs.get(category)).add(tile);
+ }
+ }
+ if (((List)designs.get(category)).isEmpty()) {
+ designs.remove(category);
+ }
+ }
+ for (IDesignCategory category : designs.keySet())
+ {
+ cx = 2;
+ new ControlText(this, new IPoint(cx, cy + 3), category.getName());
+ cy += 16;
+ for (IDesign tile : (List)designs.get(category))
+ {
+ if (cx > 90)
+ {
+ cx = 2;
+ cy += 20;
+ }
+ new ControlTile(this, cx, cy, tile);
+ cx += 20;
+ }
+ cy += 20;
+ }
+ int height = cy;
+
+ setSize(new IPoint(getSize().x(), height));
+ }
+
+ public void setPercentageIndex(float index) {}
+
+ public void setValue(IDesign value)
+ {
+ this.value = value;
+ }
+
+ public float getMovementRange()
+ {
+ return 0.0F;
+ }
+}
diff --git a/src/Java/binnie/craftgui/extratrees/dictionary/DialogBreweryRecipe.java b/src/Java/binnie/craftgui/extratrees/dictionary/DialogBreweryRecipe.java
new file mode 100644
index 0000000000..f761aaea29
--- /dev/null
+++ b/src/Java/binnie/craftgui/extratrees/dictionary/DialogBreweryRecipe.java
@@ -0,0 +1,17 @@
+package binnie.craftgui.extratrees.dictionary;
+
+import binnie.craftgui.core.IWidget;
+import binnie.craftgui.minecraft.Dialog;
+
+public class DialogBreweryRecipe
+ extends Dialog
+{
+ public DialogBreweryRecipe(IWidget parent, float w, float h)
+ {
+ super(parent, w, h);
+ }
+
+ public void initialise() {}
+
+ public void onClose() {}
+}
diff --git a/src/Java/binnie/craftgui/extratrees/dictionary/PageFruit.java b/src/Java/binnie/craftgui/extratrees/dictionary/PageFruit.java
new file mode 100644
index 0000000000..c6983deef9
--- /dev/null
+++ b/src/Java/binnie/craftgui/extratrees/dictionary/PageFruit.java
@@ -0,0 +1,47 @@
+package binnie.craftgui.extratrees.dictionary;
+
+import binnie.core.genetics.TreeBreedingSystem;
+import binnie.craftgui.controls.ControlText;
+import binnie.craftgui.core.IWidget;
+import binnie.craftgui.core.geometry.IArea;
+import binnie.craftgui.core.geometry.IPoint;
+import binnie.craftgui.core.geometry.TextJustification;
+import binnie.craftgui.mod.database.ControlSpeciesBox;
+import binnie.craftgui.mod.database.DatabaseTab;
+import binnie.craftgui.mod.database.PageAbstract;
+import binnie.craftgui.mod.database.WindowAbstractDatabase;
+import binnie.extratrees.ExtraTrees;
+import binnie.extratrees.proxy.Proxy;
+import forestry.api.genetics.IAlleleSpecies;
+import java.util.Collection;
+import net.minecraft.item.ItemStack;
+
+public class PageFruit
+ extends PageAbstract<ItemStack>
+{
+ boolean treesThatBearFruit;
+
+ public PageFruit(IWidget parent, DatabaseTab tab, boolean treesThatBearFruit)
+ {
+ super(parent, tab);
+ this.treesThatBearFruit = treesThatBearFruit;
+ }
+
+ public void onValueChanged(ItemStack species)
+ {
+ deleteAllChildren();
+ WindowAbstractDatabase database = (WindowAbstractDatabase)WindowAbstractDatabase.get(this);
+ new ControlText(this, new IArea(0.0F, 0.0F, size().x(), 24.0F), ExtraTrees.proxy.localise("gui.database.tab.fruit." + (this.treesThatBearFruit ? "natural" : "potential")), TextJustification.MiddleCenter);
+
+
+ Collection<IAlleleSpecies> trees = this.treesThatBearFruit ? ((TreeBreedingSystem)database.getBreedingSystem()).getTreesThatBearFruit(species, database.isNEI(), database.getWorld(), database.getUsername()) : ((TreeBreedingSystem)database.getBreedingSystem()).getTreesThatCanBearFruit(species, database.isNEI(), database.getWorld(), database.getUsername());
+
+
+
+
+
+
+
+ new ControlSpeciesBox(this, 4.0F, 24.0F, size().x() - 8.0F, size().y() - 4.0F - 24.0F).setOptions(trees);
+ }
+}
diff --git a/src/Java/binnie/craftgui/extratrees/dictionary/PagePlanksOverview.java b/src/Java/binnie/craftgui/extratrees/dictionary/PagePlanksOverview.java
new file mode 100644
index 0000000000..f27fa6967b
--- /dev/null
+++ b/src/Java/binnie/craftgui/extratrees/dictionary/PagePlanksOverview.java
@@ -0,0 +1,103 @@
+package binnie.craftgui.extratrees.dictionary;
+
+import binnie.core.BinnieCore;
+import binnie.core.proxy.BinnieProxy;
+import binnie.craftgui.controls.ControlText;
+import binnie.craftgui.core.CraftGUI;
+import binnie.craftgui.core.IWidget;
+import binnie.craftgui.core.geometry.IArea;
+import binnie.craftgui.core.geometry.IPoint;
+import binnie.craftgui.core.geometry.TextJustification;
+import binnie.craftgui.core.renderer.Renderer;
+import binnie.craftgui.minecraft.control.ControlItemDisplay;
+import binnie.craftgui.mod.database.DatabaseTab;
+import binnie.craftgui.mod.database.PageAbstract;
+import binnie.craftgui.mod.database.WindowAbstractDatabase;
+import binnie.extratrees.ExtraTrees;
+import binnie.extratrees.block.DoorType;
+import binnie.extratrees.block.IPlankType;
+import binnie.extratrees.block.WoodManager;
+import binnie.extratrees.block.decor.FenceType;
+import binnie.extratrees.proxy.Proxy;
+import net.minecraft.item.ItemStack;
+
+public class PagePlanksOverview
+ extends PageAbstract<ItemStack>
+{
+ public PagePlanksOverview(IWidget parent, DatabaseTab tab)
+ {
+ super(parent, tab);
+ }
+
+ public void onValueChanged(ItemStack species)
+ {
+ deleteAllChildren();
+ WindowAbstractDatabase database = (WindowAbstractDatabase)WindowAbstractDatabase.get(this);
+ new ControlText(this, new IArea(0.0F, 0.0F, size().x(), 24.0F), species.getDisplayName(), TextJustification.MiddleCenter);
+
+
+
+ new ControlText(this, new IArea(12.0F, 24.0F, size().x() - 24.0F, 24.0F), ExtraTrees.proxy.localise("gui.database.planks.use"), TextJustification.MiddleLeft);
+
+
+ IPlankType type = WoodManager.get(species);
+
+ int x = 12;
+ if (type != null)
+ {
+ ItemStack fence = WoodManager.getFence(type, new FenceType(0), 1);
+ ItemStack gate = WoodManager.getGate(type);
+ ItemStack door = WoodManager.getDoor(type, DoorType.Standard);
+ if (fence != null)
+ {
+ new ControlItemDisplay(this, x, 48.0F).setItemStack(fence);
+ x += 22;
+ }
+ if (gate != null)
+ {
+ new ControlItemDisplay(this, x, 48.0F).setItemStack(gate);
+ x += 22;
+ }
+ if (door != null)
+ {
+ new ControlItemDisplay(this, x, 48.0F).setItemStack(door);
+ x += 22;
+ }
+ }
+ ControlText controlDescription = new ControlText(this, new IArea(8.0F, 84.0F, getSize().x() - 16.0F, 0.0F), "", TextJustification.MiddleCenter);
+
+
+ ControlText controlSignature = new ControlText(this, new IArea(8.0F, 84.0F, getSize().x() - 16.0F, 0.0F), "", TextJustification.BottomRight);
+
+
+
+ String desc = "";
+ if (type != null) {
+ desc = type.getDescription();
+ }
+ String descBody = "§o";
+ String descSig = "";
+ if ((desc == null) || (desc.length() == 0))
+ {
+ descBody = descBody + BinnieCore.proxy.localise("gui.database.nodescription");
+ }
+ else
+ {
+ String[] descStrings = desc.split("\\|");
+ descBody = descBody + descStrings[0];
+ for (int i = 1; i < descStrings.length - 1; i++) {
+ descBody = descBody + " " + descStrings[i];
+ }
+ if (descStrings.length > 1) {
+ descSig = descSig + descStrings[(descStrings.length - 1)];
+ }
+ }
+ controlDescription.setValue(descBody + "§r");
+ controlSignature.setValue(descSig + "§r");
+
+ float descHeight = CraftGUI.Render.textHeight(controlDescription.getValue(), controlDescription.getSize().x());
+
+
+ controlSignature.setPosition(new IPoint(controlSignature.pos().x(), controlDescription.getPosition().y() + descHeight + 10.0F));
+ }
+}
diff --git a/src/Java/binnie/craftgui/extratrees/dictionary/PagePlanksTrees.java b/src/Java/binnie/craftgui/extratrees/dictionary/PagePlanksTrees.java
new file mode 100644
index 0000000000..8702edbe95
--- /dev/null
+++ b/src/Java/binnie/craftgui/extratrees/dictionary/PagePlanksTrees.java
@@ -0,0 +1,40 @@
+package binnie.craftgui.extratrees.dictionary;
+
+import binnie.core.genetics.TreeBreedingSystem;
+import binnie.craftgui.controls.ControlText;
+import binnie.craftgui.core.IWidget;
+import binnie.craftgui.core.geometry.IArea;
+import binnie.craftgui.core.geometry.IPoint;
+import binnie.craftgui.core.geometry.TextJustification;
+import binnie.craftgui.mod.database.ControlSpeciesBox;
+import binnie.craftgui.mod.database.DatabaseTab;
+import binnie.craftgui.mod.database.PageAbstract;
+import binnie.craftgui.mod.database.WindowAbstractDatabase;
+import forestry.api.genetics.IAlleleSpecies;
+import java.util.Collection;
+import net.minecraft.item.ItemStack;
+
+public class PagePlanksTrees
+ extends PageAbstract<ItemStack>
+{
+ public PagePlanksTrees(IWidget parent, DatabaseTab tab)
+ {
+ super(parent, tab);
+ }
+
+ public void onValueChanged(ItemStack species)
+ {
+ deleteAllChildren();
+ WindowAbstractDatabase database = (WindowAbstractDatabase)WindowAbstractDatabase.get(this);
+ new ControlText(this, new IArea(0.0F, 0.0F, size().x(), 24.0F), species.getDisplayName(), TextJustification.MiddleCenter);
+
+
+
+ Collection<IAlleleSpecies> trees = ((TreeBreedingSystem)database.getBreedingSystem()).getTreesThatMakePlanks(species, database.isNEI(), database.getWorld(), database.getUsername());
+
+
+
+
+ new ControlSpeciesBox(this, 4.0F, 24.0F, size().x() - 8.0F, size().y() - 4.0F - 24.0F).setOptions(trees);
+ }
+}
diff --git a/src/Java/binnie/craftgui/extratrees/dictionary/PageSpeciesImage.java b/src/Java/binnie/craftgui/extratrees/dictionary/PageSpeciesImage.java
new file mode 100644
index 0000000000..d6fd929447
--- /dev/null
+++ b/src/Java/binnie/craftgui/extratrees/dictionary/PageSpeciesImage.java
@@ -0,0 +1,31 @@
+package binnie.craftgui.extratrees.dictionary;
+
+import binnie.craftgui.controls.ControlTextCentered;
+import binnie.craftgui.core.IWidget;
+import binnie.craftgui.minecraft.MinecraftGUI.PanelType;
+import binnie.craftgui.mod.database.ControlDatabaseIndividualDisplay;
+import binnie.craftgui.mod.database.DatabaseTab;
+import binnie.craftgui.mod.database.EnumDiscoveryState;
+import binnie.craftgui.mod.database.PageSpecies;
+import binnie.craftgui.window.Panel;
+import forestry.api.genetics.IAlleleSpecies;
+
+public class PageSpeciesImage
+ extends PageSpecies
+{
+ ControlDatabaseIndividualDisplay display;
+
+ public PageSpeciesImage(IWidget parent, DatabaseTab tab)
+ {
+ super(parent, tab);
+ new Panel(this, 7.0F, 25.0F, 130.0F, 120.0F, MinecraftGUI.PanelType.Gray);
+ this.display = new ControlDatabaseIndividualDisplay(this, 12.0F, 25.0F, 120.0F);
+ this.display.hastooltip = false;
+ new ControlTextCentered(this, 8.0F, ((DatabaseTab)getValue()).toString());
+ }
+
+ public void onValueChanged(IAlleleSpecies species)
+ {
+ this.display.setSpecies(species, EnumDiscoveryState.Show);
+ }
+}
diff --git a/src/Java/binnie/craftgui/extratrees/dictionary/PageSpeciesTreeGenome.java b/src/Java/binnie/craftgui/extratrees/dictionary/PageSpeciesTreeGenome.java
new file mode 100644
index 0000000000..22a1a67b29
--- /dev/null
+++ b/src/Java/binnie/craftgui/extratrees/dictionary/PageSpeciesTreeGenome.java
@@ -0,0 +1,175 @@
+package binnie.craftgui.extratrees.dictionary;
+
+import binnie.Binnie;
+import binnie.core.BinnieCore;
+import binnie.core.genetics.BreedingSystem;
+import binnie.core.genetics.ManagerGenetics;
+import binnie.core.proxy.BinnieProxy;
+import binnie.craftgui.controls.ControlText;
+import binnie.craftgui.controls.core.Control;
+import binnie.craftgui.controls.scroll.ControlScrollableContent;
+import binnie.craftgui.core.IWidget;
+import binnie.craftgui.core.geometry.IArea;
+import binnie.craftgui.core.geometry.IPoint;
+import binnie.craftgui.core.geometry.TextJustification;
+import binnie.craftgui.minecraft.control.ControlItemDisplay;
+import binnie.craftgui.mod.database.DatabaseTab;
+import binnie.craftgui.mod.database.PageSpecies;
+import binnie.extratrees.ExtraTrees;
+import binnie.extratrees.proxy.Proxy;
+import forestry.api.arboriculture.EnumTreeChromosome;
+import forestry.api.arboriculture.IAlleleTreeSpecies;
+import forestry.api.arboriculture.IFruitProvider;
+import forestry.api.arboriculture.IGrowthProvider;
+import forestry.api.arboriculture.ITree;
+import forestry.api.arboriculture.ITreeGenome;
+import forestry.api.arboriculture.ITreeRoot;
+import forestry.api.core.EnumTemperature;
+import forestry.api.core.ForestryAPI;
+import forestry.api.core.ITextureManager;
+import forestry.api.genetics.IAllele;
+import forestry.api.genetics.IAlleleSpecies;
+import java.util.ArrayList;
+import java.util.List;
+import net.minecraft.item.ItemStack;
+import net.minecraft.util.IIcon;
+import net.minecraftforge.common.EnumPlantType;
+
+public class PageSpeciesTreeGenome
+ extends PageSpecies
+{
+ public PageSpeciesTreeGenome(IWidget parent, DatabaseTab tab)
+ {
+ super(parent, tab);
+ }
+
+ public void onValueChanged(IAlleleSpecies species)
+ {
+ deleteAllChildren();
+ IAllele[] template = Binnie.Genetics.getTreeRoot().getTemplate(species.getUID());
+ if (template == null) {
+ return;
+ }
+ ITree tree = Binnie.Genetics.getTreeRoot().templateAsIndividual(template);
+ if (tree == null) {
+ return;
+ }
+ ITreeGenome genome = tree.getGenome();
+ IAlleleTreeSpecies treeSpecies = genome.getPrimary();
+
+ int w = 144;
+ int h = 176;
+
+ new ControlText(this, new IArea(0.0F, 4.0F, w, 16.0F), ((DatabaseTab)getValue()).toString(), TextJustification.MiddleCenter);
+
+ ControlScrollableContent scrollable = new ControlScrollableContent(this, 4.0F, 20.0F, w - 8, h - 8 - 16, 12.0F);
+
+ Control contents = new Control(scrollable, 0.0F, 0.0F, w - 8 - 12, h - 8 - 16);
+
+ int tw = w - 8 - 12;
+ int w1 = 65;
+ int w2 = tw - 50;
+ int y = 0;
+ int th = 14;
+ int th2 = 18;
+
+ BreedingSystem syst = Binnie.Genetics.treeBreedingSystem;
+
+ new ControlText(contents, new IArea(0.0F, y, w1, th), syst.getChromosomeShortName(EnumTreeChromosome.PLANT) + " : ", TextJustification.MiddleRight);
+ new ControlText(contents, new IArea(w1, y, w2, th), treeSpecies.getPlantType().toString(), TextJustification.MiddleLeft);
+
+ y += th;
+
+ new ControlText(contents, new IArea(0.0F, y, w1, th), BinnieCore.proxy.localise("gui.temperature.short") + " : ", TextJustification.MiddleRight);
+ new ControlText(contents, new IArea(w1, y, w2, th), treeSpecies.getTemperature().getName(), TextJustification.MiddleLeft);
+
+ y += th;
+
+ IIcon leaf = ForestryAPI.textureManager.getIcon(treeSpecies.getLeafIconIndex(tree, false));
+
+ IIcon fruit = null;
+ int fruitColour = 16777215;
+ try
+ {
+ fruit = ForestryAPI.textureManager.getIcon(genome.getFruitProvider().getIconIndex(genome, null, 0, 0, 0, 100, false));
+ fruitColour = genome.getFruitProvider().getColour(genome, null, 0, 0, 0, 100);
+ }
+ catch (Exception e) {}
+ if (leaf != null)
+ {
+ new ControlText(contents, new IArea(0.0F, y, w1, th2), ExtraTrees.proxy.localise("gui.database.leaves") + " : ", TextJustification.MiddleRight);
+
+ new ControlBlockIconDisplay(contents, w1, y, leaf).setColour(treeSpecies.getLeafColour(tree));
+ if ((fruit != null) && (!treeSpecies.getUID().equals("forestry.treeOak"))) {
+ new ControlBlockIconDisplay(contents, w1, y, fruit).setColour(fruitColour);
+ }
+ y += th2;
+ }
+ ItemStack log = treeSpecies.getLogStacks().length > 0 ? treeSpecies.getLogStacks()[0] : null;
+ if (log != null)
+ {
+ new ControlText(contents, new IArea(0.0F, y, w1, th2), ExtraTrees.proxy.localise("gui.database.log") + " : ", TextJustification.MiddleRight);
+
+ ControlItemDisplay display = new ControlItemDisplay(contents, w1, y);
+ display.setItemStack(log);
+ display.setTooltip();
+
+ y += th2;
+ }
+ new ControlText(contents, new IArea(0.0F, y, w1, th), syst.getChromosomeShortName(EnumTreeChromosome.GROWTH) + " : ", TextJustification.MiddleRight);
+ new ControlText(contents, new IArea(w1, y, w2, th), genome.getGrowthProvider().getDescription(), TextJustification.MiddleLeft);
+ y += th;
+
+ new ControlText(contents, new IArea(0.0F, y, w1, th), syst.getChromosomeShortName(EnumTreeChromosome.HEIGHT) + " : ", TextJustification.MiddleRight);
+ new ControlText(contents, new IArea(w1, y, w2, th), genome.getHeight() + "x", TextJustification.MiddleLeft);
+ y += th;
+
+ new ControlText(contents, new IArea(0.0F, y, w1, th), syst.getChromosomeShortName(EnumTreeChromosome.FERTILITY) + " : ", TextJustification.MiddleRight);
+ new ControlText(contents, new IArea(w1, y, w2, th), genome.getFertility() + "x", TextJustification.MiddleLeft);
+ y += th;
+
+ List<ItemStack> fruits = new ArrayList();
+ for (ItemStack stack : genome.getFruitProvider().getProducts()) {
+ fruits.add(stack);
+ }
+ if (!fruits.isEmpty())
+ {
+ new ControlText(contents, new IArea(0.0F, y, w1, th2), syst.getChromosomeShortName(EnumTreeChromosome.FRUITS) + " : ", TextJustification.MiddleRight);
+ for (ItemStack fruitw : fruits)
+ {
+ ControlItemDisplay display = new ControlItemDisplay(contents, w1, y);
+ display.setItemStack(fruitw);
+ display.setTooltip();
+
+ y += th2;
+ }
+ }
+ new ControlText(contents, new IArea(0.0F, y, w1, th), syst.getChromosomeShortName(EnumTreeChromosome.YIELD) + " : ", TextJustification.MiddleRight);
+ new ControlText(contents, new IArea(w1, y, w2, th), genome.getYield() + "x", TextJustification.MiddleLeft);
+ y += th;
+
+ new ControlText(contents, new IArea(0.0F, y, w1, th), syst.getChromosomeShortName(EnumTreeChromosome.SAPPINESS) + " : ", TextJustification.MiddleRight);
+ new ControlText(contents, new IArea(w1, y, w2, th), genome.getSappiness() + "x", TextJustification.MiddleLeft);
+ y += th;
+
+ new ControlText(contents, new IArea(0.0F, y, w1, th), syst.getChromosomeShortName(EnumTreeChromosome.MATURATION) + " : ", TextJustification.MiddleRight);
+ new ControlText(contents, new IArea(w1, y, w2, th), genome.getMaturationTime() + "x", TextJustification.MiddleLeft);
+ y += th;
+
+ new ControlText(contents, new IArea(0.0F, y, w1, th), syst.getChromosomeShortName(EnumTreeChromosome.GIRTH) + " : ", TextJustification.MiddleRight);
+ new ControlText(contents, new IArea(w1, y, w2, th), genome.getGirth() + "x" + genome.getGirth(), TextJustification.MiddleLeft);
+ y += th;
+
+ contents.setSize(new IPoint(contents.size().x(), y));
+
+ scrollable.setScrollableContent(contents);
+ }
+
+ public static String tolerated(boolean t)
+ {
+ if (t) {
+ return BinnieCore.proxy.localise("gui.tolerated");
+ }
+ return BinnieCore.proxy.localise("gui.nottolerated");
+ }
+}
diff --git a/src/Java/binnie/craftgui/extratrees/dictionary/PageWood.java b/src/Java/binnie/craftgui/extratrees/dictionary/PageWood.java
new file mode 100644
index 0000000000..e7e80a1456
--- /dev/null
+++ b/src/Java/binnie/craftgui/extratrees/dictionary/PageWood.java
@@ -0,0 +1,40 @@
+package binnie.craftgui.extratrees.dictionary;
+
+import binnie.core.genetics.TreeBreedingSystem;
+import binnie.craftgui.controls.ControlText;
+import binnie.craftgui.core.IWidget;
+import binnie.craftgui.core.geometry.IArea;
+import binnie.craftgui.core.geometry.IPoint;
+import binnie.craftgui.core.geometry.TextJustification;
+import binnie.craftgui.mod.database.ControlSpeciesBox;
+import binnie.craftgui.mod.database.DatabaseTab;
+import binnie.craftgui.mod.database.PageAbstract;
+import binnie.craftgui.mod.database.WindowAbstractDatabase;
+import forestry.api.genetics.IAlleleSpecies;
+import java.util.Collection;
+import net.minecraft.item.ItemStack;
+
+public class PageWood
+ extends PageAbstract<ItemStack>
+{
+ public PageWood(IWidget parent, DatabaseTab tab)
+ {
+ super(parent, tab);
+ }
+
+ public void onValueChanged(ItemStack species)
+ {
+ deleteAllChildren();
+ WindowAbstractDatabase database = (WindowAbstractDatabase)WindowAbstractDatabase.get(this);
+ new ControlText(this, new IArea(0.0F, 0.0F, size().x(), 24.0F), ((DatabaseTab)getValue()).toString(), TextJustification.MiddleCenter);
+
+
+
+ Collection<IAlleleSpecies> trees = ((TreeBreedingSystem)database.getBreedingSystem()).getTreesThatHaveWood(species, database.isNEI(), database.getWorld(), database.getUsername());
+
+
+
+
+ new ControlSpeciesBox(this, 4.0F, 24.0F, size().x() - 8.0F, size().y() - 4.0F - 24.0F).setOptions(trees);
+ }
+}
diff --git a/src/Java/binnie/craftgui/extratrees/dictionary/WindowArboristDatabase.java b/src/Java/binnie/craftgui/extratrees/dictionary/WindowArboristDatabase.java
new file mode 100644
index 0000000000..e8096c6d77
--- /dev/null
+++ b/src/Java/binnie/craftgui/extratrees/dictionary/WindowArboristDatabase.java
@@ -0,0 +1,133 @@
+package binnie.craftgui.extratrees.dictionary;
+
+import binnie.Binnie;
+import binnie.core.AbstractMod;
+import binnie.core.genetics.ManagerGenetics;
+import binnie.core.genetics.TreeBreedingSystem;
+import binnie.craftgui.controls.listbox.ControlList;
+import binnie.craftgui.controls.listbox.ControlListBox;
+import binnie.craftgui.core.IWidget;
+import binnie.craftgui.core.geometry.IArea;
+import binnie.craftgui.minecraft.Window;
+import binnie.craftgui.mod.database.ControlItemStackOption;
+import binnie.craftgui.mod.database.DatabaseTab;
+import binnie.craftgui.mod.database.IDatabaseMode;
+import binnie.craftgui.mod.database.PageBranchOverview;
+import binnie.craftgui.mod.database.PageBranchSpecies;
+import binnie.craftgui.mod.database.PageBreeder;
+import binnie.craftgui.mod.database.PageSpeciesClassification;
+import binnie.craftgui.mod.database.PageSpeciesMutations;
+import binnie.craftgui.mod.database.PageSpeciesOverview;
+import binnie.craftgui.mod.database.PageSpeciesResultant;
+import binnie.craftgui.mod.database.WindowAbstractDatabase;
+import binnie.craftgui.mod.database.WindowAbstractDatabase.Mode;
+import binnie.craftgui.mod.database.WindowAbstractDatabase.ModeWidgets;
+import binnie.extratrees.ExtraTrees;
+import binnie.extratrees.proxy.Proxy;
+import cpw.mods.fml.relauncher.Side;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.item.ItemStack;
+
+public class WindowArboristDatabase
+ extends WindowAbstractDatabase
+{
+ ControlListBox<ItemStack> selectionBoxFruit;
+ ControlListBox<ItemStack> selectionBoxWood;
+ ControlListBox<ItemStack> selectionBoxPlanks;
+
+ static enum TreeMode
+ implements IDatabaseMode
+ {
+ Fruit, Wood, Planks;
+
+ private TreeMode() {}
+
+ public String getName()
+ {
+ return ExtraTrees.proxy.localise("gui.database.mode." + name().toLowerCase());
+ }
+ }
+
+ public WindowArboristDatabase(EntityPlayer player, Side side, boolean nei)
+ {
+ super(player, side, nei, Binnie.Genetics.treeBreedingSystem, 120.0F);
+ }
+
+ public static Window create(EntityPlayer player, Side side, boolean nei)
+ {
+ return new WindowArboristDatabase(player, side, nei);
+ }
+
+ protected void addTabs()
+ {
+ new PageSpeciesOverview(getInfoPages(WindowAbstractDatabase.Mode.Species), new DatabaseTab(ExtraTrees.instance, "species.overview", 0));
+ new PageSpeciesTreeGenome(getInfoPages(WindowAbstractDatabase.Mode.Species), new DatabaseTab(ExtraTrees.instance, "species.genome", 0));
+ new PageSpeciesClassification(getInfoPages(WindowAbstractDatabase.Mode.Species), new DatabaseTab(ExtraTrees.instance, "species.classification", 0));
+ new PageSpeciesResultant(getInfoPages(WindowAbstractDatabase.Mode.Species), new DatabaseTab(ExtraTrees.instance, "species.resultant", 0));
+ new PageSpeciesMutations(getInfoPages(WindowAbstractDatabase.Mode.Species), new DatabaseTab(ExtraTrees.instance, "species.further", 0));
+
+ new PageBranchOverview(getInfoPages(WindowAbstractDatabase.Mode.Branches), new DatabaseTab(ExtraTrees.instance, "branches.overview", 0));
+ new PageBranchSpecies(getInfoPages(WindowAbstractDatabase.Mode.Branches), new DatabaseTab(ExtraTrees.instance, "branches.species", 0));
+
+ new PageBreeder(getInfoPages(WindowAbstractDatabase.Mode.Breeder), getUsername(), new DatabaseTab(ExtraTrees.instance, "breeder", 0));
+
+ createMode(TreeMode.Fruit, new WindowAbstractDatabase.ModeWidgets(TreeMode.Fruit, this)
+ {
+ public void createListBox(IArea area)
+ {
+ this.listBox = new ControlListBox(this.modePage, area.x(), area.y(), area.w(), area.h(), 12.0F)
+ {
+ public IWidget createOption(ItemStack value, int y)
+ {
+ return new ControlItemStackOption((ControlList)getContent(), value, y);
+ }
+ };
+ this.listBox.setOptions(((TreeBreedingSystem)WindowArboristDatabase.this.getBreedingSystem()).allFruits);
+ }
+ });
+ createMode(TreeMode.Wood, new WindowAbstractDatabase.ModeWidgets(TreeMode.Wood, this)
+ {
+ public void createListBox(IArea area)
+ {
+ this.listBox = new ControlListBox(this.modePage, area.x(), area.y(), area.w(), area.h(), 12.0F)
+ {
+ public IWidget createOption(ItemStack value, int y)
+ {
+ return new ControlItemStackOption((ControlList)getContent(), value, y);
+ }
+ };
+ this.listBox.setOptions(((TreeBreedingSystem)WindowArboristDatabase.this.getBreedingSystem()).allWoods);
+ }
+ });
+ createMode(TreeMode.Planks, new WindowAbstractDatabase.ModeWidgets(TreeMode.Planks, this)
+ {
+ public void createListBox(IArea area)
+ {
+ this.listBox = new ControlListBox(this.modePage, area.x(), area.y(), area.w(), area.h(), 12.0F)
+ {
+ public IWidget createOption(ItemStack value, int y)
+ {
+ return new ControlItemStackOption((ControlList)getContent(), value, y);
+ }
+ };
+ }
+ });
+ new PageFruit(getInfoPages(TreeMode.Fruit), new DatabaseTab(ExtraTrees.instance, "fruit.natural", 0), true);
+ new PageFruit(getInfoPages(TreeMode.Fruit), new DatabaseTab(ExtraTrees.instance, "fruit.potential", 0), false);
+
+ new PageWood(getInfoPages(TreeMode.Wood), new DatabaseTab(ExtraTrees.instance, "wood.natural", 0));
+
+ new PagePlanksOverview(getInfoPages(TreeMode.Planks), new DatabaseTab(ExtraTrees.instance, "planks.overview", 0));
+ new PagePlanksTrees(getInfoPages(TreeMode.Planks), new DatabaseTab(ExtraTrees.instance, "planks.natural", 1));
+ }
+
+ protected AbstractMod getMod()
+ {
+ return ExtraTrees.instance;
+ }
+
+ protected String getName()
+ {
+ return "TreeDatabase";
+ }
+}
diff --git a/src/Java/binnie/craftgui/extratrees/dictionary/WindowBrewery.java b/src/Java/binnie/craftgui/extratrees/dictionary/WindowBrewery.java
new file mode 100644
index 0000000000..89e4118880
--- /dev/null
+++ b/src/Java/binnie/craftgui/extratrees/dictionary/WindowBrewery.java
@@ -0,0 +1,61 @@
+package binnie.craftgui.extratrees.dictionary;
+
+import binnie.core.AbstractMod;
+import binnie.core.machines.IMachine;
+import binnie.core.machines.Machine;
+import binnie.core.machines.MachinePackage;
+import binnie.craftgui.core.geometry.IPoint;
+import binnie.craftgui.core.geometry.Position;
+import binnie.craftgui.minecraft.Window;
+import binnie.craftgui.minecraft.control.ControlEnergyBar;
+import binnie.craftgui.minecraft.control.ControlErrorState;
+import binnie.craftgui.minecraft.control.ControlLiquidTank;
+import binnie.craftgui.minecraft.control.ControlPlayerInventory;
+import binnie.craftgui.minecraft.control.ControlSlot;
+import binnie.craftgui.minecraft.control.ControlSlotArray;
+import binnie.extratrees.ExtraTrees;
+import binnie.extratrees.machines.Brewery;
+import cpw.mods.fml.relauncher.Side;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.inventory.IInventory;
+
+public class WindowBrewery
+ extends Window
+{
+ public WindowBrewery(EntityPlayer player, IInventory inventory, Side side)
+ {
+ super(228.0F, 218.0F, player, inventory, side);
+ }
+
+ protected AbstractMod getMod()
+ {
+ return ExtraTrees.instance;
+ }
+
+ protected String getName()
+ {
+ return "Brewery";
+ }
+
+ public void initialiseClient()
+ {
+ setTitle(Machine.getMachine(getInventory()).getPackage().getDisplayName());
+ new ControlSlotArray(this, 42, 32, 1, 3).create(Brewery.slotRecipeGrains);
+ new ControlSlot(this, 16.0F, 41.0F).assign(Brewery.slotRecipeInput);
+ new ControlSlot(this, 105.0F, 77.0F).assign(Brewery.slotRecipeYeast);
+ new ControlLiquidTank(this, 76, 32).setTankID(Brewery.tankInput);
+ new ControlLiquidTank(this, 162, 32).setTankID(Brewery.tankOutput);
+ new ControlEnergyBar(this, 196, 32, 16, 60, Position.Bottom);
+ new ControlBreweryProgress(this, 110.0F, 32.0F);
+
+ new ControlSlotArray(this, (int)(getSize().x() / 2.0F - 81.0F), 104, 9, 1).create(Brewery.slotInventory);
+
+ new ControlPlayerInventory(this);
+ new ControlErrorState(this, 133.0F, 79.0F);
+ }
+
+ public static Window create(EntityPlayer player, IInventory inventory, Side side)
+ {
+ return new WindowBrewery(player, inventory, side);
+ }
+}
diff --git a/src/Java/binnie/craftgui/extratrees/dictionary/WindowDistillery.java b/src/Java/binnie/craftgui/extratrees/dictionary/WindowDistillery.java
new file mode 100644
index 0000000000..2d002c2755
--- /dev/null
+++ b/src/Java/binnie/craftgui/extratrees/dictionary/WindowDistillery.java
@@ -0,0 +1,59 @@
+package binnie.craftgui.extratrees.dictionary;
+
+import binnie.core.AbstractMod;
+import binnie.core.machines.IMachine;
+import binnie.core.machines.Machine;
+import binnie.core.machines.MachinePackage;
+import binnie.craftgui.core.geometry.Position;
+import binnie.craftgui.minecraft.Window;
+import binnie.craftgui.minecraft.control.ControlEnergyBar;
+import binnie.craftgui.minecraft.control.ControlErrorState;
+import binnie.craftgui.minecraft.control.ControlLiquidTank;
+import binnie.craftgui.minecraft.control.ControlPlayerInventory;
+import binnie.extratrees.ExtraTrees;
+import binnie.extratrees.machines.Distillery;
+import cpw.mods.fml.relauncher.Side;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.inventory.IInventory;
+
+public class WindowDistillery
+ extends Window
+{
+ public WindowDistillery(EntityPlayer player, IInventory inventory, Side side)
+ {
+ super(224.0F, 192.0F, player, inventory, side);
+ }
+
+ protected AbstractMod getMod()
+ {
+ return ExtraTrees.instance;
+ }
+
+ protected String getName()
+ {
+ return "Distillery";
+ }
+
+ public void initialiseClient()
+ {
+ setTitle(Machine.getMachine(getInventory()).getPackage().getDisplayName());
+
+ int x = 16;
+
+ new ControlLiquidTank(this, x, 35).setTankID(Distillery.tankInput);
+ x += 34;
+ new ControlDistilleryProgress(this, x, 32.0F);
+ x += 64;
+ new ControlLiquidTank(this, x, 35).setTankID(Distillery.tankOutput);
+ x += 34;
+ new ControlEnergyBar(this, x, 36, 60, 16, Position.Left);
+
+ new ControlPlayerInventory(this);
+ new ControlErrorState(this, x + 21, 62.0F);
+ }
+
+ public static Window create(EntityPlayer player, IInventory inventory, Side side)
+ {
+ return new WindowDistillery(player, inventory, side);
+ }
+}
diff --git a/src/Java/binnie/craftgui/extratrees/dictionary/WindowLepidopteristDatabase.java b/src/Java/binnie/craftgui/extratrees/dictionary/WindowLepidopteristDatabase.java
new file mode 100644
index 0000000000..5d5b6511ef
--- /dev/null
+++ b/src/Java/binnie/craftgui/extratrees/dictionary/WindowLepidopteristDatabase.java
@@ -0,0 +1,57 @@
+package binnie.craftgui.extratrees.dictionary;
+
+import binnie.Binnie;
+import binnie.core.AbstractMod;
+import binnie.core.genetics.ManagerGenetics;
+import binnie.craftgui.minecraft.Window;
+import binnie.craftgui.mod.database.DatabaseTab;
+import binnie.craftgui.mod.database.PageBranchOverview;
+import binnie.craftgui.mod.database.PageBranchSpecies;
+import binnie.craftgui.mod.database.PageBreeder;
+import binnie.craftgui.mod.database.PageSpeciesClassification;
+import binnie.craftgui.mod.database.PageSpeciesMutations;
+import binnie.craftgui.mod.database.PageSpeciesOverview;
+import binnie.craftgui.mod.database.PageSpeciesResultant;
+import binnie.craftgui.mod.database.WindowAbstractDatabase;
+import binnie.craftgui.mod.database.WindowAbstractDatabase.Mode;
+import binnie.extratrees.ExtraTrees;
+import cpw.mods.fml.relauncher.Side;
+import net.minecraft.entity.player.EntityPlayer;
+
+public class WindowLepidopteristDatabase
+ extends WindowAbstractDatabase
+{
+ public WindowLepidopteristDatabase(EntityPlayer player, Side side, boolean nei)
+ {
+ super(player, side, nei, Binnie.Genetics.mothBreedingSystem, 160.0F);
+ }
+
+ public static Window create(EntityPlayer player, Side side, boolean nei)
+ {
+ return new WindowLepidopteristDatabase(player, side, nei);
+ }
+
+ protected void addTabs()
+ {
+ new PageSpeciesOverview(getInfoPages(WindowAbstractDatabase.Mode.Species), new DatabaseTab(ExtraTrees.instance, "butterfly.species.overview", 0));
+ new PageSpeciesClassification(getInfoPages(WindowAbstractDatabase.Mode.Species), new DatabaseTab(ExtraTrees.instance, "butterfly.species.classification", 0));
+ new PageSpeciesImage(getInfoPages(WindowAbstractDatabase.Mode.Species), new DatabaseTab(ExtraTrees.instance, "butterfly.species.specimen", 0));
+ new PageSpeciesResultant(getInfoPages(WindowAbstractDatabase.Mode.Species), new DatabaseTab(ExtraTrees.instance, "butterfly.species.resultant", 0));
+ new PageSpeciesMutations(getInfoPages(WindowAbstractDatabase.Mode.Species), new DatabaseTab(ExtraTrees.instance, "butterfly.species.further", 0));
+
+ new PageBranchOverview(getInfoPages(WindowAbstractDatabase.Mode.Branches), new DatabaseTab(ExtraTrees.instance, "butterfly.branches.overview", 0));
+ new PageBranchSpecies(getInfoPages(WindowAbstractDatabase.Mode.Branches), new DatabaseTab(ExtraTrees.instance, "butterfly.branches.species", 0));
+
+ new PageBreeder(getInfoPages(WindowAbstractDatabase.Mode.Breeder), getUsername(), new DatabaseTab(ExtraTrees.instance, "butterfly.breeder", 0));
+ }
+
+ protected AbstractMod getMod()
+ {
+ return ExtraTrees.instance;
+ }
+
+ protected String getName()
+ {
+ return "MothDatabase";
+ }
+}
diff --git a/src/Java/binnie/craftgui/extratrees/dictionary/WindowLumbermill.java b/src/Java/binnie/craftgui/extratrees/dictionary/WindowLumbermill.java
new file mode 100644
index 0000000000..dc9bca1253
--- /dev/null
+++ b/src/Java/binnie/craftgui/extratrees/dictionary/WindowLumbermill.java
@@ -0,0 +1,56 @@
+package binnie.craftgui.extratrees.dictionary;
+
+import binnie.core.AbstractMod;
+import binnie.core.machines.IMachine;
+import binnie.core.machines.Machine;
+import binnie.core.machines.MachinePackage;
+import binnie.craftgui.core.geometry.Position;
+import binnie.craftgui.minecraft.Window;
+import binnie.craftgui.minecraft.control.ControlEnergyBar;
+import binnie.craftgui.minecraft.control.ControlErrorState;
+import binnie.craftgui.minecraft.control.ControlLiquidTank;
+import binnie.craftgui.minecraft.control.ControlPlayerInventory;
+import binnie.craftgui.minecraft.control.ControlSlot;
+import binnie.extratrees.ExtraTrees;
+import binnie.extratrees.machines.Lumbermill;
+import cpw.mods.fml.relauncher.Side;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.inventory.IInventory;
+
+public class WindowLumbermill
+ extends Window
+{
+ public WindowLumbermill(EntityPlayer player, IInventory inventory, Side side)
+ {
+ super(220.0F, 192.0F, player, inventory, side);
+ }
+
+ protected AbstractMod getMod()
+ {
+ return ExtraTrees.instance;
+ }
+
+ protected String getName()
+ {
+ return "Lumbermill";
+ }
+
+ public void initialiseClient()
+ {
+ setTitle(Machine.getMachine(getInventory()).getPackage().getDisplayName());
+ new ControlSlot(this, 42.0F, 43.0F).assign(Lumbermill.slotWood);
+ new ControlSlot(this, 148.0F, 43.0F).assign(Lumbermill.slotPlanks);
+ new ControlSlot(this, 172.0F, 28.0F).assign(Lumbermill.slotBark);
+ new ControlSlot(this, 172.0F, 58.0F).assign(Lumbermill.slotSawdust);
+ new ControlLumbermillProgress(this, 70.0F, 43.0F);
+ new ControlLiquidTank(this, 16, 32);
+ new ControlEnergyBar(this, 8, 112, 16, 60, Position.Bottom);
+ new ControlPlayerInventory(this);
+ new ControlErrorState(this, 95.0F, 73.0F);
+ }
+
+ public static Window create(EntityPlayer player, IInventory inventory, Side side)
+ {
+ return new WindowLumbermill(player, inventory, side);
+ }
+}
diff --git a/src/Java/binnie/craftgui/extratrees/dictionary/WindowPress.java b/src/Java/binnie/craftgui/extratrees/dictionary/WindowPress.java
new file mode 100644
index 0000000000..773bc70323
--- /dev/null
+++ b/src/Java/binnie/craftgui/extratrees/dictionary/WindowPress.java
@@ -0,0 +1,77 @@
+package binnie.craftgui.extratrees.dictionary;
+
+import binnie.core.AbstractMod;
+import binnie.core.machines.IMachine;
+import binnie.core.machines.Machine;
+import binnie.core.machines.MachinePackage;
+import binnie.core.machines.power.ErrorState.InsufficientPower;
+import binnie.craftgui.core.geometry.Position;
+import binnie.craftgui.minecraft.ContainerCraftGUI;
+import binnie.craftgui.minecraft.InventoryType;
+import binnie.craftgui.minecraft.Window;
+import binnie.craftgui.minecraft.control.ControlEnergyBar;
+import binnie.craftgui.minecraft.control.ControlErrorState;
+import binnie.craftgui.minecraft.control.ControlLiquidTank;
+import binnie.craftgui.minecraft.control.ControlPlayerInventory;
+import binnie.craftgui.minecraft.control.ControlSlot;
+import binnie.extratrees.ExtraTrees;
+import binnie.extratrees.machines.Press;
+import binnie.extratrees.machines.Press.ComponentFruitPressLogic;
+import cpw.mods.fml.relauncher.Side;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.inventory.IInventory;
+import net.minecraft.nbt.NBTTagCompound;
+
+public class WindowPress
+ extends Window
+{
+ public WindowPress(EntityPlayer player, IInventory inventory, Side side)
+ {
+ super(194.0F, 192.0F, player, inventory, side);
+ }
+
+ protected AbstractMod getMod()
+ {
+ return ExtraTrees.instance;
+ }
+
+ protected String getName()
+ {
+ return "Press";
+ }
+
+ public void initialiseClient()
+ {
+ setTitle(Machine.getMachine(getInventory()).getPackage().getDisplayName());
+ new ControlSlot(this, 24.0F, 52.0F).assign(Press.slotFruit);
+ new ControlLiquidTank(this, 99, 32).setTankID(Press.tankWater);
+ new ControlEnergyBar(this, 154, 32, 16, 60, Position.Bottom);
+ new ControlPlayerInventory(this);
+ new ControlErrorState(this, 128.0F, 54.0F);
+ new ControlFruitPressProgress(this, 62.0F, 24.0F);
+
+ ((Window)getSuperParent()).getContainer().getOrCreateSlot(InventoryType.Machine, Press.slotCurrent);
+ }
+
+ public static Window create(EntityPlayer player, IInventory inventory, Side side)
+ {
+ return new WindowPress(player, inventory, side);
+ }
+
+ public void recieveGuiNBT(Side side, EntityPlayer player, String name, NBTTagCompound action)
+ {
+ Press.ComponentFruitPressLogic logic = (Press.ComponentFruitPressLogic)Machine.getInterface(Press.ComponentFruitPressLogic.class, getInventory());
+ super.recieveGuiNBT(side, player, name, action);
+ if ((side == Side.SERVER) && (name.equals("fruitpress-click"))) {
+ if ((logic.canWork() == null) && ((logic.canProgress() == null) || ((logic.canProgress() instanceof ErrorState.InsufficientPower))))
+ {
+ logic.alterProgress(2.0F);
+ }
+ else if ((side == Side.SERVER) && (name.equals("clear-fruit")))
+ {
+ logic.setProgress(0.0F);
+ getInventory().setInventorySlotContents(Press.slotCurrent, null);
+ }
+ }
+ }
+}
diff --git a/src/Java/binnie/craftgui/extratrees/dictionary/WindowSetSquare.java b/src/Java/binnie/craftgui/extratrees/dictionary/WindowSetSquare.java
new file mode 100644
index 0000000000..ba444d7b0f
--- /dev/null
+++ b/src/Java/binnie/craftgui/extratrees/dictionary/WindowSetSquare.java
@@ -0,0 +1,35 @@
+package binnie.craftgui.extratrees.dictionary;
+
+import binnie.core.AbstractMod;
+import binnie.craftgui.minecraft.Window;
+import binnie.extratrees.ExtraTrees;
+import cpw.mods.fml.relauncher.Side;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.inventory.IInventory;
+import net.minecraft.world.World;
+
+public class WindowSetSquare
+ extends Window
+{
+ public WindowSetSquare(EntityPlayer player, IInventory inventory, Side side)
+ {
+ super(150.0F, 150.0F, player, inventory, side);
+ }
+
+ protected AbstractMod getMod()
+ {
+ return ExtraTrees.instance;
+ }
+
+ protected String getName()
+ {
+ return null;
+ }
+
+ public void initialiseClient() {}
+
+ public static Window create(EntityPlayer player, World world, int x, int y, int z, Side side)
+ {
+ return new WindowSetSquare(player, null, side);
+ }
+}
diff --git a/src/Java/binnie/craftgui/extratrees/dictionary/WindowWoodworker.java b/src/Java/binnie/craftgui/extratrees/dictionary/WindowWoodworker.java
new file mode 100644
index 0000000000..9e9c6fb7d0
--- /dev/null
+++ b/src/Java/binnie/craftgui/extratrees/dictionary/WindowWoodworker.java
@@ -0,0 +1,110 @@
+package binnie.craftgui.extratrees.dictionary;
+
+import binnie.core.AbstractMod;
+import binnie.core.BinnieCore;
+import binnie.core.machines.IMachine;
+import binnie.core.machines.Machine;
+import binnie.core.machines.MachinePackage;
+import binnie.core.proxy.BinnieProxy;
+import binnie.craftgui.controls.ControlText;
+import binnie.craftgui.controls.ControlTextEdit;
+import binnie.craftgui.controls.scroll.ControlScrollableContent;
+import binnie.craftgui.core.geometry.IArea;
+import binnie.craftgui.core.geometry.IPoint;
+import binnie.craftgui.core.geometry.TextJustification;
+import binnie.craftgui.events.EventHandler.Origin;
+import binnie.craftgui.events.EventTextEdit;
+import binnie.craftgui.events.EventTextEdit.Handler;
+import binnie.craftgui.minecraft.MinecraftGUI.PanelType;
+import binnie.craftgui.minecraft.Window;
+import binnie.craftgui.minecraft.control.ControlErrorState;
+import binnie.craftgui.minecraft.control.ControlPlayerInventory;
+import binnie.craftgui.minecraft.control.ControlSlot;
+import binnie.craftgui.window.Panel;
+import binnie.extratrees.ExtraTrees;
+import binnie.extratrees.machines.Designer;
+import binnie.extratrees.machines.Designer.ComponentWoodworkerRecipe;
+import binnie.extratrees.machines.DesignerType;
+import cpw.mods.fml.relauncher.Side;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.inventory.IInventory;
+
+public class WindowWoodworker
+ extends Window
+{
+ ControlTextEdit textEdit;
+ ControlTileSelect tileSelect;
+
+ public void initialiseClient()
+ {
+ setTitle(Machine.getMachine(getInventory()).getPackage().getDisplayName());
+
+ new ControlText(this, new IArea(190.0F, 36.0F, 114.0F, 10.0F), BinnieCore.proxy.localise("gui.design"), TextJustification.TopCenter).setColour(4473924);
+
+ new Panel(this, 188.0F, 48.0F, 118.0F, 126.0F, MinecraftGUI.PanelType.Gray);
+
+ this.textEdit = new ControlTextEdit(this, 188.0F, 178.0F, 118.0F, 12.0F);
+
+ ControlScrollableContent scroll = new ControlScrollableContent(this, 190.0F, 50.0F, 114.0F, 122.0F, 12.0F);
+
+
+
+ this.tileSelect = new ControlTileSelect(scroll, 0.0F, 0.0F);
+
+ scroll.setScrollableContent(this.tileSelect);
+
+
+
+
+
+ new ControlPlayerInventory(this).setPosition(new IPoint(14.0F, 96.0F));
+
+ new ControlErrorState(this, 76.0F, 65.0F);
+ ControlRecipeSlot slotFinished;
+ if (getInventory() != null)
+ {
+ ControlSlot slotWood1 = new ControlSlot(this, 22.0F, 34.0F);
+ slotWood1.assign(Designer.design1Slot);
+ ControlSlot slotWood2 = new ControlSlot(this, 62.0F, 34.0F);
+ slotWood2.assign(Designer.design2Slot);
+
+ ControlSlot slotBeeswax = new ControlSlot(this, 42.0F, 64.0F);
+ slotBeeswax.assign(Designer.beeswaxSlot);
+
+ slotFinished = new ControlRecipeSlot(this, 112, 34);
+ }
+ }
+
+ public WindowWoodworker(EntityPlayer player, IInventory inventory, Side side)
+ {
+ super(320.0F, 216.0F, player, inventory, side);
+
+ addEventHandler(new EventTextEdit.Handler()
+ {
+ public void onEvent(EventTextEdit event)
+ {
+ WindowWoodworker.this.tileSelect.refresh((String)event.getValue());
+ }
+ }.setOrigin(EventHandler.Origin.DirectChild, this));
+ }
+
+ public static Window create(EntityPlayer player, IInventory inventory, Side side)
+ {
+ return new WindowWoodworker(player, inventory, side);
+ }
+
+ protected AbstractMod getMod()
+ {
+ return ExtraTrees.instance;
+ }
+
+ protected String getName()
+ {
+ return "Woodworker";
+ }
+
+ public DesignerType getDesignerType()
+ {
+ return ((Designer.ComponentWoodworkerRecipe)Machine.getInterface(Designer.ComponentWoodworkerRecipe.class, getInventory())).getDesignerType();
+ }
+}
diff --git a/src/Java/binnie/craftgui/extratrees/kitchen/ControlDropDownMenu.java b/src/Java/binnie/craftgui/extratrees/kitchen/ControlDropDownMenu.java
new file mode 100644
index 0000000000..0d9c982400
--- /dev/null
+++ b/src/Java/binnie/craftgui/extratrees/kitchen/ControlDropDownMenu.java
@@ -0,0 +1,18 @@
+package binnie.craftgui.extratrees.kitchen;
+
+import binnie.craftgui.core.Attribute;
+import binnie.craftgui.core.IWidget;
+import binnie.craftgui.minecraft.MinecraftGUI.PanelType;
+import binnie.craftgui.window.Panel;
+
+public class ControlDropDownMenu
+ extends Panel
+{
+ public ControlDropDownMenu(IWidget parent, float x, float y, float width, float height)
+ {
+ super(parent, x, y, width, 2.0F, MinecraftGUI.PanelType.Gray);
+ addAttribute(Attribute.CanFocus);
+ }
+
+ public boolean stayOpenOnChildClick = false;
+}
diff --git a/src/Java/binnie/craftgui/extratrees/kitchen/ControlDropdownButton.java b/src/Java/binnie/craftgui/extratrees/kitchen/ControlDropdownButton.java
new file mode 100644
index 0000000000..069272b82a
--- /dev/null
+++ b/src/Java/binnie/craftgui/extratrees/kitchen/ControlDropdownButton.java
@@ -0,0 +1,36 @@
+package binnie.craftgui.extratrees.kitchen;
+
+import binnie.craftgui.controls.button.ControlButton;
+import binnie.craftgui.core.IWidget;
+import binnie.craftgui.events.EventMouse.Down;
+import binnie.craftgui.events.EventMouse.Down.Handler;
+import binnie.craftgui.minecraft.Window;
+
+public abstract class ControlDropdownButton
+ extends ControlButton
+{
+ public ControlDropdownButton(IWidget parent, float x, float y, float width, float height, String text)
+ {
+ super(parent, x, y, width, height, text);
+
+ addSelfEventHandler(new EventMouse.Down.Handler()
+ {
+ public void onEvent(EventMouse.Down event)
+ {
+ ControlDropDownMenu menu = (ControlDropDownMenu)ControlDropdownButton.this.getWidget(ControlDropDownMenu.class);
+ ControlDropdownButton.this.deleteChild((IWidget)ControlDropdownButton.this.getWidget(ControlDropDownMenu.class));
+ if (ControlDropdownButton.this.getWidget(ControlDropDownMenu.class) == null)
+ {
+ menu = ControlDropdownButton.this.createDropDownMenu();
+ Window.get(ControlDropdownButton.this.getWidget()).setFocusedWidget(menu);
+ }
+ else
+ {
+ ControlDropdownButton.this.deleteChild((IWidget)ControlDropdownButton.this.getWidget(ControlDropDownMenu.class));
+ }
+ }
+ });
+ }
+
+ public abstract ControlDropDownMenu createDropDownMenu();
+}
diff --git a/src/Java/binnie/craftgui/extratrees/kitchen/ControlFluidDisplay.java b/src/Java/binnie/craftgui/extratrees/kitchen/ControlFluidDisplay.java
new file mode 100644
index 0000000000..7ec1124226
--- /dev/null
+++ b/src/Java/binnie/craftgui/extratrees/kitchen/ControlFluidDisplay.java
@@ -0,0 +1,103 @@
+package binnie.craftgui.extratrees.kitchen;
+
+import binnie.craftgui.controls.core.Control;
+import binnie.craftgui.core.Attribute;
+import binnie.craftgui.core.CraftGUI;
+import binnie.craftgui.core.ITooltip;
+import binnie.craftgui.core.ITopLevelWidget;
+import binnie.craftgui.core.IWidget;
+import binnie.craftgui.core.Tooltip;
+import binnie.craftgui.core.geometry.IPoint;
+import binnie.craftgui.core.renderer.Renderer;
+import binnie.craftgui.minecraft.Window;
+import net.minecraft.util.IIcon;
+import net.minecraftforge.fluids.Fluid;
+import net.minecraftforge.fluids.FluidStack;
+import org.lwjgl.opengl.GL11;
+
+public class ControlFluidDisplay
+ extends Control
+ implements ITooltip
+{
+ FluidStack itemStack = null;
+ public boolean hastooltip = false;
+
+ public void setTooltip()
+ {
+ this.hastooltip = true;
+ addAttribute(Attribute.MouseOver);
+ }
+
+ public ControlFluidDisplay(IWidget parent, float f, float y)
+ {
+ this(parent, f, y, 16.0F);
+ }
+
+ public ControlFluidDisplay(IWidget parent, float f, float y, FluidStack stack, boolean tooltip)
+ {
+ this(parent, f, y, 16.0F);
+ setItemStack(stack);
+ if (tooltip) {
+ setTooltip();
+ }
+ }
+
+ public ControlFluidDisplay(IWidget parent, float x, float y, float size)
+ {
+ super(parent, x, y, size, size);
+ }
+
+ public void onRenderForeground()
+ {
+ if (this.itemStack == null) {
+ return;
+ }
+ IPoint relativeToWindow = getAbsolutePosition().sub(getSuperParent().getPosition());
+ if ((relativeToWindow.x() > Window.get(this).getSize().x() + 100.0F) || (relativeToWindow.y() > Window.get(this).getSize().y() + 100.0F)) {
+ return;
+ }
+ if (this.itemStack != null)
+ {
+ Fluid fluid = this.itemStack.getFluid();
+
+ int hex = fluid.getColor(this.itemStack);
+
+ int r = (hex & 0xFF0000) >> 16;
+ int g = (hex & 0xFF00) >> 8;
+ int b = hex & 0xFF;
+
+ IIcon icon = this.itemStack.getFluid().getIcon(this.itemStack);
+
+ GL11.glColor4f(r / 255.0F, g / 255.0F, b / 255.0F, 1.0F);
+
+ GL11.glEnable(3042);
+
+ GL11.glBlendFunc(770, 771);
+ if (getSize().x() != 16.0F)
+ {
+ GL11.glPushMatrix();
+ float scale = getSize().x() / 16.0F;
+ GL11.glScalef(scale, scale, 1.0F);
+ CraftGUI.Render.iconBlock(IPoint.ZERO, this.itemStack.getFluid().getIcon(this.itemStack));
+ GL11.glPopMatrix();
+ }
+ else
+ {
+ CraftGUI.Render.iconBlock(IPoint.ZERO, this.itemStack.getFluid().getIcon(this.itemStack));
+ }
+ GL11.glDisable(3042);
+ }
+ }
+
+ public void setItemStack(FluidStack itemStack)
+ {
+ this.itemStack = itemStack;
+ }
+
+ public void getTooltip(Tooltip tooltip)
+ {
+ if ((this.hastooltip) && (this.itemStack != null)) {
+ tooltip.add(this.itemStack.getLocalizedName());
+ }
+ }
+}
diff --git a/src/Java/binnie/craftgui/extratrees/kitchen/ControlSlotFluid.java b/src/Java/binnie/craftgui/extratrees/kitchen/ControlSlotFluid.java
new file mode 100644
index 0000000000..5cd82c39de
--- /dev/null
+++ b/src/Java/binnie/craftgui/extratrees/kitchen/ControlSlotFluid.java
@@ -0,0 +1,77 @@
+package binnie.craftgui.extratrees.kitchen;
+
+import binnie.craftgui.controls.core.Control;
+import binnie.craftgui.core.Attribute;
+import binnie.craftgui.core.CraftGUI;
+import binnie.craftgui.core.ITooltip;
+import binnie.craftgui.core.ITopLevelWidget;
+import binnie.craftgui.core.IWidget;
+import binnie.craftgui.core.Tooltip;
+import binnie.craftgui.core.geometry.IArea;
+import binnie.craftgui.core.geometry.IPoint;
+import binnie.craftgui.core.renderer.Renderer;
+import binnie.craftgui.events.EventWidget.ChangeSize;
+import binnie.craftgui.events.EventWidget.ChangeSize.Handler;
+import binnie.craftgui.resource.minecraft.CraftGUITexture;
+import net.minecraftforge.fluids.Fluid;
+import net.minecraftforge.fluids.FluidStack;
+
+public class ControlSlotFluid
+ extends Control
+ implements ITooltip
+{
+ ControlFluidDisplay itemDisplay;
+ FluidStack fluidStack;
+
+ public ControlSlotFluid(IWidget parent, int x, int y, FluidStack fluid)
+ {
+ this(parent, x, y, 18, fluid);
+ }
+
+ public ControlSlotFluid(IWidget parent, int x, int y, int size, FluidStack fluid)
+ {
+ super(parent, x, y, size, size);
+ addAttribute(Attribute.MouseOver);
+ this.itemDisplay = new ControlFluidDisplay(this, 1.0F, 1.0F, size - 2);
+ this.fluidStack = fluid;
+
+ addSelfEventHandler(new EventWidget.ChangeSize.Handler()
+ {
+ public void onEvent(EventWidget.ChangeSize event)
+ {
+ if (ControlSlotFluid.this.itemDisplay != null) {
+ ControlSlotFluid.this.itemDisplay.setSize(ControlSlotFluid.this.getSize().sub(new IPoint(2.0F, 2.0F)));
+ }
+ }
+ });
+ }
+
+ public void onRenderBackground()
+ {
+ int size = (int)getSize().x();
+ CraftGUI.Render.texture(CraftGUITexture.Slot, getArea());
+ if (getSuperParent().getMousedOverWidget() == this) {
+ CraftGUI.Render.gradientRect(new IArea(new IPoint(1.0F, 1.0F), getArea().size().sub(new IPoint(2.0F, 2.0F))), -2130706433, -2130706433);
+ }
+ }
+
+ public void onUpdateClient()
+ {
+ super.onUpdateClient();
+ this.itemDisplay.setItemStack(getFluidStack());
+ }
+
+ public void getTooltip(Tooltip tooltip)
+ {
+ FluidStack item = getFluidStack();
+ if (item == null) {
+ return;
+ }
+ tooltip.add(item.getFluid().getLocalizedName());
+ }
+
+ public FluidStack getFluidStack()
+ {
+ return this.fluidStack;
+ }
+}
diff --git a/src/Java/binnie/craftgui/extratrees/kitchen/ControlSlotGlassware.java b/src/Java/binnie/craftgui/extratrees/kitchen/ControlSlotGlassware.java
new file mode 100644
index 0000000000..fa7cd3df84
--- /dev/null
+++ b/src/Java/binnie/craftgui/extratrees/kitchen/ControlSlotGlassware.java
@@ -0,0 +1,35 @@
+package binnie.craftgui.extratrees.kitchen;
+
+import binnie.craftgui.controls.core.IControlValue;
+import binnie.craftgui.core.IWidget;
+import binnie.craftgui.minecraft.control.ControlSlotBase;
+import binnie.extratrees.alcohol.Glassware;
+import net.minecraft.item.ItemStack;
+
+public class ControlSlotGlassware
+ extends ControlSlotBase
+ implements IControlValue<Glassware>
+{
+ Glassware glassware;
+
+ public ControlSlotGlassware(IWidget parent, int x, int y, Glassware glassware)
+ {
+ super(parent, x, y);
+ this.glassware = glassware;
+ }
+
+ public Glassware getValue()
+ {
+ return this.glassware;
+ }
+
+ public void setValue(Glassware value)
+ {
+ this.glassware = value;
+ }
+
+ public ItemStack getItemStack()
+ {
+ return this.glassware.get(1);
+ }
+}
diff --git a/src/Java/binnie/craftgui/extratrees/kitchen/ControlTankSlot.java b/src/Java/binnie/craftgui/extratrees/kitchen/ControlTankSlot.java
new file mode 100644
index 0000000000..c1caf1772f
--- /dev/null
+++ b/src/Java/binnie/craftgui/extratrees/kitchen/ControlTankSlot.java
@@ -0,0 +1,49 @@
+package binnie.craftgui.extratrees.kitchen;
+
+import binnie.core.machines.power.TankInfo;
+import binnie.craftgui.core.IWidget;
+import binnie.craftgui.core.geometry.IArea;
+import binnie.craftgui.events.EventMouse.Down;
+import binnie.craftgui.events.EventMouse.Down.Handler;
+import binnie.craftgui.minecraft.ContainerCraftGUI;
+import binnie.craftgui.minecraft.Window;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraftforge.fluids.FluidStack;
+
+public class ControlTankSlot
+ extends ControlSlotFluid
+{
+ int tankID = 0;
+
+ public ControlTankSlot(IWidget parent, int x, int y, int i)
+ {
+ super(parent, x, y, null);
+ this.tankID = i;
+
+ addSelfEventHandler(new EventMouse.Down.Handler()
+ {
+ public void onEvent(EventMouse.Down event)
+ {
+ if (event.getButton() == 0)
+ {
+ NBTTagCompound nbt = new NBTTagCompound();
+ nbt.setByte("id", (byte)ControlTankSlot.this.tankID);
+ Window.get(ControlTankSlot.this.getWidget()).sendClientAction("tank-click", nbt);
+ }
+ }
+ });
+ }
+
+ public void onUpdateClient()
+ {
+ this.fluidStack = Window.get(this).getContainer().getTankInfo(this.tankID).liquid;
+ int height = (int)(16.0F * ((this.fluidStack == null ? 0 : this.fluidStack.amount) / 1000.0F));
+ this.itemDisplay.setCroppedZone(this.itemDisplay, new IArea(0.0F, 16 - height, 16.0F, 16.0F));
+ super.onUpdateClient();
+ }
+
+ public void onRenderBackground()
+ {
+ super.onRenderBackground();
+ }
+}
diff --git a/src/Java/binnie/craftgui/extratrees/kitchen/WindowBottleRack.java b/src/Java/binnie/craftgui/extratrees/kitchen/WindowBottleRack.java
new file mode 100644
index 0000000000..8fffff9ed2
--- /dev/null
+++ b/src/Java/binnie/craftgui/extratrees/kitchen/WindowBottleRack.java
@@ -0,0 +1,48 @@
+package binnie.craftgui.extratrees.kitchen;
+
+import binnie.core.AbstractMod;
+import binnie.core.machines.IMachine;
+import binnie.core.machines.Machine;
+import binnie.core.machines.MachinePackage;
+import binnie.craftgui.minecraft.Window;
+import binnie.craftgui.minecraft.control.ControlPlayerInventory;
+import binnie.extratrees.ExtraTrees;
+import cpw.mods.fml.relauncher.Side;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.inventory.IInventory;
+
+public class WindowBottleRack
+ extends Window
+{
+ public WindowBottleRack(EntityPlayer player, IInventory inventory, Side side)
+ {
+ super(248.0F, 180.0F, player, inventory, side);
+ }
+
+ public static Window create(EntityPlayer player, IInventory inventory, Side side)
+ {
+ return new WindowBottleRack(player, inventory, side);
+ }
+
+ protected AbstractMod getMod()
+ {
+ return ExtraTrees.instance;
+ }
+
+ protected String getName()
+ {
+ return "BottleBank";
+ }
+
+ public void initialiseClient()
+ {
+ setTitle(Machine.getMachine(getInventory()).getPackage().getDisplayName());
+ for (int i = 0; i < 36; i++)
+ {
+ int x = i % 12;
+ int y = i / 12;
+ new ControlTankSlot(this, 16 + x * 18, 32 + y * 18, i);
+ }
+ new ControlPlayerInventory(this);
+ }
+}
diff --git a/src/Java/binnie/craftgui/genetics/machine/ControlGene.java b/src/Java/binnie/craftgui/genetics/machine/ControlGene.java
new file mode 100644
index 0000000000..a5c830154e
--- /dev/null
+++ b/src/Java/binnie/craftgui/genetics/machine/ControlGene.java
@@ -0,0 +1,101 @@
+package binnie.craftgui.genetics.machine;
+
+import binnie.Binnie;
+import binnie.core.genetics.BreedingSystem;
+import binnie.core.genetics.ManagerGenetics;
+import binnie.core.resource.BinnieIcon;
+import binnie.craftgui.controls.core.Control;
+import binnie.craftgui.controls.core.IControlValue;
+import binnie.craftgui.core.Attribute;
+import binnie.craftgui.core.CraftGUI;
+import binnie.craftgui.core.ITooltip;
+import binnie.craftgui.core.IWidget;
+import binnie.craftgui.core.Tooltip;
+import binnie.craftgui.core.geometry.IArea;
+import binnie.craftgui.core.geometry.IPoint;
+import binnie.craftgui.core.renderer.Renderer;
+import binnie.craftgui.events.EventMouse.Down;
+import binnie.craftgui.events.EventMouse.Down.Handler;
+import binnie.craftgui.minecraft.Window;
+import binnie.genetics.api.IGene;
+import binnie.genetics.core.GeneticsTexture;
+import binnie.genetics.genetics.Engineering;
+import forestry.api.genetics.IChromosomeType;
+import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.NBTTagCompound;
+
+public class ControlGene
+ extends Control
+ implements IControlValue<IGene>, ITooltip
+{
+ IGene gene;
+
+ public void getTooltip(Tooltip tooltip)
+ {
+ String cName = Binnie.Genetics.getSystem(this.gene.getSpeciesRoot()).getChromosomeName(this.gene.getChromosome());
+ tooltip.add(cName + ": " + this.gene.getName());
+ if ((isMouseOver()) && (canFill(Window.get(this).getHeldItemStack())))
+ {
+ tooltip.add("Left click to assign gene");
+ IGene existingGene = Engineering.getGene(Window.get(this).getHeldItemStack(), this.gene.getChromosome().ordinal());
+ if (existingGene == null) {
+ return;
+ }
+ String dName = Binnie.Genetics.getSystem(this.gene.getSpeciesRoot()).getChromosomeName(this.gene.getChromosome());
+ tooltip.add("Will replace " + dName + ": " + existingGene.getName());
+ }
+ }
+
+ private boolean canFill(ItemStack stack)
+ {
+ return (stack != null) && (stack.stackSize == 1) && (Engineering.isGeneAcceptor(stack)) && (Engineering.canAcceptGene(stack, getValue()));
+ }
+
+ protected ControlGene(IWidget parent, float x, float y)
+ {
+ super(parent, x, y, 16.0F, 16.0F);
+ addAttribute(Attribute.MouseOver);
+
+ addSelfEventHandler(new EventMouse.Down.Handler()
+ {
+ public void onEvent(EventMouse.Down event)
+ {
+ if (ControlGene.this.canFill(Window.get(ControlGene.this.getWidget()).getHeldItemStack()))
+ {
+ NBTTagCompound action = new NBTTagCompound();
+
+ NBTTagCompound geneNBT = new NBTTagCompound();
+ ControlGene.this.getValue().writeToNBT(geneNBT);
+
+ action.setTag("gene", geneNBT);
+
+ Window.get(ControlGene.this.getWidget()).sendClientAction("gene-select", action);
+ }
+ }
+ });
+ }
+
+ public IGene getValue()
+ {
+ return this.gene;
+ }
+
+ public void setValue(IGene value)
+ {
+ this.gene = value;
+ }
+
+ public void onRenderForeground() {}
+
+ public void onRenderBackground()
+ {
+ if ((isMouseOver()) && (canFill(Window.get(this).getHeldItemStack())))
+ {
+ CraftGUI.Render.solid(getArea(), -1);
+ CraftGUI.Render.solid(getArea().inset(1), -12303292);
+ }
+ CraftGUI.Render.colour(-1);
+
+ CraftGUI.Render.iconItem(IPoint.ZERO, GeneticsTexture.dnaIcon.getIcon());
+ }
+}
diff --git a/src/Java/binnie/craftgui/genetics/machine/ControlGeneScroll.java b/src/Java/binnie/craftgui/genetics/machine/ControlGeneScroll.java
new file mode 100644
index 0000000000..a779933050
--- /dev/null
+++ b/src/Java/binnie/craftgui/genetics/machine/ControlGeneScroll.java
@@ -0,0 +1,97 @@
+package binnie.craftgui.genetics.machine;
+
+import binnie.Binnie;
+import binnie.core.genetics.BreedingSystem;
+import binnie.core.genetics.Gene;
+import binnie.core.genetics.ManagerGenetics;
+import binnie.craftgui.controls.ControlText;
+import binnie.craftgui.controls.core.Control;
+import binnie.craftgui.controls.core.IControlValue;
+import binnie.craftgui.core.IWidget;
+import binnie.craftgui.core.geometry.IPoint;
+import binnie.craftgui.minecraft.Window;
+import binnie.genetics.genetics.GeneTracker;
+import forestry.api.genetics.IAllele;
+import forestry.api.genetics.IChromosomeType;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+
+public class ControlGeneScroll
+ extends Control
+ implements IControlValue<BreedingSystem>
+{
+ protected ControlGeneScroll(IWidget parent, float x, float y, float w, float h)
+ {
+ super(parent, x, y, w, h);
+ }
+
+ private String filter = "";
+ private BreedingSystem system = null;
+
+ public void setFilter(String filter)
+ {
+ this.filter = filter.toLowerCase();
+ refresh();
+ }
+
+ public void setGenes(BreedingSystem system)
+ {
+ this.system = system;
+ refresh();
+ }
+
+ public void refresh()
+ {
+ deleteAllChildren();
+
+ GeneTracker tracker = GeneTracker.getTracker(Window.get(this).getWorld(), Window.get(this).getUsername());
+
+ Map<IChromosomeType, List<IAllele>> genes = Binnie.Genetics.getChromosomeMap(this.system.getSpeciesRoot());
+
+ int x = 0;
+ int y = 0;
+
+ boolean isNEI = ((WindowGeneBank)Window.get(this)).isNei;
+ for (Map.Entry<IChromosomeType, List<IAllele>> entry : genes.entrySet())
+ {
+ List<IAllele> discovered = new ArrayList();
+ for (IAllele allele : (List)entry.getValue())
+ {
+ Gene gene = new Gene(allele, (IChromosomeType)entry.getKey(), this.system.getSpeciesRoot());
+ if (((isNEI) || (tracker.isSequenced(new Gene(allele, (IChromosomeType)entry.getKey(), this.system.getSpeciesRoot())))) && (gene.getName().toLowerCase().contains(this.filter))) {
+ discovered.add(allele);
+ }
+ }
+ if (discovered.size() != 0)
+ {
+ x = 0;
+ new ControlText(this, new IPoint(x, y), this.system.getChromosomeName((IChromosomeType)entry.getKey()));
+ y += 12;
+ for (IAllele allele : discovered)
+ {
+ if (x + 18 > getSize().x())
+ {
+ y += 20;
+ x = 0;
+ }
+ new ControlGene(this, x, y).setValue(new Gene(allele, (IChromosomeType)entry.getKey(), this.system.getSpeciesRoot()));
+ x += 18;
+ }
+ y += 24;
+ }
+ }
+ setSize(new IPoint(getSize().x(), y));
+ }
+
+ public void setValue(BreedingSystem system)
+ {
+ setGenes(system);
+ }
+
+ public BreedingSystem getValue()
+ {
+ return this.system;
+ }
+}
diff --git a/src/Java/binnie/craftgui/genetics/machine/ControlProcessTemporary.java b/src/Java/binnie/craftgui/genetics/machine/ControlProcessTemporary.java
new file mode 100644
index 0000000000..43e32dc9ad
--- /dev/null
+++ b/src/Java/binnie/craftgui/genetics/machine/ControlProcessTemporary.java
@@ -0,0 +1,27 @@
+package binnie.craftgui.genetics.machine;
+
+import binnie.craftgui.core.CraftGUI;
+import binnie.craftgui.core.IWidget;
+import binnie.craftgui.core.geometry.IArea;
+import binnie.craftgui.core.geometry.IPoint;
+import binnie.craftgui.core.renderer.Renderer;
+import binnie.craftgui.minecraft.control.ControlMachineProgress;
+
+public class ControlProcessTemporary
+ extends ControlMachineProgress
+{
+ public ControlProcessTemporary(IWidget parent, int x, int y, int width, int height)
+ {
+ super(parent, x, y, null, null, null);
+ setSize(new IPoint(width, height));
+ }
+
+ public void onRenderBackground()
+ {
+ CraftGUI.Render.solid(getArea(), -4868683);
+
+ float w = getSize().y() * this.progress / 100.0F;
+
+ CraftGUI.Render.solid(new IArea(getArea().x(), getArea().y(), w, getArea().h()), -65536);
+ }
+}
diff --git a/src/Java/binnie/craftgui/genetics/machine/ControlSequencerProgress.java b/src/Java/binnie/craftgui/genetics/machine/ControlSequencerProgress.java
new file mode 100644
index 0000000000..1a80f71676
--- /dev/null
+++ b/src/Java/binnie/craftgui/genetics/machine/ControlSequencerProgress.java
@@ -0,0 +1,64 @@
+package binnie.craftgui.genetics.machine;
+
+import binnie.core.machines.IMachine;
+import binnie.core.machines.Machine;
+import binnie.core.machines.MachineUtil;
+import binnie.craftgui.controls.ControlText;
+import binnie.craftgui.core.IWidget;
+import binnie.craftgui.core.geometry.IArea;
+import binnie.craftgui.core.geometry.TextJustification;
+import binnie.craftgui.minecraft.MinecraftGUI.PanelType;
+import binnie.craftgui.minecraft.Window;
+import binnie.craftgui.minecraft.control.ControlProgressBase;
+import binnie.craftgui.window.Panel;
+import java.util.Random;
+import net.minecraft.item.ItemStack;
+
+public class ControlSequencerProgress
+ extends ControlProgressBase
+{
+ ControlText textControl;
+
+ public ControlSequencerProgress(IWidget parent, int x, int y)
+ {
+ super(parent, x, y, 100.0F, 52.0F);
+
+ Panel panel = new Panel(this, 0.0F, 0.0F, 100.0F, 52.0F, MinecraftGUI.PanelType.Gray);
+
+ this.textControl = new ControlText(panel, new IArea(4.0F, 4.0F, 92.0F, 44.0F), "", TextJustification.MiddleCenter);
+ }
+
+ public void onUpdateClient()
+ {
+ super.onUpdateClient();
+
+ ItemStack stack = Machine.getMachine(Window.get(this).getInventory()).getMachineUtil().getStack(5);
+ if (stack == null)
+ {
+ this.textControl.setValue("");
+ }
+ else
+ {
+ Random rand = new Random(stack.getDisplayName().length());
+
+ String text = "";
+ String[] codes = { "A", "T", "G", "C" };
+ String[] colors = { "a", "d", "b", "c" };
+ for (int i = 0; i < 65; i++)
+ {
+ int k = rand.nextInt(4);
+ String code = codes[k];
+ if (rand.nextFloat() < this.progress)
+ {
+ String col = "§" + colors[k];
+ text = text + "§r" + col + "§l" + code;
+ }
+ else
+ {
+ text = text + "§r§7§k§l" + code;
+ }
+ }
+ this.textControl.setValue(text);
+ }
+ }
+}
diff --git a/src/Java/binnie/craftgui/genetics/machine/ControlSplicerProgress.java b/src/Java/binnie/craftgui/genetics/machine/ControlSplicerProgress.java
new file mode 100644
index 0000000000..7afa16f31f
--- /dev/null
+++ b/src/Java/binnie/craftgui/genetics/machine/ControlSplicerProgress.java
@@ -0,0 +1,60 @@
+package binnie.craftgui.genetics.machine;
+
+import binnie.core.machines.power.ProcessInfo;
+import binnie.craftgui.core.CraftGUI;
+import binnie.craftgui.core.IWidget;
+import binnie.craftgui.core.geometry.IArea;
+import binnie.craftgui.core.renderer.Renderer;
+import binnie.craftgui.minecraft.control.ControlProgressBase;
+
+public class ControlSplicerProgress
+ extends ControlProgressBase
+{
+ float strength = 0.0F;
+
+ public ControlSplicerProgress(IWidget parent, float x, float y, float w, float h)
+ {
+ super(parent, x, y, w, h);
+ this.strength = 0.0F;
+ }
+
+ public void onRenderBackground()
+ {
+ float progress = getProcess().getCurrentProgress() / 100.0F;
+
+ float n = getProcess().getProcessTime() / 12.0F;
+ float spacing = 10.0F;
+ float range = w();
+ float h = 8.0F;
+
+ float ooy = -((n - 1.0F) * spacing) - range / 2.0F;
+ float ddy = (n - 1.0F) * spacing + range;
+ float oy = ooy + ddy * progress;
+ for (int i = 0; i < n; i++)
+ {
+ int seed = 432523;
+ int[] colours = { 10027008, 30464, 255, 10057472 };
+ int c1 = colours[((int)Math.abs(13.0D * Math.sin(i) + 48.0D * Math.cos(i) + 25.0D * Math.sin(7 * i)) % 4)];
+ int c2 = colours[((int)Math.abs(23.0D * Math.sin(i) + 28.0D * Math.cos(i) + 15.0D * Math.sin(7 * i)) % 4)];
+ int c3 = colours[((int)Math.abs(43.0D * Math.sin(i) + 38.0D * Math.cos(i) + 55.0D * Math.sin(7 * i)) % 4)];
+ int c4 = colours[((int)Math.abs(3.0D * Math.sin(i) + 18.0D * Math.cos(i) + 35.0D * Math.sin(7 * i)) % 4)];
+
+ float y = oy + i * spacing;
+ if ((y > -range / 2.0F) && (y < range / 2.0F))
+ {
+ float percentView = (float)Math.sqrt(1.0F - Math.abs(2.0F * y / range));
+ float offMovement = (h() - 2.0F * h) / 2.0F;
+ int alpha = 16777216 * (int)(255.0F * percentView);
+ c1 += alpha;
+ c2 += alpha;
+ c3 += alpha;
+ c4 += alpha;
+ CraftGUI.Render.solidAlpha(new IArea(w() / 2.0F + y, offMovement * percentView, 4.0F, h / 2.0F), c1);
+ CraftGUI.Render.solidAlpha(new IArea(w() / 2.0F + y, offMovement * percentView + 4.0F, 4.0F, h / 2.0F), y < 0.0F ? c2 : c3);
+
+ CraftGUI.Render.solidAlpha(new IArea(w() / 2.0F + y, h() - offMovement * percentView - 8.0F, 4.0F, h / 2.0F), y < 0.0F ? c3 : c2);
+ CraftGUI.Render.solidAlpha(new IArea(w() / 2.0F + y, h() - offMovement * percentView - 4.0F, 4.0F, h / 2.0F), c4);
+ }
+ }
+ }
+}
diff --git a/src/Java/binnie/craftgui/genetics/machine/WindowAcclimatiser.java b/src/Java/binnie/craftgui/genetics/machine/WindowAcclimatiser.java
new file mode 100644
index 0000000000..8ed95dd0ef
--- /dev/null
+++ b/src/Java/binnie/craftgui/genetics/machine/WindowAcclimatiser.java
@@ -0,0 +1,80 @@
+package binnie.craftgui.genetics.machine;
+
+import binnie.core.AbstractMod;
+import binnie.craftgui.core.geometry.Position;
+import binnie.craftgui.minecraft.Window;
+import binnie.craftgui.minecraft.control.ControlEnergyBar;
+import binnie.craftgui.minecraft.control.ControlErrorState;
+import binnie.craftgui.minecraft.control.ControlPlayerInventory;
+import binnie.craftgui.minecraft.control.ControlSlot;
+import binnie.craftgui.minecraft.control.ControlSlotArray;
+import binnie.craftgui.resource.Texture;
+import binnie.craftgui.resource.minecraft.StandardTexture;
+import binnie.extrabees.core.ExtraBeeTexture;
+import binnie.genetics.Genetics;
+import binnie.genetics.machine.Acclimatiser;
+import cpw.mods.fml.relauncher.Side;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.inventory.IInventory;
+
+public class WindowAcclimatiser
+ extends WindowMachine
+{
+ public static Window create(EntityPlayer player, IInventory inventory, Side side)
+ {
+ return new WindowAcclimatiser(player, inventory, side);
+ }
+
+ public WindowAcclimatiser(EntityPlayer player, IInventory inventory, Side side)
+ {
+ super(280, 198, player, inventory, side);
+ }
+
+ static Texture ProgressBase = new StandardTexture(64, 0, 130, 21, ExtraBeeTexture.GUIProgress.getTexture());
+ static Texture Progress = new StandardTexture(64, 21, 130, 21, ExtraBeeTexture.GUIProgress.getTexture());
+ public static final int[] slotReserve = { 0, 1, 2, 3 };
+ public static final int slotTarget = 4;
+ public static final int[] slotAcclimatiser = { 5, 6, 7 };
+ public static final int[] slotDone = { 8, 9, 10, 11 };
+
+ public void initialiseClient()
+ {
+ setTitle("Acclimatiser");
+
+ int x = 16;
+ int y = 32;
+
+ new ControlSlotArray(this, x, y, 2, 2).create(Acclimatiser.slotReserve);
+
+ x += 54;
+
+ new ControlSlot(this, x + 18, y).assign(4);
+ new ControlSlotArray(this, x, y + 18 + 18, 3, 1).create(Acclimatiser.slotAcclimatiser);
+
+ x += 72;
+
+ new ControlSlotArray(this, x, y, 2, 2).create(Acclimatiser.slotDone);
+
+
+ new ControlEnergyBar(this, 21, 115, 16, 60, Position.Bottom);
+
+ new ControlErrorState(this, 181.0F, 83.0F);
+
+ new ControlPlayerInventory(this);
+ }
+
+ public String getTitle()
+ {
+ return "Acclimatiser";
+ }
+
+ protected AbstractMod getMod()
+ {
+ return Genetics.instance;
+ }
+
+ protected String getName()
+ {
+ return "Acclimatiser";
+ }
+}
diff --git a/src/Java/binnie/craftgui/genetics/machine/WindowAnalyser.java b/src/Java/binnie/craftgui/genetics/machine/WindowAnalyser.java
new file mode 100644
index 0000000000..c1a2ac5305
--- /dev/null
+++ b/src/Java/binnie/craftgui/genetics/machine/WindowAnalyser.java
@@ -0,0 +1,110 @@
+package binnie.craftgui.genetics.machine;
+
+import binnie.core.AbstractMod;
+import binnie.craftgui.core.geometry.Position;
+import binnie.craftgui.minecraft.GUIIcon;
+import binnie.craftgui.minecraft.MinecraftGUI.PanelType;
+import binnie.craftgui.minecraft.Window;
+import binnie.craftgui.minecraft.control.ControlEnergyBar;
+import binnie.craftgui.minecraft.control.ControlErrorState;
+import binnie.craftgui.minecraft.control.ControlIconDisplay;
+import binnie.craftgui.minecraft.control.ControlPlayerInventory;
+import binnie.craftgui.minecraft.control.ControlProgress;
+import binnie.craftgui.minecraft.control.ControlSlot;
+import binnie.craftgui.minecraft.control.ControlSlotArray;
+import binnie.craftgui.minecraft.control.ControlSlotCharge;
+import binnie.craftgui.resource.Texture;
+import binnie.craftgui.resource.minecraft.StandardTexture;
+import binnie.craftgui.window.Panel;
+import binnie.extrabees.core.ExtraBeeTexture;
+import binnie.genetics.Genetics;
+import binnie.genetics.core.GeneticsTexture;
+import binnie.genetics.machine.Analyser;
+import cpw.mods.fml.relauncher.Side;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.inventory.IInventory;
+
+public class WindowAnalyser
+ extends WindowMachine
+{
+ public static Window create(EntityPlayer player, IInventory inventory, Side side)
+ {
+ return new WindowAnalyser(player, inventory, side);
+ }
+
+ static Texture ProgressBase = new StandardTexture(0, 218, 142, 17, ExtraBeeTexture.GUIProgress.getTexture());
+ static Texture Progress = new StandardTexture(0, 201, 142, 17, ExtraBeeTexture.GUIProgress.getTexture());
+
+ public WindowAnalyser(EntityPlayer player, IInventory inventory, Side side)
+ {
+ super(220, 210, player, inventory, side);
+ }
+
+ public void initialiseClient()
+ {
+ ProgressBase = new StandardTexture(0, 51, 66, 40, GeneticsTexture.GUIProcess.getTexture());
+ Progress = new StandardTexture(66, 51, 66, 40, GeneticsTexture.GUIProcess.getTexture());
+
+
+
+
+ int x = 16;
+ int y = 32;
+
+ new ControlSlotArray(this, x, y, 2, 3).create(Analyser.slotReserve);
+
+
+ x += 28;
+
+ new ControlSlot(this, x, y + 54 + 8).assign(13);
+ new ControlSlotCharge(this, x + 20, y + 54 + 8, 13).setColour(10040319);
+ new ControlEnergyBar(this, x + 24 + 16, y + 54 + 8 + 1, 60, 16, Position.Left);
+ new ControlErrorState(this, x + 24 + 16 + 60 + 16, y + 54 + 8 + 1);
+
+
+ x -= 28;
+
+ new ControlIconDisplay(this, x + 36 + 2, y + 18, GUIIcon.ArrowRight.getIcon());
+
+
+ x += 56;
+
+ new Panel(this, x, y, 76.0F, 50.0F, MinecraftGUI.PanelType.Tinted);
+
+ new ControlProgress(this, x + 5, y + 5, ProgressBase, Progress, Position.Left);
+
+ new ControlSlot(this, x + 38 - 9, y + 25 - 9).assign(6);
+
+ new ControlIconDisplay(this, x + 76 + 2, y + 18, GUIIcon.ArrowRight.getIcon());
+
+
+ x += 96;
+
+
+
+ new ControlSlotArray(this, x, y, 2, 3).create(Analyser.slotFinished);
+
+
+ x += 52;
+
+ setTitle("Analyser");
+
+
+ new ControlPlayerInventory(this);
+ }
+
+ public String getTitle()
+ {
+ return "Analyser";
+ }
+
+ protected AbstractMod getMod()
+ {
+ return Genetics.instance;
+ }
+
+ protected String getName()
+ {
+ return "Analyser";
+ }
+}
diff --git a/src/Java/binnie/craftgui/genetics/machine/WindowGeneBank.java b/src/Java/binnie/craftgui/genetics/machine/WindowGeneBank.java
new file mode 100644
index 0000000000..e13bca4ce5
--- /dev/null
+++ b/src/Java/binnie/craftgui/genetics/machine/WindowGeneBank.java
@@ -0,0 +1,256 @@
+package binnie.craftgui.genetics.machine;
+
+import binnie.Binnie;
+import binnie.core.AbstractMod;
+import binnie.core.genetics.BreedingSystem;
+import binnie.core.genetics.Gene;
+import binnie.core.genetics.ManagerGenetics;
+import binnie.craftgui.controls.ControlText;
+import binnie.craftgui.controls.ControlTextEdit;
+import binnie.craftgui.controls.scroll.ControlScrollableContent;
+import binnie.craftgui.controls.tab.ControlTab;
+import binnie.craftgui.controls.tab.ControlTabBar;
+import binnie.craftgui.core.IWidget;
+import binnie.craftgui.core.Tooltip;
+import binnie.craftgui.core.geometry.IPoint;
+import binnie.craftgui.core.geometry.Position;
+import binnie.craftgui.events.EventHandler.Origin;
+import binnie.craftgui.events.EventTextEdit;
+import binnie.craftgui.events.EventTextEdit.Handler;
+import binnie.craftgui.events.EventValueChanged;
+import binnie.craftgui.events.EventValueChanged.Handler;
+import binnie.craftgui.minecraft.MinecraftGUI.PanelType;
+import binnie.craftgui.minecraft.Window;
+import binnie.craftgui.minecraft.control.ControlPlayerInventory;
+import binnie.craftgui.minecraft.control.ControlTabIcon;
+import binnie.craftgui.window.Panel;
+import binnie.genetics.Genetics;
+import binnie.genetics.genetics.Engineering;
+import binnie.genetics.genetics.GeneTracker;
+import cpw.mods.fml.relauncher.Side;
+import forestry.api.genetics.IAllele;
+import forestry.api.genetics.IChromosomeType;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Set;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.entity.player.EntityPlayerMP;
+import net.minecraft.entity.player.InventoryPlayer;
+import net.minecraft.inventory.IInventory;
+import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.util.IIcon;
+
+public class WindowGeneBank
+ extends WindowMachine
+{
+ public static IIcon[] iconsDNA;
+ public boolean isNei;
+ ControlGeneScroll genes;
+
+ public void recieveGuiNBT(Side side, EntityPlayer player, String name, NBTTagCompound action)
+ {
+ super.recieveGuiNBT(side, player, name, action);
+ if ((side == Side.SERVER) && (name.equals("gene-select")))
+ {
+ Gene gene = new Gene(action.getCompoundTag("gene"));
+ if ((gene != null) && (!gene.isCorrupted()))
+ {
+ ItemStack held = getHeldItemStack();
+
+ ItemStack converted = Engineering.addGene(held, gene);
+
+ getPlayer().inventory.setItemStack(converted);
+
+ getPlayer().inventory.markDirty();
+ if ((getPlayer() instanceof EntityPlayerMP)) {
+ ((EntityPlayerMP)getPlayer()).sendContainerToPlayer(player.inventoryContainer);
+ }
+ }
+ }
+ }
+
+ public static Window create(EntityPlayer player, IInventory inventory, Side side)
+ {
+ return new WindowGeneBank(player, inventory, side, false);
+ }
+
+ public WindowGeneBank(EntityPlayer player, IInventory inventory, Side side, boolean isNEI)
+ {
+ super(320, 224, player, inventory, side);
+ this.isNei = isNEI;
+ }
+
+ public void initialiseServer()
+ {
+ GeneTracker tracker = GeneTracker.getTracker(getWorld(), getUsername());
+ if (tracker != null) {
+ tracker.synchToPlayer(getPlayer());
+ }
+ }
+
+ public void initialiseClient()
+ {
+ setTitle("Gene Bank");
+
+ addEventHandler(new EventValueChanged.Handler()
+ {
+ public void onEvent(EventValueChanged event)
+ {
+ if ((event.value instanceof BreedingSystem)) {
+ WindowGeneBank.this.genes.setValue((BreedingSystem)event.value);
+ }
+ }
+ });
+ int boxX = 100;
+
+ int x = 16;
+ int y = 32;
+
+ new ControlPlayerInventory(this, x, y);
+
+ x += 124;
+
+ boxX = x;
+
+ int geneBoxWidth = 120;
+
+ new Panel(this, boxX + 24, 32.0F, geneBoxWidth, 120.0F, MinecraftGUI.PanelType.Black);
+ new Panel(this, boxX + 24 + geneBoxWidth, 32.0F, 14.0F, 120.0F, MinecraftGUI.PanelType.Gray);
+ ControlScrollableContent scroll = new ControlScrollableContent(this, boxX + 24 + 2, 34.0F, geneBoxWidth + 10, 116.0F, 12.0F);
+
+ ControlTextEdit edit = new ControlTextEdit(this, boxX + 27 + geneBoxWidth - 70, 18.0F, 80.0F, 12.0F);
+
+ addEventHandler(new EventTextEdit.Handler()
+ {
+ public void onEvent(EventTextEdit event)
+ {
+ WindowGeneBank.this.genes.setFilter((String)event.getValue());
+ }
+ }.setOrigin(EventHandler.Origin.Self, edit));
+
+
+
+ this.genes = new ControlGeneScroll(scroll, 1.0F, 1.0F, geneBoxWidth, 116.0F);
+ scroll.setScrollableContent(this.genes);
+
+
+
+
+
+ this.genes.setGenes(Binnie.Genetics.beeBreedingSystem);
+
+ ControlTabBar<BreedingSystem> tabBar = new ControlTabBar(this, boxX, 32.0F, 24.0F, 120.0F, Position.Left)
+ {
+ public ControlTab<BreedingSystem> createTab(float x, float y, float w, float h, BreedingSystem value)
+ {
+ new ControlTabIcon(this, x, y, w, h, value)
+ {
+ public void getTooltip(Tooltip tooltip)
+ {
+ tooltip.add(((BreedingSystem)getValue()).toString());
+
+ int totalGenes = 0;
+ int seqGenes = 0;
+
+ GeneTracker tracker = GeneTracker.getTracker(WindowGeneBank.this.getWorld(), WindowGeneBank.this.getUsername());
+
+ Map<IChromosomeType, List<IAllele>> genes = Binnie.Genetics.getChromosomeMap(((BreedingSystem)getValue()).getSpeciesRoot());
+ for (Iterator i$ = genes.entrySet().iterator(); i$.hasNext();)
+ {
+ entry = (Map.Entry)i$.next();
+ totalGenes += ((List)entry.getValue()).size();
+ for (IAllele allele : (List)entry.getValue())
+ {
+ Gene gene = new Gene(allele, (IChromosomeType)entry.getKey(), ((BreedingSystem)getValue()).getSpeciesRoot());
+ if (tracker.isSequenced(gene)) {
+ seqGenes++;
+ }
+ }
+ }
+ Map.Entry<IChromosomeType, List<IAllele>> entry;
+ tooltip.add("" + seqGenes + "/" + totalGenes + " Genes");
+ }
+ };
+ }
+ };
+ tabBar.setValues(Binnie.Genetics.getActiveSystems());
+
+ tabBar.setValue(Binnie.Genetics.beeBreedingSystem);
+
+ boxX -= 8;
+
+ ControlTabBar<String> infoTabs = new ControlTabBar(this, boxX + 8, 160.0F, 16.0F, 50.0F, Position.Left);
+
+ infoTabs.setValues(Arrays.asList(new String[] { "Stats", "Ranking" }));
+
+ infoTabs.setValue("Info");
+
+ Panel panelProject = new Panel(this, boxX + 24, 160.0F, geneBoxWidth + 20, 50.0F, MinecraftGUI.PanelType.Black);
+
+ int totalGenes = 0;
+ int seqGenes = 0;
+ for (Iterator i$ = Binnie.Genetics.getActiveSystems().iterator(); i$.hasNext();)
+ {
+ system = (BreedingSystem)i$.next();
+
+ tracker = GeneTracker.getTracker(getWorld(), getUsername());
+
+ Map<IChromosomeType, List<IAllele>> genes = Binnie.Genetics.getChromosomeMap(system.getSpeciesRoot());
+ for (i$ = genes.entrySet().iterator(); i$.hasNext();)
+ {
+ entry = (Map.Entry)i$.next();
+ totalGenes += ((List)entry.getValue()).size();
+ for (IAllele allele : (List)entry.getValue())
+ {
+ Gene gene = new Gene(allele, (IChromosomeType)entry.getKey(), system.getSpeciesRoot());
+ if (tracker.isSequenced(gene)) {
+ seqGenes++;
+ }
+ }
+ }
+ }
+ BreedingSystem system;
+ GeneTracker tracker;
+ Iterator i$;
+ Map.Entry<IChromosomeType, List<IAllele>> entry;
+ new ControlText(panelProject, new IPoint(4.0F, 4.0F), "§nFull Genome Project");
+ new ControlText(panelProject, new IPoint(4.0F, 18.0F), "§oSequenced §r" + seqGenes + "/" + totalGenes + " §oGenes");
+ }
+
+ public String getTitle()
+ {
+ return "Gene Bank";
+ }
+
+ public static class ChromosomeType
+ {
+ IChromosomeType chromosome;
+ BreedingSystem system;
+
+ public ChromosomeType(IChromosomeType chromosome, BreedingSystem system)
+ {
+ this.chromosome = chromosome;
+ this.system = system;
+ }
+
+ public String toString()
+ {
+ return this.system.getChromosomeName(this.chromosome);
+ }
+ }
+
+ protected AbstractMod getMod()
+ {
+ return Genetics.instance;
+ }
+
+ protected String getName()
+ {
+ return "GeneBank";
+ }
+}
diff --git a/src/Java/binnie/craftgui/genetics/machine/WindowGeneBankNEI.java b/src/Java/binnie/craftgui/genetics/machine/WindowGeneBankNEI.java
new file mode 100644
index 0000000000..08e680c68d
--- /dev/null
+++ b/src/Java/binnie/craftgui/genetics/machine/WindowGeneBankNEI.java
@@ -0,0 +1,14 @@
+package binnie.craftgui.genetics.machine;
+
+import binnie.craftgui.minecraft.Window;
+import cpw.mods.fml.relauncher.Side;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.inventory.IInventory;
+
+public class WindowGeneBankNEI
+{
+ public static Window create(EntityPlayer player, IInventory inventory, Side side)
+ {
+ return new WindowGeneBank(player, inventory, side, true);
+ }
+}
diff --git a/src/Java/binnie/craftgui/genetics/machine/WindowGeneProject.java b/src/Java/binnie/craftgui/genetics/machine/WindowGeneProject.java
new file mode 100644
index 0000000000..c79e6f7d0c
--- /dev/null
+++ b/src/Java/binnie/craftgui/genetics/machine/WindowGeneProject.java
@@ -0,0 +1,32 @@
+package binnie.craftgui.genetics.machine;
+
+import binnie.core.AbstractMod;
+import binnie.craftgui.minecraft.Window;
+import binnie.genetics.Genetics;
+import cpw.mods.fml.relauncher.Side;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.inventory.IInventory;
+
+public class WindowGeneProject
+ extends Window
+{
+ public WindowGeneProject(EntityPlayer player, IInventory inventory, Side side)
+ {
+ super(100.0F, 100.0F, player, inventory, side);
+ }
+
+ protected AbstractMod getMod()
+ {
+ return Genetics.instance;
+ }
+
+ protected String getName()
+ {
+ return "GeneProjects";
+ }
+
+ public void initialiseClient()
+ {
+ setTitle("Gene Projects");
+ }
+}
diff --git a/src/Java/binnie/craftgui/genetics/machine/WindowGenepool.java b/src/Java/binnie/craftgui/genetics/machine/WindowGenepool.java
new file mode 100644
index 0000000000..c91b95c0bb
--- /dev/null
+++ b/src/Java/binnie/craftgui/genetics/machine/WindowGenepool.java
@@ -0,0 +1,96 @@
+package binnie.craftgui.genetics.machine;
+
+import binnie.core.AbstractMod;
+import binnie.craftgui.core.geometry.Position;
+import binnie.craftgui.minecraft.GUIIcon;
+import binnie.craftgui.minecraft.Window;
+import binnie.craftgui.minecraft.control.ControlEnergyBar;
+import binnie.craftgui.minecraft.control.ControlErrorState;
+import binnie.craftgui.minecraft.control.ControlIconDisplay;
+import binnie.craftgui.minecraft.control.ControlLiquidTank;
+import binnie.craftgui.minecraft.control.ControlMachineProgress;
+import binnie.craftgui.minecraft.control.ControlPlayerInventory;
+import binnie.craftgui.minecraft.control.ControlSlot;
+import binnie.craftgui.minecraft.control.ControlSlotArray;
+import binnie.craftgui.minecraft.control.ControlSlotCharge;
+import binnie.craftgui.resource.Texture;
+import binnie.craftgui.resource.minecraft.StandardTexture;
+import binnie.extrabees.core.ExtraBeeTexture;
+import binnie.genetics.Genetics;
+import binnie.genetics.machine.Genepool;
+import cpw.mods.fml.relauncher.Side;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.inventory.IInventory;
+
+public class WindowGenepool
+ extends WindowMachine
+{
+ public static Window create(EntityPlayer player, IInventory inventory, Side side)
+ {
+ return new WindowGenepool(player, inventory, side);
+ }
+
+ public WindowGenepool(EntityPlayer player, IInventory inventory, Side side)
+ {
+ super(280, 198, player, inventory, side);
+ }
+
+ static Texture ProgressBase = new StandardTexture(64, 0, 130, 21, ExtraBeeTexture.GUIProgress.getTexture());
+ static Texture Progress = new StandardTexture(64, 21, 130, 21, ExtraBeeTexture.GUIProgress.getTexture());
+
+ public void initialiseClient()
+ {
+ setTitle("Genepool");
+
+ int x = 16;
+ int y = 32;
+
+ new ControlLiquidTank(this, x, y).setTankID(1);
+
+ x += 26;
+
+ new ControlSlotArray(this, x, y + 3, 2, 3).create(Genepool.slotReserve);
+
+ x += 38;
+
+ new ControlIconDisplay(this, x, y + 3 + 18 + 1, GUIIcon.ArrowRight.getIcon());
+
+ x += 18;
+
+ new ControlSlot(this, x, y + 3 + 18).assign(0);
+
+ x += 18;
+
+ new ControlMachineProgress(this, x, y + 19, ProgressBase, Progress, Position.Left);
+
+ x += 130;
+
+ new ControlLiquidTank(this, x, y).setTankID(0);
+
+
+ new ControlEnergyBar(this, 21, 115, 16, 60, Position.Bottom);
+
+ new ControlSlot(this, 121.0F, 82.0F).assign(7);
+ new ControlSlotCharge(this, 143, 82, 7).setColour(15722671);
+
+
+ new ControlErrorState(this, 181.0F, 83.0F);
+
+ new ControlPlayerInventory(this);
+ }
+
+ public String getTitle()
+ {
+ return "Genepool";
+ }
+
+ protected AbstractMod getMod()
+ {
+ return Genetics.instance;
+ }
+
+ protected String getName()
+ {
+ return "Genepool";
+ }
+}
diff --git a/src/Java/binnie/craftgui/genetics/machine/WindowGenomeAssembler.java b/src/Java/binnie/craftgui/genetics/machine/WindowGenomeAssembler.java
new file mode 100644
index 0000000000..d6e31c3c69
--- /dev/null
+++ b/src/Java/binnie/craftgui/genetics/machine/WindowGenomeAssembler.java
@@ -0,0 +1,37 @@
+package binnie.craftgui.genetics.machine;
+
+import binnie.core.AbstractMod;
+import binnie.craftgui.minecraft.Window;
+import binnie.genetics.Genetics;
+import cpw.mods.fml.relauncher.Side;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.inventory.IInventory;
+
+public class WindowGenomeAssembler
+ extends WindowMachine
+{
+ public static Window create(EntityPlayer player, IInventory inventory, Side side)
+ {
+ return new WindowGenomeAssembler(player, inventory, side);
+ }
+
+ public WindowGenomeAssembler(EntityPlayer player, IInventory inventory, Side side)
+ {
+ super(320, 240, player, inventory, side);
+ }
+
+ public String getTitle()
+ {
+ return "Genome Assembler";
+ }
+
+ protected AbstractMod getMod()
+ {
+ return Genetics.instance;
+ }
+
+ protected String getName()
+ {
+ return "GenomeAssembler";
+ }
+}
diff --git a/src/Java/binnie/craftgui/genetics/machine/WindowIncubator.java b/src/Java/binnie/craftgui/genetics/machine/WindowIncubator.java
new file mode 100644
index 0000000000..f52a0b1717
--- /dev/null
+++ b/src/Java/binnie/craftgui/genetics/machine/WindowIncubator.java
@@ -0,0 +1,99 @@
+package binnie.craftgui.genetics.machine;
+
+import binnie.core.AbstractMod;
+import binnie.craftgui.core.geometry.Position;
+import binnie.craftgui.minecraft.GUIIcon;
+import binnie.craftgui.minecraft.Window;
+import binnie.craftgui.minecraft.control.ControlEnergyBar;
+import binnie.craftgui.minecraft.control.ControlErrorState;
+import binnie.craftgui.minecraft.control.ControlIconDisplay;
+import binnie.craftgui.minecraft.control.ControlLiquidTank;
+import binnie.craftgui.minecraft.control.ControlMachineProgress;
+import binnie.craftgui.minecraft.control.ControlPlayerInventory;
+import binnie.craftgui.minecraft.control.ControlSlot;
+import binnie.craftgui.minecraft.control.ControlSlotArray;
+import binnie.craftgui.resource.Texture;
+import binnie.craftgui.resource.minecraft.StandardTexture;
+import binnie.genetics.Genetics;
+import binnie.genetics.core.GeneticsTexture;
+import binnie.genetics.machine.Incubator;
+import cpw.mods.fml.relauncher.Side;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.inventory.IInventory;
+
+public class WindowIncubator
+ extends WindowMachine
+{
+ public static Window create(EntityPlayer player, IInventory inventory, Side side)
+ {
+ return new WindowIncubator(player, inventory, side);
+ }
+
+ public WindowIncubator(EntityPlayer player, IInventory inventory, Side side)
+ {
+ super(228, 196, player, inventory, side);
+ }
+
+ static Texture ProgressBase = new StandardTexture(0, 91, 38, 32, GeneticsTexture.GUIProcess);
+ static Texture Progress = new StandardTexture(38, 91, 38, 32, GeneticsTexture.GUIProcess);
+
+ public void initialiseClient()
+ {
+ setTitle("Incubator");
+
+ int x = 16;
+ int y = 32;
+
+
+ new ControlLiquidTank(this, x, y).setTankID(0);
+
+ x += 26;
+
+ new ControlSlotArray(this, x, y + 3, 1, 3).create(Incubator.slotQueue);
+
+ x += 20;
+
+ new ControlIconDisplay(this, x, y + 3 + 10, GUIIcon.ArrowRight.getIcon());
+
+ x += 18;
+
+ new ControlMachineProgress(this, x, y + 6, ProgressBase, Progress, Position.Left);
+
+ new ControlSlot(this, x + 11, y + 3 + 10).assign(3);
+
+ x += 40;
+
+ new ControlIconDisplay(this, x, y + 3 + 10, GUIIcon.ArrowRight.getIcon());
+
+ x += 18;
+
+ new ControlSlotArray(this, x, y + 3, 1, 3).create(Incubator.slotOutput);
+
+ x += 26;
+
+ new ControlLiquidTank(this, x, y).setTankID(1);
+
+ x += 34;
+
+ new ControlEnergyBar(this, x, y + 3, 16, 54, Position.Bottom);
+
+ new ControlErrorState(this, 91.0F, 82.0F);
+
+ new ControlPlayerInventory(this);
+ }
+
+ public String getTitle()
+ {
+ return "Incubator";
+ }
+
+ protected AbstractMod getMod()
+ {
+ return Genetics.instance;
+ }
+
+ protected String getName()
+ {
+ return "Incubator";
+ }
+}
diff --git a/src/Java/binnie/craftgui/genetics/machine/WindowInoculator.java b/src/Java/binnie/craftgui/genetics/machine/WindowInoculator.java
new file mode 100644
index 0000000000..894170efd0
--- /dev/null
+++ b/src/Java/binnie/craftgui/genetics/machine/WindowInoculator.java
@@ -0,0 +1,107 @@
+package binnie.craftgui.genetics.machine;
+
+import binnie.core.AbstractMod;
+import binnie.craftgui.core.IWidget;
+import binnie.craftgui.core.geometry.CraftGUIUtil;
+import binnie.craftgui.core.geometry.Position;
+import binnie.craftgui.core.geometry.TextJustification;
+import binnie.craftgui.minecraft.GUIIcon;
+import binnie.craftgui.minecraft.Window;
+import binnie.craftgui.minecraft.control.ControlEnergyBar;
+import binnie.craftgui.minecraft.control.ControlErrorState;
+import binnie.craftgui.minecraft.control.ControlIconDisplay;
+import binnie.craftgui.minecraft.control.ControlLiquidTank;
+import binnie.craftgui.minecraft.control.ControlMachineProgress;
+import binnie.craftgui.minecraft.control.ControlPlayerInventory;
+import binnie.craftgui.minecraft.control.ControlSlot;
+import binnie.craftgui.minecraft.control.ControlSlotArray;
+import binnie.craftgui.resource.Texture;
+import binnie.craftgui.resource.minecraft.StandardTexture;
+import binnie.genetics.Genetics;
+import binnie.genetics.core.GeneticsTexture;
+import binnie.genetics.machine.Inoculator;
+import cpw.mods.fml.relauncher.Side;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.inventory.IInventory;
+
+public class WindowInoculator
+ extends WindowMachine
+{
+ public static Window create(EntityPlayer player, IInventory inventory, Side side)
+ {
+ return new WindowInoculator(player, inventory, side);
+ }
+
+ public WindowInoculator(EntityPlayer player, IInventory inventory, Side side)
+ {
+ super(266, 240, player, inventory, side);
+ }
+
+ static Texture ProgressBase = new StandardTexture(0, 72, 142, 72, GeneticsTexture.GUIProcess2.getTexture());
+ static Texture Progress = new StandardTexture(0, 0, 142, 72, GeneticsTexture.GUIProcess2.getTexture());
+
+ public void initialiseClient()
+ {
+ setTitle("Inoculator");
+
+ int x = 16;
+ int y = 32;
+
+
+ new ControlLiquidTank(this, x, y + 18 + 16).setTankID(0);
+
+
+ CraftGUIUtil.horizontalGrid(x, y, new IWidget[] { new ControlSlotArray(this, 0, 0, 2, 1).create(Inoculator.slotSerumReserve), new ControlIconDisplay(this, 0.0F, 0.0F, GUIIcon.ArrowRight.getIcon()), new ControlSlot(this, 0.0F, 0.0F).assign(0), new ControlIconDisplay(this, 0.0F, 0.0F, GUIIcon.ArrowRight.getIcon()), new ControlSlotArray(this, 0, 0, 2, 1).create(Inoculator.slotSerumExpended) });
+
+
+
+
+
+
+
+
+ x += 18;
+
+ new ControlMachineProgress(this, x, y + 24, ProgressBase, Progress, Position.Left);
+
+
+ new ControlEnergyBar(this, 91, 118, 60, 16, Position.Left);
+ new ControlErrorState(this, 161.0F, 118.0F);
+
+
+ x += 142;
+
+
+ CraftGUIUtil.verticalGrid(x, y, TextJustification.MiddleLeft, 8.0F, new IWidget[] { new ControlSlotArray(this, x, y, 4, 1).create(Inoculator.slotReserve), new ControlSlot(this, x, y + 18 + 8).assign(9), new ControlSlotArray(this, x, y + 18 + 8 + 18 + 8, 4, 1).create(Inoculator.slotFinished) });
+
+
+
+
+
+ new ControlIconDisplay(this, x + 18, y + 18 + 2, GUIIcon.ArrowUpLeft.getIcon());
+ new ControlIconDisplay(this, x + 18, y + 18 + 18, GUIIcon.ArrowLeftDown.getIcon());
+
+
+
+
+
+
+
+ new ControlPlayerInventory(this);
+ }
+
+ public String getTitle()
+ {
+ return "Inoculator";
+ }
+
+ protected AbstractMod getMod()
+ {
+ return Genetics.instance;
+ }
+
+ protected String getName()
+ {
+ return "Inoculator";
+ }
+}
diff --git a/src/Java/binnie/craftgui/genetics/machine/WindowIsolator.java b/src/Java/binnie/craftgui/genetics/machine/WindowIsolator.java
new file mode 100644
index 0000000000..6d494250ee
--- /dev/null
+++ b/src/Java/binnie/craftgui/genetics/machine/WindowIsolator.java
@@ -0,0 +1,116 @@
+package binnie.craftgui.genetics.machine;
+
+import binnie.core.AbstractMod;
+import binnie.craftgui.core.geometry.Position;
+import binnie.craftgui.minecraft.GUIIcon;
+import binnie.craftgui.minecraft.Window;
+import binnie.craftgui.minecraft.control.ControlEnergyBar;
+import binnie.craftgui.minecraft.control.ControlErrorState;
+import binnie.craftgui.minecraft.control.ControlIconDisplay;
+import binnie.craftgui.minecraft.control.ControlLiquidTank;
+import binnie.craftgui.minecraft.control.ControlPlayerInventory;
+import binnie.craftgui.minecraft.control.ControlProgress;
+import binnie.craftgui.minecraft.control.ControlSlot;
+import binnie.craftgui.minecraft.control.ControlSlotArray;
+import binnie.craftgui.minecraft.control.ControlSlotCharge;
+import binnie.craftgui.resource.Texture;
+import binnie.craftgui.resource.minecraft.StandardTexture;
+import binnie.extrabees.core.ExtraBeeTexture;
+import binnie.genetics.Genetics;
+import binnie.genetics.machine.Isolator;
+import cpw.mods.fml.relauncher.Side;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.inventory.IInventory;
+
+public class WindowIsolator
+ extends WindowMachine
+{
+ public static Window create(EntityPlayer player, IInventory inventory, Side side)
+ {
+ return new WindowIsolator(player, inventory, side);
+ }
+
+ static Texture ProgressBase = new StandardTexture(0, 218, 142, 17, ExtraBeeTexture.GUIProgress.getTexture());
+ static Texture Progress = new StandardTexture(0, 201, 142, 17, ExtraBeeTexture.GUIProgress.getTexture());
+
+ public WindowIsolator(EntityPlayer player, IInventory inventory, Side side)
+ {
+ super(330, 208, player, inventory, side);
+ }
+
+ public void initialiseClient()
+ {
+ setTitle("Isolator");
+
+ int x = 16;
+ int y = 32;
+
+ new ControlLiquidTank(this, x, y).setTankID(0);
+
+ x += 26;
+
+ new ControlSlotArray(this, x, y + 3, 1, 3).create(Isolator.slotReserve);
+
+ x += 20;
+
+ new ControlIconDisplay(this, x, y + 3 + 1, GUIIcon.ArrowRight.getIcon());
+
+ x += 18;
+
+ new ControlSlot(this, x, y + 3).assign(5);
+
+ new ControlSlot(this, x, y + 36 + 3).assign(0);
+ new ControlSlotCharge(this, x + 18 + 2, y + 36 + 3, 0).setColour(15722671);
+
+
+
+ x += 18;
+
+ new ControlProgress(this, x, y + 3, ProgressBase, Progress, Position.Left);
+
+ x += 142;
+
+ new ControlSlot(this, x, y + 3).assign(6);
+
+ new ControlSlot(this, x, y + 3 + 36).assign(1);
+
+ new ControlIconDisplay(this, x + 1, y + 3 + 19, GUIIcon.ArrowUp.getIcon());
+
+ x += 20;
+
+
+ new ControlIconDisplay(this, x, y + 3 + 1, GUIIcon.ArrowRight.getIcon());
+
+ x += 18;
+
+ new ControlSlotArray(this, x, y + 3, 2, 3).create(Isolator.slotFinished);
+
+
+ new ControlEnergyBar(this, 260, 130, 16, 60, Position.Bottom);
+
+
+
+
+
+
+
+ new ControlErrorState(this, 153.0F, 81.0F);
+
+ new ControlPlayerInventory(this);
+ }
+
+ public String getTitle()
+ {
+ return "Incubator";
+ }
+
+ protected AbstractMod getMod()
+ {
+ return Genetics.instance;
+ }
+
+ protected String getName()
+ {
+ return "Isolator";
+ }
+}
diff --git a/src/Java/binnie/craftgui/genetics/machine/WindowMachine.java b/src/Java/binnie/craftgui/genetics/machine/WindowMachine.java
new file mode 100644
index 0000000000..6b357a36d7
--- /dev/null
+++ b/src/Java/binnie/craftgui/genetics/machine/WindowMachine.java
@@ -0,0 +1,22 @@
+package binnie.craftgui.genetics.machine;
+
+import binnie.craftgui.minecraft.Window;
+import cpw.mods.fml.relauncher.Side;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.inventory.IInventory;
+
+public abstract class WindowMachine
+ extends Window
+{
+ public WindowMachine(int width, int height, EntityPlayer player, IInventory inventory, Side side)
+ {
+ super(width, height, player, inventory, side);
+ }
+
+ public abstract String getTitle();
+
+ public void initialiseClient()
+ {
+ setTitle(getTitle());
+ }
+}
diff --git a/src/Java/binnie/craftgui/genetics/machine/WindowPolymeriser.java b/src/Java/binnie/craftgui/genetics/machine/WindowPolymeriser.java
new file mode 100644
index 0000000000..edf9e371f7
--- /dev/null
+++ b/src/Java/binnie/craftgui/genetics/machine/WindowPolymeriser.java
@@ -0,0 +1,101 @@
+package binnie.craftgui.genetics.machine;
+
+import binnie.core.AbstractMod;
+import binnie.craftgui.core.geometry.Position;
+import binnie.craftgui.minecraft.GUIIcon;
+import binnie.craftgui.minecraft.Window;
+import binnie.craftgui.minecraft.control.ControlEnergyBar;
+import binnie.craftgui.minecraft.control.ControlErrorState;
+import binnie.craftgui.minecraft.control.ControlIconDisplay;
+import binnie.craftgui.minecraft.control.ControlLiquidTank;
+import binnie.craftgui.minecraft.control.ControlMachineProgress;
+import binnie.craftgui.minecraft.control.ControlPlayerInventory;
+import binnie.craftgui.minecraft.control.ControlSlot;
+import binnie.craftgui.minecraft.control.ControlSlotArray;
+import binnie.craftgui.minecraft.control.ControlSlotCharge;
+import binnie.craftgui.resource.Texture;
+import binnie.craftgui.resource.minecraft.StandardTexture;
+import binnie.genetics.Genetics;
+import binnie.genetics.core.GeneticsTexture;
+import binnie.genetics.machine.Polymeriser;
+import cpw.mods.fml.relauncher.Side;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.inventory.IInventory;
+
+public class WindowPolymeriser
+ extends WindowMachine
+{
+ public static Window create(EntityPlayer player, IInventory inventory, Side side)
+ {
+ return new WindowPolymeriser(player, inventory, side);
+ }
+
+ public WindowPolymeriser(EntityPlayer player, IInventory inventory, Side side)
+ {
+ super(278, 212, player, inventory, side);
+ }
+
+ static Texture ProgressBase = new StandardTexture(76, 170, 160, 79, GeneticsTexture.GUIProcess.getTexture());
+ static Texture Progress = new StandardTexture(76, 91, 160, 79, GeneticsTexture.GUIProcess.getTexture());
+
+ public void initialiseClient()
+ {
+ super.initialiseClient();
+
+ int x = 16;
+ int y = 38;
+
+
+
+
+
+ new ControlSlotArray(this, x, y, 1, 4).create(Polymeriser.slotSerumReserve);
+ new ControlIconDisplay(this, x + 18, y + 1, GUIIcon.ArrowRight.getIcon());
+
+ x += 34;
+
+ new ControlMachineProgress(this, x + 18, y - 6, ProgressBase, Progress, Position.Left);
+
+
+ new ControlSlot(this, x, y).assign(0);
+
+
+ new ControlLiquidTank(this, x, y + 18 + 16, true).setTankID(0);
+
+ new ControlLiquidTank(this, x, y + 18 + 16 + 18 + 8, true).setTankID(1);
+
+ new ControlEnergyBar(this, x + 120, 96, 64, 16, Position.Left);
+
+ x += 40;
+
+ new ControlSlot(this, x + 30, y + 18 + 8).assign(1);
+ new ControlSlotCharge(this, x + 30 + 20, y + 18 + 8, 1).setColour(16766976);
+
+
+
+
+ x += 138;
+
+ new ControlSlotArray(this, x, y + 9, 2, 2).create(Polymeriser.slotSerumFinished);
+
+ ControlErrorState errorState = new ControlErrorState(this, 244.0F, 97.0F);
+
+
+ new ControlPlayerInventory(this);
+ }
+
+ public String getTitle()
+ {
+ return "Polymeriser";
+ }
+
+ protected AbstractMod getMod()
+ {
+ return Genetics.instance;
+ }
+
+ protected String getName()
+ {
+ return "Polymeriser";
+ }
+}
diff --git a/src/Java/binnie/craftgui/genetics/machine/WindowSequencer.java b/src/Java/binnie/craftgui/genetics/machine/WindowSequencer.java
new file mode 100644
index 0000000000..9e2f580b53
--- /dev/null
+++ b/src/Java/binnie/craftgui/genetics/machine/WindowSequencer.java
@@ -0,0 +1,116 @@
+package binnie.craftgui.genetics.machine;
+
+import binnie.core.AbstractMod;
+import binnie.craftgui.controls.ControlText;
+import binnie.craftgui.core.IWidget;
+import binnie.craftgui.core.geometry.CraftGUIUtil;
+import binnie.craftgui.core.geometry.IArea;
+import binnie.craftgui.core.geometry.Position;
+import binnie.craftgui.core.geometry.TextJustification;
+import binnie.craftgui.minecraft.GUIIcon;
+import binnie.craftgui.minecraft.Window;
+import binnie.craftgui.minecraft.control.ControlEnergyBar;
+import binnie.craftgui.minecraft.control.ControlErrorState;
+import binnie.craftgui.minecraft.control.ControlIconDisplay;
+import binnie.craftgui.minecraft.control.ControlPlayerInventory;
+import binnie.craftgui.minecraft.control.ControlSlot;
+import binnie.craftgui.minecraft.control.ControlSlotArray;
+import binnie.craftgui.minecraft.control.ControlSlotCharge;
+import binnie.craftgui.resource.Texture;
+import binnie.craftgui.resource.minecraft.StandardTexture;
+import binnie.extrabees.core.ExtraBeeTexture;
+import binnie.genetics.Genetics;
+import binnie.genetics.machine.Sequencer;
+import cpw.mods.fml.relauncher.Side;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.inventory.IInventory;
+import net.minecraft.nbt.NBTTagCompound;
+
+public class WindowSequencer
+ extends WindowMachine
+{
+ public static Window create(EntityPlayer player, IInventory inventory, Side side)
+ {
+ return new WindowSequencer(player, inventory, side);
+ }
+
+ public WindowSequencer(EntityPlayer player, IInventory inventory, Side side)
+ {
+ super(226, 224, player, inventory, side);
+ }
+
+ static Texture ProgressBase = new StandardTexture(64, 114, 98, 9, ExtraBeeTexture.GUIProgress.getTexture());
+ static Texture Progress = new StandardTexture(64, 123, 98, 9, ExtraBeeTexture.GUIProgress.getTexture());
+ ControlText slotText;
+
+ public void recieveGuiNBT(Side side, EntityPlayer player, String name, NBTTagCompound action)
+ {
+ if ((side == Side.CLIENT) && (name.equals("username"))) {
+ this.slotText.setValue("§8Genes will be sequenced by " + action.getString("username"));
+ }
+ super.recieveGuiNBT(side, player, name, action);
+ }
+
+ public void initialiseClient()
+ {
+ setTitle("Sequencer");
+
+
+ int x = 16;
+ int y = 32;
+
+
+
+
+ CraftGUIUtil.horizontalGrid(x, y, TextJustification.MiddleCenter, 2.0F, new IWidget[] { new ControlSlotArray(this, 0, 0, 2, 2).create(Sequencer.slotReserve), new ControlIconDisplay(this, 0.0F, 0.0F, GUIIcon.ArrowRight.getIcon()), new ControlSequencerProgress(this, 0, 0), new ControlIconDisplay(this, 0.0F, 0.0F, GUIIcon.ArrowRight.getIcon()), new ControlSlot(this, 0.0F, 0.0F).assign(6) });
+
+
+
+
+
+
+
+
+ ControlSlot slotTarget = new ControlSlot(this, x + 96, y + 16);
+ slotTarget.assign(5);
+
+ x = 34;
+ y = 92;
+
+ this.slotText = new ControlText(this, new IArea(0.0F, y, w(), 12.0F), "§8Userless. Will not save sequences", TextJustification.MiddleCenter);
+
+
+
+ y += 20;
+
+ ControlSlot slotDye = new ControlSlot(this, x, y);
+ slotDye.assign(0);
+ x += 20;
+ new ControlSlotCharge(this, x, y, 0).setColour(16750848);
+
+ x += 32;
+ new ControlEnergyBar(this, x, y, 60, 16, Position.Left);
+
+ x += 92;
+ ControlErrorState errorState = new ControlErrorState(this, x, y + 1);
+
+
+
+ new ControlPlayerInventory(this);
+ }
+
+ public String getTitle()
+ {
+ return "Incubator";
+ }
+
+ protected AbstractMod getMod()
+ {
+ return Genetics.instance;
+ }
+
+ protected String getName()
+ {
+ return "Sequencer";
+ }
+}
diff --git a/src/Java/binnie/craftgui/genetics/machine/WindowSplicer.java b/src/Java/binnie/craftgui/genetics/machine/WindowSplicer.java
new file mode 100644
index 0000000000..23d7cd8015
--- /dev/null
+++ b/src/Java/binnie/craftgui/genetics/machine/WindowSplicer.java
@@ -0,0 +1,93 @@
+package binnie.craftgui.genetics.machine;
+
+import binnie.core.AbstractMod;
+import binnie.craftgui.core.IWidget;
+import binnie.craftgui.core.geometry.CraftGUIUtil;
+import binnie.craftgui.core.geometry.Position;
+import binnie.craftgui.core.geometry.TextJustification;
+import binnie.craftgui.minecraft.GUIIcon;
+import binnie.craftgui.minecraft.Window;
+import binnie.craftgui.minecraft.control.ControlEnergyBar;
+import binnie.craftgui.minecraft.control.ControlErrorState;
+import binnie.craftgui.minecraft.control.ControlIconDisplay;
+import binnie.craftgui.minecraft.control.ControlPlayerInventory;
+import binnie.craftgui.minecraft.control.ControlSlot;
+import binnie.craftgui.minecraft.control.ControlSlotArray;
+import binnie.craftgui.resource.Texture;
+import binnie.craftgui.resource.minecraft.StandardTexture;
+import binnie.genetics.Genetics;
+import binnie.genetics.core.GeneticsTexture;
+import binnie.genetics.machine.Inoculator;
+import binnie.genetics.machine.Splicer;
+import cpw.mods.fml.relauncher.Side;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.inventory.IInventory;
+
+public class WindowSplicer
+ extends WindowMachine
+{
+ public static Window create(EntityPlayer player, IInventory inventory, Side side)
+ {
+ return new WindowSplicer(player, inventory, side);
+ }
+
+ public WindowSplicer(EntityPlayer player, IInventory inventory, Side side)
+ {
+ super(280, 240, player, inventory, side);
+ }
+
+ static Texture ProgressBase = new StandardTexture(0, 72, 142, 72, GeneticsTexture.GUIProcess2.getTexture());
+ static Texture Progress = new StandardTexture(0, 0, 142, 72, GeneticsTexture.GUIProcess2.getTexture());
+
+ public void initialiseClient()
+ {
+ setTitle("Splicer");
+
+ int x = 16;
+
+
+
+
+ new ControlSplicerProgress(this, 84.0F, 32.0F, w() - 172.0F, 102.0F);
+
+ CraftGUIUtil.horizontalGrid(x, 62.0F, new IWidget[] { new ControlSlotArray(this, 0, 0, 2, 1).create(Splicer.slotSerumReserve), new ControlIconDisplay(this, 0.0F, 0.0F, GUIIcon.ArrowRight.getIcon()), new ControlSlot(this, 0.0F, 0.0F).assign(0) });
+
+
+
+
+ new ControlSlotArray(this, x + 12, 84, 2, 1).create(Splicer.slotSerumExpended);
+
+ new ControlIconDisplay(this, x + 12 + 36 + 4, 86.0F, GUIIcon.ArrowUpLeft.getIcon());
+
+
+
+ new ControlEnergyBar(this, 196, 64, 60, 16, Position.Left);
+ new ControlErrorState(this, 218.0F, 86.0F);
+
+ x += 142;
+
+ CraftGUIUtil.verticalGrid((w() - 72.0F) / 2.0F, 32.0F, TextJustification.MiddleCenter, 4.0F, new IWidget[] { new ControlSlotArray(this, 0, 0, 4, 1).create(Inoculator.slotReserve), new ControlIconDisplay(this, 0.0F, 0.0F, GUIIcon.ArrowDown.getIcon()), new ControlSlot(this, 0.0F, 0.0F).assign(9), new ControlIconDisplay(this, 0.0F, 0.0F, GUIIcon.ArrowDown.getIcon()), new ControlSlotArray(this, 0, 0, 4, 1).create(Inoculator.slotFinished) });
+
+
+
+
+
+
+ new ControlPlayerInventory(this);
+ }
+
+ public String getTitle()
+ {
+ return "Inoculator";
+ }
+
+ protected AbstractMod getMod()
+ {
+ return Genetics.instance;
+ }
+
+ protected String getName()
+ {
+ return "Inoculator";
+ }
+}
diff --git a/src/Java/binnie/craftgui/minecraft/ContainerCraftGUI.java b/src/Java/binnie/craftgui/minecraft/ContainerCraftGUI.java
new file mode 100644
index 0000000000..9b6a2809d9
--- /dev/null
+++ b/src/Java/binnie/craftgui/minecraft/ContainerCraftGUI.java
@@ -0,0 +1,549 @@
+package binnie.craftgui.minecraft;
+
+import binnie.core.BinnieCore;
+import binnie.core.machines.IMachine;
+import binnie.core.machines.Machine;
+import binnie.core.machines.network.INetwork.RecieveGuiNBT;
+import binnie.core.machines.network.INetwork.SendGuiNBT;
+import binnie.core.machines.power.ErrorState;
+import binnie.core.machines.power.IErrorStateSource;
+import binnie.core.machines.power.IPoweredMachine;
+import binnie.core.machines.power.IProcess;
+import binnie.core.machines.power.ITankMachine;
+import binnie.core.machines.power.PowerInfo;
+import binnie.core.machines.power.ProcessInfo;
+import binnie.core.machines.power.TankInfo;
+import binnie.core.machines.transfer.TransferRequest;
+import binnie.core.machines.transfer.TransferRequest.TransferSlot;
+import binnie.core.network.packet.MessageContainerUpdate;
+import binnie.core.proxy.BinnieProxy;
+import binnie.craftgui.minecraft.control.ControlSlot;
+import binnie.craftgui.minecraft.control.EnumHighlighting;
+import com.mojang.authlib.GameProfile;
+import cpw.mods.fml.relauncher.Side;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.entity.player.EntityPlayerMP;
+import net.minecraft.entity.player.InventoryPlayer;
+import net.minecraft.inventory.Container;
+import net.minecraft.inventory.IInventory;
+import net.minecraft.inventory.Slot;
+import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.NBTTagCompound;
+
+public class ContainerCraftGUI
+ extends Container
+{
+ private Window window;
+
+ public ContainerCraftGUI(Window window)
+ {
+ this.window = window;
+ IMachine machine = Machine.getMachine(window.getInventory());
+ if (getSide() == Side.SERVER)
+ {
+ this.inventoryItemStacks = new ListMap();
+ this.inventorySlots = new ListMap();
+ if (machine != null)
+ {
+ GameProfile user = machine.getOwner();
+ if (user != null)
+ {
+ NBTTagCompound nbt = new NBTTagCompound();
+ nbt.setString("username", user.getName());
+ sendNBTToClient("username", nbt);
+ }
+ }
+ }
+ }
+
+ protected Slot addSlotToContainer(Slot slot)
+ {
+ return super.addSlotToContainer(slot);
+ }
+
+ private Side getSide()
+ {
+ return this.window.isServer() ? Side.SERVER : Side.CLIENT;
+ }
+
+ public Slot getSlot(int par1)
+ {
+ if ((par1 < 0) || (par1 >= this.inventorySlots.size())) {
+ return null;
+ }
+ return (Slot)this.inventorySlots.get(par1);
+ }
+
+ public void putStackInSlot(int par1, ItemStack par2ItemStack)
+ {
+ if (getSlot(par1) != null) {
+ getSlot(par1).putStack(par2ItemStack);
+ }
+ }
+
+ public void putStacksInSlots(ItemStack[] par1ArrayOfItemStack)
+ {
+ for (int i = 0; i < par1ArrayOfItemStack.length; i++) {
+ if (getSlot(i) != null) {
+ getSlot(i).putStack(par1ArrayOfItemStack[i]);
+ }
+ }
+ }
+
+ public void onContainerClosed(EntityPlayer par1EntityPlayer)
+ {
+ super.onContainerClosed(par1EntityPlayer);
+
+ WindowInventory inventory = this.window.getWindowInventory();
+ for (int i = 0; i < inventory.getSizeInventory(); i++) {
+ if (inventory.dispenseOnClose(i))
+ {
+ ItemStack stack = inventory.getStackInSlot(i);
+ if (stack != null)
+ {
+ stack = new TransferRequest(stack, par1EntityPlayer.inventory).transfer(true);
+ if (stack != null) {
+ par1EntityPlayer.dropPlayerItemWithRandomChoice(stack, false);
+ }
+ }
+ }
+ }
+ }
+
+ public ItemStack slotClick(int slotNum, int mouseButton, int modifier, EntityPlayer player)
+ {
+ Slot slot = getSlot(slotNum);
+ if (((slot instanceof CustomSlot)) && (((CustomSlot)slot).handleClick()))
+ {
+ ((CustomSlot)slot).onSlotClick(this, mouseButton, modifier, player);
+ return player.inventory.getItemStack();
+ }
+ ItemStack stack = super.slotClick(slotNum, mouseButton, modifier, player);
+ return stack;
+ }
+
+ public void sendNBTToClient(String key, NBTTagCompound nbt)
+ {
+ this.syncedNBT.put(key, nbt);
+ }
+
+ public boolean canInteractWith(EntityPlayer var1)
+ {
+ return true;
+ }
+
+ public final ItemStack transferStackInSlot(EntityPlayer player, int slotID)
+ {
+ return shiftClick(player, slotID);
+ }
+
+ private ItemStack shiftClick(EntityPlayer player, int slotnumber)
+ {
+ TransferRequest request = getShiftClickRequest(player, slotnumber);
+ if (request == null) {
+ return null;
+ }
+ ItemStack itemstack = request.transfer(true);
+ Slot shiftClickedSlot = (Slot)this.inventorySlots.get(slotnumber);
+
+ shiftClickedSlot.putStack(itemstack);
+ shiftClickedSlot.onSlotChanged();
+
+ return null;
+ }
+
+ private TransferRequest getShiftClickRequest(EntityPlayer player, int slotnumber)
+ {
+ if (slotnumber < 0) {
+ return null;
+ }
+ Slot shiftClickedSlot = (Slot)this.inventorySlots.get(slotnumber);
+
+ ItemStack itemstack = null;
+ if (shiftClickedSlot.getHasStack()) {
+ itemstack = shiftClickedSlot.getStack().copy();
+ }
+ IInventory playerInventory = player.inventory;
+ IInventory containerInventory = this.window.getInventory();
+ IInventory windowInventory = this.window.getWindowInventory();
+
+ IInventory fromPlayer = containerInventory == null ? windowInventory : containerInventory;
+
+ int[] target = new int[36];
+ for (int i = 0; i < 36; i++) {
+ target[i] = i;
+ }
+ TransferRequest request;
+ TransferRequest request;
+ if (shiftClickedSlot.inventory == playerInventory) {
+ request = new TransferRequest(itemstack, fromPlayer).setOrigin(shiftClickedSlot.inventory);
+ } else {
+ request = new TransferRequest(itemstack, playerInventory).setOrigin(shiftClickedSlot.inventory).setTargetSlots(target);
+ }
+ if ((this.window instanceof IWindowAffectsShiftClick)) {
+ ((IWindowAffectsShiftClick)this.window).alterRequest(request);
+ }
+ return request;
+ }
+
+ public final ItemStack tankClick(EntityPlayer player, int slotID)
+ {
+ if (player.inventory.getItemStack() == null) {
+ return null;
+ }
+ ItemStack heldItem = player.inventory.getItemStack().copy();
+
+ heldItem = new TransferRequest(heldItem, this.window.getInventory()).setOrigin(player.inventory).setTargetSlots(new int[0]).setTargetTanks(new int[] { slotID }).transfer(true);
+
+
+ player.inventory.setItemStack(heldItem);
+ if ((player instanceof EntityPlayerMP)) {
+ ((EntityPlayerMP)player).updateHeldItem();
+ }
+ return heldItem;
+ }
+
+ public boolean handleNBT(Side side, EntityPlayer player, String name, NBTTagCompound action)
+ {
+ if (side == Side.SERVER)
+ {
+ if (name.equals("tank-click")) {
+ tankClick(player, action.getByte("id"));
+ }
+ if (name.equals("slot-reg"))
+ {
+ int type = action.getByte("t");
+ int index = action.getShort("i");
+ int slotNumber = action.getShort("n");
+ getOrCreateSlot(InventoryType.values()[(type % 4)], index, slotNumber);
+ }
+ }
+ if (name.contains("tank-update")) {
+ onTankUpdate(action);
+ } else if (name.equals("power-update")) {
+ onPowerUpdate(action);
+ } else if (name.equals("process-update")) {
+ onProcessUpdate(action);
+ } else if (name.equals("error-update")) {
+ onErrorUpdate(action);
+ } else if (name.equals("mouse-over-slot")) {
+ onMouseOverSlot(player, action);
+ } else if (name.equals("shift-click-info")) {
+ onRecieveShiftClickHighlights(player, action);
+ }
+ return false;
+ }
+
+ private Map<String, NBTTagCompound> syncedNBT = new HashMap();
+ private Map<String, NBTTagCompound> sentNBT = new HashMap();
+
+ public void detectAndSendChanges()
+ {
+ super.detectAndSendChanges();
+
+
+
+
+ ITankMachine tanks = (ITankMachine)Machine.getInterface(ITankMachine.class, this.window.getInventory());
+ IPoweredMachine powered = (IPoweredMachine)Machine.getInterface(IPoweredMachine.class, this.window.getInventory());
+ IErrorStateSource error = (IErrorStateSource)Machine.getInterface(IErrorStateSource.class, this.window.getInventory());
+ IProcess process = (IProcess)Machine.getInterface(IProcess.class, this.window.getInventory());
+ if ((tanks != null) && (this.window.isServer())) {
+ for (int i = 0; i < tanks.getTankInfos().length; i++)
+ {
+ TankInfo tank = tanks.getTankInfos()[i];
+ if (!getTankInfo(i).equals(tank))
+ {
+ this.syncedNBT.put("tank-update-" + i, createTankNBT(i, tank));
+
+ this.syncedTanks.put(Integer.valueOf(i), tank);
+ }
+ }
+ }
+ if ((powered != null) && (this.window.isServer())) {
+ this.syncedNBT.put("power-update", createPowerNBT(powered.getPowerInfo()));
+ }
+ if ((process != null) && (this.window.isServer())) {
+ this.syncedNBT.put("process-update", createProcessNBT(process.getInfo()));
+ }
+ if ((error != null) && (this.window.isServer())) {
+ this.syncedNBT.put("error-update", createErrorNBT(error));
+ }
+ INetwork.SendGuiNBT machineSync = (INetwork.SendGuiNBT)Machine.getInterface(INetwork.SendGuiNBT.class, this.window.getInventory());
+ if (machineSync != null) {
+ machineSync.sendGuiNBT(this.syncedNBT);
+ }
+ Map<String, NBTTagCompound> sentThisTime = new HashMap();
+ for (Map.Entry<String, NBTTagCompound> nbt : this.syncedNBT.entrySet())
+ {
+ ((NBTTagCompound)nbt.getValue()).setString("type", (String)nbt.getKey());
+
+
+
+
+
+
+ boolean shouldSend = true;
+ NBTTagCompound lastSent = (NBTTagCompound)this.sentNBT.get(nbt.getKey());
+ if (lastSent != null) {
+ shouldSend = !lastSent.equals(nbt.getValue());
+ }
+ if (shouldSend)
+ {
+ for (int j = 0; j < this.crafters.size(); j++) {
+ if ((this.crafters.get(j) instanceof EntityPlayerMP))
+ {
+ EntityPlayerMP player = (EntityPlayerMP)this.crafters.get(j);
+ BinnieCore.proxy.sendToPlayer(new MessageContainerUpdate((NBTTagCompound)nbt.getValue()), player);
+ }
+ }
+ sentThisTime.put(nbt.getKey(), nbt.getValue());
+ }
+ }
+ this.sentNBT.putAll(sentThisTime);
+
+ this.syncedNBT.clear();
+ }
+
+ private NBTTagCompound createErrorNBT(IErrorStateSource error)
+ {
+ NBTTagCompound nbt = new NBTTagCompound();
+ ErrorState state = null;
+ if (error.canWork() != null)
+ {
+ nbt.setByte("type", (byte)0);
+ state = error.canWork();
+ }
+ else if (error.canProgress() != null)
+ {
+ nbt.setByte("type", (byte)1);
+ state = error.canProgress();
+ }
+ if (state != null) {
+ state.writeToNBT(nbt);
+ }
+ return nbt;
+ }
+
+ public NBTTagCompound createPowerNBT(PowerInfo powerInfo)
+ {
+ NBTTagCompound nbt = new NBTTagCompound();
+ powerInfo.writeToNBT(nbt);
+ return nbt;
+ }
+
+ public NBTTagCompound createProcessNBT(ProcessInfo powerInfo)
+ {
+ NBTTagCompound nbt = new NBTTagCompound();
+ powerInfo.writeToNBT(nbt);
+ return nbt;
+ }
+
+ public NBTTagCompound createTankNBT(int tank, TankInfo tankInfo)
+ {
+ NBTTagCompound nbt = new NBTTagCompound();
+ tankInfo.writeToNBT(nbt);
+ nbt.setByte("tank", (byte)tank);
+ return nbt;
+ }
+
+ private Map<Integer, TankInfo> syncedTanks = new HashMap();
+ private PowerInfo syncedPower = new PowerInfo();
+ private ProcessInfo syncedProcess = new ProcessInfo();
+ private int errorType = 0;
+ private ErrorState error = null;
+
+ public void onTankUpdate(NBTTagCompound nbt)
+ {
+ int tankID = nbt.getByte("tank");
+ TankInfo tank = new TankInfo();
+ tank.readFromNBT(nbt);
+ this.syncedTanks.put(Integer.valueOf(tankID), tank);
+ }
+
+ public void onProcessUpdate(NBTTagCompound nbt)
+ {
+ this.syncedProcess = new ProcessInfo();
+ this.syncedProcess.readFromNBT(nbt);
+ }
+
+ public void onPowerUpdate(NBTTagCompound nbt)
+ {
+ this.syncedPower = new PowerInfo();
+ this.syncedPower.readFromNBT(nbt);
+ }
+
+ public PowerInfo getPowerInfo()
+ {
+ return this.syncedPower;
+ }
+
+ public ProcessInfo getProcessInfo()
+ {
+ return this.syncedProcess;
+ }
+
+ public TankInfo getTankInfo(int tank)
+ {
+ return this.syncedTanks.containsKey(Integer.valueOf(tank)) ? (TankInfo)this.syncedTanks.get(Integer.valueOf(tank)) : new TankInfo();
+ }
+
+ public void onErrorUpdate(NBTTagCompound nbt)
+ {
+ this.errorType = nbt.getByte("type");
+ if (nbt.hasKey("name"))
+ {
+ this.error = new ErrorState("", "");
+ this.error.readFromNBT(nbt);
+ }
+ else
+ {
+ this.error = null;
+ }
+ }
+
+ public ErrorState getErrorState()
+ {
+ return this.error;
+ }
+
+ public int getErrorType()
+ {
+ return this.errorType;
+ }
+
+ public CustomSlot[] getCustomSlots()
+ {
+ List<CustomSlot> slots = new ArrayList();
+ for (Object object : this.inventorySlots) {
+ if ((object instanceof CustomSlot)) {
+ slots.add((CustomSlot)object);
+ }
+ }
+ return (CustomSlot[])slots.toArray(new CustomSlot[0]);
+ }
+
+ private int mousedOverSlotNumber = -1;
+
+ public void setMouseOverSlot(Slot slot)
+ {
+ if (slot.slotNumber != this.mousedOverSlotNumber)
+ {
+ this.mousedOverSlotNumber = slot.slotNumber;
+ ((List)ControlSlot.highlighting.get(EnumHighlighting.ShiftClick)).clear();
+ NBTTagCompound nbt = new NBTTagCompound();
+ nbt.setShort("slot", (short)slot.slotNumber);
+ this.window.sendClientAction("mouse-over-slot", nbt);
+ }
+ }
+
+ private void onMouseOverSlot(EntityPlayer player, NBTTagCompound data)
+ {
+ int slotnumber = data.getShort("slot");
+ TransferRequest request = getShiftClickRequest(player, slotnumber);
+ if (request == null) {
+ return;
+ }
+ request.transfer(false);
+ NBTTagCompound nbt = new NBTTagCompound();
+
+ List<Integer> slots = new ArrayList();
+ for (TransferRequest.TransferSlot tslot : request.getInsertedSlots())
+ {
+ Slot slot = getSlot(tslot.inventory, tslot.id);
+ if (slot != null) {
+ slots.add(Integer.valueOf(slot.slotNumber));
+ }
+ }
+ int[] array = new int[slots.size()];
+ for (int i = 0; i < slots.size(); i++) {
+ array[i] = ((Integer)slots.get(i)).intValue();
+ }
+ nbt.setIntArray("slots", array);
+ nbt.setShort("origin", (short)slotnumber);
+
+ this.syncedNBT.put("shift-click-info", nbt);
+ }
+
+ private void onRecieveShiftClickHighlights(EntityPlayer player, NBTTagCompound data)
+ {
+ ((List)ControlSlot.highlighting.get(EnumHighlighting.ShiftClick)).clear();
+ for (int slotnumber : data.getIntArray("slots")) {
+ ((List)ControlSlot.highlighting.get(EnumHighlighting.ShiftClick)).add(Integer.valueOf(slotnumber));
+ }
+ }
+
+ private CustomSlot getSlot(IInventory inventory, int id)
+ {
+ for (Object o : this.inventorySlots)
+ {
+ CustomSlot slot = (CustomSlot)o;
+ if ((slot.inventory == inventory) && (slot.getSlotIndex() == id)) {
+ return slot;
+ }
+ }
+ return null;
+ }
+
+ public void recieveNBT(Side side, EntityPlayer player, NBTTagCompound action)
+ {
+ String name = action.getString("type");
+ if (handleNBT(side, player, name, action)) {
+ return;
+ }
+ this.window.recieveGuiNBT(getSide(), player, name, action);
+ INetwork.RecieveGuiNBT machine = (INetwork.RecieveGuiNBT)Machine.getInterface(INetwork.RecieveGuiNBT.class, this.window.getInventory());
+ if (machine != null) {
+ machine.recieveGuiNBT(getSide(), player, name, action);
+ }
+ }
+
+ public Slot getOrCreateSlot(InventoryType type, int index)
+ {
+ IInventory inventory = getInventory(type);
+ Slot slot = getSlot(inventory, index);
+ if (slot == null)
+ {
+ slot = new CustomSlot(inventory, index);
+ addSlotToContainer(slot);
+ }
+ NBTTagCompound nbt = new NBTTagCompound();
+ nbt.setByte("t", (byte)type.ordinal());
+ nbt.setShort("i", (short)index);
+ nbt.setShort("n", (short)slot.slotNumber);
+ this.window.sendClientAction("slot-reg", nbt);
+ return slot;
+ }
+
+ protected IInventory getInventory(InventoryType type)
+ {
+ if (type == InventoryType.Machine) {
+ return this.window.getInventory();
+ }
+ if (type == InventoryType.Player) {
+ return this.window.getPlayer().inventory;
+ }
+ if (type == InventoryType.Window) {
+ return this.window.getWindowInventory();
+ }
+ return null;
+ }
+
+ private Slot getOrCreateSlot(InventoryType type, int index, int slotNumber)
+ {
+ IInventory inventory = getInventory(type);
+ if (this.inventorySlots.get(slotNumber) != null) {
+ return null;
+ }
+ Slot slot = new CustomSlot(inventory, index);
+ slot.slotNumber = slotNumber;
+ this.inventorySlots.add(slotNumber, slot);
+ this.inventoryItemStacks.add(slotNumber, (Object)null);
+ return slot;
+ }
+}
diff --git a/src/Java/binnie/craftgui/minecraft/CustomSlot.java b/src/Java/binnie/craftgui/minecraft/CustomSlot.java
new file mode 100644
index 0000000000..ae45ffb3fd
--- /dev/null
+++ b/src/Java/binnie/craftgui/minecraft/CustomSlot.java
@@ -0,0 +1,54 @@
+package binnie.craftgui.minecraft;
+
+import binnie.core.machines.Machine;
+import binnie.core.machines.inventory.IInventorySlots;
+import binnie.core.machines.inventory.InventorySlot;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.entity.player.InventoryPlayer;
+import net.minecraft.inventory.IInventory;
+import net.minecraft.inventory.Slot;
+import net.minecraft.item.ItemStack;
+
+public class CustomSlot
+ extends Slot
+{
+ public boolean isItemValid(ItemStack par1ItemStack)
+ {
+ return this.inventory.isItemValidForSlot(getSlotIndex(), par1ItemStack);
+ }
+
+ public CustomSlot(IInventory inventory, int index)
+ {
+ super(inventory, index, 0, 0);
+ }
+
+ public InventorySlot getInventorySlot()
+ {
+ IInventorySlots slots = (IInventorySlots)Machine.getInterface(IInventorySlots.class, this.inventory);
+ if (slots != null) {
+ return slots.getSlot(getSlotIndex());
+ }
+ return null;
+ }
+
+ public boolean handleClick()
+ {
+ InventorySlot slot = getInventorySlot();
+ return (slot != null) && (slot.isRecipe());
+ }
+
+ public void onSlotClick(ContainerCraftGUI container, int mouseButton, int modifier, EntityPlayer player)
+ {
+ ItemStack stack = player.inventory.getItemStack();
+ if ((stack == null) || (mouseButton == 2))
+ {
+ putStack(null);
+ }
+ else
+ {
+ stack = stack.copy();
+ stack.stackSize = 1;
+ putStack(stack);
+ }
+ }
+}
diff --git a/src/Java/binnie/craftgui/minecraft/Dialog.java b/src/Java/binnie/craftgui/minecraft/Dialog.java
new file mode 100644
index 0000000000..efd67dec25
--- /dev/null
+++ b/src/Java/binnie/craftgui/minecraft/Dialog.java
@@ -0,0 +1,53 @@
+package binnie.craftgui.minecraft;
+
+import binnie.craftgui.controls.core.Control;
+import binnie.craftgui.core.Attribute;
+import binnie.craftgui.core.CraftGUI;
+import binnie.craftgui.core.IWidget;
+import binnie.craftgui.core.geometry.IArea;
+import binnie.craftgui.core.geometry.IPoint;
+import binnie.craftgui.core.renderer.Renderer;
+import binnie.craftgui.events.EventHandler.Origin;
+import binnie.craftgui.events.EventMouse.Down;
+import binnie.craftgui.events.EventMouse.Down.Handler;
+import binnie.craftgui.resource.minecraft.CraftGUITexture;
+
+public abstract class Dialog
+ extends Control
+{
+ public Dialog(IWidget parent, float w, float h)
+ {
+ super(parent, (parent.w() - w) / 2.0F, (parent.h() - h) / 2.0F, w, h);
+ addAttribute(Attribute.MouseOver);
+ addAttribute(Attribute.AlwaysOnTop);
+ addAttribute(Attribute.BlockTooltip);
+ initialise();
+ addEventHandler(new EventMouse.Down.Handler()
+ {
+ public void onEvent(EventMouse.Down event)
+ {
+ if (!Dialog.this.getArea().contains(Dialog.this.getRelativeMousePosition()))
+ {
+ Dialog.this.onClose();
+ Dialog.this.getParent().deleteChild(Dialog.this);
+ }
+ }
+ }.setOrigin(EventHandler.Origin.Any, this));
+ }
+
+ public abstract void initialise();
+
+ public abstract void onClose();
+
+ public void onRenderBackground()
+ {
+ CraftGUI.Render.gradientRect(getArea().outset(400), -1442840576, -1442840576);
+ CraftGUI.Render.texture(CraftGUITexture.Window, getArea());
+ CraftGUI.Render.texture(CraftGUITexture.TabOutline, getArea().inset(4));
+ }
+
+ public boolean isMouseOverWidget(IPoint relativeMouse)
+ {
+ return true;
+ }
+}
diff --git a/src/Java/binnie/craftgui/minecraft/EnumColor.java b/src/Java/binnie/craftgui/minecraft/EnumColor.java
new file mode 100644
index 0000000000..e778cf31c8
--- /dev/null
+++ b/src/Java/binnie/craftgui/minecraft/EnumColor.java
@@ -0,0 +1,32 @@
+package binnie.craftgui.minecraft;
+
+public enum EnumColor
+{
+ Black("Black", 0, '0'), DarkBlue("Dark Blue", 170, '1'), DarkGreen("Dark Green", 43520, '2'), DarkAqua("Dark Aqua", 43690, '3'), DarkRed("Dark Red", 11141120, '4'), Purple("Purple", 11141290, '5'), Gold("Gold", 16755200, '6'), Grey("Grey", 11184810, '7'), DarkGrey("Dark Grey", 5592405, '8'), Blue("Blue", 5592575, '9'), Green("Green", 5635925, 'a'), Aqua("Aqua", 5636095, 'b'), Red("Red", 16733525, 'c'), Pink("Pink", 16733695, 'd'), Yellow("Yellow", 16777045, 'e'), White("White", 16777215, 'f');
+
+ int colour;
+ String name;
+ char code;
+
+ private EnumColor(String name, int colour, char code)
+ {
+ this.name = name;
+ this.colour = colour;
+ this.code = code;
+ }
+
+ public int getColour()
+ {
+ return this.colour;
+ }
+
+ public String getCode()
+ {
+ return "§" + this.code;
+ }
+
+ public String toString()
+ {
+ return this.name;
+ }
+}
diff --git a/src/Java/binnie/craftgui/minecraft/GUIIcon.java b/src/Java/binnie/craftgui/minecraft/GUIIcon.java
new file mode 100644
index 0000000000..96338b2551
--- /dev/null
+++ b/src/Java/binnie/craftgui/minecraft/GUIIcon.java
@@ -0,0 +1,30 @@
+package binnie.craftgui.minecraft;
+
+import binnie.Binnie;
+import binnie.core.BinnieCore;
+import binnie.core.resource.BinnieIcon;
+import binnie.core.resource.ManagerResource;
+import net.minecraft.util.IIcon;
+
+public enum GUIIcon
+{
+ ArrowUp("arrow-up"), ArrowDown("arrow-down"), ArrowLeft("arrow-left"), ArrowRight("arrow-right"), ArrowUpLeft("arrow-upleft"), ArrowUpRight("arrow-upright"), ArrowRightUp("arrow-rightup"), ArrowRightDown("arrow-rightdown"), ArrowDownRight("arrow-downright"), ArrowDownLeft("arrow-downleft"), ArrowLeftDown("arrow-leftdown"), ArrowLeftUp("arrow-leftup");
+
+ String path;
+ BinnieIcon icon;
+
+ private GUIIcon(String path)
+ {
+ this.path = path;
+ }
+
+ public void register()
+ {
+ this.icon = Binnie.Resource.getItemIcon(BinnieCore.instance, "gui/" + this.path);
+ }
+
+ public IIcon getIcon()
+ {
+ return this.icon.getIcon();
+ }
+}
diff --git a/src/Java/binnie/craftgui/minecraft/GuiCraftGUI.java b/src/Java/binnie/craftgui/minecraft/GuiCraftGUI.java
new file mode 100644
index 0000000000..bfd4a5f876
--- /dev/null
+++ b/src/Java/binnie/craftgui/minecraft/GuiCraftGUI.java
@@ -0,0 +1,605 @@
+package binnie.craftgui.minecraft;
+
+import binnie.core.BinnieCore;
+import binnie.core.proxy.BinnieProxy;
+import binnie.craftgui.core.CraftGUI;
+import binnie.craftgui.core.IWidget;
+import binnie.craftgui.core.Tooltip.Type;
+import binnie.craftgui.core.geometry.IArea;
+import binnie.craftgui.core.geometry.IBorder;
+import binnie.craftgui.core.geometry.IPoint;
+import binnie.craftgui.core.renderer.Renderer;
+import binnie.craftgui.events.EventKey.Down;
+import binnie.craftgui.events.EventMouse.Down;
+import binnie.craftgui.events.EventMouse.Up;
+import binnie.craftgui.events.EventMouse.Wheel;
+import cpw.mods.fml.relauncher.Side;
+import cpw.mods.fml.relauncher.SideOnly;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import net.minecraft.client.Minecraft;
+import net.minecraft.client.entity.EntityClientPlayerMP;
+import net.minecraft.client.gui.FontRenderer;
+import net.minecraft.client.gui.inventory.GuiContainer;
+import net.minecraft.client.renderer.OpenGlHelper;
+import net.minecraft.client.renderer.RenderHelper;
+import net.minecraft.client.renderer.Tessellator;
+import net.minecraft.client.renderer.entity.RenderItem;
+import net.minecraft.client.settings.GameSettings;
+import net.minecraft.client.settings.KeyBinding;
+import net.minecraft.entity.player.InventoryPlayer;
+import net.minecraft.item.Item;
+import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.JsonToNBT;
+import net.minecraft.nbt.NBTException;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.util.IIcon;
+import net.minecraft.util.ResourceLocation;
+import org.lwjgl.input.Keyboard;
+import org.lwjgl.input.Mouse;
+import org.lwjgl.opengl.GL11;
+
+@SideOnly(Side.CLIENT)
+public class GuiCraftGUI
+ extends GuiContainer
+{
+ IPoint mousePos = new IPoint(0.0F, 0.0F);
+ private Window window;
+ private ItemStack draggedItem;
+
+ public void updateScreen()
+ {
+ this.window.updateClient();
+ }
+
+ public Minecraft getMinecraft()
+ {
+ return this.mc;
+ }
+
+ public GuiCraftGUI(Window window)
+ {
+ super(window.getContainer());
+ this.window = window;
+ resize(window.getSize());
+ }
+
+ protected void drawGuiContainerBackgroundLayer(float var1, int var2, int var3) {}
+
+ public void initGui()
+ {
+ super.initGui();
+ this.mc.thePlayer.openContainer = this.inventorySlots;
+ this.guiLeft = ((this.width - this.xSize) / 2);
+ this.guiTop = ((this.height - this.ySize) / 2);
+ this.window.setSize(new IPoint(this.xSize, this.ySize));
+ this.window.setPosition(new IPoint(this.guiLeft, this.guiTop));
+ this.window.initGui();
+ }
+
+ public ItemStack getDraggedItem()
+ {
+ return this.draggedItem;
+ }
+
+ public void drawScreen(int mouseX, int mouseY, float par3)
+ {
+ this.window.setMousePosition(mouseX - (int)this.window.getPosition().x(), mouseY - (int)this.window.getPosition().y());
+
+
+ drawDefaultBackground();
+
+
+ GL11.glDisable(32826);
+ RenderHelper.disableStandardItemLighting();
+ GL11.glDisable(2896);
+ GL11.glDisable(2929);
+
+ this.zLevel = 10.0F;
+ itemRender.zLevel = this.zLevel;
+
+ this.window.render();
+
+
+ RenderHelper.enableGUIStandardItemLighting();
+ GL11.glPushMatrix();
+ GL11.glEnable(32826);
+ OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, 240.0F, 240.0F);
+
+
+
+
+
+ InventoryPlayer playerInventory = this.mc.thePlayer.inventory;
+ this.draggedItem = playerInventory.getItemStack();
+ if (this.draggedItem != null)
+ {
+ renderItem(new IPoint(mouseX - 8, mouseY - 8), this.draggedItem, 200, false);
+ renderItem(new IPoint(mouseX - 8, mouseY - 8), this.draggedItem, 200, false);
+ }
+ GL11.glDisable(32826);
+ GL11.glPopMatrix();
+
+
+
+
+
+ GL11.glDisable(2896);
+ GL11.glDisable(2929);
+
+
+ MinecraftTooltip tooltip = new MinecraftTooltip();
+ if (isHelpMode())
+ {
+ tooltip.setType(Tooltip.Type.Help);
+ this.window.getHelpTooltip(tooltip);
+ }
+ else
+ {
+ tooltip.setType(Tooltip.Type.Standard);
+ this.window.getTooltip(tooltip);
+ }
+ if (tooltip.exists()) {
+ renderTooltip(new IPoint(mouseX, mouseY), tooltip);
+ }
+ this.zLevel = 0.0F;
+
+ GL11.glEnable(2896);
+ GL11.glEnable(2929);
+ }
+
+ public void renderTooltip(IPoint mousePosition, MinecraftTooltip tooltip)
+ {
+ int mouseX = (int)mousePosition.x();
+ int mouseY = (int)mousePosition.y();
+ FontRenderer font = getFontRenderer();
+ GL11.glDisable(32826);
+ RenderHelper.disableStandardItemLighting();
+ GL11.glDisable(2896);
+ GL11.glDisable(2929);
+ int k = 0;
+
+ List<String> strings = new ArrayList();
+ for (String string : tooltip.getList()) {
+ if (string != null) {
+ if (!string.contains("~~~")) {
+ strings.addAll(font.listFormattedStringToWidth(string, tooltip.maxWidth));
+ } else {
+ strings.add(string);
+ }
+ }
+ }
+ Iterator iterator = strings.iterator();
+ while (iterator.hasNext())
+ {
+ String s = (String)iterator.next();
+ int l = font.getStringWidth(s);
+ if (s.contains("~~~")) {
+ l = 12 + font.getStringWidth(s.replaceAll("~~~(.*?)~~~", ""));
+ }
+ if (l > k) {
+ k = l;
+ }
+ }
+ int i1 = mouseX + 12;
+ int j1 = mouseY - 12;
+ int k1 = 8;
+ if (strings.size() > 1) {
+ k1 += 2 + (strings.size() - 1) * 10;
+ }
+ if (i1 + k > this.width) {
+ i1 -= 28 + k;
+ }
+ if (j1 + k1 + 6 > this.height) {
+ j1 = this.height - k1 - 6;
+ }
+ this.zLevel = 300.0F;
+ itemRender.zLevel = 300.0F;
+ int l1 = -267386864;
+ int i2 = 1342177280 + MinecraftTooltip.getOutline(tooltip.getType());
+ int j2 = i2;
+ drawGradientRect(i1 - 3, j1 - 4, i1 + k + 3, j1 - 3, l1, l1);
+ drawGradientRect(i1 - 3, j1 + k1 + 3, i1 + k + 3, j1 + k1 + 4, l1, l1);
+ drawGradientRect(i1 - 3, j1 - 3, i1 + k + 3, j1 + k1 + 3, l1, l1);
+ drawGradientRect(i1 - 4, j1 - 3, i1 - 3, j1 + k1 + 3, l1, l1);
+ drawGradientRect(i1 + k + 3, j1 - 3, i1 + k + 4, j1 + k1 + 3, l1, l1);
+
+ drawGradientRect(i1 - 3, j1 - 3 + 1, i1 - 3 + 1, j1 + k1 + 3 - 1, i2, j2);
+ drawGradientRect(i1 + k + 2, j1 - 3 + 1, i1 + k + 3, j1 + k1 + 3 - 1, i2, j2);
+ drawGradientRect(i1 - 3, j1 - 3, i1 + k + 3, j1 - 3 + 1, i2, i2);
+ drawGradientRect(i1 - 3, j1 + k1 + 2, i1 + k + 3, j1 + k1 + 3, j2, j2);
+ for (int k2 = 0; k2 < strings.size(); k2++)
+ {
+ String s1 = (String)strings.get(k2);
+ if (k2 == 0) {
+ s1 = MinecraftTooltip.getTitle(tooltip.getType()) + s1;
+ } else {
+ s1 = MinecraftTooltip.getBody(tooltip.getType()) + s1;
+ }
+ if (s1.contains("~~~"))
+ {
+ String split = s1.split("~~~")[1];
+ try
+ {
+ NBTTagCompound nbt = (NBTTagCompound)JsonToNBT.func_150315_a(split);
+ ItemStack stack = ItemStack.loadItemStackFromNBT(nbt);
+ GL11.glPushMatrix();
+ GL11.glTranslatef(i1, j1 - 1.5F, 0.0F);
+ GL11.glScalef(0.6F, 0.6F, 1.0F);
+ renderItem(new IPoint(0.0F, 0.0F), stack, false);
+ GL11.glPopMatrix();
+ }
+ catch (NBTException e)
+ {
+ e.printStackTrace();
+ }
+ s1 = " " + s1.replaceAll("~~~(.*?)~~~", "");
+ }
+ font.drawStringWithShadow(s1, i1, j1, -1);
+ if (k2 == 0) {
+ j1 += 2;
+ }
+ j1 += 10;
+ }
+ this.zLevel = 0.0F;
+ itemRender.zLevel = 0.0F;
+ GL11.glEnable(2896);
+ GL11.glEnable(2929);
+ RenderHelper.enableStandardItemLighting();
+ GL11.glEnable(32826);
+ }
+
+ protected void mouseClicked(int x, int y, int button)
+ {
+ IWidget origin = this.window;
+ if (this.window.getMousedOverWidget() != null) {
+ origin = this.window.getMousedOverWidget();
+ }
+ this.window.callEvent(new EventMouse.Down(origin, x, y, button));
+ }
+
+ public boolean isShiftDown()
+ {
+ return Keyboard.isKeyDown(this.mc.gameSettings.keyBindSneak.getKeyCode());
+ }
+
+ protected void keyTyped(char c, int key)
+ {
+ if ((key == 1) || ((key == this.mc.gameSettings.keyBindInventory.getKeyCode()) && (this.window.getFocusedWidget() == null))) {
+ this.mc.thePlayer.closeScreen();
+ }
+ IWidget origin = this.window.getFocusedWidget() == null ? this.window : this.window.getFocusedWidget();
+
+ this.window.callEvent(new EventKey.Down(origin, c, key));
+ }
+
+ protected void mouseMovedOrUp(int x, int y, int button)
+ {
+ IWidget origin = this.window.getMousedOverWidget() == null ? this.window : this.window.getMousedOverWidget();
+ float dy;
+ if (button == -1)
+ {
+ float dx = Mouse.getEventDX() * this.width / this.mc.displayWidth;
+ dy = -(Mouse.getEventDY() * this.height / this.mc.displayHeight);
+ }
+ else
+ {
+ this.window.callEvent(new EventMouse.Up(origin, x, y, button));
+ }
+ }
+
+ public void handleMouseInput()
+ {
+ super.handleMouseInput();
+ int dWheel = Mouse.getDWheel();
+ IWidget origin = this.window.getFocusedWidget() == null ? this.window : this.window.getFocusedWidget();
+ if (dWheel != 0) {
+ this.window.callEvent(new EventMouse.Wheel(this.window, dWheel));
+ }
+ }
+
+ public void onGuiClosed()
+ {
+ this.window.onClose();
+ }
+
+ public void renderTexturedRect(float x, float y, float u, float v, float w, float h)
+ {
+ drawTexturedModalRect((int)x, (int)y, (int)u, (int)v, (int)w, (int)h);
+ }
+
+ public void renderTexture(IPoint position, IArea textureArea)
+ {
+ drawTexturedModalRect((int)position.x(), (int)position.y(), (int)textureArea.pos().x(), (int)textureArea.pos().y(), (int)textureArea.size().x(), (int)textureArea.size().y());
+ }
+
+ private void renderTexturedRect(IArea area, IPoint uv)
+ {
+ renderTexturedRect(area.pos().x(), area.pos().y(), uv.x(), uv.y(), area.size().x(), area.size().y());
+ }
+
+ public void renderTexturePadded(IArea area, IArea texture, IBorder padding)
+ {
+ int borderLeft = (int)padding.l();
+ int borderRight = (int)padding.r();
+ int borderTop = (int)padding.t();
+ int borderBottom = (int)padding.b();
+
+ int posX = (int)area.pos().x();
+ int posY = (int)area.pos().y();
+ int width = (int)area.size().x();
+ int height = (int)area.size().y();
+
+ int textWidth = (int)texture.w();
+ int textHeight = (int)texture.h();
+
+ int u = (int)texture.x();
+ int v = (int)texture.y();
+ if (borderTop + borderBottom > height)
+ {
+ borderTop = height / 2;
+ borderBottom = height / 2;
+ }
+ if (borderLeft + borderRight > width)
+ {
+ borderLeft = width / 2;
+ borderRight = width / 2;
+ }
+ IPoint origin = area.pos();
+
+ drawTexturedModalRect(posX, posY, u, v, borderLeft, borderTop);
+
+
+ drawTexturedModalRect(posX + width - borderRight, posY, u + textWidth - borderRight, v, borderRight, borderTop);
+
+
+ drawTexturedModalRect(posX, posY + height - borderBottom, u, v + textHeight - borderBottom, borderLeft, borderBottom);
+
+
+ drawTexturedModalRect(posX + width - borderRight, posY + height - borderBottom, u + textWidth - borderRight, v + textHeight - borderBottom, borderRight, borderBottom);
+
+
+
+ int currentXPos = borderLeft;
+ while (currentXPos < width - borderRight)
+ {
+ int distanceXRemaining = width - borderRight - currentXPos;
+
+
+ int texturingWidth = textWidth - borderLeft - borderRight;
+ if (texturingWidth > distanceXRemaining) {
+ texturingWidth = distanceXRemaining;
+ }
+ if (texturingWidth <= 0) {
+ break;
+ }
+ drawTexturedModalRect(posX + currentXPos, posY, u + borderLeft, v, texturingWidth, borderTop);
+
+ drawTexturedModalRect(posX + currentXPos, posY + height - borderBottom, u + borderLeft, v + textHeight - borderBottom, texturingWidth, borderBottom);
+
+
+ int currentYPos = borderTop;
+ while (currentYPos < height - borderBottom)
+ {
+ int distanceYRemaining = height - borderBottom - currentYPos;
+
+
+ int texturingHeight = textHeight - borderTop - borderBottom;
+ if (texturingHeight > distanceYRemaining) {
+ texturingHeight = distanceYRemaining;
+ }
+ if (texturingHeight <= 0) {
+ break;
+ }
+ drawTexturedModalRect(posX + currentXPos, posY + currentYPos, u + borderLeft, v + borderTop, texturingWidth, texturingHeight);
+
+ currentYPos += texturingHeight;
+ }
+ currentXPos += texturingWidth;
+ }
+ int currentYPos = borderTop;
+ while (currentYPos < height - borderBottom)
+ {
+ int distanceYRemaining = height - borderBottom - currentYPos;
+
+
+ int texturingHeight = textHeight - borderTop - borderBottom;
+ if (texturingHeight > distanceYRemaining) {
+ texturingHeight = distanceYRemaining;
+ }
+ if (texturingHeight <= 0) {
+ break;
+ }
+ drawTexturedModalRect(posX, posY + currentYPos, u, v + borderTop, borderLeft, texturingHeight);
+
+ drawTexturedModalRect(posX + width - borderRight, posY + currentYPos, u + textWidth - borderRight, v + borderTop, borderRight, texturingHeight);
+ currentYPos += texturingHeight;
+ }
+ }
+
+ public void drawGradientArea(float p_73733_1_, float p_73733_2_, float p_73733_3_, float p_73733_4_, int p_73733_5_, int p_73733_6_)
+ {
+ float f = (p_73733_5_ >> 24 & 0xFF) / 255.0F;
+ float f1 = (p_73733_5_ >> 16 & 0xFF) / 255.0F;
+ float f2 = (p_73733_5_ >> 8 & 0xFF) / 255.0F;
+ float f3 = (p_73733_5_ & 0xFF) / 255.0F;
+ float f4 = (p_73733_6_ >> 24 & 0xFF) / 255.0F;
+ float f5 = (p_73733_6_ >> 16 & 0xFF) / 255.0F;
+ float f6 = (p_73733_6_ >> 8 & 0xFF) / 255.0F;
+ float f7 = (p_73733_6_ & 0xFF) / 255.0F;
+ GL11.glDisable(3553);
+ GL11.glEnable(3042);
+ GL11.glDisable(3008);
+ OpenGlHelper.glBlendFunc(770, 771, 1, 0);
+ GL11.glShadeModel(7425);
+ Tessellator tessellator = Tessellator.instance;
+ tessellator.startDrawingQuads();
+ tessellator.setColorRGBA_F(f1, f2, f3, f);
+ tessellator.addVertex(p_73733_3_, p_73733_2_, this.zLevel);
+ tessellator.addVertex(p_73733_1_, p_73733_2_, this.zLevel);
+ tessellator.setColorRGBA_F(f5, f6, f7, f4);
+ tessellator.addVertex(p_73733_1_, p_73733_4_, this.zLevel);
+ tessellator.addVertex(p_73733_3_, p_73733_4_, this.zLevel);
+ tessellator.draw();
+ GL11.glShadeModel(7424);
+ GL11.glDisable(3042);
+ GL11.glEnable(3008);
+ GL11.glEnable(3553);
+ }
+
+ public void renderItem(IPoint pos, ItemStack item, boolean rotating)
+ {
+ renderItem(pos, item, (int)this.zLevel + 3, rotating);
+ }
+
+ private void renderItem(IPoint pos, ItemStack item, int zLevel, boolean rotating)
+ {
+ OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, 240.0F, 240.0F);
+
+ GL11.glPushMatrix();
+
+ RenderHelper.enableGUIStandardItemLighting();
+ GL11.glEnable(32826);
+ GL11.glEnable(2929);
+
+
+
+
+
+
+
+ FontRenderer font = item.getItem().getFontRenderer(item);
+ if (font == null) {
+ font = getFontRenderer();
+ }
+ if (item != null)
+ {
+ BinnieCore.proxy.getMinecraftInstance();float phase = (float)Minecraft.getSystemTime() / 20.0F;
+
+ GL11.glPushMatrix();
+ if (rotating)
+ {
+ GL11.glTranslatef(8.0F, 8.0F, 0.0F);
+ GL11.glRotatef(phase, 0.0F, -0.866F, 0.5F);
+ GL11.glTranslatef(-8.0F, -8.0F, -67.099998F);
+ }
+ itemRender.renderItemAndEffectIntoGUI(font, this.mc.renderEngine, item, (int)pos.x(), (int)pos.y());
+ GL11.glPopMatrix();
+ itemRender.renderItemOverlayIntoGUI(font, this.mc.renderEngine, item, (int)pos.x(), (int)pos.y(), null);
+ }
+ GL11.glClear(256);
+ GL11.glEnable(3042);
+
+ OpenGlHelper.glBlendFunc(770, 771, 1, 0);
+
+
+ RenderHelper.disableStandardItemLighting();
+
+ CraftGUI.Render.colour(-1);
+
+ GL11.glEnable(32826);
+ GL11.glPopMatrix();
+ }
+
+ public void renderIcon(IPoint pos, IIcon icon, ResourceLocation map)
+ {
+ if (icon == null) {
+ return;
+ }
+ GL11.glPushMatrix();
+ GL11.glEnable(32826);
+
+
+ BinnieCore.proxy.bindTexture(map);
+
+
+ itemRender.zLevel = this.zLevel;
+
+ itemRender.renderIcon((int)pos.x(), (int)pos.y(), icon, 16, 16);
+
+
+
+ GL11.glEnable(32826);
+ GL11.glPopMatrix();
+ }
+
+ public boolean isHelpMode()
+ {
+ return Keyboard.isKeyDown(15);
+ }
+
+ public FontRenderer getFontRenderer()
+ {
+ return this.fontRendererObj;
+ }
+
+ public void resize(IPoint size)
+ {
+ this.xSize = ((int)size.x());
+ this.ySize = ((int)size.y());
+ this.guiLeft = ((this.width - this.xSize) / 2);
+ this.guiTop = ((this.height - this.ySize) / 2);
+ this.window.setPosition(new IPoint(this.guiLeft, this.guiTop));
+ }
+
+ public void limitArea(IArea area)
+ {
+ float x = area.pos().x();
+ float y = area.pos().y();
+ float w = area.size().x();
+ float h = area.size().y();
+
+ y = this.height - (y + h);
+ float k = this.xSize;
+ float scaleX = this.width / this.mc.displayWidth;
+ float scaleY = this.height / this.mc.displayHeight;
+
+ x += 0.0F;
+ y += 0.0F;
+ w += 0.0F;
+ h += 0.0F;
+
+
+
+ GL11.glScissor((int)(x / scaleX), (int)(y / scaleY), (int)(w / scaleX), (int)(h / scaleY));
+ }
+
+ public int getZLevel()
+ {
+ return (int)this.zLevel;
+ }
+
+ public void drawRect(float p_73734_0_, float p_73734_1_, float p_73734_2_, float p_73734_3_, int p_73734_4_)
+ {
+ if (p_73734_0_ < p_73734_2_)
+ {
+ float j1 = p_73734_0_;
+ p_73734_0_ = p_73734_2_;
+ p_73734_2_ = j1;
+ }
+ if (p_73734_1_ < p_73734_3_)
+ {
+ float j1 = p_73734_1_;
+ p_73734_1_ = p_73734_3_;
+ p_73734_3_ = j1;
+ }
+ float f3 = (p_73734_4_ >> 24 & 0xFF) / 255.0F;
+ float f = (p_73734_4_ >> 16 & 0xFF) / 255.0F;
+ float f1 = (p_73734_4_ >> 8 & 0xFF) / 255.0F;
+ float f2 = (p_73734_4_ & 0xFF) / 255.0F;
+ Tessellator tessellator = Tessellator.instance;
+ GL11.glEnable(3042);
+ GL11.glDisable(3553);
+ OpenGlHelper.glBlendFunc(770, 771, 1, 0);
+ GL11.glColor4f(f, f1, f2, f3);
+ tessellator.startDrawingQuads();
+ tessellator.addVertex(p_73734_0_, p_73734_3_, 0.0D);
+ tessellator.addVertex(p_73734_2_, p_73734_3_, 0.0D);
+ tessellator.addVertex(p_73734_2_, p_73734_1_, 0.0D);
+ tessellator.addVertex(p_73734_0_, p_73734_1_, 0.0D);
+ tessellator.draw();
+ GL11.glEnable(3553);
+ GL11.glDisable(3042);
+ }
+}
diff --git a/src/Java/binnie/craftgui/minecraft/IMachineInformation.java b/src/Java/binnie/craftgui/minecraft/IMachineInformation.java
new file mode 100644
index 0000000000..cd709bbf8a
--- /dev/null
+++ b/src/Java/binnie/craftgui/minecraft/IMachineInformation.java
@@ -0,0 +1,6 @@
+package binnie.craftgui.minecraft;
+
+public abstract interface IMachineInformation
+{
+ public abstract String getInformation();
+}
diff --git a/src/Java/binnie/craftgui/minecraft/IMinecraftTooltip.java b/src/Java/binnie/craftgui/minecraft/IMinecraftTooltip.java
new file mode 100644
index 0000000000..5bdec6e4ae
--- /dev/null
+++ b/src/Java/binnie/craftgui/minecraft/IMinecraftTooltip.java
@@ -0,0 +1,9 @@
+package binnie.craftgui.minecraft;
+
+import binnie.craftgui.core.ITooltip;
+
+public abstract interface IMinecraftTooltip
+ extends ITooltip
+{
+ public abstract void getTooltip(MinecraftTooltip paramMinecraftTooltip);
+}
diff --git a/src/Java/binnie/craftgui/minecraft/IWindowAffectsShiftClick.java b/src/Java/binnie/craftgui/minecraft/IWindowAffectsShiftClick.java
new file mode 100644
index 0000000000..ced88aa028
--- /dev/null
+++ b/src/Java/binnie/craftgui/minecraft/IWindowAffectsShiftClick.java
@@ -0,0 +1,8 @@
+package binnie.craftgui.minecraft;
+
+import binnie.core.machines.transfer.TransferRequest;
+
+public abstract interface IWindowAffectsShiftClick
+{
+ public abstract void alterRequest(TransferRequest paramTransferRequest);
+}
diff --git a/src/Java/binnie/craftgui/minecraft/InventoryType.java b/src/Java/binnie/craftgui/minecraft/InventoryType.java
new file mode 100644
index 0000000000..f10a065a99
--- /dev/null
+++ b/src/Java/binnie/craftgui/minecraft/InventoryType.java
@@ -0,0 +1,8 @@
+package binnie.craftgui.minecraft;
+
+public enum InventoryType
+{
+ Player, Machine, Window, Custom;
+
+ private InventoryType() {}
+}
diff --git a/src/Java/binnie/craftgui/minecraft/ListMap.java b/src/Java/binnie/craftgui/minecraft/ListMap.java
new file mode 100644
index 0000000000..7c0fbf37dd
--- /dev/null
+++ b/src/Java/binnie/craftgui/minecraft/ListMap.java
@@ -0,0 +1,149 @@
+package binnie.craftgui.minecraft;
+
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.ListIterator;
+import java.util.Map.Entry;
+import java.util.Set;
+
+class ListMap<T>
+ implements List<T>
+{
+ private LinkedHashMap<Integer, T> map = new LinkedHashMap();
+
+ public int size()
+ {
+ int i = -1;
+ for (Iterator i$ = this.map.keySet().iterator(); i$.hasNext();)
+ {
+ int k = ((Integer)i$.next()).intValue();
+ if (k > i) {
+ i = k;
+ }
+ }
+ return i + 1;
+ }
+
+ public boolean isEmpty()
+ {
+ return this.map.isEmpty();
+ }
+
+ public boolean contains(Object o)
+ {
+ return this.map.containsValue(o);
+ }
+
+ public Iterator<T> iterator()
+ {
+ return this.map.values().iterator();
+ }
+
+ public Object[] toArray()
+ {
+ return this.map.values().toArray();
+ }
+
+ public <P> P[] toArray(P[] a)
+ {
+ return this.map.values().toArray(a);
+ }
+
+ public boolean add(T e)
+ {
+ if (get(size()) == null)
+ {
+ add(size(), e);
+ return true;
+ }
+ return false;
+ }
+
+ public boolean remove(Object o)
+ {
+ return false;
+ }
+
+ public boolean containsAll(Collection<?> c)
+ {
+ return this.map.values().containsAll(c);
+ }
+
+ public boolean addAll(Collection<? extends T> c)
+ {
+ return false;
+ }
+
+ public boolean addAll(int index, Collection<? extends T> c)
+ {
+ return false;
+ }
+
+ public boolean removeAll(Collection<?> c)
+ {
+ return false;
+ }
+
+ public boolean retainAll(Collection<?> c)
+ {
+ return false;
+ }
+
+ public void clear()
+ {
+ this.map.clear();
+ }
+
+ public T get(int index)
+ {
+ return this.map.get(Integer.valueOf(index));
+ }
+
+ public T set(int index, T element)
+ {
+ this.map.put(Integer.valueOf(index), element);
+ return element;
+ }
+
+ public void add(int index, T element)
+ {
+ this.map.put(Integer.valueOf(index), element);
+ }
+
+ public T remove(int index)
+ {
+ return null;
+ }
+
+ public int indexOf(Object o)
+ {
+ for (Map.Entry<Integer, T> entry : this.map.entrySet()) {
+ if (entry.getValue() == o) {
+ return ((Integer)entry.getKey()).intValue();
+ }
+ }
+ return 0;
+ }
+
+ public int lastIndexOf(Object o)
+ {
+ return indexOf(o);
+ }
+
+ public ListIterator<T> listIterator()
+ {
+ return null;
+ }
+
+ public ListIterator<T> listIterator(int index)
+ {
+ return null;
+ }
+
+ public List<T> subList(int fromIndex, int toIndex)
+ {
+ return null;
+ }
+}
diff --git a/src/Java/binnie/craftgui/minecraft/MinecraftGUI.java b/src/Java/binnie/craftgui/minecraft/MinecraftGUI.java
new file mode 100644
index 0000000000..a87b4deeb8
--- /dev/null
+++ b/src/Java/binnie/craftgui/minecraft/MinecraftGUI.java
@@ -0,0 +1,14 @@
+package binnie.craftgui.minecraft;
+
+import binnie.craftgui.window.Panel.IPanelType;
+
+public class MinecraftGUI
+{
+ public static enum PanelType
+ implements Panel.IPanelType
+ {
+ Black, Gray, Tinted, Coloured, Outline, TabOutline;
+
+ private PanelType() {}
+ }
+}
diff --git a/src/Java/binnie/craftgui/minecraft/MinecraftTooltip.java b/src/Java/binnie/craftgui/minecraft/MinecraftTooltip.java
new file mode 100644
index 0000000000..4b48e33e6d
--- /dev/null
+++ b/src/Java/binnie/craftgui/minecraft/MinecraftTooltip.java
@@ -0,0 +1,63 @@
+package binnie.craftgui.minecraft;
+
+import binnie.craftgui.core.Tooltip;
+import binnie.craftgui.core.Tooltip.ITooltipType;
+import net.minecraft.util.EnumChatFormatting;
+
+public class MinecraftTooltip
+ extends Tooltip
+{
+ public static enum Type
+ implements Tooltip.ITooltipType
+ {
+ Error, Warning;
+
+ private Type() {}
+ }
+
+ public static int getOutline(Tooltip.ITooltipType type)
+ {
+ return TypeColour.valueOf(type.toString()).getOutline();
+ }
+
+ public static String getTitle(Tooltip.ITooltipType type)
+ {
+ return TypeColour.valueOf(type.toString()).getTitle();
+ }
+
+ public static String getBody(Tooltip.ITooltipType type)
+ {
+ return TypeColour.valueOf(type.toString()).getBody();
+ }
+
+ private static enum TypeColour
+ {
+ Standard(5243135, EnumChatFormatting.WHITE, EnumChatFormatting.GRAY), Help(5046016, EnumChatFormatting.GREEN, EnumChatFormatting.DARK_GREEN), Information(49151, EnumChatFormatting.AQUA, EnumChatFormatting.DARK_AQUA), Error(16724224, EnumChatFormatting.RED, EnumChatFormatting.DARK_RED), Warning(16752384, EnumChatFormatting.YELLOW, EnumChatFormatting.GOLD), User(9839667, EnumChatFormatting.RED, EnumChatFormatting.DARK_RED), Power(9006592, EnumChatFormatting.YELLOW, EnumChatFormatting.GOLD);
+
+ int outline;
+ String mainText;
+ String bodyText;
+
+ private TypeColour(int outline, EnumChatFormatting mainText, EnumChatFormatting bodyText)
+ {
+ this.outline = outline;
+ this.mainText = mainText.toString();
+ this.bodyText = bodyText.toString();
+ }
+
+ public int getOutline()
+ {
+ return this.outline;
+ }
+
+ public String getTitle()
+ {
+ return this.mainText;
+ }
+
+ public String getBody()
+ {
+ return this.bodyText;
+ }
+ }
+}
diff --git a/src/Java/binnie/craftgui/minecraft/ModuleCraftGUI.java b/src/Java/binnie/craftgui/minecraft/ModuleCraftGUI.java
new file mode 100644
index 0000000000..d2655dc2fc
--- /dev/null
+++ b/src/Java/binnie/craftgui/minecraft/ModuleCraftGUI.java
@@ -0,0 +1,18 @@
+package binnie.craftgui.minecraft;
+
+import binnie.core.IInitializable;
+
+public class ModuleCraftGUI
+ implements IInitializable
+{
+ public void preInit() {}
+
+ public void init() {}
+
+ public void postInit()
+ {
+ for (GUIIcon icon : ) {
+ icon.register();
+ }
+ }
+}
diff --git a/src/Java/binnie/craftgui/minecraft/Window.java b/src/Java/binnie/craftgui/minecraft/Window.java
new file mode 100644
index 0000000000..e09cf1e376
--- /dev/null
+++ b/src/Java/binnie/craftgui/minecraft/Window.java
@@ -0,0 +1,338 @@
+package binnie.craftgui.minecraft;
+
+import binnie.Binnie;
+import binnie.core.AbstractMod;
+import binnie.core.BinnieCore;
+import binnie.core.machines.Machine;
+import binnie.core.machines.inventory.IInventoryMachine;
+import binnie.core.machines.network.INetwork.RecieveGuiNBT;
+import binnie.core.machines.power.PowerSystem;
+import binnie.core.network.packet.MessageCraftGUI;
+import binnie.core.proxy.BinnieProxy;
+import binnie.core.resource.BinnieResource;
+import binnie.core.resource.ManagerResource;
+import binnie.core.resource.ResourceType;
+import binnie.craftgui.controls.ControlText;
+import binnie.craftgui.controls.ControlTextCentered;
+import binnie.craftgui.core.Attribute;
+import binnie.craftgui.core.CraftGUI;
+import binnie.craftgui.core.ITooltip;
+import binnie.craftgui.core.ITooltipHelp;
+import binnie.craftgui.core.IWidget;
+import binnie.craftgui.core.Tooltip;
+import binnie.craftgui.core.TopLevelWidget;
+import binnie.craftgui.core.geometry.IPoint;
+import binnie.craftgui.core.renderer.Renderer;
+import binnie.craftgui.events.EventWidget.ChangeSize;
+import binnie.craftgui.events.EventWidget.ChangeSize.Handler;
+import binnie.craftgui.minecraft.control.ControlHelp;
+import binnie.craftgui.minecraft.control.ControlInfo;
+import binnie.craftgui.minecraft.control.ControlPowerSystem;
+import binnie.craftgui.minecraft.control.ControlSlot;
+import binnie.craftgui.minecraft.control.ControlUser;
+import binnie.craftgui.minecraft.control.EnumHighlighting;
+import binnie.craftgui.resource.StyleSheetManager;
+import binnie.craftgui.resource.Texture;
+import binnie.craftgui.resource.minecraft.CraftGUITexture;
+import binnie.craftgui.resource.minecraft.StandardTexture;
+import com.mojang.authlib.GameProfile;
+import cpw.mods.fml.relauncher.Side;
+import cpw.mods.fml.relauncher.SideOnly;
+import java.util.ArrayList;
+import java.util.Deque;
+import java.util.List;
+import java.util.Map;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.entity.player.InventoryPlayer;
+import net.minecraft.inventory.IInventory;
+import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.world.World;
+
+public abstract class Window
+ extends TopLevelWidget
+ implements INetwork.RecieveGuiNBT
+{
+ private GuiCraftGUI gui;
+ private ContainerCraftGUI container;
+ private WindowInventory windowInventory;
+ private ControlText title;
+
+ public void getTooltip(Tooltip tooltip)
+ {
+ Deque<IWidget> queue = calculateMousedOverWidgets();
+ while (!queue.isEmpty())
+ {
+ IWidget widget = (IWidget)queue.removeFirst();
+ if ((widget.isEnabled()) && (widget.isVisible()) && (widget.calculateIsMouseOver()))
+ {
+ if ((widget instanceof ITooltip))
+ {
+ ((ITooltip)widget).getTooltip(tooltip);
+ if (tooltip.exists()) {
+ return;
+ }
+ }
+ if (widget.hasAttribute(Attribute.BlockTooltip)) {
+ return;
+ }
+ }
+ }
+ }
+
+ public void getHelpTooltip(MinecraftTooltip tooltip)
+ {
+ Deque<IWidget> queue = calculateMousedOverWidgets();
+ while (!queue.isEmpty())
+ {
+ IWidget widget = (IWidget)queue.removeFirst();
+ if ((widget.isEnabled()) && (widget.isVisible()) && (widget.calculateIsMouseOver()))
+ {
+ if ((widget instanceof ITooltipHelp))
+ {
+ ((ITooltipHelp)widget).getHelpTooltip(tooltip);
+ if (tooltip.exists()) {
+ return;
+ }
+ }
+ if (widget.hasAttribute(Attribute.BlockTooltip)) {
+ return;
+ }
+ }
+ }
+ }
+
+ protected abstract AbstractMod getMod();
+
+ protected abstract String getName();
+
+ public BinnieResource getBackgroundTextureFile(int i)
+ {
+ return Binnie.Resource.getPNG(getMod(), ResourceType.GUI, getName() + (i == 1 ? "" : Integer.valueOf(i)));
+ }
+
+ public boolean showHelpButton()
+ {
+ return Machine.getInterface(IInventoryMachine.class, getInventory()) != null;
+ }
+
+ public String showInfoButton()
+ {
+ if (Machine.getInterface(IMachineInformation.class, getInventory()) != null) {
+ return ((IMachineInformation)Machine.getInterface(IMachineInformation.class, getInventory())).getInformation();
+ }
+ return null;
+ }
+
+ public Window(float width, float height, EntityPlayer player, IInventory inventory, Side side)
+ {
+ this.side = side;
+ setInventories(player, inventory);
+ this.container = new ContainerCraftGUI(this);
+ this.windowInventory = new WindowInventory(this);
+ if (side == Side.SERVER) {
+ return;
+ }
+ setSize(new IPoint(width, height));
+ this.gui = new GuiCraftGUI(this);
+ for (EnumHighlighting h : EnumHighlighting.values()) {
+ ControlSlot.highlighting.put(h, new ArrayList());
+ }
+ CraftGUI.Render = new Renderer(this.gui);
+ CraftGUI.Render.stylesheet(StyleSheetManager.getDefault());
+
+ this.titleButtonLeft = -14.0F;
+ if (showHelpButton()) {
+ new ControlHelp(this, this.titleButtonLeft += 22.0F, 8.0F);
+ }
+ if (showInfoButton() != null) {
+ new ControlInfo(this, this.titleButtonLeft += 22.0F, 8.0F, showInfoButton());
+ }
+ Window wind = this;
+
+ addSelfEventHandler(new EventWidget.ChangeSize.Handler()
+ {
+ public void onEvent(EventWidget.ChangeSize event)
+ {
+ if ((Window.this.isClient()) && (Window.this.getGui() != null))
+ {
+ Window.this.getGui().resize(Window.this.getSize());
+ if (Window.this.title != null) {
+ Window.this.title.setSize(new IPoint(Window.this.w(), Window.this.title.h()));
+ }
+ }
+ }
+ });
+ }
+
+ protected float titleButtonLeft = 8.0F;
+ protected float titleButtonRight = 8.0F;
+
+ public void setTitle(String title)
+ {
+ this.title = new ControlTextCentered(this, 12.0F, title);
+ this.title.setColour(4210752);
+ }
+
+ @SideOnly(Side.CLIENT)
+ public final GuiCraftGUI getGui()
+ {
+ return this.gui;
+ }
+
+ public final ContainerCraftGUI getContainer()
+ {
+ return this.container;
+ }
+
+ public final WindowInventory getWindowInventory()
+ {
+ return this.windowInventory;
+ }
+
+ private StandardTexture bgText1 = null;
+ private StandardTexture bgText2 = null;
+ private boolean hasBeenInitialised = false;
+ private EntityPlayer player;
+ private IInventory entityInventory;
+
+ public final void initGui()
+ {
+ if (this.hasBeenInitialised) {
+ return;
+ }
+ this.bgText1 = new StandardTexture(0, 0, 256, 256, getBackgroundTextureFile(1));
+ if (getSize().x() > 256.0F) {
+ this.bgText2 = new StandardTexture(0, 0, 256, 256, getBackgroundTextureFile(2));
+ }
+ if (!BinnieCore.proxy.checkTexture(this.bgText1.getTexture()))
+ {
+ this.bgText1 = null;
+ this.bgText2 = null;
+ }
+ initialiseClient();
+ this.hasBeenInitialised = true;
+ }
+
+ public abstract void initialiseClient();
+
+ public void initialiseServer() {}
+
+ public void onRenderBackground()
+ {
+ CraftGUI.Render.colour(16777215);
+ if (getBackground1() != null) {
+ CraftGUI.Render.texture(getBackground1(), IPoint.ZERO);
+ }
+ if (getBackground2() != null) {
+ CraftGUI.Render.texture(getBackground2(), new IPoint(256.0F, 0.0F));
+ }
+ CraftGUI.Render.colour(getColour());
+ CraftGUI.Render.texture(CraftGUITexture.Window, getArea());
+ }
+
+ public void onUpdateClient()
+ {
+ ((List)ControlSlot.highlighting.get(EnumHighlighting.Help)).clear();
+
+ ControlSlot.shiftClickActive = false;
+ }
+
+ public EntityPlayer getPlayer()
+ {
+ return this.player;
+ }
+
+ public GameProfile getUsername()
+ {
+ return getPlayer().getGameProfile();
+ }
+
+ public ItemStack getHeldItemStack()
+ {
+ if (this.player != null) {
+ return this.player.inventory.getItemStack();
+ }
+ return null;
+ }
+
+ public IInventory getInventory()
+ {
+ return this.entityInventory;
+ }
+
+ public void setInventories(EntityPlayer player2, IInventory inventory)
+ {
+ this.player = player2;
+ this.entityInventory = inventory;
+ }
+
+ public void onClose() {}
+
+ public void setHeldItemStack(ItemStack stack)
+ {
+ if (this.player != null) {
+ this.player.inventory.setItemStack(stack);
+ }
+ }
+
+ private Side side = Side.CLIENT;
+
+ public boolean isServer()
+ {
+ return !isClient();
+ }
+
+ public boolean isClient()
+ {
+ return this.side == Side.CLIENT;
+ }
+
+ public World getWorld()
+ {
+ if (getPlayer() != null) {
+ return getPlayer().worldObj;
+ }
+ return BinnieCore.proxy.getWorld();
+ }
+
+ public void onInventoryUpdate() {}
+
+ public void sendClientAction(String name, NBTTagCompound action)
+ {
+ action.setString("type", name);
+ MessageCraftGUI packet = new MessageCraftGUI(action);
+ BinnieCore.proxy.sendToServer(packet);
+ }
+
+ public void recieveGuiNBT(Side side, EntityPlayer player, String name, NBTTagCompound action)
+ {
+ if ((side == Side.CLIENT) && (name.equals("username")))
+ {
+ new ControlUser(this, w() - (this.titleButtonRight += 16.0F), 8.0F, action.getString("username"));
+ this.titleButtonRight += 6.0F;
+ }
+ if ((side == Side.CLIENT) && (name.equals("power-system")))
+ {
+ new ControlPowerSystem(this, w() - (this.titleButtonRight += 16.0F), 8.0F, PowerSystem.get(action.getByte("system")));
+ this.titleButtonRight += 6.0F;
+ }
+ }
+
+ public void onWindowInventoryChanged() {}
+
+ public Texture getBackground1()
+ {
+ return this.bgText1;
+ }
+
+ public Texture getBackground2()
+ {
+ return this.bgText2;
+ }
+
+ public static <T extends Window> T get(IWidget widget)
+ {
+ return (Window)widget.getSuperParent();
+ }
+}
diff --git a/src/Java/binnie/craftgui/minecraft/WindowInventory.java b/src/Java/binnie/craftgui/minecraft/WindowInventory.java
new file mode 100644
index 0000000000..9c38bf1a9b
--- /dev/null
+++ b/src/Java/binnie/craftgui/minecraft/WindowInventory.java
@@ -0,0 +1,144 @@
+package binnie.craftgui.minecraft;
+
+import binnie.core.machines.inventory.SlotValidator;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.inventory.IInventory;
+import net.minecraft.item.ItemStack;
+
+public class WindowInventory
+ implements IInventory
+{
+ private Window window;
+
+ public WindowInventory(Window window)
+ {
+ this.window = window;
+ }
+
+ private Map<Integer, ItemStack> inventory = new HashMap();
+ private Map<Integer, SlotValidator> validators = new HashMap();
+ private List<Integer> disabledAutoDispenses = new ArrayList();
+
+ public int getSizeInventory()
+ {
+ if (this.inventory.size() == 0) {
+ return 0;
+ }
+ int max = 0;
+ for (Iterator i$ = this.inventory.keySet().iterator(); i$.hasNext();)
+ {
+ int i = ((Integer)i$.next()).intValue();
+ if (i > max) {
+ max = i;
+ }
+ }
+ return max + 1;
+ }
+
+ public ItemStack getStackInSlot(int var1)
+ {
+ if (this.inventory.containsKey(Integer.valueOf(var1))) {
+ return (ItemStack)this.inventory.get(Integer.valueOf(var1));
+ }
+ return null;
+ }
+
+ public ItemStack decrStackSize(int index, int amount)
+ {
+ if (this.inventory.containsKey(Integer.valueOf(index)))
+ {
+ ItemStack item = (ItemStack)this.inventory.get(Integer.valueOf(index));
+ ItemStack output = item.copy();
+ int available = item.stackSize;
+ if (amount > available) {
+ amount = available;
+ }
+ item.stackSize -= amount;
+ output.stackSize = amount;
+ if (item.stackSize == 0) {
+ setInventorySlotContents(index, null);
+ }
+ return output;
+ }
+ return null;
+ }
+
+ public ItemStack getStackInSlotOnClosing(int var1)
+ {
+ return null;
+ }
+
+ public void setInventorySlotContents(int var1, ItemStack var2)
+ {
+ this.inventory.put(Integer.valueOf(var1), var2);
+ markDirty();
+ }
+
+ public String getInventoryName()
+ {
+ return "window.inventory";
+ }
+
+ public int getInventoryStackLimit()
+ {
+ return 64;
+ }
+
+ public void markDirty()
+ {
+ this.window.onWindowInventoryChanged();
+ }
+
+ public boolean isUseableByPlayer(EntityPlayer var1)
+ {
+ return true;
+ }
+
+ public void openInventory() {}
+
+ public void closeInventory() {}
+
+ public boolean hasCustomInventoryName()
+ {
+ return false;
+ }
+
+ public boolean isItemValidForSlot(int i, ItemStack itemstack)
+ {
+ if (this.validators.containsKey(Integer.valueOf(i))) {
+ return ((SlotValidator)this.validators.get(Integer.valueOf(i))).isValid(itemstack);
+ }
+ return true;
+ }
+
+ public void createSlot(int slot)
+ {
+ this.inventory.put(Integer.valueOf(slot), null);
+ }
+
+ public void setValidator(int slot, SlotValidator validator)
+ {
+ this.validators.put(Integer.valueOf(slot), validator);
+ }
+
+ public void disableAutoDispense(int i)
+ {
+ this.disabledAutoDispenses.add(Integer.valueOf(i));
+ }
+
+ public boolean dispenseOnClose(int i)
+ {
+ return !this.disabledAutoDispenses.contains(Integer.valueOf(i));
+ }
+
+ public SlotValidator getValidator(int i)
+ {
+ return (SlotValidator)this.validators.get(Integer.valueOf(i));
+ }
+}
diff --git a/src/Java/binnie/craftgui/minecraft/control/ControlEnergyBar.java b/src/Java/binnie/craftgui/minecraft/control/ControlEnergyBar.java
new file mode 100644
index 0000000000..0337b154c1
--- /dev/null
+++ b/src/Java/binnie/craftgui/minecraft/control/ControlEnergyBar.java
@@ -0,0 +1,161 @@
+package binnie.craftgui.minecraft.control;
+
+import binnie.core.machines.Machine;
+import binnie.core.machines.TileEntityMachine;
+import binnie.core.machines.power.IPoweredMachine;
+import binnie.core.machines.power.IProcess;
+import binnie.core.machines.power.PowerInfo;
+import binnie.craftgui.controls.core.Control;
+import binnie.craftgui.core.Attribute;
+import binnie.craftgui.core.CraftGUI;
+import binnie.craftgui.core.ITooltip;
+import binnie.craftgui.core.IWidget;
+import binnie.craftgui.core.Tooltip;
+import binnie.craftgui.core.Tooltip.Type;
+import binnie.craftgui.core.geometry.IArea;
+import binnie.craftgui.core.geometry.IPoint;
+import binnie.craftgui.core.geometry.Position;
+import binnie.craftgui.core.renderer.Renderer;
+import binnie.craftgui.minecraft.ContainerCraftGUI;
+import binnie.craftgui.minecraft.GuiCraftGUI;
+import binnie.craftgui.minecraft.MinecraftTooltip;
+import binnie.craftgui.minecraft.MinecraftTooltip.Type;
+import binnie.craftgui.minecraft.Window;
+import binnie.craftgui.resource.minecraft.CraftGUITexture;
+import net.minecraft.inventory.IInventory;
+import org.lwjgl.opengl.GL11;
+
+public class ControlEnergyBar
+ extends Control
+ implements ITooltip
+{
+ public static boolean isError;
+ private Position direction;
+
+ public ControlEnergyBar(IWidget parent, int x, int y, int width, int height, Position direction)
+ {
+ super(parent, x, y, width, height);
+ this.direction = direction;
+ addAttribute(Attribute.MouseOver);
+ }
+
+ public IPoweredMachine getClientPower()
+ {
+ IInventory inventory = Window.get(this).getInventory();
+ TileEntityMachine machine = (TileEntityMachine)((inventory instanceof TileEntityMachine) ? inventory : null);
+ if (machine == null) {
+ return null;
+ }
+ IPoweredMachine clientPower = (IPoweredMachine)machine.getMachine().getInterface(IPoweredMachine.class);
+ return clientPower;
+ }
+
+ public float getPercentage()
+ {
+ float percentage = 100.0F * getStoredEnergy() / getMaxEnergy();
+ if (percentage > 100.0F) {
+ percentage = 100.0F;
+ }
+ return percentage;
+ }
+
+ private float getStoredEnergy()
+ {
+ return Window.get(this).getContainer().getPowerInfo().getStoredEnergy();
+ }
+
+ private float getMaxEnergy()
+ {
+ return Window.get(this).getContainer().getPowerInfo().getMaxEnergy();
+ }
+
+ public void getTooltip(Tooltip tooltip)
+ {
+ tooltip.add((int)getPercentage() + "% charged");
+
+ tooltip.add(getStoredEnergy() + "/" + getMaxEnergy() + " RF");
+ }
+
+ public void getHelpTooltip(Tooltip tooltip)
+ {
+ tooltip.add("Energy Bar");
+ tooltip.add("Current: " + getStoredEnergy() + " RF (" + (int)getPercentage() + "%)");
+ tooltip.add("Capacity: " + getMaxEnergy() + " RF");
+
+ IProcess process = (IProcess)Machine.getInterface(IProcess.class, Window.get(this).getInventory());
+ if (process != null) {
+ tooltip.add("Usage: " + (int)process.getEnergyPerTick() + " RF");
+ }
+ }
+
+ public void onRenderBackground()
+ {
+ CraftGUI.Render.texture(CraftGUITexture.EnergyBarBack, getArea());
+
+ float percentage = getPercentage() / 100.0F;
+
+ CraftGUI.Render.colour(getColourFromPercentage(percentage));
+
+ IArea area = getArea();
+ switch (1.$SwitchMap$binnie$craftgui$core$geometry$Position[this.direction.ordinal()])
+ {
+ case 1:
+ case 2:
+ float height = area.size().y() * percentage;
+ area.setSize(new IPoint(area.size().x(), height));
+
+ break;
+ case 3:
+ case 4:
+ float width = area.size().x() * percentage;
+ area.setSize(new IPoint(width, area.size().y()));
+ }
+ if ((isMouseOver()) && (Window.get(this).getGui().isHelpMode()))
+ {
+ int c = -1442840576 + MinecraftTooltip.getOutline(Tooltip.Type.Help);
+ CraftGUI.Render.gradientRect(getArea().inset(1), c, c);
+ }
+ else if (isError)
+ {
+ int c = -1442840576 + MinecraftTooltip.getOutline(MinecraftTooltip.Type.Error);
+ CraftGUI.Render.gradientRect(getArea().inset(1), c, c);
+ }
+ CraftGUI.Render.texture(CraftGUITexture.EnergyBarGlow, area);
+
+ GL11.glColor3d(1.0D, 1.0D, 1.0D);
+
+ CraftGUI.Render.texture(CraftGUITexture.EnergyBarGlass, getArea());
+ }
+
+ public void onRenderForeground()
+ {
+ if ((isMouseOver()) && (Window.get(this).getGui().isHelpMode()))
+ {
+ IArea area = getArea();
+ CraftGUI.Render.colour(MinecraftTooltip.getOutline(Tooltip.Type.Help));
+ CraftGUI.Render.texture(CraftGUITexture.Outline, area.outset(1));
+ }
+ else if (isError)
+ {
+ IArea area = getArea();
+ CraftGUI.Render.colour(MinecraftTooltip.getOutline(MinecraftTooltip.Type.Error));
+ CraftGUI.Render.texture(CraftGUITexture.Outline, area.outset(1));
+ }
+ }
+
+ public int getColourFromPercentage(float percentage)
+ {
+ int colour = 16777215;
+ if (percentage > 0.5D)
+ {
+ int r = (int)((1.0D - 2.0D * (percentage - 0.5D)) * 255.0D);
+ colour = (r << 16) + 65280;
+ }
+ else
+ {
+ int g = (int)(255.0F * (2.0F * percentage));
+ colour = 16711680 + (g << 8);
+ }
+ return colour;
+ }
+}
diff --git a/src/Java/binnie/craftgui/minecraft/control/ControlErrorState.java b/src/Java/binnie/craftgui/minecraft/control/ControlErrorState.java
new file mode 100644
index 0000000000..6027371297
--- /dev/null
+++ b/src/Java/binnie/craftgui/minecraft/control/ControlErrorState.java
@@ -0,0 +1,113 @@
+package binnie.craftgui.minecraft.control;
+
+import binnie.core.machines.power.ErrorState;
+import binnie.craftgui.controls.core.Control;
+import binnie.craftgui.core.Attribute;
+import binnie.craftgui.core.CraftGUI;
+import binnie.craftgui.core.ITooltip;
+import binnie.craftgui.core.IWidget;
+import binnie.craftgui.core.Tooltip;
+import binnie.craftgui.core.geometry.IPoint;
+import binnie.craftgui.core.renderer.Renderer;
+import binnie.craftgui.minecraft.ContainerCraftGUI;
+import binnie.craftgui.minecraft.CustomSlot;
+import binnie.craftgui.minecraft.MinecraftTooltip;
+import binnie.craftgui.minecraft.MinecraftTooltip.Type;
+import binnie.craftgui.minecraft.Window;
+import binnie.craftgui.resource.minecraft.CraftGUITexture;
+import java.util.List;
+import java.util.Map;
+import net.minecraft.entity.player.InventoryPlayer;
+
+public class ControlErrorState
+ extends Control
+ implements ITooltip
+{
+ private ErrorState errorState;
+
+ public void onRenderBackground()
+ {
+ Object texture = CraftGUITexture.StateWarning;
+ if (this.errorState == null) {
+ texture = CraftGUITexture.StateNone;
+ } else if (this.type == 0) {
+ texture = CraftGUITexture.StateError;
+ }
+ CraftGUI.Render.texture(texture, IPoint.ZERO);
+
+ super.onRenderBackground();
+ }
+
+ public ErrorState getError()
+ {
+ return Window.get(this).getContainer().getErrorState();
+ }
+
+ public final void onUpdateClient()
+ {
+ this.errorState = getError();
+ this.type = Window.get(this).getContainer().getErrorType();
+
+ ((List)ControlSlot.highlighting.get(EnumHighlighting.Error)).clear();
+ ((List)ControlSlot.highlighting.get(EnumHighlighting.Warning)).clear();
+ ControlLiquidTank.tankError.clear();
+ ControlEnergyBar.isError = false;
+ if ((!isMouseOver()) || (this.errorState == null)) {
+ return;
+ }
+ ControlEnergyBar.isError = this.errorState.isPowerError();
+ if (this.errorState.isItemError()) {
+ for (int slot : this.errorState.getData())
+ {
+ int id = -1;
+ for (CustomSlot cslot : Window.get(this).getContainer().getCustomSlots()) {
+ if ((!(cslot.inventory instanceof InventoryPlayer)) && (cslot.getSlotIndex() == slot)) {
+ id = cslot.slotNumber;
+ }
+ }
+ if (id >= 0) {
+ if (this.type == 0) {
+ ((List)ControlSlot.highlighting.get(EnumHighlighting.Error)).add(Integer.valueOf(id));
+ } else {
+ ((List)ControlSlot.highlighting.get(EnumHighlighting.Warning)).add(Integer.valueOf(id));
+ }
+ }
+ }
+ }
+ if (this.errorState.isTankError()) {
+ for (int slot : this.errorState.getData()) {
+ ControlLiquidTank.tankError.add(Integer.valueOf(slot));
+ }
+ }
+ }
+
+ private int type = 0;
+
+ public ControlErrorState(IWidget parent, float x, float y)
+ {
+ super(parent, x, y, 16.0F, 16.0F);
+ addAttribute(Attribute.MouseOver);
+ }
+
+ public void getTooltip(Tooltip tooltipOrig)
+ {
+ MinecraftTooltip tooltip = (MinecraftTooltip)tooltipOrig;
+ if (this.errorState != null)
+ {
+ if (this.type == 0) {
+ tooltip.setType(MinecraftTooltip.Type.Error);
+ } else {
+ tooltip.setType(MinecraftTooltip.Type.Warning);
+ }
+ tooltip.add(this.errorState.toString());
+ if (this.errorState.getTooltip().length() > 0) {
+ tooltip.add(this.errorState.getTooltip());
+ }
+ }
+ }
+
+ public ErrorState getErrorState()
+ {
+ return this.errorState;
+ }
+}
diff --git a/src/Java/binnie/craftgui/minecraft/control/ControlHelp.java b/src/Java/binnie/craftgui/minecraft/control/ControlHelp.java
new file mode 100644
index 0000000000..d2027747f2
--- /dev/null
+++ b/src/Java/binnie/craftgui/minecraft/control/ControlHelp.java
@@ -0,0 +1,41 @@
+package binnie.craftgui.minecraft.control;
+
+import binnie.craftgui.controls.core.Control;
+import binnie.craftgui.core.Attribute;
+import binnie.craftgui.core.CraftGUI;
+import binnie.craftgui.core.ITooltip;
+import binnie.craftgui.core.IWidget;
+import binnie.craftgui.core.Tooltip;
+import binnie.craftgui.core.Tooltip.Type;
+import binnie.craftgui.core.renderer.Renderer;
+import binnie.craftgui.resource.minecraft.CraftGUITexture;
+
+public class ControlHelp
+ extends Control
+ implements ITooltip
+{
+ public ControlHelp(IWidget parent, float x, float y)
+ {
+ super(parent, x, y, 16.0F, 16.0F);
+ addAttribute(Attribute.MouseOver);
+ }
+
+ public void onRenderBackground()
+ {
+ CraftGUI.Render.texture(CraftGUITexture.HelpButton, getArea());
+ }
+
+ public void getTooltip(Tooltip tooltip)
+ {
+ tooltip.setType(Tooltip.Type.Help);
+ tooltip.add("Help");
+ tooltip.add("To activate help tooltips,");
+ tooltip.add("hold down the tab key and");
+ tooltip.add("mouse over controls.");
+ }
+
+ public void getHelpTooltip(Tooltip tooltip)
+ {
+ getTooltip(tooltip);
+ }
+}
diff --git a/src/Java/binnie/craftgui/minecraft/control/ControlIconDisplay.java b/src/Java/binnie/craftgui/minecraft/control/ControlIconDisplay.java
new file mode 100644
index 0000000000..071e8ee888
--- /dev/null
+++ b/src/Java/binnie/craftgui/minecraft/control/ControlIconDisplay.java
@@ -0,0 +1,25 @@
+package binnie.craftgui.minecraft.control;
+
+import binnie.craftgui.controls.core.Control;
+import binnie.craftgui.core.CraftGUI;
+import binnie.craftgui.core.IWidget;
+import binnie.craftgui.core.geometry.IPoint;
+import binnie.craftgui.core.renderer.Renderer;
+import net.minecraft.util.IIcon;
+
+public class ControlIconDisplay
+ extends Control
+{
+ private IIcon icon = null;
+
+ public ControlIconDisplay(IWidget parent, float x, float y, IIcon icon)
+ {
+ super(parent, x, y, 16.0F, 16.0F);
+ this.icon = icon;
+ }
+
+ public void onRenderForeground()
+ {
+ CraftGUI.Render.iconItem(IPoint.ZERO, this.icon);
+ }
+}
diff --git a/src/Java/binnie/craftgui/minecraft/control/ControlImage.java b/src/Java/binnie/craftgui/minecraft/control/ControlImage.java
new file mode 100644
index 0000000000..0d08626852
--- /dev/null
+++ b/src/Java/binnie/craftgui/minecraft/control/ControlImage.java
@@ -0,0 +1,25 @@
+package binnie.craftgui.minecraft.control;
+
+import binnie.craftgui.controls.core.Control;
+import binnie.craftgui.core.CraftGUI;
+import binnie.craftgui.core.IWidget;
+import binnie.craftgui.core.geometry.IPoint;
+import binnie.craftgui.core.renderer.Renderer;
+import binnie.craftgui.resource.Texture;
+
+public class ControlImage
+ extends Control
+{
+ private Object key = null;
+
+ public ControlImage(IWidget parent, float x, float y, Texture text)
+ {
+ super(parent, x, y, text.w(), text.h());
+ this.key = text;
+ }
+
+ public void onRenderForeground()
+ {
+ CraftGUI.Render.texture(this.key, IPoint.ZERO);
+ }
+}
diff --git a/src/Java/binnie/craftgui/minecraft/control/ControlInfo.java b/src/Java/binnie/craftgui/minecraft/control/ControlInfo.java
new file mode 100644
index 0000000000..8d9c8e95b6
--- /dev/null
+++ b/src/Java/binnie/craftgui/minecraft/control/ControlInfo.java
@@ -0,0 +1,38 @@
+package binnie.craftgui.minecraft.control;
+
+import binnie.craftgui.controls.core.Control;
+import binnie.craftgui.core.Attribute;
+import binnie.craftgui.core.CraftGUI;
+import binnie.craftgui.core.ITooltip;
+import binnie.craftgui.core.IWidget;
+import binnie.craftgui.core.Tooltip;
+import binnie.craftgui.core.Tooltip.Type;
+import binnie.craftgui.core.renderer.Renderer;
+import binnie.craftgui.resource.minecraft.CraftGUITexture;
+
+public class ControlInfo
+ extends Control
+ implements ITooltip
+{
+ private String info;
+
+ public ControlInfo(IWidget parent, float x, float y, String info)
+ {
+ super(parent, x, y, 16.0F, 16.0F);
+ addAttribute(Attribute.MouseOver);
+ this.info = info;
+ }
+
+ public void onRenderBackground()
+ {
+ CraftGUI.Render.texture(CraftGUITexture.InfoButton, getArea());
+ }
+
+ public void getTooltip(Tooltip tooltip)
+ {
+ tooltip.setType(Tooltip.Type.Information);
+ tooltip.add("Info");
+ tooltip.add(this.info);
+ tooltip.setMaxWidth(200);
+ }
+}
diff --git a/src/Java/binnie/craftgui/minecraft/control/ControlItemDisplay.java b/src/Java/binnie/craftgui/minecraft/control/ControlItemDisplay.java
new file mode 100644
index 0000000000..8db438bcc3
--- /dev/null
+++ b/src/Java/binnie/craftgui/minecraft/control/ControlItemDisplay.java
@@ -0,0 +1,98 @@
+package binnie.craftgui.minecraft.control;
+
+import binnie.core.BinnieCore;
+import binnie.core.proxy.BinnieProxy;
+import binnie.craftgui.controls.core.Control;
+import binnie.craftgui.core.Attribute;
+import binnie.craftgui.core.CraftGUI;
+import binnie.craftgui.core.ITooltip;
+import binnie.craftgui.core.ITopLevelWidget;
+import binnie.craftgui.core.IWidget;
+import binnie.craftgui.core.Tooltip;
+import binnie.craftgui.core.geometry.IPoint;
+import binnie.craftgui.core.renderer.Renderer;
+import binnie.craftgui.minecraft.Window;
+import net.minecraft.client.Minecraft;
+import net.minecraft.item.ItemStack;
+import org.lwjgl.opengl.GL11;
+
+public class ControlItemDisplay
+ extends Control
+ implements ITooltip
+{
+ private ItemStack itemStack = null;
+ public boolean hastooltip = false;
+
+ public void setTooltip()
+ {
+ this.hastooltip = true;
+ addAttribute(Attribute.MouseOver);
+ }
+
+ public ControlItemDisplay(IWidget parent, float x, float y)
+ {
+ this(parent, x, y, 16.0F);
+ }
+
+ public ControlItemDisplay(IWidget parent, float f, float y, ItemStack stack, boolean tooltip)
+ {
+ this(parent, f, y, 16.0F);
+ setItemStack(stack);
+ if (tooltip) {
+ setTooltip();
+ }
+ }
+
+ public ControlItemDisplay(IWidget parent, float x, float y, float size)
+ {
+ super(parent, x, y, size, size);
+ }
+
+ public void onRenderBackground()
+ {
+ IPoint relativeToWindow = getAbsolutePosition().sub(getSuperParent().getPosition());
+ if ((relativeToWindow.x() > Window.get(this).getSize().x() + 100.0F) || (relativeToWindow.y() > Window.get(this).getSize().y() + 100.0F)) {
+ return;
+ }
+ if (this.itemStack != null) {
+ if (getSize().x() != 16.0F)
+ {
+ GL11.glPushMatrix();
+ float scale = getSize().x() / 16.0F;
+ GL11.glScalef(scale, scale, 1.0F);
+ BinnieCore.proxy.getMinecraftInstance();float phase = (float)Minecraft.getSystemTime() / 20.0F;
+ CraftGUI.Render.item(IPoint.ZERO, this.itemStack, this.rotating);
+ GL11.glPopMatrix();
+ }
+ else
+ {
+ CraftGUI.Render.item(IPoint.ZERO, this.itemStack, this.rotating);
+ }
+ }
+ }
+
+ public void setItemStack(ItemStack itemStack)
+ {
+ this.itemStack = itemStack;
+ }
+
+ public ItemStack getItemStack()
+ {
+ return this.itemStack;
+ }
+
+ public void getTooltip(Tooltip tooltip)
+ {
+ if ((this.hastooltip) && (this.itemStack != null)) {
+ tooltip.add(this.itemStack.getTooltip(((Window)getSuperParent()).getPlayer(), false));
+ }
+ super.getTooltip(tooltip);
+ }
+
+ private boolean rotating = false;
+
+ public void setRotating()
+ {
+ this.rotating = true;
+ }
+}
diff --git a/src/Java/binnie/craftgui/minecraft/control/ControlLiquidTank.java b/src/Java/binnie/craftgui/minecraft/control/ControlLiquidTank.java
new file mode 100644
index 0000000000..d69c61136d
--- /dev/null
+++ b/src/Java/binnie/craftgui/minecraft/control/ControlLiquidTank.java
@@ -0,0 +1,223 @@
+package binnie.craftgui.minecraft.control;
+
+import binnie.core.BinnieCore;
+import binnie.core.machines.Machine;
+import binnie.core.machines.inventory.MachineSide;
+import binnie.core.machines.inventory.TankSlot;
+import binnie.core.machines.inventory.Validator;
+import binnie.core.machines.power.ITankMachine;
+import binnie.core.machines.power.TankInfo;
+import binnie.core.proxy.BinnieProxy;
+import binnie.craftgui.controls.core.Control;
+import binnie.craftgui.core.Attribute;
+import binnie.craftgui.core.CraftGUI;
+import binnie.craftgui.core.ITooltip;
+import binnie.craftgui.core.ITopLevelWidget;
+import binnie.craftgui.core.IWidget;
+import binnie.craftgui.core.Tooltip;
+import binnie.craftgui.core.Tooltip.Type;
+import binnie.craftgui.core.geometry.IArea;
+import binnie.craftgui.core.geometry.IPoint;
+import binnie.craftgui.core.renderer.Renderer;
+import binnie.craftgui.events.EventMouse.Down;
+import binnie.craftgui.events.EventMouse.Down.Handler;
+import binnie.craftgui.minecraft.ContainerCraftGUI;
+import binnie.craftgui.minecraft.GuiCraftGUI;
+import binnie.craftgui.minecraft.MinecraftTooltip;
+import binnie.craftgui.minecraft.MinecraftTooltip.Type;
+import binnie.craftgui.minecraft.Window;
+import binnie.craftgui.resource.minecraft.CraftGUITexture;
+import java.util.ArrayList;
+import java.util.List;
+import net.minecraft.client.renderer.texture.TextureMap;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.util.IIcon;
+import net.minecraftforge.fluids.Fluid;
+import net.minecraftforge.fluids.FluidStack;
+import org.lwjgl.opengl.GL11;
+
+public class ControlLiquidTank
+ extends Control
+ implements ITooltip
+{
+ public static List<Integer> tankError = new ArrayList();
+ private int tankID = 0;
+ private boolean horizontal = false;
+
+ public ControlLiquidTank(IWidget parent, int x, int y)
+ {
+ this(parent, x, y, false);
+ }
+
+ public ControlLiquidTank(IWidget parent, int x, int y, boolean horizontal)
+ {
+ super(parent, x, y, horizontal ? 60.0F : 18.0F, horizontal ? 18.0F : 60.0F);
+ this.horizontal = horizontal;
+ addAttribute(Attribute.MouseOver);
+
+ addSelfEventHandler(new EventMouse.Down.Handler()
+ {
+ public void onEvent(EventMouse.Down event)
+ {
+ if (event.getButton() == 0)
+ {
+ NBTTagCompound nbt = new NBTTagCompound();
+ nbt.setByte("id", (byte)ControlLiquidTank.this.tankID);
+ Window.get(ControlLiquidTank.this.getWidget()).sendClientAction("tank-click", nbt);
+ }
+ }
+ });
+ }
+
+ public void setTankID(int tank)
+ {
+ this.tankID = tank;
+ }
+
+ public TankInfo getTank()
+ {
+ return Window.get(this).getContainer().getTankInfo(this.tankID);
+ }
+
+ public boolean isTankValid()
+ {
+ return !getTank().isEmpty();
+ }
+
+ public int getTankCapacity()
+ {
+ return (int)getTank().getCapacity();
+ }
+
+ public void onRenderBackground()
+ {
+ CraftGUI.Render.texture(this.horizontal ? CraftGUITexture.HorizontalLiquidTank : CraftGUITexture.LiquidTank, IPoint.ZERO);
+ if ((isMouseOver()) && (Window.get(this).getGui().isHelpMode()))
+ {
+ int c = -1442840576 + MinecraftTooltip.getOutline(Tooltip.Type.Help);
+ CraftGUI.Render.gradientRect(getArea().inset(1), c, c);
+ }
+ else if (tankError.contains(Integer.valueOf(this.tankID)))
+ {
+ int c = -1442840576 + MinecraftTooltip.getOutline(MinecraftTooltip.Type.Error);
+ CraftGUI.Render.gradientRect(getArea().inset(1), c, c);
+ }
+ else if (getSuperParent().getMousedOverWidget() == this)
+ {
+ if (Window.get(this).getGui().getDraggedItem() != null) {
+ CraftGUI.Render.gradientRect(getArea().inset(1), -1426089575, -1426089575);
+ } else {
+ CraftGUI.Render.gradientRect(getArea().inset(1), -2130706433, -2130706433);
+ }
+ }
+ if (isTankValid())
+ {
+ Object content = null;
+
+ float height = this.horizontal ? 16.0F : 58.0F;
+
+ int squaled = (int)(height * (getTank().getAmount() / getTank().getCapacity()));
+
+
+
+ int yPos = (int)height + 1;
+
+ Fluid fluid = getTank().liquid.getFluid();
+
+ int hex = fluid.getColor(getTank().liquid);
+
+ int r = (hex & 0xFF0000) >> 16;
+ int g = (hex & 0xFF00) >> 8;
+ int b = hex & 0xFF;
+
+ GL11.glColor4f(r / 255.0F, g / 255.0F, b / 255.0F, 1.0F);
+
+ GL11.glEnable(3042);
+
+ GL11.glBlendFunc(770, 771);
+
+ IPoint pos = getAbsolutePosition();
+ IPoint offset = new IPoint(0.0F, height - squaled);
+ IArea limited = getArea().inset(1);
+ if (this.horizontal) {
+ limited.setSize(new IPoint(limited.w() - 1.0F, limited.h()));
+ }
+ CraftGUI.Render.limitArea(new IArea(limited.pos().add(pos).add(offset), limited.size().sub(offset)));
+
+
+ GL11.glEnable(3089);
+
+ BinnieCore.proxy.bindTexture(TextureMap.locationItemsTexture);
+ for (int y = 0; y < height; y += 16) {
+ for (int x = 0; x < (this.horizontal ? 58 : 16); x += 16)
+ {
+ IIcon icon = fluid.getIcon();
+
+ CraftGUI.Render.iconBlock(new IPoint(1 + x, 1 + y), icon);
+ }
+ }
+ GL11.glDisable(3089);
+ GL11.glDisable(3042);
+ }
+ }
+
+ public void onRenderForeground()
+ {
+ CraftGUI.Render.texture(this.horizontal ? CraftGUITexture.HorizontalLiquidTankOverlay : CraftGUITexture.LiquidTankOverlay, IPoint.ZERO);
+ if ((isMouseOver()) && (Window.get(this).getGui().isHelpMode()))
+ {
+ IArea area = getArea();
+ CraftGUI.Render.colour(MinecraftTooltip.getOutline(Tooltip.Type.Help));
+ CraftGUI.Render.texture(CraftGUITexture.Outline, area.outset(1));
+ }
+ if (tankError.contains(Integer.valueOf(this.tankID)))
+ {
+ IArea area = getArea();
+ CraftGUI.Render.colour(MinecraftTooltip.getOutline(MinecraftTooltip.Type.Error));
+ CraftGUI.Render.texture(CraftGUITexture.Outline, area.outset(1));
+ }
+ }
+
+ public void getHelpTooltip(Tooltip tooltip)
+ {
+ if (getTankSlot() != null)
+ {
+ TankSlot slot = getTankSlot();
+ tooltip.add(slot.getName());
+ tooltip.add("Capacity: " + getTankCapacity() + " mB");
+ tooltip.add("Insert Side: " + MachineSide.asString(slot.getInputSides()));
+ tooltip.add("Extract Side: " + MachineSide.asString(slot.getOutputSides()));
+ if (slot.isReadOnly()) {
+ tooltip.add("Output Only Tank");
+ }
+ tooltip.add("Accepts: " + (slot.getValidator() == null ? "Any Item" : slot.getValidator().getTooltip()));
+
+ return;
+ }
+ }
+
+ public void getTooltip(Tooltip tooltip)
+ {
+ if (isTankValid())
+ {
+ int percentage = (int)(100.0D * getTank().getAmount() / getTankCapacity());
+
+ tooltip.add(getTank().getName());
+
+ tooltip.add(percentage + "% full");
+ tooltip.add((int)getTank().getAmount() + " mB");
+
+
+
+ return;
+ }
+ tooltip.add("Empty");
+ }
+
+ private TankSlot getTankSlot()
+ {
+ ITankMachine tank = (ITankMachine)Machine.getInterface(ITankMachine.class, Window.get(this).getInventory());
+
+ return tank != null ? tank.getTankSlot(this.tankID) : null;
+ }
+}
diff --git a/src/Java/binnie/craftgui/minecraft/control/ControlMachineProgress.java b/src/Java/binnie/craftgui/minecraft/control/ControlMachineProgress.java
new file mode 100644
index 0000000000..f2a64e3e38
--- /dev/null
+++ b/src/Java/binnie/craftgui/minecraft/control/ControlMachineProgress.java
@@ -0,0 +1,14 @@
+package binnie.craftgui.minecraft.control;
+
+import binnie.craftgui.core.IWidget;
+import binnie.craftgui.core.geometry.Position;
+import binnie.craftgui.resource.Texture;
+
+public class ControlMachineProgress
+ extends ControlProgress
+{
+ public ControlMachineProgress(IWidget parent, int x, int y, Texture base, Texture progress, Position dir)
+ {
+ super(parent, x, y, base, progress, dir);
+ }
+}
diff --git a/src/Java/binnie/craftgui/minecraft/control/ControlPlayerInventory.java b/src/Java/binnie/craftgui/minecraft/control/ControlPlayerInventory.java
new file mode 100644
index 0000000000..f15d102789
--- /dev/null
+++ b/src/Java/binnie/craftgui/minecraft/control/ControlPlayerInventory.java
@@ -0,0 +1,108 @@
+package binnie.craftgui.minecraft.control;
+
+import binnie.craftgui.controls.core.Control;
+import binnie.craftgui.core.IWidget;
+import binnie.craftgui.core.geometry.IPoint;
+import binnie.craftgui.minecraft.InventoryType;
+import java.util.ArrayList;
+import java.util.List;
+import net.minecraft.inventory.IInventory;
+import net.minecraft.inventory.Slot;
+import net.minecraft.item.ItemStack;
+
+public class ControlPlayerInventory
+ extends Control
+{
+ private List<ControlSlot> slots = new ArrayList();
+
+ public ControlPlayerInventory(IWidget parent, boolean wide)
+ {
+ super(parent, (int)(parent.getSize().x() / 2.0F) - (wide ? 110 : 81), (int)parent.getSize().y() - (wide ? 54 : 76) - 12, wide ? 'Ü' : '¢', wide ? 54 : 76);
+ for (int row = 0; row < 3; row++) {
+ for (int column = 0; column < 9; column++)
+ {
+ ControlSlot slot = new ControlSlot(this, (wide ? 58 : 0) + column * 18, row * 18);
+ this.slots.add(slot);
+ }
+ }
+ if (wide) {
+ for (int i1 = 0; i1 < 9; i1++)
+ {
+ ControlSlot slot = new ControlSlot(this, i1 % 3 * 18, i1 / 3 * 18);
+ this.slots.add(slot);
+ }
+ } else {
+ for (int i1 = 0; i1 < 9; i1++)
+ {
+ ControlSlot slot = new ControlSlot(this, i1 * 18, 58.0F);
+ this.slots.add(slot);
+ }
+ }
+ create();
+ }
+
+ public ControlPlayerInventory(IWidget parent)
+ {
+ this(parent, false);
+ }
+
+ public ControlPlayerInventory(IWidget parent, int x, int y)
+ {
+ super(parent, x, y, 54.0F, 220.0F);
+ for (int row = 0; row < 6; row++) {
+ for (int column = 0; column < 6; column++)
+ {
+ ControlSlot slot = new ControlSlot(this, column * 18, row * 18);
+ this.slots.add(slot);
+ }
+ }
+ create();
+ }
+
+ public void create()
+ {
+ for (int row = 0; row < 3; row++) {
+ for (int column = 0; column < 9; column++)
+ {
+ ControlSlot slot = (ControlSlot)this.slots.get(column + row * 9);
+ slot.assign(InventoryType.Player, 9 + column + row * 9);
+ }
+ }
+ for (int i1 = 0; i1 < 9; i1++)
+ {
+ ControlSlot slot = (ControlSlot)this.slots.get(27 + i1);
+ slot.assign(InventoryType.Player, i1);
+ }
+ }
+
+ public void addItem(ItemStack item)
+ {
+ if (item == null) {
+ return;
+ }
+ for (ControlSlot slot : this.slots) {
+ if (!slot.slot.getHasStack())
+ {
+ slot.slot.putStack(item);
+ return;
+ }
+ }
+ }
+
+ public void addInventory(IInventory inventory)
+ {
+ for (int i = 0; i < inventory.getSizeInventory(); i++) {
+ addItem(inventory.getStackInSlot(i));
+ }
+ }
+
+ public ControlSlot getSlot(int i)
+ {
+ if ((i < 0) || (i >= this.slots.size())) {
+ return null;
+ }
+ return (ControlSlot)this.slots.get(i);
+ }
+
+ public void onUpdateClient() {}
+}
diff --git a/src/Java/binnie/craftgui/minecraft/control/ControlPowerSystem.java b/src/Java/binnie/craftgui/minecraft/control/ControlPowerSystem.java
new file mode 100644
index 0000000000..b0f522b180
--- /dev/null
+++ b/src/Java/binnie/craftgui/minecraft/control/ControlPowerSystem.java
@@ -0,0 +1,39 @@
+package binnie.craftgui.minecraft.control;
+
+import binnie.core.machines.power.PowerSystem;
+import binnie.craftgui.controls.core.Control;
+import binnie.craftgui.core.Attribute;
+import binnie.craftgui.core.CraftGUI;
+import binnie.craftgui.core.ITooltip;
+import binnie.craftgui.core.IWidget;
+import binnie.craftgui.core.Tooltip;
+import binnie.craftgui.core.Tooltip.Type;
+import binnie.craftgui.core.renderer.Renderer;
+import binnie.craftgui.resource.minecraft.CraftGUITexture;
+
+public class ControlPowerSystem
+ extends Control
+ implements ITooltip
+{
+ private PowerSystem system;
+
+ public ControlPowerSystem(IWidget parent, float x, float y, PowerSystem system)
+ {
+ super(parent, x, y, 16.0F, 16.0F);
+ addAttribute(Attribute.MouseOver);
+ this.system = system;
+ }
+
+ public void onRenderBackground()
+ {
+ CraftGUI.Render.texture(CraftGUITexture.PowerButton, getArea());
+ }
+
+ public void getTooltip(Tooltip tooltip)
+ {
+ tooltip.setType(Tooltip.Type.Power);
+ tooltip.add("Power Supply");
+ tooltip.add("Powered by " + this.system.getUnitName());
+ tooltip.setMaxWidth(200);
+ }
+}
diff --git a/src/Java/binnie/craftgui/minecraft/control/ControlProgress.java b/src/Java/binnie/craftgui/minecraft/control/ControlProgress.java
new file mode 100644
index 0000000000..6508c84107
--- /dev/null
+++ b/src/Java/binnie/craftgui/minecraft/control/ControlProgress.java
@@ -0,0 +1,30 @@
+package binnie.craftgui.minecraft.control;
+
+import binnie.craftgui.core.CraftGUI;
+import binnie.craftgui.core.IWidget;
+import binnie.craftgui.core.geometry.Position;
+import binnie.craftgui.core.renderer.Renderer;
+import binnie.craftgui.resource.Texture;
+
+public class ControlProgress
+ extends ControlProgressBase
+{
+ private Texture progressBlank;
+ private Texture progressBar;
+ private Position direction;
+
+ public ControlProgress(IWidget parent, int x, int y, Texture progressBlank, Texture progressBar, Position dir)
+ {
+ super(parent, x, y, progressBlank == null ? 0.0F : progressBlank.w(), progressBlank == null ? 0.0F : progressBlank.h());
+ this.progressBlank = progressBlank;
+ this.progressBar = progressBar;
+ this.progress = 0.0F;
+ this.direction = dir;
+ }
+
+ public void onRenderBackground()
+ {
+ CraftGUI.Render.texture(this.progressBlank, getArea());
+ CraftGUI.Render.texturePercentage(this.progressBar, getArea(), this.direction, this.progress);
+ }
+}
diff --git a/src/Java/binnie/craftgui/minecraft/control/ControlProgressBase.java b/src/Java/binnie/craftgui/minecraft/control/ControlProgressBase.java
new file mode 100644
index 0000000000..f7e2ef4f39
--- /dev/null
+++ b/src/Java/binnie/craftgui/minecraft/control/ControlProgressBase.java
@@ -0,0 +1,100 @@
+package binnie.craftgui.minecraft.control;
+
+import binnie.core.machines.IMachine;
+import binnie.core.machines.Machine;
+import binnie.core.machines.power.IProcess;
+import binnie.core.machines.power.ProcessInfo;
+import binnie.craftgui.controls.core.Control;
+import binnie.craftgui.core.Attribute;
+import binnie.craftgui.core.IWidget;
+import binnie.craftgui.core.Tooltip;
+import binnie.craftgui.minecraft.ContainerCraftGUI;
+import binnie.craftgui.minecraft.Window;
+
+public class ControlProgressBase
+ extends Control
+{
+ protected float progress;
+
+ public ControlProgressBase(IWidget parent, float x, float y, float w, float h)
+ {
+ super(parent, x, y, w, h);
+ this.progress = 0.0F;
+ addAttribute(Attribute.MouseOver);
+ }
+
+ public void setProgress(float progress)
+ {
+ this.progress = progress;
+ if (this.progress < 0.0F) {
+ this.progress = 0.0F;
+ } else if (this.progress > 1.0F) {
+ this.progress = 1.0F;
+ }
+ }
+
+ protected ProcessInfo getProcess()
+ {
+ return Window.get(this).getContainer().getProcessInfo();
+ }
+
+ public void onUpdateClient()
+ {
+ ProcessInfo process = getProcess();
+ if (process != null) {
+ setProgress(process.getCurrentProgress() / 100.0F);
+ }
+ }
+
+ public void getHelpTooltip(Tooltip tooltip)
+ {
+ ProcessInfo process = getProcess();
+
+ IProcess machineProcess = (IProcess)Machine.getMachine(Window.get(this).getInventory()).getInterface(IProcess.class);
+ if (process != null)
+ {
+ tooltip.add("Progress");
+ if (this.progress == 0.0F) {
+ tooltip.add("Not in Progress");
+ } else if (process.getProcessTime() > 0) {
+ tooltip.add(machineProcess.getTooltip() + " (" + (int)process.getCurrentProgress() + "%)");
+ } else {
+ tooltip.add("In Progress");
+ }
+ if (process.getProcessTime() > 0)
+ {
+ tooltip.add("Time Left: " + convertTime((int)((1.0F - this.progress) * process.getProcessTime())));
+
+ tooltip.add("Total Time: " + convertTime(process.getProcessTime()));
+ tooltip.add("Energy Cost: " + process.getProcessEnergy() * 10 + " RF");
+ }
+ else
+ {
+ tooltip.add("Energy Cost: " + process.getEnergyPerTick() * 10.0F + " RF / tick");
+ }
+ }
+ }
+
+ public static String convertTime(int time)
+ {
+ int seconds = (int)(time / 20.0F);
+ int minutes = 0;
+ while (seconds >= 60)
+ {
+ minutes++;
+ seconds -= 60;
+ }
+ String ts = "";
+ if (minutes > 0) {
+ ts = ts + minutes + " minute" + (minutes == 1 ? "" : "s");
+ }
+ if (seconds > 0)
+ {
+ if (ts.length() > 0) {
+ ts = ts + " ";
+ }
+ ts = ts + seconds + " second" + (seconds == 1 ? "" : "s");
+ }
+ return ts;
+ }
+}
diff --git a/src/Java/binnie/craftgui/minecraft/control/ControlSlide.java b/src/Java/binnie/craftgui/minecraft/control/ControlSlide.java
new file mode 100644
index 0000000000..44cfe0fd37
--- /dev/null
+++ b/src/Java/binnie/craftgui/minecraft/control/ControlSlide.java
@@ -0,0 +1,113 @@
+package binnie.craftgui.minecraft.control;
+
+import binnie.craftgui.controls.core.Control;
+import binnie.craftgui.core.Attribute;
+import binnie.craftgui.core.CraftGUI;
+import binnie.craftgui.core.IWidget;
+import binnie.craftgui.core.geometry.IArea;
+import binnie.craftgui.core.geometry.IBorder;
+import binnie.craftgui.core.geometry.IPoint;
+import binnie.craftgui.core.geometry.Position;
+import binnie.craftgui.core.geometry.TextJustification;
+import binnie.craftgui.core.renderer.Renderer;
+import binnie.craftgui.resource.Texture;
+import binnie.craftgui.resource.minecraft.CraftGUITexture;
+import org.lwjgl.opengl.GL11;
+
+public class ControlSlide
+ extends Control
+{
+ private IArea expanded;
+ private IArea shrunk;
+ private boolean slideActive = true;
+ private Position anchor;
+ private String label = null;
+
+ public ControlSlide(IWidget parent, float x, float y, float w, float h, Position anchor2)
+ {
+ super(parent, x, y, w, h);
+ addAttribute(Attribute.MouseOver);
+ addAttribute(Attribute.BlockTooltip);
+ this.expanded = new IArea(getPosition(), getSize());
+ this.anchor = anchor2.opposite();
+ float border = this.anchor.x() != 0 ? this.expanded.w() - 6.0F : this.expanded.h() - 6.0F;
+ this.shrunk = this.expanded.inset(new IBorder(this.anchor, border));
+
+
+ this.slideActive = false;
+ }
+
+ public void onRenderBackground()
+ {
+ super.onRenderBackground();
+ if (this.label != null)
+ {
+ float lw = CraftGUI.Render.textWidth(this.label) + 16;
+ float lh = CraftGUI.Render.textHeight() + 16;
+ boolean hor = this.anchor.x() != 0;
+ IArea ar = isSlideActive() ? this.expanded : this.shrunk;
+ IArea tabArea = new IArea(hor ? -lh / 2.0F : -lw / 2.0F, hor ? -lw / 2.0F : -lh / 2.0F, hor ? lh : lw, hor ? lw : lh);
+ IPoint shift = new IPoint(ar.w() * (1 - this.anchor.x()) / 2.0F, ar.h() * (1 - this.anchor.y()) / 2.0F);
+
+
+
+
+ tabArea = tabArea.shift(shift.x() - (-3.0F + lh / 2.0F) * this.anchor.x(), shift.y() - (-3.0F + lh / 2.0F) * this.anchor.y());
+ Texture texture = CraftGUI.Render.getTexture(isSlideActive() ? CraftGUITexture.Tab : CraftGUITexture.TabDisabled).crop(this.anchor.opposite(), 8.0F);
+ CraftGUI.Render.texture(texture, tabArea);
+ texture = CraftGUI.Render.getTexture(CraftGUITexture.TabOutline).crop(this.anchor.opposite(), 8.0F);
+ CraftGUI.Render.texture(texture, tabArea.inset(2));
+ IArea labelArea = new IArea(-lw / 2.0F, 0.0F, lw, lh);
+ GL11.glPushMatrix();
+ GL11.glTranslatef(shift.x() + this.anchor.x() * 2.0F, shift.y() + this.anchor.y() * 2.0F, 0.0F);
+ if (this.anchor.x() != 0) {
+ GL11.glRotatef(90.0F, 0.0F, 0.0F, this.anchor.x());
+ }
+ if (this.anchor.y() > 0) {
+ GL11.glTranslatef(0.0F, -lh, 0.0F);
+ }
+ CraftGUI.Render.text(labelArea, TextJustification.MiddleCenter, this.label, 16777215);
+ GL11.glPopMatrix();
+ }
+ CraftGUI.Render.texture(CraftGUITexture.Window, getArea());
+ Object slideTexture = this.anchor == Position.Left ? CraftGUITexture.SlideLeft : this.anchor == Position.Top ? CraftGUITexture.SlideUp : this.anchor == Position.Bottom ? CraftGUITexture.SlideDown : CraftGUITexture.SlideRight;
+
+ CraftGUI.Render.texture(slideTexture, new IPoint((this.anchor.x() + 1.0F) * w() / 2.0F - 8.0F, (this.anchor.y() + 1.0F) * h() / 2.0F - 8.0F));
+ }
+
+ public boolean isSlideActive()
+ {
+ return this.slideActive;
+ }
+
+ public void onUpdateClient()
+ {
+ boolean mouseOver = isMouseOverWidget(getRelativeMousePosition());
+ if (mouseOver != this.slideActive) {
+ setSlide(mouseOver);
+ }
+ }
+
+ public boolean isMouseOverWidget(IPoint relativeMouse)
+ {
+ return getArea().outset(isSlideActive() ? 16 : 8).outset(new IBorder(this.anchor.opposite(), 16.0F)).contains(relativeMouse);
+ }
+
+ public boolean isChildVisible(IWidget child)
+ {
+ return this.slideActive;
+ }
+
+ public void setSlide(boolean b)
+ {
+ this.slideActive = b;
+ IArea area = isSlideActive() ? this.expanded : this.shrunk;
+ setSize(area.size());
+ setPosition(area.pos());
+ }
+
+ public void setLabel(String l)
+ {
+ this.label = l;
+ }
+}
diff --git a/src/Java/binnie/craftgui/minecraft/control/ControlSlot.java b/src/Java/binnie/craftgui/minecraft/control/ControlSlot.java
new file mode 100644
index 0000000000..c3de12acaa
--- /dev/null
+++ b/src/Java/binnie/craftgui/minecraft/control/ControlSlot.java
@@ -0,0 +1,221 @@
+package binnie.craftgui.minecraft.control;
+
+import binnie.core.machines.inventory.InventorySlot;
+import binnie.core.machines.inventory.MachineSide;
+import binnie.core.machines.inventory.SlotValidator;
+import binnie.craftgui.core.CraftGUI;
+import binnie.craftgui.core.ITopLevelWidget;
+import binnie.craftgui.core.IWidget;
+import binnie.craftgui.core.Tooltip;
+import binnie.craftgui.core.geometry.IArea;
+import binnie.craftgui.core.geometry.IPoint;
+import binnie.craftgui.core.renderer.Renderer;
+import binnie.craftgui.events.EventMouse.Down;
+import binnie.craftgui.events.EventMouse.Down.Handler;
+import binnie.craftgui.minecraft.ContainerCraftGUI;
+import binnie.craftgui.minecraft.CustomSlot;
+import binnie.craftgui.minecraft.GuiCraftGUI;
+import binnie.craftgui.minecraft.InventoryType;
+import binnie.craftgui.minecraft.Window;
+import binnie.craftgui.minecraft.WindowInventory;
+import binnie.craftgui.resource.minecraft.CraftGUITexture;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+import net.minecraft.client.Minecraft;
+import net.minecraft.client.gui.GuiScreen;
+import net.minecraft.client.multiplayer.PlayerControllerMP;
+import net.minecraft.entity.player.InventoryPlayer;
+import net.minecraft.inventory.Slot;
+import net.minecraft.item.ItemStack;
+import net.minecraft.util.IIcon;
+
+public class ControlSlot
+ extends ControlSlotBase
+{
+ public static Map<EnumHighlighting, List<Integer>> highlighting = new HashMap();
+ public static boolean shiftClickActive = false;
+
+ static
+ {
+ for (EnumHighlighting h : EnumHighlighting.values()) {
+ highlighting.put(h, new ArrayList());
+ }
+ }
+
+ public Slot slot = null;
+
+ public ControlSlot(IWidget parent, float x, float y)
+ {
+ super(parent, x, y);
+
+ addSelfEventHandler(new EventMouse.Down.Handler()
+ {
+ public void onEvent(EventMouse.Down event)
+ {
+ if (ControlSlot.this.slot != null)
+ {
+ Window.get(ControlSlot.this.getWidget()).getGui();((Window)ControlSlot.this.getSuperParent()).getGui().getMinecraft().playerController.windowClick(((Window)ControlSlot.this.getSuperParent()).getContainer().windowId, ControlSlot.this.slot.slotNumber, event.getButton(), GuiCraftGUI.isShiftKeyDown() ? 1 : 0, ((Window)ControlSlot.this.getSuperParent()).getGui().getMinecraft().thePlayer);
+ }
+ }
+ });
+ }
+
+ public ControlSlot(IWidget parent, int x, int y, Slot slot)
+ {
+ super(parent, x, y);
+ this.slot = slot;
+ }
+
+ public void onRenderBackground()
+ {
+ CraftGUI.Render.texture(CraftGUITexture.Slot, IPoint.ZERO);
+ if (this.slot == null) {
+ return;
+ }
+ InventorySlot islot = getInventorySlot();
+ if ((islot != null) && (islot.getValidator() != null))
+ {
+ IIcon icon = islot.getValidator().getIcon(!islot.getInputSides().isEmpty());
+ if (icon != null) {
+ CraftGUI.Render.iconItem(new IPoint(1.0F, 1.0F), icon);
+ }
+ }
+ boolean highlighted = false;
+ for (Map.Entry<EnumHighlighting, List<Integer>> highlight : highlighting.entrySet()) {
+ if ((highlight.getKey() != EnumHighlighting.ShiftClick) || (shiftClickActive)) {
+ if ((!highlighted) && (((List)highlight.getValue()).contains(Integer.valueOf(this.slot.slotNumber))))
+ {
+ highlighted = true;
+
+ int c = -1442840576 + Math.min(((EnumHighlighting)highlight.getKey()).getColour(), 16777215);
+ CraftGUI.Render.gradientRect(new IArea(1.0F, 1.0F, 16.0F, 16.0F), c, c);
+ }
+ }
+ }
+ if ((!highlighted) && (getSuperParent().getMousedOverWidget() == this)) {
+ if ((Window.get(this).getGui().getDraggedItem() != null) && (!this.slot.isItemValid(Window.get(this).getGui().getDraggedItem()))) {
+ CraftGUI.Render.gradientRect(new IArea(1.0F, 1.0F, 16.0F, 16.0F), -1426089575, -1426089575);
+ } else {
+ CraftGUI.Render.gradientRect(new IArea(1.0F, 1.0F, 16.0F, 16.0F), -2130706433, -2130706433);
+ }
+ }
+ }
+
+ public void onRenderOverlay()
+ {
+ if (this.slot == null) {
+ return;
+ }
+ boolean highlighted = false;
+ for (Map.Entry<EnumHighlighting, List<Integer>> highlight : highlighting.entrySet()) {
+ if ((highlight.getKey() != EnumHighlighting.ShiftClick) || (shiftClickActive)) {
+ if ((!highlighted) && (((List)highlight.getValue()).contains(Integer.valueOf(this.slot.slotNumber))))
+ {
+ highlighted = true;
+ int c = ((EnumHighlighting)highlight.getKey()).getColour();
+ IArea area = getArea();
+ if (((getParent() instanceof ControlSlotArray)) || ((getParent() instanceof ControlPlayerInventory)))
+ {
+ area = getParent().getArea();
+ area.setPosition(IPoint.ZERO.sub(getPosition()));
+ }
+ CraftGUI.Render.colour(c);
+ CraftGUI.Render.texture(CraftGUITexture.Outline, area.outset(1));
+ }
+ }
+ }
+ }
+
+ public void onUpdateClient()
+ {
+ super.onUpdateClient();
+ if (this.slot == null) {
+ return;
+ }
+ if ((isMouseOver()) && (GuiScreen.isShiftKeyDown()))
+ {
+ Window.get(this).getContainer().setMouseOverSlot(this.slot);
+ shiftClickActive = true;
+ }
+ if (Window.get(this).getGui().isHelpMode()) {
+ if (isMouseOver()) {
+ for (ControlSlot slot2 : getControlSlots()) {
+ if (slot2.slot != null) {
+ ((List)highlighting.get(EnumHighlighting.Help)).add(Integer.valueOf(slot2.slot.slotNumber));
+ }
+ }
+ }
+ }
+ }
+
+ private List<ControlSlot> getControlSlots()
+ {
+ List<ControlSlot> slots = new ArrayList();
+ if (((getParent() instanceof ControlSlotArray)) || ((getParent() instanceof ControlPlayerInventory))) {
+ for (IWidget child : getParent().getWidgets()) {
+ slots.add((ControlSlot)child);
+ }
+ } else {
+ slots.add(this);
+ }
+ return slots;
+ }
+
+ public ItemStack getItemStack()
+ {
+ if (this.slot != null) {
+ return this.slot.getStack();
+ }
+ return null;
+ }
+
+ public ControlSlot assign(int index)
+ {
+ return assign(InventoryType.Machine, index);
+ }
+
+ public ControlSlot assign(InventoryType inventory, int index)
+ {
+ if (this.slot != null) {
+ return this;
+ }
+ this.slot = ((Window)getSuperParent()).getContainer().getOrCreateSlot(inventory, index);
+ return this;
+ }
+
+ public void getHelpTooltip(Tooltip tooltip)
+ {
+ if (this.slot == null) {
+ return;
+ }
+ InventorySlot slot = getInventorySlot();
+ if (getInventorySlot() != null)
+ {
+ tooltip.add(slot.getName());
+ tooltip.add("Insert Side: " + MachineSide.asString(slot.getInputSides()));
+ tooltip.add("Extract Side: " + MachineSide.asString(slot.getOutputSides()));
+ if (slot.isReadOnly()) {
+ tooltip.add("Pickup Only Slot");
+ }
+ tooltip.add("Accepts: " + (slot.getValidator() == null ? "Any Item" : slot.getValidator().getTooltip()));
+ }
+ else if ((this.slot.inventory instanceof WindowInventory))
+ {
+ SlotValidator s = ((WindowInventory)this.slot.inventory).getValidator(this.slot.getSlotIndex());
+ tooltip.add("Accepts: " + (s == null ? "Any Item" : s.getTooltip()));
+ }
+ else if ((this.slot.inventory instanceof InventoryPlayer))
+ {
+ tooltip.add("Player Inventory");
+ }
+ }
+
+ public InventorySlot getInventorySlot()
+ {
+ return (this.slot instanceof CustomSlot) ? ((CustomSlot)this.slot).getInventorySlot() : null;
+ }
+}
diff --git a/src/Java/binnie/craftgui/minecraft/control/ControlSlotArray.java b/src/Java/binnie/craftgui/minecraft/control/ControlSlotArray.java
new file mode 100644
index 0000000000..772b9a5f85
--- /dev/null
+++ b/src/Java/binnie/craftgui/minecraft/control/ControlSlotArray.java
@@ -0,0 +1,76 @@
+package binnie.craftgui.minecraft.control;
+
+import binnie.craftgui.controls.core.Control;
+import binnie.craftgui.core.IWidget;
+import binnie.craftgui.minecraft.InventoryType;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import net.minecraft.inventory.Slot;
+import net.minecraft.item.ItemStack;
+
+public class ControlSlotArray
+ extends Control
+ implements Iterable<ControlSlot>
+{
+ private int rows;
+ private int columns;
+ private List<ControlSlot> slots = new ArrayList();
+
+ public ControlSlotArray(IWidget parent, int x, int y, int columns, int rows)
+ {
+ super(parent, x, y, columns * 18, rows * 18);
+ this.rows = rows;
+ this.columns = columns;
+ for (int row = 0; row < rows; row++) {
+ for (int column = 0; column < columns; column++) {
+ this.slots.add(createSlot(column * 18, row * 18));
+ }
+ }
+ }
+
+ public ControlSlot createSlot(int x, int y)
+ {
+ return new ControlSlot(this, x, y);
+ }
+
+ public void setItemStacks(ItemStack[] array)
+ {
+ int i = 0;
+ for (ItemStack item : array)
+ {
+ if (i >= this.slots.size()) {
+ return;
+ }
+ ((ControlSlot)this.slots.get(i)).slot.putStack(item);
+ i++;
+ }
+ }
+
+ public ControlSlot getControlSlot(int i)
+ {
+ if ((i < 0) || (i >= this.slots.size())) {
+ return null;
+ }
+ return (ControlSlot)this.slots.get(i);
+ }
+
+ public ControlSlotArray create(int[] index)
+ {
+ return create(InventoryType.Machine, index);
+ }
+
+ public ControlSlotArray create(InventoryType type, int[] index)
+ {
+ int i = 0;
+ for (ControlSlot slot : this.slots) {
+ slot.assign(type, index[(i++)]);
+ }
+ return this;
+ }
+
+ public Iterator<ControlSlot> iterator()
+ {
+ return this.slots.iterator();
+ }
+}
diff --git a/src/Java/binnie/craftgui/minecraft/control/ControlSlotBase.java b/src/Java/binnie/craftgui/minecraft/control/ControlSlotBase.java
new file mode 100644
index 0000000000..db7b9fa973
--- /dev/null
+++ b/src/Java/binnie/craftgui/minecraft/control/ControlSlotBase.java
@@ -0,0 +1,77 @@
+package binnie.craftgui.minecraft.control;
+
+import binnie.craftgui.controls.core.Control;
+import binnie.craftgui.core.Attribute;
+import binnie.craftgui.core.CraftGUI;
+import binnie.craftgui.core.ITooltip;
+import binnie.craftgui.core.ITopLevelWidget;
+import binnie.craftgui.core.IWidget;
+import binnie.craftgui.core.Tooltip;
+import binnie.craftgui.core.geometry.IArea;
+import binnie.craftgui.core.geometry.IPoint;
+import binnie.craftgui.core.renderer.Renderer;
+import binnie.craftgui.events.EventWidget.ChangeSize;
+import binnie.craftgui.events.EventWidget.ChangeSize.Handler;
+import binnie.craftgui.minecraft.Window;
+import binnie.craftgui.resource.minecraft.CraftGUITexture;
+import net.minecraft.item.ItemStack;
+
+public abstract class ControlSlotBase
+ extends Control
+ implements ITooltip
+{
+ private ControlItemDisplay itemDisplay;
+
+ public ControlSlotBase(IWidget parent, float x, float y)
+ {
+ this(parent, x, y, 18);
+ }
+
+ public ControlSlotBase(IWidget parent, float x, float y, int size)
+ {
+ super(parent, x, y, size, size);
+ addAttribute(Attribute.MouseOver);
+ this.itemDisplay = new ControlItemDisplay(this, 1.0F, 1.0F, size - 2);
+
+ addSelfEventHandler(new EventWidget.ChangeSize.Handler()
+ {
+ public void onEvent(EventWidget.ChangeSize event)
+ {
+ if (ControlSlotBase.this.itemDisplay != null) {
+ ControlSlotBase.this.itemDisplay.setSize(ControlSlotBase.this.getSize().sub(new IPoint(2.0F, 2.0F)));
+ }
+ }
+ });
+ }
+
+ protected void setRotating()
+ {
+ this.itemDisplay.setRotating();
+ }
+
+ public void onRenderBackground()
+ {
+ int size = (int)getSize().x();
+ CraftGUI.Render.texture(CraftGUITexture.Slot, getArea());
+ if (getSuperParent().getMousedOverWidget() == this) {
+ CraftGUI.Render.gradientRect(new IArea(new IPoint(1.0F, 1.0F), getArea().size().sub(new IPoint(2.0F, 2.0F))), -2130706433, -2130706433);
+ }
+ }
+
+ public void onUpdateClient()
+ {
+ super.onUpdateClient();
+ this.itemDisplay.setItemStack(getItemStack());
+ }
+
+ public void getTooltip(Tooltip tooltip)
+ {
+ ItemStack item = getItemStack();
+ if (item == null) {
+ return;
+ }
+ tooltip.add(item.getTooltip(((Window)getSuperParent()).getPlayer(), false));
+ }
+
+ public abstract ItemStack getItemStack();
+}
diff --git a/src/Java/binnie/craftgui/minecraft/control/ControlSlotCharge.java b/src/Java/binnie/craftgui/minecraft/control/ControlSlotCharge.java
new file mode 100644
index 0000000000..eb14237a4d
--- /dev/null
+++ b/src/Java/binnie/craftgui/minecraft/control/ControlSlotCharge.java
@@ -0,0 +1,43 @@
+package binnie.craftgui.minecraft.control;
+
+import binnie.core.machines.Machine;
+import binnie.core.machines.inventory.IChargedSlots;
+import binnie.craftgui.controls.core.Control;
+import binnie.craftgui.core.CraftGUI;
+import binnie.craftgui.core.IWidget;
+import binnie.craftgui.core.Tooltip;
+import binnie.craftgui.core.geometry.IArea;
+import binnie.craftgui.core.geometry.Position;
+import binnie.craftgui.core.renderer.Renderer;
+import binnie.craftgui.minecraft.Window;
+import binnie.craftgui.resource.minecraft.CraftGUITexture;
+
+public class ControlSlotCharge
+ extends Control
+{
+ private int slot;
+
+ float getCharge()
+ {
+ IChargedSlots slots = (IChargedSlots)Machine.getInterface(IChargedSlots.class, Window.get(this).getInventory());
+ return slots == null ? 0.0F : slots.getCharge(this.slot);
+ }
+
+ public void onRenderBackground()
+ {
+ CraftGUI.Render.texture(CraftGUITexture.PanelBlack, getArea());
+
+ CraftGUI.Render.texturePercentage(CraftGUI.Render.getTexture(CraftGUITexture.SlotCharge), getArea().inset(1), Position.Bottom, getCharge());
+ }
+
+ public ControlSlotCharge(IWidget parent, int x, int y, int slot)
+ {
+ super(parent, x, y, 4.0F, 18.0F);
+ this.slot = slot;
+ }
+
+ public void getHelpTooltip(Tooltip tooltip)
+ {
+ tooltip.add("Charge Remaining: " + (int)(getCharge() * 100.0F) + "%");
+ }
+}
diff --git a/src/Java/binnie/craftgui/minecraft/control/ControlTabIcon.java b/src/Java/binnie/craftgui/minecraft/control/ControlTabIcon.java
new file mode 100644
index 0000000000..8337dc23fc
--- /dev/null
+++ b/src/Java/binnie/craftgui/minecraft/control/ControlTabIcon.java
@@ -0,0 +1,47 @@
+package binnie.craftgui.minecraft.control;
+
+import binnie.core.genetics.IItemStackRepresentitive;
+import binnie.craftgui.controls.tab.ControlTab;
+import binnie.craftgui.controls.tab.ControlTabBar;
+import binnie.craftgui.core.geometry.IPoint;
+import binnie.craftgui.core.geometry.Position;
+import net.minecraft.item.ItemStack;
+
+public class ControlTabIcon<T>
+ extends ControlTab<T>
+{
+ private ControlItemDisplay item;
+
+ public ControlTabIcon(ControlTabBar<T> parent, float x, float y, float w, float h, T value)
+ {
+ super(parent, x, y, w, h, value);
+ this.item = new ControlItemDisplay(this, -8.0F + w / 2.0F, -8.0F + h / 2.0F);
+ this.item.hastooltip = false;
+ }
+
+ public ItemStack getItemStack()
+ {
+ if ((this.value instanceof IItemStackRepresentitive)) {
+ return ((IItemStackRepresentitive)this.value).getItemStackRepresentitive();
+ }
+ return null;
+ }
+
+ public void onUpdateClient()
+ {
+ super.onUpdateClient();
+ this.item.setItemStack(getItemStack());
+ float x = ((ControlTabBar)getParent()).getDirection().x();
+ this.item.setOffset(new IPoint((isCurrentSelection()) || (isMouseOver()) ? 0.0F : -4.0F * x, 0.0F));
+ }
+
+ public boolean hasOutline()
+ {
+ return false;
+ }
+
+ public int getOutlineColour()
+ {
+ return 16777215;
+ }
+}
diff --git a/src/Java/binnie/craftgui/minecraft/control/ControlUser.java b/src/Java/binnie/craftgui/minecraft/control/ControlUser.java
new file mode 100644
index 0000000000..41c5a3c0bd
--- /dev/null
+++ b/src/Java/binnie/craftgui/minecraft/control/ControlUser.java
@@ -0,0 +1,41 @@
+package binnie.craftgui.minecraft.control;
+
+import binnie.craftgui.controls.core.Control;
+import binnie.craftgui.core.Attribute;
+import binnie.craftgui.core.CraftGUI;
+import binnie.craftgui.core.ITooltip;
+import binnie.craftgui.core.IWidget;
+import binnie.craftgui.core.Tooltip;
+import binnie.craftgui.core.Tooltip.Type;
+import binnie.craftgui.core.renderer.Renderer;
+import binnie.craftgui.resource.minecraft.CraftGUITexture;
+
+public class ControlUser
+ extends Control
+ implements ITooltip
+{
+ private String username = "";
+ String team = "";
+
+ public ControlUser(IWidget parent, float x, float y, String username)
+ {
+ super(parent, x, y, 16.0F, 16.0F);
+ addAttribute(Attribute.MouseOver);
+ this.username = username;
+ }
+
+ public void onRenderBackground()
+ {
+ CraftGUI.Render.texture(CraftGUITexture.UserButton, getArea());
+ }
+
+ public void getTooltip(Tooltip tooltip)
+ {
+ tooltip.setType(Tooltip.Type.User);
+ tooltip.add("Owner");
+ if (this.username != "") {
+ tooltip.add(this.username);
+ }
+ tooltip.setMaxWidth(200);
+ }
+}
diff --git a/src/Java/binnie/craftgui/minecraft/control/EnumHighlighting.java b/src/Java/binnie/craftgui/minecraft/control/EnumHighlighting.java
new file mode 100644
index 0000000000..7eb1f2d988
--- /dev/null
+++ b/src/Java/binnie/craftgui/minecraft/control/EnumHighlighting.java
@@ -0,0 +1,28 @@
+package binnie.craftgui.minecraft.control;
+
+import binnie.craftgui.core.Tooltip.Type;
+import binnie.craftgui.minecraft.MinecraftTooltip;
+import binnie.craftgui.minecraft.MinecraftTooltip.Type;
+
+public enum EnumHighlighting
+{
+ Error, Warning, Help, ShiftClick;
+
+ private EnumHighlighting() {}
+
+ int getColour()
+ {
+ switch (1.$SwitchMap$binnie$craftgui$minecraft$control$EnumHighlighting[ordinal()])
+ {
+ case 1:
+ return MinecraftTooltip.getOutline(MinecraftTooltip.Type.Error);
+ case 2:
+ return MinecraftTooltip.getOutline(Tooltip.Type.Help);
+ case 3:
+ return 16776960;
+ case 4:
+ return MinecraftTooltip.getOutline(MinecraftTooltip.Type.Warning);
+ }
+ return 0;
+ }
+}
diff --git a/src/Java/binnie/craftgui/minecraft/render/MinecraftTexture.java b/src/Java/binnie/craftgui/minecraft/render/MinecraftTexture.java
new file mode 100644
index 0000000000..51addcd1db
--- /dev/null
+++ b/src/Java/binnie/craftgui/minecraft/render/MinecraftTexture.java
@@ -0,0 +1,10 @@
+package binnie.craftgui.minecraft.render;
+
+import binnie.core.resource.IBinnieTexture;
+import binnie.craftgui.core.geometry.IArea;
+
+public class MinecraftTexture
+{
+ IArea textureArea = new IArea(0.0F, 0.0F, 0.0F, 0.0F);
+ IBinnieTexture texture;
+}
diff --git a/src/Java/binnie/craftgui/minecraft/render/RenderCommand.java b/src/Java/binnie/craftgui/minecraft/render/RenderCommand.java
new file mode 100644
index 0000000000..2cfa60f08a
--- /dev/null
+++ b/src/Java/binnie/craftgui/minecraft/render/RenderCommand.java
@@ -0,0 +1,16 @@
+package binnie.craftgui.minecraft.render;
+
+import binnie.craftgui.core.IWidget;
+import binnie.craftgui.minecraft.GuiCraftGUI;
+
+public abstract class RenderCommand
+{
+ IWidget widget;
+
+ public RenderCommand(IWidget widget)
+ {
+ this.widget = widget;
+ }
+
+ public abstract void render(GuiCraftGUI paramGuiCraftGUI);
+}
diff --git a/src/Java/binnie/craftgui/mod/database/ControlBranchBox.java b/src/Java/binnie/craftgui/mod/database/ControlBranchBox.java
new file mode 100644
index 0000000000..3aaf90d53a
--- /dev/null
+++ b/src/Java/binnie/craftgui/mod/database/ControlBranchBox.java
@@ -0,0 +1,20 @@
+package binnie.craftgui.mod.database;
+
+import binnie.craftgui.controls.listbox.ControlList;
+import binnie.craftgui.controls.listbox.ControlListBox;
+import binnie.craftgui.core.IWidget;
+import forestry.api.genetics.IClassification;
+
+class ControlBranchBox
+ extends ControlListBox<IClassification>
+{
+ public IWidget createOption(IClassification value, int y)
+ {
+ return new ControlBranchBoxOption((ControlList)getContent(), value, y);
+ }
+
+ public ControlBranchBox(IWidget parent, float x, float y, float width, float height)
+ {
+ super(parent, x, y, width, height, 12.0F);
+ }
+}
diff --git a/src/Java/binnie/craftgui/mod/database/ControlBranchBoxOption.java b/src/Java/binnie/craftgui/mod/database/ControlBranchBoxOption.java
new file mode 100644
index 0000000000..a3f83f403f
--- /dev/null
+++ b/src/Java/binnie/craftgui/mod/database/ControlBranchBoxOption.java
@@ -0,0 +1,14 @@
+package binnie.craftgui.mod.database;
+
+import binnie.craftgui.controls.listbox.ControlList;
+import binnie.craftgui.controls.listbox.ControlTextOption;
+import forestry.api.genetics.IClassification;
+
+class ControlBranchBoxOption
+ extends ControlTextOption<IClassification>
+{
+ public ControlBranchBoxOption(ControlList<IClassification> controlList, IClassification option, int y)
+ {
+ super(controlList, option, option.getName().contains(".") ? option.getScientific() : option.getName() == null ? option.getScientific() : option.getName(), y);
+ }
+}
diff --git a/src/Java/binnie/craftgui/mod/database/ControlBreedingProgress.java b/src/Java/binnie/craftgui/mod/database/ControlBreedingProgress.java
new file mode 100644
index 0000000000..9340a66752
--- /dev/null
+++ b/src/Java/binnie/craftgui/mod/database/ControlBreedingProgress.java
@@ -0,0 +1,41 @@
+package binnie.craftgui.mod.database;
+
+import binnie.core.genetics.BreedingSystem;
+import binnie.craftgui.controls.core.Control;
+import binnie.craftgui.core.CraftGUI;
+import binnie.craftgui.core.IWidget;
+import binnie.craftgui.core.geometry.IArea;
+import binnie.craftgui.core.geometry.IPoint;
+import binnie.craftgui.core.renderer.Renderer;
+import binnie.craftgui.resource.Texture;
+import binnie.craftgui.resource.minecraft.CraftGUITexture;
+import binnie.craftgui.resource.minecraft.CraftGUITextureSheet;
+import binnie.craftgui.resource.minecraft.StandardTexture;
+
+class ControlBreedingProgress
+ extends Control
+{
+ private static Texture Progress = new StandardTexture(80, 22, 4, 4, CraftGUITextureSheet.Controls2);
+ private float percentage;
+ private int colour;
+
+ public ControlBreedingProgress(IWidget parent, int x, int y, int width, int height, BreedingSystem system, float percentage)
+ {
+ super(parent, x, y, width, height);
+ this.percentage = percentage;
+ this.colour = system.getColour();
+ }
+
+ public void onRenderBackground()
+ {
+ CraftGUI.Render.texture(CraftGUITexture.PanelBlack, getArea());
+
+ IArea area = getArea().inset(1);
+
+ area.setSize(new IPoint(area.size().x() * this.percentage, area.size().y()));
+
+ CraftGUI.Render.colour(this.colour);
+
+ CraftGUI.Render.texture(Progress, area);
+ }
+}
diff --git a/src/Java/binnie/craftgui/mod/database/ControlDatabaseIndividualDisplay.java b/src/Java/binnie/craftgui/mod/database/ControlDatabaseIndividualDisplay.java
new file mode 100644
index 0000000000..e46cf94df7
--- /dev/null
+++ b/src/Java/binnie/craftgui/mod/database/ControlDatabaseIndividualDisplay.java
@@ -0,0 +1,120 @@
+package binnie.craftgui.mod.database;
+
+import binnie.Binnie;
+import binnie.core.genetics.BreedingSystem;
+import binnie.core.genetics.ManagerGenetics;
+import binnie.craftgui.core.Attribute;
+import binnie.craftgui.core.CraftGUI;
+import binnie.craftgui.core.ITooltip;
+import binnie.craftgui.core.IWidget;
+import binnie.craftgui.core.Tooltip;
+import binnie.craftgui.core.geometry.IPoint;
+import binnie.craftgui.core.renderer.Renderer;
+import binnie.craftgui.events.EventMouse.Down;
+import binnie.craftgui.events.EventMouse.Down.Handler;
+import binnie.craftgui.minecraft.Window;
+import binnie.craftgui.minecraft.control.ControlItemDisplay;
+import com.mojang.authlib.GameProfile;
+import forestry.api.genetics.IAlleleSpecies;
+import forestry.api.genetics.IIndividual;
+import forestry.api.genetics.ISpeciesRoot;
+import net.minecraft.util.IIcon;
+
+public class ControlDatabaseIndividualDisplay
+ extends ControlItemDisplay
+ implements ITooltip
+{
+ public void setSpecies(IAlleleSpecies species)
+ {
+ setSpecies(species, EnumDiscoveryState.Show);
+ }
+
+ public void setSpecies(IAlleleSpecies species, EnumDiscoveryState state)
+ {
+ ISpeciesRoot speciesRoot = Binnie.Genetics.getSpeciesRoot(species);
+
+ BreedingSystem system = Binnie.Genetics.getSystem(speciesRoot.getUID());
+
+ IIndividual ind = system.getSpeciesRoot().templateAsIndividual(system.getSpeciesRoot().getTemplate(species.getUID()));
+
+ super.setItemStack(system.getSpeciesRoot().getMemberStack(ind, system.getDefaultType()));
+ this.species = species;
+
+ GameProfile username = Window.get(this).getUsername();
+ if (state == EnumDiscoveryState.Undetermined) {
+ state = system.isSpeciesDiscovered(species, Window.get(this).getWorld(), username) ? EnumDiscoveryState.Discovered : EnumDiscoveryState.Undiscovered;
+ }
+ if (((Window.get(this) instanceof WindowAbstractDatabase)) &&
+ (((WindowAbstractDatabase)Window.get(this)).isNEI)) {
+ state = EnumDiscoveryState.Show;
+ }
+ this.discovered = state;
+
+ addAttribute(Attribute.MouseOver);
+ }
+
+ private IAlleleSpecies species = null;
+ EnumDiscoveryState discovered = EnumDiscoveryState.Show;
+
+ public ControlDatabaseIndividualDisplay(IWidget parent, float x, float y)
+ {
+ this(parent, x, y, 16.0F);
+ }
+
+ public ControlDatabaseIndividualDisplay(IWidget parent, float x, float y, float size)
+ {
+ super(parent, x, y, size);
+
+
+ addSelfEventHandler(new EventMouse.Down.Handler()
+ {
+ public void onEvent(EventMouse.Down event)
+ {
+ if ((event.getButton() == 0) && (ControlDatabaseIndividualDisplay.this.species != null) && (EnumDiscoveryState.Show == ControlDatabaseIndividualDisplay.this.discovered)) {
+ ((WindowAbstractDatabase)ControlDatabaseIndividualDisplay.this.getSuperParent()).gotoSpeciesDelayed(ControlDatabaseIndividualDisplay.this.species);
+ }
+ }
+ });
+ }
+
+ public void onRenderForeground()
+ {
+ IIcon icon = null;
+ if (this.species == null) {
+ return;
+ }
+ BreedingSystem system = Binnie.Genetics.getSystem(this.species.getRoot());
+ switch (2.$SwitchMap$binnie$craftgui$mod$database$EnumDiscoveryState[this.discovered.ordinal()])
+ {
+ case 1:
+ super.onRenderForeground();
+ return;
+ case 2:
+ icon = system.getDiscoveredIcon();
+ break;
+ case 3:
+ icon = system.getUndiscoveredIcon();
+ break;
+ }
+ if (icon != null) {
+ CraftGUI.Render.iconItem(IPoint.ZERO, icon);
+ }
+ }
+
+ public void getTooltip(Tooltip tooltip)
+ {
+ if (this.species != null) {
+ switch (2.$SwitchMap$binnie$craftgui$mod$database$EnumDiscoveryState[this.discovered.ordinal()])
+ {
+ case 1:
+ tooltip.add(this.species.getName());
+ break;
+ case 2:
+ tooltip.add("Discovered Species");
+ break;
+ case 3:
+ tooltip.add("Undiscovered Species");
+ }
+ }
+ }
+}
diff --git a/src/Java/binnie/craftgui/mod/database/ControlItemStackOption.java b/src/Java/binnie/craftgui/mod/database/ControlItemStackOption.java
new file mode 100644
index 0000000000..2dfa33b083
--- /dev/null
+++ b/src/Java/binnie/craftgui/mod/database/ControlItemStackOption.java
@@ -0,0 +1,38 @@
+package binnie.craftgui.mod.database;
+
+import binnie.craftgui.controls.ControlText;
+import binnie.craftgui.controls.listbox.ControlList;
+import binnie.craftgui.controls.listbox.ControlTextOption;
+import binnie.craftgui.core.Attribute;
+import binnie.craftgui.core.CraftGUI;
+import binnie.craftgui.core.geometry.CraftGUIUtil;
+import binnie.craftgui.core.geometry.IPoint;
+import binnie.craftgui.core.renderer.Renderer;
+import binnie.craftgui.minecraft.control.ControlItemDisplay;
+import net.minecraft.item.ItemStack;
+
+public class ControlItemStackOption
+ extends ControlTextOption<ItemStack>
+{
+ private ControlItemDisplay controlBee;
+
+ public ControlItemStackOption(ControlList<ItemStack> controlList, ItemStack option, int y)
+ {
+ super(controlList, option, option.getDisplayName(), y);
+ setSize(new IPoint(getSize().x(), 20.0F));
+
+ this.controlBee = new ControlItemDisplay(this, 2.0F, 2.0F);
+ this.controlBee.setItemStack(option);
+
+ addAttribute(Attribute.MouseOver);
+
+ CraftGUIUtil.moveWidget(this.textWidget, new IPoint(22.0F, 0.0F));
+ this.textWidget.setSize(this.textWidget.getSize().sub(new IPoint(24.0F, 0.0F)));
+
+ int th = (int)CraftGUI.Render.textHeight(this.textWidget.getValue(), this.textWidget.getSize().x());
+ int height = Math.max(20, th + 6);
+ setSize(new IPoint(size().x(), height));
+ this.textWidget.setSize(new IPoint(this.textWidget.getSize().x(), height));
+ this.controlBee.setPosition(new IPoint(this.controlBee.pos().x(), (height - 18) / 2));
+ }
+}
diff --git a/src/Java/binnie/craftgui/mod/database/ControlMutationBox.java b/src/Java/binnie/craftgui/mod/database/ControlMutationBox.java
new file mode 100644
index 0000000000..62cdda8dcf
--- /dev/null
+++ b/src/Java/binnie/craftgui/mod/database/ControlMutationBox.java
@@ -0,0 +1,71 @@
+package binnie.craftgui.mod.database;
+
+import binnie.core.genetics.BreedingSystem;
+import binnie.craftgui.controls.listbox.ControlList;
+import binnie.craftgui.controls.listbox.ControlListBox;
+import binnie.craftgui.core.IWidget;
+import binnie.craftgui.minecraft.Window;
+import forestry.api.genetics.IAlleleSpecies;
+import forestry.api.genetics.IMutation;
+import java.util.List;
+
+class ControlMutationBox
+ extends ControlListBox<IMutation>
+{
+ private int index;
+ private Type type;
+
+ public IWidget createOption(IMutation value, int y)
+ {
+ return new ControlMutationItem((ControlList)getContent(), value, this.species, y);
+ }
+
+ static enum Type
+ {
+ Resultant, Further;
+
+ private Type() {}
+ }
+
+ public ControlMutationBox(IWidget parent, int x, int y, int width, int height, Type type)
+ {
+ super(parent, x, y, width, height, 12.0F);
+ this.type = type;
+ }
+
+ private IAlleleSpecies species = null;
+
+ public void setSpecies(IAlleleSpecies species)
+ {
+ if (species != this.species)
+ {
+ this.species = species;
+ this.index = 0;
+ movePercentage(-100.0F);
+
+ BreedingSystem system = ((WindowAbstractDatabase)getSuperParent()).getBreedingSystem();
+
+ List<IMutation> discovered = system.getDiscoveredMutations(Window.get(this).getWorld(), Window.get(this).getUsername());
+ if (species != null) {
+ if (this.type == Type.Resultant)
+ {
+ setOptions(system.getResultantMutations(species));
+ }
+ else
+ {
+ List<IMutation> mutations = system.getFurtherMutations(species);
+ for (int i = 0; i < mutations.size();)
+ {
+ IMutation mutation = (IMutation)mutations.get(i);
+ if ((!discovered.contains(mutations)) && (!((IAlleleSpecies)mutation.getTemplate()[0]).isCounted())) {
+ mutations.remove(i);
+ } else {
+ i++;
+ }
+ }
+ setOptions(mutations);
+ }
+ }
+ }
+ }
+}
diff --git a/src/Java/binnie/craftgui/mod/database/ControlMutationItem.java b/src/Java/binnie/craftgui/mod/database/ControlMutationItem.java
new file mode 100644
index 0000000000..630294e458
--- /dev/null
+++ b/src/Java/binnie/craftgui/mod/database/ControlMutationItem.java
@@ -0,0 +1,51 @@
+package binnie.craftgui.mod.database;
+
+import binnie.core.genetics.BreedingSystem;
+import binnie.craftgui.controls.listbox.ControlList;
+import binnie.craftgui.controls.listbox.ControlOption;
+import binnie.craftgui.minecraft.Window;
+import forestry.api.genetics.IAlleleSpecies;
+import forestry.api.genetics.IMutation;
+
+class ControlMutationItem
+ extends ControlOption<IMutation>
+{
+ private ControlDatabaseIndividualDisplay itemWidget1;
+ private ControlDatabaseIndividualDisplay itemWidget2;
+ private ControlDatabaseIndividualDisplay itemWidget3;
+ private ControlMutationSymbol addSymbol;
+ private ControlMutationSymbol arrowSymbol;
+
+ public ControlMutationItem(ControlList<IMutation> controlList, IMutation option, IAlleleSpecies species, int y)
+ {
+ super(controlList, option, y);
+ this.itemWidget1 = new ControlDatabaseIndividualDisplay(this, 4.0F, 4.0F);
+ this.itemWidget2 = new ControlDatabaseIndividualDisplay(this, 44.0F, 4.0F);
+ this.itemWidget3 = new ControlDatabaseIndividualDisplay(this, 104.0F, 4.0F);
+ this.addSymbol = new ControlMutationSymbol(this, 24, 4, 0);
+ this.arrowSymbol = new ControlMutationSymbol(this, 64, 4, 1);
+
+ boolean isNEI = ((WindowAbstractDatabase)getSuperParent()).isNEI();
+ BreedingSystem system = ((WindowAbstractDatabase)getSuperParent()).getBreedingSystem();
+ if (getValue() != null)
+ {
+ boolean isMutationDiscovered = system.isMutationDiscovered((IMutation)getValue(), Window.get(this).getWorld(), Window.get(this).getUsername());
+
+
+ IAlleleSpecies allele = null;
+ EnumDiscoveryState state = null;
+
+ allele = (IAlleleSpecies)((IMutation)getValue()).getAllele0();
+ state = species == allele ? EnumDiscoveryState.Show : (isNEI) || (isMutationDiscovered) ? EnumDiscoveryState.Show : EnumDiscoveryState.Undetermined;
+ this.itemWidget1.setSpecies(allele, state);
+ allele = (IAlleleSpecies)((IMutation)getValue()).getAllele1();
+ state = species == allele ? EnumDiscoveryState.Show : (isNEI) || (isMutationDiscovered) ? EnumDiscoveryState.Show : EnumDiscoveryState.Undetermined;
+ this.itemWidget2.setSpecies(allele, state);
+ allele = (IAlleleSpecies)((IMutation)getValue()).getTemplate()[0];
+ state = species == allele ? EnumDiscoveryState.Show : (isNEI) || (isMutationDiscovered) ? EnumDiscoveryState.Show : EnumDiscoveryState.Undetermined;
+ this.itemWidget3.setSpecies(allele, state);
+ this.addSymbol.setValue((IMutation)getValue());
+ this.arrowSymbol.setValue((IMutation)getValue());
+ }
+ }
+}
diff --git a/src/Java/binnie/craftgui/mod/database/ControlMutationSymbol.java b/src/Java/binnie/craftgui/mod/database/ControlMutationSymbol.java
new file mode 100644
index 0000000000..5c8bdc0aed
--- /dev/null
+++ b/src/Java/binnie/craftgui/mod/database/ControlMutationSymbol.java
@@ -0,0 +1,80 @@
+package binnie.craftgui.mod.database;
+
+import binnie.core.genetics.BreedingSystem;
+import binnie.craftgui.controls.core.Control;
+import binnie.craftgui.core.Attribute;
+import binnie.craftgui.core.CraftGUI;
+import binnie.craftgui.core.ITooltip;
+import binnie.craftgui.core.IWidget;
+import binnie.craftgui.core.Tooltip;
+import binnie.craftgui.core.geometry.IPoint;
+import binnie.craftgui.core.renderer.Renderer;
+import binnie.craftgui.minecraft.Window;
+import binnie.craftgui.resource.Texture;
+import binnie.craftgui.resource.minecraft.CraftGUITextureSheet;
+import binnie.craftgui.resource.minecraft.StandardTexture;
+import forestry.api.genetics.IAllele;
+import forestry.api.genetics.IMutation;
+
+class ControlMutationSymbol
+ extends Control
+ implements ITooltip
+{
+ private static Texture MutationPlus = new StandardTexture(2, 94, 16, 16, CraftGUITextureSheet.Controls2);
+ private static Texture MutationArrow = new StandardTexture(20, 94, 32, 16, CraftGUITextureSheet.Controls2);
+ private IMutation value;
+ private boolean discovered;
+ private int type;
+
+ public void onRenderBackground()
+ {
+ super.onRenderBackground();
+ if (this.type == 0) {
+ CraftGUI.Render.texture(MutationPlus, IPoint.ZERO);
+ } else {
+ CraftGUI.Render.texture(MutationArrow, IPoint.ZERO);
+ }
+ }
+
+ protected ControlMutationSymbol(IWidget parent, int x, int y, int type)
+ {
+ super(parent, x, y, 16 + type * 16, 16.0F);
+ this.value = null;
+ this.type = type;
+ addAttribute(Attribute.MouseOver);
+ }
+
+ public void setValue(IMutation value)
+ {
+ this.value = value;
+
+ boolean isNEI = ((WindowAbstractDatabase)getSuperParent()).isNEI();
+ BreedingSystem system = ((WindowAbstractDatabase)getSuperParent()).getBreedingSystem();
+
+ this.discovered = (isNEI ? true : system.isMutationDiscovered(value, Window.get(this).getWorld(), Window.get(this).getUsername()));
+ if (this.discovered) {
+ setColour(16777215);
+ } else {
+ setColour(7829367);
+ }
+ }
+
+ public void getTooltip(Tooltip tooltip)
+ {
+ if ((this.type == 1) && (this.discovered))
+ {
+ IAllele species1 = this.value.getAllele0();
+ IAllele species2 = this.value.getAllele1();
+
+ BreedingSystem system = ((WindowAbstractDatabase)getSuperParent()).getBreedingSystem();
+
+ float chance = system.getChance(this.value, Window.get(this).getPlayer(), species1, species2);
+ tooltip.add("Current Chance - " + chance + "%");
+ if (this.value.getSpecialConditions() != null) {
+ for (String string : this.value.getSpecialConditions()) {
+ tooltip.add(string);
+ }
+ }
+ }
+ }
+}
diff --git a/src/Java/binnie/craftgui/mod/database/ControlSpeciesBox.java b/src/Java/binnie/craftgui/mod/database/ControlSpeciesBox.java
new file mode 100644
index 0000000000..4f184b0064
--- /dev/null
+++ b/src/Java/binnie/craftgui/mod/database/ControlSpeciesBox.java
@@ -0,0 +1,55 @@
+package binnie.craftgui.mod.database;
+
+import binnie.core.genetics.BreedingSystem;
+import binnie.craftgui.controls.listbox.ControlList;
+import binnie.craftgui.controls.listbox.ControlListBox;
+import binnie.craftgui.core.IWidget;
+import binnie.craftgui.minecraft.Window;
+import com.mojang.authlib.GameProfile;
+import forestry.api.genetics.IAlleleSpecies;
+import forestry.api.genetics.IClassification;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import net.minecraft.entity.player.EntityPlayer;
+
+public class ControlSpeciesBox
+ extends ControlListBox<IAlleleSpecies>
+{
+ public IWidget createOption(IAlleleSpecies value, int y)
+ {
+ return new ControlSpeciexBoxOption((ControlList)getContent(), value, y);
+ }
+
+ public ControlSpeciesBox(IWidget parent, float x, float y, float width, float height)
+ {
+ super(parent, x, y, width, height, 12.0F);
+ }
+
+ private IClassification branch = null;
+
+ public void setBranch(IClassification branch)
+ {
+ if (branch != this.branch)
+ {
+ this.branch = branch;
+ List<IAlleleSpecies> speciesList2 = new ArrayList();
+ movePercentage(-100.0F);
+ setOptions(speciesList2);
+
+ EntityPlayer player = Window.get(this).getPlayer();
+ GameProfile playerName = Window.get(this).getUsername();
+ WindowAbstractDatabase db = (WindowAbstractDatabase)Window.get(this);
+
+ Collection<IAlleleSpecies> speciesList = !db.isNEI ? db.getBreedingSystem().getDiscoveredSpecies(db.getWorld(), playerName) : db.getBreedingSystem().getAllSpecies();
+ if (branch != null) {
+ for (IAlleleSpecies species : branch.getMemberSpecies()) {
+ if (speciesList.contains(species)) {
+ speciesList2.add(species);
+ }
+ }
+ }
+ setOptions(speciesList2);
+ }
+ }
+}
diff --git a/src/Java/binnie/craftgui/mod/database/ControlSpeciexBoxOption.java b/src/Java/binnie/craftgui/mod/database/ControlSpeciexBoxOption.java
new file mode 100644
index 0000000000..36ac5446b2
--- /dev/null
+++ b/src/Java/binnie/craftgui/mod/database/ControlSpeciexBoxOption.java
@@ -0,0 +1,42 @@
+package binnie.craftgui.mod.database;
+
+import binnie.craftgui.controls.ControlText;
+import binnie.craftgui.controls.listbox.ControlList;
+import binnie.craftgui.controls.listbox.ControlTextOption;
+import binnie.craftgui.core.Attribute;
+import binnie.craftgui.core.CraftGUI;
+import binnie.craftgui.core.geometry.CraftGUIUtil;
+import binnie.craftgui.core.geometry.IPoint;
+import binnie.craftgui.core.renderer.Renderer;
+import forestry.api.genetics.IAlleleSpecies;
+
+class ControlSpeciexBoxOption
+ extends ControlTextOption<IAlleleSpecies>
+{
+ private ControlDatabaseIndividualDisplay controlBee;
+
+ public ControlSpeciexBoxOption(ControlList<IAlleleSpecies> controlList, IAlleleSpecies option, int y)
+ {
+ super(controlList, option, option.getName(), y);
+ setSize(new IPoint(getSize().x(), 20.0F));
+
+ this.controlBee = new ControlDatabaseIndividualDisplay(this, 2.0F, 2.0F);
+
+ this.controlBee.setSpecies((IAlleleSpecies)getValue(), EnumDiscoveryState.Undetermined);
+ if (this.controlBee.discovered == EnumDiscoveryState.Discovered) {
+ this.controlBee.discovered = EnumDiscoveryState.Show;
+ }
+ this.textWidget.setValue(this.controlBee.discovered == EnumDiscoveryState.Show ? option.getName() : "Undiscovered");
+ if (this.controlBee.discovered == EnumDiscoveryState.Show) {
+ addAttribute(Attribute.MouseOver);
+ }
+ CraftGUIUtil.moveWidget(this.textWidget, new IPoint(22.0F, 0.0F));
+ this.textWidget.setSize(this.textWidget.getSize().sub(new IPoint(24.0F, 0.0F)));
+
+ int th = (int)CraftGUI.Render.textHeight(this.textWidget.getValue(), this.textWidget.getSize().x());
+ int height = Math.max(20, th + 6);
+ setSize(new IPoint(size().x(), height));
+ this.textWidget.setSize(new IPoint(this.textWidget.getSize().x(), height));
+ this.controlBee.setPosition(new IPoint(this.controlBee.pos().x(), (height - 18) / 2));
+ }
+}
diff --git a/src/Java/binnie/craftgui/mod/database/DatabaseTab.java b/src/Java/binnie/craftgui/mod/database/DatabaseTab.java
new file mode 100644
index 0000000000..aee8ea5bf2
--- /dev/null
+++ b/src/Java/binnie/craftgui/mod/database/DatabaseTab.java
@@ -0,0 +1,32 @@
+package binnie.craftgui.mod.database;
+
+import binnie.Binnie;
+import binnie.core.AbstractMod;
+import binnie.core.language.ManagerLanguage;
+import binnie.craftgui.core.ITooltipHelp;
+import binnie.craftgui.core.Tooltip;
+
+public class DatabaseTab
+ implements ITooltipHelp
+{
+ private AbstractMod mod;
+ private String unloc;
+ private int colour;
+
+ public DatabaseTab(AbstractMod mod, String unloc, int colour)
+ {
+ this.mod = mod;
+ this.unloc = unloc;
+ this.colour = colour;
+ }
+
+ public String toString()
+ {
+ return Binnie.Language.localise(this.mod, "gui.database.tab." + this.unloc);
+ }
+
+ public void getHelpTooltip(Tooltip tooltip)
+ {
+ tooltip.add(Binnie.Language.localiseOrBlank(this.mod, "gui.database.tab." + this.unloc + ".help"));
+ }
+}
diff --git a/src/Java/binnie/craftgui/mod/database/EnumDiscoveryState.java b/src/Java/binnie/craftgui/mod/database/EnumDiscoveryState.java
new file mode 100644
index 0000000000..fe98cff136
--- /dev/null
+++ b/src/Java/binnie/craftgui/mod/database/EnumDiscoveryState.java
@@ -0,0 +1,8 @@
+package binnie.craftgui.mod.database;
+
+public enum EnumDiscoveryState
+{
+ Show, Undetermined, Discovered, Undiscovered;
+
+ private EnumDiscoveryState() {}
+}
diff --git a/src/Java/binnie/craftgui/mod/database/IDatabaseMode.java b/src/Java/binnie/craftgui/mod/database/IDatabaseMode.java
new file mode 100644
index 0000000000..8744a2f0b7
--- /dev/null
+++ b/src/Java/binnie/craftgui/mod/database/IDatabaseMode.java
@@ -0,0 +1,6 @@
+package binnie.craftgui.mod.database;
+
+public abstract interface IDatabaseMode
+{
+ public abstract String getName();
+}
diff --git a/src/Java/binnie/craftgui/mod/database/PageAbstract.java b/src/Java/binnie/craftgui/mod/database/PageAbstract.java
new file mode 100644
index 0000000000..9219dca0a7
--- /dev/null
+++ b/src/Java/binnie/craftgui/mod/database/PageAbstract.java
@@ -0,0 +1,16 @@
+package binnie.craftgui.mod.database;
+
+import binnie.craftgui.controls.page.ControlPage;
+import binnie.craftgui.core.IWidget;
+import binnie.craftgui.core.geometry.IPoint;
+
+public abstract class PageAbstract<T>
+ extends ControlPage<DatabaseTab>
+{
+ public PageAbstract(IWidget parent, DatabaseTab tab)
+ {
+ super(parent, 0.0F, 0.0F, parent.getSize().x(), parent.getSize().y(), tab);
+ }
+
+ public abstract void onValueChanged(T paramT);
+}
diff --git a/src/Java/binnie/craftgui/mod/database/PageBranch.java b/src/Java/binnie/craftgui/mod/database/PageBranch.java
new file mode 100644
index 0000000000..57af5128e5
--- /dev/null
+++ b/src/Java/binnie/craftgui/mod/database/PageBranch.java
@@ -0,0 +1,13 @@
+package binnie.craftgui.mod.database;
+
+import binnie.craftgui.core.IWidget;
+import forestry.api.genetics.IClassification;
+
+abstract class PageBranch
+ extends PageAbstract<IClassification>
+{
+ public PageBranch(IWidget parent, DatabaseTab tab)
+ {
+ super(parent, tab);
+ }
+}
diff --git a/src/Java/binnie/craftgui/mod/database/PageBranchOverview.java b/src/Java/binnie/craftgui/mod/database/PageBranchOverview.java
new file mode 100644
index 0000000000..57ddc63fab
--- /dev/null
+++ b/src/Java/binnie/craftgui/mod/database/PageBranchOverview.java
@@ -0,0 +1,67 @@
+package binnie.craftgui.mod.database;
+
+import binnie.craftgui.controls.ControlText;
+import binnie.craftgui.controls.ControlTextCentered;
+import binnie.craftgui.core.CraftGUI;
+import binnie.craftgui.core.IWidget;
+import binnie.craftgui.core.renderer.Renderer;
+import forestry.api.genetics.IAlleleSpecies;
+import forestry.api.genetics.IClassification;
+import java.util.ArrayList;
+import java.util.List;
+
+public class PageBranchOverview
+ extends PageBranch
+{
+ private ControlText pageBranchOverview_branchName;
+ private ControlText pageBranchOverview_branchScientific;
+ private ControlText pageBranchOverview_branchAuthority;
+
+ public PageBranchOverview(IWidget parent, DatabaseTab tab)
+ {
+ super(parent, tab);
+
+ this.pageBranchOverview_branchName = new ControlTextCentered(this, 8.0F, "");
+
+ this.pageBranchOverview_branchScientific = new ControlTextCentered(this, 32.0F, "");
+ this.pageBranchOverview_branchAuthority = new ControlTextCentered(this, 44.0F, "");
+ }
+
+ private List<ControlText> pageBranchOverview_branchDescription = new ArrayList();
+
+ public void onValueChanged(IClassification branch)
+ {
+ this.pageBranchOverview_branchName.setValue("§n" + branch.getName() + " Branch§r");
+
+ this.pageBranchOverview_branchScientific.setValue("§oApidae " + branch.getScientific() + "§r");
+
+ this.pageBranchOverview_branchAuthority.setValue("Discovered by §l" + branch.getMemberSpecies()[0].getAuthority() + "§r");
+ for (IWidget widget : this.pageBranchOverview_branchDescription) {
+ deleteChild(widget);
+ }
+ this.pageBranchOverview_branchDescription.clear();
+
+ String desc = branch.getDescription();
+ if ((desc == null) || (desc == "")) {
+ desc = "No Description Provided.";
+ }
+ String line = "";
+
+ List<String> descLines = new ArrayList();
+ for (String str : desc.split(" "))
+ {
+ if (CraftGUI.Render.textWidth(line + " " + str) > 134)
+ {
+ descLines.add("§o" + line + "§r");
+ line = "";
+ }
+ line = line + " " + str;
+ }
+ descLines.add(line);
+
+ int i = 0;
+ for (String dLine : descLines) {
+ this.pageBranchOverview_branchDescription.add(new ControlTextCentered(this, 84 + 12 * i++, dLine));
+ }
+ }
+}
diff --git a/src/Java/binnie/craftgui/mod/database/PageBranchSpecies.java b/src/Java/binnie/craftgui/mod/database/PageBranchSpecies.java
new file mode 100644
index 0000000000..600ca66674
--- /dev/null
+++ b/src/Java/binnie/craftgui/mod/database/PageBranchSpecies.java
@@ -0,0 +1,43 @@
+package binnie.craftgui.mod.database;
+
+import binnie.craftgui.controls.ControlText;
+import binnie.craftgui.controls.ControlTextCentered;
+import binnie.craftgui.core.IWidget;
+import binnie.craftgui.events.EventValueChanged;
+import binnie.craftgui.events.EventValueChanged.Handler;
+import cpw.mods.fml.common.Mod.EventHandler;
+import forestry.api.genetics.IAlleleSpecies;
+import forestry.api.genetics.IClassification;
+
+public class PageBranchSpecies
+ extends PageBranch
+{
+ private ControlText pageBranchSpecies_title;
+ private ControlSpeciesBox pageBranchSpecies_speciesList;
+
+ @Mod.EventHandler
+ public void onHandleEvent(EventValueChanged<IAlleleSpecies> event) {}
+
+ public PageBranchSpecies(IWidget parent, DatabaseTab tab)
+ {
+ super(parent, tab);
+
+ this.pageBranchSpecies_title = new ControlTextCentered(this, 8.0F, "Species");
+
+ addEventHandler(new EventValueChanged.Handler()
+ {
+ public void onEvent(EventValueChanged event)
+ {
+ if (event.isOrigin(PageBranchSpecies.this.pageBranchSpecies_speciesList)) {
+ ((WindowAbstractDatabase)PageBranchSpecies.this.getSuperParent()).gotoSpecies((IAlleleSpecies)event.getValue());
+ }
+ }
+ });
+ this.pageBranchSpecies_speciesList = new ControlSpeciesBox(this, 4.0F, 20.0F, 136.0F, 152.0F);
+ }
+
+ public void onValueChanged(IClassification branch)
+ {
+ this.pageBranchSpecies_speciesList.setBranch(branch);
+ }
+}
diff --git a/src/Java/binnie/craftgui/mod/database/PageBreeder.java b/src/Java/binnie/craftgui/mod/database/PageBreeder.java
new file mode 100644
index 0000000000..d3f0b7b617
--- /dev/null
+++ b/src/Java/binnie/craftgui/mod/database/PageBreeder.java
@@ -0,0 +1,51 @@
+package binnie.craftgui.mod.database;
+
+import binnie.core.genetics.BreedingSystem;
+import binnie.craftgui.controls.ControlTextCentered;
+import binnie.craftgui.controls.page.ControlPage;
+import binnie.craftgui.core.IWidget;
+import binnie.craftgui.core.geometry.IPoint;
+import binnie.craftgui.minecraft.Window;
+import com.mojang.authlib.GameProfile;
+import java.util.List;
+
+public class PageBreeder
+ extends ControlPage<DatabaseTab>
+{
+ private GameProfile player;
+
+ public PageBreeder(IWidget parent, GameProfile player, DatabaseTab tab)
+ {
+ super(parent, 0.0F, 0.0F, parent.getSize().x(), parent.getSize().y(), tab);
+
+ this.player = player;
+ onPageRefresh();
+ }
+
+ public void onPageRefresh()
+ {
+ while (getWidgets().size() > 0) {
+ deleteChild((IWidget)getWidgets().get(0));
+ }
+ BreedingSystem system = ((WindowAbstractDatabase)Window.get(this)).getBreedingSystem();
+
+ String descriptor = system.getDescriptor();
+
+ new ControlTextCentered(this, 8.0F, "§n" + system.getDescriptor() + " Profile§r");
+
+ new ControlTextCentered(this, 75.0F, "" + system.discoveredSpeciesCount + "/" + system.totalSpeciesCount + " Species");
+
+
+ new ControlBreedingProgress(this, 20, 87, 102, 14, system, system.discoveredSpeciesPercentage);
+
+ new ControlTextCentered(this, 115.0F, "" + system.discoveredBranchCount + "/" + system.totalBranchCount + " Branches");
+
+
+ new ControlBreedingProgress(this, 20, 127, 102, 14, system, system.discoveredBranchPercentage);
+ if (system.discoveredSecretCount > 0) {
+ new ControlTextCentered(this, 155.0F, "" + system.discoveredSecretCount + "/" + system.totalSecretCount + " Secret Species");
+ }
+ new ControlTextCentered(this, 32.0F, this.player.getName());
+ new ControlTextCentered(this, 44.0F, "§o" + system.getEpitome() + "§r");
+ }
+}
diff --git a/src/Java/binnie/craftgui/mod/database/PageBreederStats.java b/src/Java/binnie/craftgui/mod/database/PageBreederStats.java
new file mode 100644
index 0000000000..18c1f288d5
--- /dev/null
+++ b/src/Java/binnie/craftgui/mod/database/PageBreederStats.java
@@ -0,0 +1,23 @@
+package binnie.craftgui.mod.database;
+
+import binnie.core.genetics.BreedingSystem;
+import binnie.craftgui.controls.ControlText;
+import binnie.craftgui.controls.ControlTextCentered;
+import binnie.craftgui.controls.core.Control;
+import binnie.craftgui.core.IWidget;
+
+public class PageBreederStats
+ extends Control
+{
+ String player;
+
+ public PageBreederStats(IWidget parent, int w, int h, String player)
+ {
+ super(parent, 0.0F, 0.0F, w, h);
+ this.player = player;
+
+ ControlText pageBranchOverview_branchName = new ControlTextCentered(this, 8.0F, "§nStats§r");
+
+ BreedingSystem system = ((WindowAbstractDatabase)getSuperParent()).getBreedingSystem();
+ }
+}
diff --git a/src/Java/binnie/craftgui/mod/database/PageSpecies.java b/src/Java/binnie/craftgui/mod/database/PageSpecies.java
new file mode 100644
index 0000000000..c94984bd3a
--- /dev/null
+++ b/src/Java/binnie/craftgui/mod/database/PageSpecies.java
@@ -0,0 +1,13 @@
+package binnie.craftgui.mod.database;
+
+import binnie.craftgui.core.IWidget;
+import forestry.api.genetics.IAlleleSpecies;
+
+public abstract class PageSpecies
+ extends PageAbstract<IAlleleSpecies>
+{
+ public PageSpecies(IWidget parent, DatabaseTab tab)
+ {
+ super(parent, tab);
+ }
+}
diff --git a/src/Java/binnie/craftgui/mod/database/PageSpeciesClassification.java b/src/Java/binnie/craftgui/mod/database/PageSpeciesClassification.java
new file mode 100644
index 0000000000..3db09e32cf
--- /dev/null
+++ b/src/Java/binnie/craftgui/mod/database/PageSpeciesClassification.java
@@ -0,0 +1,54 @@
+package binnie.craftgui.mod.database;
+
+import binnie.craftgui.controls.ControlText;
+import binnie.craftgui.controls.ControlTextCentered;
+import binnie.craftgui.core.IWidget;
+import forestry.api.genetics.IAlleleSpecies;
+import forestry.api.genetics.IClassification;
+import forestry.api.genetics.IClassification.EnumClassLevel;
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+public class PageSpeciesClassification
+ extends PageSpecies
+{
+ private Map<IClassification.EnumClassLevel, ControlText> levels = new LinkedHashMap();
+ private ControlText genus;
+
+ public PageSpeciesClassification(IWidget parent, DatabaseTab tab)
+ {
+ super(parent, tab);
+ int y = 16;
+ for (IClassification.EnumClassLevel level : IClassification.EnumClassLevel.values())
+ {
+ ControlText text = new ControlTextCentered(this, y, "");
+ text.setColour(level.getColour());
+ this.levels.put(level, text);
+ y += 12;
+ }
+ this.genus = new ControlTextCentered(this, y, "");
+ this.genus.setColour(16759415);
+ }
+
+ public void onValueChanged(IAlleleSpecies species)
+ {
+ if (species != null)
+ {
+ for (ControlText text : this.levels.values()) {
+ text.setValue("- - -");
+ }
+ this.genus.setValue(species.getBinomial());
+
+ IClassification classification = species.getBranch();
+ while (classification != null)
+ {
+ IClassification.EnumClassLevel level = classification.getLevel();
+ String text = "";
+ int n = level.ordinal();
+ text = text + classification.getScientific();
+ ((ControlText)this.levels.get(level)).setValue(text);
+ classification = classification.getParent();
+ }
+ }
+ }
+}
diff --git a/src/Java/binnie/craftgui/mod/database/PageSpeciesMutations.java b/src/Java/binnie/craftgui/mod/database/PageSpeciesMutations.java
new file mode 100644
index 0000000000..16a6e6673a
--- /dev/null
+++ b/src/Java/binnie/craftgui/mod/database/PageSpeciesMutations.java
@@ -0,0 +1,27 @@
+package binnie.craftgui.mod.database;
+
+import binnie.craftgui.controls.ControlText;
+import binnie.craftgui.controls.ControlTextCentered;
+import binnie.craftgui.core.IWidget;
+import forestry.api.genetics.IAlleleSpecies;
+
+public class PageSpeciesMutations
+ extends PageSpecies
+{
+ private ControlText pageSpeciesFurther_Title;
+ private ControlMutationBox pageSpeciesFurther_List;
+
+ public PageSpeciesMutations(IWidget parent, DatabaseTab tab)
+ {
+ super(parent, tab);
+
+ this.pageSpeciesFurther_Title = new ControlTextCentered(this, 8.0F, "Further Mutations");
+
+ this.pageSpeciesFurther_List = new ControlMutationBox(this, 4, 20, 136, 152, ControlMutationBox.Type.Further);
+ }
+
+ public void onValueChanged(IAlleleSpecies species)
+ {
+ this.pageSpeciesFurther_List.setSpecies(species);
+ }
+}
diff --git a/src/Java/binnie/craftgui/mod/database/PageSpeciesOverview.java b/src/Java/binnie/craftgui/mod/database/PageSpeciesOverview.java
new file mode 100644
index 0000000000..083162e902
--- /dev/null
+++ b/src/Java/binnie/craftgui/mod/database/PageSpeciesOverview.java
@@ -0,0 +1,88 @@
+package binnie.craftgui.mod.database;
+
+import binnie.craftgui.controls.ControlText;
+import binnie.craftgui.controls.ControlTextCentered;
+import binnie.craftgui.core.CraftGUI;
+import binnie.craftgui.core.IWidget;
+import binnie.craftgui.core.geometry.IArea;
+import binnie.craftgui.core.geometry.IPoint;
+import binnie.craftgui.core.geometry.TextJustification;
+import binnie.craftgui.core.renderer.Renderer;
+import forestry.api.genetics.IAlleleSpecies;
+import forestry.api.genetics.IClassification;
+
+public class PageSpeciesOverview
+ extends PageSpecies
+{
+ private ControlText controlName;
+ private ControlText controlScientific;
+ private ControlText controlAuthority;
+ private ControlText controlComplexity;
+ private ControlText controlDescription;
+ private ControlText controlSignature;
+ private ControlDatabaseIndividualDisplay controlInd1;
+ private ControlDatabaseIndividualDisplay controlInd2;
+
+ public PageSpeciesOverview(IWidget parent, DatabaseTab tab)
+ {
+ super(parent, tab);
+
+ this.controlInd1 = new ControlDatabaseIndividualDisplay(this, 5.0F, 5.0F);
+ this.controlInd2 = new ControlDatabaseIndividualDisplay(this, 123.0F, 5.0F);
+
+ this.controlName = new ControlTextCentered(this, 8.0F, "");
+
+ this.controlScientific = new ControlTextCentered(this, 32.0F, "");
+ this.controlAuthority = new ControlTextCentered(this, 44.0F, "");
+ this.controlComplexity = new ControlTextCentered(this, 56.0F, "");
+
+ this.controlDescription = new ControlText(this, new IArea(8.0F, 84.0F, getSize().x() - 16.0F, 0.0F), "", TextJustification.MiddleCenter);
+
+ this.controlSignature = new ControlText(this, new IArea(8.0F, 84.0F, getSize().x() - 16.0F, 0.0F), "", TextJustification.BottomRight);
+ }
+
+ public void onValueChanged(IAlleleSpecies species)
+ {
+ this.controlInd1.setSpecies(species, EnumDiscoveryState.Show);
+ this.controlInd2.setSpecies(species, EnumDiscoveryState.Show);
+ String branchBinomial = species.getBranch() != null ? species.getBranch().getScientific() : "<Unknown>";
+
+ String branchName = species.getBranch() != null ? species.getBranch().getName() : "Unknown";
+
+
+ this.controlName.setValue("§n" + species.getName() + "§r");
+ this.controlScientific.setValue("§o" + branchBinomial + " " + species.getBinomial() + "§r");
+
+ this.controlAuthority.setValue("Discovered by §l" + species.getAuthority() + "§r");
+
+ this.controlComplexity.setValue("Complexity: " + species.getComplexity());
+
+
+
+ String desc = species.getDescription();
+
+ String descBody = "§o";
+ String descSig = "";
+ if ((desc == null) || (desc == ""))
+ {
+ descBody = descBody + "No Description Provided.";
+ }
+ else
+ {
+ String[] descStrings = desc.split("\\|");
+ descBody = descBody + descStrings[0];
+ for (int i = 1; i < descStrings.length - 1; i++) {
+ descBody = descBody + " " + descStrings[i];
+ }
+ if (descStrings.length > 1) {
+ descSig = descSig + descStrings[(descStrings.length - 1)];
+ }
+ }
+ this.controlDescription.setValue(descBody + "§r");
+ this.controlSignature.setValue(descSig + "§r");
+
+ float descHeight = CraftGUI.Render.textHeight(this.controlDescription.getValue(), this.controlDescription.getSize().x());
+
+ this.controlSignature.setPosition(new IPoint(this.controlSignature.pos().x(), this.controlDescription.getPosition().y() + descHeight + 10.0F));
+ }
+}
diff --git a/src/Java/binnie/craftgui/mod/database/PageSpeciesResultant.java b/src/Java/binnie/craftgui/mod/database/PageSpeciesResultant.java
new file mode 100644
index 0000000000..f6f2d487c0
--- /dev/null
+++ b/src/Java/binnie/craftgui/mod/database/PageSpeciesResultant.java
@@ -0,0 +1,27 @@
+package binnie.craftgui.mod.database;
+
+import binnie.craftgui.controls.ControlText;
+import binnie.craftgui.controls.ControlTextCentered;
+import binnie.craftgui.core.IWidget;
+import forestry.api.genetics.IAlleleSpecies;
+
+public class PageSpeciesResultant
+ extends PageSpecies
+{
+ private ControlText pageSpeciesResultant_Title;
+ private ControlMutationBox pageSpeciesResultant_List;
+
+ public PageSpeciesResultant(IWidget parent, DatabaseTab tab)
+ {
+ super(parent, tab);
+
+ this.pageSpeciesResultant_Title = new ControlTextCentered(this, 8.0F, "Resultant Mutations");
+
+ this.pageSpeciesResultant_List = new ControlMutationBox(this, 4, 20, 136, 152, ControlMutationBox.Type.Resultant);
+ }
+
+ public void onValueChanged(IAlleleSpecies species)
+ {
+ this.pageSpeciesResultant_List.setSpecies(species);
+ }
+}
diff --git a/src/Java/binnie/craftgui/mod/database/WindowAbstractDatabase.java b/src/Java/binnie/craftgui/mod/database/WindowAbstractDatabase.java
new file mode 100644
index 0000000000..54ca5a4aca
--- /dev/null
+++ b/src/Java/binnie/craftgui/mod/database/WindowAbstractDatabase.java
@@ -0,0 +1,314 @@
+package binnie.craftgui.mod.database;
+
+import binnie.core.BinnieCore;
+import binnie.core.genetics.BreedingSystem;
+import binnie.core.proxy.BinnieProxy;
+import binnie.core.util.IValidator;
+import binnie.craftgui.controls.ControlTextEdit;
+import binnie.craftgui.controls.listbox.ControlListBox;
+import binnie.craftgui.controls.listbox.ControlTextOption;
+import binnie.craftgui.controls.page.ControlPage;
+import binnie.craftgui.controls.page.ControlPages;
+import binnie.craftgui.controls.tab.ControlTab;
+import binnie.craftgui.controls.tab.ControlTabBar;
+import binnie.craftgui.core.IWidget;
+import binnie.craftgui.core.geometry.CraftGUIUtil;
+import binnie.craftgui.core.geometry.IArea;
+import binnie.craftgui.core.geometry.IPoint;
+import binnie.craftgui.core.geometry.Position;
+import binnie.craftgui.events.EventHandler.Origin;
+import binnie.craftgui.events.EventTextEdit;
+import binnie.craftgui.events.EventTextEdit.Handler;
+import binnie.craftgui.events.EventValueChanged;
+import binnie.craftgui.events.EventValueChanged.Handler;
+import binnie.craftgui.minecraft.MinecraftGUI.PanelType;
+import binnie.craftgui.minecraft.Window;
+import binnie.craftgui.minecraft.control.ControlHelp;
+import binnie.craftgui.window.Panel;
+import com.mojang.authlib.GameProfile;
+import cpw.mods.fml.relauncher.Side;
+import forestry.api.genetics.IAlleleSpecies;
+import forestry.api.genetics.IBreedingTracker;
+import forestry.api.genetics.IClassification;
+import forestry.api.genetics.ISpeciesRoot;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
+import net.minecraft.entity.player.EntityPlayer;
+
+public abstract class WindowAbstractDatabase
+ extends Window
+{
+ private float selectionBoxWidth = 95.0F;
+ private final float infoBoxWidth = 144.0F;
+ private final float infoBoxHeight = 176.0F;
+ private final float infoTabWidth = 16.0F;
+ private final float modeTabWidth = 22.0F;
+ private final float searchBoxHeight = 16.0F;
+
+ public void changeMode(IDatabaseMode mode)
+ {
+ this.modePages.setValue(mode);
+ }
+
+ public WindowAbstractDatabase(EntityPlayer player, Side side, boolean nei, BreedingSystem system, float wid)
+ {
+ super(100.0F, 192.0F, player, null, side);
+ this.isNEI = nei;
+ this.system = system;
+ this.selectionBoxWidth = wid;
+ }
+
+ public static enum Mode
+ implements IDatabaseMode
+ {
+ Species, Branches, Breeder;
+
+ private Mode() {}
+
+ public String getName()
+ {
+ return BinnieCore.proxy.localise("gui.database.mode." + name().toLowerCase());
+ }
+ }
+
+ public static abstract class ModeWidgets
+ {
+ public WindowAbstractDatabase database;
+ public ControlPage<IDatabaseMode> modePage;
+ private ControlPages<DatabaseTab> infoPages;
+ public ControlListBox listBox;
+ private ControlTabBar<DatabaseTab> infoTabs;
+
+ public ModeWidgets(IDatabaseMode mode, WindowAbstractDatabase database)
+ {
+ this.database = database;
+ this.modePage = new ControlPage(database.modePages, 0.0F, 0.0F, database.getSize().x(), database.getSize().y(), mode);
+
+ IArea listBoxArea = database.panelSearch.area().inset(2);
+
+ createListBox(listBoxArea);
+
+ CraftGUIUtil.alignToWidget(this.listBox, database.panelSearch);
+ CraftGUIUtil.moveWidget(this.listBox, new IPoint(2.0F, 2.0F));
+
+ this.infoPages = new ControlPages(this.modePage, 0.0F, 0.0F, 144.0F, 176.0F);
+
+ CraftGUIUtil.alignToWidget(this.infoPages, database.panelInformation);
+ }
+
+ public abstract void createListBox(IArea paramIArea);
+ }
+
+ public ControlPages<DatabaseTab> getInfoPages(IDatabaseMode mode)
+ {
+ return ((ModeWidgets)this.modes.get(mode)).infoPages;
+ }
+
+ private Map<IDatabaseMode, ModeWidgets> modes = new HashMap();
+ boolean isNEI;
+ private BreedingSystem system;
+
+ public boolean isNEI()
+ {
+ return this.isNEI;
+ }
+
+ public BreedingSystem getBreedingSystem()
+ {
+ return this.system;
+ }
+
+ public WindowAbstractDatabase(EntityPlayer player, Side side, boolean nei, BreedingSystem system)
+ {
+ this(player, side, nei, system, 95.0F);
+ }
+
+ private Panel panelInformation = null;
+ private Panel panelSearch = null;
+ private ControlPages<IDatabaseMode> modePages = null;
+
+ protected ModeWidgets createMode(IDatabaseMode mode, ModeWidgets widgets)
+ {
+ this.modes.put(mode, widgets);
+
+ return widgets;
+ }
+
+ public void initialiseClient()
+ {
+ setSize(new IPoint(176.0F + this.selectionBoxWidth + 22.0F + 8.0F, 208.0F));
+
+ addEventHandler(new EventValueChanged.Handler()
+ {
+ public void onEvent(EventValueChanged event)
+ {
+ if (((event.getOrigin().getParent() instanceof ControlPage)) && (!(event.getValue() instanceof DatabaseTab)))
+ {
+ ControlPage parent = (ControlPage)event.getOrigin().getParent();
+ if ((parent.getValue() instanceof IDatabaseMode)) {
+ for (IWidget widget : parent.getWidgets()) {
+ if ((widget instanceof ControlPages)) {
+ if (event.getValue() == null)
+ {
+ widget.hide();
+ }
+ else
+ {
+ widget.show();
+ for (IWidget widget2 : widget.getWidgets()) {
+ if ((widget2 instanceof PageAbstract)) {
+ ((PageAbstract)widget2).onValueChanged(event.getValue());
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ });
+ addEventHandler(new EventTextEdit.Handler()
+ {
+ public void onEvent(final EventTextEdit event)
+ {
+ for (WindowAbstractDatabase.ModeWidgets widgets : WindowAbstractDatabase.this.modes.values()) {
+ widgets.listBox.setValidator(new IValidator()
+ {
+ public boolean isValid(IWidget object)
+ {
+ return (event.getValue() == "") || (((ControlTextOption)object).getText().toLowerCase().contains(((String)event.getValue()).toLowerCase()));
+ }
+ });
+ }
+ }
+ }.setOrigin(EventHandler.Origin.DirectChild, this));
+
+
+
+
+
+
+
+
+
+
+
+
+ new ControlHelp(this, 4.0F, 4.0F);
+
+ this.panelInformation = new Panel(this, 24.0F, 24.0F, 144.0F, 176.0F, MinecraftGUI.PanelType.Black);
+ this.panelInformation.setColour(860416);
+
+ this.panelSearch = new Panel(this, 176.0F, 24.0F, this.selectionBoxWidth, 160.0F, MinecraftGUI.PanelType.Black);
+
+ this.panelSearch.setColour(860416);
+
+ this.modePages = new ControlPages(this, 0.0F, 0.0F, getSize().x(), getSize().y());
+
+ new ControlTextEdit(this, 176.0F, 184.0F, this.selectionBoxWidth, 16.0F);
+
+
+ createMode(Mode.Species, new ModeWidgets(Mode.Species, this)
+ {
+ public void createListBox(IArea area)
+ {
+ GameProfile playerName = WindowAbstractDatabase.this.getUsername();
+
+ Collection<IAlleleSpecies> speciesList = !this.database.isNEI ? this.database.system.getDiscoveredSpecies(this.database.getWorld(), playerName) : this.database.system.getAllSpecies();
+
+
+ this.listBox = new ControlSpeciesBox(this.modePage, area.x(), area.y(), area.w(), area.h());
+ this.listBox.setOptions(speciesList);
+ }
+ });
+ createMode(Mode.Branches, new ModeWidgets(Mode.Branches, this)
+ {
+ public void createListBox(IArea area)
+ {
+ EntityPlayer player = this.database.getPlayer();
+ GameProfile playerName = WindowAbstractDatabase.this.getUsername();
+
+ Collection<IClassification> speciesList = !this.database.isNEI ? this.database.system.getDiscoveredBranches(this.database.getWorld(), playerName) : this.database.system.getAllBranches();
+
+
+ this.listBox = new ControlBranchBox(this.modePage, area.x(), area.y(), area.w(), area.h());
+ this.listBox.setOptions(speciesList);
+ }
+ });
+ createMode(Mode.Breeder, new ModeWidgets(Mode.Breeder, this)
+ {
+ public void createListBox(IArea area)
+ {
+ this.listBox = new ControlListBox(this.modePage, area.x(), area.y(), area.w(), area.h(), 12.0F);
+ }
+ });
+ addTabs();
+
+ ControlTabBar<IDatabaseMode> tab = new ControlTabBar(this, 176.0F + this.selectionBoxWidth, 24.0F, 22.0F, 176.0F, Position.Right)
+ {
+ public ControlTab<IDatabaseMode> createTab(float x, float y, float w, float h, IDatabaseMode value)
+ {
+ new ControlTab(this, x, y, w, h, value)
+ {
+ public String getName()
+ {
+ return ((IDatabaseMode)this.value).getName();
+ }
+ };
+ }
+ };
+ tab.setValues(this.modePages.getValues());
+
+ CraftGUIUtil.linkWidgets(tab, this.modePages);
+
+
+ changeMode(Mode.Species);
+ for (IDatabaseMode mode : this.modes.keySet())
+ {
+ ((ModeWidgets)this.modes.get(mode)).infoTabs = new ControlTabBar(((ModeWidgets)this.modes.get(mode)).modePage, 8.0F, 24.0F, 16.0F, 176.0F, Position.Left);
+
+
+ ((ModeWidgets)this.modes.get(mode)).infoTabs.setValues(((ModeWidgets)this.modes.get(mode)).infoPages.getValues());
+
+ CraftGUIUtil.linkWidgets(((ModeWidgets)this.modes.get(mode)).infoTabs, ((ModeWidgets)this.modes.get(mode)).infoPages);
+ }
+ }
+
+ public void initialiseServer()
+ {
+ IBreedingTracker tracker = this.system.getSpeciesRoot().getBreedingTracker(getWorld(), getUsername());
+ if (tracker != null) {
+ tracker.synchToPlayer(getPlayer());
+ }
+ }
+
+ protected void addTabs() {}
+
+ public void gotoSpecies(IAlleleSpecies value)
+ {
+ if (value != null)
+ {
+ this.modePages.setValue(Mode.Species);
+ changeMode(Mode.Species);
+ ((ModeWidgets)this.modes.get(this.modePages.getValue())).listBox.setValue(value);
+ }
+ }
+
+ public void gotoSpeciesDelayed(IAlleleSpecies species)
+ {
+ this.gotoSpecies = species;
+ }
+
+ private IAlleleSpecies gotoSpecies = null;
+
+ public void onUpdateClient()
+ {
+ super.onUpdateClient();
+ if (this.gotoSpecies != null)
+ {
+ ((WindowAbstractDatabase)getSuperParent()).gotoSpecies(this.gotoSpecies);
+ this.gotoSpecies = null;
+ }
+ }
+}
diff --git a/src/Java/binnie/craftgui/resource/IStyleSheet.java b/src/Java/binnie/craftgui/resource/IStyleSheet.java
new file mode 100644
index 0000000000..1ce8e7da2c
--- /dev/null
+++ b/src/Java/binnie/craftgui/resource/IStyleSheet.java
@@ -0,0 +1,6 @@
+package binnie.craftgui.resource;
+
+public abstract interface IStyleSheet
+{
+ public abstract Texture getTexture(Object paramObject);
+}
diff --git a/src/Java/binnie/craftgui/resource/StyleSheet.java b/src/Java/binnie/craftgui/resource/StyleSheet.java
new file mode 100644
index 0000000000..8685abd5be
--- /dev/null
+++ b/src/Java/binnie/craftgui/resource/StyleSheet.java
@@ -0,0 +1,18 @@
+package binnie.craftgui.resource;
+
+import java.util.HashMap;
+import java.util.Map;
+
+public class StyleSheet
+ implements IStyleSheet
+{
+ protected Map<Object, Texture> textures = new HashMap();
+
+ public Texture getTexture(Object key)
+ {
+ if (!this.textures.containsKey(key)) {
+ return StyleSheetManager.getTexture(key);
+ }
+ return (Texture)this.textures.get(key);
+ }
+}
diff --git a/src/Java/binnie/craftgui/resource/StyleSheetManager.java b/src/Java/binnie/craftgui/resource/StyleSheetManager.java
new file mode 100644
index 0000000000..b1bbd50272
--- /dev/null
+++ b/src/Java/binnie/craftgui/resource/StyleSheetManager.java
@@ -0,0 +1,28 @@
+package binnie.craftgui.resource;
+
+import binnie.craftgui.core.CraftGUI;
+import binnie.craftgui.resource.minecraft.CraftGUIResourceManager;
+
+public class StyleSheetManager
+{
+ static IStyleSheet defaultSS = new DefaultStyleSheet(null);
+
+ public static Texture getTexture(Object key)
+ {
+ return defaultSS.getTexture(key);
+ }
+
+ private static class DefaultStyleSheet
+ implements IStyleSheet
+ {
+ public Texture getTexture(Object key)
+ {
+ return CraftGUI.ResourceManager.getTexture(key.toString());
+ }
+ }
+
+ public static IStyleSheet getDefault()
+ {
+ return defaultSS;
+ }
+}
diff --git a/src/Java/binnie/craftgui/resource/Texture.java b/src/Java/binnie/craftgui/resource/Texture.java
new file mode 100644
index 0000000000..249be8f257
--- /dev/null
+++ b/src/Java/binnie/craftgui/resource/Texture.java
@@ -0,0 +1,128 @@
+package binnie.craftgui.resource;
+
+import binnie.core.resource.BinnieResource;
+import binnie.craftgui.core.geometry.IArea;
+import binnie.craftgui.core.geometry.IBorder;
+import binnie.craftgui.core.geometry.Position;
+
+public class Texture
+{
+ public static final Texture NULL = null;
+ IArea area;
+ IBorder padding = IBorder.ZERO;
+ IBorder border = IBorder.ZERO;
+ BinnieResource filename;
+
+ public Texture(IArea area, BinnieResource filename)
+ {
+ this(area, IBorder.ZERO, IBorder.ZERO, filename);
+ }
+
+ public Texture(IArea area, IBorder padding, BinnieResource filename)
+ {
+ this(area, padding, IBorder.ZERO, filename);
+ }
+
+ public Texture(IArea area, IBorder padding, IBorder border, BinnieResource filename)
+ {
+ this.area = new IArea(area);
+ this.padding = new IBorder(padding);
+ this.border = new IBorder(border);
+ this.filename = filename;
+ }
+
+ public IArea getArea()
+ {
+ return this.area;
+ }
+
+ public IBorder getPadding()
+ {
+ return this.padding;
+ }
+
+ public IBorder getBorder()
+ {
+ return this.border;
+ }
+
+ public BinnieResource getFilename()
+ {
+ return this.filename;
+ }
+
+ public IBorder getTotalPadding()
+ {
+ return this.padding.add(this.border);
+ }
+
+ public float w()
+ {
+ return getArea().w();
+ }
+
+ public float h()
+ {
+ return getArea().h();
+ }
+
+ public float u()
+ {
+ return getArea().x();
+ }
+
+ public float v()
+ {
+ return getArea().y();
+ }
+
+ public Texture crop(Position anchor, float dist)
+ {
+ return crop(new IBorder(anchor.opposite(), dist));
+ }
+
+ public Texture crop(IBorder crop)
+ {
+ Texture copy = new Texture(this.area, this.padding, this.border, this.filename);
+ if (crop.b() > 0.0F)
+ {
+ copy.border.b(0.0F);
+ copy.padding.b(copy.padding.b() - Math.min(crop.b(), copy.padding.b()));
+ copy.area.h(copy.area.h() - crop.b());
+ }
+ if (crop.t() > 0.0F)
+ {
+ copy.border.t(0.0F);
+ copy.padding.t(copy.padding.t() - Math.min(crop.t(), copy.padding.t()));
+ copy.area.h(copy.area.h() - crop.t());
+ copy.area.y(copy.area.y() + crop.t());
+ }
+ if (crop.r() > 0.0F)
+ {
+ copy.border.r(0.0F);
+ copy.padding.r(copy.padding.r() - Math.min(crop.r(), copy.padding.r()));
+ copy.area.w(copy.area.w() - crop.r());
+ }
+ if (crop.l() > 0.0F)
+ {
+ copy.border.l(0.0F);
+ copy.padding.l(copy.padding.l() - Math.min(crop.l(), copy.padding.l()));
+ copy.area.w(copy.area.w() - crop.l());
+ copy.area.x(copy.area.x() + crop.l());
+ }
+ return copy;
+ }
+
+ public String toString()
+ {
+ String out = "Texture[";
+ out = out + this.area.toString();
+ if (!this.padding.isNonZero()) {
+ out = out + " padding:" + this.padding.toString();
+ }
+ if (!this.border.isNonZero()) {
+ out = out + " border:" + this.border.toString();
+ }
+ return out + "]";
+ }
+}
diff --git a/src/Java/binnie/craftgui/resource/minecraft/CraftGUIResourceManager.java b/src/Java/binnie/craftgui/resource/minecraft/CraftGUIResourceManager.java
new file mode 100644
index 0000000000..42ff445f92
--- /dev/null
+++ b/src/Java/binnie/craftgui/resource/minecraft/CraftGUIResourceManager.java
@@ -0,0 +1,155 @@
+package binnie.craftgui.resource.minecraft;
+
+import binnie.core.resource.IBinnieTexture;
+import binnie.craftgui.core.geometry.IArea;
+import binnie.craftgui.core.geometry.IBorder;
+import binnie.craftgui.resource.Texture;
+import com.google.common.base.Charsets;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonParseException;
+import com.google.gson.JsonParser;
+import cpw.mods.fml.relauncher.Side;
+import cpw.mods.fml.relauncher.SideOnly;
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import net.minecraft.client.resources.IResource;
+import net.minecraft.client.resources.IResourceManager;
+import net.minecraft.client.resources.IResourceManagerReloadListener;
+import net.minecraft.util.ResourceLocation;
+import org.apache.commons.io.IOUtils;
+
+@SideOnly(Side.CLIENT)
+public class CraftGUIResourceManager
+ implements IResourceManagerReloadListener
+{
+ private Map<String, ParsedTextureSheet> textureSheets = new HashMap();
+ private Map<String, Texture> textures = new HashMap();
+
+ public CraftGUIResourceManager()
+ {
+ binnie.craftgui.core.CraftGUI.ResourceManager = this;
+ }
+
+ public void onResourceManagerReload(IResourceManager manager)
+ {
+ this.textureSheets.clear();
+ try
+ {
+ IResource res = manager.getResource(new ResourceLocation("binniecore", "gui/stylesheet.json"));
+
+ JsonObject jsonobject = null;
+ BufferedReader bufferedreader = null;
+ try
+ {
+ bufferedreader = new BufferedReader(new InputStreamReader(res.getInputStream(), Charsets.UTF_8));
+ jsonobject = new JsonParser().parse(bufferedreader).getAsJsonObject();
+ for (JsonElement el : jsonobject.get("texture-sheets").getAsJsonArray()) {
+ if ((el instanceof JsonObject))
+ {
+ JsonObject sheet = (JsonObject)el;
+ String name = sheet.get("name").getAsString();
+ String modid = sheet.get("modid").getAsString();
+ String path = sheet.get("path").getAsString();
+ this.textureSheets.put(name, new ParsedTextureSheet(name, modid, path));
+ }
+ }
+ for (JsonElement el : jsonobject.get("textures").getAsJsonArray()) {
+ if ((el instanceof JsonObject))
+ {
+ JsonObject sheet = (JsonObject)el;
+ String name = sheet.get("name").getAsString();
+ IBinnieTexture textureSheet = getTextureSheet(sheet.get("sheet").getAsString());
+ IArea uv = getArea(sheet.get("uv").getAsString());
+ IBorder border = IBorder.ZERO;
+ IBorder padding = IBorder.ZERO;
+ if (sheet.has("border")) {
+ border = getBorder(sheet.get("border").getAsString());
+ }
+ if (sheet.has("padding")) {
+ padding = getBorder(sheet.get("padding").getAsString());
+ }
+ this.textures.put(name, new Texture(uv, padding, border, textureSheet.getTexture()));
+ }
+ }
+ }
+ catch (RuntimeException runtimeexception)
+ {
+ throw new JsonParseException("Failed to parse stylesheet for Binnie's Mods", runtimeexception);
+ }
+ finally
+ {
+ IOUtils.closeQuietly(bufferedreader);
+ }
+ }
+ catch (IOException e)
+ {
+ throw new RuntimeException("Failed to load default stylesheet for Binnie's Mods.", e);
+ }
+ }
+
+ public IArea getArea(String name)
+ {
+ String[] split = name.split(" ");
+ if ((split.length < 1) || (split.length > 4)) {
+ throw new RuntimeException("Parameter must have between one and four numbers");
+ }
+ List<Float> f = new ArrayList();
+ for (String string : split) {
+ f.add(Float.valueOf(Float.parseFloat(string)));
+ }
+ if (f.size() == 1) {
+ return new IArea(((Float)f.get(0)).floatValue());
+ }
+ if (f.size() == 2) {
+ return new IArea(((Float)f.get(0)).floatValue(), ((Float)f.get(1)).floatValue());
+ }
+ if (f.size() == 3) {
+ return new IArea(((Float)f.get(0)).floatValue(), ((Float)f.get(1)).floatValue(), ((Float)f.get(2)).floatValue());
+ }
+ return new IArea(((Float)f.get(0)).floatValue(), ((Float)f.get(1)).floatValue(), ((Float)f.get(2)).floatValue(), ((Float)f.get(3)).floatValue());
+ }
+
+ public IBorder getBorder(String name)
+ {
+ String[] split = name.split(" ");
+ if ((split.length < 1) || (split.length > 4)) {
+ throw new RuntimeException("Parameter must have between one and four numbers");
+ }
+ List<Float> f = new ArrayList();
+ for (String string : split) {
+ f.add(Float.valueOf(Float.parseFloat(string)));
+ }
+ if (f.size() == 1) {
+ return new IBorder(((Float)f.get(0)).floatValue());
+ }
+ if (f.size() == 2) {
+ return new IBorder(((Float)f.get(0)).floatValue(), ((Float)f.get(1)).floatValue());
+ }
+ if (f.size() == 3) {
+ return new IBorder(((Float)f.get(0)).floatValue(), ((Float)f.get(1)).floatValue(), ((Float)f.get(2)).floatValue());
+ }
+ return new IBorder(((Float)f.get(0)).floatValue(), ((Float)f.get(1)).floatValue(), ((Float)f.get(2)).floatValue(), ((Float)f.get(3)).floatValue());
+ }
+
+ public IBinnieTexture getTextureSheet(String name)
+ {
+ if (!this.textureSheets.containsKey(name)) {
+ throw new RuntimeException("Missing GUI texture sheet for Binnie Mods: " + name);
+ }
+ return (IBinnieTexture)this.textureSheets.get(name);
+ }
+
+ public Texture getTexture(String name)
+ {
+ if (!this.textures.containsKey(name)) {
+ throw new RuntimeException("Missing GUI texture Binnie Mods: " + name);
+ }
+ return (Texture)this.textures.get(name);
+ }
+}
diff --git a/src/Java/binnie/craftgui/resource/minecraft/CraftGUITexture.java b/src/Java/binnie/craftgui/resource/minecraft/CraftGUITexture.java
new file mode 100644
index 0000000000..cb1ca27bd5
--- /dev/null
+++ b/src/Java/binnie/craftgui/resource/minecraft/CraftGUITexture.java
@@ -0,0 +1,18 @@
+package binnie.craftgui.resource.minecraft;
+
+public enum CraftGUITexture
+{
+ Window("window"), PanelGray("panel.gray"), PanelBlack("panel.black"), PanelTinted("panel.tinted"), ButtonDisabled("button.disabled"), Button("button"), ButtonHighlighted("button.highlighted"), Slot("slot"), SlotBorder("slot.border"), SlotOverlay("slot.overlay"), SlotCharge("slot.charge"), LiquidTank("liquidtank"), LiquidTankOverlay("liquidtank.overlay"), StateError("errorstate.error"), StateWarning("errorstate.warning"), StateNone("errorstate.none"), EnergyBarBack("energybar.back"), EnergyBarGlow("energybar.glow"), EnergyBarGlass("energybar.glass"), TabDisabled("tab.disabled"), Tab("tab"), TabHighlighted("tab.highlighted"), TabOutline("tab.outline"), TabSolid("tab.solid"), ScrollDisabled("scroll.disabled"), Scroll("scroll"), ScrollHighlighted("scroll.highlighted"), Outline("outline"), HelpButton("button.help"), InfoButton("button.info"), UserButton("button.user"), PowerButton("button.power"), HorizontalLiquidTank("horizontalliquidtank"), HorizontalLiquidTankOverlay("horizontalliquidtank.overlay"), SlideUp("slide.up"), SlideDown("slide.down"), SlideLeft("slide.left"), SlideRight("slide.right"), Checkbox("checkbox"), CheckboxHighlighted("checkbox.highlighted"), CheckboxChecked("checkbox.checked"), CheckboxCheckedHighlighted("checkbox.checked.highlighted");
+
+ String name;
+
+ private CraftGUITexture(String name)
+ {
+ this.name = name;
+ }
+
+ public String toString()
+ {
+ return this.name;
+ }
+}
diff --git a/src/Java/binnie/craftgui/resource/minecraft/CraftGUITextureSheet.java b/src/Java/binnie/craftgui/resource/minecraft/CraftGUITextureSheet.java
new file mode 100644
index 0000000000..816a422749
--- /dev/null
+++ b/src/Java/binnie/craftgui/resource/minecraft/CraftGUITextureSheet.java
@@ -0,0 +1,33 @@
+package binnie.craftgui.resource.minecraft;
+
+import binnie.core.BinnieCore;
+import binnie.core.proxy.BinnieProxy;
+import binnie.core.resource.BinnieResource;
+import binnie.core.resource.IBinnieTexture;
+import binnie.craftgui.core.CraftGUI;
+
+public enum CraftGUITextureSheet
+ implements IBinnieTexture
+{
+ Controls2("controls"), Panel2("panels"), Slots("slots");
+
+ String name;
+
+ private CraftGUITextureSheet(String name)
+ {
+ this.name = name;
+ }
+
+ public String toString()
+ {
+ return this.name;
+ }
+
+ public BinnieResource getTexture()
+ {
+ if (BinnieCore.proxy.isServer()) {
+ return null;
+ }
+ return CraftGUI.ResourceManager.getTextureSheet(this.name).getTexture();
+ }
+}
diff --git a/src/Java/binnie/craftgui/resource/minecraft/PaddedTexture.java b/src/Java/binnie/craftgui/resource/minecraft/PaddedTexture.java
new file mode 100644
index 0000000000..a682d0b37d
--- /dev/null
+++ b/src/Java/binnie/craftgui/resource/minecraft/PaddedTexture.java
@@ -0,0 +1,21 @@
+package binnie.craftgui.resource.minecraft;
+
+import binnie.core.resource.BinnieResource;
+import binnie.core.resource.IBinnieTexture;
+import binnie.craftgui.core.geometry.IArea;
+import binnie.craftgui.core.geometry.IBorder;
+import binnie.craftgui.resource.Texture;
+
+public class PaddedTexture
+ extends Texture
+{
+ public PaddedTexture(int u, int v, int w, int h, int offset, IBinnieTexture textureFile, int leftPadding, int rightPadding, int topPadding, int bottomPadding)
+ {
+ this(u, v, w, h, offset, textureFile.getTexture(), leftPadding, rightPadding, topPadding, bottomPadding);
+ }
+
+ public PaddedTexture(int u, int v, int w, int h, int offset, BinnieResource textureFile, int leftPadding, int rightPadding, int topPadding, int bottomPadding)
+ {
+ super(new IArea(u, v, w, h), new IBorder(topPadding, rightPadding, bottomPadding, leftPadding), new IBorder(offset), textureFile);
+ }
+}
diff --git a/src/Java/binnie/craftgui/resource/minecraft/ParsedTextureSheet.java b/src/Java/binnie/craftgui/resource/minecraft/ParsedTextureSheet.java
new file mode 100644
index 0000000000..4a10017b7c
--- /dev/null
+++ b/src/Java/binnie/craftgui/resource/minecraft/ParsedTextureSheet.java
@@ -0,0 +1,25 @@
+package binnie.craftgui.resource.minecraft;
+
+import binnie.core.resource.BinnieResource;
+import binnie.core.resource.IBinnieTexture;
+import binnie.core.resource.ResourceType;
+
+class ParsedTextureSheet
+ implements IBinnieTexture
+{
+ private String name;
+ private String modid;
+ private String path;
+
+ public ParsedTextureSheet(String name, String modid, String path)
+ {
+ this.name = name;
+ this.modid = modid;
+ this.path = path;
+ }
+
+ public BinnieResource getTexture()
+ {
+ return new BinnieResource(this.modid, ResourceType.GUI, this.path);
+ }
+}
diff --git a/src/Java/binnie/craftgui/resource/minecraft/StandardTexture.java b/src/Java/binnie/craftgui/resource/minecraft/StandardTexture.java
new file mode 100644
index 0000000000..b98facb505
--- /dev/null
+++ b/src/Java/binnie/craftgui/resource/minecraft/StandardTexture.java
@@ -0,0 +1,36 @@
+package binnie.craftgui.resource.minecraft;
+
+import binnie.core.resource.BinnieResource;
+import binnie.core.resource.IBinnieTexture;
+import binnie.craftgui.core.geometry.IArea;
+import binnie.craftgui.core.geometry.IBorder;
+import binnie.craftgui.resource.Texture;
+
+public class StandardTexture
+ extends Texture
+{
+ public StandardTexture(int u, int v, int w, int h, IBinnieTexture textureFile)
+ {
+ this(u, v, w, h, 0, textureFile.getTexture());
+ }
+
+ public StandardTexture(int u, int v, int w, int h, int offset, IBinnieTexture textureFile)
+ {
+ this(u, v, w, h, offset, textureFile.getTexture());
+ }
+
+ public StandardTexture(int u, int v, int w, int h, BinnieResource textureFile)
+ {
+ this(u, v, w, h, 0, textureFile);
+ }
+
+ public StandardTexture(int u, int v, int w, int h, int padding, BinnieResource textureFile)
+ {
+ super(new IArea(u, v, w, h), IBorder.ZERO, new IBorder(padding), textureFile);
+ }
+
+ public BinnieResource getTexture()
+ {
+ return getFilename();
+ }
+}
diff --git a/src/Java/binnie/craftgui/window/Panel.java b/src/Java/binnie/craftgui/window/Panel.java
new file mode 100644
index 0000000000..3b305f6d69
--- /dev/null
+++ b/src/Java/binnie/craftgui/window/Panel.java
@@ -0,0 +1,58 @@
+package binnie.craftgui.window;
+
+import binnie.craftgui.controls.core.Control;
+import binnie.craftgui.core.CraftGUI;
+import binnie.craftgui.core.IWidget;
+import binnie.craftgui.core.geometry.IArea;
+import binnie.craftgui.core.renderer.Renderer;
+import binnie.craftgui.minecraft.MinecraftGUI.PanelType;
+import binnie.craftgui.resource.minecraft.CraftGUITexture;
+
+public class Panel
+ extends Control
+{
+ IPanelType type;
+
+ public Panel(IWidget parent, float x, float y, float width, float height, IPanelType type)
+ {
+ super(parent, x, y, width, height);
+ this.type = type;
+ }
+
+ public Panel(IWidget parent, IArea area, IPanelType type)
+ {
+ this(parent, area.x(), area.y(), area.w(), area.h(), type);
+ }
+
+ public IPanelType getType()
+ {
+ return this.type;
+ }
+
+ public void onRenderBackground()
+ {
+ IPanelType panelType = getType();
+ if ((panelType instanceof MinecraftGUI.PanelType)) {
+ switch (1.$SwitchMap$binnie$craftgui$minecraft$MinecraftGUI$PanelType[((MinecraftGUI.PanelType)panelType).ordinal()])
+ {
+ case 1:
+ CraftGUI.Render.texture(CraftGUITexture.PanelBlack, getArea());
+ break;
+ case 2:
+ CraftGUI.Render.texture(CraftGUITexture.PanelGray, getArea());
+ break;
+ case 3:
+ CraftGUI.Render.texture(CraftGUITexture.PanelTinted, getArea());
+ break;
+ case 4:
+ CraftGUI.Render.texture(CraftGUITexture.Outline, getArea());
+ break;
+ case 5:
+ CraftGUI.Render.texture(CraftGUITexture.TabOutline, getArea());
+ break;
+ }
+ }
+ }
+
+ public static abstract interface IPanelType {}
+}
diff --git a/src/Java/binnie/extrabees/ExtraBees.java b/src/Java/binnie/extrabees/ExtraBees.java
new file mode 100644
index 0000000000..ef93560cc0
--- /dev/null
+++ b/src/Java/binnie/extrabees/ExtraBees.java
@@ -0,0 +1,123 @@
+package binnie.extrabees;
+
+import binnie.core.AbstractMod;
+import binnie.core.BinnieCore;
+import binnie.core.gui.IBinnieGUID;
+import binnie.core.network.BinniePacketHandler;
+import binnie.core.proxy.IProxyCore;
+import binnie.extrabees.apiary.ModuleApiary;
+import binnie.extrabees.config.ConfigurationMachines;
+import binnie.extrabees.config.ConfigurationMain;
+import binnie.extrabees.core.ExtraBeeGUID;
+import binnie.extrabees.core.ModuleCore;
+import binnie.extrabees.genetics.ModuleGenetics;
+import binnie.extrabees.liquids.ModuleLiquids;
+import binnie.extrabees.products.ModuleProducts;
+import binnie.extrabees.proxy.ExtraBeesProxy;
+import binnie.extrabees.worldgen.ModuleGeneration;
+import cpw.mods.fml.common.Mod;
+import cpw.mods.fml.common.Mod.EventHandler;
+import cpw.mods.fml.common.Mod.Instance;
+import cpw.mods.fml.common.SidedProxy;
+import cpw.mods.fml.common.event.FMLInitializationEvent;
+import cpw.mods.fml.common.event.FMLPostInitializationEvent;
+import cpw.mods.fml.common.event.FMLPreInitializationEvent;
+import net.minecraft.block.Block;
+import net.minecraft.block.material.Material;
+import net.minecraft.item.Item;
+
+@Mod(modid="ExtraBees", name="Extra Bees", useMetadata=true, dependencies="after:BinnieCore")
+public class ExtraBees
+ extends AbstractMod
+{
+ @Mod.Instance("ExtraBees")
+ public static ExtraBees instance;
+ @SidedProxy(clientSide="binnie.extrabees.proxy.ExtraBeesProxyClient", serverSide="binnie.extrabees.proxy.ExtraBeesProxyServer")
+ public static ExtraBeesProxy proxy;
+ public static Block hive;
+ public static Material materialBeehive;
+ public static Block ectoplasm;
+ public static Block apiaristMachine;
+ public static Block geneticMachine;
+ public static Block advGeneticMachine;
+ public static Item comb;
+ public static Item propolis;
+ public static Item honeyDrop;
+ public static Item honeyCrystal;
+ public static Item honeyCrystalEmpty;
+ public static Item dictionary;
+ public static Item itemMisc;
+
+ @Mod.EventHandler
+ public void preInit(FMLPreInitializationEvent evt)
+ {
+ addModule(new ModuleCore());
+ addModule(new ModuleProducts());
+ addModule(new ModuleGenetics());
+ addModule(new ModuleGeneration());
+ addModule(new ModuleLiquids());
+ addModule(new ModuleApiary());
+ preInit();
+ }
+
+ @Mod.EventHandler
+ public void init(FMLInitializationEvent evt)
+ {
+ init();
+ }
+
+ @Mod.EventHandler
+ public void postInit(FMLPostInitializationEvent evt)
+ {
+ postInit();
+ }
+
+ public ExtraBees()
+ {
+ instance = this;
+ }
+
+ public IBinnieGUID[] getGUIDs()
+ {
+ return ExtraBeeGUID.values();
+ }
+
+ public Class<?>[] getConfigs()
+ {
+ return new Class[] { ConfigurationMain.class, ConfigurationMachines.class };
+ }
+
+ public IProxyCore getProxy()
+ {
+ return proxy;
+ }
+
+ public String getChannel()
+ {
+ return "EB";
+ }
+
+ public String getModID()
+ {
+ return "extrabees";
+ }
+
+ protected Class<? extends BinniePacketHandler> getPacketHandler()
+ {
+ return PacketHandler.class;
+ }
+
+ public static class PacketHandler
+ extends BinniePacketHandler
+ {
+ public PacketHandler()
+ {
+ super();
+ }
+ }
+
+ public boolean isActive()
+ {
+ return BinnieCore.isExtraBeesActive();
+ }
+}
diff --git a/src/Java/binnie/extrabees/apiary/ComponentBeeModifier.java b/src/Java/binnie/extrabees/apiary/ComponentBeeModifier.java
new file mode 100644
index 0000000000..32cb7dcd48
--- /dev/null
+++ b/src/Java/binnie/extrabees/apiary/ComponentBeeModifier.java
@@ -0,0 +1,88 @@
+package binnie.extrabees.apiary;
+
+import binnie.core.machines.Machine;
+import binnie.core.machines.MachineComponent;
+import forestry.api.apiculture.IBee;
+import forestry.api.apiculture.IBeeGenome;
+import forestry.api.apiculture.IBeeListener;
+import forestry.api.apiculture.IBeeModifier;
+import forestry.api.genetics.IIndividual;
+import net.minecraft.item.ItemStack;
+
+public class ComponentBeeModifier
+ extends MachineComponent
+ implements IBeeModifier, IBeeListener
+{
+ public ComponentBeeModifier(Machine machine)
+ {
+ super(machine);
+ }
+
+ public float getTerritoryModifier(IBeeGenome genome, float currentModifier)
+ {
+ return 1.0F;
+ }
+
+ public float getMutationModifier(IBeeGenome genome, IBeeGenome mate, float currentModifier)
+ {
+ return 1.0F;
+ }
+
+ public float getLifespanModifier(IBeeGenome genome, IBeeGenome mate, float currentModifier)
+ {
+ return 1.0F;
+ }
+
+ public float getProductionModifier(IBeeGenome genome, float currentModifier)
+ {
+ return 1.0F;
+ }
+
+ public float getFloweringModifier(IBeeGenome genome, float currentModifier)
+ {
+ return 1.0F;
+ }
+
+ public boolean isSealed()
+ {
+ return false;
+ }
+
+ public boolean isSelfLighted()
+ {
+ return false;
+ }
+
+ public boolean isSunlightSimulated()
+ {
+ return false;
+ }
+
+ public boolean isHellish()
+ {
+ return false;
+ }
+
+ public void onQueenChange(ItemStack queen) {}
+
+ public void wearOutEquipment(int amount) {}
+
+ public void onQueenDeath(IBee queen) {}
+
+ public void onPostQueenDeath(IBee queen) {}
+
+ public boolean onPollenRetrieved(IBee queen, IIndividual pollen, boolean isHandled)
+ {
+ return false;
+ }
+
+ public boolean onEggLaid(IBee queen)
+ {
+ return false;
+ }
+
+ public float getGeneticDecay(IBeeGenome genome, float currentModifier)
+ {
+ return 1.0F;
+ }
+}
diff --git a/src/Java/binnie/extrabees/apiary/ComponentExtraBeeGUI.java b/src/Java/binnie/extrabees/apiary/ComponentExtraBeeGUI.java
new file mode 100644
index 0000000000..db2527e14c
--- /dev/null
+++ b/src/Java/binnie/extrabees/apiary/ComponentExtraBeeGUI.java
@@ -0,0 +1,28 @@
+package binnie.extrabees.apiary;
+
+import binnie.core.machines.Machine;
+import binnie.core.machines.MachineComponent;
+import binnie.core.machines.component.IInteraction.RightClick;
+import binnie.extrabees.ExtraBees;
+import binnie.extrabees.core.ExtraBeeGUID;
+import binnie.extrabees.proxy.ExtraBeesProxy;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.world.World;
+
+public class ComponentExtraBeeGUI
+ extends MachineComponent
+ implements IInteraction.RightClick
+{
+ ExtraBeeGUID id;
+
+ public ComponentExtraBeeGUI(Machine machine, ExtraBeeGUID id)
+ {
+ super(machine);
+ this.id = id;
+ }
+
+ public void onRightClick(World world, EntityPlayer player, int x, int y, int z)
+ {
+ ExtraBees.proxy.openGui(this.id, player, x, y, z);
+ }
+}
diff --git a/src/Java/binnie/extrabees/apiary/EnumHiveFrame.java b/src/Java/binnie/extrabees/apiary/EnumHiveFrame.java
new file mode 100644
index 0000000000..6a135c2532
--- /dev/null
+++ b/src/Java/binnie/extrabees/apiary/EnumHiveFrame.java
@@ -0,0 +1,140 @@
+package binnie.extrabees.apiary;
+
+import binnie.core.Mods;
+import binnie.core.Mods.Mod;
+import binnie.core.genetics.BeeModifierLogic;
+import binnie.core.genetics.EnumBeeBooleanModifier;
+import binnie.core.genetics.EnumBeeModifier;
+import binnie.extrabees.ExtraBees;
+import binnie.extrabees.proxy.ExtraBeesProxy;
+import cpw.mods.fml.common.registry.GameRegistry;
+import forestry.api.apiculture.IBee;
+import forestry.api.apiculture.IBeeGenome;
+import forestry.api.apiculture.IBeeHousing;
+import forestry.api.apiculture.IHiveFrame;
+import net.minecraft.init.Blocks;
+import net.minecraft.init.Items;
+import net.minecraft.item.Item;
+import net.minecraft.item.ItemStack;
+
+public enum EnumHiveFrame
+ implements IHiveFrame
+{
+ Cocoa, Cage, Soul, Clay, Debug;
+
+ Item item;
+
+ public static void init()
+ {
+ Cocoa.logic.setModifier(EnumBeeModifier.Lifespan, 0.75F, 0.25F);
+ Cocoa.logic.setModifier(EnumBeeModifier.Production, 1.5F, 5.0F);
+
+ Cage.logic.setModifier(EnumBeeModifier.Territory, 0.5F, 0.1F);
+ Cage.logic.setModifier(EnumBeeModifier.Lifespan, 0.75F, 0.5F);
+ Cage.logic.setModifier(EnumBeeModifier.Production, 0.75F, 0.5F);
+
+ Soul.logic.setModifier(EnumBeeModifier.Mutation, 1.5F, 5.0F);
+ Soul.logic.setModifier(EnumBeeModifier.Lifespan, 0.75F, 0.5F);
+ Soul.logic.setModifier(EnumBeeModifier.Production, 0.25F, 0.1F);
+ Soul.setMaxDamage(80);
+
+ Clay.logic.setModifier(EnumBeeModifier.Lifespan, 1.5F, 5.0F);
+ Clay.logic.setModifier(EnumBeeModifier.Mutation, 0.5F, 0.2F);
+ Clay.logic.setModifier(EnumBeeModifier.Production, 0.75F, 0.2F);
+
+ Debug.logic.setModifier(EnumBeeModifier.Lifespan, 1.0E-004F, 1.0E-004F);
+
+
+
+ GameRegistry.addRecipe(new ItemStack(Cocoa.item), new Object[] { " c ", "cFc", " c ", Character.valueOf('F'), Mods.Forestry.stack("frameImpregnated"), Character.valueOf('c'), new ItemStack(Items.dye, 1, 3) });
+
+
+
+ GameRegistry.addShapelessRecipe(new ItemStack(Cage.item), new Object[] { Mods.Forestry.stack("frameImpregnated"), Blocks.iron_bars });
+
+
+ GameRegistry.addShapelessRecipe(new ItemStack(Soul.item), new Object[] { Mods.Forestry.stack("frameImpregnated"), Blocks.soul_sand });
+
+
+ GameRegistry.addRecipe(new ItemStack(Clay.item), new Object[] { " c ", "cFc", " c ", Character.valueOf('F'), Mods.Forestry.stack("frameImpregnated"), Character.valueOf('c'), Items.clay_ball });
+ }
+
+ public int getIconIndex()
+ {
+ return 55 + ordinal();
+ }
+
+ public void setMaxDamage(int damage)
+ {
+ this.maxDamage = damage;
+ }
+
+ int maxDamage = 240;
+ BeeModifierLogic logic = new BeeModifierLogic();
+
+ private EnumHiveFrame() {}
+
+ public ItemStack frameUsed(IBeeHousing house, ItemStack frame, IBee queen, int wear)
+ {
+ frame.setItemDamage(frame.getItemDamage() + wear);
+ if (frame.getItemDamage() >= frame.getMaxDamage()) {
+ return null;
+ }
+ return frame;
+ }
+
+ public float getTerritoryModifier(IBeeGenome genome, float currentModifier)
+ {
+ return this.logic.getModifier(EnumBeeModifier.Territory, currentModifier);
+ }
+
+ public float getMutationModifier(IBeeGenome genome, IBeeGenome mate, float currentModifier)
+ {
+ return this.logic.getModifier(EnumBeeModifier.Mutation, currentModifier);
+ }
+
+ public float getLifespanModifier(IBeeGenome genome, IBeeGenome mate, float currentModifier)
+ {
+ return this.logic.getModifier(EnumBeeModifier.Lifespan, currentModifier);
+ }
+
+ public float getProductionModifier(IBeeGenome genome, float currentModifier)
+ {
+ return this.logic.getModifier(EnumBeeModifier.Production, currentModifier);
+ }
+
+ public float getFloweringModifier(IBeeGenome genome, float currentModifier)
+ {
+ return this.logic.getModifier(EnumBeeModifier.Flowering, currentModifier);
+ }
+
+ public float getGeneticDecay(IBeeGenome genome, float currentModifier)
+ {
+ return this.logic.getModifier(EnumBeeModifier.GeneticDecay, currentModifier);
+ }
+
+ public boolean isSealed()
+ {
+ return this.logic.getModifier(EnumBeeBooleanModifier.Sealed);
+ }
+
+ public boolean isSelfLighted()
+ {
+ return this.logic.getModifier(EnumBeeBooleanModifier.SelfLighted);
+ }
+
+ public boolean isSunlightSimulated()
+ {
+ return this.logic.getModifier(EnumBeeBooleanModifier.SunlightStimulated);
+ }
+
+ public boolean isHellish()
+ {
+ return this.logic.getModifier(EnumBeeBooleanModifier.Hellish);
+ }
+
+ public String getName()
+ {
+ return ExtraBees.proxy.localise("item.frame." + toString().toLowerCase());
+ }
+}
diff --git a/src/Java/binnie/extrabees/apiary/IndustrialFrame.java b/src/Java/binnie/extrabees/apiary/IndustrialFrame.java
new file mode 100644
index 0000000000..f8d3e5ff7a
--- /dev/null
+++ b/src/Java/binnie/extrabees/apiary/IndustrialFrame.java
@@ -0,0 +1,141 @@
+package binnie.extrabees.apiary;
+
+import forestry.api.apiculture.IBeeGenome;
+import forestry.api.apiculture.IBeeModifier;
+import net.minecraft.item.Item;
+import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.NBTTagCompound;
+
+public enum IndustrialFrame
+ implements IBeeModifier
+{
+ Empty("Empty", 5, 0), Light("Glowstone Lighting", 2, 4), Rain("Rain Shielding", 2, 4), Sunlight("Sunlight Simulator", 4, 8), Soul("Low Grade Mutagen", 5, 15), Uranium("High Grade Mutagen", 10, 50), Cage("Meshed Restrainer", 3, 12), Freedom("Territory Extension", 3, 16), Honey("Honey Amplifier", 4, 12), Jelly("Gelatin Amplifier", 8, 36), Leaf("Pollinator MK I", 3, 15), Pollen("Pollinator MK II", 7, 25), Clay("Lifespan Extensor", 2, 10), Emerald("Eon Simulator", 7, 20), NetherStar("Immortality Gate", 12, 50), Poison("Mortality Inhibitor", 8, 18);
+
+ String name;
+
+ private IndustrialFrame(String name, int wear, int power)
+ {
+ this.name = name;
+ this.wearMod = wear;
+ this.power = power;
+ }
+
+ public static ItemStack getItemStack(Item item, IndustrialFrame frame)
+ {
+ ItemStack stack = new ItemStack(item);
+ NBTTagCompound nbt = new NBTTagCompound();
+ nbt.setInteger("frame", frame.ordinal());
+ stack.setTagCompound(nbt);
+ return stack;
+ }
+
+ static
+ {
+ Light.lighted = true;
+
+ Rain.rain = true;
+
+ Sunlight.lighted = true;
+ Sunlight.sunlight = true;
+
+ Soul.mutationMod = 1.3F;
+
+ Uranium.mutationMod = 2.0F;
+
+ Cage.territoryMod = 0.4F;
+
+ Freedom.territoryMod = 1.4F;
+
+ Honey.productionMod = 1.4F;
+
+ Jelly.productionMod = 1.8F;
+
+ Leaf.floweringMod = 1.4F;
+
+ Pollen.floweringMod = 2.0F;
+
+ Clay.lifespanMod = 1.4F;
+
+ Emerald.lifespanMod = 2.0F;
+
+ NetherStar.lifespanMod = 20.0F;
+
+ Poison.lifespanMod = 0.5F;
+ }
+
+ float territoryMod = 1.0F;
+ float mutationMod = 1.0F;
+ float lifespanMod = 1.0F;
+ float productionMod = 1.0F;
+ float floweringMod = 1.0F;
+ boolean lighted = false;
+ boolean sunlight = false;
+ boolean rain = false;
+ int wearMod;
+ int power;
+
+ public float getTerritoryModifier(IBeeGenome genome, float currentModifier)
+ {
+ return this.territoryMod;
+ }
+
+ public float getMutationModifier(IBeeGenome genome, IBeeGenome mate, float currentModifier)
+ {
+ return this.mutationMod;
+ }
+
+ public float getLifespanModifier(IBeeGenome genome, IBeeGenome mate, float currentModifier)
+ {
+ return this.lifespanMod;
+ }
+
+ public float getProductionModifier(IBeeGenome genome, float currentModifier)
+ {
+ return this.productionMod;
+ }
+
+ public float getFloweringModifier(IBeeGenome genome, float currentModifier)
+ {
+ return this.floweringMod;
+ }
+
+ public boolean isSealed()
+ {
+ return this.rain;
+ }
+
+ public boolean isSelfLighted()
+ {
+ return this.lighted;
+ }
+
+ public boolean isSunlightSimulated()
+ {
+ return this.sunlight;
+ }
+
+ public boolean isHellish()
+ {
+ return false;
+ }
+
+ public Object getName()
+ {
+ return this.name;
+ }
+
+ public int getWearModifier()
+ {
+ return this.wearMod;
+ }
+
+ public int getPowerUsage()
+ {
+ return this.power;
+ }
+
+ public float getGeneticDecay(IBeeGenome genome, float currentModifier)
+ {
+ return 1.0F;
+ }
+}
diff --git a/src/Java/binnie/extrabees/apiary/ItemHiveFrame.java b/src/Java/binnie/extrabees/apiary/ItemHiveFrame.java
new file mode 100644
index 0000000000..c2e8c27fbc
--- /dev/null
+++ b/src/Java/binnie/extrabees/apiary/ItemHiveFrame.java
@@ -0,0 +1,100 @@
+package binnie.extrabees.apiary;
+
+import binnie.extrabees.ExtraBees;
+import binnie.extrabees.proxy.ExtraBeesProxy;
+import cpw.mods.fml.relauncher.Side;
+import cpw.mods.fml.relauncher.SideOnly;
+import forestry.api.apiculture.IBee;
+import forestry.api.apiculture.IBeeGenome;
+import forestry.api.apiculture.IBeeHousing;
+import forestry.api.apiculture.IHiveFrame;
+import forestry.api.core.Tabs;
+import net.minecraft.client.renderer.texture.IIconRegister;
+import net.minecraft.item.Item;
+import net.minecraft.item.ItemStack;
+
+public class ItemHiveFrame
+ extends Item
+ implements IHiveFrame
+{
+ EnumHiveFrame frame;
+
+ public String getItemStackDisplayName(ItemStack par1ItemStack)
+ {
+ return this.frame.getName();
+ }
+
+ public ItemHiveFrame(EnumHiveFrame frame)
+ {
+ this.frame = frame;
+ setMaxDamage(frame.maxDamage);
+ setCreativeTab(Tabs.tabApiculture);
+ setMaxStackSize(1);
+ setUnlocalizedName("hiveFrame");
+ }
+
+ public float getTerritoryModifier(IBeeGenome genome, float currentModifier)
+ {
+ return this.frame.getTerritoryModifier(genome, currentModifier);
+ }
+
+ public float getMutationModifier(IBeeGenome genome, IBeeGenome mate, float currentModifier)
+ {
+ return this.frame.getMutationModifier(genome, mate, currentModifier);
+ }
+
+ public float getLifespanModifier(IBeeGenome genome, IBeeGenome mate, float currentModifier)
+ {
+ return this.frame.getLifespanModifier(genome, mate, currentModifier);
+ }
+
+ public float getProductionModifier(IBeeGenome genome, float currentModifier)
+ {
+ return this.frame.getProductionModifier(genome, currentModifier);
+ }
+
+ public ItemStack frameUsed(IBeeHousing housing, ItemStack frame, IBee queen, int wear)
+ {
+ frame.setItemDamage(frame.getItemDamage() + wear);
+ if (frame.getItemDamage() >= frame.getMaxDamage()) {
+ return null;
+ }
+ return frame;
+ }
+
+ public float getFloweringModifier(IBeeGenome genome, float currentModifier)
+ {
+ return 1.0F;
+ }
+
+ public boolean isSealed()
+ {
+ return false;
+ }
+
+ public boolean isSelfLighted()
+ {
+ return false;
+ }
+
+ public boolean isSunlightSimulated()
+ {
+ return false;
+ }
+
+ public boolean isHellish()
+ {
+ return false;
+ }
+
+ @SideOnly(Side.CLIENT)
+ public void registerIcons(IIconRegister register)
+ {
+ this.itemIcon = ExtraBees.proxy.getIcon(register, "frame" + this.frame.toString());
+ }
+
+ public float getGeneticDecay(IBeeGenome genome, float currentModifier)
+ {
+ return 1.0F;
+ }
+}
diff --git a/src/Java/binnie/extrabees/apiary/ItemIndustrialFrame.java b/src/Java/binnie/extrabees/apiary/ItemIndustrialFrame.java
new file mode 100644
index 0000000000..0450798b52
--- /dev/null
+++ b/src/Java/binnie/extrabees/apiary/ItemIndustrialFrame.java
@@ -0,0 +1,66 @@
+package binnie.extrabees.apiary;
+
+import cpw.mods.fml.relauncher.Side;
+import cpw.mods.fml.relauncher.SideOnly;
+import java.util.List;
+import net.minecraft.creativetab.CreativeTabs;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.item.Item;
+import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.NBTTagCompound;
+
+public class ItemIndustrialFrame
+ extends Item
+{
+ @SideOnly(Side.CLIENT)
+ public boolean requiresMultipleRenderPasses()
+ {
+ return true;
+ }
+
+ @SideOnly(Side.CLIENT)
+ public void getSubItems(Item par1, CreativeTabs par2CreativeTabs, List par3List)
+ {
+ for (IndustrialFrame frame : )
+ {
+ ItemStack stack = new ItemStack(this);
+ NBTTagCompound nbt = new NBTTagCompound();
+ nbt.setInteger("frame", frame.ordinal());
+ stack.setTagCompound(nbt);
+ par3List.add(stack);
+ }
+ }
+
+ @SideOnly(Side.CLIENT)
+ public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4)
+ {
+ super.addInformation(par1ItemStack, par2EntityPlayer, par3List, par4);
+ IndustrialFrame frame = getFrame(par1ItemStack);
+ if (frame == null) {
+ par3List.add("Invalid Contents");
+ } else {
+ par3List.add(frame.getName());
+ }
+ }
+
+ public String getItemStackDisplayName(ItemStack par1ItemStack)
+ {
+ return "Industrial Frame";
+ }
+
+ public ItemIndustrialFrame()
+ {
+ setCreativeTab(CreativeTabs.tabMisc);
+ setMaxDamage(400);
+ setMaxStackSize(1);
+ setUnlocalizedName("industrialFrame");
+ }
+
+ public static IndustrialFrame getFrame(ItemStack stack)
+ {
+ if ((stack == null) || (!stack.hasTagCompound()) || (!stack.getTagCompound().hasKey("frame"))) {
+ return null;
+ }
+ return IndustrialFrame.values()[stack.getTagCompound().getInteger("frame")];
+ }
+}
diff --git a/src/Java/binnie/extrabees/apiary/ModuleApiary.java b/src/Java/binnie/extrabees/apiary/ModuleApiary.java
new file mode 100644
index 0000000000..bcf9da626b
--- /dev/null
+++ b/src/Java/binnie/extrabees/apiary/ModuleApiary.java
@@ -0,0 +1,96 @@
+package binnie.extrabees.apiary;
+
+import binnie.core.BinnieCore;
+import binnie.core.IInitializable;
+import binnie.core.Mods;
+import binnie.core.Mods.Mod;
+import binnie.core.circuits.BinnieCircuitLayout;
+import binnie.core.machines.MachineGroup;
+import binnie.core.proxy.BinnieProxy;
+import binnie.extrabees.ExtraBees;
+import binnie.extrabees.apiary.machine.AlvearyMachine;
+import binnie.extrabees.apiary.machine.AlvearyMutator;
+import binnie.extrabees.apiary.machine.AlvearyStimulator.CircuitType;
+import cpw.mods.fml.common.registry.GameRegistry;
+import forestry.api.core.Tabs;
+import net.minecraft.block.Block;
+import net.minecraft.init.Blocks;
+import net.minecraft.init.Items;
+import net.minecraft.item.ItemStack;
+import net.minecraftforge.oredict.ShapedOreRecipe;
+
+public class ModuleApiary
+ implements IInitializable
+{
+ public static Block blockComponent;
+ BinnieCircuitLayout stimulatorLayout;
+
+ public void preInit()
+ {
+ MachineGroup machineGroup = new MachineGroup(ExtraBees.instance, "alveay", "alveary", AlvearyMachine.values());
+ machineGroup.setCreativeTab(Tabs.tabApiculture);
+
+ BinnieCore.proxy.registerTileEntity(TileExtraBeeAlveary.class, "extrabees.tile.alveary", BinnieCore.proxy.createObject("binnie.core.machines.RendererMachine"));
+
+
+
+
+
+ blockComponent = machineGroup.getBlock();
+
+ AlvearyMutator.addMutationItem(new ItemStack(Blocks.soul_sand), 1.5F);
+
+ AlvearyMutator.addMutationItem(Mods.IC2.stack("UranFuel"), 4.0F);
+ AlvearyMutator.addMutationItem(Mods.IC2.stack("MOXFuel"), 10.0F);
+ AlvearyMutator.addMutationItem(Mods.IC2.stack("Plutonium"), 8.0F);
+ AlvearyMutator.addMutationItem(Mods.IC2.stack("smallPlutonium"), 5.0F);
+ AlvearyMutator.addMutationItem(Mods.IC2.stack("Uran235"), 4.0F);
+ AlvearyMutator.addMutationItem(Mods.IC2.stack("smallUran235"), 2.5F);
+ AlvearyMutator.addMutationItem(Mods.IC2.stack("Uran238"), 2.0F);
+
+ AlvearyMutator.addMutationItem(new ItemStack(Items.ender_pearl), 2.0F);
+ AlvearyMutator.addMutationItem(new ItemStack(Items.ender_eye), 4.0F);
+ for (EnumHiveFrame frame : EnumHiveFrame.values())
+ {
+ frame.item = new ItemHiveFrame(frame);
+ GameRegistry.registerItem(frame.item, "hiveFrame." + frame.name().toLowerCase());
+ }
+ }
+
+ public void postInit()
+ {
+ EnumHiveFrame.init();
+
+ GameRegistry.addRecipe(AlvearyMachine.Mutator.get(1), new Object[] { "g g", " a ", "t t", Character.valueOf('g'), Items.gold_ingot, Character.valueOf('a'), Mods.Forestry.block("alveary"), Character.valueOf('t'), new ItemStack(Mods.Forestry.item("thermionicTubes"), 1, 5) });
+
+
+
+ GameRegistry.addRecipe(AlvearyMachine.Frame.get(1), new Object[] { "iii", "tat", " t ", Character.valueOf('i'), Items.iron_ingot, Character.valueOf('a'), Mods.Forestry.block("alveary"), Character.valueOf('t'), new ItemStack(Mods.Forestry.item("thermionicTubes"), 1, 4) });
+
+
+
+ GameRegistry.addRecipe(AlvearyMachine.RainShield.get(1), new Object[] { " b ", "bab", "t t", Character.valueOf('b'), Items.brick, Character.valueOf('a'), Mods.Forestry.block("alveary"), Character.valueOf('t'), new ItemStack(Mods.Forestry.item("thermionicTubes"), 1, 4) });
+
+
+
+
+ GameRegistry.addRecipe(AlvearyMachine.Lighting.get(1), new Object[] { "iii", "iai", " t ", Character.valueOf('i'), Items.glowstone_dust, Character.valueOf('a'), Mods.Forestry.block("alveary"), Character.valueOf('t'), new ItemStack(Mods.Forestry.item("thermionicTubes"), 1, 4) });
+
+
+ GameRegistry.addRecipe(AlvearyMachine.Stimulator.get(1), new Object[] { "kik", "iai", " t ", Character.valueOf('i'), Items.gold_nugget, Character.valueOf('a'), Mods.Forestry.block("alveary"), Character.valueOf('t'), new ItemStack(Mods.Forestry.item("thermionicTubes"), 1, 4), Character.valueOf('k'), new ItemStack(Mods.Forestry.item("chipsets"), 1, 2) });
+
+
+ GameRegistry.addRecipe(AlvearyMachine.Hatchery.get(1), new Object[] { "i i", " a ", "iti", Character.valueOf('i'), Blocks.glass_pane, Character.valueOf('a'), Mods.Forestry.block("alveary"), Character.valueOf('t'), new ItemStack(Mods.Forestry.item("thermionicTubes"), 1, 5) });
+
+
+ GameRegistry.addRecipe(new ShapedOreRecipe(AlvearyMachine.Transmission.get(1), new Object[] { " t ", "tat", " t ", Character.valueOf('a'), Mods.Forestry.block("alveary"), Character.valueOf('t'), "gearTin" }));
+ for (AlvearyStimulator.CircuitType type : AlvearyStimulator.CircuitType.values()) {
+ type.createCircuit(this.stimulatorLayout);
+ }
+ }
+
+ public void init()
+ {
+ this.stimulatorLayout = new BinnieCircuitLayout(ExtraBees.instance, "Stimulator");
+ }
+}
diff --git a/src/Java/binnie/extrabees/apiary/TileExtraBeeAlveary.java b/src/Java/binnie/extrabees/apiary/TileExtraBeeAlveary.java
new file mode 100644
index 0000000000..3edf7e4a9c
--- /dev/null
+++ b/src/Java/binnie/extrabees/apiary/TileExtraBeeAlveary.java
@@ -0,0 +1,355 @@
+package binnie.extrabees.apiary;
+
+import binnie.Binnie;
+import binnie.core.BinnieCore;
+import binnie.core.genetics.ManagerGenetics;
+import binnie.core.machines.Machine;
+import binnie.core.machines.TileEntityMachine;
+import binnie.core.proxy.BinnieProxy;
+import binnie.extrabees.apiary.machine.AlvearyMachine.AlvearyPackage;
+import forestry.api.apiculture.IAlvearyComponent;
+import forestry.api.apiculture.IBee;
+import forestry.api.apiculture.IBeeGenome;
+import forestry.api.apiculture.IBeeHousing;
+import forestry.api.apiculture.IBeeListener;
+import forestry.api.apiculture.IBeeModifier;
+import forestry.api.apiculture.IBeeRoot;
+import forestry.api.core.IStructureLogic;
+import forestry.api.core.ITileStructure;
+import forestry.api.genetics.IIndividual;
+import java.util.ArrayList;
+import java.util.List;
+import net.minecraft.inventory.ISidedInventory;
+import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.tileentity.TileEntity;
+import net.minecraft.world.World;
+
+public class TileExtraBeeAlveary
+ extends TileEntityMachine
+ implements IAlvearyComponent, IBeeModifier, IBeeListener
+{
+ boolean init = false;
+ IStructureLogic structureLogic;
+ private boolean isMaster;
+ protected int masterX;
+ protected int masterZ;
+
+ public void updateEntity()
+ {
+ super.updateEntity();
+ if (!BinnieCore.proxy.isSimulating(this.worldObj)) {
+ return;
+ }
+ if (this.worldObj.getWorldTime() % 200L == 0L)
+ {
+ if ((!isIntegratedIntoStructure()) || (isMaster())) {
+ validateStructure();
+ }
+ ITileStructure master = getCentralTE();
+ if (master == null) {
+ return;
+ }
+ if (getBeeListener() != null) {
+ ((IAlvearyComponent)master).registerBeeListener(getBeeListener());
+ }
+ if (getBeeModifier() != null) {
+ ((IAlvearyComponent)master).registerBeeModifier(getBeeModifier());
+ }
+ this.init = true;
+ }
+ }
+
+ public void readFromNBT(NBTTagCompound nbttagcompound)
+ {
+ super.readFromNBT(nbttagcompound);
+
+ this.isMaster = nbttagcompound.getBoolean("IsMaster");
+ this.masterX = nbttagcompound.getInteger("MasterX");
+ this.masterY = nbttagcompound.getInteger("MasterY");
+ this.masterZ = nbttagcompound.getInteger("MasterZ");
+ if (this.isMaster) {
+ makeMaster();
+ }
+ this.structureLogic.readFromNBT(nbttagcompound);
+
+ updateAlvearyBlocks();
+
+ this.init = false;
+ }
+
+ public void writeToNBT(NBTTagCompound nbttagcompound)
+ {
+ super.writeToNBT(nbttagcompound);
+
+ nbttagcompound.setBoolean("IsMaster", this.isMaster);
+ nbttagcompound.setInteger("MasterX", this.masterX);
+ nbttagcompound.setInteger("MasterY", this.masterY);
+ nbttagcompound.setInteger("MasterZ", this.masterZ);
+
+
+ this.structureLogic.writeToNBT(nbttagcompound);
+ }
+
+ AlvearyMachine.AlvearyPackage getAlvearyPackage()
+ {
+ return (AlvearyMachine.AlvearyPackage)getMachine().getPackage();
+ }
+
+ public TileExtraBeeAlveary()
+ {
+ this.structureLogic = Binnie.Genetics.getBeeRoot().createAlvearyStructureLogic(this);
+ }
+
+ public TileExtraBeeAlveary(AlvearyMachine.AlvearyPackage alvearyPackage)
+ {
+ super(alvearyPackage);
+ this.structureLogic = Binnie.Genetics.getBeeRoot().createAlvearyStructureLogic(this);
+ }
+
+ public String getTypeUID()
+ {
+ return this.structureLogic.getTypeUID();
+ }
+
+ protected int masterY = -99;
+
+ public void makeMaster() {}
+
+ public void onStructureReset()
+ {
+ setCentralTE(null);
+ this.isMaster = false;
+ this.worldObj.markBlockForUpdate(this.xCoord, this.yCoord, this.zCoord);
+ updateAlvearyBlocks();
+ }
+
+ public ITileStructure getCentralTE()
+ {
+ if ((this.worldObj == null) || (!isIntegratedIntoStructure())) {
+ return null;
+ }
+ if (!isMaster())
+ {
+ TileEntity tile = this.worldObj.getTileEntity(this.masterX, this.masterY, this.masterZ);
+ if ((tile instanceof ITileStructure))
+ {
+ ITileStructure master = (ITileStructure)this.worldObj.getTileEntity(this.masterX, this.masterY, this.masterZ);
+ if (master.isMaster()) {
+ return master;
+ }
+ return null;
+ }
+ return null;
+ }
+ return this;
+ }
+
+ public void validateStructure()
+ {
+ this.structureLogic.validateStructure();
+ updateAlvearyBlocks();
+ }
+
+ private boolean isSameTile(TileEntity tile)
+ {
+ return (tile.xCoord == this.xCoord) && (tile.yCoord == this.yCoord) && (tile.zCoord == this.zCoord);
+ }
+
+ public void setCentralTE(TileEntity tile)
+ {
+ if ((tile == null) || (tile == this) || (isSameTile(tile)))
+ {
+ this.masterX = (this.masterZ = 0);
+ this.masterY = -99;
+ updateAlvearyBlocks();
+ return;
+ }
+ this.isMaster = false;
+ this.masterX = tile.xCoord;
+ this.masterY = tile.yCoord;
+ this.masterZ = tile.zCoord;
+
+
+ markDirty();
+ if (getBeeListener() != null) {
+ ((IAlvearyComponent)tile).registerBeeListener(getBeeListener());
+ }
+ if (getBeeModifier() != null) {
+ ((IAlvearyComponent)tile).registerBeeModifier(getBeeModifier());
+ }
+ updateAlvearyBlocks();
+ }
+
+ public boolean isMaster()
+ {
+ return this.isMaster;
+ }
+
+ protected boolean hasMaster()
+ {
+ return this.masterY >= 0;
+ }
+
+ public boolean isIntegratedIntoStructure()
+ {
+ return (this.isMaster) || (this.masterY >= 0);
+ }
+
+ public void registerBeeModifier(IBeeModifier modifier) {}
+
+ public void removeBeeModifier(IBeeModifier modifier) {}
+
+ public void addTemperatureChange(float change, float boundaryDown, float boundaryUp) {}
+
+ public void addHumidityChange(float change, float boundaryDown, float boundaryUp) {}
+
+ public boolean hasFunction()
+ {
+ return true;
+ }
+
+ public IBeeModifier getBeeModifier()
+ {
+ return (IBeeModifier)getMachine().getInterface(IBeeModifier.class);
+ }
+
+ public IBeeListener getBeeListener()
+ {
+ return (IBeeListener)getMachine().getInterface(IBeeListener.class);
+ }
+
+ public float getTerritoryModifier(IBeeGenome genome, float currentModifier)
+ {
+ return getBeeModifier() == null ? 1.0F : getBeeModifier().getTerritoryModifier(genome, currentModifier);
+ }
+
+ public float getMutationModifier(IBeeGenome genome, IBeeGenome mate, float currentModifier)
+ {
+ return getBeeModifier() == null ? 1.0F : getBeeModifier().getMutationModifier(genome, mate, currentModifier);
+ }
+
+ public float getLifespanModifier(IBeeGenome genome, IBeeGenome mate, float currentModifier)
+ {
+ return getBeeModifier() == null ? 1.0F : getBeeModifier().getLifespanModifier(genome, mate, currentModifier);
+ }
+
+ public float getProductionModifier(IBeeGenome genome, float currentModifier)
+ {
+ return getBeeModifier() == null ? 1.0F : getBeeModifier().getProductionModifier(genome, currentModifier);
+ }
+
+ public float getFloweringModifier(IBeeGenome genome, float currentModifier)
+ {
+ return getBeeModifier() == null ? 1.0F : getBeeModifier().getFloweringModifier(genome, currentModifier);
+ }
+
+ public boolean isSealed()
+ {
+ return getBeeModifier() == null ? false : getBeeModifier().isSealed();
+ }
+
+ public boolean isSelfLighted()
+ {
+ return getBeeModifier() == null ? false : getBeeModifier().isSelfLighted();
+ }
+
+ public boolean isSunlightSimulated()
+ {
+ return getBeeModifier() == null ? false : getBeeModifier().isSunlightSimulated();
+ }
+
+ public boolean isHellish()
+ {
+ return getBeeModifier() == null ? false : getBeeModifier().isHellish();
+ }
+
+ public void registerBeeListener(IBeeListener event) {}
+
+ public void removeBeeListener(IBeeListener event) {}
+
+ public void onQueenChange(ItemStack queen)
+ {
+ if (getBeeListener() != null) {
+ getBeeListener().onQueenChange(queen);
+ }
+ }
+
+ public void wearOutEquipment(int amount)
+ {
+ if (getBeeListener() != null) {
+ getBeeListener().wearOutEquipment(amount);
+ }
+ }
+
+ public void onQueenDeath(IBee queen)
+ {
+ if (getBeeListener() != null) {
+ getBeeListener().onQueenDeath(queen);
+ }
+ }
+
+ public void onPostQueenDeath(IBee queen)
+ {
+ if (getBeeListener() != null) {
+ getBeeListener().onPostQueenDeath(queen);
+ }
+ }
+
+ public boolean onPollenRetrieved(IBee queen, IIndividual pollen, boolean isHandled)
+ {
+ return false;
+ }
+
+ public boolean onEggLaid(IBee queen)
+ {
+ return false;
+ }
+
+ public float getGeneticDecay(IBeeGenome genome, float currentModifier)
+ {
+ return 1.0F;
+ }
+
+ public IBeeHousing getBeeHousing()
+ {
+ return getCentralTE() == null ? null : (IBeeHousing)getCentralTE();
+ }
+
+ List<TileEntity> tiles = new ArrayList();
+
+ public List<TileEntity> getAlvearyBlocks()
+ {
+ updateAlvearyBlocks();
+ return this.tiles;
+ }
+
+ private void updateAlvearyBlocks()
+ {
+ this.tiles.clear();
+ if (getCentralTE() != null)
+ {
+ ITileStructure struct = getCentralTE();
+ if (!struct.isIntegratedIntoStructure()) {
+ return;
+ }
+ TileEntity central = (TileEntity)struct;
+ for (int x = -2; x <= 2; x++) {
+ for (int z = -2; z <= 2; z++) {
+ for (int y = -2; y <= 2; y++)
+ {
+ TileEntity tile = getWorldObj().getTileEntity(this.xCoord + x, this.yCoord + y, this.zCoord + z);
+ if ((tile != null) && ((tile instanceof ITileStructure)) && (((ITileStructure)tile).getCentralTE() == struct)) {
+ this.tiles.add(tile);
+ }
+ }
+ }
+ }
+ }
+ }
+
+ public ISidedInventory getStructureInventory()
+ {
+ return (ISidedInventory)getMachine().getInterface(ISidedInventory.class);
+ }
+}
diff --git a/src/Java/binnie/extrabees/apiary/machine/AlvearyFrame.java b/src/Java/binnie/extrabees/apiary/machine/AlvearyFrame.java
new file mode 100644
index 0000000000..a910e101f9
--- /dev/null
+++ b/src/Java/binnie/extrabees/apiary/machine/AlvearyFrame.java
@@ -0,0 +1,125 @@
+package binnie.extrabees.apiary.machine;
+
+import binnie.Binnie;
+import binnie.core.genetics.ManagerGenetics;
+import binnie.core.machines.IMachine;
+import binnie.core.machines.Machine;
+import binnie.core.machines.inventory.ComponentInventorySlots;
+import binnie.core.machines.inventory.InventorySlot;
+import binnie.core.machines.inventory.SlotValidator;
+import binnie.craftgui.minecraft.IMachineInformation;
+import binnie.extrabees.apiary.ComponentBeeModifier;
+import binnie.extrabees.apiary.ComponentExtraBeeGUI;
+import binnie.extrabees.apiary.TileExtraBeeAlveary;
+import binnie.extrabees.core.ExtraBeeGUID;
+import binnie.extrabees.core.ExtraBeeTexture;
+import forestry.api.apiculture.IBeeGenome;
+import forestry.api.apiculture.IBeeHousing;
+import forestry.api.apiculture.IBeeListener;
+import forestry.api.apiculture.IBeeModifier;
+import forestry.api.apiculture.IBeeRoot;
+import forestry.api.apiculture.IBeekeepingMode;
+import forestry.api.apiculture.IHiveFrame;
+import net.minecraft.inventory.IInventory;
+import net.minecraft.item.ItemStack;
+import net.minecraft.tileentity.TileEntity;
+import net.minecraft.world.World;
+
+public class AlvearyFrame
+{
+ public static int slotFrame = 0;
+
+ public static class PackageAlvearyFrame
+ extends AlvearyMachine.AlvearyPackage
+ implements IMachineInformation
+ {
+ public PackageAlvearyFrame()
+ {
+ super(ExtraBeeTexture.AlvearyFrame.getTexture(), false);
+ }
+
+ public void createMachine(Machine machine)
+ {
+ new ComponentExtraBeeGUI(machine, ExtraBeeGUID.AlvearyFrame);
+
+ ComponentInventorySlots inventory = new ComponentInventorySlots(machine);
+
+ inventory.addSlot(AlvearyFrame.slotFrame, "frame");
+ inventory.getSlot(AlvearyFrame.slotFrame).setValidator(new AlvearyFrame.SlotValidatorFrame());
+
+ new AlvearyFrame.ComponentFrameModifier(machine);
+ }
+ }
+
+ public static class SlotValidatorFrame
+ extends SlotValidator
+ {
+ public SlotValidatorFrame()
+ {
+ super();
+ }
+
+ public boolean isValid(ItemStack itemStack)
+ {
+ return (itemStack != null) && ((itemStack.getItem() instanceof IHiveFrame));
+ }
+
+ public String getTooltip()
+ {
+ return "Hive Frames";
+ }
+ }
+
+ public static class ComponentFrameModifier
+ extends ComponentBeeModifier
+ implements IBeeModifier, IBeeListener
+ {
+ public ComponentFrameModifier(Machine machine)
+ {
+ super();
+ }
+
+ public void wearOutEquipment(int amount)
+ {
+ if (getHiveFrame() == null) {
+ return;
+ }
+ World world = getMachine().getTileEntity().getWorldObj();
+ int wear = Math.round(amount * 5 * Binnie.Genetics.getBeeRoot().getBeekeepingMode(world).getWearModifier());
+ getInventory().setInventorySlotContents(AlvearyFrame.slotFrame, getHiveFrame().frameUsed((IBeeHousing)((TileExtraBeeAlveary)getMachine().getTileEntity()).getCentralTE(), getInventory().getStackInSlot(AlvearyFrame.slotFrame), null, wear));
+ }
+
+ public IHiveFrame getHiveFrame()
+ {
+ if (getInventory().getStackInSlot(AlvearyFrame.slotFrame) != null) {
+ return (IHiveFrame)getInventory().getStackInSlot(AlvearyFrame.slotFrame).getItem();
+ }
+ return null;
+ }
+
+ public float getTerritoryModifier(IBeeGenome genome, float currentModifier)
+ {
+ return getHiveFrame() == null ? 1.0F : getHiveFrame().getTerritoryModifier(genome, currentModifier);
+ }
+
+ public float getMutationModifier(IBeeGenome genome, IBeeGenome mate, float currentModifier)
+ {
+ return getHiveFrame() == null ? 1.0F : getHiveFrame().getMutationModifier(genome, mate, currentModifier);
+ }
+
+ public float getLifespanModifier(IBeeGenome genome, IBeeGenome mate, float currentModifier)
+ {
+ return getHiveFrame() == null ? 1.0F : getHiveFrame().getLifespanModifier(genome, mate, currentModifier);
+ }
+
+ public float getProductionModifier(IBeeGenome genome, float currentModifier)
+ {
+ return getHiveFrame() == null ? 1.0F : getHiveFrame().getProductionModifier(genome, currentModifier);
+ }
+
+ public float getFloweringModifier(IBeeGenome genome, float currentModifier)
+ {
+ return getHiveFrame() == null ? 1.0F : getHiveFrame().getFloweringModifier(genome, currentModifier);
+ }
+ }
+}
diff --git a/src/Java/binnie/extrabees/apiary/machine/AlvearyHatchery.java b/src/Java/binnie/extrabees/apiary/machine/AlvearyHatchery.java
new file mode 100644
index 0000000000..276683b860
--- /dev/null
+++ b/src/Java/binnie/extrabees/apiary/machine/AlvearyHatchery.java
@@ -0,0 +1,106 @@
+package binnie.extrabees.apiary.machine;
+
+import binnie.Binnie;
+import binnie.core.genetics.ManagerGenetics;
+import binnie.core.machines.IMachine;
+import binnie.core.machines.Machine;
+import binnie.core.machines.inventory.ComponentInventorySlots;
+import binnie.core.machines.inventory.InventorySlot;
+import binnie.core.machines.inventory.SlotValidator;
+import binnie.core.machines.transfer.TransferRequest;
+import binnie.craftgui.minecraft.IMachineInformation;
+import binnie.extrabees.apiary.ComponentBeeModifier;
+import binnie.extrabees.apiary.ComponentExtraBeeGUI;
+import binnie.extrabees.apiary.TileExtraBeeAlveary;
+import binnie.extrabees.core.ExtraBeeGUID;
+import binnie.extrabees.core.ExtraBeeTexture;
+import forestry.api.apiculture.EnumBeeType;
+import forestry.api.apiculture.IBee;
+import forestry.api.apiculture.IBeeHousing;
+import forestry.api.apiculture.IBeeListener;
+import forestry.api.apiculture.IBeeModifier;
+import forestry.api.apiculture.IBeeRoot;
+import forestry.core.EnumErrorCode;
+import java.util.Random;
+import net.minecraft.item.ItemStack;
+import net.minecraft.tileentity.TileEntity;
+
+public class AlvearyHatchery
+{
+ public static int[] slotLarvae = { 0, 1, 2, 3, 4 };
+
+ public static class PackageAlvearyHatchery
+ extends AlvearyMachine.AlvearyPackage
+ implements IMachineInformation
+ {
+ public PackageAlvearyHatchery()
+ {
+ super(ExtraBeeTexture.AlvearyHatchery.getTexture(), false);
+ }
+
+ public void createMachine(Machine machine)
+ {
+ new ComponentExtraBeeGUI(machine, ExtraBeeGUID.AlvearyHatchery);
+
+ ComponentInventorySlots inventory = new ComponentInventorySlots(machine);
+ for (InventorySlot slot : inventory.addSlotArray(AlvearyHatchery.slotLarvae, "hatchery")) {
+ slot.setValidator(new AlvearyHatchery.SlotValidatorLarvae());
+ }
+ new AlvearyHatchery.ComponentFrameModifier(machine);
+ }
+ }
+
+ public static class SlotValidatorLarvae
+ extends SlotValidator
+ {
+ public SlotValidatorLarvae()
+ {
+ super();
+ }
+
+ public boolean isValid(ItemStack itemStack)
+ {
+ return (Binnie.Genetics.getBeeRoot().isMember(itemStack)) && (Binnie.Genetics.getBeeRoot().getType(itemStack) == EnumBeeType.LARVAE);
+ }
+
+ public String getTooltip()
+ {
+ return "Larvae";
+ }
+ }
+
+ public static class ComponentFrameModifier
+ extends ComponentBeeModifier
+ implements IBeeModifier, IBeeListener
+ {
+ public ComponentFrameModifier(Machine machine)
+ {
+ super();
+ }
+
+ public void onUpdate()
+ {
+ if (new Random().nextInt(2400) == 0)
+ {
+ TileEntity tile = getMachine().getTileEntity();
+ if ((tile instanceof TileExtraBeeAlveary))
+ {
+ IBeeHousing house = ((TileExtraBeeAlveary)tile).getBeeHousing();
+ if ((house != null) && (house.getErrorState() == EnumErrorCode.OK))
+ {
+ ItemStack queenStack = house.getQueen();
+ IBee queen = queenStack == null ? null : Binnie.Genetics.getBeeRoot().getMember(queenStack);
+ if (queen != null)
+ {
+ ItemStack larvae = Binnie.Genetics.getBeeRoot().getMemberStack(Binnie.Genetics.getBeeRoot().getBee(getMachine().getWorld(), queen.getGenome()), EnumBeeType.LARVAE.ordinal());
+
+
+
+ new TransferRequest(larvae, getInventory()).transfer(true);
+ }
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/src/Java/binnie/extrabees/apiary/machine/AlvearyLighting.java b/src/Java/binnie/extrabees/apiary/machine/AlvearyLighting.java
new file mode 100644
index 0000000000..fad796c889
--- /dev/null
+++ b/src/Java/binnie/extrabees/apiary/machine/AlvearyLighting.java
@@ -0,0 +1,41 @@
+package binnie.extrabees.apiary.machine;
+
+import binnie.core.machines.Machine;
+import binnie.craftgui.minecraft.IMachineInformation;
+import binnie.extrabees.apiary.ComponentBeeModifier;
+import binnie.extrabees.core.ExtraBeeTexture;
+import forestry.api.apiculture.IBeeListener;
+import forestry.api.apiculture.IBeeModifier;
+
+public class AlvearyLighting
+{
+ public static class PackageAlvearyLighting
+ extends AlvearyMachine.AlvearyPackage
+ implements IMachineInformation
+ {
+ public PackageAlvearyLighting()
+ {
+ super(ExtraBeeTexture.AlvearyLighting.getTexture(), false);
+ }
+
+ public void createMachine(Machine machine)
+ {
+ new AlvearyLighting.ComponentLighting(machine);
+ }
+ }
+
+ public static class ComponentLighting
+ extends ComponentBeeModifier
+ implements IBeeModifier, IBeeListener
+ {
+ public ComponentLighting(Machine machine)
+ {
+ super();
+ }
+
+ public boolean isSelfLighted()
+ {
+ return true;
+ }
+ }
+}
diff --git a/src/Java/binnie/extrabees/apiary/machine/AlvearyMachine.java b/src/Java/binnie/extrabees/apiary/machine/AlvearyMachine.java
new file mode 100644
index 0000000000..2dc0410770
--- /dev/null
+++ b/src/Java/binnie/extrabees/apiary/machine/AlvearyMachine.java
@@ -0,0 +1,66 @@
+package binnie.extrabees.apiary.machine;
+
+import binnie.core.machines.IMachineType;
+import binnie.core.machines.Machine;
+import binnie.core.machines.MachinePackage;
+import binnie.core.machines.MachineRendererBlock;
+import binnie.core.resource.BinnieResource;
+import binnie.extrabees.apiary.ModuleApiary;
+import binnie.extrabees.apiary.TileExtraBeeAlveary;
+import net.minecraft.client.renderer.RenderBlocks;
+import net.minecraft.item.ItemStack;
+import net.minecraft.tileentity.TileEntity;
+
+public enum AlvearyMachine
+ implements IMachineType
+{
+ Mutator(AlvearyMutator.PackageAlvearyMutator.class), Frame(AlvearyFrame.PackageAlvearyFrame.class), RainShield(AlvearyRainShield.PackageAlvearyRainShield.class), Lighting(AlvearyLighting.PackageAlvearyLighting.class), Stimulator(AlvearyStimulator.PackageAlvearyStimulator.class), Hatchery(AlvearyHatchery.PackageAlvearyHatchery.class), Transmission(AlvearyTransmission.PackageAlvearyTransmission.class);
+
+ Class<? extends MachinePackage> clss;
+
+ private AlvearyMachine(Class<? extends MachinePackage> clss)
+ {
+ this.clss = clss;
+ }
+
+ public Class<? extends MachinePackage> getPackageClass()
+ {
+ return this.clss;
+ }
+
+ public ItemStack get(int size)
+ {
+ return new ItemStack(ModuleApiary.blockComponent, size, ordinal());
+ }
+
+ public static abstract class AlvearyPackage
+ extends MachinePackage
+ {
+ BinnieResource machineTexture;
+
+ public AlvearyPackage(String id, BinnieResource machineTexture, boolean powered)
+ {
+ super(powered);
+ this.machineTexture = machineTexture;
+ }
+
+ public void createMachine(Machine machine) {}
+
+ public TileEntity createTileEntity()
+ {
+ return new TileExtraBeeAlveary(this);
+ }
+
+ public void register() {}
+
+ public void renderMachine(Machine machine, double x, double y, double z, float var8, RenderBlocks renderer)
+ {
+ MachineRendererBlock.instance.renderMachine(this.machineTexture, x, y, z, var8);
+ }
+ }
+
+ public boolean isActive()
+ {
+ return true;
+ }
+}
diff --git a/src/Java/binnie/extrabees/apiary/machine/AlvearyMutator.java b/src/Java/binnie/extrabees/apiary/machine/AlvearyMutator.java
new file mode 100644
index 0000000000..9c9fafc15a
--- /dev/null
+++ b/src/Java/binnie/extrabees/apiary/machine/AlvearyMutator.java
@@ -0,0 +1,125 @@
+package binnie.extrabees.apiary.machine;
+
+import binnie.core.machines.Machine;
+import binnie.core.machines.MachineUtil;
+import binnie.core.machines.inventory.ComponentInventorySlots;
+import binnie.core.machines.inventory.InventorySlot;
+import binnie.core.machines.inventory.SlotValidator;
+import binnie.core.machines.inventory.ValidatorIcon;
+import binnie.craftgui.minecraft.IMachineInformation;
+import binnie.extrabees.ExtraBees;
+import binnie.extrabees.apiary.ComponentBeeModifier;
+import binnie.extrabees.apiary.ComponentExtraBeeGUI;
+import binnie.extrabees.core.ExtraBeeGUID;
+import binnie.extrabees.core.ExtraBeeTexture;
+import forestry.api.apiculture.IBee;
+import forestry.api.apiculture.IBeeGenome;
+import forestry.api.apiculture.IBeeListener;
+import forestry.api.apiculture.IBeeModifier;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
+import net.minecraft.item.ItemStack;
+
+public class AlvearyMutator
+{
+ public static int slotMutator = 0;
+
+ public static class PackageAlvearyMutator
+ extends AlvearyMachine.AlvearyPackage
+ implements IMachineInformation
+ {
+ public PackageAlvearyMutator()
+ {
+ super(ExtraBeeTexture.AlvearyMutator.getTexture(), false);
+ }
+
+ public void createMachine(Machine machine)
+ {
+ new ComponentExtraBeeGUI(machine, ExtraBeeGUID.AlvearyMutator);
+
+ ComponentInventorySlots inventory = new ComponentInventorySlots(machine);
+
+ inventory.addSlot(AlvearyMutator.slotMutator, "mutator");
+ inventory.getSlot(AlvearyMutator.slotMutator).setValidator(new AlvearyMutator.SlotValidatorMutator());
+
+ new AlvearyMutator.ComponentMutatorModifier(machine);
+ }
+ }
+
+ public static class SlotValidatorMutator
+ extends SlotValidator
+ {
+ public SlotValidatorMutator()
+ {
+ super();
+ }
+
+ public boolean isValid(ItemStack itemStack)
+ {
+ return AlvearyMutator.isMutationItem(itemStack);
+ }
+
+ public String getTooltip()
+ {
+ return "Mutagenic Agents";
+ }
+ }
+
+ public static class ComponentMutatorModifier
+ extends ComponentBeeModifier
+ implements IBeeModifier, IBeeListener
+ {
+ public ComponentMutatorModifier(Machine machine)
+ {
+ super();
+ }
+
+ public float getMutationModifier(IBeeGenome genome, IBeeGenome mate, float currentModifier)
+ {
+ if (getUtil().isSlotEmpty(AlvearyMutator.slotMutator)) {
+ return 1.0F;
+ }
+ float mult = AlvearyMutator.getMutationMult(getUtil().getStack(AlvearyMutator.slotMutator));
+ return Math.min(mult, 15.0F / currentModifier);
+ }
+
+ public void onPostQueenDeath(IBee queen)
+ {
+ getUtil().decreaseStack(AlvearyMutator.slotMutator, 1);
+ }
+ }
+
+ static Map<ItemStack, Float> mutations = new HashMap();
+
+ public static boolean isMutationItem(ItemStack item)
+ {
+ return getMutationMult(item) > 0.0F;
+ }
+
+ public static float getMutationMult(ItemStack item)
+ {
+ if (item == null) {
+ return 1.0F;
+ }
+ for (ItemStack comp : mutations.keySet()) {
+ if ((ItemStack.areItemStackTagsEqual(item, comp)) && (item.isItemEqual(comp))) {
+ return ((Float)mutations.get(comp)).floatValue();
+ }
+ }
+ return 1.0F;
+ }
+
+ public static void addMutationItem(ItemStack item, float chance)
+ {
+ if (item == null) {
+ return;
+ }
+ mutations.put(item, Float.valueOf(chance));
+ }
+
+ public static Collection<ItemStack> getMutagens()
+ {
+ return mutations.keySet();
+ }
+}
diff --git a/src/Java/binnie/extrabees/apiary/machine/AlvearyRainShield.java b/src/Java/binnie/extrabees/apiary/machine/AlvearyRainShield.java
new file mode 100644
index 0000000000..18b5dcee34
--- /dev/null
+++ b/src/Java/binnie/extrabees/apiary/machine/AlvearyRainShield.java
@@ -0,0 +1,41 @@
+package binnie.extrabees.apiary.machine;
+
+import binnie.core.machines.Machine;
+import binnie.craftgui.minecraft.IMachineInformation;
+import binnie.extrabees.apiary.ComponentBeeModifier;
+import binnie.extrabees.core.ExtraBeeTexture;
+import forestry.api.apiculture.IBeeListener;
+import forestry.api.apiculture.IBeeModifier;
+
+public class AlvearyRainShield
+{
+ public static class PackageAlvearyRainShield
+ extends AlvearyMachine.AlvearyPackage
+ implements IMachineInformation
+ {
+ public PackageAlvearyRainShield()
+ {
+ super(ExtraBeeTexture.AlvearyRainShield.getTexture(), false);
+ }
+
+ public void createMachine(Machine machine)
+ {
+ new AlvearyRainShield.ComponentRainShield(machine);
+ }
+ }
+
+ public static class ComponentRainShield
+ extends ComponentBeeModifier
+ implements IBeeModifier, IBeeListener
+ {
+ public ComponentRainShield(Machine machine)
+ {
+ super();
+ }
+
+ public boolean isSealed()
+ {
+ return true;
+ }
+ }
+}
diff --git a/src/Java/binnie/extrabees/apiary/machine/AlvearyStimulator.java b/src/Java/binnie/extrabees/apiary/machine/AlvearyStimulator.java
new file mode 100644
index 0000000000..47b6dab48b
--- /dev/null
+++ b/src/Java/binnie/extrabees/apiary/machine/AlvearyStimulator.java
@@ -0,0 +1,430 @@
+package binnie.extrabees.apiary.machine;
+
+import binnie.core.Mods;
+import binnie.core.Mods.Mod;
+import binnie.core.circuits.BinnieCircuit;
+import binnie.core.genetics.BeeModifierLogic;
+import binnie.core.genetics.EnumBeeBooleanModifier;
+import binnie.core.genetics.EnumBeeModifier;
+import binnie.core.machines.Machine;
+import binnie.core.machines.MachineUtil;
+import binnie.core.machines.inventory.ComponentInventorySlots;
+import binnie.core.machines.inventory.InventorySlot;
+import binnie.core.machines.inventory.SlotValidator;
+import binnie.core.machines.power.ComponentPowerReceptor;
+import binnie.craftgui.minecraft.IMachineInformation;
+import binnie.extrabees.apiary.ComponentBeeModifier;
+import binnie.extrabees.apiary.ComponentExtraBeeGUI;
+import binnie.extrabees.core.ExtraBeeGUID;
+import binnie.extrabees.core.ExtraBeeTexture;
+import forestry.api.apiculture.IBeeGenome;
+import forestry.api.apiculture.IBeeListener;
+import forestry.api.apiculture.IBeeModifier;
+import forestry.api.circuits.ChipsetManager;
+import forestry.api.circuits.ICircuit;
+import forestry.api.circuits.ICircuitBoard;
+import forestry.api.circuits.ICircuitLayout;
+import forestry.api.circuits.ICircuitRegistry;
+import java.util.ArrayList;
+import java.util.List;
+import net.minecraft.item.ItemStack;
+
+public class AlvearyStimulator
+{
+ public static int slotCircuit = 0;
+
+ public static class PackageAlvearyStimulator
+ extends AlvearyMachine.AlvearyPackage
+ implements IMachineInformation
+ {
+ public PackageAlvearyStimulator()
+ {
+ super(ExtraBeeTexture.AlvearyStimulator.getTexture(), true);
+ }
+
+ public void createMachine(Machine machine)
+ {
+ new ComponentExtraBeeGUI(machine, ExtraBeeGUID.AlvearyStimulator);
+
+ ComponentInventorySlots inventory = new ComponentInventorySlots(machine);
+
+ inventory.addSlot(AlvearyStimulator.slotCircuit, "circuit");
+ inventory.getSlot(AlvearyStimulator.slotCircuit).setValidator(new AlvearyStimulator.SlotValidatorCircuit());
+
+ ComponentPowerReceptor power = new ComponentPowerReceptor(machine);
+
+
+ new AlvearyStimulator.ComponentStimulatorModifier(machine);
+ }
+ }
+
+ public static class SlotValidatorCircuit
+ extends SlotValidator
+ {
+ public SlotValidatorCircuit()
+ {
+ super();
+ }
+
+ public boolean isValid(ItemStack itemStack)
+ {
+ return (itemStack != null) && (ChipsetManager.circuitRegistry.isChipset(itemStack));
+ }
+
+ public String getTooltip()
+ {
+ return "Forestry Circuits";
+ }
+ }
+
+ public static class ComponentStimulatorModifier
+ extends ComponentBeeModifier
+ implements IBeeModifier, IBeeListener
+ {
+ public ComponentStimulatorModifier(Machine machine)
+ {
+ super();
+ }
+
+ float powerUsage = 0.0F;
+ boolean powered = false;
+
+ public void onUpdate()
+ {
+ super.onUpdate();
+ this.modifiers = getCircuits();
+ this.powerUsage = 0.0F;
+ for (AlvearyStimulator.StimulatorCircuit beeMod : this.modifiers) {
+ this.powerUsage += beeMod.getPowerUsage();
+ }
+ this.powered = getUtil().hasEnergyMJ(this.powerUsage);
+ }
+
+ AlvearyStimulator.StimulatorCircuit[] modifiers = new AlvearyStimulator.StimulatorCircuit[0];
+
+ public ICircuitBoard getHiveFrame()
+ {
+ if (!getUtil().isSlotEmpty(AlvearyStimulator.slotCircuit)) {
+ return ChipsetManager.circuitRegistry.getCircuitboard(getUtil().getStack(AlvearyStimulator.slotCircuit));
+ }
+ return null;
+ }
+
+ public AlvearyStimulator.StimulatorCircuit[] getCircuits()
+ {
+ ICircuitBoard board = getHiveFrame();
+ if (board == null) {
+ return new AlvearyStimulator.StimulatorCircuit[0];
+ }
+ ICircuit[] circuits = board.getCircuits();
+ List<IBeeModifier> mod = new ArrayList();
+ for (ICircuit circuit : circuits) {
+ if ((circuit instanceof AlvearyStimulator.StimulatorCircuit)) {
+ mod.add((AlvearyStimulator.StimulatorCircuit)circuit);
+ }
+ }
+ return (AlvearyStimulator.StimulatorCircuit[])mod.toArray(new AlvearyStimulator.StimulatorCircuit[0]);
+ }
+
+ public float getTerritoryModifier(IBeeGenome genome, float currentModifier)
+ {
+ float mod = 1.0F;
+ if (!this.powered) {
+ return mod;
+ }
+ for (IBeeModifier beeMod : this.modifiers) {
+ mod *= beeMod.getTerritoryModifier(genome, mod);
+ }
+ return mod;
+ }
+
+ public float getMutationModifier(IBeeGenome genome, IBeeGenome mate, float currentModifier)
+ {
+ float mod = 1.0F;
+ if (!this.powered) {
+ return mod;
+ }
+ for (IBeeModifier beeMod : this.modifiers) {
+ mod *= beeMod.getMutationModifier(genome, mate, mod);
+ }
+ return mod;
+ }
+
+ public float getLifespanModifier(IBeeGenome genome, IBeeGenome mate, float currentModifier)
+ {
+ float mod = 1.0F;
+ if (!this.powered) {
+ return mod;
+ }
+ for (IBeeModifier beeMod : this.modifiers) {
+ mod *= beeMod.getLifespanModifier(genome, mate, mod);
+ }
+ return mod;
+ }
+
+ public float getProductionModifier(IBeeGenome genome, float currentModifier)
+ {
+ float mod = 1.0F;
+ if (!this.powered) {
+ return mod;
+ }
+ for (IBeeModifier beeMod : this.modifiers) {
+ mod *= beeMod.getProductionModifier(genome, mod);
+ }
+ return mod;
+ }
+
+ public float getFloweringModifier(IBeeGenome genome, float currentModifier)
+ {
+ float mod = 1.0F;
+ if (!this.powered) {
+ return mod;
+ }
+ for (IBeeModifier beeMod : this.modifiers) {
+ mod *= beeMod.getFloweringModifier(genome, mod);
+ }
+ return mod;
+ }
+
+ public float getGeneticDecay(IBeeGenome genome, float currentModifier)
+ {
+ float mod = 1.0F;
+ if (!this.powered) {
+ return mod;
+ }
+ for (IBeeModifier beeMod : this.modifiers) {
+ mod *= beeMod.getGeneticDecay(genome, mod);
+ }
+ return mod;
+ }
+
+ public boolean isSealed()
+ {
+ if (!this.powered) {
+ return false;
+ }
+ for (IBeeModifier beeMod : this.modifiers) {
+ if (beeMod.isSealed()) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ public boolean isSelfLighted()
+ {
+ if (!this.powered) {
+ return false;
+ }
+ for (IBeeModifier beeMod : this.modifiers) {
+ if (beeMod.isSelfLighted()) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ public boolean isSunlightSimulated()
+ {
+ if (!this.powered) {
+ return false;
+ }
+ for (IBeeModifier beeMod : this.modifiers) {
+ if (beeMod.isSunlightSimulated()) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ public boolean isHellish()
+ {
+ if (!this.powered) {
+ return false;
+ }
+ for (IBeeModifier beeMod : this.modifiers) {
+ if (beeMod.isHellish()) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ public void wearOutEquipment(int amount)
+ {
+ getUtil().useEnergyMJ(this.powerUsage);
+ }
+ }
+
+ public static class StimulatorCircuit
+ extends BinnieCircuit
+ implements IBeeModifier
+ {
+ AlvearyStimulator.CircuitType type;
+
+ public StimulatorCircuit(AlvearyStimulator.CircuitType type, ICircuitLayout layout)
+ {
+ super(4, layout, Mods.Forestry.item("thermionicTubes"), type.recipe);
+ this.type = type;
+ }
+
+ public int getPowerUsage()
+ {
+ return this.type.power;
+ }
+
+ public float getTerritoryModifier(IBeeGenome genome, float currentModifier)
+ {
+ return this.type.getTerritoryModifier(genome, currentModifier);
+ }
+
+ public float getMutationModifier(IBeeGenome genome, IBeeGenome mate, float currentModifier)
+ {
+ return this.type.getMutationModifier(genome, mate, currentModifier);
+ }
+
+ public float getLifespanModifier(IBeeGenome genome, IBeeGenome mate, float currentModifier)
+ {
+ return this.type.getLifespanModifier(genome, mate, currentModifier);
+ }
+
+ public float getProductionModifier(IBeeGenome genome, float currentModifier)
+ {
+ return this.type.getProductionModifier(genome, currentModifier);
+ }
+
+ public float getFloweringModifier(IBeeGenome genome, float currentModifier)
+ {
+ return this.type.getFloweringModifier(genome, currentModifier);
+ }
+
+ public boolean isSealed()
+ {
+ return this.type.isSealed();
+ }
+
+ public boolean isSelfLighted()
+ {
+ return this.type.isSelfLighted();
+ }
+
+ public boolean isSunlightSimulated()
+ {
+ return this.type.isSunlightSimulated();
+ }
+
+ public boolean isHellish()
+ {
+ return this.type.isHellish();
+ }
+
+ public float getGeneticDecay(IBeeGenome genome, float currentModifier)
+ {
+ return this.type.getGeneticDecay(genome, currentModifier);
+ }
+ }
+
+ public static enum CircuitType
+ implements IBeeModifier
+ {
+ LowVoltage(3, 10), HighVoltage(5, 20), Plant(10, 10), Death(6, 10), Life(11, 10), Nether(7, 15), Mutation(4, 15), Inhibitor(1, 10), Territory(2, 10);
+
+ public int recipe;
+ public int power;
+ BeeModifierLogic logic = new BeeModifierLogic();
+
+ static
+ {
+ LowVoltage.logic.setModifier(EnumBeeModifier.Production, 1.5F, 5.0F);
+ HighVoltage.logic.setModifier(EnumBeeModifier.Production, 2.5F, 10.0F);
+ Plant.logic.setModifier(EnumBeeModifier.Flowering, 1.5F, 5.0F);
+ Death.logic.setModifier(EnumBeeModifier.Lifespan, 0.8F, 0.2F);
+ Life.logic.setModifier(EnumBeeModifier.Lifespan, 1.5F, 5.0F);
+ Nether.logic.setModifier(EnumBeeBooleanModifier.Hellish);
+ Mutation.logic.setModifier(EnumBeeModifier.Mutation, 1.5F, 5.0F);
+ Inhibitor.logic.setModifier(EnumBeeModifier.Territory, 0.4F, 0.1F);
+ Inhibitor.logic.setModifier(EnumBeeModifier.Production, 0.9F, 0.5F);
+ Territory.logic.setModifier(EnumBeeModifier.Territory, 1.5F, 5.0F);
+ for (CircuitType type : values()) {
+ type.logic.setModifier(EnumBeeModifier.GeneticDecay, 1.5F, 10.0F);
+ }
+ }
+
+ private CircuitType(int recipe, int power)
+ {
+ this.recipe = recipe;
+ this.power = power;
+ }
+
+ public void createCircuit(ICircuitLayout layout)
+ {
+ AlvearyStimulator.StimulatorCircuit circuit = new AlvearyStimulator.StimulatorCircuit(this, layout);
+ for (EnumBeeModifier modifier : EnumBeeModifier.values())
+ {
+ float mod = this.logic.getModifier(modifier, 1.0F);
+ if (mod != 1.0F) {
+ if (mod > 1.0F)
+ {
+ int increase = (int)((mod - 1.0F) * 100.0F);
+ circuit.addTooltipString("Increases " + modifier.getName() + " by " + increase + "%");
+ }
+ else
+ {
+ int decrease = (int)((1.0F - mod) * 100.0F);
+ circuit.addTooltipString("Decreases " + modifier.getName() + " by " + decrease + "%");
+ }
+ }
+ }
+ }
+
+ public float getTerritoryModifier(IBeeGenome genome, float currentModifier)
+ {
+ return this.logic.getModifier(EnumBeeModifier.Territory, currentModifier);
+ }
+
+ public float getMutationModifier(IBeeGenome genome, IBeeGenome mate, float currentModifier)
+ {
+ return this.logic.getModifier(EnumBeeModifier.Mutation, currentModifier);
+ }
+
+ public float getLifespanModifier(IBeeGenome genome, IBeeGenome mate, float currentModifier)
+ {
+ return this.logic.getModifier(EnumBeeModifier.Lifespan, currentModifier);
+ }
+
+ public float getProductionModifier(IBeeGenome genome, float currentModifier)
+ {
+ return this.logic.getModifier(EnumBeeModifier.Production, currentModifier);
+ }
+
+ public float getFloweringModifier(IBeeGenome genome, float currentModifier)
+ {
+ return this.logic.getModifier(EnumBeeModifier.Flowering, currentModifier);
+ }
+
+ public float getGeneticDecay(IBeeGenome genome, float currentModifier)
+ {
+ return this.logic.getModifier(EnumBeeModifier.GeneticDecay, currentModifier);
+ }
+
+ public boolean isSealed()
+ {
+ return this.logic.getModifier(EnumBeeBooleanModifier.Sealed);
+ }
+
+ public boolean isSelfLighted()
+ {
+ return this.logic.getModifier(EnumBeeBooleanModifier.SelfLighted);
+ }
+
+ public boolean isSunlightSimulated()
+ {
+ return this.logic.getModifier(EnumBeeBooleanModifier.SunlightStimulated);
+ }
+
+ public boolean isHellish()
+ {
+ return this.logic.getModifier(EnumBeeBooleanModifier.Hellish);
+ }
+ }
+}
diff --git a/src/Java/binnie/extrabees/apiary/machine/AlvearyTransmission.java b/src/Java/binnie/extrabees/apiary/machine/AlvearyTransmission.java
new file mode 100644
index 0000000000..b041bf1c37
--- /dev/null
+++ b/src/Java/binnie/extrabees/apiary/machine/AlvearyTransmission.java
@@ -0,0 +1,81 @@
+package binnie.extrabees.apiary.machine;
+
+import binnie.core.machines.IMachine;
+import binnie.core.machines.Machine;
+import binnie.core.machines.MachineComponent;
+import binnie.core.machines.MachineUtil;
+import binnie.core.machines.power.ComponentPowerReceptor;
+import binnie.core.machines.power.IPoweredMachine;
+import binnie.craftgui.minecraft.IMachineInformation;
+import binnie.extrabees.apiary.TileExtraBeeAlveary;
+import binnie.extrabees.core.ExtraBeeTexture;
+import cofh.api.energy.IEnergyHandler;
+import java.util.ArrayList;
+import java.util.List;
+import net.minecraft.tileentity.TileEntity;
+import net.minecraftforge.common.util.ForgeDirection;
+
+public class AlvearyTransmission
+{
+ public static class PackageAlvearyTransmission
+ extends AlvearyMachine.AlvearyPackage
+ implements IMachineInformation
+ {
+ public PackageAlvearyTransmission()
+ {
+ super(ExtraBeeTexture.AlvearyTransmission.getTexture(), false);
+ }
+
+ public void createMachine(Machine machine)
+ {
+ new ComponentPowerReceptor(machine, 1000);
+ new AlvearyTransmission.ComponentTransmission(machine);
+ }
+ }
+
+ public static class ComponentTransmission
+ extends MachineComponent
+ {
+ public ComponentTransmission(Machine machine)
+ {
+ super();
+ }
+
+ public void onUpdate()
+ {
+ super.onUpdate();
+ int energy = getUtil().getPoweredMachine().getEnergyStored(ForgeDirection.NORTH);
+ if (energy == 0) {
+ return;
+ }
+ TileExtraBeeAlveary tile = (TileExtraBeeAlveary)getMachine().getTileEntity();
+
+ List<IEnergyHandler> handlers = new ArrayList();
+ for (TileEntity alvearyTile : tile.getAlvearyBlocks()) {
+ if (((alvearyTile instanceof IEnergyHandler)) && (alvearyTile != tile)) {
+ handlers.add((IEnergyHandler)alvearyTile);
+ }
+ }
+ if (handlers.isEmpty()) {
+ return;
+ }
+ int maxOutput = 500;
+ int output = energy / handlers.size();
+ if (output > maxOutput) {
+ output = maxOutput;
+ }
+ if (output < 1) {
+ output = 1;
+ }
+ for (IEnergyHandler handler : handlers)
+ {
+ int recieved = handler.receiveEnergy(ForgeDirection.NORTH, output, false);
+ getUtil().getPoweredMachine().extractEnergy(ForgeDirection.NORTH, recieved, false);
+ energy = getUtil().getPoweredMachine().getEnergyStored(ForgeDirection.NORTH);
+ if (energy == 0) {
+ return;
+ }
+ }
+ }
+ }
+}
diff --git a/src/Java/binnie/extrabees/config/ConfigurationMachines.java b/src/Java/binnie/extrabees/config/ConfigurationMachines.java
new file mode 100644
index 0000000000..7d08d216f2
--- /dev/null
+++ b/src/Java/binnie/extrabees/config/ConfigurationMachines.java
@@ -0,0 +1,17 @@
+package binnie.extrabees.config;
+
+import binnie.core.mod.config.ConfigFile;
+import binnie.core.mod.config.ConfigProperty;
+import binnie.core.mod.config.PropDouble;
+import binnie.core.mod.config.PropPercentage;
+
+@ConfigFile(filename="/config/forestry/extrabees/machines.conf")
+public class ConfigurationMachines
+{
+ @ConfigProperty(key="isolatorConsumptionChance", comment={"Percentage chance of Isolator consuming bee, in x%."})
+ @PropPercentage
+ public static int isolatorConsumptionChance = 30;
+ @ConfigProperty(key="geneticErrorModifier", comment={"Modifier that changes how severe splicer/inoculator erros are.", "0 would result in no errors, even for awful serums.", "2.0 would result in twice as severe errors"})
+ @PropDouble
+ public static double geneticErrorModifier = 1.0D;
+}
diff --git a/src/Java/binnie/extrabees/config/ConfigurationMain.java b/src/Java/binnie/extrabees/config/ConfigurationMain.java
new file mode 100644
index 0000000000..e6ee442a14
--- /dev/null
+++ b/src/Java/binnie/extrabees/config/ConfigurationMain.java
@@ -0,0 +1,26 @@
+package binnie.extrabees.config;
+
+import binnie.core.mod.config.ConfigFile;
+import binnie.core.mod.config.ConfigProperty;
+import binnie.core.mod.config.PropBoolean;
+import binnie.core.mod.config.PropInteger;
+
+@ConfigFile(filename="/config/forestry/extrabees/main.conf")
+public class ConfigurationMain
+{
+ @ConfigProperty(key="canQuarryMineHives")
+ @PropBoolean
+ public static boolean canQuarryMineHives = true;
+ @ConfigProperty(key="waterHiveRate")
+ @PropInteger
+ public static int waterHiveRate = 1;
+ @ConfigProperty(key="rockHiveRate")
+ @PropInteger
+ public static int rockHiveRate = 2;
+ @ConfigProperty(key="netherHiveRate")
+ @PropInteger
+ public static int netherHiveRate = 2;
+ @ConfigProperty(key="marbleHiveRate")
+ @PropInteger
+ public static int marbleHiveRate = 2;
+}
diff --git a/src/Java/binnie/extrabees/core/ExtraBeeGUID.java b/src/Java/binnie/extrabees/core/ExtraBeeGUID.java
new file mode 100644
index 0000000000..4d9667460c
--- /dev/null
+++ b/src/Java/binnie/extrabees/core/ExtraBeeGUID.java
@@ -0,0 +1,54 @@
+package binnie.extrabees.core;
+
+import binnie.core.gui.IBinnieGUID;
+import binnie.craftgui.minecraft.Window;
+import binnie.extrabees.gui.WindowAlvearyFrame;
+import binnie.extrabees.gui.WindowAlvearyHatchery;
+import binnie.extrabees.gui.WindowAlvearyMutator;
+import binnie.extrabees.gui.WindowAlvearyStimulator;
+import binnie.extrabees.gui.database.WindowApiaristDatabase;
+import cpw.mods.fml.relauncher.Side;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.inventory.IInventory;
+import net.minecraft.tileentity.TileEntity;
+import net.minecraft.world.World;
+
+public enum ExtraBeeGUID
+ implements IBinnieGUID
+{
+ Database, DatabaseNEI, AlvearyMutator, AlvearyFrame, AlvearyStimulator, PunnettSquare, AlvearyHatchery;
+
+ private ExtraBeeGUID() {}
+
+ public Window getWindow(EntityPlayer player, World world, int x, int y, int z, Side side)
+ {
+ Window window = null;
+
+ TileEntity tileEntity = world.getTileEntity(x, y, z);
+
+ IInventory object = null;
+ if ((tileEntity instanceof IInventory)) {
+ object = (IInventory)tileEntity;
+ }
+ switch (1.$SwitchMap$binnie$extrabees$core$ExtraBeeGUID[ordinal()])
+ {
+ case 1:
+ case 2:
+ window = WindowApiaristDatabase.create(player, side, this != Database);
+ break;
+ case 3:
+ window = WindowAlvearyMutator.create(player, object, side);
+ break;
+ case 4:
+ window = WindowAlvearyFrame.create(player, object, side);
+ break;
+ case 5:
+ window = WindowAlvearyStimulator.create(player, object, side);
+ break;
+ case 6:
+ window = WindowAlvearyHatchery.create(player, object, side);
+ break;
+ }
+ return window;
+ }
+}
diff --git a/src/Java/binnie/extrabees/core/ExtraBeeItems.java b/src/Java/binnie/extrabees/core/ExtraBeeItems.java
new file mode 100644
index 0000000000..3bcea19f08
--- /dev/null
+++ b/src/Java/binnie/extrabees/core/ExtraBeeItems.java
@@ -0,0 +1,172 @@
+package binnie.extrabees.core;
+
+import binnie.Binnie;
+import binnie.core.Mods;
+import binnie.core.Mods.Mod;
+import binnie.core.item.IItemMisc;
+import binnie.core.liquid.ManagerLiquid;
+import binnie.extrabees.ExtraBees;
+import binnie.extrabees.proxy.ExtraBeesProxy;
+import cpw.mods.fml.common.registry.GameRegistry;
+import cpw.mods.fml.relauncher.Side;
+import cpw.mods.fml.relauncher.SideOnly;
+import forestry.api.recipes.ICarpenterManager;
+import forestry.api.recipes.RecipeManagers;
+import java.lang.reflect.Field;
+import java.util.ArrayList;
+import java.util.List;
+import net.minecraft.client.renderer.texture.IIconRegister;
+import net.minecraft.init.Blocks;
+import net.minecraft.init.Items;
+import net.minecraft.item.Item;
+import net.minecraft.item.ItemStack;
+import net.minecraft.util.IIcon;
+import net.minecraftforge.oredict.OreDictionary;
+
+public enum ExtraBeeItems
+ implements IItemMisc
+{
+ ScentedGear("Scented Gear", "scentedGear"), DiamondShard("Diamond Fragment", "diamondShard"), EmeraldShard("Emerald Fragment", "emeraldShard"), RubyShard("Ruby Fragment", "rubyShard"), SapphireShard("Sapphire Fragment", "sapphireShard"), LapisShard("Lapis Fragment", "lapisShard"), IronDust("Iron Grains", "ironDust"), GoldDust("Gold Grains", "goldDust"), SilverDust("Silver Grains", "silverDust"), PlatinumDust("Platinum Grains", "platinumDust"), CopperDust("Copper Grains", "copperDust"), TinDust("Tin Grains", "tinDust"), NickelDust("Nickel Grains", "nickelDust"), LeadDust("Lead Grains", "leadDust"), ZincDust("Zinc Grains", "zincDust"), TitaniumDust("Titanium Grains", "titaniumDust"), TungstenDust("Tungsten Grains", "tungstenDust"), UraniumDust("Radioactive Fragments", "radioactiveDust"), CoalDust("Coal Grains", "coalDust"), RedDye("Red Dye", "dyeRed"), YellowDye("Yellow Dye", "dyeYellow"), BlueDye("Blue Dye", "dyeBlue"), GreenDye("Green Dye", "dyeGreen"), WhiteDye("White Dye", "dyeWhite"), BlackDye("Black Dye", "dyeBlack"), BrownDye("Brown Dye", "dyeBrown"), ClayDust("Clay Dust", "clayDust"), YelloriumDust("Yellorium Grains", "yelloriumDust"), BlutoniumDust("Blutonium Grains", "blutoniumDust"), CyaniteDust("Cyanite Grains", "cyaniteDust");
+
+ String name;
+ String iconPath;
+ IIcon icon;
+
+ static
+ {
+ TinDust.setMetal("Tin");
+ ZincDust.setMetal("Zinc");
+ CopperDust.setMetal("Copper");
+ IronDust.setMetal("Iron");
+ NickelDust.setMetal("Nickel");
+ LeadDust.setMetal("Lead");
+ SilverDust.setMetal("Silver");
+ GoldDust.setMetal("Gold");
+ PlatinumDust.setMetal("Platinum");
+ TungstenDust.setMetal("Tungsten");
+ TitaniumDust.setMetal("Titanium");
+ CoalDust.setMetal("Coal");
+
+ YelloriumDust.setMetal("Yellorium");
+ BlutoniumDust.setMetal("Blutonium");
+ CyaniteDust.setMetal("Cyanite");
+
+ DiamondShard.setGem("Diamond");
+ EmeraldShard.setGem("Emerald");
+ RubyShard.setGem("Ruby");
+ SapphireShard.setGem("Sapphire");
+ }
+
+ public static void init()
+ {
+ OreDictionary.registerOre("dyeRed", RedDye.get(1));
+ OreDictionary.registerOre("dyeYellow", YellowDye.get(1));
+ OreDictionary.registerOre("dyeBlue", BlueDye.get(1));
+ OreDictionary.registerOre("dyeGreen", GreenDye.get(1));
+ OreDictionary.registerOre("dyeBlack", BlackDye.get(1));
+ OreDictionary.registerOre("dyeWhite", WhiteDye.get(1));
+ OreDictionary.registerOre("dyeBrown", BrownDye.get(1));
+ }
+
+ public static void postInit()
+ {
+ ItemStack lapisShard = LapisShard.get(1);
+ GameRegistry.addShapelessRecipe(new ItemStack(Items.dye, 1, 4), new Object[] { lapisShard, lapisShard, lapisShard, lapisShard });
+ for (ExtraBeeItems item : values()) {
+ if (item.metalString != null)
+ {
+ ItemStack dust = null;
+ ItemStack ingot = null;
+ if (!OreDictionary.getOres("ingot" + item.metalString).isEmpty()) {
+ ingot = ((ItemStack)OreDictionary.getOres("ingot" + item.metalString).get(0)).copy();
+ }
+ if (!OreDictionary.getOres("dust" + item.metalString).isEmpty()) {
+ dust = ((ItemStack)OreDictionary.getOres("dust" + item.metalString).get(0)).copy();
+ }
+ ItemStack input = item.get(1);
+ if (dust != null) {
+ GameRegistry.addShapelessRecipe(dust, new Object[] { input, input, input, input });
+ } else if (ingot != null) {
+ GameRegistry.addShapelessRecipe(ingot, new Object[] { input, input, input, input, input, input, input, input, input });
+ } else if (item == CoalDust) {
+ GameRegistry.addShapelessRecipe(new ItemStack(Items.coal), new Object[] { input, input, input, input });
+ }
+ }
+ else if (item.gemString != null)
+ {
+ ItemStack gem = null;
+ if (!OreDictionary.getOres("gem" + item.gemString).isEmpty()) {
+ gem = (ItemStack)OreDictionary.getOres("gem" + item.gemString).get(0);
+ }
+ ItemStack input = item.get(1);
+ if (gem != null) {
+ GameRegistry.addShapelessRecipe(gem.copy(), new Object[] { input, input, input, input, input, input, input, input, input });
+ }
+ }
+ }
+ Item woodGear = null;
+ try
+ {
+ woodGear = (Item)Class.forName("buildcraft.BuildCraftCore").getField("woodenGearItem").get(null);
+ }
+ catch (Exception e) {}
+ ItemStack gear = new ItemStack(Blocks.planks, 1);
+ if (woodGear != null) {
+ gear = new ItemStack(woodGear, 1);
+ }
+ RecipeManagers.carpenterManager.addRecipe(100, Binnie.Liquid.getLiquidStack("for.honey", 500), null, ScentedGear.get(1), new Object[] { " j ", "bgb", " p ", Character.valueOf('j'), Mods.Forestry.item("royalJelly"), Character.valueOf('b'), Mods.Forestry.item("beeswax"), Character.valueOf('p'), Mods.Forestry.item("pollen"), Character.valueOf('g'), gear });
+ }
+
+ String metalString = null;
+ String gemString = null;
+
+ private ExtraBeeItems(String name, String iconPath)
+ {
+ this.name = name;
+ this.iconPath = iconPath;
+ }
+
+ private void setGem(String string)
+ {
+ this.gemString = string;
+ }
+
+ private void setMetal(String string)
+ {
+ this.metalString = string;
+ }
+
+ public boolean isActive()
+ {
+ if (this.metalString != null) {
+ return (!OreDictionary.getOres("ingot" + this.metalString).isEmpty()) || (!OreDictionary.getOres("dust" + this.metalString).isEmpty()) || (this == CoalDust);
+ }
+ if (this.gemString != null) {
+ return !OreDictionary.getOres("gem" + this.gemString).isEmpty();
+ }
+ return true;
+ }
+
+ public IIcon getIcon(ItemStack stack)
+ {
+ return this.icon;
+ }
+
+ @SideOnly(Side.CLIENT)
+ public void registerIcons(IIconRegister register)
+ {
+ this.icon = ExtraBees.proxy.getIcon(register, "misc/" + this.iconPath);
+ }
+
+ public String getName(ItemStack stack)
+ {
+ return this.name;
+ }
+
+ public ItemStack get(int i)
+ {
+ return new ItemStack(ExtraBees.itemMisc, i, ordinal());
+ }
+
+ public void addInformation(List par3List) {}
+}
diff --git a/src/Java/binnie/extrabees/core/ExtraBeeTexture.java b/src/Java/binnie/extrabees/core/ExtraBeeTexture.java
new file mode 100644
index 0000000000..6827b81144
--- /dev/null
+++ b/src/Java/binnie/extrabees/core/ExtraBeeTexture.java
@@ -0,0 +1,28 @@
+package binnie.extrabees.core;
+
+import binnie.Binnie;
+import binnie.core.resource.BinnieResource;
+import binnie.core.resource.IBinnieTexture;
+import binnie.core.resource.ManagerResource;
+import binnie.core.resource.ResourceType;
+import binnie.extrabees.ExtraBees;
+
+public enum ExtraBeeTexture
+ implements IBinnieTexture
+{
+ AlvearyMutator(ResourceType.Tile, "alveary/AlvearyMutator"), AlvearyNovaBlock(ResourceType.Tile, "alveary/AlvearyNovaBlock"), AlvearyFrame(ResourceType.Tile, "alveary/AlvearyFrame"), AlvearyLighting(ResourceType.Tile, "alveary/AlvearyLighting"), AlvearyRainShield(ResourceType.Tile, "alveary/AlvearyRainShield"), AlvearyStimulator(ResourceType.Tile, "alveary/AlvearyStimulator"), AlvearyHatchery(ResourceType.Tile, "alveary/AlvearyHatchery"), FX(ResourceType.FX, "fx"), GUIPunnett(ResourceType.GUI, "punnett"), GUIProgress(ResourceType.GUI, "processes"), GUIProgress2(ResourceType.GUI, "processes2"), AlvearyTransmission(ResourceType.Tile, "alveary/AlvearyTransmission");
+
+ String texture;
+ ResourceType type;
+
+ private ExtraBeeTexture(ResourceType base, String texture)
+ {
+ this.texture = texture;
+ this.type = base;
+ }
+
+ public BinnieResource getTexture()
+ {
+ return Binnie.Resource.getPNG(ExtraBees.instance, this.type, this.texture);
+ }
+}
diff --git a/src/Java/binnie/extrabees/core/ModuleCore.java b/src/Java/binnie/extrabees/core/ModuleCore.java
new file mode 100644
index 0000000000..14786ddc77
--- /dev/null
+++ b/src/Java/binnie/extrabees/core/ModuleCore.java
@@ -0,0 +1,19 @@
+package binnie.extrabees.core;
+
+import binnie.Binnie;
+import binnie.core.IInitializable;
+import binnie.core.item.ManagerItem;
+import forestry.api.core.Tabs;
+
+public class ModuleCore
+ implements IInitializable
+{
+ public void preInit()
+ {
+ binnie.extrabees.ExtraBees.itemMisc = Binnie.Item.registerMiscItems(ExtraBeeItems.values(), Tabs.tabApiculture);
+ }
+
+ public void init() {}
+
+ public void postInit() {}
+}
diff --git a/src/Java/binnie/extrabees/genetics/ExtraBeeMutation.java b/src/Java/binnie/extrabees/genetics/ExtraBeeMutation.java
new file mode 100644
index 0000000000..c3a849c9e5
--- /dev/null
+++ b/src/Java/binnie/extrabees/genetics/ExtraBeeMutation.java
@@ -0,0 +1,478 @@
+package binnie.extrabees.genetics;
+
+import binnie.Binnie;
+import binnie.core.genetics.ForestryAllele.BeeSpecies;
+import binnie.core.genetics.ManagerGenetics;
+import com.mojang.authlib.GameProfile;
+import forestry.api.apiculture.IAlleleBeeSpecies;
+import forestry.api.apiculture.IBeeGenome;
+import forestry.api.apiculture.IBeeHousing;
+import forestry.api.apiculture.IBeeMutation;
+import forestry.api.apiculture.IBeeRoot;
+import forestry.api.apiculture.IBeekeepingMode;
+import forestry.api.genetics.IAllele;
+import forestry.api.genetics.IGenome;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import net.minecraft.world.World;
+import net.minecraft.world.biome.BiomeGenBase;
+import net.minecraftforge.common.BiomeDictionary;
+import net.minecraftforge.common.BiomeDictionary.Type;
+
+public class ExtraBeeMutation
+ implements IBeeMutation
+{
+ public static void doInit()
+ {
+ IAlleleBeeSpecies[] vanilla = new IAlleleBeeSpecies[0];
+
+
+
+
+ new ExtraBeeMutation(ForestryAllele.BeeSpecies.Meadows.getAllele(), ForestryAllele.BeeSpecies.Frugal.getAllele(), ExtraBeesSpecies.ARID, 10);
+ new ExtraBeeMutation(ForestryAllele.BeeSpecies.Forest.getAllele(), ForestryAllele.BeeSpecies.Frugal.getAllele(), ExtraBeesSpecies.ARID, 10);
+ new ExtraBeeMutation(ExtraBeesSpecies.ARID, ForestryAllele.BeeSpecies.Common.getAllele(), ExtraBeesSpecies.BARREN, 8);
+ new ExtraBeeMutation(ExtraBeesSpecies.ARID, ExtraBeesSpecies.BARREN, ExtraBeesSpecies.DESOLATE, 8);
+
+
+
+
+
+ new ExtraBeeMutation(ExtraBeesSpecies.BARREN, ForestryAllele.BeeSpecies.Forest.getAllele(), ExtraBeesSpecies.GNAWING, 15);
+ new ExtraBeeMutation(ExtraBeesSpecies.DESOLATE, ForestryAllele.BeeSpecies.Meadows.getAllele(), ExtraBeesSpecies.ROTTEN, 15);
+ new ExtraBeeMutation(ExtraBeesSpecies.DESOLATE, ForestryAllele.BeeSpecies.Forest.getAllele(), ExtraBeesSpecies.BONE, 15);
+ new ExtraBeeMutation(ExtraBeesSpecies.DESOLATE, ForestryAllele.BeeSpecies.Modest.getAllele(), ExtraBeesSpecies.CREEPER, 15);
+ new ExtraBeeMutation(ExtraBeesSpecies.BARREN, ForestryAllele.BeeSpecies.Marshy.getAllele(), ExtraBeesSpecies.DECOMPOSING, 15);
+
+
+
+
+ new ExtraBeeMutation(ExtraBeesSpecies.ROCK, ForestryAllele.BeeSpecies.Diligent.getAllele(), ExtraBeesSpecies.STONE, 12);
+ new ExtraBeeMutation(ExtraBeesSpecies.STONE, ForestryAllele.BeeSpecies.Unweary.getAllele(), ExtraBeesSpecies.GRANITE, 10);
+ new ExtraBeeMutation(ExtraBeesSpecies.GRANITE, ForestryAllele.BeeSpecies.Industrious.getAllele(), ExtraBeesSpecies.MINERAL, 6);
+
+
+
+
+ new ExtraBeeMutation(ExtraBeesSpecies.MINERAL, ForestryAllele.BeeSpecies.Meadows.getAllele(), ExtraBeesSpecies.IRON, 5);
+ new ExtraBeeMutation(ExtraBeesSpecies.MINERAL, ForestryAllele.BeeSpecies.Forest.getAllele(), ExtraBeesSpecies.IRON, 5);
+ new ExtraBeeMutation(ExtraBeesSpecies.MINERAL, ForestryAllele.BeeSpecies.Wintry.getAllele(), ExtraBeesSpecies.COPPER, 5);
+ new ExtraBeeMutation(ExtraBeesSpecies.MINERAL, ForestryAllele.BeeSpecies.Modest.getAllele(), ExtraBeesSpecies.COPPER, 5);
+ new ExtraBeeMutation(ExtraBeesSpecies.MINERAL, ForestryAllele.BeeSpecies.Marshy.getAllele(), ExtraBeesSpecies.TIN, 5);
+ new ExtraBeeMutation(ExtraBeesSpecies.MINERAL, ForestryAllele.BeeSpecies.Tropical.getAllele(), ExtraBeesSpecies.TIN, 5);
+ new ExtraBeeMutation(ExtraBeesSpecies.MINERAL, ForestryAllele.BeeSpecies.Meadows.getAllele(), ExtraBeesSpecies.LEAD, 5);
+ new ExtraBeeMutation(ExtraBeesSpecies.MINERAL, ForestryAllele.BeeSpecies.Modest.getAllele(), ExtraBeesSpecies.LEAD, 5);
+ new ExtraBeeMutation(ExtraBeesSpecies.MINERAL, ForestryAllele.BeeSpecies.Wintry.getAllele(), ExtraBeesSpecies.ZINC, 5);
+ new ExtraBeeMutation(ExtraBeesSpecies.MINERAL, ForestryAllele.BeeSpecies.Tropical.getAllele(), ExtraBeesSpecies.ZINC, 5);
+ new ExtraBeeMutation(ExtraBeesSpecies.MINERAL, ForestryAllele.BeeSpecies.Forest.getAllele(), ExtraBeesSpecies.NICKEL, 5);
+ new ExtraBeeMutation(ExtraBeesSpecies.MINERAL, ForestryAllele.BeeSpecies.Marshy.getAllele(), ExtraBeesSpecies.NICKEL, 5);
+ new ExtraBeeMutation(ExtraBeesSpecies.MINERAL, ForestryAllele.BeeSpecies.Cultivated.getAllele(), ExtraBeesSpecies.TITANIUM, 3);
+ new ExtraBeeMutation(ExtraBeesSpecies.MINERAL, ForestryAllele.BeeSpecies.Common.getAllele(), ExtraBeesSpecies.TUNGSTATE, 3);
+
+
+
+
+ new ExtraBeeMutation(ExtraBeesSpecies.ZINC, ForestryAllele.BeeSpecies.Majestic.getAllele(), ExtraBeesSpecies.SILVER, 2);
+ new ExtraBeeMutation(ExtraBeesSpecies.TIN, ForestryAllele.BeeSpecies.Majestic.getAllele(), ExtraBeesSpecies.SILVER, 2);
+ new ExtraBeeMutation(ExtraBeesSpecies.LEAD, ForestryAllele.BeeSpecies.Majestic.getAllele(), ExtraBeesSpecies.SILVER, 2);
+ new ExtraBeeMutation(ExtraBeesSpecies.TITANIUM, ForestryAllele.BeeSpecies.Majestic.getAllele(), ExtraBeesSpecies.SILVER, 3);
+
+ new ExtraBeeMutation(ExtraBeesSpecies.IRON, ForestryAllele.BeeSpecies.Majestic.getAllele(), ExtraBeesSpecies.GOLD, 2);
+ new ExtraBeeMutation(ExtraBeesSpecies.COPPER, ForestryAllele.BeeSpecies.Majestic.getAllele(), ExtraBeesSpecies.GOLD, 2);
+ new ExtraBeeMutation(ExtraBeesSpecies.NICKEL, ForestryAllele.BeeSpecies.Majestic.getAllele(), ExtraBeesSpecies.GOLD, 2);
+ new ExtraBeeMutation(ExtraBeesSpecies.TUNGSTATE, ForestryAllele.BeeSpecies.Majestic.getAllele(), ExtraBeesSpecies.GOLD, 3);
+
+ new ExtraBeeMutation(ExtraBeesSpecies.GOLD, ExtraBeesSpecies.SILVER, ExtraBeesSpecies.PLATINUM, 2);
+
+
+
+
+ new ExtraBeeMutation(ExtraBeesSpecies.MINERAL, ForestryAllele.BeeSpecies.Imperial.getAllele(), ExtraBeesSpecies.LAPIS, 5);
+ new ExtraBeeMutation(ExtraBeesSpecies.LAPIS, ForestryAllele.BeeSpecies.Forest.getAllele(), ExtraBeesSpecies.EMERALD, 5);
+ new ExtraBeeMutation(ExtraBeesSpecies.LAPIS, ForestryAllele.BeeSpecies.Modest.getAllele(), ExtraBeesSpecies.RUBY, 5);
+ new ExtraBeeMutation(ExtraBeesSpecies.LAPIS, ExtraBeesSpecies.WATER, ExtraBeesSpecies.SAPPHIRE, 5);
+ new ExtraBeeMutation(ExtraBeesSpecies.LAPIS, ForestryAllele.BeeSpecies.Cultivated.getAllele(), ExtraBeesSpecies.DIAMOND, 5);
+
+
+
+
+ new ExtraBeeMutation(ExtraBeesSpecies.PREHISTORIC, ExtraBeesSpecies.MINERAL, ExtraBeesSpecies.UNSTABLE, 5);
+ new ExtraBeeMutation(ExtraBeesSpecies.UNSTABLE, ExtraBeesSpecies.IRON, ExtraBeesSpecies.NUCLEAR, 5);
+ new ExtraBeeMutation(ExtraBeesSpecies.UNSTABLE, ExtraBeesSpecies.COPPER, ExtraBeesSpecies.NUCLEAR, 5);
+ new ExtraBeeMutation(ExtraBeesSpecies.UNSTABLE, ExtraBeesSpecies.TIN, ExtraBeesSpecies.NUCLEAR, 5);
+ new ExtraBeeMutation(ExtraBeesSpecies.UNSTABLE, ExtraBeesSpecies.ZINC, ExtraBeesSpecies.NUCLEAR, 5);
+ new ExtraBeeMutation(ExtraBeesSpecies.UNSTABLE, ExtraBeesSpecies.NICKEL, ExtraBeesSpecies.NUCLEAR, 5);
+ new ExtraBeeMutation(ExtraBeesSpecies.UNSTABLE, ExtraBeesSpecies.LEAD, ExtraBeesSpecies.NUCLEAR, 5);
+ new ExtraBeeMutation(ExtraBeesSpecies.NUCLEAR, ExtraBeesSpecies.GOLD, ExtraBeesSpecies.RADIOACTIVE, 5);
+ new ExtraBeeMutation(ExtraBeesSpecies.NUCLEAR, ExtraBeesSpecies.SILVER, ExtraBeesSpecies.RADIOACTIVE, 5);
+
+
+
+
+ new ExtraBeeMutation(ExtraBeesSpecies.NUCLEAR, ForestryAllele.BeeSpecies.Frugal.getAllele(), ExtraBeesSpecies.YELLORIUM, 5);
+ new ExtraBeeMutation(ExtraBeesSpecies.NUCLEAR, ExtraBeesSpecies.YELLORIUM, ExtraBeesSpecies.CYANITE, 5);
+ new ExtraBeeMutation(ExtraBeesSpecies.YELLORIUM, ExtraBeesSpecies.CYANITE, ExtraBeesSpecies.BLUTONIUM, 5);
+
+
+
+
+
+ new ExtraBeeMutation(ForestryAllele.BeeSpecies.Noble.getAllele(), ForestryAllele.BeeSpecies.Diligent.getAllele(), ExtraBeesSpecies.ANCIENT, 10);
+ new ExtraBeeMutation(ExtraBeesSpecies.ANCIENT, ForestryAllele.BeeSpecies.Secluded.getAllele(), ExtraBeesSpecies.PRIMEVAL, 8);
+ new ExtraBeeMutation(ExtraBeesSpecies.PRIMEVAL, ExtraBeesSpecies.ANCIENT, ExtraBeesSpecies.PREHISTORIC, 8);
+ new ExtraBeeMutation(ExtraBeesSpecies.PREHISTORIC, ForestryAllele.BeeSpecies.Imperial.getAllele(), ExtraBeesSpecies.RELIC, 8);
+
+
+
+
+
+ new ExtraBeeMutation(ExtraBeesSpecies.PRIMEVAL, ExtraBeesSpecies.GROWING, ExtraBeesSpecies.COAL, 8);
+ new ExtraBeeMutation(ExtraBeesSpecies.PRIMEVAL, ForestryAllele.BeeSpecies.Rural.getAllele(), ExtraBeesSpecies.COAL, 8);
+ new ExtraBeeMutation(ExtraBeesSpecies.PRIMEVAL, ForestryAllele.BeeSpecies.Miry.getAllele(), ExtraBeesSpecies.RESIN, 8);
+ new ExtraBeeMutation(ExtraBeesSpecies.PRIMEVAL, ExtraBeesSpecies.OCEAN, ExtraBeesSpecies.OIL, 8);
+ new ExtraBeeMutation(ExtraBeesSpecies.PRIMEVAL, ForestryAllele.BeeSpecies.Frugal.getAllele(), ExtraBeesSpecies.OIL, 8);
+
+
+
+
+
+
+
+ new ExtraBeeMutation(ExtraBeesSpecies.OIL, ForestryAllele.BeeSpecies.Industrious.getAllele(), ExtraBeesSpecies.DISTILLED, 8);
+ new ExtraBeeMutation(ExtraBeesSpecies.DISTILLED, ExtraBeesSpecies.OIL, ExtraBeesSpecies.FUEL, 8);
+ new ExtraBeeMutation(ExtraBeesSpecies.DISTILLED, ExtraBeesSpecies.COAL, ExtraBeesSpecies.CREOSOTE, 8);
+ new ExtraBeeMutation(ExtraBeesSpecies.DISTILLED, ExtraBeesSpecies.RESIN, ExtraBeesSpecies.LATEX, 8);
+
+
+
+
+ new ExtraBeeMutation(ExtraBeesSpecies.WATER, ForestryAllele.BeeSpecies.Diligent.getAllele(), ExtraBeesSpecies.RIVER, 10, new RequirementBiomeType(BiomeDictionary.Type.RIVER));
+ new ExtraBeeMutation(ExtraBeesSpecies.WATER, ForestryAllele.BeeSpecies.Diligent.getAllele(), ExtraBeesSpecies.OCEAN, 10, new RequirementBiomeType(BiomeDictionary.Type.OCEAN));
+ new ExtraBeeMutation(ExtraBeesSpecies.BLACK, ExtraBeesSpecies.OCEAN, ExtraBeesSpecies.INK, 8);
+
+
+
+
+ new ExtraBeeMutation(ForestryAllele.BeeSpecies.Forest.getAllele(), ForestryAllele.BeeSpecies.Diligent.getAllele(), ExtraBeesSpecies.GROWING, 10);
+ new ExtraBeeMutation(ExtraBeesSpecies.GROWING, ForestryAllele.BeeSpecies.Unweary.getAllele(), ExtraBeesSpecies.THRIVING, 10);
+ new ExtraBeeMutation(ExtraBeesSpecies.THRIVING, ForestryAllele.BeeSpecies.Industrious.getAllele(), ExtraBeesSpecies.BLOOMING, 8);
+
+
+
+
+ new ExtraBeeMutation(ForestryAllele.BeeSpecies.Valiant.getAllele(), ForestryAllele.BeeSpecies.Diligent.getAllele(), ExtraBeesSpecies.SWEET, 15);
+ new ExtraBeeMutation(ExtraBeesSpecies.SWEET, ForestryAllele.BeeSpecies.Rural.getAllele(), ExtraBeesSpecies.SUGAR, 15);
+ new ExtraBeeMutation(ExtraBeesSpecies.SWEET, ExtraBeesSpecies.GROWING, ExtraBeesSpecies.RIPENING, 5);
+ new ExtraBeeMutation(ExtraBeesSpecies.SWEET, ExtraBeesSpecies.THRIVING, ExtraBeesSpecies.FRUIT, 5);
+
+
+
+
+ new ExtraBeeMutation(ForestryAllele.BeeSpecies.Farmerly.getAllele(), ForestryAllele.BeeSpecies.Meadows.getAllele(), ExtraBeesSpecies.ALCOHOL, 10);
+ new ExtraBeeMutation(ForestryAllele.BeeSpecies.Farmerly.getAllele(), ForestryAllele.BeeSpecies.Meadows.getAllele(), ExtraBeesSpecies.FARM, 10);
+ new ExtraBeeMutation(ForestryAllele.BeeSpecies.Farmerly.getAllele(), ExtraBeesSpecies.WATER, ExtraBeesSpecies.MILK, 10);
+ new ExtraBeeMutation(ForestryAllele.BeeSpecies.Farmerly.getAllele(), ForestryAllele.BeeSpecies.Tropical.getAllele(), ExtraBeesSpecies.COFFEE, 10);
+
+
+
+
+
+
+
+
+
+
+
+
+ new ExtraBeeMutation(ExtraBeesSpecies.WATER, ForestryAllele.BeeSpecies.Miry.getAllele(), ExtraBeesSpecies.SWAMP, 10);
+ new ExtraBeeMutation(ExtraBeesSpecies.SWAMP, ForestryAllele.BeeSpecies.Boggy.getAllele(), ExtraBeesSpecies.BOGGY, 8);
+ new ExtraBeeMutation(ExtraBeesSpecies.BOGGY, ExtraBeesSpecies.SWAMP, ExtraBeesSpecies.FUNGAL, 8);
+ new ExtraBeeMutation(ForestryAllele.BeeSpecies.Boggy.getAllele(), ForestryAllele.BeeSpecies.Miry.getAllele(), ExtraBeesSpecies.FUNGAL, 8);
+
+
+
+
+ new ExtraBeeMutation(ExtraBeesSpecies.WATER, ForestryAllele.BeeSpecies.Forest.getAllele(), ForestryAllele.BeeSpecies.Common.getTemplate(), 15);
+ new ExtraBeeMutation(ExtraBeesSpecies.WATER, ForestryAllele.BeeSpecies.Meadows.getAllele(), ForestryAllele.BeeSpecies.Common.getTemplate(), 15);
+ new ExtraBeeMutation(ExtraBeesSpecies.WATER, ForestryAllele.BeeSpecies.Modest.getAllele(), ForestryAllele.BeeSpecies.Common.getTemplate(), 15);
+ new ExtraBeeMutation(ExtraBeesSpecies.WATER, ForestryAllele.BeeSpecies.Tropical.getAllele(), ForestryAllele.BeeSpecies.Common.getTemplate(), 15);
+ new ExtraBeeMutation(ExtraBeesSpecies.WATER, ForestryAllele.BeeSpecies.Marshy.getAllele(), ForestryAllele.BeeSpecies.Common.getTemplate(), 15);
+ new ExtraBeeMutation(ExtraBeesSpecies.WATER, ForestryAllele.BeeSpecies.Wintry.getAllele(), ForestryAllele.BeeSpecies.Common.getTemplate(), 15);
+ new ExtraBeeMutation(ExtraBeesSpecies.WATER, ExtraBeesSpecies.ROCK, ForestryAllele.BeeSpecies.Common.getTemplate(), 15);
+ new ExtraBeeMutation(ExtraBeesSpecies.WATER, ExtraBeesSpecies.BASALT, ForestryAllele.BeeSpecies.Common.getTemplate(), 15);
+ new ExtraBeeMutation(ExtraBeesSpecies.ROCK, ForestryAllele.BeeSpecies.Forest.getAllele(), ForestryAllele.BeeSpecies.Common.getTemplate(), 15);
+ new ExtraBeeMutation(ExtraBeesSpecies.ROCK, ForestryAllele.BeeSpecies.Meadows.getAllele(), ForestryAllele.BeeSpecies.Common.getTemplate(), 15);
+ new ExtraBeeMutation(ExtraBeesSpecies.ROCK, ForestryAllele.BeeSpecies.Modest.getAllele(), ForestryAllele.BeeSpecies.Common.getTemplate(), 15);
+ new ExtraBeeMutation(ExtraBeesSpecies.ROCK, ForestryAllele.BeeSpecies.Tropical.getAllele(), ForestryAllele.BeeSpecies.Common.getTemplate(), 15);
+ new ExtraBeeMutation(ExtraBeesSpecies.ROCK, ForestryAllele.BeeSpecies.Marshy.getAllele(), ForestryAllele.BeeSpecies.Common.getTemplate(), 15);
+ new ExtraBeeMutation(ExtraBeesSpecies.ROCK, ForestryAllele.BeeSpecies.Wintry.getAllele(), ForestryAllele.BeeSpecies.Common.getTemplate(), 15);
+ new ExtraBeeMutation(ExtraBeesSpecies.ROCK, ExtraBeesSpecies.BASALT, ForestryAllele.BeeSpecies.Common.getTemplate(), 15);
+ new ExtraBeeMutation(ExtraBeesSpecies.BASALT, ForestryAllele.BeeSpecies.Forest.getAllele(), ForestryAllele.BeeSpecies.Common.getTemplate(), 15);
+ new ExtraBeeMutation(ExtraBeesSpecies.BASALT, ForestryAllele.BeeSpecies.Meadows.getAllele(), ForestryAllele.BeeSpecies.Common.getTemplate(), 15);
+ new ExtraBeeMutation(ExtraBeesSpecies.BASALT, ForestryAllele.BeeSpecies.Modest.getAllele(), ForestryAllele.BeeSpecies.Common.getTemplate(), 15);
+ new ExtraBeeMutation(ExtraBeesSpecies.BASALT, ForestryAllele.BeeSpecies.Tropical.getAllele(), ForestryAllele.BeeSpecies.Common.getTemplate(), 15);
+ new ExtraBeeMutation(ExtraBeesSpecies.BASALT, ForestryAllele.BeeSpecies.Marshy.getAllele(), ForestryAllele.BeeSpecies.Common.getTemplate(), 15);
+ new ExtraBeeMutation(ExtraBeesSpecies.BASALT, ForestryAllele.BeeSpecies.Wintry.getAllele(), ForestryAllele.BeeSpecies.Common.getTemplate(), 15);
+
+ new ExtraBeeMutation(ExtraBeesSpecies.WATER, ForestryAllele.BeeSpecies.Common.getAllele(), ForestryAllele.BeeSpecies.Cultivated.getTemplate(), 12);
+ new ExtraBeeMutation(ExtraBeesSpecies.ROCK, ForestryAllele.BeeSpecies.Common.getAllele(), ForestryAllele.BeeSpecies.Cultivated.getTemplate(), 12);
+ new ExtraBeeMutation(ExtraBeesSpecies.BASALT, ForestryAllele.BeeSpecies.Common.getAllele(), ForestryAllele.BeeSpecies.Cultivated.getTemplate(), 12);
+
+
+
+
+ new ExtraBeeMutation(ExtraBeesSpecies.BASALT, ForestryAllele.BeeSpecies.Fiendish.getAllele(), ExtraBeesSpecies.TEMPERED, 30, new RequirementBiomeType(BiomeDictionary.Type.NETHER));
+ new ExtraBeeMutation(ExtraBeesSpecies.TEMPERED, ForestryAllele.BeeSpecies.Demonic.getAllele(), ExtraBeesSpecies.VOLCANIC, 20, new RequirementBiomeType(BiomeDictionary.Type.NETHER));
+
+
+
+
+ new ExtraBeeMutation(ExtraBeesSpecies.BASALT, ForestryAllele.BeeSpecies.Cultivated.getAllele(), ForestryAllele.BeeSpecies.Sinister.getTemplate(), 60, new RequirementBiomeType(BiomeDictionary.Type.NETHER));
+
+ new ExtraBeeMutation(ExtraBeesSpecies.BASALT, ForestryAllele.BeeSpecies.Sinister.getAllele(), ForestryAllele.BeeSpecies.Fiendish.getTemplate(), 40, new RequirementBiomeType(BiomeDictionary.Type.NETHER));
+
+
+
+
+
+ new ExtraBeeMutation(ForestryAllele.BeeSpecies.Sinister.getAllele(), ForestryAllele.BeeSpecies.Tropical.getAllele(), ExtraBeesSpecies.MALICIOUS, 10);
+ new ExtraBeeMutation(ExtraBeesSpecies.MALICIOUS, ForestryAllele.BeeSpecies.Tropical.getAllele(), ExtraBeesSpecies.INFECTIOUS, 8);
+ new ExtraBeeMutation(ExtraBeesSpecies.MALICIOUS, ExtraBeesSpecies.INFECTIOUS, ExtraBeesSpecies.VIRULENT, 8);
+
+ new ExtraBeeMutation(ExtraBeesSpecies.WATER, ForestryAllele.BeeSpecies.Exotic.getAllele(), ExtraBeesSpecies.VISCOUS, 10);
+ new ExtraBeeMutation(ExtraBeesSpecies.VISCOUS, ForestryAllele.BeeSpecies.Exotic.getAllele(), ExtraBeesSpecies.GLUTINOUS, 8);
+ new ExtraBeeMutation(ExtraBeesSpecies.VISCOUS, ExtraBeesSpecies.GLUTINOUS, ExtraBeesSpecies.STICKY, 8);
+
+ new ExtraBeeMutation(ExtraBeesSpecies.MALICIOUS, ExtraBeesSpecies.VISCOUS, ExtraBeesSpecies.CORROSIVE, 10);
+ new ExtraBeeMutation(ExtraBeesSpecies.CORROSIVE, ForestryAllele.BeeSpecies.Fiendish.getAllele(), ExtraBeesSpecies.CAUSTIC, 8);
+ new ExtraBeeMutation(ExtraBeesSpecies.CORROSIVE, ExtraBeesSpecies.CAUSTIC, ExtraBeesSpecies.ACIDIC, 4);
+
+
+
+
+ new ExtraBeeMutation(ForestryAllele.BeeSpecies.Cultivated.getAllele(), ForestryAllele.BeeSpecies.Valiant.getAllele(), ExtraBeesSpecies.EXCITED, 10);
+ new ExtraBeeMutation(ExtraBeesSpecies.EXCITED, ForestryAllele.BeeSpecies.Diligent.getAllele(), ExtraBeesSpecies.ENERGETIC, 8);
+ new ExtraBeeMutation(ExtraBeesSpecies.EXCITED, ExtraBeesSpecies.ENERGETIC, ExtraBeesSpecies.ECSTATIC, 8);
+
+
+
+
+ new ExtraBeeMutation(ForestryAllele.BeeSpecies.Wintry.getAllele(), ForestryAllele.BeeSpecies.Diligent.getAllele(), ExtraBeesSpecies.ARTIC, 10);
+ new ExtraBeeMutation(ExtraBeesSpecies.OCEAN, ExtraBeesSpecies.ARTIC, ExtraBeesSpecies.FREEZING, 10);
+
+
+
+
+ new ExtraBeeMutation(ExtraBeesSpecies.ROCK, ForestryAllele.BeeSpecies.Sinister.getAllele(), ExtraBeesSpecies.SHADOW, 10);
+ new ExtraBeeMutation(ExtraBeesSpecies.SHADOW, ExtraBeesSpecies.ROCK, ExtraBeesSpecies.DARKENED, 8);
+ new ExtraBeeMutation(ExtraBeesSpecies.SHADOW, ExtraBeesSpecies.DARKENED, ExtraBeesSpecies.ABYSS, 8);
+
+
+
+
+ new ExtraBeeMutation(ForestryAllele.BeeSpecies.Forest.getAllele(), ForestryAllele.BeeSpecies.Valiant.getAllele(), ExtraBeesSpecies.RED, 5);
+ new ExtraBeeMutation(ForestryAllele.BeeSpecies.Meadows.getAllele(), ForestryAllele.BeeSpecies.Valiant.getAllele(), ExtraBeesSpecies.YELLOW, 5);
+ new ExtraBeeMutation(ExtraBeesSpecies.WATER, ForestryAllele.BeeSpecies.Valiant.getAllele(), ExtraBeesSpecies.BLUE, 5);
+ new ExtraBeeMutation(ForestryAllele.BeeSpecies.Tropical.getAllele(), ForestryAllele.BeeSpecies.Valiant.getAllele(), ExtraBeesSpecies.GREEN, 5);
+ new ExtraBeeMutation(ExtraBeesSpecies.ROCK, ForestryAllele.BeeSpecies.Valiant.getAllele(), ExtraBeesSpecies.BLACK, 5);
+ new ExtraBeeMutation(ForestryAllele.BeeSpecies.Wintry.getAllele(), ForestryAllele.BeeSpecies.Valiant.getAllele(), ExtraBeesSpecies.WHITE, 5);
+ new ExtraBeeMutation(ForestryAllele.BeeSpecies.Marshy.getAllele(), ForestryAllele.BeeSpecies.Valiant.getAllele(), ExtraBeesSpecies.BROWN, 5);
+
+ new ExtraBeeMutation(ExtraBeesSpecies.RED, ExtraBeesSpecies.YELLOW, ExtraBeesSpecies.ORANGE, 5);
+ new ExtraBeeMutation(ExtraBeesSpecies.GREEN, ExtraBeesSpecies.BLUE, ExtraBeesSpecies.CYAN, 5);
+ new ExtraBeeMutation(ExtraBeesSpecies.RED, ExtraBeesSpecies.BLUE, ExtraBeesSpecies.PURPLE, 5);
+ new ExtraBeeMutation(ExtraBeesSpecies.BLACK, ExtraBeesSpecies.WHITE, ExtraBeesSpecies.GRAY, 5);
+ new ExtraBeeMutation(ExtraBeesSpecies.BLUE, ExtraBeesSpecies.WHITE, ExtraBeesSpecies.LIGHTBLUE, 5);
+ new ExtraBeeMutation(ExtraBeesSpecies.RED, ExtraBeesSpecies.WHITE, ExtraBeesSpecies.PINK, 5);
+ new ExtraBeeMutation(ExtraBeesSpecies.GREEN, ExtraBeesSpecies.WHITE, ExtraBeesSpecies.LIMEGREEN, 5);
+
+ new ExtraBeeMutation(ExtraBeesSpecies.PURPLE, ExtraBeesSpecies.PINK, ExtraBeesSpecies.MAGENTA, 5);
+ new ExtraBeeMutation(ExtraBeesSpecies.GRAY, ExtraBeesSpecies.WHITE, ExtraBeesSpecies.LIGHTGRAY, 5);
+
+
+
+
+ new ExtraBeeMutation(ExtraBeesSpecies.TEMPERED, ExtraBeesSpecies.EXCITED, ExtraBeesSpecies.GLOWSTONE, 5);
+
+
+
+
+ new ExtraBeeMutation(ForestryAllele.BeeSpecies.Austere.getAllele(), ExtraBeesSpecies.DESOLATE, ExtraBeesSpecies.HAZARDOUS, 5);
+
+ new ExtraBeeMutation(ForestryAllele.BeeSpecies.Ended.getAllele(), ExtraBeesSpecies.RELIC, ExtraBeesSpecies.JADED, 2, new RequirementPerson("jadedcat"));
+ new ExtraBeeMutation(ForestryAllele.BeeSpecies.Austere.getAllele(), ExtraBeesSpecies.EXCITED, ExtraBeesSpecies.CELEBRATORY, 5);
+
+ new ExtraBeeMutation(ForestryAllele.BeeSpecies.Secluded.getAllele(), ForestryAllele.BeeSpecies.Ended.getAllele(), ExtraBeesSpecies.UNUSUAL, 5);
+ new ExtraBeeMutation(ExtraBeesSpecies.UNUSUAL, ForestryAllele.BeeSpecies.Hermitic.getAllele(), ExtraBeesSpecies.SPATIAL, 5);
+ new ExtraBeeMutation(ExtraBeesSpecies.SPATIAL, ForestryAllele.BeeSpecies.Spectral.getAllele(), ExtraBeesSpecies.QUANTUM, 5);
+
+ new ExtraBeeMutation(ForestryAllele.BeeSpecies.Noble.getAllele(), ForestryAllele.BeeSpecies.Monastic.getAllele(), ExtraBeesSpecies.MYSTICAL, 5);
+ for (IBeeMutation mutation : mutations) {
+ Binnie.Genetics.getBeeRoot().registerMutation(mutation);
+ }
+ }
+
+ public static List<IBeeMutation> mutations = new ArrayList();
+ MutationRequirement req;
+
+ public ExtraBeeMutation(IAlleleBeeSpecies allele0, IAlleleBeeSpecies allele1, ExtraBeesSpecies mutation, int chance)
+ {
+ this(allele0, allele1, mutation.getTemplate(), chance, null);
+ }
+
+ public ExtraBeeMutation(IAlleleBeeSpecies allele0, IAlleleBeeSpecies allele1, ExtraBeesSpecies mutation, int chance, MutationRequirement req)
+ {
+ this(allele0, allele1, mutation.getTemplate(), chance, req);
+ }
+
+ public ExtraBeeMutation(IAlleleBeeSpecies allele0, IAlleleBeeSpecies allele1, IAllele[] mutation, int chance)
+ {
+ this(allele0, allele1, mutation, chance, null);
+ }
+
+ public ExtraBeeMutation(IAlleleBeeSpecies allele0, IAlleleBeeSpecies allele1, IAllele[] mutation, int chance, MutationRequirement req)
+ {
+ this.chance = chance;
+ this.req = req;
+ this.species0 = allele0;
+ this.species1 = allele1;
+ this.template = mutation;
+ if ((this.species0 != null) && (this.species1 != null) && (this.template != null)) {
+ mutations.add(this);
+ }
+ }
+
+ IAlleleBeeSpecies species0 = null;
+ IAlleleBeeSpecies species1 = null;
+ IAllele[] template = new IAllele[0];
+ int chance = 80;
+
+ public IAllele getAllele0()
+ {
+ return this.species0;
+ }
+
+ public IAllele getAllele1()
+ {
+ return this.species1;
+ }
+
+ public IAllele[] getTemplate()
+ {
+ return this.template;
+ }
+
+ public float getBaseChance()
+ {
+ return this.chance;
+ }
+
+ public boolean isPartner(IAllele allele)
+ {
+ return (allele.getUID().equals(this.species0.getUID())) || (allele.getUID().equals(this.species1.getUID()));
+ }
+
+ public IAllele getPartner(IAllele allele)
+ {
+ return allele.getUID().equals(this.species0.getUID()) ? this.species1 : this.species0;
+ }
+
+ public boolean isSecret()
+ {
+ return false;
+ }
+
+ public float getChance(IBeeHousing housing, IAlleleBeeSpecies allele0, IAlleleBeeSpecies allele1, IBeeGenome genome0, IBeeGenome genome1)
+ {
+ return getChance(housing, allele0, allele1, genome0, genome1);
+ }
+
+ public float getChance(IBeeHousing housing, IAllele allele0, IAllele allele1, IGenome genome0, IGenome genome1)
+ {
+ if ((this.species0 == null) || (this.species1 == null) || (allele0 == null) || (allele1 == null)) {
+ return 0.0F;
+ }
+ World world = housing.getWorld();
+ int x = housing.getXCoord();
+ int y = housing.getYCoord();
+ int z = housing.getZCoord();
+ BiomeGenBase biome = housing.getBiome();
+ if ((this.req != null) && (!this.req.fufilled(housing, allele0, allele1, genome0, genome1))) {
+ return 0.0F;
+ }
+ int processedChance = Math.round(this.chance * housing.getMutationModifier((IBeeGenome)genome0, (IBeeGenome)genome1, 1.0F) * Binnie.Genetics.getBeeRoot().getBeekeepingMode(world).getMutationModifier((IBeeGenome)genome0, (IBeeGenome)genome1, 1.0F));
+ if ((this.species0.getUID().equals(allele0.getUID())) && (this.species1.getUID().equals(allele1.getUID()))) {
+ return processedChance;
+ }
+ if ((this.species1.getUID().equals(allele0.getUID())) && (this.species0.getUID().equals(allele1.getUID()))) {
+ return processedChance;
+ }
+ return 0.0F;
+ }
+
+ public Collection<String> getSpecialConditions()
+ {
+ List<String> conditions = new ArrayList();
+ if (this.req != null) {
+ for (String s : this.req.tooltip()) {
+ conditions.add(s);
+ }
+ }
+ return conditions;
+ }
+
+ public IBeeRoot getRoot()
+ {
+ return Binnie.Genetics.getBeeRoot();
+ }
+
+ static abstract class MutationRequirement
+ {
+ public abstract String[] tooltip();
+
+ public abstract boolean fufilled(IBeeHousing paramIBeeHousing, IAllele paramIAllele1, IAllele paramIAllele2, IGenome paramIGenome1, IGenome paramIGenome2);
+ }
+
+ static class RequirementBiomeType
+ extends ExtraBeeMutation.MutationRequirement
+ {
+ BiomeDictionary.Type type;
+
+ public RequirementBiomeType(BiomeDictionary.Type type)
+ {
+ this.type = type;
+ }
+
+ public String[] tooltip()
+ {
+ return new String[] { "Is restricted to " + this.type + "-like biomes." };
+ }
+
+ public boolean fufilled(IBeeHousing housing, IAllele allele0, IAllele allele1, IGenome genome0, IGenome genome1)
+ {
+ return BiomeDictionary.isBiomeOfType(housing.getBiome(), this.type);
+ }
+ }
+
+ static class RequirementPerson
+ extends ExtraBeeMutation.MutationRequirement
+ {
+ String name;
+
+ public RequirementPerson(String name)
+ {
+ this.name = name;
+ }
+
+ public String[] tooltip()
+ {
+ return new String[] { "Can only be bred by " + this.name };
+ }
+
+ public boolean fufilled(IBeeHousing housing, IAllele allele0, IAllele allele1, IGenome genome0, IGenome genome1)
+ {
+ return (housing.getOwnerName() != null) && (housing.getOwnerName().equals(this.name));
+ }
+ }
+}
diff --git a/src/Java/binnie/extrabees/genetics/ExtraBeesBranch.java b/src/Java/binnie/extrabees/genetics/ExtraBeesBranch.java
new file mode 100644
index 0000000000..de978231c6
--- /dev/null
+++ b/src/Java/binnie/extrabees/genetics/ExtraBeesBranch.java
@@ -0,0 +1,313 @@
+package binnie.extrabees.genetics;
+
+import binnie.extrabees.ExtraBees;
+import binnie.extrabees.proxy.ExtraBeesProxy;
+import forestry.api.apiculture.IAlleleBeeSpecies;
+import forestry.api.genetics.AlleleManager;
+import forestry.api.genetics.IAlleleRegistry;
+import forestry.api.genetics.IAlleleSpecies;
+import forestry.api.genetics.IClassification;
+import forestry.api.genetics.IClassification.EnumClassLevel;
+import java.util.LinkedHashSet;
+import java.util.Set;
+
+public enum ExtraBeesBranch
+ implements IClassification
+{
+ BARREN("Vacapis"), HOSTILE("Infenapis"), ROCKY("Monapis"), METALLIC("Lamminapis"), METALLIC2("Metalapis"), ALLOY("Allapis"), PRECIOUS("Pluriapis"), MINERAL("Niphapis"), GEMSTONE("Gemmapis"), NUCLEAR("Levapis"), HISTORIC("Priscapis"), FOSSILIZED("Fosiapis"), REFINED("Petrapis"), AQUATIC("Aquapis"), SACCHARINE("Sacchapis"), CLASSICAL("Grecapis"), VOLCANIC("Irrapis"), VIRULENT("Virapis"), VISCOUS("Viscapis"), CAUSTIC("Morbapis"), ENERGETIC("Incitapis"), FARMING("Agriapis"), SHADOW("Pullapis"), PRIMARY("Primapis"), SECONDARY("Secapis"), TERTIARY("Tertiapis"), FTB("Eftebeapis"), QUANTUM("Quantapis"), BOTANIA("Botaniapis");
+
+ private String uid = "";
+ private String scientific = "";
+ private Set<IAlleleBeeSpecies> speciesSet = new LinkedHashSet();
+ IClassification parent;
+
+ public String getUID()
+ {
+ return "extrabees.genus." + this.uid;
+ }
+
+ public String getName()
+ {
+ return ExtraBees.proxy.localise("branch." + toString().toLowerCase() + ".name");
+ }
+
+ public String getScientific()
+ {
+ return this.scientific;
+ }
+
+ public String getDescription()
+ {
+ return ExtraBees.proxy.localiseOrBlank("branch." + toString().toLowerCase() + ".desc");
+ }
+
+ private ExtraBeesBranch(String scientific)
+ {
+ this.scientific = scientific;
+ this.uid = toString().toLowerCase();
+ }
+
+ public void register()
+ {
+ if (!this.speciesSet.isEmpty())
+ {
+ AlleleManager.alleleRegistry.registerClassification(this);
+ IClassification parent = AlleleManager.alleleRegistry.getClassification("family.apidae");
+ if (parent != null)
+ {
+ parent.addMemberGroup(this);
+ setParent(parent);
+ }
+ }
+ }
+
+ public static void doInit()
+ {
+ IClassification frozenBranch = AlleleManager.alleleRegistry.getClassification("genus.bees.frozen");
+ if (frozenBranch != null)
+ {
+ frozenBranch.addMemberSpecies(ExtraBeesSpecies.ARTIC);
+ ExtraBeesSpecies.ARTIC.setBranch(frozenBranch);
+ frozenBranch.addMemberSpecies(ExtraBeesSpecies.FREEZING);
+ ExtraBeesSpecies.FREEZING.setBranch(frozenBranch);
+ }
+ IClassification agrarianBranch = AlleleManager.alleleRegistry.getClassification("genus.bees.agrarian");
+ if (agrarianBranch != null)
+ {
+ agrarianBranch.addMemberSpecies(ExtraBeesSpecies.FARM);
+ ExtraBeesSpecies.FARM.setBranch(agrarianBranch);
+ ExtraBeesSpecies.GROWING.setBranch(agrarianBranch);
+ ExtraBeesSpecies.THRIVING.setBranch(agrarianBranch);
+ ExtraBeesSpecies.BLOOMING.setBranch(agrarianBranch);
+ }
+ IClassification boggyBranch = AlleleManager.alleleRegistry.getClassification("genus.bees.boggy");
+ if (boggyBranch != null)
+ {
+ boggyBranch.addMemberSpecies(ExtraBeesSpecies.SWAMP);
+ boggyBranch.addMemberSpecies(ExtraBeesSpecies.BOGGY);
+ boggyBranch.addMemberSpecies(ExtraBeesSpecies.FUNGAL);
+ ExtraBeesSpecies.SWAMP.setBranch(boggyBranch);
+ ExtraBeesSpecies.BOGGY.setBranch(boggyBranch);
+ ExtraBeesSpecies.FUNGAL.setBranch(boggyBranch);
+ }
+ IClassification festiveBranch = AlleleManager.alleleRegistry.getClassification("genus.bees.festive");
+ if (festiveBranch != null)
+ {
+ festiveBranch.addMemberSpecies(ExtraBeesSpecies.CELEBRATORY);
+ ExtraBeesSpecies.CELEBRATORY.setBranch(festiveBranch);
+ }
+ IClassification austereBranch = AlleleManager.alleleRegistry.getClassification("genus.bees.austere");
+ if (austereBranch != null)
+ {
+ austereBranch.addMemberSpecies(ExtraBeesSpecies.HAZARDOUS);
+ ExtraBeesSpecies.HAZARDOUS.setBranch(austereBranch);
+ }
+ FARMING.addMemberSpecies(ExtraBeesSpecies.ALCOHOL);
+ FARMING.addMemberSpecies(ExtraBeesSpecies.MILK);
+ FARMING.addMemberSpecies(ExtraBeesSpecies.COFFEE);
+ FARMING.addMemberSpecies(ExtraBeesSpecies.CITRUS);
+ FARMING.addMemberSpecies(ExtraBeesSpecies.MINT);
+ FARMING.register();
+
+ BARREN.addMemberSpecies(ExtraBeesSpecies.ARID);
+ BARREN.addMemberSpecies(ExtraBeesSpecies.BARREN);
+ BARREN.addMemberSpecies(ExtraBeesSpecies.DESOLATE);
+ BARREN.addMemberSpecies(ExtraBeesSpecies.DECOMPOSING);
+ BARREN.addMemberSpecies(ExtraBeesSpecies.GNAWING);
+ BARREN.register();
+
+ HOSTILE.addMemberSpecies(ExtraBeesSpecies.ROTTEN);
+ HOSTILE.addMemberSpecies(ExtraBeesSpecies.BONE);
+ HOSTILE.addMemberSpecies(ExtraBeesSpecies.CREEPER);
+ HOSTILE.register();
+
+ ROCKY.addMemberSpecies(ExtraBeesSpecies.ROCK);
+ ROCKY.addMemberSpecies(ExtraBeesSpecies.STONE);
+ ROCKY.addMemberSpecies(ExtraBeesSpecies.GRANITE);
+ ROCKY.addMemberSpecies(ExtraBeesSpecies.MINERAL);
+ ROCKY.register();
+
+ METALLIC.addMemberSpecies(ExtraBeesSpecies.IRON);
+ METALLIC.addMemberSpecies(ExtraBeesSpecies.COPPER);
+ METALLIC.addMemberSpecies(ExtraBeesSpecies.TIN);
+ METALLIC.addMemberSpecies(ExtraBeesSpecies.LEAD);
+ METALLIC.register();
+
+ METALLIC2.addMemberSpecies(ExtraBeesSpecies.NICKEL);
+ METALLIC2.addMemberSpecies(ExtraBeesSpecies.ZINC);
+ METALLIC2.addMemberSpecies(ExtraBeesSpecies.TUNGSTATE);
+ METALLIC2.addMemberSpecies(ExtraBeesSpecies.TITANIUM);
+ METALLIC2.register();
+
+ ALLOY.addMemberSpecies(ExtraBeesSpecies.BRONZE);
+ ALLOY.addMemberSpecies(ExtraBeesSpecies.BRASS);
+ ALLOY.addMemberSpecies(ExtraBeesSpecies.STEEL);
+ ALLOY.addMemberSpecies(ExtraBeesSpecies.INVAR);
+ ALLOY.register();
+
+ PRECIOUS.addMemberSpecies(ExtraBeesSpecies.SILVER);
+ PRECIOUS.addMemberSpecies(ExtraBeesSpecies.GOLD);
+ PRECIOUS.addMemberSpecies(ExtraBeesSpecies.ELECTRUM);
+ PRECIOUS.addMemberSpecies(ExtraBeesSpecies.PLATINUM);
+ PRECIOUS.register();
+
+ MINERAL.addMemberSpecies(ExtraBeesSpecies.LAPIS);
+ MINERAL.addMemberSpecies(ExtraBeesSpecies.SODALITE);
+ MINERAL.addMemberSpecies(ExtraBeesSpecies.PYRITE);
+ MINERAL.addMemberSpecies(ExtraBeesSpecies.BAUXITE);
+ MINERAL.addMemberSpecies(ExtraBeesSpecies.CINNABAR);
+ MINERAL.addMemberSpecies(ExtraBeesSpecies.SPHALERITE);
+ MINERAL.register();
+
+ GEMSTONE.addMemberSpecies(ExtraBeesSpecies.EMERALD);
+ GEMSTONE.addMemberSpecies(ExtraBeesSpecies.RUBY);
+ GEMSTONE.addMemberSpecies(ExtraBeesSpecies.SAPPHIRE);
+ GEMSTONE.addMemberSpecies(ExtraBeesSpecies.OLIVINE);
+ GEMSTONE.addMemberSpecies(ExtraBeesSpecies.DIAMOND);
+ GEMSTONE.register();
+
+ NUCLEAR.addMemberSpecies(ExtraBeesSpecies.UNSTABLE);
+ NUCLEAR.addMemberSpecies(ExtraBeesSpecies.NUCLEAR);
+ NUCLEAR.addMemberSpecies(ExtraBeesSpecies.RADIOACTIVE);
+ NUCLEAR.addMemberSpecies(ExtraBeesSpecies.YELLORIUM);
+ NUCLEAR.addMemberSpecies(ExtraBeesSpecies.CYANITE);
+ NUCLEAR.addMemberSpecies(ExtraBeesSpecies.BLUTONIUM);
+ NUCLEAR.register();
+
+ HISTORIC.addMemberSpecies(ExtraBeesSpecies.ANCIENT);
+ HISTORIC.addMemberSpecies(ExtraBeesSpecies.PRIMEVAL);
+ HISTORIC.addMemberSpecies(ExtraBeesSpecies.PREHISTORIC);
+ HISTORIC.addMemberSpecies(ExtraBeesSpecies.RELIC);
+ HISTORIC.register();
+
+ FOSSILIZED.addMemberSpecies(ExtraBeesSpecies.COAL);
+ FOSSILIZED.addMemberSpecies(ExtraBeesSpecies.RESIN);
+ FOSSILIZED.addMemberSpecies(ExtraBeesSpecies.OIL);
+ FOSSILIZED.addMemberSpecies(ExtraBeesSpecies.PEAT);
+ FOSSILIZED.register();
+
+ REFINED.addMemberSpecies(ExtraBeesSpecies.DISTILLED);
+ REFINED.addMemberSpecies(ExtraBeesSpecies.FUEL);
+ REFINED.addMemberSpecies(ExtraBeesSpecies.CREOSOTE);
+ REFINED.addMemberSpecies(ExtraBeesSpecies.LATEX);
+ REFINED.register();
+
+ AQUATIC.addMemberSpecies(ExtraBeesSpecies.WATER);
+ AQUATIC.addMemberSpecies(ExtraBeesSpecies.RIVER);
+ AQUATIC.addMemberSpecies(ExtraBeesSpecies.OCEAN);
+ AQUATIC.addMemberSpecies(ExtraBeesSpecies.INK);
+ AQUATIC.register();
+
+ SACCHARINE.addMemberSpecies(ExtraBeesSpecies.SWEET);
+ SACCHARINE.addMemberSpecies(ExtraBeesSpecies.SUGAR);
+ SACCHARINE.addMemberSpecies(ExtraBeesSpecies.FRUIT);
+ SACCHARINE.addMemberSpecies(ExtraBeesSpecies.RIPENING);
+ SACCHARINE.register();
+
+ CLASSICAL.addMemberSpecies(ExtraBeesSpecies.MARBLE);
+ CLASSICAL.addMemberSpecies(ExtraBeesSpecies.ROMAN);
+ CLASSICAL.addMemberSpecies(ExtraBeesSpecies.GREEK);
+ CLASSICAL.addMemberSpecies(ExtraBeesSpecies.CLASSICAL);
+ CLASSICAL.register();
+
+ VOLCANIC.addMemberSpecies(ExtraBeesSpecies.BASALT);
+ VOLCANIC.addMemberSpecies(ExtraBeesSpecies.TEMPERED);
+ VOLCANIC.addMemberSpecies(ExtraBeesSpecies.ANGRY);
+ VOLCANIC.addMemberSpecies(ExtraBeesSpecies.VOLCANIC);
+ VOLCANIC.addMemberSpecies(ExtraBeesSpecies.GLOWSTONE);
+ VOLCANIC.register();
+
+ VISCOUS.addMemberSpecies(ExtraBeesSpecies.VISCOUS);
+ VISCOUS.addMemberSpecies(ExtraBeesSpecies.GLUTINOUS);
+ VISCOUS.addMemberSpecies(ExtraBeesSpecies.STICKY);
+ VISCOUS.register();
+
+ VIRULENT.addMemberSpecies(ExtraBeesSpecies.MALICIOUS);
+ VIRULENT.addMemberSpecies(ExtraBeesSpecies.INFECTIOUS);
+ VIRULENT.addMemberSpecies(ExtraBeesSpecies.VIRULENT);
+ VIRULENT.register();
+
+ CAUSTIC.addMemberSpecies(ExtraBeesSpecies.CORROSIVE);
+ CAUSTIC.addMemberSpecies(ExtraBeesSpecies.CAUSTIC);
+ CAUSTIC.addMemberSpecies(ExtraBeesSpecies.ACIDIC);
+ CAUSTIC.register();
+
+ ENERGETIC.addMemberSpecies(ExtraBeesSpecies.EXCITED);
+ ENERGETIC.addMemberSpecies(ExtraBeesSpecies.ENERGETIC);
+ ENERGETIC.addMemberSpecies(ExtraBeesSpecies.ECSTATIC);
+ ENERGETIC.register();
+
+ SHADOW.addMemberSpecies(ExtraBeesSpecies.SHADOW);
+ SHADOW.addMemberSpecies(ExtraBeesSpecies.DARKENED);
+ SHADOW.addMemberSpecies(ExtraBeesSpecies.ABYSS);
+ SHADOW.register();
+
+ PRIMARY.addMemberSpecies(ExtraBeesSpecies.RED);
+ PRIMARY.addMemberSpecies(ExtraBeesSpecies.YELLOW);
+ PRIMARY.addMemberSpecies(ExtraBeesSpecies.BLUE);
+ PRIMARY.addMemberSpecies(ExtraBeesSpecies.GREEN);
+ PRIMARY.addMemberSpecies(ExtraBeesSpecies.BLACK);
+ PRIMARY.addMemberSpecies(ExtraBeesSpecies.WHITE);
+ PRIMARY.addMemberSpecies(ExtraBeesSpecies.BROWN);
+ PRIMARY.register();
+
+ SECONDARY.addMemberSpecies(ExtraBeesSpecies.ORANGE);
+ SECONDARY.addMemberSpecies(ExtraBeesSpecies.CYAN);
+ SECONDARY.addMemberSpecies(ExtraBeesSpecies.PURPLE);
+ SECONDARY.addMemberSpecies(ExtraBeesSpecies.GRAY);
+ SECONDARY.addMemberSpecies(ExtraBeesSpecies.LIGHTBLUE);
+ SECONDARY.addMemberSpecies(ExtraBeesSpecies.PINK);
+ SECONDARY.addMemberSpecies(ExtraBeesSpecies.LIMEGREEN);
+ SECONDARY.register();
+
+ TERTIARY.addMemberSpecies(ExtraBeesSpecies.MAGENTA);
+ TERTIARY.addMemberSpecies(ExtraBeesSpecies.LIGHTGRAY);
+ TERTIARY.register();
+
+ FTB.addMemberSpecies(ExtraBeesSpecies.JADED);
+ FTB.register();
+
+ QUANTUM.addMemberSpecies(ExtraBeesSpecies.UNUSUAL);
+ QUANTUM.addMemberSpecies(ExtraBeesSpecies.SPATIAL);
+ QUANTUM.addMemberSpecies(ExtraBeesSpecies.QUANTUM);
+ QUANTUM.register();
+
+ BOTANIA.addMemberSpecies(ExtraBeesSpecies.MYSTICAL);
+ BOTANIA.register();
+ }
+
+ public IClassification.EnumClassLevel getLevel()
+ {
+ return IClassification.EnumClassLevel.GENUS;
+ }
+
+ public IClassification[] getMemberGroups()
+ {
+ return null;
+ }
+
+ public void addMemberGroup(IClassification group) {}
+
+ public IAlleleSpecies[] getMemberSpecies()
+ {
+ return (IAlleleSpecies[])this.speciesSet.toArray(new IAlleleSpecies[0]);
+ }
+
+ public void addMemberSpecies(IAlleleSpecies species)
+ {
+ this.speciesSet.add((IAlleleBeeSpecies)species);
+ if ((species instanceof ExtraBeesSpecies)) {
+ ((ExtraBeesSpecies)species).setBranch(this);
+ }
+ }
+
+ public IClassification getParent()
+ {
+ return this.parent;
+ }
+
+ public void setParent(IClassification parent)
+ {
+ this.parent = parent;
+ }
+}
diff --git a/src/Java/binnie/extrabees/genetics/ExtraBeesFlowers.java b/src/Java/binnie/extrabees/genetics/ExtraBeesFlowers.java
new file mode 100644
index 0000000000..743c7a55a8
--- /dev/null
+++ b/src/Java/binnie/extrabees/genetics/ExtraBeesFlowers.java
@@ -0,0 +1,202 @@
+package binnie.extrabees.genetics;
+
+import binnie.core.Mods;
+import binnie.core.Mods.Mod;
+import binnie.extrabees.ExtraBees;
+import binnie.extrabees.proxy.ExtraBeesProxy;
+import forestry.api.genetics.AlleleManager;
+import forestry.api.genetics.IAlleleFlowers;
+import forestry.api.genetics.IAlleleRegistry;
+import forestry.api.genetics.IFlower;
+import forestry.api.genetics.IFlowerProvider;
+import forestry.api.genetics.IFruitBearer;
+import forestry.api.genetics.IIndividual;
+import forestry.api.genetics.IPollinatable;
+import java.util.ArrayList;
+import java.util.EnumSet;
+import java.util.List;
+import java.util.Random;
+import net.minecraft.block.Block;
+import net.minecraft.block.material.Material;
+import net.minecraft.init.Blocks;
+import net.minecraft.init.Items;
+import net.minecraft.item.Item;
+import net.minecraft.item.ItemStack;
+import net.minecraft.world.World;
+import net.minecraftforge.common.EnumPlantType;
+
+public enum ExtraBeesFlowers
+ implements IFlowerProvider, IAlleleFlowers
+{
+ WATER, SUGAR, ROCK, BOOK, DEAD, REDSTONE, WOOD, LEAVES, Sapling, Fruit, Mystical;
+
+ boolean dominant = true;
+
+ private ExtraBeesFlowers() {}
+
+ public String getUID()
+ {
+ return "extrabees.flower." + toString().toLowerCase();
+ }
+
+ public boolean isDominant()
+ {
+ return this.dominant;
+ }
+
+ public IFlowerProvider getProvider()
+ {
+ return this;
+ }
+
+ public String getDescription()
+ {
+ return ExtraBees.proxy.localise("flowers." + name().toString().toLowerCase() + ".name");
+ }
+
+ public void register()
+ {
+ AlleleManager.alleleRegistry.registerAllele(this);
+ }
+
+ public static void doInit()
+ {
+ for (ExtraBeesFlowers effect : ) {
+ effect.register();
+ }
+ }
+
+ public ItemStack[] getItemStacks()
+ {
+ switch (1.$SwitchMap$binnie$extrabees$genetics$ExtraBeesFlowers[ordinal()])
+ {
+ case 1:
+ return new ItemStack[] { new ItemStack(Blocks.waterlily) };
+ case 2:
+ return new ItemStack[] { new ItemStack(Blocks.reeds) };
+ case 3:
+ return new ItemStack[] { new ItemStack(Blocks.cobblestone) };
+ case 4:
+ return new ItemStack[] { new ItemStack(Blocks.bookshelf) };
+ case 5:
+ return new ItemStack[] { new ItemStack(Blocks.redstone_torch) };
+ case 6:
+ return new ItemStack[] { new ItemStack(Blocks.deadbush) };
+ case 7:
+ return new ItemStack[] { new ItemStack(Items.apple) };
+ case 8:
+ return new ItemStack[] { new ItemStack(Blocks.leaves) };
+ case 9:
+ return new ItemStack[] { new ItemStack(Blocks.sapling) };
+ case 10:
+ return new ItemStack[] { new ItemStack(Blocks.log) };
+ }
+ return new ItemStack[0];
+ }
+
+ public boolean isAcceptedPollinatable(World world, IPollinatable pollinatable)
+ {
+ EnumSet<EnumPlantType> types = pollinatable.getPlantType();
+ return (types.size() > 1) || (!types.contains(EnumPlantType.Nether));
+ }
+
+ public boolean isAcceptedFlower(World world, IIndividual individual, int x, int y, int z)
+ {
+ Block block = world.getBlock(x, y, z);
+ if (block == null) {
+ return false;
+ }
+ switch (1.$SwitchMap$binnie$extrabees$genetics$ExtraBeesFlowers[ordinal()])
+ {
+ case 1:
+ return block == Blocks.waterlily;
+ case 3:
+ return block.getMaterial() == Material.rock;
+ case 2:
+ return block == Blocks.reeds;
+ case 4:
+ return block == Blocks.bookshelf;
+ case 5:
+ return block == Blocks.redstone_torch;
+ case 6:
+ return block == Blocks.deadbush;
+ case 10:
+ return block.isWood(world, x, y, z);
+ case 7:
+ return world.getTileEntity(x, y, z) instanceof IFruitBearer;
+ case 8:
+ return block.isLeaves(world, x, y, z);
+ case 9:
+ return block.getClass().getName().toLowerCase().contains("sapling");
+ case 11:
+ return block == Mods.Botania.block("flower");
+ }
+ return false;
+ }
+
+ public boolean growFlower(World world, IIndividual individual, int x, int y, int z)
+ {
+ switch (1.$SwitchMap$binnie$extrabees$genetics$ExtraBeesFlowers[ordinal()])
+ {
+ case 1:
+ if ((world.isAirBlock(x, y, z)) && (world.getBlock(x, y - 1, z) == Blocks.water)) {
+ return world.setBlock(x, y, z, Blocks.waterlily, 0, 2);
+ }
+ return false;
+ case 2:
+ if ((world.getBlock(x, y - 1, z) == Blocks.reeds) && (world.isAirBlock(x, y, z))) {
+ return world.setBlock(x, y, z, Blocks.reeds, 0, 0);
+ }
+ return false;
+ }
+ return false;
+ }
+
+ public ItemStack[] affectProducts(World world, IIndividual individual, int x, int y, int z, ItemStack[] products)
+ {
+ if (this == Mystical)
+ {
+ List<ItemStack> prods = new ArrayList();
+ for (ItemStack stack : products) {
+ prods.add(stack);
+ }
+ for (int k = 0; k < 50; k++)
+ {
+ int tX = 7;
+ int tY = 7;
+ int tZ = 3;
+ int x2 = x - tX + world.rand.nextInt(1 + 2 * tX);
+ int y2 = y - tY + world.rand.nextInt(1 + 2 * tY);
+ int z2 = z - tZ + world.rand.nextInt(1 + 2 * tZ);
+ Block block = world.getBlock(x2, y2, z2);
+ if (block != null) {
+ if (block == Mods.Botania.block("flower"))
+ {
+ int meta = world.getBlockMetadata(x2, y2, z2);
+ Item item = Mods.Botania.item("petal");
+ if (item != null) {
+ prods.add(new ItemStack(item, 1, meta));
+ }
+ }
+ }
+ }
+ return (ItemStack[])prods.toArray(new ItemStack[0]);
+ }
+ return products;
+ }
+
+ public String getName()
+ {
+ return getDescription();
+ }
+
+ public String getUnlocalizedName()
+ {
+ return getUID();
+ }
+
+ public List<IFlower> getFlowers()
+ {
+ return new ArrayList();
+ }
+}
diff --git a/src/Java/binnie/extrabees/genetics/ExtraBeesSpecies.java b/src/Java/binnie/extrabees/genetics/ExtraBeesSpecies.java
new file mode 100644
index 0000000000..cc166a3644
--- /dev/null
+++ b/src/Java/binnie/extrabees/genetics/ExtraBeesSpecies.java
@@ -0,0 +1,1139 @@
+package binnie.extrabees.genetics;
+
+import binnie.Binnie;
+import binnie.core.BinnieCore;
+import binnie.core.Mods;
+import binnie.core.Mods.Mod;
+import binnie.core.genetics.ForestryAllele.BeeSpecies;
+import binnie.core.genetics.ForestryAllele.Fertility;
+import binnie.core.genetics.ForestryAllele.Flowering;
+import binnie.core.genetics.ForestryAllele.Lifespan;
+import binnie.core.genetics.ForestryAllele.Speed;
+import binnie.core.genetics.ForestryAllele.Territory;
+import binnie.core.genetics.ManagerGenetics;
+import binnie.core.genetics.Tolerance;
+import binnie.core.item.IItemEnum;
+import binnie.core.proxy.BinnieProxy;
+import binnie.extrabees.ExtraBees;
+import binnie.extrabees.genetics.effect.ExtraBeesEffect;
+import binnie.extrabees.products.EnumHoneyComb;
+import binnie.extrabees.products.ItemHoneyComb.VanillaComb;
+import binnie.extrabees.proxy.ExtraBeesProxy;
+import com.mojang.authlib.GameProfile;
+import cpw.mods.fml.relauncher.Side;
+import cpw.mods.fml.relauncher.SideOnly;
+import forestry.api.apiculture.EnumBeeChromosome;
+import forestry.api.apiculture.EnumBeeType;
+import forestry.api.apiculture.IAlleleBeeEffect;
+import forestry.api.apiculture.IAlleleBeeSpecies;
+import forestry.api.apiculture.IBeeGenome;
+import forestry.api.apiculture.IBeeHousing;
+import forestry.api.apiculture.IBeeRoot;
+import forestry.api.core.EnumHumidity;
+import forestry.api.core.EnumTemperature;
+import forestry.api.core.IIconProvider;
+import forestry.api.genetics.AlleleManager;
+import forestry.api.genetics.IAllele;
+import forestry.api.genetics.IAlleleFlowers;
+import forestry.api.genetics.IAlleleRegistry;
+import forestry.api.genetics.IAlleleSpecies;
+import forestry.api.genetics.IClassification;
+import forestry.api.genetics.IIndividual;
+import forestry.api.genetics.IMutation;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.LinkedHashMap;
+import java.util.Locale;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Random;
+import net.minecraft.client.renderer.texture.IIconRegister;
+import net.minecraft.init.Items;
+import net.minecraft.item.ItemStack;
+import net.minecraft.stats.Achievement;
+import net.minecraft.util.IIcon;
+import net.minecraft.world.World;
+
+public enum ExtraBeesSpecies
+ implements IAlleleBeeSpecies, IIconProvider
+{
+ ARID("aridus", 12511316), BARREN("infelix", 14733923), DESOLATE("desolo", 13744272), GNAWING("apica", 15234224), ROTTEN("caries", 12574902), BONE("os", 15330792), CREEPER("erepo", 2942485), DECOMPOSING("aegrus", 5388049), ROCK("saxum", 11053224), STONE("lapis", 7697781), GRANITE("granum", 6903125), MINERAL("minerale", 7239037), COPPER("cuprous", 13722376), TIN("stannus", 12431805), IRON("ferrous", 11038808), LEAD("plumbous", 11373483), ZINC("spelta", 15592447), TITANIUM("titania", 11578083), BRONZE, BRASS, STEEL, TUNGSTATE("wolfram", 1249812), GOLD("aureus", 15125515), SILVER("argentus", 14408667), ELECTRUM, PLATINUM("platina", 14408667), LAPIS("lazuli", 4009179), SODALITE, PYRITE, BAUXITE, CINNABAR, SPHALERITE, EMERALD("emerala", 1900291), RUBY("ruba", 14024704), SAPPHIRE("saphhira", 673791), OLIVINE, DIAMOND("diama", 8371706), UNSTABLE("levis", 4099124), NUCLEAR("nucleus", 4312111), RADIOACTIVE("fervens", 2031360), ANCIENT("antiquus", 15915919), PRIMEVAL("priscus", 11773563), PREHISTORIC("pristinus", 7232064), RELIC("sapiens", 5062166), COAL("carbo", 8025672), RESIN("lacrima", 10908443), OIL("lubricus", 5719920), PEAT, DISTILLED("distilli", 3498838), FUEL("refina", 16760835), CREOSOTE("creosota", 9936403), LATEX("latex", 4803134), WATER("aqua", 9741055), RIVER("flumen", 8631252), OCEAN("mare", 1912493), INK("atramentum", 922695), GROWING("tyrelli", 6024152), THRIVING("thriva", 3466109), BLOOMING("blooma", 704308), SWEET("mellitus", 16536049), SUGAR("dulcis", 15127520), RIPENING("ripa", 11716445), FRUIT("pomum", 14375030), ALCOHOL("vinum", 15239777), FARM("ager", 7723872), MILK("lacteus", 14936296), COFFEE("arabica", 9199152), CITRUS, MINT, SWAMP("paludis", 3500339), BOGGY("lama", 7887913), FUNGAL("boletus", 13722112), MARBLE, ROMAN, GREEK, CLASSICAL, BASALT("aceri", 9202025), TEMPERED("iratus", 9062472), ANGRY, VOLCANIC("volcano", 5049356), MALICIOUS("acerbus", 7875191), INFECTIOUS("contagio", 12070581), VIRULENT("morbus", 15733740), VISCOUS("liquidus", 608014), GLUTINOUS("glutina", 1936423), STICKY("lentesco", 1565480), CORROSIVE("corrumpo", 4873227), CAUSTIC("torrens", 8691997), ACIDIC("acidus", 12644374), EXCITED("excita", 16729413), ENERGETIC("energia", 15218119), ECSTATIC("ecstatica", 11482600), ARTIC("artica", 11395296), FREEZING("glacia", 8119267), SHADOW("shadowa", 5855577), DARKENED("darka", 3354163), ABYSS("abyssba", 2164769), RED("rubra", 16711680), YELLOW("fulvus", 16768256), BLUE("caeruleus", 8959), GREEN("prasinus", 39168), BLACK("niger", 5723991), WHITE("albus", 16777215), BROWN("fuscus", 6042895), ORANGE("flammeus", 16751872), CYAN("cyana", 65509), PURPLE("purpureus", 11403519), GRAY("ravus", 12237498), LIGHTBLUE("aqua", 40447), PINK("rosaceus", 16744671), LIMEGREEN("lima", 65288), MAGENTA("fuchsia", 16711884), LIGHTGRAY("canus", 13224393), CELEBRATORY("celeba", 16386666), JADED("jadeca", 16386666), GLOWSTONE("glowia", 14730779), HAZARDOUS("infensus", 11562024), NICKEL("claro", 16768764), INVAR, QUANTUM("quanta", 3655131), SPATIAL("spatia", 4987872), UNUSUAL("daniella", 5874874), YELLORIUM("yellori", 14019840), CYANITE("cyanita", 34541), BLUTONIUM("caruthus", 1769702), MYSTICAL("mystica", 4630306);
+
+ private ExtraBeesSpecies(String binomial, int colour)
+ {
+ this.uid = toString().toLowerCase();
+ this.binomial = binomial;
+ this.primaryColor = colour;
+ }
+
+ private ExtraBeesSpecies()
+ {
+ this.state = State.Deprecated;
+ }
+
+ private int primaryColor = 16777215;
+ private int secondaryColor = 16768022;
+ private EnumTemperature temperature = EnumTemperature.NORMAL;
+ private EnumHumidity humidity = EnumHumidity.NORMAL;
+ private boolean hasEffect = false;
+ private boolean isSecret = true;
+ private boolean isCounted = true;
+ private String binomial = "";
+ private IClassification branch = null;
+ private String uid = "";
+ private Achievement achievement = null;
+ private boolean dominant = true;
+ private HashMap<ItemStack, Integer> products = new LinkedHashMap();
+ private HashMap<ItemStack, Integer> specialties = new LinkedHashMap();
+ public HashMap<ItemStack, Integer> allProducts = new LinkedHashMap();
+ public HashMap<ItemStack, Integer> allSpecialties = new LinkedHashMap();
+ private IAllele[] template;
+
+ public static enum State
+ {
+ Active, Inactive, Deprecated;
+
+ private State() {}
+ }
+
+ public State state = State.Active;
+ @SideOnly(Side.CLIENT)
+ private IIcon[][] icons;
+
+ public String getName()
+ {
+ return ExtraBees.proxy.localise("species." + name().toLowerCase() + ".name");
+ }
+
+ public String getDescription()
+ {
+ return ExtraBees.proxy.localiseOrBlank("species." + name().toLowerCase() + ".desc");
+ }
+
+ public EnumTemperature getTemperature()
+ {
+ return this.temperature;
+ }
+
+ public EnumHumidity getHumidity()
+ {
+ return this.humidity;
+ }
+
+ public boolean hasEffect()
+ {
+ return this.hasEffect;
+ }
+
+ public boolean isSecret()
+ {
+ return this.isSecret;
+ }
+
+ public boolean isCounted()
+ {
+ return this.isCounted;
+ }
+
+ public String getBinomial()
+ {
+ return this.binomial;
+ }
+
+ public String getAuthority()
+ {
+ return "Binnie";
+ }
+
+ public IClassification getBranch()
+ {
+ return this.branch;
+ }
+
+ public String getUID()
+ {
+ return "extrabees.species." + this.uid;
+ }
+
+ public boolean isDominant()
+ {
+ return this.dominant;
+ }
+
+ public HashMap<ItemStack, Integer> getProducts()
+ {
+ return this.products;
+ }
+
+ public HashMap<ItemStack, Integer> getSpecialty()
+ {
+ return this.specialties;
+ }
+
+ private void setState(State state)
+ {
+ this.state = state;
+ }
+
+ public void registerTemplate()
+ {
+ Binnie.Genetics.getBeeRoot().registerTemplate(getTemplate());
+ if (this.state != State.Active) {
+ AlleleManager.alleleRegistry.blacklistAllele(getUID());
+ }
+ }
+
+ public void addProduct(ItemStack product, int chance)
+ {
+ if (product == null)
+ {
+ setState(State.Inactive);
+ }
+ else
+ {
+ this.products.put(product, Integer.valueOf(chance));
+ this.allProducts.put(product, Integer.valueOf(chance));
+ }
+ }
+
+ public void addProduct(IItemEnum product, int chance)
+ {
+ if (product.isActive())
+ {
+ addProduct(product.get(1), chance);
+ }
+ else
+ {
+ this.allProducts.put(product.get(1), Integer.valueOf(chance));
+ setState(State.Inactive);
+ }
+ }
+
+ public void addSpecialty(ItemStack product, int chance)
+ {
+ if (product == null)
+ {
+ setState(State.Inactive);
+ }
+ else
+ {
+ this.specialties.put(product, Integer.valueOf(chance));
+ this.allSpecialties.put(product, Integer.valueOf(chance));
+ }
+ }
+
+ private void addSpecialty(IItemEnum product, int chance)
+ {
+ if (product.isActive())
+ {
+ addSpecialty(product.get(1), chance);
+ }
+ else
+ {
+ setState(State.Inactive);
+ this.allSpecialties.put(product.get(1), Integer.valueOf(chance));
+ }
+ }
+
+ private void setHumidity(EnumHumidity humidity)
+ {
+ this.humidity = humidity;
+ }
+
+ private void setTemperature(EnumTemperature temperature)
+ {
+ this.temperature = temperature;
+ }
+
+ public static IAllele[] getDefaultTemplate()
+ {
+ return Binnie.Genetics.getBeeRoot().getDefaultTemplate();
+ }
+
+ public IAllele[] getTemplate()
+ {
+ this.template[EnumBeeChromosome.SPECIES.ordinal()] = this;
+ return this.template;
+ }
+
+ public void importTemplate(ForestryAllele.BeeSpecies species)
+ {
+ importTemplate(species.getTemplate());
+ }
+
+ public void importTemplate(ExtraBeesSpecies species)
+ {
+ importTemplate(species.getTemplate());
+ }
+
+ public void importTemplate(IAllele[] template)
+ {
+ this.template = ((IAllele[])template.clone());
+ setHumidity(((IAlleleSpecies)template[0]).getHumidity());
+ setTemperature(((IAlleleSpecies)template[0]).getTemperature());
+ setSecondaryColor(((IAlleleSpecies)template[0]).getIconColour(1));
+ this.template[EnumBeeChromosome.SPECIES.ordinal()] = this;
+ }
+
+ public void recessive()
+ {
+ this.dominant = false;
+ }
+
+ public void setIsSecret(boolean secret)
+ {
+ this.isSecret = secret;
+ }
+
+ public void setHasEffect(boolean effect)
+ {
+ this.hasEffect = effect;
+ }
+
+ public void setSecondaryColor(int colour)
+ {
+ this.secondaryColor = colour;
+ }
+
+ public static void doInit()
+ {
+ for (ExtraBeesSpecies species : ) {
+ species.template = getDefaultTemplate();
+ }
+ int aridBody = 13362036;
+ int rockBody = 10066329;
+ int endBody = 14278302;
+
+ ARID.importTemplate(ForestryAllele.BeeSpecies.Modest);
+ ARID.addProduct(EnumHoneyComb.BARREN, 30);
+ ARID.setHumidity(EnumHumidity.ARID);
+ ARID.setFlowerProvider(ExtraBeesFlowers.DEAD.getUID());
+ ARID.setTemperatureTolerance(Tolerance.Up1);
+ ARID.setSecondaryColor(aridBody);
+
+ BARREN.importTemplate(ARID);
+ BARREN.setFertility(ForestryAllele.Fertility.Low);
+ BARREN.addProduct(EnumHoneyComb.BARREN, 30);
+
+ DESOLATE.addProduct(EnumHoneyComb.BARREN, 30);
+ DESOLATE.importTemplate(BARREN);
+ DESOLATE.setEffect(ExtraBeesEffect.HUNGER.getUID());
+ DESOLATE.recessive();
+ DESOLATE.setNocturnal();
+ DESOLATE.setHasEffect(true);
+
+ GNAWING.importTemplate(BARREN);
+ GNAWING.setFlowerProvider(ExtraBeesFlowers.WOOD.getUID());
+ GNAWING.addProduct(EnumHoneyComb.BARREN, 25);
+ GNAWING.addSpecialty(EnumHoneyComb.SAWDUST, 25);
+
+ ROTTEN.importTemplate(DESOLATE);
+ ROTTEN.setNocturnal();
+ ROTTEN.setCaveDwelling();
+ ROTTEN.setTolerantFlyer();
+ ROTTEN.setEffect(ExtraBeesEffect.SPAWN_ZOMBIE.getUID());
+ ROTTEN.addProduct(EnumHoneyComb.BARREN, 30);
+ ROTTEN.addSpecialty(EnumHoneyComb.ROTTEN, 10);
+
+ BONE.importTemplate(ROTTEN);
+ BONE.addProduct(EnumHoneyComb.BARREN, 30);
+ BONE.addSpecialty(EnumHoneyComb.BONE, 10);
+ BONE.setEffect(ExtraBeesEffect.SPAWN_SKELETON.getUID());
+
+ CREEPER.importTemplate(ROTTEN);
+ CREEPER.setAllDay();
+ CREEPER.addProduct(EnumHoneyComb.BARREN, 30);
+ CREEPER.addSpecialty(ItemHoneyComb.VanillaComb.POWDERY.get(), 8);
+ CREEPER.setEffect(ExtraBeesEffect.SPAWN_CREEPER.getUID());
+
+ DECOMPOSING.importTemplate(BARREN);
+ DECOMPOSING.addProduct(EnumHoneyComb.BARREN, 30);
+ DECOMPOSING.addSpecialty(EnumHoneyComb.COMPOST, 8);
+
+ ROCK.addProduct(EnumHoneyComb.STONE, 30);
+ ROCK.setIsSecret(false);
+ ROCK.setAllDay();
+ ROCK.setCaveDwelling();
+ ROCK.setTolerantFlyer();
+ ROCK.setTemperatureTolerance(Tolerance.Both1);
+ ROCK.setHumidityTolerance(Tolerance.Both1);
+ ROCK.setFlowerProvider(ExtraBeesFlowers.ROCK.getUID());
+ ROCK.setFertility(ForestryAllele.Fertility.Low);
+ ROCK.setLifespan(ForestryAllele.Lifespan.Short);
+ ROCK.setSecondaryColor(rockBody);
+
+ STONE.addProduct(EnumHoneyComb.STONE, 30);
+ STONE.importTemplate(ROCK);
+ STONE.recessive();
+ STONE.setSecondaryColor(rockBody);
+
+ GRANITE.addProduct(EnumHoneyComb.STONE, 30);
+ GRANITE.importTemplate(STONE);
+ GRANITE.setTemperatureTolerance(Tolerance.Both2);
+ GRANITE.setHumidityTolerance(Tolerance.Both2);
+ GRANITE.setSecondaryColor(rockBody);
+
+ MINERAL.addProduct(EnumHoneyComb.STONE, 30);
+ MINERAL.importTemplate(GRANITE);
+ MINERAL.setSecondaryColor(rockBody);
+
+
+
+ COPPER.addProduct(EnumHoneyComb.STONE, 20);
+ COPPER.addSpecialty(EnumHoneyComb.COPPER, 6);
+ COPPER.importTemplate(MINERAL);
+ COPPER.setSecondaryColor(rockBody);
+
+ TIN.addProduct(EnumHoneyComb.STONE, 20);
+ TIN.addSpecialty(EnumHoneyComb.TIN, 6);
+ TIN.importTemplate(MINERAL);
+ TIN.setSecondaryColor(rockBody);
+
+ IRON.addProduct(EnumHoneyComb.STONE, 20);
+ IRON.addSpecialty(EnumHoneyComb.IRON, 5);
+ IRON.importTemplate(MINERAL);
+ IRON.recessive();
+ IRON.setSecondaryColor(rockBody);
+
+ LEAD.addProduct(EnumHoneyComb.STONE, 20);
+ LEAD.addSpecialty(EnumHoneyComb.LEAD, 5);
+ LEAD.importTemplate(MINERAL);
+ LEAD.setSecondaryColor(rockBody);
+
+ NICKEL.addProduct(EnumHoneyComb.STONE, 20);
+ NICKEL.addSpecialty(EnumHoneyComb.NICKEL, 5);
+ NICKEL.importTemplate(MINERAL);
+ NICKEL.setSecondaryColor(rockBody);
+
+
+
+ ZINC.addProduct(EnumHoneyComb.STONE, 20);
+ ZINC.addSpecialty(EnumHoneyComb.ZINC, 5);
+ ZINC.importTemplate(MINERAL);
+ ZINC.setSecondaryColor(rockBody);
+
+ TITANIUM.addProduct(EnumHoneyComb.STONE, 20);
+ TITANIUM.addSpecialty(EnumHoneyComb.TITANIUM, 2);
+ TITANIUM.importTemplate(MINERAL);
+ TITANIUM.setSecondaryColor(rockBody);
+
+ TUNGSTATE.addProduct(EnumHoneyComb.STONE, 20);
+ TUNGSTATE.addSpecialty(EnumHoneyComb.TUNGSTEN, 1);
+ TUNGSTATE.importTemplate(MINERAL);
+ TUNGSTATE.setSecondaryColor(rockBody);
+
+
+
+
+ GOLD.addProduct(EnumHoneyComb.STONE, 20);
+ GOLD.addSpecialty(EnumHoneyComb.GOLD, 2);
+ GOLD.importTemplate(MINERAL);
+ GOLD.setSecondaryColor(rockBody);
+
+ SILVER.addProduct(EnumHoneyComb.STONE, 20);
+ SILVER.addSpecialty(EnumHoneyComb.SILVER, 2);
+ SILVER.importTemplate(MINERAL);
+ SILVER.recessive();
+ SILVER.recessive();
+ SILVER.setSecondaryColor(rockBody);
+
+ PLATINUM.addProduct(EnumHoneyComb.STONE, 20);
+ PLATINUM.addSpecialty(EnumHoneyComb.PLATINUM, 1);
+ PLATINUM.importTemplate(MINERAL);
+ PLATINUM.recessive();
+ PLATINUM.setSecondaryColor(rockBody);
+
+
+ LAPIS.addProduct(EnumHoneyComb.STONE, 20);
+ LAPIS.addSpecialty(EnumHoneyComb.LAPIS, 5);
+ LAPIS.importTemplate(MINERAL);
+ LAPIS.setSecondaryColor(rockBody);
+
+ EMERALD.addProduct(EnumHoneyComb.STONE, 20);
+ EMERALD.addSpecialty(EnumHoneyComb.EMERALD, 4);
+ EMERALD.importTemplate(MINERAL);
+ EMERALD.setSecondaryColor(rockBody);
+
+ RUBY.addProduct(EnumHoneyComb.STONE, 20);
+ RUBY.addSpecialty(EnumHoneyComb.RUBY, 3);
+ RUBY.importTemplate(MINERAL);
+ RUBY.setSecondaryColor(rockBody);
+
+ SAPPHIRE.addProduct(EnumHoneyComb.STONE, 20);
+ SAPPHIRE.addSpecialty(EnumHoneyComb.SAPPHIRE, 3);
+ SAPPHIRE.importTemplate(MINERAL);
+ SAPPHIRE.setSecondaryColor(rockBody);
+
+ DIAMOND.addProduct(EnumHoneyComb.STONE, 20);
+ DIAMOND.addSpecialty(EnumHoneyComb.DIAMOND, 1);
+ DIAMOND.importTemplate(MINERAL);
+ DIAMOND.setSecondaryColor(rockBody);
+
+ UNSTABLE.importTemplate(MINERAL);
+ UNSTABLE.addProduct(EnumHoneyComb.BARREN, 20);
+ UNSTABLE.setEffect(ExtraBeesEffect.RADIOACTIVE.getUID());
+ UNSTABLE.setFertility(ForestryAllele.Fertility.Low);
+ UNSTABLE.setLifespan(ForestryAllele.Lifespan.Shortest);
+ UNSTABLE.recessive();
+
+ NUCLEAR.importTemplate(UNSTABLE);
+ NUCLEAR.addProduct(EnumHoneyComb.BARREN, 20);
+ NUCLEAR.recessive();
+
+ RADIOACTIVE.importTemplate(NUCLEAR);
+ RADIOACTIVE.addProduct(EnumHoneyComb.BARREN, 20);
+ RADIOACTIVE.addSpecialty(EnumHoneyComb.URANIUM, 2);
+ RADIOACTIVE.setHasEffect(true);
+ RADIOACTIVE.recessive();
+
+ ANCIENT.importTemplate(ForestryAllele.BeeSpecies.Noble);
+ ANCIENT.addProduct(EnumHoneyComb.OLD, 30);
+ ANCIENT.setLifespan(ForestryAllele.Lifespan.Elongated);
+
+ PRIMEVAL.importTemplate(ANCIENT);
+ PRIMEVAL.addProduct(EnumHoneyComb.OLD, 30);
+ PRIMEVAL.setLifespan(ForestryAllele.Lifespan.Long);
+
+ PREHISTORIC.importTemplate(ANCIENT);
+ PREHISTORIC.addProduct(EnumHoneyComb.OLD, 30);
+ PREHISTORIC.setLifespan(ForestryAllele.Lifespan.Longer);
+ PREHISTORIC.setFertility(ForestryAllele.Fertility.Low);
+ PREHISTORIC.recessive();
+
+ RELIC.importTemplate(ANCIENT);
+ RELIC.addProduct(EnumHoneyComb.OLD, 30);
+ RELIC.setHasEffect(true);
+ RELIC.setLifespan(ForestryAllele.Lifespan.Longest);
+
+ COAL.importTemplate(ANCIENT);
+ COAL.setLifespan(ForestryAllele.Lifespan.Normal);
+ COAL.addProduct(EnumHoneyComb.OLD, 20);
+ COAL.addSpecialty(EnumHoneyComb.COAL, 8);
+
+ RESIN.importTemplate(COAL);
+ RESIN.addProduct(EnumHoneyComb.OLD, 20);
+ RESIN.addSpecialty(EnumHoneyComb.RESIN, 5);
+ RESIN.recessive();
+
+ OIL.importTemplate(COAL);
+ OIL.addProduct(EnumHoneyComb.OLD, 20);
+ OIL.addSpecialty(EnumHoneyComb.OIL, 5);
+
+
+
+
+
+
+ DISTILLED.importTemplate(OIL);
+ DISTILLED.addProduct(EnumHoneyComb.OIL, 10);
+ DISTILLED.recessive();
+
+ FUEL.importTemplate(OIL);
+ FUEL.addProduct(EnumHoneyComb.OIL, 10);
+ FUEL.addSpecialty(EnumHoneyComb.FUEL, 4);
+ FUEL.setHasEffect(true);
+
+ CREOSOTE.importTemplate(COAL);
+ CREOSOTE.addProduct(EnumHoneyComb.COAL, 10);
+ CREOSOTE.addSpecialty(EnumHoneyComb.CREOSOTE, 7);
+ CREOSOTE.setHasEffect(true);
+
+ LATEX.importTemplate(RESIN);
+ LATEX.addProduct(EnumHoneyComb.RESIN, 10);
+ LATEX.addSpecialty(EnumHoneyComb.LATEX, 5);
+ LATEX.setHasEffect(true);
+
+ WATER.addProduct(EnumHoneyComb.WATER, 30);
+ WATER.setIsSecret(false);
+ WATER.setTolerantFlyer();
+ WATER.setHumidityTolerance(Tolerance.Both1);
+ WATER.setFlowerProvider(ExtraBeesFlowers.WATER.getUID());
+ WATER.setFlowering(ForestryAllele.Flowering.Slow);
+ WATER.setEffect(ExtraBeesEffect.WATER.getUID());
+ WATER.setHumidity(EnumHumidity.DAMP);
+
+ RIVER.importTemplate(WATER);
+ RIVER.addProduct(EnumHoneyComb.WATER, 30);
+ RIVER.addSpecialty(EnumHoneyComb.CLAY, 20);
+ RIVER.importTemplate(WATER);
+
+ OCEAN.importTemplate(WATER);
+ OCEAN.addProduct(EnumHoneyComb.WATER, 30);
+ OCEAN.importTemplate(WATER);
+ OCEAN.recessive();
+
+ INK.importTemplate(OCEAN);
+ INK.addProduct(EnumHoneyComb.WATER, 30);
+ INK.addSpecialty(new ItemStack(Items.dye, 1, 0), 10);
+
+ GROWING.importTemplate(ForestryAllele.BeeSpecies.Forest);
+ GROWING.addProduct(ItemHoneyComb.VanillaComb.HONEY.get(), 35);
+ GROWING.setFlowering(ForestryAllele.Flowering.Average);
+ GROWING.setFlowerProvider(ExtraBeesFlowers.LEAVES.getUID());
+
+ THRIVING.importTemplate(GROWING);
+ THRIVING.addProduct(ItemHoneyComb.VanillaComb.HONEY.get(), 35);
+ THRIVING.setFlowering(ForestryAllele.Flowering.Fast);
+
+ BLOOMING.importTemplate(THRIVING);
+ BLOOMING.setFlowering(ForestryAllele.Flowering.Fastest);
+ BLOOMING.addProduct(ItemHoneyComb.VanillaComb.HONEY.get(), 35);
+ BLOOMING.setFlowerProvider(ExtraBeesFlowers.Sapling.getUID());
+ BLOOMING.setEffect(ExtraBeesEffect.BonemealSapling.getUID());
+
+ SWEET.importTemplate(ForestryAllele.BeeSpecies.Rural);
+ SWEET.addProduct(ItemHoneyComb.VanillaComb.HONEY.get(), 40);
+ SWEET.addProduct(new ItemStack(Items.sugar, 1, 0), 10);
+ SWEET.setFlowerProvider(ExtraBeesFlowers.SUGAR.getUID());
+
+ SUGAR.addProduct(ItemHoneyComb.VanillaComb.HONEY.get(), 40);
+ SUGAR.addProduct(new ItemStack(Items.sugar, 1, 0), 20);
+ SUGAR.importTemplate(SWEET);
+
+ RIPENING.addProduct(ItemHoneyComb.VanillaComb.HONEY.get(), 30);
+ RIPENING.addProduct(new ItemStack(Items.sugar, 1, 0), 10);
+ RIPENING.addSpecialty(EnumHoneyComb.FRUIT, 10);
+ RIPENING.setFlowerProvider(ExtraBeesFlowers.Fruit.getUID());
+ RIPENING.importTemplate(SUGAR);
+
+ FRUIT.importTemplate(RIPENING);
+ FRUIT.addProduct(ItemHoneyComb.VanillaComb.HONEY.get(), 30);
+ FRUIT.addProduct(new ItemStack(Items.sugar, 1, 0), 15);
+ FRUIT.addSpecialty(EnumHoneyComb.FRUIT, 20);
+ FRUIT.setEffect(ExtraBeesEffect.BonemealFruit.getUID());
+ FRUIT.setHasEffect(true);
+
+ ALCOHOL.importTemplate(SWEET);
+ ALCOHOL.addProduct(ItemHoneyComb.VanillaComb.WHEATEN.get(), 30);
+ ALCOHOL.addSpecialty(EnumHoneyComb.ALCOHOL, 10);
+ ALCOHOL.setEffect("forestry.effectDrunkard");
+ ALCOHOL.recessive();
+
+ FARM.addProduct(ItemHoneyComb.VanillaComb.WHEATEN.get(), 30);
+ FARM.addSpecialty(EnumHoneyComb.SEED, 10);
+ FARM.importTemplate(ForestryAllele.BeeSpecies.Rural);
+
+ MILK.addProduct(ItemHoneyComb.VanillaComb.WHEATEN.get(), 30);
+ MILK.addSpecialty(EnumHoneyComb.MILK, 10);
+ MILK.importTemplate(ForestryAllele.BeeSpecies.Rural);
+
+ COFFEE.addProduct(ItemHoneyComb.VanillaComb.WHEATEN.get(), 30);
+ COFFEE.addSpecialty(EnumHoneyComb.COFFEE, 8);
+ COFFEE.importTemplate(ForestryAllele.BeeSpecies.Rural);
+
+
+
+
+
+
+
+
+
+ SWAMP.addProduct(ItemHoneyComb.VanillaComb.MOSSY.get(), 30);
+ SWAMP.importTemplate(ForestryAllele.BeeSpecies.Marshy);
+ SWAMP.setHumidity(EnumHumidity.DAMP);
+ SWAMP.setEffect(ExtraBeesEffect.SLOW.getUID());
+
+ BOGGY.importTemplate(SWAMP);
+ BOGGY.addProduct(ItemHoneyComb.VanillaComb.MOSSY.get(), 30);
+ BOGGY.importTemplate(SWAMP);
+ BOGGY.recessive();
+
+ FUNGAL.importTemplate(BOGGY);
+ FUNGAL.addProduct(ItemHoneyComb.VanillaComb.MOSSY.get(), 30);
+ FUNGAL.addSpecialty(EnumHoneyComb.FUNGAL, 15);
+ FUNGAL.importTemplate(BOGGY);
+ FUNGAL.setEffect(ExtraBeesEffect.BonemealMushroom.getUID());
+ FUNGAL.setHasEffect(true);
+
+ BASALT.addProduct(ItemHoneyComb.VanillaComb.SIMMERING.get(), 25);
+ BASALT.importTemplate(ForestryAllele.BeeSpecies.Sinister);
+ BASALT.setEffect("forestry.effectAggressive");
+ BASALT.setSecondaryColor(10101539);
+ BASALT.setHumidity(EnumHumidity.ARID);
+ BASALT.setTemperature(EnumTemperature.HELLISH);
+
+ TEMPERED.addProduct(ItemHoneyComb.VanillaComb.SIMMERING.get(), 25);
+ TEMPERED.importTemplate(BASALT);
+ TEMPERED.setEffect(ExtraBeesEffect.METEOR.getUID());
+ TEMPERED.recessive();
+ TEMPERED.setSecondaryColor(10101539);
+
+ VOLCANIC.importTemplate(TEMPERED);
+ VOLCANIC.addProduct(ItemHoneyComb.VanillaComb.SIMMERING.get(), 25);
+ VOLCANIC.addSpecialty(EnumHoneyComb.BLAZE, 10);
+ VOLCANIC.setHasEffect(true);
+ VOLCANIC.setSecondaryColor(10101539);
+
+ MALICIOUS.importTemplate(ForestryAllele.BeeSpecies.Tropical);
+ MALICIOUS.addProduct(ItemHoneyComb.VanillaComb.SILKY.get(), 25);
+ MALICIOUS.setSecondaryColor(431972);
+ MALICIOUS.setHumidity(EnumHumidity.DAMP);
+ MALICIOUS.setTemperature(EnumTemperature.WARM);
+
+ INFECTIOUS.importTemplate(MALICIOUS);
+ INFECTIOUS.addProduct(ItemHoneyComb.VanillaComb.SILKY.get(), 25);
+ INFECTIOUS.setFlowering(ForestryAllele.Flowering.Slow);
+ INFECTIOUS.setSecondaryColor(431972);
+
+ VIRULENT.importTemplate(INFECTIOUS);
+ VIRULENT.addProduct(ItemHoneyComb.VanillaComb.SILKY.get(), 25);
+ VIRULENT.addSpecialty(EnumHoneyComb.VENOMOUS, 12);
+ VIRULENT.setFlowering(ForestryAllele.Flowering.Average);
+ VIRULENT.recessive();
+ VIRULENT.setHasEffect(true);
+ VIRULENT.setSecondaryColor(431972);
+
+ VISCOUS.importTemplate(ForestryAllele.BeeSpecies.Tropical);
+ VISCOUS.setEffect(ExtraBeesEffect.ECTOPLASM.getUID());
+ VISCOUS.addProduct(ItemHoneyComb.VanillaComb.SILKY.get(), 25);
+ VISCOUS.setSecondaryColor(431972);
+ VISCOUS.setHumidity(EnumHumidity.DAMP);
+ VISCOUS.setSpeed(ForestryAllele.Speed.Slow);
+ VISCOUS.setTemperature(EnumTemperature.WARM);
+
+ GLUTINOUS.importTemplate(VISCOUS);
+ GLUTINOUS.addProduct(ItemHoneyComb.VanillaComb.SILKY.get(), 25);
+ GLUTINOUS.setSpeed(ForestryAllele.Speed.Norm);
+ GLUTINOUS.setSecondaryColor(431972);
+
+ STICKY.importTemplate(GLUTINOUS);
+ STICKY.addProduct(ItemHoneyComb.VanillaComb.SILKY.get(), 25);
+ STICKY.addSpecialty(EnumHoneyComb.SLIME, 12);
+ STICKY.setSpeed(ForestryAllele.Speed.Fast);
+ STICKY.setHasEffect(true);
+ STICKY.setSecondaryColor(431972);
+
+ CORROSIVE.importTemplate(STICKY);
+ CORROSIVE.setHumidity(EnumHumidity.DAMP);
+ CORROSIVE.setTemperature(EnumTemperature.WARM);
+ CORROSIVE.setEffect(ExtraBeesEffect.ACID.getUID());
+ CORROSIVE.setFlowering(ForestryAllele.Flowering.Average);
+ CORROSIVE.addProduct(ItemHoneyComb.VanillaComb.SILKY.get(), 20);
+ CORROSIVE.recessive();
+ CORROSIVE.setSecondaryColor(431972);
+
+ CAUSTIC.importTemplate(CORROSIVE);
+ CAUSTIC.addProduct(ItemHoneyComb.VanillaComb.SILKY.get(), 25);
+ CAUSTIC.addSpecialty(EnumHoneyComb.ACIDIC, 3);
+ CAUSTIC.setSecondaryColor(431972);
+
+ ACIDIC.importTemplate(CAUSTIC);
+ ACIDIC.addProduct(ItemHoneyComb.VanillaComb.SILKY.get(), 20);
+ ACIDIC.addSpecialty(EnumHoneyComb.ACIDIC, 16);
+ ACIDIC.setHasEffect(true);
+ ACIDIC.setSecondaryColor(431972);
+
+ EXCITED.setEffect(ExtraBeesEffect.LIGHTNING.getUID());
+ EXCITED.addProduct(EnumHoneyComb.REDSTONE, 10);
+ EXCITED.setCaveDwelling();
+ EXCITED.setFlowerProvider(ExtraBeesFlowers.REDSTONE.getUID());
+
+ ENERGETIC.importTemplate(EXCITED);
+ ENERGETIC.setEffect(ExtraBeesEffect.LIGHTNING.getUID());
+ ENERGETIC.addProduct(EnumHoneyComb.REDSTONE, 12);
+ ENERGETIC.recessive();
+
+ ECSTATIC.importTemplate(ENERGETIC);
+ ECSTATIC.setEffect(ExtraBeesEffect.Power.getUID());
+ ECSTATIC.addProduct(EnumHoneyComb.REDSTONE, 20);
+ ECSTATIC.addSpecialty(EnumHoneyComb.IC2ENERGY, 8);
+ ECSTATIC.setHasEffect(true);
+
+ ARTIC.importTemplate(ForestryAllele.BeeSpecies.Wintry);
+ ARTIC.addProduct(ItemHoneyComb.VanillaComb.FROZEN.get(), 25);
+ ARTIC.setTemperature(EnumTemperature.ICY);
+ ARTIC.setSecondaryColor(14349811);
+
+ FREEZING.importTemplate(ARTIC);
+ FREEZING.addProduct(ItemHoneyComb.VanillaComb.FROZEN.get(), 20);
+ FREEZING.addSpecialty(EnumHoneyComb.GLACIAL, 10);
+ FREEZING.setSecondaryColor(14349811);
+
+ SHADOW.importTemplate(BASALT);
+ SHADOW.setNocturnal();
+ SHADOW.addProduct(EnumHoneyComb.SHADOW, 5);
+ SHADOW.setEffect(ExtraBeesEffect.BLINDNESS.getUID());
+ SHADOW.setAllDay(false);
+ SHADOW.recessive();
+ SHADOW.setSecondaryColor(3355443);
+
+ DARKENED.addProduct(EnumHoneyComb.SHADOW, 10);
+ DARKENED.setNocturnal();
+ DARKENED.importTemplate(SHADOW);
+ DARKENED.setSecondaryColor(3355443);
+
+ ABYSS.importTemplate(DARKENED);
+ ABYSS.setNocturnal();
+ ABYSS.addProduct(EnumHoneyComb.SHADOW, 25);
+ ABYSS.setEffect(ExtraBeesEffect.WITHER.getUID());
+ ABYSS.setHasEffect(true);
+ ABYSS.setSecondaryColor(3355443);
+
+ CELEBRATORY.importTemplate(ForestryAllele.BeeSpecies.Merry);
+ CELEBRATORY.setEffect(ExtraBeesEffect.FIREWORKS.getUID());
+
+ GLOWSTONE.importTemplate(BASALT);
+ GLOWSTONE.addProduct(EnumHoneyComb.GLOWSTONE, 15);
+ GLOWSTONE.setSecondaryColor(10101539);
+
+ HAZARDOUS.importTemplate(ForestryAllele.BeeSpecies.Austere);
+ HAZARDOUS.addProduct(EnumHoneyComb.SALTPETER, 12);
+
+ JADED.importTemplate(ForestryAllele.BeeSpecies.Imperial);
+ JADED.setFertility(ForestryAllele.Fertility.Maximum);
+ JADED.setFlowering(ForestryAllele.Flowering.Maximum);
+ JADED.setTerritory(ForestryAllele.Territory.Largest);
+ JADED.addProduct(ItemHoneyComb.VanillaComb.HONEY.get(), 30);
+ JADED.addSpecialty(Mods.Forestry.stack("pollen"), 20);
+ JADED.setHasEffect(true);
+ JADED.setSecondaryColor(14453483);
+
+ UNUSUAL.importTemplate(ForestryAllele.BeeSpecies.Ended);
+ UNUSUAL.setEffect(ExtraBeesEffect.GRAVITY.getUID());
+ UNUSUAL.setSecondaryColor(12231403);
+ UNUSUAL.addProduct(ItemHoneyComb.VanillaComb.QUARTZ.get(), 25);
+
+ SPATIAL.importTemplate(UNUSUAL);
+ SPATIAL.setEffect(ExtraBeesEffect.GRAVITY.getUID());
+ SPATIAL.setSecondaryColor(10768076);
+ SPATIAL.addProduct(ItemHoneyComb.VanillaComb.QUARTZ.get(), 25);
+ SPATIAL.addSpecialty(EnumHoneyComb.CERTUS, 5);
+
+ QUANTUM.importTemplate(QUANTUM);
+ QUANTUM.setEffect(ExtraBeesEffect.TELEPORT.getUID());
+ QUANTUM.setSecondaryColor(13963227);
+ QUANTUM.addProduct(ItemHoneyComb.VanillaComb.QUARTZ.get(), 25);
+ QUANTUM.addSpecialty(EnumHoneyComb.CERTUS, 15);
+ QUANTUM.addSpecialty(EnumHoneyComb.ENDERPEARL, 15);
+
+ JADED.addSpecialty(EnumHoneyComb.PURPLE, 15);
+ JADED.isCounted = false;
+
+ YELLORIUM.importTemplate(NUCLEAR);
+ YELLORIUM.addProduct(EnumHoneyComb.BARREN, 20);
+ YELLORIUM.addSpecialty(EnumHoneyComb.YELLORIUM, 2);
+ YELLORIUM.setEffect(ExtraBeesEffect.RADIOACTIVE.getUID());
+ YELLORIUM.setFertility(ForestryAllele.Fertility.Low);
+ YELLORIUM.setLifespan(ForestryAllele.Lifespan.Shortest);
+
+ CYANITE.importTemplate(YELLORIUM);
+ CYANITE.addProduct(EnumHoneyComb.BARREN, 20);
+ CYANITE.addSpecialty(EnumHoneyComb.CYANITE, 1);
+
+ BLUTONIUM.importTemplate(CYANITE);
+ BLUTONIUM.addProduct(EnumHoneyComb.BARREN, 20);
+ BLUTONIUM.addSpecialty(EnumHoneyComb.BLUTONIUM, 1);
+
+ MYSTICAL.importTemplate(ForestryAllele.BeeSpecies.Noble);
+ for (Map.Entry<ItemStack, Integer> entry : ForestryAllele.BeeSpecies.Noble.getAllele().getProducts().entrySet()) {
+ MYSTICAL.addProduct((ItemStack)entry.getKey(), ((Integer)entry.getValue()).intValue());
+ }
+ MYSTICAL.setFlowerProvider(ExtraBeesFlowers.Mystical.getUID());
+ for (ExtraBeesSpecies species : values())
+ {
+ if (species.state != State.Active) {
+ AlleleManager.alleleRegistry.blacklistAllele(species.getUID());
+ }
+ for (EnumBeeChromosome chromo : EnumBeeChromosome.values()) {
+ if (chromo != EnumBeeChromosome.HUMIDITY)
+ {
+ IAllele allele = species.template[chromo.ordinal()];
+ if ((allele == null) || (!chromo.getAlleleClass().isInstance(allele))) {
+ throw new RuntimeException(species.getName() + " has an invalid " + chromo.toString() + " chromosome!");
+ }
+ }
+ }
+ }
+ for (int i = 0; i < 16; i++)
+ {
+ ExtraBeesSpecies species = values()[(RED.ordinal() + i)];
+ EnumHoneyComb comb = EnumHoneyComb.values()[(EnumHoneyComb.RED.ordinal() + i)];
+ species.addProduct(ItemHoneyComb.VanillaComb.HONEY.get(), 75);
+ species.addSpecialty(comb, 25);
+ species.setSecondaryColor(9240320);
+ }
+ for (ExtraBeesSpecies species : values()) {
+ species.registerTemplate();
+ }
+ }
+
+ void setBranch(IClassification branch)
+ {
+ this.branch = branch;
+ }
+
+ public boolean isJubilant(World world, int biomeid, int x, int y, int z)
+ {
+ return true;
+ }
+
+ public boolean isJubilant(IBeeGenome genome, IBeeHousing housing)
+ {
+ return true;
+ }
+
+ public int getIconColour(int renderPass)
+ {
+ return renderPass == 1 ? this.secondaryColor : renderPass == 0 ? this.primaryColor : 16777215;
+ }
+
+ public IIconProvider getIconProvider()
+ {
+ return this;
+ }
+
+ public IIcon getIcon(short texUID)
+ {
+ return null;
+ }
+
+ @SideOnly(Side.CLIENT)
+ public void registerIcons(IIconRegister register)
+ {
+ String iconType = "default";
+ String mod = "forestry";
+ if (this == JADED)
+ {
+ iconType = "jaded";
+ mod = "extrabees";
+ }
+ this.icons = new IIcon[EnumBeeType.values().length][3];
+
+ IIcon body1 = BinnieCore.proxy.getIcon(register, mod, "bees/" + iconType + "/body1");
+ for (int i = 0; i < EnumBeeType.values().length; i++) {
+ if (EnumBeeType.values()[i] != EnumBeeType.NONE)
+ {
+ this.icons[i][0] = BinnieCore.proxy.getIcon(register, mod, "bees/" + iconType + "/" + EnumBeeType.values()[i].toString().toLowerCase(Locale.ENGLISH) + ".outline");
+
+
+ this.icons[i][1] = (EnumBeeType.values()[i] != EnumBeeType.LARVAE ? body1 : BinnieCore.proxy.getIcon(register, mod, "bees/" + iconType + "/" + EnumBeeType.values()[i].toString().toLowerCase(Locale.ENGLISH) + ".body"));
+
+ this.icons[i][2] = BinnieCore.proxy.getIcon(register, mod, "bees/" + iconType + "/" + EnumBeeType.values()[i].toString().toLowerCase(Locale.ENGLISH) + ".body2");
+ }
+ }
+ }
+
+ @SideOnly(Side.CLIENT)
+ public IIcon getIcon(EnumBeeType type, int renderPass)
+ {
+ if (this.icons == null) {
+ return ARID.getIcon(type, renderPass);
+ }
+ return this.icons[type.ordinal()][renderPass];
+ }
+
+ public IBeeRoot getRoot()
+ {
+ return Binnie.Genetics.getBeeRoot();
+ }
+
+ boolean nocturnal = false;
+
+ public boolean isNocturnal()
+ {
+ return this.nocturnal;
+ }
+
+ public void setNocturnal()
+ {
+ this.nocturnal = true;
+ }
+
+ public void setAllDay()
+ {
+ setAllDay(true);
+ }
+
+ public void setAllDay(boolean allDay)
+ {
+ if (allDay) {
+ this.template[EnumBeeChromosome.NOCTURNAL.ordinal()] = AlleleManager.alleleRegistry.getAllele("forestry.boolTrue");
+ } else {
+ this.template[EnumBeeChromosome.NOCTURNAL.ordinal()] = AlleleManager.alleleRegistry.getAllele("forestry.boolFalse");
+ }
+ }
+
+ public void setCaveDwelling()
+ {
+ this.template[EnumBeeChromosome.CAVE_DWELLING.ordinal()] = AlleleManager.alleleRegistry.getAllele("forestry.boolTrue");
+ }
+
+ public void setTolerantFlyer()
+ {
+ this.template[EnumBeeChromosome.TOLERANT_FLYER.ordinal()] = AlleleManager.alleleRegistry.getAllele("forestry.boolTrue");
+ }
+
+ public void setFlowerProvider(String uid)
+ {
+ IAllele allele = AlleleManager.alleleRegistry.getAllele(uid);
+ if ((allele instanceof IAlleleFlowers)) {
+ this.template[EnumBeeChromosome.FLOWER_PROVIDER.ordinal()] = allele;
+ }
+ }
+
+ public void setEffect(String uid)
+ {
+ IAllele allele = AlleleManager.alleleRegistry.getAllele(uid);
+ if ((allele instanceof IAlleleBeeEffect)) {
+ this.template[EnumBeeChromosome.EFFECT.ordinal()] = AlleleManager.alleleRegistry.getAllele(uid);
+ }
+ }
+
+ private void setFertility(ForestryAllele.Fertility fert)
+ {
+ this.template[EnumBeeChromosome.FERTILITY.ordinal()] = fert.getAllele();
+ }
+
+ private void setLifespan(ForestryAllele.Lifespan fert)
+ {
+ this.template[EnumBeeChromosome.LIFESPAN.ordinal()] = fert.getAllele();
+ }
+
+ private void setSpeed(ForestryAllele.Speed fert)
+ {
+ this.template[EnumBeeChromosome.SPEED.ordinal()] = fert.getAllele();
+ }
+
+ private void setTerritory(ForestryAllele.Territory fert)
+ {
+ this.template[EnumBeeChromosome.TERRITORY.ordinal()] = fert.getAllele();
+ }
+
+ private void setFlowering(ForestryAllele.Flowering fert)
+ {
+ this.template[EnumBeeChromosome.FLOWERING.ordinal()] = fert.getAllele();
+ }
+
+ private void setHumidityTolerance(Tolerance fert)
+ {
+ this.template[EnumBeeChromosome.HUMIDITY_TOLERANCE.ordinal()] = fert.getAllele();
+ }
+
+ private void setTemperatureTolerance(Tolerance both1)
+ {
+ this.template[EnumBeeChromosome.TEMPERATURE_TOLERANCE.ordinal()] = both1.getAllele();
+ }
+
+ public float getResearchSuitability(ItemStack itemstack)
+ {
+ if (itemstack == null) {
+ return 0.0F;
+ }
+ for (ItemStack stack : this.products.keySet()) {
+ if (stack.isItemEqual(itemstack)) {
+ return 1.0F;
+ }
+ }
+ for (ItemStack stack : this.specialties.keySet()) {
+ if (stack.isItemEqual(itemstack)) {
+ return 1.0F;
+ }
+ }
+ if (itemstack.getItem() == Items.glass_bottle) {
+ return 0.9F;
+ }
+ if (itemstack.getItem() == Mods.Forestry.item("honeyDrop")) {
+ return 0.5F;
+ }
+ if (itemstack.getItem() == Mods.Forestry.item("honeydew")) {
+ return 0.7F;
+ }
+ if (itemstack.getItem() == Mods.Forestry.item("beeComb")) {
+ return 0.4F;
+ }
+ if (AlleleManager.alleleRegistry.isIndividual(itemstack)) {
+ return 1.0F;
+ }
+ for (Map.Entry<ItemStack, Float> entry : getRoot().getResearchCatalysts().entrySet()) {
+ if (((ItemStack)entry.getKey()).isItemEqual(itemstack)) {
+ return ((Float)entry.getValue()).floatValue();
+ }
+ }
+ return 0.0F;
+ }
+
+ public ItemStack[] getResearchBounty(World world, GameProfile researcher, IIndividual individual, int bountyLevel)
+ {
+ ArrayList<ItemStack> bounty = new ArrayList();
+ ItemStack research = null;
+ if (world.rand.nextFloat() < 10.0F / bountyLevel)
+ {
+ Collection<? extends IMutation> combinations = getRoot().getCombinations(this);
+ if (combinations.size() > 0)
+ {
+ IMutation[] candidates = (IMutation[])combinations.toArray(new IMutation[0]);
+ research = AlleleManager.alleleRegistry.getMutationNoteStack(researcher, candidates[world.rand.nextInt(candidates.length)]);
+ }
+ }
+ if (research != null) {
+ bounty.add(research);
+ }
+ if (bountyLevel > 10) {
+ for (ItemStack stack : this.specialties.keySet())
+ {
+ ItemStack stack2 = stack.copy();
+ stack2.stackSize = (world.rand.nextInt((int)(bountyLevel / 2.0F)) + 1);
+ bounty.add(stack2);
+ }
+ }
+ for (ItemStack stack : this.products.keySet())
+ {
+ ItemStack stack2 = stack.copy();
+ stack2.stackSize = (world.rand.nextInt((int)(bountyLevel / 2.0F)) + 1);
+ bounty.add(stack2);
+ }
+ return (ItemStack[])bounty.toArray(new ItemStack[0]);
+ }
+
+ public String getEntityTexture()
+ {
+ return "/gfx/forestry/entities/bees/honeyBee.png";
+ }
+
+ public int getComplexity()
+ {
+ return 1 + getGeneticAdvancement(this, new ArrayList());
+ }
+
+ private int getGeneticAdvancement(IAllele species, ArrayList<IAllele> exclude)
+ {
+ int own = 1;
+ int highest = 0;
+ exclude.add(species);
+ for (IMutation mutation : getRoot().getPaths(species, EnumBeeChromosome.SPECIES))
+ {
+ if (!exclude.contains(mutation.getAllele0()))
+ {
+ int otherAdvance = getGeneticAdvancement(mutation.getAllele0(), exclude);
+ if (otherAdvance > highest) {
+ highest = otherAdvance;
+ }
+ }
+ if (!exclude.contains(mutation.getAllele1()))
+ {
+ int otherAdvance = getGeneticAdvancement(mutation.getAllele1(), exclude);
+ if (otherAdvance > highest) {
+ highest = otherAdvance;
+ }
+ }
+ }
+ return own + (highest < 0 ? 0 : highest);
+ }
+
+ public String getUnlocalizedName()
+ {
+ return getUID();
+ }
+
+ public Map<ItemStack, Float> getProductChances()
+ {
+ return null;
+ }
+
+ public Map<ItemStack, Float> getSpecialtyChances()
+ {
+ return null;
+ }
+}
diff --git a/src/Java/binnie/extrabees/genetics/ModuleGenetics.java b/src/Java/binnie/extrabees/genetics/ModuleGenetics.java
new file mode 100644
index 0000000000..626796266d
--- /dev/null
+++ b/src/Java/binnie/extrabees/genetics/ModuleGenetics.java
@@ -0,0 +1,88 @@
+package binnie.extrabees.genetics;
+
+import binnie.Binnie;
+import binnie.core.BinnieCore;
+import binnie.core.IInitializable;
+import binnie.core.genetics.ManagerGenetics;
+import binnie.core.liquid.ManagerLiquid;
+import binnie.core.proxy.BinnieProxy;
+import binnie.extrabees.ExtraBees;
+import binnie.extrabees.genetics.effect.BlockEctoplasm;
+import binnie.extrabees.genetics.effect.ExtraBeesEffect;
+import binnie.extrabees.genetics.items.ItemDictionary;
+import cpw.mods.fml.common.registry.GameRegistry;
+import forestry.api.apiculture.EnumBeeType;
+import forestry.api.apiculture.IAlleleBeeSpecies;
+import forestry.api.apiculture.IBee;
+import forestry.api.apiculture.IBeeGenome;
+import forestry.api.apiculture.IBeeRoot;
+import forestry.api.genetics.AlleleManager;
+import forestry.api.genetics.IAllele;
+import forestry.api.genetics.IAlleleRegistry;
+import forestry.api.genetics.IGenome;
+import forestry.api.recipes.ICarpenterManager;
+import forestry.api.recipes.RecipeManagers;
+import net.minecraft.init.Blocks;
+import net.minecraft.init.Items;
+import net.minecraft.item.ItemStack;
+
+public class ModuleGenetics
+ implements IInitializable
+{
+ public void preInit()
+ {
+ for (ExtraBeesSpecies species : ) {
+ AlleleManager.alleleRegistry.registerAllele(species);
+ }
+ ExtraBees.dictionary = new ItemDictionary();
+ ExtraBees.ectoplasm = new BlockEctoplasm();
+
+ GameRegistry.registerBlock(ExtraBees.ectoplasm, "ectoplasm");
+ }
+
+ public void init()
+ {
+ ExtraBeesEffect.doInit();
+ ExtraBeesFlowers.doInit();
+ ExtraBeesSpecies.doInit();
+ ExtraBeeMutation.doInit();
+ ExtraBeesBranch.doInit();
+ }
+
+ public void postInit()
+ {
+ int ebSpeciesCount = 0;
+ int ebTotalSpeciesCount = 0;
+ for (ExtraBeesSpecies species : ExtraBeesSpecies.values())
+ {
+ ebTotalSpeciesCount++;
+ if (!AlleleManager.alleleRegistry.isBlacklisted(species.getUID())) {
+ ebSpeciesCount++;
+ }
+ }
+ RecipeManagers.carpenterManager.addRecipe(100, Binnie.Liquid.getLiquidStack("water", 2000), null, new ItemStack(ExtraBees.dictionary), new Object[] { "X#X", "YEY", "RDR", Character.valueOf('#'), Blocks.glass_pane, Character.valueOf('X'), Items.gold_ingot, Character.valueOf('Y'), "ingotTin", Character.valueOf('R'), Items.redstone, Character.valueOf('D'), Items.diamond, Character.valueOf('E'), Items.emerald });
+ }
+
+ public static IGenome getGenome(IAlleleBeeSpecies allele0)
+ {
+ return Binnie.Genetics.getBeeRoot().templateAsGenome(Binnie.Genetics.getBeeRoot().getTemplate(allele0.getUID()));
+ }
+
+ public static ItemStack getBeeIcon(IAlleleBeeSpecies species)
+ {
+ if (species == null) {
+ return null;
+ }
+ IAllele[] template = Binnie.Genetics.getBeeRoot().getTemplate(species.getUID());
+ if (template == null) {
+ return null;
+ }
+ IBeeGenome genome = Binnie.Genetics.getBeeRoot().templateAsGenome(template);
+
+ IBee bee = Binnie.Genetics.getBeeRoot().getBee(BinnieCore.proxy.getWorld(), genome);
+
+ ItemStack item = Binnie.Genetics.getBeeRoot().getMemberStack(bee, EnumBeeType.PRINCESS.ordinal());
+
+ return item;
+ }
+}
diff --git a/src/Java/binnie/extrabees/genetics/effect/BlockEctoplasm.java b/src/Java/binnie/extrabees/genetics/effect/BlockEctoplasm.java
new file mode 100644
index 0000000000..2baf9ba2f1
--- /dev/null
+++ b/src/Java/binnie/extrabees/genetics/effect/BlockEctoplasm.java
@@ -0,0 +1,42 @@
+package binnie.extrabees.genetics.effect;
+
+import binnie.extrabees.ExtraBees;
+import binnie.extrabees.proxy.ExtraBeesProxy;
+import cpw.mods.fml.relauncher.Side;
+import cpw.mods.fml.relauncher.SideOnly;
+import java.util.Random;
+import net.minecraft.block.BlockWeb;
+import net.minecraft.client.renderer.texture.IIconRegister;
+import net.minecraft.init.Items;
+import net.minecraft.item.Item;
+
+public class BlockEctoplasm
+ extends BlockWeb
+{
+ @SideOnly(Side.CLIENT)
+ public void registerBlockIcons(IIconRegister register)
+ {
+ this.blockIcon = ExtraBees.proxy.getIcon(register, "ectoplasm");
+ }
+
+ public BlockEctoplasm()
+ {
+ setLightOpacity(1);
+ setHardness(0.5F);
+ }
+
+ public int quantityDropped(Random rand)
+ {
+ return rand.nextInt(5) == 0 ? 1 : 0;
+ }
+
+ public Item getItemDropped(int p_149650_1_, Random p_149650_2_, int p_149650_3_)
+ {
+ return Items.slime_ball;
+ }
+
+ public String getUnlocalizedName()
+ {
+ return "extrabees.block.ectoplasm";
+ }
+}
diff --git a/src/Java/binnie/extrabees/genetics/effect/EntityBeeLightning.java b/src/Java/binnie/extrabees/genetics/effect/EntityBeeLightning.java
new file mode 100644
index 0000000000..eef4f27a6b
--- /dev/null
+++ b/src/Java/binnie/extrabees/genetics/effect/EntityBeeLightning.java
@@ -0,0 +1,68 @@
+package binnie.extrabees.genetics.effect;
+
+import java.util.List;
+import java.util.Random;
+import net.minecraft.block.BlockFire;
+import net.minecraft.entity.Entity;
+import net.minecraft.entity.effect.EntityLightningBolt;
+import net.minecraft.init.Blocks;
+import net.minecraft.util.AxisAlignedBB;
+import net.minecraft.util.MathHelper;
+import net.minecraft.world.World;
+
+public class EntityBeeLightning
+ extends EntityLightningBolt
+{
+ int lightningState = 2;
+ int boltLivingTime;
+
+ public EntityBeeLightning(World par1World, double par2, double par4, double par6)
+ {
+ super(par1World, par2, par4, par6);
+ this.boltLivingTime = (this.rand.nextInt(3) + 1);
+ }
+
+ public void onUpdate()
+ {
+ onEntityUpdate();
+
+ this.lightningState -= 1;
+ if (this.lightningState < 0) {
+ if (this.boltLivingTime == 0)
+ {
+ setDead();
+ }
+ else if (this.lightningState < -this.rand.nextInt(10))
+ {
+ this.boltLivingTime -= 1;
+ this.lightningState = 1;
+ this.boltVertex = this.rand.nextLong();
+ if ((!this.worldObj.isRemote) && (this.worldObj.doChunksNearChunkExist(MathHelper.floor_double(this.posX), MathHelper.floor_double(this.posY), MathHelper.floor_double(this.posZ), 10)))
+ {
+ int i = MathHelper.floor_double(this.posX);
+ int j = MathHelper.floor_double(this.posY);
+ int k = MathHelper.floor_double(this.posZ);
+ if ((this.worldObj.getBlock(i, j, k) == null) && (Blocks.fire.canPlaceBlockAt(this.worldObj, i, j, k))) {
+ this.worldObj.setBlock(i, j, k, Blocks.fire);
+ }
+ }
+ }
+ }
+ if (this.lightningState >= 0) {
+ if (this.worldObj.isRemote)
+ {
+ this.worldObj.lastLightningBolt = 2;
+ }
+ else
+ {
+ double d0 = 3.0D;
+ List list = this.worldObj.getEntitiesWithinAABBExcludingEntity(this, AxisAlignedBB.getBoundingBox(this.posX - d0, this.posY - d0, this.posZ - d0, this.posX + d0, this.posY + 6.0D + d0, this.posZ + d0));
+ for (int l = 0; l < list.size(); l++)
+ {
+ Entity entity = (Entity)list.get(l);
+ entity.onStruckByLightning(this);
+ }
+ }
+ }
+ }
+}
diff --git a/src/Java/binnie/extrabees/genetics/effect/ExtraBeesEffect.java b/src/Java/binnie/extrabees/genetics/effect/ExtraBeesEffect.java
new file mode 100644
index 0000000000..b36091ce91
--- /dev/null
+++ b/src/Java/binnie/extrabees/genetics/effect/ExtraBeesEffect.java
@@ -0,0 +1,585 @@
+package binnie.extrabees.genetics.effect;
+
+import binnie.Binnie;
+import binnie.core.liquid.ManagerLiquid;
+import binnie.extrabees.ExtraBees;
+import binnie.extrabees.genetics.ExtraBeesFlowers;
+import binnie.extrabees.proxy.ExtraBeesProxy;
+import cofh.api.energy.IEnergyReceiver;
+import forestry.api.apiculture.IAlleleBeeEffect;
+import forestry.api.apiculture.IAlleleBeeSpecies;
+import forestry.api.apiculture.IArmorApiarist;
+import forestry.api.apiculture.IBeeGenome;
+import forestry.api.apiculture.IBeeHousing;
+import forestry.api.genetics.AlleleManager;
+import forestry.api.genetics.IAlleleRegistry;
+import forestry.api.genetics.IEffectData;
+import forestry.apiculture.proxy.ProxyApiculture;
+import forestry.plugins.PluginApiculture;
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.List;
+import java.util.Random;
+import net.minecraft.block.Block;
+import net.minecraft.entity.Entity;
+import net.minecraft.entity.EntityList;
+import net.minecraft.entity.EntityLiving;
+import net.minecraft.entity.EntityLivingBase;
+import net.minecraft.entity.item.EntityFireworkRocket;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.entity.projectile.EntitySmallFireball;
+import net.minecraft.init.Blocks;
+import net.minecraft.item.ItemDye;
+import net.minecraft.item.ItemStack;
+import net.minecraft.potion.Potion;
+import net.minecraft.potion.PotionEffect;
+import net.minecraft.tileentity.TileEntity;
+import net.minecraft.util.AxisAlignedBB;
+import net.minecraft.util.DamageSource;
+import net.minecraft.util.FoodStats;
+import net.minecraft.world.World;
+import net.minecraft.world.WorldServer;
+import net.minecraftforge.common.util.ForgeDirection;
+import net.minecraftforge.fluids.IFluidHandler;
+
+public enum ExtraBeesEffect
+ implements IAlleleBeeEffect
+{
+ ECTOPLASM, ACID, SPAWN_ZOMBIE, SPAWN_SKELETON, SPAWN_CREEPER, LIGHTNING, RADIOACTIVE, METEOR, HUNGER, FOOD, BLINDNESS, CONFUSION, FIREWORKS, FESTIVAL, BIRTHDAY, TELEPORT, GRAVITY, THIEF, WITHER, WATER, SLOW, BonemealSapling, BonemealFruit, BonemealMushroom, Power;
+
+ private ExtraBeesEffect()
+ {
+ this.uid = toString().toLowerCase();
+ this.combinable = false;
+ this.dominant = true;
+ }
+
+ String fx = "";
+ public boolean combinable;
+ public boolean dominant;
+ public int id;
+ private String uid;
+ static List<Birthday> birthdays;
+
+ public static void doInit()
+ {
+ BLINDNESS.setFX("blindness");
+ FOOD.setFX("food");
+ GRAVITY.setFX("gravity");
+ THIEF.setFX("gravity");
+ TELEPORT.setFX("gravity");
+ LIGHTNING.setFX("lightning");
+ METEOR.setFX("meteor");
+ RADIOACTIVE.setFX("radioactive");
+ WATER.setFX("water");
+ WITHER.setFX("wither");
+ for (ExtraBeesEffect effect : values()) {
+ effect.register();
+ }
+ }
+
+ private void setFX(String string)
+ {
+ this.fx = ("particles/" + string);
+ }
+
+ public void register()
+ {
+ AlleleManager.alleleRegistry.registerAllele(this);
+ }
+
+ public boolean isCombinable()
+ {
+ return this.combinable;
+ }
+
+ public IEffectData validateStorage(IEffectData storedData)
+ {
+ return storedData;
+ }
+
+ public String getName()
+ {
+ return ExtraBees.proxy.localise("effect." + name().toString().toLowerCase() + ".name");
+ }
+
+ public boolean isDominant()
+ {
+ return this.dominant;
+ }
+
+ public void spawnMob(World world, int x, int y, int z, String name)
+ {
+ if (anyPlayerInRange(world, x, y, z, 16))
+ {
+ double var1 = x + world.rand.nextFloat();
+ double var3 = y + world.rand.nextFloat();
+ double var5 = z + world.rand.nextFloat();
+ world.spawnParticle("smoke", var1, var3, var5, 0.0D, 0.0D, 0.0D);
+ world.spawnParticle("flame", var1, var3, var5, 0.0D, 0.0D, 0.0D);
+ EntityLiving var9 = (EntityLiving)EntityList.createEntityByName(name, world);
+ if (var9 == null) {
+ return;
+ }
+ int var10 = world.getEntitiesWithinAABB(var9.getClass(), AxisAlignedBB.getBoundingBox(x, y, z, x + 1, y + 1, z + 1).expand(8.0D, 4.0D, 8.0D)).size();
+ if (var10 >= 6) {
+ return;
+ }
+ if (var9 != null)
+ {
+ double var11 = x + (world.rand.nextDouble() - world.rand.nextDouble()) * 4.0D;
+
+
+ double var13 = y + world.rand.nextInt(3) - 1;
+ double var15 = z + (world.rand.nextDouble() - world.rand.nextDouble()) * 4.0D;
+
+
+ var9.setLocationAndAngles(var11, var13, var15, world.rand.nextFloat() * 360.0F, 0.0F);
+ if (var9.getCanSpawnHere())
+ {
+ world.spawnEntityInWorld(var9);
+ world.playAuxSFX(2004, x, y, z, 0);
+ var9.spawnExplosionParticle();
+ }
+ }
+ }
+ }
+
+ private boolean anyPlayerInRange(World world, int x, int y, int z, int distance)
+ {
+ return world.getClosestPlayer(x + 0.5D, y + 0.5D, z + 0.5D, distance) != null;
+ }
+
+ public static void doAcid(World world, int x, int y, int z)
+ {
+ Block block = world.getBlock(x, y, z);
+ if ((block == Blocks.cobblestone) || (block == Blocks.stone)) {
+ world.setBlock(x, y, z, Blocks.gravel, 0, 0);
+ } else if (((block == Blocks.dirt ? 1 : 0) | (block == Blocks.grass ? 1 : 0)) != 0) {
+ world.setBlock(x, y, z, Blocks.sand, 0, 0);
+ }
+ }
+
+ public String getUID()
+ {
+ return "extrabees.effect." + this.uid;
+ }
+
+ public IEffectData doEffect(IBeeGenome genome, IEffectData storedData, IBeeHousing housing)
+ {
+ World world = housing.getWorld();
+ int xHouse = housing.getXCoord();
+ int yHouse = housing.getYCoord();
+ int zHouse = housing.getZCoord();
+
+ int[] area = getModifiedArea(genome, housing);
+
+ int xd = 1 + area[0] / 2;
+ int yd = 1 + area[1] / 2;
+ int zd = 1 + area[2] / 2;
+ int x1 = xHouse - xd + world.rand.nextInt(2 * xd + 1);
+ int y1 = yHouse - yd + world.rand.nextInt(2 * yd + 1);
+ int z1 = zHouse - zd + world.rand.nextInt(2 * zd + 1);
+ switch (1.$SwitchMap$binnie$extrabees$genetics$effect$ExtraBeesEffect[ordinal()])
+ {
+ case 4:
+ if (world.rand.nextInt(100) < 4)
+ {
+ if ((world.isAirBlock(x1, y1, z1)) && ((world.isBlockNormalCubeDefault(x1, y1 - 1, z1, false)) || (world.getBlock(x1, y1 - 1, z1) == ExtraBees.ectoplasm))) {
+ world.setBlock(x1, y1, z1, ExtraBees.ectoplasm, 0, 0);
+ }
+ return null;
+ }
+ break;
+ case 5:
+ if (world.rand.nextInt(100) < 6) {
+ doAcid(world, x1, y1, z1);
+ }
+ break;
+ case 6:
+ if (world.rand.nextInt(200) < 2) {
+ spawnMob(world, x1, y1, z1, "Zombie");
+ }
+ break;
+ case 7:
+ if (world.rand.nextInt(200) < 2) {
+ spawnMob(world, x1, y1, z1, "Skeleton");
+ }
+ break;
+ case 8:
+ if (world.rand.nextInt(200) < 2) {
+ spawnMob(world, x1, y1, z1, "Creeper");
+ }
+ break;
+ case 9:
+ if (world.rand.nextInt(100) < 1) {
+ if ((world.canBlockSeeTheSky(x1, y1, z1)) &&
+ ((world instanceof WorldServer))) {
+ ((WorldServer)world).addWeatherEffect(new EntityBeeLightning(world, x1, y1, z1));
+ }
+ }
+ break;
+ case 10:
+ if (world.rand.nextInt(100) < 1) {
+ if (world.canBlockSeeTheSky(x1, y1, z1)) {
+ ((WorldServer)world).spawnEntityInWorld(new EntitySmallFireball(world, x1, y1 + 64, z1, 0.0D, -0.6D, 0.0D));
+ }
+ }
+ break;
+ case 11:
+ for (EntityLivingBase entity : getEntities(EntityLivingBase.class, genome, housing))
+ {
+ int damage = 4;
+ if ((entity instanceof EntityPlayer))
+ {
+ int count = wearsItems((EntityPlayer)entity);
+ if (count > 3) {
+ continue;
+ }
+ if (count > 2) {
+ damage = 1;
+ } else if (count > 1) {
+ damage = 2;
+ } else if (count > 0) {
+ damage = 3;
+ }
+ }
+ entity.attackEntityFrom(DamageSource.generic, damage);
+ }
+ break;
+ case 12:
+ for (EntityLivingBase entity : getEntities(EntityLivingBase.class, genome, housing)) {
+ if ((entity instanceof EntityPlayer))
+ {
+ EntityPlayer player = (EntityPlayer)entity;
+ player.getFoodStats().addStats(2, 0.2F);
+ }
+ }
+ break;
+ case 13:
+ for (EntityLivingBase entity : getEntities(EntityLivingBase.class, genome, housing)) {
+ if ((entity instanceof EntityPlayer))
+ {
+ EntityPlayer player = (EntityPlayer)entity;
+ if (world.rand.nextInt(4) >= wearsItems(player))
+ {
+ player.getFoodStats().addExhaustion(4.0F);
+ player.addPotionEffect(new PotionEffect(Potion.hunger.id, 100));
+ }
+ }
+ }
+ break;
+ case 14:
+ for (EntityLivingBase entity : getEntities(EntityLivingBase.class, genome, housing)) {
+ if ((entity instanceof EntityPlayer))
+ {
+ EntityPlayer player = (EntityPlayer)entity;
+ if (world.rand.nextInt(4) >= wearsItems(player)) {
+ player.addPotionEffect(new PotionEffect(Potion.blindness.id, 200));
+ }
+ }
+ }
+ break;
+ case 15:
+ for (EntityLivingBase entity : getEntities(EntityLivingBase.class, genome, housing)) {
+ if ((entity instanceof EntityPlayer))
+ {
+ EntityPlayer player = (EntityPlayer)entity;
+ if (world.rand.nextInt(4) >= wearsItems(player)) {
+ player.addPotionEffect(new PotionEffect(Potion.weakness.id, 200));
+ }
+ }
+ }
+ break;
+ case 16:
+ for (EntityLivingBase entity : getEntities(EntityLivingBase.class, genome, housing)) {
+ if ((entity instanceof EntityPlayer))
+ {
+ EntityPlayer player = (EntityPlayer)entity;
+ if (world.rand.nextInt(4) >= wearsItems(player)) {
+ player.addPotionEffect(new PotionEffect(Potion.confusion.id, 200));
+ }
+ }
+ }
+ break;
+ case 1:
+ case 2:
+ case 3:
+ if (world.rand.nextInt(this == FIREWORKS ? 8 : 12) < 1)
+ {
+ FireworkCreator.Firework firework = new FireworkCreator.Firework();
+ switch (1.$SwitchMap$binnie$extrabees$genetics$effect$ExtraBeesEffect[ordinal()])
+ {
+ case 1:
+ firework.setShape(FireworkCreator.Shape.Star);
+ firework.addColor(16768256);
+ for (Birthday birthday : birthdays) {
+ if (birthday.isToday())
+ {
+ firework.addColor(16711680);
+ firework.addColor(65280);
+ firework.addColor(255);
+ firework.setTrail();
+ break;
+ }
+ }
+ break;
+ case 2:
+ break;
+ case 3:
+ firework.setShape(FireworkCreator.Shape.Ball);
+ firework.addColor(genome.getPrimary().getIconColour(0));
+ firework.addColor(genome.getPrimary().getIconColour(0));
+ firework.addColor(genome.getPrimary().getIconColour(1));
+ firework.addColor(genome.getSecondary().getIconColour(0));
+ firework.addColor(genome.getSecondary().getIconColour(0));
+ firework.addColor(genome.getPrimary().getIconColour(1));
+ firework.setTrail();
+ break;
+ }
+ EntityFireworkRocket var11 = new EntityFireworkRocket(world, x1, y1, z1, firework.getFirework());
+ if (world.canBlockSeeTheSky(x1, y1, z1)) {
+ ((WorldServer)world).spawnEntityInWorld(var11);
+ }
+ }
+ break;
+ case 17:
+ List<Entity> entities2 = getEntities(Entity.class, genome, housing);
+ for (Entity entity : entities2)
+ {
+ float entityStrength = 1.0F;
+ if ((entity instanceof EntityPlayer)) {
+ entityStrength *= 100.0F;
+ }
+ double dx = x1 - entity.posX;
+ double dy = y1 - entity.posY;
+ double dz = z1 - entity.posZ;
+ if (dx * dx + dy * dy + dz * dz < 2.0D) {
+ return null;
+ }
+ double strength = 0.5D / (dx * dx + dy * dy + dz * dz) * entityStrength;
+ entity.addVelocity(dx * strength, dy * strength, dz * strength);
+ }
+ break;
+ case 18:
+ List<EntityPlayer> entities3 = getEntities(EntityPlayer.class, genome, housing);
+ for (EntityPlayer entity : entities3)
+ {
+ double dx = x1 - entity.posX;
+ double dy = y1 - entity.posY;
+ double dz = z1 - entity.posZ;
+ if (dx * dx + dy * dy + dz * dz < 2.0D) {
+ return null;
+ }
+ double strength = 0.5D / (dx * dx + dy * dy + dz * dz);
+ entity.addVelocity(-dx * strength, -dy * strength, -dz * strength);
+ }
+ break;
+ case 19:
+ if (world.rand.nextInt(80) > 1) {
+ return null;
+ }
+ List<Entity> entities = getEntities(Entity.class, genome, housing);
+ if (entities.size() == 0) {
+ return null;
+ }
+ Entity entity = (Entity)entities.get(world.rand.nextInt(entities.size()));
+ if (!(entity instanceof EntityLiving)) {
+ return null;
+ }
+ float jumpDist = 5.0F;
+ if (y1 < 4) {
+ y1 = 4;
+ }
+ if ((!world.isAirBlock(x1, y1, z1)) || (!world.isAirBlock(x1, y1 + 1, z1))) {
+ return null;
+ }
+ ((EntityLiving)entity).setPositionAndUpdate(x1, y1, z1);
+
+
+
+
+ ((EntityLiving)entity).addPotionEffect(new PotionEffect(Potion.confusion.id, 160, 10));
+
+
+ break;
+ case 20:
+ if (world.rand.nextInt(120) > 1) {
+ return null;
+ }
+ TileEntity tile = world.getTileEntity(x1, y1, z1);
+ if ((tile instanceof IFluidHandler)) {
+ ((IFluidHandler)tile).fill(ForgeDirection.UP, Binnie.Liquid.getLiquidStack("water", 100), true);
+ }
+ break;
+ case 21:
+ if (world.rand.nextInt(20) > 1) {
+ return null;
+ }
+ if (ExtraBeesFlowers.Sapling.isAcceptedFlower(world, null, x1, y1, z1)) {
+ ItemDye.applyBonemeal(new ItemStack(Blocks.dirt, 1), world, x1, y1, z1, null);
+ }
+ break;
+ case 22:
+ if (world.rand.nextInt(20) > 1) {
+ return null;
+ }
+ if (ExtraBeesFlowers.Fruit.isAcceptedFlower(world, null, x1, y1, z1)) {
+ ItemDye.applyBonemeal(new ItemStack(Blocks.dirt, 1), world, x1, y1, z1, null);
+ }
+ break;
+ case 23:
+ if (world.rand.nextInt(20) > 1) {
+ return null;
+ }
+ if ((world.getBlock(x1, y1, z1) == Blocks.brown_mushroom) || (world.getBlock(x1, y1, z1) == Blocks.red_mushroom)) {
+ ItemDye.applyBonemeal(new ItemStack(Blocks.dirt, 1), world, x1, y1, z1, null);
+ }
+ break;
+ case 24:
+ TileEntity tile2 = world.getTileEntity(x1, y1, z1);
+ if ((tile2 instanceof IEnergyReceiver)) {
+ ((IEnergyReceiver)tile2).receiveEnergy(ForgeDirection.getOrientation(0), 5, true);
+ }
+ break;
+ case 25:
+ break;
+ }
+ return null;
+ }
+
+ protected int[] getModifiedArea(IBeeGenome genome, IBeeHousing housing)
+ {
+ int[] area = genome.getTerritory(); int
+ tmp9_8 = 0; int[] tmp9_7 = area;tmp9_7[tmp9_8] = ((int)(tmp9_7[tmp9_8] * (housing.getTerritoryModifier(genome, 1.0F) * 3.0F))); int
+ tmp29_28 = 1; int[] tmp29_27 = area;tmp29_27[tmp29_28] = ((int)(tmp29_27[tmp29_28] * (housing.getTerritoryModifier(genome, 1.0F) * 3.0F))); int
+ tmp49_48 = 2; int[] tmp49_47 = area;tmp49_47[tmp49_48] = ((int)(tmp49_47[tmp49_48] * (housing.getTerritoryModifier(genome, 1.0F) * 3.0F)));
+ if (area[0] < 1) {
+ area[0] = 1;
+ }
+ if (area[1] < 1) {
+ area[1] = 1;
+ }
+ if (area[2] < 1) {
+ area[2] = 1;
+ }
+ return area;
+ }
+
+ public IEffectData doFX(IBeeGenome genome, IEffectData storedData, IBeeHousing housing)
+ {
+ int[] area = genome.getTerritory(); int
+ tmp11_10 = 0; int[] tmp11_8 = area;tmp11_8[tmp11_10] = ((int)(tmp11_8[tmp11_10] * housing.getTerritoryModifier(genome, 1.0F))); int
+ tmp28_27 = 1; int[] tmp28_25 = area;tmp28_25[tmp28_27] = ((int)(tmp28_25[tmp28_27] * housing.getTerritoryModifier(genome, 1.0F))); int
+ tmp45_44 = 2; int[] tmp45_42 = area;tmp45_42[tmp45_44] = ((int)(tmp45_42[tmp45_44] * housing.getTerritoryModifier(genome, 1.0F)));
+ if (area[0] < 1) {
+ area[0] = 1;
+ }
+ if (area[1] < 1) {
+ area[1] = 1;
+ }
+ if (area[2] < 1) {
+ area[2] = 1;
+ }
+ PluginApiculture.proxy.addBeeHiveFX("particles/swarm_bee", housing.getWorld(), housing.getXCoord(), housing.getYCoord(), housing.getZCoord(), genome.getPrimary().getIconColour(0), area[0], area[1], area[2]);
+
+ return storedData;
+ }
+
+ public String getFX()
+ {
+ return this.fx;
+ }
+
+ public <T extends Entity> List<T> getEntities(Class<T> eClass, IBeeGenome genome, IBeeHousing housing)
+ {
+ int[] area = genome.getTerritory();
+ int[] offset = { -Math.round(area[0] / 2), -Math.round(area[1] / 2), -Math.round(area[2] / 2) };
+
+
+ int[] min = { housing.getXCoord() + offset[0], housing.getYCoord() + offset[1], housing.getZCoord() + offset[2] };
+ int[] max = { housing.getXCoord() + offset[0] + area[0], housing.getYCoord() + offset[1] + area[1], housing.getZCoord() + offset[2] + area[2] };
+
+ AxisAlignedBB box = AxisAlignedBB.getBoundingBox(min[0], min[1], min[2], max[0], max[1], max[2]);
+ return housing.getWorld().getEntitiesWithinAABB(eClass, box);
+ }
+
+ public static boolean wearsHelmet(EntityPlayer player)
+ {
+ ItemStack armorItem = player.inventory.armorInventory[3];
+ return (armorItem != null) && ((armorItem.getItem() instanceof IArmorApiarist));
+ }
+
+ public static boolean wearsChest(EntityPlayer player)
+ {
+ ItemStack armorItem = player.inventory.armorInventory[2];
+ return (armorItem != null) && ((armorItem.getItem() instanceof IArmorApiarist));
+ }
+
+ public static boolean wearsLegs(EntityPlayer player)
+ {
+ ItemStack armorItem = player.inventory.armorInventory[1];
+ return (armorItem != null) && ((armorItem.getItem() instanceof IArmorApiarist));
+ }
+
+ public static boolean wearsBoots(EntityPlayer player)
+ {
+ ItemStack armorItem = player.inventory.armorInventory[0];
+ return (armorItem != null) && ((armorItem.getItem() instanceof IArmorApiarist));
+ }
+
+ public static int wearsItems(EntityPlayer player)
+ {
+ int count = 0;
+ if (wearsHelmet(player)) {
+ count++;
+ }
+ if (wearsChest(player)) {
+ count++;
+ }
+ if (wearsLegs(player)) {
+ count++;
+ }
+ if (wearsBoots(player)) {
+ count++;
+ }
+ return count;
+ }
+
+ public static class Birthday
+ {
+ int day;
+ int month;
+ String name;
+
+ public boolean isToday()
+ {
+ return (Calendar.getInstance().get(5) == this.month) && (Calendar.getInstance().get(2) == this.day);
+ }
+
+ public String getName()
+ {
+ return this.name;
+ }
+
+ private Birthday(int day, int month, String name)
+ {
+ this.day = day;
+ this.month = (month + 1);
+ this.name = name;
+ }
+ }
+
+ static
+ {
+ birthdays = new ArrayList();
+
+
+ birthdays.add(new Birthday(3, 10, "Binnie", null));
+ }
+
+ public String getUnlocalizedName()
+ {
+ return getUID();
+ }
+}
diff --git a/src/Java/binnie/extrabees/genetics/effect/FireworkCreator.java b/src/Java/binnie/extrabees/genetics/effect/FireworkCreator.java
new file mode 100644
index 0000000000..29e5e42ada
--- /dev/null
+++ b/src/Java/binnie/extrabees/genetics/effect/FireworkCreator.java
@@ -0,0 +1,83 @@
+package binnie.extrabees.genetics.effect;
+
+import java.util.ArrayList;
+import net.minecraft.init.Items;
+import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.nbt.NBTTagList;
+
+public class FireworkCreator
+{
+ public static enum Shape
+ {
+ Ball, LargeBall, Star, Creeper, Burst;
+
+ private Shape() {}
+ }
+
+ public static class Firework
+ {
+ boolean flicker = false;
+ boolean trail = false;
+ ArrayList<Integer> colors = new ArrayList();
+ byte shape = 0;
+
+ public void setFlicker()
+ {
+ this.flicker = true;
+ }
+
+ public void setTrail()
+ {
+ this.trail = true;
+ }
+
+ public void setShape(FireworkCreator.Shape shape)
+ {
+ this.shape = ((byte)shape.ordinal());
+ }
+
+ public void addColor(int color)
+ {
+ this.colors.add(Integer.valueOf(color));
+ }
+
+ NBTTagCompound getNBT()
+ {
+ NBTTagCompound nbt = new NBTTagCompound();
+ if (this.flicker) {
+ nbt.setBoolean("Flicker", true);
+ }
+ if (this.trail) {
+ nbt.setBoolean("Trail", true);
+ }
+ if (this.colors.size() == 0) {
+ addColor(16777215);
+ }
+ int[] array = new int[this.colors.size()];
+ for (int i = 0; i < this.colors.size(); i++) {
+ array[i] = ((Integer)this.colors.get(i)).intValue();
+ }
+ nbt.setIntArray("Colors", array);
+ nbt.setByte("Type", this.shape);
+ return nbt;
+ }
+
+ public ItemStack getFirework()
+ {
+ NBTTagCompound var15 = new NBTTagCompound();
+
+ NBTTagCompound var18 = new NBTTagCompound();
+ NBTTagList var25 = new NBTTagList();
+ var25.appendTag(getNBT());
+
+ var18.setTag("Explosions", var25);
+ var18.setByte("Flight", (byte)0);
+ var15.setTag("Fireworks", var18);
+
+ ItemStack item = new ItemStack(Items.fireworks);
+ item.setTagCompound(var15);
+ return item;
+ }
+ }
+}
diff --git a/src/Java/binnie/extrabees/genetics/items/ItemDictionary.java b/src/Java/binnie/extrabees/genetics/items/ItemDictionary.java
new file mode 100644
index 0000000000..82e5754484
--- /dev/null
+++ b/src/Java/binnie/extrabees/genetics/items/ItemDictionary.java
@@ -0,0 +1,73 @@
+package binnie.extrabees.genetics.items;
+
+import binnie.extrabees.ExtraBees;
+import binnie.extrabees.core.ExtraBeeGUID;
+import binnie.extrabees.proxy.ExtraBeesProxy;
+import cpw.mods.fml.relauncher.Side;
+import cpw.mods.fml.relauncher.SideOnly;
+import forestry.api.core.Tabs;
+import java.util.List;
+import net.minecraft.client.renderer.texture.IIconRegister;
+import net.minecraft.creativetab.CreativeTabs;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.item.Item;
+import net.minecraft.item.ItemStack;
+import net.minecraft.util.IIcon;
+import net.minecraft.world.World;
+
+public class ItemDictionary
+ extends Item
+{
+ IIcon iconMaster;
+
+ @SideOnly(Side.CLIENT)
+ public void registerIcons(IIconRegister register)
+ {
+ this.itemIcon = ExtraBees.proxy.getIcon(register, "apiaristDatabase");
+ this.iconMaster = ExtraBees.proxy.getIcon(register, "masterApiaristDatabase");
+ }
+
+ @SideOnly(Side.CLIENT)
+ public IIcon getIconFromDamage(int par1)
+ {
+ return par1 == 0 ? this.itemIcon : this.iconMaster;
+ }
+
+ @SideOnly(Side.CLIENT)
+ public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4)
+ {
+ super.addInformation(par1ItemStack, par2EntityPlayer, par3List, par4);
+ if (par1ItemStack.getItemDamage() > 0) {
+ par3List.add("Flora-in-a-box");
+ }
+ }
+
+ @SideOnly(Side.CLIENT)
+ public void getSubItems(Item par1, CreativeTabs par2CreativeTabs, List par3List)
+ {
+ super.getSubItems(par1, par2CreativeTabs, par3List);
+ par3List.add(new ItemStack(par1, 1, 1));
+ }
+
+ public ItemDictionary()
+ {
+ setCreativeTab(Tabs.tabApiculture);
+ setUnlocalizedName("dictionary");
+ setMaxStackSize(1);
+ }
+
+ public ItemStack onItemRightClick(ItemStack itemstack, World world, EntityPlayer player)
+ {
+ if (itemstack.getItemDamage() == 0) {
+ ExtraBees.proxy.openGui(ExtraBeeGUID.Database, player, (int)player.posX, (int)player.posY, (int)player.posZ);
+ } else {
+ ExtraBees.proxy.openGui(ExtraBeeGUID.DatabaseNEI, player, (int)player.posX, (int)player.posY, (int)player.posZ);
+ }
+ return itemstack;
+ }
+
+ public String getItemStackDisplayName(ItemStack i)
+ {
+ return i.getItemDamage() == 0 ? "Apiarist Database" : "Master Apiarist Database";
+ }
+}
diff --git a/src/Java/binnie/extrabees/genetics/items/ItemPunnettSquare.java b/src/Java/binnie/extrabees/genetics/items/ItemPunnettSquare.java
new file mode 100644
index 0000000000..7534802687
--- /dev/null
+++ b/src/Java/binnie/extrabees/genetics/items/ItemPunnettSquare.java
@@ -0,0 +1,41 @@
+package binnie.extrabees.genetics.items;
+
+import binnie.extrabees.ExtraBees;
+import binnie.extrabees.core.ExtraBeeGUID;
+import binnie.extrabees.proxy.ExtraBeesProxy;
+import cpw.mods.fml.relauncher.Side;
+import cpw.mods.fml.relauncher.SideOnly;
+import net.minecraft.client.renderer.texture.IIconRegister;
+import net.minecraft.creativetab.CreativeTabs;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.item.Item;
+import net.minecraft.item.ItemStack;
+import net.minecraft.world.World;
+
+public class ItemPunnettSquare
+ extends Item
+{
+ @SideOnly(Side.CLIENT)
+ public void registerIcons(IIconRegister register)
+ {
+ this.itemIcon = ExtraBees.proxy.getIcon(register, "");
+ }
+
+ public ItemPunnettSquare()
+ {
+ setCreativeTab(CreativeTabs.tabTools);
+ setMaxStackSize(1);
+ }
+
+ public String getItemStackDisplayName(ItemStack itemstack)
+ {
+ return "Punnett Square";
+ }
+
+ public ItemStack onItemRightClick(ItemStack itemstack, World world, EntityPlayer player)
+ {
+ ExtraBees.proxy.openGui(ExtraBeeGUID.PunnettSquare, player, (int)player.posX, (int)player.posY, (int)player.posZ);
+
+ return itemstack;
+ }
+}
diff --git a/src/Java/binnie/extrabees/gui/WindowAlvearyFrame.java b/src/Java/binnie/extrabees/gui/WindowAlvearyFrame.java
new file mode 100644
index 0000000000..a14d9a0a8f
--- /dev/null
+++ b/src/Java/binnie/extrabees/gui/WindowAlvearyFrame.java
@@ -0,0 +1,53 @@
+package binnie.extrabees.gui;
+
+import binnie.core.AbstractMod;
+import binnie.core.machines.Machine;
+import binnie.core.machines.TileEntityMachine;
+import binnie.craftgui.minecraft.Window;
+import binnie.craftgui.minecraft.control.ControlPlayerInventory;
+import binnie.craftgui.minecraft.control.ControlSlot;
+import binnie.extrabees.ExtraBees;
+import cpw.mods.fml.relauncher.Side;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.inventory.IInventory;
+
+public class WindowAlvearyFrame
+ extends Window
+{
+ Machine machine;
+ ControlPlayerInventory playerInventory;
+
+ public WindowAlvearyFrame(EntityPlayer player, IInventory inventory, Side side)
+ {
+ super(176.0F, 144.0F, player, inventory, side);
+ this.machine = ((TileEntityMachine)inventory).getMachine();
+ }
+
+ public static Window create(EntityPlayer player, IInventory inventory, Side side)
+ {
+ if ((player == null) || (inventory == null)) {
+ return null;
+ }
+ return new WindowAlvearyFrame(player, inventory, side);
+ }
+
+ public void initialiseClient()
+ {
+ setTitle("Frame Housing");
+
+ this.playerInventory = new ControlPlayerInventory(this);
+
+ ControlSlot slot = new ControlSlot(this, 79.0F, 30.0F);
+ slot.assign(0);
+ }
+
+ public AbstractMod getMod()
+ {
+ return ExtraBees.instance;
+ }
+
+ public String getName()
+ {
+ return "AlvearyFrame";
+ }
+}
diff --git a/src/Java/binnie/extrabees/gui/WindowAlvearyHatchery.java b/src/Java/binnie/extrabees/gui/WindowAlvearyHatchery.java
new file mode 100644
index 0000000000..081425acf5
--- /dev/null
+++ b/src/Java/binnie/extrabees/gui/WindowAlvearyHatchery.java
@@ -0,0 +1,54 @@
+package binnie.extrabees.gui;
+
+import binnie.core.AbstractMod;
+import binnie.core.machines.Machine;
+import binnie.core.machines.TileEntityMachine;
+import binnie.craftgui.minecraft.Window;
+import binnie.craftgui.minecraft.control.ControlPlayerInventory;
+import binnie.craftgui.minecraft.control.ControlSlotArray;
+import binnie.extrabees.ExtraBees;
+import binnie.extrabees.apiary.machine.AlvearyHatchery;
+import cpw.mods.fml.relauncher.Side;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.inventory.IInventory;
+
+public class WindowAlvearyHatchery
+ extends Window
+{
+ Machine machine;
+ ControlPlayerInventory playerInventory;
+
+ public WindowAlvearyHatchery(EntityPlayer player, IInventory inventory, Side side)
+ {
+ super(176.0F, 144.0F, player, inventory, side);
+ this.machine = ((TileEntityMachine)inventory).getMachine();
+ }
+
+ public static Window create(EntityPlayer player, IInventory inventory, Side side)
+ {
+ if ((player == null) || (inventory == null)) {
+ return null;
+ }
+ return new WindowAlvearyHatchery(player, inventory, side);
+ }
+
+ public void initialiseClient()
+ {
+ setTitle("Hatchery");
+
+ this.playerInventory = new ControlPlayerInventory(this);
+
+ ControlSlotArray slot = new ControlSlotArray(this, 43, 30, 5, 1);
+ slot.create(AlvearyHatchery.slotLarvae);
+ }
+
+ public AbstractMod getMod()
+ {
+ return ExtraBees.instance;
+ }
+
+ public String getName()
+ {
+ return "AlvearyHatchery";
+ }
+}
diff --git a/src/Java/binnie/extrabees/gui/WindowAlvearyIndustrialFrame.java b/src/Java/binnie/extrabees/gui/WindowAlvearyIndustrialFrame.java
new file mode 100644
index 0000000000..07b47f03c9
--- /dev/null
+++ b/src/Java/binnie/extrabees/gui/WindowAlvearyIndustrialFrame.java
@@ -0,0 +1,53 @@
+package binnie.extrabees.gui;
+
+import binnie.core.AbstractMod;
+import binnie.core.machines.Machine;
+import binnie.core.machines.TileEntityMachine;
+import binnie.craftgui.minecraft.Window;
+import binnie.craftgui.minecraft.control.ControlPlayerInventory;
+import binnie.craftgui.minecraft.control.ControlSlot;
+import binnie.extrabees.ExtraBees;
+import cpw.mods.fml.relauncher.Side;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.inventory.IInventory;
+
+public class WindowAlvearyIndustrialFrame
+ extends Window
+{
+ Machine machine;
+ ControlPlayerInventory playerInventory;
+
+ public WindowAlvearyIndustrialFrame(EntityPlayer player, IInventory inventory, Side side)
+ {
+ super(176.0F, 144.0F, player, inventory, side);
+ this.machine = ((TileEntityMachine)inventory).getMachine();
+ }
+
+ public static Window create(EntityPlayer player, IInventory inventory, Side side)
+ {
+ if ((player == null) || (inventory == null)) {
+ return null;
+ }
+ return new WindowAlvearyIndustrialFrame(player, inventory, side);
+ }
+
+ public void initialiseClient()
+ {
+ setTitle("Industrial Frame Housing");
+
+ this.playerInventory = new ControlPlayerInventory(this);
+
+ ControlSlot slot = new ControlSlot(this, 79.0F, 30.0F);
+ slot.assign(0);
+ }
+
+ public AbstractMod getMod()
+ {
+ return ExtraBees.instance;
+ }
+
+ public String getName()
+ {
+ return "AlvearyIndustrialFrame";
+ }
+}
diff --git a/src/Java/binnie/extrabees/gui/WindowAlvearyMutator.java b/src/Java/binnie/extrabees/gui/WindowAlvearyMutator.java
new file mode 100644
index 0000000000..f2cf458145
--- /dev/null
+++ b/src/Java/binnie/extrabees/gui/WindowAlvearyMutator.java
@@ -0,0 +1,78 @@
+package binnie.extrabees.gui;
+
+import binnie.core.AbstractMod;
+import binnie.core.machines.Machine;
+import binnie.core.machines.TileEntityMachine;
+import binnie.craftgui.controls.ControlText;
+import binnie.craftgui.core.geometry.IArea;
+import binnie.craftgui.core.geometry.TextJustification;
+import binnie.craftgui.minecraft.Window;
+import binnie.craftgui.minecraft.control.ControlItemDisplay;
+import binnie.craftgui.minecraft.control.ControlPlayerInventory;
+import binnie.craftgui.minecraft.control.ControlSlot;
+import binnie.extrabees.ExtraBees;
+import binnie.extrabees.apiary.machine.AlvearyMutator;
+import cpw.mods.fml.relauncher.Side;
+import java.util.Collection;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.inventory.IInventory;
+import net.minecraft.item.ItemStack;
+
+public class WindowAlvearyMutator
+ extends Window
+{
+ Machine machine;
+ ControlPlayerInventory playerInventory;
+
+ public WindowAlvearyMutator(EntityPlayer player, IInventory inventory, Side side)
+ {
+ super(176.0F, 176.0F, player, inventory, side);
+ this.machine = ((TileEntityMachine)inventory).getMachine();
+ }
+
+ public static Window create(EntityPlayer player, IInventory inventory, Side side)
+ {
+ if ((player == null) || (inventory == null)) {
+ return null;
+ }
+ return new WindowAlvearyMutator(player, inventory, side);
+ }
+
+ public void initialiseClient()
+ {
+ setTitle("Mutator");
+
+ this.playerInventory = new ControlPlayerInventory(this);
+
+ ControlSlot slot = new ControlSlot(this, 79.0F, 30.0F);
+ slot.assign(0);
+
+ new ControlText(this, new IArea(0.0F, 52.0F, w(), 16.0F), "Possible Mutagens:", TextJustification.MiddleCenter).setColour(5592405);
+
+ int size = AlvearyMutator.getMutagens().size();
+
+ int w = size * 18;
+ float x;
+ if (size > 0)
+ {
+ x = (w() - w) / 2.0F;
+ for (ItemStack stack : AlvearyMutator.getMutagens())
+ {
+ ControlItemDisplay display = new ControlItemDisplay(this, x, 66.0F);
+ display.setItemStack(stack);
+ display.hastooltip = true;
+ x += 18.0F;
+ }
+ }
+ }
+
+ public AbstractMod getMod()
+ {
+ return ExtraBees.instance;
+ }
+
+ public String getName()
+ {
+ return "AlvearyMutator";
+ }
+}
diff --git a/src/Java/binnie/extrabees/gui/WindowAlvearyStimulator.java b/src/Java/binnie/extrabees/gui/WindowAlvearyStimulator.java
new file mode 100644
index 0000000000..2e3b9736a5
--- /dev/null
+++ b/src/Java/binnie/extrabees/gui/WindowAlvearyStimulator.java
@@ -0,0 +1,56 @@
+package binnie.extrabees.gui;
+
+import binnie.core.AbstractMod;
+import binnie.core.machines.Machine;
+import binnie.core.machines.TileEntityMachine;
+import binnie.craftgui.core.geometry.Position;
+import binnie.craftgui.minecraft.Window;
+import binnie.craftgui.minecraft.control.ControlEnergyBar;
+import binnie.craftgui.minecraft.control.ControlPlayerInventory;
+import binnie.craftgui.minecraft.control.ControlSlot;
+import binnie.extrabees.ExtraBees;
+import binnie.extrabees.apiary.machine.AlvearyStimulator;
+import cpw.mods.fml.relauncher.Side;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.inventory.IInventory;
+
+public class WindowAlvearyStimulator
+ extends Window
+{
+ Machine machine;
+ ControlPlayerInventory playerInventory;
+
+ public WindowAlvearyStimulator(EntityPlayer player, IInventory inventory, Side side)
+ {
+ super(176.0F, 144.0F, player, inventory, side);
+ this.machine = ((TileEntityMachine)inventory).getMachine();
+ }
+
+ public static Window create(EntityPlayer player, IInventory inventory, Side side)
+ {
+ if ((player == null) || (inventory == null)) {
+ return null;
+ }
+ return new WindowAlvearyStimulator(player, inventory, side);
+ }
+
+ public void initialiseClient()
+ {
+ setTitle("Stimulator");
+ new ControlEnergyBar(this, 75, 29, 60, 16, Position.Left);
+ ControlSlot slot = new ControlSlot(this, 41.0F, 28.0F);
+ slot.assign(AlvearyStimulator.slotCircuit);
+
+ this.playerInventory = new ControlPlayerInventory(this);
+ }
+
+ public AbstractMod getMod()
+ {
+ return ExtraBees.instance;
+ }
+
+ public String getName()
+ {
+ return "AlvearyStimulator";
+ }
+}
diff --git a/src/Java/binnie/extrabees/gui/database/ControlBiomes.java b/src/Java/binnie/extrabees/gui/database/ControlBiomes.java
new file mode 100644
index 0000000000..1299df72ca
--- /dev/null
+++ b/src/Java/binnie/extrabees/gui/database/ControlBiomes.java
@@ -0,0 +1,75 @@
+package binnie.extrabees.gui.database;
+
+import binnie.Binnie;
+import binnie.core.BinnieCore;
+import binnie.core.genetics.ManagerGenetics;
+import binnie.core.proxy.BinnieProxy;
+import binnie.craftgui.controls.core.Control;
+import binnie.craftgui.core.Attribute;
+import binnie.craftgui.core.CraftGUI;
+import binnie.craftgui.core.ITooltip;
+import binnie.craftgui.core.IWidget;
+import binnie.craftgui.core.Tooltip;
+import binnie.craftgui.core.geometry.IArea;
+import binnie.craftgui.core.geometry.IPoint;
+import binnie.craftgui.core.renderer.Renderer;
+import binnie.craftgui.resource.minecraft.CraftGUITexture;
+import forestry.api.apiculture.IAlleleBeeSpecies;
+import forestry.api.apiculture.IBee;
+import forestry.api.apiculture.IBeeGenome;
+import forestry.api.apiculture.IBeeRoot;
+import java.util.ArrayList;
+import java.util.List;
+import net.minecraft.world.biome.BiomeGenBase;
+
+public class ControlBiomes
+ extends Control
+ implements ITooltip
+{
+ public ControlBiomes(IWidget parent, int x, int y, int width, int height)
+ {
+ super(parent, x, y, width * 16, height * 16);
+ addAttribute(Attribute.MouseOver);
+ }
+
+ List<Integer> tolerated = new ArrayList();
+
+ public void getTooltip(Tooltip list)
+ {
+ if (this.tolerated.isEmpty()) {
+ return;
+ }
+ int x = (int)(getRelativeMousePosition().x() / 16.0F);
+ int y = (int)(getRelativeMousePosition().y() / 16.0F);
+
+ int i = x + y * 8;
+ if (i < this.tolerated.size()) {
+ list.add(BiomeGenBase.getBiome(((Integer)this.tolerated.get(i)).intValue()).biomeName);
+ }
+ }
+
+ public void onRenderForeground()
+ {
+ for (int i = 0; i < this.tolerated.size(); i++)
+ {
+ int x = i % 8 * 16;
+ int y = i / 8 * 16;
+ if (BiomeGenBase.getBiome(i) != null) {
+ CraftGUI.Render.colour(BiomeGenBase.getBiome(i).color);
+ }
+ CraftGUI.Render.texture(CraftGUITexture.Button, new IArea(x, y, 16.0F, 16.0F));
+ }
+ }
+
+ public void setSpecies(IAlleleBeeSpecies species)
+ {
+ this.tolerated.clear();
+ if (species == null) {
+ return;
+ }
+ IBeeGenome genome = Binnie.Genetics.getBeeRoot().templateAsGenome(Binnie.Genetics.getBeeRoot().getTemplate(species.getUID()));
+
+
+ IBee bee = Binnie.Genetics.getBeeRoot().getBee(BinnieCore.proxy.getWorld(), genome);
+ }
+}
diff --git a/src/Java/binnie/extrabees/gui/database/ControlClimateBar.java b/src/Java/binnie/extrabees/gui/database/ControlClimateBar.java
new file mode 100644
index 0000000000..688bbd40c5
--- /dev/null
+++ b/src/Java/binnie/extrabees/gui/database/ControlClimateBar.java
@@ -0,0 +1,153 @@
+package binnie.extrabees.gui.database;
+
+import binnie.Binnie;
+import binnie.core.genetics.ManagerGenetics;
+import binnie.craftgui.controls.core.Control;
+import binnie.craftgui.core.Attribute;
+import binnie.craftgui.core.CraftGUI;
+import binnie.craftgui.core.ITooltip;
+import binnie.craftgui.core.IWidget;
+import binnie.craftgui.core.Tooltip;
+import binnie.craftgui.core.geometry.IArea;
+import binnie.craftgui.core.geometry.IPoint;
+import binnie.craftgui.core.renderer.Renderer;
+import binnie.craftgui.resource.minecraft.CraftGUITexture;
+import forestry.api.apiculture.IAlleleBeeSpecies;
+import forestry.api.apiculture.IBeeGenome;
+import forestry.api.apiculture.IBeeRoot;
+import forestry.api.core.EnumHumidity;
+import forestry.api.core.EnumTemperature;
+import forestry.api.genetics.EnumTolerance;
+import java.util.ArrayList;
+import java.util.List;
+
+public class ControlClimateBar
+ extends Control
+ implements ITooltip
+{
+ public ControlClimateBar(IWidget parent, int x, int y, int width, int height)
+ {
+ super(parent, x, y, width, height);
+ addAttribute(Attribute.MouseOver);
+ }
+
+ public ControlClimateBar(IWidget parent, int x, int y, int width, int height, boolean humidity)
+ {
+ super(parent, x, y, width, height);
+ addAttribute(Attribute.MouseOver);
+ this.isHumidity = true;
+ }
+
+ boolean isHumidity = false;
+ List<Integer> tolerated = new ArrayList();
+
+ public void getTooltip(Tooltip list)
+ {
+ if (this.tolerated.isEmpty()) {
+ return;
+ }
+ int types = this.isHumidity ? 3 : 6;
+
+ int type = (int)((int)(getRelativeMousePosition().x() - 1.0F) / ((getSize().x() - 2.0F) / types));
+ if (!this.tolerated.contains(Integer.valueOf(type))) {
+ return;
+ }
+ if (type < types) {
+ if (this.isHumidity) {
+ list.add(EnumHumidity.values()[type].name);
+ } else {
+ list.add(EnumTemperature.values()[(type + 1)].name);
+ }
+ }
+ }
+
+ int[] tempColours = { 65531, 7912447, 5242672, 16776960, 16753152, 16711680 };
+ int[] humidColours = { 16770979, 1769216, 3177727 };
+
+ public void onRenderBackground()
+ {
+ CraftGUI.Render.texture(CraftGUITexture.EnergyBarBack, getArea());
+
+ int types = this.isHumidity ? 3 : 6;
+ int w = (int)((getSize().x() - 2.0F) / types);
+ for (int i = 0; i < types; i++)
+ {
+ int x = i * w;
+ if (this.tolerated.contains(Integer.valueOf(i)))
+ {
+ int colour = 0;
+ if (this.isHumidity) {
+ colour = this.humidColours[i];
+ } else {
+ colour = this.tempColours[i];
+ }
+ CraftGUI.Render.solid(new IArea(x + 1, 1.0F, w, getSize().y() - 2.0F), colour);
+ }
+ }
+ CraftGUI.Render.texture(CraftGUITexture.EnergyBarGlass, getArea());
+ }
+
+ public void setSpecies(IAlleleBeeSpecies species)
+ {
+ this.tolerated.clear();
+ if (species == null) {
+ return;
+ }
+ EnumTolerance tolerance;
+ int main;
+ EnumTolerance tolerance;
+ if (!this.isHumidity)
+ {
+ int main = species.getTemperature().ordinal() - 1;
+ IBeeGenome genome = Binnie.Genetics.getBeeRoot().templateAsGenome(Binnie.Genetics.getBeeRoot().getTemplate(species.getUID()));
+
+
+ tolerance = genome.getToleranceTemp();
+ }
+ else
+ {
+ main = species.getHumidity().ordinal();
+ IBeeGenome genome = Binnie.Genetics.getBeeRoot().templateAsGenome(Binnie.Genetics.getBeeRoot().getTemplate(species.getUID()));
+
+
+ tolerance = genome.getToleranceHumid();
+ }
+ this.tolerated.add(Integer.valueOf(main));
+ switch (1.$SwitchMap$forestry$api$genetics$EnumTolerance[tolerance.ordinal()])
+ {
+ case 1:
+ case 2:
+ this.tolerated.add(Integer.valueOf(main + 5));
+ case 3:
+ case 4:
+ this.tolerated.add(Integer.valueOf(main + 4));
+ case 5:
+ case 6:
+ this.tolerated.add(Integer.valueOf(main + 3));
+ case 7:
+ case 8:
+ this.tolerated.add(Integer.valueOf(main + 2));
+ case 9:
+ case 10:
+ this.tolerated.add(Integer.valueOf(main + 1));
+ }
+ switch (1.$SwitchMap$forestry$api$genetics$EnumTolerance[tolerance.ordinal()])
+ {
+ case 1:
+ case 11:
+ this.tolerated.add(Integer.valueOf(main - 5));
+ case 3:
+ case 12:
+ this.tolerated.add(Integer.valueOf(main - 4));
+ case 5:
+ case 13:
+ this.tolerated.add(Integer.valueOf(main - 3));
+ case 7:
+ case 14:
+ this.tolerated.add(Integer.valueOf(main - 2));
+ case 9:
+ case 15:
+ this.tolerated.add(Integer.valueOf(main - 1));
+ }
+ }
+}
diff --git a/src/Java/binnie/extrabees/gui/database/ControlProductsBox.java b/src/Java/binnie/extrabees/gui/database/ControlProductsBox.java
new file mode 100644
index 0000000000..f6103f9bba
--- /dev/null
+++ b/src/Java/binnie/extrabees/gui/database/ControlProductsBox.java
@@ -0,0 +1,92 @@
+package binnie.extrabees.gui.database;
+
+import binnie.Binnie;
+import binnie.core.BinnieCore;
+import binnie.core.genetics.ManagerGenetics;
+import binnie.core.proxy.BinnieProxy;
+import binnie.craftgui.controls.listbox.ControlList;
+import binnie.craftgui.controls.listbox.ControlListBox;
+import binnie.craftgui.core.IWidget;
+import forestry.api.apiculture.IAlleleBeeSpecies;
+import forestry.api.apiculture.IBeeGenome;
+import forestry.api.apiculture.IBeeRoot;
+import forestry.api.apiculture.IBeekeepingMode;
+import forestry.api.genetics.IAllele;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+import net.minecraft.item.ItemStack;
+
+public class ControlProductsBox
+ extends ControlListBox<Product>
+{
+ private int index;
+ private Type type;
+
+ public IWidget createOption(Product value, int y)
+ {
+ return new ControlProductsItem((ControlList)getContent(), value, y);
+ }
+
+ static enum Type
+ {
+ Products, Specialties;
+
+ private Type() {}
+ }
+
+ class Product
+ {
+ ItemStack item;
+ float chance;
+
+ public Product(ItemStack item, float chance)
+ {
+ this.item = item;
+ this.chance = chance;
+ }
+ }
+
+ public ControlProductsBox(IWidget parent, int x, int y, int width, int height, Type type)
+ {
+ super(parent, x, y, width, height, 12.0F);
+ this.type = type;
+ }
+
+ IAlleleBeeSpecies species = null;
+
+ public void setSpecies(IAlleleBeeSpecies species)
+ {
+ if (species != this.species)
+ {
+ this.species = species;
+ if (species != null)
+ {
+ IAllele[] template = Binnie.Genetics.getBeeRoot().getTemplate(species.getUID());
+ if (template == null) {
+ return;
+ }
+ IBeeGenome genome = Binnie.Genetics.getBeeRoot().templateAsGenome(template);
+
+ float speed = genome.getSpeed();
+
+ float modeSpeed = Binnie.Genetics.getBeeRoot().getBeekeepingMode(BinnieCore.proxy.getWorld()).getProductionModifier(genome, 1.0F);
+
+
+
+ List<Product> strings = new ArrayList();
+ if (this.type == Type.Products) {
+ for (Map.Entry<ItemStack, Integer> entry : species.getProducts().entrySet()) {
+ strings.add(new Product((ItemStack)entry.getKey(), speed * modeSpeed * ((Integer)entry.getValue()).intValue()));
+ }
+ } else {
+ for (Map.Entry<ItemStack, Integer> entry : species.getSpecialty().entrySet()) {
+ strings.add(new Product((ItemStack)entry.getKey(), speed * modeSpeed * ((Integer)entry.getValue()).intValue()));
+ }
+ }
+ setOptions(strings);
+ }
+ }
+ }
+}
diff --git a/src/Java/binnie/extrabees/gui/database/ControlProductsItem.java b/src/Java/binnie/extrabees/gui/database/ControlProductsItem.java
new file mode 100644
index 0000000000..4f449e3558
--- /dev/null
+++ b/src/Java/binnie/extrabees/gui/database/ControlProductsItem.java
@@ -0,0 +1,44 @@
+package binnie.extrabees.gui.database;
+
+import binnie.craftgui.controls.ControlText;
+import binnie.craftgui.controls.ControlTextCentered;
+import binnie.craftgui.controls.listbox.ControlList;
+import binnie.craftgui.controls.listbox.ControlOption;
+import binnie.craftgui.core.geometry.CraftGUIUtil;
+import binnie.craftgui.core.geometry.IPoint;
+import binnie.craftgui.minecraft.control.ControlItemDisplay;
+import java.text.DecimalFormat;
+
+public class ControlProductsItem
+ extends ControlOption<ControlProductsBox.Product>
+{
+ ControlItemDisplay item;
+
+ public ControlProductsItem(ControlList<ControlProductsBox.Product> controlList, ControlProductsBox.Product value, int y)
+ {
+ super(controlList, value, y);
+ this.item = new ControlItemDisplay(this, 4.0F, 4.0F);
+ this.item.setTooltip();
+
+ ControlText textWidget = new ControlTextCentered(this, 2.0F, "");
+ CraftGUIUtil.moveWidget(textWidget, new IPoint(12.0F, 0.0F));
+ if (value != null)
+ {
+ this.item.setItemStack(value.item);
+ float time = (int)(55000.0D / value.chance);
+
+ float seconds = time / 20.0F;
+ float minutes = seconds / 60.0F;
+ float hours = minutes / 60.0F;
+
+ DecimalFormat df = new DecimalFormat("#.0");
+ if (hours > 1.0F) {
+ textWidget.setValue("Every " + df.format(hours) + " hours");
+ } else if (minutes > 1.0F) {
+ textWidget.setValue("Every " + df.format(minutes) + " min.");
+ } else {
+ textWidget.setValue("Every " + df.format(seconds) + " sec.");
+ }
+ }
+ }
+}
diff --git a/src/Java/binnie/extrabees/gui/database/PageSpeciesClimate.java b/src/Java/binnie/extrabees/gui/database/PageSpeciesClimate.java
new file mode 100644
index 0000000000..3b93ff1b3c
--- /dev/null
+++ b/src/Java/binnie/extrabees/gui/database/PageSpeciesClimate.java
@@ -0,0 +1,36 @@
+package binnie.extrabees.gui.database;
+
+import binnie.craftgui.controls.ControlTextCentered;
+import binnie.craftgui.core.IWidget;
+import binnie.craftgui.mod.database.DatabaseTab;
+import binnie.craftgui.mod.database.PageSpecies;
+import forestry.api.apiculture.IAlleleBeeSpecies;
+import forestry.api.genetics.IAlleleSpecies;
+
+public class PageSpeciesClimate
+ extends PageSpecies
+{
+ ControlClimateBar tempBar;
+ ControlClimateBar humidBar;
+ ControlBiomes biomes;
+
+ public PageSpeciesClimate(IWidget parent, DatabaseTab tab)
+ {
+ super(parent, tab);
+
+ new ControlTextCentered(this, 8.0F, "Climate");
+
+ this.tempBar = new ControlClimateBar(this, 8, 24, 128, 12);
+ this.humidBar = new ControlClimateBar(this, 8, 42, 128, 12, true);
+ new ControlTextCentered(this, 70.0F, "Biomes");
+
+ this.biomes = new ControlBiomes(this, 8, 90, 8, 4);
+ }
+
+ public void onValueChanged(IAlleleSpecies species)
+ {
+ this.tempBar.setSpecies((IAlleleBeeSpecies)species);
+ this.humidBar.setSpecies((IAlleleBeeSpecies)species);
+ this.biomes.setSpecies((IAlleleBeeSpecies)species);
+ }
+}
diff --git a/src/Java/binnie/extrabees/gui/database/PageSpeciesGenome.java b/src/Java/binnie/extrabees/gui/database/PageSpeciesGenome.java
new file mode 100644
index 0000000000..a69e528d51
--- /dev/null
+++ b/src/Java/binnie/extrabees/gui/database/PageSpeciesGenome.java
@@ -0,0 +1,206 @@
+package binnie.extrabees.gui.database;
+
+import binnie.Binnie;
+import binnie.core.BinnieCore;
+import binnie.core.genetics.ManagerGenetics;
+import binnie.core.proxy.BinnieProxy;
+import binnie.craftgui.controls.ControlText;
+import binnie.craftgui.controls.ControlTextCentered;
+import binnie.craftgui.core.IWidget;
+import binnie.craftgui.core.geometry.IArea;
+import binnie.craftgui.core.geometry.TextJustification;
+import binnie.craftgui.mod.database.DatabaseTab;
+import binnie.craftgui.mod.database.PageSpecies;
+import forestry.api.apiculture.IAlleleBeeEffect;
+import forestry.api.apiculture.IAlleleBeeSpecies;
+import forestry.api.apiculture.IBee;
+import forestry.api.apiculture.IBeeGenome;
+import forestry.api.apiculture.IBeeRoot;
+import forestry.api.genetics.IAllele;
+import forestry.api.genetics.IAlleleSpecies;
+import forestry.api.genetics.IFlowerProvider;
+
+public class PageSpeciesGenome
+ extends PageSpecies
+{
+ ControlText pageSpeciesGenome_Title;
+ ControlText pageSpeciesGenome_SpeedText;
+ ControlText pageSpeciesGenome_LifespanText;
+ ControlText pageSpeciesGenome_FertilityText;
+ ControlText pageSpeciesGenome_FloweringText;
+ ControlText pageSpeciesGenome_TerritoryText;
+ ControlText pageSpeciesGenome_NocturnalText;
+ ControlText pageSpeciesGenome_CaveDwellingText;
+ ControlText pageSpeciesGenome_TolerantFlyerText;
+ ControlText pageSpeciesGenome_FlowerText;
+ ControlText pageSpeciesGenome_EffectText;
+
+ public PageSpeciesGenome(IWidget parent, DatabaseTab tab)
+ {
+ super(parent, tab);
+
+ this.pageSpeciesGenome_Title = new ControlTextCentered(this, 8.0F, "Genome");
+
+ new ControlText(this, new IArea(0.0F, 32.0F, 68.0F, 30.0F), "Speed:", TextJustification.TopRight);
+ new ControlText(this, new IArea(0.0F, 44.0F, 68.0F, 30.0F), "Lifespan:", TextJustification.TopRight);
+ new ControlText(this, new IArea(0.0F, 56.0F, 68.0F, 30.0F), "Fertility:", TextJustification.TopRight);
+ new ControlText(this, new IArea(0.0F, 68.0F, 68.0F, 30.0F), "Flowering:", TextJustification.TopRight);
+ new ControlText(this, new IArea(0.0F, 80.0F, 68.0F, 30.0F), "Territory:", TextJustification.TopRight);
+ new ControlText(this, new IArea(0.0F, 97.0F, 68.0F, 30.0F), "Behavior:", TextJustification.TopRight);
+ new ControlText(this, new IArea(0.0F, 109.0F, 68.0F, 30.0F), "Sunlight:", TextJustification.TopRight);
+ new ControlText(this, new IArea(0.0F, 121.0F, 68.0F, 30.0F), "Rain:", TextJustification.TopRight);
+ new ControlText(this, new IArea(0.0F, 138.0F, 68.0F, 30.0F), "Flower:", TextJustification.TopRight);
+ new ControlText(this, new IArea(0.0F, 155.0F, 68.0F, 30.0F), "Effect:", TextJustification.TopRight);
+
+ int x = 72;
+
+ this.pageSpeciesGenome_SpeedText = new ControlText(this, new IArea(x, 32.0F, 72.0F, 30.0F), "", TextJustification.TopLeft);
+
+ this.pageSpeciesGenome_LifespanText = new ControlText(this, new IArea(x, 44.0F, 72.0F, 30.0F), "", TextJustification.TopLeft);
+
+ this.pageSpeciesGenome_FertilityText = new ControlText(this, new IArea(x, 56.0F, 72.0F, 30.0F), "", TextJustification.TopLeft);
+
+ this.pageSpeciesGenome_FloweringText = new ControlText(this, new IArea(x, 68.0F, 72.0F, 30.0F), "", TextJustification.TopLeft);
+
+ this.pageSpeciesGenome_TerritoryText = new ControlText(this, new IArea(x, 80.0F, 72.0F, 30.0F), "", TextJustification.TopLeft);
+
+ this.pageSpeciesGenome_NocturnalText = new ControlText(this, new IArea(x, 97.0F, 72.0F, 30.0F), "", TextJustification.TopLeft);
+
+ this.pageSpeciesGenome_CaveDwellingText = new ControlText(this, new IArea(x, 109.0F, 72.0F, 30.0F), "", TextJustification.TopLeft);
+
+ this.pageSpeciesGenome_TolerantFlyerText = new ControlText(this, new IArea(x, 121.0F, 72.0F, 30.0F), "", TextJustification.TopLeft);
+
+ this.pageSpeciesGenome_FlowerText = new ControlText(this, new IArea(x, 138.0F, 72.0F, 30.0F), "", TextJustification.TopLeft);
+
+ this.pageSpeciesGenome_EffectText = new ControlText(this, new IArea(x, 155.0F, 72.0F, 30.0F), "", TextJustification.TopLeft);
+ }
+
+ public void onValueChanged(IAlleleSpecies species)
+ {
+ IAllele[] template = Binnie.Genetics.getBeeRoot().getTemplate(species.getUID());
+ if (template != null)
+ {
+ IBeeGenome genome = Binnie.Genetics.getBeeRoot().templateAsGenome(template);
+
+ IBee bee = Binnie.Genetics.getBeeRoot().getBee(BinnieCore.proxy.getWorld(), genome);
+
+
+ this.pageSpeciesGenome_SpeedText.setValue(rateSpeed(genome.getSpeed()));
+ this.pageSpeciesGenome_LifespanText.setValue(rateLifespan(genome.getLifespan()));
+
+ this.pageSpeciesGenome_FertilityText.setValue(genome.getFertility() + " children");
+
+ this.pageSpeciesGenome_FloweringText.setValue(rateFlowering(genome.getFlowering()));
+ int[] area = genome.getTerritory();
+ this.pageSpeciesGenome_TerritoryText.setValue(area[0] + "x" + area[1] + "x" + area[2]);
+
+
+ String behavior = "Daytime";
+ if (genome.getPrimary().isNocturnal()) {
+ behavior = "Nighttime";
+ }
+ if (genome.getNocturnal()) {
+ behavior = "All Day";
+ }
+ this.pageSpeciesGenome_NocturnalText.setValue(behavior);
+ if (genome.getCaveDwelling()) {
+ this.pageSpeciesGenome_CaveDwellingText.setValue("Not Needed");
+ } else {
+ this.pageSpeciesGenome_CaveDwellingText.setValue("Required");
+ }
+ this.pageSpeciesGenome_TolerantFlyerText.setValue(tolerated(genome.getTolerantFlyer()));
+ if (genome.getFlowerProvider() != null) {
+ this.pageSpeciesGenome_FlowerText.setValue(genome.getFlowerProvider().getDescription());
+ } else {
+ this.pageSpeciesGenome_FlowerText.setValue("None");
+ }
+ this.pageSpeciesGenome_EffectText.setValue(genome.getEffect().getName());
+ }
+ }
+
+ public static String rateFlowering(int flowering)
+ {
+ if (flowering >= 99) {
+ return "Maximum";
+ }
+ if (flowering >= 35) {
+ return "Fastest";
+ }
+ if (flowering >= 30) {
+ return "Faster";
+ }
+ if (flowering >= 25) {
+ return "Fast";
+ }
+ if (flowering >= 20) {
+ return "Normal";
+ }
+ if (flowering >= 15) {
+ return "Slow";
+ }
+ if (flowering >= 10) {
+ return "Slower";
+ }
+ return "Slowest";
+ }
+
+ public static String rateSpeed(float speed)
+ {
+ if (speed >= 1.7F) {
+ return "Fastest";
+ }
+ if (speed >= 1.4F) {
+ return "Faster";
+ }
+ if (speed >= 1.2F) {
+ return "Fast";
+ }
+ if (speed >= 1.0F) {
+ return "Normal";
+ }
+ if (speed >= 0.8F) {
+ return "Slow";
+ }
+ if (speed >= 0.6F) {
+ return "Slower";
+ }
+ return "Slowest";
+ }
+
+ public static String rateLifespan(int life)
+ {
+ if (life >= 70) {
+ return "Longest";
+ }
+ if (life >= 60) {
+ return "Longer";
+ }
+ if (life >= 50) {
+ return "Long";
+ }
+ if (life >= 45) {
+ return "Elongated";
+ }
+ if (life >= 40) {
+ return "Normal";
+ }
+ if (life >= 35) {
+ return "Shortened";
+ }
+ if (life >= 30) {
+ return "Short";
+ }
+ if (life >= 20) {
+ return "Shorter";
+ }
+ return "Shortest";
+ }
+
+ public static String tolerated(boolean t)
+ {
+ if (t) {
+ return "Tolerated";
+ }
+ return "Not Tolerated";
+ }
+}
diff --git a/src/Java/binnie/extrabees/gui/database/PageSpeciesProducts.java b/src/Java/binnie/extrabees/gui/database/PageSpeciesProducts.java
new file mode 100644
index 0000000000..f8af0ef3bd
--- /dev/null
+++ b/src/Java/binnie/extrabees/gui/database/PageSpeciesProducts.java
@@ -0,0 +1,38 @@
+package binnie.extrabees.gui.database;
+
+import binnie.craftgui.controls.ControlText;
+import binnie.craftgui.controls.ControlTextCentered;
+import binnie.craftgui.core.IWidget;
+import binnie.craftgui.mod.database.DatabaseTab;
+import binnie.craftgui.mod.database.PageSpecies;
+import forestry.api.apiculture.IAlleleBeeSpecies;
+import forestry.api.genetics.IAlleleSpecies;
+
+public class PageSpeciesProducts
+ extends PageSpecies
+{
+ ControlText pageSpeciesProducts_Title;
+ ControlProductsBox pageSpeciesProducts_Products;
+ ControlText pageSpeciesProducts_Title2;
+ ControlProductsBox pageSpeciesProducts_Specialties;
+
+ public PageSpeciesProducts(IWidget parent, DatabaseTab tab)
+ {
+ super(parent, tab);
+
+ this.pageSpeciesProducts_Title = new ControlTextCentered(this, 8.0F, "Products");
+
+ this.pageSpeciesProducts_Products = new ControlProductsBox(this, 4, 20, 136, 48, ControlProductsBox.Type.Products);
+
+
+ this.pageSpeciesProducts_Title2 = new ControlTextCentered(this, 68.0F, "Specialties");
+
+ this.pageSpeciesProducts_Specialties = new ControlProductsBox(this, 4, 80, 136, 48, ControlProductsBox.Type.Specialties);
+ }
+
+ public void onValueChanged(IAlleleSpecies species)
+ {
+ this.pageSpeciesProducts_Products.setSpecies((IAlleleBeeSpecies)species);
+ this.pageSpeciesProducts_Specialties.setSpecies((IAlleleBeeSpecies)species);
+ }
+}
diff --git a/src/Java/binnie/extrabees/gui/database/WindowApiaristDatabase.java b/src/Java/binnie/extrabees/gui/database/WindowApiaristDatabase.java
new file mode 100644
index 0000000000..d77ee87251
--- /dev/null
+++ b/src/Java/binnie/extrabees/gui/database/WindowApiaristDatabase.java
@@ -0,0 +1,83 @@
+package binnie.extrabees.gui.database;
+
+import binnie.Binnie;
+import binnie.core.AbstractMod;
+import binnie.core.genetics.ManagerGenetics;
+import binnie.craftgui.minecraft.Window;
+import binnie.craftgui.mod.database.DatabaseTab;
+import binnie.craftgui.mod.database.PageBranchOverview;
+import binnie.craftgui.mod.database.PageBranchSpecies;
+import binnie.craftgui.mod.database.PageBreeder;
+import binnie.craftgui.mod.database.PageSpeciesClassification;
+import binnie.craftgui.mod.database.PageSpeciesMutations;
+import binnie.craftgui.mod.database.PageSpeciesOverview;
+import binnie.craftgui.mod.database.PageSpeciesResultant;
+import binnie.craftgui.mod.database.WindowAbstractDatabase;
+import binnie.craftgui.mod.database.WindowAbstractDatabase.Mode;
+import binnie.extrabees.ExtraBees;
+import cpw.mods.fml.relauncher.Side;
+import net.minecraft.entity.player.EntityPlayer;
+
+public class WindowApiaristDatabase
+ extends WindowAbstractDatabase
+{
+ static enum SpeciesTab
+ {
+ Overview(255), Genome(16776960), Productivity(65535), Climate(16711680), ResultantMutations(16711935), FurtherMutations(65280);
+
+ public int colour;
+
+ private SpeciesTab(int colour)
+ {
+ this.colour = colour;
+ }
+ }
+
+ static enum BranchesTab
+ {
+ Overview(255), Species(16711680);
+
+ public int colour;
+
+ private BranchesTab(int colour)
+ {
+ this.colour = colour;
+ }
+ }
+
+ protected void addTabs()
+ {
+ new PageSpeciesOverview(getInfoPages(WindowAbstractDatabase.Mode.Species), new DatabaseTab(ExtraBees.instance, "species.overview", 0));
+ new PageSpeciesClassification(getInfoPages(WindowAbstractDatabase.Mode.Species), new DatabaseTab(ExtraBees.instance, "species.classification", 0));
+ new PageSpeciesGenome(getInfoPages(WindowAbstractDatabase.Mode.Species), new DatabaseTab(ExtraBees.instance, "species.genome", 0));
+ new PageSpeciesProducts(getInfoPages(WindowAbstractDatabase.Mode.Species), new DatabaseTab(ExtraBees.instance, "species.products", 0));
+ new PageSpeciesClimate(getInfoPages(WindowAbstractDatabase.Mode.Species), new DatabaseTab(ExtraBees.instance, "species.climate", 0));
+ new PageSpeciesResultant(getInfoPages(WindowAbstractDatabase.Mode.Species), new DatabaseTab(ExtraBees.instance, "species.resultant", 0));
+ new PageSpeciesMutations(getInfoPages(WindowAbstractDatabase.Mode.Species), new DatabaseTab(ExtraBees.instance, "species.further", 0));
+
+ new PageBranchOverview(getInfoPages(WindowAbstractDatabase.Mode.Branches), new DatabaseTab(ExtraBees.instance, "branches.overview", 0));
+ new PageBranchSpecies(getInfoPages(WindowAbstractDatabase.Mode.Branches), new DatabaseTab(ExtraBees.instance, "branches.species", 0));
+
+ new PageBreeder(getInfoPages(WindowAbstractDatabase.Mode.Breeder), getUsername(), new DatabaseTab(ExtraBees.instance, "breeder", 0));
+ }
+
+ public WindowApiaristDatabase(EntityPlayer player, Side side, boolean nei)
+ {
+ super(player, side, nei, Binnie.Genetics.beeBreedingSystem, 110.0F);
+ }
+
+ public static Window create(EntityPlayer player, Side side, boolean nei)
+ {
+ return new WindowApiaristDatabase(player, side, nei);
+ }
+
+ public AbstractMod getMod()
+ {
+ return ExtraBees.instance;
+ }
+
+ public String getName()
+ {
+ return "Database";
+ }
+}
diff --git a/src/Java/binnie/extrabees/gui/punnett/ControlChromosome.java b/src/Java/binnie/extrabees/gui/punnett/ControlChromosome.java
new file mode 100644
index 0000000000..f4a7ffc507
--- /dev/null
+++ b/src/Java/binnie/extrabees/gui/punnett/ControlChromosome.java
@@ -0,0 +1,49 @@
+package binnie.extrabees.gui.punnett;
+
+import binnie.craftgui.controls.core.Control;
+import binnie.craftgui.controls.core.IControlValue;
+import binnie.craftgui.core.Attribute;
+import binnie.craftgui.core.CraftGUI;
+import binnie.craftgui.core.ITooltip;
+import binnie.craftgui.core.IWidget;
+import binnie.craftgui.core.Tooltip;
+import binnie.craftgui.core.renderer.Renderer;
+import forestry.api.genetics.IChromosomeType;
+
+public class ControlChromosome
+ extends Control
+ implements IControlValue<IChromosomeType>, ITooltip
+{
+ IChromosomeType value;
+
+ protected ControlChromosome(IWidget parent, float x, float y, IChromosomeType type)
+ {
+ super(parent, x, y, 16.0F, 16.0F);
+ setValue(type);
+ addAttribute(Attribute.MouseOver);
+ }
+
+ public IChromosomeType getValue()
+ {
+ return this.value;
+ }
+
+ public void setValue(IChromosomeType value)
+ {
+ this.value = value;
+ }
+
+ public void onRenderBackground()
+ {
+ CraftGUI.Render.texture(ExtraBeeGUITexture.Chromosome, getArea());
+ CraftGUI.Render.colour(16711680);
+ CraftGUI.Render.texture(ExtraBeeGUITexture.Chromosome2, getArea());
+ }
+
+ public void getTooltip(Tooltip tooltip)
+ {
+ if (this.value != null) {
+ tooltip.add(this.value.getName());
+ }
+ }
+}
diff --git a/src/Java/binnie/extrabees/gui/punnett/ControlPunnett.java b/src/Java/binnie/extrabees/gui/punnett/ControlPunnett.java
new file mode 100644
index 0000000000..56b2f6c916
--- /dev/null
+++ b/src/Java/binnie/extrabees/gui/punnett/ControlPunnett.java
@@ -0,0 +1,86 @@
+package binnie.extrabees.gui.punnett;
+
+import binnie.craftgui.controls.ControlText;
+import binnie.craftgui.controls.core.Control;
+import binnie.craftgui.core.CraftGUI;
+import binnie.craftgui.core.IWidget;
+import binnie.craftgui.core.geometry.IArea;
+import binnie.craftgui.core.geometry.TextJustification;
+import binnie.craftgui.core.renderer.Renderer;
+import forestry.api.genetics.IAllele;
+import forestry.api.genetics.IChromosomeType;
+import forestry.api.genetics.IGenome;
+import forestry.api.genetics.IIndividual;
+import forestry.api.genetics.ISpeciesRoot;
+import java.util.LinkedList;
+import java.util.List;
+
+public class ControlPunnett
+ extends Control
+{
+ protected ControlPunnett(IWidget parent, float x, float y)
+ {
+ super(parent, x, y, boxWidth * 3, boxWidth * 3);
+ }
+
+ static int boxWidth = 80;
+ static int boxHeight = 28;
+
+ public void onRenderBackground()
+ {
+ CraftGUI.Render.solid(new IArea(0.0F, boxHeight, boxWidth * 3, 1.0F), 11184810);
+ CraftGUI.Render.solid(new IArea(boxWidth / 2.0F, boxHeight * 2, boxWidth * 2.5F, 1.0F), 11184810);
+
+ CraftGUI.Render.solid(new IArea(boxWidth, 0.0F, 1.0F, boxHeight * 3), 11184810);
+ CraftGUI.Render.solid(new IArea(boxWidth * 2, boxHeight / 2.0F, 1.0F, boxHeight * 2.5F), 11184810);
+ }
+
+ public void setup(IChromosomeType chromosome, IIndividual ind1, IIndividual ind2, ISpeciesRoot root)
+ {
+ deleteAllChildren();
+ if ((chromosome == null) || (ind1 == null) || (ind2 == null) || (root == null)) {
+ return;
+ }
+ IAllele primary1 = ind1.getGenome().getActiveAllele(chromosome);
+ IAllele primary2 = ind2.getGenome().getActiveAllele(chromosome);
+ IAllele secondary1 = ind1.getGenome().getInactiveAllele(chromosome);
+ IAllele secondary2 = ind2.getGenome().getInactiveAllele(chromosome);
+
+ int x = 1;
+ int y = 1;
+ for (IAllele allele1 : new IAllele[] { primary1, secondary1 })
+ {
+ y = 1;
+ for (IAllele allele2 : new IAllele[] { primary2, secondary2 })
+ {
+ List<IAllele> alleles = new LinkedList();
+ if ((allele1.isDominant()) && (!allele2.isDominant()))
+ {
+ alleles.add(allele1);
+ }
+ else if ((allele2.isDominant()) && (!allele1.isDominant()))
+ {
+ alleles.add(allele2);
+ }
+ else
+ {
+ alleles.add(allele1);
+ if (allele1 != allele2) {
+ alleles.add(allele2);
+ }
+ }
+ String text = "";
+ for (IAllele allele : alleles) {
+ text = text + allele.getName() + ": " + 25.0F / alleles.size() + "%\n";
+ }
+ new ControlText(this, new IArea(x * boxWidth, boxHeight * y, boxWidth, boxHeight), text, TextJustification.TopCenter).setColour(11184810);
+ y++;
+ }
+ x++;
+ }
+ new ControlText(this, new IArea(boxWidth, 0.0F, boxWidth, boxHeight), "\n" + primary1.getName(), TextJustification.TopCenter).setColour(11184810);
+ new ControlText(this, new IArea(boxWidth * 2, 0.0F, boxWidth, boxHeight), "\n" + secondary1.getName(), TextJustification.TopCenter).setColour(11184810);
+ new ControlText(this, new IArea(0.0F, boxHeight, boxWidth, boxHeight), primary2.getName(), TextJustification.TopCenter).setColour(11184810);
+ new ControlText(this, new IArea(0.0F, boxHeight * 2, boxWidth, boxHeight), primary2.getName(), TextJustification.TopCenter).setColour(11184810);
+ }
+}
diff --git a/src/Java/binnie/extrabees/gui/punnett/ExtraBeeGUITexture.java b/src/Java/binnie/extrabees/gui/punnett/ExtraBeeGUITexture.java
new file mode 100644
index 0000000000..eac77aabf9
--- /dev/null
+++ b/src/Java/binnie/extrabees/gui/punnett/ExtraBeeGUITexture.java
@@ -0,0 +1,8 @@
+package binnie.extrabees.gui.punnett;
+
+public enum ExtraBeeGUITexture
+{
+ Chromosome, Chromosome2;
+
+ private ExtraBeeGUITexture() {}
+}
diff --git a/src/Java/binnie/extrabees/gui/punnett/WindowPunnettSquare.java b/src/Java/binnie/extrabees/gui/punnett/WindowPunnettSquare.java
new file mode 100644
index 0000000000..488f2b6922
--- /dev/null
+++ b/src/Java/binnie/extrabees/gui/punnett/WindowPunnettSquare.java
@@ -0,0 +1,67 @@
+package binnie.extrabees.gui.punnett;
+
+import binnie.core.AbstractMod;
+import binnie.craftgui.core.CraftGUI;
+import binnie.craftgui.core.renderer.Renderer;
+import binnie.craftgui.minecraft.Window;
+import binnie.craftgui.minecraft.control.ControlSlot;
+import binnie.craftgui.resource.StyleSheet;
+import binnie.craftgui.resource.minecraft.CraftGUITexture;
+import binnie.craftgui.resource.minecraft.PaddedTexture;
+import binnie.craftgui.resource.minecraft.StandardTexture;
+import binnie.extrabees.ExtraBees;
+import binnie.extrabees.core.ExtraBeeTexture;
+import cpw.mods.fml.relauncher.Side;
+import forestry.api.genetics.ISpeciesRoot;
+import java.util.Map;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.inventory.IInventory;
+
+public class WindowPunnettSquare
+ extends Window
+{
+ ControlSlot bee1;
+ ControlSlot bee2;
+ ControlPunnett punnett;
+
+ public static Window create(EntityPlayer player, IInventory inventory, Side side)
+ {
+ return new WindowPunnettSquare(player, inventory, side);
+ }
+
+ public WindowPunnettSquare(EntityPlayer player, IInventory inventory, Side side)
+ {
+ super(245.0F, 205.0F, player, inventory, side);
+ }
+
+ public AbstractMod getMod()
+ {
+ return ExtraBees.instance;
+ }
+
+ public String getName()
+ {
+ return "Punnett";
+ }
+
+ public void initialiseClient()
+ {
+ setTitle("Punnett Square");
+
+ CraftGUI.Render.stylesheet(new StyleSheetPunnett());
+ }
+
+ ISpeciesRoot root = null;
+
+ static class StyleSheetPunnett
+ extends StyleSheet
+ {
+ public StyleSheetPunnett()
+ {
+ this.textures.put(CraftGUITexture.Window, new PaddedTexture(0, 0, 160, 160, 0, ExtraBeeTexture.GUIPunnett, 32, 32, 32, 32));
+ this.textures.put(CraftGUITexture.Slot, new StandardTexture(160, 0, 18, 18, 0, ExtraBeeTexture.GUIPunnett));
+ this.textures.put(ExtraBeeGUITexture.Chromosome, new StandardTexture(160, 36, 16, 16, 0, ExtraBeeTexture.GUIPunnett));
+ this.textures.put(ExtraBeeGUITexture.Chromosome2, new StandardTexture(160, 52, 16, 16, 0, ExtraBeeTexture.GUIPunnett));
+ }
+ }
+}
diff --git a/src/Java/binnie/extrabees/liquids/ExtraBeeLiquid.java b/src/Java/binnie/extrabees/liquids/ExtraBeeLiquid.java
new file mode 100644
index 0000000000..a7ed929fb7
--- /dev/null
+++ b/src/Java/binnie/extrabees/liquids/ExtraBeeLiquid.java
@@ -0,0 +1,80 @@
+package binnie.extrabees.liquids;
+
+import binnie.Binnie;
+import binnie.core.liquid.FluidContainer;
+import binnie.core.liquid.ILiquidType;
+import binnie.core.liquid.ManagerLiquid;
+import binnie.extrabees.ExtraBees;
+import binnie.extrabees.proxy.ExtraBeesProxy;
+import cpw.mods.fml.relauncher.Side;
+import cpw.mods.fml.relauncher.SideOnly;
+import net.minecraft.client.renderer.texture.IIconRegister;
+import net.minecraft.util.IIcon;
+import net.minecraftforge.fluids.FluidStack;
+
+public enum ExtraBeeLiquid
+ implements ILiquidType
+{
+ ACID("acid", 11528985), POISON("poison", 15406315), GLACIAL("liquidnitrogen", 9881800);
+
+ String ident;
+ IIcon icon;
+ int colour;
+
+ private ExtraBeeLiquid(String ident, int colour)
+ {
+ this.ident = ident;
+ this.colour = colour;
+ }
+
+ public IIcon getIcon()
+ {
+ return this.icon;
+ }
+
+ @SideOnly(Side.CLIENT)
+ public void registerIcon(IIconRegister register)
+ {
+ this.icon = ExtraBees.proxy.getIcon(register, "liquids/" + getIdentifier());
+ }
+
+ public String getName()
+ {
+ return ExtraBees.proxy.localise(toString().toLowerCase());
+ }
+
+ public String getIdentifier()
+ {
+ return this.ident;
+ }
+
+ public int getColour()
+ {
+ return 16777215;
+ }
+
+ public FluidStack get(int amount)
+ {
+ return Binnie.Liquid.getLiquidStack(this.ident, amount);
+ }
+
+ public int getTransparency()
+ {
+ return 255;
+ }
+
+ public boolean canPlaceIn(FluidContainer container)
+ {
+ return true;
+ }
+
+ public boolean showInCreative(FluidContainer container)
+ {
+ return (container == FluidContainer.Bucket) || (container == FluidContainer.Can) || (container == FluidContainer.Capsule) || (container == FluidContainer.Refractory);
+ }
+
+ public int getContainerColour()
+ {
+ return this.colour;
+ }
+}
diff --git a/src/Java/binnie/extrabees/liquids/ModuleLiquids.java b/src/Java/binnie/extrabees/liquids/ModuleLiquids.java
new file mode 100644
index 0000000000..5db86e205a
--- /dev/null
+++ b/src/Java/binnie/extrabees/liquids/ModuleLiquids.java
@@ -0,0 +1,19 @@
+package binnie.extrabees.liquids;
+
+import binnie.Binnie;
+import binnie.core.IInitializable;
+import binnie.core.liquid.ItemFluidContainer;
+import binnie.core.liquid.ManagerLiquid;
+
+public class ModuleLiquids
+ implements IInitializable
+{
+ public void preInit()
+ {
+ Binnie.Liquid.createLiquids(ExtraBeeLiquid.values(), ItemFluidContainer.LiquidExtraBee);
+ }
+
+ public void init() {}
+
+ public void postInit() {}
+}
diff --git a/src/Java/binnie/extrabees/products/EnumHoneyComb.java b/src/Java/binnie/extrabees/products/EnumHoneyComb.java
new file mode 100644
index 0000000000..5c480d0a04
--- /dev/null
+++ b/src/Java/binnie/extrabees/products/EnumHoneyComb.java
@@ -0,0 +1,109 @@
+package binnie.extrabees.products;
+
+import binnie.core.item.IItemEnum;
+import binnie.extrabees.ExtraBees;
+import binnie.extrabees.proxy.ExtraBeesProxy;
+import forestry.api.recipes.ICentrifugeManager;
+import forestry.api.recipes.RecipeManagers;
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+import java.util.Map;
+import java.util.Map.Entry;
+import net.minecraft.item.ItemStack;
+import net.minecraftforge.oredict.OreDictionary;
+
+public enum EnumHoneyComb
+ implements IItemEnum
+{
+ BARREN(7564356, 12762791), ROTTEN(4084257, 11652233), BONE(12895407, 14606017), OIL(394760, 2894646), COAL(10392696, 3682590), FUEL(10252096, 16761856), WATER(2568911, 7973065), MILK(14145991, 16777215), FRUIT(8202548, 14372706), SEED(3428147, 7457902), ALCOHOL(4293921, 14604622), STONE(9211025, 13027020), REDSTONE(16422550, 15077392), RESIN(16762703, 13208064), IC2ENERGY(15332623, 2143177), IRON(3552564, 11038808), GOLD(3552564, 15125515), COPPER(3552564, 13722376), TIN(3552564, 12431805), SILVER(3552564, 14408667), BRONZE, URANIUM(2031360, 4303667), CLAY(7034426, 11583702), OLD(4535060, 11769444), FUNGAL(7234891, 2856003), CREOSOTE(10256652, 12429911), LATEX(5854529, 11051653), ACIDIC(3441987, 1374014), VENOMOUS(8198269, 16724991), SLIME(3884860, 8442245), BLAZE(16738816, 16763904), COFFEE(5519389, 11763531), GLACIAL(5146503, 13366002), MINT, CITRUS, PEAT, SHADOW(0, 3545141), LEAD(3552564, 10125468), BRASS, ELECTRUM, ZINC(3552564, 15592447), TITANIUM(3552564, 11578083), TUNGSTEN(3552564, 1249812), STEEL, IRIDIUM, PLATINUM(3552564, 10125468), LAPIS(3552564, 4009179), SODALITE, PYRITE, BAUXITE, CINNABAR, SPHALERITE, EMERALD(3552564, 1900291), RUBY(3552564, 14024704), SAPPHIRE(3552564, 673791), OLIVINE, DIAMOND(3552564, 8371706), RED(13388876, 16711680), YELLOW(15066419, 16768256), BLUE(10072818, 8959), GREEN(6717235, 39168), BLACK(1644825, 5723991), WHITE(14079702, 16777215), BROWN(8349260, 6042895), ORANGE(15905331, 16751872), CYAN(5020082, 65509), PURPLE(11691749, 11403519), GRAY(5000268, 12237498), LIGHTBLUE(10072818, 40447), PINK(15905484, 16744671), LIMEGREEN(8375321, 65288), MAGENTA(15040472, 16711884), LIGHTGRAY(10066329, 13224393), NICKEL(3552564, 16768764), INVAR, GLOWSTONE(10919006, 14730249), SALTPETER(10919006, 14730249), PULP, MULCH, COMPOST(4338440, 7036475), SAWDUST(12561009, 15913854), CERTUS(13029631, 3755363), ENDERPEARL(3446662, 206368), YELLORIUM(2564173, 14019840), CYANITE(2564173, 34541), BLUTONIUM(2564173, 1769702);
+
+ int[] colour = new int[0];
+ public Map<ItemStack, Integer> products = new LinkedHashMap();
+ boolean active = true;
+ public boolean deprecated = false;
+
+ private EnumHoneyComb()
+ {
+ this(16777215, 16777215);
+ this.active = false;
+ this.deprecated = true;
+ }
+
+ private EnumHoneyComb(int colour, int colour2)
+ {
+ this.colour = new int[] { colour, colour2 };
+ }
+
+ public void addRecipe()
+ {
+ int[] chancesI = new int[this.products.size()];
+ ItemStack[] productsI = new ItemStack[this.products.size()];
+
+ int i = 0;
+ for (Map.Entry<ItemStack, Integer> entry : this.products.entrySet())
+ {
+ chancesI[i] = ((Integer)entry.getValue()).intValue();
+ productsI[i] = ((ItemStack)entry.getKey());
+ i++;
+ }
+ RecipeManagers.centrifugeManager.addRecipe(20, get(1), productsI, chancesI);
+ }
+
+ public boolean isActive()
+ {
+ return this.active;
+ }
+
+ public static EnumHoneyComb get(ItemStack itemStack)
+ {
+ int i = itemStack.getItemDamage();
+ if ((i >= 0) && (i < values().length)) {
+ return values()[i];
+ }
+ return values()[0];
+ }
+
+ public ItemStack get(int size)
+ {
+ return new ItemStack(ExtraBees.comb, size, ordinal());
+ }
+
+ public String getName(ItemStack stack)
+ {
+ return ExtraBees.proxy.localise("item.comb." + name().toLowerCase());
+ }
+
+ public boolean addProduct(ItemStack item, int chance)
+ {
+ if (item == null) {
+ return false;
+ }
+ this.products.put(item.copy(), Integer.valueOf(chance));
+ return true;
+ }
+
+ public void tryAddProduct(ItemStack item, int chance)
+ {
+ this.active = addProduct(item, chance);
+ }
+
+ public void tryAddProduct(String oreDict, int chance)
+ {
+ if (!OreDictionary.getOres(oreDict).isEmpty()) {
+ tryAddProduct((ItemStack)OreDictionary.getOres(oreDict).get(0), chance);
+ } else {
+ this.active = false;
+ }
+ }
+
+ public void tryAddProduct(IItemEnum type, int chance)
+ {
+ tryAddProduct(type.get(1), chance);
+ this.active = ((this.active) && (type.isActive()));
+ }
+
+ public void copyProducts(EnumHoneyComb comb)
+ {
+ this.products.putAll(comb.products);
+ }
+}
diff --git a/src/Java/binnie/extrabees/products/EnumHoneyDrop.java b/src/Java/binnie/extrabees/products/EnumHoneyDrop.java
new file mode 100644
index 0000000000..c3ea6c2cdd
--- /dev/null
+++ b/src/Java/binnie/extrabees/products/EnumHoneyDrop.java
@@ -0,0 +1,72 @@
+package binnie.extrabees.products;
+
+import binnie.Binnie;
+import binnie.core.item.IItemEnum;
+import binnie.core.liquid.ManagerLiquid;
+import binnie.extrabees.ExtraBees;
+import binnie.extrabees.proxy.ExtraBeesProxy;
+import forestry.api.recipes.ISqueezerManager;
+import forestry.api.recipes.RecipeManagers;
+import net.minecraft.item.ItemStack;
+import net.minecraftforge.fluids.FluidRegistry;
+import net.minecraftforge.fluids.FluidStack;
+
+public enum EnumHoneyDrop
+ implements IItemEnum
+{
+ ENERGY(10242418, 14905713, ""), ACID(4961601, 4841020, "acid"), POISON(13698745, 16712674, "poison"), APPLE(13062738, 13183530, "juice"), CITRUS, ICE(11462882, 9895925, "liquidnitrogen"), MILK(14737632, 16777215, "milk"), SEED(8176242, 12762791, "seedoil"), ALCOHOL(14411853, 10872909, "short.mead"), FRUIT, VEGETABLE, PUMPKIN, MELON, RED(13388876, 16711680, "for.honey"), YELLOW(15066419, 16768256, "for.honey"), BLUE(10072818, 8959, "for.honey"), GREEN(6717235, 39168, "for.honey"), BLACK(1644825, 5723991, "for.honey"), WHITE(14079702, 16777215, "for.honey"), BROWN(8349260, 6042895, "for.honey"), ORANGE(15905331, 16751872, "for.honey"), CYAN(5020082, 65509, "for.honey"), PURPLE(11691749, 11403519, "for.honey"), GRAY(5000268, 12237498, "for.honey"), LIGHTBLUE(10072818, 40447, "for.honey"), PINK(15905484, 16744671, "for.honey"), LIMEGREEN(8375321, 65288, "for.honey"), MAGENTA(15040472, 16711884, "for.honey"), LIGHTGRAY(10066329, 13224393, "for.honey");
+
+ int[] colour;
+ String liquidName = "";
+ ItemStack remenant = null;
+ public boolean deprecated = false;
+
+ public void addRemenant(ItemStack stack)
+ {
+ this.remenant = stack;
+ this.deprecated = true;
+ }
+
+ private EnumHoneyDrop()
+ {
+ this(16777215, 16777215, "");
+ }
+
+ private EnumHoneyDrop(int colour, int colour2, String liquid)
+ {
+ this.colour = new int[] { colour, colour2 };
+ this.liquidName = liquid;
+ }
+
+ public void addRecipe()
+ {
+ FluidStack liquid = Binnie.Liquid.getLiquidStack(this.liquidName, 200);
+ if (liquid != null) {
+ RecipeManagers.squeezerManager.addRecipe(10, new ItemStack[] { get(1) }, liquid, this.remenant, 100);
+ }
+ }
+
+ public boolean isActive()
+ {
+ return (!this.deprecated) && ((this.liquidName == null) || (FluidRegistry.isFluidRegistered(this.liquidName)));
+ }
+
+ public static EnumHoneyDrop get(ItemStack itemStack)
+ {
+ int i = itemStack.getItemDamage();
+ if ((i >= 0) && (i < values().length)) {
+ return values()[i];
+ }
+ return values()[0];
+ }
+
+ public ItemStack get(int size)
+ {
+ return new ItemStack(ExtraBees.honeyDrop, size, ordinal());
+ }
+
+ public String getName(ItemStack stack)
+ {
+ return ExtraBees.proxy.localise("item.honeydrop." + name().toLowerCase());
+ }
+}
diff --git a/src/Java/binnie/extrabees/products/EnumPropolis.java b/src/Java/binnie/extrabees/products/EnumPropolis.java
new file mode 100644
index 0000000000..0e8a11f18b
--- /dev/null
+++ b/src/Java/binnie/extrabees/products/EnumPropolis.java
@@ -0,0 +1,65 @@
+package binnie.extrabees.products;
+
+import binnie.Binnie;
+import binnie.core.item.IItemEnum;
+import binnie.core.liquid.ManagerLiquid;
+import binnie.extrabees.ExtraBees;
+import binnie.extrabees.proxy.ExtraBeesProxy;
+import forestry.api.recipes.ISqueezerManager;
+import forestry.api.recipes.RecipeManagers;
+import net.minecraft.item.ItemStack;
+import net.minecraftforge.fluids.FluidStack;
+
+public enum EnumPropolis
+ implements IItemEnum
+{
+ WATER(2405321, 12762791, "Water"), OIL(1519411, 12762791, "oil"), FUEL(10718482, 12762791, "fuel"), MILK, FRUIT, SEED, ALCOHOL, CREOSOTE(8877313, 12428819, "creosote"), GLACIAL, PEAT;
+
+ int[] colour = new int[0];
+ String liquidName;
+ boolean active = true;
+
+ private EnumPropolis()
+ {
+ this(16777215, 16777215, "");
+ this.active = false;
+ }
+
+ private EnumPropolis(int colour, int colour2, String liquid)
+ {
+ this.colour = new int[] { colour, colour2 };
+ this.liquidName = liquid;
+ }
+
+ public void addRecipe()
+ {
+ FluidStack liquid = Binnie.Liquid.getLiquidStack(this.liquidName, 500);
+ if (liquid != null) {
+ RecipeManagers.squeezerManager.addRecipe(20, new ItemStack[] { get(1) }, liquid, null, 0);
+ }
+ }
+
+ public boolean isActive()
+ {
+ return (this.active) && (Binnie.Liquid.getLiquidStack(this.liquidName, 100) != null);
+ }
+
+ public static EnumPropolis get(ItemStack itemStack)
+ {
+ int i = itemStack.getItemDamage();
+ if ((i >= 0) && (i < values().length)) {
+ return values()[i];
+ }
+ return values()[0];
+ }
+
+ public ItemStack get(int size)
+ {
+ return new ItemStack(ExtraBees.propolis, size, ordinal());
+ }
+
+ public String getName(ItemStack stack)
+ {
+ return ExtraBees.proxy.localise("item.propolis." + name().toLowerCase());
+ }
+}
diff --git a/src/Java/binnie/extrabees/products/ItemHoneyComb.java b/src/Java/binnie/extrabees/products/ItemHoneyComb.java
new file mode 100644
index 0000000000..5cbbf8fe63
--- /dev/null
+++ b/src/Java/binnie/extrabees/products/ItemHoneyComb.java
@@ -0,0 +1,335 @@
+package binnie.extrabees.products;
+
+import binnie.core.BinnieCore;
+import binnie.core.Mods;
+import binnie.core.Mods.Mod;
+import binnie.core.proxy.BinnieProxy;
+import binnie.extrabees.ExtraBees;
+import binnie.extrabees.core.ExtraBeeItems;
+import cpw.mods.fml.relauncher.Side;
+import cpw.mods.fml.relauncher.SideOnly;
+import forestry.api.core.Tabs;
+import java.util.ArrayList;
+import net.minecraft.client.renderer.texture.IIconRegister;
+import net.minecraft.init.Blocks;
+import net.minecraft.init.Items;
+import net.minecraft.item.ItemStack;
+import net.minecraft.util.IIcon;
+import net.minecraftforge.oredict.OreDictionary;
+
+public class ItemHoneyComb
+ extends ItemProduct
+{
+ IIcon icon1;
+ IIcon icon2;
+
+ @SideOnly(Side.CLIENT)
+ public boolean requiresMultipleRenderPasses()
+ {
+ return true;
+ }
+
+ public ItemHoneyComb()
+ {
+ super(EnumHoneyComb.values());
+ setCreativeTab(Tabs.tabApiculture);
+ setUnlocalizedName("honeyComb");
+ }
+
+ public static void addSubtypes()
+ {
+ ItemStack beeswax = Mods.Forestry.stack("beeswax");
+ ItemStack honeyDrop = Mods.Forestry.stack("honeyDrop");
+
+ OreDictionary.registerOre("ingotIron", Items.iron_ingot);
+ OreDictionary.registerOre("ingotGold", Items.gold_ingot);
+
+ OreDictionary.registerOre("gemDiamond", Items.diamond);
+ OreDictionary.registerOre("gemEmerald", Items.emerald);
+ OreDictionary.registerOre("gemLapis", new ItemStack(Items.dye, 1, 4));
+
+ EnumHoneyComb.BARREN.addProduct(beeswax, 100);
+ EnumHoneyComb.BARREN.addProduct(honeyDrop, 50);
+
+ EnumHoneyComb.ROTTEN.addProduct(beeswax, 20);
+ EnumHoneyComb.ROTTEN.addProduct(honeyDrop, 20);
+ EnumHoneyComb.ROTTEN.addProduct(new ItemStack(Items.rotten_flesh, 1, 0), 80);
+
+ EnumHoneyComb.BONE.addProduct(beeswax, 20);
+ EnumHoneyComb.BONE.addProduct(honeyDrop, 20);
+ EnumHoneyComb.BONE.addProduct(new ItemStack(Items.dye, 1, 15), 80);
+
+ EnumHoneyComb.OIL.tryAddProduct(EnumPropolis.OIL, 60);
+ EnumHoneyComb.OIL.addProduct(honeyDrop, 75);
+
+ EnumHoneyComb.COAL.addProduct(beeswax, 80);
+ EnumHoneyComb.COAL.addProduct(honeyDrop, 75);
+ EnumHoneyComb.COAL.tryAddProduct(ExtraBeeItems.CoalDust, 100);
+
+ EnumHoneyComb.WATER.tryAddProduct(EnumPropolis.WATER, 100);
+ EnumHoneyComb.WATER.addProduct(honeyDrop, 90);
+
+ EnumHoneyComb.STONE.addProduct(beeswax, 50);
+ EnumHoneyComb.STONE.addProduct(honeyDrop, 25);
+
+ EnumHoneyComb.MILK.tryAddProduct(EnumHoneyDrop.MILK, 100);
+ EnumHoneyComb.MILK.addProduct(honeyDrop, 90);
+
+ EnumHoneyComb.FRUIT.tryAddProduct(EnumHoneyDrop.APPLE, 100);
+ EnumHoneyComb.FRUIT.addProduct(honeyDrop, 90);
+
+ EnumHoneyComb.SEED.tryAddProduct(EnumHoneyDrop.SEED, 100);
+ EnumHoneyComb.SEED.addProduct(honeyDrop, 90);
+
+ EnumHoneyComb.ALCOHOL.tryAddProduct(EnumHoneyDrop.ALCOHOL, 100);
+ EnumHoneyComb.ALCOHOL.addProduct(honeyDrop, 90);
+
+ EnumHoneyComb.FUEL.tryAddProduct(EnumPropolis.FUEL, 60);
+ EnumHoneyComb.FUEL.addProduct(honeyDrop, 50);
+
+ EnumHoneyComb.CREOSOTE.tryAddProduct(EnumPropolis.CREOSOTE, 70);
+ EnumHoneyComb.CREOSOTE.addProduct(honeyDrop, 50);
+
+ EnumHoneyComb.LATEX.addProduct(honeyDrop, 50);
+ EnumHoneyComb.LATEX.addProduct(beeswax, 85);
+ if (!OreDictionary.getOres("itemRubber").isEmpty()) {
+ EnumHoneyComb.LATEX.tryAddProduct((ItemStack)OreDictionary.getOres("itemRubber").get(0), 100);
+ } else {
+ EnumHoneyComb.LATEX.active = false;
+ }
+ EnumHoneyComb.REDSTONE.addProduct(beeswax, 80);
+ EnumHoneyComb.REDSTONE.addProduct(new ItemStack(Items.redstone, 1, 0), 100);
+ EnumHoneyComb.REDSTONE.addProduct(honeyDrop, 50);
+
+ EnumHoneyComb.RESIN.addProduct(beeswax, 100);
+
+ EnumHoneyComb.RESIN.tryAddProduct(Mods.IC2.stack("itemHarz"), 100);
+ EnumHoneyComb.RESIN.tryAddProduct(Mods.IC2.stack("itemHarz"), 50);
+
+ EnumHoneyComb.IC2ENERGY.addProduct(beeswax, 80);
+ EnumHoneyComb.IC2ENERGY.addProduct(new ItemStack(Items.redstone, 1, 0), 75);
+ EnumHoneyComb.IC2ENERGY.tryAddProduct(EnumHoneyDrop.ENERGY, 100);
+
+ EnumHoneyComb.IRON.copyProducts(EnumHoneyComb.STONE);
+ EnumHoneyComb.IRON.tryAddProduct(ExtraBeeItems.IronDust, 100);
+
+ EnumHoneyComb.GOLD.copyProducts(EnumHoneyComb.STONE);
+ EnumHoneyComb.GOLD.tryAddProduct(ExtraBeeItems.GoldDust, 100);
+
+ EnumHoneyComb.COPPER.copyProducts(EnumHoneyComb.STONE);
+ EnumHoneyComb.COPPER.tryAddProduct(ExtraBeeItems.CopperDust, 100);
+
+ EnumHoneyComb.TIN.copyProducts(EnumHoneyComb.STONE);
+ EnumHoneyComb.TIN.tryAddProduct(ExtraBeeItems.TinDust, 100);
+
+ EnumHoneyComb.NICKEL.copyProducts(EnumHoneyComb.STONE);
+ EnumHoneyComb.NICKEL.tryAddProduct(ExtraBeeItems.NickelDust, 100);
+
+ EnumHoneyComb.SILVER.copyProducts(EnumHoneyComb.STONE);
+ EnumHoneyComb.SILVER.tryAddProduct(ExtraBeeItems.SilverDust, 100);
+
+ EnumHoneyComb.URANIUM.copyProducts(EnumHoneyComb.STONE);
+ if (!OreDictionary.getOres("crushedUranium").isEmpty()) {
+ EnumHoneyComb.URANIUM.tryAddProduct((ItemStack)OreDictionary.getOres("crushedUranium").get(0), 50);
+ }
+ EnumHoneyComb.CLAY.addProduct(beeswax, 25);
+ EnumHoneyComb.CLAY.addProduct(honeyDrop, 80);
+ EnumHoneyComb.CLAY.addProduct(new ItemStack(Items.clay_ball), 80);
+
+ EnumHoneyComb.OLD.addProduct(beeswax, 100);
+ EnumHoneyComb.OLD.addProduct(honeyDrop, 90);
+
+ EnumHoneyComb.FUNGAL.addProduct(beeswax, 90);
+ EnumHoneyComb.FUNGAL.addProduct(new ItemStack(Blocks.brown_mushroom_block, 1, 0), 100);
+ EnumHoneyComb.FUNGAL.addProduct(new ItemStack(Blocks.red_mushroom_block, 1, 0), 75);
+
+ EnumHoneyComb.ACIDIC.addProduct(beeswax, 80);
+ EnumHoneyComb.ACIDIC.tryAddProduct(EnumHoneyDrop.ACID, 50);
+ if (!OreDictionary.getOres("dustSulfur").isEmpty()) {
+ EnumHoneyComb.ACIDIC.addProduct((ItemStack)OreDictionary.getOres("dustSulfur").get(0), 75);
+ }
+ EnumHoneyComb.VENOMOUS.addProduct(beeswax, 80);
+ EnumHoneyComb.VENOMOUS.tryAddProduct(EnumHoneyDrop.POISON, 80);
+
+ EnumHoneyComb.SLIME.addProduct(beeswax, 100);
+ EnumHoneyComb.SLIME.addProduct(honeyDrop, 75);
+ EnumHoneyComb.SLIME.addProduct(new ItemStack(Items.slime_ball, 1, 0), 75);
+
+ EnumHoneyComb.BLAZE.addProduct(beeswax, 75);
+ EnumHoneyComb.BLAZE.addProduct(new ItemStack(Items.blaze_powder, 1, 0), 100);
+
+ EnumHoneyComb.COFFEE.addProduct(beeswax, 90);
+ EnumHoneyComb.COFFEE.addProduct(honeyDrop, 75);
+ EnumHoneyComb.COFFEE.tryAddProduct(Mods.IC2.stack("itemCofeePowder"), 75);
+
+ EnumHoneyComb.GLACIAL.tryAddProduct(EnumHoneyDrop.ICE, 80);
+ EnumHoneyComb.GLACIAL.addProduct(honeyDrop, 75);
+
+
+
+
+ EnumHoneyComb.SHADOW.addProduct(honeyDrop, 50);
+ if (!OreDictionary.getOres("dustObsidian").isEmpty()) {
+ EnumHoneyComb.SHADOW.tryAddProduct((ItemStack)OreDictionary.getOres("dustObsidian").get(0), 75);
+ } else {
+ EnumHoneyComb.SHADOW.active = false;
+ }
+ EnumHoneyComb.LEAD.copyProducts(EnumHoneyComb.STONE);
+ EnumHoneyComb.LEAD.tryAddProduct(ExtraBeeItems.LeadDust, 100);
+
+ EnumHoneyComb.ZINC.copyProducts(EnumHoneyComb.STONE);
+ EnumHoneyComb.ZINC.tryAddProduct(ExtraBeeItems.ZincDust, 100);
+
+ EnumHoneyComb.TITANIUM.copyProducts(EnumHoneyComb.STONE);
+ EnumHoneyComb.TITANIUM.tryAddProduct(ExtraBeeItems.TitaniumDust, 100);
+
+ EnumHoneyComb.TUNGSTEN.copyProducts(EnumHoneyComb.STONE);
+ EnumHoneyComb.TUNGSTEN.tryAddProduct(ExtraBeeItems.TungstenDust, 100);
+
+ EnumHoneyComb.PLATINUM.copyProducts(EnumHoneyComb.STONE);
+ EnumHoneyComb.PLATINUM.tryAddProduct(ExtraBeeItems.PlatinumDust, 100);
+
+ EnumHoneyComb.LAPIS.copyProducts(EnumHoneyComb.STONE);
+ EnumHoneyComb.LAPIS.addProduct(new ItemStack(Items.dye, 6, 4), 100);
+
+ EnumHoneyComb.EMERALD.copyProducts(EnumHoneyComb.STONE);
+ EnumHoneyComb.EMERALD.tryAddProduct(ExtraBeeItems.EmeraldShard, 100);
+
+ EnumHoneyComb.RUBY.copyProducts(EnumHoneyComb.STONE);
+ EnumHoneyComb.RUBY.tryAddProduct(ExtraBeeItems.RubyShard, 100);
+
+ EnumHoneyComb.SAPPHIRE.copyProducts(EnumHoneyComb.STONE);
+ EnumHoneyComb.SAPPHIRE.tryAddProduct(ExtraBeeItems.SapphireShard, 100);
+
+ EnumHoneyComb.DIAMOND.copyProducts(EnumHoneyComb.STONE);
+ EnumHoneyComb.DIAMOND.tryAddProduct(ExtraBeeItems.DiamondShard, 100);
+
+ EnumHoneyComb.RED.addProduct(honeyDrop, 80);
+ EnumHoneyComb.RED.addProduct(beeswax, 80);
+
+ EnumHoneyComb.GLOWSTONE.addProduct(honeyDrop, 25);
+ EnumHoneyComb.GLOWSTONE.addProduct(new ItemStack(Items.glowstone_dust), 100);
+
+ EnumHoneyComb.SALTPETER.addProduct(honeyDrop, 25);
+ EnumHoneyComb.SALTPETER.tryAddProduct(getOreDictionary("dustSaltpeter"), 100);
+
+ EnumHoneyComb.COMPOST.addProduct(honeyDrop, 25);
+ EnumHoneyComb.COMPOST.tryAddProduct(Mods.Forestry.stack("fertilizerBio"), 100);
+
+ EnumHoneyComb.SAWDUST.addProduct(honeyDrop, 25);
+ if (!OreDictionary.getOres("dustSawdust").isEmpty()) {
+ EnumHoneyComb.SAWDUST.tryAddProduct((ItemStack)OreDictionary.getOres("dustSawdust").get(0), 100);
+ } else if (!OreDictionary.getOres("sawdust").isEmpty()) {
+ EnumHoneyComb.SAWDUST.tryAddProduct((ItemStack)OreDictionary.getOres("sawdust").get(0), 100);
+ }
+ EnumHoneyComb.CERTUS.addProduct(honeyDrop, 25);
+ EnumHoneyComb.CERTUS.addProduct(new ItemStack(Items.quartz), 25);
+ if (!OreDictionary.getOres("dustCertusQuartz").isEmpty()) {
+ EnumHoneyComb.CERTUS.tryAddProduct((ItemStack)OreDictionary.getOres("dustCertusQuartz").get(0), 20);
+ }
+ EnumHoneyComb.ENDERPEARL.addProduct(honeyDrop, 25);
+ if (!OreDictionary.getOres("dustEnderPearl").isEmpty()) {
+ EnumHoneyComb.ENDERPEARL.tryAddProduct((ItemStack)OreDictionary.getOres("dustEnderPearl").get(0), 25);
+ }
+ EnumHoneyComb.YELLORIUM.copyProducts(EnumHoneyComb.STONE);
+ EnumHoneyComb.CYANITE.copyProducts(EnumHoneyComb.STONE);
+ EnumHoneyComb.BLUTONIUM.copyProducts(EnumHoneyComb.STONE);
+
+ EnumHoneyComb.YELLORIUM.tryAddProduct(ExtraBeeItems.YelloriumDust, 25);
+ EnumHoneyComb.CYANITE.tryAddProduct(ExtraBeeItems.CyaniteDust, 25);
+ EnumHoneyComb.BLUTONIUM.tryAddProduct(ExtraBeeItems.BlutoniumDust, 25);
+
+
+ OreDictionary.registerOre("beeComb", new ItemStack(ExtraBees.comb, 1, 32767));
+ for (int i = 0; i < 16; i++)
+ {
+ EnumHoneyComb type = EnumHoneyComb.values()[(EnumHoneyComb.RED.ordinal() + i)];
+ if (type != EnumHoneyComb.RED) {
+ type.copyProducts(EnumHoneyComb.RED);
+ }
+ }
+ for (int i = 0; i < 16; i++)
+ {
+ EnumHoneyComb type = EnumHoneyComb.values()[(EnumHoneyComb.RED.ordinal() + i)];
+ EnumHoneyDrop drop = EnumHoneyDrop.values()[(EnumHoneyDrop.RED.ordinal() + i)];
+
+ int[] dyeC = { 1, 11, 4, 2, 0, 15, 3, 14, 6, 5, 8, 12, 9, 10, 13, 7 };
+
+ int k = dyeC[i];
+
+ ItemStack dye = new ItemStack(Items.dye, 1, k);
+ switch (k)
+ {
+ case 0:
+ dye = ExtraBeeItems.BlackDye.get(1);
+ break;
+ case 1:
+ dye = ExtraBeeItems.RedDye.get(1);
+ break;
+ case 2:
+ dye = ExtraBeeItems.GreenDye.get(1);
+ break;
+ case 3:
+ dye = ExtraBeeItems.BrownDye.get(1);
+ break;
+ case 4:
+ dye = ExtraBeeItems.BlueDye.get(1);
+ break;
+ case 11:
+ dye = ExtraBeeItems.YellowDye.get(1);
+ break;
+ case 15:
+ dye = ExtraBeeItems.WhiteDye.get(1);
+ }
+ type.addProduct(drop.get(1), 100);
+ drop.addRemenant(dye);
+ }
+ }
+
+ private static ItemStack getOreDictionary(String string)
+ {
+ if (OreDictionary.getOres(string).size() > 0) {
+ return (ItemStack)OreDictionary.getOres(string).get(0);
+ }
+ return null;
+ }
+
+ public int getColorFromItemStack(ItemStack itemStack, int j)
+ {
+ if (EnumHoneyComb.get(itemStack) == null) {
+ return 16777215;
+ }
+ if (j == 0) {
+ return EnumHoneyComb.get(itemStack).colour[0];
+ }
+ return EnumHoneyComb.get(itemStack).colour[1];
+ }
+
+ public static enum VanillaComb
+ {
+ HONEY, COCOA, SIMMERING, STRINGY, FROZEN, DRIPPING, SILKY, PARCHED, MYSTERIOUS, IRRADIATED, POWDERY, REDDENED, DARKENED, OMEGA, WHEATEN, MOSSY, QUARTZ;
+
+ private VanillaComb() {}
+
+ public ItemStack get()
+ {
+ return new ItemStack(Mods.Forestry.item("beeCombs"), 1, ordinal());
+ }
+ }
+
+ @SideOnly(Side.CLIENT)
+ public IIcon getIconFromDamageForRenderPass(int i, int j)
+ {
+ if (j > 0) {
+ return this.icon1;
+ }
+ return this.icon2;
+ }
+
+ @SideOnly(Side.CLIENT)
+ public void registerIcons(IIconRegister register)
+ {
+ this.icon1 = BinnieCore.proxy.getIcon(register, "forestry", "beeCombs.0");
+ this.icon2 = BinnieCore.proxy.getIcon(register, "forestry", "beeCombs.1");
+ }
+}
diff --git a/src/Java/binnie/extrabees/products/ItemHoneyCrystal.java b/src/Java/binnie/extrabees/products/ItemHoneyCrystal.java
new file mode 100644
index 0000000000..334342d49a
--- /dev/null
+++ b/src/Java/binnie/extrabees/products/ItemHoneyCrystal.java
@@ -0,0 +1,51 @@
+package binnie.extrabees.products;
+
+import binnie.extrabees.ExtraBees;
+import binnie.extrabees.proxy.ExtraBeesProxy;
+import cpw.mods.fml.relauncher.Side;
+import cpw.mods.fml.relauncher.SideOnly;
+import forestry.api.core.Tabs;
+import net.minecraft.client.renderer.texture.IIconRegister;
+import net.minecraft.item.Item;
+import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.NBTTagCompound;
+
+public class ItemHoneyCrystal
+ extends Item
+{
+ private int maxCharge = 8000;
+ private int transferLimit = 500;
+ private int tier = 1;
+
+ @SideOnly(Side.CLIENT)
+ public void registerIcons(IIconRegister register)
+ {
+ this.itemIcon = ExtraBees.proxy.getIcon(register, "honeyCrystal");
+ }
+
+ public ItemHoneyCrystal()
+ {
+ setMaxDamage(27);
+ setMaxStackSize(1);
+
+ setCreativeTab(Tabs.tabApiculture);
+ setUnlocalizedName("honeyCrystal");
+ }
+
+ public String getItemStackDisplayName(ItemStack i)
+ {
+ return ExtraBees.proxy.localise("item.honeycrystal");
+ }
+
+ public static NBTTagCompound getOrCreateNbtData(ItemStack itemStack)
+ {
+ NBTTagCompound ret = itemStack.getTagCompound();
+ if (ret == null)
+ {
+ ret = new NBTTagCompound();
+
+ itemStack.setTagCompound(ret);
+ }
+ return ret;
+ }
+}
diff --git a/src/Java/binnie/extrabees/products/ItemHoneyCrystalEmpty.java b/src/Java/binnie/extrabees/products/ItemHoneyCrystalEmpty.java
new file mode 100644
index 0000000000..03dad2115f
--- /dev/null
+++ b/src/Java/binnie/extrabees/products/ItemHoneyCrystalEmpty.java
@@ -0,0 +1,30 @@
+package binnie.extrabees.products;
+
+import binnie.extrabees.ExtraBees;
+import binnie.extrabees.proxy.ExtraBeesProxy;
+import cpw.mods.fml.relauncher.Side;
+import cpw.mods.fml.relauncher.SideOnly;
+import net.minecraft.client.renderer.texture.IIconRegister;
+import net.minecraft.item.ItemStack;
+
+public class ItemHoneyCrystalEmpty
+ extends ItemHoneyCrystal
+{
+ public ItemHoneyCrystalEmpty()
+ {
+ setMaxDamage(0);
+ setMaxStackSize(64);
+ setUnlocalizedName("honeyCrystalEmpty");
+ }
+
+ @SideOnly(Side.CLIENT)
+ public void registerIcons(IIconRegister register)
+ {
+ this.itemIcon = ExtraBees.proxy.getIcon(register, "honeyCrystalEmpty");
+ }
+
+ public String getItemStackDisplayName(ItemStack i)
+ {
+ return ExtraBees.proxy.localise("item.honeycrystal.empty");
+ }
+}
diff --git a/src/Java/binnie/extrabees/products/ItemHoneyDrop.java b/src/Java/binnie/extrabees/products/ItemHoneyDrop.java
new file mode 100644
index 0000000000..67abfed7cb
--- /dev/null
+++ b/src/Java/binnie/extrabees/products/ItemHoneyDrop.java
@@ -0,0 +1,55 @@
+package binnie.extrabees.products;
+
+import binnie.core.BinnieCore;
+import binnie.core.proxy.BinnieProxy;
+import cpw.mods.fml.relauncher.Side;
+import cpw.mods.fml.relauncher.SideOnly;
+import forestry.api.core.Tabs;
+import net.minecraft.client.renderer.texture.IIconRegister;
+import net.minecraft.item.ItemStack;
+import net.minecraft.util.IIcon;
+
+public class ItemHoneyDrop
+ extends ItemProduct
+{
+ IIcon icon1;
+ IIcon icon2;
+
+ @SideOnly(Side.CLIENT)
+ public boolean requiresMultipleRenderPasses()
+ {
+ return true;
+ }
+
+ public ItemHoneyDrop()
+ {
+ super(EnumHoneyDrop.values());
+ setCreativeTab(Tabs.tabApiculture);
+ setUnlocalizedName("honeyDrop");
+ }
+
+ public int getColorFromItemStack(ItemStack itemStack, int j)
+ {
+ int i = itemStack.getItemDamage();
+ if (j == 0) {
+ return EnumHoneyDrop.get(itemStack).colour[0];
+ }
+ return EnumHoneyDrop.get(itemStack).colour[1];
+ }
+
+ @SideOnly(Side.CLIENT)
+ public IIcon getIconFromDamageForRenderPass(int i, int j)
+ {
+ if (j > 0) {
+ return this.icon1;
+ }
+ return this.icon2;
+ }
+
+ @SideOnly(Side.CLIENT)
+ public void registerIcons(IIconRegister register)
+ {
+ this.icon1 = BinnieCore.proxy.getIcon(register, "forestry", "honeyDrop.0");
+ this.icon2 = BinnieCore.proxy.getIcon(register, "forestry", "honeyDrop.1");
+ }
+}
diff --git a/src/Java/binnie/extrabees/products/ItemProduct.java b/src/Java/binnie/extrabees/products/ItemProduct.java
new file mode 100644
index 0000000000..f2d6b16e35
--- /dev/null
+++ b/src/Java/binnie/extrabees/products/ItemProduct.java
@@ -0,0 +1,44 @@
+package binnie.extrabees.products;
+
+import binnie.core.item.IItemEnum;
+import java.util.List;
+import net.minecraft.creativetab.CreativeTabs;
+import net.minecraft.item.Item;
+import net.minecraft.item.ItemStack;
+
+public class ItemProduct
+ extends Item
+{
+ IItemEnum[] types;
+
+ public ItemProduct(IItemEnum[] types)
+ {
+ setMaxStackSize(64);
+ setMaxDamage(0);
+ setHasSubtypes(true);
+ this.types = types;
+ }
+
+ public IItemEnum get(ItemStack stack)
+ {
+ int i = stack.getItemDamage();
+ if ((i >= 0) && (i < this.types.length)) {
+ return this.types[i];
+ }
+ return this.types[0];
+ }
+
+ public String getItemStackDisplayName(ItemStack itemstack)
+ {
+ return get(itemstack).getName(itemstack);
+ }
+
+ public void getSubItems(Item par1, CreativeTabs par2CreativeTabs, List itemList)
+ {
+ for (IItemEnum type : this.types) {
+ if (type.isActive()) {
+ itemList.add(new ItemStack(this, 1, type.ordinal()));
+ }
+ }
+ }
+}
diff --git a/src/Java/binnie/extrabees/products/ItemPropolis.java b/src/Java/binnie/extrabees/products/ItemPropolis.java
new file mode 100644
index 0000000000..a66c10da46
--- /dev/null
+++ b/src/Java/binnie/extrabees/products/ItemPropolis.java
@@ -0,0 +1,35 @@
+package binnie.extrabees.products;
+
+import binnie.core.BinnieCore;
+import binnie.core.proxy.BinnieProxy;
+import cpw.mods.fml.relauncher.Side;
+import cpw.mods.fml.relauncher.SideOnly;
+import forestry.api.core.Tabs;
+import net.minecraft.client.renderer.texture.IIconRegister;
+import net.minecraft.item.ItemStack;
+
+public class ItemPropolis
+ extends ItemProduct
+{
+ public ItemPropolis()
+ {
+ super(EnumPropolis.values());
+ setCreativeTab(Tabs.tabApiculture);
+ setUnlocalizedName("propolis");
+ }
+
+ public int getColorFromItemStack(ItemStack itemStack, int j)
+ {
+ int i = itemStack.getItemDamage();
+ if (j == 0) {
+ return EnumPropolis.get(itemStack).colour[0];
+ }
+ return EnumPropolis.get(itemStack).colour[1];
+ }
+
+ @SideOnly(Side.CLIENT)
+ public void registerIcons(IIconRegister register)
+ {
+ this.itemIcon = BinnieCore.proxy.getIcon(register, "forestry", "propolis.0");
+ }
+}
diff --git a/src/Java/binnie/extrabees/products/ModuleProducts.java b/src/Java/binnie/extrabees/products/ModuleProducts.java
new file mode 100644
index 0000000000..7d2386872a
--- /dev/null
+++ b/src/Java/binnie/extrabees/products/ModuleProducts.java
@@ -0,0 +1,43 @@
+package binnie.extrabees.products;
+
+import binnie.core.IInitializable;
+import binnie.core.Mods;
+import binnie.core.Mods.Mod;
+import binnie.extrabees.ExtraBees;
+import cpw.mods.fml.common.registry.GameRegistry;
+import net.minecraft.init.Items;
+import net.minecraft.item.ItemStack;
+import net.minecraftforge.oredict.OreDictionary;
+
+public class ModuleProducts
+ implements IInitializable
+{
+ public void preInit()
+ {
+ ExtraBees.honeyCrystal = new ItemHoneyCrystal();
+ ExtraBees.honeyCrystalEmpty = new ItemHoneyCrystalEmpty();
+ ExtraBees.honeyDrop = new ItemHoneyDrop();
+ ExtraBees.comb = new ItemHoneyComb();
+ ExtraBees.propolis = new ItemPropolis();
+
+ OreDictionary.registerOre("ingotIron", Items.iron_ingot);
+ OreDictionary.registerOre("ingotGold", Items.gold_ingot);
+ OreDictionary.registerOre("gemDiamond", Items.diamond);
+ }
+
+ public void init() {}
+
+ public void postInit()
+ {
+ GameRegistry.addRecipe(new ItemStack(ExtraBees.honeyCrystalEmpty), new Object[] { "#@#", "@#@", "#@#", Character.valueOf('@'), Mods.Forestry.stack("honeyDrop"), Character.valueOf('#'), EnumHoneyDrop.ENERGY.get(1) });
+ for (EnumHoneyComb info : EnumHoneyComb.values()) {
+ info.addRecipe();
+ }
+ for (EnumHoneyDrop info : EnumHoneyDrop.values()) {
+ info.addRecipe();
+ }
+ for (EnumPropolis info : EnumPropolis.values()) {
+ info.addRecipe();
+ }
+ }
+}
diff --git a/src/Java/binnie/extrabees/proxy/ExtraBeesProxy.java b/src/Java/binnie/extrabees/proxy/ExtraBeesProxy.java
new file mode 100644
index 0000000000..2b7499f94a
--- /dev/null
+++ b/src/Java/binnie/extrabees/proxy/ExtraBeesProxy.java
@@ -0,0 +1,13 @@
+package binnie.extrabees.proxy;
+
+import binnie.core.proxy.BinnieModProxy;
+import binnie.extrabees.ExtraBees;
+
+public class ExtraBeesProxy
+ extends BinnieModProxy
+{
+ public ExtraBeesProxy()
+ {
+ super(ExtraBees.instance);
+ }
+}
diff --git a/src/Java/binnie/extrabees/proxy/ExtraBeesProxyClient.java b/src/Java/binnie/extrabees/proxy/ExtraBeesProxyClient.java
new file mode 100644
index 0000000000..87198021d2
--- /dev/null
+++ b/src/Java/binnie/extrabees/proxy/ExtraBeesProxyClient.java
@@ -0,0 +1,5 @@
+package binnie.extrabees.proxy;
+
+public class ExtraBeesProxyClient
+ extends ExtraBeesProxy
+{}
diff --git a/src/Java/binnie/extrabees/proxy/ExtraBeesProxyServer.java b/src/Java/binnie/extrabees/proxy/ExtraBeesProxyServer.java
new file mode 100644
index 0000000000..f8aae382a5
--- /dev/null
+++ b/src/Java/binnie/extrabees/proxy/ExtraBeesProxyServer.java
@@ -0,0 +1,5 @@
+package binnie.extrabees.proxy;
+
+public class ExtraBeesProxyServer
+ extends ExtraBeesProxy
+{}
diff --git a/src/Java/binnie/extrabees/worldgen/BlockExtraBeeHive.java b/src/Java/binnie/extrabees/worldgen/BlockExtraBeeHive.java
new file mode 100644
index 0000000000..1923c93283
--- /dev/null
+++ b/src/Java/binnie/extrabees/worldgen/BlockExtraBeeHive.java
@@ -0,0 +1,109 @@
+package binnie.extrabees.worldgen;
+
+import binnie.extrabees.ExtraBees;
+import binnie.extrabees.proxy.ExtraBeesProxy;
+import cpw.mods.fml.relauncher.Side;
+import cpw.mods.fml.relauncher.SideOnly;
+import forestry.api.apiculture.IHiveDrop;
+import forestry.api.core.Tabs;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Random;
+import net.minecraft.block.Block;
+import net.minecraft.client.renderer.texture.IIconRegister;
+import net.minecraft.creativetab.CreativeTabs;
+import net.minecraft.item.Item;
+import net.minecraft.item.ItemStack;
+import net.minecraft.util.IIcon;
+import net.minecraft.world.World;
+
+public class BlockExtraBeeHive
+ extends Block
+{
+ IIcon[][] icons;
+
+ public BlockExtraBeeHive()
+ {
+ super(ExtraBees.materialBeehive);
+ setLightLevel(0.2F);
+ setHardness(1.0F);
+ setTickRandomly(true);
+ setBlockName("hive");
+
+ setCreativeTab(Tabs.tabApiculture);
+ }
+
+ public String getUnlocalizedName(ItemStack par1ItemStack)
+ {
+ return "extrabees.block.hive." + par1ItemStack.getItemDamage();
+ }
+
+ public void getSubBlocks(Item par1, CreativeTabs par2CreativeTabs, List itemList)
+ {
+ for (int i = 0; i < 4; i++) {
+ itemList.add(new ItemStack(this, 1, i));
+ }
+ }
+
+ public IIcon getIcon(int side, int metadata)
+ {
+ if (metadata >= EnumHiveType.values().length) {
+ return null;
+ }
+ if (side < 2) {
+ return this.icons[metadata][1];
+ }
+ return this.icons[metadata][0];
+ }
+
+ @SideOnly(Side.CLIENT)
+ public void registerBlockIcons(IIconRegister register)
+ {
+ this.icons = new IIcon[EnumHiveType.values().length][2];
+ for (EnumHiveType hive : EnumHiveType.values())
+ {
+ this.icons[hive.ordinal()][0] = ExtraBees.proxy.getIcon(register, "hive/" + hive.toString().toLowerCase() + ".0");
+ this.icons[hive.ordinal()][1] = ExtraBees.proxy.getIcon(register, "hive/" + hive.toString().toLowerCase() + ".1");
+ }
+ }
+
+ public ArrayList<ItemStack> getDrops(World world, int x, int y, int z, int metadata, int fortune)
+ {
+ ArrayList<ItemStack> ret = new ArrayList();
+
+ List<IHiveDrop> dropList = EnumHiveType.values()[metadata].drops;
+
+ Collections.shuffle(dropList);
+
+ int tries = 0;
+ boolean hasPrincess = false;
+ while ((tries <= 10) && (!hasPrincess))
+ {
+ tries++;
+ for (IHiveDrop drop : dropList) {
+ if (world.rand.nextInt(100) < drop.getChance(world, x, y, z))
+ {
+ ret.add(drop.getPrincess(world, x, y, z, fortune));
+ hasPrincess = true;
+ break;
+ }
+ }
+ }
+ for (IHiveDrop drop : dropList) {
+ if (world.rand.nextInt(100) < drop.getChance(world, x, y, z))
+ {
+ ret.addAll(drop.getDrones(world, x, y, z, fortune));
+ break;
+ }
+ }
+ for (IHiveDrop drop : dropList) {
+ if (world.rand.nextInt(100) < drop.getChance(world, x, y, z))
+ {
+ ret.addAll(drop.getAdditional(world, x, y, z, fortune));
+ break;
+ }
+ }
+ return ret;
+ }
+}
diff --git a/src/Java/binnie/extrabees/worldgen/EnumHiveType.java b/src/Java/binnie/extrabees/worldgen/EnumHiveType.java
new file mode 100644
index 0000000000..d115afb24f
--- /dev/null
+++ b/src/Java/binnie/extrabees/worldgen/EnumHiveType.java
@@ -0,0 +1,14 @@
+package binnie.extrabees.worldgen;
+
+import forestry.api.apiculture.IHiveDrop;
+import java.util.ArrayList;
+import java.util.List;
+
+public enum EnumHiveType
+{
+ Water, Rock, Nether, Marble;
+
+ public List<IHiveDrop> drops = new ArrayList();
+
+ private EnumHiveType() {}
+}
diff --git a/src/Java/binnie/extrabees/worldgen/HiveDrop.java b/src/Java/binnie/extrabees/worldgen/HiveDrop.java
new file mode 100644
index 0000000000..10d8db4c26
--- /dev/null
+++ b/src/Java/binnie/extrabees/worldgen/HiveDrop.java
@@ -0,0 +1,65 @@
+package binnie.extrabees.worldgen;
+
+import binnie.Binnie;
+import binnie.core.genetics.ManagerGenetics;
+import forestry.api.apiculture.EnumBeeType;
+import forestry.api.apiculture.IAlleleBeeSpecies;
+import forestry.api.apiculture.IBeeRoot;
+import forestry.api.apiculture.IHiveDrop;
+import forestry.api.genetics.IAllele;
+import java.util.ArrayList;
+import net.minecraft.item.ItemStack;
+import net.minecraft.world.World;
+
+public class HiveDrop
+ implements IHiveDrop
+{
+ private IAllele[] template;
+ private ArrayList<ItemStack> additional = new ArrayList();
+ private int chance;
+
+ public HiveDrop(IAlleleBeeSpecies species, int chance)
+ {
+ this(Binnie.Genetics.getBeeRoot().getTemplate(species.getUID()), new ItemStack[0], chance);
+ }
+
+ public HiveDrop(IAllele[] template, ItemStack[] bonus, int chance)
+ {
+ if (template == null) {
+ template = Binnie.Genetics.getBeeRoot().getDefaultTemplate();
+ }
+ this.template = template;
+ this.chance = chance;
+ for (ItemStack stack : bonus) {
+ this.additional.add(stack);
+ }
+ }
+
+ public ItemStack getPrincess(World world, int x, int y, int z, int fortune)
+ {
+ return Binnie.Genetics.getBeeRoot().getMemberStack(Binnie.Genetics.getBeeRoot().getBee(world, Binnie.Genetics.getBeeRoot().templateAsGenome(this.template)), EnumBeeType.PRINCESS.ordinal());
+ }
+
+ public ArrayList<ItemStack> getDrones(World world, int x, int y, int z, int fortune)
+ {
+ ArrayList<ItemStack> ret = new ArrayList();
+ ret.add(Binnie.Genetics.getBeeRoot().getMemberStack(Binnie.Genetics.getBeeRoot().templateAsIndividual(this.template), EnumBeeType.DRONE.ordinal()));
+
+
+ return ret;
+ }
+
+ public ArrayList<ItemStack> getAdditional(World world, int x, int y, int z, int fortune)
+ {
+ ArrayList<ItemStack> ret = new ArrayList();
+ for (ItemStack stack : this.additional) {
+ ret.add(stack.copy());
+ }
+ return ret;
+ }
+
+ public int getChance(World world, int x, int y, int z)
+ {
+ return this.chance;
+ }
+}
diff --git a/src/Java/binnie/extrabees/worldgen/ItemBeehive.java b/src/Java/binnie/extrabees/worldgen/ItemBeehive.java
new file mode 100644
index 0000000000..e853a055b3
--- /dev/null
+++ b/src/Java/binnie/extrabees/worldgen/ItemBeehive.java
@@ -0,0 +1,37 @@
+package binnie.extrabees.worldgen;
+
+import java.util.List;
+import net.minecraft.block.Block;
+import net.minecraft.creativetab.CreativeTabs;
+import net.minecraft.item.Item;
+import net.minecraft.item.ItemBlock;
+import net.minecraft.item.ItemStack;
+
+public class ItemBeehive
+ extends ItemBlock
+{
+ public ItemBeehive(Block block)
+ {
+ super(block);
+ setMaxDamage(0);
+ setHasSubtypes(true);
+ setCreativeTab(CreativeTabs.tabBlock);
+ }
+
+ public int getMetadata(int i)
+ {
+ return i;
+ }
+
+ public void getSubItems(Item par1, CreativeTabs par2CreativeTabs, List itemList)
+ {
+ for (int i = 0; i < 4; i++) {
+ itemList.add(new ItemStack(this, 1, i));
+ }
+ }
+
+ public String getItemStackDisplayName(ItemStack itemStack)
+ {
+ return EnumHiveType.values()[itemStack.getItemDamage()].toString() + " Hive";
+ }
+}
diff --git a/src/Java/binnie/extrabees/worldgen/MaterialBeehive.java b/src/Java/binnie/extrabees/worldgen/MaterialBeehive.java
new file mode 100644
index 0000000000..b94960c494
--- /dev/null
+++ b/src/Java/binnie/extrabees/worldgen/MaterialBeehive.java
@@ -0,0 +1,20 @@
+package binnie.extrabees.worldgen;
+
+import net.minecraft.block.material.MapColor;
+import net.minecraft.block.material.Material;
+
+public class MaterialBeehive
+ extends Material
+{
+ public MaterialBeehive()
+ {
+ super(MapColor.stoneColor);
+ setRequiresTool();
+ setImmovableMobility();
+ }
+
+ public boolean isOpaque()
+ {
+ return true;
+ }
+}
diff --git a/src/Java/binnie/extrabees/worldgen/ModuleGeneration.java b/src/Java/binnie/extrabees/worldgen/ModuleGeneration.java
new file mode 100644
index 0000000000..8708ca7bf7
--- /dev/null
+++ b/src/Java/binnie/extrabees/worldgen/ModuleGeneration.java
@@ -0,0 +1,85 @@
+package binnie.extrabees.worldgen;
+
+import binnie.core.IInitializable;
+import binnie.core.genetics.ForestryAllele.BeeSpecies;
+import binnie.extrabees.ExtraBees;
+import binnie.extrabees.config.ConfigurationMain;
+import binnie.extrabees.genetics.ExtraBeesSpecies;
+import buildcraft.api.core.BuildCraftAPI;
+import cpw.mods.fml.common.IWorldGenerator;
+import cpw.mods.fml.common.registry.GameRegistry;
+import java.util.List;
+import java.util.Random;
+import java.util.Set;
+import net.minecraft.block.Block;
+import net.minecraft.world.World;
+import net.minecraft.world.chunk.IChunkProvider;
+
+public class ModuleGeneration
+ implements IWorldGenerator, IInitializable
+{
+ static int waterRate = 2;
+ static int rockRate = 2;
+ static int netherRate = 2;
+ static int marbleRate = 2;
+
+ public void preInit()
+ {
+ ExtraBees.materialBeehive = new MaterialBeehive();
+ ExtraBees.hive = new BlockExtraBeeHive();
+ GameRegistry.registerBlock(ExtraBees.hive, ItemBeehive.class, "hive");
+ }
+
+ public void init()
+ {
+ waterRate = ConfigurationMain.waterHiveRate;
+ rockRate = ConfigurationMain.rockHiveRate;
+ netherRate = ConfigurationMain.netherHiveRate;
+ GameRegistry.registerWorldGenerator(new ModuleGeneration(), 0);
+ if (!ConfigurationMain.canQuarryMineHives) {
+ BuildCraftAPI.softBlocks.add(ExtraBees.hive);
+ }
+ }
+
+ public void postInit()
+ {
+ EnumHiveType.Water.drops.add(new HiveDrop(ExtraBeesSpecies.WATER, 80));
+ EnumHiveType.Water.drops.add(new HiveDrop(ForestryAllele.BeeSpecies.Valiant.getAllele(), 3));
+ EnumHiveType.Rock.drops.add(new HiveDrop(ExtraBeesSpecies.ROCK, 80));
+ EnumHiveType.Rock.drops.add(new HiveDrop(ForestryAllele.BeeSpecies.Valiant.getAllele(), 3));
+ EnumHiveType.Nether.drops.add(new HiveDrop(ExtraBeesSpecies.BASALT, 80));
+ EnumHiveType.Nether.drops.add(new HiveDrop(ForestryAllele.BeeSpecies.Valiant.getAllele(), 3));
+
+ ExtraBees.hive.setHarvestLevel("scoop", 0, 0);
+ ExtraBees.hive.setHarvestLevel("scoop", 0, 1);
+ ExtraBees.hive.setHarvestLevel("scoop", 0, 2);
+ ExtraBees.hive.setHarvestLevel("scoop", 0, 3);
+ }
+
+ public void generate(Random rand, int chunkX, int chunkZ, World world, IChunkProvider chunkGenerator, IChunkProvider chunkProvider)
+ {
+ chunkX <<= 4;
+ chunkZ <<= 4;
+ for (int i = 0; i < waterRate; i++)
+ {
+ int randPosX = chunkX + rand.nextInt(16);
+ int randPosY = rand.nextInt(50) + 20;
+ int randPosZ = chunkZ + rand.nextInt(16);
+ new WorldGenHiveWater().generate(world, rand, randPosX, randPosY, randPosZ);
+ }
+ for (int i = 0; i < rockRate; i++)
+ {
+ int randPosX = chunkX + rand.nextInt(16);
+ int randPosY = rand.nextInt(50) + 20;
+ int randPosZ = chunkZ + rand.nextInt(16);
+ new WorldGenHiveRock().generate(world, rand, randPosX, randPosY, randPosZ);
+ }
+ for (int i = 0; i < netherRate; i++)
+ {
+ int randPosX = chunkX + rand.nextInt(16);
+ int randPosY = rand.nextInt(50) + 20;
+ int randPosZ = chunkZ + rand.nextInt(16);
+ new WorldGenHiveNether().generate(world, rand, randPosX, randPosY, randPosZ);
+ }
+ }
+}
diff --git a/src/Java/binnie/extrabees/worldgen/WorldGenHiveNether.java b/src/Java/binnie/extrabees/worldgen/WorldGenHiveNether.java
new file mode 100644
index 0000000000..4585adde12
--- /dev/null
+++ b/src/Java/binnie/extrabees/worldgen/WorldGenHiveNether.java
@@ -0,0 +1,33 @@
+package binnie.extrabees.worldgen;
+
+import binnie.extrabees.ExtraBees;
+import java.util.Random;
+import net.minecraft.block.Block;
+import net.minecraft.init.Blocks;
+import net.minecraft.world.World;
+import net.minecraft.world.biome.BiomeGenBase;
+import net.minecraft.world.biome.WorldChunkManager;
+import net.minecraft.world.gen.feature.WorldGenerator;
+import net.minecraftforge.common.BiomeDictionary;
+import net.minecraftforge.common.BiomeDictionary.Type;
+
+public class WorldGenHiveNether
+ extends WorldGenerator
+{
+ public boolean generate(World world, Random random, int i, int j, int k)
+ {
+ BiomeGenBase biome = world.getWorldChunkManager().getBiomeGenAt(i, k);
+ if (!BiomeDictionary.isBiomeOfType(biome, BiomeDictionary.Type.NETHER)) {
+ return true;
+ }
+ if (embedInWall(world, Blocks.netherrack, i, j, k)) {
+ world.setBlock(i, j, k, ExtraBees.hive, 2, 0);
+ }
+ return true;
+ }
+
+ public boolean embedInWall(World world, Block blockID, int i, int j, int k)
+ {
+ return (world.getBlock(i, j, k) == blockID) && (world.getBlock(i, j + 1, k) == blockID) && (world.getBlock(i, j - 1, k) == blockID) && ((world.isAirBlock(i + 1, j, k)) || (world.isAirBlock(i - 1, j, k)) || (world.isAirBlock(i, j, k + 1)) || (world.isAirBlock(i, j, k - 1)));
+ }
+}
diff --git a/src/Java/binnie/extrabees/worldgen/WorldGenHiveRock.java b/src/Java/binnie/extrabees/worldgen/WorldGenHiveRock.java
new file mode 100644
index 0000000000..e6598fdcb7
--- /dev/null
+++ b/src/Java/binnie/extrabees/worldgen/WorldGenHiveRock.java
@@ -0,0 +1,27 @@
+package binnie.extrabees.worldgen;
+
+import binnie.extrabees.ExtraBees;
+import java.util.Random;
+import net.minecraft.block.Block;
+import net.minecraft.init.Blocks;
+import net.minecraft.world.World;
+import net.minecraft.world.biome.BiomeGenBase;
+import net.minecraft.world.biome.WorldChunkManager;
+import net.minecraft.world.gen.feature.WorldGenerator;
+
+public class WorldGenHiveRock
+ extends WorldGenerator
+{
+ public boolean generate(World world, Random random, int i, int j, int k)
+ {
+ BiomeGenBase biome = world.getWorldChunkManager().getBiomeGenAt(i, k);
+ Block block = world.getBlock(i, j, k);
+ if (block == null) {
+ return true;
+ }
+ if (block.isReplaceableOreGen(world, i, j, k, Blocks.stone)) {
+ world.setBlock(i, j, k, ExtraBees.hive, 1, 0);
+ }
+ return true;
+ }
+}
diff --git a/src/Java/binnie/extrabees/worldgen/WorldGenHiveWater.java b/src/Java/binnie/extrabees/worldgen/WorldGenHiveWater.java
new file mode 100644
index 0000000000..f672945288
--- /dev/null
+++ b/src/Java/binnie/extrabees/worldgen/WorldGenHiveWater.java
@@ -0,0 +1,31 @@
+package binnie.extrabees.worldgen;
+
+import binnie.extrabees.ExtraBees;
+import java.util.Random;
+import net.minecraft.block.Block;
+import net.minecraft.block.material.Material;
+import net.minecraft.init.Blocks;
+import net.minecraft.world.World;
+import net.minecraft.world.biome.BiomeGenBase;
+import net.minecraft.world.biome.WorldChunkManager;
+import net.minecraft.world.gen.feature.WorldGenerator;
+
+public class WorldGenHiveWater
+ extends WorldGenerator
+{
+ public boolean generate(World world, Random random, int i, int j, int k)
+ {
+ BiomeGenBase biome = world.getWorldChunkManager().getBiomeGenAt(i, k);
+
+ int i1 = i + random.nextInt(8) - random.nextInt(8);
+ int j1 = j + random.nextInt(4) - random.nextInt(4);
+ int k1 = k + random.nextInt(8) - random.nextInt(8);
+ if ((world.getBlock(i1, j1, k1) != Blocks.water) && (world.getBlock(i1, j1, k1) != Blocks.water)) {
+ return false;
+ }
+ if ((world.getBlock(i1, j1 - 1, k1).getMaterial() == Material.sand) || (world.getBlock(i1, j1 - 1, k1).getMaterial() == Material.clay) || (world.getBlock(i1, j1 - 1, k1).getMaterial() == Material.ground) || (world.getBlock(i1, j1 - 1, k1).getMaterial() == Material.rock)) {
+ world.setBlock(i1, j1, k1, ExtraBees.hive, 0, 0);
+ }
+ return true;
+ }
+}
diff --git a/src/Java/mcmod.info b/src/Java/mcmod.info
new file mode 100644
index 0000000000..0c2b859007
--- /dev/null
+++ b/src/Java/mcmod.info
@@ -0,0 +1,19 @@
+/**
+ * @version 0.1
+ * @author Alkalus
+ * In-game info for project: Hello World.
+ */
+[ { "modid" : "miscutils"
+ , "name" : "miscutils"
+ , "description" : "Adds a few various things. Supported mods include GregTech, EnderIO, Big Reactors, Thaumcraft, ExtraUtils, Pnuematicraft & Simply Jetpacks."
+ , "version" : "0.7.8gtu"
+ , "mcversion" : "1.7.10"
+ , "url" : ""
+ , "updateUrl" : ""
+ , "authorList" : ["Alkalus"]
+ , "credits" : ""
+ , "logoFile" : ""
+ , "screenshots" : []
+ , "dependencies" : ["Forge10.13.0.1180"]
+ }
+]
diff --git a/src/Java/miscutil/MiscUtils.java b/src/Java/miscutil/MiscUtils.java
new file mode 100644
index 0000000000..518d570d67
--- /dev/null
+++ b/src/Java/miscutil/MiscUtils.java
@@ -0,0 +1,118 @@
+package miscutil;
+
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+
+import miscutil.core.CommonProxy;
+import miscutil.core.commands.CommandMath;
+import miscutil.core.creativetabs.TMCreativeTabs;
+import miscutil.core.handler.CraftingManager;
+import miscutil.core.lib.Strings;
+import miscutil.core.util.Utils;
+import net.minecraftforge.common.MinecraftForge;
+import cpw.mods.fml.common.FMLCommonHandler;
+import cpw.mods.fml.common.Mod;
+import cpw.mods.fml.common.Mod.EventHandler;
+import cpw.mods.fml.common.SidedProxy;
+import cpw.mods.fml.common.event.FMLInitializationEvent;
+import cpw.mods.fml.common.event.FMLPostInitializationEvent;
+import cpw.mods.fml.common.event.FMLPreInitializationEvent;
+import cpw.mods.fml.common.event.FMLServerStartingEvent;
+import cpw.mods.fml.common.event.FMLServerStoppingEvent;
+
+@Mod(modid=Strings.MODID, name="Misc. Utils", version=Strings.VERSION, dependencies="required-after:gregtech")
+public class MiscUtils
+implements ActionListener
+{
+
+ //Vars
+
+
+ @Mod.Instance(Strings.MODID)
+ public static MiscUtils instance;
+
+ @SidedProxy(clientSide="miscutil.core.proxy.ClientProxy", serverSide="miscutil.core.proxy.ServerProxy")
+ public static CommonProxy proxy;
+
+
+ //Pre-Init
+ @Mod.EventHandler
+ public void preInit(FMLPreInitializationEvent event)
+ {
+
+ Utils.LOG_INFO("Doing some house cleaning.");
+ TMCreativeTabs.initialiseTabs();
+ //TMEntity.mainRegistry();
+ CraftingManager.mainRegistry();
+ //TMWorld.mainRegistry();
+ //TMHooks.mainRegistry();
+ proxy.registerTileEntities();
+ proxy.registerRenderThings();
+ proxy.preInit(event);
+
+
+
+ }
+
+ //Init
+ @Mod.EventHandler
+ public void init(FMLInitializationEvent event)
+ {
+ /* Utils.LOG_INFO("Double checking floating point precision.");
+ try {
+ Thread.sleep(100);
+ Benchmark GammeRayBurst = new Benchmark();
+ GammeRayBurst.math();
+ } catch (InterruptedException | ParseException | NumberFormatException | UnknownFormatConversionException | MissingFormatArgumentException e) {
+ if (Strings.DEBUG){
+ e.printStackTrace();
+ Utils.LOG_INFO("Math went wrong somewhere.");
+ }
+ ;
+ }*/
+ proxy.init(event);
+ /*if (Strings.DEBUG){
+ Benchmark GammeRayBurst = new Benchmark();
+ String Insight = GammeRayBurst.superhash("This is Absolution");
+ FMLLog.info(Insight);
+ Utils.LOG_INFO("Math is ok.");
+ }*/
+
+ MinecraftForge.EVENT_BUS.register(this);
+ FMLCommonHandler.instance().bus().register(this);
+ proxy.registerNetworkStuff();
+ }
+
+ //Post-Init
+ @Mod.EventHandler
+ public void postInit(FMLPostInitializationEvent event) {
+ Utils.LOG_INFO("Tidying things up.");
+ proxy.postInit(event);
+ }
+
+ @EventHandler
+ public void serverStarting(FMLServerStartingEvent event)
+ {
+
+ event.registerServerCommand(new CommandMath());
+
+ //while (Strings.DEBUG){
+ //Thread.setDefaultUncaughtExceptionHandler(null);
+ //}
+
+ }
+
+ @Mod.EventHandler
+ public void serverStopping(FMLServerStoppingEvent event)
+ {
+
+
+ }
+
+ @Override
+ public void actionPerformed(ActionEvent arg0) {
+ // TODO Auto-generated method stub
+
+ }
+
+}
diff --git a/src/Java/miscutil/core/CommonProxy.java b/src/Java/miscutil/core/CommonProxy.java
new file mode 100644
index 0000000000..8b0f6c8b2a
--- /dev/null
+++ b/src/Java/miscutil/core/CommonProxy.java
@@ -0,0 +1,70 @@
+package miscutil.core;
+
+import miscutil.core.block.ModBlocks;
+import miscutil.core.gui.ModGUI;
+import miscutil.core.item.ModItems;
+import miscutil.core.lib.Strings;
+import miscutil.core.tileentities.ModTileEntities;
+import miscutil.core.util.Utils;
+import miscutil.gregtech.init.InitGregtech;
+import cpw.mods.fml.common.Loader;
+import cpw.mods.fml.common.event.FMLInitializationEvent;
+import cpw.mods.fml.common.event.FMLPostInitializationEvent;
+import cpw.mods.fml.common.event.FMLPreInitializationEvent;
+
+public class CommonProxy {
+
+ public void preInit(FMLPreInitializationEvent e) {
+ ModItems.init();
+ ModBlocks.init();
+
+
+ //Register Gregtech related items
+ if (Loader.isModLoaded("gregtech") == true) {
+ Utils.LOG_INFO("Gregtech Found - Loading Resources.");
+ Strings.GREGTECH = true;
+ Utils.LOG_INFO("Begining registration & initialization of Gregtech related content.");
+ // Init Gregtech
+ InitGregtech.run();
+
+ }
+ else {
+ Utils.LOG_WARNING("Gregtech not Found - Skipping Resources.");
+ Strings.GREGTECH = false;
+ }
+
+ }
+
+ public void init(FMLInitializationEvent e) {
+
+
+
+ }
+
+ public void postInit(FMLPostInitializationEvent e) {
+
+ }
+
+ public void registerNetworkStuff(){
+ ModGUI.init();
+ //NetworkRegistry.INSTANCE.registerGuiHandler(MiscUtils.instance, new BloodSteelFurnaceGuiHandler());
+
+ }
+
+ public void registerTileEntities(){
+ ModTileEntities.init();
+ //GameRegistry.registerTileEntity(TileEntityBloodSteelChest.class, "tileEntityBloodSteelChest");
+ //GameRegistry.registerTileEntity(TileEntityBloodSteelFurnace.class, "tileEntityBloodSteelFurnace");
+ //GameRegistry.registerTileEntity(TileEntityBloodSteelChest.class, Strings.MODID);
+ //GameRegistry.registerTileEntity(TileEntityArcaneInfuser.class, "TileEntityArcaneInfuser");
+ }
+
+ public void registerRenderThings() {
+
+ }
+
+ public int addArmor(String armor) {
+ return 0;
+ }
+
+}
diff --git a/src/Java/miscutil/core/block/AdvancedBlock.java b/src/Java/miscutil/core/block/AdvancedBlock.java
new file mode 100644
index 0000000000..2a81341838
--- /dev/null
+++ b/src/Java/miscutil/core/block/AdvancedBlock.java
@@ -0,0 +1,31 @@
+package miscutil.core.block;
+
+import miscutil.core.lib.Strings;
+import net.minecraft.block.Block;
+import net.minecraft.block.material.Material;
+import net.minecraft.creativetab.CreativeTabs;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.world.World;
+
+public class AdvancedBlock extends Block {
+
+ protected AdvancedBlock(String unlocalizedName, Material material, CreativeTabs x, float blockHardness, float blockResistance, float blockLightLevel,
+ String blockHarvestTool, int blockHarvestLevel, SoundType BlockSound) {
+ super(material);
+ this.setBlockName(unlocalizedName);
+ this.setBlockTextureName(Strings.MODID + ":" + unlocalizedName);
+ this.setCreativeTab(x);
+ this.setHardness(blockHardness); //block Hardness
+ this.setResistance(blockResistance);
+ this.setLightLevel(blockLightLevel);
+ this.setHarvestLevel(blockHarvestTool, blockHarvestLevel);
+ this.setStepSound(BlockSound);
+ }
+
+ @Override
+ public boolean onBlockActivated(World p_149727_1_, int p_149727_2_, int p_149727_3_, int p_149727_4_, EntityPlayer p_149727_5_, int p_149727_6_, float p_149727_7_, float p_149727_8_, float p_149727_9_)
+ {
+ return false;
+ }
+
+}
diff --git a/src/Java/miscutil/core/block/BasicBlock.java b/src/Java/miscutil/core/block/BasicBlock.java
new file mode 100644
index 0000000000..63c1044b03
--- /dev/null
+++ b/src/Java/miscutil/core/block/BasicBlock.java
@@ -0,0 +1,22 @@
+package miscutil.core.block;
+
+import miscutil.core.creativetabs.TMCreativeTabs;
+import miscutil.core.lib.Strings;
+import net.minecraft.block.Block;
+import net.minecraft.block.material.Material;
+
+public class BasicBlock extends Block {
+
+ protected BasicBlock(String unlocalizedName, Material material) {
+ super(material);
+ this.setBlockName(unlocalizedName);
+ this.setBlockTextureName(Strings.MODID + ":" + unlocalizedName);
+ this.setCreativeTab(TMCreativeTabs.tabBlock);
+ this.setHardness(2.0F);
+ this.setResistance(6.0F);
+ this.setLightLevel(0.0F);
+ this.setHarvestLevel("pickaxe", 2);
+ this.setStepSound(soundTypeMetal);
+ }
+
+}
diff --git a/src/Java/miscutil/core/block/ModBlocks.java b/src/Java/miscutil/core/block/ModBlocks.java
new file mode 100644
index 0000000000..7f1df843be
--- /dev/null
+++ b/src/Java/miscutil/core/block/ModBlocks.java
@@ -0,0 +1,90 @@
+package miscutil.core.block;
+
+import miscutil.core.util.Utils;
+import net.minecraft.block.Block;
+import net.minecraft.block.material.Material;
+import cpw.mods.fml.common.registry.GameRegistry;
+
+public final class ModBlocks {
+
+ //Blood Steel
+ public static Block blockBloodSteel;
+ public static Block blockStaballoy;
+ public static Block blockToolBuilder;
+ //public static Block blockBloodSteelChest;
+
+ //BloodSteelorial Furnace
+ //public static Block tutFurnace;
+ //public static Block tutFurnaceActive;
+
+ //BloodSteelorial Chest
+ //public static Block tutChest;
+
+ //Arcane Infuser
+ //public static Block arcaneInfuser;
+ //public static Block arcaneInfuserActive;
+
+ //Block Storage
+ //public static Block emxBlockStorage;
+
+
+ public static void init() {
+ Utils.LOG_INFO("Initializing Blocks.");
+ //BloodSteelorial Furnace - Must Init blocks first as they're not static.
+ /** if (Strings.DEBUG){
+ FMLLog.info("Loading Furnace.");}
+ tutFurnace= new BloodSteelFurnace(false).setBlockName("BloodSteelFurnace").setCreativeTab(TMCreativeTabs.tabBlock);
+ tutFurnaceActive= new BloodSteelFurnace(true).setBlockName("BloodSteelFurnaceActive");
+
+ //Arcane Infuser - Must Init blocks first as they're not static.
+ if (Strings.DEBUG){
+ FMLLog.info("Loading Arcane Infuser.");}
+ arcaneInfuser = new ArcaneInfuser(false).setBlockName("ArcaneInfuser").setCreativeTab(TMCreativeTabs.tabBlock);
+ arcaneInfuserActive = new ArcaneInfuser(true).setBlockName("ArcaneInfuserActive");
+
+ //Blood Steel Chest
+ if (Strings.DEBUG){
+ FMLLog.info("Loading Blood Steel Chest.");}
+ tutChest = new BloodSteelChest(0).setBlockName("BloodSteelChest").setCreativeTab(TMCreativeTabs.tabBlock);
+
+ */
+ //BlockStorage
+ //emxBlockStorage = new BlockStorage();
+
+ //Register Blocks next - TODO
+ registerBlocks();
+ }
+
+ public static void registerBlocks(){
+
+ Utils.LOG_INFO("Registering Blocks.");
+
+ //Blood Steel Block
+ GameRegistry.registerBlock(blockBloodSteel = new BasicBlock("blockBloodSteel", Material.iron), "blockBloodSteel");
+
+ //Staballoy Block
+ GameRegistry.registerBlock(blockStaballoy = new BasicBlock("blockStaballoy", Material.iron), "blockStaballoy");
+
+ //Blood Steel Block //Name, Material, Hardness, Resistance, Light level, Tool, tool level, sound
+ //GameRegistry.registerBlock(blockToolBuilder = new AdvancedBlock("blockToolBuilder", Material.circuits, TMCreativeTabs.tabMachines, 1F, 5F, 0F, "pickaxe", 1, Block.soundTypeWood), "blockToolBuilder");
+
+ /** TODO re-enable blocks when working.
+
+
+ //Blood Steel Chest
+ GameRegistry.registerBlock(tutChest, tutChest.getUnlocalizedName());
+
+ //BloodSteelorial Furnace
+ GameRegistry.registerBlock(tutFurnace, tutFurnace.getUnlocalizedName());
+ GameRegistry.registerBlock(tutFurnaceActive, tutFurnaceActive.getUnlocalizedName());
+
+ //Arcane Infuser
+ GameRegistry.registerBlock(arcaneInfuser, arcaneInfuser.getUnlocalizedName());
+ GameRegistry.registerBlock(arcaneInfuserActive, arcaneInfuserActive.getUnlocalizedName());
+ **/
+
+ //Block Storage
+ //GameRegistry.registerBlock(emxBlockStorage, emxBlockStorage.getUnlocalizedName());
+ }
+
+} \ No newline at end of file
diff --git a/src/Java/miscutil/core/commands/CommandMath.java b/src/Java/miscutil/core/commands/CommandMath.java
new file mode 100644
index 0000000000..933684d277
--- /dev/null
+++ b/src/Java/miscutil/core/commands/CommandMath.java
@@ -0,0 +1,195 @@
+package miscutil.core.commands;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import miscutil.core.util.Utils;
+import net.minecraft.command.ICommand;
+import net.minecraft.command.ICommandSender;
+import net.minecraft.entity.Entity;
+import net.minecraft.entity.item.EntityXPOrb;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.util.ChunkCoordinates;
+import net.minecraft.world.World;
+
+
+public class CommandMath implements ICommand
+{
+ private final List aliases;
+
+ protected String fullEntityName;
+ protected Entity conjuredEntity;
+
+ public CommandMath()
+ {
+ aliases = new ArrayList();
+
+ aliases.add("hometele");
+
+ aliases.add("warphome");
+
+ }
+
+ @Override
+ public int compareTo(Object o)
+ {
+ return 0;
+
+ }
+
+ @Override
+ public String getCommandName()
+ {
+ return "bed";
+
+ }
+
+ @Override
+ public String getCommandUsage(ICommandSender var1)
+ {
+ return "/bed [Teleports you to your bed for XP]";
+
+ }
+
+ @Override
+ public List getCommandAliases()
+ {
+ return this.aliases;
+
+ }
+
+ public void processCommand(ICommandSender S, String[] argString)
+ {
+ World W = S.getEntityWorld();
+ CommandUtils C = new CommandUtils();
+ EntityPlayer P = C.getPlayer(S);
+ //System.out.println(P.getCommandSenderName());
+ //System.out.println(P.getDisplayName());
+ if (W.isRemote)
+
+ {
+
+ System.out.println("Not processing on Client side");
+
+ }
+
+ else
+
+ {
+
+ System.out.println("Processing on Server side - Home Teleport engaged by: "+P.getDisplayName());
+
+ int XP_TOTAL = P.experienceTotal;
+ Utils.LOG_WARNING("Total Xp:" + XP_TOTAL);
+ ChunkCoordinates X = P.getPlayerCoordinates();
+ Utils.LOG_WARNING("Player Location: "+X);
+ ChunkCoordinates Y = null;
+ Utils.LOG_WARNING("Bed Location: "+Y);
+ if (!P.getBedLocation(0).equals(null)){
+ Y = P.getBedLocation(0);
+ Utils.LOG_WARNING("Bed Location: "+Y);
+ }
+ else {
+ Y = W.getSpawnPoint();
+ Utils.LOG_WARNING("Spawn Location: "+Y);
+ }
+ if (Y == null) {
+ Y = W.getSpawnPoint();
+ Utils.LOG_WARNING("Spawn Location: "+Y);
+ }
+
+ int x1 = X.posX;
+ Utils.LOG_WARNING("X1: "+x1);
+ int x2 = Y.posX;
+ Utils.LOG_WARNING("X2: "+x2);
+ int y1 = X.posY;
+ Utils.LOG_WARNING("Y1: "+y1);
+ int y2 = Y.posY;
+ Utils.LOG_WARNING("Y2: "+y2);
+ int z1 = X.posZ;
+ Utils.LOG_WARNING("Z1: "+z1);
+ int z2 = Y.posZ;
+ Utils.LOG_WARNING("Z2: "+z2);
+
+
+ double d = Math.sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1)+(z2-z1)*(z2-z1));
+ String xpCost = String.valueOf((int)(d*0.15));
+
+ Utils.LOG_WARNING("d:" + d);
+ Utils.LOG_WARNING("-----------------------------------------");
+ Utils.LOG_WARNING("Actual math formulae");
+ Utils.LOG_WARNING(String.valueOf(d));
+ Utils.LOG_WARNING("-----------------------------------------");
+ Utils.LOG_WARNING("Xp Cost based on answer B.");
+ Utils.LOG_WARNING(String.valueOf(d*0.15) + " | " + String.valueOf(xpCost));
+ Utils.LOG_WARNING("-----------------------------------------");
+ Utils.LOG_WARNING("Xp Total");
+ Utils.LOG_WARNING(String.valueOf(XP_TOTAL));
+ Utils.LOG_WARNING("-----------------------------------------");
+
+
+
+ if ((XP_TOTAL-Float.valueOf(xpCost)) > 0){
+ EntityXPOrb E = new EntityXPOrb(W, P.posX, P.posY + 1.62D - (double) P.yOffset, P.posZ, 1);
+ //E.moveTowards((double) Y.posX + 0.5D, (int) Y.posY + 3, (double) Y.posZ + 0.5D);
+ E.setVelocity((double) Y.posX + 0.5D, (int) Y.posY + 0.1, (double) Y.posZ + 0.5D);
+ W.spawnEntityInWorld(E);
+ W.playAuxSFXAtEntity((EntityPlayer) null, 1002, (int) P.posX, (int) P.posY, (int) P.posZ, 0);
+ P.setPositionAndUpdate(x2, y2+1, z2);
+
+ //gregtech.api.util.GT_Utility.sendChatToPlayer(P, "Movement | X:"+x2+" | Y:"+y2+" | Z:"+z2);
+ gregtech.api.util.GT_Utility.sendChatToPlayer(P, "Distance Traveled | "+String.valueOf((int)(d)) + " Blocks & " + xpCost + "xp");
+ gregtech.api.util.GT_Utility.sendChatToPlayer(P, "You suddenly feel at home.");
+ P.experienceTotal = (int) (XP_TOTAL-Float.valueOf(xpCost));
+ if (!xpCost.equals("0") && Float.valueOf(xpCost) > 0){
+ gregtech.api.util.GT_Utility.sendChatToPlayer(P, "...At the loss of "+xpCost+" xp.");
+ }
+ else if (xpCost.equals("0")){
+ gregtech.api.util.GT_Utility.sendChatToPlayer(P, "...At the loss of very little xp.");
+ }
+ else {
+ gregtech.api.util.GT_Utility.sendChatToPlayer(P, "Something went wrong with the math, have this one on the house. :)");
+ }
+ }
+
+ else {
+ gregtech.api.util.GT_Utility.sendChatToPlayer(P, "You don't feel you're able to do this yet.");
+ }
+
+ }
+ }
+
+ @Override
+ public boolean canCommandSenderUseCommand(ICommandSender var1)
+ {
+ return true;
+
+ }
+
+ @Override
+ public List addTabCompletionOptions(ICommandSender var1, String[] var2)
+ {
+ // TODO Auto-generated method stub
+
+ return null;
+
+ }
+
+ @Override
+ public boolean isUsernameIndex(String[] var1, int var2)
+ {
+ // TODO Auto-generated method stub
+
+ return false;
+
+ }
+
+ public boolean playerUsesCommand(World W, EntityPlayer P, int cost)
+ {
+
+
+ return true;
+ }
+
+}
+
diff --git a/src/Java/miscutil/core/commands/CommandUtils.java b/src/Java/miscutil/core/commands/CommandUtils.java
new file mode 100644
index 0000000000..f33263fa40
--- /dev/null
+++ b/src/Java/miscutil/core/commands/CommandUtils.java
@@ -0,0 +1,20 @@
+package miscutil.core.commands;
+
+import net.minecraft.command.ICommandSender;
+import net.minecraft.entity.player.EntityPlayer;
+
+public class CommandUtils {
+
+ public EntityPlayer getPlayer(ICommandSender icommandsender){
+ EntityPlayer player;
+
+ if(icommandsender instanceof EntityPlayer){
+ player = (EntityPlayer)icommandsender;
+ return player;
+ }
+ else {
+ return null;
+ }
+ }
+
+}
diff --git a/src/Java/miscutil/core/creativetabs/MiscUtilCreativeTabBlock.java b/src/Java/miscutil/core/creativetabs/MiscUtilCreativeTabBlock.java
new file mode 100644
index 0000000000..2db845e04c
--- /dev/null
+++ b/src/Java/miscutil/core/creativetabs/MiscUtilCreativeTabBlock.java
@@ -0,0 +1,18 @@
+package miscutil.core.creativetabs;
+
+import miscutil.core.block.ModBlocks;
+import net.minecraft.creativetab.CreativeTabs;
+import net.minecraft.item.Item;
+
+public class MiscUtilCreativeTabBlock extends CreativeTabs {
+
+ public MiscUtilCreativeTabBlock(String lable) {
+ super(lable);
+ }
+
+ @Override
+ public Item getTabIconItem() {
+ return Item.getItemFromBlock(ModBlocks.blockBloodSteel);
+ }
+
+}
diff --git a/src/Java/miscutil/core/creativetabs/MiscUtilCreativeTabMachines.java b/src/Java/miscutil/core/creativetabs/MiscUtilCreativeTabMachines.java
new file mode 100644
index 0000000000..620648d6c0
--- /dev/null
+++ b/src/Java/miscutil/core/creativetabs/MiscUtilCreativeTabMachines.java
@@ -0,0 +1,18 @@
+package miscutil.core.creativetabs;
+
+import miscutil.core.block.ModBlocks;
+import net.minecraft.creativetab.CreativeTabs;
+import net.minecraft.item.Item;
+
+public class MiscUtilCreativeTabMachines extends CreativeTabs {
+
+ public MiscUtilCreativeTabMachines(String lable) {
+ super(lable);
+ }
+
+ @Override
+ public Item getTabIconItem() {
+ return Item.getItemFromBlock(ModBlocks.blockToolBuilder);
+ }
+
+}
diff --git a/src/Java/miscutil/core/creativetabs/MiscUtilCreativeTabMisc.java b/src/Java/miscutil/core/creativetabs/MiscUtilCreativeTabMisc.java
new file mode 100644
index 0000000000..2893146f93
--- /dev/null
+++ b/src/Java/miscutil/core/creativetabs/MiscUtilCreativeTabMisc.java
@@ -0,0 +1,18 @@
+package miscutil.core.creativetabs;
+
+import miscutil.core.item.ModItems;
+import net.minecraft.creativetab.CreativeTabs;
+import net.minecraft.item.Item;
+
+public class MiscUtilCreativeTabMisc extends CreativeTabs {
+
+ public MiscUtilCreativeTabMisc(String lable) {
+ super(lable);
+ }
+
+ @Override
+ public Item getTabIconItem() {
+ return ModItems.itemIngotBloodSteel;
+ }
+
+}
diff --git a/src/Java/miscutil/core/creativetabs/MiscUtilCreativeTabTools.java b/src/Java/miscutil/core/creativetabs/MiscUtilCreativeTabTools.java
new file mode 100644
index 0000000000..aa7cf227aa
--- /dev/null
+++ b/src/Java/miscutil/core/creativetabs/MiscUtilCreativeTabTools.java
@@ -0,0 +1,18 @@
+package miscutil.core.creativetabs;
+
+import miscutil.core.item.ModItems;
+import net.minecraft.creativetab.CreativeTabs;
+import net.minecraft.item.Item;
+
+public class MiscUtilCreativeTabTools extends CreativeTabs {
+
+ public MiscUtilCreativeTabTools(String lable) {
+ super(lable);
+ }
+
+ @Override
+ public Item getTabIconItem() {
+ return ModItems.itemStaballoyPickaxe;
+ }
+
+}
diff --git a/src/Java/miscutil/core/creativetabs/TMCreativeTabs.java b/src/Java/miscutil/core/creativetabs/TMCreativeTabs.java
new file mode 100644
index 0000000000..05d170d6e1
--- /dev/null
+++ b/src/Java/miscutil/core/creativetabs/TMCreativeTabs.java
@@ -0,0 +1,20 @@
+package miscutil.core.creativetabs;
+
+import net.minecraft.creativetab.CreativeTabs;
+
+public class TMCreativeTabs {
+
+ public static CreativeTabs tabBlock;
+ public static CreativeTabs tabMisc;
+ public static CreativeTabs tabCombat;
+ public static CreativeTabs tabTools;
+ public static CreativeTabs tabMachines;
+
+ public static void initialiseTabs(){
+ tabBlock = new MiscUtilCreativeTabBlock("MiscUtilBlockTab");
+ tabMisc = new MiscUtilCreativeTabMisc("MiscUtilMiscTab");
+ //tabMachines = new MiscUtilCreativeTabMachines("MiscUtilMachineTab");
+ //tabCombat = new MiscUtilCreativeTabCombat("MiscUtilCombatTab");
+ tabTools = new MiscUtilCreativeTabTools("MiscUtilToolsTab");
+ }
+}
diff --git a/src/Java/miscutil/core/gui/GUI_Bat_Buf.java b/src/Java/miscutil/core/gui/GUI_Bat_Buf.java
new file mode 100644
index 0000000000..efe42c7257
--- /dev/null
+++ b/src/Java/miscutil/core/gui/GUI_Bat_Buf.java
@@ -0,0 +1,247 @@
+package miscutil.core.gui;
+
+import miscutil.core.lib.Strings;
+import net.minecraft.client.Minecraft;
+import net.minecraft.client.gui.GuiButton;
+import net.minecraft.client.gui.GuiScreen;
+import net.minecraft.client.resources.I18n;
+import net.minecraft.util.ResourceLocation;
+
+import org.lwjgl.input.Keyboard;
+import org.lwjgl.opengl.GL11;
+
+import cpw.mods.fml.relauncher.Side;
+import cpw.mods.fml.relauncher.SideOnly;
+
+
+
+public class GUI_Bat_Buf extends GuiScreen
+{
+ private final int bookImageHeight = 192;
+ private final int bookImageWidth = 192;
+ private int currPage = 0;
+ private static final int bookTotalPages = 4;
+ private static ResourceLocation[] bookPageTextures =
+
+ new ResourceLocation[bookTotalPages];
+ private static String[] stringPageText = new String[bookTotalPages];
+ private GuiButton buttonDone;
+ private NextPageButton buttonNextPage;
+ private NextPageButton buttonPreviousPage;
+
+ public GUI_Bat_Buf()
+ {
+
+ bookPageTextures[0] = new ResourceLocation(
+
+ Strings.MODID+":textures/gui/book_cover.png");
+
+ bookPageTextures[1] = new ResourceLocation(
+
+ Strings.MODID+":textures/gui/book.png");
+
+ bookPageTextures[2] = new ResourceLocation(
+
+ Strings.MODID+":textures/gui/book.png");
+
+ stringPageText[0] = "";
+
+ stringPageText[1] = "The Mysterious Stranger admired your family cow and asked if it was for sale.\n\nWhen you nodded, he offered to trade some Magic Beans, that (if planted in tilled dirt) would lead to more wealth than you could imagine.";
+
+ stringPageText[2]="So you handed him your cow, and grabbed the Magic Beans.\n\nPleased with yourself, you hurried away, looking for tilled dirt in which to plant the Magic Beans.\n\nYou couldn't wait to see how proud your mother would be for";
+ stringPageText[3]="being so shrewd! Untold wealth in return for an old, milkless cow; what a good deal you made!\n\nSo off you went, looking for a place to plant the Magic Beans with room to grow...";
+ }
+
+ /**
+ * Adds the buttons (and other controls) to the screen in question.
+ */
+ @Override
+ public void initGui()
+ {
+ // DEBUG
+ System.out.println("GuiMysteriousStranger initGUI()");
+ buttonList.clear();
+ Keyboard.enableRepeatEvents(true);
+
+ buttonDone = new GuiButton(0, width / 2 + 2, 4 + bookImageHeight,
+
+ 98, 20, I18n.format("gui.done", new Object[0]));
+
+ buttonList.add(buttonDone);
+ int offsetFromScreenLeft = (width - bookImageWidth) / 2;
+ buttonList.add(buttonNextPage = new NextPageButton(1,
+
+ offsetFromScreenLeft + 120, 156, true));
+ buttonList.add(buttonPreviousPage = new NextPageButton(2,
+
+ offsetFromScreenLeft + 38, 156, false));
+ }
+
+ /**
+ * Called from the main game loop to update the screen.
+ */
+ @Override
+ public void updateScreen()
+ {
+ buttonDone.visible = (currPage == bookTotalPages - 1);
+ buttonNextPage.visible = (currPage < bookTotalPages - 1);
+ buttonPreviousPage.visible = currPage > 0;
+ }
+
+ /**
+ * Draws the screen and all the components in it.
+ */
+ @Override
+ public void drawScreen(int parWidth, int parHeight, float p_73863_3_)
+ {
+ GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
+ if (currPage == 0)
+ {
+ mc.getTextureManager().bindTexture(bookPageTextures[0]);
+ }
+ else
+ {
+ mc.getTextureManager().bindTexture(bookPageTextures[1]);
+ }
+ int offsetFromScreenLeft = (width - bookImageWidth ) / 2;
+ drawTexturedModalRect(offsetFromScreenLeft, 2, 0, 0, bookImageWidth,
+
+ bookImageHeight);
+ int widthOfString;
+ String stringPageIndicator = I18n.format("book.pageIndicator",
+
+ new Object[] {Integer.valueOf(currPage + 1), bookTotalPages});
+
+ widthOfString = fontRendererObj.getStringWidth(stringPageIndicator);
+ fontRendererObj.drawString(stringPageIndicator,
+
+ offsetFromScreenLeft - widthOfString + bookImageWidth - 44,
+
+ 18, 0);
+
+ fontRendererObj.drawSplitString(stringPageText[currPage],
+
+ offsetFromScreenLeft + 36, 34, 116, 0);
+
+ super.drawScreen(parWidth, parHeight, p_73863_3_);
+
+ }
+
+ /**
+ * Called when a mouse button is pressed and the mouse is moved around.
+
+ * Parameters are : mouseX, mouseY, lastButtonClicked &
+
+ * timeSinceMouseClick.
+ */
+ @Override
+ protected void mouseClickMove(int parMouseX, int parMouseY,
+
+ int parLastButtonClicked, long parTimeSinceMouseClick)
+
+ {
+
+ }
+
+ @Override
+ protected void actionPerformed(GuiButton parButton)
+ {
+ if (parButton == buttonDone)
+ {
+ // You can send a packet to server here if you need server to do
+
+ // something
+ mc.displayGuiScreen((GuiScreen)null);
+ }
+ else if (parButton == buttonNextPage)
+ {
+ if (currPage < bookTotalPages - 1)
+ {
+ ++currPage;
+ }
+ }
+ else if (parButton == buttonPreviousPage)
+ {
+ if (currPage > 0)
+ {
+ --currPage;
+ }
+ }
+ }
+
+ /**
+ * Called when the screen is unloaded. Used to disable keyboard repeat
+
+ * events
+ */
+ @Override
+ public void onGuiClosed()
+ {
+
+ }
+
+ /**
+ * Returns true if this GUI should pause the game when it is displayed in
+
+ * single-player
+ */
+ @Override
+ public boolean doesGuiPauseGame()
+ {
+ return true;
+ }
+
+ @SideOnly(Side.CLIENT)
+ static class NextPageButton extends GuiButton
+ {
+ private final boolean isNextButton;
+
+ public NextPageButton(int parButtonId, int parPosX, int parPosY,
+
+ boolean parIsNextButton)
+ {
+ super(parButtonId, parPosX, parPosY, 23, 13, "");
+ isNextButton = parIsNextButton;
+ }
+
+ /**
+ * Draws this button to the screen.
+ */
+ @Override
+ public void drawButton(Minecraft mc, int parX, int parY)
+ {
+ if (visible)
+ {
+ boolean isButtonPressed = (parX >= xPosition
+
+ && parY >= yPosition
+
+ && parX < xPosition + width
+
+ && parY < yPosition + height);
+
+ GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
+ mc.getTextureManager().bindTexture(bookPageTextures[1]);
+ int textureX = 0;
+ int textureY = 192;
+
+ if (isButtonPressed)
+ {
+ textureX += 23;
+ }
+
+ if (!isNextButton)
+ {
+ textureY += 13;
+ }
+
+ drawTexturedModalRect(xPosition, yPosition,
+
+ textureX, textureY,
+
+ 23, 13);
+ }
+ }
+ }
+}
+
diff --git a/src/Java/miscutil/core/gui/GUI_Battery_Buffer.java b/src/Java/miscutil/core/gui/GUI_Battery_Buffer.java
new file mode 100644
index 0000000000..c4bdf3666b
--- /dev/null
+++ b/src/Java/miscutil/core/gui/GUI_Battery_Buffer.java
@@ -0,0 +1,51 @@
+package miscutil.core.gui;
+
+import net.minecraft.client.gui.GuiButton;
+import net.minecraft.client.gui.GuiScreen;
+
+public class GUI_Battery_Buffer extends GuiScreen {
+
+ private GuiButton a;
+ private GuiButton b;
+
+ @Override
+ public void drawScreen(int mouseX, int mouseY, float partialTicks) {
+ this.drawDefaultBackground();
+ super.drawScreen(mouseX, mouseY, partialTicks);
+ }
+
+ @Override
+ public boolean doesGuiPauseGame() {
+ return false;
+ }
+
+ /*
+ @SuppressWarnings("unchecked")
+ public void initGui() {
+ this.buttonList.add(this.a = new GuiButton(0, this.width / 2 - 100, this.height / 2 - 24, "This is button a"));
+ this.buttonList.add(this.b = new GuiButton(1, this.width / 2 - 100, this.height / 2 + 4, "This is button b"));
+ }*/
+
+ /* @Override
+ protected void actionPerformed(GuiButton button) {
+ if (button == this.a) {
+ //Main.packetHandler.sendToServer(...);
+ this.mc.displayGuiScreen(null);
+ if (this.mc.currentScreen == null)
+ this.mc.setIngameFocus();
+ }
+ if (button == this.b){
+ //Main.packetHandler.sendToServer(...);
+ this.mc.displayGuiScreen(null);
+ if (this.mc.currentScreen == null)
+ this.mc.setIngameFocus();
+ }
+ }*/
+ /**
+ * if (worldIn.isRemote) {
+ playerIn.openGui(Main.instance, 0, worldIn, (int) playerIn.posX, (int) playerIn.posY, (int) playerIn.posZ);
+ }
+ */
+
+
+} \ No newline at end of file
diff --git a/src/Java/miscutil/core/gui/GUI_Tool_Builder.java b/src/Java/miscutil/core/gui/GUI_Tool_Builder.java
new file mode 100644
index 0000000000..e6a81a7d80
--- /dev/null
+++ b/src/Java/miscutil/core/gui/GUI_Tool_Builder.java
@@ -0,0 +1,5 @@
+package miscutil.core.gui;
+
+public class GUI_Tool_Builder {
+
+}
diff --git a/src/Java/miscutil/core/gui/Gui_No_Inventory_Base.java b/src/Java/miscutil/core/gui/Gui_No_Inventory_Base.java
new file mode 100644
index 0000000000..7a8f7d3e97
--- /dev/null
+++ b/src/Java/miscutil/core/gui/Gui_No_Inventory_Base.java
@@ -0,0 +1,51 @@
+package miscutil.core.gui;
+
+import net.minecraft.client.gui.GuiButton;
+import net.minecraft.client.gui.GuiScreen;
+
+public class Gui_No_Inventory_Base extends GuiScreen {
+
+ private GuiButton a;
+ private GuiButton b;
+
+ @Override
+ public void drawScreen(int mouseX, int mouseY, float partialTicks) {
+ this.drawDefaultBackground();
+ super.drawScreen(mouseX, mouseY, partialTicks);
+ }
+
+ @Override
+ public boolean doesGuiPauseGame() {
+ return false;
+ }
+
+ /*
+ @SuppressWarnings("unchecked")
+ public void initGui() {
+ this.buttonList.add(this.a = new GuiButton(0, this.width / 2 - 100, this.height / 2 - 24, "This is button a"));
+ this.buttonList.add(this.b = new GuiButton(1, this.width / 2 - 100, this.height / 2 + 4, "This is button b"));
+ }*/
+
+ /* @Override
+ protected void actionPerformed(GuiButton button) {
+ if (button == this.a) {
+ //Main.packetHandler.sendToServer(...);
+ this.mc.displayGuiScreen(null);
+ if (this.mc.currentScreen == null)
+ this.mc.setIngameFocus();
+ }
+ if (button == this.b){
+ //Main.packetHandler.sendToServer(...);
+ this.mc.displayGuiScreen(null);
+ if (this.mc.currentScreen == null)
+ this.mc.setIngameFocus();
+ }
+ }*/
+ /**
+ * if (worldIn.isRemote) {
+ playerIn.openGui(Main.instance, 0, worldIn, (int) playerIn.posX, (int) playerIn.posY, (int) playerIn.posZ);
+ }
+ */
+
+
+} \ No newline at end of file
diff --git a/src/Java/miscutil/core/gui/ModGUI.java b/src/Java/miscutil/core/gui/ModGUI.java
new file mode 100644
index 0000000000..28987ccc1b
--- /dev/null
+++ b/src/Java/miscutil/core/gui/ModGUI.java
@@ -0,0 +1,15 @@
+package miscutil.core.gui;
+
+import miscutil.core.util.Utils;
+
+public class ModGUI {
+
+
+ public static void init(){
+
+ Utils.LOG_INFO("Registering GUIs.");
+
+ //Register GuiHandler
+ //NetworkRegistry.INSTANCE.registerGuiHandler(MiscUtils.instance, new GuiHandler());
+ }
+}
diff --git a/src/Java/miscutil/core/handler/CraftingManager.java b/src/Java/miscutil/core/handler/CraftingManager.java
new file mode 100644
index 0000000000..42b602440d
--- /dev/null
+++ b/src/Java/miscutil/core/handler/CraftingManager.java
@@ -0,0 +1,21 @@
+package miscutil.core.handler;
+
+public class CraftingManager {
+
+ public static void mainRegistry() {
+ addCraftingRecipies();
+ addSmeltingRecipies();
+ }
+
+ public static void addCraftingRecipies() {
+ // Shaped Recipie
+ //GameRegistry.addRecipe(new ItemStack(ModItems.tutPickaxe, 1), new Object[] { "###", " S ", " S ", '#', ModItems.tutItem, 'S', Items.stick });
+
+ //Shapeless Recipie
+ //GameRegistry.addShapelessRecipe(new ItemStack(ModItems.tutItem, 10), new Object[]{Blocks.dirt , Blocks.cobblestone});
+ }
+
+ public static void addSmeltingRecipies() {
+ //GameRegistry.addSmelting(ModItems.tutItem, new ItemStack(Blocks.diamond_block, 5), 20.0F);
+ }
+}
diff --git a/src/Java/miscutil/core/handler/GuiHandler.java b/src/Java/miscutil/core/handler/GuiHandler.java
new file mode 100644
index 0000000000..9412ed8983
--- /dev/null
+++ b/src/Java/miscutil/core/handler/GuiHandler.java
@@ -0,0 +1,39 @@
+package miscutil.core.handler;
+
+import miscutil.core.gui.GUI_Bat_Buf;
+import miscutil.core.gui.GUI_Battery_Buffer;
+import miscutil.core.util.Utils;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.world.World;
+import cpw.mods.fml.common.network.IGuiHandler;
+
+public class GuiHandler implements IGuiHandler {
+
+ private static final int GUI1 = 0; //Nothing Yet
+ private static final int GUI2 = 1; //Energy Buffer
+
+
+
+ @Override //ContainerModTileEntity
+ public Object getServerGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) {
+ if (ID == GUI1)
+ return new GUI_Battery_Buffer();
+
+ return null;
+ }
+
+ @Override //GuiModTileEntity
+ public Object getClientGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) {
+ Utils.LOG_WARNING("getClientGuiElement Called by: "+player+", in world: "+player.dimension+" at x:"+x+", y:"+y+", z:"+z+".");
+ if (ID == GUI1){
+ Utils.LOG_WARNING("Opening Gui with Id: "+ID);
+ return new GUI_Battery_Buffer();
+ }
+ else if (ID == GUI2){
+ Utils.LOG_WARNING("Opening Gui with Id: "+ID+" Energy Buffer");
+ return new GUI_Bat_Buf();
+ }
+ return null;
+ }
+
+} \ No newline at end of file
diff --git a/src/Java/miscutil/core/handler/ResourceHandler.java b/src/Java/miscutil/core/handler/ResourceHandler.java
new file mode 100644
index 0000000000..e8f81f4d02
--- /dev/null
+++ b/src/Java/miscutil/core/handler/ResourceHandler.java
@@ -0,0 +1,83 @@
+package miscutil.core.handler;
+
+import org.apache.commons.lang3.Validate;
+
+public class ResourceHandler
+{
+ private final String resourceDomain;
+ private final String resourcePath;
+ private static final String __OBFID = "CL_00001082";
+
+ public ResourceHandler(String p_i1292_1_, String p_i1292_2_)
+ {
+ Validate.notNull(p_i1292_2_);
+
+ if (p_i1292_1_ != null && p_i1292_1_.length() != 0)
+ {
+ this.resourceDomain = p_i1292_1_;
+ }
+ else
+ {
+ this.resourceDomain = "minecraft";
+ }
+
+ this.resourcePath = p_i1292_2_;
+ }
+
+ public ResourceHandler(String p_i1293_1_)
+ {
+ String s1 = "miscUtils";
+ String s2 = p_i1293_1_;
+ int i = p_i1293_1_.indexOf(58);
+
+ if (i >= 0)
+ {
+ s2 = p_i1293_1_.substring(i + 1, p_i1293_1_.length());
+
+ if (i > 1)
+ {
+ s1 = p_i1293_1_.substring(0, i);
+ }
+ }
+
+ this.resourceDomain = s1.toLowerCase();
+ this.resourcePath = s2;
+ }
+
+ public String getResourcePath()
+ {
+ return this.resourcePath;
+ }
+
+ public String getResourceDomain()
+ {
+ return this.resourceDomain;
+ }
+
+ public String toString()
+ {
+ return this.resourceDomain + ":" + this.resourcePath;
+ }
+
+ public boolean equals(Object p_equals_1_)
+ {
+ if (this == p_equals_1_)
+ {
+ return true;
+ }
+ else if (!(p_equals_1_ instanceof ResourceHandler))
+ {
+ return false;
+ }
+ else
+ {
+ ResourceHandler resourcelocation = (ResourceHandler)p_equals_1_;
+ return this.resourceDomain.equals(resourcelocation.resourceDomain) && this.resourcePath.equals(resourcelocation.resourcePath);
+ }
+ }
+
+ public int hashCode()
+ {
+ return 31 * this.resourceDomain.hashCode() + this.resourcePath.hashCode();
+ }
+} \ No newline at end of file
diff --git a/src/Java/miscutil/core/item/BaseMetaItemTool.java b/src/Java/miscutil/core/item/BaseMetaItemTool.java
new file mode 100644
index 0000000000..c0b552f721
--- /dev/null
+++ b/src/Java/miscutil/core/item/BaseMetaItemTool.java
@@ -0,0 +1,5 @@
+package miscutil.core.item;
+
+public class BaseMetaItemTool {
+
+}
diff --git a/src/Java/miscutil/core/item/EntityTeleportFX.java b/src/Java/miscutil/core/item/EntityTeleportFX.java
new file mode 100644
index 0000000000..d67ee77968
--- /dev/null
+++ b/src/Java/miscutil/core/item/EntityTeleportFX.java
@@ -0,0 +1,236 @@
+package miscutil.core.item;
+
+import net.minecraft.entity.Entity;
+import net.minecraft.entity.item.EntityItem;
+import net.minecraft.init.Items;
+import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.util.MathHelper;
+import net.minecraft.world.World;
+import cpw.mods.fml.relauncher.Side;
+import cpw.mods.fml.relauncher.SideOnly;
+
+public class EntityTeleportFX extends Entity
+{
+ /** 'x' location the eye should float towards. */
+ private double targetX;
+ /** 'y' location the eye should float towards. */
+ private double targetY;
+ /** 'z' location the eye should float towards. */
+ private double targetZ;
+ private int despawnTimer;
+ private boolean shatterOrDrop;
+ private static final String __OBFID = "CL_00001716";
+
+ public EntityTeleportFX(World p_i1757_1_)
+ {
+ super(p_i1757_1_);
+ this.setSize(0.25F, 0.25F);
+ }
+
+ protected void entityInit() {}
+
+ /**
+ * Checks if the entity is in range to render by using the past in distance and comparing it to its average edge
+ * length * 64 * renderDistanceWeight Args: distance
+ */
+ @SideOnly(Side.CLIENT)
+ public boolean isInRangeToRenderDist(double p_70112_1_)
+ {
+ double d1 = this.boundingBox.getAverageEdgeLength() * 4.0D;
+ d1 *= 64.0D;
+ return p_70112_1_ < d1 * d1;
+ }
+
+ public EntityTeleportFX(World p_i1758_1_, double p_i1758_2_, double p_i1758_4_, double p_i1758_6_)
+ {
+ super(p_i1758_1_);
+ this.despawnTimer = 0;
+ this.setSize(0.25F, 0.25F);
+ this.setPosition(p_i1758_2_, p_i1758_4_, p_i1758_6_);
+ this.yOffset = 0.0F;
+ }
+
+ /**
+ * The location the eye should float/move towards. Currently used for moving towards the nearest stronghold. Args:
+ * strongholdX, strongholdY, strongholdZ
+ */
+ public void moveTowards(double p_70220_1_, int p_70220_3_, double p_70220_4_)
+ {
+ double d2 = p_70220_1_ - this.posX;
+ double d3 = p_70220_4_ - this.posZ;
+ float f = MathHelper.sqrt_double(d2 * d2 + d3 * d3);
+
+ if (f > 12.0F)
+ {
+ this.targetX = this.posX + d2 / (double)f * 12.0D;
+ this.targetZ = this.posZ + d3 / (double)f * 12.0D;
+ this.targetY = this.posY + 8.0D;
+ }
+ else
+ {
+ this.targetX = p_70220_1_;
+ this.targetY = (double)p_70220_3_;
+ this.targetZ = p_70220_4_;
+ }
+
+ this.despawnTimer = 0;
+ this.shatterOrDrop = this.rand.nextInt(5) > 0;
+ }
+
+ /**
+ * Sets the velocity to the args. Args: x, y, z
+ */
+ @SideOnly(Side.CLIENT)
+ public void setVelocity(double p_70016_1_, double p_70016_3_, double p_70016_5_)
+ {
+ this.motionX = p_70016_1_;
+ this.motionY = p_70016_3_;
+ this.motionZ = p_70016_5_;
+
+ if (this.prevRotationPitch == 0.0F && this.prevRotationYaw == 0.0F)
+ {
+ float f = MathHelper.sqrt_double(p_70016_1_ * p_70016_1_ + p_70016_5_ * p_70016_5_);
+ this.prevRotationYaw = this.rotationYaw = (float)(Math.atan2(p_70016_1_, p_70016_5_) * 180.0D / Math.PI);
+ this.prevRotationPitch = this.rotationPitch = (float)(Math.atan2(p_70016_3_, (double)f) * 180.0D / Math.PI);
+ }
+ }
+
+ /**
+ * Called to update the entity's position/logic.
+ */
+ public void onUpdate()
+ {
+ this.lastTickPosX = this.posX;
+ this.lastTickPosY = this.posY;
+ this.lastTickPosZ = this.posZ;
+ super.onUpdate();
+ this.posX += this.motionX;
+ this.posY += this.motionY;
+ this.posZ += this.motionZ;
+ float f = MathHelper.sqrt_double(this.motionX * this.motionX + this.motionZ * this.motionZ);
+ this.rotationYaw = (float)(Math.atan2(this.motionX, this.motionZ) * 180.0D / Math.PI);
+
+ for (this.rotationPitch = (float)(Math.atan2(this.motionY, (double)f) * 180.0D / Math.PI); this.rotationPitch - this.prevRotationPitch < -180.0F; this.prevRotationPitch -= 360.0F)
+ {
+ ;
+ }
+
+ while (this.rotationPitch - this.prevRotationPitch >= 180.0F)
+ {
+ this.prevRotationPitch += 360.0F;
+ }
+
+ while (this.rotationYaw - this.prevRotationYaw < -180.0F)
+ {
+ this.prevRotationYaw -= 360.0F;
+ }
+
+ while (this.rotationYaw - this.prevRotationYaw >= 180.0F)
+ {
+ this.prevRotationYaw += 360.0F;
+ }
+
+ this.rotationPitch = this.prevRotationPitch + (this.rotationPitch - this.prevRotationPitch) * 0.2F;
+ this.rotationYaw = this.prevRotationYaw + (this.rotationYaw - this.prevRotationYaw) * 0.2F;
+
+ if (!this.worldObj.isRemote)
+ {
+ double d0 = this.targetX - this.posX;
+ double d1 = this.targetZ - this.posZ;
+ float f1 = (float)Math.sqrt(d0 * d0 + d1 * d1);
+ float f2 = (float)Math.atan2(d1, d0);
+ double d2 = (double)f + (double)(f1 - f) * 0.0025D;
+
+ if (f1 < 1.0F)
+ {
+ d2 *= 0.8D;
+ this.motionY *= 0.8D;
+ }
+
+ this.motionX = Math.cos((double)f2) * d2;
+ this.motionZ = Math.sin((double)f2) * d2;
+
+ if (this.posY < this.targetY)
+ {
+ this.motionY += (1.0D - this.motionY) * 0.014999999664723873D;
+ }
+ else
+ {
+ this.motionY += (-1.0D - this.motionY) * 0.014999999664723873D;
+ }
+ }
+
+ float f3 = 0.25F;
+
+ if (this.isInWater())
+ {
+ for (int i = 0; i < 4; ++i)
+ {
+ this.worldObj.spawnParticle("bubble", this.posX - this.motionX * (double)f3, this.posY - this.motionY * (double)f3, this.posZ - this.motionZ * (double)f3, this.motionX, this.motionY, this.motionZ);
+ }
+ }
+ else
+ {
+ this.worldObj.spawnParticle("portal", this.posX - this.motionX * (double)f3 + this.rand.nextDouble() * 0.6D - 0.3D, this.posY - this.motionY * (double)f3 - 0.5D, this.posZ - this.motionZ * (double)f3 + this.rand.nextDouble() * 0.6D - 0.3D, this.motionX, this.motionY, this.motionZ);
+ }
+
+ if (!this.worldObj.isRemote)
+ {
+ this.setPosition(this.posX, this.posY, this.posZ);
+ ++this.despawnTimer;
+
+ if (this.despawnTimer > 80 && !this.worldObj.isRemote)
+ {
+ this.setDead();
+
+ if (this.shatterOrDrop)
+ {
+ this.worldObj.spawnEntityInWorld(new EntityItem(this.worldObj, this.posX, this.posY, this.posZ, new ItemStack(Items.ender_eye)));
+ }
+ else
+ {
+ this.worldObj.playAuxSFX(2003, (int)Math.round(this.posX), (int)Math.round(this.posY), (int)Math.round(this.posZ), 0);
+ }
+ }
+ }
+ }
+
+ /**
+ * (abstract) Protected helper method to write subclass entity data to NBT.
+ */
+ public void writeEntityToNBT(NBTTagCompound p_70014_1_) {}
+
+ /**
+ * (abstract) Protected helper method to read subclass entity data from NBT.
+ */
+ public void readEntityFromNBT(NBTTagCompound p_70037_1_) {}
+
+ @SideOnly(Side.CLIENT)
+ public float getShadowSize()
+ {
+ return 0.0F;
+ }
+
+ /**
+ * Gets how bright this entity is.
+ */
+ public float getBrightness(float p_70013_1_)
+ {
+ return 1.0F;
+ }
+
+ @SideOnly(Side.CLIENT)
+ public int getBrightnessForRender(float p_70070_1_)
+ {
+ return 15728880;
+ }
+
+ /**
+ * If returns false, the item will not inflict any damage against entities.
+ */
+ public boolean canAttackWithItem()
+ {
+ return false;
+ }
+} \ No newline at end of file
diff --git a/src/Java/miscutil/core/item/ModItems.java b/src/Java/miscutil/core/item/ModItems.java
new file mode 100644
index 0000000000..7b84f3c589
--- /dev/null
+++ b/src/Java/miscutil/core/item/ModItems.java
@@ -0,0 +1,311 @@
+package miscutil.core.item;
+
+import miscutil.core.creativetabs.TMCreativeTabs;
+import miscutil.core.item.effects.RarityUncommon;
+import miscutil.core.item.tool.staballoy.StaballoyPickaxe;
+import miscutil.core.lib.Strings;
+import miscutil.core.util.Utils;
+import net.minecraft.item.Item;
+import net.minecraft.item.Item.ToolMaterial;
+import net.minecraft.item.ItemArmor.ArmorMaterial;
+import net.minecraftforge.common.util.EnumHelper;
+import cpw.mods.fml.common.Loader;
+import cpw.mods.fml.common.registry.GameRegistry;
+
+public final class ModItems {
+/* A name for the material. This should be the same as the name of the variable we use to store the material (in this case "TUTORIAL").
+ A harvest level for pickaxes. This is a value between 0 and 3 and defines which blocks can be mined with this tool. Its also possible to create blocks which need a higher harvest level than 3, but then you are not able to mine them with vanilla tools.
+ Common values for the harvest level are:
+ Wood/Gold Tool: 0
+ Stone Tool: 1
+ Iron Tool: 2
+ Diamond Tool: 3
+ The durability of the tool or sword. This value defines how often you can use a tool until it breaks. The tools always last one use longer than the entered value.
+ Common values for the durability are:
+ Wood Tool: 59
+ Stone Tool: 131
+ Iron Tool: 250
+ Diamond Tool: 1561
+ Gold Tool: 32
+ The mining speed of the tool. This value defines how much faster you are with this tool than with your hand.
+ Common values for the mining speed are:
+ Wood Tool: 2.0F
+ Stone Tool: 4.0F
+ Iron Tool: 6.0F
+ Diamond Tool: 8.0F
+ Gold Tool: 12.0F
+ The damage versus Entites. This value is used to calculate the damage an entity takes if you hit it with this tool/sword. This value defines the basic damage to which different values are added, depending on the type of tool. A sword always causes 4 more damage than written in the ToolMaterial. So, if you want to create a sword which adds 10 damage to your normal damage, the value in the ToolMaterial needs to be 6.0F. Of course the values can be below zero.
+ Common values for the damage versus Entities are:
+ Wood Tool: 0.0F (Sword adds 4.0 damage)
+ Stone Tool: 1.0F (Sword adds 5.0 damage)
+ Iron Tool: 2.0F (Sword adds 6.0 damage)
+ Diamond Tool: 3.0F (Sword adds 7.0 damage)
+ Gold Tool: 0.0F (Sword adds 4.0 damage)
+ The enchantability of this tool. This value is quite complex to understand and I have to admit that I don't quite know how it is calculated. Basically you can say that a higher enchantability leads to better enchantements with the same amount of XP.
+ Common values for the enchantability are:
+ Wood Tool: 15
+ Stone Tool: 5
+ Iron Tool: 14
+ Diamond Tool: 10
+ Gold Tool: 22*/
+
+ //Tool Materials
+ //public static ToolMaterial TUTORIAL = EnumHelper.addToolMaterial("TUTORIAL", harvestLevel, durability, miningSpeed, damageVsEntities, enchantability);
+ public static ToolMaterial tutMaterial = EnumHelper.addToolMaterial("BloodSteel Tool Material", 3, 200, 15.0F, 4.0F, 10);
+ public static ToolMaterial STABALLOY = EnumHelper.addToolMaterial("Staballoy", 3, 2500, 7, 1.0F, 18);
+
+ //Armour Materials
+ public static ArmorMaterial tutArmorMaterial = EnumHelper.addArmorMaterial("BloodSteel Armor Material", 33, new int[]{2, 5, 4, 2}, 10);
+
+ //Base Classes For Items
+ public static Item tutPickaxe;
+ public static Item tutAxe;
+ public static Item tutSword;
+ public static Item tutHoe;
+ public static Item tutSpade;
+
+ //Base Classes For Armour
+ public static Item tutHelmet;
+ public static Item tutPlate;
+ public static Item tutPants;
+ public static Item tutBoots;
+
+ //EnderIO
+ public static Item itemPlateSoularium;
+ public static Item itemPlateRedstoneAlloy;
+ public static Item itemPlateElectricalSteel;
+ public static Item itemPlatePulsatingIron;
+ public static Item itemPlateEnergeticAlloy;
+ public static Item itemPlateVibrantAlloy;
+ public static Item itemPlateConductiveIron;
+ public static Item itemPlateDarkSteel;
+
+ //Big Reactors
+ public static Item itemPlateBlutonium;
+ public static Item itemPlateCyanite;
+ public static Item itemPlateLudicrite;
+
+ //Thaumcraft
+ public static Item itemPlateVoidMetal;
+
+ //ExtraUtils
+ public static Item itemPlateBedrockium;
+
+ //Pneumaticraft
+ public static Item itemPlateCompressedIron;
+
+ //SimplyJetpacks
+ public static Item itemPlateEnrichedSoularium;
+
+ //rfTools
+ public static Item itemPlateDimensionShard;
+
+ //Misc Items
+ public static Item itemIngotBloodSteel;
+ public static Item itemPlateBloodSteel;
+
+ //Staballoy
+ public static Item itemStaballoyPickaxe;
+ public static Item itemPlateStaballoy;
+ public static Item itemIngotStaballoy;
+
+
+
+
+ //@SuppressWarnings("unused")
+ @SuppressWarnings("unused")
+ public static final void init(){
+
+ /*
+ *
+ * Strings.DEBUG Parameters area
+ *
+ */
+ //Logs
+ if (!Strings.DEBUG){
+ Utils.LOG_INFO("Development mode not enabled.");
+ }
+ else if (Strings.DEBUG){
+ Utils.LOG_INFO("Development mode enabled.");
+ }
+ else {
+ Utils.LOG_WARNING("Development mode not set.");
+ }
+ /*
+ * End Strings.DEBUG
+ */
+
+
+
+ /* //Blood Steel Equipment
+
+ //Item Init
+ tutPickaxe = new BloodSteelPickaxe(tutMaterial).setUnlocalizedName("BloodSteelPickaxe").setCreativeTab(TMCreativeTabs.tabTools).setTextureName(Strings.MODID + ":BloodSteelPickaxe");
+ tutAxe = new BloodSteelAxe(tutMaterial).setUnlocalizedName("BloodSteelAxe").setCreativeTab(TMCreativeTabs.tabTools).setTextureName(Strings.MODID + ":BloodSteelAxe");
+ tutSword = new BloodSteelSword(tutMaterial).setUnlocalizedName("BloodSteelSword").setCreativeTab(TMCreativeTabs.tabCombat).setTextureName(Strings.MODID + ":BloodSteelSword");
+ tutHoe = new BloodSteelHoe(tutMaterial).setUnlocalizedName("BloodSteelHoe").setCreativeTab(TMCreativeTabs.tabTools).setTextureName(Strings.MODID + ":BloodSteelHoe");
+ tutSpade = new BloodSteelSpade(tutMaterial).setUnlocalizedName("BloodSteelSpade").setCreativeTab(TMCreativeTabs.tabTools).setTextureName(Strings.MODID + ":BloodSteelSpade");
+ tutHelmet = new BloodSteelArmor(tutArmorMaterial, MiscUtils.proxy.addArmor("BloodSteelArmor"), 0).setUnlocalizedName("BloodSteelHelmet").setCreativeTab(TMCreativeTabs.tabCombat).setTextureName(Strings.MODID + ":BloodSteelHelmet");
+ tutPlate = new BloodSteelArmor(tutArmorMaterial, MiscUtils.proxy.addArmor("BloodSteelArmor"), 1).setUnlocalizedName("BloodSteelPlate").setCreativeTab(TMCreativeTabs.tabCombat).setTextureName(Strings.MODID + ":BloodSteelPlate");
+ tutPants = new BloodSteelArmor(tutArmorMaterial, MiscUtils.proxy.addArmor("BloodSteelArmor"), 2).setUnlocalizedName("BloodSteelPants").setCreativeTab(TMCreativeTabs.tabCombat).setTextureName(Strings.MODID + ":BloodSteelPants");
+ tutBoots = new BloodSteelArmor(tutArmorMaterial, MiscUtils.proxy.addArmor("BloodSteelArmor"), 3).setUnlocalizedName("BloodSteelBoots").setCreativeTab(TMCreativeTabs.tabCombat).setTextureName(Strings.MODID + ":BloodSteelBoots");
+
+ //Registry
+ GameRegistry.registerItem(tutPickaxe, tutPickaxe.getUnlocalizedName());
+ GameRegistry.registerItem(tutAxe, tutAxe.getUnlocalizedName());
+ GameRegistry.registerItem(tutSword, tutSword.getUnlocalizedName());
+ GameRegistry.registerItem(tutHoe, tutHoe.getUnlocalizedName());
+ GameRegistry.registerItem(tutSpade, tutSpade.getUnlocalizedName());
+ GameRegistry.registerItem(tutHelmet, tutHelmet.getUnlocalizedName());
+ GameRegistry.registerItem(tutPlate, tutPlate.getUnlocalizedName());
+ GameRegistry.registerItem(tutPants, tutPants.getUnlocalizedName());
+ GameRegistry.registerItem(tutBoots, tutBoots.getUnlocalizedName()); */
+
+
+
+
+
+
+ //EnderIO Resources
+ if (Loader.isModLoaded("EnderIO") == true || Strings.LOAD_ALL_CONTENT){
+ Utils.LOG_INFO("EnderIO Found - Loading Resources.");
+ //Item Init
+ itemPlateSoularium = new Item().setUnlocalizedName("itemPlateSoularium").setCreativeTab(TMCreativeTabs.tabMisc).setTextureName(Strings.MODID + ":itemPlateSoularium");;
+ itemPlateRedstoneAlloy = new Item().setUnlocalizedName("itemPlateRedstoneAlloy").setCreativeTab(TMCreativeTabs.tabMisc).setTextureName(Strings.MODID + ":itemPlateRedstoneAlloy");;
+ itemPlateElectricalSteel = new Item().setUnlocalizedName("itemPlateElectricalSteel").setCreativeTab(TMCreativeTabs.tabMisc).setTextureName(Strings.MODID + ":itemPlateElectricalSteel");;
+ itemPlatePulsatingIron = new Item().setUnlocalizedName("itemPlatePulsatingIron").setCreativeTab(TMCreativeTabs.tabMisc).setTextureName(Strings.MODID + ":itemPlatePulsatingIron");;
+ itemPlateEnergeticAlloy = new Item().setUnlocalizedName("itemPlateEnergeticAlloy").setCreativeTab(TMCreativeTabs.tabMisc).setTextureName(Strings.MODID + ":itemPlateEnergeticAlloy");;
+ itemPlateVibrantAlloy = new Item().setUnlocalizedName("itemPlateVibrantAlloy").setCreativeTab(TMCreativeTabs.tabMisc).setTextureName(Strings.MODID + ":itemPlateVibrantAlloy");;
+ itemPlateConductiveIron = new Item().setUnlocalizedName("itemPlateConductiveIron").setCreativeTab(TMCreativeTabs.tabMisc).setTextureName(Strings.MODID + ":itemPlateConductiveIron");;
+ itemPlateDarkSteel = new Item().setUnlocalizedName("itemPlateDarkSteel").setCreativeTab(TMCreativeTabs.tabMisc).setTextureName(Strings.MODID + ":itemPlateDarkSteel");;
+
+
+ //Registry
+ GameRegistry.registerItem(itemPlateSoularium, "itemPlateSoularium");
+ GameRegistry.registerItem(itemPlateRedstoneAlloy, "itemPlateRedstoneAlloy");
+ GameRegistry.registerItem(itemPlateElectricalSteel, "itemPlateElectricalSteel");
+ GameRegistry.registerItem(itemPlatePulsatingIron, "itemPlatePulsatingIron");
+ GameRegistry.registerItem(itemPlateEnergeticAlloy, "itemPlateEnergeticAlloy");
+ GameRegistry.registerItem(itemPlateVibrantAlloy, "itemPlateVibrantAlloy");
+ GameRegistry.registerItem(itemPlateConductiveIron, "itemPlateConductiveIron");
+ GameRegistry.registerItem(itemPlateDarkSteel, "itemPlateDarkSteel");
+ }
+ else {
+ Utils.LOG_WARNING("EnderIO not Found - Skipping Resources.");
+ }
+
+ //Big Reactors
+ if (Loader.isModLoaded("BigReactors") == true || Strings.LOAD_ALL_CONTENT){
+ Utils.LOG_INFO("BigReactors Found - Loading Resources.");
+ //Item Init
+ itemPlateBlutonium = new Item().setUnlocalizedName("itemPlateBlutonium").setCreativeTab(TMCreativeTabs.tabMisc).setTextureName(Strings.MODID + ":itemPlateBlutonium");;
+ itemPlateCyanite = new Item().setUnlocalizedName("itemPlateCyanite").setCreativeTab(TMCreativeTabs.tabMisc).setTextureName(Strings.MODID + ":itemPlateCyanite");;
+ itemPlateLudicrite = new Item().setUnlocalizedName("itemPlateLudicrite").setCreativeTab(TMCreativeTabs.tabMisc).setTextureName(Strings.MODID + ":itemPlateLudicrite");;
+
+ //Registry
+ GameRegistry.registerItem(itemPlateBlutonium, "itemPlateBlutonium");
+ GameRegistry.registerItem(itemPlateCyanite, "itemPlateCyanite");
+ GameRegistry.registerItem(itemPlateLudicrite, "itemPlateLudicrite");
+
+ }
+ else {
+ Utils.LOG_WARNING("BigReactors not Found - Skipping Resources.");
+ }
+
+ //Thaumcraft
+ if (Loader.isModLoaded("Thaumcraft") == true || Strings.LOAD_ALL_CONTENT){
+ Utils.LOG_INFO("Thaumcraft Found - Loading Resources.");
+ //Item Init
+ itemPlateVoidMetal = new Item().setUnlocalizedName("itemPlateVoidMetal").setCreativeTab(TMCreativeTabs.tabMisc).setTextureName(Strings.MODID + ":itemPlateVoidMetal");;
+
+ //Registry
+ GameRegistry.registerItem(itemPlateVoidMetal, "itemPlateVoidMetal");
+
+ }
+ else {
+ Utils.LOG_WARNING("Thaumcraft not Found - Skipping Resources.");
+ }
+
+ //ExtraUtils
+ if (Loader.isModLoaded("ExtraUtilities") == true || Strings.LOAD_ALL_CONTENT){
+ Utils.LOG_INFO("ExtraUtilities Found - Loading Resources.");
+ //Item Init
+ itemPlateBedrockium = new Item().setUnlocalizedName("itemPlateBedrockium").setCreativeTab(TMCreativeTabs.tabMisc).setTextureName(Strings.MODID + ":itemPlateBedrockium");;
+
+ //Registry
+ GameRegistry.registerItem(itemPlateBedrockium, "itemPlateBedrockium");
+
+ }
+ else {
+ Utils.LOG_WARNING("ExtraUtilities not Found - Skipping Resources.");
+ }
+
+ //Pneumaticraft
+ if (Loader.isModLoaded("PneumaticCraft") == true || Strings.LOAD_ALL_CONTENT){
+ Utils.LOG_INFO("PneumaticCraft Found - Loading Resources.");
+ //Item Init
+ itemPlateCompressedIron = new Item().setUnlocalizedName("itemPlateCompressedIron").setCreativeTab(TMCreativeTabs.tabMisc).setTextureName(Strings.MODID + ":itemPlateCompressedIron");;
+
+ //Registry
+ GameRegistry.registerItem(itemPlateCompressedIron, "itemPlateCompressedIron");
+
+ }
+ else {
+ Utils.LOG_WARNING("PneumaticCraft not Found - Skipping Resources.");
+ }
+
+ //Simply Jetpacks
+ if (Loader.isModLoaded("simplyjetpacks") == true || Strings.LOAD_ALL_CONTENT){
+ Utils.LOG_INFO("SimplyJetpacks Found - Loading Resources.");
+ //Item Init
+ itemPlateEnrichedSoularium = new RarityUncommon().setUnlocalizedName("itemPlateEnrichedSoularium").setCreativeTab(TMCreativeTabs.tabMisc).setTextureName(Strings.MODID + ":itemPlateSoularium");;
+
+ //Registry
+ GameRegistry.registerItem(itemPlateEnrichedSoularium, "itemPlateEnrichedSoularium");
+
+ }
+ else {
+ Utils.LOG_WARNING("SimplyJetpacks not Found - Skipping Resources.");
+ }
+
+
+ //rfTools
+ if (Loader.isModLoaded("rftools") == true || Strings.LOAD_ALL_CONTENT){
+ Utils.LOG_INFO("rfTools Found - Loading Resources.");
+ //Item Init
+ itemPlateDimensionShard = new Item().setUnlocalizedName("itemPlateDimensionShard").setCreativeTab(TMCreativeTabs.tabMisc).setTextureName(Strings.MODID + ":itemPlateDimensionShard");;
+
+ //Registry
+ GameRegistry.registerItem(itemPlateDimensionShard, "itemPlateDimensionShard");
+
+ }
+ else {
+ Utils.LOG_WARNING("rfTools not Found - Skipping Resources.");
+ }
+
+ /*
+ * Misc Items
+ */
+
+ //Staballoy Equipment
+ Utils.LOG_INFO("Interest in Stablloy Found - Loading Resources.");
+ //Pickaxe
+ itemStaballoyPickaxe = new StaballoyPickaxe("itemStaballoyPickaxe", STABALLOY).setCreativeTab(TMCreativeTabs.tabTools);
+ GameRegistry.registerItem(itemStaballoyPickaxe, itemStaballoyPickaxe.getUnlocalizedName());
+ //Staballoy Ingot/Plate
+ itemIngotStaballoy = new Item().setUnlocalizedName("itemIngotStaballoy").setCreativeTab(TMCreativeTabs.tabMisc).setTextureName(Strings.MODID + ":itemIngotStaballoy");;
+ GameRegistry.registerItem(itemIngotStaballoy, "itemIngotStaballoy");
+ itemPlateStaballoy = new Item().setUnlocalizedName("itemPlateStaballoy").setCreativeTab(TMCreativeTabs.tabMisc).setTextureName(Strings.MODID + ":itemPlateStaballoy");;
+ GameRegistry.registerItem(itemPlateStaballoy, "itemPlateStaballoy");
+ //GregTech_API.sRecipeAdder.addAlloySmelterRecipe(, aInput2, aOutput1, aDuration, aEUt)
+
+
+
+ //Blood Steel Ingot
+ itemIngotBloodSteel = new Item().setUnlocalizedName("itemIngotBloodSteel").setCreativeTab(TMCreativeTabs.tabMisc).setTextureName(Strings.MODID + ":itemIngotBloodSteel");;
+ GameRegistry.registerItem(itemIngotBloodSteel, "itemIngotBloodSteel");
+
+
+ }
+
+}
diff --git a/src/Java/miscutil/core/item/effects/RarityEffect.java b/src/Java/miscutil/core/item/effects/RarityEffect.java
new file mode 100644
index 0000000000..41ba2d6baf
--- /dev/null
+++ b/src/Java/miscutil/core/item/effects/RarityEffect.java
@@ -0,0 +1,41 @@
+package miscutil.core.item.effects;
+
+import net.minecraft.creativetab.CreativeTabs;
+import net.minecraft.item.EnumRarity;
+import net.minecraft.item.Item;
+import net.minecraft.item.ItemStack;
+import cpw.mods.fml.relauncher.Side;
+import cpw.mods.fml.relauncher.SideOnly;
+
+/*
+ *
+This determines the name colour. EnumRarity can be:
+EnumRarity.common - the standard white colour.
+EnumRarity.uncommon - a yellow colour.
+EnumRarity.rare - a light blue colour. This is used for enchanted items.
+EnumRarity.epic - the purple colour used on the Golden Apple.
+@SideOnly is an FML annotation. It marks the method below it for existing only on one side. Possible values are:
+Side.CLIENT is probably the most common one. This marks the method as existing only on the client side.
+Side.SERVER marks the method as existing only on the server side.
+ *
+ */
+
+public class RarityEffect extends Item {
+
+ public RarityEffect(int par1){
+ super();
+ this.setCreativeTab(CreativeTabs.tabMaterials);
+ }
+
+ @Override
+ @SideOnly(Side.CLIENT)
+ public EnumRarity getRarity(ItemStack par1ItemStack){
+ return EnumRarity.common;
+ }
+
+ @Override
+ public boolean hasEffect(ItemStack par1ItemStack){
+ return true;
+ }
+
+}
diff --git a/src/Java/miscutil/core/item/effects/RarityEpic.java b/src/Java/miscutil/core/item/effects/RarityEpic.java
new file mode 100644
index 0000000000..dfcaaa9007
--- /dev/null
+++ b/src/Java/miscutil/core/item/effects/RarityEpic.java
@@ -0,0 +1,28 @@
+package miscutil.core.item.effects;
+
+import net.minecraft.creativetab.CreativeTabs;
+import net.minecraft.item.EnumRarity;
+import net.minecraft.item.Item;
+import net.minecraft.item.ItemStack;
+import cpw.mods.fml.relauncher.Side;
+import cpw.mods.fml.relauncher.SideOnly;
+
+public class RarityEpic extends Item {
+
+ public RarityEpic(int par1){
+ super();
+ this.setCreativeTab(CreativeTabs.tabMaterials);
+ }
+
+ @Override
+ @SideOnly(Side.CLIENT)
+ public EnumRarity getRarity(ItemStack par1ItemStack){
+ return EnumRarity.epic;
+ }
+
+ @Override
+ public boolean hasEffect(ItemStack par1ItemStack){
+ return true;
+ }
+
+}
diff --git a/src/Java/miscutil/core/item/effects/RarityRare.java b/src/Java/miscutil/core/item/effects/RarityRare.java
new file mode 100644
index 0000000000..6afc9b6733
--- /dev/null
+++ b/src/Java/miscutil/core/item/effects/RarityRare.java
@@ -0,0 +1,28 @@
+package miscutil.core.item.effects;
+
+import net.minecraft.creativetab.CreativeTabs;
+import net.minecraft.item.EnumRarity;
+import net.minecraft.item.Item;
+import net.minecraft.item.ItemStack;
+import cpw.mods.fml.relauncher.Side;
+import cpw.mods.fml.relauncher.SideOnly;
+
+public class RarityRare extends Item {
+
+ public RarityRare(int par1){
+ super();
+ this.setCreativeTab(CreativeTabs.tabMaterials);
+ }
+
+ @Override
+ @SideOnly(Side.CLIENT)
+ public EnumRarity getRarity(ItemStack par1ItemStack){
+ return EnumRarity.rare;
+ }
+
+ @Override
+ public boolean hasEffect(ItemStack par1ItemStack){
+ return true;
+ }
+
+}
diff --git a/src/Java/miscutil/core/item/effects/RarityUncommon.java b/src/Java/miscutil/core/item/effects/RarityUncommon.java
new file mode 100644
index 0000000000..4347dc70f5
--- /dev/null
+++ b/src/Java/miscutil/core/item/effects/RarityUncommon.java
@@ -0,0 +1,22 @@
+package miscutil.core.item.effects;
+
+import net.minecraft.item.EnumRarity;
+import net.minecraft.item.Item;
+import net.minecraft.item.ItemStack;
+import cpw.mods.fml.relauncher.Side;
+import cpw.mods.fml.relauncher.SideOnly;
+
+public class RarityUncommon extends Item {
+
+ @Override
+ @SideOnly(Side.CLIENT)
+ public EnumRarity getRarity(ItemStack par1ItemStack){
+ return EnumRarity.uncommon;
+ }
+
+ @Override
+ public boolean hasEffect(ItemStack par1ItemStack){
+ return true;
+ }
+
+}
diff --git a/src/Java/miscutil/core/item/materials/MaterialHandler.java b/src/Java/miscutil/core/item/materials/MaterialHandler.java
new file mode 100644
index 0000000000..3c57d21f90
--- /dev/null
+++ b/src/Java/miscutil/core/item/materials/MaterialHandler.java
@@ -0,0 +1,9 @@
+package miscutil.core.item.materials;
+
+public class MaterialHandler {
+
+ private String Staballoy;
+
+
+
+}
diff --git a/src/Java/miscutil/core/item/tool/bloodsteel/BloodSteelArmor.java b/src/Java/miscutil/core/item/tool/bloodsteel/BloodSteelArmor.java
new file mode 100644
index 0000000000..11bc400587
--- /dev/null
+++ b/src/Java/miscutil/core/item/tool/bloodsteel/BloodSteelArmor.java
@@ -0,0 +1,56 @@
+package miscutil.core.item.tool.bloodsteel;
+
+import miscutil.core.item.ModItems;
+import miscutil.core.lib.Strings;
+import net.minecraft.entity.Entity;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.item.ItemArmor;
+import net.minecraft.item.ItemStack;
+import net.minecraft.potion.Potion;
+import net.minecraft.potion.PotionEffect;
+import net.minecraft.world.World;
+
+public class BloodSteelArmor extends ItemArmor {
+
+ public BloodSteelArmor(ArmorMaterial p_i45325_1_, int p_i45325_2_, int p_i45325_3_) {
+ super(p_i45325_1_, p_i45325_2_, p_i45325_3_);
+ // TODO Auto-generated constructor stub
+ }
+
+ public String getArmorTexture(ItemStack stack, Entity entity, int slot, String type) {
+ if (stack.getItem() == ModItems.tutHelmet || stack.getItem() == ModItems.tutPlate || stack.getItem() == ModItems.tutBoots) {
+ return Strings.MODID + ":textures/armor/BloodSteelArmor1.png";
+ } else if (stack.getItem() == ModItems.tutPants) {
+ return Strings.MODID + ":textures/armor/BloodSteelArmor2.png";
+ } else {
+ return null;
+ }
+ }
+
+ /**
+ * Called to tick armor in the armor slot. Override to do something
+ *
+ * @param world
+ * @param player
+ * @param itemStack
+ */
+ public void onArmorTick(World world, EntityPlayer player, ItemStack itemStack) {
+ if(player.getCurrentArmor(3) != null && player.getCurrentArmor(2) != null && player.getCurrentArmor(1) != null){
+ ItemStack helmet = player.getCurrentArmor(3);
+ ItemStack plate = player.getCurrentArmor(2);
+ ItemStack pants = player.getCurrentArmor(1);
+ if(helmet.getItem() == ModItems.tutHelmet && plate.getItem() == ModItems.tutPlate && pants.getItem() == ModItems.tutPants){
+ //player.addPotionEffect(new PotionEffect(Potion.confusion.getId(), 100, 1));
+ player.capabilities.allowFlying = true;
+ }
+ }
+
+ if(player.getCurrentArmor(0) != null){
+ ItemStack boots = player.getCurrentArmor(0);
+ if(boots.getItem() == ModItems.tutBoots){
+ player.addPotionEffect(new PotionEffect(Potion.jump.getId(), 100, 1));
+ }
+ }
+ }
+
+}
diff --git a/src/Java/miscutil/core/item/tool/bloodsteel/BloodSteelAxe.java b/src/Java/miscutil/core/item/tool/bloodsteel/BloodSteelAxe.java
new file mode 100644
index 0000000000..6353aa3631
--- /dev/null
+++ b/src/Java/miscutil/core/item/tool/bloodsteel/BloodSteelAxe.java
@@ -0,0 +1,12 @@
+package miscutil.core.item.tool.bloodsteel;
+
+import net.minecraft.item.ItemAxe;
+
+public class BloodSteelAxe extends ItemAxe{
+
+ protected BloodSteelAxe(ToolMaterial p_i45327_1_) {
+ super(p_i45327_1_);
+ // TODO Auto-generated constructor stub
+ }
+
+}
diff --git a/src/Java/miscutil/core/item/tool/bloodsteel/BloodSteelHoe.java b/src/Java/miscutil/core/item/tool/bloodsteel/BloodSteelHoe.java
new file mode 100644
index 0000000000..0115c08d00
--- /dev/null
+++ b/src/Java/miscutil/core/item/tool/bloodsteel/BloodSteelHoe.java
@@ -0,0 +1,12 @@
+package miscutil.core.item.tool.bloodsteel;
+
+import net.minecraft.item.ItemHoe;
+
+public class BloodSteelHoe extends ItemHoe{
+
+ public BloodSteelHoe(ToolMaterial p_i45343_1_) {
+ super(p_i45343_1_);
+ // TODO Auto-generated constructor stub
+ }
+
+}
diff --git a/src/Java/miscutil/core/item/tool/bloodsteel/BloodSteelPickaxe.java b/src/Java/miscutil/core/item/tool/bloodsteel/BloodSteelPickaxe.java
new file mode 100644
index 0000000000..d2c5d467b5
--- /dev/null
+++ b/src/Java/miscutil/core/item/tool/bloodsteel/BloodSteelPickaxe.java
@@ -0,0 +1,12 @@
+package miscutil.core.item.tool.bloodsteel;
+
+import net.minecraft.item.ItemPickaxe;
+
+public class BloodSteelPickaxe extends ItemPickaxe{
+
+ protected BloodSteelPickaxe(ToolMaterial p_i45347_1_) {
+ super(p_i45347_1_);
+ // TODO Auto-generated constructor stub
+ }
+
+}
diff --git a/src/Java/miscutil/core/item/tool/bloodsteel/BloodSteelSpade.java b/src/Java/miscutil/core/item/tool/bloodsteel/BloodSteelSpade.java
new file mode 100644
index 0000000000..15318d7382
--- /dev/null
+++ b/src/Java/miscutil/core/item/tool/bloodsteel/BloodSteelSpade.java
@@ -0,0 +1,12 @@
+package miscutil.core.item.tool.bloodsteel;
+
+import net.minecraft.item.ItemSpade;
+
+public class BloodSteelSpade extends ItemSpade{
+
+ public BloodSteelSpade(ToolMaterial p_i45353_1_) {
+ super(p_i45353_1_);
+ // TODO Auto-generated constructor stub
+ }
+
+}
diff --git a/src/Java/miscutil/core/item/tool/bloodsteel/BloodSteelSword.java b/src/Java/miscutil/core/item/tool/bloodsteel/BloodSteelSword.java
new file mode 100644
index 0000000000..96d11331a0
--- /dev/null
+++ b/src/Java/miscutil/core/item/tool/bloodsteel/BloodSteelSword.java
@@ -0,0 +1,12 @@
+package miscutil.core.item.tool.bloodsteel;
+
+import net.minecraft.item.ItemSword;
+
+public class BloodSteelSword extends ItemSword{
+
+ public BloodSteelSword(ToolMaterial p_i45356_1_) {
+ super(p_i45356_1_);
+ // TODO Auto-generated constructor stub
+ }
+
+}
diff --git a/src/Java/miscutil/core/item/tool/staballoy/StaballoyPickaxe.java b/src/Java/miscutil/core/item/tool/staballoy/StaballoyPickaxe.java
new file mode 100644
index 0000000000..2453f9f6e2
--- /dev/null
+++ b/src/Java/miscutil/core/item/tool/staballoy/StaballoyPickaxe.java
@@ -0,0 +1,14 @@
+package miscutil.core.item.tool.staballoy;
+
+import miscutil.core.lib.Strings;
+import net.minecraft.item.ItemPickaxe;
+
+public class StaballoyPickaxe extends ItemPickaxe{
+
+ public StaballoyPickaxe(String unlocalizedName, ToolMaterial material) {
+ super(material);
+ this.setUnlocalizedName(unlocalizedName);
+ this.setTextureName(Strings.MODID + ":" + unlocalizedName);
+ }
+
+}
diff --git a/src/Java/miscutil/core/lib/Strings.java b/src/Java/miscutil/core/lib/Strings.java
new file mode 100644
index 0000000000..1213dc56ef
--- /dev/null
+++ b/src/Java/miscutil/core/lib/Strings.java
@@ -0,0 +1,19 @@
+package miscutil.core.lib;
+
+public class Strings {
+
+ public static final String name = "Misc. Utils";
+ public static final String MODID = "miscutils";
+ public static final String VERSION = "0.7.8gtu";
+ public static final boolean DEBUG = true;
+ public static boolean GREGTECH;
+ public static final boolean LOAD_ALL_CONTENT = false;
+ public static final int GREG_FIRST_ID = 760;
+
+ //GUIS
+ public enum GUI_ENUM
+ {
+ ENERGYBUFFER, TOOLBUILDER, NULL, NULL1, NULL2
+ }
+
+}
diff --git a/src/Java/miscutil/core/proxy/ClientProxy.java b/src/Java/miscutil/core/proxy/ClientProxy.java
new file mode 100644
index 0000000000..f0f21549e8
--- /dev/null
+++ b/src/Java/miscutil/core/proxy/ClientProxy.java
@@ -0,0 +1,42 @@
+package miscutil.core.proxy;
+
+import miscutil.core.CommonProxy;
+import cpw.mods.fml.client.registry.RenderingRegistry;
+import cpw.mods.fml.common.event.FMLInitializationEvent;
+import cpw.mods.fml.common.event.FMLPostInitializationEvent;
+import cpw.mods.fml.common.event.FMLPreInitializationEvent;
+
+public class ClientProxy extends CommonProxy{
+
+ @Override
+ public void preInit(FMLPreInitializationEvent e) {
+ // TODO Auto-generated method stub
+ super.preInit(e);
+ }
+
+ @Override
+ public void init(FMLInitializationEvent e) {
+ // TODO Auto-generated method stub
+ super.init(e);
+ }
+
+ @Override
+ public void postInit(FMLPostInitializationEvent e) {
+ // TODO Auto-generated method stub
+ super.postInit(e);
+ }
+
+ public void registerRenderThings(){
+ //RenderingRegistry.registerEntityRenderingHandler(EntityBloodSteelMob.class, new RenderBloodSteelMob(new ModelBloodSteelMob(), 0));
+ //RenderingRegistry.registerEntityRenderingHandler(EntityBloodSteelHostileMob.class, new RenderBloodSteelMobHostile(new ModelBloodSteelMob(), 0));
+ //RenderingRegistry.registerEntityRenderingHandler(EntityGrenade.class, new RenderSnowball(ModItems.tutGrenade));
+
+ //ClientRegistry.bindTileEntitySpecialRenderer(TileEntityBloodSteelChest.class, new BloodSteelChestRenderer());
+ //MinecraftForgeClient.registerItemRenderer(Item.getItemFromBlock(ModBlocks.tutChest), new ItemRenderBloodSteelChest());
+ }
+
+ public int addArmor(String armor){
+ return RenderingRegistry.addNewArmourRendererPrefix(armor);
+ }
+
+}
diff --git a/src/Java/miscutil/core/proxy/ServerProxy.java b/src/Java/miscutil/core/proxy/ServerProxy.java
new file mode 100644
index 0000000000..59e625eaed
--- /dev/null
+++ b/src/Java/miscutil/core/proxy/ServerProxy.java
@@ -0,0 +1,28 @@
+package miscutil.core.proxy;
+
+import miscutil.core.CommonProxy;
+import cpw.mods.fml.common.event.FMLInitializationEvent;
+import cpw.mods.fml.common.event.FMLPostInitializationEvent;
+import cpw.mods.fml.common.event.FMLPreInitializationEvent;
+
+public class ServerProxy extends CommonProxy{
+
+ @Override
+ public void preInit(FMLPreInitializationEvent e) {
+ // TODO Auto-generated method stub
+ super.preInit(e);
+ }
+
+ @Override
+ public void init(FMLInitializationEvent e) {
+ // TODO Auto-generated method stub
+ super.init(e);
+ }
+
+ @Override
+ public void postInit(FMLPostInitializationEvent e) {
+ // TODO Auto-generated method stub
+ super.postInit(e);
+ }
+
+}
diff --git a/src/Java/miscutil/core/tileentities/ModTileEntities.java b/src/Java/miscutil/core/tileentities/ModTileEntities.java
new file mode 100644
index 0000000000..6126c5793e
--- /dev/null
+++ b/src/Java/miscutil/core/tileentities/ModTileEntities.java
@@ -0,0 +1,13 @@
+package miscutil.core.tileentities;
+
+import miscutil.core.util.Utils;
+
+public class ModTileEntities {
+
+
+ public static void init(){
+ Utils.LOG_INFO("Registering Tile Entities.");
+ //GameRegistry.registerTileEntity(TileEntityStorage.class, "TE_Storage");
+ }
+
+}
diff --git a/src/Java/miscutil/core/util/Benchmark.java b/src/Java/miscutil/core/util/Benchmark.java
new file mode 100644
index 0000000000..1e17175c3b
--- /dev/null
+++ b/src/Java/miscutil/core/util/Benchmark.java
@@ -0,0 +1,153 @@
+package miscutil.core.util;
+
+import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
+import java.text.DateFormat;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+import java.util.Random;
+
+import cpw.mods.fml.common.FMLLog;
+
+@SuppressWarnings("unused")
+public class Benchmark {
+
+ public void math() throws ParseException{
+ Random r = new Random();
+
+ FMLLog.info("Looking at the stars in the sky");
+
+ // generate some random boolean values
+ boolean[] booleans = new boolean[10];
+ for (int i = 0; i < booleans.length; i++) {
+ booleans[i] = r.nextBoolean();
+ }
+
+ //FMLLog.info(getSha256(booleans.toString()));
+
+ /*for (boolean b : booleans) {
+ FMLLog.info(b + ", ");
+ }*/
+
+ // generate a uniformly distributed int random numbers
+ int[] integers = new int[10];
+ for (int i = 0; i < integers.length; i++) {
+ integers[i] = r.nextInt();
+ }
+
+ FMLLog.info(getSha256(integers.toString()));
+
+ /*for (int i : integers) {s
+ FMLLog.info(i + ", ");
+ }*/
+
+ // generate a uniformly distributed float random numbers
+ float[] floats = new float[10];
+ for (int i = 0; i < floats.length; i++) {
+ floats[i] = r.nextFloat();
+ }
+
+ FMLLog.info(getSha256(floats.toString()));
+
+ /*for (float f : floats) {
+ FMLLog.info(f + ", ");
+ }*/
+
+ // generate a Gaussian normally distributed random numbers
+ double[] gaussians = new double[10];
+ for (int i = 0; i < gaussians.length; i++) {
+ gaussians[i] = r.nextGaussian();
+ }
+
+ FMLLog.info(getSha256(gaussians.toString()));
+ }
+
+ private String dateTime(){
+ DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd - HH:mm:ss");
+ //get current date time with Calendar()
+ Calendar cal = Calendar.getInstance();
+ return dateFormat.format(cal.getTime());
+ }
+
+ public String superhash(String a){
+ FMLLog.info("Calculating the cost of life & the universe");
+ int i = 1;
+ String b = a;
+ while (i < 3358 && i > 0){
+ if (!b.equals(a)){
+ b = a;
+ }
+ getSha256(b);
+ a = b;
+ try {
+ Thread.sleep(2);
+ } catch (InterruptedException e) {
+ FMLLog.info("Hashbrown order failed");
+ e.printStackTrace();
+ }
+ if (i == 500 || i == 1000 || i == 1500 || i == 2000 || i == 2500 || i == 3000 || i == 3500 || i == 4000 || i == 5000){
+ //FMLLog.info("Calculating orbits around the sun: "+i);
+ }
+ i++;
+ }
+ return b;
+ }
+
+ private String getSha256(String message) {
+ if (message == null || message.isEmpty()) {
+ return "";
+ }
+ String chiper = generateString("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890-=!@#$%^&*()_+`~[];',./{}:<>?|'", 32);
+ String key = generateString("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890-=!@#$%^&*()_+`~[];',./{}:<>?|'", 16); // key is used to construct a new SHA-256 key/salt
+
+ // Initialize SHA-256
+ MessageDigest digest = null;
+ try {
+ digest = MessageDigest.getInstance("SHA-256");
+ } catch (NoSuchAlgorithmException e) {
+ System.err.println(e.getMessage());
+ }
+
+ // Hashing entered key to construct a new key/salt
+ byte[] keyAsSHA256 = digest.digest(key.getBytes());
+
+ // Encoding the message with CBC
+ char[] messageAsChars = message.toCharArray();
+ messageAsChars[0] ^= keyAsSHA256[0]; // Avoiding buffer underflow
+ for (int i = 1; i < messageAsChars.length; i++) {
+ messageAsChars[i] ^= messageAsChars[i - 1]; // XOR with previous character
+ messageAsChars[i] ^= keyAsSHA256[i % keyAsSHA256.length]; // XOR with keys hash
+ }
+ // build cipher from the chars
+ chiper = new String(messageAsChars);
+ String cipher = MD5(chiper);
+ return chiper + "|" + cipher;
+ }
+
+ public String MD5(String md5) {
+ try {
+ java.security.MessageDigest md = java.security.MessageDigest.getInstance("MD5");
+ byte[] array = md.digest(md5.getBytes());
+ StringBuffer sb = new StringBuffer();
+ for (int i = 0; i < array.length; ++i) {
+ sb.append(Integer.toHexString((array[i] & 0xFF) | 0x100).substring(1,3));
+ }
+ return sb.toString();
+ } catch (java.security.NoSuchAlgorithmException e) {
+ }
+ return null;
+ }
+
+ public static String generateString(String characters, int length)
+ {
+ Random r = new Random();
+ char[] text = new char[length];
+ for (int i = 0; i < length; i++)
+ {
+ text[i] = characters.charAt(r.nextInt(characters.length()));
+ }
+ return new String(text);
+ }
+
+} \ No newline at end of file
diff --git a/src/Java/miscutil/core/util/Utils.java b/src/Java/miscutil/core/util/Utils.java
new file mode 100644
index 0000000000..00acfba45f
--- /dev/null
+++ b/src/Java/miscutil/core/util/Utils.java
@@ -0,0 +1,61 @@
+package miscutil.core.util;
+
+import java.awt.Graphics;
+
+import miscutil.core.lib.Strings;
+import net.minecraft.item.ItemStack;
+import cpw.mods.fml.common.FMLLog;
+
+public class Utils {
+
+ public static final int WILDCARD_VALUE = Short.MAX_VALUE;
+ public static boolean containsMatch(boolean strict, ItemStack[] inputs, ItemStack... targets)
+ {
+ for (ItemStack input : inputs)
+ {
+ for (ItemStack target : targets)
+ {
+ if (itemMatches(target, input, strict))
+ {
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+
+ public static boolean itemMatches(ItemStack target, ItemStack input, boolean strict)
+ {
+ if (input == null && target != null || input != null && target == null)
+ {
+ return false;
+ }
+ return (target.getItem() == input.getItem() && ((target.getItemDamage() == WILDCARD_VALUE && !strict) || target.getItemDamage() == input.getItemDamage()));
+ }
+
+ //Non-Dev Comments
+ public static void LOG_INFO(String s){
+ //if (Strings.DEBUG){
+ FMLLog.info("MiscUtils: "+s);
+ //}
+ }
+
+ //Developer Comments
+ public static void LOG_WARNING(String s){
+ if (Strings.DEBUG){
+ FMLLog.warning("MiscUtils: "+s);
+ }
+ }
+
+ //Errors
+ public static void LOG_ERROR(String s){
+ if (Strings.DEBUG){
+ FMLLog.severe("MiscUtils: "+s);
+ }
+ }
+
+ public static void paintBox(Graphics g, int MinA, int MinB, int MaxA, int MaxB){
+ g.drawRect (MinA, MinB, MaxA, MaxB);
+ }
+
+}
diff --git a/src/Java/miscutil/gregtech/energy/IC2ElectricItem.java b/src/Java/miscutil/gregtech/energy/IC2ElectricItem.java
new file mode 100644
index 0000000000..1e8ecd563a
--- /dev/null
+++ b/src/Java/miscutil/gregtech/energy/IC2ElectricItem.java
@@ -0,0 +1,55 @@
+package miscutil.gregtech.energy;
+
+import net.minecraft.item.Item;
+import net.minecraft.item.ItemStack;
+
+/**
+ * Provides the ability to store energy on the implementing item.
+ *
+ * The item should have a maximum damage of 13.
+ */
+public interface IC2ElectricItem {
+ /**
+ * Determine if the item can be used in a machine or as an armor part to supply energy.
+ *
+ * @return Whether the item can supply energy
+ */
+ boolean canProvideEnergy(ItemStack itemStack);
+
+ /**
+ * Get the item ID to use for a charge energy greater than 0.
+ *
+ * @return Item ID to use
+ */
+ Item getChargedItem(ItemStack itemStack);
+
+ /**
+ * Get the item ID to use for a charge energy of 0.
+ *
+ * @return Item ID to use
+ */
+ Item getEmptyItem(ItemStack itemStack);
+
+ /**
+ * Get the item's maximum charge energy in EU.
+ *
+ * @return Maximum charge energy
+ */
+ double getMaxCharge(ItemStack itemStack);
+
+ /**
+ * Get the item's tier, lower tiers can't send energy to higher ones.
+ * Batteries are Tier 1, Energy Crystals are Tier 2, Lapotron Crystals are Tier 3.
+ *
+ * @return Item's tier
+ */
+ int getTier(ItemStack itemStack);
+
+ /**
+ * Get the item's transfer limit in EU per transfer operation.
+ *
+ * @return Transfer limit
+ */
+ double getTransferLimit(ItemStack itemStack);
+}
+
diff --git a/src/Java/miscutil/gregtech/energy/IC2ElectricItemManager.java b/src/Java/miscutil/gregtech/energy/IC2ElectricItemManager.java
new file mode 100644
index 0000000000..8607d2109b
--- /dev/null
+++ b/src/Java/miscutil/gregtech/energy/IC2ElectricItemManager.java
@@ -0,0 +1,95 @@
+package miscutil.gregtech.energy;
+
+import net.minecraft.entity.EntityLivingBase;
+import net.minecraft.item.ItemStack;
+
+/**
+ * This interface specifies a manager to handle the various tasks for electric items.
+ *
+ * The default implementation does the following:
+ * - store and retrieve the charge
+ * - handle charging, taking amount, tier, transfer limit, canProvideEnergy and simulate into account
+ * - replace item IDs if appropriate (getChargedItemId() and getEmptyItemId())
+ * - update and manage the damage value for the visual charge indicator
+ *
+ * @note If you're implementing your own variant (ISpecialElectricItem), you can delegate to the
+ * default implementations through ElectricItem.rawManager. The default implementation is designed
+ * to minimize its dependency on its own constraints/structure and delegates most work back to the
+ * more atomic features in the gateway manager.
+ */
+public interface IC2ElectricItemManager {
+ /**
+ * Charge an item with a specified amount of energy.
+ *
+ * @param itemStack electric item's stack
+ * @param amount amount of energy to charge in EU
+ * @param tier tier of the charging device, has to be at least as high as the item to charge
+ * @param ignoreTransferLimit ignore the transfer limit specified by getTransferLimit()
+ * @param simulate don't actually change the item, just determine the return value
+ * @return Energy transferred into the electric item
+ */
+ double charge(ItemStack stack, double amount, int tier, boolean ignoreTransferLimit, boolean simulate);
+
+ /**
+ * Discharge an item by a specified amount of energy
+ *
+ * @param itemStack electric item's stack
+ * @param amount amount of energy to discharge in EU
+ * @param tier tier of the discharging device, has to be at least as high as the item to discharge
+ * @param ignoreTransferLimit ignore the transfer limit specified by getTransferLimit()
+ * @param externally use the supplied item externally, i.e. to power something else as if it was a battery
+ * @param simulate don't actually discharge the item, just determine the return value
+ * @return Energy retrieved from the electric item
+ */
+ double discharge(ItemStack stack, double amount, int tier, boolean ignoreTransferLimit, boolean externally, boolean simulate);
+
+ /**
+ * Determine the charge level for the specified item.
+ *
+ * @param itemStack ItemStack containing the electric item
+ * @return charge level in EU
+ */
+ double getCharge(ItemStack stack);
+
+ /**
+ * Determine if the specified electric item has at least a specific amount of EU.
+ * This is supposed to be used in the item code during operation, for example if you want to implement your own electric item.
+ * BatPacks are not taken into account.
+ *
+ * @param itemStack electric item's stack
+ * @param amount minimum amount of energy required
+ * @return true if there's enough energy
+ */
+ boolean canUse(ItemStack stack, double amount);
+
+ /**
+ * Try to retrieve a specific amount of energy from an Item, and if applicable, a BatPack.
+ * This is supposed to be used in the item code during operation, for example if you want to implement your own electric item.
+ *
+ * @param itemStack electric item's stack
+ * @param amount amount of energy to discharge in EU
+ * @param entity entity holding the item
+ * @return true if the operation succeeded
+ */
+ boolean use(ItemStack stack, double amount, EntityLivingBase entity);
+
+ /**
+ * Charge an item from the BatPack a player is wearing.
+ * This is supposed to be used in the item code during operation, for example if you want to implement your own electric item.
+ * use() already contains this functionality.
+ *
+ * @param itemStack electric item's stack
+ * @param entity entity holding the item
+ */
+ void chargeFromArmor(ItemStack stack, EntityLivingBase entity);
+
+ /**
+ * Get the tool tip to display for electric items.
+ *
+ * @param itemStack ItemStack to determine the tooltip for
+ * @return tool tip string or null for none
+ */
+ String getToolTip(ItemStack stack);
+
+ // TODO: add tier getter
+}
diff --git a/src/Java/miscutil/gregtech/enums/AddExtraOreDict.java b/src/Java/miscutil/gregtech/enums/AddExtraOreDict.java
new file mode 100644
index 0000000000..4b3e352292
--- /dev/null
+++ b/src/Java/miscutil/gregtech/enums/AddExtraOreDict.java
@@ -0,0 +1,16 @@
+package miscutil.gregtech.enums;
+
+import gregtech.api.util.GT_OreDictUnificator;
+import gregtech.loaders.preload.GT_Loader_OreDictionary;
+import miscutil.gregtech.init.machines.GregtechEnergyBuffer;
+import net.minecraft.item.ItemStack;
+
+public class AddExtraOreDict extends GT_Loader_OreDictionary {
+
+ @Override
+ public void run()
+ {
+ GT_OreDictUnificator.registerOre(ExtraOreDictNames.buffer_core, new ItemStack(GregtechEnergyBuffer.itemBufferCore));
+ }
+
+}
diff --git a/src/Java/miscutil/gregtech/enums/ExtraOreDictNames.java b/src/Java/miscutil/gregtech/enums/ExtraOreDictNames.java
new file mode 100644
index 0000000000..aca2b63434
--- /dev/null
+++ b/src/Java/miscutil/gregtech/enums/ExtraOreDictNames.java
@@ -0,0 +1,5 @@
+package miscutil.gregtech.enums;
+
+public enum ExtraOreDictNames {
+ buffer_core
+}
diff --git a/src/Java/miscutil/gregtech/enums/GregtechItemList.java b/src/Java/miscutil/gregtech/enums/GregtechItemList.java
new file mode 100644
index 0000000000..fb09dc36cb
--- /dev/null
+++ b/src/Java/miscutil/gregtech/enums/GregtechItemList.java
@@ -0,0 +1,153 @@
+package miscutil.gregtech.enums;
+
+import static gregtech.api.enums.GT_Values.W;
+import gregtech.api.util.GT_ModHandler;
+import gregtech.api.util.GT_OreDictUnificator;
+import gregtech.api.util.GT_Utility;
+import miscutil.gregtech.interfaces.GregtechItemContainer;
+import net.minecraft.block.Block;
+import net.minecraft.item.Item;
+import net.minecraft.item.ItemStack;
+import net.minecraftforge.fluids.Fluid;
+
+/**
+ * Class containing all non-OreDict Items of GregTech.
+ */
+public enum GregtechItemList implements GregtechItemContainer {
+
+ Credit_Copper,
+ Credit_Iron,
+ Credit_Silver,
+ Credit_Gold,
+ Credit_Platinum,
+ Credit_Osmium,
+ Credit_Greg_Copper,
+ Credit_Greg_Cupronickel,
+ Credit_Greg_Silver,
+ Credit_Greg_Gold,
+ Credit_Greg_Platinum,
+ Credit_Greg_Osmium,
+ Credit_Greg_Naquadah,
+ Energy_Buffer_CREATIVE,
+ //Energy Buffes
+ Energy_Buffer_1by1_ULV, Energy_Buffer_1by1_LV, Energy_Buffer_1by1_MV, Energy_Buffer_1by1_HV, Energy_Buffer_1by1_EV, Energy_Buffer_1by1_IV, Energy_Buffer_1by1_LuV, Energy_Buffer_1by1_ZPM, Energy_Buffer_1by1_UV, Energy_Buffer_1by1_MAX,
+ Cobble_Generator_ULV, Cobble_Generator_LV, Cobble_Generator_MV, Cobble_Generator_HV, Cobble_Generator_EV, Cobble_Generator_IV, Cobble_Generator_LuV, Cobble_Generator_ZPM, Cobble_Generator_UV, Cobble_Generator_MAX;
+
+ public static final GregtechItemList[]
+ DYE_ONLY_ITEMS = {
+ Energy_Buffer_1by1_EV, Energy_Buffer_1by1_EV };
+ private ItemStack mStack;
+ private boolean mHasNotBeenSet = true;
+
+ public static Fluid sOilExtraHeavy, sOilHeavy, sOilMedium, sOilLight, sNaturalGas;
+
+ @Override
+ public GregtechItemList set(Item aItem) {
+ mHasNotBeenSet = false;
+ if (aItem == null) return this;
+ ItemStack aStack = new ItemStack(aItem, 1, 0);
+ mStack = GT_Utility.copyAmount(1, aStack);
+ return this;
+ }
+
+ @Override
+ public GregtechItemList set(ItemStack aStack) {
+ mHasNotBeenSet = false;
+ mStack = GT_Utility.copyAmount(1, aStack);
+ return this;
+ }
+
+ @Override
+ public Item getItem() {
+ if (mHasNotBeenSet) throw new IllegalAccessError("The Enum '" + name() + "' has not been set to an Item at this time!");
+ if (GT_Utility.isStackInvalid(mStack)) return null;
+ return mStack.getItem();
+ }
+
+ @Override
+ public Block getBlock() {
+ if (mHasNotBeenSet) throw new IllegalAccessError("The Enum '" + name() + "' has not been set to an Item at this time!");
+ return GT_Utility.getBlockFromStack(getItem());
+ }
+
+ @Override
+ public final boolean hasBeenSet() {
+ return !mHasNotBeenSet;
+ }
+
+ @Override
+ public boolean isStackEqual(Object aStack) {
+ return isStackEqual(aStack, false, false);
+ }
+
+ @Override
+ public boolean isStackEqual(Object aStack, boolean aWildcard, boolean aIgnoreNBT) {
+ if (GT_Utility.isStackInvalid(aStack)) return false;
+ return GT_Utility.areUnificationsEqual((ItemStack)aStack, aWildcard?getWildcard(1):get(1), aIgnoreNBT);
+ }
+
+ @Override
+ public ItemStack get(long aAmount, Object... aReplacements) {
+ if (mHasNotBeenSet) throw new IllegalAccessError("The Enum '" + name() + "' has not been set to an Item at this time!");
+ if (GT_Utility.isStackInvalid(mStack)) return GT_Utility.copyAmount(aAmount, aReplacements);
+ return GT_Utility.copyAmount(aAmount, GT_OreDictUnificator.get(mStack));
+ }
+
+ @Override
+ public ItemStack getWildcard(long aAmount, Object... aReplacements) {
+ if (mHasNotBeenSet) throw new IllegalAccessError("The Enum '" + name() + "' has not been set to an Item at this time!");
+ if (GT_Utility.isStackInvalid(mStack)) return GT_Utility.copyAmount(aAmount, aReplacements);
+ return GT_Utility.copyAmountAndMetaData(aAmount, W, GT_OreDictUnificator.get(mStack));
+ }
+
+ @Override
+ public ItemStack getUndamaged(long aAmount, Object... aReplacements) {
+ if (mHasNotBeenSet) throw new IllegalAccessError("The Enum '" + name() + "' has not been set to an Item at this time!");
+ if (GT_Utility.isStackInvalid(mStack)) return GT_Utility.copyAmount(aAmount, aReplacements);
+ return GT_Utility.copyAmountAndMetaData(aAmount, 0, GT_OreDictUnificator.get(mStack));
+ }
+
+ @Override
+ public ItemStack getAlmostBroken(long aAmount, Object... aReplacements) {
+ if (mHasNotBeenSet) throw new IllegalAccessError("The Enum '" + name() + "' has not been set to an Item at this time!");
+ if (GT_Utility.isStackInvalid(mStack)) return GT_Utility.copyAmount(aAmount, aReplacements);
+ return GT_Utility.copyAmountAndMetaData(aAmount, mStack.getMaxDamage()-1, GT_OreDictUnificator.get(mStack));
+ }
+
+ @Override
+ public ItemStack getWithName(long aAmount, String aDisplayName, Object... aReplacements) {
+ ItemStack rStack = get(1, aReplacements);
+ if (GT_Utility.isStackInvalid(rStack)) return null;
+ rStack.setStackDisplayName(aDisplayName);
+ return GT_Utility.copyAmount(aAmount, rStack);
+ }
+
+ @Override
+ public ItemStack getWithCharge(long aAmount, int aEnergy, Object... aReplacements) {
+ ItemStack rStack = get(1, aReplacements);
+ if (GT_Utility.isStackInvalid(rStack)) return null;
+ GT_ModHandler.chargeElectricItem(rStack, aEnergy, Integer.MAX_VALUE, true, false);
+ return GT_Utility.copyAmount(aAmount, rStack);
+ }
+
+ @Override
+ public ItemStack getWithDamage(long aAmount, long aMetaValue, Object... aReplacements) {
+ if (mHasNotBeenSet) throw new IllegalAccessError("The Enum '" + name() + "' has not been set to an Item at this time!");
+ if (GT_Utility.isStackInvalid(mStack)) return GT_Utility.copyAmount(aAmount, aReplacements);
+ return GT_Utility.copyAmountAndMetaData(aAmount, aMetaValue, GT_OreDictUnificator.get(mStack));
+ }
+
+ @Override
+ public GregtechItemList registerOre(Object... aOreNames) {
+ if (mHasNotBeenSet) throw new IllegalAccessError("The Enum '" + name() + "' has not been set to an Item at this time!");
+ for (Object tOreName : aOreNames) GT_OreDictUnificator.registerOre(tOreName, get(1));
+ return this;
+ }
+
+ @Override
+ public GregtechItemList registerWildcardAsOre(Object... aOreNames) {
+ if (mHasNotBeenSet) throw new IllegalAccessError("The Enum '" + name() + "' has not been set to an Item at this time!");
+ for (Object tOreName : aOreNames) GT_OreDictUnificator.registerOre(tOreName, getWildcard(1));
+ return this;
+ }
+} \ No newline at end of file
diff --git a/src/Java/miscutil/gregtech/init/InitGregtech.java b/src/Java/miscutil/gregtech/init/InitGregtech.java
new file mode 100644
index 0000000000..46e9217f24
--- /dev/null
+++ b/src/Java/miscutil/gregtech/init/InitGregtech.java
@@ -0,0 +1,23 @@
+package miscutil.gregtech.init;
+
+import miscutil.core.lib.Strings;
+import miscutil.gregtech.init.machines.GregtechEnergyBuffer;
+import cpw.mods.fml.common.FMLLog;
+
+public class InitGregtech {
+
+ public static void run() {
+ if (Strings.GREGTECH) {
+ FMLLog.info("MiscUtils|Gregtech5u Content: Registering MetaTileEntities.");
+ }
+
+ /***
+ * Load up Blocks classes
+ ***/
+
+ // Machines
+ // GregtechCobbleGenerator.run(); TODO - Weird Textures
+ GregtechEnergyBuffer.run();
+
+ }
+}
diff --git a/src/Java/miscutil/gregtech/init/machines/GregtechCobbleGenerator.java b/src/Java/miscutil/gregtech/init/machines/GregtechCobbleGenerator.java
new file mode 100644
index 0000000000..bb83ea91b2
--- /dev/null
+++ b/src/Java/miscutil/gregtech/init/machines/GregtechCobbleGenerator.java
@@ -0,0 +1,51 @@
+package miscutil.gregtech.init.machines;
+
+import gregtech.api.enums.ItemList;
+import gregtech.api.enums.Materials;
+import gregtech.api.enums.OreDictNames;
+import gregtech.api.enums.OrePrefixes;
+import gregtech.api.util.GT_ModHandler;
+import miscutil.core.lib.Strings;
+import miscutil.gregtech.enums.GregtechItemList;
+import miscutil.gregtech.metatileentity.implementations.GregtechSteelBoiler;
+import cpw.mods.fml.common.FMLLog;
+
+public class GregtechCobbleGenerator
+{
+ public static void run()
+ {
+ if (Strings.GREGTECH){
+ FMLLog.info("MiscUtils: Registering Cobblestone Powered Engines.");
+ }
+ run1();
+ }
+
+ private static void run1()
+ {
+ //Cobble Generators
+ // ItemList.Machine_Steel_Boiler.set(new GT_MetaTileEntity_Boiler_Steel(101, "boiler.steel", "High Pressure Coal Boiler").getStackForm(1L));
+ // GT_ModHandler.addCraftingRecipe(ItemList.Machine_Steel_Boiler.get(1L, new Object[0]), GT_ModHandler.RecipeBits.NOT_REMOVABLE | GT_ModHandler.RecipeBits.REVERSIBLE | GT_ModHandler.RecipeBits.BUFFERED, new Object[] { "PPP", "P P", "BFB", Character.valueOf('F'), OreDictNames.craftingFurnace, Character.valueOf('P'), OrePrefixes.plate.get(Materials.Steel), Character.valueOf('B'), new ItemStack(Blocks.brick_block, 1) });
+
+ GregtechItemList.Cobble_Generator_ULV.set(new GregtechSteelBoiler(760, "CobGen.01.tier.00", "Ultra Low Voltage Cobblestone Generator", 0, "You're shit.").getStackForm(1L));
+ GregtechItemList.Cobble_Generator_LV.set(new GregtechSteelBoiler(761, "CobGen.01.tier.01", "Low Voltage Cobblestone Generator", 1, "Still Pretty garbage, bro.").getStackForm(1L));
+ GregtechItemList.Cobble_Generator_MV.set(new GregtechSteelBoiler(762, "CobGen.01.tier.02", "Medium Voltage Cobblestone Generator", 2, "Testy Test.").getStackForm(1L));
+ GregtechItemList.Cobble_Generator_HV.set(new GregtechSteelBoiler(763, "CobGen.01.tier.03", "High Voltage Cobblestone Generator", 3, "").getStackForm(1L));
+ GregtechItemList.Cobble_Generator_EV.set(new GregtechSteelBoiler(764, "CobGen.01.tier.04", "Extreme Voltage Cobblestone Generator", 4, "").getStackForm(1L));
+ GregtechItemList.Cobble_Generator_IV.set(new GregtechSteelBoiler(765, "CobGen.01.tier.05", "Insane Voltage Cobblestone Generator", 5, "").getStackForm(1L));
+ GregtechItemList.Cobble_Generator_LuV.set(new GregtechSteelBoiler(766, "CobGen.01.tier.06", "Ludicrous Voltage Cobblestone Generator", 6, "").getStackForm(1L));
+ GregtechItemList.Cobble_Generator_ZPM.set(new GregtechSteelBoiler(767, "CobGen.01.tier.07", "ZPM Voltage Cobblestone Generator", 7, "").getStackForm(1L));
+ GregtechItemList.Cobble_Generator_UV.set(new GregtechSteelBoiler(768, "CobGen.01.tier.08", "Ultimate Voltage Cobblestone Generator", 8, "").getStackForm(1L));
+ GregtechItemList.Cobble_Generator_MAX.set(new GregtechSteelBoiler(769, "CobGen.01.tier.09", "MAX Voltage Cobblestone Generator", 9, "").getStackForm(1L));
+
+ GT_ModHandler.addCraftingRecipe(GregtechItemList.Cobble_Generator_ULV.get(1L, new Object[0]), GT_ModHandler.RecipeBits.DISMANTLEABLE | GT_ModHandler.RecipeBits.NOT_REMOVABLE | GT_ModHandler.RecipeBits.REVERSIBLE | GT_ModHandler.RecipeBits.BUFFERED, new Object[] { "WTW", "WMW", Character.valueOf('M'), ItemList.Hull_ULV, Character.valueOf('W'), OrePrefixes.wireGt04.get(Materials.Lead), Character.valueOf('T'), OreDictNames.craftingChest });
+ GT_ModHandler.addCraftingRecipe(GregtechItemList.Cobble_Generator_LV.get(1L, new Object[0]), GT_ModHandler.RecipeBits.DISMANTLEABLE | GT_ModHandler.RecipeBits.NOT_REMOVABLE | GT_ModHandler.RecipeBits.REVERSIBLE | GT_ModHandler.RecipeBits.BUFFERED, new Object[] { "WTW", "WMW", Character.valueOf('M'), ItemList.Hull_LV, Character.valueOf('W'), OrePrefixes.wireGt04.get(Materials.Tin), Character.valueOf('T'), OreDictNames.craftingChest });
+ GT_ModHandler.addCraftingRecipe(GregtechItemList.Cobble_Generator_MV.get(1L, new Object[0]), GT_ModHandler.RecipeBits.DISMANTLEABLE | GT_ModHandler.RecipeBits.NOT_REMOVABLE | GT_ModHandler.RecipeBits.REVERSIBLE | GT_ModHandler.RecipeBits.BUFFERED, new Object[] { "WTW", "WMW", Character.valueOf('M'), ItemList.Hull_MV, Character.valueOf('W'), OrePrefixes.wireGt04.get(Materials.AnyCopper), Character.valueOf('T'), OreDictNames.craftingChest });
+ GT_ModHandler.addCraftingRecipe(GregtechItemList.Cobble_Generator_HV.get(1L, new Object[0]), GT_ModHandler.RecipeBits.DISMANTLEABLE | GT_ModHandler.RecipeBits.NOT_REMOVABLE | GT_ModHandler.RecipeBits.REVERSIBLE | GT_ModHandler.RecipeBits.BUFFERED, new Object[] { "WTW", "WMW", Character.valueOf('M'), ItemList.Hull_HV, Character.valueOf('W'), OrePrefixes.wireGt04.get(Materials.Gold), Character.valueOf('T'), OreDictNames.craftingChest });
+ GT_ModHandler.addCraftingRecipe(GregtechItemList.Cobble_Generator_EV.get(1L, new Object[0]), GT_ModHandler.RecipeBits.DISMANTLEABLE | GT_ModHandler.RecipeBits.NOT_REMOVABLE | GT_ModHandler.RecipeBits.REVERSIBLE | GT_ModHandler.RecipeBits.BUFFERED, new Object[] { "WTW", "WMW", Character.valueOf('M'), ItemList.Hull_EV, Character.valueOf('W'), OrePrefixes.wireGt04.get(Materials.Aluminium), Character.valueOf('T'), OreDictNames.craftingChest });
+ GT_ModHandler.addCraftingRecipe(GregtechItemList.Cobble_Generator_IV.get(1L, new Object[0]), GT_ModHandler.RecipeBits.DISMANTLEABLE | GT_ModHandler.RecipeBits.NOT_REMOVABLE | GT_ModHandler.RecipeBits.REVERSIBLE | GT_ModHandler.RecipeBits.BUFFERED, new Object[] { "WTW", "WMW", Character.valueOf('M'), ItemList.Hull_IV, Character.valueOf('W'), OrePrefixes.wireGt04.get(Materials.Tungsten), Character.valueOf('T'), OreDictNames.craftingChest });
+ GT_ModHandler.addCraftingRecipe(GregtechItemList.Cobble_Generator_LuV.get(1L, new Object[0]), GT_ModHandler.RecipeBits.DISMANTLEABLE | GT_ModHandler.RecipeBits.NOT_REMOVABLE | GT_ModHandler.RecipeBits.REVERSIBLE | GT_ModHandler.RecipeBits.BUFFERED, new Object[] { "WTW", "WMW", Character.valueOf('M'), ItemList.Hull_LuV, Character.valueOf('W'), OrePrefixes.wireGt04.get(Materials.Osmium), Character.valueOf('T'), OreDictNames.craftingChest });
+ GT_ModHandler.addCraftingRecipe(GregtechItemList.Cobble_Generator_ZPM.get(1L, new Object[0]), GT_ModHandler.RecipeBits.DISMANTLEABLE | GT_ModHandler.RecipeBits.NOT_REMOVABLE | GT_ModHandler.RecipeBits.REVERSIBLE | GT_ModHandler.RecipeBits.BUFFERED, new Object[] { "WTW", "WMW", Character.valueOf('M'), ItemList.Hull_ZPM, Character.valueOf('W'), OrePrefixes.wireGt04.get(Materials.Osmium), Character.valueOf('T'), OreDictNames.craftingChest });
+ GT_ModHandler.addCraftingRecipe(GregtechItemList.Cobble_Generator_UV.get(1L, new Object[0]), GT_ModHandler.RecipeBits.DISMANTLEABLE | GT_ModHandler.RecipeBits.NOT_REMOVABLE | GT_ModHandler.RecipeBits.REVERSIBLE | GT_ModHandler.RecipeBits.BUFFERED, new Object[] { "WTW", "WMW", Character.valueOf('M'), ItemList.Hull_UV, Character.valueOf('W'), OrePrefixes.wireGt04.get(Materials.Osmium), Character.valueOf('T'), OreDictNames.craftingChest });
+ GT_ModHandler.addCraftingRecipe(GregtechItemList.Cobble_Generator_MAX.get(1L, new Object[0]), GT_ModHandler.RecipeBits.DISMANTLEABLE | GT_ModHandler.RecipeBits.NOT_REMOVABLE | GT_ModHandler.RecipeBits.REVERSIBLE | GT_ModHandler.RecipeBits.BUFFERED, new Object[] { "WTW", "WMW", Character.valueOf('M'), ItemList.Hull_MAX, Character.valueOf('W'), OrePrefixes.wireGt04.get(Materials.Superconductor), Character.valueOf('T'), OreDictNames.craftingChest });
+ }
+}
diff --git a/src/Java/miscutil/gregtech/init/machines/GregtechEnergyBuffer.java b/src/Java/miscutil/gregtech/init/machines/GregtechEnergyBuffer.java
new file mode 100644
index 0000000000..8f74f71b69
--- /dev/null
+++ b/src/Java/miscutil/gregtech/init/machines/GregtechEnergyBuffer.java
@@ -0,0 +1,88 @@
+package miscutil.gregtech.init.machines;
+
+import gregtech.api.enums.ItemList;
+import gregtech.api.enums.Materials;
+import gregtech.api.enums.OrePrefixes;
+import gregtech.api.util.GT_ModHandler;
+import miscutil.core.creativetabs.TMCreativeTabs;
+import miscutil.core.lib.Strings;
+import miscutil.gregtech.enums.ExtraOreDictNames;
+import miscutil.gregtech.enums.GregtechItemList;
+import miscutil.gregtech.metatileentity.implementations.GregtechMetaCreativeEnergyBuffer;
+import miscutil.gregtech.metatileentity.implementations.GregtechMetaEnergyBuffer;
+import net.minecraft.item.Item;
+import net.minecraftforge.oredict.OreDictionary;
+import cpw.mods.fml.common.FMLLog;
+import cpw.mods.fml.common.registry.GameRegistry;
+import cpw.mods.fml.common.registry.LanguageRegistry;
+
+public class GregtechEnergyBuffer
+{
+
+ //Misc Items
+ public static Item itemBufferCore;
+
+ public static void run()
+ {
+ if (Strings.GREGTECH){
+ FMLLog.info("MiscUtils: Registering Energy Buffer Blocks.");
+ }
+ run1();
+ }
+
+ @SuppressWarnings("deprecation")
+ private static void run1()
+ {
+
+ itemBufferCore = new Item().setUnlocalizedName("itemBufferCore").setCreativeTab(TMCreativeTabs.tabMisc).setTextureName(Strings.MODID + ":itemBufferCore");;
+
+ //Registry
+ GameRegistry.registerItem(itemBufferCore, "itemBufferCore");
+ LanguageRegistry.addName(itemBufferCore, "Buffer Core");
+ OreDictionary.registerOre("itemBufferCore", itemBufferCore);
+
+
+ //Energy Buffers
+ GregtechItemList.Energy_Buffer_1by1_ULV.set(new GregtechMetaEnergyBuffer(770, "energybuffer.01.tier.00", "Ultra Low Voltage Energy Buffer", 0, "", 1).getStackForm(1L));
+ GregtechItemList.Energy_Buffer_1by1_LV.set(new GregtechMetaEnergyBuffer(771, "energybuffer.01.tier.01", "Low Voltage Energy Buffer", 1, "", 1).getStackForm(1L));
+ GregtechItemList.Energy_Buffer_1by1_MV.set(new GregtechMetaEnergyBuffer(772, "energybuffer.01.tier.02", "Medium Voltage Energy Buffer", 2, "", 1).getStackForm(1L));
+ GregtechItemList.Energy_Buffer_1by1_HV.set(new GregtechMetaEnergyBuffer(773, "energybuffer.01.tier.03", "High Voltage Energy Buffer", 3, "", 1).getStackForm(1L));
+ GregtechItemList.Energy_Buffer_1by1_EV.set(new GregtechMetaEnergyBuffer(774, "energybuffer.01.tier.04", "Extreme Voltage Energy Buffer", 4, "", 1).getStackForm(1L));
+ GregtechItemList.Energy_Buffer_1by1_IV.set(new GregtechMetaEnergyBuffer(775, "energybuffer.01.tier.05", "Insane Voltage Energy Buffer", 5, "", 1).getStackForm(1L));
+ GregtechItemList.Energy_Buffer_1by1_LuV.set(new GregtechMetaEnergyBuffer(776, "energybuffer.01.tier.06", "Ludicrous Voltage Energy Buffer", 6, "", 1).getStackForm(1L));
+ GregtechItemList.Energy_Buffer_1by1_ZPM.set(new GregtechMetaEnergyBuffer(777, "energybuffer.01.tier.07", "ZPM Voltage Energy Buffer", 7, "", 1).getStackForm(1L));
+ GregtechItemList.Energy_Buffer_1by1_UV.set(new GregtechMetaEnergyBuffer(778, "energybuffer.01.tier.08", "Ultimate Voltage Energy Buffer", 8, "", 1).getStackForm(1L));
+ GregtechItemList.Energy_Buffer_1by1_MAX.set(new GregtechMetaEnergyBuffer(779, "energybuffer.01.tier.09", "MAX Voltage Energy Buffer", 9, "", 1).getStackForm(1L));
+ // Creative Buffer Has Special ID
+ GregtechItemList.Energy_Buffer_CREATIVE
+ .set(new GregtechMetaCreativeEnergyBuffer(750,
+ "energybuffer.01.tier.xx",
+ "512V Creative Energy Buffer", 3, "", 0)
+ .getStackForm(1L));
+
+ GT_ModHandler.addCraftingRecipe(GregtechItemList.Energy_Buffer_1by1_ULV.get(1L, new Object[0]), GT_ModHandler.RecipeBits.DISMANTLEABLE | GT_ModHandler.RecipeBits.NOT_REMOVABLE | GT_ModHandler.RecipeBits.REVERSIBLE | GT_ModHandler.RecipeBits.BUFFERED, new Object[] { "WTW", "WMW", Character.valueOf('M'), ItemList.Hull_ULV, Character.valueOf('W'), OrePrefixes.wireGt08.get(Materials.Lead), Character.valueOf('T'), ExtraOreDictNames.buffer_core });
+ GT_ModHandler.addCraftingRecipe(GregtechItemList.Energy_Buffer_1by1_LV.get(1L, new Object[0]), GT_ModHandler.RecipeBits.DISMANTLEABLE | GT_ModHandler.RecipeBits.NOT_REMOVABLE | GT_ModHandler.RecipeBits.REVERSIBLE | GT_ModHandler.RecipeBits.BUFFERED, new Object[] { "WTW", "WMW", Character.valueOf('M'), ItemList.Hull_LV, Character.valueOf('W'), OrePrefixes.wireGt08.get(Materials.Tin), Character.valueOf('T'), ExtraOreDictNames.buffer_core });
+ GT_ModHandler.addCraftingRecipe(GregtechItemList.Energy_Buffer_1by1_MV.get(1L, new Object[0]), GT_ModHandler.RecipeBits.DISMANTLEABLE | GT_ModHandler.RecipeBits.NOT_REMOVABLE | GT_ModHandler.RecipeBits.REVERSIBLE | GT_ModHandler.RecipeBits.BUFFERED, new Object[] { "WTW", "WMW", Character.valueOf('M'), ItemList.Hull_MV, Character.valueOf('W'), OrePrefixes.wireGt08.get(Materials.AnyCopper), Character.valueOf('T'), ExtraOreDictNames.buffer_core });
+ GT_ModHandler.addCraftingRecipe(GregtechItemList.Energy_Buffer_1by1_HV.get(1L, new Object[0]), GT_ModHandler.RecipeBits.DISMANTLEABLE | GT_ModHandler.RecipeBits.NOT_REMOVABLE | GT_ModHandler.RecipeBits.REVERSIBLE | GT_ModHandler.RecipeBits.BUFFERED, new Object[] { "WTW", "WMW", Character.valueOf('M'), ItemList.Hull_HV, Character.valueOf('W'), OrePrefixes.wireGt08.get(Materials.Gold), Character.valueOf('T'), ExtraOreDictNames.buffer_core });
+ GT_ModHandler.addCraftingRecipe(GregtechItemList.Energy_Buffer_1by1_EV.get(1L, new Object[0]), GT_ModHandler.RecipeBits.DISMANTLEABLE | GT_ModHandler.RecipeBits.NOT_REMOVABLE | GT_ModHandler.RecipeBits.REVERSIBLE | GT_ModHandler.RecipeBits.BUFFERED, new Object[] { "WTW", "WMW", Character.valueOf('M'), ItemList.Hull_EV, Character.valueOf('W'), OrePrefixes.wireGt08.get(Materials.Aluminium), Character.valueOf('T'), ExtraOreDictNames.buffer_core });
+ GT_ModHandler.addCraftingRecipe(GregtechItemList.Energy_Buffer_1by1_IV.get(1L, new Object[0]), GT_ModHandler.RecipeBits.DISMANTLEABLE | GT_ModHandler.RecipeBits.NOT_REMOVABLE | GT_ModHandler.RecipeBits.REVERSIBLE | GT_ModHandler.RecipeBits.BUFFERED, new Object[] { "WTW", "WMW", Character.valueOf('M'), ItemList.Hull_IV, Character.valueOf('W'), OrePrefixes.wireGt08.get(Materials.Tungsten), Character.valueOf('T'), ExtraOreDictNames.buffer_core });
+ GT_ModHandler.addCraftingRecipe(GregtechItemList.Energy_Buffer_1by1_LuV.get(1L, new Object[0]), GT_ModHandler.RecipeBits.DISMANTLEABLE | GT_ModHandler.RecipeBits.NOT_REMOVABLE | GT_ModHandler.RecipeBits.REVERSIBLE | GT_ModHandler.RecipeBits.BUFFERED, new Object[] { "WTW", "WMW", Character.valueOf('M'), ItemList.Hull_LuV, Character.valueOf('W'), OrePrefixes.wireGt08.get(Materials.Osmium), Character.valueOf('T'), ExtraOreDictNames.buffer_core });
+ GT_ModHandler.addCraftingRecipe(GregtechItemList.Energy_Buffer_1by1_ZPM.get(1L, new Object[0]), GT_ModHandler.RecipeBits.DISMANTLEABLE | GT_ModHandler.RecipeBits.NOT_REMOVABLE | GT_ModHandler.RecipeBits.REVERSIBLE | GT_ModHandler.RecipeBits.BUFFERED, new Object[] { "WTW", "WMW", Character.valueOf('M'), ItemList.Hull_ZPM, Character.valueOf('W'), OrePrefixes.wireGt08.get(Materials.Osmium), Character.valueOf('T'), ExtraOreDictNames.buffer_core });
+ GT_ModHandler.addCraftingRecipe(GregtechItemList.Energy_Buffer_1by1_UV.get(1L, new Object[0]), GT_ModHandler.RecipeBits.DISMANTLEABLE | GT_ModHandler.RecipeBits.NOT_REMOVABLE | GT_ModHandler.RecipeBits.REVERSIBLE | GT_ModHandler.RecipeBits.BUFFERED, new Object[] { "WTW", "WMW", Character.valueOf('M'), ItemList.Hull_UV, Character.valueOf('W'), OrePrefixes.wireGt08.get(Materials.Osmium), Character.valueOf('T'), ExtraOreDictNames.buffer_core });
+ GT_ModHandler.addCraftingRecipe(GregtechItemList.Energy_Buffer_1by1_MAX.get(1L, new Object[0]), GT_ModHandler.RecipeBits.DISMANTLEABLE | GT_ModHandler.RecipeBits.NOT_REMOVABLE | GT_ModHandler.RecipeBits.REVERSIBLE | GT_ModHandler.RecipeBits.BUFFERED, new Object[] { "WTW", "WMW", Character.valueOf('M'), ItemList.Hull_MAX, Character.valueOf('W'), OrePrefixes.wireGt08.get(Materials.Superconductor), Character.valueOf('T'), ExtraOreDictNames.buffer_core });
+ GT_ModHandler.addCraftingRecipe(
+ GregtechItemList.Energy_Buffer_1by1_MAX.get(1L, new Object[0]),
+ GT_ModHandler.RecipeBits.DISMANTLEABLE
+ | GT_ModHandler.RecipeBits.NOT_REMOVABLE
+ | GT_ModHandler.RecipeBits.REVERSIBLE
+ | GT_ModHandler.RecipeBits.BUFFERED, new Object[] {
+ "WTW", "WMW", Character.valueOf('M'),
+ ItemList.Hull_MAX, Character.valueOf('W'),
+ OrePrefixes.wireGt08.get(Materials.Superconductor),
+ Character.valueOf('T'), ExtraOreDictNames.buffer_core });
+
+
+
+
+ }
+}
diff --git a/src/Java/miscutil/gregtech/interfaces/GregtechItemContainer.java b/src/Java/miscutil/gregtech/interfaces/GregtechItemContainer.java
new file mode 100644
index 0000000000..e871c19fcf
--- /dev/null
+++ b/src/Java/miscutil/gregtech/interfaces/GregtechItemContainer.java
@@ -0,0 +1,24 @@
+package miscutil.gregtech.interfaces;
+
+import net.minecraft.block.Block;
+import net.minecraft.item.Item;
+import net.minecraft.item.ItemStack;
+
+public interface GregtechItemContainer {
+ public Item getItem();
+ public Block getBlock();
+ public boolean isStackEqual(Object aStack);
+ public boolean isStackEqual(Object aStack, boolean aWildcard, boolean aIgnoreNBT);
+ public ItemStack get(long aAmount, Object... aReplacements);
+ public ItemStack getWildcard(long aAmount, Object... aReplacements);
+ public ItemStack getUndamaged(long aAmount, Object... aReplacements);
+ public ItemStack getAlmostBroken(long aAmount, Object... aReplacements);
+ public ItemStack getWithDamage(long aAmount, long aMetaValue, Object... aReplacements);
+ public GregtechItemContainer set(Item aItem);
+ public GregtechItemContainer set(ItemStack aStack);
+ public GregtechItemContainer registerOre(Object... aOreNames);
+ public GregtechItemContainer registerWildcardAsOre(Object... aOreNames);
+ public ItemStack getWithCharge(long aAmount, int aEnergy, Object... aReplacements);
+ public ItemStack getWithName(long aAmount, String aDisplayName, Object... aReplacements);
+ public boolean hasBeenSet();
+} \ No newline at end of file
diff --git a/src/Java/miscutil/gregtech/metatileentity/implementations/GregtechMetaCreativeEnergyBuffer.java b/src/Java/miscutil/gregtech/metatileentity/implementations/GregtechMetaCreativeEnergyBuffer.java
new file mode 100644
index 0000000000..a176aab00f
--- /dev/null
+++ b/src/Java/miscutil/gregtech/metatileentity/implementations/GregtechMetaCreativeEnergyBuffer.java
@@ -0,0 +1,261 @@
+package miscutil.gregtech.metatileentity.implementations;
+
+import static gregtech.api.enums.GT_Values.V;
+import gregtech.api.enums.Textures;
+import gregtech.api.gui.GT_Container_1by1;
+import gregtech.api.gui.GT_Container_2by2;
+import gregtech.api.gui.GT_Container_3by3;
+import gregtech.api.gui.GT_Container_4by4;
+import gregtech.api.gui.GT_GUIContainer_1by1;
+import gregtech.api.gui.GT_GUIContainer_2by2;
+import gregtech.api.gui.GT_GUIContainer_3by3;
+import gregtech.api.gui.GT_GUIContainer_4by4;
+import gregtech.api.interfaces.ITexture;
+import gregtech.api.interfaces.metatileentity.IMetaTileEntity;
+import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
+import gregtech.api.items.GT_MetaBase_Item;
+import gregtech.api.objects.GT_RenderedTexture;
+import gregtech.api.util.GT_ModHandler;
+import gregtech.api.util.GT_Utility;
+import ic2.api.item.IElectricItem;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.entity.player.InventoryPlayer;
+import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.NBTTagCompound;
+
+/**
+ * NEVER INCLUDE THIS FILE IN YOUR MOD!!!
+ *
+ * This is the main construct for my Basic Machines such as the Automatic Extractor
+ * Extend this class to make a simple Machine
+ */
+public class GregtechMetaCreativeEnergyBuffer extends GregtechMetaEnergyBuffer {
+
+
+ public GregtechMetaCreativeEnergyBuffer(String aName, int aTier,
+ String aDescription, ITexture[][][] aTextures, int aSlotCount) {
+ super(aName, aTier, aDescription, aTextures, aSlotCount);
+ // TODO Auto-generated constructor stub
+ }
+
+ public GregtechMetaCreativeEnergyBuffer(int aID, String aName,
+ String aNameRegional, int aTier, String aDescription, int aSlotCount) {
+ super(aID, aName, aNameRegional, aTier, aDescription, aSlotCount);
+ }
+
+ public boolean mCharge = false, mDecharge = false;
+ public int mBatteryCount = 1, mChargeableCount = 1;
+
+ /*
+ * MACHINE_STEEL_SIDE
+ */
+ @Override
+ public ITexture[][][] getTextureSet(ITexture[] aTextures) {
+ ITexture[][][] rTextures = new ITexture[2][17][];
+ for (byte i = -1; i < 16; i++) {
+ rTextures[0][i + 1] = new ITexture[] { new GT_RenderedTexture(
+ Textures.BlockIcons.MACHINE_STEEL_SIDE) };
+ rTextures[1][i + 1] = new ITexture[] {
+ new GT_RenderedTexture(
+ Textures.BlockIcons.MACHINE_STEEL_SIDE),
+ mInventory.length > 4 ? Textures.BlockIcons.OVERLAYS_ENERGY_OUT_MULTI[mTier]
+ : Textures.BlockIcons.OVERLAYS_ENERGY_OUT[mTier] };
+ }
+ return rTextures;
+ }
+
+ @Override
+ public ITexture[] getTexture(IGregTechTileEntity aBaseMetaTileEntity,
+ byte aSide, byte aFacing, byte aColorIndex, boolean aActive,
+ boolean aRedstone) {
+ return mTextures[aSide == aFacing ? 1 : 0][aColorIndex + 1];
+ }
+
+ @Override
+ public IMetaTileEntity newMetaEntity(IGregTechTileEntity aTileEntity) {
+ return new GregtechMetaCreativeEnergyBuffer(mName, mTier, mDescription,
+ mTextures, mInventory.length);
+ }
+
+ @Override public boolean isSimpleMachine() {return false;}
+ @Override public boolean isElectric() {return true;}
+ @Override public boolean isValidSlot(int aIndex) {return true;}
+ @Override public boolean isFacingValid(byte aFacing) {return true;}
+ @Override public boolean isEnetInput() {return true;}
+ @Override public boolean isEnetOutput() {return true;}
+ @Override public boolean isInputFacing(byte aSide) {return aSide!=getBaseMetaTileEntity().getFrontFacing();}
+ @Override public boolean isOutputFacing(byte aSide) {return aSide==getBaseMetaTileEntity().getFrontFacing();}
+ @Override public boolean isTeleporterCompatible() {return false;}
+
+ @Override
+ public long getMinimumStoredEU() {
+ return 1;
+ }
+
+ @Override
+ public long maxEUStore() {
+ return Long.MAX_VALUE;
+ }
+
+ @Override
+ public long maxEUInput() {
+ return V[mTier];
+ }
+
+ @Override
+ public long maxEUOutput() {
+ return V[mTier];
+ }
+
+ @Override
+ public long maxAmperesIn() {
+ return mChargeableCount * 16;
+ }
+
+ @Override
+ public long maxAmperesOut() {
+ return mChargeableCount * 16;
+ }
+ @Override public int rechargerSlotStartIndex() {return 0;}
+ @Override public int dechargerSlotStartIndex() {return 0;}
+ @Override public int rechargerSlotCount() {return mCharge?mInventory.length:0;}
+ @Override public int dechargerSlotCount() {return mDecharge?mInventory.length:0;}
+ @Override public int getProgresstime() {return Integer.MAX_VALUE;}
+ @Override public int maxProgresstime() {return (int)getBaseMetaTileEntity().getUniversalEnergyCapacity();}
+ @Override public boolean isAccessAllowed(EntityPlayer aPlayer) {return true;}
+
+ @Override
+ public void saveNBTData(NBTTagCompound aNBT) {
+ //
+ }
+
+ @Override
+ public void loadNBTData(NBTTagCompound aNBT) {
+ //
+ }
+
+ @Override
+ public Object getServerGUI(int aID, InventoryPlayer aPlayerInventory,
+ IGregTechTileEntity aBaseMetaTileEntity) {
+ switch (mInventory.length) {
+ case 1: return new GT_Container_1by1(aPlayerInventory, aBaseMetaTileEntity);
+ case 4: return new GT_Container_2by2(aPlayerInventory, aBaseMetaTileEntity);
+ case 9: return new GT_Container_3by3(aPlayerInventory, aBaseMetaTileEntity);
+ case 16: return new GT_Container_4by4(aPlayerInventory, aBaseMetaTileEntity);
+ }
+ return new GT_Container_1by1(aPlayerInventory, aBaseMetaTileEntity);
+ }
+
+ @Override
+ public Object getClientGUI(int aID, InventoryPlayer aPlayerInventory,
+ IGregTechTileEntity aBaseMetaTileEntity) {
+ switch (mInventory.length) {
+ case 1: return new GT_GUIContainer_1by1(aPlayerInventory, aBaseMetaTileEntity, getLocalName());
+ case 4: return new GT_GUIContainer_2by2(aPlayerInventory, aBaseMetaTileEntity, getLocalName());
+ case 9: return new GT_GUIContainer_3by3(aPlayerInventory, aBaseMetaTileEntity, getLocalName());
+ case 16: return new GT_GUIContainer_4by4(aPlayerInventory, aBaseMetaTileEntity, getLocalName());
+ }
+ return new GT_GUIContainer_1by1(aPlayerInventory, aBaseMetaTileEntity, getLocalName());
+ }
+
+ @Override
+ public void onPostTick(IGregTechTileEntity aBaseMetaTileEntity, long aTick) {
+ this.getBaseMetaTileEntity().increaseStoredEnergyUnits(Integer.MAX_VALUE, true);
+ if (aBaseMetaTileEntity.isServerSide()) {
+ mCharge = aBaseMetaTileEntity.getStoredEU() / 2 > aBaseMetaTileEntity
+ .getEUCapacity() / 3;
+ mDecharge = aBaseMetaTileEntity.getStoredEU() < aBaseMetaTileEntity.getEUCapacity() / 3;
+ mBatteryCount = 1;
+ mChargeableCount = 1;
+ this.getBaseMetaTileEntity().increaseStoredEnergyUnits(mMax, true);
+ for (ItemStack tStack : mInventory) if (GT_ModHandler.isElectricItem(tStack, mTier)) {
+ if (GT_ModHandler.isChargerItem(tStack)) mBatteryCount++;
+ mChargeableCount++;
+ }
+ }
+ }
+
+ @Override
+ public boolean allowPullStack(IGregTechTileEntity aBaseMetaTileEntity, int aIndex, byte aSide, ItemStack aStack) {
+ if(GT_ModHandler.isElectricItem(aStack)&&aStack.getUnlocalizedName().startsWith("gt.metaitem.01.")){
+ String name = aStack.getUnlocalizedName();
+ if(name.equals("gt.metaitem.01.32510")||
+ name.equals("gt.metaitem.01.32511")||
+ name.equals("gt.metaitem.01.32520")||
+ name.equals("gt.metaitem.01.32521")||
+ name.equals("gt.metaitem.01.32530")||
+ name.equals("gt.metaitem.01.32531")){
+ return true;
+ }
+ }
+ return false;
+ }
+
+ @Override
+ public boolean allowPutStack(IGregTechTileEntity aBaseMetaTileEntity, int aIndex, byte aSide, ItemStack aStack) {
+ if(!GT_Utility.isStackValid(aStack)){
+ return false;
+ }
+ if(GT_ModHandler.isElectricItem(aStack, this.mTier)){
+ return true;
+ }
+ return false;
+ }
+
+ @Override
+ public long[] getStoredEnergy(){
+ long tScale = getBaseMetaTileEntity().getEUCapacity();
+ long tStored = getBaseMetaTileEntity().getStoredEU();
+ if (mInventory != null) {
+ for (ItemStack aStack : mInventory) {
+ if (GT_ModHandler.isElectricItem(aStack)) {
+
+ if (aStack.getItem() instanceof GT_MetaBase_Item) {
+ Long[] stats = ((GT_MetaBase_Item) aStack.getItem())
+ .getElectricStats(aStack);
+ if (stats != null) {
+ tScale = tScale + stats[0];
+ tStored = tStored
+ + ((GT_MetaBase_Item) aStack.getItem())
+ .getRealCharge(aStack);
+ }
+ } else if (aStack.getItem() instanceof IElectricItem) {
+ tStored = tStored
+ + (long) ic2.api.item.ElectricItem.manager
+ .getCharge(aStack);
+ tScale = tScale
+ + (long) ((IElectricItem) aStack.getItem())
+ .getMaxCharge(aStack);
+ }
+ }
+ }
+
+ }
+ return new long[] { tStored, tScale };
+ }
+
+ private long count=0;
+ private long mStored=0;
+ private long mMax=0;
+
+ @Override
+ public String[] getInfoData() {
+ count++;
+ if(mMax==0||count%20==0){
+ long[] tmp = getStoredEnergy();
+ mStored=tmp[0];
+ mMax=tmp[1];
+ }
+
+ return new String[] {
+ getLocalName(),
+ "Stored Items:",
+ GT_Utility.formatNumbers(mStored)+" EU /",
+ GT_Utility.formatNumbers(mMax)+" EU"};
+ }
+
+ @Override
+ public boolean isGivingInformation() {
+ return true;
+ }
+} \ No newline at end of file
diff --git a/src/Java/miscutil/gregtech/metatileentity/implementations/GregtechMetaEnergyBuffer.java b/src/Java/miscutil/gregtech/metatileentity/implementations/GregtechMetaEnergyBuffer.java
new file mode 100644
index 0000000000..46add14c15
--- /dev/null
+++ b/src/Java/miscutil/gregtech/metatileentity/implementations/GregtechMetaEnergyBuffer.java
@@ -0,0 +1,401 @@
+package miscutil.gregtech.metatileentity.implementations;
+
+import static gregtech.api.enums.GT_Values.V;
+import gregtech.api.enums.Textures;
+import gregtech.api.gui.GT_Container_1by1;
+import gregtech.api.gui.GT_Container_2by2;
+import gregtech.api.gui.GT_Container_3by3;
+import gregtech.api.gui.GT_Container_4by4;
+import gregtech.api.gui.GT_GUIContainer_1by1;
+import gregtech.api.gui.GT_GUIContainer_2by2;
+import gregtech.api.gui.GT_GUIContainer_3by3;
+import gregtech.api.gui.GT_GUIContainer_4by4;
+import gregtech.api.interfaces.ITexture;
+import gregtech.api.interfaces.metatileentity.IMetaTileEntity;
+import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
+import gregtech.api.items.GT_MetaBase_Item;
+import gregtech.api.objects.GT_RenderedTexture;
+import gregtech.api.util.GT_ModHandler;
+import gregtech.api.util.GT_Utility;
+import ic2.api.item.IElectricItem;
+import miscutil.core.handler.GuiHandler;
+import miscutil.core.util.Utils;
+import miscutil.gregtech.util.IMessage;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.entity.player.InventoryPlayer;
+import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.world.World;
+
+/**
+ * NEVER INCLUDE THIS FILE IN YOUR MOD!!!
+ *
+ * This is the main construct for my Basic Machines such as the Automatic Extractor
+ * Extend this class to make a simple Machine
+ */
+public class GregtechMetaEnergyBuffer extends GregtechMetaTileEntity {
+
+ /*
+ * public GregtechMetaEnergyBuffer() { super.this
+ * setCreativeTab(GregTech_API.TAB_GREGTECH); }
+ */
+
+ public boolean mCharge = false, mDecharge = false;
+ public int mBatteryCount = 1, mChargeableCount = 1;
+
+ public GregtechMetaEnergyBuffer(int aID, String aName, String aNameRegional, int aTier, String aDescription, int aSlotCount) {
+ super(aID, aName, aNameRegional, aTier, aSlotCount, aDescription);
+ }
+
+ public GregtechMetaEnergyBuffer(String aName, int aTier, String aDescription, ITexture[][][] aTextures, int aSlotCount) {
+ super(aName, aTier, aSlotCount, aDescription, aTextures);
+ }
+
+ @Override
+ public String[] getDescription() {
+ return new String[] {mDescription, mInventory.length + " Slots"};
+ }
+
+ /*
+ * MACHINE_STEEL_SIDE
+ */
+ @Override
+ public ITexture[][][] getTextureSet(ITexture[] aTextures) {
+ ITexture[][][] rTextures = new ITexture[2][17][];
+ for (byte i = -1; i < 16; i++) {
+ rTextures[0][i + 1] = new ITexture[] { new GT_RenderedTexture(
+ Textures.BlockIcons.MACHINE_CASING_FROST_PROOF) };
+ rTextures[1][i + 1] = new ITexture[] {
+ new GT_RenderedTexture(
+ Textures.BlockIcons.MACHINE_CASING_FROST_PROOF),
+ mInventory.length > 4 ? Textures.BlockIcons.OVERLAYS_ENERGY_OUT_MULTI[mTier]
+ : Textures.BlockIcons.OVERLAYS_ENERGY_OUT[mTier] };
+ }
+ return rTextures;
+ }
+
+ /*
+ * @Override public ITexture[][][] getTextureSet(ITexture[] aTextures) {
+ * ITexture[][][] rTextures = new ITexture[5][17][]; for (byte i = -1; i <
+ * 16; i = (byte) (i + 1)) { ITexture[] tmp0 = { new GT_RenderedTexture(
+ * Textures.BlockIcons.MACHINE_STEEL_BOTTOM, Dyes.getModulation(i,
+ * Dyes._NULL.mRGBa)) }; rTextures[0][(i + 1)] = tmp0; ITexture[] tmp1 = {
+ * new GT_RenderedTexture( Textures.BlockIcons.MACHINE_STEEL_TOP) };
+ * rTextures[1][(i + 1)] = tmp1; ITexture[] tmp2 = { new GT_RenderedTexture(
+ * Textures.BlockIcons.MACHINE_STEEL_SIDE, Dyes.getModulation(i,
+ * Dyes._NULL.mRGBa)), new
+ * GT_RenderedTexture(Textures.BlockIcons.OVERLAY_PIPE) }; rTextures[2][(i +
+ * 1)] = tmp2; ITexture[] tmp4 = { new GT_RenderedTexture(
+ * Textures.BlockIcons.MACHINE_STEEL_SIDE, Dyes.getModulation(i,
+ * Dyes._NULL.mRGBa)), new
+ * GT_RenderedTexture(Textures.BlockIcons.BOILER_FRONT) }; rTextures[3][(i +
+ * 1)] = tmp4; ITexture[] tmp5 = { new GT_RenderedTexture(
+ * Textures.BlockIcons.MACHINE_STEEL_SIDE, Dyes.getModulation(i,
+ * Dyes._NULL.mRGBa)), new GT_RenderedTexture(
+ * Textures.BlockIcons.BOILER_FRONT_ACTIVE) }; rTextures[4][(i + 1)] = tmp5;
+ * } return rTextures; }
+ */
+
+ @Override
+ public ITexture[] getTexture(IGregTechTileEntity aBaseMetaTileEntity, byte aSide, byte aFacing, byte aColorIndex, boolean aActive, boolean aRedstone) {
+ return mTextures[aSide == aFacing ? 1 : 0][aColorIndex+1];
+ }
+
+ @Override
+ public IMetaTileEntity newMetaEntity(IGregTechTileEntity aTileEntity) {
+ return new GregtechMetaEnergyBuffer(mName, mTier, mDescription, mTextures, mInventory.length);
+ }
+
+ @Override public boolean isSimpleMachine() {return false;}
+ @Override public boolean isElectric() {return true;}
+ @Override public boolean isValidSlot(int aIndex) {return true;}
+ @Override public boolean isFacingValid(byte aFacing) {return true;}
+ @Override public boolean isEnetInput() {return true;}
+ @Override public boolean isEnetOutput() {return true;}
+ @Override public boolean isInputFacing(byte aSide) {return aSide!=getBaseMetaTileEntity().getFrontFacing();}
+ @Override public boolean isOutputFacing(byte aSide) {return aSide==getBaseMetaTileEntity().getFrontFacing();}
+ @Override public boolean isTeleporterCompatible() {return false;}
+ @Override public long getMinimumStoredEU() {return V[mTier]*16*mInventory.length;}
+ @Override public long maxEUStore() {return V[mTier]*250000;}
+
+ @Override
+ public long maxEUInput() {
+ return V[mTier];
+ }
+
+ @Override
+ public long maxEUOutput() {
+ return V[mTier];
+ }
+
+ @Override
+ public long maxAmperesIn() {
+ return mChargeableCount * 4;
+ }
+
+ @Override
+ public long maxAmperesOut() {
+ return mChargeableCount * 4;
+ }
+ @Override public int rechargerSlotStartIndex() {return 0;}
+ @Override public int dechargerSlotStartIndex() {return 0;}
+ @Override public int rechargerSlotCount() {return mCharge?mInventory.length:0;}
+ @Override public int dechargerSlotCount() {return mDecharge?mInventory.length:0;}
+ @Override public int getProgresstime() {return (int)getBaseMetaTileEntity().getUniversalEnergyStored();}
+ @Override public int maxProgresstime() {return (int)getBaseMetaTileEntity().getUniversalEnergyCapacity();}
+ @Override public boolean isAccessAllowed(EntityPlayer aPlayer) {return true;}
+
+ @Override
+ public void saveNBTData(NBTTagCompound aNBT) {
+ //
+ }
+
+ @Override
+ public void loadNBTData(NBTTagCompound aNBT) {
+ //
+ }
+
+ @Override
+ public boolean onRightclick(IGregTechTileEntity aBaseMetaTileEntity, EntityPlayer aPlayer) {
+ Utils.LOG_WARNING("Right Click on MTE by Player");
+ if (aBaseMetaTileEntity.isClientSide()) return true;
+ //aBaseMetaTileEntity.openGUI(aPlayer);
+
+ Utils.LOG_WARNING("MTE is Client-side");
+ showEnergy(aPlayer.getEntityWorld(), aPlayer);
+ return true;
+ }
+
+ private void showEnergy(World worldIn, EntityPlayer playerIn){
+ Utils.LOG_WARNING("Begin Show Energy");
+ final double c = ((double) getProgresstime() / maxProgresstime()) * 100;
+ Utils.LOG_WARNING(""+c);
+ final double roundOff = Math.round(c * 100.0) / 100.0;
+ IMessage.messageThePlayer("Energy: " + getProgresstime() + " EU at "+V[mTier]+"v ("+roundOff+"%)");
+ Utils.LOG_WARNING("Making new instance of Guihandler");
+ GuiHandler block = new GuiHandler();
+ Utils.LOG_WARNING("Guihandler.toString(): "+block.toString());
+ block.getClientGuiElement(1, playerIn, worldIn, (int) playerIn.posX, (int) playerIn.posY, (int) playerIn.posZ);
+
+ }
+
+ @Override
+ public Object getServerGUI(int aID, InventoryPlayer aPlayerInventory,
+ IGregTechTileEntity aBaseMetaTileEntity) {
+ switch (mInventory.length) {
+ case 1: return new GT_Container_1by1(aPlayerInventory, aBaseMetaTileEntity);
+ case 4: return new GT_Container_2by2(aPlayerInventory, aBaseMetaTileEntity);
+ case 9: return new GT_Container_3by3(aPlayerInventory, aBaseMetaTileEntity);
+ case 16: return new GT_Container_4by4(aPlayerInventory, aBaseMetaTileEntity);
+ }
+ return new GT_Container_1by1(aPlayerInventory, aBaseMetaTileEntity);
+ }
+
+ @Override
+ public Object getClientGUI(int aID, InventoryPlayer aPlayerInventory,
+ IGregTechTileEntity aBaseMetaTileEntity) {
+ switch (mInventory.length) {
+ case 1: return new GT_GUIContainer_1by1(aPlayerInventory, aBaseMetaTileEntity, getLocalName());
+ case 4: return new GT_GUIContainer_2by2(aPlayerInventory, aBaseMetaTileEntity, getLocalName());
+ case 9: return new GT_GUIContainer_3by3(aPlayerInventory, aBaseMetaTileEntity, getLocalName());
+ case 16: return new GT_GUIContainer_4by4(aPlayerInventory, aBaseMetaTileEntity, getLocalName());
+ }
+ return new GT_GUIContainer_1by1(aPlayerInventory, aBaseMetaTileEntity, getLocalName());
+ }
+
+ @Override
+ public void onPostTick(IGregTechTileEntity aBaseMetaTileEntity, long aTick) {
+ if (aBaseMetaTileEntity.isServerSide()) {
+ mCharge = aBaseMetaTileEntity.getStoredEU() / 2 > aBaseMetaTileEntity
+ .getEUCapacity() / 3;
+ mDecharge = aBaseMetaTileEntity.getStoredEU() < aBaseMetaTileEntity.getEUCapacity() / 3;
+ mBatteryCount = 1;
+ mChargeableCount = 1;
+ for (ItemStack tStack : mInventory) if (GT_ModHandler.isElectricItem(tStack, mTier)) {
+ if (GT_ModHandler.isChargerItem(tStack)) mBatteryCount++;
+ mChargeableCount++;
+ }
+ }
+ }
+
+ @Override
+ public boolean allowPullStack(IGregTechTileEntity aBaseMetaTileEntity, int aIndex, byte aSide, ItemStack aStack) {
+ if(GT_ModHandler.isElectricItem(aStack)&&aStack.getUnlocalizedName().startsWith("gt.metaitem.01.")){
+ String name = aStack.getUnlocalizedName();
+ if(name.equals("gt.metaitem.01.32510")||
+ name.equals("gt.metaitem.01.32511")||
+ name.equals("gt.metaitem.01.32520")||
+ name.equals("gt.metaitem.01.32521")||
+ name.equals("gt.metaitem.01.32530")||
+ name.equals("gt.metaitem.01.32531")){
+ return true;
+ }
+ }
+ return false;
+ }
+
+ @Override
+ public boolean allowPutStack(IGregTechTileEntity aBaseMetaTileEntity, int aIndex, byte aSide, ItemStack aStack) {
+ if(!GT_Utility.isStackValid(aStack)){
+ return false;
+ }
+ if(GT_ModHandler.isElectricItem(aStack, this.mTier)){
+ return true;
+ }
+ return false;
+ }
+
+ public long[] getStoredEnergy(){
+ long tScale = getBaseMetaTileEntity().getEUCapacity();
+ long tStored = getBaseMetaTileEntity().getStoredEU();
+ if (mInventory != null) {
+ for (ItemStack aStack : mInventory) {
+ if (GT_ModHandler.isElectricItem(aStack)) {
+
+ if (aStack.getItem() instanceof GT_MetaBase_Item) {
+ Long[] stats = ((GT_MetaBase_Item) aStack.getItem())
+ .getElectricStats(aStack);
+ if (stats != null) {
+ tScale = tScale + stats[0];
+ tStored = tStored
+ + ((GT_MetaBase_Item) aStack.getItem())
+ .getRealCharge(aStack);
+ }
+ } else if (aStack.getItem() instanceof IElectricItem) {
+ tStored = tStored
+ + (long) ic2.api.item.ElectricItem.manager
+ .getCharge(aStack);
+ tScale = tScale
+ + (long) ((IElectricItem) aStack.getItem())
+ .getMaxCharge(aStack);
+ }
+ }
+ }
+
+ }
+ return new long[] { tStored, tScale };
+ }
+
+ private long count=0;
+ private long mStored=0;
+ private long mMax=0;
+
+ @Override
+ public String[] getInfoData() {
+ count++;
+ if(mMax==0||count%20==0){
+ long[] tmp = getStoredEnergy();
+ mStored=tmp[0];
+ mMax=tmp[1];
+ }
+
+ return new String[] {
+ getLocalName(),
+ "Stored Items:",
+ GT_Utility.formatNumbers(mStored)+" EU /",
+ GT_Utility.formatNumbers(mMax)+" EU"};
+ }
+
+ @Override
+ public boolean isGivingInformation() {
+ return true;
+ }
+
+ @Override
+ public int[] getAccessibleSlotsFromSide(int p_94128_1_) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public boolean canInsertItem(int p_102007_1_, ItemStack p_102007_2_,
+ int p_102007_3_) {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ @Override
+ public boolean canExtractItem(int p_102008_1_, ItemStack p_102008_2_,
+ int p_102008_3_) {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ @Override
+ public int getSizeInventory() {
+ // TODO Auto-generated method stub
+ return 0;
+ }
+
+ @Override
+ public ItemStack getStackInSlot(int p_70301_1_) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public ItemStack decrStackSize(int p_70298_1_, int p_70298_2_) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public ItemStack getStackInSlotOnClosing(int p_70304_1_) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public void setInventorySlotContents(int p_70299_1_, ItemStack p_70299_2_) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public String getInventoryName() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public boolean hasCustomInventoryName() {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ @Override
+ public int getInventoryStackLimit() {
+ // TODO Auto-generated method stub
+ return 0;
+ }
+
+ @Override
+ public void markDirty() {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public boolean isUseableByPlayer(EntityPlayer p_70300_1_) {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ @Override
+ public void openInventory() {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void closeInventory() {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public boolean isItemValidForSlot(int p_94041_1_, ItemStack p_94041_2_) {
+ // TODO Auto-generated method stub
+ return false;
+ }
+} \ No newline at end of file
diff --git a/src/Java/miscutil/gregtech/metatileentity/implementations/GregtechMetaTileEntity.java b/src/Java/miscutil/gregtech/metatileentity/implementations/GregtechMetaTileEntity.java
new file mode 100644
index 0000000000..c95c7ba75a
--- /dev/null
+++ b/src/Java/miscutil/gregtech/metatileentity/implementations/GregtechMetaTileEntity.java
@@ -0,0 +1,65 @@
+package miscutil.gregtech.metatileentity.implementations;
+
+import static gregtech.api.enums.GT_Values.GT;
+import gregtech.api.interfaces.ITexture;
+import gregtech.api.metatileentity.MetaTileEntity;
+
+public abstract class GregtechMetaTileEntity extends MetaTileEntity {
+ /**
+ * Value between [0 - 9] to describe the Tier of this Machine.
+ */
+ public final byte mTier;
+
+ /**
+ * A simple Description.
+ */
+ public final String mDescription;
+
+ /**
+ * Contains all Textures used by this Block.
+ */
+ public final ITexture[][][] mTextures;
+
+ public GregtechMetaTileEntity(int aID, String aName, String aNameRegional, int aTier, int aInvSlotCount, String aDescription, ITexture... aTextures) {
+ super(aID, aName, aNameRegional, aInvSlotCount);
+ mTier = (byte)Math.max(0, Math.min(aTier, 9));
+ mDescription = aDescription;
+
+ // must always be the last call!
+ if (GT.isClientSide()) mTextures = getTextureSet(aTextures); else mTextures = null;
+ }
+
+ public GregtechMetaTileEntity(String aName, int aTier, int aInvSlotCount, String aDescription, ITexture[][][] aTextures) {
+ super(aName, aInvSlotCount);
+ mTier = (byte)aTier;
+ mDescription = aDescription;
+ mTextures = aTextures;
+ }
+
+ @Override
+ public byte getTileEntityBaseType() {
+ return (byte)(Math.min(3, mTier<=0?0:1+((mTier-1) / 4)));
+ }
+
+ @Override
+ public long getInputTier() {
+ return mTier;
+ }
+
+ @Override
+ public long getOutputTier() {
+ return mTier;
+ }
+
+ @Override
+ public String[] getDescription() {
+ return new String[] {mDescription};
+ }
+
+ /**
+ * Used Client Side to get a Texture Set for this Block.
+ * Called after setting the Tier and the Description so that those two are accessible.
+ * @param aTextures is the optional Array you can give to the Constructor.
+ */
+ public abstract ITexture[][][] getTextureSet(ITexture[] aTextures);
+} \ No newline at end of file
diff --git a/src/Java/miscutil/gregtech/metatileentity/implementations/GregtechSteelBoiler.java b/src/Java/miscutil/gregtech/metatileentity/implementations/GregtechSteelBoiler.java
new file mode 100644
index 0000000000..45b6fa5f86
--- /dev/null
+++ b/src/Java/miscutil/gregtech/metatileentity/implementations/GregtechSteelBoiler.java
@@ -0,0 +1,290 @@
+package miscutil.gregtech.metatileentity.implementations;
+
+import gregtech.api.enums.Dyes;
+import gregtech.api.enums.Materials;
+import gregtech.api.enums.OrePrefixes;
+import gregtech.api.enums.Textures;
+import gregtech.api.interfaces.ITexture;
+import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
+import gregtech.api.metatileentity.MetaTileEntity;
+import gregtech.api.objects.GT_RenderedTexture;
+import gregtech.api.util.GT_ModHandler;
+import gregtech.api.util.GT_OreDictUnificator;
+import gregtech.common.gui.GT_Container_Boiler;
+import gregtech.common.gui.GT_GUIContainer_Boiler;
+import gregtech.common.tileentities.boilers.GT_MetaTileEntity_Boiler;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.entity.player.InventoryPlayer;
+import net.minecraft.item.ItemStack;
+import net.minecraftforge.common.util.ForgeDirection;
+import net.minecraftforge.fluids.FluidStack;
+import net.minecraftforge.fluids.IFluidHandler;
+
+public class GregtechSteelBoiler
+ extends GT_MetaTileEntity_Boiler
+{
+ public GregtechSteelBoiler(int aID, String aName, String aNameRegional, int aTier, String aDescription)
+ {
+ super(aID, aName, aNameRegional, "Put it to good use!", new ITexture[0]);
+ }
+
+ public GregtechSteelBoiler(String aName, int aTier, String aDescription, ITexture[][][] aTextures)
+ {
+ super(aName, aTier, aDescription, aTextures);
+ }
+
+ public ITexture[][][] getTextureSet(ITexture[] aTextures)
+ {
+ ITexture[][][] rTextures = new ITexture[5][17][];
+ for (byte i = -1; i < 16; i = (byte)(i + 1))
+ {ITexture[] tmp0 ={ new GT_RenderedTexture(Textures.BlockIcons.MACHINE_STEEL_BOTTOM, Dyes.getModulation(i, Dyes._NULL.mRGBa)) };
+ rTextures[0][(i + 1)] = tmp0;
+ ITexture[] tmp1 ={ new GT_RenderedTexture(Textures.BlockIcons.STEAM_TURBINE_SIDE)};
+rTextures[1][(i + 1)] = tmp1;
+ ITexture[] tmp2 ={ new GT_RenderedTexture(Textures.BlockIcons.MACHINE_STEEL_SIDE, Dyes.getModulation(i, Dyes._NULL.mRGBa)), new GT_RenderedTexture(Textures.BlockIcons.OVERLAY_PIPE) };
+rTextures[2][(i + 1)] = tmp2;
+ ITexture[] tmp4 ={ new GT_RenderedTexture(Textures.BlockIcons.MACHINE_STEEL_SIDE, Dyes.getModulation(i, Dyes._NULL.mRGBa)), new GT_RenderedTexture(Textures.BlockIcons.BOILER_FRONT) };
+rTextures[3][(i + 1)] = tmp4;
+ ITexture[] tmp5 ={ new GT_RenderedTexture(Textures.BlockIcons.MACHINE_STEEL_SIDE, Dyes.getModulation(i, Dyes._NULL.mRGBa)), new GT_RenderedTexture(Textures.BlockIcons.BOILER_FRONT_ACTIVE) };
+rTextures[4][(i + 1)] = tmp5;
+ }
+ return rTextures;
+ }
+
+ public int maxProgresstime()
+ {
+ return 1000;
+ }
+
+ public Object getServerGUI(int aID, InventoryPlayer aPlayerInventory, IGregTechTileEntity aBaseMetaTileEntity)
+ {
+ return new GT_Container_Boiler(aPlayerInventory, aBaseMetaTileEntity, 32000);
+ }
+
+ public Object getClientGUI(int aID, InventoryPlayer aPlayerInventory, IGregTechTileEntity aBaseMetaTileEntity)
+ {
+ return new GT_GUIContainer_Boiler(aPlayerInventory, aBaseMetaTileEntity, "SteelBoiler.png", 32000);
+ }
+
+ public MetaTileEntity newMetaEntity(IGregTechTileEntity aTileEntity)
+ {
+ return new GregtechSteelBoiler(this.mName, this.mTier, this.mDescription, this.mTextures);
+ }
+
+ public void onPostTick(IGregTechTileEntity aBaseMetaTileEntity, long aTick)
+ {
+ if ((aBaseMetaTileEntity.isServerSide()) && (aTick > 20L))
+ {
+ if (this.mTemperature <= 20)
+ {
+ this.mTemperature = 20;
+ this.mLossTimer = 0;
+ }
+ if (++this.mLossTimer > 40)
+ {
+ this.mTemperature -= 1;
+ this.mLossTimer = 0;
+ }
+ for (byte i = 1; (this.mSteam != null) && (i < 6); i = (byte)(i + 1)) {
+ if (i != aBaseMetaTileEntity.getFrontFacing())
+ {
+ IFluidHandler tTileEntity = aBaseMetaTileEntity.getITankContainerAtSide(i);
+ if (tTileEntity != null)
+ {
+ FluidStack tDrained = aBaseMetaTileEntity.drain(ForgeDirection.getOrientation(i), Math.max(1, this.mSteam.amount / 2), false);
+ if (tDrained != null)
+ {
+ int tFilledAmount = tTileEntity.fill(ForgeDirection.getOrientation(i).getOpposite(), tDrained, false);
+ if (tFilledAmount > 0) {
+ tTileEntity.fill(ForgeDirection.getOrientation(i).getOpposite(), aBaseMetaTileEntity.drain(ForgeDirection.getOrientation(i), tFilledAmount, true), true);
+ }
+ }
+ }
+ }
+ }
+ if (aTick % 10L == 0L) {
+ if (this.mTemperature > 100)
+ {
+ if ((this.mFluid == null) || (!GT_ModHandler.isWater(this.mFluid)) || (this.mFluid.amount <= 0))
+ {
+ this.mHadNoWater = true;
+ }
+ else
+ {
+ if (this.mHadNoWater)
+ {
+ aBaseMetaTileEntity.doExplosion(2048L);
+ return;
+ }
+ this.mFluid.amount -= 1;
+ if (this.mSteam == null) {
+ this.mSteam = GT_ModHandler.getSteam(150L);
+ } else if (GT_ModHandler.isSteam(this.mSteam)) {
+ this.mSteam.amount += 150;
+ } else {
+ this.mSteam = GT_ModHandler.getSteam(150L);
+ }
+ }
+ }
+ else {
+ this.mHadNoWater = false;
+ }
+ }
+ if ((this.mSteam != null) &&
+ (this.mSteam.amount > 32000))
+ {
+ sendSound((byte)1);
+ this.mSteam.amount = 24000;
+ }
+ if ((this.mProcessingEnergy <= 0) && (aBaseMetaTileEntity.isAllowedToWork()) &&
+ (this.mInventory[2] != null)) {
+ if ((GT_OreDictUnificator.isItemStackInstanceOf(this.mInventory[2], OrePrefixes.gem.get(Materials.Coal))) || (GT_OreDictUnificator.isItemStackInstanceOf(this.mInventory[2], OrePrefixes.dust.get(Materials.Coal))) || (GT_OreDictUnificator.isItemStackInstanceOf(this.mInventory[2], OrePrefixes.dustImpure.get(Materials.Coal))) || (GT_OreDictUnificator.isItemStackInstanceOf(this.mInventory[2], OrePrefixes.crushed.get(Materials.Coal))))
+ {
+ this.mProcessingEnergy += 160;
+ aBaseMetaTileEntity.decrStackSize(2, 1);
+ if (aBaseMetaTileEntity.getRandomNumber(3) == 0) {
+ aBaseMetaTileEntity.addStackToSlot(3, GT_OreDictUnificator.get(OrePrefixes.dustTiny, Materials.DarkAsh, 1L));
+ }
+ }
+ else if ((GT_OreDictUnificator.isItemStackInstanceOf(this.mInventory[2], OrePrefixes.gem.get(Materials.Charcoal))) || (GT_OreDictUnificator.isItemStackInstanceOf(this.mInventory[2], OrePrefixes.dust.get(Materials.Charcoal))) || (GT_OreDictUnificator.isItemStackInstanceOf(this.mInventory[2], OrePrefixes.dustImpure.get(Materials.Charcoal))) || (GT_OreDictUnificator.isItemStackInstanceOf(this.mInventory[2], OrePrefixes.crushed.get(Materials.Charcoal))))
+ {
+ this.mProcessingEnergy += 160;
+ aBaseMetaTileEntity.decrStackSize(2, 1);
+ if (aBaseMetaTileEntity.getRandomNumber(3) == 0) {
+ aBaseMetaTileEntity.addStackToSlot(3, GT_OreDictUnificator.get(OrePrefixes.dustTiny, Materials.Ash, 1L));
+ }
+ }
+ else if (GT_OreDictUnificator.isItemStackInstanceOf(this.mInventory[2], "fuelCoke"))
+ {
+ this.mProcessingEnergy += 640;
+ aBaseMetaTileEntity.decrStackSize(2, 1);
+ if (aBaseMetaTileEntity.getRandomNumber(2) == 0) {
+ aBaseMetaTileEntity.addStackToSlot(3, GT_OreDictUnificator.get(OrePrefixes.dustTiny, Materials.Ash, 1L));
+ }
+ }
+ else if ((GT_OreDictUnificator.isItemStackInstanceOf(this.mInventory[2], OrePrefixes.gem.get(Materials.Lignite))) || (GT_OreDictUnificator.isItemStackInstanceOf(this.mInventory[2], OrePrefixes.dust.get(Materials.Lignite))) || (GT_OreDictUnificator.isItemStackInstanceOf(this.mInventory[2], OrePrefixes.dustImpure.get(Materials.Lignite))) || (GT_OreDictUnificator.isItemStackInstanceOf(this.mInventory[2], OrePrefixes.crushed.get(Materials.Lignite))))
+ {
+ this.mProcessingEnergy += 40;
+ aBaseMetaTileEntity.decrStackSize(2, 1);
+ if (aBaseMetaTileEntity.getRandomNumber(8) == 0) {
+ aBaseMetaTileEntity.addStackToSlot(3, GT_OreDictUnificator.get(OrePrefixes.dustTiny, Materials.DarkAsh, 1L));
+ }
+ }
+ }
+ if ((this.mTemperature < 1000) && (this.mProcessingEnergy > 0) && (aTick % 12L == 0L))
+ {
+ this.mProcessingEnergy -= 2;
+ this.mTemperature += 1;
+ }
+ aBaseMetaTileEntity.setActive(this.mProcessingEnergy > 0);
+ }
+ }
+
+@Override
+public int[] getAccessibleSlotsFromSide(int p_94128_1_) {
+ // TODO Auto-generated method stub
+ return null;
+}
+
+@Override
+public boolean canInsertItem(int p_102007_1_, ItemStack p_102007_2_,
+ int p_102007_3_) {
+ // TODO Auto-generated method stub
+ return false;
+}
+
+@Override
+public boolean canExtractItem(int p_102008_1_, ItemStack p_102008_2_,
+ int p_102008_3_) {
+ // TODO Auto-generated method stub
+ return false;
+}
+
+@Override
+public int getSizeInventory() {
+ // TODO Auto-generated method stub
+ return 0;
+}
+
+@Override
+public ItemStack getStackInSlot(int p_70301_1_) {
+ // TODO Auto-generated method stub
+ return null;
+}
+
+@Override
+public ItemStack decrStackSize(int p_70298_1_, int p_70298_2_) {
+ // TODO Auto-generated method stub
+ return null;
+}
+
+@Override
+public ItemStack getStackInSlotOnClosing(int p_70304_1_) {
+ // TODO Auto-generated method stub
+ return null;
+}
+
+@Override
+public void setInventorySlotContents(int p_70299_1_, ItemStack p_70299_2_) {
+ // TODO Auto-generated method stub
+
+}
+
+@Override
+public String getInventoryName() {
+ // TODO Auto-generated method stub
+ return null;
+}
+
+@Override
+public boolean hasCustomInventoryName() {
+ // TODO Auto-generated method stub
+ return false;
+}
+
+@Override
+public int getInventoryStackLimit() {
+ // TODO Auto-generated method stub
+ return 0;
+}
+
+@Override
+public void markDirty() {
+ // TODO Auto-generated method stub
+
+}
+
+@Override
+public boolean isUseableByPlayer(EntityPlayer p_70300_1_) {
+ // TODO Auto-generated method stub
+ return false;
+}
+
+@Override
+public void openInventory() {
+ // TODO Auto-generated method stub
+
+}
+
+@Override
+public void closeInventory() {
+ // TODO Auto-generated method stub
+
+}
+
+@Override
+public boolean isItemValidForSlot(int p_94041_1_, ItemStack p_94041_2_) {
+ // TODO Auto-generated method stub
+ return false;
+}
+}
+
+
+
+/* Location: F:\Torrent\minecraft\jd-gui-0.3.6.windows\gregtech_1.7.10-5.07.07-dev.jar
+
+ * Qualified Name: gregtech.common.tileentities.boilers.GT_MetaTileEntity_Boiler_Steel
+
+ * JD-Core Version: 0.7.0.1
+
+ */ \ No newline at end of file
diff --git a/src/Java/miscutil/gregtech/util/IMessage.java b/src/Java/miscutil/gregtech/util/IMessage.java
new file mode 100644
index 0000000000..8891e2adde
--- /dev/null
+++ b/src/Java/miscutil/gregtech/util/IMessage.java
@@ -0,0 +1,21 @@
+package miscutil.gregtech.util;
+
+import net.minecraft.client.Minecraft;
+import net.minecraft.util.ChatComponentText;
+
+public class IMessage {
+
+ public static void messageThePlayer(String s){
+ if(Minecraft.getMinecraft().thePlayer.worldObj.isRemote){
+ Minecraft.getMinecraft().thePlayer.addChatComponentMessage(new ChatComponentText(s));
+ }
+ else if(!Minecraft.getMinecraft().thePlayer.worldObj.isRemote){
+ Minecraft.getMinecraft().thePlayer.addChatComponentMessage(new ChatComponentText(s));
+ }
+ }
+
+ public void messageOtherPlayer(String s){
+ Minecraft.getMinecraft().thePlayer.addChatComponentMessage(new ChatComponentText(s));
+ }
+
+}
diff --git a/src/Java/miscutil/gregtech/util/VanillaChatCommandSender.java b/src/Java/miscutil/gregtech/util/VanillaChatCommandSender.java
new file mode 100644
index 0000000000..ee77211b21
--- /dev/null
+++ b/src/Java/miscutil/gregtech/util/VanillaChatCommandSender.java
@@ -0,0 +1,35 @@
+package miscutil.gregtech.util;
+
+import net.minecraft.util.ChunkCoordinates;
+import net.minecraft.util.IChatComponent;
+import net.minecraft.world.World;
+
+public interface VanillaChatCommandSender {
+
+ /**
+ * Gets the name of this command sender (usually username, but possibly "Rcon")
+ */
+ String getCommandSenderName();
+
+ IChatComponent func_145748_c_();
+
+ /**
+ * Notifies this sender of some sort of information. This is for messages intended to display to the user. Used
+ * for typical output (like "you asked for whether or not this game rule is set, so here's your answer"), warnings
+ * (like "I fetched this block for you by ID, but I'd like you to know that every time you do this, I die a little
+ * inside"), and errors (like "it's not called iron_pixacke, silly").
+ */
+ void addChatMessage(IChatComponent p_145747_1_);
+
+ /**
+ * Returns true if the command sender is allowed to use the given command.
+ */
+ boolean canCommandSenderUseCommand(int p_70003_1_, String p_70003_2_);
+
+ /**
+ * Return the position for this command sender.
+ */
+ ChunkCoordinates getPlayerCoordinates();
+
+ World getEntityWorld();
+ }
diff --git a/src/resources/assets/miscutils/lang/en_US.lang b/src/resources/assets/miscutils/lang/en_US.lang
new file mode 100644
index 0000000000..190cd9e9d2
--- /dev/null
+++ b/src/resources/assets/miscutils/lang/en_US.lang
@@ -0,0 +1,53 @@
+itemGroup.MiscUtilBlockTab=Misc. Utils Blocks
+itemGroup.MiscUtilMiscTab=Misc. Utils Items
+itemGroup.MiscUtilCombatTab=Misc. Utils Combat
+itemGroup.MiscUtilToolsTab=Misc. Utils Tools
+
+
+item.BloodSteelPickaxe.name=Blood Steel Pickaxe
+item.BloodSteelAxe.name=Blood Steel Hatchet
+item.BloodSteelSword.name=Blood Steel Blade
+item.BloodSteelHoe.name=Blood Steel Hoe
+item.BloodSteelSpade.name=Blood Steel Shovel
+item.BloodSteelHelmet.name=Blood Steel Battle Helmet
+item.BloodSteelPlate.name=Blood Steel Battle Plate
+item.BloodSteelPants.name=Blood Steel War Casings
+item.BloodSteelBoots.name=Blood Steel War Treads
+
+
+
+item.itemPlateSoularium.name=Soularium Plate
+item.itemPlateRedstoneAlloy.name=Redstone Alloy Plate
+item.itemPlateElectricalSteel.name=Electrical Steel Plate
+item.itemPlatePulsatingIron.name=Pulsating Iron Plate
+item.itemPlateEnergeticAlloy.name=Energetic Alloy Plate
+item.itemPlateVibrantAlloy.name=Vibrant Alloy Plate
+item.itemPlateConductiveIron.name=Conductive Iron Plate
+item.itemPlateDarkSteel.name=Dark Steel Plate
+item.itemPlateBlutonium.name=Blutonium Plate
+item.itemPlateCyanite.name=Cyanite Plate
+item.itemPlateLudicrite.name=Ludicrite Plate
+item.itemPlateVoidMetal.name=Void Metal Plate
+item.itemPlateBedrockium.name=Bedrockium Plate
+item.itemPlateCompressedIron.name=Compressed Iron Plate
+item.itemPlateEnrichedSoularium.name=Enriched Soularium Plate
+item.itemPlateDimensionShard.name=Dimensional Plate
+item.itemIngotBloodSteel.name=Blood Steel Ingot
+item.itemPlateBloodSteel.name=Blood Steel Plate
+
+
+tile.blockBloodSteel.name=Block of Blood Steel
+tile.BloodSteelFurnace.name=Blood Steel Industrial Furnace
+tile.BloodSteelChest.name=Blood Steel Chest
+tile.ArcaneInfuser.name=Arcane Infuser
+
+tile.blockToolBuilder.name=GregTech Tool Constructor
+item.itemBufferCore.name=Buffer Core
+item.itemStaballoyPickaxe.name=Pick of the Ages
+item.itemIngotStaballoy.name=Staballoy Ingot
+item.itemPlateStaballoy.name=Staballoy Plate
+
+entity.BloodSteelMob.name=Friendly Fellow [WIP]
+entity.BloodSteelHostileMob.name=Hostile Mob [WIP]
+
+tile.storage.name=[WIP] Storage Block \ No newline at end of file
diff --git a/src/resources/assets/miscutils/textures/blocks/blockBloodSteel.png b/src/resources/assets/miscutils/textures/blocks/blockBloodSteel.png
new file mode 100644
index 0000000000..6ce0c8615f
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/blocks/blockBloodSteel.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/blocks/blockStaballoy.png b/src/resources/assets/miscutils/textures/blocks/blockStaballoy.png
new file mode 100644
index 0000000000..f90f75723e
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/blocks/blockStaballoy.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/itemBufferCore.png b/src/resources/assets/miscutils/textures/items/itemBufferCore.png
new file mode 100644
index 0000000000..fc6c4163a6
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/itemBufferCore.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/itemIngotBloodSteel.png b/src/resources/assets/miscutils/textures/items/itemIngotBloodSteel.png
new file mode 100644
index 0000000000..4d7a627065
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/itemIngotBloodSteel.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/itemIngotStaballoy.png b/src/resources/assets/miscutils/textures/items/itemIngotStaballoy.png
new file mode 100644
index 0000000000..af251b7711
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/itemIngotStaballoy.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/itemPlateBedrockium.png b/src/resources/assets/miscutils/textures/items/itemPlateBedrockium.png
new file mode 100644
index 0000000000..33248e37d7
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/itemPlateBedrockium.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/itemPlateBloodSteel.png b/src/resources/assets/miscutils/textures/items/itemPlateBloodSteel.png
new file mode 100644
index 0000000000..87bde2ffa1
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/itemPlateBloodSteel.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/itemPlateBlutonium.png b/src/resources/assets/miscutils/textures/items/itemPlateBlutonium.png
new file mode 100644
index 0000000000..284a631828
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/itemPlateBlutonium.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/itemPlateCompressedIron.png b/src/resources/assets/miscutils/textures/items/itemPlateCompressedIron.png
new file mode 100644
index 0000000000..ed9d98811b
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/itemPlateCompressedIron.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/itemPlateConductiveIron.png b/src/resources/assets/miscutils/textures/items/itemPlateConductiveIron.png
new file mode 100644
index 0000000000..a2e2d8e923
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/itemPlateConductiveIron.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/itemPlateCyanite.png b/src/resources/assets/miscutils/textures/items/itemPlateCyanite.png
new file mode 100644
index 0000000000..3674a721ec
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/itemPlateCyanite.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/itemPlateDarkSteel.png b/src/resources/assets/miscutils/textures/items/itemPlateDarkSteel.png
new file mode 100644
index 0000000000..698cdf21cb
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/itemPlateDarkSteel.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/itemPlateDimensionShard.png b/src/resources/assets/miscutils/textures/items/itemPlateDimensionShard.png
new file mode 100644
index 0000000000..9fe6440406
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/itemPlateDimensionShard.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/itemPlateElectricalSteel.png b/src/resources/assets/miscutils/textures/items/itemPlateElectricalSteel.png
new file mode 100644
index 0000000000..fe2ce84ab7
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/itemPlateElectricalSteel.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/itemPlateElectricalSteel2.png b/src/resources/assets/miscutils/textures/items/itemPlateElectricalSteel2.png
new file mode 100644
index 0000000000..d8b79ae78a
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/itemPlateElectricalSteel2.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/itemPlateEnergeticAlloy.png b/src/resources/assets/miscutils/textures/items/itemPlateEnergeticAlloy.png
new file mode 100644
index 0000000000..c7d063f69a
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/itemPlateEnergeticAlloy.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/itemPlateLudicrite.png b/src/resources/assets/miscutils/textures/items/itemPlateLudicrite.png
new file mode 100644
index 0000000000..11a10a2ed3
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/itemPlateLudicrite.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/itemPlatePulsatingIron.png b/src/resources/assets/miscutils/textures/items/itemPlatePulsatingIron.png
new file mode 100644
index 0000000000..454eb39071
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/itemPlatePulsatingIron.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/itemPlateRedstoneAlloy.png b/src/resources/assets/miscutils/textures/items/itemPlateRedstoneAlloy.png
new file mode 100644
index 0000000000..7d48dd4bea
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/itemPlateRedstoneAlloy.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/itemPlateSoularium.png b/src/resources/assets/miscutils/textures/items/itemPlateSoularium.png
new file mode 100644
index 0000000000..6420cc30de
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/itemPlateSoularium.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/itemPlateStaballoy.png b/src/resources/assets/miscutils/textures/items/itemPlateStaballoy.png
new file mode 100644
index 0000000000..6ab2e79ed9
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/itemPlateStaballoy.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/itemPlateVibrantAlloy.png b/src/resources/assets/miscutils/textures/items/itemPlateVibrantAlloy.png
new file mode 100644
index 0000000000..13c71932fd
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/itemPlateVibrantAlloy.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/itemPlateVoidMetal.png b/src/resources/assets/miscutils/textures/items/itemPlateVoidMetal.png
new file mode 100644
index 0000000000..8026035309
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/itemPlateVoidMetal.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/items/itemStaballoyPickaxe.png b/src/resources/assets/miscutils/textures/items/itemStaballoyPickaxe.png
new file mode 100644
index 0000000000..d1d6a487df
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/items/itemStaballoyPickaxe.png
Binary files differ
diff --git a/usercache.json b/usercache.json
new file mode 100644
index 0000000000..226156d9ce
--- /dev/null
+++ b/usercache.json
@@ -0,0 +1 @@
+[{"name":"Draknyte1","uuid":"5652713c-668e-47f3-853a-3fa959a9dfd3","expiresOn":"2015-11-05 13:01:36 +1000"}] \ No newline at end of file
diff --git a/usernamecache.json b/usernamecache.json
new file mode 100644
index 0000000000..527b4b2d2a
--- /dev/null
+++ b/usernamecache.json
@@ -0,0 +1,40 @@
+{
+ "5652713c-668e-47f3-853a-3fa959a9dfd3": "Draknyte1",
+ "e5bad5ae-87fa-3676-b10f-8a571200822c": "Player90",
+ "fcd8643a-136f-38b6-9c1f-4f5463ba5d9d": "Player283",
+ "ca1bc45b-4820-318c-8fd3-5eba4f447561": "Player252",
+ "e5f3c748-0ea0-3a62-b5e9-4fef46853cc3": "Player448",
+ "1b8d41ee-20e2-3849-a434-0d774a740ae1": "Player355",
+ "eb662411-185a-3694-b480-0c259ae00075": "Player487",
+ "13e3d50f-de22-3147-8516-e5bdfb7eb52c": "Player330",
+ "a7507e7e-f998-31cf-a2de-0cc0fd0a4de6": "Player401",
+ "588419cf-d7d5-3f7b-8fe7-89996b3b7551": "Player54",
+ "3b1946fe-c2d1-3fab-8b74-bd39d8b52fb4": "Player601",
+ "26d3a8a7-c365-3f1b-98bd-1e86d16aa724": "Player198",
+ "f0737fb5-4d0f-3bee-a039-92e456a5cc2e": "Player608",
+ "84e9e4f6-df8d-3fc9-b2c7-0eb3b9531d39": "Player818",
+ "218a3571-b707-3992-b46a-db90429dc7f7": "Player867",
+ "ad4a30d4-53bd-30c6-b482-5d77fb42b2d7": "Player593",
+ "5d36a45e-9473-37e3-8760-623ba7be7a5c": "Player582",
+ "b7afed14-2796-3101-8914-97746139b82d": "Player130",
+ "e664a043-6e9c-3d0d-9b38-cc385e35aba9": "Player809",
+ "56a50a28-2026-3b27-8279-243e3ff82a5a": "Player342",
+ "24a37f0a-2af1-3ac4-9024-e5424f979e18": "Player810",
+ "cdc68907-d5a3-31ac-b4e8-b157ad0dd513": "Player32",
+ "b743052f-5855-37e7-a97b-fd551acafef4": "Player281",
+ "18b3a035-3e67-34ed-889e-932160306e4f": "Player273",
+ "66212eae-12d0-33f7-bd64-547255e16b3f": "Player364",
+ "38ee4029-e397-3902-8d79-d6c4d51a8fef": "Player855",
+ "cb84ed39-e436-34ce-8360-3a854fcf8ae6": "Player429",
+ "27630cc8-9d92-34f7-8c10-85caa979d8b3": "Player108",
+ "909ca267-1200-3a4b-b154-ac49c5d6bf14": "Player315",
+ "9f706b9c-a5d7-3950-a693-97c335e2631f": "Player122",
+ "9bfc7d2e-b7d2-36ba-8889-dc94b2f1b428": "Player307",
+ "c72e77a5-a3ff-38a0-b468-253b21a4bd27": "Player759",
+ "05d3c308-6531-310d-988c-a6164eaf800d": "Player124",
+ "5b6052a7-6bab-33d6-92c2-a3d77755ef06": "Player430",
+ "e6f6e71e-f1b8-32cb-a47d-066aff706ad2": "Player237",
+ "6116e2fa-a2e7-3242-8217-a93e1a963211": "Player886",
+ "7fef5833-06c9-398a-84c0-fbd3a81ff548": "Player602",
+ "a7d84b43-620c-3be0-bbc6-d96e040e37ab": "Player590"
+} \ No newline at end of file
diff --git a/whitelist.json b/whitelist.json
new file mode 100644
index 0000000000..0637a088a0
--- /dev/null
+++ b/whitelist.json
@@ -0,0 +1 @@
+[] \ No newline at end of file
diff --git a/world-20151005-130119.zip b/world-20151005-130119.zip
new file mode 100644
index 0000000000..5c2a5becf0
--- /dev/null
+++ b/world-20151005-130119.zip
Binary files differ
diff --git a/world/DIM-1/data/villages.dat b/world/DIM-1/data/villages.dat
new file mode 100644
index 0000000000..178b5e0fff
--- /dev/null
+++ b/world/DIM-1/data/villages.dat
Binary files differ
diff --git a/world/DIM-1/forcedchunks.dat b/world/DIM-1/forcedchunks.dat
new file mode 100644
index 0000000000..e4345475ef
--- /dev/null
+++ b/world/DIM-1/forcedchunks.dat
Binary files differ
diff --git a/world/DIM1/data/villages.dat b/world/DIM1/data/villages.dat
new file mode 100644
index 0000000000..178b5e0fff
--- /dev/null
+++ b/world/DIM1/data/villages.dat
Binary files differ
diff --git a/world/DIM1/forcedchunks.dat b/world/DIM1/forcedchunks.dat
new file mode 100644
index 0000000000..e4345475ef
--- /dev/null
+++ b/world/DIM1/forcedchunks.dat
Binary files differ
diff --git a/world/data/Temple.dat b/world/data/Temple.dat
new file mode 100644
index 0000000000..b7d0730028
--- /dev/null
+++ b/world/data/Temple.dat
Binary files differ
diff --git a/world/data/Village.dat b/world/data/Village.dat
new file mode 100644
index 0000000000..c7bc5eb5ea
--- /dev/null
+++ b/world/data/Village.dat
Binary files differ
diff --git a/world/data/villages.dat b/world/data/villages.dat
new file mode 100644
index 0000000000..178b5e0fff
--- /dev/null
+++ b/world/data/villages.dat
Binary files differ
diff --git a/world/forcedchunks.dat b/world/forcedchunks.dat
new file mode 100644
index 0000000000..e4345475ef
--- /dev/null
+++ b/world/forcedchunks.dat
Binary files differ
diff --git a/world/level.dat b/world/level.dat
new file mode 100644
index 0000000000..7c8389695b
--- /dev/null
+++ b/world/level.dat
Binary files differ
diff --git a/world/level.dat_old b/world/level.dat_old
new file mode 100644
index 0000000000..2199343424
--- /dev/null
+++ b/world/level.dat_old
Binary files differ
diff --git a/world/playerdata/5652713c-668e-47f3-853a-3fa959a9dfd3.dat b/world/playerdata/5652713c-668e-47f3-853a-3fa959a9dfd3.dat
new file mode 100644
index 0000000000..9122731578
--- /dev/null
+++ b/world/playerdata/5652713c-668e-47f3-853a-3fa959a9dfd3.dat
Binary files differ
diff --git a/world/region/r.-1.-1.mca b/world/region/r.-1.-1.mca
new file mode 100644
index 0000000000..433a7fdbe8
--- /dev/null
+++ b/world/region/r.-1.-1.mca
Binary files differ
diff --git a/world/region/r.-1.0.mca b/world/region/r.-1.0.mca
new file mode 100644
index 0000000000..7b40ab7613
--- /dev/null
+++ b/world/region/r.-1.0.mca
Binary files differ
diff --git a/world/region/r.0.-1.mca b/world/region/r.0.-1.mca
new file mode 100644
index 0000000000..e917f5ee47
--- /dev/null
+++ b/world/region/r.0.-1.mca
Binary files differ
diff --git a/world/region/r.0.0.mca b/world/region/r.0.0.mca
new file mode 100644
index 0000000000..b594cbda55
--- /dev/null
+++ b/world/region/r.0.0.mca
Binary files differ
diff --git a/world/session.lock b/world/session.lock
new file mode 100644
index 0000000000..7bdba7dc9f
--- /dev/null
+++ b/world/session.lock
Binary files differ
diff --git a/world/stats/5652713c-668e-47f3-853a-3fa959a9dfd3.json b/world/stats/5652713c-668e-47f3-853a-3fa959a9dfd3.json
new file mode 100644
index 0000000000..b9e61bbb09
--- /dev/null
+++ b/world/stats/5652713c-668e-47f3-853a-3fa959a9dfd3.json
@@ -0,0 +1 @@
+{"stat.walkOneCm":28766,"achievement.openInventory":5,"stat.leaveGame":4,"stat.damageTaken":4050,"stat.flyOneCm":24783,"stat.deaths":2,"stat.jump":107,"stat.swimOneCm":1421,"stat.playOneMinute":10952,"stat.fallOneCm":2421,"achievement.exploreAllBiomes":{"value":0,"progress":["River","Desert","Savanna"]},"stat.diveOneCm":2778} \ No newline at end of file
diff --git a/world/uptime.txt b/world/uptime.txt
new file mode 100644
index 0000000000..d48e7c132c
--- /dev/null
+++ b/world/uptime.txt
@@ -0,0 +1,21 @@
+#Server Uptime
+#Tue Aug 25 03:25:20 AEST 2015
+played_time_0=296771
+players=1
+world_days=1
+first_joined_0=1440431379671
+server_lastday=1440431342088
+longest_life_0=195190
+player_lastday_0=1440431379671
+last_death_0=1440432474018
+number_of_deaths_0=2
+server_ondays=1
+server_uptime=810889
+shortest_life_0=60643
+name_0=Draknyte1
+player_ondays_0=1
+last_world_time=16214
+last_active_0=1440432512670
+alive_time_0=30091
+this_death_0=1440432474018
+last_life_0=195190