From 18b5bda4a8863d6cf0c69f34220965da049f895c Mon Sep 17 00:00:00 2001 From: TheBusyBiscuit Date: Thu, 17 Oct 2019 00:37:46 +0200 Subject: [PATCH] [CI skip] Introduced proper Maven structure --- pom.xml | 7 +- .../Events/MultiBlockInteractEvent.java | 0 .../Slimefun/Events/ResearchUnlockEvent.java | 0 .../Slimefun/GEO/GEOScanner.java | 0 .../Slimefun/GEO/OreGenResource.java | 0 .../Slimefun/GEO/OreGenSystem.java | 0 .../GEO/resources/NetherIceResource.java | 0 .../Slimefun/GEO/resources/OilResource.java | 0 .../GEO/resources/UraniumResource.java | 0 .../mrCookieSlime/Slimefun/GPS/Elevator.java | 0 .../Slimefun/GPS/GPSNetwork.java | 0 .../Slimefun/GPS/NetworkStatus.java | 0 .../Slimefun/GPS/TeleportationSequence.java | 0 .../Slimefun/Lists/Categories.java | 0 .../Slimefun/Lists/RecipeType.java | 0 .../Slimefun/Lists/SlimefunItems.java | 0 .../Slimefun/Objects/Category.java | 0 .../Slimefun/Objects/LockedCategory.java | 0 .../Slimefun/Objects/MultiBlock.java | 0 .../Slimefun/Objects/Research.java | 0 .../Slimefun/Objects/SeasonalCategory.java | 0 .../Objects/SlimefunBlockHandler.java | 0 .../Slimefun/Objects/SlimefunItem/Alloy.java | 0 .../Objects/SlimefunItem/ChargableItem.java | 0 .../Objects/SlimefunItem/ChargedItem.java | 0 .../SlimefunItem/DamagableChargableItem.java | 0 .../Objects/SlimefunItem/EnderTalisman.java | 0 .../Objects/SlimefunItem/EnhancedFurnace.java | 0 .../Objects/SlimefunItem/ExcludedBlock.java | 0 .../Objects/SlimefunItem/ExcludedGadget.java | 0 .../SlimefunItem/ExcludedSoulboundTool.java | 0 .../Objects/SlimefunItem/ExcludedTool.java | 0 .../Objects/SlimefunItem/HandledBlock.java | 0 .../Objects/SlimefunItem/ItemState.java | 0 .../Objects/SlimefunItem/JetBoots.java | 0 .../Objects/SlimefunItem/Jetpack.java | 0 .../Slimefun/Objects/SlimefunItem/Juice.java | 0 .../Objects/SlimefunItem/MultiTool.java | 0 .../Objects/SlimefunItem/ReplacingAlloy.java | 0 .../Objects/SlimefunItem/ReplacingItem.java | 0 .../SlimefunItem/SimpleSlimefunItem.java | 0 .../SlimefunItem/SlimefunArmorPiece.java | 0 .../SlimefunItem/SlimefunBackpack.java | 0 .../Objects/SlimefunItem/SlimefunBow.java | 0 .../Objects/SlimefunItem/SlimefunGadget.java | 0 .../Objects/SlimefunItem/SlimefunItem.java | 0 .../Objects/SlimefunItem/SlimefunMachine.java | 0 .../Objects/SlimefunItem/SolarHelmet.java | 0 .../SlimefunItem/SoulboundBackpack.java | 0 .../Objects/SlimefunItem/SoulboundItem.java | 0 .../Objects/SlimefunItem/Talisman.java | 0 .../SlimefunItem/UnregisterReason.java | 0 .../Objects/SlimefunItem/VanillaItem.java | 0 .../abstractItems/AContainer.java | 0 .../SlimefunItem/abstractItems/ADrill.java | 0 .../SlimefunItem/abstractItems/AFarm.java | 0 .../abstractItems/AGenerator.java | 0 .../SlimefunItem/abstractItems/AReactor.java | 886 +-- .../abstractItems/MachineFuel.java | 0 .../abstractItems/MachineHelper.java | 0 .../abstractItems/MachineRecipe.java | 0 .../abstractItems/Teleporter.java | 0 .../cargo/AdvancedCargoOutputNode.java | 420 +- .../SlimefunItem/cargo/CargoInputNode.java | 452 +- .../SlimefunItem/cargo/CargoManagerBlock.java | 0 .../SlimefunItem/cargo/CargoOutputNode.java | 0 .../handlers/BlockBreakHandler.java | 0 .../handlers/BlockPlaceHandler.java | 0 .../SlimefunItem/handlers/BlockTicker.java | 0 .../SlimefunItem/handlers/ItemHandler.java | 0 .../handlers/ItemInteractionHandler.java | 0 .../MultiBlockInteractionHandler.java | 0 .../interfaces/DamageableItem.java | 0 .../interfaces/InventoryBlock.java | 0 .../SlimefunItem/interfaces/NotPlaceable.java | 10 +- .../interfaces/RecipeDisplayItem.java | 0 .../SlimefunItem/interfaces/Soulbound.java | 0 .../SlimefunItem/items/DietCookie.java | 0 .../SlimefunItem/items/EnderBackpack.java | 0 .../SlimefunItem/items/ExplosivePickaxe.java | 0 .../SlimefunItem/items/ExplosiveShovel.java | 0 .../Objects/SlimefunItem/items/GoldPan.java | 0 .../SlimefunItem/items/GrapplingHook.java | 0 .../SlimefunItem/items/HerculesPickaxe.java | 0 .../SlimefunItem/items/HunterTalisman.java | 0 .../SlimefunItem/items/InfernalBonemeal.java | 0 .../SlimefunItem/items/KnowledgeFlask.java | 0 .../SlimefunItem/items/KnowledgeTome.java | 0 .../Objects/SlimefunItem/items/LumberAxe.java | 0 .../SlimefunItem/items/MagicEyeOfEnder.java | 0 .../SlimefunItem/items/MagicSugar.java | 0 .../SlimefunItem/items/MonsterJerky.java | 0 .../items/PickaxeOfContainment.java | 0 .../items/PickaxeOfTheSeeker.java | 0 .../items/PickaxeOfVeinMining.java | 0 .../SlimefunItem/items/PortableCrafter.java | 0 .../SlimefunItem/items/PortableDustbin.java | 0 .../items/PortableGEOScanner.java | 0 .../SlimefunItem/items/SeismicAxe.java | 0 .../SlimefunItem/items/SmeltersPickaxe.java | 0 .../SlimefunItem/items/SoulboundRune.java | 0 .../SlimefunItem/items/StormStaff.java | 0 .../SlimefunItem/items/SwordOfBeheading.java | 0 .../items/TelepositionScroll.java | 0 .../Objects/SlimefunItem/items/WindStaff.java | 0 .../machines/AncientPedestal.java | 0 .../SlimefunItem/machines/BlockPlacer.java | 0 .../SlimefunItem/machines/Composter.java | 0 .../SlimefunItem/machines/Crucible.java | 0 .../machines/HologramProjector.java | 0 .../SlimefunItem/machines/InfusedHopper.java | 0 .../machines/ReactorAccessPort.java | 358 +- .../SlimefunItem/machines/TrashCan.java | 0 .../electric/AnimalGrowthAccelerator.java | 0 .../machines/electric/AutoAnvil.java | 0 .../machines/electric/AutoBreeder.java | 0 .../machines/electric/AutoDisenchanter.java | 0 .../machines/electric/AutoDrier.java | 302 +- .../machines/electric/AutoEnchanter.java | 0 .../electric/AutomatedCraftingChamber.java | 0 .../machines/electric/CarbonPress.java | 0 .../machines/electric/ChargingBench.java | 0 .../electric/CropGrowthAccelerator.java | 0 .../machines/electric/ElectricDustWasher.java | 0 .../machines/electric/ElectricFurnace.java | 106 +- .../machines/electric/ElectricGoldPan.java | 0 .../electric/ElectricIngotFactory.java | 0 .../electric/ElectricIngotPulverizer.java | 0 .../machines/electric/ElectricOreGrinder.java | 0 .../machines/electric/ElectricSmeltery.java | 0 .../electric/ElectrifiedCrucible.java | 0 .../machines/electric/ElevatorPlate.java | 0 .../machines/electric/EnergyRegulator.java | 0 .../machines/electric/FluidPump.java | 0 .../machines/electric/FoodComposter.java | 0 .../machines/electric/FoodFabricator.java | 0 .../machines/electric/Freezer.java | 0 .../electric/HeatedPressureChamber.java | 0 .../machines/electric/Refinery.java | 0 .../machines/electric/WitherAssembler.java | 0 .../machines/electric/XPCollector.java | 0 .../electric/generators/BioGenerator.java | 0 .../electric/generators/CoalGenerator.java | 0 .../generators/CombustionGenerator.java | 0 .../electric/generators/LavaGenerator.java | 0 .../machines/electric/geo/GEOMiner.java | 0 .../electric/geo/GEOScannerBlock.java | 0 .../machines/electric/geo/NetherDrill.java | 0 .../machines/electric/geo/OilPump.java | 0 .../machines/electric/gps/GPSTransmitter.java | 0 .../SlimefunItem/multiblocks/ArmorForge.java | 0 .../multiblocks/AutomatedPanningMachine.java | 0 .../SlimefunItem/multiblocks/Compressor.java | 0 .../multiblocks/EnhancedCraftingTable.java | 0 .../SlimefunItem/multiblocks/GrindStone.java | 0 .../SlimefunItem/multiblocks/Juicer.java | 0 .../multiblocks/MagicWorkbench.java | 0 .../multiblocks/MultiBlockMachine.java | 0 .../SlimefunItem/multiblocks/OreCrusher.java | 0 .../SlimefunItem/multiblocks/OreWasher.java | 0 .../multiblocks/PressureChamber.java | 0 .../SlimefunItem/multiblocks/Smeltery.java | 0 .../SlimefunItem/multiblocks/TableSaw.java | 0 .../handlers/AutonomousMachineHandler.java | 0 .../Objects/handlers/BlockBreakHandler.java | 0 .../Objects/handlers/BlockPlaceHandler.java | 0 .../Objects/handlers/BlockTicker.java | 0 .../Objects/handlers/BowShootHandler.java | 0 .../Objects/handlers/EntityKillHandler.java | 0 .../handlers/ItemConsumptionHandler.java | 0 .../Objects/handlers/ItemDropHandler.java | 0 .../Objects/handlers/ItemHandler.java | 0 .../handlers/ItemInteractionHandler.java | 0 .../MultiBlockInteractionHandler.java | 0 .../Slimefun/Objects/tasks/ArmorTask.java | 0 .../Slimefun/Objects/tasks/JetBootsTask.java | 0 .../Slimefun/Objects/tasks/JetpackTask.java | 0 .../Slimefun/Objects/tasks/MagnetTask.java | 0 .../Slimefun/Objects/tasks/ParachuteTask.java | 0 .../Slimefun/Objects/tasks/RainbowTicker.java | 0 .../Slimefun/Objects/tasks/SlimefunTask.java | 0 .../Slimefun/Setup/CSCoreLibLoader.java | 0 .../mrCookieSlime/Slimefun/Setup/Files.java | 0 .../Slimefun/Setup/MiscSetup.java | 0 .../Setup/PostSlimefunLoadingHandler.java | 0 .../Slimefun/Setup/ResearchSetup.java | 0 .../Slimefun/Setup/SlimefunLocalization.java | 0 .../Slimefun/Setup/SlimefunManager.java | 0 .../Slimefun/Setup/SlimefunMetrics.java | 0 .../Slimefun/Setup/SlimefunSetup.java | 6428 ++++++++--------- .../mrCookieSlime/Slimefun/SlimefunGuide.java | 0 .../Slimefun/SlimefunPlugin.java | 0 .../Slimefun/ancient_altar/AltarRecipe.java | 0 .../ancient_altar/AncientAltarListener.java | 0 .../Slimefun/ancient_altar/Pedestals.java | 0 .../ancient_altar/RitualAnimation.java | 0 .../Slimefun/androids/AndroidObject.java | 0 .../Slimefun/androids/AndroidType.java | 0 .../androids/ProgrammableAndroid.java | 2134 +++--- .../Slimefun/androids/ScriptPart.java | 0 .../comparators/ScriptDownloadSorter.java | 0 .../comparators/ScriptReputationSorter.java | 0 .../Slimefun/api/BlockInfoConfig.java | 0 .../Slimefun/api/BlockStorage.java | 0 .../Slimefun/api/ErrorReport.java | 0 .../Slimefun/api/GuideHandler.java | 0 .../Slimefun/api/HashedArmorpiece.java | 0 .../Slimefun/api/PlayerProfile.java | 0 .../mrCookieSlime/Slimefun/api/Slimefun.java | 0 .../Slimefun/api/SlimefunBackup.java | 0 .../Slimefun/api/SlimefunGuideLayout.java | 0 .../Slimefun/api/SlimefunItemStack.java | 0 .../Slimefun/api/SlimefunRecipes.java | 0 .../me/mrCookieSlime/Slimefun/api/Soul.java | 0 .../Slimefun/api/TickerTask.java | 0 .../Slimefun/api/energy/ChargableBlock.java | 0 .../api/energy/EnergyFlowListener.java | 0 .../Slimefun/api/energy/EnergyNet.java | 0 .../api/energy/EnergyNetComponent.java | 0 .../Slimefun/api/energy/EnergyTicker.java | 0 .../Slimefun/api/energy/ItemEnergy.java | 0 .../api/inventory/BackpackInventory.java | 0 .../Slimefun/api/inventory/BlockMenu.java | 0 .../api/inventory/BlockMenuPreset.java | 0 .../api/inventory/DirtyChestMenu.java | 0 .../api/inventory/ItemManipulationEvent.java | 0 .../api/inventory/UniversalBlockMenu.java | 0 .../api/item_transport/CargoManager.java | 0 .../Slimefun/api/item_transport/CargoNet.java | 0 .../item_transport/CargoTransportEvent.java | 0 .../api/item_transport/ChannelIndex.java | 0 .../api/item_transport/ChestManipulator.java | 0 .../item_transport/ChestTerminalSorter.java | 0 .../api/item_transport/ItemRequest.java | 0 .../Slimefun/api/item_transport/ItemSlot.java | 0 .../api/item_transport/ItemTransportFlow.java | 0 .../api/item_transport/RecipeSorter.java | 0 .../api/item_transport/StoredItem.java | 0 .../Slimefun/api/network/Network.java | 0 .../api/network/NetworkComponent.java | 0 .../Slimefun/autosave/BlockAutoSaver.java | 0 .../Slimefun/autosave/PlayerAutoSaver.java | 0 .../Slimefun/commands/SlimefunCommand.java | 0 .../commands/SlimefunTabCompleter.java | 0 .../Slimefun/commands/SubCommand.java | 0 .../commands/subcommands/CheatCommand.java | 0 .../commands/subcommands/GiveCommand.java | 0 .../commands/subcommands/GuideCommand.java | 0 .../commands/subcommands/HelpCommand.java | 0 .../subcommands/OpenGuideCommand.java | 0 .../commands/subcommands/ResearchCommand.java | 0 .../commands/subcommands/SearchCommand.java | 0 .../commands/subcommands/StatsCommand.java | 0 .../subcommands/TeleporterCommand.java | 0 .../commands/subcommands/TimingsCommand.java | 0 .../commands/subcommands/VersionsCommand.java | 0 .../Slimefun/holograms/EnergyHologram.java | 0 .../holograms/HologramProjectorHologram.java | 0 .../Slimefun/holograms/ReactorHologram.java | 0 .../Slimefun/holograms/SimpleHologram.java | 0 .../Slimefun/hooks/ClearLagHook.java | 0 .../Slimefun/hooks/PlaceholderAPIHook.java | 0 .../Slimefun/hooks/SlimefunHooks.java | 0 .../Slimefun/hooks/WorldEditHook.java | 0 .../Slimefun/hooks/github/Contributor.java | 0 .../hooks/github/GitHubConnector.java | 0 .../Slimefun/hooks/github/GitHubSetup.java | 0 .../Slimefun/hooks/github/IntegerFormat.java | 0 .../listeners/AndroidKillingListener.java | 0 .../Slimefun/listeners/ArmorListener.java | 0 .../listeners/AutonomousToolsListener.java | 0 .../Slimefun/listeners/BackpackListener.java | 0 .../Slimefun/listeners/BlockListener.java | 0 .../Slimefun/listeners/BowListener.java | 0 .../Slimefun/listeners/CoolerListener.java | 0 .../Slimefun/listeners/DamageListener.java | 0 .../Slimefun/listeners/FurnaceListener.java | 0 .../Slimefun/listeners/GearListener.java | 0 .../listeners/GuideOnJoinListener.java | 0 .../Slimefun/listeners/ItemListener.java | 0 .../listeners/ItemPickupListener.java | 0 .../Slimefun/listeners/NetworkListener.java | 0 .../listeners/PlayerQuitListener.java | 0 .../Slimefun/listeners/TalismanListener.java | 0 .../listeners/TeleporterListener.java | 0 .../Slimefun/listeners/ToolListener.java | 0 .../Slimefun/listeners/WorldListener.java | 0 .../Slimefun/utils/CategorySorter.java | 0 .../Slimefun/utils/Christmas.java | 0 .../Slimefun/utils/MachineHelper.java | 0 .../Slimefun/utils/MachineTier.java | 0 .../Slimefun/utils/MachineType.java | 0 .../Slimefun/utils/Settings.java | 0 .../Slimefun/utils/Utilities.java | 0 src/{ => main/resources}/config.yml | 0 src/{ => main/resources}/plugin.yml | 0 296 files changed, 5551 insertions(+), 5552 deletions(-) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Events/MultiBlockInteractEvent.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Events/ResearchUnlockEvent.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/GEO/GEOScanner.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/GEO/OreGenResource.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/GEO/OreGenSystem.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/GEO/resources/NetherIceResource.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/GEO/resources/OilResource.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/GEO/resources/UraniumResource.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/GPS/Elevator.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/GPS/GPSNetwork.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/GPS/NetworkStatus.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/GPS/TeleportationSequence.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Lists/Categories.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Lists/RecipeType.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Lists/SlimefunItems.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/Category.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/LockedCategory.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/MultiBlock.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/Research.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SeasonalCategory.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunBlockHandler.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/Alloy.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/ChargableItem.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/ChargedItem.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/DamagableChargableItem.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/EnderTalisman.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/EnhancedFurnace.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/ExcludedBlock.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/ExcludedGadget.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/ExcludedSoulboundTool.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/ExcludedTool.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/HandledBlock.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/ItemState.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/JetBoots.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/Jetpack.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/Juice.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/MultiTool.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/ReplacingAlloy.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/ReplacingItem.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SimpleSlimefunItem.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunArmorPiece.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunBackpack.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunBow.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunGadget.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunMachine.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SolarHelmet.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SoulboundBackpack.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SoulboundItem.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/Talisman.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/UnregisterReason.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/VanillaItem.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AContainer.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/ADrill.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AFarm.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AGenerator.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AReactor.java (97%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/MachineFuel.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/MachineHelper.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/MachineRecipe.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/Teleporter.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/cargo/AdvancedCargoOutputNode.java (97%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/cargo/CargoInputNode.java (97%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/cargo/CargoManagerBlock.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/cargo/CargoOutputNode.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/BlockBreakHandler.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/BlockPlaceHandler.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/BlockTicker.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/ItemHandler.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/ItemInteractionHandler.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/MultiBlockInteractionHandler.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/interfaces/DamageableItem.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/interfaces/InventoryBlock.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/interfaces/NotPlaceable.java (95%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/interfaces/RecipeDisplayItem.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/interfaces/Soulbound.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/DietCookie.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/EnderBackpack.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/ExplosivePickaxe.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/ExplosiveShovel.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/GoldPan.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/GrapplingHook.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/HerculesPickaxe.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/HunterTalisman.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/InfernalBonemeal.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/KnowledgeFlask.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/KnowledgeTome.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/LumberAxe.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/MagicEyeOfEnder.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/MagicSugar.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/MonsterJerky.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/PickaxeOfContainment.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/PickaxeOfTheSeeker.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/PickaxeOfVeinMining.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/PortableCrafter.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/PortableDustbin.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/PortableGEOScanner.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/SeismicAxe.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/SmeltersPickaxe.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/SoulboundRune.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/StormStaff.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/SwordOfBeheading.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/TelepositionScroll.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/WindStaff.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AncientPedestal.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/BlockPlacer.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/Composter.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/Crucible.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/HologramProjector.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/InfusedHopper.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ReactorAccessPort.java (97%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/TrashCan.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AnimalGrowthAccelerator.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutoAnvil.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutoBreeder.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutoDisenchanter.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutoDrier.java (97%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutoEnchanter.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutomatedCraftingChamber.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/CarbonPress.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ChargingBench.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/CropGrowthAccelerator.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricDustWasher.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricFurnace.java (96%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricGoldPan.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricIngotFactory.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricIngotPulverizer.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricOreGrinder.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricSmeltery.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectrifiedCrucible.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElevatorPlate.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/EnergyRegulator.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/FluidPump.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/FoodComposter.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/FoodFabricator.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/Freezer.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/HeatedPressureChamber.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/Refinery.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/WitherAssembler.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/XPCollector.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/generators/BioGenerator.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/generators/CoalGenerator.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/generators/CombustionGenerator.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/generators/LavaGenerator.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/geo/GEOMiner.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/geo/GEOScannerBlock.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/geo/NetherDrill.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/geo/OilPump.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/gps/GPSTransmitter.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/ArmorForge.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/AutomatedPanningMachine.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/Compressor.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/EnhancedCraftingTable.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/GrindStone.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/Juicer.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/MagicWorkbench.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/MultiBlockMachine.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/OreCrusher.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/OreWasher.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/PressureChamber.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/Smeltery.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/TableSaw.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/handlers/AutonomousMachineHandler.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/handlers/BlockBreakHandler.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/handlers/BlockPlaceHandler.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/handlers/BlockTicker.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/handlers/BowShootHandler.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/handlers/EntityKillHandler.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/handlers/ItemConsumptionHandler.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/handlers/ItemDropHandler.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/handlers/ItemHandler.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/handlers/ItemInteractionHandler.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/handlers/MultiBlockInteractionHandler.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/tasks/ArmorTask.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/tasks/JetBootsTask.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/tasks/JetpackTask.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/tasks/MagnetTask.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/tasks/ParachuteTask.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/tasks/RainbowTicker.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Objects/tasks/SlimefunTask.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Setup/CSCoreLibLoader.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Setup/Files.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Setup/MiscSetup.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Setup/PostSlimefunLoadingHandler.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Setup/ResearchSetup.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Setup/SlimefunLocalization.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Setup/SlimefunManager.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Setup/SlimefunMetrics.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java (98%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/SlimefunGuide.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/SlimefunPlugin.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/ancient_altar/AltarRecipe.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/ancient_altar/AncientAltarListener.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/ancient_altar/Pedestals.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/ancient_altar/RitualAnimation.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/androids/AndroidObject.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/androids/AndroidType.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/androids/ProgrammableAndroid.java (97%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/androids/ScriptPart.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/androids/comparators/ScriptDownloadSorter.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/androids/comparators/ScriptReputationSorter.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/api/BlockInfoConfig.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/api/BlockStorage.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/api/ErrorReport.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/api/GuideHandler.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/api/HashedArmorpiece.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/api/PlayerProfile.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/api/Slimefun.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/api/SlimefunBackup.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/api/SlimefunGuideLayout.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/api/SlimefunItemStack.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/api/SlimefunRecipes.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/api/Soul.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/api/TickerTask.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/api/energy/ChargableBlock.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/api/energy/EnergyFlowListener.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/api/energy/EnergyNet.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/api/energy/EnergyNetComponent.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/api/energy/EnergyTicker.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/api/energy/ItemEnergy.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/api/inventory/BackpackInventory.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/api/inventory/BlockMenu.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/api/inventory/BlockMenuPreset.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/api/inventory/DirtyChestMenu.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/api/inventory/ItemManipulationEvent.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/api/inventory/UniversalBlockMenu.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/api/item_transport/CargoManager.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/api/item_transport/CargoNet.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/api/item_transport/CargoTransportEvent.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/api/item_transport/ChannelIndex.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/api/item_transport/ChestManipulator.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/api/item_transport/ChestTerminalSorter.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/api/item_transport/ItemRequest.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/api/item_transport/ItemSlot.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/api/item_transport/ItemTransportFlow.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/api/item_transport/RecipeSorter.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/api/item_transport/StoredItem.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/api/network/Network.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/api/network/NetworkComponent.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/autosave/BlockAutoSaver.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/autosave/PlayerAutoSaver.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/commands/SlimefunCommand.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/commands/SlimefunTabCompleter.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/commands/SubCommand.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/commands/subcommands/CheatCommand.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/commands/subcommands/GiveCommand.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/commands/subcommands/GuideCommand.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/commands/subcommands/HelpCommand.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/commands/subcommands/OpenGuideCommand.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/commands/subcommands/ResearchCommand.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/commands/subcommands/SearchCommand.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/commands/subcommands/StatsCommand.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/commands/subcommands/TeleporterCommand.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/commands/subcommands/TimingsCommand.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/commands/subcommands/VersionsCommand.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/holograms/EnergyHologram.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/holograms/HologramProjectorHologram.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/holograms/ReactorHologram.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/holograms/SimpleHologram.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/hooks/ClearLagHook.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/hooks/PlaceholderAPIHook.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/hooks/SlimefunHooks.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/hooks/WorldEditHook.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/hooks/github/Contributor.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/hooks/github/GitHubConnector.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/hooks/github/GitHubSetup.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/hooks/github/IntegerFormat.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/listeners/AndroidKillingListener.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/listeners/ArmorListener.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/listeners/AutonomousToolsListener.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/listeners/BackpackListener.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/listeners/BlockListener.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/listeners/BowListener.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/listeners/CoolerListener.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/listeners/DamageListener.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/listeners/FurnaceListener.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/listeners/GearListener.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/listeners/GuideOnJoinListener.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/listeners/ItemListener.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/listeners/ItemPickupListener.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/listeners/NetworkListener.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/listeners/PlayerQuitListener.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/listeners/TalismanListener.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/listeners/TeleporterListener.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/listeners/ToolListener.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/listeners/WorldListener.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/utils/CategorySorter.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/utils/Christmas.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/utils/MachineHelper.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/utils/MachineTier.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/utils/MachineType.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/utils/Settings.java (100%) rename src/{ => main/java}/me/mrCookieSlime/Slimefun/utils/Utilities.java (100%) rename src/{ => main/resources}/config.yml (100%) rename src/{ => main/resources}/plugin.yml (100%) diff --git a/pom.xml b/pom.xml index 4df76967c..8ba5cbece 100644 --- a/pom.xml +++ b/pom.xml @@ -43,7 +43,7 @@ - ${project.basedir}/src + ${project.basedir}/src/main/java ${project.name} v${project.version} @@ -90,11 +90,10 @@ - ${basedir}/src + ${basedir}/src/main/resources true - plugin.yml - config.yml + * diff --git a/src/me/mrCookieSlime/Slimefun/Events/MultiBlockInteractEvent.java b/src/main/java/me/mrCookieSlime/Slimefun/Events/MultiBlockInteractEvent.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Events/MultiBlockInteractEvent.java rename to src/main/java/me/mrCookieSlime/Slimefun/Events/MultiBlockInteractEvent.java diff --git a/src/me/mrCookieSlime/Slimefun/Events/ResearchUnlockEvent.java b/src/main/java/me/mrCookieSlime/Slimefun/Events/ResearchUnlockEvent.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Events/ResearchUnlockEvent.java rename to src/main/java/me/mrCookieSlime/Slimefun/Events/ResearchUnlockEvent.java diff --git a/src/me/mrCookieSlime/Slimefun/GEO/GEOScanner.java b/src/main/java/me/mrCookieSlime/Slimefun/GEO/GEOScanner.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/GEO/GEOScanner.java rename to src/main/java/me/mrCookieSlime/Slimefun/GEO/GEOScanner.java diff --git a/src/me/mrCookieSlime/Slimefun/GEO/OreGenResource.java b/src/main/java/me/mrCookieSlime/Slimefun/GEO/OreGenResource.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/GEO/OreGenResource.java rename to src/main/java/me/mrCookieSlime/Slimefun/GEO/OreGenResource.java diff --git a/src/me/mrCookieSlime/Slimefun/GEO/OreGenSystem.java b/src/main/java/me/mrCookieSlime/Slimefun/GEO/OreGenSystem.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/GEO/OreGenSystem.java rename to src/main/java/me/mrCookieSlime/Slimefun/GEO/OreGenSystem.java diff --git a/src/me/mrCookieSlime/Slimefun/GEO/resources/NetherIceResource.java b/src/main/java/me/mrCookieSlime/Slimefun/GEO/resources/NetherIceResource.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/GEO/resources/NetherIceResource.java rename to src/main/java/me/mrCookieSlime/Slimefun/GEO/resources/NetherIceResource.java diff --git a/src/me/mrCookieSlime/Slimefun/GEO/resources/OilResource.java b/src/main/java/me/mrCookieSlime/Slimefun/GEO/resources/OilResource.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/GEO/resources/OilResource.java rename to src/main/java/me/mrCookieSlime/Slimefun/GEO/resources/OilResource.java diff --git a/src/me/mrCookieSlime/Slimefun/GEO/resources/UraniumResource.java b/src/main/java/me/mrCookieSlime/Slimefun/GEO/resources/UraniumResource.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/GEO/resources/UraniumResource.java rename to src/main/java/me/mrCookieSlime/Slimefun/GEO/resources/UraniumResource.java diff --git a/src/me/mrCookieSlime/Slimefun/GPS/Elevator.java b/src/main/java/me/mrCookieSlime/Slimefun/GPS/Elevator.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/GPS/Elevator.java rename to src/main/java/me/mrCookieSlime/Slimefun/GPS/Elevator.java diff --git a/src/me/mrCookieSlime/Slimefun/GPS/GPSNetwork.java b/src/main/java/me/mrCookieSlime/Slimefun/GPS/GPSNetwork.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/GPS/GPSNetwork.java rename to src/main/java/me/mrCookieSlime/Slimefun/GPS/GPSNetwork.java diff --git a/src/me/mrCookieSlime/Slimefun/GPS/NetworkStatus.java b/src/main/java/me/mrCookieSlime/Slimefun/GPS/NetworkStatus.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/GPS/NetworkStatus.java rename to src/main/java/me/mrCookieSlime/Slimefun/GPS/NetworkStatus.java diff --git a/src/me/mrCookieSlime/Slimefun/GPS/TeleportationSequence.java b/src/main/java/me/mrCookieSlime/Slimefun/GPS/TeleportationSequence.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/GPS/TeleportationSequence.java rename to src/main/java/me/mrCookieSlime/Slimefun/GPS/TeleportationSequence.java diff --git a/src/me/mrCookieSlime/Slimefun/Lists/Categories.java b/src/main/java/me/mrCookieSlime/Slimefun/Lists/Categories.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Lists/Categories.java rename to src/main/java/me/mrCookieSlime/Slimefun/Lists/Categories.java diff --git a/src/me/mrCookieSlime/Slimefun/Lists/RecipeType.java b/src/main/java/me/mrCookieSlime/Slimefun/Lists/RecipeType.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Lists/RecipeType.java rename to src/main/java/me/mrCookieSlime/Slimefun/Lists/RecipeType.java diff --git a/src/me/mrCookieSlime/Slimefun/Lists/SlimefunItems.java b/src/main/java/me/mrCookieSlime/Slimefun/Lists/SlimefunItems.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Lists/SlimefunItems.java rename to src/main/java/me/mrCookieSlime/Slimefun/Lists/SlimefunItems.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/Category.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/Category.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/Category.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/Category.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/LockedCategory.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/LockedCategory.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/LockedCategory.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/LockedCategory.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/MultiBlock.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/MultiBlock.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/MultiBlock.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/MultiBlock.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/Research.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/Research.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/Research.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/Research.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SeasonalCategory.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SeasonalCategory.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SeasonalCategory.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SeasonalCategory.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunBlockHandler.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunBlockHandler.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunBlockHandler.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunBlockHandler.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/Alloy.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/Alloy.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/Alloy.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/Alloy.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/ChargableItem.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/ChargableItem.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/ChargableItem.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/ChargableItem.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/ChargedItem.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/ChargedItem.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/ChargedItem.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/ChargedItem.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/DamagableChargableItem.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/DamagableChargableItem.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/DamagableChargableItem.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/DamagableChargableItem.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/EnderTalisman.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/EnderTalisman.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/EnderTalisman.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/EnderTalisman.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/EnhancedFurnace.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/EnhancedFurnace.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/EnhancedFurnace.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/EnhancedFurnace.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/ExcludedBlock.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/ExcludedBlock.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/ExcludedBlock.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/ExcludedBlock.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/ExcludedGadget.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/ExcludedGadget.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/ExcludedGadget.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/ExcludedGadget.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/ExcludedSoulboundTool.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/ExcludedSoulboundTool.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/ExcludedSoulboundTool.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/ExcludedSoulboundTool.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/ExcludedTool.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/ExcludedTool.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/ExcludedTool.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/ExcludedTool.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/HandledBlock.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/HandledBlock.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/HandledBlock.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/HandledBlock.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/ItemState.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/ItemState.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/ItemState.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/ItemState.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/JetBoots.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/JetBoots.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/JetBoots.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/JetBoots.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/Jetpack.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/Jetpack.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/Jetpack.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/Jetpack.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/Juice.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/Juice.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/Juice.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/Juice.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/MultiTool.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/MultiTool.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/MultiTool.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/MultiTool.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/ReplacingAlloy.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/ReplacingAlloy.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/ReplacingAlloy.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/ReplacingAlloy.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/ReplacingItem.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/ReplacingItem.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/ReplacingItem.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/ReplacingItem.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SimpleSlimefunItem.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SimpleSlimefunItem.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SimpleSlimefunItem.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SimpleSlimefunItem.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunArmorPiece.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunArmorPiece.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunArmorPiece.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunArmorPiece.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunBackpack.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunBackpack.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunBackpack.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunBackpack.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunBow.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunBow.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunBow.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunBow.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunGadget.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunGadget.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunGadget.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunGadget.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunMachine.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunMachine.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunMachine.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunMachine.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SolarHelmet.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SolarHelmet.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SolarHelmet.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SolarHelmet.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SoulboundBackpack.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SoulboundBackpack.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SoulboundBackpack.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SoulboundBackpack.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SoulboundItem.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SoulboundItem.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SoulboundItem.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SoulboundItem.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/Talisman.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/Talisman.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/Talisman.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/Talisman.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/UnregisterReason.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/UnregisterReason.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/UnregisterReason.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/UnregisterReason.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/VanillaItem.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/VanillaItem.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/VanillaItem.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/VanillaItem.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AContainer.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AContainer.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AContainer.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AContainer.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/ADrill.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/ADrill.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/ADrill.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/ADrill.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AFarm.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AFarm.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AFarm.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AFarm.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AGenerator.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AGenerator.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AGenerator.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AGenerator.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AReactor.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AReactor.java similarity index 97% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AReactor.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AReactor.java index f8a5eede2..c8f73a2bb 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AReactor.java +++ b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AReactor.java @@ -1,443 +1,443 @@ -package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Random; -import java.util.Set; -import java.util.logging.Level; - -import org.bukkit.Bukkit; -import org.bukkit.ChatColor; -import org.bukkit.Location; -import org.bukkit.Material; -import org.bukkit.block.Block; -import org.bukkit.block.BlockFace; -import org.bukkit.entity.Player; -import org.bukkit.inventory.ItemStack; -import org.bukkit.inventory.meta.ItemMeta; - -import io.github.thebusybiscuit.cscorelib2.math.DoubleHandler; -import io.github.thebusybiscuit.cscorelib2.protection.ProtectableAction; -import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config; -import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.InvUtils; -import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem; -import me.mrCookieSlime.CSCoreLibPlugin.general.World.CustomSkull; -import me.mrCookieSlime.Slimefun.SlimefunPlugin; -import me.mrCookieSlime.Slimefun.Lists.RecipeType; -import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; -import me.mrCookieSlime.Slimefun.Objects.Category; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.RecipeDisplayItem; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.ReactorAccessPort; -import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; -import me.mrCookieSlime.Slimefun.api.BlockStorage; -import me.mrCookieSlime.Slimefun.api.Slimefun; -import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock; -import me.mrCookieSlime.Slimefun.api.energy.EnergyTicker; -import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu; -import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset; -import me.mrCookieSlime.Slimefun.api.item_transport.ItemTransportFlow; -import me.mrCookieSlime.Slimefun.holograms.ReactorHologram; -import me.mrCookieSlime.Slimefun.utils.MachineHelper; - -public abstract class AReactor extends SlimefunItem implements RecipeDisplayItem { - - public static Map processing = new HashMap<>(); - public static Map progress = new HashMap<>(); - - private static final BlockFace[] cooling = - { - BlockFace.NORTH, - BlockFace.NORTH_EAST, - BlockFace.EAST, - BlockFace.SOUTH_EAST, - BlockFace.SOUTH, - BlockFace.SOUTH_WEST, - BlockFace.WEST, - BlockFace.NORTH_WEST - }; - - private final Set recipes = new HashSet<>(); - - private static final int[] border = {0, 1, 2, 3, 5, 6, 7, 8, 12, 13, 14, 21, 23}; - private static final int[] border_1 = {9, 10, 11, 18, 20, 27, 29, 36, 38, 45, 46, 47}; - private static final int[] border_2 = {15, 16, 17, 24, 26, 33, 35, 42, 44, 51, 52, 53}; - private static final int[] border_3 = {30, 31, 32, 39, 41, 48, 50}; - - // No coolant border - private static final int[] border_4 = {25, 34, 43}; - private static final int INFO_SLOT = 49; - - public AReactor(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe) { - super(category, item, id, recipeType, recipe); - - new BlockMenuPreset(id, getInventoryTitle()) { - - @Override - public void init() { - constructMenu(this); - } - - @Override - public void newInstance(final BlockMenu menu, final Block b) { - try { - if (BlockStorage.getLocationInfo(b.getLocation(), "reactor-mode") == null){ - BlockStorage.addBlockInfo(b, "reactor-mode", "generator"); - } - - if (!BlockStorage.hasBlockInfo(b) || BlockStorage.getLocationInfo(b.getLocation(), "reactor-mode").equals("generator")) { - menu.replaceExistingItem(4, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTM0M2NlNThkYTU0Yzc5OTI0YTJjOTMzMWNmYzQxN2ZlOGNjYmJlYTliZTQ1YTdhYzg1ODYwYTZjNzMwIn19fQ=="), "&7Focus: &eElectricity", "", "&6Your Reactor will focus on Power Generation", "&6If your Energy Network doesn't need Power", "&6it will not produce any either", "", "&7> Click to change the Focus to &eProduction")); - menu.addMenuClickHandler(4, (p, slot, item, action) -> { - BlockStorage.addBlockInfo(b, "reactor-mode", "production"); - newInstance(menu, b); - return false; - }); - } - else { - menu.replaceExistingItem(4, new CustomItem(SlimefunItems.PLUTONIUM, "&7Focus: &eProduction", "", "&6Your Reactor will focus on producing goods", "&6If your Energy Network doesn't need Power", "&6it will continue to run and simply will", "&6not generate any Power in the mean time", "", "&7> Click to change the Focus to &ePower Generation")); - menu.addMenuClickHandler(4, (p, slot, item, action) -> { - BlockStorage.addBlockInfo(b, "reactor-mode", "generator"); - newInstance(menu, b); - return false; - }); - } - - BlockMenu port = getAccessPort(b.getLocation()); - if (port != null) { - menu.replaceExistingItem(INFO_SLOT, new CustomItem(new ItemStack(Material.GREEN_WOOL), "&7Access Port", "", "&6Detected", "", "&7> Click to view Access Port")); - menu.addMenuClickHandler(INFO_SLOT, (p, slot, item, action) -> { - port.open(p); - newInstance(menu, b); - - return false; - }); - } - else { - menu.replaceExistingItem(INFO_SLOT, new CustomItem(new ItemStack(Material.RED_WOOL), "&7Access Port", "", "&cNot detected", "", "&7Access Port must be", "&7placed 3 blocks above", "&7a reactor!")); - menu.addMenuClickHandler(INFO_SLOT, (p, slot, item, action) -> { - newInstance(menu, b); - menu.open(p); - return false; - }); - } - - } catch(Exception x) { - Slimefun.getLogger().log(Level.SEVERE, "An Error occured when creating a Reactor Menu for Slimefun " + Slimefun.getVersion(), x); - } - } - - - @Override - public boolean canOpen(Block b, Player p) { - return p.hasPermission("slimefun.inventory.bypass") || SlimefunPlugin.getProtectionManager().hasPermission(p, b.getLocation(), ProtectableAction.ACCESS_INVENTORIES); - } - - @Override - public int[] getSlotsAccessedByItemTransport(ItemTransportFlow flow) { - return new int[0]; - } - }; - - registerBlockHandler(id, (p, b, tool, reason) -> { - BlockMenu inv = BlockStorage.getInventory(b); - if (inv != null) { - for (int slot : getFuelSlots()) { - if (inv.getItemInSlot(slot) != null) { - b.getWorld().dropItemNaturally(b.getLocation(), inv.getItemInSlot(slot)); - inv.replaceExistingItem(slot, null); - } - } - - for (int slot : getCoolantSlots()) { - if (inv.getItemInSlot(slot) != null) { - b.getWorld().dropItemNaturally(b.getLocation(), inv.getItemInSlot(slot)); - inv.replaceExistingItem(slot, null); - } - } - - for (int slot : getOutputSlots()) { - if (inv.getItemInSlot(slot) != null) { - b.getWorld().dropItemNaturally(b.getLocation(), inv.getItemInSlot(slot)); - inv.replaceExistingItem(slot, null); - } - } - } - - progress.remove(b.getLocation()); - processing.remove(b.getLocation()); - ReactorHologram.remove(b.getLocation()); - return true; - }); - - this.registerDefaultRecipes(); - } - - private void constructMenu(BlockMenuPreset preset) { - for (int i : border) { - preset.addItem(i, new CustomItem(new ItemStack(Material.GRAY_STAINED_GLASS_PANE), " "), (p, slot, item, action) -> false); - } - - for (int i : border_1) { - preset.addItem(i, new CustomItem(new ItemStack(Material.LIME_STAINED_GLASS_PANE), " "), (p, slot, item, action) -> false); - } - - for (int i : border_3) { - preset.addItem(i, new CustomItem(new ItemStack(Material.GREEN_STAINED_GLASS_PANE), " "), (p, slot, item, action) -> false); - } - - preset.addItem(22, new CustomItem(new ItemStack(Material.BLACK_STAINED_GLASS_PANE), " "), (p, slot, item, action) -> false); - - preset.addItem(1, new CustomItem(SlimefunItems.URANIUM, "&7Fuel Slot", "", "&rThis Slot accepts radioactive Fuel such as:", "&2Uranium &ror &aNeptunium"), (p, slot, item, action) -> false); - - for (int i : border_2) { - preset.addItem(i, new CustomItem(new ItemStack(Material.CYAN_STAINED_GLASS_PANE), " "), (p, slot, item, action) -> false); - } - - if (needsCooling()) { - preset.addItem(7, new CustomItem(this.getCoolant(), "&bCoolant Slot", "", "&rThis Slot accepts Coolant Cells", "&4Without any Coolant Cells, your Reactor", "&4will explode")); - } - else { - preset.addItem(7, new CustomItem(new ItemStack(Material.BARRIER), "&bCoolant Slot", "", "&rThis Slot accepts Coolant Cells")); - - for (int i : border_4) { - preset.addItem(i, new CustomItem(new ItemStack(Material.BARRIER), "&cNo Coolant Required"), (p, slot, item, action) -> false); - } - } - } - - public abstract String getInventoryTitle(); - public abstract void registerDefaultRecipes(); - public abstract int getEnergyProduction(); - public abstract void extraTick(Location l); - public abstract ItemStack getCoolant(); - - public boolean needsCooling() { - return getCoolant() != null; - } - - public int[] getInputSlots() { - return new int[] {19, 28, 37, 25, 34, 43}; - } - - public int[] getFuelSlots() { - return new int[] {19, 28, 37}; - } - - public int[] getCoolantSlots() { - return needsCooling() ? new int[] {25, 34, 43} : new int[]{}; - } - - public int[] getOutputSlots() { - return new int[] {40}; - } - - public MachineFuel getProcessing(Location l) { - return processing.get(l); - } - - public boolean isProcessing(Location l) { - return progress.containsKey(l); - } - - public void registerFuel(MachineFuel fuel) { - this.recipes.add(fuel); - } - - @Override - public void preRegister() { - addItemHandler(new EnergyTicker() { - - private Set explode = new HashSet<>(); - - @Override - public double generateEnergy(final Location l, SlimefunItem sf, Config data) { - BlockMenu menu = BlockStorage.getInventory(l); - BlockMenu port = getAccessPort(l); - - if (isProcessing(l)) { - extraTick(l); - int timeleft = progress.get(l); - if (timeleft > 0) { - int produced = getEnergyProduction(); - int space = ChargableBlock.getMaxCharge(l) - ChargableBlock.getCharge(l); - if (space >= produced) { - ChargableBlock.addCharge(l, getEnergyProduction()); - space -= produced; - } - if (space >= produced || !"generator".equals(BlockStorage.getLocationInfo(l, "reactor-mode"))) { - progress.put(l, timeleft - 1); - - Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, () -> { - if (!l.getBlock().getRelative(cooling[new Random().nextInt(cooling.length)]).isLiquid()) explode.add(l); - }); - - MachineHelper.updateProgressbar(menu, 22, timeleft, processing.get(l).getTicks(), getProgressBar()); - - if (needsCooling()) { - boolean coolant = (processing.get(l).getTicks() - timeleft) % 25 == 0; - - if (coolant) { - if (port != null) { - for (int slot: getCoolantSlots()) { - if (SlimefunManager.isItemSimiliar(port.getItemInSlot(slot), getCoolant(), true)) { - port.replaceExistingItem(slot, menu.pushItem(port.getItemInSlot(slot), getCoolantSlots())); - } - } - } - - boolean explosion = true; - for (int slot: getCoolantSlots()) { - if (SlimefunManager.isItemSimiliar(menu.getItemInSlot(slot), getCoolant(), true)) { - menu.replaceExistingItem(slot, InvUtils.decreaseItem(menu.getItemInSlot(slot), 1)); - ReactorHologram.update(l, "&b\u2744 &7100%"); - explosion = false; - break; - } - } - - if (explosion) { - explode.add(l); - return 0; - } - } - else { - ReactorHologram.update(l, "&b\u2744 &7" + MachineHelper.getPercentage(timeleft, processing.get(l).getTicks()) + "%"); - } - } - - return ChargableBlock.getCharge(l); - } - return 0; - } - else { - menu.replaceExistingItem(22, new CustomItem(new ItemStack(Material.BLACK_STAINED_GLASS_PANE), " ")); - if (processing.get(l).getOutput() != null) { - menu.pushItem(processing.get(l).getOutput(), getOutputSlots()); - } - - if (port != null) { - for (int slot: getOutputSlots()) { - if (menu.getItemInSlot(slot) != null) { - menu.replaceExistingItem(slot, port.pushItem(menu.getItemInSlot(slot), ReactorAccessPort.getOutputSlots())); - } - } - } - - progress.remove(l); - processing.remove(l); - return 0; - } - } - else { - Map found = new HashMap<>(); - MachineFuel fuel = findRecipe(menu, found); - - if (port != null) { - restockCoolant(menu, port); - } - - if (fuel != null) { - for (Map.Entry entry: found.entrySet()) { - menu.replaceExistingItem(entry.getKey(), InvUtils.decreaseItem(menu.getItemInSlot(entry.getKey()), entry.getValue())); - } - - processing.put(l, fuel); - progress.put(l, fuel.getTicks()); - } - return 0; - } - } - - @Override - public boolean explode(final Location l) { - final boolean explosion = explode.contains(l); - if (explosion) { - BlockStorage.getInventory(l).close(); - - Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, () -> ReactorHologram.remove(l), 0); - - explode.remove(l); - processing.remove(l); - progress.remove(l); - } - return explosion; - } - }); - } - - private void restockCoolant(BlockMenu menu, BlockMenu port) { - for (int slot: getFuelSlots()) { - for (MachineFuel recipe: recipes) { - if (SlimefunManager.isItemSimiliar(port.getItemInSlot(slot), recipe.getInput(), true) && menu.fits(new CustomItem(port.getItemInSlot(slot), 1), getFuelSlots())) { - port.replaceExistingItem(slot, InvUtils.decreaseItem(port.getItemInSlot(slot), 1)); - return; - } - } - } - } - - private MachineFuel findRecipe(BlockMenu menu, Map found) { - for (MachineFuel recipe: recipes) { - for (int slot: getInputSlots()) { - if (SlimefunManager.isItemSimiliar(menu.getItemInSlot(slot), recipe.getInput(), true)) { - found.put(slot, recipe.getInput().getAmount()); - return recipe; - } - } - } - - return null; - } - - public abstract ItemStack getProgressBar(); - - public Set getFuelTypes() { - return this.recipes; - } - - public BlockMenu getAccessPort(Location l) { - Location portL = new Location(l.getWorld(), l.getX(), l.getY() + 3, l.getZ()); - - if (BlockStorage.check(portL, "REACTOR_ACCESS_PORT")) return BlockStorage.getInventory(portL); - return null; - } - - @Override - public String getRecipeSectionLabel() { - return "&7\u21E9 Available Types of Fuel \u21E9"; - } - - @Override - public List getDisplayRecipes() { - List list = new ArrayList<>(); - - for (MachineFuel fuel: recipes) { - ItemStack item = fuel.getInput().clone(); - ItemMeta im = item.getItemMeta(); - List lore = new ArrayList<>(); - lore.add(ChatColor.translateAlternateColorCodes('&', "&8\u21E8 &7Lasts " + getTimeLeft(fuel.getTicks() / 2))); - lore.add(ChatColor.translateAlternateColorCodes('&', "&8\u21E8 &e\u26A1 &7" + getEnergyProduction() * 2) + " J/s"); - lore.add(ChatColor.translateAlternateColorCodes('&', "&8\u21E8 &e\u26A1 &7" + DoubleHandler.getFancyDouble((double) fuel.getTicks() * getEnergyProduction()) + " J in total")); - im.setLore(lore); - item.setItemMeta(im); - list.add(item); - } - - if (list.size() % 2 != 0) list.add(null); - return list; - } - - private static String getTimeLeft(int seconds) { - String timeleft = ""; - final int minutes = (int) (seconds / 60L); - if (minutes > 0) { - timeleft += minutes + "m "; - } - seconds -= minutes * 60; - return "&7" + timeleft + seconds + "s"; - } - -} +package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Random; +import java.util.Set; +import java.util.logging.Level; + +import org.bukkit.Bukkit; +import org.bukkit.ChatColor; +import org.bukkit.Location; +import org.bukkit.Material; +import org.bukkit.block.Block; +import org.bukkit.block.BlockFace; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; + +import io.github.thebusybiscuit.cscorelib2.math.DoubleHandler; +import io.github.thebusybiscuit.cscorelib2.protection.ProtectableAction; +import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config; +import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.InvUtils; +import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem; +import me.mrCookieSlime.CSCoreLibPlugin.general.World.CustomSkull; +import me.mrCookieSlime.Slimefun.SlimefunPlugin; +import me.mrCookieSlime.Slimefun.Lists.RecipeType; +import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; +import me.mrCookieSlime.Slimefun.Objects.Category; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.RecipeDisplayItem; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.ReactorAccessPort; +import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; +import me.mrCookieSlime.Slimefun.api.BlockStorage; +import me.mrCookieSlime.Slimefun.api.Slimefun; +import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock; +import me.mrCookieSlime.Slimefun.api.energy.EnergyTicker; +import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu; +import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset; +import me.mrCookieSlime.Slimefun.api.item_transport.ItemTransportFlow; +import me.mrCookieSlime.Slimefun.holograms.ReactorHologram; +import me.mrCookieSlime.Slimefun.utils.MachineHelper; + +public abstract class AReactor extends SlimefunItem implements RecipeDisplayItem { + + public static Map processing = new HashMap<>(); + public static Map progress = new HashMap<>(); + + private static final BlockFace[] cooling = + { + BlockFace.NORTH, + BlockFace.NORTH_EAST, + BlockFace.EAST, + BlockFace.SOUTH_EAST, + BlockFace.SOUTH, + BlockFace.SOUTH_WEST, + BlockFace.WEST, + BlockFace.NORTH_WEST + }; + + private final Set recipes = new HashSet<>(); + + private static final int[] border = {0, 1, 2, 3, 5, 6, 7, 8, 12, 13, 14, 21, 23}; + private static final int[] border_1 = {9, 10, 11, 18, 20, 27, 29, 36, 38, 45, 46, 47}; + private static final int[] border_2 = {15, 16, 17, 24, 26, 33, 35, 42, 44, 51, 52, 53}; + private static final int[] border_3 = {30, 31, 32, 39, 41, 48, 50}; + + // No coolant border + private static final int[] border_4 = {25, 34, 43}; + private static final int INFO_SLOT = 49; + + public AReactor(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe) { + super(category, item, id, recipeType, recipe); + + new BlockMenuPreset(id, getInventoryTitle()) { + + @Override + public void init() { + constructMenu(this); + } + + @Override + public void newInstance(final BlockMenu menu, final Block b) { + try { + if (BlockStorage.getLocationInfo(b.getLocation(), "reactor-mode") == null){ + BlockStorage.addBlockInfo(b, "reactor-mode", "generator"); + } + + if (!BlockStorage.hasBlockInfo(b) || BlockStorage.getLocationInfo(b.getLocation(), "reactor-mode").equals("generator")) { + menu.replaceExistingItem(4, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTM0M2NlNThkYTU0Yzc5OTI0YTJjOTMzMWNmYzQxN2ZlOGNjYmJlYTliZTQ1YTdhYzg1ODYwYTZjNzMwIn19fQ=="), "&7Focus: &eElectricity", "", "&6Your Reactor will focus on Power Generation", "&6If your Energy Network doesn't need Power", "&6it will not produce any either", "", "&7> Click to change the Focus to &eProduction")); + menu.addMenuClickHandler(4, (p, slot, item, action) -> { + BlockStorage.addBlockInfo(b, "reactor-mode", "production"); + newInstance(menu, b); + return false; + }); + } + else { + menu.replaceExistingItem(4, new CustomItem(SlimefunItems.PLUTONIUM, "&7Focus: &eProduction", "", "&6Your Reactor will focus on producing goods", "&6If your Energy Network doesn't need Power", "&6it will continue to run and simply will", "&6not generate any Power in the mean time", "", "&7> Click to change the Focus to &ePower Generation")); + menu.addMenuClickHandler(4, (p, slot, item, action) -> { + BlockStorage.addBlockInfo(b, "reactor-mode", "generator"); + newInstance(menu, b); + return false; + }); + } + + BlockMenu port = getAccessPort(b.getLocation()); + if (port != null) { + menu.replaceExistingItem(INFO_SLOT, new CustomItem(new ItemStack(Material.GREEN_WOOL), "&7Access Port", "", "&6Detected", "", "&7> Click to view Access Port")); + menu.addMenuClickHandler(INFO_SLOT, (p, slot, item, action) -> { + port.open(p); + newInstance(menu, b); + + return false; + }); + } + else { + menu.replaceExistingItem(INFO_SLOT, new CustomItem(new ItemStack(Material.RED_WOOL), "&7Access Port", "", "&cNot detected", "", "&7Access Port must be", "&7placed 3 blocks above", "&7a reactor!")); + menu.addMenuClickHandler(INFO_SLOT, (p, slot, item, action) -> { + newInstance(menu, b); + menu.open(p); + return false; + }); + } + + } catch(Exception x) { + Slimefun.getLogger().log(Level.SEVERE, "An Error occured when creating a Reactor Menu for Slimefun " + Slimefun.getVersion(), x); + } + } + + + @Override + public boolean canOpen(Block b, Player p) { + return p.hasPermission("slimefun.inventory.bypass") || SlimefunPlugin.getProtectionManager().hasPermission(p, b.getLocation(), ProtectableAction.ACCESS_INVENTORIES); + } + + @Override + public int[] getSlotsAccessedByItemTransport(ItemTransportFlow flow) { + return new int[0]; + } + }; + + registerBlockHandler(id, (p, b, tool, reason) -> { + BlockMenu inv = BlockStorage.getInventory(b); + if (inv != null) { + for (int slot : getFuelSlots()) { + if (inv.getItemInSlot(slot) != null) { + b.getWorld().dropItemNaturally(b.getLocation(), inv.getItemInSlot(slot)); + inv.replaceExistingItem(slot, null); + } + } + + for (int slot : getCoolantSlots()) { + if (inv.getItemInSlot(slot) != null) { + b.getWorld().dropItemNaturally(b.getLocation(), inv.getItemInSlot(slot)); + inv.replaceExistingItem(slot, null); + } + } + + for (int slot : getOutputSlots()) { + if (inv.getItemInSlot(slot) != null) { + b.getWorld().dropItemNaturally(b.getLocation(), inv.getItemInSlot(slot)); + inv.replaceExistingItem(slot, null); + } + } + } + + progress.remove(b.getLocation()); + processing.remove(b.getLocation()); + ReactorHologram.remove(b.getLocation()); + return true; + }); + + this.registerDefaultRecipes(); + } + + private void constructMenu(BlockMenuPreset preset) { + for (int i : border) { + preset.addItem(i, new CustomItem(new ItemStack(Material.GRAY_STAINED_GLASS_PANE), " "), (p, slot, item, action) -> false); + } + + for (int i : border_1) { + preset.addItem(i, new CustomItem(new ItemStack(Material.LIME_STAINED_GLASS_PANE), " "), (p, slot, item, action) -> false); + } + + for (int i : border_3) { + preset.addItem(i, new CustomItem(new ItemStack(Material.GREEN_STAINED_GLASS_PANE), " "), (p, slot, item, action) -> false); + } + + preset.addItem(22, new CustomItem(new ItemStack(Material.BLACK_STAINED_GLASS_PANE), " "), (p, slot, item, action) -> false); + + preset.addItem(1, new CustomItem(SlimefunItems.URANIUM, "&7Fuel Slot", "", "&rThis Slot accepts radioactive Fuel such as:", "&2Uranium &ror &aNeptunium"), (p, slot, item, action) -> false); + + for (int i : border_2) { + preset.addItem(i, new CustomItem(new ItemStack(Material.CYAN_STAINED_GLASS_PANE), " "), (p, slot, item, action) -> false); + } + + if (needsCooling()) { + preset.addItem(7, new CustomItem(this.getCoolant(), "&bCoolant Slot", "", "&rThis Slot accepts Coolant Cells", "&4Without any Coolant Cells, your Reactor", "&4will explode")); + } + else { + preset.addItem(7, new CustomItem(new ItemStack(Material.BARRIER), "&bCoolant Slot", "", "&rThis Slot accepts Coolant Cells")); + + for (int i : border_4) { + preset.addItem(i, new CustomItem(new ItemStack(Material.BARRIER), "&cNo Coolant Required"), (p, slot, item, action) -> false); + } + } + } + + public abstract String getInventoryTitle(); + public abstract void registerDefaultRecipes(); + public abstract int getEnergyProduction(); + public abstract void extraTick(Location l); + public abstract ItemStack getCoolant(); + + public boolean needsCooling() { + return getCoolant() != null; + } + + public int[] getInputSlots() { + return new int[] {19, 28, 37, 25, 34, 43}; + } + + public int[] getFuelSlots() { + return new int[] {19, 28, 37}; + } + + public int[] getCoolantSlots() { + return needsCooling() ? new int[] {25, 34, 43} : new int[]{}; + } + + public int[] getOutputSlots() { + return new int[] {40}; + } + + public MachineFuel getProcessing(Location l) { + return processing.get(l); + } + + public boolean isProcessing(Location l) { + return progress.containsKey(l); + } + + public void registerFuel(MachineFuel fuel) { + this.recipes.add(fuel); + } + + @Override + public void preRegister() { + addItemHandler(new EnergyTicker() { + + private Set explode = new HashSet<>(); + + @Override + public double generateEnergy(final Location l, SlimefunItem sf, Config data) { + BlockMenu menu = BlockStorage.getInventory(l); + BlockMenu port = getAccessPort(l); + + if (isProcessing(l)) { + extraTick(l); + int timeleft = progress.get(l); + if (timeleft > 0) { + int produced = getEnergyProduction(); + int space = ChargableBlock.getMaxCharge(l) - ChargableBlock.getCharge(l); + if (space >= produced) { + ChargableBlock.addCharge(l, getEnergyProduction()); + space -= produced; + } + if (space >= produced || !"generator".equals(BlockStorage.getLocationInfo(l, "reactor-mode"))) { + progress.put(l, timeleft - 1); + + Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, () -> { + if (!l.getBlock().getRelative(cooling[new Random().nextInt(cooling.length)]).isLiquid()) explode.add(l); + }); + + MachineHelper.updateProgressbar(menu, 22, timeleft, processing.get(l).getTicks(), getProgressBar()); + + if (needsCooling()) { + boolean coolant = (processing.get(l).getTicks() - timeleft) % 25 == 0; + + if (coolant) { + if (port != null) { + for (int slot: getCoolantSlots()) { + if (SlimefunManager.isItemSimiliar(port.getItemInSlot(slot), getCoolant(), true)) { + port.replaceExistingItem(slot, menu.pushItem(port.getItemInSlot(slot), getCoolantSlots())); + } + } + } + + boolean explosion = true; + for (int slot: getCoolantSlots()) { + if (SlimefunManager.isItemSimiliar(menu.getItemInSlot(slot), getCoolant(), true)) { + menu.replaceExistingItem(slot, InvUtils.decreaseItem(menu.getItemInSlot(slot), 1)); + ReactorHologram.update(l, "&b\u2744 &7100%"); + explosion = false; + break; + } + } + + if (explosion) { + explode.add(l); + return 0; + } + } + else { + ReactorHologram.update(l, "&b\u2744 &7" + MachineHelper.getPercentage(timeleft, processing.get(l).getTicks()) + "%"); + } + } + + return ChargableBlock.getCharge(l); + } + return 0; + } + else { + menu.replaceExistingItem(22, new CustomItem(new ItemStack(Material.BLACK_STAINED_GLASS_PANE), " ")); + if (processing.get(l).getOutput() != null) { + menu.pushItem(processing.get(l).getOutput(), getOutputSlots()); + } + + if (port != null) { + for (int slot: getOutputSlots()) { + if (menu.getItemInSlot(slot) != null) { + menu.replaceExistingItem(slot, port.pushItem(menu.getItemInSlot(slot), ReactorAccessPort.getOutputSlots())); + } + } + } + + progress.remove(l); + processing.remove(l); + return 0; + } + } + else { + Map found = new HashMap<>(); + MachineFuel fuel = findRecipe(menu, found); + + if (port != null) { + restockCoolant(menu, port); + } + + if (fuel != null) { + for (Map.Entry entry: found.entrySet()) { + menu.replaceExistingItem(entry.getKey(), InvUtils.decreaseItem(menu.getItemInSlot(entry.getKey()), entry.getValue())); + } + + processing.put(l, fuel); + progress.put(l, fuel.getTicks()); + } + return 0; + } + } + + @Override + public boolean explode(final Location l) { + final boolean explosion = explode.contains(l); + if (explosion) { + BlockStorage.getInventory(l).close(); + + Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, () -> ReactorHologram.remove(l), 0); + + explode.remove(l); + processing.remove(l); + progress.remove(l); + } + return explosion; + } + }); + } + + private void restockCoolant(BlockMenu menu, BlockMenu port) { + for (int slot: getFuelSlots()) { + for (MachineFuel recipe: recipes) { + if (SlimefunManager.isItemSimiliar(port.getItemInSlot(slot), recipe.getInput(), true) && menu.fits(new CustomItem(port.getItemInSlot(slot), 1), getFuelSlots())) { + port.replaceExistingItem(slot, InvUtils.decreaseItem(port.getItemInSlot(slot), 1)); + return; + } + } + } + } + + private MachineFuel findRecipe(BlockMenu menu, Map found) { + for (MachineFuel recipe: recipes) { + for (int slot: getInputSlots()) { + if (SlimefunManager.isItemSimiliar(menu.getItemInSlot(slot), recipe.getInput(), true)) { + found.put(slot, recipe.getInput().getAmount()); + return recipe; + } + } + } + + return null; + } + + public abstract ItemStack getProgressBar(); + + public Set getFuelTypes() { + return this.recipes; + } + + public BlockMenu getAccessPort(Location l) { + Location portL = new Location(l.getWorld(), l.getX(), l.getY() + 3, l.getZ()); + + if (BlockStorage.check(portL, "REACTOR_ACCESS_PORT")) return BlockStorage.getInventory(portL); + return null; + } + + @Override + public String getRecipeSectionLabel() { + return "&7\u21E9 Available Types of Fuel \u21E9"; + } + + @Override + public List getDisplayRecipes() { + List list = new ArrayList<>(); + + for (MachineFuel fuel: recipes) { + ItemStack item = fuel.getInput().clone(); + ItemMeta im = item.getItemMeta(); + List lore = new ArrayList<>(); + lore.add(ChatColor.translateAlternateColorCodes('&', "&8\u21E8 &7Lasts " + getTimeLeft(fuel.getTicks() / 2))); + lore.add(ChatColor.translateAlternateColorCodes('&', "&8\u21E8 &e\u26A1 &7" + getEnergyProduction() * 2) + " J/s"); + lore.add(ChatColor.translateAlternateColorCodes('&', "&8\u21E8 &e\u26A1 &7" + DoubleHandler.getFancyDouble((double) fuel.getTicks() * getEnergyProduction()) + " J in total")); + im.setLore(lore); + item.setItemMeta(im); + list.add(item); + } + + if (list.size() % 2 != 0) list.add(null); + return list; + } + + private static String getTimeLeft(int seconds) { + String timeleft = ""; + final int minutes = (int) (seconds / 60L); + if (minutes > 0) { + timeleft += minutes + "m "; + } + seconds -= minutes * 60; + return "&7" + timeleft + seconds + "s"; + } + +} diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/MachineFuel.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/MachineFuel.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/MachineFuel.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/MachineFuel.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/MachineHelper.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/MachineHelper.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/MachineHelper.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/MachineHelper.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/MachineRecipe.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/MachineRecipe.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/MachineRecipe.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/MachineRecipe.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/Teleporter.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/Teleporter.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/Teleporter.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/Teleporter.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/cargo/AdvancedCargoOutputNode.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/cargo/AdvancedCargoOutputNode.java similarity index 97% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/cargo/AdvancedCargoOutputNode.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/cargo/AdvancedCargoOutputNode.java index d59e126dd..cecc4d281 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/cargo/AdvancedCargoOutputNode.java +++ b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/cargo/AdvancedCargoOutputNode.java @@ -1,210 +1,210 @@ -package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.cargo; - -import java.util.logging.Level; - -import org.bukkit.Material; -import org.bukkit.block.Block; -import org.bukkit.entity.Player; -import org.bukkit.inventory.ItemStack; -import org.bukkit.inventory.meta.Damageable; -import org.bukkit.inventory.meta.ItemMeta; - -import io.github.thebusybiscuit.cscorelib2.materials.MaterialCollections; -import io.github.thebusybiscuit.cscorelib2.protection.ProtectableAction; -import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem; -import me.mrCookieSlime.CSCoreLibPlugin.general.World.CustomSkull; -import me.mrCookieSlime.Slimefun.SlimefunPlugin; -import me.mrCookieSlime.Slimefun.Lists.RecipeType; -import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; -import me.mrCookieSlime.Slimefun.Objects.Category; -import me.mrCookieSlime.Slimefun.Objects.SlimefunBlockHandler; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason; -import me.mrCookieSlime.Slimefun.api.BlockStorage; -import me.mrCookieSlime.Slimefun.api.Slimefun; -import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu; -import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset; -import me.mrCookieSlime.Slimefun.api.item_transport.CargoNet; -import me.mrCookieSlime.Slimefun.api.item_transport.ItemTransportFlow; - -public class AdvancedCargoOutputNode extends SlimefunItem { - - private static final int[] border = {0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 17, 18, 22, 23, 24, 26, 27, 31, 32, 33, 34, 35, 36, 40, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53}; - - public AdvancedCargoOutputNode(Category category, ItemStack item, String name, RecipeType recipeType, ItemStack[] recipe, ItemStack recipeOutput) { - super(category, item, name, recipeType, recipe, recipeOutput); - - new BlockMenuPreset(name, "&cOutput Node") { - - @Override - public void init() { - constructMenu(this); - } - - @Override - public void newInstance(final BlockMenu menu, final Block b) { - try { - if (!BlockStorage.hasBlockInfo(b) || BlockStorage.getLocationInfo(b.getLocation(), "filter-type") == null || BlockStorage.getLocationInfo(b.getLocation(), "filter-type").equals("whitelist")) { - menu.replaceExistingItem(15, new CustomItem(new ItemStack(Material.WHITE_WOOL), "&7Type: &rWhitelist", "", "&e> Click to change it to Blacklist")); - menu.addMenuClickHandler(15, (p, slot, item, action) -> { - BlockStorage.addBlockInfo(b, "filter-type", "blacklist"); - newInstance(menu, b); - return false; - }); - } - else { - menu.replaceExistingItem(15, new CustomItem(new ItemStack(Material.BLACK_WOOL), "&7Type: &8Blacklist", "", "&e> Click to change it to Whitelist")); - menu.addMenuClickHandler(15, (p, slot, item, action) -> { - BlockStorage.addBlockInfo(b, "filter-type", "whitelist"); - newInstance(menu, b); - return false; - }); - } - - if (!BlockStorage.hasBlockInfo(b) || BlockStorage.getLocationInfo(b.getLocation(), "filter-durability") == null || BlockStorage.getLocationInfo(b.getLocation(), "filter-durability").equals("false")) { - ItemStack is = new ItemStack(Material.STONE_SWORD); - Damageable dmg = (Damageable) is.getItemMeta(); - dmg.setDamage(20); - is.setItemMeta((ItemMeta) dmg); - - menu.replaceExistingItem(16, new CustomItem(is, "&7Include Sub-IDs/Durability: &4\u2718", "", "&e> Click to toggle whether the Durability has to match")); - menu.addMenuClickHandler(16, (p, slot, item, action) -> { - BlockStorage.addBlockInfo(b, "filter-durability", "true"); - newInstance(menu, b); - return false; - }); - } - else { - ItemStack is = new ItemStack(Material.GOLDEN_SWORD); - Damageable dmg = (Damageable) is.getItemMeta(); - dmg.setDamage(20); - is.setItemMeta((ItemMeta) dmg); - menu.replaceExistingItem(16, new CustomItem(is, "&7Include Sub-IDs/Durability: &2\u2714", "", "&e> Click to toggle whether the Durability has to match")); - menu.addMenuClickHandler(16, (p, slot, item, action) -> { - BlockStorage.addBlockInfo(b, "filter-durability", "false"); - newInstance(menu, b); - return false; - }); - } - - if (!BlockStorage.hasBlockInfo(b) || BlockStorage.getLocationInfo(b.getLocation(), "filter-lore") == null || BlockStorage.getLocationInfo(b.getLocation(), "filter-lore").equals("true")) { - menu.replaceExistingItem(25, new CustomItem(new ItemStack(Material.MAP), "&7Include Lore: &2\u2714", "", "&e> Click to toggle whether the Lore has to match")); - menu.addMenuClickHandler(25, (p, slot, item, action) -> { - BlockStorage.addBlockInfo(b, "filter-lore", "false"); - newInstance(menu, b); - return false; - }); - } - else { - menu.replaceExistingItem(25, new CustomItem(new ItemStack(Material.MAP), "&7Include Lore: &4\u2718", "", "&e> Click to toggle whether the Lore has to match")); - menu.addMenuClickHandler(25, (p, slot, item, action) -> { - BlockStorage.addBlockInfo(b, "filter-lore", "true"); - newInstance(menu, b); - return false; - }); - } - - menu.replaceExistingItem(41, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZjI1OTliZDk4NjY1OWI4Y2UyYzQ5ODg1MjVjOTRlMTlkZGQzOWZhZDA4YTM4Mjg0YTE5N2YxYjcwNjc1YWNjIn19fQ=="), "&bChannel", "", "&e> Click to decrease the Channel ID by 1")); - menu.addMenuClickHandler(41, (p, slot, item, action) -> { - int channel = Integer.parseInt(BlockStorage.getLocationInfo(b.getLocation(), "frequency")) - 1; - if (channel < 0) { - if (CargoNet.extraChannels) channel = 16; - else channel = 15; - } - BlockStorage.addBlockInfo(b, "frequency", String.valueOf(channel)); - newInstance(menu, b); - return false; - }); - - int channel = ((!BlockStorage.hasBlockInfo(b) || BlockStorage.getLocationInfo(b.getLocation(), "frequency") == null) ? 0: (Integer.parseInt(BlockStorage.getLocationInfo(b.getLocation(), "frequency")))); - - if (channel == 16) { - menu.replaceExistingItem(42, new CustomItem(SlimefunItems.CHEST_TERMINAL, "&bChannel ID: &3" + (channel + 1))); - menu.addMenuClickHandler(42, - (p, slot, item, action) -> false - ); - } - else { - menu.replaceExistingItem(42, new CustomItem(new ItemStack(MaterialCollections.getAllWoolColors().get(channel)), "&bChannel ID: &3" + (channel + 1))); - menu.addMenuClickHandler(42, - (p, slot, item, action) -> false - ); - } - - menu.replaceExistingItem(43, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYzJmOTEwYzQ3ZGEwNDJlNGFhMjhhZjZjYzgxY2Y0OGFjNmNhZjM3ZGFiMzVmODhkYjk5M2FjY2I5ZGZlNTE2In19fQ=="), "&bChannel", "", "&e> Click to increase the Channel ID by 1")); - menu.addMenuClickHandler(43, (p, slot, item, action) -> { - int channeln = Integer.parseInt(BlockStorage.getLocationInfo(b.getLocation(), "frequency")) + 1; - - if (CargoNet.extraChannels) { - if (channeln > 16) channeln = 0; - } - else { - if (channeln > 15) channeln = 0; - } - - BlockStorage.addBlockInfo(b, "frequency", String.valueOf(channeln)); - newInstance(menu, b); - return false; - }); - - } catch (Exception x) { - Slimefun.getLogger().log(Level.SEVERE, "An Error occured while creating the Inventory of an Advanced Cargo Output Node for Slimefun " + Slimefun.getVersion(), x); - } - } - - @Override - public boolean canOpen(Block b, Player p) { - return p.hasPermission("slimefun.cargo.bypass") || SlimefunPlugin.getProtectionManager().hasPermission(p, b.getLocation(), ProtectableAction.ACCESS_INVENTORIES); - } - - @Override - public int[] getSlotsAccessedByItemTransport(ItemTransportFlow flow) { - return new int[0]; - } - }; - - registerBlockHandler(name, new SlimefunBlockHandler() { - - @Override - public void onPlace(Player p, Block b, SlimefunItem item) { - BlockStorage.addBlockInfo(b, "owner", p.getUniqueId().toString()); - BlockStorage.addBlockInfo(b, "index", "0"); - BlockStorage.addBlockInfo(b, "frequency", "0"); - BlockStorage.addBlockInfo(b, "filter-type", "whitelist"); - BlockStorage.addBlockInfo(b, "filter-lore", "true"); - BlockStorage.addBlockInfo(b, "filter-durability", "false"); - } - - @Override - public boolean onBreak(Player p, Block b, SlimefunItem item, UnregisterReason reason) { - BlockMenu inv = BlockStorage.getInventory(b); - if (inv != null) { - for (int slot: getInputSlots()) { - if (inv.getItemInSlot(slot) != null) { - b.getWorld().dropItemNaturally(b.getLocation(), inv.getItemInSlot(slot)); - inv.replaceExistingItem(slot, null); - } - } - } - return true; - } - }); - } - - protected void constructMenu(BlockMenuPreset preset) { - for (int i : border) { - preset.addItem(i, new CustomItem(new ItemStack(Material.CYAN_STAINED_GLASS_PANE), " "), - (p, slot, item, action) -> false - ); - } - - preset.addItem(2, new CustomItem(new ItemStack(Material.PAPER), "&3Items", "", "&bPut in all Items you want to", "&bblacklist/whitelist"), - (p, slot, item, action) -> false - ); - } - - public int[] getInputSlots() { - return new int[] {19, 20, 21, 28, 29, 30, 37, 38, 39}; - } - -} +package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.cargo; + +import java.util.logging.Level; + +import org.bukkit.Material; +import org.bukkit.block.Block; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.Damageable; +import org.bukkit.inventory.meta.ItemMeta; + +import io.github.thebusybiscuit.cscorelib2.materials.MaterialCollections; +import io.github.thebusybiscuit.cscorelib2.protection.ProtectableAction; +import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem; +import me.mrCookieSlime.CSCoreLibPlugin.general.World.CustomSkull; +import me.mrCookieSlime.Slimefun.SlimefunPlugin; +import me.mrCookieSlime.Slimefun.Lists.RecipeType; +import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; +import me.mrCookieSlime.Slimefun.Objects.Category; +import me.mrCookieSlime.Slimefun.Objects.SlimefunBlockHandler; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason; +import me.mrCookieSlime.Slimefun.api.BlockStorage; +import me.mrCookieSlime.Slimefun.api.Slimefun; +import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu; +import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset; +import me.mrCookieSlime.Slimefun.api.item_transport.CargoNet; +import me.mrCookieSlime.Slimefun.api.item_transport.ItemTransportFlow; + +public class AdvancedCargoOutputNode extends SlimefunItem { + + private static final int[] border = {0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 17, 18, 22, 23, 24, 26, 27, 31, 32, 33, 34, 35, 36, 40, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53}; + + public AdvancedCargoOutputNode(Category category, ItemStack item, String name, RecipeType recipeType, ItemStack[] recipe, ItemStack recipeOutput) { + super(category, item, name, recipeType, recipe, recipeOutput); + + new BlockMenuPreset(name, "&cOutput Node") { + + @Override + public void init() { + constructMenu(this); + } + + @Override + public void newInstance(final BlockMenu menu, final Block b) { + try { + if (!BlockStorage.hasBlockInfo(b) || BlockStorage.getLocationInfo(b.getLocation(), "filter-type") == null || BlockStorage.getLocationInfo(b.getLocation(), "filter-type").equals("whitelist")) { + menu.replaceExistingItem(15, new CustomItem(new ItemStack(Material.WHITE_WOOL), "&7Type: &rWhitelist", "", "&e> Click to change it to Blacklist")); + menu.addMenuClickHandler(15, (p, slot, item, action) -> { + BlockStorage.addBlockInfo(b, "filter-type", "blacklist"); + newInstance(menu, b); + return false; + }); + } + else { + menu.replaceExistingItem(15, new CustomItem(new ItemStack(Material.BLACK_WOOL), "&7Type: &8Blacklist", "", "&e> Click to change it to Whitelist")); + menu.addMenuClickHandler(15, (p, slot, item, action) -> { + BlockStorage.addBlockInfo(b, "filter-type", "whitelist"); + newInstance(menu, b); + return false; + }); + } + + if (!BlockStorage.hasBlockInfo(b) || BlockStorage.getLocationInfo(b.getLocation(), "filter-durability") == null || BlockStorage.getLocationInfo(b.getLocation(), "filter-durability").equals("false")) { + ItemStack is = new ItemStack(Material.STONE_SWORD); + Damageable dmg = (Damageable) is.getItemMeta(); + dmg.setDamage(20); + is.setItemMeta((ItemMeta) dmg); + + menu.replaceExistingItem(16, new CustomItem(is, "&7Include Sub-IDs/Durability: &4\u2718", "", "&e> Click to toggle whether the Durability has to match")); + menu.addMenuClickHandler(16, (p, slot, item, action) -> { + BlockStorage.addBlockInfo(b, "filter-durability", "true"); + newInstance(menu, b); + return false; + }); + } + else { + ItemStack is = new ItemStack(Material.GOLDEN_SWORD); + Damageable dmg = (Damageable) is.getItemMeta(); + dmg.setDamage(20); + is.setItemMeta((ItemMeta) dmg); + menu.replaceExistingItem(16, new CustomItem(is, "&7Include Sub-IDs/Durability: &2\u2714", "", "&e> Click to toggle whether the Durability has to match")); + menu.addMenuClickHandler(16, (p, slot, item, action) -> { + BlockStorage.addBlockInfo(b, "filter-durability", "false"); + newInstance(menu, b); + return false; + }); + } + + if (!BlockStorage.hasBlockInfo(b) || BlockStorage.getLocationInfo(b.getLocation(), "filter-lore") == null || BlockStorage.getLocationInfo(b.getLocation(), "filter-lore").equals("true")) { + menu.replaceExistingItem(25, new CustomItem(new ItemStack(Material.MAP), "&7Include Lore: &2\u2714", "", "&e> Click to toggle whether the Lore has to match")); + menu.addMenuClickHandler(25, (p, slot, item, action) -> { + BlockStorage.addBlockInfo(b, "filter-lore", "false"); + newInstance(menu, b); + return false; + }); + } + else { + menu.replaceExistingItem(25, new CustomItem(new ItemStack(Material.MAP), "&7Include Lore: &4\u2718", "", "&e> Click to toggle whether the Lore has to match")); + menu.addMenuClickHandler(25, (p, slot, item, action) -> { + BlockStorage.addBlockInfo(b, "filter-lore", "true"); + newInstance(menu, b); + return false; + }); + } + + menu.replaceExistingItem(41, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZjI1OTliZDk4NjY1OWI4Y2UyYzQ5ODg1MjVjOTRlMTlkZGQzOWZhZDA4YTM4Mjg0YTE5N2YxYjcwNjc1YWNjIn19fQ=="), "&bChannel", "", "&e> Click to decrease the Channel ID by 1")); + menu.addMenuClickHandler(41, (p, slot, item, action) -> { + int channel = Integer.parseInt(BlockStorage.getLocationInfo(b.getLocation(), "frequency")) - 1; + if (channel < 0) { + if (CargoNet.extraChannels) channel = 16; + else channel = 15; + } + BlockStorage.addBlockInfo(b, "frequency", String.valueOf(channel)); + newInstance(menu, b); + return false; + }); + + int channel = ((!BlockStorage.hasBlockInfo(b) || BlockStorage.getLocationInfo(b.getLocation(), "frequency") == null) ? 0: (Integer.parseInt(BlockStorage.getLocationInfo(b.getLocation(), "frequency")))); + + if (channel == 16) { + menu.replaceExistingItem(42, new CustomItem(SlimefunItems.CHEST_TERMINAL, "&bChannel ID: &3" + (channel + 1))); + menu.addMenuClickHandler(42, + (p, slot, item, action) -> false + ); + } + else { + menu.replaceExistingItem(42, new CustomItem(new ItemStack(MaterialCollections.getAllWoolColors().get(channel)), "&bChannel ID: &3" + (channel + 1))); + menu.addMenuClickHandler(42, + (p, slot, item, action) -> false + ); + } + + menu.replaceExistingItem(43, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYzJmOTEwYzQ3ZGEwNDJlNGFhMjhhZjZjYzgxY2Y0OGFjNmNhZjM3ZGFiMzVmODhkYjk5M2FjY2I5ZGZlNTE2In19fQ=="), "&bChannel", "", "&e> Click to increase the Channel ID by 1")); + menu.addMenuClickHandler(43, (p, slot, item, action) -> { + int channeln = Integer.parseInt(BlockStorage.getLocationInfo(b.getLocation(), "frequency")) + 1; + + if (CargoNet.extraChannels) { + if (channeln > 16) channeln = 0; + } + else { + if (channeln > 15) channeln = 0; + } + + BlockStorage.addBlockInfo(b, "frequency", String.valueOf(channeln)); + newInstance(menu, b); + return false; + }); + + } catch (Exception x) { + Slimefun.getLogger().log(Level.SEVERE, "An Error occured while creating the Inventory of an Advanced Cargo Output Node for Slimefun " + Slimefun.getVersion(), x); + } + } + + @Override + public boolean canOpen(Block b, Player p) { + return p.hasPermission("slimefun.cargo.bypass") || SlimefunPlugin.getProtectionManager().hasPermission(p, b.getLocation(), ProtectableAction.ACCESS_INVENTORIES); + } + + @Override + public int[] getSlotsAccessedByItemTransport(ItemTransportFlow flow) { + return new int[0]; + } + }; + + registerBlockHandler(name, new SlimefunBlockHandler() { + + @Override + public void onPlace(Player p, Block b, SlimefunItem item) { + BlockStorage.addBlockInfo(b, "owner", p.getUniqueId().toString()); + BlockStorage.addBlockInfo(b, "index", "0"); + BlockStorage.addBlockInfo(b, "frequency", "0"); + BlockStorage.addBlockInfo(b, "filter-type", "whitelist"); + BlockStorage.addBlockInfo(b, "filter-lore", "true"); + BlockStorage.addBlockInfo(b, "filter-durability", "false"); + } + + @Override + public boolean onBreak(Player p, Block b, SlimefunItem item, UnregisterReason reason) { + BlockMenu inv = BlockStorage.getInventory(b); + if (inv != null) { + for (int slot: getInputSlots()) { + if (inv.getItemInSlot(slot) != null) { + b.getWorld().dropItemNaturally(b.getLocation(), inv.getItemInSlot(slot)); + inv.replaceExistingItem(slot, null); + } + } + } + return true; + } + }); + } + + protected void constructMenu(BlockMenuPreset preset) { + for (int i : border) { + preset.addItem(i, new CustomItem(new ItemStack(Material.CYAN_STAINED_GLASS_PANE), " "), + (p, slot, item, action) -> false + ); + } + + preset.addItem(2, new CustomItem(new ItemStack(Material.PAPER), "&3Items", "", "&bPut in all Items you want to", "&bblacklist/whitelist"), + (p, slot, item, action) -> false + ); + } + + public int[] getInputSlots() { + return new int[] {19, 20, 21, 28, 29, 30, 37, 38, 39}; + } + +} diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/cargo/CargoInputNode.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/cargo/CargoInputNode.java similarity index 97% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/cargo/CargoInputNode.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/cargo/CargoInputNode.java index a7324a553..29d1d85cf 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/cargo/CargoInputNode.java +++ b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/cargo/CargoInputNode.java @@ -1,226 +1,226 @@ -package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.cargo; - -import java.util.logging.Level; - -import org.bukkit.Material; -import org.bukkit.block.Block; -import org.bukkit.entity.Player; -import org.bukkit.inventory.ItemStack; -import org.bukkit.inventory.meta.Damageable; -import org.bukkit.inventory.meta.ItemMeta; - -import io.github.thebusybiscuit.cscorelib2.materials.MaterialCollections; -import io.github.thebusybiscuit.cscorelib2.protection.ProtectableAction; -import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem; -import me.mrCookieSlime.CSCoreLibPlugin.general.World.CustomSkull; -import me.mrCookieSlime.Slimefun.SlimefunPlugin; -import me.mrCookieSlime.Slimefun.Lists.RecipeType; -import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; -import me.mrCookieSlime.Slimefun.Objects.Category; -import me.mrCookieSlime.Slimefun.Objects.SlimefunBlockHandler; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason; -import me.mrCookieSlime.Slimefun.api.BlockStorage; -import me.mrCookieSlime.Slimefun.api.Slimefun; -import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu; -import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset; -import me.mrCookieSlime.Slimefun.api.item_transport.CargoNet; -import me.mrCookieSlime.Slimefun.api.item_transport.ItemTransportFlow; - -public class CargoInputNode extends SlimefunItem { - - private static final int[] border = {0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 17, 18, 22, 23, 26, 27, 31, 32, 33, 34, 35, 36, 40, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53}; - - public CargoInputNode(Category category, ItemStack item, String name, RecipeType recipeType, ItemStack[] recipe, ItemStack recipeOutput) { - super(category, item, name, recipeType, recipe, recipeOutput); - - new BlockMenuPreset(name, "&3Input Node") { - - @Override - public void init() { - constructMenu(this); - } - - @Override - public void newInstance(final BlockMenu menu, final Block b) { - try { - if (!BlockStorage.hasBlockInfo(b) || BlockStorage.getLocationInfo(b.getLocation(), "filter-type") == null || BlockStorage.getLocationInfo(b.getLocation(), "filter-type").equals("whitelist")) { - menu.replaceExistingItem(15, new CustomItem(new ItemStack(Material.WHITE_WOOL), "&7Type: &rWhitelist", "", "&e> Click to change it to Blacklist")); - menu.addMenuClickHandler(15, (p, slot, item, action) -> { - BlockStorage.addBlockInfo(b, "filter-type", "blacklist"); - newInstance(menu, b); - return false; - }); - } - else { - menu.replaceExistingItem(15, new CustomItem(new ItemStack(Material.BLACK_WOOL), "&7Type: &8Blacklist", "", "&e> Click to change it to Whitelist")); - menu.addMenuClickHandler(15, (p, slot, item, action) -> { - BlockStorage.addBlockInfo(b, "filter-type", "whitelist"); - newInstance(menu, b); - return false; - }); - } - - if (!BlockStorage.hasBlockInfo(b) || BlockStorage.getLocationInfo(b.getLocation(), "filter-durability") == null || BlockStorage.getLocationInfo(b.getLocation(), "filter-durability").equals("false")) { - ItemStack is = new ItemStack(Material.STONE_SWORD); - Damageable dmg = (Damageable) is.getItemMeta(); - dmg.setDamage(20); - is.setItemMeta((ItemMeta) dmg); - - menu.replaceExistingItem(16, new CustomItem(is, "&7Include Sub-IDs/Durability: &4\u2718", "", "&e> Click to toggle whether the Durability has to match")); - menu.addMenuClickHandler(16, (p, slot, item, action) -> { - BlockStorage.addBlockInfo(b, "filter-durability", "true"); - newInstance(menu, b); - return false; - }); - } - else { - ItemStack is = new ItemStack(Material.GOLDEN_SWORD); - Damageable dmg = (Damageable) is.getItemMeta(); - dmg.setDamage(20); - is.setItemMeta((ItemMeta) dmg); - - menu.replaceExistingItem(16, new CustomItem(is, "&7Include Sub-IDs/Durability: &2\u2714", "", "&e> Click to toggle whether the Durability has to match")); - menu.addMenuClickHandler(16, (p, slot, item, action) -> { - BlockStorage.addBlockInfo(b, "filter-durability", "false"); - newInstance(menu, b); - return false; - }); - } - - if (!BlockStorage.hasBlockInfo(b) || BlockStorage.getLocationInfo(b.getLocation(), "round-robin") == null || BlockStorage.getLocationInfo(b.getLocation(), "round-robin").equals("false")) { - menu.replaceExistingItem(24, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZDc4ZjJiN2U1ZTc1NjM5ZWE3ZmI3OTZjMzVkMzY0YzRkZjI4YjQyNDNlNjZiNzYyNzdhYWRjZDYyNjEzMzcifX19"), "&7Round-Robin Mode: &4\u2718", "", "&e> Click to enable Round Robin Mode", "&e(Items will be equally distributed on the Channel)")); - menu.addMenuClickHandler(24, (p, slot, item, action) -> { - BlockStorage.addBlockInfo(b, "round-robin", "true"); - newInstance(menu, b); - return false; - }); - } - else { - menu.replaceExistingItem(24, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZDc4ZjJiN2U1ZTc1NjM5ZWE3ZmI3OTZjMzVkMzY0YzRkZjI4YjQyNDNlNjZiNzYyNzdhYWRjZDYyNjEzMzcifX19"), "&7Round-Robin Mode: &2\u2714", "", "&e> Click to disable Round Robin Mode", "&e(Items will be equally distributed on the Channel)")); - menu.addMenuClickHandler(24, (p, slot, item, action) -> { - BlockStorage.addBlockInfo(b, "round-robin", "false"); - newInstance(menu, b); - return false; - }); - } - - if (!BlockStorage.hasBlockInfo(b) || BlockStorage.getLocationInfo(b.getLocation(), "filter-lore") == null || BlockStorage.getLocationInfo(b.getLocation(), "filter-lore").equals("true")) { - menu.replaceExistingItem(25, new CustomItem(new ItemStack(Material.MAP), "&7Include Lore: &2\u2714", "", "&e> Click to toggle whether the Lore has to match")); - menu.addMenuClickHandler(25, (p, slot, item, action) -> { - BlockStorage.addBlockInfo(b, "filter-lore", "false"); - newInstance(menu, b); - return false; - }); - } - else { - menu.replaceExistingItem(25, new CustomItem(new ItemStack(Material.MAP), "&7Include Lore: &4\u2718", "", "&e> Click to toggle whether the Lore has to match")); - menu.addMenuClickHandler(25, (p, slot, item, action) -> { - BlockStorage.addBlockInfo(b, "filter-lore", "true"); - newInstance(menu, b); - return false; - }); - } - - menu.replaceExistingItem(41, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZjI1OTliZDk4NjY1OWI4Y2UyYzQ5ODg1MjVjOTRlMTlkZGQzOWZhZDA4YTM4Mjg0YTE5N2YxYjcwNjc1YWNjIn19fQ=="), "&bChannel", "", "&e> Click to decrease the Channel ID by 1")); - menu.addMenuClickHandler(41, (p, slot, item, action) -> { - int channel = Integer.parseInt(BlockStorage.getLocationInfo(b.getLocation(), "frequency")) - 1; - if (channel < 0) { - if (CargoNet.extraChannels) channel = 16; - else channel = 15; - } - BlockStorage.addBlockInfo(b, "frequency", String.valueOf(channel)); - newInstance(menu, b); - return false; - }); - - int channel = ((!BlockStorage.hasBlockInfo(b) || BlockStorage.getLocationInfo(b.getLocation(), "frequency") == null) ? 0: (Integer.parseInt(BlockStorage.getLocationInfo(b.getLocation(), "frequency")))); - - if (channel == 16) { - menu.replaceExistingItem(42, new CustomItem(SlimefunItems.CHEST_TERMINAL, "&bChannel ID: &3" + (channel + 1))); - menu.addMenuClickHandler(42, - (p, slot, item, action) -> false - ); - } - else { - menu.replaceExistingItem(42, new CustomItem(new ItemStack(MaterialCollections.getAllWoolColors().get(channel)), "&bChannel ID: &3" + (channel + 1))); - menu.addMenuClickHandler(42, - (p, slot, item, action) -> false - ); - } - - menu.replaceExistingItem(43, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYzJmOTEwYzQ3ZGEwNDJlNGFhMjhhZjZjYzgxY2Y0OGFjNmNhZjM3ZGFiMzVmODhkYjk5M2FjY2I5ZGZlNTE2In19fQ=="), "&bChannel", "", "&e> Click to increase the Channel ID by 1")); - menu.addMenuClickHandler(43, (p, slot, item, action) -> { - int channeln = Integer.parseInt(BlockStorage.getLocationInfo(b.getLocation(), "frequency")) + 1; - - if (CargoNet.extraChannels) { - if (channeln > 16) channeln = 0; - } - else { - if (channeln > 15) channeln = 0; - } - - BlockStorage.addBlockInfo(b, "frequency", String.valueOf(channeln)); - newInstance(menu, b); - return false; - }); - - } catch (Exception x) { - Slimefun.getLogger().log(Level.SEVERE, "An Error occured while creating a Cargo Input Node for Slimefun " + Slimefun.getVersion(), x); - } - } - - @Override - public boolean canOpen(Block b, Player p) { - return p.hasPermission("slimefun.cargo.bypass") || SlimefunPlugin.getProtectionManager().hasPermission(p, b.getLocation(), ProtectableAction.ACCESS_INVENTORIES); - } - - @Override - public int[] getSlotsAccessedByItemTransport(ItemTransportFlow flow) { - return new int[0]; - } - }; - - registerBlockHandler(name, new SlimefunBlockHandler() { - - @Override - public void onPlace(Player p, Block b, SlimefunItem item) { - BlockStorage.addBlockInfo(b, "owner", p.getUniqueId().toString()); - BlockStorage.addBlockInfo(b, "index", "0"); - BlockStorage.addBlockInfo(b, "frequency", "0"); - BlockStorage.addBlockInfo(b, "filter-type", "whitelist"); - BlockStorage.addBlockInfo(b, "filter-lore", "true"); - BlockStorage.addBlockInfo(b, "filter-durability", "false"); - BlockStorage.addBlockInfo(b, "round-robin", "false"); - } - - @Override - public boolean onBreak(Player p, Block b, SlimefunItem item, UnregisterReason reason) { - BlockMenu inv = BlockStorage.getInventory(b); - - if (inv != null) { - for (int slot : getInputSlots()) { - if (inv.getItemInSlot(slot) != null) { - b.getWorld().dropItemNaturally(b.getLocation(), inv.getItemInSlot(slot)); - inv.replaceExistingItem(slot, null); - } - } - } - return true; - } - }); - } - - protected void constructMenu(BlockMenuPreset preset) { - for (int i : border) { - preset.addItem(i, new CustomItem(new ItemStack(Material.CYAN_STAINED_GLASS_PANE), " "), (p, slot, item, action) -> false); - } - - preset.addItem(2, new CustomItem(new ItemStack(Material.PAPER), "&3Items", "", "&bPut in all Items you want to", "&bblacklist/whitelist"), (p, slot, item, action) -> false); - } - - public int[] getInputSlots() { - return new int[] {19, 20, 21, 28, 29, 30, 37, 38, 39}; - } - -} +package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.cargo; + +import java.util.logging.Level; + +import org.bukkit.Material; +import org.bukkit.block.Block; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.Damageable; +import org.bukkit.inventory.meta.ItemMeta; + +import io.github.thebusybiscuit.cscorelib2.materials.MaterialCollections; +import io.github.thebusybiscuit.cscorelib2.protection.ProtectableAction; +import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem; +import me.mrCookieSlime.CSCoreLibPlugin.general.World.CustomSkull; +import me.mrCookieSlime.Slimefun.SlimefunPlugin; +import me.mrCookieSlime.Slimefun.Lists.RecipeType; +import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; +import me.mrCookieSlime.Slimefun.Objects.Category; +import me.mrCookieSlime.Slimefun.Objects.SlimefunBlockHandler; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason; +import me.mrCookieSlime.Slimefun.api.BlockStorage; +import me.mrCookieSlime.Slimefun.api.Slimefun; +import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu; +import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset; +import me.mrCookieSlime.Slimefun.api.item_transport.CargoNet; +import me.mrCookieSlime.Slimefun.api.item_transport.ItemTransportFlow; + +public class CargoInputNode extends SlimefunItem { + + private static final int[] border = {0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 17, 18, 22, 23, 26, 27, 31, 32, 33, 34, 35, 36, 40, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53}; + + public CargoInputNode(Category category, ItemStack item, String name, RecipeType recipeType, ItemStack[] recipe, ItemStack recipeOutput) { + super(category, item, name, recipeType, recipe, recipeOutput); + + new BlockMenuPreset(name, "&3Input Node") { + + @Override + public void init() { + constructMenu(this); + } + + @Override + public void newInstance(final BlockMenu menu, final Block b) { + try { + if (!BlockStorage.hasBlockInfo(b) || BlockStorage.getLocationInfo(b.getLocation(), "filter-type") == null || BlockStorage.getLocationInfo(b.getLocation(), "filter-type").equals("whitelist")) { + menu.replaceExistingItem(15, new CustomItem(new ItemStack(Material.WHITE_WOOL), "&7Type: &rWhitelist", "", "&e> Click to change it to Blacklist")); + menu.addMenuClickHandler(15, (p, slot, item, action) -> { + BlockStorage.addBlockInfo(b, "filter-type", "blacklist"); + newInstance(menu, b); + return false; + }); + } + else { + menu.replaceExistingItem(15, new CustomItem(new ItemStack(Material.BLACK_WOOL), "&7Type: &8Blacklist", "", "&e> Click to change it to Whitelist")); + menu.addMenuClickHandler(15, (p, slot, item, action) -> { + BlockStorage.addBlockInfo(b, "filter-type", "whitelist"); + newInstance(menu, b); + return false; + }); + } + + if (!BlockStorage.hasBlockInfo(b) || BlockStorage.getLocationInfo(b.getLocation(), "filter-durability") == null || BlockStorage.getLocationInfo(b.getLocation(), "filter-durability").equals("false")) { + ItemStack is = new ItemStack(Material.STONE_SWORD); + Damageable dmg = (Damageable) is.getItemMeta(); + dmg.setDamage(20); + is.setItemMeta((ItemMeta) dmg); + + menu.replaceExistingItem(16, new CustomItem(is, "&7Include Sub-IDs/Durability: &4\u2718", "", "&e> Click to toggle whether the Durability has to match")); + menu.addMenuClickHandler(16, (p, slot, item, action) -> { + BlockStorage.addBlockInfo(b, "filter-durability", "true"); + newInstance(menu, b); + return false; + }); + } + else { + ItemStack is = new ItemStack(Material.GOLDEN_SWORD); + Damageable dmg = (Damageable) is.getItemMeta(); + dmg.setDamage(20); + is.setItemMeta((ItemMeta) dmg); + + menu.replaceExistingItem(16, new CustomItem(is, "&7Include Sub-IDs/Durability: &2\u2714", "", "&e> Click to toggle whether the Durability has to match")); + menu.addMenuClickHandler(16, (p, slot, item, action) -> { + BlockStorage.addBlockInfo(b, "filter-durability", "false"); + newInstance(menu, b); + return false; + }); + } + + if (!BlockStorage.hasBlockInfo(b) || BlockStorage.getLocationInfo(b.getLocation(), "round-robin") == null || BlockStorage.getLocationInfo(b.getLocation(), "round-robin").equals("false")) { + menu.replaceExistingItem(24, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZDc4ZjJiN2U1ZTc1NjM5ZWE3ZmI3OTZjMzVkMzY0YzRkZjI4YjQyNDNlNjZiNzYyNzdhYWRjZDYyNjEzMzcifX19"), "&7Round-Robin Mode: &4\u2718", "", "&e> Click to enable Round Robin Mode", "&e(Items will be equally distributed on the Channel)")); + menu.addMenuClickHandler(24, (p, slot, item, action) -> { + BlockStorage.addBlockInfo(b, "round-robin", "true"); + newInstance(menu, b); + return false; + }); + } + else { + menu.replaceExistingItem(24, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZDc4ZjJiN2U1ZTc1NjM5ZWE3ZmI3OTZjMzVkMzY0YzRkZjI4YjQyNDNlNjZiNzYyNzdhYWRjZDYyNjEzMzcifX19"), "&7Round-Robin Mode: &2\u2714", "", "&e> Click to disable Round Robin Mode", "&e(Items will be equally distributed on the Channel)")); + menu.addMenuClickHandler(24, (p, slot, item, action) -> { + BlockStorage.addBlockInfo(b, "round-robin", "false"); + newInstance(menu, b); + return false; + }); + } + + if (!BlockStorage.hasBlockInfo(b) || BlockStorage.getLocationInfo(b.getLocation(), "filter-lore") == null || BlockStorage.getLocationInfo(b.getLocation(), "filter-lore").equals("true")) { + menu.replaceExistingItem(25, new CustomItem(new ItemStack(Material.MAP), "&7Include Lore: &2\u2714", "", "&e> Click to toggle whether the Lore has to match")); + menu.addMenuClickHandler(25, (p, slot, item, action) -> { + BlockStorage.addBlockInfo(b, "filter-lore", "false"); + newInstance(menu, b); + return false; + }); + } + else { + menu.replaceExistingItem(25, new CustomItem(new ItemStack(Material.MAP), "&7Include Lore: &4\u2718", "", "&e> Click to toggle whether the Lore has to match")); + menu.addMenuClickHandler(25, (p, slot, item, action) -> { + BlockStorage.addBlockInfo(b, "filter-lore", "true"); + newInstance(menu, b); + return false; + }); + } + + menu.replaceExistingItem(41, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZjI1OTliZDk4NjY1OWI4Y2UyYzQ5ODg1MjVjOTRlMTlkZGQzOWZhZDA4YTM4Mjg0YTE5N2YxYjcwNjc1YWNjIn19fQ=="), "&bChannel", "", "&e> Click to decrease the Channel ID by 1")); + menu.addMenuClickHandler(41, (p, slot, item, action) -> { + int channel = Integer.parseInt(BlockStorage.getLocationInfo(b.getLocation(), "frequency")) - 1; + if (channel < 0) { + if (CargoNet.extraChannels) channel = 16; + else channel = 15; + } + BlockStorage.addBlockInfo(b, "frequency", String.valueOf(channel)); + newInstance(menu, b); + return false; + }); + + int channel = ((!BlockStorage.hasBlockInfo(b) || BlockStorage.getLocationInfo(b.getLocation(), "frequency") == null) ? 0: (Integer.parseInt(BlockStorage.getLocationInfo(b.getLocation(), "frequency")))); + + if (channel == 16) { + menu.replaceExistingItem(42, new CustomItem(SlimefunItems.CHEST_TERMINAL, "&bChannel ID: &3" + (channel + 1))); + menu.addMenuClickHandler(42, + (p, slot, item, action) -> false + ); + } + else { + menu.replaceExistingItem(42, new CustomItem(new ItemStack(MaterialCollections.getAllWoolColors().get(channel)), "&bChannel ID: &3" + (channel + 1))); + menu.addMenuClickHandler(42, + (p, slot, item, action) -> false + ); + } + + menu.replaceExistingItem(43, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYzJmOTEwYzQ3ZGEwNDJlNGFhMjhhZjZjYzgxY2Y0OGFjNmNhZjM3ZGFiMzVmODhkYjk5M2FjY2I5ZGZlNTE2In19fQ=="), "&bChannel", "", "&e> Click to increase the Channel ID by 1")); + menu.addMenuClickHandler(43, (p, slot, item, action) -> { + int channeln = Integer.parseInt(BlockStorage.getLocationInfo(b.getLocation(), "frequency")) + 1; + + if (CargoNet.extraChannels) { + if (channeln > 16) channeln = 0; + } + else { + if (channeln > 15) channeln = 0; + } + + BlockStorage.addBlockInfo(b, "frequency", String.valueOf(channeln)); + newInstance(menu, b); + return false; + }); + + } catch (Exception x) { + Slimefun.getLogger().log(Level.SEVERE, "An Error occured while creating a Cargo Input Node for Slimefun " + Slimefun.getVersion(), x); + } + } + + @Override + public boolean canOpen(Block b, Player p) { + return p.hasPermission("slimefun.cargo.bypass") || SlimefunPlugin.getProtectionManager().hasPermission(p, b.getLocation(), ProtectableAction.ACCESS_INVENTORIES); + } + + @Override + public int[] getSlotsAccessedByItemTransport(ItemTransportFlow flow) { + return new int[0]; + } + }; + + registerBlockHandler(name, new SlimefunBlockHandler() { + + @Override + public void onPlace(Player p, Block b, SlimefunItem item) { + BlockStorage.addBlockInfo(b, "owner", p.getUniqueId().toString()); + BlockStorage.addBlockInfo(b, "index", "0"); + BlockStorage.addBlockInfo(b, "frequency", "0"); + BlockStorage.addBlockInfo(b, "filter-type", "whitelist"); + BlockStorage.addBlockInfo(b, "filter-lore", "true"); + BlockStorage.addBlockInfo(b, "filter-durability", "false"); + BlockStorage.addBlockInfo(b, "round-robin", "false"); + } + + @Override + public boolean onBreak(Player p, Block b, SlimefunItem item, UnregisterReason reason) { + BlockMenu inv = BlockStorage.getInventory(b); + + if (inv != null) { + for (int slot : getInputSlots()) { + if (inv.getItemInSlot(slot) != null) { + b.getWorld().dropItemNaturally(b.getLocation(), inv.getItemInSlot(slot)); + inv.replaceExistingItem(slot, null); + } + } + } + return true; + } + }); + } + + protected void constructMenu(BlockMenuPreset preset) { + for (int i : border) { + preset.addItem(i, new CustomItem(new ItemStack(Material.CYAN_STAINED_GLASS_PANE), " "), (p, slot, item, action) -> false); + } + + preset.addItem(2, new CustomItem(new ItemStack(Material.PAPER), "&3Items", "", "&bPut in all Items you want to", "&bblacklist/whitelist"), (p, slot, item, action) -> false); + } + + public int[] getInputSlots() { + return new int[] {19, 20, 21, 28, 29, 30, 37, 38, 39}; + } + +} diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/cargo/CargoManagerBlock.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/cargo/CargoManagerBlock.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/cargo/CargoManagerBlock.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/cargo/CargoManagerBlock.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/cargo/CargoOutputNode.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/cargo/CargoOutputNode.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/cargo/CargoOutputNode.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/cargo/CargoOutputNode.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/BlockBreakHandler.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/BlockBreakHandler.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/BlockBreakHandler.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/BlockBreakHandler.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/BlockPlaceHandler.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/BlockPlaceHandler.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/BlockPlaceHandler.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/BlockPlaceHandler.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/BlockTicker.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/BlockTicker.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/BlockTicker.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/BlockTicker.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/ItemHandler.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/ItemHandler.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/ItemHandler.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/ItemHandler.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/ItemInteractionHandler.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/ItemInteractionHandler.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/ItemInteractionHandler.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/ItemInteractionHandler.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/MultiBlockInteractionHandler.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/MultiBlockInteractionHandler.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/MultiBlockInteractionHandler.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/handlers/MultiBlockInteractionHandler.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/interfaces/DamageableItem.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/interfaces/DamageableItem.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/interfaces/DamageableItem.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/interfaces/DamageableItem.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/interfaces/InventoryBlock.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/interfaces/InventoryBlock.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/interfaces/InventoryBlock.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/interfaces/InventoryBlock.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/interfaces/NotPlaceable.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/interfaces/NotPlaceable.java similarity index 95% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/interfaces/NotPlaceable.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/interfaces/NotPlaceable.java index e06465fac..39989d04d 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/interfaces/NotPlaceable.java +++ b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/interfaces/NotPlaceable.java @@ -1,5 +1,5 @@ -package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces; - -public interface NotPlaceable { - -} +package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces; + +public interface NotPlaceable { + +} diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/interfaces/RecipeDisplayItem.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/interfaces/RecipeDisplayItem.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/interfaces/RecipeDisplayItem.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/interfaces/RecipeDisplayItem.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/interfaces/Soulbound.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/interfaces/Soulbound.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/interfaces/Soulbound.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/interfaces/Soulbound.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/DietCookie.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/DietCookie.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/DietCookie.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/DietCookie.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/EnderBackpack.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/EnderBackpack.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/EnderBackpack.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/EnderBackpack.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/ExplosivePickaxe.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/ExplosivePickaxe.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/ExplosivePickaxe.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/ExplosivePickaxe.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/ExplosiveShovel.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/ExplosiveShovel.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/ExplosiveShovel.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/ExplosiveShovel.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/GoldPan.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/GoldPan.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/GoldPan.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/GoldPan.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/GrapplingHook.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/GrapplingHook.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/GrapplingHook.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/GrapplingHook.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/HerculesPickaxe.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/HerculesPickaxe.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/HerculesPickaxe.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/HerculesPickaxe.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/HunterTalisman.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/HunterTalisman.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/HunterTalisman.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/HunterTalisman.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/InfernalBonemeal.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/InfernalBonemeal.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/InfernalBonemeal.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/InfernalBonemeal.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/KnowledgeFlask.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/KnowledgeFlask.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/KnowledgeFlask.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/KnowledgeFlask.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/KnowledgeTome.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/KnowledgeTome.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/KnowledgeTome.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/KnowledgeTome.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/LumberAxe.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/LumberAxe.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/LumberAxe.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/LumberAxe.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/MagicEyeOfEnder.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/MagicEyeOfEnder.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/MagicEyeOfEnder.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/MagicEyeOfEnder.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/MagicSugar.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/MagicSugar.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/MagicSugar.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/MagicSugar.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/MonsterJerky.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/MonsterJerky.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/MonsterJerky.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/MonsterJerky.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/PickaxeOfContainment.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/PickaxeOfContainment.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/PickaxeOfContainment.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/PickaxeOfContainment.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/PickaxeOfTheSeeker.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/PickaxeOfTheSeeker.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/PickaxeOfTheSeeker.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/PickaxeOfTheSeeker.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/PickaxeOfVeinMining.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/PickaxeOfVeinMining.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/PickaxeOfVeinMining.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/PickaxeOfVeinMining.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/PortableCrafter.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/PortableCrafter.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/PortableCrafter.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/PortableCrafter.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/PortableDustbin.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/PortableDustbin.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/PortableDustbin.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/PortableDustbin.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/PortableGEOScanner.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/PortableGEOScanner.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/PortableGEOScanner.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/PortableGEOScanner.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/SeismicAxe.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/SeismicAxe.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/SeismicAxe.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/SeismicAxe.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/SmeltersPickaxe.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/SmeltersPickaxe.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/SmeltersPickaxe.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/SmeltersPickaxe.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/SoulboundRune.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/SoulboundRune.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/SoulboundRune.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/SoulboundRune.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/StormStaff.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/StormStaff.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/StormStaff.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/StormStaff.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/SwordOfBeheading.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/SwordOfBeheading.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/SwordOfBeheading.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/SwordOfBeheading.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/TelepositionScroll.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/TelepositionScroll.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/TelepositionScroll.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/TelepositionScroll.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/WindStaff.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/WindStaff.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/WindStaff.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/items/WindStaff.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AncientPedestal.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AncientPedestal.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AncientPedestal.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/AncientPedestal.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/BlockPlacer.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/BlockPlacer.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/BlockPlacer.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/BlockPlacer.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/Composter.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/Composter.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/Composter.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/Composter.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/Crucible.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/Crucible.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/Crucible.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/Crucible.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/HologramProjector.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/HologramProjector.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/HologramProjector.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/HologramProjector.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/InfusedHopper.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/InfusedHopper.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/InfusedHopper.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/InfusedHopper.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ReactorAccessPort.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ReactorAccessPort.java similarity index 97% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ReactorAccessPort.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ReactorAccessPort.java index 3bf3299c8..34d2c8877 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ReactorAccessPort.java +++ b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ReactorAccessPort.java @@ -1,179 +1,179 @@ -package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines; - -import org.bukkit.Location; -import org.bukkit.Material; -import org.bukkit.block.Block; -import org.bukkit.entity.Player; -import org.bukkit.inventory.ItemStack; - -import io.github.thebusybiscuit.cscorelib2.protection.ProtectableAction; -import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem; -import me.mrCookieSlime.Slimefun.SlimefunPlugin; -import me.mrCookieSlime.Slimefun.Lists.RecipeType; -import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; -import me.mrCookieSlime.Slimefun.Objects.Category; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AReactor; -import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; -import me.mrCookieSlime.Slimefun.api.BlockStorage; -import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu; -import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset; -import me.mrCookieSlime.Slimefun.api.item_transport.ItemTransportFlow; - -public class ReactorAccessPort extends SlimefunItem { - - private static final int[] border = {0, 1, 2, 3, 4, 5, 6, 7, 8, 12, 13, 14, 21, 23}; - private static final int[] border_1 = {9, 10, 11, 18, 20, 27, 29, 36, 38, 45, 46, 47}; - private static final int[] border_2 = {15, 16, 17, 24, 26, 33, 35, 42, 44, 51, 52, 53}; - private static final int[] border_3 = {30, 31, 32, 39, 41, 48, 49, 50}; - - public ReactorAccessPort(Category category, ItemStack item, String name, RecipeType recipeType, ItemStack[] recipe) { - super(category, item, name, recipeType, recipe); - - new BlockMenuPreset(name, "&2Reactor Access Port") { - - @Override - public void init() { - constructMenu(this); - } - - @Override - public boolean canOpen(Block b, Player p) { - if(p.hasPermission("slimefun.inventory.bypass") || SlimefunPlugin.getProtectionManager().hasPermission(p, b.getLocation(), ProtectableAction.ACCESS_INVENTORIES)) { - AReactor reactor = getReactor(b.getLocation()); - if (reactor != null) { - boolean empty = true; - BlockMenu bm = getReactorMenu(b.getLocation()); - - if (bm != null) { - for (int slot: reactor.getCoolantSlots()) { - if (bm.getItemInSlot(slot) != null) { - empty = false; - } - } - - for (int slot: reactor.getFuelSlots()) { - if (bm.getItemInSlot(slot) != null) { - empty = false; - } - } - - if(!empty || !p.isSneaking()) { - //reactor is not empty, lets view it's inventory instead. - bm.open(p); - return false; - } - - } - - return true; - - } - } - - return false; - } - - @Override - public int[] getSlotsAccessedByItemTransport(ItemTransportFlow flow) { - if (flow == ItemTransportFlow.INSERT) return getInputSlots(); - else return getOutputSlots(); - } - - @Override - public int[] getSlotsAccessedByItemTransport(BlockMenu menu, ItemTransportFlow flow, ItemStack item) { - if (flow == ItemTransportFlow.INSERT) { - if (SlimefunManager.isItemSimiliar(item, SlimefunItems.REACTOR_COOLANT_CELL, true)) return getCoolantSlots(); - else if (SlimefunManager.isItemSimiliar(item, SlimefunItems.NETHER_ICE_COOLANT_CELL, true)) return getCoolantSlots(); - else return getFuelSlots(); - } - else return getOutputSlots(); - } - }; - - registerBlockHandler(name, (p, b, tool, reason) -> { - BlockMenu inv = BlockStorage.getInventory(b); - - if (inv != null) { - for (int slot : getFuelSlots()) { - if (inv.getItemInSlot(slot) != null) { - b.getWorld().dropItemNaturally(b.getLocation(), inv.getItemInSlot(slot)); - inv.replaceExistingItem(slot, null); - } - } - - for (int slot : getCoolantSlots()) { - if (inv.getItemInSlot(slot) != null) { - b.getWorld().dropItemNaturally(b.getLocation(), inv.getItemInSlot(slot)); - inv.replaceExistingItem(slot, null); - } - } - - for (int slot : getOutputSlots()) { - if (inv.getItemInSlot(slot) != null) { - b.getWorld().dropItemNaturally(b.getLocation(), inv.getItemInSlot(slot)); - inv.replaceExistingItem(slot, null); - } - } - } - return true; - }); - } - - private void constructMenu(BlockMenuPreset preset) { - for (int i : border) { - preset.addItem(i, new CustomItem(new ItemStack(Material.GRAY_STAINED_GLASS_PANE), " "), (p, slot, item, action) -> false); - } - - for (int i : border_1) { - preset.addItem(i, new CustomItem(new ItemStack(Material.LIME_STAINED_GLASS_PANE), " "), (p, slot, item, action) -> false); - } - - for (int i : border_2) { - preset.addItem(i, new CustomItem(new ItemStack(Material.CYAN_STAINED_GLASS_PANE), " "), (p, slot, item, action) -> false); - } - - for (int i : border_3) { - preset.addItem(i, new CustomItem(new ItemStack(Material.GREEN_STAINED_GLASS_PANE), " "), (p, slot, item, action) -> false); - } - - preset.addItem(1, new CustomItem(SlimefunItems.URANIUM, "&7Fuel Slot", "", "&rThis Slot accepts radioactive Fuel such as:", "&2Uranium &ror &aNeptunium"), (p, slot, item, action) -> false); - preset.addItem(22, new CustomItem(SlimefunItems.PLUTONIUM, "&7Byproduct Slot", "", "&rThis Slot contains the Reactor's Byproduct", "&rsuch as &aNeptunium &ror &7Plutonium"), (p, slot, item, action) -> false); - preset.addItem(7, new CustomItem(SlimefunItems.REACTOR_COOLANT_CELL, "&bCoolant Slot", "", "&rThis Slot accepts Coolant Cells", "&4Without any Coolant Cells, your Reactor", "&4will explode"),(p, slot, item, action) -> false); - } - - public int[] getInputSlots() { - return new int[] {19, 28, 37, 25, 34, 43}; - } - - public int[] getFuelSlots() { - return new int[] {19, 28, 37}; - } - - public int[] getCoolantSlots() { - return new int[] {25, 34, 43}; - } - - public static int[] getOutputSlots() { - return new int[] {40}; - } - - public AReactor getReactor(Location l) { - Location reactorL = new Location(l.getWorld(), l.getX(), l.getY() - 3, l.getZ()); - - SlimefunItem item = BlockStorage.check(reactorL.getBlock()); - if (item instanceof AReactor) return (AReactor) item; - - return null; - } - - public BlockMenu getReactorMenu(Location l) { - Location reactorL = new Location(l.getWorld(), l.getX(), l.getY() - 3, l.getZ()); - - SlimefunItem item = BlockStorage.check(reactorL.getBlock()); - if (item instanceof AReactor) return BlockStorage.getInventory(l); - - return null; - } - -} +package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines; + +import org.bukkit.Location; +import org.bukkit.Material; +import org.bukkit.block.Block; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; + +import io.github.thebusybiscuit.cscorelib2.protection.ProtectableAction; +import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem; +import me.mrCookieSlime.Slimefun.SlimefunPlugin; +import me.mrCookieSlime.Slimefun.Lists.RecipeType; +import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; +import me.mrCookieSlime.Slimefun.Objects.Category; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AReactor; +import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; +import me.mrCookieSlime.Slimefun.api.BlockStorage; +import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu; +import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset; +import me.mrCookieSlime.Slimefun.api.item_transport.ItemTransportFlow; + +public class ReactorAccessPort extends SlimefunItem { + + private static final int[] border = {0, 1, 2, 3, 4, 5, 6, 7, 8, 12, 13, 14, 21, 23}; + private static final int[] border_1 = {9, 10, 11, 18, 20, 27, 29, 36, 38, 45, 46, 47}; + private static final int[] border_2 = {15, 16, 17, 24, 26, 33, 35, 42, 44, 51, 52, 53}; + private static final int[] border_3 = {30, 31, 32, 39, 41, 48, 49, 50}; + + public ReactorAccessPort(Category category, ItemStack item, String name, RecipeType recipeType, ItemStack[] recipe) { + super(category, item, name, recipeType, recipe); + + new BlockMenuPreset(name, "&2Reactor Access Port") { + + @Override + public void init() { + constructMenu(this); + } + + @Override + public boolean canOpen(Block b, Player p) { + if(p.hasPermission("slimefun.inventory.bypass") || SlimefunPlugin.getProtectionManager().hasPermission(p, b.getLocation(), ProtectableAction.ACCESS_INVENTORIES)) { + AReactor reactor = getReactor(b.getLocation()); + if (reactor != null) { + boolean empty = true; + BlockMenu bm = getReactorMenu(b.getLocation()); + + if (bm != null) { + for (int slot: reactor.getCoolantSlots()) { + if (bm.getItemInSlot(slot) != null) { + empty = false; + } + } + + for (int slot: reactor.getFuelSlots()) { + if (bm.getItemInSlot(slot) != null) { + empty = false; + } + } + + if(!empty || !p.isSneaking()) { + //reactor is not empty, lets view it's inventory instead. + bm.open(p); + return false; + } + + } + + return true; + + } + } + + return false; + } + + @Override + public int[] getSlotsAccessedByItemTransport(ItemTransportFlow flow) { + if (flow == ItemTransportFlow.INSERT) return getInputSlots(); + else return getOutputSlots(); + } + + @Override + public int[] getSlotsAccessedByItemTransport(BlockMenu menu, ItemTransportFlow flow, ItemStack item) { + if (flow == ItemTransportFlow.INSERT) { + if (SlimefunManager.isItemSimiliar(item, SlimefunItems.REACTOR_COOLANT_CELL, true)) return getCoolantSlots(); + else if (SlimefunManager.isItemSimiliar(item, SlimefunItems.NETHER_ICE_COOLANT_CELL, true)) return getCoolantSlots(); + else return getFuelSlots(); + } + else return getOutputSlots(); + } + }; + + registerBlockHandler(name, (p, b, tool, reason) -> { + BlockMenu inv = BlockStorage.getInventory(b); + + if (inv != null) { + for (int slot : getFuelSlots()) { + if (inv.getItemInSlot(slot) != null) { + b.getWorld().dropItemNaturally(b.getLocation(), inv.getItemInSlot(slot)); + inv.replaceExistingItem(slot, null); + } + } + + for (int slot : getCoolantSlots()) { + if (inv.getItemInSlot(slot) != null) { + b.getWorld().dropItemNaturally(b.getLocation(), inv.getItemInSlot(slot)); + inv.replaceExistingItem(slot, null); + } + } + + for (int slot : getOutputSlots()) { + if (inv.getItemInSlot(slot) != null) { + b.getWorld().dropItemNaturally(b.getLocation(), inv.getItemInSlot(slot)); + inv.replaceExistingItem(slot, null); + } + } + } + return true; + }); + } + + private void constructMenu(BlockMenuPreset preset) { + for (int i : border) { + preset.addItem(i, new CustomItem(new ItemStack(Material.GRAY_STAINED_GLASS_PANE), " "), (p, slot, item, action) -> false); + } + + for (int i : border_1) { + preset.addItem(i, new CustomItem(new ItemStack(Material.LIME_STAINED_GLASS_PANE), " "), (p, slot, item, action) -> false); + } + + for (int i : border_2) { + preset.addItem(i, new CustomItem(new ItemStack(Material.CYAN_STAINED_GLASS_PANE), " "), (p, slot, item, action) -> false); + } + + for (int i : border_3) { + preset.addItem(i, new CustomItem(new ItemStack(Material.GREEN_STAINED_GLASS_PANE), " "), (p, slot, item, action) -> false); + } + + preset.addItem(1, new CustomItem(SlimefunItems.URANIUM, "&7Fuel Slot", "", "&rThis Slot accepts radioactive Fuel such as:", "&2Uranium &ror &aNeptunium"), (p, slot, item, action) -> false); + preset.addItem(22, new CustomItem(SlimefunItems.PLUTONIUM, "&7Byproduct Slot", "", "&rThis Slot contains the Reactor's Byproduct", "&rsuch as &aNeptunium &ror &7Plutonium"), (p, slot, item, action) -> false); + preset.addItem(7, new CustomItem(SlimefunItems.REACTOR_COOLANT_CELL, "&bCoolant Slot", "", "&rThis Slot accepts Coolant Cells", "&4Without any Coolant Cells, your Reactor", "&4will explode"),(p, slot, item, action) -> false); + } + + public int[] getInputSlots() { + return new int[] {19, 28, 37, 25, 34, 43}; + } + + public int[] getFuelSlots() { + return new int[] {19, 28, 37}; + } + + public int[] getCoolantSlots() { + return new int[] {25, 34, 43}; + } + + public static int[] getOutputSlots() { + return new int[] {40}; + } + + public AReactor getReactor(Location l) { + Location reactorL = new Location(l.getWorld(), l.getX(), l.getY() - 3, l.getZ()); + + SlimefunItem item = BlockStorage.check(reactorL.getBlock()); + if (item instanceof AReactor) return (AReactor) item; + + return null; + } + + public BlockMenu getReactorMenu(Location l) { + Location reactorL = new Location(l.getWorld(), l.getX(), l.getY() - 3, l.getZ()); + + SlimefunItem item = BlockStorage.check(reactorL.getBlock()); + if (item instanceof AReactor) return BlockStorage.getInventory(l); + + return null; + } + +} diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/TrashCan.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/TrashCan.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/TrashCan.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/TrashCan.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AnimalGrowthAccelerator.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AnimalGrowthAccelerator.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AnimalGrowthAccelerator.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AnimalGrowthAccelerator.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutoAnvil.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutoAnvil.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutoAnvil.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutoAnvil.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutoBreeder.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutoBreeder.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutoBreeder.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutoBreeder.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutoDisenchanter.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutoDisenchanter.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutoDisenchanter.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutoDisenchanter.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutoDrier.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutoDrier.java similarity index 97% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutoDrier.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutoDrier.java index aca20b44f..b59fa7b58 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutoDrier.java +++ b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutoDrier.java @@ -1,151 +1,151 @@ -package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric; - -import java.util.ArrayList; -import java.util.List; - -import org.bukkit.Material; -import org.bukkit.Tag; -import org.bukkit.block.Block; -import org.bukkit.inventory.ItemStack; - -import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.InvUtils; -import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem; -import me.mrCookieSlime.Slimefun.Lists.RecipeType; -import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; -import me.mrCookieSlime.Slimefun.Objects.Category; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineRecipe; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.RecipeDisplayItem; -import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; -import me.mrCookieSlime.Slimefun.api.BlockStorage; -import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock; -import me.mrCookieSlime.Slimefun.utils.MachineHelper; - -public class AutoDrier extends AContainer implements RecipeDisplayItem { - - private final List recipeList = new ArrayList<>(); - - public AutoDrier(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe) { - super(category, item, id, recipeType, recipe); - - recipeList.add(new ItemStack(Material.ROTTEN_FLESH)); - recipeList.add(new ItemStack(Material.LEATHER)); - - recipeList.add(new ItemStack(Material.WET_SPONGE)); - recipeList.add(new ItemStack(Material.SPONGE)); - - recipeList.add(new ItemStack(Material.KELP)); - recipeList.add(new ItemStack(Material.DRIED_KELP)); - - recipeList.add(new ItemStack(Material.COOKED_BEEF)); - recipeList.add(SlimefunItems.BEEF_JERKY); - - recipeList.add(new ItemStack(Material.POTION)); - recipeList.add(new ItemStack(Material.GLASS_BOTTLE)); - - recipeList.add(new ItemStack(Material.OAK_SAPLING)); - recipeList.add(new ItemStack(Material.STICK, 2)); - - recipeList.add(new ItemStack(Material.OAK_LEAVES)); - recipeList.add(new ItemStack(Material.STICK)); - - recipeList.add(new ItemStack(Material.WATER_BUCKET)); - recipeList.add(new ItemStack(Material.BUCKET)); - } - - @Override - public String getInventoryTitle() { - return "&eAuto Drier"; - } - - @Override - public ItemStack getProgressBar() { - return new ItemStack(Material.FLINT_AND_STEEL); - } - - @Override - public List getDisplayRecipes() { - return recipeList; - } - - @Override - protected void tick(Block b) { - if (isProcessing(b)) { - int timeleft = progress.get(b); - if (timeleft > 0) { - MachineHelper.updateProgressbar(BlockStorage.getInventory(b), 22, timeleft, processing.get(b).getTicks(), getProgressBar()); - - if (ChargableBlock.isChargable(b)) { - if (ChargableBlock.getCharge(b) < getEnergyConsumption()) return; - ChargableBlock.addCharge(b, -getEnergyConsumption()); - progress.put(b, timeleft - 1); - } - else progress.put(b, timeleft - 1); - } - else { - BlockStorage.getInventory(b).replaceExistingItem(22, new CustomItem(new ItemStack(Material.BLACK_STAINED_GLASS_PANE), " ")); - pushItems(b, processing.get(b).getOutput()); - - progress.remove(b); - processing.remove(b); - } - } - else { - MachineRecipe r = null; - int inputSlot = -1; - - for (int slot: getInputSlots()) { - ItemStack item = BlockStorage.getInventory(b).getItemInSlot(slot); - if (item != null) { - Material mat = item.getType(); - ItemStack output = null; - - for (int i = 0; i < recipeList.size(); i += 2) { - if (SlimefunManager.isItemSimiliar(item, recipeList.get(i), true)) { - output = recipeList.get(i + 1); - } - } - - if (Tag.SAPLINGS.isTagged(mat)) { - output = new ItemStack(Material.STICK, 2); - } - else if (Tag.LEAVES.isTagged(mat)) { - output = new ItemStack(Material.STICK, 1); - } - else if (mat == Material.SPLASH_POTION || mat == Material.LINGERING_POTION) { - output = new ItemStack(Material.GLASS_BOTTLE); - } - - if (output != null) { - r = new MachineRecipe(6, new ItemStack[] {item}, new ItemStack[] {output.clone()}); - inputSlot = slot; - break; - } - } - } - - if (r != null) { - if (inputSlot == -1) return; - if (!fits(b, r.getOutput())) return; - BlockStorage.getInventory(b).replaceExistingItem(inputSlot, InvUtils.decreaseItem(BlockStorage.getInventory(b).getItemInSlot(inputSlot), 1)); - processing.put(b, r); - progress.put(b, r.getTicks()); - } - } - } - - @Override - public int getEnergyConsumption() { - return 5; - } - - @Override - public int getSpeed() { - return 1; - } - - @Override - public String getMachineIdentifier() { - return "AUTO_DRIER"; - } -} +package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric; + +import java.util.ArrayList; +import java.util.List; + +import org.bukkit.Material; +import org.bukkit.Tag; +import org.bukkit.block.Block; +import org.bukkit.inventory.ItemStack; + +import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.InvUtils; +import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem; +import me.mrCookieSlime.Slimefun.Lists.RecipeType; +import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; +import me.mrCookieSlime.Slimefun.Objects.Category; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineRecipe; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.RecipeDisplayItem; +import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; +import me.mrCookieSlime.Slimefun.api.BlockStorage; +import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock; +import me.mrCookieSlime.Slimefun.utils.MachineHelper; + +public class AutoDrier extends AContainer implements RecipeDisplayItem { + + private final List recipeList = new ArrayList<>(); + + public AutoDrier(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe) { + super(category, item, id, recipeType, recipe); + + recipeList.add(new ItemStack(Material.ROTTEN_FLESH)); + recipeList.add(new ItemStack(Material.LEATHER)); + + recipeList.add(new ItemStack(Material.WET_SPONGE)); + recipeList.add(new ItemStack(Material.SPONGE)); + + recipeList.add(new ItemStack(Material.KELP)); + recipeList.add(new ItemStack(Material.DRIED_KELP)); + + recipeList.add(new ItemStack(Material.COOKED_BEEF)); + recipeList.add(SlimefunItems.BEEF_JERKY); + + recipeList.add(new ItemStack(Material.POTION)); + recipeList.add(new ItemStack(Material.GLASS_BOTTLE)); + + recipeList.add(new ItemStack(Material.OAK_SAPLING)); + recipeList.add(new ItemStack(Material.STICK, 2)); + + recipeList.add(new ItemStack(Material.OAK_LEAVES)); + recipeList.add(new ItemStack(Material.STICK)); + + recipeList.add(new ItemStack(Material.WATER_BUCKET)); + recipeList.add(new ItemStack(Material.BUCKET)); + } + + @Override + public String getInventoryTitle() { + return "&eAuto Drier"; + } + + @Override + public ItemStack getProgressBar() { + return new ItemStack(Material.FLINT_AND_STEEL); + } + + @Override + public List getDisplayRecipes() { + return recipeList; + } + + @Override + protected void tick(Block b) { + if (isProcessing(b)) { + int timeleft = progress.get(b); + if (timeleft > 0) { + MachineHelper.updateProgressbar(BlockStorage.getInventory(b), 22, timeleft, processing.get(b).getTicks(), getProgressBar()); + + if (ChargableBlock.isChargable(b)) { + if (ChargableBlock.getCharge(b) < getEnergyConsumption()) return; + ChargableBlock.addCharge(b, -getEnergyConsumption()); + progress.put(b, timeleft - 1); + } + else progress.put(b, timeleft - 1); + } + else { + BlockStorage.getInventory(b).replaceExistingItem(22, new CustomItem(new ItemStack(Material.BLACK_STAINED_GLASS_PANE), " ")); + pushItems(b, processing.get(b).getOutput()); + + progress.remove(b); + processing.remove(b); + } + } + else { + MachineRecipe r = null; + int inputSlot = -1; + + for (int slot: getInputSlots()) { + ItemStack item = BlockStorage.getInventory(b).getItemInSlot(slot); + if (item != null) { + Material mat = item.getType(); + ItemStack output = null; + + for (int i = 0; i < recipeList.size(); i += 2) { + if (SlimefunManager.isItemSimiliar(item, recipeList.get(i), true)) { + output = recipeList.get(i + 1); + } + } + + if (Tag.SAPLINGS.isTagged(mat)) { + output = new ItemStack(Material.STICK, 2); + } + else if (Tag.LEAVES.isTagged(mat)) { + output = new ItemStack(Material.STICK, 1); + } + else if (mat == Material.SPLASH_POTION || mat == Material.LINGERING_POTION) { + output = new ItemStack(Material.GLASS_BOTTLE); + } + + if (output != null) { + r = new MachineRecipe(6, new ItemStack[] {item}, new ItemStack[] {output.clone()}); + inputSlot = slot; + break; + } + } + } + + if (r != null) { + if (inputSlot == -1) return; + if (!fits(b, r.getOutput())) return; + BlockStorage.getInventory(b).replaceExistingItem(inputSlot, InvUtils.decreaseItem(BlockStorage.getInventory(b).getItemInSlot(inputSlot), 1)); + processing.put(b, r); + progress.put(b, r.getTicks()); + } + } + } + + @Override + public int getEnergyConsumption() { + return 5; + } + + @Override + public int getSpeed() { + return 1; + } + + @Override + public String getMachineIdentifier() { + return "AUTO_DRIER"; + } +} diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutoEnchanter.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutoEnchanter.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutoEnchanter.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutoEnchanter.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutomatedCraftingChamber.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutomatedCraftingChamber.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutomatedCraftingChamber.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutomatedCraftingChamber.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/CarbonPress.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/CarbonPress.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/CarbonPress.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/CarbonPress.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ChargingBench.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ChargingBench.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ChargingBench.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ChargingBench.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/CropGrowthAccelerator.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/CropGrowthAccelerator.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/CropGrowthAccelerator.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/CropGrowthAccelerator.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricDustWasher.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricDustWasher.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricDustWasher.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricDustWasher.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricFurnace.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricFurnace.java similarity index 96% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricFurnace.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricFurnace.java index 8130eb048..f35558e3b 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricFurnace.java +++ b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricFurnace.java @@ -1,53 +1,53 @@ -package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric; - -import java.util.Iterator; - -import org.bukkit.Bukkit; -import org.bukkit.Material; -import org.bukkit.Tag; -import org.bukkit.inventory.FurnaceRecipe; -import org.bukkit.inventory.ItemStack; -import org.bukkit.inventory.Recipe; - -import me.mrCookieSlime.Slimefun.Lists.RecipeType; -import me.mrCookieSlime.Slimefun.Objects.Category; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer; - -public abstract class ElectricFurnace extends AContainer { - - public ElectricFurnace(Category category, ItemStack item, String name, RecipeType recipeType, ItemStack[] recipe) { - super(category, item, name, recipeType, recipe); - } - - @Override - public void registerDefaultRecipes() { - Iterator iterator = Bukkit.recipeIterator(); - while (iterator.hasNext()) { - Recipe r = iterator.next(); - if (r instanceof FurnaceRecipe) { - registerRecipe(4, new ItemStack[] {((FurnaceRecipe) r).getInput()}, new ItemStack[] {r.getResult()}); - } - } - - //Bukkit Recipe Iterator does not seem to include _LOG's of any type for charcoal... Manually adding them all. - for (Material mat:Tag.LOGS.getValues()) { - registerRecipe(4, new ItemStack[] {new ItemStack(mat,1)}, new ItemStack[] {new ItemStack(Material.CHARCOAL, 1)}); - } - } - - @Override - public String getMachineIdentifier() { - return "ELECTRIC_FURNACE"; - } - - @Override - public ItemStack getProgressBar() { - return new ItemStack(Material.FLINT_AND_STEEL); - } - - @Override - public String getInventoryTitle() { - return "&bElectric Furnace"; - } - -} +package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric; + +import java.util.Iterator; + +import org.bukkit.Bukkit; +import org.bukkit.Material; +import org.bukkit.Tag; +import org.bukkit.inventory.FurnaceRecipe; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.Recipe; + +import me.mrCookieSlime.Slimefun.Lists.RecipeType; +import me.mrCookieSlime.Slimefun.Objects.Category; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer; + +public abstract class ElectricFurnace extends AContainer { + + public ElectricFurnace(Category category, ItemStack item, String name, RecipeType recipeType, ItemStack[] recipe) { + super(category, item, name, recipeType, recipe); + } + + @Override + public void registerDefaultRecipes() { + Iterator iterator = Bukkit.recipeIterator(); + while (iterator.hasNext()) { + Recipe r = iterator.next(); + if (r instanceof FurnaceRecipe) { + registerRecipe(4, new ItemStack[] {((FurnaceRecipe) r).getInput()}, new ItemStack[] {r.getResult()}); + } + } + + //Bukkit Recipe Iterator does not seem to include _LOG's of any type for charcoal... Manually adding them all. + for (Material mat:Tag.LOGS.getValues()) { + registerRecipe(4, new ItemStack[] {new ItemStack(mat,1)}, new ItemStack[] {new ItemStack(Material.CHARCOAL, 1)}); + } + } + + @Override + public String getMachineIdentifier() { + return "ELECTRIC_FURNACE"; + } + + @Override + public ItemStack getProgressBar() { + return new ItemStack(Material.FLINT_AND_STEEL); + } + + @Override + public String getInventoryTitle() { + return "&bElectric Furnace"; + } + +} diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricGoldPan.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricGoldPan.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricGoldPan.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricGoldPan.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricIngotFactory.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricIngotFactory.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricIngotFactory.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricIngotFactory.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricIngotPulverizer.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricIngotPulverizer.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricIngotPulverizer.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricIngotPulverizer.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricOreGrinder.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricOreGrinder.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricOreGrinder.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricOreGrinder.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricSmeltery.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricSmeltery.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricSmeltery.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricSmeltery.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectrifiedCrucible.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectrifiedCrucible.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectrifiedCrucible.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectrifiedCrucible.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElevatorPlate.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElevatorPlate.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElevatorPlate.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElevatorPlate.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/EnergyRegulator.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/EnergyRegulator.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/EnergyRegulator.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/EnergyRegulator.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/FluidPump.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/FluidPump.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/FluidPump.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/FluidPump.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/FoodComposter.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/FoodComposter.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/FoodComposter.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/FoodComposter.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/FoodFabricator.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/FoodFabricator.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/FoodFabricator.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/FoodFabricator.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/Freezer.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/Freezer.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/Freezer.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/Freezer.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/HeatedPressureChamber.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/HeatedPressureChamber.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/HeatedPressureChamber.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/HeatedPressureChamber.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/Refinery.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/Refinery.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/Refinery.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/Refinery.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/WitherAssembler.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/WitherAssembler.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/WitherAssembler.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/WitherAssembler.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/XPCollector.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/XPCollector.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/XPCollector.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/XPCollector.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/generators/BioGenerator.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/generators/BioGenerator.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/generators/BioGenerator.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/generators/BioGenerator.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/generators/CoalGenerator.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/generators/CoalGenerator.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/generators/CoalGenerator.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/generators/CoalGenerator.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/generators/CombustionGenerator.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/generators/CombustionGenerator.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/generators/CombustionGenerator.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/generators/CombustionGenerator.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/generators/LavaGenerator.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/generators/LavaGenerator.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/generators/LavaGenerator.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/generators/LavaGenerator.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/geo/GEOMiner.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/geo/GEOMiner.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/geo/GEOMiner.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/geo/GEOMiner.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/geo/GEOScannerBlock.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/geo/GEOScannerBlock.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/geo/GEOScannerBlock.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/geo/GEOScannerBlock.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/geo/NetherDrill.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/geo/NetherDrill.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/geo/NetherDrill.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/geo/NetherDrill.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/geo/OilPump.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/geo/OilPump.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/geo/OilPump.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/geo/OilPump.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/gps/GPSTransmitter.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/gps/GPSTransmitter.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/gps/GPSTransmitter.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/gps/GPSTransmitter.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/ArmorForge.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/ArmorForge.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/ArmorForge.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/ArmorForge.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/AutomatedPanningMachine.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/AutomatedPanningMachine.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/AutomatedPanningMachine.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/AutomatedPanningMachine.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/Compressor.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/Compressor.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/Compressor.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/Compressor.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/EnhancedCraftingTable.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/EnhancedCraftingTable.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/EnhancedCraftingTable.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/EnhancedCraftingTable.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/GrindStone.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/GrindStone.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/GrindStone.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/GrindStone.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/Juicer.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/Juicer.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/Juicer.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/Juicer.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/MagicWorkbench.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/MagicWorkbench.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/MagicWorkbench.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/MagicWorkbench.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/MultiBlockMachine.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/MultiBlockMachine.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/MultiBlockMachine.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/MultiBlockMachine.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/OreCrusher.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/OreCrusher.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/OreCrusher.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/OreCrusher.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/OreWasher.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/OreWasher.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/OreWasher.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/OreWasher.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/PressureChamber.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/PressureChamber.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/PressureChamber.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/PressureChamber.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/Smeltery.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/Smeltery.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/Smeltery.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/Smeltery.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/TableSaw.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/TableSaw.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/TableSaw.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/TableSaw.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/handlers/AutonomousMachineHandler.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/handlers/AutonomousMachineHandler.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/handlers/AutonomousMachineHandler.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/handlers/AutonomousMachineHandler.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/handlers/BlockBreakHandler.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/handlers/BlockBreakHandler.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/handlers/BlockBreakHandler.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/handlers/BlockBreakHandler.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/handlers/BlockPlaceHandler.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/handlers/BlockPlaceHandler.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/handlers/BlockPlaceHandler.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/handlers/BlockPlaceHandler.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/handlers/BlockTicker.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/handlers/BlockTicker.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/handlers/BlockTicker.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/handlers/BlockTicker.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/handlers/BowShootHandler.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/handlers/BowShootHandler.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/handlers/BowShootHandler.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/handlers/BowShootHandler.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/handlers/EntityKillHandler.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/handlers/EntityKillHandler.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/handlers/EntityKillHandler.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/handlers/EntityKillHandler.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/handlers/ItemConsumptionHandler.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/handlers/ItemConsumptionHandler.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/handlers/ItemConsumptionHandler.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/handlers/ItemConsumptionHandler.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/handlers/ItemDropHandler.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/handlers/ItemDropHandler.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/handlers/ItemDropHandler.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/handlers/ItemDropHandler.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/handlers/ItemHandler.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/handlers/ItemHandler.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/handlers/ItemHandler.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/handlers/ItemHandler.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/handlers/ItemInteractionHandler.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/handlers/ItemInteractionHandler.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/handlers/ItemInteractionHandler.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/handlers/ItemInteractionHandler.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/handlers/MultiBlockInteractionHandler.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/handlers/MultiBlockInteractionHandler.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/handlers/MultiBlockInteractionHandler.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/handlers/MultiBlockInteractionHandler.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/tasks/ArmorTask.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/tasks/ArmorTask.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/tasks/ArmorTask.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/tasks/ArmorTask.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/tasks/JetBootsTask.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/tasks/JetBootsTask.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/tasks/JetBootsTask.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/tasks/JetBootsTask.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/tasks/JetpackTask.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/tasks/JetpackTask.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/tasks/JetpackTask.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/tasks/JetpackTask.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/tasks/MagnetTask.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/tasks/MagnetTask.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/tasks/MagnetTask.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/tasks/MagnetTask.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/tasks/ParachuteTask.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/tasks/ParachuteTask.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/tasks/ParachuteTask.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/tasks/ParachuteTask.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/tasks/RainbowTicker.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/tasks/RainbowTicker.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/tasks/RainbowTicker.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/tasks/RainbowTicker.java diff --git a/src/me/mrCookieSlime/Slimefun/Objects/tasks/SlimefunTask.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/tasks/SlimefunTask.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Objects/tasks/SlimefunTask.java rename to src/main/java/me/mrCookieSlime/Slimefun/Objects/tasks/SlimefunTask.java diff --git a/src/me/mrCookieSlime/Slimefun/Setup/CSCoreLibLoader.java b/src/main/java/me/mrCookieSlime/Slimefun/Setup/CSCoreLibLoader.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Setup/CSCoreLibLoader.java rename to src/main/java/me/mrCookieSlime/Slimefun/Setup/CSCoreLibLoader.java diff --git a/src/me/mrCookieSlime/Slimefun/Setup/Files.java b/src/main/java/me/mrCookieSlime/Slimefun/Setup/Files.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Setup/Files.java rename to src/main/java/me/mrCookieSlime/Slimefun/Setup/Files.java diff --git a/src/me/mrCookieSlime/Slimefun/Setup/MiscSetup.java b/src/main/java/me/mrCookieSlime/Slimefun/Setup/MiscSetup.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Setup/MiscSetup.java rename to src/main/java/me/mrCookieSlime/Slimefun/Setup/MiscSetup.java diff --git a/src/me/mrCookieSlime/Slimefun/Setup/PostSlimefunLoadingHandler.java b/src/main/java/me/mrCookieSlime/Slimefun/Setup/PostSlimefunLoadingHandler.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Setup/PostSlimefunLoadingHandler.java rename to src/main/java/me/mrCookieSlime/Slimefun/Setup/PostSlimefunLoadingHandler.java diff --git a/src/me/mrCookieSlime/Slimefun/Setup/ResearchSetup.java b/src/main/java/me/mrCookieSlime/Slimefun/Setup/ResearchSetup.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Setup/ResearchSetup.java rename to src/main/java/me/mrCookieSlime/Slimefun/Setup/ResearchSetup.java diff --git a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunLocalization.java b/src/main/java/me/mrCookieSlime/Slimefun/Setup/SlimefunLocalization.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Setup/SlimefunLocalization.java rename to src/main/java/me/mrCookieSlime/Slimefun/Setup/SlimefunLocalization.java diff --git a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunManager.java b/src/main/java/me/mrCookieSlime/Slimefun/Setup/SlimefunManager.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Setup/SlimefunManager.java rename to src/main/java/me/mrCookieSlime/Slimefun/Setup/SlimefunManager.java diff --git a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunMetrics.java b/src/main/java/me/mrCookieSlime/Slimefun/Setup/SlimefunMetrics.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/Setup/SlimefunMetrics.java rename to src/main/java/me/mrCookieSlime/Slimefun/Setup/SlimefunMetrics.java diff --git a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java b/src/main/java/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java similarity index 98% rename from src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java rename to src/main/java/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java index 74a6ab5e1..894cdf78e 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java +++ b/src/main/java/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java @@ -1,3214 +1,3214 @@ -package me.mrCookieSlime.Slimefun.Setup; - -import java.util.ArrayList; -import java.util.List; -import java.util.Random; -import java.util.UUID; -import java.util.logging.Level; -import java.util.stream.Collectors; -import java.util.stream.Stream; - -import org.bukkit.Bukkit; -import org.bukkit.ChatColor; -import org.bukkit.Effect; -import org.bukkit.GameMode; -import org.bukkit.Location; -import org.bukkit.Material; -import org.bukkit.Sound; -import org.bukkit.block.Block; -import org.bukkit.block.BlockFace; -import org.bukkit.block.Chest; -import org.bukkit.block.CreatureSpawner; -import org.bukkit.entity.Entity; -import org.bukkit.entity.EntityType; -import org.bukkit.entity.LivingEntity; -import org.bukkit.entity.Player; -import org.bukkit.event.entity.EntityDamageByEntityEvent; -import org.bukkit.event.player.PlayerItemConsumeEvent; -import org.bukkit.inventory.Inventory; -import org.bukkit.inventory.ItemStack; -import org.bukkit.potion.PotionEffect; -import org.bukkit.potion.PotionEffectType; -import org.bukkit.util.Vector; - -import io.github.thebusybiscuit.cscorelib2.inventory.ItemUtils; -import io.github.thebusybiscuit.cscorelib2.math.DoubleHandler; -import me.mrCookieSlime.CSCoreLibPlugin.CSCoreLib; -import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config; -import me.mrCookieSlime.CSCoreLibPlugin.events.ItemUseEvent; -import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.InvUtils; -import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem; -import me.mrCookieSlime.CSCoreLibPlugin.general.Particles.FireworkShow; -import me.mrCookieSlime.CSCoreLibPlugin.general.World.CustomSkull; -import me.mrCookieSlime.Slimefun.SlimefunPlugin; -import me.mrCookieSlime.Slimefun.GPS.GPSNetwork; -import me.mrCookieSlime.Slimefun.Lists.Categories; -import me.mrCookieSlime.Slimefun.Lists.RecipeType; -import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; -import me.mrCookieSlime.Slimefun.Objects.MultiBlock; -import me.mrCookieSlime.Slimefun.Objects.SlimefunBlockHandler; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.Alloy; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.EnhancedFurnace; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.ExcludedBlock; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.ExcludedSoulboundTool; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.JetBoots; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.Jetpack; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.Juice; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.MultiTool; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.ReplacingAlloy; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.ReplacingItem; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunArmorPiece; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunBackpack; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunBow; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunMachine; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SolarHelmet; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SoulboundBackpack; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SoulboundItem; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.Talisman; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.VanillaItem; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AReactor; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineFuel; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.Teleporter; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.cargo.AdvancedCargoOutputNode; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.cargo.CargoInputNode; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.cargo.CargoManagerBlock; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.cargo.CargoOutputNode; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.DietCookie; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.EnderBackpack; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.ExplosivePickaxe; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.ExplosiveShovel; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.GoldPan; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.GrapplingHook; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.HerculesPickaxe; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.HunterTalisman; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.InfernalBonemeal; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.KnowledgeFlask; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.KnowledgeTome; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.LumberAxe; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.MagicEyeOfEnder; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.MagicSugar; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.MonsterJerky; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.PickaxeOfContainment; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.PickaxeOfTheSeeker; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.PickaxeOfVeinMining; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.PortableCrafter; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.PortableDustbin; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.PortableGEOScanner; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.SeismicAxe; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.SmeltersPickaxe; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.SoulboundRune; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.StormStaff; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.SwordOfBeheading; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.TelepositionScroll; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.WindStaff; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.AncientPedestal; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.BlockPlacer; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.Composter; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.Crucible; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.HologramProjector; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.InfusedHopper; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.ReactorAccessPort; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.TrashCan; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.AnimalGrowthAccelerator; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.AutoAnvil; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.AutoBreeder; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.AutoDisenchanter; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.AutoDrier; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.AutoEnchanter; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.AutomatedCraftingChamber; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.CarbonPress; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.ChargingBench; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.CropGrowthAccelerator; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.ElectricDustWasher; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.ElectricFurnace; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.ElectricGoldPan; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.ElectricIngotFactory; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.ElectricIngotPulverizer; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.ElectricOreGrinder; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.ElectricSmeltery; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.ElectrifiedCrucible; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.ElevatorPlate; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.EnergyRegulator; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.FluidPump; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.FoodComposter; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.FoodFabricator; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.Freezer; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.HeatedPressureChamber; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.Refinery; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.WitherAssembler; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.XPCollector; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.generators.BioGenerator; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.generators.CoalGenerator; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.generators.CombustionGenerator; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.generators.LavaGenerator; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.geo.GEOMiner; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.geo.GEOScannerBlock; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.geo.NetherDrill; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.geo.OilPump; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.gps.GPSTransmitter; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks.ArmorForge; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks.AutomatedPanningMachine; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks.Compressor; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks.EnhancedCraftingTable; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks.GrindStone; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks.Juicer; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks.MagicWorkbench; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks.OreCrusher; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks.OreWasher; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks.PressureChamber; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks.Smeltery; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks.TableSaw; -import me.mrCookieSlime.Slimefun.Objects.handlers.BlockPlaceHandler; -import me.mrCookieSlime.Slimefun.Objects.handlers.BowShootHandler; -import me.mrCookieSlime.Slimefun.Objects.handlers.ItemConsumptionHandler; -import me.mrCookieSlime.Slimefun.Objects.handlers.ItemInteractionHandler; -import me.mrCookieSlime.Slimefun.Objects.handlers.MultiBlockInteractionHandler; -import me.mrCookieSlime.Slimefun.Objects.tasks.RainbowTicker; -import me.mrCookieSlime.Slimefun.androids.AndroidType; -import me.mrCookieSlime.Slimefun.androids.ProgrammableAndroid; -import me.mrCookieSlime.Slimefun.api.BlockStorage; -import me.mrCookieSlime.Slimefun.api.Slimefun; -import me.mrCookieSlime.Slimefun.api.SlimefunItemStack; -import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock; -import me.mrCookieSlime.Slimefun.api.energy.EnergyTicker; -import me.mrCookieSlime.Slimefun.api.item_transport.CargoNet; -import me.mrCookieSlime.Slimefun.holograms.ReactorHologram; - -public final class SlimefunSetup { - - private SlimefunSetup() {} - - public static void setupItems() { - Random random = new Random(); - - new SlimefunItem(Categories.WEAPONS, (SlimefunItemStack) SlimefunItems.GRANDMAS_WALKING_STICK, RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {null, new ItemStack(Material.OAK_LOG), null, null, new ItemStack(Material.OAK_LOG), null, null, new ItemStack(Material.OAK_LOG), null}) - .register(true); - - new SlimefunItem(Categories.WEAPONS, (SlimefunItemStack) SlimefunItems.GRANDPAS_WALKING_STICK, RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {new ItemStack(Material.LEATHER), new ItemStack(Material.OAK_LOG), new ItemStack(Material.LEATHER), null, new ItemStack(Material.OAK_LOG), null, null, new ItemStack(Material.OAK_LOG), null}) - .register(true); - - new PortableCrafter(Categories.PORTABLE, (SlimefunItemStack) SlimefunItems.PORTABLE_CRAFTER, RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {new ItemStack(Material.BOOK), new ItemStack(Material.CRAFTING_TABLE), null, null, null, null, null, null, null}) - .register(true); - - new SlimefunItem(Categories.FOOD, (SlimefunItemStack) SlimefunItems.FORTUNE_COOKIE, RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {new ItemStack(Material.COOKIE), new ItemStack(Material.PAPER), null, null, null, null, null, null, null}) - .register(true); - - new DietCookie(Categories.FOOD, (SlimefunItemStack) SlimefunItems.DIET_COOKIE, RecipeType.MAGIC_WORKBENCH, - new ItemStack[] {new ItemStack(Material.COOKIE), SlimefunItems.ELYTRA_SCALE, null, null, null, null, null, null, null}) - .register(true); - - new SlimefunItem(Categories.MACHINES_1, (SlimefunItemStack) SlimefunItems.OUTPUT_CHEST, RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {SlimefunItems.LEAD_INGOT, new ItemStack(Material.HOPPER), SlimefunItems.LEAD_INGOT, SlimefunItems.LEAD_INGOT, new ItemStack(Material.CHEST), SlimefunItems.LEAD_INGOT, null, SlimefunItems.LEAD_INGOT, null}) - .register(true); - - new EnhancedCraftingTable().register(); - - new PortableDustbin(Categories.PORTABLE, (SlimefunItemStack) SlimefunItems.PORTABLE_DUSTBIN, RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {new ItemStack(Material.IRON_INGOT), new ItemStack(Material.IRON_INGOT), new ItemStack(Material.IRON_INGOT), new ItemStack(Material.IRON_INGOT), null, new ItemStack(Material.IRON_INGOT), new ItemStack(Material.IRON_INGOT), new ItemStack(Material.IRON_INGOT), new ItemStack(Material.IRON_INGOT)}) - .register(true); - - new SlimefunItem(Categories.FOOD, (SlimefunItemStack) SlimefunItems.BEEF_JERKY, RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {SlimefunItems.SALT, new ItemStack(Material.COOKED_BEEF), null, null, null, null, null, null, null}, new String[] {"Saturation"}, new Integer[] {20}) - .register(true); - - new GrindStone().register(); - new ArmorForge().register(); - new OreCrusher().register(); - new Compressor().register(); - - new SlimefunItem(Categories.LUMPS_AND_MAGIC, (SlimefunItemStack) SlimefunItems.MAGIC_LUMP_1, RecipeType.GRIND_STONE, - new ItemStack[] {new ItemStack(Material.NETHER_WART), null, null, null, null, null, null, null, null}, new CustomItem(SlimefunItems.MAGIC_LUMP_1, 2)) - .register(true); - - new SlimefunItem(Categories.LUMPS_AND_MAGIC, (SlimefunItemStack) SlimefunItems.MAGIC_LUMP_2, RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {SlimefunItems.MAGIC_LUMP_1, SlimefunItems.MAGIC_LUMP_1, null, SlimefunItems.MAGIC_LUMP_1, SlimefunItems.MAGIC_LUMP_1, null, null, null, null}) - .register(true); - - new SlimefunItem(Categories.LUMPS_AND_MAGIC, (SlimefunItemStack) SlimefunItems.MAGIC_LUMP_3, RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {SlimefunItems.MAGIC_LUMP_2, SlimefunItems.MAGIC_LUMP_2, null, SlimefunItems.MAGIC_LUMP_2, SlimefunItems.MAGIC_LUMP_2, null, null, null, null}) - .register(true); - - new SlimefunItem(Categories.LUMPS_AND_MAGIC, (SlimefunItemStack) SlimefunItems.ENDER_LUMP_1, RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {null, null, null, null, new ItemStack(Material.ENDER_EYE), null, null, null, null}, new CustomItem(SlimefunItems.ENDER_LUMP_1, 2)) - .register(true); - - new SlimefunItem(Categories.LUMPS_AND_MAGIC, (SlimefunItemStack) SlimefunItems.ENDER_LUMP_2, RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {SlimefunItems.ENDER_LUMP_1, SlimefunItems.ENDER_LUMP_1, null, SlimefunItems.ENDER_LUMP_1, SlimefunItems.ENDER_LUMP_1, null, null, null, null}) - .register(true); - - new SlimefunItem(Categories.LUMPS_AND_MAGIC, (SlimefunItemStack) SlimefunItems.ENDER_LUMP_3, RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {SlimefunItems.ENDER_LUMP_2, SlimefunItems.ENDER_LUMP_2, null, SlimefunItems.ENDER_LUMP_2, SlimefunItems.ENDER_LUMP_2, null, null, null, null}) - .register(true); - - new EnderBackpack(Categories.MAGIC, (SlimefunItemStack) SlimefunItems.ENDER_BACKPACK, RecipeType.MAGIC_WORKBENCH, - new ItemStack[] {SlimefunItems.ENDER_LUMP_2, new ItemStack(Material.LEATHER), SlimefunItems.ENDER_LUMP_2, new ItemStack(Material.LEATHER), new ItemStack(Material.CHEST), new ItemStack(Material.LEATHER), SlimefunItems.ENDER_LUMP_2, new ItemStack(Material.LEATHER), SlimefunItems.ENDER_LUMP_2}) - .register(true); - - new SlimefunItem(Categories.MAGIC_ARMOR, (SlimefunItemStack) SlimefunItems.ENDER_HELMET, RecipeType.ARMOR_FORGE, - new ItemStack[] {SlimefunItems.ENDER_LUMP_1, new ItemStack(Material.ENDER_EYE), SlimefunItems.ENDER_LUMP_1, new ItemStack(Material.OBSIDIAN), null, new ItemStack(Material.OBSIDIAN), null, null, null}) - .register(true); - - new SlimefunItem(Categories.MAGIC_ARMOR, (SlimefunItemStack) SlimefunItems.ENDER_CHESTPLATE, RecipeType.ARMOR_FORGE, - new ItemStack[] {SlimefunItems.ENDER_LUMP_1, null, SlimefunItems.ENDER_LUMP_1, new ItemStack(Material.OBSIDIAN), new ItemStack(Material.ENDER_EYE), new ItemStack(Material.OBSIDIAN), new ItemStack(Material.OBSIDIAN), new ItemStack(Material.OBSIDIAN), new ItemStack(Material.OBSIDIAN)}) - .register(true); - - new SlimefunItem(Categories.MAGIC_ARMOR, (SlimefunItemStack) SlimefunItems.ENDER_LEGGINGS, RecipeType.ARMOR_FORGE, - new ItemStack[] {SlimefunItems.ENDER_LUMP_1, new ItemStack(Material.ENDER_EYE), SlimefunItems.ENDER_LUMP_1, new ItemStack(Material.OBSIDIAN), null, new ItemStack(Material.OBSIDIAN), new ItemStack(Material.OBSIDIAN), null, new ItemStack(Material.OBSIDIAN)}) - .register(true); - - new SlimefunItem(Categories.MAGIC_ARMOR, (SlimefunItemStack) SlimefunItems.ENDER_BOOTS, RecipeType.ARMOR_FORGE, - new ItemStack[] {null, null, null, SlimefunItems.ENDER_LUMP_1, null, SlimefunItems.ENDER_LUMP_1, new ItemStack(Material.OBSIDIAN), null, new ItemStack(Material.OBSIDIAN)}) - .register(true); - - new MagicEyeOfEnder(Categories.MAGIC, (SlimefunItemStack) SlimefunItems.MAGIC_EYE_OF_ENDER, RecipeType.MAGIC_WORKBENCH, - new ItemStack[] {SlimefunItems.ENDER_LUMP_2, new ItemStack(Material.ENDER_PEARL), SlimefunItems.ENDER_LUMP_2, new ItemStack(Material.ENDER_PEARL), new ItemStack(Material.ENDER_EYE), new ItemStack(Material.ENDER_PEARL), SlimefunItems.ENDER_LUMP_2, new ItemStack(Material.ENDER_PEARL), SlimefunItems.ENDER_LUMP_2}) - .register(true); - - new MagicSugar(Categories.FOOD, (SlimefunItemStack) SlimefunItems.MAGIC_SUGAR, RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {new ItemStack(Material.SUGAR), new ItemStack(Material.REDSTONE), new ItemStack(Material.GLOWSTONE_DUST), null, null, null, null, null, null}, new String[] {"effects.SPEED"}, new Integer[] {4}) - .register(true); - - new MonsterJerky(Categories.FOOD, (SlimefunItemStack) SlimefunItems.MONSTER_JERKY, RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {SlimefunItems.SALT, new ItemStack(Material.ROTTEN_FLESH), null, null, null, null, null, null, null}) - .register(true); - - new SlimefunItem(Categories.MAGIC_ARMOR, (SlimefunItemStack) SlimefunItems.SLIME_HELMET, RecipeType.ARMOR_FORGE, - new ItemStack[] {new ItemStack(Material.SLIME_BALL), new ItemStack(Material.IRON_INGOT), new ItemStack(Material.SLIME_BALL), new ItemStack(Material.IRON_INGOT), null, new ItemStack(Material.IRON_INGOT), null, null, null}) - .register(true); - - new SlimefunItem(Categories.MAGIC_ARMOR, (SlimefunItemStack) SlimefunItems.SLIME_CHESTPLATE, RecipeType.ARMOR_FORGE, - new ItemStack[] {new ItemStack(Material.SLIME_BALL), null, new ItemStack(Material.SLIME_BALL), new ItemStack(Material.IRON_INGOT), new ItemStack(Material.SLIME_BALL), new ItemStack(Material.IRON_INGOT), new ItemStack(Material.IRON_INGOT), new ItemStack(Material.SLIME_BALL), new ItemStack(Material.IRON_INGOT)}) - .register(true); - - new SlimefunArmorPiece(Categories.MAGIC_ARMOR, (SlimefunItemStack) SlimefunItems.SLIME_LEGGINGS, RecipeType.ARMOR_FORGE, - new ItemStack[] {new ItemStack(Material.SLIME_BALL), new ItemStack(Material.IRON_INGOT), new ItemStack(Material.SLIME_BALL), new ItemStack(Material.IRON_INGOT), null, new ItemStack(Material.IRON_INGOT), new ItemStack(Material.IRON_INGOT), null, new ItemStack(Material.IRON_INGOT)}, - new PotionEffect[] {new PotionEffect(PotionEffectType.SPEED, 300, 2)}) - .register(true); - - new SlimefunArmorPiece(Categories.MAGIC_ARMOR, (SlimefunItemStack) SlimefunItems.SLIME_BOOTS, RecipeType.ARMOR_FORGE, - new ItemStack[] {null, null, null, new ItemStack(Material.SLIME_BALL), null, new ItemStack(Material.SLIME_BALL), new ItemStack(Material.IRON_INGOT), null, new ItemStack(Material.IRON_INGOT)}, - new PotionEffect[] {new PotionEffect(PotionEffectType.JUMP, 300, 5)}) - .register(true); - - new SwordOfBeheading(Categories.WEAPONS, (SlimefunItemStack) SlimefunItems.SWORD_OF_BEHEADING, RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {null, new ItemStack(Material.EMERALD), null, SlimefunItems.MAGIC_LUMP_2, new ItemStack(Material.EMERALD), SlimefunItems.MAGIC_LUMP_2, null, new ItemStack(Material.BLAZE_ROD), null}, new String[] {"chance.PLAYER", "chance.SKELETON", "chance.WITHER_SKELETON", "chance.ZOMBIE", "chance.CREEPER"}, new Integer[] {70, 40, 25, 40, 40}) - .register(true); - - new SlimefunItem(Categories.LUMPS_AND_MAGIC, (SlimefunItemStack) SlimefunItems.MAGICAL_BOOK_COVER, RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {null, SlimefunItems.MAGIC_LUMP_2, null, SlimefunItems.MAGIC_LUMP_2, new ItemStack(Material.BOOK), SlimefunItems.MAGIC_LUMP_2, null, SlimefunItems.MAGIC_LUMP_2, null}) - .register(true); - - new SlimefunItem(Categories.TECH_MISC, (SlimefunItemStack) SlimefunItems.BASIC_CIRCUIT_BOARD, RecipeType.MOB_DROP, - new ItemStack[] {null, null, null, null, new CustomItem(new ItemStack(Material.POPPY), "&a&oIron Golem"), null, null, null, null}) - .register(true); - - new SlimefunItem(Categories.TECH_MISC, (SlimefunItemStack) SlimefunItems.ADVANCED_CIRCUIT_BOARD, RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {new ItemStack(Material.LAPIS_BLOCK), new ItemStack(Material.LAPIS_BLOCK), new ItemStack(Material.LAPIS_BLOCK), new ItemStack(Material.REDSTONE_BLOCK), SlimefunItems.BASIC_CIRCUIT_BOARD, new ItemStack(Material.REDSTONE_BLOCK), new ItemStack(Material.LAPIS_BLOCK), new ItemStack(Material.LAPIS_BLOCK), new ItemStack(Material.LAPIS_BLOCK)}) - .register(true); - - new GoldPan(Categories.TOOLS, (SlimefunItemStack) SlimefunItems.GOLD_PAN, RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {null, null, null, new ItemStack(Material.STONE), new ItemStack(Material.BOWL), new ItemStack(Material.STONE), new ItemStack(Material.STONE), new ItemStack(Material.STONE), new ItemStack(Material.STONE)}, - new String[] {"chance.FLINT", "chance.CLAY", "chance.SIFTED_ORE"}, new Integer[] {40, 25, 35}) - .register(true); - - new SlimefunItem(Categories.MISC, (SlimefunItemStack) SlimefunItems.SIFTED_ORE, RecipeType.GOLD_PAN, - new ItemStack[] {new ItemStack(Material.GRAVEL), null, null, null, null, null, null, null, null}) - .register(true); - - new Smeltery().register(); - - new SlimefunItem(Categories.MACHINES_1, (SlimefunItemStack) SlimefunItems.IGNITION_CHAMBER, RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {SlimefunItems.STEEL_PLATE, SlimefunItems.BASIC_CIRCUIT_BOARD, new ItemStack(Material.FLINT_AND_STEEL), SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.STEEL_PLATE, SlimefunItems.ELECTRIC_MOTOR, null, new ItemStack(Material.HOPPER), null}) - .register(true); - - new PressureChamber().register(); - - new SlimefunItem(Categories.TECH_MISC, (SlimefunItemStack) SlimefunItems.BATTERY, RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {null, new ItemStack(Material.REDSTONE), null, SlimefunItems.ZINC_INGOT, SlimefunItems.SULFATE, SlimefunItems.COPPER_INGOT, SlimefunItems.ZINC_INGOT, SlimefunItems.SULFATE, SlimefunItems.COPPER_INGOT }) - .register(true); - - SlimefunManager.registerArmorSet(new ItemStack(Material.GLOWSTONE), new ItemStack[] {SlimefunItems.GLOWSTONE_HELMET, SlimefunItems.GLOWSTONE_CHESTPLATE, SlimefunItems.GLOWSTONE_LEGGINGS, SlimefunItems.GLOWSTONE_BOOTS}, "GLOWSTONE", - new PotionEffect[][] {new PotionEffect[] {new PotionEffect(PotionEffectType.NIGHT_VISION, 600, 0)}, new PotionEffect[] {new PotionEffect(PotionEffectType.NIGHT_VISION, 600, 0)}, new PotionEffect[] {new PotionEffect(PotionEffectType.NIGHT_VISION, 600, 0)}, new PotionEffect[] {new PotionEffect(PotionEffectType.NIGHT_VISION, 600, 0)}}, true, true); - - SlimefunManager.registerArmorSet(SlimefunItems.DAMASCUS_STEEL_INGOT, new ItemStack[] {SlimefunItems.DAMASCUS_STEEL_HELMET, SlimefunItems.DAMASCUS_STEEL_CHESTPLATE, SlimefunItems.DAMASCUS_STEEL_LEGGINGS, SlimefunItems.DAMASCUS_STEEL_BOOTS}, "DAMASCUS_STEEL", true, false); - - SlimefunManager.registerArmorSet(SlimefunItems.REINFORCED_ALLOY_INGOT, new ItemStack[] {SlimefunItems.REINFORCED_ALLOY_HELMET, SlimefunItems.REINFORCED_ALLOY_CHESTPLATE, SlimefunItems.REINFORCED_ALLOY_LEGGINGS, SlimefunItems.REINFORCED_ALLOY_BOOTS}, "REINFORCED_ALLOY", true, false); - - SlimefunManager.registerArmorSet(new ItemStack(Material.CACTUS), new ItemStack[] {SlimefunItems.CACTUS_HELMET, SlimefunItems.CACTUS_CHESTPLATE, SlimefunItems.CACTUS_LEGGINGS, SlimefunItems.CACTUS_BOOTS}, "CACTUS", true, false); - - new Alloy((SlimefunItemStack) SlimefunItems.REINFORCED_ALLOY_INGOT, - new ItemStack[] {SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.HARDENED_METAL_INGOT, SlimefunItems.CORINTHIAN_BRONZE_INGOT, SlimefunItems.SOLDER_INGOT, SlimefunItems.BILLON_INGOT, SlimefunItems.GOLD_24K, null, null, null}) - .register(true); - - new Alloy((SlimefunItemStack) SlimefunItems.HARDENED_METAL_INGOT, - new ItemStack[] {SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.DURALUMIN_INGOT, SlimefunItems.COMPRESSED_CARBON, SlimefunItems.ALUMINUM_BRONZE_INGOT, null, null, null, null, null}) - .register(true); - - new Alloy((SlimefunItemStack) SlimefunItems.DAMASCUS_STEEL_INGOT, - new ItemStack[] {SlimefunItems.STEEL_INGOT, SlimefunItems.IRON_DUST, SlimefunItems.CARBON, new ItemStack(Material.IRON_INGOT), null, null, null, null, null}) - .register(true); - - new Alloy((SlimefunItemStack) SlimefunItems.STEEL_INGOT, - new ItemStack[] {SlimefunItems.IRON_DUST, SlimefunItems.CARBON, new ItemStack(Material.IRON_INGOT), null, null, null, null, null, null}) - .register(true); - - new Alloy((SlimefunItemStack) SlimefunItems.BRONZE_INGOT, - new ItemStack[] {SlimefunItems.COPPER_DUST, SlimefunItems.TIN_DUST, SlimefunItems.COPPER_INGOT, null, null, null, null, null, null}) - .register(true); - - new Alloy((SlimefunItemStack) SlimefunItems.DURALUMIN_INGOT, - new ItemStack[] {SlimefunItems.ALUMINUM_DUST, SlimefunItems.COPPER_DUST, SlimefunItems.ALUMINUM_INGOT, null, null, null, null, null, null}) - .register(true); - - new Alloy((SlimefunItemStack) SlimefunItems.BILLON_INGOT, - new ItemStack[] {SlimefunItems.SILVER_DUST, SlimefunItems.COPPER_DUST, SlimefunItems.SILVER_INGOT, null, null, null, null, null, null}) - .register(true); - - new Alloy((SlimefunItemStack) SlimefunItems.BRASS_INGOT, - new ItemStack[] {SlimefunItems.COPPER_DUST, SlimefunItems.ZINC_DUST, SlimefunItems.COPPER_INGOT, null, null, null, null, null, null}) - .register(true); - - new Alloy((SlimefunItemStack) SlimefunItems.ALUMINUM_BRASS_INGOT, - new ItemStack[] {SlimefunItems.ALUMINUM_DUST, SlimefunItems.BRASS_INGOT, SlimefunItems.ALUMINUM_INGOT, null, null, null, null, null, null}) - .register(true); - - new Alloy((SlimefunItemStack) SlimefunItems.ALUMINUM_BRONZE_INGOT, - new ItemStack[] {SlimefunItems.ALUMINUM_DUST, SlimefunItems.BRONZE_INGOT, SlimefunItems.ALUMINUM_INGOT, null, null, null, null, null, null}) - .register(true); - - new Alloy((SlimefunItemStack) SlimefunItems.CORINTHIAN_BRONZE_INGOT, - new ItemStack[] {SlimefunItems.SILVER_DUST, SlimefunItems.GOLD_DUST, SlimefunItems.COPPER_DUST, SlimefunItems.BRONZE_INGOT, null, null, null, null, null}) - .register(true); - - new Alloy((SlimefunItemStack) SlimefunItems.SOLDER_INGOT, - new ItemStack[] {SlimefunItems.LEAD_DUST, SlimefunItems.TIN_DUST, SlimefunItems.LEAD_INGOT, null, null, null, null, null, null}) - .register(true); - - new ReplacingAlloy(SlimefunItems.SYNTHETIC_SAPPHIRE, "SYNTHETIC_SAPPHIRE", - new ItemStack[] {SlimefunItems.ALUMINUM_DUST, new ItemStack(Material.GLASS), new ItemStack(Material.GLASS_PANE), SlimefunItems.ALUMINUM_INGOT, new ItemStack(Material.LAPIS_LAZULI), null, null, null, null}) - .register(true); - - new ReplacingItem(Categories.RESOURCES, SlimefunItems.SYNTHETIC_DIAMOND, "SYNTHETIC_DIAMOND", RecipeType.PRESSURE_CHAMBER, - new ItemStack[] {SlimefunItems.CARBON_CHUNK, null, null, null, null, null, null, null, null}) - .register(true); - - new Alloy((SlimefunItemStack) SlimefunItems.RAW_CARBONADO, - new ItemStack[] {SlimefunItems.SYNTHETIC_DIAMOND, SlimefunItems.CARBON_CHUNK, new ItemStack(Material.GLASS_PANE), null, null, null, null, null, null}) - .register(true); - - new Alloy((SlimefunItemStack) SlimefunItems.NICKEL_INGOT, - new ItemStack[] {SlimefunItems.IRON_DUST, new ItemStack(Material.IRON_INGOT), SlimefunItems.COPPER_DUST, null, null, null, null, null, null}) - .register(true); - - new Alloy((SlimefunItemStack) SlimefunItems.COBALT_INGOT, - new ItemStack[] {SlimefunItems.IRON_DUST, SlimefunItems.COPPER_DUST, SlimefunItems.NICKEL_INGOT, null, null, null, null, null, null}) - .register(true); - - new SlimefunItem(Categories.RESOURCES, (SlimefunItemStack) SlimefunItems.CARBONADO, RecipeType.PRESSURE_CHAMBER, - new ItemStack[] {SlimefunItems.RAW_CARBONADO, null, null, null, null, null, null, null, null}) - .register(true); - - new Alloy((SlimefunItemStack) SlimefunItems.FERROSILICON, - new ItemStack[] {new ItemStack(Material.IRON_INGOT), SlimefunItems.IRON_DUST, SlimefunItems.SILICON, null, null, null, null, null, null}) - .register(true); - - new SlimefunItem(Categories.RESOURCES, (SlimefunItemStack) SlimefunItems.IRON_DUST, RecipeType.ORE_CRUSHER, - new ItemStack[] {new ItemStack(Material.IRON_ORE), null, null, null, null, null, null, null, null}, new CustomItem(SlimefunItems.IRON_DUST, (boolean) Slimefun.getItemValue("ORE_CRUSHER", "double-ores") ? 2: 1)) - .register(true); - - new SlimefunItem(Categories.RESOURCES, (SlimefunItemStack) SlimefunItems.GOLD_DUST, RecipeType.ORE_CRUSHER, - new ItemStack[] {new ItemStack(Material.GOLD_ORE), null, null, null, null, null, null, null, null}, new CustomItem(SlimefunItems.GOLD_DUST, (boolean) Slimefun.getItemValue("ORE_CRUSHER", "double-ores") ? 2: 1)) - .register(true); - - new SlimefunItem(Categories.RESOURCES, (SlimefunItemStack) SlimefunItems.COPPER_DUST, RecipeType.ORE_WASHER, - new ItemStack[] {SlimefunItems.SIFTED_ORE, null, null, null, null, null, null, null, null}) - .register(true); - - new SlimefunItem(Categories.RESOURCES, (SlimefunItemStack) SlimefunItems.TIN_DUST, RecipeType.ORE_WASHER, - new ItemStack[] {SlimefunItems.SIFTED_ORE, null, null, null, null, null, null, null, null}) - .register(true); - - new SlimefunItem(Categories.RESOURCES, (SlimefunItemStack) SlimefunItems.LEAD_DUST, RecipeType.ORE_WASHER, - new ItemStack[] {SlimefunItems.SIFTED_ORE, null, null, null, null, null, null, null, null}) - .register(true); - - new SlimefunItem(Categories.RESOURCES, (SlimefunItemStack) SlimefunItems.SILVER_DUST, RecipeType.ORE_WASHER, - new ItemStack[] {SlimefunItems.SIFTED_ORE, null, null, null, null, null, null, null, null}) - .register(true); - - new SlimefunItem(Categories.RESOURCES, (SlimefunItemStack) SlimefunItems.ALUMINUM_DUST, RecipeType.ORE_WASHER, - new ItemStack[] {SlimefunItems.SIFTED_ORE, null, null, null, null, null, null, null, null}) - .register(true); - - new SlimefunItem(Categories.RESOURCES, (SlimefunItemStack) SlimefunItems.ZINC_DUST, RecipeType.ORE_WASHER, - new ItemStack[] {SlimefunItems.SIFTED_ORE, null, null, null, null, null, null, null, null}) - .register(true); - - new SlimefunItem(Categories.RESOURCES, (SlimefunItemStack) SlimefunItems.MAGNESIUM_DUST, RecipeType.ORE_WASHER, - new ItemStack[] {SlimefunItems.SIFTED_ORE, null, null, null, null, null, null, null, null}) - .register(true); - - new SlimefunItem(Categories.RESOURCES, (SlimefunItemStack) SlimefunItems.COPPER_INGOT, RecipeType.SMELTERY, - new ItemStack[] {SlimefunItems.COPPER_DUST, null, null, null, null, null, null, null, null}) - .register(true); - - new SlimefunItem(Categories.RESOURCES, (SlimefunItemStack) SlimefunItems.TIN_INGOT, RecipeType.SMELTERY, - new ItemStack[] {SlimefunItems.TIN_DUST, null, null, null, null, null, null, null, null}) - .register(true); - - new SlimefunItem(Categories.RESOURCES, (SlimefunItemStack) SlimefunItems.SILVER_INGOT, RecipeType.SMELTERY, - new ItemStack[] {SlimefunItems.SILVER_DUST, null, null, null, null, null, null, null, null}) - .register(true); - - new SlimefunItem(Categories.RESOURCES, (SlimefunItemStack) SlimefunItems.LEAD_INGOT, RecipeType.SMELTERY, - new ItemStack[] {SlimefunItems.LEAD_DUST, null, null, null, null, null, null, null, null}) - .register(true); - - new SlimefunItem(Categories.RESOURCES, (SlimefunItemStack) SlimefunItems.ALUMINUM_INGOT, RecipeType.SMELTERY, - new ItemStack[] {SlimefunItems.ALUMINUM_DUST, null, null, null, null, null, null, null, null}) - .register(true); - - new SlimefunItem(Categories.RESOURCES, (SlimefunItemStack) SlimefunItems.ZINC_INGOT, RecipeType.SMELTERY, - new ItemStack[] {SlimefunItems.ZINC_DUST, null, null, null, null, null, null, null, null}) - .register(true); - - new SlimefunItem(Categories.RESOURCES, (SlimefunItemStack) SlimefunItems.MAGNESIUM_INGOT, RecipeType.SMELTERY, - new ItemStack[] {SlimefunItems.MAGNESIUM_DUST, null, null, null, null, null, null, null, null}) - .register(true); - - new SlimefunItem(Categories.RESOURCES, (SlimefunItemStack) SlimefunItems.SULFATE, RecipeType.ORE_CRUSHER, - new ItemStack[] {new ItemStack(Material.NETHERRACK, 16), null, null, null, null, null, null, null, null}) - .register(true); - - new SlimefunItem(Categories.RESOURCES, (SlimefunItemStack) SlimefunItems.CARBON, RecipeType.COMPRESSOR, - new ItemStack[] {new ItemStack(Material.COAL, 8), null, null, null, null, null, null, null, null}) - .register(true); - - new SlimefunItem(Categories.MISC, (SlimefunItemStack) SlimefunItems.WHEAT_FLOUR, RecipeType.GRIND_STONE, - new ItemStack[] {new ItemStack(Material.WHEAT), null, null, null, null, null, null, null, null}) - .register(true); - - new SlimefunItem(Categories.MISC, (SlimefunItemStack) SlimefunItems.STEEL_PLATE, RecipeType.COMPRESSOR, - new ItemStack[] {new CustomItem(SlimefunItems.STEEL_INGOT, 8), null, null, null, null, null, null, null, null}) - .register(true); - - new SlimefunItem(Categories.RESOURCES, (SlimefunItemStack) SlimefunItems.COMPRESSED_CARBON, RecipeType.COMPRESSOR, - new ItemStack[] {new CustomItem(SlimefunItems.CARBON, 4), null, null, null, null, null, null, null, null}) - .register(true); - - new SlimefunItem(Categories.RESOURCES, (SlimefunItemStack) SlimefunItems.CARBON_CHUNK, RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {SlimefunItems.COMPRESSED_CARBON, SlimefunItems.COMPRESSED_CARBON, SlimefunItems.COMPRESSED_CARBON, SlimefunItems.COMPRESSED_CARBON, new ItemStack(Material.FLINT), SlimefunItems.COMPRESSED_CARBON, SlimefunItems.COMPRESSED_CARBON, SlimefunItems.COMPRESSED_CARBON, SlimefunItems.COMPRESSED_CARBON}) - .register(true); - - new SlimefunItem(Categories.TECH_MISC, (SlimefunItemStack) SlimefunItems.STEEL_THRUSTER, RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {null, new ItemStack(Material.REDSTONE), null, SlimefunItems.ALUMINUM_BRONZE_INGOT, SlimefunItems.ALUMINUM_BRONZE_INGOT, SlimefunItems.ALUMINUM_BRONZE_INGOT, SlimefunItems.STEEL_PLATE, new ItemStack(Material.FIRE_CHARGE), SlimefunItems.STEEL_PLATE}) - .register(true); - - new SlimefunItem(Categories.TECH_MISC, (SlimefunItemStack) SlimefunItems.POWER_CRYSTAL, RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {new ItemStack(Material.REDSTONE), SlimefunItems.SYNTHETIC_SAPPHIRE, new ItemStack(Material.REDSTONE), SlimefunItems.SYNTHETIC_SAPPHIRE, SlimefunItems.SYNTHETIC_DIAMOND, SlimefunItems.SYNTHETIC_SAPPHIRE, new ItemStack(Material.REDSTONE), SlimefunItems.SYNTHETIC_SAPPHIRE, new ItemStack(Material.REDSTONE)}) - .register(true); - - new Jetpack((SlimefunItemStack) SlimefunItems.DURALUMIN_JETPACK, - new ItemStack[] {SlimefunItems.DURALUMIN_INGOT, null, SlimefunItems.DURALUMIN_INGOT, SlimefunItems.DURALUMIN_INGOT, SlimefunItems.POWER_CRYSTAL, SlimefunItems.DURALUMIN_INGOT, SlimefunItems.STEEL_THRUSTER, SlimefunItems.SMALL_CAPACITOR, SlimefunItems.STEEL_THRUSTER}, - 0.35) - .register(true); - - new Jetpack((SlimefunItemStack) SlimefunItems.SOLDER_JETPACK, - new ItemStack[] {SlimefunItems.SOLDER_INGOT, null, SlimefunItems.SOLDER_INGOT, SlimefunItems.SOLDER_INGOT, SlimefunItems.POWER_CRYSTAL, SlimefunItems.SOLDER_INGOT, SlimefunItems.STEEL_THRUSTER, SlimefunItems.SMALL_CAPACITOR, SlimefunItems.STEEL_THRUSTER}, - 0.4) - .register(true); - - new Jetpack((SlimefunItemStack) SlimefunItems.BILLON_JETPACK, - new ItemStack[] {SlimefunItems.BILLON_INGOT, null, SlimefunItems.BILLON_INGOT, SlimefunItems.BILLON_INGOT, SlimefunItems.POWER_CRYSTAL, SlimefunItems.BILLON_INGOT, SlimefunItems.STEEL_THRUSTER, SlimefunItems.SMALL_CAPACITOR, SlimefunItems.STEEL_THRUSTER}, - 0.45) - .register(true); - - new Jetpack((SlimefunItemStack) SlimefunItems.STEEL_JETPACK, - new ItemStack[] {SlimefunItems.STEEL_INGOT, null, SlimefunItems.STEEL_INGOT, SlimefunItems.STEEL_INGOT, SlimefunItems.POWER_CRYSTAL, SlimefunItems.STEEL_INGOT, SlimefunItems.STEEL_THRUSTER, SlimefunItems.SMALL_CAPACITOR, SlimefunItems.STEEL_THRUSTER}, - 0.5) - .register(true); - - new Jetpack((SlimefunItemStack) SlimefunItems.DAMASCUS_STEEL_JETPACK, - new ItemStack[] {SlimefunItems.DAMASCUS_STEEL_INGOT, null, SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.POWER_CRYSTAL, SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.STEEL_THRUSTER, SlimefunItems.SMALL_CAPACITOR, SlimefunItems.STEEL_THRUSTER}, - 0.55) - .register(true); - - new Jetpack((SlimefunItemStack) SlimefunItems.REINFORCED_ALLOY_JETPACK, - new ItemStack[] {SlimefunItems.REINFORCED_ALLOY_INGOT, null, SlimefunItems.REINFORCED_ALLOY_INGOT, SlimefunItems.REINFORCED_ALLOY_INGOT, SlimefunItems.POWER_CRYSTAL, SlimefunItems.REINFORCED_ALLOY_INGOT, SlimefunItems.STEEL_THRUSTER, SlimefunItems.MEDIUM_CAPACITOR, SlimefunItems.STEEL_THRUSTER}, - 0.6) - .register(true); - - new Jetpack((SlimefunItemStack) SlimefunItems.CARBONADO_JETPACK, - new ItemStack[] {SlimefunItems.CARBON_CHUNK, null, SlimefunItems.CARBON_CHUNK, SlimefunItems.CARBONADO, SlimefunItems.POWER_CRYSTAL, SlimefunItems.CARBONADO, SlimefunItems.STEEL_THRUSTER, SlimefunItems.LARGE_CAPACITOR, SlimefunItems.STEEL_THRUSTER}, - 0.7) - .register(true); - - new SlimefunItem(Categories.TECH, (SlimefunItemStack) SlimefunItems.PARACHUTE, RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {SlimefunItems.CLOTH, SlimefunItems.CLOTH, SlimefunItems.CLOTH, SlimefunItems.CHAIN, null, SlimefunItems.CHAIN, null, null, null}) - .register(true); - - new HologramProjector(Categories.TECH, (SlimefunItemStack) SlimefunItems.HOLOGRAM_PROJECTOR, RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {null, SlimefunItems.POWER_CRYSTAL, null, SlimefunItems.ALUMINUM_BRASS_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.ALUMINUM_BRASS_INGOT, null, SlimefunItems.ALUMINUM_BRASS_INGOT, null}, new CustomItem(SlimefunItems.HOLOGRAM_PROJECTOR, 3)) - .register(true); - - new SlimefunItem(Categories.MISC, (SlimefunItemStack) SlimefunItems.CHAIN, RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {null, null, SlimefunItems.STEEL_INGOT, null, SlimefunItems.STEEL_INGOT, null, SlimefunItems.STEEL_INGOT, null, null}, new CustomItem(SlimefunItems.CHAIN, 8)) - .register(true); - - new SlimefunItem(Categories.MISC, (SlimefunItemStack) SlimefunItems.HOOK, RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {null, SlimefunItems.STEEL_INGOT, null, SlimefunItems.STEEL_INGOT, null, SlimefunItems.STEEL_INGOT, null, null, null}) - .register(true); - - new GrapplingHook(Categories.TOOLS, (SlimefunItemStack) SlimefunItems.GRAPPLING_HOOK, RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {null, SlimefunItems.HOOK, SlimefunItems.HOOK, null, SlimefunItems.CHAIN, SlimefunItems.HOOK, SlimefunItems.CHAIN, null, null}, - new String[] {"despawn-seconds"}, new Object[] {60}) - .register(true); - - new MagicWorkbench().register(); - - new SlimefunItem(Categories.MAGIC, (SlimefunItemStack) SlimefunItems.STAFF_ELEMENTAL, RecipeType.MAGIC_WORKBENCH, - new ItemStack[] {null, SlimefunItems.MAGICAL_BOOK_COVER, SlimefunItems.MAGIC_LUMP_3, null, new ItemStack(Material.STICK), SlimefunItems.MAGICAL_BOOK_COVER, SlimefunItems.MAGIC_LUMP_3, null, null}) - .register(true); - - new WindStaff(Categories.MAGIC, (SlimefunItemStack) SlimefunItems.STAFF_WIND, RecipeType.MAGIC_WORKBENCH, - new ItemStack[] {null, new ItemStack(Material.FEATHER), SlimefunItems.ENDER_LUMP_3, null, SlimefunItems.STAFF_ELEMENTAL, new ItemStack(Material.FEATHER), SlimefunItems.STAFF_ELEMENTAL, null, null}) - .register(true); - - new SlimefunItem(Categories.MAGIC, (SlimefunItemStack) SlimefunItems.STAFF_WATER, RecipeType.MAGIC_WORKBENCH, - new ItemStack[] {null, new ItemStack(Material.LILY_PAD), SlimefunItems.MAGIC_LUMP_2, null, SlimefunItems.STAFF_ELEMENTAL, new ItemStack(Material.LILY_PAD), SlimefunItems.STAFF_ELEMENTAL, null, null}) - .register(true, new ItemInteractionHandler() { - - @Override - public boolean onRightClick(ItemUseEvent e, Player p, ItemStack item) { - if (SlimefunManager.isItemSimiliar(item, SlimefunItems.STAFF_WATER, true)) { - p.setFireTicks(0); - SlimefunPlugin.getLocal().sendMessage(p, "messages.fire-extinguish", true); - return true; - } - else return false; - } - }); - - new MultiTool((SlimefunItemStack) SlimefunItems.DURALUMIN_MULTI_TOOL, RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {SlimefunItems.DURALUMIN_INGOT, null, SlimefunItems.DURALUMIN_INGOT, SlimefunItems.DURALUMIN_INGOT, SlimefunItems.SMALL_CAPACITOR, SlimefunItems.DURALUMIN_INGOT, null, SlimefunItems.DURALUMIN_INGOT, null}, - new String[] {"mode.0.enabled", "mode.0.name", "mode.0.item", "mode.1.enabled", "mode.1.name", "mode.1.item", "mode.2.enabled", "mode.2.name", "mode.2.item", "mode.3.enabled", "mode.3.name", "mode.3.item"}, new Object[] {true, "Portable Crafter", "PORTABLE_CRAFTER", true, "Magic Eye of Ender", "MAGIC_EYE_OF_ENDER", true, "Wind Staff", "STAFF_ELEMENTAL_WIND", true, "Grappling Hook", "GRAPPLING_HOOK"}) - .register(true); - - new MultiTool((SlimefunItemStack) SlimefunItems.SOLDER_MULTI_TOOL, RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {SlimefunItems.SOLDER_INGOT, null, SlimefunItems.SOLDER_INGOT, SlimefunItems.SOLDER_INGOT, SlimefunItems.SMALL_CAPACITOR, SlimefunItems.SOLDER_INGOT, null, SlimefunItems.SOLDER_INGOT, null}, - new String[] {"mode.0.enabled", "mode.0.name", "mode.0.item", "mode.1.enabled", "mode.1.name", "mode.1.item", "mode.2.enabled", "mode.2.name", "mode.2.item", "mode.3.enabled", "mode.3.name", "mode.3.item"}, new Object[] {true, "Portable Crafter", "PORTABLE_CRAFTER", true, "Magic Eye of Ender", "MAGIC_EYE_OF_ENDER", true, "Wind Staff", "STAFF_ELEMENTAL_WIND", true, "Grappling Hook", "GRAPPLING_HOOK"}) - .register(true); - - new MultiTool((SlimefunItemStack) SlimefunItems.BILLON_MULTI_TOOL, RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {SlimefunItems.BILLON_INGOT, null, SlimefunItems.BILLON_INGOT, SlimefunItems.BILLON_INGOT, SlimefunItems.SMALL_CAPACITOR, SlimefunItems.BILLON_INGOT, null, SlimefunItems.BILLON_INGOT, null}, - new String[] {"mode.0.enabled", "mode.0.name", "mode.0.item", "mode.1.enabled", "mode.1.name", "mode.1.item", "mode.2.enabled", "mode.2.name", "mode.2.item", "mode.3.enabled", "mode.3.name", "mode.3.item"}, new Object[] {true, "Portable Crafter", "PORTABLE_CRAFTER", true, "Magic Eye of Ender", "MAGIC_EYE_OF_ENDER", true, "Wind Staff", "STAFF_ELEMENTAL_WIND", true, "Grappling Hook", "GRAPPLING_HOOK"}) - .register(true); - - new MultiTool((SlimefunItemStack) SlimefunItems.STEEL_MULTI_TOOL, RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {SlimefunItems.STEEL_INGOT, null, SlimefunItems.STEEL_INGOT, SlimefunItems.STEEL_INGOT, SlimefunItems.SMALL_CAPACITOR, SlimefunItems.STEEL_INGOT, null, SlimefunItems.STEEL_INGOT, null}, - new String[] {"mode.0.enabled", "mode.0.name", "mode.0.item", "mode.1.enabled", "mode.1.name", "mode.1.item", "mode.2.enabled", "mode.2.name", "mode.2.item", "mode.3.enabled", "mode.3.name", "mode.3.item"}, new Object[] {true, "Portable Crafter", "PORTABLE_CRAFTER", true, "Magic Eye of Ender", "MAGIC_EYE_OF_ENDER", true, "Wind Staff", "STAFF_ELEMENTAL_WIND", true, "Grappling Hook", "GRAPPLING_HOOK"}) - .register(true); - - new MultiTool((SlimefunItemStack) SlimefunItems.DAMASCUS_STEEL_MULTI_TOOL, RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {SlimefunItems.DAMASCUS_STEEL_INGOT, null, SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.SMALL_CAPACITOR, SlimefunItems.DAMASCUS_STEEL_INGOT, null, SlimefunItems.DAMASCUS_STEEL_INGOT, null}, - new String[] {"mode.0.enabled", "mode.0.name", "mode.0.item", "mode.1.enabled", "mode.1.name", "mode.1.item", "mode.2.enabled", "mode.2.name", "mode.2.item", "mode.3.enabled", "mode.3.name", "mode.3.item"}, new Object[] {true, "Portable Crafter", "PORTABLE_CRAFTER", true, "Magic Eye of Ender", "MAGIC_EYE_OF_ENDER", true, "Wind Staff", "STAFF_ELEMENTAL_WIND", true, "Grappling Hook", "GRAPPLING_HOOK"}) - .register(true); - - new MultiTool((SlimefunItemStack) SlimefunItems.REINFORCED_ALLOY_MULTI_TOOL, RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {SlimefunItems.REINFORCED_ALLOY_INGOT, null, SlimefunItems.REINFORCED_ALLOY_INGOT, SlimefunItems.REINFORCED_ALLOY_INGOT, SlimefunItems.MEDIUM_CAPACITOR, SlimefunItems.REINFORCED_ALLOY_INGOT, null, SlimefunItems.REINFORCED_ALLOY_INGOT, null}, - new String[] {"mode.0.enabled", "mode.0.name", "mode.0.item", "mode.1.enabled", "mode.1.name", "mode.1.item", "mode.2.enabled", "mode.2.name", "mode.2.item", "mode.3.enabled", "mode.3.name", "mode.3.item"}, new Object[] {true, "Portable Crafter", "PORTABLE_CRAFTER", true, "Magic Eye of Ender", "MAGIC_EYE_OF_ENDER", true, "Wind Staff", "STAFF_ELEMENTAL_WIND", true, "Grappling Hook", "GRAPPLING_HOOK"}) - .register(true); - - new MultiTool((SlimefunItemStack) SlimefunItems.CARBONADO_MULTI_TOOL, RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {SlimefunItems.CARBONADO, null, SlimefunItems.CARBONADO, SlimefunItems.CARBONADO, SlimefunItems.LARGE_CAPACITOR, SlimefunItems.CARBONADO, null, SlimefunItems.CARBONADO, null}, - new String[] {"mode.0.enabled", "mode.0.name", "mode.0.item", "mode.1.enabled", "mode.1.name", "mode.1.item", "mode.2.enabled", "mode.2.name", "mode.2.item", "mode.3.enabled", "mode.3.name", "mode.3.item", "mode.4.enabled", "mode.4.name", "mode.4.item"}, new Object[] {true, "Portable Crafter", "PORTABLE_CRAFTER", true, "Magic Eye of Ender", "MAGIC_EYE_OF_ENDER", true, "Wind Staff", "STAFF_ELEMENTAL_WIND", true, "Grappling Hook", "GRAPPLING_HOOK", true, "Gold Pan", "GOLD_PAN"}) - .register(true); - - new OreWasher().register(); - - new SlimefunItem(Categories.RESOURCES, (SlimefunItemStack) SlimefunItems.GOLD_24K, RecipeType.SMELTERY, - new ItemStack[] {SlimefunItems.GOLD_DUST, SlimefunItems.GOLD_22K, null, null, null, null, null, null, null}) - .register(true); - - new SlimefunItem(Categories.RESOURCES, (SlimefunItemStack) SlimefunItems.GOLD_22K, RecipeType.SMELTERY, - new ItemStack[] {SlimefunItems.GOLD_DUST, SlimefunItems.GOLD_20K, null, null, null, null, null, null, null}) - .register(true); - - new SlimefunItem(Categories.RESOURCES, (SlimefunItemStack) SlimefunItems.GOLD_20K, RecipeType.SMELTERY, - new ItemStack[] {SlimefunItems.GOLD_DUST, SlimefunItems.GOLD_18K, null, null, null, null, null, null, null}) - .register(true); - - new SlimefunItem(Categories.RESOURCES, (SlimefunItemStack) SlimefunItems.GOLD_18K, RecipeType.SMELTERY, - new ItemStack[] {SlimefunItems.GOLD_DUST, SlimefunItems.GOLD_16K, null, null, null, null, null, null, null}) - .register(true); - - new SlimefunItem(Categories.RESOURCES, (SlimefunItemStack) SlimefunItems.GOLD_16K, RecipeType.SMELTERY, - new ItemStack[] {SlimefunItems.GOLD_DUST, SlimefunItems.GOLD_14K, null, null, null, null, null, null, null}) - .register(true); - - new SlimefunItem(Categories.RESOURCES, (SlimefunItemStack) SlimefunItems.GOLD_14K, RecipeType.SMELTERY, - new ItemStack[] {SlimefunItems.GOLD_DUST, SlimefunItems.GOLD_12K, null, null, null, null, null, null, null}) - .register(true); - - new SlimefunItem(Categories.RESOURCES, (SlimefunItemStack) SlimefunItems.GOLD_12K, RecipeType.SMELTERY, - new ItemStack[] {SlimefunItems.GOLD_DUST, SlimefunItems.GOLD_10K, null, null, null, null, null, null, null}) - .register(true); - - new SlimefunItem(Categories.RESOURCES, (SlimefunItemStack) SlimefunItems.GOLD_10K, RecipeType.SMELTERY, - new ItemStack[] {SlimefunItems.GOLD_DUST, SlimefunItems.GOLD_8K, null, null, null, null, null, null, null}) - .register(true); - - new SlimefunItem(Categories.RESOURCES, (SlimefunItemStack) SlimefunItems.GOLD_8K, RecipeType.SMELTERY, - new ItemStack[] {SlimefunItems.GOLD_DUST, SlimefunItems.GOLD_6K, null, null, null, null, null, null, null}) - .register(true); - - new SlimefunItem(Categories.RESOURCES, (SlimefunItemStack) SlimefunItems.GOLD_6K, RecipeType.SMELTERY, - new ItemStack[] {SlimefunItems.GOLD_DUST, SlimefunItems.GOLD_4K, null, null, null, null, null, null, null}) - .register(true); - - new SlimefunItem(Categories.RESOURCES, (SlimefunItemStack) SlimefunItems.GOLD_4K, RecipeType.SMELTERY, - new ItemStack[] {SlimefunItems.GOLD_DUST, null, null, null, null, null, null, null, null}) - .register(true); - - new SlimefunItem(Categories.MISC, (SlimefunItemStack) SlimefunItems.STONE_CHUNK, RecipeType.ORE_WASHER, - new ItemStack[] {SlimefunItems.SIFTED_ORE, null, null, null, null, null, null, null, null}) - .register(true); - - new SlimefunItem(Categories.RESOURCES, (SlimefunItemStack) SlimefunItems.SILICON, RecipeType.SMELTERY, - new ItemStack[] {new ItemStack(Material.QUARTZ_BLOCK), null, null, null, null, null, null, null, null}) - .register(true); - - new SlimefunItem(Categories.TECH_MISC, (SlimefunItemStack) SlimefunItems.SOLAR_PANEL, RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {new ItemStack(Material.GLASS), new ItemStack(Material.GLASS), new ItemStack(Material.GLASS), SlimefunItems.SILICON, SlimefunItems.SILICON, SlimefunItems.SILICON, SlimefunItems.FERROSILICON, SlimefunItems.FERROSILICON, SlimefunItems.FERROSILICON}) - .register(true); - - new SolarHelmet(Categories.TECH, (SlimefunItemStack) SlimefunItems.SOLAR_HELMET, RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {SlimefunItems.REINFORCED_ALLOY_INGOT, SlimefunItems.SOLAR_PANEL, SlimefunItems.REINFORCED_ALLOY_INGOT, SlimefunItems.REINFORCED_ALLOY_INGOT, null, SlimefunItems.REINFORCED_ALLOY_INGOT, SlimefunItems.MEDIUM_CAPACITOR, null, SlimefunItems.MEDIUM_CAPACITOR}, - new String[] {"charge-amount"}, new Double[] {0.1}) - .register(true); - - new SlimefunItem(Categories.LUMPS_AND_MAGIC, (SlimefunItemStack) SlimefunItems.LAVA_CRYSTAL, RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {SlimefunItems.MAGIC_LUMP_1, new ItemStack(Material.BLAZE_POWDER), SlimefunItems.MAGIC_LUMP_1, new ItemStack(Material.BLAZE_POWDER), SlimefunItems.RUNE_FIRE, new ItemStack(Material.BLAZE_POWDER), SlimefunItems.MAGIC_LUMP_1, new ItemStack(Material.BLAZE_POWDER), SlimefunItems.MAGIC_LUMP_1}) - .register(true); - - new SlimefunItem(Categories.MAGIC, (SlimefunItemStack) SlimefunItems.STAFF_FIRE, RecipeType.MAGIC_WORKBENCH, - new ItemStack[] {null, null, SlimefunItems.LAVA_CRYSTAL, null, SlimefunItems.STAFF_ELEMENTAL, null, SlimefunItems.STAFF_ELEMENTAL, null, null}) - .register(true); - - new StormStaff(Categories.MAGIC, (SlimefunItemStack) SlimefunItems.STAFF_STORM, RecipeType.ANCIENT_ALTAR, - new ItemStack[] {SlimefunItems.RUNE_LIGHTNING, SlimefunItems.ENDER_LUMP_3, SlimefunItems.RUNE_LIGHTNING, SlimefunItems.STAFF_WATER, SlimefunItems.MAGIC_SUGAR, SlimefunItems.STAFF_WIND, SlimefunItems.RUNE_LIGHTNING, SlimefunItems.ENDER_LUMP_3, SlimefunItems.RUNE_LIGHTNING}) - .register(true); - - new SmeltersPickaxe(Categories.TOOLS, (SlimefunItemStack) SlimefunItems.AUTO_SMELT_PICKAXE, RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {SlimefunItems.LAVA_CRYSTAL, SlimefunItems.LAVA_CRYSTAL, SlimefunItems.LAVA_CRYSTAL, null, SlimefunItems.FERROSILICON, null, null, SlimefunItems.FERROSILICON, null}) - .register(true); - - new SlimefunItem(Categories.LUMPS_AND_MAGIC, (SlimefunItemStack) SlimefunItems.TALISMAN, RecipeType.MAGIC_WORKBENCH, - new ItemStack[] {SlimefunItems.MAGIC_LUMP_2, SlimefunItems.GOLD_8K, SlimefunItems.MAGIC_LUMP_2, null, new ItemStack(Material.EMERALD), null, SlimefunItems.MAGIC_LUMP_2, SlimefunItems.GOLD_8K, SlimefunItems.MAGIC_LUMP_2}, - new String[] {"recipe-requires-nether-stars"}, new Boolean[] {false}) - .register(true); - - new Talisman((SlimefunItemStack) SlimefunItems.TALISMAN_ANVIL, - new ItemStack[] {SlimefunItems.MAGIC_LUMP_3, null, SlimefunItems.MAGIC_LUMP_3, new ItemStack(Material.ANVIL), SlimefunItems.TALISMAN, new ItemStack(Material.ANVIL), SlimefunItems.MAGIC_LUMP_3, null, SlimefunItems.MAGIC_LUMP_3}, - true, false, "anvil") - .register(true); - - new Talisman((SlimefunItemStack) SlimefunItems.TALISMAN_MINER, - new ItemStack[] {SlimefunItems.MAGIC_LUMP_3, null, SlimefunItems.MAGIC_LUMP_3, SlimefunItems.SYNTHETIC_SAPPHIRE, SlimefunItems.TALISMAN, SlimefunItems.SIFTED_ORE, SlimefunItems.MAGIC_LUMP_3, null, SlimefunItems.MAGIC_LUMP_3}, - false, false, "miner", 20) - .register(true); - - new HunterTalisman((SlimefunItemStack) SlimefunItems.TALISMAN_HUNTER, - new ItemStack[] {SlimefunItems.MAGIC_LUMP_3, null, SlimefunItems.MAGIC_LUMP_3, SlimefunItems.SYNTHETIC_SAPPHIRE, SlimefunItems.TALISMAN, SlimefunItems.MONSTER_JERKY, SlimefunItems.MAGIC_LUMP_3, null, SlimefunItems.MAGIC_LUMP_3}, - false, false, "hunter", 20) - .register(true); - - new Talisman((SlimefunItemStack) SlimefunItems.TALISMAN_LAVA, - new ItemStack[] {SlimefunItems.MAGIC_LUMP_3, null, SlimefunItems.MAGIC_LUMP_3, SlimefunItems.LAVA_CRYSTAL, SlimefunItems.TALISMAN, new ItemStack(Material.LAVA_BUCKET), SlimefunItems.MAGIC_LUMP_3, null, SlimefunItems.MAGIC_LUMP_3}, - true, true, "lava", new PotionEffect(PotionEffectType.FIRE_RESISTANCE, 3600, 4)) - .register(true); - - new Talisman((SlimefunItemStack) SlimefunItems.TALISMAN_WATER, - new ItemStack[] {SlimefunItems.MAGIC_LUMP_3, null, SlimefunItems.MAGIC_LUMP_3, new ItemStack(Material.WATER_BUCKET), SlimefunItems.TALISMAN, new ItemStack(Material.FISHING_ROD), SlimefunItems.MAGIC_LUMP_3, null, SlimefunItems.MAGIC_LUMP_3}, - true, true, "water", new PotionEffect(PotionEffectType.WATER_BREATHING, 3600, 4)) - .register(true); - - new Talisman((SlimefunItemStack) SlimefunItems.TALISMAN_ANGEL, - new ItemStack[] {SlimefunItems.MAGIC_LUMP_3, null, SlimefunItems.MAGIC_LUMP_3, new ItemStack(Material.FEATHER), SlimefunItems.TALISMAN, new ItemStack(Material.FEATHER), SlimefunItems.MAGIC_LUMP_3, null, SlimefunItems.MAGIC_LUMP_3}, - false, true, "angel", 75) - .register(true); - - new Talisman((SlimefunItemStack) SlimefunItems.TALISMAN_FIRE, - new ItemStack[] {SlimefunItems.MAGIC_LUMP_3, null, SlimefunItems.MAGIC_LUMP_3, SlimefunItems.LAVA_CRYSTAL, SlimefunItems.TALISMAN, SlimefunItems.LAVA_CRYSTAL, SlimefunItems.MAGIC_LUMP_3, null, SlimefunItems.MAGIC_LUMP_3}, - true, true, "fire", new PotionEffect(PotionEffectType.FIRE_RESISTANCE, 3600, 4)) - .register(true); - - new Talisman((SlimefunItemStack) SlimefunItems.TALISMAN_MAGICIAN, - new ItemStack[] {SlimefunItems.ENDER_LUMP_3, null, SlimefunItems.ENDER_LUMP_3, new ItemStack(Material.ENCHANTING_TABLE), SlimefunItems.TALISMAN, new ItemStack(Material.ENCHANTING_TABLE), SlimefunItems.ENDER_LUMP_3, null, SlimefunItems.ENDER_LUMP_3}, - false, false, "magician", 80) - .register(true); - - new Talisman((SlimefunItemStack) SlimefunItems.TALISMAN_TRAVELLER, - new ItemStack[] {SlimefunItems.MAGIC_LUMP_3, null, SlimefunItems.MAGIC_LUMP_3, SlimefunItems.STAFF_WIND, SlimefunItems.TALISMAN_ANGEL, SlimefunItems.STAFF_WIND, SlimefunItems.MAGIC_LUMP_3, null, SlimefunItems.MAGIC_LUMP_3}, - false, false, "traveller", 60, new PotionEffect(PotionEffectType.SPEED, 3600, 2)) - .register(true); - - new Talisman((SlimefunItemStack) SlimefunItems.TALISMAN_WARRIOR, - new ItemStack[] {SlimefunItems.MAGIC_LUMP_3, null, SlimefunItems.MAGIC_LUMP_3, SlimefunItems.REINFORCED_ALLOY_INGOT, SlimefunItems.TALISMAN, SlimefunItems.REINFORCED_ALLOY_INGOT, SlimefunItems.MAGIC_LUMP_3, null, SlimefunItems.MAGIC_LUMP_3}, - true, true, "warrior", new PotionEffect(PotionEffectType.INCREASE_DAMAGE, 3600, 2)) - .register(true); - - new Talisman((SlimefunItemStack) SlimefunItems.TALISMAN_KNIGHT, - new ItemStack[] {SlimefunItems.MAGIC_LUMP_3, null, SlimefunItems.MAGIC_LUMP_3, SlimefunItems.GILDED_IRON, SlimefunItems.TALISMAN_WARRIOR, SlimefunItems.GILDED_IRON, SlimefunItems.MAGIC_LUMP_3, null, SlimefunItems.MAGIC_LUMP_3}, - "knight", 30, new PotionEffect(PotionEffectType.REGENERATION, 100, 3)) - .register(true); - - new Alloy((SlimefunItemStack) SlimefunItems.GILDED_IRON, - new ItemStack[] {SlimefunItems.GOLD_24K, SlimefunItems.IRON_DUST, null, null, null, null, null, null, null}) - .register(true); - - new ReplacingAlloy(SlimefunItems.SYNTHETIC_EMERALD, "SYNTHETIC_EMERALD", - new ItemStack[] {SlimefunItems.SYNTHETIC_SAPPHIRE, SlimefunItems.ALUMINUM_DUST, SlimefunItems.ALUMINUM_INGOT, new ItemStack(Material.GLASS_PANE), null, null, null, null, null}) - .register(true); - - SlimefunManager.registerArmorSet(SlimefunItems.CHAIN, new ItemStack[] {new ItemStack(Material.CHAINMAIL_HELMET), new ItemStack(Material.CHAINMAIL_CHESTPLATE), new ItemStack(Material.CHAINMAIL_LEGGINGS), new ItemStack(Material.CHAINMAIL_BOOTS)}, "CHAIN", true, true); - - new Talisman((SlimefunItemStack) SlimefunItems.TALISMAN_WHIRLWIND, - new ItemStack[] {SlimefunItems.MAGIC_LUMP_3, null, SlimefunItems.MAGIC_LUMP_3, SlimefunItems.STAFF_WIND, SlimefunItems.TALISMAN_TRAVELLER, SlimefunItems.STAFF_WIND, SlimefunItems.MAGIC_LUMP_3, null, SlimefunItems.MAGIC_LUMP_3} - , false, true, "whirlwind", 60) - .register(true); - - new Talisman((SlimefunItemStack) SlimefunItems.TALISMAN_WIZARD, - new ItemStack[] {SlimefunItems.ENDER_LUMP_3, null, SlimefunItems.ENDER_LUMP_3, SlimefunItems.MAGIC_EYE_OF_ENDER, SlimefunItems.TALISMAN_MAGICIAN, SlimefunItems.MAGIC_EYE_OF_ENDER, SlimefunItems.ENDER_LUMP_3, null, SlimefunItems.ENDER_LUMP_3}, - false, false, "wizard", 60) - .register(true); - - new LumberAxe(Categories.TOOLS, (SlimefunItemStack) SlimefunItems.LUMBER_AXE, RecipeType.MAGIC_WORKBENCH, - new ItemStack[] {SlimefunItems.SYNTHETIC_DIAMOND, SlimefunItems.SYNTHETIC_DIAMOND, null, SlimefunItems.SYNTHETIC_EMERALD, SlimefunItems.GILDED_IRON, null, null, SlimefunItems.GILDED_IRON, null}) - .register(true); - - new SlimefunItem(Categories.MISC, (SlimefunItemStack) SlimefunItems.SALT, RecipeType.ORE_WASHER, - new ItemStack[] {null, null, null, null, new ItemStack(Material.SAND, 4), null, null, null, null}) - .register(true); - - new SlimefunItem(Categories.MISC, (SlimefunItemStack) SlimefunItems.HEAVY_CREAM, RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {new ItemStack(Material.MILK_BUCKET), null, null, null, null, null, null, null, null}, new CustomItem(SlimefunItems.HEAVY_CREAM, 2)) - .register(true); - - new SlimefunItem(Categories.MISC, (SlimefunItemStack) SlimefunItems.CHEESE, RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {new ItemStack(Material.MILK_BUCKET), SlimefunItems.SALT, null, null, null, null, null, null, null}) - .register(true); - - new SlimefunItem(Categories.MISC, (SlimefunItemStack) SlimefunItems.BUTTER, RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {SlimefunItems.HEAVY_CREAM, SlimefunItems.SALT, null, null, null, null, null, null, null}) - .register(true); - - SlimefunManager.registerArmorSet(SlimefunItems.GILDED_IRON, new ItemStack[] {SlimefunItems.GILDED_IRON_HELMET, SlimefunItems.GILDED_IRON_CHESTPLATE, SlimefunItems.GILDED_IRON_LEGGINGS, SlimefunItems.GILDED_IRON_BOOTS}, "GILDED_IRON", true, false); - - new SlimefunArmorPiece(Categories.ARMOR, (SlimefunItemStack) SlimefunItems.SCUBA_HELMET, RecipeType.ARMOR_FORGE, - new ItemStack[] {new ItemStack(Material.ORANGE_WOOL), new ItemStack(Material.ORANGE_WOOL), new ItemStack(Material.ORANGE_WOOL), new ItemStack(Material.BLACK_WOOL), new ItemStack(Material.GLASS_PANE), new ItemStack(Material.BLACK_WOOL), null, null, null}, - new PotionEffect[] {new PotionEffect(PotionEffectType.WATER_BREATHING, 300, 1)}) - .register(true); - - new SlimefunArmorPiece(Categories.ARMOR, (SlimefunItemStack) SlimefunItems.HAZMATSUIT_CHESTPLATE, RecipeType.ARMOR_FORGE, - new ItemStack[] {new ItemStack(Material.ORANGE_WOOL), null, new ItemStack(Material.ORANGE_WOOL), new ItemStack(Material.ORANGE_WOOL), new ItemStack(Material.ORANGE_WOOL), new ItemStack(Material.ORANGE_WOOL), new ItemStack(Material.BLACK_WOOL), new ItemStack(Material.BLACK_WOOL), new ItemStack(Material.BLACK_WOOL)}, - new PotionEffect[] {new PotionEffect(PotionEffectType.FIRE_RESISTANCE, 300, 1)}) - .register(true); - - new SlimefunItem(Categories.ARMOR, (SlimefunItemStack) SlimefunItems.HAZMATSUIT_LEGGINGS, RecipeType.ARMOR_FORGE, - new ItemStack [] {new ItemStack(Material.BLACK_WOOL), new ItemStack(Material.BLACK_WOOL), new ItemStack(Material.BLACK_WOOL), new ItemStack(Material.ORANGE_WOOL), null, new ItemStack(Material.ORANGE_WOOL), new ItemStack(Material.ORANGE_WOOL), null, new ItemStack(Material.ORANGE_WOOL)}) - .register(true); - - new SlimefunItem(Categories.ARMOR, (SlimefunItemStack) SlimefunItems.RUBBER_BOOTS, RecipeType.ARMOR_FORGE, - new ItemStack [] {null, null, null, new ItemStack(Material.BLACK_WOOL), null, new ItemStack(Material.BLACK_WOOL), new ItemStack(Material.BLACK_WOOL), null, new ItemStack(Material.BLACK_WOOL)}) - .register(true); - - new SlimefunItem(Categories.MISC, (SlimefunItemStack) SlimefunItems.CRUSHED_ORE, RecipeType.ORE_CRUSHER, - new ItemStack[] {SlimefunItems.SIFTED_ORE, null, null, null, null, null, null, null, null}) - .register(true); - - new SlimefunItem(Categories.MISC, (SlimefunItemStack) SlimefunItems.PULVERIZED_ORE, RecipeType.ORE_CRUSHER, - new ItemStack[] {SlimefunItems.CRUSHED_ORE, null, null, null, null, null, null, null, null}) - .register(true); - - new SlimefunItem(Categories.MISC, (SlimefunItemStack) SlimefunItems.PURE_ORE_CLUSTER, RecipeType.ORE_WASHER, - new ItemStack[] {SlimefunItems.PULVERIZED_ORE, null, null, null, null, null, null, null, null}) - .register(true); - - new SlimefunItem(Categories.MISC, (SlimefunItemStack) SlimefunItems.TINY_URANIUM, RecipeType.ORE_CRUSHER, - new ItemStack[] {SlimefunItems.PURE_ORE_CLUSTER, null, null, null, null, null, null, null, null}) - .register(true); - - new SlimefunItem(Categories.MISC, (SlimefunItemStack) SlimefunItems.SMALL_URANIUM, RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {SlimefunItems.TINY_URANIUM, SlimefunItems.TINY_URANIUM, SlimefunItems.TINY_URANIUM, SlimefunItems.TINY_URANIUM, SlimefunItems.TINY_URANIUM, SlimefunItems.TINY_URANIUM, SlimefunItems.TINY_URANIUM, SlimefunItems.TINY_URANIUM, SlimefunItems.TINY_URANIUM}) - .register(true); - - new SlimefunItem(Categories.RESOURCES, (SlimefunItemStack) SlimefunItems.URANIUM, RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {SlimefunItems.SMALL_URANIUM, SlimefunItems.SMALL_URANIUM, null, SlimefunItems.SMALL_URANIUM, SlimefunItems.SMALL_URANIUM, null, null, null, null}) - .register(true); - - new Alloy((SlimefunItemStack) SlimefunItems.REDSTONE_ALLOY, - new ItemStack[] {new ItemStack(Material.REDSTONE), new ItemStack(Material.REDSTONE_BLOCK), SlimefunItems.FERROSILICON, SlimefunItems.HARDENED_METAL_INGOT, null, null, null, null, null}) - .register(true); - - SlimefunManager.registerArmorSet(SlimefunItems.GOLD_12K, new ItemStack[] {SlimefunItems.GOLD_HELMET, SlimefunItems.GOLD_CHESTPLATE, SlimefunItems.GOLD_LEGGINGS, SlimefunItems.GOLD_BOOTS}, "GOLD_12K", true, false); - - new SlimefunItem(Categories.MISC, (SlimefunItemStack) SlimefunItems.CLOTH, RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {new ItemStack(Material.WHITE_WOOL), null, null, null, null, null, null, null, null}, new CustomItem(SlimefunItems.CLOTH, 8)) - .register(true); - - new SlimefunItem(Categories.PORTABLE, (SlimefunItemStack) SlimefunItems.RAG, RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {SlimefunItems.CLOTH, SlimefunItems.CLOTH, SlimefunItems.CLOTH, new ItemStack(Material.STRING), null, new ItemStack(Material.STRING), SlimefunItems.CLOTH, SlimefunItems.CLOTH, SlimefunItems.CLOTH}) - .register(true, new ItemInteractionHandler() { - - @Override - public boolean onRightClick(ItemUseEvent e, Player p, ItemStack item) { - if (SlimefunManager.isItemSimiliar(item, SlimefunItems.RAG, true)) { - if (p.getGameMode() != GameMode.CREATIVE) ItemUtils.consumeItem(item, false); - p.getWorld().playEffect(p.getLocation(), Effect.STEP_SOUND, Material.WHITE_WOOL); - p.addPotionEffect(new PotionEffect(PotionEffectType.HEAL, 1, 0)); - p.setFireTicks(0); - return true; - } - else return false; - } - }); - - new SlimefunItem(Categories.PORTABLE, (SlimefunItemStack) SlimefunItems.BANDAGE, RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {SlimefunItems.RAG, new ItemStack(Material.STRING), SlimefunItems.RAG, null, null, null, null, null, null}, - new CustomItem(SlimefunItems.BANDAGE, 4), new String[] {"enable-bleeding"}, new Boolean[] {true}) - .register(true, new ItemInteractionHandler() { - - @Override - public boolean onRightClick(ItemUseEvent e, Player p, ItemStack item) { - if (SlimefunManager.isItemSimiliar(item, SlimefunItems.BANDAGE, true)) { - if (p.getGameMode() != GameMode.CREATIVE) ItemUtils.consumeItem(item, false); - p.getWorld().playEffect(p.getLocation(), Effect.STEP_SOUND, Material.WHITE_WOOL); - p.addPotionEffect(new PotionEffect(PotionEffectType.HEAL, 1, 1)); - p.setFireTicks(0); - return true; - } - else return false; - } - }); - - new SlimefunItem(Categories.PORTABLE, (SlimefunItemStack) SlimefunItems.SPLINT, RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {null, new ItemStack(Material.IRON_INGOT), null, new ItemStack(Material.STICK), new ItemStack(Material.STICK), new ItemStack(Material.STICK), null, new ItemStack(Material.IRON_INGOT), null}, - new CustomItem(SlimefunItems.SPLINT, 4), new String[] {"enable-broken-legs"}, new Boolean[] {true}) - .register(true, new ItemInteractionHandler() { - - @Override - public boolean onRightClick(ItemUseEvent e, Player p, ItemStack item) { - if (SlimefunManager.isItemSimiliar(item, SlimefunItems.SPLINT, true)) { - if (p.getGameMode() != GameMode.CREATIVE) ItemUtils.consumeItem(item, false); - p.getWorld().playSound(p.getLocation(), Sound.ENTITY_SKELETON_HURT, 1, 1); - p.addPotionEffect(new PotionEffect(PotionEffectType.HEAL, 1, 0)); - return true; - } - else return false; - } - }); - - new SlimefunItem(Categories.MISC, (SlimefunItemStack) SlimefunItems.CAN, RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {SlimefunItems.TIN_INGOT, SlimefunItems.TIN_INGOT, SlimefunItems.TIN_INGOT, SlimefunItems.TIN_INGOT, null, SlimefunItems.TIN_INGOT, SlimefunItems.TIN_INGOT, SlimefunItems.TIN_INGOT, SlimefunItems.TIN_INGOT}, new CustomItem(SlimefunItems.CAN, 4)) - .register(true); - - new SlimefunItem(Categories.PORTABLE, (SlimefunItemStack) SlimefunItems.VITAMINS, RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {SlimefunItems.CAN, new ItemStack(Material.APPLE), new ItemStack(Material.RED_MUSHROOM), new ItemStack(Material.SUGAR), null, null, null, null, null}) - .register(true, new ItemInteractionHandler() { - - @Override - public boolean onRightClick(ItemUseEvent e, Player p, ItemStack item) { - if (SlimefunManager.isItemSimiliar(item, SlimefunItems.VITAMINS, true)) { - if (p.getGameMode() != GameMode.CREATIVE) ItemUtils.consumeItem(item, false); - p.getWorld().playSound(p.getLocation(), Sound.ENTITY_GENERIC_EAT, 1, 1); - if (p.hasPotionEffect(PotionEffectType.POISON)) p.removePotionEffect(PotionEffectType.POISON); - if (p.hasPotionEffect(PotionEffectType.WITHER)) p.removePotionEffect(PotionEffectType.WITHER); - if (p.hasPotionEffect(PotionEffectType.SLOW)) p.removePotionEffect(PotionEffectType.SLOW); - if (p.hasPotionEffect(PotionEffectType.SLOW_DIGGING)) p.removePotionEffect(PotionEffectType.SLOW_DIGGING); - if (p.hasPotionEffect(PotionEffectType.WEAKNESS)) p.removePotionEffect(PotionEffectType.WEAKNESS); - if (p.hasPotionEffect(PotionEffectType.CONFUSION)) p.removePotionEffect(PotionEffectType.CONFUSION); - if (p.hasPotionEffect(PotionEffectType.BLINDNESS)) p.removePotionEffect(PotionEffectType.BLINDNESS); - p.setFireTicks(0); - p.addPotionEffect(new PotionEffect(PotionEffectType.HEAL, 1, 2)); - e.setCancelled(true); - return true; - } - else return false; - } - }); - - new SlimefunItem(Categories.PORTABLE, (SlimefunItemStack) SlimefunItems.MEDICINE, RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {SlimefunItems.VITAMINS, new ItemStack(Material.GLASS_BOTTLE), SlimefunItems.HEAVY_CREAM, null, null, null, null, null, null}) - .register(true, new ItemConsumptionHandler() { - - @Override - public boolean onConsume(PlayerItemConsumeEvent e, Player p, ItemStack item) { - if (SlimefunManager.isItemSimiliar(item, SlimefunItems.MEDICINE, true)) { - if (p.hasPotionEffect(PotionEffectType.POISON)) p.removePotionEffect(PotionEffectType.POISON); - if (p.hasPotionEffect(PotionEffectType.WITHER)) p.removePotionEffect(PotionEffectType.WITHER); - if (p.hasPotionEffect(PotionEffectType.SLOW)) p.removePotionEffect(PotionEffectType.SLOW); - if (p.hasPotionEffect(PotionEffectType.SLOW_DIGGING)) p.removePotionEffect(PotionEffectType.SLOW_DIGGING); - if (p.hasPotionEffect(PotionEffectType.WEAKNESS)) p.removePotionEffect(PotionEffectType.WEAKNESS); - if (p.hasPotionEffect(PotionEffectType.CONFUSION)) p.removePotionEffect(PotionEffectType.CONFUSION); - if (p.hasPotionEffect(PotionEffectType.BLINDNESS)) p.removePotionEffect(PotionEffectType.BLINDNESS); - - p.setFireTicks(0); - return true; - } - else return false; - } - }); - - new SlimefunArmorPiece(Categories.TECH, (SlimefunItemStack) SlimefunItems.NIGHT_VISION_GOGGLES, RecipeType.ARMOR_FORGE, - new ItemStack[] {new ItemStack(Material.COAL_BLOCK), new ItemStack(Material.COAL_BLOCK), new ItemStack(Material.COAL_BLOCK), new ItemStack(Material.LIME_STAINED_GLASS_PANE), new ItemStack(Material.COAL_BLOCK), new ItemStack(Material.LIME_STAINED_GLASS_PANE), new ItemStack(Material.COAL_BLOCK), null, new ItemStack(Material.COAL_BLOCK)}, - new PotionEffect[] {new PotionEffect(PotionEffectType.NIGHT_VISION, 600, 20)}) - .register(true); - - new PickaxeOfContainment(Categories.TOOLS, (SlimefunItemStack) SlimefunItems.PICKAXE_OF_CONTAINMENT, RecipeType.MAGIC_WORKBENCH, - new ItemStack[] {SlimefunItems.FERROSILICON, SlimefunItems.FERROSILICON, SlimefunItems.FERROSILICON, null, SlimefunItems.GILDED_IRON, null, null, SlimefunItems.GILDED_IRON, null}) - .register(true); - - new HerculesPickaxe(Categories.TOOLS, (SlimefunItemStack) SlimefunItems.HERCULES_PICKAXE, RecipeType.MAGIC_WORKBENCH, - new ItemStack[] {SlimefunItems.HARDENED_METAL_INGOT, SlimefunItems.HARDENED_METAL_INGOT, SlimefunItems.HARDENED_METAL_INGOT, null, SlimefunItems.FERROSILICON, null, null, SlimefunItems.FERROSILICON, null}) - .register(true); - - new TableSaw().register(); - - new SlimefunItem(Categories.MAGIC_ARMOR, (SlimefunItemStack) SlimefunItems.SLIME_HELMET_STEEL, RecipeType.ARMOR_FORGE, - new ItemStack[] {new ItemStack(Material.SLIME_BALL), SlimefunItems.STEEL_PLATE, new ItemStack(Material.SLIME_BALL), new ItemStack(Material.SLIME_BALL), null, new ItemStack(Material.SLIME_BALL), null, null, null}) - .register(true); - - new SlimefunItem(Categories.MAGIC_ARMOR, (SlimefunItemStack) SlimefunItems.SLIME_CHESTPLATE_STEEL, RecipeType.ARMOR_FORGE, - new ItemStack[] {new ItemStack(Material.SLIME_BALL), null, new ItemStack(Material.SLIME_BALL), new ItemStack(Material.SLIME_BALL), SlimefunItems.STEEL_PLATE, new ItemStack(Material.SLIME_BALL), new ItemStack(Material.SLIME_BALL), new ItemStack(Material.SLIME_BALL), new ItemStack(Material.SLIME_BALL)}) - .register(true); - - new SlimefunArmorPiece(Categories.MAGIC_ARMOR, (SlimefunItemStack) SlimefunItems.SLIME_LEGGINGS_STEEL, RecipeType.ARMOR_FORGE, - new ItemStack[] {new ItemStack(Material.SLIME_BALL), SlimefunItems.STEEL_PLATE, new ItemStack(Material.SLIME_BALL), new ItemStack(Material.SLIME_BALL), null, new ItemStack(Material.SLIME_BALL), new ItemStack(Material.SLIME_BALL), null, new ItemStack(Material.SLIME_BALL)}, - new PotionEffect[] {new PotionEffect(PotionEffectType.SPEED, 300, 2)}) - .register(true); - - new SlimefunArmorPiece(Categories.MAGIC_ARMOR, (SlimefunItemStack) SlimefunItems.SLIME_BOOTS_STEEL, RecipeType.ARMOR_FORGE, - new ItemStack[] {null, null, null, new ItemStack(Material.SLIME_BALL), null, new ItemStack(Material.SLIME_BALL), new ItemStack(Material.SLIME_BALL), SlimefunItems.STEEL_PLATE, new ItemStack(Material.SLIME_BALL)}, - new PotionEffect[] {new PotionEffect(PotionEffectType.JUMP, 300, 5)}) - .register(true); - - new SlimefunItem(Categories.WEAPONS, (SlimefunItemStack) SlimefunItems.BLADE_OF_VAMPIRES, RecipeType.MAGIC_WORKBENCH, - new ItemStack[] {null, new ItemStack(Material.WITHER_SKELETON_SKULL), null, null, new ItemStack(Material.WITHER_SKELETON_SKULL), null, null, new ItemStack(Material.BLAZE_ROD), null}) - .register(true); - - new SlimefunMachine(Categories.MACHINES_1, SlimefunItems.DIGITAL_MINER, "DIGITAL_MINER", - new ItemStack[] {SlimefunItems.SOLAR_PANEL, new ItemStack(Material.CHEST), SlimefunItems.SOLAR_PANEL, new ItemStack(Material.IRON_BLOCK), new ItemStack(Material.DISPENSER), new ItemStack(Material.IRON_BLOCK), new ItemStack(Material.IRON_BLOCK), new ItemStack(Material.HOPPER), new ItemStack(Material.IRON_BLOCK)}, - new ItemStack[0], BlockFace.SELF) - .register(true, new MultiBlockInteractionHandler() { - - @Override - public boolean onInteract(final Player p, MultiBlock mb, final Block b) { - if (mb.isMultiBlock(SlimefunItem.getByID("DIGITAL_MINER"))) { - p.sendMessage(ChatColor.DARK_RED + "THIS MACHINE WILL SOON BE REMOVED!"); - if (CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true) && Slimefun.hasUnlocked(p, SlimefunItems.DIGITAL_MINER, true)) { - Block chestBlock = b.getRelative(BlockFace.UP); - - if(!(BlockStorage.check(chestBlock.getRelative(BlockFace.WEST), "SOLAR_PANEL") && BlockStorage.check(chestBlock.getRelative(BlockFace.EAST), "SOLAR_PANEL")) && - !(BlockStorage.check(chestBlock.getRelative(BlockFace.NORTH), "SOLAR_PANEL") && BlockStorage.check(chestBlock.getRelative(BlockFace.SOUTH), "SOLAR_PANEL"))) { - return false; - } - - Chest chest = (Chest) chestBlock.getState(); - final Inventory inv = chest.getInventory(); - List ores = new ArrayList<>(); - - for (int x = b.getX() - 4; x <= b.getX() + 4; x++) { - for (int z = b.getZ() - 4; z <= b.getZ() + 4; z++) { - for (int y = b.getY(); y > 0; y--) { - if (b.getWorld().getBlockAt(x, y, z).getType().toString().endsWith("_ORE")) { - ores.add(b.getWorld().getBlockAt(x, y, z).getLocation()); - } - } - } - } - if (!ores.isEmpty()) { - final Material ore = ores.get(0).getBlock().getType(); - final ItemStack adding = new ItemStack(ore); - ores.get(0).getBlock().setType(Material.AIR); - ores.clear(); - if (InvUtils.fits(inv, adding)) { - for (int i = 0; i < 4; i++) { - int j = i; - Bukkit.getScheduler().runTaskLater(SlimefunPlugin.instance, () -> { - if (j < 3) { - b.getWorld().playEffect(b.getLocation(), Effect.STEP_SOUND, ore); - } else { - p.getWorld().playSound(p.getLocation(), Sound.ENTITY_ARROW_HIT_PLAYER, 1F, 1F); - inv.addItem(adding); - } - }, i*20L); - } - } - else SlimefunPlugin.getLocal().sendMessage(p, "machines.full-inventory", true); - } - else SlimefunPlugin.getLocal().sendMessage(p, "miner.no-ores", true); - } - return true; - } - else return false; - } - }); - - new SlimefunMachine(Categories.MACHINES_1, SlimefunItems.ADVANCED_DIGITAL_MINER, "ADVANCED_DIGITAL_MINER", - new ItemStack[] {SlimefunItems.SOLAR_PANEL, new ItemStack(Material.CHEST), SlimefunItems.SOLAR_PANEL, SlimefunItems.GOLD_24K_BLOCK, new ItemStack(Material.DISPENSER), SlimefunItems.GOLD_24K_BLOCK, SlimefunItems.GOLD_24K_BLOCK, new ItemStack(Material.HOPPER), SlimefunItems.GOLD_24K_BLOCK}, - new ItemStack[0], BlockFace.SELF) - .register(true, new MultiBlockInteractionHandler() { - - @Override - public boolean onInteract(final Player p, MultiBlock mb, final Block b) { - if (mb.isMultiBlock(SlimefunItem.getByID("ADVANCED_DIGITAL_MINER"))) { - p.sendMessage(ChatColor.DARK_RED + "THIS MACHINE WILL SOON BE REMOVED!"); - if (CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true) && Slimefun.hasUnlocked(p, SlimefunItems.ADVANCED_DIGITAL_MINER, true)) { - Block chestBlock = b.getRelative(BlockFace.UP); - - if(!(BlockStorage.check(chestBlock.getRelative(BlockFace.WEST), "SOLAR_PANEL") && BlockStorage.check(chestBlock.getRelative(BlockFace.EAST), "SOLAR_PANEL")) && - !(BlockStorage.check(chestBlock.getRelative(BlockFace.NORTH), "SOLAR_PANEL") && BlockStorage.check(chestBlock.getRelative(BlockFace.SOUTH), "SOLAR_PANEL"))) { - return false; - } - - Chest chest = (Chest) chestBlock.getState(); - final Inventory inv = chest.getInventory(); - List ores = new ArrayList<>(); - - for (int x = b.getX() - 6; x <= b.getX() + 6; x++) { - for (int z = b.getZ() - 6; z <= b.getZ() + 6; z++) { - for (int y = b.getY(); y > 0; y--) { - if (b.getWorld().getBlockAt(x, y, z).getType().toString().endsWith("_ORE")) { - ores.add(b.getWorld().getBlockAt(x, y, z).getLocation()); - } - } - } - } - if (!ores.isEmpty()) { - final Material ore = ores.get(0).getBlock().getType(); - ItemStack drop = new ItemStack(ore); - if (ore == Material.COAL_ORE) drop = new ItemStack(Material.COAL, 4); - else if (ore == Material.IRON_ORE) drop = new CustomItem(SlimefunItems.IRON_DUST, 2); - else if (ore == Material.GOLD_ORE) drop = new CustomItem(SlimefunItems.GOLD_DUST, 2); - else if (ore == Material.REDSTONE_ORE) drop = new ItemStack(Material.REDSTONE, 8); - else if (ore == Material.NETHER_QUARTZ_ORE) drop = new ItemStack(Material.QUARTZ, 4); - else if (ore == Material.LAPIS_ORE) drop = new ItemStack(Material.LAPIS_LAZULI, 12); - else { - for (ItemStack drops: ores.get(0).getBlock().getDrops()) { - if (!drops.getType().isBlock()) drop = new CustomItem(drops, 2); - } - } - final ItemStack adding = drop; - ores.get(0).getBlock().setType(Material.AIR); - ores.clear(); - if (InvUtils.fits(inv, adding)) { - for (int i = 0; i < 4; i++) { - int j = i; - Bukkit.getScheduler().runTaskLater(SlimefunPlugin.instance, () -> { - if (j < 3) { - b.getWorld().playEffect(b.getLocation(), Effect.STEP_SOUND, ore); - } - else { - p.getWorld().playSound(p.getLocation(), Sound.ENTITY_ARROW_HIT_PLAYER, 1F, 1F); - inv.addItem(adding); - } - }, i*20L); - } - } - else SlimefunPlugin.getLocal().sendMessage(p, "machines.full-inventory", true); - } - else SlimefunPlugin.getLocal().sendMessage(p, "miner.no-ores", true); - } - return true; - } - else return false; - } - }); - - new SlimefunItem(Categories.MISC, (SlimefunItemStack) SlimefunItems.GOLD_24K_BLOCK, RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {SlimefunItems.GOLD_24K, SlimefunItems.GOLD_24K, SlimefunItems.GOLD_24K, SlimefunItems.GOLD_24K, SlimefunItems.GOLD_24K, SlimefunItems.GOLD_24K, SlimefunItems.GOLD_24K, SlimefunItems.GOLD_24K, SlimefunItems.GOLD_24K}) - .register(true); - - new Composter(Categories.MACHINES_1, (SlimefunItemStack) SlimefunItems.COMPOSTER, RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {new ItemStack(Material.OAK_SLAB), null, new ItemStack(Material.OAK_SLAB), new ItemStack(Material.OAK_SLAB), null, new ItemStack(Material.OAK_SLAB), new ItemStack(Material.OAK_SLAB), new ItemStack(Material.CAULDRON), new ItemStack(Material.OAK_SLAB)}) - .register(true); - - new SlimefunItem(Categories.MAGIC_ARMOR, (SlimefunItemStack) SlimefunItems.FARMER_SHOES, RecipeType.ARMOR_FORGE, - new ItemStack[] {null, null, null, new ItemStack(Material.HAY_BLOCK), null, new ItemStack(Material.HAY_BLOCK), new ItemStack(Material.HAY_BLOCK), null, new ItemStack(Material.HAY_BLOCK)}) - .register(true); - - new ExplosivePickaxe(Categories.TOOLS, (SlimefunItemStack) SlimefunItems.EXPLOSIVE_PICKAXE, RecipeType.MAGIC_WORKBENCH, - new ItemStack[] {new ItemStack(Material.TNT), SlimefunItems.SYNTHETIC_DIAMOND, new ItemStack(Material.TNT), null, SlimefunItems.FERROSILICON, null, null, SlimefunItems.FERROSILICON, null}, - new String[] {"unbreakable-blocks", "damage-on-use"}, new Object[] {Stream.of(Material.BEDROCK, Material.END_PORTAL_FRAME, Material.END_PORTAL, Material.NETHER_PORTAL, Material.BARRIER, Material.STRUCTURE_BLOCK, Material.COMMAND_BLOCK, Material.CHAIN_COMMAND_BLOCK, Material.REPEATING_COMMAND_BLOCK).map(Material::toString).collect(Collectors.toList()), Boolean.FALSE }) - .register(true); - - new ExplosiveShovel(Categories.TOOLS, (SlimefunItemStack) SlimefunItems.EXPLOSIVE_SHOVEL, RecipeType.MAGIC_WORKBENCH, - new ItemStack[] {null, SlimefunItems.SYNTHETIC_DIAMOND, null, null, new ItemStack(Material.TNT), null, null, SlimefunItems.FERROSILICON, null}, - new String[] {"damage-on-use"}, new Object[] {Boolean.FALSE }) - .register(true); - - new AutomatedPanningMachine().register(); - - new SlimefunItem(Categories.MAGIC_ARMOR, (SlimefunItemStack) SlimefunItems.BOOTS_OF_THE_STOMPER, RecipeType.ARMOR_FORGE, - new ItemStack[] {null, null, null, new ItemStack(Material.YELLOW_WOOL), null, new ItemStack(Material.YELLOW_WOOL), new ItemStack(Material.PISTON), null, new ItemStack(Material.PISTON)}) - .register(true); - - new PickaxeOfTheSeeker(Categories.TOOLS, (SlimefunItemStack) SlimefunItems.PICKAXE_OF_THE_SEEKER, RecipeType.MAGIC_WORKBENCH, - new ItemStack[] {new ItemStack(Material.COMPASS), SlimefunItems.SYNTHETIC_DIAMOND, new ItemStack(Material.COMPASS), null, SlimefunItems.FERROSILICON, null, null, SlimefunItems.FERROSILICON, null}) - .register(true); - - new SlimefunBackpack(9, Categories.PORTABLE, (SlimefunItemStack) SlimefunItems.BACKPACK_SMALL, RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {new ItemStack(Material.LEATHER), null, new ItemStack(Material.LEATHER), SlimefunItems.GOLD_6K, new ItemStack(Material.CHEST), SlimefunItems.GOLD_6K, new ItemStack(Material.LEATHER), new ItemStack(Material.LEATHER), new ItemStack(Material.LEATHER)}) - .register(true); - - new SlimefunBackpack(18, Categories.PORTABLE, (SlimefunItemStack) SlimefunItems.BACKPACK_MEDIUM, RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {new ItemStack(Material.LEATHER), null, new ItemStack(Material.LEATHER), SlimefunItems.GOLD_10K, SlimefunItems.BACKPACK_SMALL, SlimefunItems.GOLD_10K, new ItemStack(Material.LEATHER), new ItemStack(Material.LEATHER), new ItemStack(Material.LEATHER)}) - .register(true); - - new SlimefunBackpack(27, Categories.PORTABLE, (SlimefunItemStack) SlimefunItems.BACKPACK_LARGE, RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {new ItemStack(Material.LEATHER), null, new ItemStack(Material.LEATHER), SlimefunItems.GOLD_14K, SlimefunItems.BACKPACK_MEDIUM, SlimefunItems.GOLD_14K, new ItemStack(Material.LEATHER), new ItemStack(Material.LEATHER), new ItemStack(Material.LEATHER)}) - .register(true); - - new SlimefunBackpack(36, Categories.PORTABLE, (SlimefunItemStack) SlimefunItems.WOVEN_BACKPACK, RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {SlimefunItems.CLOTH, null, SlimefunItems.CLOTH, SlimefunItems.GOLD_16K, SlimefunItems.BACKPACK_LARGE, SlimefunItems.GOLD_16K, SlimefunItems.CLOTH, SlimefunItems.CLOTH, SlimefunItems.CLOTH}) - .register(true); - - new Crucible(Categories.MACHINES_1, (SlimefunItemStack) SlimefunItems.CRUCIBLE, RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack [] {new ItemStack(Material.TERRACOTTA), null, new ItemStack(Material.TERRACOTTA), new ItemStack(Material.TERRACOTTA), null, new ItemStack(Material.TERRACOTTA), new ItemStack(Material.TERRACOTTA), new ItemStack(Material.FLINT_AND_STEEL), new ItemStack(Material.TERRACOTTA)}) - .register(true); - - new SlimefunBackpack(45, Categories.PORTABLE, (SlimefunItemStack) SlimefunItems.GILDED_BACKPACK, RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {SlimefunItems.GOLD_22K, null, SlimefunItems.GOLD_22K, new ItemStack(Material.LEATHER), SlimefunItems.WOVEN_BACKPACK, new ItemStack(Material.LEATHER), SlimefunItems.GOLD_22K, null, SlimefunItems.GOLD_22K}) - .register(true); - - new SlimefunBackpack(54, Categories.PORTABLE, (SlimefunItemStack) SlimefunItems.RADIANT_BACKPACK, RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {SlimefunItems.GOLD_24K, null, SlimefunItems.GOLD_24K, new ItemStack(Material.LEATHER), SlimefunItems.GILDED_BACKPACK, new ItemStack(Material.LEATHER), SlimefunItems.GOLD_24K, null, SlimefunItems.GOLD_24K}) - .register(true); - - new Alloy(Categories.TECH_MISC, (SlimefunItemStack) SlimefunItems.MAGNET, - new ItemStack[] {SlimefunItems.NICKEL_INGOT, SlimefunItems.ALUMINUM_DUST, SlimefunItems.IRON_DUST, SlimefunItems.COBALT_INGOT, null, null, null, null, null}) - .register(true); - - new SlimefunItem(Categories.MAGIC, (SlimefunItemStack) SlimefunItems.INFUSED_MAGNET, RecipeType.MAGIC_WORKBENCH, - new ItemStack[] {SlimefunItems.MAGIC_LUMP_3, null, SlimefunItems.MAGIC_LUMP_3, SlimefunItems.ENDER_LUMP_2, SlimefunItems.MAGNET, SlimefunItems.ENDER_LUMP_2, SlimefunItems.MAGIC_LUMP_3, null, SlimefunItems.MAGIC_LUMP_3}) - .register(true); - - new SlimefunItem(Categories.TOOLS, (SlimefunItemStack) SlimefunItems.COBALT_PICKAXE, RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {SlimefunItems.COBALT_INGOT, SlimefunItems.COBALT_INGOT, SlimefunItems.COBALT_INGOT, null, SlimefunItems.NICKEL_INGOT, null, null, SlimefunItems.NICKEL_INGOT, null}) - .register(true); - - new SlimefunItem(Categories.LUMPS_AND_MAGIC, (SlimefunItemStack) SlimefunItems.NECROTIC_SKULL, RecipeType.MAGIC_WORKBENCH, - new ItemStack[] {SlimefunItems.MAGIC_LUMP_3, null, SlimefunItems.MAGIC_LUMP_3, null, new ItemStack(Material.WITHER_SKELETON_SKULL), null, SlimefunItems.MAGIC_LUMP_3, null, SlimefunItems.MAGIC_LUMP_3}) - .register(true); - - new SlimefunItem(Categories.LUMPS_AND_MAGIC, (SlimefunItemStack) SlimefunItems.ESSENCE_OF_AFTERLIFE, RecipeType.ANCIENT_ALTAR, - new ItemStack[] {SlimefunItems.ENDER_LUMP_3, SlimefunItems.RUNE_AIR, SlimefunItems.ENDER_LUMP_3, SlimefunItems.RUNE_EARTH, SlimefunItems.NECROTIC_SKULL, SlimefunItems.RUNE_FIRE, SlimefunItems.ENDER_LUMP_3, SlimefunItems.RUNE_WATER, SlimefunItems.ENDER_LUMP_3}) - .register(true); - - new SoulboundBackpack(36, Categories.PORTABLE, (SlimefunItemStack) SlimefunItems.BOUND_BACKPACK, - new ItemStack[] {SlimefunItems.ENDER_LUMP_2, null, SlimefunItems.ENDER_LUMP_2, SlimefunItems.ESSENCE_OF_AFTERLIFE, SlimefunItems.RADIANT_BACKPACK, SlimefunItems.ESSENCE_OF_AFTERLIFE, SlimefunItems.ENDER_LUMP_2, null, SlimefunItems.ENDER_LUMP_2}) - .register(true); - - new JetBoots((SlimefunItemStack) SlimefunItems.DURALUMIN_JETBOOTS, - new ItemStack[] {null, null, null, SlimefunItems.DURALUMIN_INGOT, SlimefunItems.POWER_CRYSTAL, SlimefunItems.DURALUMIN_INGOT, SlimefunItems.STEEL_THRUSTER, SlimefunItems.SMALL_CAPACITOR, SlimefunItems.STEEL_THRUSTER}, - 0.35) - .register(true); - - new JetBoots((SlimefunItemStack) SlimefunItems.SOLDER_JETBOOTS, - new ItemStack[] {null, null, null, SlimefunItems.SOLDER_INGOT, SlimefunItems.POWER_CRYSTAL, SlimefunItems.SOLDER_INGOT, SlimefunItems.STEEL_THRUSTER, SlimefunItems.SMALL_CAPACITOR, SlimefunItems.STEEL_THRUSTER}, - 0.4) - .register(true); - - new JetBoots((SlimefunItemStack) SlimefunItems.BILLON_JETBOOTS, - new ItemStack[] {null, null, null, SlimefunItems.BILLON_INGOT, SlimefunItems.POWER_CRYSTAL, SlimefunItems.BILLON_INGOT, SlimefunItems.STEEL_THRUSTER, SlimefunItems.SMALL_CAPACITOR, SlimefunItems.STEEL_THRUSTER}, - 0.45) - .register(true); - - new JetBoots((SlimefunItemStack) SlimefunItems.STEEL_JETBOOTS, - new ItemStack[] {null, null, null, SlimefunItems.STEEL_INGOT, SlimefunItems.POWER_CRYSTAL, SlimefunItems.STEEL_INGOT, SlimefunItems.STEEL_THRUSTER, SlimefunItems.SMALL_CAPACITOR, SlimefunItems.STEEL_THRUSTER}, - 0.5) - .register(true); - - new JetBoots((SlimefunItemStack) SlimefunItems.DAMASCUS_STEEL_JETBOOTS, - new ItemStack[] {null, null, null, SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.POWER_CRYSTAL, SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.STEEL_THRUSTER, SlimefunItems.SMALL_CAPACITOR, SlimefunItems.STEEL_THRUSTER}, - 0.55) - .register(true); - - new JetBoots((SlimefunItemStack) SlimefunItems.REINFORCED_ALLOY_JETBOOTS, - new ItemStack[] {null, null, null, SlimefunItems.REINFORCED_ALLOY_INGOT, SlimefunItems.POWER_CRYSTAL, SlimefunItems.REINFORCED_ALLOY_INGOT, SlimefunItems.STEEL_THRUSTER, SlimefunItems.MEDIUM_CAPACITOR, SlimefunItems.STEEL_THRUSTER}, - 0.6) - .register(true); - - new JetBoots((SlimefunItemStack) SlimefunItems.CARBONADO_JETBOOTS, - new ItemStack[] {null, null, null, SlimefunItems.CARBONADO, SlimefunItems.POWER_CRYSTAL, SlimefunItems.CARBONADO, SlimefunItems.STEEL_THRUSTER, SlimefunItems.LARGE_CAPACITOR, SlimefunItems.STEEL_THRUSTER}, - 0.7) - .register(true); - - new JetBoots((SlimefunItemStack) SlimefunItems.ARMORED_JETBOOTS, - new ItemStack[] {null, null, null, SlimefunItems.STEEL_PLATE, SlimefunItems.POWER_CRYSTAL, SlimefunItems.STEEL_PLATE, SlimefunItems.STEEL_THRUSTER, SlimefunItems.MEDIUM_CAPACITOR, SlimefunItems.STEEL_THRUSTER}, - 0.45) - .register(true); - - new SeismicAxe(Categories.WEAPONS, (SlimefunItemStack) SlimefunItems.SEISMIC_AXE, RecipeType.MAGIC_WORKBENCH, - new ItemStack[] {SlimefunItems.HARDENED_METAL_INGOT, SlimefunItems.HARDENED_METAL_INGOT, null, SlimefunItems.HARDENED_METAL_INGOT, SlimefunItems.STAFF_ELEMENTAL, null, null, SlimefunItems.STAFF_ELEMENTAL, null}) - .register(true); - - new PickaxeOfVeinMining(Categories.TOOLS, (SlimefunItemStack) SlimefunItems.PICKAXE_OF_VEIN_MINING, RecipeType.MAGIC_WORKBENCH, - new ItemStack[] {new ItemStack(Material.EMERALD_ORE), SlimefunItems.SYNTHETIC_DIAMOND, new ItemStack(Material.EMERALD_ORE), null, SlimefunItems.GILDED_IRON, null, null, SlimefunItems.GILDED_IRON, null}) - .register(true); - - new SoulboundItem(Categories.WEAPONS, (SlimefunItemStack) SlimefunItems.SOULBOUND_SWORD, - new ItemStack[] {null, SlimefunItems.ESSENCE_OF_AFTERLIFE, null, null, new ItemStack(Material.DIAMOND_SWORD), null, null, SlimefunItems.ESSENCE_OF_AFTERLIFE, null}) - .register(true); - - new SoulboundItem(Categories.WEAPONS, (SlimefunItemStack) SlimefunItems.SOULBOUND_BOW, - new ItemStack[] {null, SlimefunItems.ESSENCE_OF_AFTERLIFE, null, null, new ItemStack(Material.BOW), null, null, SlimefunItems.ESSENCE_OF_AFTERLIFE, null}) - .register(true); - - new SoulboundItem(Categories.TOOLS, (SlimefunItemStack) SlimefunItems.SOULBOUND_PICKAXE, - new ItemStack[] {null, SlimefunItems.ESSENCE_OF_AFTERLIFE, null, null, new ItemStack(Material.DIAMOND_PICKAXE), null, null, SlimefunItems.ESSENCE_OF_AFTERLIFE, null}) - .register(true); - - new ExcludedSoulboundTool(Categories.TOOLS, (SlimefunItemStack) SlimefunItems.SOULBOUND_AXE, - new ItemStack[] {null, SlimefunItems.ESSENCE_OF_AFTERLIFE, null, null, new ItemStack(Material.DIAMOND_AXE), null, null, SlimefunItems.ESSENCE_OF_AFTERLIFE, null}) - .register(true); - - new ExcludedSoulboundTool(Categories.TOOLS, (SlimefunItemStack) SlimefunItems.SOULBOUND_SHOVEL, - new ItemStack[] {null, SlimefunItems.ESSENCE_OF_AFTERLIFE, null, null, new ItemStack(Material.DIAMOND_SHOVEL), null, null, SlimefunItems.ESSENCE_OF_AFTERLIFE, null}) - .register(true); - - new ExcludedSoulboundTool(Categories.TOOLS, (SlimefunItemStack) SlimefunItems.SOULBOUND_HOE, - new ItemStack[] {null, SlimefunItems.ESSENCE_OF_AFTERLIFE, null, null, new ItemStack(Material.DIAMOND_HOE), null, null, SlimefunItems.ESSENCE_OF_AFTERLIFE, null}) - .register(true); - - new SoulboundItem(Categories.MAGIC_ARMOR, (SlimefunItemStack) SlimefunItems.SOULBOUND_HELMET, - new ItemStack[] {null, SlimefunItems.ESSENCE_OF_AFTERLIFE, null, null, new ItemStack(Material.DIAMOND_HELMET), null, null, SlimefunItems.ESSENCE_OF_AFTERLIFE, null}) - .register(true); - - new SoulboundItem(Categories.MAGIC_ARMOR, (SlimefunItemStack) SlimefunItems.SOULBOUND_CHESTPLATE, - new ItemStack[] {null, SlimefunItems.ESSENCE_OF_AFTERLIFE, null, null, new ItemStack(Material.DIAMOND_CHESTPLATE), null, null, SlimefunItems.ESSENCE_OF_AFTERLIFE, null}) - .register(true); - - new SoulboundItem(Categories.MAGIC_ARMOR, (SlimefunItemStack) SlimefunItems.SOULBOUND_LEGGINGS, - new ItemStack[] {null, SlimefunItems.ESSENCE_OF_AFTERLIFE, null, null, new ItemStack(Material.DIAMOND_LEGGINGS), null, null, SlimefunItems.ESSENCE_OF_AFTERLIFE, null}) - .register(true); - - new SoulboundItem(Categories.MAGIC_ARMOR, (SlimefunItemStack) SlimefunItems.SOULBOUND_BOOTS, - new ItemStack[] {null, SlimefunItems.ESSENCE_OF_AFTERLIFE, null, null, new ItemStack(Material.DIAMOND_BOOTS), null, null, SlimefunItems.ESSENCE_OF_AFTERLIFE, null}) - .register(true); - - new Juicer().register(); - - new Juice(Categories.FOOD, (SlimefunItemStack) SlimefunItems.APPLE_JUICE, RecipeType.JUICER, - new ItemStack[] {new ItemStack(Material.APPLE), null, null, null, null, null, null, null, null}) - .register(true); - - new Juice(Categories.FOOD, (SlimefunItemStack) SlimefunItems.CARROT_JUICE, RecipeType.JUICER, - new ItemStack[] {new ItemStack(Material.CARROT), null, null, null, null, null, null, null, null}) - .register(true); - - new Juice(Categories.FOOD, (SlimefunItemStack) SlimefunItems.MELON_JUICE, RecipeType.JUICER, - new ItemStack[] {new ItemStack(Material.MELON), null, null, null, null, null, null, null, null}) - .register(true); - - new Juice(Categories.FOOD, (SlimefunItemStack) SlimefunItems.PUMPKIN_JUICE, RecipeType.JUICER, - new ItemStack[] {new ItemStack(Material.PUMPKIN), null, null, null, null, null, null, null, null}) - .register(true); - - new Juice(Categories.FOOD, (SlimefunItemStack) SlimefunItems.SWEET_BERRY_JUICE, RecipeType.JUICER, - new ItemStack[] {new ItemStack(Material.SWEET_BERRIES), null, null, null, null, null, null, null, null}) - .register(true); - - new Juice(Categories.FOOD, (SlimefunItemStack) SlimefunItems.GOLDEN_APPLE_JUICE, RecipeType.JUICER, - new ItemStack[] {new ItemStack(Material.GOLDEN_APPLE), null, null, null, null, null, null, null, null}) - .register(true); - - new SlimefunItem(Categories.LUMPS_AND_MAGIC, (SlimefunItemStack) SlimefunItems.BROKEN_SPAWNER, new RecipeType(SlimefunItems.PICKAXE_OF_CONTAINMENT), - new ItemStack[] {null, null, null, null, new ItemStack(Material.SPAWNER), null, null, null, null}) - .register(true); - - new SlimefunItem(Categories.MAGIC, (SlimefunItemStack) SlimefunItems.REPAIRED_SPAWNER, RecipeType.ANCIENT_ALTAR, - new ItemStack[] {SlimefunItems.RUNE_ENDER, new CustomItem(Material.EXPERIENCE_BOTTLE, "&aFlask of Knowledge"), SlimefunItems.ESSENCE_OF_AFTERLIFE, new CustomItem(Material.EXPERIENCE_BOTTLE, "&aFlask of Knowledge"), SlimefunItems.BROKEN_SPAWNER, new CustomItem(Material.EXPERIENCE_BOTTLE, "&aFlask of Knowledge"), SlimefunItems.ESSENCE_OF_AFTERLIFE, new CustomItem(Material.EXPERIENCE_BOTTLE, "&aFlask of Knowledge"), SlimefunItems.RUNE_ENDER}) - .register(true, (BlockPlaceHandler) (e, item) -> { - if (SlimefunManager.isItemSimiliar(item, SlimefunItems.REPAIRED_SPAWNER, false)) { - EntityType type = null; - - for (String line: item.getItemMeta().getLore()) { - if (ChatColor.stripColor(line).startsWith("Type: ") && !line.contains("")) { - type = EntityType.valueOf(ChatColor.stripColor(line).replace("Type: ", "").replace(' ', '_').toUpperCase()); - } - } - - if (type != null) { - CreatureSpawner spawner = (CreatureSpawner) e.getBlock().getState(); - spawner.setSpawnedType(type); - spawner.update(true, false); - } - - return true; - } - else { - return false; - } - }); - - new EnhancedFurnace(1, 1, 1, (SlimefunItemStack) SlimefunItems.ENHANCED_FURNACE, - new ItemStack[] {null, SlimefunItems.BASIC_CIRCUIT_BOARD, null, SlimefunItems.HEATING_COIL, new ItemStack(Material.FURNACE), SlimefunItems.HEATING_COIL, null, SlimefunItems.ELECTRIC_MOTOR, null}) - .register(true); - - new EnhancedFurnace(2, 1, 1, (SlimefunItemStack) SlimefunItems.ENHANCED_FURNACE_2, - new ItemStack[] {null, SlimefunItems.BASIC_CIRCUIT_BOARD, null, SlimefunItems.HEATING_COIL, SlimefunItems.ENHANCED_FURNACE, SlimefunItems.HEATING_COIL, null, SlimefunItems.ELECTRIC_MOTOR, null}) - .register(true); - - new EnhancedFurnace(2, 2, 1, (SlimefunItemStack) SlimefunItems.ENHANCED_FURNACE_3, - new ItemStack[] {null, SlimefunItems.BASIC_CIRCUIT_BOARD, null, SlimefunItems.HEATING_COIL, SlimefunItems.ENHANCED_FURNACE_2, SlimefunItems.HEATING_COIL, null, SlimefunItems.ELECTRIC_MOTOR, null}) - .register(true); - - new EnhancedFurnace(3, 2, 1, (SlimefunItemStack) SlimefunItems.ENHANCED_FURNACE_4, - new ItemStack[] {null, SlimefunItems.BASIC_CIRCUIT_BOARD, null, SlimefunItems.HEATING_COIL, SlimefunItems.ENHANCED_FURNACE_3, SlimefunItems.HEATING_COIL, null, SlimefunItems.ELECTRIC_MOTOR, null}) - .register(true); - - new EnhancedFurnace(3, 2, 2, (SlimefunItemStack) SlimefunItems.ENHANCED_FURNACE_5, - new ItemStack[] {null, SlimefunItems.BASIC_CIRCUIT_BOARD, null, SlimefunItems.HEATING_COIL, SlimefunItems.ENHANCED_FURNACE_4, SlimefunItems.HEATING_COIL, null, SlimefunItems.ELECTRIC_MOTOR, null}) - .register(true); - - new EnhancedFurnace(3, 3, 2, (SlimefunItemStack) SlimefunItems.ENHANCED_FURNACE_6, - new ItemStack[] {null, SlimefunItems.BASIC_CIRCUIT_BOARD, null, SlimefunItems.HEATING_COIL, SlimefunItems.ENHANCED_FURNACE_5, SlimefunItems.HEATING_COIL, null, SlimefunItems.ELECTRIC_MOTOR, null}) - .register(true); - - new EnhancedFurnace(4, 3, 2, (SlimefunItemStack) SlimefunItems.ENHANCED_FURNACE_7, - new ItemStack[] {null, SlimefunItems.BASIC_CIRCUIT_BOARD, null, SlimefunItems.HEATING_COIL, SlimefunItems.ENHANCED_FURNACE_6, SlimefunItems.HEATING_COIL, null, SlimefunItems.ELECTRIC_MOTOR, null}) - .register(true); - - new EnhancedFurnace(4, 4, 2, (SlimefunItemStack) SlimefunItems.ENHANCED_FURNACE_8, - new ItemStack[] {null, SlimefunItems.BASIC_CIRCUIT_BOARD, null, SlimefunItems.HEATING_COIL, SlimefunItems.ENHANCED_FURNACE_7, SlimefunItems.HEATING_COIL, null, SlimefunItems.ELECTRIC_MOTOR, null}) - .register(true); - - new EnhancedFurnace(5, 4, 2, (SlimefunItemStack) SlimefunItems.ENHANCED_FURNACE_9, - new ItemStack[] {null, SlimefunItems.BASIC_CIRCUIT_BOARD, null, SlimefunItems.HEATING_COIL, SlimefunItems.ENHANCED_FURNACE_8, SlimefunItems.HEATING_COIL, null, SlimefunItems.ELECTRIC_MOTOR, null}) - .register(true); - - new EnhancedFurnace(5, 5, 2, (SlimefunItemStack) SlimefunItems.ENHANCED_FURNACE_10, - new ItemStack[] {null, SlimefunItems.BASIC_CIRCUIT_BOARD, null, SlimefunItems.HEATING_COIL, SlimefunItems.ENHANCED_FURNACE_9, SlimefunItems.HEATING_COIL, null, SlimefunItems.ELECTRIC_MOTOR, null}) - .register(true); - - new EnhancedFurnace(5, 5, 3, (SlimefunItemStack) SlimefunItems.ENHANCED_FURNACE_11, - new ItemStack[] {null, SlimefunItems.BASIC_CIRCUIT_BOARD, null, SlimefunItems.HEATING_COIL, SlimefunItems.ENHANCED_FURNACE_10, SlimefunItems.HEATING_COIL, null, SlimefunItems.ELECTRIC_MOTOR, null}) - .register(true); - - new EnhancedFurnace(10, 10, 3, (SlimefunItemStack) SlimefunItems.REINFORCED_FURNACE, - new ItemStack[] {SlimefunItems.REINFORCED_ALLOY_INGOT, SlimefunItems.BASIC_CIRCUIT_BOARD, SlimefunItems.REINFORCED_ALLOY_INGOT, SlimefunItems.HEATING_COIL, SlimefunItems.ENHANCED_FURNACE_11, SlimefunItems.HEATING_COIL, SlimefunItems.REINFORCED_ALLOY_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.REINFORCED_ALLOY_INGOT}) - .register(true); - - new EnhancedFurnace(20, 10, 3, (SlimefunItemStack) SlimefunItems.CARBONADO_EDGED_FURNACE, - new ItemStack[] {SlimefunItems.CARBONADO, SlimefunItems.BASIC_CIRCUIT_BOARD, SlimefunItems.CARBONADO, SlimefunItems.HEATING_COIL, SlimefunItems.REINFORCED_FURNACE, SlimefunItems.HEATING_COIL, SlimefunItems.CARBONADO, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.CARBONADO}) - .register(true); - - new SlimefunItem(Categories.TECH_MISC, (SlimefunItemStack) SlimefunItems.ELECTRO_MAGNET, RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {SlimefunItems.NICKEL_INGOT, SlimefunItems.MAGNET, SlimefunItems.COBALT_INGOT, null, SlimefunItems.BATTERY, null, null, null, null}) - .register(true); - - new SlimefunItem(Categories.TECH_MISC, (SlimefunItemStack) SlimefunItems.ELECTRIC_MOTOR, RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {SlimefunItems.COPPER_WIRE, SlimefunItems.COPPER_WIRE, SlimefunItems.COPPER_WIRE, null, SlimefunItems.ELECTRO_MAGNET, null, SlimefunItems.COPPER_WIRE, SlimefunItems.COPPER_WIRE, SlimefunItems.COPPER_WIRE}) - .register(true); - - new SlimefunItem(Categories.TECH_MISC, (SlimefunItemStack) SlimefunItems.HEATING_COIL, RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {SlimefunItems.COPPER_WIRE, SlimefunItems.COPPER_WIRE, SlimefunItems.COPPER_WIRE, SlimefunItems.COPPER_WIRE, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.COPPER_WIRE, SlimefunItems.COPPER_WIRE, SlimefunItems.COPPER_WIRE, SlimefunItems.COPPER_WIRE}) - .register(true); - - new SlimefunItem(Categories.TECH_MISC, (SlimefunItemStack) SlimefunItems.COPPER_WIRE, RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {null, null, null, SlimefunItems.COPPER_INGOT, SlimefunItems.COPPER_INGOT, SlimefunItems.COPPER_INGOT, null, null, null}, new CustomItem(SlimefunItems.COPPER_WIRE, 8)) - .register(true); - - new BlockPlacer(Categories.MACHINES_1, (SlimefunItemStack) SlimefunItems.BLOCK_PLACER, RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {SlimefunItems.GOLD_4K, new ItemStack(Material.PISTON), SlimefunItems.GOLD_4K, new ItemStack(Material.IRON_INGOT), SlimefunItems.ELECTRIC_MOTOR, new ItemStack(Material.IRON_INGOT), SlimefunItems.GOLD_4K, new ItemStack(Material.PISTON), SlimefunItems.GOLD_4K}, - new String[] {"unplaceable-blocks"}, new Object[] {Stream.of(Material.STRUCTURE_BLOCK, Material.COMMAND_BLOCK, Material.CHAIN_COMMAND_BLOCK, Material.REPEATING_COMMAND_BLOCK).map(Material::toString).collect(Collectors.toList())}) - .register(true); - - new TelepositionScroll(Categories.MAGIC, (SlimefunItemStack) SlimefunItems.SCROLL_OF_DIMENSIONAL_TELEPOSITION, RecipeType.MAGIC_WORKBENCH, - new ItemStack[] {null, SlimefunItems.ENDER_LUMP_3, SlimefunItems.MAGIC_EYE_OF_ENDER, SlimefunItems.ENDER_LUMP_3, SlimefunItems.MAGICAL_BOOK_COVER, SlimefunItems.ENDER_LUMP_3, SlimefunItems.MAGIC_EYE_OF_ENDER, SlimefunItems.ENDER_LUMP_3, null}) - .register(true); - - new SlimefunBow((SlimefunItemStack) SlimefunItems.EXPLOSIVE_BOW, - new ItemStack[] {null, new ItemStack(Material.STICK), new ItemStack(Material.GUNPOWDER), SlimefunItems.STAFF_FIRE, null, SlimefunItems.SULFATE, null, new ItemStack(Material.STICK), new ItemStack(Material.GUNPOWDER)}) - .register(true, new BowShootHandler() { - - @Override - public boolean onHit(EntityDamageByEntityEvent e, LivingEntity n) { - if (SlimefunManager.isItemSimiliar(SlimefunPlugin.getUtilities().arrows.get(e.getDamager().getUniqueId()), SlimefunItems.EXPLOSIVE_BOW, true)) { - Vector vector = n.getVelocity(); - vector.setY(0.6); - n.setVelocity(vector); - n.getWorld().createExplosion(n.getLocation(), 0F); - n.getWorld().playSound(n.getLocation(), Sound.ENTITY_GENERIC_EXPLODE, 1F, 1F); - return true; - } - else return false; - } - }); - - new SlimefunBow((SlimefunItemStack) (SlimefunItemStack) SlimefunItems.ICY_BOW, - new ItemStack[] {null, new ItemStack(Material.STICK), new ItemStack(Material.ICE), SlimefunItems.STAFF_WATER, null, new ItemStack(Material.PACKED_ICE), null, new ItemStack(Material.STICK), new ItemStack(Material.ICE)}) - .register(true, new BowShootHandler() { - - @Override - public boolean onHit(EntityDamageByEntityEvent e, LivingEntity n) { - if (SlimefunManager.isItemSimiliar(SlimefunPlugin.getUtilities().arrows.get(e.getDamager().getUniqueId()), SlimefunItems.ICY_BOW, true)) { - n.getWorld().playEffect(n.getLocation(), Effect.STEP_SOUND, Material.ICE); - n.getWorld().playEffect(n.getEyeLocation(), Effect.STEP_SOUND, Material.ICE); - n.addPotionEffect(new PotionEffect(PotionEffectType.SLOW, 20 * 2, 10)); - n.addPotionEffect(new PotionEffect(PotionEffectType.JUMP, 20 * 2, -10)); - return true; - } - else return false; - } - }); - - new KnowledgeTome(Categories.MAGIC, (SlimefunItemStack) SlimefunItems.TOME_OF_KNOWLEDGE_SHARING, RecipeType.MAGIC_WORKBENCH, - new ItemStack[] {null, new ItemStack(Material.FEATHER), null, new ItemStack(Material.INK_SAC), SlimefunItems.MAGICAL_BOOK_COVER, new ItemStack(Material.GLASS_BOTTLE), null, new ItemStack(Material.WRITABLE_BOOK), null}) - .register(true); - - new KnowledgeFlask(Categories.MAGIC, (SlimefunItemStack) SlimefunItems.FLASK_OF_KNOWLEDGE, RecipeType.MAGIC_WORKBENCH, - new ItemStack[] {null, null, null, SlimefunItems.MAGIC_LUMP_2, new ItemStack(Material.GLASS_PANE), SlimefunItems.MAGIC_LUMP_2, null, SlimefunItems.MAGIC_LUMP_2, null}, new CustomItem(SlimefunItems.FLASK_OF_KNOWLEDGE, 8)) - .register(true); - - new ExcludedBlock(Categories.BIRTHDAY, new CustomItem(new ItemStack(Material.CAKE), "&bBirthday Cake"), "BIRTHDAY_CAKE", RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {null, new ItemStack(Material.TORCH), null, new ItemStack(Material.SUGAR), new ItemStack(Material.CAKE), new ItemStack(Material.SUGAR), null, null, null}) - .register(true); - - new SlimefunItem(Categories.CHRISTMAS, SlimefunItems.CHRISTMAS_MILK, "CHRISTMAS_MILK", RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {new ItemStack(Material.MILK_BUCKET), new ItemStack(Material.GLASS_BOTTLE), null, null, null, null, null, null, null}, new CustomItem(SlimefunItems.CHRISTMAS_MILK, 4)) - .register(true); - - new SlimefunItem(Categories.CHRISTMAS, SlimefunItems.CHRISTMAS_CHOCOLATE_MILK, "CHRISTMAS_CHOCOLATE_MILK", RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {SlimefunItems.CHRISTMAS_MILK, new ItemStack(Material.COCOA_BEANS), null, null, null, null, null, null, null}, new CustomItem(SlimefunItems.CHRISTMAS_CHOCOLATE_MILK, 2)) - .register(true); - - new SlimefunItem(Categories.CHRISTMAS, SlimefunItems.CHRISTMAS_EGG_NOG, "CHRISTMAS_EGG_NOG", RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {SlimefunItems.CHRISTMAS_MILK, new ItemStack(Material.EGG), null, null, null, null, null, null, null}, new CustomItem(SlimefunItems.CHRISTMAS_EGG_NOG, 2)) - .register(true); - - new SlimefunItem(Categories.CHRISTMAS, SlimefunItems.CHRISTMAS_APPLE_CIDER, "CHRISTMAS_APPLE_CIDER", RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {SlimefunItems.APPLE_JUICE, new ItemStack(Material.SUGAR), null, null, null, null, null, null, null}, new CustomItem(SlimefunItems.CHRISTMAS_APPLE_CIDER, 2)) - .register(true); - - new SlimefunItem(Categories.CHRISTMAS, SlimefunItems.CHRISTMAS_COOKIE, "CHRISTMAS_COOKIE", RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {new ItemStack(Material.COOKIE), new ItemStack(Material.SUGAR), new ItemStack(Material.LIME_DYE), null, null, null, null, null, null}, new CustomItem(SlimefunItems.CHRISTMAS_COOKIE, 16)) - .register(true); - - new SlimefunItem(Categories.CHRISTMAS, SlimefunItems.CHRISTMAS_FRUIT_CAKE, "CHRISTMAS_FRUIT_CAKE", RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {new ItemStack(Material.EGG), new ItemStack(Material.APPLE), new ItemStack(Material.MELON), new ItemStack(Material.SUGAR), null, null, null, null, null}, new CustomItem(SlimefunItems.CHRISTMAS_FRUIT_CAKE, 4)) - .register(true); - - new SlimefunItem(Categories.CHRISTMAS, SlimefunItems.CHRISTMAS_APPLE_PIE, "CHRISTMAS_APPLE_PIE", RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {new ItemStack(Material.SUGAR), new ItemStack(Material.APPLE), new ItemStack(Material.EGG), null, null, null, null, null, null}, new CustomItem(SlimefunItems.CHRISTMAS_APPLE_PIE, 2)) - .register(true); - - new SlimefunItem(Categories.CHRISTMAS, SlimefunItems.CHRISTMAS_HOT_CHOCOLATE, "CHRISTMAS_HOT_CHOCOLATE", RecipeType.SMELTERY, - new ItemStack[] {SlimefunItems.CHRISTMAS_CHOCOLATE_MILK, null, null, null, null, null, null, null, null}, SlimefunItems.CHRISTMAS_HOT_CHOCOLATE) - .register(true); - - new SlimefunItem(Categories.CHRISTMAS, SlimefunItems.CHRISTMAS_CAKE, "CHRISTMAS_CAKE", RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {new ItemStack(Material.EGG), new ItemStack(Material.SUGAR), SlimefunItems.WHEAT_FLOUR, new ItemStack(Material.MILK_BUCKET), null, null, null, null, null}, new CustomItem(SlimefunItems.CHRISTMAS_CAKE, 4)) - .register(true); - - new SlimefunItem(Categories.CHRISTMAS, SlimefunItems.CHRISTMAS_CARAMEL, "CHRISTMAS_CARAMEL", RecipeType.SMELTERY, - new ItemStack[] {new ItemStack(Material.SUGAR), new ItemStack(Material.SUGAR), null, null, null, null, null, null, null}, new CustomItem(SlimefunItems.CHRISTMAS_CARAMEL, 4)) - .register(true); - - new SlimefunItem(Categories.CHRISTMAS, SlimefunItems.CHRISTMAS_CARAMEL_APPLE, "CHRISTMAS_CARAMEL_APPLE", RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {null, new ItemStack(Material.SUGAR), null, null, new ItemStack(Material.APPLE), null, null, new ItemStack(Material.STICK), null}, new CustomItem(SlimefunItems.CHRISTMAS_CARAMEL_APPLE, 2)) - .register(true); - - new SlimefunItem(Categories.CHRISTMAS, SlimefunItems.CHRISTMAS_CHOCOLATE_APPLE, "CHRISTMAS_CHOCOLATE_APPLE", RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {null, new ItemStack(Material.COCOA_BEANS), null, null, new ItemStack(Material.APPLE), null, null, new ItemStack(Material.STICK), null}, new CustomItem(SlimefunItems.CHRISTMAS_CARAMEL_APPLE, 2)) - .register(true); - - new SlimefunItem(Categories.CHRISTMAS, SlimefunItems.CHRISTMAS_PRESENT, "CHRISTMAS_PRESENT", RecipeType.MAGIC_WORKBENCH, - new ItemStack[] {null, new ItemStack(Material.NAME_TAG), null, new ItemStack(Material.RED_WOOL), new ItemStack(Material.GREEN_WOOL), new ItemStack(Material.RED_WOOL), new ItemStack(Material.RED_WOOL), new ItemStack(Material.GREEN_WOOL), new ItemStack(Material.RED_WOOL)}) - .register(true); - - new SlimefunItem(Categories.EASTER, SlimefunItems.EASTER_CARROT_PIE, "EASTER_CARROT_PIE", RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {new ItemStack(Material.SUGAR), new ItemStack(Material.CARROT), new ItemStack(Material.EGG), null, null, null, null, null, null}, new CustomItem(SlimefunItems.EASTER_CARROT_PIE, 2)) - .register(true); - - new SlimefunItem(Categories.EASTER, SlimefunItems.CHRISTMAS_APPLE_PIE, "EASTER_APPLE_PIE", RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {new ItemStack(Material.SUGAR), new ItemStack(Material.APPLE), new ItemStack(Material.EGG), null, null, null, null, null, null}, new CustomItem(SlimefunItems.CHRISTMAS_APPLE_PIE, 2)) - .register(true); - - new SlimefunItem(Categories.EASTER, (SlimefunItemStack) SlimefunItems.EASTER_EGG, RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {null, null, null, new ItemStack(Material.LIME_DYE), new ItemStack(Material.EGG), new ItemStack(Material.PURPLE_DYE), null, null, null}, new CustomItem(SlimefunItems.EASTER_EGG, 2)) - .register(true, new ItemInteractionHandler() { - - @Override - public boolean onRightClick(ItemUseEvent e, Player p, ItemStack item) { - if (SlimefunManager.isItemSimiliar(item, SlimefunItems.EASTER_EGG, true)) { - e.setCancelled(true); - if (p.getGameMode() != GameMode.CREATIVE) ItemUtils.consumeItem(item, false); - FireworkShow.launchRandom(e.getPlayer(), 2); - - List gifts = new ArrayList<>(); - - for (int i = 0; i < 2; i++) { - gifts.add(new CustomItem(SlimefunItems.EASTER_CARROT_PIE, 4)); - gifts.add(new CustomItem(SlimefunItems.CARROT_JUICE, 1)); - gifts.add(new ItemStack(Material.EMERALD)); - gifts.add(new ItemStack(Material.CAKE)); - gifts.add(new ItemStack(Material.RABBIT_FOOT)); - gifts.add(new ItemStack(Material.GOLDEN_CARROT, 4)); - } - - p.getWorld().dropItemNaturally(p.getLocation(), gifts.get(random.nextInt(gifts.size()))); - return true; - } - else return false; - } - }); - - new SlimefunItem(Categories.MISC, (SlimefunItemStack) SlimefunItems.REINFORCED_PLATE, RecipeType.COMPRESSOR, - new ItemStack[] {new CustomItem(SlimefunItems.REINFORCED_ALLOY_INGOT, 8), null, null, null, null, null, null, null, null}) - .register(true); - - new SlimefunItem(Categories.TECH_MISC, (SlimefunItemStack) SlimefunItems.HARDENED_GLASS, RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {new ItemStack(Material.GLASS), new ItemStack(Material.GLASS), new ItemStack(Material.GLASS), new ItemStack(Material.GLASS), SlimefunItems.REINFORCED_PLATE, new ItemStack(Material.GLASS), new ItemStack(Material.GLASS), new ItemStack(Material.GLASS), new ItemStack(Material.GLASS)}, - new CustomItem(SlimefunItems.HARDENED_GLASS, 16)) - .register(true); - - new SlimefunItem(Categories.TECH_MISC, (SlimefunItemStack) SlimefunItems.SOLAR_ARRAY, RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {SlimefunItems.HARDENED_GLASS, SlimefunItems.HARDENED_GLASS, SlimefunItems.HARDENED_GLASS, SlimefunItems.SOLAR_PANEL, SlimefunItems.SOLAR_PANEL, SlimefunItems.SOLAR_PANEL, SlimefunItems.HARDENED_GLASS, SlimefunItems.HARDENED_GLASS, SlimefunItems.HARDENED_GLASS}) - .register(true); - - new SlimefunItem(Categories.TECH_MISC, (SlimefunItemStack) SlimefunItems.COOLING_UNIT, RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {new ItemStack(Material.ICE), new ItemStack(Material.ICE), new ItemStack(Material.ICE), SlimefunItems.ALUMINUM_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.ALUMINUM_INGOT, new ItemStack(Material.ICE), new ItemStack(Material.ICE), new ItemStack(Material.ICE)}) - .register(true); - - new SlimefunBackpack(27, Categories.PORTABLE, (SlimefunItemStack) SlimefunItems.COOLER, RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {SlimefunItems.CLOTH, SlimefunItems.CLOTH, SlimefunItems.CLOTH, SlimefunItems.ALUMINUM_INGOT, SlimefunItems.COOLING_UNIT, SlimefunItems.ALUMINUM_INGOT, SlimefunItems.ALUMINUM_INGOT, SlimefunItems.ALUMINUM_INGOT, SlimefunItems.ALUMINUM_INGOT}) - .register(true); - - new SlimefunItem(Categories.TECH_MISC, (SlimefunItemStack) SlimefunItems.WITHER_PROOF_OBSIDIAN, RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {SlimefunItems.LEAD_INGOT, new ItemStack(Material.OBSIDIAN), SlimefunItems.LEAD_INGOT, new ItemStack(Material.OBSIDIAN), SlimefunItems.HARDENED_GLASS, new ItemStack(Material.OBSIDIAN), SlimefunItems.LEAD_INGOT, new ItemStack(Material.OBSIDIAN), SlimefunItems.LEAD_INGOT}, - new CustomItem(SlimefunItems.WITHER_PROOF_OBSIDIAN, 4)) - .register(true); - - new AncientPedestal(Categories.LUMPS_AND_MAGIC, (SlimefunItemStack) SlimefunItems.ANCIENT_PEDESTAL, RecipeType.MAGIC_WORKBENCH, - new ItemStack[] {new ItemStack(Material.OBSIDIAN), SlimefunItems.GOLD_8K, new ItemStack(Material.OBSIDIAN), null, new ItemStack(Material.STONE), null, new ItemStack(Material.OBSIDIAN), SlimefunItems.GOLD_8K, new ItemStack(Material.OBSIDIAN)}, new CustomItem(SlimefunItems.ANCIENT_PEDESTAL, 4)) - .register(true); - - new SlimefunItem(Categories.MAGIC, (SlimefunItemStack) SlimefunItems.ANCIENT_ALTAR, RecipeType.MAGIC_WORKBENCH, - new ItemStack[] {null, new ItemStack(Material.ENCHANTING_TABLE), null, SlimefunItems.MAGIC_LUMP_3, SlimefunItems.GOLD_8K, SlimefunItems.MAGIC_LUMP_3, new ItemStack(Material.OBSIDIAN), SlimefunItems.GOLD_8K, new ItemStack(Material.OBSIDIAN)}) - .register(true); - - // Slimefun 4 - - new EnergyRegulator(Categories.ELECTRICITY, (SlimefunItemStack) SlimefunItems.ENERGY_REGULATOR, RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {SlimefunItems.SILVER_INGOT, SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.SILVER_INGOT, SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.SILVER_INGOT, SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.SILVER_INGOT}) - .register(true); - - new SlimefunItem(Categories.MISC, (SlimefunItemStack) SlimefunItems.DUCT_TAPE, RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {SlimefunItems.ALUMINUM_DUST, SlimefunItems.ALUMINUM_DUST, SlimefunItems.ALUMINUM_DUST, new ItemStack(Material.SLIME_BALL), new ItemStack(Material.WHITE_WOOL), new ItemStack(Material.SLIME_BALL), new ItemStack(Material.PAPER), new ItemStack(Material.PAPER), new ItemStack(Material.PAPER)}, new CustomItem(SlimefunItems.DUCT_TAPE, 2)) - .register(true); - - new SlimefunItem(Categories.ELECTRICITY, (SlimefunItemStack) SlimefunItems.SMALL_CAPACITOR, RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {SlimefunItems.DURALUMIN_INGOT, SlimefunItems.REDSTONE_ALLOY, SlimefunItems.DURALUMIN_INGOT, new ItemStack(Material.REDSTONE), SlimefunItems.SULFATE, new ItemStack(Material.REDSTONE), SlimefunItems.DURALUMIN_INGOT, SlimefunItems.REDSTONE_ALLOY, SlimefunItems.DURALUMIN_INGOT}) - .registerDistibutingCapacitor(true, 128); - - new SlimefunItem(Categories.ELECTRICITY, (SlimefunItemStack) SlimefunItems.MEDIUM_CAPACITOR, RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {SlimefunItems.BILLON_INGOT, SlimefunItems.REDSTONE_ALLOY, SlimefunItems.BILLON_INGOT, new ItemStack(Material.REDSTONE), SlimefunItems.SMALL_CAPACITOR, new ItemStack(Material.REDSTONE), SlimefunItems.BILLON_INGOT, SlimefunItems.REDSTONE_ALLOY, SlimefunItems.BILLON_INGOT}) - .registerDistibutingCapacitor(true, 512); - - new SlimefunItem(Categories.ELECTRICITY, (SlimefunItemStack) SlimefunItems.BIG_CAPACITOR, RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {SlimefunItems.STEEL_INGOT, SlimefunItems.REDSTONE_ALLOY, SlimefunItems.STEEL_INGOT, new ItemStack(Material.REDSTONE), SlimefunItems.MEDIUM_CAPACITOR, new ItemStack(Material.REDSTONE), SlimefunItems.STEEL_INGOT, SlimefunItems.REDSTONE_ALLOY, SlimefunItems.STEEL_INGOT}) - .registerDistibutingCapacitor(true, 1024); - - new SlimefunItem(Categories.ELECTRICITY, (SlimefunItemStack) SlimefunItems.LARGE_CAPACITOR, RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {SlimefunItems.REINFORCED_ALLOY_INGOT, SlimefunItems.REDSTONE_ALLOY, SlimefunItems.REINFORCED_ALLOY_INGOT, new ItemStack(Material.REDSTONE), SlimefunItems.BIG_CAPACITOR, new ItemStack(Material.REDSTONE), SlimefunItems.REINFORCED_ALLOY_INGOT, SlimefunItems.REDSTONE_ALLOY, SlimefunItems.REINFORCED_ALLOY_INGOT}) - .registerDistibutingCapacitor(true, 8192); - - new SlimefunItem(Categories.ELECTRICITY, (SlimefunItemStack) SlimefunItems.CARBONADO_EDGED_CAPACITOR, RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {SlimefunItems.CARBONADO, SlimefunItems.REDSTONE_ALLOY, SlimefunItems.CARBONADO, new ItemStack(Material.REDSTONE), SlimefunItems.LARGE_CAPACITOR, new ItemStack(Material.REDSTONE), SlimefunItems.CARBONADO, SlimefunItems.REDSTONE_ALLOY, SlimefunItems.CARBONADO}) - .registerDistibutingCapacitor(true, 65536); - - new SlimefunItem(Categories.ELECTRICITY, (SlimefunItemStack) SlimefunItems.SOLAR_GENERATOR, RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {SlimefunItems.SOLAR_PANEL, SlimefunItems.SOLAR_PANEL, SlimefunItems.SOLAR_PANEL, SlimefunItems.ALUMINUM_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.ALUMINUM_INGOT, null, SlimefunItems.ALUMINUM_INGOT, null}) - .register(true, new EnergyTicker() { - - @Override - public double generateEnergy(Location l, SlimefunItem item, Config data) { - if (!l.getWorld().isChunkLoaded(l.getBlockX() >> 4, l.getBlockZ() >> 4) || l.getBlock().getLightFromSky() != 15) return 0D; - if (l.getWorld().getTime() < 12300 || l.getWorld().getTime() > 23850) return 2D; - return 0D; - } - - @Override - public boolean explode(Location l) { - return false; - } - }); - - new SlimefunItem(Categories.ELECTRICITY, (SlimefunItemStack) SlimefunItems.SOLAR_GENERATOR_2, RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {SlimefunItems.SOLAR_GENERATOR, SlimefunItems.ALUMINUM_INGOT, SlimefunItems.SOLAR_GENERATOR, SlimefunItems.ALUMINUM_INGOT, new ItemStack(Material.REDSTONE), SlimefunItems.ALUMINUM_INGOT, SlimefunItems.SOLAR_GENERATOR, SlimefunItems.ALUMINUM_INGOT, SlimefunItems.SOLAR_GENERATOR}) - .register(true, new EnergyTicker() { - - @Override - public double generateEnergy(Location l, SlimefunItem item, Config data) { - if (!l.getWorld().isChunkLoaded(l.getBlockX() >> 4, l.getBlockZ() >> 4) || l.getBlock().getLightFromSky() != 15) return 0D; - if (l.getWorld().getTime() < 12300 || l.getWorld().getTime() > 23850) return 8; - return 0D; - } - - @Override - public boolean explode(Location l) { - return false; - } - }); - - new SlimefunItem(Categories.ELECTRICITY, (SlimefunItemStack) SlimefunItems.SOLAR_GENERATOR_3, RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {SlimefunItems.SOLAR_GENERATOR_2, SlimefunItems.ALUMINUM_INGOT, SlimefunItems.SOLAR_GENERATOR_2, SlimefunItems.ALUMINUM_INGOT, SlimefunItems.CARBONADO, SlimefunItems.ALUMINUM_INGOT, SlimefunItems.SOLAR_GENERATOR_2, SlimefunItems.ALUMINUM_INGOT, SlimefunItems.SOLAR_GENERATOR_2}) - .register(true, new EnergyTicker() { - - @Override - public double generateEnergy(Location l, SlimefunItem item, Config data) { - if (!l.getWorld().isChunkLoaded(l.getBlockX() >> 4, l.getBlockZ() >> 4) || l.getBlock().getLightFromSky() != 15) return 0D; - if (l.getWorld().getTime() < 12300 || l.getWorld().getTime() > 23850) return 32; - return 0D; - } - - @Override - public boolean explode(Location l) { - return false; - } - }); - - new SlimefunItem(Categories.ELECTRICITY, (SlimefunItemStack) SlimefunItems.SOLAR_GENERATOR_4, RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {SlimefunItems.SOLAR_GENERATOR_3, SlimefunItems.BLISTERING_INGOT_3, SlimefunItems.SOLAR_GENERATOR_3, SlimefunItems.BLISTERING_INGOT_3, SlimefunItems.ELECTRO_MAGNET, SlimefunItems.BLISTERING_INGOT_3, SlimefunItems.SOLAR_GENERATOR_3, SlimefunItems.BLISTERING_INGOT_3, SlimefunItems.SOLAR_GENERATOR_3}) - .register(true, new EnergyTicker() { - - @Override - public double generateEnergy(Location l, SlimefunItem item, Config data) { - if (!l.getWorld().isChunkLoaded(l.getBlockX() >> 4, l.getBlockZ() >> 4) || l.getBlock().getLightFromSky() != 15) return 0D; - if (l.getWorld().getTime() < 12300 || l.getWorld().getTime() > 23850) return 128; - return 64D; - } - - @Override - public boolean explode(Location l) { - return false; - } - }); - - new ChargingBench(Categories.ELECTRICITY, SlimefunItems.CHARGING_BENCH, "CHARGING_BENCH", RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {null, SlimefunItems.ELECTRO_MAGNET, null, SlimefunItems.BATTERY, new ItemStack(Material.CRAFTING_TABLE), SlimefunItems.BATTERY, null, SlimefunItems.SMALL_CAPACITOR, null}) - .registerChargeableBlock(true, 128); - - new ElectricFurnace(Categories.ELECTRICITY, SlimefunItems.ELECTRIC_FURNACE, "ELECTRIC_FURNACE", RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {null, new ItemStack(Material.FURNACE), null, SlimefunItems.GILDED_IRON, SlimefunItems.HEATING_COIL, SlimefunItems.GILDED_IRON, SlimefunItems.GILDED_IRON, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.GILDED_IRON}) { - - @Override - public int getEnergyConsumption() { - return 2; - } - - @Override - public int getSpeed() { - return 1; - } - - }.registerChargeableBlock(true, 64); - - new ElectricFurnace(Categories.ELECTRICITY, SlimefunItems.ELECTRIC_FURNACE_2, "ELECTRIC_FURNACE_2", RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {null, SlimefunItems.ELECTRIC_MOTOR, null, SlimefunItems.GILDED_IRON, SlimefunItems.ELECTRIC_FURNACE, SlimefunItems.GILDED_IRON, SlimefunItems.GILDED_IRON, SlimefunItems.HEATING_COIL, SlimefunItems.GILDED_IRON}) { - - @Override - public int getEnergyConsumption() { - return 3; - } - - @Override - public int getSpeed() { - return 2; - } - - }.registerChargeableBlock(true, 128); - - new ElectricFurnace(Categories.ELECTRICITY, SlimefunItems.ELECTRIC_FURNACE_3, "ELECTRIC_FURNACE_3", RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {null, SlimefunItems.ELECTRIC_MOTOR, null, SlimefunItems.STEEL_INGOT, SlimefunItems.ELECTRIC_FURNACE_2, SlimefunItems.STEEL_INGOT, SlimefunItems.GILDED_IRON, SlimefunItems.HEATING_COIL, SlimefunItems.GILDED_IRON}) { - - @Override - public int getEnergyConsumption() { - return 5; - } - - @Override - public int getSpeed() { - return 4; - } - - }.registerChargeableBlock(true, 128); - - new ElectricGoldPan(Categories.ELECTRICITY, SlimefunItems.ELECTRIC_GOLD_PAN, "ELECTRIC_GOLD_PAN", RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {null, SlimefunItems.GOLD_PAN, null, new ItemStack(Material.FLINT), SlimefunItems.ELECTRIC_MOTOR, new ItemStack(Material.FLINT), SlimefunItems.ALUMINUM_INGOT, SlimefunItems.ALUMINUM_INGOT, SlimefunItems.ALUMINUM_INGOT}) { - - @Override - public int getEnergyConsumption() { - return 1; - } - - @Override - public int getSpeed() { - return 1; - } - - }.registerChargeableBlock(true, 128); - - new ElectricGoldPan(Categories.ELECTRICITY, SlimefunItems.ELECTRIC_GOLD_PAN_2, "ELECTRIC_GOLD_PAN_2", RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {null, SlimefunItems.GOLD_PAN, null, new ItemStack(Material.IRON_INGOT), SlimefunItems.ELECTRIC_GOLD_PAN, new ItemStack(Material.IRON_INGOT), SlimefunItems.DURALUMIN_INGOT, SlimefunItems.DURALUMIN_INGOT, SlimefunItems.DURALUMIN_INGOT}) { - - @Override - public int getEnergyConsumption() { - return 2; - } - - @Override - public int getSpeed() { - return 3; - } - - }.registerChargeableBlock(true, 128); - - new ElectricGoldPan(Categories.ELECTRICITY, SlimefunItems.ELECTRIC_GOLD_PAN_3, "ELECTRIC_GOLD_PAN_3", RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {null, SlimefunItems.GOLD_PAN, null, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.ELECTRIC_GOLD_PAN_2, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.COBALT_INGOT, SlimefunItems.BLISTERING_INGOT_3, SlimefunItems.COBALT_INGOT}) { - - @Override - public int getEnergyConsumption() { - return 7; - } - - @Override - public int getSpeed() { - return 10; - } - - }.registerChargeableBlock(true, 512); - - new ElectricDustWasher(Categories.ELECTRICITY, SlimefunItems.ELECTRIC_DUST_WASHER, "ELECTRIC_DUST_WASHER", RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {null, new ItemStack(Material.WATER_BUCKET), null, SlimefunItems.ELECTRO_MAGNET, SlimefunItems.ELECTRIC_GOLD_PAN, SlimefunItems.ELECTRO_MAGNET, SlimefunItems.COPPER_INGOT, SlimefunItems.COPPER_INGOT, SlimefunItems.COPPER_INGOT}) { - - @Override - public int getEnergyConsumption() { - return 3; - } - - @Override - public int getSpeed() { - return 1; - } - - }.registerChargeableBlock(true, 128); - - new ElectricDustWasher(Categories.ELECTRICITY, SlimefunItems.ELECTRIC_DUST_WASHER_2, "ELECTRIC_DUST_WASHER_2", RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {null, new ItemStack(Material.WATER_BUCKET), null, SlimefunItems.ELECTRO_MAGNET, SlimefunItems.ELECTRIC_DUST_WASHER, SlimefunItems.ELECTRO_MAGNET, SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.DAMASCUS_STEEL_INGOT}) { - - @Override - public int getEnergyConsumption() { - return 5; - } - - @Override - public int getSpeed() { - return 2; - } - - }.registerChargeableBlock(true, 128); - - new ElectricDustWasher(Categories.ELECTRICITY, SlimefunItems.ELECTRIC_DUST_WASHER_3, "ELECTRIC_DUST_WASHER_3", RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {null, new ItemStack(Material.WATER_BUCKET), null, SlimefunItems.ELECTRO_MAGNET, SlimefunItems.ELECTRIC_DUST_WASHER_2, SlimefunItems.ELECTRO_MAGNET, SlimefunItems.CORINTHIAN_BRONZE_INGOT, SlimefunItems.BLISTERING_INGOT_3, SlimefunItems.CORINTHIAN_BRONZE_INGOT}) { - - @Override - public int getEnergyConsumption() { - return 15; - } - - @Override - public int getSpeed() { - return 10; - } - - }.registerChargeableBlock(true, 512); - - new ElectricIngotFactory(Categories.ELECTRICITY, SlimefunItems.ELECTRIC_INGOT_FACTORY, "ELECTRIC_INGOT_FACTORY", RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {null, new ItemStack(Material.FLINT_AND_STEEL), null, SlimefunItems.HEATING_COIL, SlimefunItems.ELECTRIC_DUST_WASHER, SlimefunItems.HEATING_COIL, SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.DAMASCUS_STEEL_INGOT}) { - - @Override - public int getEnergyConsumption() { - return 4; - } - - @Override - public int getSpeed() { - return 1; - } - - }.registerChargeableBlock(true, 256); - - new ElectricIngotFactory(Categories.ELECTRICITY, SlimefunItems.ELECTRIC_INGOT_FACTORY_2, "ELECTRIC_INGOT_FACTORY_2", RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {SlimefunItems.GILDED_IRON, new ItemStack(Material.FLINT_AND_STEEL), SlimefunItems.GILDED_IRON, SlimefunItems.HEATING_COIL, SlimefunItems.ELECTRIC_INGOT_FACTORY, SlimefunItems.HEATING_COIL, SlimefunItems.BRASS_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.BRASS_INGOT}) { - - @Override - public int getEnergyConsumption() { - return 7; - } - - @Override - public int getSpeed() { - return 2; - } - - }.registerChargeableBlock(true, 256); - - new ElectricIngotFactory(Categories.ELECTRICITY, SlimefunItems.ELECTRIC_INGOT_FACTORY_3, "ELECTRIC_INGOT_FACTORY_3", RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {SlimefunItems.GILDED_IRON, new ItemStack(Material.FLINT_AND_STEEL), SlimefunItems.GILDED_IRON, SlimefunItems.HEATING_COIL, SlimefunItems.ELECTRIC_INGOT_FACTORY_2, SlimefunItems.HEATING_COIL, SlimefunItems.BRASS_INGOT, SlimefunItems.BLISTERING_INGOT_3, SlimefunItems.BRASS_INGOT}) { - - @Override - public int getEnergyConsumption() { - return 20; - } - - @Override - public int getSpeed() { - return 8; - } - - }.registerChargeableBlock(true, 512); - - new ElectrifiedCrucible(Categories.ELECTRICITY, SlimefunItems.ELECTRIFIED_CRUCIBLE, "ELECTRIFIED_CRUCIBLE", RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {SlimefunItems.LEAD_INGOT, SlimefunItems.CRUCIBLE, SlimefunItems.LEAD_INGOT, SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.HEATING_COIL, SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.LEAD_INGOT, SlimefunItems.LARGE_CAPACITOR, SlimefunItems.LEAD_INGOT}) { - - @Override - public int getEnergyConsumption() { - return 24; - } - - @Override - public int getSpeed() { - return 1; - } - - }.registerChargeableBlock(true, 1024); - - new ElectrifiedCrucible(Categories.ELECTRICITY, SlimefunItems.ELECTRIFIED_CRUCIBLE_2, "ELECTRIFIED_CRUCIBLE_2", RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {SlimefunItems.CORINTHIAN_BRONZE_INGOT, SlimefunItems.ELECTRIFIED_CRUCIBLE, SlimefunItems.CORINTHIAN_BRONZE_INGOT, SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.LEAD_INGOT, SlimefunItems.HEATING_COIL, SlimefunItems.LEAD_INGOT}) { - - @Override - public int getEnergyConsumption() { - return 40; - } - - @Override - public int getSpeed() { - return 2; - } - - }.registerChargeableBlock(true, 1024); - - new ElectrifiedCrucible(Categories.ELECTRICITY, SlimefunItems.ELECTRIFIED_CRUCIBLE_3, "ELECTRIFIED_CRUCIBLE_3", RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {SlimefunItems.CORINTHIAN_BRONZE_INGOT, SlimefunItems.ELECTRIFIED_CRUCIBLE_2, SlimefunItems.CORINTHIAN_BRONZE_INGOT, SlimefunItems.STEEL_PLATE, SlimefunItems.POWER_CRYSTAL, SlimefunItems.STEEL_PLATE, SlimefunItems.LEAD_INGOT, SlimefunItems.LEAD_INGOT, SlimefunItems.LEAD_INGOT}) { - - @Override - public int getEnergyConsumption() { - return 60; - } - - @Override - public int getSpeed() { - return 4; - } - - }.registerChargeableBlock(true, 1024); - - new ElectricOreGrinder(Categories.ELECTRICITY, SlimefunItems.ELECTRIC_ORE_GRINDER, "ELECTRIC_ORE_GRINDER", RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {null, new ItemStack(Material.DIAMOND_PICKAXE), null, SlimefunItems.GILDED_IRON, SlimefunItems.HEATING_COIL, SlimefunItems.GILDED_IRON, SlimefunItems.GILDED_IRON, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.GILDED_IRON}) { - - @Override - public int getEnergyConsumption() { - return 6; - } - - @Override - public int getSpeed() { - return 1; - } - - }.registerChargeableBlock(true, 128); - - new ElectricOreGrinder(Categories.ELECTRICITY, SlimefunItems.ELECTRIC_ORE_GRINDER_2, "ELECTRIC_ORE_GRINDER_2", RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {null, new ItemStack(Material.DIAMOND_PICKAXE), null, SlimefunItems.HEATING_COIL, SlimefunItems.ELECTRIC_ORE_GRINDER, SlimefunItems.HEATING_COIL, SlimefunItems.GILDED_IRON, SlimefunItems.BLISTERING_INGOT_3, SlimefunItems.GILDED_IRON}) { - - @Override - public int getEnergyConsumption() { - return 15; - } - - @Override - public int getSpeed() { - return 4; - } - - }.registerChargeableBlock(true, 512); - - new HeatedPressureChamber(Categories.ELECTRICITY, SlimefunItems.HEATED_PRESSURE_CHAMBER, "HEATED_PRESSURE_CHAMBER", RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {SlimefunItems.LEAD_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.LEAD_INGOT, SlimefunItems.LEAD_INGOT, new ItemStack(Material.GLASS), SlimefunItems.LEAD_INGOT, SlimefunItems.LEAD_INGOT, SlimefunItems.HEATING_COIL, SlimefunItems.LEAD_INGOT}) { - - @Override - public int getEnergyConsumption() { - return 5; - } - - @Override - public int getSpeed() { - return 1; - } - - }.registerChargeableBlock(true, 128); - - new HeatedPressureChamber(Categories.ELECTRICITY, SlimefunItems.HEATED_PRESSURE_CHAMBER_2, "HEATED_PRESSURE_CHAMBER_2", RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {SlimefunItems.LEAD_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.LEAD_INGOT, SlimefunItems.LEAD_INGOT, SlimefunItems.HEATED_PRESSURE_CHAMBER, SlimefunItems.LEAD_INGOT, SlimefunItems.REINFORCED_ALLOY_INGOT, SlimefunItems.HEATING_COIL, SlimefunItems.REINFORCED_ALLOY_INGOT}) { - - @Override - public int getEnergyConsumption() { - return 22; - } - - @Override - public int getSpeed() { - return 5; - } - - }.registerChargeableBlock(true, 256); - - new ElectricIngotPulverizer(Categories.ELECTRICITY, SlimefunItems.ELECTRIC_INGOT_PULVERIZER, "ELECTRIC_INGOT_PULVERIZER", RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {null, SlimefunItems.ELECTRIC_ORE_GRINDER, null, SlimefunItems.LEAD_INGOT, SlimefunItems.MEDIUM_CAPACITOR, SlimefunItems.LEAD_INGOT, SlimefunItems.LEAD_INGOT, SlimefunItems.HEATING_COIL, SlimefunItems.LEAD_INGOT}) - .registerChargeableBlock(true, 512); - - new CoalGenerator(Categories.ELECTRICITY, SlimefunItems.COAL_GENERATOR, "COAL_GENERATOR", RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {SlimefunItems.HEATING_COIL, new ItemStack(Material.FURNACE), SlimefunItems.HEATING_COIL, SlimefunItems.NICKEL_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.NICKEL_INGOT, null, SlimefunItems.NICKEL_INGOT, null}) { - - @Override - public int getEnergyProduction() { - return 8; - } - - }.registerUnrechargeableBlock(true, 64); - - new CoalGenerator(Categories.ELECTRICITY, SlimefunItems.COAL_GENERATOR_2, "COAL_GENERATOR_2", RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {new ItemStack(Material.MAGMA_BLOCK), SlimefunItems.HEATING_COIL, new ItemStack(Material.MAGMA_BLOCK), SlimefunItems.HARDENED_METAL_INGOT, SlimefunItems.COAL_GENERATOR, SlimefunItems.HARDENED_METAL_INGOT, null, SlimefunItems.ELECTRIC_MOTOR, null}) { - - @Override - public int getEnergyProduction() { - return 15; - } - - }.registerUnrechargeableBlock(true, 256); - - new BioGenerator(Categories.ELECTRICITY, SlimefunItems.BIO_REACTOR, "BIO_REACTOR", RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {SlimefunItems.HEATING_COIL, SlimefunItems.COMPOSTER, SlimefunItems.HEATING_COIL, SlimefunItems.ALUMINUM_BRASS_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.ALUMINUM_BRASS_INGOT, null, SlimefunItems.ALUMINUM_BRASS_INGOT, null}) { - - @Override - public int getEnergyProduction() { - return 4; - } - - }.registerUnrechargeableBlock(true, 128); - - new AutoDrier(Categories.ELECTRICITY, SlimefunItems.AUTO_DRIER, "AUTO_DRIER", RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {null, null, null, SlimefunItems.HEATING_COIL, new ItemStack(Material.SMOKER), SlimefunItems.HEATING_COIL, null, new ItemStack(Material.CAMPFIRE), null}) - .registerChargeableBlock(true, 128); - - new AutoEnchanter(Categories.ELECTRICITY, SlimefunItems.AUTO_ENCHANTER, "AUTO_ENCHANTER", RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {null, new ItemStack(Material.ENCHANTING_TABLE), null, SlimefunItems.CARBONADO, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.CARBONADO, SlimefunItems.WITHER_PROOF_OBSIDIAN, SlimefunItems.WITHER_PROOF_OBSIDIAN, SlimefunItems.WITHER_PROOF_OBSIDIAN}) - .registerChargeableBlock(true, 128); - - new AutoDisenchanter(Categories.ELECTRICITY, SlimefunItems.AUTO_DISENCHANTER, "AUTO_DISENCHANTER", RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {new ItemStack(Material.REDSTONE), new ItemStack(Material.ANVIL), new ItemStack(Material.REDSTONE), SlimefunItems.CARBONADO, SlimefunItems.AUTO_ENCHANTER, SlimefunItems.CARBONADO, SlimefunItems.WITHER_PROOF_OBSIDIAN, SlimefunItems.WITHER_PROOF_OBSIDIAN, SlimefunItems.WITHER_PROOF_OBSIDIAN}) - .registerChargeableBlock(true, 128); - - new AutoAnvil(Categories.ELECTRICITY, SlimefunItems.AUTO_ANVIL, "AUTO_ANVIL", RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {null, new ItemStack(Material.ANVIL), null, SlimefunItems.REINFORCED_ALLOY_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.REINFORCED_ALLOY_INGOT, new ItemStack(Material.IRON_BLOCK), new ItemStack(Material.IRON_BLOCK), new ItemStack(Material.IRON_BLOCK)}) { - - @Override - public int getRepairFactor() { - return 10; - } - - @Override - public int getEnergyConsumption() { - return 12; - } - - }.registerChargeableBlock(true, 128); - - new AutoAnvil(Categories.ELECTRICITY, SlimefunItems.AUTO_ANVIL_2, "AUTO_ANVIL_2", RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {null, SlimefunItems.AUTO_ANVIL, null, SlimefunItems.STEEL_PLATE, SlimefunItems.HEATING_COIL, SlimefunItems.STEEL_PLATE, new ItemStack(Material.IRON_BLOCK), new ItemStack(Material.IRON_BLOCK), new ItemStack(Material.IRON_BLOCK)}) { - - @Override - public int getRepairFactor() { - return 4; - } - - @Override - public int getEnergyConsumption() { - return 16; - } - - }.registerChargeableBlock(true, 256); - - new SlimefunItem(Categories.ELECTRICITY, SlimefunItems.MULTIMETER, "MULTIMETER", RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {SlimefunItems.COPPER_INGOT, null, SlimefunItems.COPPER_INGOT, null, SlimefunItems.REDSTONE_ALLOY, null, null, SlimefunItems.GOLD_6K, null}) - .register(true, new ItemInteractionHandler() { - - @Override - public boolean onRightClick(ItemUseEvent e, Player p, ItemStack item) { - if (SlimefunManager.isItemSimiliar(e.getItem(), SlimefunItems.MULTIMETER, true)) { - if (e.getClickedBlock() != null && ChargableBlock.isChargable(e.getClickedBlock())) { - e.setCancelled(true); - p.sendMessage(""); - p.sendMessage(ChatColor.translateAlternateColorCodes('&', "&bStored Energy: &3" + DoubleHandler.getFancyDouble(ChargableBlock.getCharge(e.getClickedBlock())) + " J")); - p.sendMessage(ChatColor.translateAlternateColorCodes('&', "&bCapacity: &3" + DoubleHandler.getFancyDouble(ChargableBlock.getMaxCharge(e.getClickedBlock())) + " J")); - p.sendMessage(""); - } - return true; - } - return false; - } - }); - - new SlimefunItem(Categories.MISC, SlimefunItems.PLASTIC_SHEET, "PLASTIC_SHEET", RecipeType.HEATED_PRESSURE_CHAMBER, - new ItemStack[] {null, null, null, null, SlimefunItems.BUCKET_OF_OIL, null, null, null, null}) - .register(true); - - new SlimefunItem(Categories.MISC, SlimefunItems.ANDROID_MEMORY_CORE, "ANDROID_MEMORY_CORE", RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {SlimefunItems.BRASS_INGOT, new ItemStack(Material.ORANGE_STAINED_GLASS), SlimefunItems.BRASS_INGOT, SlimefunItems.POWER_CRYSTAL, SlimefunItems.TIN_DUST, SlimefunItems.POWER_CRYSTAL, SlimefunItems.BRASS_INGOT, new ItemStack(Material.ORANGE_STAINED_GLASS), SlimefunItems.BRASS_INGOT}) - .register(true); - - new GPSTransmitter(Categories.GPS, SlimefunItems.GPS_TRANSMITTER, "GPS_TRANSMITTER", RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {null, null, SlimefunItems.ELECTRO_MAGNET, SlimefunItems.STEEL_INGOT, SlimefunItems.ADVANCED_CIRCUIT_BOARD, SlimefunItems.STEEL_INGOT, SlimefunItems.STEEL_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.STEEL_INGOT}) { - - @Override - public double getMultiplier(int y) { - return y; - } - - @Override - public int getEnergyConsumption() { - return 1; - } - - } - .registerChargeableBlock(true, 16); - - new GPSTransmitter(Categories.GPS, SlimefunItems.GPS_TRANSMITTER_2, "GPS_TRANSMITTER_2", RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {SlimefunItems.GPS_TRANSMITTER, SlimefunItems.BRONZE_INGOT, SlimefunItems.GPS_TRANSMITTER, SlimefunItems.BRONZE_INGOT, SlimefunItems.CARBON, SlimefunItems.BRONZE_INGOT, SlimefunItems.GPS_TRANSMITTER, SlimefunItems.BRONZE_INGOT, SlimefunItems.GPS_TRANSMITTER}) { - - @Override - public double getMultiplier(int y) { - return y * 4.0 + 100; - } - - @Override - public int getEnergyConsumption() { - return 3; - } - - }.registerChargeableBlock(true, 64); - - new GPSTransmitter(Categories.GPS, SlimefunItems.GPS_TRANSMITTER_3, "GPS_TRANSMITTER_3", RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {SlimefunItems.GPS_TRANSMITTER_2, SlimefunItems.CORINTHIAN_BRONZE_INGOT, SlimefunItems.GPS_TRANSMITTER_2, SlimefunItems.CORINTHIAN_BRONZE_INGOT, SlimefunItems.CARBONADO, SlimefunItems.CORINTHIAN_BRONZE_INGOT, SlimefunItems.GPS_TRANSMITTER_2, SlimefunItems.CORINTHIAN_BRONZE_INGOT, SlimefunItems.GPS_TRANSMITTER_2}) { - - @Override - public double getMultiplier(int y) { - return y * 16.0 + 500; - } - - @Override - public int getEnergyConsumption() { - return 11; - } - - }.registerChargeableBlock(true, 256); - - new GPSTransmitter(Categories.GPS, SlimefunItems.GPS_TRANSMITTER_4, "GPS_TRANSMITTER_4", RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {SlimefunItems.GPS_TRANSMITTER_3, SlimefunItems.BLISTERING_INGOT_3, SlimefunItems.GPS_TRANSMITTER_3, SlimefunItems.NICKEL_INGOT, SlimefunItems.CARBONADO, SlimefunItems.NICKEL_INGOT, SlimefunItems.GPS_TRANSMITTER_3, SlimefunItems.BLISTERING_INGOT_3, SlimefunItems.GPS_TRANSMITTER_3}) { - - @Override - public double getMultiplier(int y) { - return y * 64.0 + 600; - } - - @Override - public int getEnergyConsumption() { - return 46; - } - - }.registerChargeableBlock(true, 1024); - - new SlimefunItem(Categories.GPS, SlimefunItems.GPS_CONTROL_PANEL, "GPS_CONTROL_PANEL", RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {null, null, SlimefunItems.ELECTRO_MAGNET, SlimefunItems.COBALT_INGOT, SlimefunItems.ADVANCED_CIRCUIT_BOARD, SlimefunItems.COBALT_INGOT, SlimefunItems.ALUMINUM_BRASS_INGOT, SlimefunItems.ALUMINUM_BRASS_INGOT, SlimefunItems.ALUMINUM_BRASS_INGOT}) - .register(true, new ItemInteractionHandler() { - - @Override - public boolean onRightClick(ItemUseEvent e, Player p, ItemStack stack) { - if (e.getClickedBlock() == null) return false; - String item = BlockStorage.checkID(e.getClickedBlock()); - if (item == null || !item.equals("GPS_CONTROL_PANEL")) return false; - e.setCancelled(true); - - Slimefun.getGPSNetwork().openTransmitterControlPanel(p); - return true; - } - }); - - new SlimefunItem(Categories.GPS, SlimefunItems.GPS_MARKER_TOOL, "GPS_MARKER_TOOL", RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {null, SlimefunItems.ELECTRO_MAGNET, null, new ItemStack(Material.LAPIS_LAZULI), SlimefunItems.BASIC_CIRCUIT_BOARD, new ItemStack(Material.LAPIS_LAZULI), new ItemStack(Material.REDSTONE), SlimefunItems.REDSTONE_ALLOY, new ItemStack(Material.REDSTONE)}) - .register(true); - - new SlimefunItem(Categories.GPS, SlimefunItems.GPS_EMERGENCY_TRANSMITTER, "GPS_EMERGENCY_TRANSMITTER", RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {null, SlimefunItems.ELECTRO_MAGNET, null, null, SlimefunItems.GPS_TRANSMITTER, null, null, SlimefunItems.ESSENCE_OF_AFTERLIFE, null}) - .register(true); - - new ProgrammableAndroid(Categories.ELECTRICITY, SlimefunItems.PROGRAMMABLE_ANDROID, "PROGRAMMABLE_ANDROID", RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {SlimefunItems.PLASTIC_SHEET, SlimefunItems.ANDROID_MEMORY_CORE, SlimefunItems.PLASTIC_SHEET, SlimefunItems.COAL_GENERATOR, SlimefunItems.ELECTRIC_MOTOR, new ItemStack(Material.CHEST), SlimefunItems.PLASTIC_SHEET, SlimefunItems.PLASTIC_SHEET, SlimefunItems.PLASTIC_SHEET}) { - - @Override - public AndroidType getAndroidType() { - return AndroidType.NONE; - } - - @Override - public float getFuelEfficiency() { - return 1; - } - - @Override - public int getTier() { - return 1; - } - - } - .register(true); - - new ProgrammableAndroid(Categories.ELECTRICITY, SlimefunItems.PROGRAMMABLE_ANDROID_MINER, "PROGRAMMABLE_ANDROID_MINER", RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {null, null, null, new ItemStack(Material.DIAMOND_PICKAXE), SlimefunItems.PROGRAMMABLE_ANDROID, new ItemStack(Material.DIAMOND_PICKAXE), null, SlimefunItems.ELECTRIC_MOTOR, null}) { - - @Override - public AndroidType getAndroidType() { - return AndroidType.MINER; - } - - @Override - public float getFuelEfficiency() { - return 1; - } - - @Override - public int getTier() { - return 1; - } - - } - .register(true); - - new ProgrammableAndroid(Categories.ELECTRICITY, SlimefunItems.PROGRAMMABLE_ANDROID_FARMER, "PROGRAMMABLE_ANDROID_FARMER", RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {null, null, null, new ItemStack(Material.DIAMOND_HOE), SlimefunItems.PROGRAMMABLE_ANDROID, new ItemStack(Material.DIAMOND_HOE), null, SlimefunItems.ELECTRIC_MOTOR, null}) { - - @Override - public AndroidType getAndroidType() { - return AndroidType.FARMER; - } - - @Override - public float getFuelEfficiency() { - return 1; - } - - @Override - public int getTier() { - return 1; - } - - } - .register(true); - - new ProgrammableAndroid(Categories.ELECTRICITY, SlimefunItems.PROGRAMMABLE_ANDROID_WOODCUTTER, "PROGRAMMABLE_ANDROID_WOODCUTTER", RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {null, null, null, new ItemStack(Material.DIAMOND_AXE), SlimefunItems.PROGRAMMABLE_ANDROID, new ItemStack(Material.DIAMOND_AXE), null, SlimefunItems.ELECTRIC_MOTOR, null}) { - - @Override - public AndroidType getAndroidType() { - return AndroidType.WOODCUTTER; - } - - @Override - public float getFuelEfficiency() { - return 1; - } - - @Override - public int getTier() { - return 1; - } - - } - .register(true); - - new ProgrammableAndroid(Categories.ELECTRICITY, SlimefunItems.PROGRAMMABLE_ANDROID_FISHERMAN, "PROGRAMMABLE_ANDROID_FISHERMAN", RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {null, null, null, new ItemStack(Material.FISHING_ROD), SlimefunItems.PROGRAMMABLE_ANDROID, new ItemStack(Material.FISHING_ROD), null, SlimefunItems.ELECTRIC_MOTOR, null}) { - - @Override - public AndroidType getAndroidType() { - return AndroidType.FISHERMAN; - } - - @Override - public float getFuelEfficiency() { - return 1; - } - - @Override - public int getTier() { - return 1; - } - - } - .register(true); - - new ProgrammableAndroid(Categories.ELECTRICITY, SlimefunItems.PROGRAMMABLE_ANDROID_BUTCHER, "PROGRAMMABLE_ANDROID_BUTCHER", RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {null, SlimefunItems.GPS_TRANSMITTER, null, new ItemStack(Material.DIAMOND_SWORD), SlimefunItems.PROGRAMMABLE_ANDROID, new ItemStack(Material.DIAMOND_SWORD), null, SlimefunItems.ELECTRIC_MOTOR, null}) { - - @Override - public AndroidType getAndroidType() { - return AndroidType.FIGHTER; - } - - @Override - public float getFuelEfficiency() { - return 1; - } - - @Override - public int getTier() { - return 1; - } - - } - .register(true); - - new SlimefunItem(Categories.ELECTRICITY, SlimefunItems.ANDROID_INTERFACE_ITEMS, "ANDROID_INTERFACE_ITEMS", RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {SlimefunItems.PLASTIC_SHEET, SlimefunItems.PLASTIC_SHEET, SlimefunItems.PLASTIC_SHEET, SlimefunItems.PLASTIC_SHEET, SlimefunItems.BASIC_CIRCUIT_BOARD, new ItemStack(Material.BLUE_STAINED_GLASS), SlimefunItems.PLASTIC_SHEET, SlimefunItems.PLASTIC_SHEET, SlimefunItems.PLASTIC_SHEET}) - .register(true); - - new SlimefunItem(Categories.ELECTRICITY, SlimefunItems.ANDROID_INTERFACE_FUEL, "ANDROID_INTERFACE_FUEL", RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {SlimefunItems.PLASTIC_SHEET, SlimefunItems.PLASTIC_SHEET, SlimefunItems.PLASTIC_SHEET, new ItemStack(Material.RED_STAINED_GLASS), SlimefunItems.BASIC_CIRCUIT_BOARD, SlimefunItems.PLASTIC_SHEET, SlimefunItems.PLASTIC_SHEET, SlimefunItems.PLASTIC_SHEET, SlimefunItems.PLASTIC_SHEET}) - .register(true); - - - new ProgrammableAndroid(Categories.ELECTRICITY, SlimefunItems.PROGRAMMABLE_ANDROID_2, "PROGRAMMABLE_ANDROID_2", RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {SlimefunItems.PLASTIC_SHEET, SlimefunItems.ANDROID_MEMORY_CORE, SlimefunItems.PLASTIC_SHEET, SlimefunItems.COMBUSTION_REACTOR, SlimefunItems.PROGRAMMABLE_ANDROID, new ItemStack(Material.CHEST), SlimefunItems.PLASTIC_SHEET, SlimefunItems.POWER_CRYSTAL, SlimefunItems.PLASTIC_SHEET}) { - - @Override - public AndroidType getAndroidType() { - return AndroidType.NONE; - } - - @Override - public float getFuelEfficiency() { - return 1.5F; - } - - @Override - public int getTier() { - return 2; - } - - } - .register(true); - - new ProgrammableAndroid(Categories.ELECTRICITY, SlimefunItems.PROGRAMMABLE_ANDROID_2_FISHERMAN, "PROGRAMMABLE_ANDROID_2_FISHERMAN", RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {null, null, null, new ItemStack(Material.FISHING_ROD), SlimefunItems.PROGRAMMABLE_ANDROID_2, new ItemStack(Material.FISHING_ROD), null, SlimefunItems.ELECTRIC_MOTOR, null}) { - - @Override - public AndroidType getAndroidType() { - return AndroidType.FISHERMAN; - } - - @Override - public float getFuelEfficiency() { - return 1.5F; - } - - @Override - public int getTier() { - return 2; - } - - } - .register(true); - - new ProgrammableAndroid(Categories.ELECTRICITY, SlimefunItems.PROGRAMMABLE_ANDROID_2_BUTCHER, "PROGRAMMABLE_ANDROID_2_BUTCHER", RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {null, SlimefunItems.GPS_TRANSMITTER, null, new ItemStack(Material.DIAMOND_SWORD), SlimefunItems.PROGRAMMABLE_ANDROID_2, new ItemStack(Material.DIAMOND_SWORD), null, SlimefunItems.ELECTRIC_MOTOR, null}) { - - @Override - public AndroidType getAndroidType() { - return AndroidType.FIGHTER; - } - - @Override - public float getFuelEfficiency() { - return 1.5F; - } - - @Override - public int getTier() { - return 2; - } - - } - .register(true); - - new ProgrammableAndroid(Categories.ELECTRICITY, SlimefunItems.PROGRAMMABLE_ANDROID_2_FARMER, "PROGRAMMABLE_ANDROID_2_FARMER", RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {null, SlimefunItems.GPS_TRANSMITTER, null, new ItemStack(Material.DIAMOND_HOE), SlimefunItems.PROGRAMMABLE_ANDROID_2, new ItemStack(Material.DIAMOND_HOE), null, SlimefunItems.ELECTRIC_MOTOR, null}) { - - @Override - public AndroidType getAndroidType() { - return AndroidType.ADVANCED_FARMER; - } - - @Override - public float getFuelEfficiency() { - return 1.5F; - } - - @Override - public int getTier() { - return 2; - } - - } - .register(true); - - - new ProgrammableAndroid(Categories.ELECTRICITY, SlimefunItems.PROGRAMMABLE_ANDROID_3, "PROGRAMMABLE_ANDROID_3", RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {SlimefunItems.PLASTIC_SHEET, SlimefunItems.ANDROID_MEMORY_CORE, SlimefunItems.PLASTIC_SHEET, SlimefunItems.NUCLEAR_REACTOR, SlimefunItems.PROGRAMMABLE_ANDROID_2, new ItemStack(Material.CHEST), SlimefunItems.BLISTERING_INGOT_3, SlimefunItems.POWER_CRYSTAL, SlimefunItems.BLISTERING_INGOT_3}) { - - @Override - public AndroidType getAndroidType() { - return AndroidType.NONE; - } - - @Override - public float getFuelEfficiency() { - return 1F; - } - - @Override - public int getTier() { - return 3; - } - - } - .register(true); - - new ProgrammableAndroid(Categories.ELECTRICITY, SlimefunItems.PROGRAMMABLE_ANDROID_3_FISHERMAN, "PROGRAMMABLE_ANDROID_3_FISHERMAN", RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {null, null, null, new ItemStack(Material.FISHING_ROD), SlimefunItems.PROGRAMMABLE_ANDROID_3, new ItemStack(Material.FISHING_ROD), null, SlimefunItems.ELECTRIC_MOTOR, null}) { - - @Override - public AndroidType getAndroidType() { - return AndroidType.FISHERMAN; - } - - @Override - public float getFuelEfficiency() { - return 1F; - } - - @Override - public int getTier() { - return 3; - } - - } - .register(true); - - new ProgrammableAndroid(Categories.ELECTRICITY, SlimefunItems.PROGRAMMABLE_ANDROID_3_BUTCHER, "PROGRAMMABLE_ANDROID_3_BUTCHER", RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {null, SlimefunItems.GPS_TRANSMITTER_3, null, new ItemStack(Material.DIAMOND_SWORD), SlimefunItems.PROGRAMMABLE_ANDROID_3, new ItemStack(Material.DIAMOND_SWORD), null, SlimefunItems.ELECTRIC_MOTOR, null}) { - - @Override - public AndroidType getAndroidType() { - return AndroidType.FIGHTER; - } - - @Override - public float getFuelEfficiency() { - return 1F; - } - - @Override - public int getTier() { - return 3; - } - - } - .register(true); - - new SlimefunItem(Categories.LUMPS_AND_MAGIC, SlimefunItems.BLANK_RUNE, "BLANK_RUNE", RecipeType.ANCIENT_ALTAR, - new ItemStack[] {new ItemStack(Material.STONE), SlimefunItems.MAGIC_LUMP_1, new ItemStack(Material.STONE), SlimefunItems.MAGIC_LUMP_1, new ItemStack(Material.OBSIDIAN), SlimefunItems.MAGIC_LUMP_1,new ItemStack(Material.STONE), SlimefunItems.MAGIC_LUMP_1, new ItemStack(Material.STONE)}) - .register(true); - - new SlimefunItem(Categories.LUMPS_AND_MAGIC, SlimefunItems.RUNE_AIR, "ANCIENT_RUNE_AIR", RecipeType.ANCIENT_ALTAR, - new ItemStack[] {new ItemStack(Material.FEATHER), SlimefunItems.MAGIC_LUMP_1, new ItemStack(Material.FEATHER), new ItemStack(Material.GHAST_TEAR), SlimefunItems.BLANK_RUNE, new ItemStack(Material.GHAST_TEAR) ,new ItemStack(Material.FEATHER), SlimefunItems.MAGIC_LUMP_1, new ItemStack(Material.FEATHER)}, new CustomItem(SlimefunItems.RUNE_AIR, 4)) - .register(true); - - new SlimefunItem(Categories.LUMPS_AND_MAGIC, SlimefunItems.RUNE_EARTH, "ANCIENT_RUNE_EARTH", RecipeType.ANCIENT_ALTAR, - new ItemStack[] {new ItemStack(Material.DIRT), SlimefunItems.MAGIC_LUMP_1, new ItemStack(Material.STONE), new ItemStack(Material.OBSIDIAN), SlimefunItems.BLANK_RUNE, new ItemStack(Material.OBSIDIAN) ,new ItemStack(Material.STONE), SlimefunItems.MAGIC_LUMP_1, new ItemStack(Material.DIRT)}, new CustomItem(SlimefunItems.RUNE_EARTH, 4)) - .register(true); - - new SlimefunItem(Categories.LUMPS_AND_MAGIC, SlimefunItems.RUNE_FIRE, "ANCIENT_RUNE_FIRE", RecipeType.ANCIENT_ALTAR, - new ItemStack[] {new ItemStack(Material.FIRE_CHARGE), SlimefunItems.MAGIC_LUMP_2, new ItemStack(Material.FIRE_CHARGE), new ItemStack(Material.BLAZE_POWDER), SlimefunItems.RUNE_EARTH, new ItemStack(Material.FLINT_AND_STEEL) ,new ItemStack(Material.FIRE_CHARGE), SlimefunItems.MAGIC_LUMP_2, new ItemStack(Material.FIRE_CHARGE)}, new CustomItem(SlimefunItems.RUNE_FIRE, 4)) - .register(true); - - new SlimefunItem(Categories.LUMPS_AND_MAGIC, SlimefunItems.RUNE_WATER, "ANCIENT_RUNE_WATER", RecipeType.ANCIENT_ALTAR, - new ItemStack[] {new ItemStack(Material.SALMON), SlimefunItems.MAGIC_LUMP_2, new ItemStack(Material.WATER_BUCKET), new ItemStack(Material.SAND), SlimefunItems.BLANK_RUNE, new ItemStack(Material.SAND) ,new ItemStack(Material.WATER_BUCKET), SlimefunItems.MAGIC_LUMP_2, new ItemStack(Material.COD)}, new CustomItem(SlimefunItems.RUNE_WATER, 4)) - .register(true); - - new SlimefunItem(Categories.LUMPS_AND_MAGIC, SlimefunItems.RUNE_ENDER, "ANCIENT_RUNE_ENDER", RecipeType.ANCIENT_ALTAR, - new ItemStack[] {new ItemStack(Material.ENDER_PEARL), SlimefunItems.ENDER_LUMP_3, new ItemStack(Material.ENDER_PEARL), new ItemStack(Material.ENDER_EYE), SlimefunItems.BLANK_RUNE, new ItemStack(Material.ENDER_EYE), new ItemStack(Material.ENDER_PEARL), SlimefunItems.ENDER_LUMP_3, new ItemStack(Material.ENDER_PEARL)}, new CustomItem(SlimefunItems.RUNE_ENDER, 6)) - .register(true); - - new SlimefunItem(Categories.LUMPS_AND_MAGIC, SlimefunItems.RUNE_LIGHTNING, "ANCIENT_RUNE_LIGHTNING", RecipeType.ANCIENT_ALTAR, - new ItemStack[] {new ItemStack(Material.IRON_INGOT), SlimefunItems.MAGIC_LUMP_3, new ItemStack(Material.IRON_INGOT), SlimefunItems.RUNE_AIR, new ItemStack(Material.PHANTOM_MEMBRANE), SlimefunItems.RUNE_WATER, new ItemStack(Material.IRON_INGOT), SlimefunItems.MAGIC_LUMP_3, new ItemStack(Material.IRON_INGOT)}, new CustomItem(SlimefunItems.RUNE_LIGHTNING, 4)) - .register(true); - - new SlimefunItem(Categories.LUMPS_AND_MAGIC, SlimefunItems.RUNE_RAINBOW, "ANCIENT_RUNE_RAINBOW", RecipeType.ANCIENT_ALTAR, - new ItemStack[] {new ItemStack(Material.RED_DYE), SlimefunItems.MAGIC_LUMP_3, new ItemStack(Material.CYAN_DYE), new ItemStack(Material.WHITE_WOOL), SlimefunItems.RUNE_ENDER, new ItemStack(Material.WHITE_WOOL), new ItemStack(Material.YELLOW_DYE), SlimefunItems.ENDER_LUMP_3, new ItemStack(Material.MAGENTA_DYE)}) - .register(true); - - new SoulboundRune(Categories.LUMPS_AND_MAGIC, SlimefunItems.RUNE_SOULBOUND, "ANCIENT_RUNE_SOULBOUND", RecipeType.ANCIENT_ALTAR, - new ItemStack[] {SlimefunItems.MAGIC_LUMP_3, SlimefunItems.ESSENCE_OF_AFTERLIFE, SlimefunItems.MAGIC_LUMP_3, SlimefunItems.ENDER_LUMP_3, SlimefunItems.RUNE_ENDER, SlimefunItems.ENDER_LUMP_3, SlimefunItems.MAGIC_LUMP_3, SlimefunItems.ESSENCE_OF_AFTERLIFE, SlimefunItems.MAGIC_LUMP_3}) - .register(true); - - new InfernalBonemeal(Categories.MAGIC, SlimefunItems.INFERNAL_BONEMEAL, "INFERNAL_BONEMEAL", RecipeType.ANCIENT_ALTAR, - new ItemStack[] {new ItemStack(Material.NETHER_WART), SlimefunItems.RUNE_EARTH, new ItemStack(Material.NETHER_WART), SlimefunItems.MAGIC_LUMP_2, new ItemStack(Material.BONE_MEAL), SlimefunItems.MAGIC_LUMP_2, new ItemStack(Material.NETHER_WART), new ItemStack(Material.BLAZE_POWDER), new ItemStack(Material.NETHER_WART)}, new CustomItem(SlimefunItems.INFERNAL_BONEMEAL, 8)) - .register(true); - - new SlimefunItem(Categories.MAGIC, SlimefunItems.ELYTRA_SCALE, "ELYTRA_SCALE", RecipeType.ANCIENT_ALTAR, - new ItemStack[] {SlimefunItems.ENDER_LUMP_3, SlimefunItems.RUNE_AIR, SlimefunItems.ENDER_LUMP_3, new ItemStack(Material.PHANTOM_MEMBRANE), new ItemStack(Material.FEATHER), new ItemStack(Material.PHANTOM_MEMBRANE), SlimefunItems.ENDER_LUMP_3, SlimefunItems.RUNE_AIR, SlimefunItems.ENDER_LUMP_3}) - .register(true); - - new VanillaItem(Categories.MAGIC, SlimefunItems.ELYTRA, "ELYTRA", RecipeType.ANCIENT_ALTAR, - new ItemStack[] {SlimefunItems.ELYTRA_SCALE, SlimefunItems.RUNE_AIR, SlimefunItems.ELYTRA_SCALE, SlimefunItems.RUNE_AIR, new ItemStack(Material.LEATHER_CHESTPLATE), SlimefunItems.RUNE_AIR, SlimefunItems.ELYTRA_SCALE, SlimefunItems.RUNE_AIR, SlimefunItems.ELYTRA_SCALE}) - .register(true); - - new SlimefunItem(Categories.MAGIC, SlimefunItems.INFUSED_ELYTRA, "INFUSED_ELYTRA", RecipeType.ANCIENT_ALTAR, - new ItemStack[] {SlimefunItems.FLASK_OF_KNOWLEDGE, SlimefunItems.ELYTRA_SCALE, SlimefunItems.FLASK_OF_KNOWLEDGE, SlimefunItems.FLASK_OF_KNOWLEDGE, SlimefunItems.ELYTRA, SlimefunItems.FLASK_OF_KNOWLEDGE, SlimefunItems.FLASK_OF_KNOWLEDGE, SlimefunItems.ELYTRA_SCALE, SlimefunItems.FLASK_OF_KNOWLEDGE}) - .register(true); - - new SoulboundItem(Categories.MAGIC, SlimefunItems.SOULBOUND_ELYTRA, "SOULBOUND_ELYTRA", RecipeType.ANCIENT_ALTAR, - new ItemStack[] {SlimefunItems.FLASK_OF_KNOWLEDGE, SlimefunItems.ESSENCE_OF_AFTERLIFE, SlimefunItems.FLASK_OF_KNOWLEDGE, SlimefunItems.ELYTRA_SCALE, SlimefunItems.ELYTRA, SlimefunItems.ELYTRA_SCALE, SlimefunItems.FLASK_OF_KNOWLEDGE, SlimefunItems.ESSENCE_OF_AFTERLIFE, SlimefunItems.FLASK_OF_KNOWLEDGE}) - .register(true); - - new VanillaItem(Categories.MAGIC, SlimefunItems.TOTEM_OF_UNDYING, "TOTEM_OF_UNDYING", RecipeType.ANCIENT_ALTAR, - new ItemStack[] {SlimefunItems.ESSENCE_OF_AFTERLIFE, new ItemStack(Material.EMERALD_BLOCK), SlimefunItems.ESSENCE_OF_AFTERLIFE, SlimefunItems.MAGIC_LUMP_3, SlimefunItems.TALISMAN, SlimefunItems.MAGIC_LUMP_3, SlimefunItems.ESSENCE_OF_AFTERLIFE, new ItemStack(Material.EMERALD_BLOCK), SlimefunItems.ESSENCE_OF_AFTERLIFE}) - .register(true); - - RainbowTicker rainbow = new RainbowTicker(); - - new SlimefunItem(Categories.MAGIC, SlimefunItems.RAINBOW_WOOL, "RAINBOW_WOOL", RecipeType.ANCIENT_ALTAR, - new ItemStack[] {new ItemStack(Material.WHITE_WOOL), new ItemStack(Material.WHITE_WOOL), new ItemStack(Material.WHITE_WOOL), new ItemStack(Material.WHITE_WOOL), SlimefunItems.RUNE_RAINBOW, new ItemStack(Material.WHITE_WOOL), new ItemStack(Material.WHITE_WOOL), new ItemStack(Material.WHITE_WOOL), new ItemStack(Material.WHITE_WOOL)}, new CustomItem(SlimefunItems.RAINBOW_WOOL, 8)) - .register(true, rainbow); - - new SlimefunItem(Categories.MAGIC, SlimefunItems.RAINBOW_GLASS, "RAINBOW_GLASS", RecipeType.ANCIENT_ALTAR, - new ItemStack[] {new ItemStack(Material.WHITE_STAINED_GLASS), new ItemStack(Material.WHITE_STAINED_GLASS), new ItemStack(Material.WHITE_STAINED_GLASS), new ItemStack(Material.WHITE_STAINED_GLASS), SlimefunItems.RUNE_RAINBOW, new ItemStack(Material.WHITE_STAINED_GLASS), new ItemStack(Material.WHITE_STAINED_GLASS), new ItemStack(Material.WHITE_STAINED_GLASS), new ItemStack(Material.WHITE_STAINED_GLASS)}, new CustomItem(SlimefunItems.RAINBOW_GLASS, 8)) - .register(true, rainbow); - - new SlimefunItem(Categories.MAGIC, SlimefunItems.RAINBOW_GLASS_PANE, "RAINBOW_GLASS_PANE", RecipeType.ANCIENT_ALTAR, - new ItemStack[] {new ItemStack(Material.WHITE_STAINED_GLASS_PANE), new ItemStack(Material.WHITE_STAINED_GLASS_PANE), new ItemStack(Material.WHITE_STAINED_GLASS_PANE), new ItemStack(Material.WHITE_STAINED_GLASS_PANE), SlimefunItems.RUNE_RAINBOW, new ItemStack(Material.WHITE_STAINED_GLASS_PANE), new ItemStack(Material.WHITE_STAINED_GLASS_PANE), new ItemStack(Material.WHITE_STAINED_GLASS_PANE), new ItemStack(Material.WHITE_STAINED_GLASS_PANE)}, new CustomItem(SlimefunItems.RAINBOW_GLASS_PANE, 8)) - .register(true, rainbow); - - new SlimefunItem(Categories.MAGIC, SlimefunItems.RAINBOW_CLAY, "RAINBOW_CLAY", RecipeType.ANCIENT_ALTAR, - new ItemStack[] {new ItemStack(Material.WHITE_TERRACOTTA), new ItemStack(Material.WHITE_TERRACOTTA), new ItemStack(Material.WHITE_TERRACOTTA), new ItemStack(Material.WHITE_TERRACOTTA), SlimefunItems.RUNE_RAINBOW, new ItemStack(Material.WHITE_TERRACOTTA), new ItemStack(Material.WHITE_TERRACOTTA), new ItemStack(Material.WHITE_TERRACOTTA), new ItemStack(Material.WHITE_TERRACOTTA)}, new CustomItem(SlimefunItems.RAINBOW_CLAY, 8)) - .register(true, rainbow); - - RainbowTicker xmas = new RainbowTicker(13, 14); - - new SlimefunItem(Categories.CHRISTMAS, SlimefunItems.RAINBOW_WOOL_XMAS, "RAINBOW_WOOL_XMAS", RecipeType.ANCIENT_ALTAR, - new ItemStack[] {new ItemStack(Material.RED_DYE), SlimefunItems.CHRISTMAS_COOKIE, new ItemStack(Material.GREEN_DYE), new ItemStack(Material.WHITE_WOOL), SlimefunItems.RUNE_RAINBOW, new ItemStack(Material.WHITE_WOOL), new ItemStack(Material.GREEN_DYE), SlimefunItems.CHRISTMAS_COOKIE, new ItemStack(Material.RED_DYE)}, new CustomItem(SlimefunItems.RAINBOW_WOOL_XMAS, 2)) - .register(true, xmas); - - new SlimefunItem(Categories.CHRISTMAS, SlimefunItems.RAINBOW_GLASS_XMAS, "RAINBOW_GLASS_XMAS", RecipeType.ANCIENT_ALTAR, - new ItemStack[] {new ItemStack(Material.RED_DYE), SlimefunItems.CHRISTMAS_COOKIE, new ItemStack(Material.GREEN_DYE), new ItemStack(Material.WHITE_STAINED_GLASS), SlimefunItems.RUNE_RAINBOW, new ItemStack(Material.WHITE_STAINED_GLASS), new ItemStack(Material.GREEN_DYE), SlimefunItems.CHRISTMAS_COOKIE, new ItemStack(Material.RED_DYE)}, new CustomItem(SlimefunItems.RAINBOW_GLASS_XMAS, 2)) - .register(true, xmas); - - new SlimefunItem(Categories.CHRISTMAS, SlimefunItems.RAINBOW_GLASS_PANE_XMAS, "RAINBOW_GLASS_PANE_XMAS", RecipeType.ANCIENT_ALTAR, - new ItemStack[] {new ItemStack(Material.RED_DYE), SlimefunItems.CHRISTMAS_COOKIE, new ItemStack(Material.GREEN_DYE), new ItemStack(Material.WHITE_STAINED_GLASS_PANE), SlimefunItems.RUNE_RAINBOW, new ItemStack(Material.WHITE_STAINED_GLASS_PANE), new ItemStack(Material.GREEN_DYE), SlimefunItems.CHRISTMAS_COOKIE, new ItemStack(Material.RED_DYE)}, new CustomItem(SlimefunItems.RAINBOW_GLASS_PANE_XMAS, 2)) - .register(true, xmas); - - new SlimefunItem(Categories.CHRISTMAS, SlimefunItems.RAINBOW_CLAY_XMAS, "RAINBOW_CLAY_XMAS", RecipeType.ANCIENT_ALTAR, - new ItemStack[] {new ItemStack(Material.RED_DYE), SlimefunItems.CHRISTMAS_COOKIE, new ItemStack(Material.GREEN_DYE), new ItemStack(Material.WHITE_TERRACOTTA), SlimefunItems.RUNE_RAINBOW, new ItemStack(Material.WHITE_TERRACOTTA), new ItemStack(Material.GREEN_DYE), SlimefunItems.CHRISTMAS_COOKIE, new ItemStack(Material.RED_DYE)}, new CustomItem(SlimefunItems.RAINBOW_CLAY_XMAS, 2)) - .register(true, xmas); - - RainbowTicker valentine = new RainbowTicker(2, 6, 10); - - new SlimefunItem(Categories.VALENTINES_DAY, SlimefunItems.RAINBOW_WOOL_VALENTINE, "RAINBOW_WOOL_VALENTINE", RecipeType.ANCIENT_ALTAR, - new ItemStack[] {new ItemStack(Material.RED_DYE), new ItemStack(Material.POPPY), new ItemStack(Material.PINK_DYE), new ItemStack(Material.WHITE_WOOL), SlimefunItems.RUNE_RAINBOW, new ItemStack(Material.WHITE_WOOL), new ItemStack(Material.PINK_DYE), new ItemStack(Material.POPPY), new ItemStack(Material.RED_DYE)}, new CustomItem(SlimefunItems.RAINBOW_WOOL_VALENTINE, 2)) - .register(true, valentine); - - new SlimefunItem(Categories.VALENTINES_DAY, SlimefunItems.RAINBOW_GLASS_VALENTINE, "RAINBOW_GLASS_VALENTINE", RecipeType.ANCIENT_ALTAR, - new ItemStack[] {new ItemStack(Material.RED_DYE), new ItemStack(Material.POPPY), new ItemStack(Material.PINK_DYE), new ItemStack(Material.WHITE_STAINED_GLASS), SlimefunItems.RUNE_RAINBOW, new ItemStack(Material.WHITE_STAINED_GLASS), new ItemStack(Material.PINK_DYE), new ItemStack(Material.POPPY), new ItemStack(Material.RED_DYE)}, new CustomItem(SlimefunItems.RAINBOW_GLASS_VALENTINE, 2)) - .register(true, valentine); - - new SlimefunItem(Categories.VALENTINES_DAY, SlimefunItems.RAINBOW_GLASS_PANE_VALENTINE, "RAINBOW_GLASS_PANE_VALENTINE", RecipeType.ANCIENT_ALTAR, - new ItemStack[] {new ItemStack(Material.RED_DYE), new ItemStack(Material.POPPY), new ItemStack(Material.PINK_DYE), new ItemStack(Material.WHITE_STAINED_GLASS_PANE), SlimefunItems.RUNE_RAINBOW, new ItemStack(Material.WHITE_STAINED_GLASS_PANE), new ItemStack(Material.PINK_DYE), new ItemStack(Material.POPPY), new ItemStack(Material.RED_DYE)}, new CustomItem(SlimefunItems.RAINBOW_GLASS_PANE_VALENTINE, 2)) - .register(true, valentine); - - new SlimefunItem(Categories.VALENTINES_DAY, SlimefunItems.RAINBOW_CLAY_VALENTINE, "RAINBOW_CLAY_VALENTINE", RecipeType.ANCIENT_ALTAR, - new ItemStack[] {new ItemStack(Material.RED_DYE), new ItemStack(Material.POPPY), new ItemStack(Material.PINK_DYE), new ItemStack(Material.WHITE_TERRACOTTA), SlimefunItems.RUNE_RAINBOW, new ItemStack(Material.WHITE_TERRACOTTA), new ItemStack(Material.PINK_DYE), new ItemStack(Material.POPPY), new ItemStack(Material.RED_DYE)}, new CustomItem(SlimefunItems.RAINBOW_CLAY_VALENTINE, 2)) - .register(true, valentine); - - new SlimefunItem(Categories.TECH_MISC, SlimefunItems.WITHER_PROOF_GLASS, "WITHER_PROOF_GLASS", RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {SlimefunItems.LEAD_INGOT, SlimefunItems.WITHER_PROOF_OBSIDIAN, SlimefunItems.LEAD_INGOT, SlimefunItems.WITHER_PROOF_OBSIDIAN, SlimefunItems.HARDENED_GLASS, SlimefunItems.WITHER_PROOF_OBSIDIAN, SlimefunItems.LEAD_INGOT, SlimefunItems.WITHER_PROOF_OBSIDIAN, SlimefunItems.LEAD_INGOT}, - new CustomItem(SlimefunItems.WITHER_PROOF_GLASS, 4)) - .register(true); - - new GEOScannerBlock(Categories.GPS, SlimefunItems.GPS_GEO_SCANNER, "GPS_GEO_SCANNER", RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {null, null, SlimefunItems.ELECTRO_MAGNET, null, SlimefunItems.STEEL_INGOT, SlimefunItems.STEEL_INGOT, SlimefunItems.ELECTRO_MAGNET, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.ELECTRO_MAGNET}) - .register(true); - - new PortableGEOScanner(Categories.GPS, SlimefunItems.PORTABLE_GEO_SCANNER, "PORTABLE_GEO_SCANNER", RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {SlimefunItems.ELECTRO_MAGNET, new ItemStack(Material.COMPASS), SlimefunItems.ELECTRO_MAGNET, SlimefunItems.STEEL_INGOT, SlimefunItems.GPS_MARKER_TOOL, SlimefunItems.STEEL_INGOT, SlimefunItems.SOLDER_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.SOLDER_INGOT}) - .register(true); - - new OilPump(Categories.GPS, SlimefunItems.OIL_PUMP, "OIL_PUMP", RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {SlimefunItems.STEEL_INGOT, SlimefunItems.MEDIUM_CAPACITOR, SlimefunItems.STEEL_INGOT, SlimefunItems.STEEL_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.STEEL_INGOT, null, new ItemStack(Material.BUCKET), null}) { - - @Override - public int getEnergyConsumption() { - return 14; - } - - @Override - public int getSpeed() { - return 1; - } - - }.registerChargeableBlock(true, 200); - - new GEOMiner(Categories.GPS, SlimefunItems.GEO_MINER, "GEO_MINER", RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {new ItemStack(Material.DIAMOND_PICKAXE), SlimefunItems.MEDIUM_CAPACITOR, new ItemStack(Material.DIAMOND_PICKAXE), SlimefunItems.REINFORCED_ALLOY_INGOT, SlimefunItems.OIL_PUMP, SlimefunItems.REINFORCED_ALLOY_INGOT, null, SlimefunItems.ELECTRIC_MOTOR, null}) { - - @Override - public int getSpeed() { - return 1; - } - - @Override - public int getEnergyConsumption() { - return 24; - } - - }.registerChargeableBlock(true, 512); - - new NetherDrill(Categories.GPS, SlimefunItems.NETHER_DRILL, "NETHER_DRILL", RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {null, null, null, null, new CustomItem(Material.BARRIER, "&4DEPRECATED", "", "&cThis Item will soon be removed.", "&cUse the GEO Miner instead."), null, null, null, null}){ - - @Override - public int getSpeed() { - return 1; - } - - @Override - public int getEnergyConsumption() { - return 51; - } - - }.registerChargeableBlock(true, 1024); - - new SlimefunItem(Categories.RESOURCES, SlimefunItems.BUCKET_OF_OIL, "BUCKET_OF_OIL", new RecipeType(SlimefunItems.OIL_PUMP), - new ItemStack[] {null, null, null, null, new ItemStack(Material.BUCKET), null, null, null, null}) - .register(true); - - new SlimefunItem(Categories.RESOURCES, SlimefunItems.BUCKET_OF_FUEL, "BUCKET_OF_FUEL", new RecipeType(SlimefunItems.REFINERY), - new ItemStack[] {null, null, null, null, SlimefunItems.BUCKET_OF_OIL, null, null, null, null}) - .register(true); - - new SlimefunItem(Categories.RESOURCES, SlimefunItems.NETHER_ICE, "NETHER_ICE", new RecipeType(SlimefunItems.GEO_MINER), - new ItemStack[] {null, null, null, null, null, null, null, null}) - .register(true); - - new Refinery(Categories.ELECTRICITY, SlimefunItems.REFINERY, "REFINERY", RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {SlimefunItems.HARDENED_GLASS, SlimefunItems.REDSTONE_ALLOY, SlimefunItems.HARDENED_GLASS, SlimefunItems.HARDENED_GLASS, SlimefunItems.REDSTONE_ALLOY, SlimefunItems.HARDENED_GLASS, new ItemStack(Material.PISTON), SlimefunItems.ELECTRIC_MOTOR, new ItemStack(Material.PISTON)}) { - - @Override - public int getEnergyConsumption() { - return 16; - } - - @Override - public int getSpeed() { - return 1; - } - - }.registerChargeableBlock(true, 256); - - new LavaGenerator(Categories.ELECTRICITY, SlimefunItems.LAVA_GENERATOR, "LAVA_GENERATOR", RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {null, SlimefunItems.GOLD_16K, null, SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.HEATING_COIL, SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.HEATING_COIL}) { - - @Override - public int getEnergyProduction() { - return 10; - } - - }.registerUnrechargeableBlock(true, 512); - - new LavaGenerator(Categories.ELECTRICITY, SlimefunItems.LAVA_GENERATOR_2, "LAVA_GENERATOR_2", RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {SlimefunItems.CORINTHIAN_BRONZE_INGOT, SlimefunItems.CORINTHIAN_BRONZE_INGOT, SlimefunItems.CORINTHIAN_BRONZE_INGOT, SlimefunItems.COMPRESSED_CARBON, SlimefunItems.LAVA_GENERATOR, SlimefunItems.COMPRESSED_CARBON, SlimefunItems.HEATING_COIL, SlimefunItems.COMPRESSED_CARBON, SlimefunItems.HEATING_COIL}) { - - @Override - public int getEnergyProduction() { - return 20; - } - - }.registerUnrechargeableBlock(true, 1024); - - new CombustionGenerator(Categories.ELECTRICITY, SlimefunItems.COMBUSTION_REACTOR, "COMBUSTION_REACTOR", RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {null, SlimefunItems.STEEL_INGOT, null, SlimefunItems.STEEL_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.STEEL_INGOT, SlimefunItems.HEATING_COIL, SlimefunItems.STEEL_INGOT, SlimefunItems.HEATING_COIL}) { - - @Override - public int getEnergyProduction() { - return 12; - } - - }.registerUnrechargeableBlock(true, 256); - - new SlimefunItem(Categories.GPS, SlimefunItems.GPS_TELEPORTER_PYLON, "GPS_TELEPORTER_PYLON", RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {SlimefunItems.ZINC_INGOT, new ItemStack(Material.GLASS), SlimefunItems.ZINC_INGOT, new ItemStack(Material.GLASS), SlimefunItems.HEATING_COIL, new ItemStack(Material.GLASS), SlimefunItems.ZINC_INGOT, new ItemStack(Material.GLASS), SlimefunItems.ZINC_INGOT}, new CustomItem(SlimefunItems.GPS_TELEPORTER_PYLON, 8)) - .register(true, new RainbowTicker(9, 10)); - - new Teleporter(Categories.GPS, SlimefunItems.GPS_TELEPORTATION_MATRIX, "GPS_TELEPORTATION_MATRIX", RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {SlimefunItems.GPS_TELEPORTER_PYLON, SlimefunItems.REINFORCED_ALLOY_INGOT, SlimefunItems.GPS_TELEPORTER_PYLON, SlimefunItems.ELECTRO_MAGNET, SlimefunItems.GPS_CONTROL_PANEL, SlimefunItems.ELECTRO_MAGNET, SlimefunItems.GPS_TELEPORTER_PYLON, SlimefunItems.REINFORCED_ALLOY_INGOT, SlimefunItems.GPS_TELEPORTER_PYLON}) { - - @Override - public void onInteract(final Player p, final Block b) { - GPSNetwork.openTeleporterGUI(p, UUID.fromString(BlockStorage.getLocationInfo(b.getLocation(), "owner")), b, Slimefun.getGPSNetwork().getNetworkComplexity(UUID.fromString(BlockStorage.getLocationInfo(b.getLocation(), "owner")))); - } - - } - .register(true); - - new SlimefunItem(Categories.GPS, SlimefunItems.GPS_ACTIVATION_DEVICE_SHARED, "GPS_ACTIVATION_DEVICE_SHARED", RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {null, new ItemStack(Material.STONE_PRESSURE_PLATE), null, new ItemStack(Material.REDSTONE), SlimefunItems.GPS_TRANSMITTER, new ItemStack(Material.REDSTONE), SlimefunItems.BILLON_INGOT, SlimefunItems.BILLON_INGOT, SlimefunItems.BILLON_INGOT}) - .register(true); - - new SlimefunItem(Categories.GPS, SlimefunItems.GPS_ACTIVATION_DEVICE_PERSONAL, "GPS_ACTIVATION_DEVICE_PERSONAL", RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {null, SlimefunItems.LEAD_INGOT, null, SlimefunItems.COBALT_INGOT, SlimefunItems.GPS_ACTIVATION_DEVICE_SHARED, SlimefunItems.COBALT_INGOT, null, SlimefunItems.LEAD_INGOT, null}) - .register(true); - - SlimefunItem.registerBlockHandler("GPS_ACTIVATION_DEVICE_PERSONAL", new SlimefunBlockHandler() { - - @Override - public void onPlace(Player p, Block b, SlimefunItem item) { - BlockStorage.addBlockInfo(b, "owner", p.getUniqueId().toString()); - } - - @Override - public boolean onBreak(Player p, Block b, SlimefunItem item, UnregisterReason reason) { - return true; - } - }); - - new InfusedHopper(Categories.MAGIC, SlimefunItems.INFUSED_HOPPER, "INFUSED_HOPPER", RecipeType.ANCIENT_ALTAR, - new ItemStack[] {new ItemStack(Material.OBSIDIAN), SlimefunItems.RUNE_EARTH, new ItemStack(Material.HOPPER), SlimefunItems.RUNE_ENDER, SlimefunItems.INFUSED_MAGNET, SlimefunItems.RUNE_ENDER, new ItemStack(Material.HOPPER), SlimefunItems.RUNE_EARTH, new ItemStack(Material.OBSIDIAN)}) - .register(true); - - new SlimefunItem(Categories.RESOURCES, SlimefunItems.BLISTERING_INGOT, "BLISTERING_INGOT", RecipeType.HEATED_PRESSURE_CHAMBER, - new ItemStack[] {SlimefunItems.GOLD_24K, SlimefunItems.URANIUM, null, null, null, null, null, null, null}) - .register(true); - - new SlimefunItem(Categories.RESOURCES, SlimefunItems.BLISTERING_INGOT_2, "BLISTERING_INGOT_2", RecipeType.HEATED_PRESSURE_CHAMBER, - new ItemStack[] {SlimefunItems.BLISTERING_INGOT, SlimefunItems.CARBONADO, null, null, null, null, null, null, null}) - .register(true); - - new SlimefunItem(Categories.RESOURCES, SlimefunItems.BLISTERING_INGOT_3, "BLISTERING_INGOT_3", RecipeType.HEATED_PRESSURE_CHAMBER, - new ItemStack[] {SlimefunItems.BLISTERING_INGOT_2,new ItemStack(Material.NETHER_STAR), null, null, null, null, null, null, null}) - .register(true); - - new SlimefunItem(Categories.RESOURCES, SlimefunItems.ENRICHED_NETHER_ICE, "ENRICHED_NETHER_ICE", RecipeType.HEATED_PRESSURE_CHAMBER, - new ItemStack[]{SlimefunItems.NETHER_ICE, SlimefunItems.PLUTONIUM, null, null, null, null, null, null, null}) - .register(true); - - new ElevatorPlate(Categories.GPS, SlimefunItems.ELEVATOR, "ELEVATOR_PLATE", RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {null, new ItemStack(Material.STONE_PRESSURE_PLATE), null, new ItemStack(Material.PISTON), SlimefunItems.ELECTRIC_MOTOR, new ItemStack(Material.PISTON), SlimefunItems.ALUMINUM_BRONZE_INGOT, SlimefunItems.ALUMINUM_BRONZE_INGOT, SlimefunItems.ALUMINUM_BRONZE_INGOT}, - new CustomItem(SlimefunItems.ELEVATOR, 2)) - .register(true); - - new FoodFabricator(Categories.ELECTRICITY, SlimefunItems.FOOD_FABRICATOR, "FOOD_FABRICATOR", RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {SlimefunItems.BILLON_INGOT, SlimefunItems.SILVER_INGOT, SlimefunItems.BILLON_INGOT, SlimefunItems.CAN, SlimefunItems.SMALL_CAPACITOR, SlimefunItems.CAN, null, SlimefunItems.ELECTRIC_MOTOR, null}) { - - @Override - public int getEnergyConsumption() { - return 7; - } - - @Override - public int getSpeed() { - return 1; - } - - }.registerChargeableBlock(true, 256); - - new FoodFabricator(Categories.ELECTRICITY, SlimefunItems.FOOD_FABRICATOR_2, "FOOD_FABRICATOR_2", RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {SlimefunItems.HARDENED_METAL_INGOT, SlimefunItems.REINFORCED_ALLOY_INGOT, SlimefunItems.HARDENED_METAL_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.FOOD_FABRICATOR, SlimefunItems.ELECTRIC_MOTOR, null, SlimefunItems.ELECTRO_MAGNET, null}) { - - @Override - public int getEnergyConsumption() { - return 24; - } - - @Override - public int getSpeed() { - return 6; - } - - }.registerChargeableBlock(true, 512); - - new SlimefunItem(Categories.MISC, SlimefunItems.WHEAT_ORGANIC_FOOD, "WHEAT_ORGANIC_FOOD", new RecipeType(SlimefunItems.FOOD_FABRICATOR), - new ItemStack[] {SlimefunItems.CAN, new ItemStack(Material.WHEAT), null, null, null, null, null, null, null}) - .register(true); - - new SlimefunItem(Categories.MISC, SlimefunItems.CARROT_ORGANIC_FOOD, "CARROT_ORGANIC_FOOD", new RecipeType(SlimefunItems.FOOD_FABRICATOR), - new ItemStack[] {SlimefunItems.CAN, new ItemStack(Material.CARROT), null, null, null, null, null, null, null}) - .register(true); - - new SlimefunItem(Categories.MISC, SlimefunItems.POTATO_ORGANIC_FOOD, "POTATO_ORGANIC_FOOD", new RecipeType(SlimefunItems.FOOD_FABRICATOR), - new ItemStack[] {SlimefunItems.CAN, new ItemStack(Material.POTATO), null, null, null, null, null, null, null}) - .register(true); - - new SlimefunItem(Categories.MISC, SlimefunItems.SEEDS_ORGANIC_FOOD, "SEEDS_ORGANIC_FOOD", new RecipeType(SlimefunItems.FOOD_FABRICATOR), - new ItemStack[] {SlimefunItems.CAN, new ItemStack(Material.WHEAT_SEEDS), null, null, null, null, null, null, null}) - .register(true); - - new SlimefunItem(Categories.MISC, SlimefunItems.BEETROOT_ORGANIC_FOOD, "BEETROOT_ORGANIC_FOOD", new RecipeType(SlimefunItems.FOOD_FABRICATOR), - new ItemStack[] {SlimefunItems.CAN, new ItemStack(Material.BEETROOT), null, null, null, null, null, null, null}) - .register(true); - - new SlimefunItem(Categories.MISC, SlimefunItems.MELON_ORGANIC_FOOD, "MELON_ORGANIC_FOOD", new RecipeType(SlimefunItems.FOOD_FABRICATOR), - new ItemStack[] {SlimefunItems.CAN, new ItemStack(Material.MELON), null, null, null, null, null, null, null}) - .register(true); - - new SlimefunItem(Categories.MISC, SlimefunItems.APPLE_ORGANIC_FOOD, "APPLE_ORGANIC_FOOD", new RecipeType(SlimefunItems.FOOD_FABRICATOR), - new ItemStack[] {SlimefunItems.CAN, new ItemStack(Material.APPLE), null, null, null, null, null, null, null}) - .register(true); - - new AutoBreeder(Categories.ELECTRICITY, SlimefunItems.AUTO_BREEDER, "AUTO_BREEDER", RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {SlimefunItems.GOLD_18K, SlimefunItems.CAN, SlimefunItems.GOLD_18K, SlimefunItems.ELECTRIC_MOTOR, new ItemStack(Material.HAY_BLOCK), SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.LEAD_INGOT, SlimefunItems.FOOD_FABRICATOR, SlimefunItems.LEAD_INGOT}) - .registerChargeableBlock(true, 1024); - - new AnimalGrowthAccelerator(Categories.ELECTRICITY, SlimefunItems.ANIMAL_GROWTH_ACCELERATOR, "ANIMAL_GROWTH_ACCELERATOR", RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {null, SlimefunItems.BLISTERING_INGOT_3, null, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.WHEAT_ORGANIC_FOOD, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.REINFORCED_ALLOY_INGOT, SlimefunItems.AUTO_BREEDER, SlimefunItems.REINFORCED_ALLOY_INGOT}) - .registerChargeableBlock(true, 1024); - - new XPCollector(Categories.ELECTRICITY, SlimefunItems.XP_COLLECTOR, "XP_COLLECTOR", RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {null, SlimefunItems.BLISTERING_INGOT_3, null, SlimefunItems.WITHER_PROOF_OBSIDIAN, SlimefunItems.AUTO_ENCHANTER, SlimefunItems.WITHER_PROOF_OBSIDIAN, SlimefunItems.ALUMINUM_BRONZE_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.ALUMINUM_BRONZE_INGOT}) - .registerChargeableBlock(true, 1024); - - new FoodComposter(Categories.ELECTRICITY, SlimefunItems.FOOD_COMPOSTER, "FOOD_COMPOSTER", RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.FOOD_FABRICATOR, SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.CAN, SlimefunItems.MEDIUM_CAPACITOR, SlimefunItems.CAN, null, SlimefunItems.ELECTRIC_MOTOR, null}) { - - @Override - public int getEnergyConsumption() { - return 8; - } - - @Override - public int getSpeed() { - return 1; - } - - }.registerChargeableBlock(true, 256); - - new FoodComposter(Categories.ELECTRICITY, SlimefunItems.FOOD_COMPOSTER_2, "FOOD_COMPOSTER_2", RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {SlimefunItems.HARDENED_METAL_INGOT, SlimefunItems.REINFORCED_ALLOY_INGOT, SlimefunItems.HARDENED_METAL_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.FOOD_COMPOSTER, SlimefunItems.ELECTRIC_MOTOR, null, SlimefunItems.ELECTRO_MAGNET, null}) { - - @Override - public int getEnergyConsumption() { - return 26; - } - - @Override - public int getSpeed() { - return 10; - } - - }.registerChargeableBlock(true, 256); - - new SlimefunItem(Categories.MISC, SlimefunItems.WHEAT_FERTILIZER, "WHEAT_FERTILIZER", new RecipeType(SlimefunItems.FOOD_COMPOSTER), - new ItemStack[] {SlimefunItems.WHEAT_ORGANIC_FOOD, null, null, null, null, null, null, null, null}) - .register(true); - - new SlimefunItem(Categories.MISC, SlimefunItems.CARROT_FERTILIZER, "CARROT_FERTILIZER", new RecipeType(SlimefunItems.FOOD_COMPOSTER), - new ItemStack[] {SlimefunItems.CARROT_ORGANIC_FOOD, null, null, null, null, null, null, null, null}) - .register(true); - - new SlimefunItem(Categories.MISC, SlimefunItems.POTATO_FERTILIZER, "POTATO_FERTILIZER", new RecipeType(SlimefunItems.FOOD_COMPOSTER), - new ItemStack[] {SlimefunItems.POTATO_ORGANIC_FOOD, null, null, null, null, null, null, null, null}) - .register(true); - - new SlimefunItem(Categories.MISC, SlimefunItems.SEEDS_FERTILIZER, "SEEDS_FERTILIZER", new RecipeType(SlimefunItems.FOOD_COMPOSTER), - new ItemStack[] {SlimefunItems.SEEDS_ORGANIC_FOOD, null, null, null, null, null, null, null, null}) - .register(true); - - new SlimefunItem(Categories.MISC, SlimefunItems.BEETROOT_FERTILIZER, "BEETROOT_FERTILIZER", new RecipeType(SlimefunItems.FOOD_COMPOSTER), - new ItemStack[] {SlimefunItems.BEETROOT_ORGANIC_FOOD, null, null, null, null, null, null, null, null}) - .register(true); - - new SlimefunItem(Categories.MISC, SlimefunItems.MELON_FERTILIZER, "MELON_FERTILIZER", new RecipeType(SlimefunItems.FOOD_COMPOSTER), - new ItemStack[] {SlimefunItems.MELON_ORGANIC_FOOD, null, null, null, null, null, null, null, null}) - .register(true); - - new SlimefunItem(Categories.MISC, SlimefunItems.APPLE_FERTILIZER, "APPLE_FERTILIZER", new RecipeType(SlimefunItems.FOOD_COMPOSTER), - new ItemStack[] {SlimefunItems.APPLE_ORGANIC_FOOD, null, null, null, null, null, null, null, null}) - .register(true); - - new CropGrowthAccelerator(Categories.ELECTRICITY, SlimefunItems.CROP_GROWTH_ACCELERATOR, "CROP_GROWTH_ACCELERATOR", RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {null, SlimefunItems.BLISTERING_INGOT_3, null, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.PROGRAMMABLE_ANDROID_FARMER, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.ELECTRO_MAGNET, SlimefunItems.ANIMAL_GROWTH_ACCELERATOR, SlimefunItems.ELECTRO_MAGNET}) { - - @Override - public int getEnergyConsumption() { - return 25; - } - - @Override - public int getRadius() { - return 3; - } - - @Override - public int getSpeed() { - return 3; - } - - }.registerChargeableBlock(true, 1024); - - new CropGrowthAccelerator(Categories.ELECTRICITY, SlimefunItems.CROP_GROWTH_ACCELERATOR_2, "CROP_GROWTH_ACCELERATOR_2", RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {null, SlimefunItems.BLISTERING_INGOT_3, null, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.CROP_GROWTH_ACCELERATOR, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.ELECTRO_MAGNET, SlimefunItems.ADVANCED_CIRCUIT_BOARD, SlimefunItems.ELECTRO_MAGNET}) { - - @Override - public int getEnergyConsumption() { - return 30; - } - - @Override - public int getRadius() { - return 4; - } - - @Override - public int getSpeed() { - return 4; - } - - }.registerChargeableBlock(true, 1024); - - new Freezer(Categories.ELECTRICITY, SlimefunItems.FREEZER, "FREEZER", RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {null, SlimefunItems.SILVER_INGOT, null, SlimefunItems.ELECTRIC_MOTOR, new ItemStack(Material.PACKED_ICE), SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.COOLING_UNIT, SlimefunItems.MEDIUM_CAPACITOR, SlimefunItems.COOLING_UNIT}) { - - @Override - public int getEnergyConsumption() { - return 9; - } - - @Override - public int getSpeed() { - return 1; - } - - }.registerChargeableBlock(true, 256); - - new Freezer(Categories.ELECTRICITY, SlimefunItems.FREEZER_2, "FREEZER_2", RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {null, SlimefunItems.SILVER_INGOT, null, SlimefunItems.ELECTRO_MAGNET, SlimefunItems.FREEZER, SlimefunItems.ELECTRO_MAGNET, SlimefunItems.COOLING_UNIT, SlimefunItems.ALUMINUM_BRASS_INGOT, SlimefunItems.COOLING_UNIT}) { - - @Override - public int getEnergyConsumption() { - return 15; - } - - @Override - public int getSpeed() { - return 2; - } - - }.registerChargeableBlock(true, 256); - - new SlimefunItem(Categories.TECH_MISC, SlimefunItems.REACTOR_COOLANT_CELL, "REACTOR_COOLANT_CELL", new RecipeType(SlimefunItems.FREEZER), - new ItemStack[] {new ItemStack(Material.BLUE_ICE), null, null, null, null, null, null, null, null}) - .register(true); - - new SlimefunItem(Categories.TECH_MISC, SlimefunItems.NETHER_ICE_COOLANT_CELL, "NETHER_ICE_COOLANT_CELL", new RecipeType(SlimefunItems.HEATED_PRESSURE_CHAMBER), - new ItemStack[]{SlimefunItems.ENRICHED_NETHER_ICE, null, null, null, null, null, null, null, null}) - .register(true); - - new SlimefunItem(Categories.RESOURCES, SlimefunItems.NEPTUNIUM, "NEPTUNIUM", new RecipeType(SlimefunItems.NUCLEAR_REACTOR), - new ItemStack[] {SlimefunItems.URANIUM, null, null, null, null, null, null, null, null}) - .register(true); - - SlimefunItem.setRadioactive(SlimefunItems.NEPTUNIUM); - - new SlimefunItem(Categories.RESOURCES, SlimefunItems.PLUTONIUM, "PLUTONIUM", new RecipeType(SlimefunItems.NUCLEAR_REACTOR), - new ItemStack[] {SlimefunItems.NEPTUNIUM, null, null, null, null, null, null, null, null}) - .register(true); - - SlimefunItem.setRadioactive(SlimefunItems.PLUTONIUM); - - new SlimefunItem(Categories.RESOURCES, SlimefunItems.BOOSTED_URANIUM, "BOOSTED_URANIUM", RecipeType.HEATED_PRESSURE_CHAMBER, - new ItemStack[] {SlimefunItems.PLUTONIUM, SlimefunItems.URANIUM, null, null, null, null, null, null, null}) - .register(true); - - SlimefunItem.setRadioactive(SlimefunItems.BOOSTED_URANIUM); - - new AReactor(Categories.ELECTRICITY, SlimefunItems.NUCLEAR_REACTOR, "NUCLEAR_REACTOR", RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {SlimefunItems.BLISTERING_INGOT_3, SlimefunItems.CARBONADO_EDGED_CAPACITOR, SlimefunItems.BLISTERING_INGOT_3, SlimefunItems.REINFORCED_PLATE, SlimefunItems.COOLING_UNIT, SlimefunItems.REINFORCED_PLATE, SlimefunItems.LEAD_INGOT, SlimefunItems.REINFORCED_PLATE, SlimefunItems.LEAD_INGOT}){ - - @Override - public String getInventoryTitle() { - return "&2Nuclear Reactor"; - } - - @Override - public void registerDefaultRecipes() { - registerFuel(new MachineFuel(1200, SlimefunItems.URANIUM, SlimefunItems.NEPTUNIUM)); - registerFuel(new MachineFuel(600, SlimefunItems.NEPTUNIUM, SlimefunItems.PLUTONIUM)); - registerFuel(new MachineFuel(1500, SlimefunItems.BOOSTED_URANIUM, null)); - } - - @Override - public int getEnergyProduction() { - return 250; - } - - @Override - public ItemStack getProgressBar() { - try { - return CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYTNhZDhlZTg0OWVkZjA0ZWQ5YTI2Y2EzMzQxZjYwMzNiZDc2ZGNjNDIzMWVkMWVhNjNiNzU2NTc1MWIyN2FjIn19fQ=="); - } catch (Exception e) { - Slimefun.getLogger().log(Level.SEVERE, "An Error occured while creating the Progressbar of a Reactor for Slimefun " + Slimefun.getVersion()); - return new ItemStack(Material.BLAZE_POWDER); - } - } - - @Override - public ItemStack getCoolant() { - return SlimefunItems.REACTOR_COOLANT_CELL; - } - - @Override - public void extraTick(Location l) { - // This machine does not need to perform anything while ticking - // The Nether Star Reactor uses this method to generate the Wither Effect - } - } - .registerChargeableBlock(true, 16384); - - new AReactor(Categories.ELECTRICITY, SlimefunItems.NETHERSTAR_REACTOR, "NETHERSTAR_REACTOR", RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[]{SlimefunItems.BOOSTED_URANIUM, SlimefunItems.CARBONADO_EDGED_CAPACITOR, SlimefunItems.BOOSTED_URANIUM, SlimefunItems.REINFORCED_PLATE, new ItemStack(Material.NETHER_STAR), SlimefunItems.REINFORCED_PLATE, SlimefunItems.CORINTHIAN_BRONZE_INGOT, SlimefunItems.REINFORCED_PLATE, SlimefunItems.CORINTHIAN_BRONZE_INGOT}){ - - @Override - public String getInventoryTitle() { - return "&fNether Star Reactor"; - } - - @Override - public void registerDefaultRecipes() { - registerFuel(new MachineFuel(1800, new ItemStack(Material.NETHER_STAR))); - } - - @Override - public int getEnergyProduction() { - return 512; - } - - @Override - public void extraTick(final Location l) { - Bukkit.getScheduler().runTaskLater(SlimefunPlugin.instance, () -> { - for (Entity entity : ReactorHologram.getArmorStand(l, true).getNearbyEntities(5, 5, 5)) { - if (entity instanceof LivingEntity) { - ((LivingEntity) entity).addPotionEffect(new PotionEffect(PotionEffectType.WITHER, 60, 1)); - } - } - }, 0L); - } - - @Override - public ItemStack getCoolant() { - return SlimefunItems.NETHER_ICE_COOLANT_CELL; - } - - @Override - public ItemStack getProgressBar() { - return new ItemStack(Material.NETHER_STAR); - } - - }.registerChargeableBlock(true, 32768); - - new SlimefunItem(Categories.CARGO, SlimefunItems.CARGO_MOTOR, "CARGO_MOTOR", RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {SlimefunItems.HARDENED_GLASS, SlimefunItems.ELECTRO_MAGNET, SlimefunItems.HARDENED_GLASS, SlimefunItems.SILVER_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.SILVER_INGOT, SlimefunItems.HARDENED_GLASS, SlimefunItems.ELECTRO_MAGNET, SlimefunItems.HARDENED_GLASS}, new CustomItem(SlimefunItems.CARGO_MOTOR, 4)) - .register(true); - - new CargoManagerBlock(Categories.CARGO, SlimefunItems.CARGO_MANAGER, "CARGO_MANAGER", RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {null, SlimefunItems.HOLOGRAM_PROJECTOR, null, SlimefunItems.REINFORCED_PLATE, SlimefunItems.CARGO_MOTOR, SlimefunItems.REINFORCED_PLATE, SlimefunItems.ALUMINUM_BRONZE_INGOT, SlimefunItems.ANDROID_MEMORY_CORE, SlimefunItems.ALUMINUM_BRONZE_INGOT}) - .register(true); - - new SlimefunItem(Categories.CARGO, SlimefunItems.CARGO_NODE, "CARGO_NODE", RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {SlimefunItems.BRONZE_INGOT, SlimefunItems.SILVER_INGOT, SlimefunItems.BRONZE_INGOT, SlimefunItems.SILVER_INGOT, SlimefunItems.CARGO_MOTOR, SlimefunItems.SILVER_INGOT, SlimefunItems.BRONZE_INGOT, SlimefunItems.SILVER_INGOT, SlimefunItems.BRONZE_INGOT}, new CustomItem(SlimefunItems.CARGO_NODE, 4)) - .register(true, new ItemInteractionHandler() { - - @Override - public boolean onRightClick(final ItemUseEvent e, Player p, ItemStack stack) { - if (e.getClickedBlock() == null) return false; - String id = BlockStorage.checkID(e.getClickedBlock()); - if (id == null || !id.equals("CARGO_NODE")) return false; - - if (CargoNet.getNetworkFromLocation(e.getClickedBlock().getLocation()) != null) { - p.sendMessage(ChatColor.translateAlternateColorCodes('&', "&7Connected: " + "&2\u2714")); - } - else { - p.sendMessage(ChatColor.translateAlternateColorCodes('&', "&7Connected: " + "&4\u2718")); - } - return true; - } - }); - - new CargoInputNode(Categories.CARGO, SlimefunItems.CARGO_INPUT, "CARGO_NODE_INPUT", RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {null, new ItemStack(Material.HOPPER), null, SlimefunItems.BILLON_INGOT, SlimefunItems.CARGO_NODE, SlimefunItems.BILLON_INGOT, null, new ItemStack(Material.HOPPER), null}, new CustomItem(SlimefunItems.CARGO_INPUT, 2)) - .register(true); - - new CargoOutputNode(Categories.CARGO, SlimefunItems.CARGO_OUTPUT, "CARGO_NODE_OUTPUT", RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {null, new ItemStack(Material.HOPPER), null, SlimefunItems.BRASS_INGOT, SlimefunItems.CARGO_NODE, SlimefunItems.BRASS_INGOT, null, new ItemStack(Material.HOPPER), null}, new CustomItem(SlimefunItems.CARGO_OUTPUT, 2)) - .register(true); - - new AdvancedCargoOutputNode(Categories.CARGO, SlimefunItems.CARGO_OUTPUT_ADVANCED, "CARGO_NODE_OUTPUT_ADVANCED", RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {null, SlimefunItems.CARGO_MOTOR, null, SlimefunItems.COBALT_INGOT, SlimefunItems.CARGO_OUTPUT, SlimefunItems.COBALT_INGOT, null, SlimefunItems.CARGO_MOTOR, null}, new CustomItem(SlimefunItems.CARGO_OUTPUT_ADVANCED)) - .register(true); - - new AutomatedCraftingChamber(Categories.ELECTRICITY, SlimefunItems.AUTOMATED_CRAFTING_CHAMBER, "AUTOMATED_CRAFTING_CHAMBER", RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {null, new ItemStack(Material.CRAFTING_TABLE), null, SlimefunItems.CARGO_MOTOR, SlimefunItems.BLISTERING_INGOT_3, SlimefunItems.CARGO_MOTOR, null, SlimefunItems.ELECTRIC_MOTOR, null}) { - - @Override - public int getEnergyConsumption() { - return 10; - } - - }.registerChargeableBlock(true, 256); - - new ReactorAccessPort(Categories.ELECTRICITY, SlimefunItems.REACTOR_ACCESS_PORT, "REACTOR_ACCESS_PORT", RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {null, SlimefunItems.BLISTERING_INGOT_3, null, SlimefunItems.LEAD_INGOT, SlimefunItems.CARGO_MOTOR, SlimefunItems.LEAD_INGOT, null, SlimefunItems.ELECTRIC_MOTOR, null}) - .register(true); - - new FluidPump(Categories.ELECTRICITY, SlimefunItems.FLUID_PUMP, "FLUID_PUMP", RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {null, SlimefunItems.MEDIUM_CAPACITOR, null, new ItemStack(Material.BUCKET), SlimefunItems.CARGO_MOTOR, new ItemStack(Material.BUCKET), null, SlimefunItems.OIL_PUMP, null}) - .registerChargeableBlock(true, 512); - - - new TrashCan(Categories.CARGO, SlimefunItems.TRASH_CAN, "TRASH_CAN_BLOCK", RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {null, SlimefunItems.PORTABLE_DUSTBIN, null, SlimefunItems.LEAD_INGOT, SlimefunItems.CARGO_MOTOR, SlimefunItems.LEAD_INGOT, SlimefunItems.ALUMINUM_INGOT, SlimefunItems.LEAD_INGOT, SlimefunItems.ALUMINUM_INGOT}) - .register(true); - - new CarbonPress(Categories.ELECTRICITY, SlimefunItems.CARBON_PRESS, "CARBON_PRESS", RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {SlimefunItems.CARBON, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.CARBON, SlimefunItems.CARBON, SlimefunItems.HEATED_PRESSURE_CHAMBER, SlimefunItems.CARBON, SlimefunItems.HEATING_COIL, SlimefunItems.CARBONADO, SlimefunItems.HEATING_COIL}) { - - @Override - public int getEnergyConsumption() { - return 10; - } - - @Override - public int getSpeed() { - return 1; - } - - }.registerChargeableBlock(true, 256); - - new CarbonPress(Categories.ELECTRICITY, SlimefunItems.CARBON_PRESS_2, "CARBON_PRESS_2", RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {SlimefunItems.CARBONADO, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.CARBONADO, SlimefunItems.CARBON, SlimefunItems.CARBON_PRESS, SlimefunItems.CARBON, SlimefunItems.HEATING_COIL, SlimefunItems.ELECTRO_MAGNET, SlimefunItems.HEATING_COIL}) { - - @Override - public int getEnergyConsumption() { - return 25; - } - - @Override - public int getSpeed() { - return 3; - } - - }.registerChargeableBlock(true, 512); - - new CarbonPress(Categories.ELECTRICITY, SlimefunItems.CARBON_PRESS_3, "CARBON_PRESS_3", RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {SlimefunItems.CARBONADO, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.CARBONADO, SlimefunItems.REINFORCED_ALLOY_INGOT, SlimefunItems.CARBON_PRESS_2, SlimefunItems.REINFORCED_ALLOY_INGOT, SlimefunItems.HEATING_COIL, SlimefunItems.ELECTRO_MAGNET, SlimefunItems.HEATING_COIL}) { - - @Override - public int getEnergyConsumption() { - return 90; - } - - @Override - public int getSpeed() { - return 15; - } - - }.registerChargeableBlock(true, 512); - - new ElectricSmeltery(Categories.ELECTRICITY, SlimefunItems.ELECTRIC_SMELTERY, "ELECTRIC_SMELTERY", RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {new ItemStack(Material.NETHER_BRICKS), SlimefunItems.ELECTRIC_MOTOR, new ItemStack(Material.NETHER_BRICKS), SlimefunItems.HEATING_COIL, SlimefunItems.ELECTRIC_INGOT_FACTORY, SlimefunItems.HEATING_COIL, SlimefunItems.GILDED_IRON, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.GILDED_IRON}) { - - @Override - public int getEnergyConsumption() { - return 10; - } - - @Override - public int getSpeed() { - return 1; - } - - }.registerChargeableBlock(true, 512); - - new ElectricSmeltery(Categories.ELECTRICITY, SlimefunItems.ELECTRIC_SMELTERY_2, "ELECTRIC_SMELTERY_2", RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.POWER_CRYSTAL, SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.HEATING_COIL, SlimefunItems.ELECTRIC_SMELTERY, SlimefunItems.HEATING_COIL, SlimefunItems.GILDED_IRON, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.GILDED_IRON}) { - - @Override - public int getEnergyConsumption() { - return 20; - } - - @Override - public int getSpeed() { - return 3; - } - - }.registerChargeableBlock(true, 1024); - - new WitherAssembler(Categories.ELECTRICITY, SlimefunItems.WITHER_ASSEMBLER, "WITHER_ASSEMBLER", RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {SlimefunItems.BLISTERING_INGOT_3, new ItemStack(Material.NETHER_STAR), SlimefunItems.BLISTERING_INGOT_3, SlimefunItems.WITHER_PROOF_OBSIDIAN, SlimefunItems.ANDROID_MEMORY_CORE, SlimefunItems.WITHER_PROOF_OBSIDIAN, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.REINFORCED_ALLOY_INGOT, SlimefunItems.CARBONADO_EDGED_CAPACITOR}) - .registerChargeableBlock(true, 4096); - - } - - public static void registerPostHandler(PostSlimefunLoadingHandler handler) { - SlimefunPlugin.getUtilities().postHandlers.add(handler); - } - -} +package me.mrCookieSlime.Slimefun.Setup; + +import java.util.ArrayList; +import java.util.List; +import java.util.Random; +import java.util.UUID; +import java.util.logging.Level; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +import org.bukkit.Bukkit; +import org.bukkit.ChatColor; +import org.bukkit.Effect; +import org.bukkit.GameMode; +import org.bukkit.Location; +import org.bukkit.Material; +import org.bukkit.Sound; +import org.bukkit.block.Block; +import org.bukkit.block.BlockFace; +import org.bukkit.block.Chest; +import org.bukkit.block.CreatureSpawner; +import org.bukkit.entity.Entity; +import org.bukkit.entity.EntityType; +import org.bukkit.entity.LivingEntity; +import org.bukkit.entity.Player; +import org.bukkit.event.entity.EntityDamageByEntityEvent; +import org.bukkit.event.player.PlayerItemConsumeEvent; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.ItemStack; +import org.bukkit.potion.PotionEffect; +import org.bukkit.potion.PotionEffectType; +import org.bukkit.util.Vector; + +import io.github.thebusybiscuit.cscorelib2.inventory.ItemUtils; +import io.github.thebusybiscuit.cscorelib2.math.DoubleHandler; +import me.mrCookieSlime.CSCoreLibPlugin.CSCoreLib; +import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config; +import me.mrCookieSlime.CSCoreLibPlugin.events.ItemUseEvent; +import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.InvUtils; +import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem; +import me.mrCookieSlime.CSCoreLibPlugin.general.Particles.FireworkShow; +import me.mrCookieSlime.CSCoreLibPlugin.general.World.CustomSkull; +import me.mrCookieSlime.Slimefun.SlimefunPlugin; +import me.mrCookieSlime.Slimefun.GPS.GPSNetwork; +import me.mrCookieSlime.Slimefun.Lists.Categories; +import me.mrCookieSlime.Slimefun.Lists.RecipeType; +import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; +import me.mrCookieSlime.Slimefun.Objects.MultiBlock; +import me.mrCookieSlime.Slimefun.Objects.SlimefunBlockHandler; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.Alloy; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.EnhancedFurnace; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.ExcludedBlock; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.ExcludedSoulboundTool; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.JetBoots; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.Jetpack; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.Juice; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.MultiTool; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.ReplacingAlloy; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.ReplacingItem; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunArmorPiece; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunBackpack; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunBow; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunMachine; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SolarHelmet; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SoulboundBackpack; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SoulboundItem; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.Talisman; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.VanillaItem; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AReactor; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineFuel; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.Teleporter; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.cargo.AdvancedCargoOutputNode; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.cargo.CargoInputNode; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.cargo.CargoManagerBlock; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.cargo.CargoOutputNode; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.DietCookie; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.EnderBackpack; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.ExplosivePickaxe; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.ExplosiveShovel; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.GoldPan; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.GrapplingHook; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.HerculesPickaxe; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.HunterTalisman; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.InfernalBonemeal; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.KnowledgeFlask; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.KnowledgeTome; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.LumberAxe; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.MagicEyeOfEnder; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.MagicSugar; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.MonsterJerky; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.PickaxeOfContainment; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.PickaxeOfTheSeeker; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.PickaxeOfVeinMining; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.PortableCrafter; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.PortableDustbin; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.PortableGEOScanner; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.SeismicAxe; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.SmeltersPickaxe; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.SoulboundRune; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.StormStaff; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.SwordOfBeheading; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.TelepositionScroll; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.WindStaff; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.AncientPedestal; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.BlockPlacer; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.Composter; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.Crucible; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.HologramProjector; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.InfusedHopper; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.ReactorAccessPort; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.TrashCan; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.AnimalGrowthAccelerator; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.AutoAnvil; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.AutoBreeder; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.AutoDisenchanter; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.AutoDrier; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.AutoEnchanter; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.AutomatedCraftingChamber; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.CarbonPress; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.ChargingBench; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.CropGrowthAccelerator; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.ElectricDustWasher; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.ElectricFurnace; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.ElectricGoldPan; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.ElectricIngotFactory; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.ElectricIngotPulverizer; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.ElectricOreGrinder; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.ElectricSmeltery; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.ElectrifiedCrucible; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.ElevatorPlate; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.EnergyRegulator; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.FluidPump; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.FoodComposter; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.FoodFabricator; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.Freezer; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.HeatedPressureChamber; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.Refinery; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.WitherAssembler; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.XPCollector; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.generators.BioGenerator; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.generators.CoalGenerator; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.generators.CombustionGenerator; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.generators.LavaGenerator; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.geo.GEOMiner; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.geo.GEOScannerBlock; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.geo.NetherDrill; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.geo.OilPump; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.gps.GPSTransmitter; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks.ArmorForge; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks.AutomatedPanningMachine; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks.Compressor; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks.EnhancedCraftingTable; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks.GrindStone; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks.Juicer; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks.MagicWorkbench; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks.OreCrusher; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks.OreWasher; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks.PressureChamber; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks.Smeltery; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks.TableSaw; +import me.mrCookieSlime.Slimefun.Objects.handlers.BlockPlaceHandler; +import me.mrCookieSlime.Slimefun.Objects.handlers.BowShootHandler; +import me.mrCookieSlime.Slimefun.Objects.handlers.ItemConsumptionHandler; +import me.mrCookieSlime.Slimefun.Objects.handlers.ItemInteractionHandler; +import me.mrCookieSlime.Slimefun.Objects.handlers.MultiBlockInteractionHandler; +import me.mrCookieSlime.Slimefun.Objects.tasks.RainbowTicker; +import me.mrCookieSlime.Slimefun.androids.AndroidType; +import me.mrCookieSlime.Slimefun.androids.ProgrammableAndroid; +import me.mrCookieSlime.Slimefun.api.BlockStorage; +import me.mrCookieSlime.Slimefun.api.Slimefun; +import me.mrCookieSlime.Slimefun.api.SlimefunItemStack; +import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock; +import me.mrCookieSlime.Slimefun.api.energy.EnergyTicker; +import me.mrCookieSlime.Slimefun.api.item_transport.CargoNet; +import me.mrCookieSlime.Slimefun.holograms.ReactorHologram; + +public final class SlimefunSetup { + + private SlimefunSetup() {} + + public static void setupItems() { + Random random = new Random(); + + new SlimefunItem(Categories.WEAPONS, (SlimefunItemStack) SlimefunItems.GRANDMAS_WALKING_STICK, RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {null, new ItemStack(Material.OAK_LOG), null, null, new ItemStack(Material.OAK_LOG), null, null, new ItemStack(Material.OAK_LOG), null}) + .register(true); + + new SlimefunItem(Categories.WEAPONS, (SlimefunItemStack) SlimefunItems.GRANDPAS_WALKING_STICK, RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {new ItemStack(Material.LEATHER), new ItemStack(Material.OAK_LOG), new ItemStack(Material.LEATHER), null, new ItemStack(Material.OAK_LOG), null, null, new ItemStack(Material.OAK_LOG), null}) + .register(true); + + new PortableCrafter(Categories.PORTABLE, (SlimefunItemStack) SlimefunItems.PORTABLE_CRAFTER, RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {new ItemStack(Material.BOOK), new ItemStack(Material.CRAFTING_TABLE), null, null, null, null, null, null, null}) + .register(true); + + new SlimefunItem(Categories.FOOD, (SlimefunItemStack) SlimefunItems.FORTUNE_COOKIE, RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {new ItemStack(Material.COOKIE), new ItemStack(Material.PAPER), null, null, null, null, null, null, null}) + .register(true); + + new DietCookie(Categories.FOOD, (SlimefunItemStack) SlimefunItems.DIET_COOKIE, RecipeType.MAGIC_WORKBENCH, + new ItemStack[] {new ItemStack(Material.COOKIE), SlimefunItems.ELYTRA_SCALE, null, null, null, null, null, null, null}) + .register(true); + + new SlimefunItem(Categories.MACHINES_1, (SlimefunItemStack) SlimefunItems.OUTPUT_CHEST, RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {SlimefunItems.LEAD_INGOT, new ItemStack(Material.HOPPER), SlimefunItems.LEAD_INGOT, SlimefunItems.LEAD_INGOT, new ItemStack(Material.CHEST), SlimefunItems.LEAD_INGOT, null, SlimefunItems.LEAD_INGOT, null}) + .register(true); + + new EnhancedCraftingTable().register(); + + new PortableDustbin(Categories.PORTABLE, (SlimefunItemStack) SlimefunItems.PORTABLE_DUSTBIN, RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {new ItemStack(Material.IRON_INGOT), new ItemStack(Material.IRON_INGOT), new ItemStack(Material.IRON_INGOT), new ItemStack(Material.IRON_INGOT), null, new ItemStack(Material.IRON_INGOT), new ItemStack(Material.IRON_INGOT), new ItemStack(Material.IRON_INGOT), new ItemStack(Material.IRON_INGOT)}) + .register(true); + + new SlimefunItem(Categories.FOOD, (SlimefunItemStack) SlimefunItems.BEEF_JERKY, RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {SlimefunItems.SALT, new ItemStack(Material.COOKED_BEEF), null, null, null, null, null, null, null}, new String[] {"Saturation"}, new Integer[] {20}) + .register(true); + + new GrindStone().register(); + new ArmorForge().register(); + new OreCrusher().register(); + new Compressor().register(); + + new SlimefunItem(Categories.LUMPS_AND_MAGIC, (SlimefunItemStack) SlimefunItems.MAGIC_LUMP_1, RecipeType.GRIND_STONE, + new ItemStack[] {new ItemStack(Material.NETHER_WART), null, null, null, null, null, null, null, null}, new CustomItem(SlimefunItems.MAGIC_LUMP_1, 2)) + .register(true); + + new SlimefunItem(Categories.LUMPS_AND_MAGIC, (SlimefunItemStack) SlimefunItems.MAGIC_LUMP_2, RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {SlimefunItems.MAGIC_LUMP_1, SlimefunItems.MAGIC_LUMP_1, null, SlimefunItems.MAGIC_LUMP_1, SlimefunItems.MAGIC_LUMP_1, null, null, null, null}) + .register(true); + + new SlimefunItem(Categories.LUMPS_AND_MAGIC, (SlimefunItemStack) SlimefunItems.MAGIC_LUMP_3, RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {SlimefunItems.MAGIC_LUMP_2, SlimefunItems.MAGIC_LUMP_2, null, SlimefunItems.MAGIC_LUMP_2, SlimefunItems.MAGIC_LUMP_2, null, null, null, null}) + .register(true); + + new SlimefunItem(Categories.LUMPS_AND_MAGIC, (SlimefunItemStack) SlimefunItems.ENDER_LUMP_1, RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {null, null, null, null, new ItemStack(Material.ENDER_EYE), null, null, null, null}, new CustomItem(SlimefunItems.ENDER_LUMP_1, 2)) + .register(true); + + new SlimefunItem(Categories.LUMPS_AND_MAGIC, (SlimefunItemStack) SlimefunItems.ENDER_LUMP_2, RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {SlimefunItems.ENDER_LUMP_1, SlimefunItems.ENDER_LUMP_1, null, SlimefunItems.ENDER_LUMP_1, SlimefunItems.ENDER_LUMP_1, null, null, null, null}) + .register(true); + + new SlimefunItem(Categories.LUMPS_AND_MAGIC, (SlimefunItemStack) SlimefunItems.ENDER_LUMP_3, RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {SlimefunItems.ENDER_LUMP_2, SlimefunItems.ENDER_LUMP_2, null, SlimefunItems.ENDER_LUMP_2, SlimefunItems.ENDER_LUMP_2, null, null, null, null}) + .register(true); + + new EnderBackpack(Categories.MAGIC, (SlimefunItemStack) SlimefunItems.ENDER_BACKPACK, RecipeType.MAGIC_WORKBENCH, + new ItemStack[] {SlimefunItems.ENDER_LUMP_2, new ItemStack(Material.LEATHER), SlimefunItems.ENDER_LUMP_2, new ItemStack(Material.LEATHER), new ItemStack(Material.CHEST), new ItemStack(Material.LEATHER), SlimefunItems.ENDER_LUMP_2, new ItemStack(Material.LEATHER), SlimefunItems.ENDER_LUMP_2}) + .register(true); + + new SlimefunItem(Categories.MAGIC_ARMOR, (SlimefunItemStack) SlimefunItems.ENDER_HELMET, RecipeType.ARMOR_FORGE, + new ItemStack[] {SlimefunItems.ENDER_LUMP_1, new ItemStack(Material.ENDER_EYE), SlimefunItems.ENDER_LUMP_1, new ItemStack(Material.OBSIDIAN), null, new ItemStack(Material.OBSIDIAN), null, null, null}) + .register(true); + + new SlimefunItem(Categories.MAGIC_ARMOR, (SlimefunItemStack) SlimefunItems.ENDER_CHESTPLATE, RecipeType.ARMOR_FORGE, + new ItemStack[] {SlimefunItems.ENDER_LUMP_1, null, SlimefunItems.ENDER_LUMP_1, new ItemStack(Material.OBSIDIAN), new ItemStack(Material.ENDER_EYE), new ItemStack(Material.OBSIDIAN), new ItemStack(Material.OBSIDIAN), new ItemStack(Material.OBSIDIAN), new ItemStack(Material.OBSIDIAN)}) + .register(true); + + new SlimefunItem(Categories.MAGIC_ARMOR, (SlimefunItemStack) SlimefunItems.ENDER_LEGGINGS, RecipeType.ARMOR_FORGE, + new ItemStack[] {SlimefunItems.ENDER_LUMP_1, new ItemStack(Material.ENDER_EYE), SlimefunItems.ENDER_LUMP_1, new ItemStack(Material.OBSIDIAN), null, new ItemStack(Material.OBSIDIAN), new ItemStack(Material.OBSIDIAN), null, new ItemStack(Material.OBSIDIAN)}) + .register(true); + + new SlimefunItem(Categories.MAGIC_ARMOR, (SlimefunItemStack) SlimefunItems.ENDER_BOOTS, RecipeType.ARMOR_FORGE, + new ItemStack[] {null, null, null, SlimefunItems.ENDER_LUMP_1, null, SlimefunItems.ENDER_LUMP_1, new ItemStack(Material.OBSIDIAN), null, new ItemStack(Material.OBSIDIAN)}) + .register(true); + + new MagicEyeOfEnder(Categories.MAGIC, (SlimefunItemStack) SlimefunItems.MAGIC_EYE_OF_ENDER, RecipeType.MAGIC_WORKBENCH, + new ItemStack[] {SlimefunItems.ENDER_LUMP_2, new ItemStack(Material.ENDER_PEARL), SlimefunItems.ENDER_LUMP_2, new ItemStack(Material.ENDER_PEARL), new ItemStack(Material.ENDER_EYE), new ItemStack(Material.ENDER_PEARL), SlimefunItems.ENDER_LUMP_2, new ItemStack(Material.ENDER_PEARL), SlimefunItems.ENDER_LUMP_2}) + .register(true); + + new MagicSugar(Categories.FOOD, (SlimefunItemStack) SlimefunItems.MAGIC_SUGAR, RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {new ItemStack(Material.SUGAR), new ItemStack(Material.REDSTONE), new ItemStack(Material.GLOWSTONE_DUST), null, null, null, null, null, null}, new String[] {"effects.SPEED"}, new Integer[] {4}) + .register(true); + + new MonsterJerky(Categories.FOOD, (SlimefunItemStack) SlimefunItems.MONSTER_JERKY, RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {SlimefunItems.SALT, new ItemStack(Material.ROTTEN_FLESH), null, null, null, null, null, null, null}) + .register(true); + + new SlimefunItem(Categories.MAGIC_ARMOR, (SlimefunItemStack) SlimefunItems.SLIME_HELMET, RecipeType.ARMOR_FORGE, + new ItemStack[] {new ItemStack(Material.SLIME_BALL), new ItemStack(Material.IRON_INGOT), new ItemStack(Material.SLIME_BALL), new ItemStack(Material.IRON_INGOT), null, new ItemStack(Material.IRON_INGOT), null, null, null}) + .register(true); + + new SlimefunItem(Categories.MAGIC_ARMOR, (SlimefunItemStack) SlimefunItems.SLIME_CHESTPLATE, RecipeType.ARMOR_FORGE, + new ItemStack[] {new ItemStack(Material.SLIME_BALL), null, new ItemStack(Material.SLIME_BALL), new ItemStack(Material.IRON_INGOT), new ItemStack(Material.SLIME_BALL), new ItemStack(Material.IRON_INGOT), new ItemStack(Material.IRON_INGOT), new ItemStack(Material.SLIME_BALL), new ItemStack(Material.IRON_INGOT)}) + .register(true); + + new SlimefunArmorPiece(Categories.MAGIC_ARMOR, (SlimefunItemStack) SlimefunItems.SLIME_LEGGINGS, RecipeType.ARMOR_FORGE, + new ItemStack[] {new ItemStack(Material.SLIME_BALL), new ItemStack(Material.IRON_INGOT), new ItemStack(Material.SLIME_BALL), new ItemStack(Material.IRON_INGOT), null, new ItemStack(Material.IRON_INGOT), new ItemStack(Material.IRON_INGOT), null, new ItemStack(Material.IRON_INGOT)}, + new PotionEffect[] {new PotionEffect(PotionEffectType.SPEED, 300, 2)}) + .register(true); + + new SlimefunArmorPiece(Categories.MAGIC_ARMOR, (SlimefunItemStack) SlimefunItems.SLIME_BOOTS, RecipeType.ARMOR_FORGE, + new ItemStack[] {null, null, null, new ItemStack(Material.SLIME_BALL), null, new ItemStack(Material.SLIME_BALL), new ItemStack(Material.IRON_INGOT), null, new ItemStack(Material.IRON_INGOT)}, + new PotionEffect[] {new PotionEffect(PotionEffectType.JUMP, 300, 5)}) + .register(true); + + new SwordOfBeheading(Categories.WEAPONS, (SlimefunItemStack) SlimefunItems.SWORD_OF_BEHEADING, RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {null, new ItemStack(Material.EMERALD), null, SlimefunItems.MAGIC_LUMP_2, new ItemStack(Material.EMERALD), SlimefunItems.MAGIC_LUMP_2, null, new ItemStack(Material.BLAZE_ROD), null}, new String[] {"chance.PLAYER", "chance.SKELETON", "chance.WITHER_SKELETON", "chance.ZOMBIE", "chance.CREEPER"}, new Integer[] {70, 40, 25, 40, 40}) + .register(true); + + new SlimefunItem(Categories.LUMPS_AND_MAGIC, (SlimefunItemStack) SlimefunItems.MAGICAL_BOOK_COVER, RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {null, SlimefunItems.MAGIC_LUMP_2, null, SlimefunItems.MAGIC_LUMP_2, new ItemStack(Material.BOOK), SlimefunItems.MAGIC_LUMP_2, null, SlimefunItems.MAGIC_LUMP_2, null}) + .register(true); + + new SlimefunItem(Categories.TECH_MISC, (SlimefunItemStack) SlimefunItems.BASIC_CIRCUIT_BOARD, RecipeType.MOB_DROP, + new ItemStack[] {null, null, null, null, new CustomItem(new ItemStack(Material.POPPY), "&a&oIron Golem"), null, null, null, null}) + .register(true); + + new SlimefunItem(Categories.TECH_MISC, (SlimefunItemStack) SlimefunItems.ADVANCED_CIRCUIT_BOARD, RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {new ItemStack(Material.LAPIS_BLOCK), new ItemStack(Material.LAPIS_BLOCK), new ItemStack(Material.LAPIS_BLOCK), new ItemStack(Material.REDSTONE_BLOCK), SlimefunItems.BASIC_CIRCUIT_BOARD, new ItemStack(Material.REDSTONE_BLOCK), new ItemStack(Material.LAPIS_BLOCK), new ItemStack(Material.LAPIS_BLOCK), new ItemStack(Material.LAPIS_BLOCK)}) + .register(true); + + new GoldPan(Categories.TOOLS, (SlimefunItemStack) SlimefunItems.GOLD_PAN, RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {null, null, null, new ItemStack(Material.STONE), new ItemStack(Material.BOWL), new ItemStack(Material.STONE), new ItemStack(Material.STONE), new ItemStack(Material.STONE), new ItemStack(Material.STONE)}, + new String[] {"chance.FLINT", "chance.CLAY", "chance.SIFTED_ORE"}, new Integer[] {40, 25, 35}) + .register(true); + + new SlimefunItem(Categories.MISC, (SlimefunItemStack) SlimefunItems.SIFTED_ORE, RecipeType.GOLD_PAN, + new ItemStack[] {new ItemStack(Material.GRAVEL), null, null, null, null, null, null, null, null}) + .register(true); + + new Smeltery().register(); + + new SlimefunItem(Categories.MACHINES_1, (SlimefunItemStack) SlimefunItems.IGNITION_CHAMBER, RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {SlimefunItems.STEEL_PLATE, SlimefunItems.BASIC_CIRCUIT_BOARD, new ItemStack(Material.FLINT_AND_STEEL), SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.STEEL_PLATE, SlimefunItems.ELECTRIC_MOTOR, null, new ItemStack(Material.HOPPER), null}) + .register(true); + + new PressureChamber().register(); + + new SlimefunItem(Categories.TECH_MISC, (SlimefunItemStack) SlimefunItems.BATTERY, RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {null, new ItemStack(Material.REDSTONE), null, SlimefunItems.ZINC_INGOT, SlimefunItems.SULFATE, SlimefunItems.COPPER_INGOT, SlimefunItems.ZINC_INGOT, SlimefunItems.SULFATE, SlimefunItems.COPPER_INGOT }) + .register(true); + + SlimefunManager.registerArmorSet(new ItemStack(Material.GLOWSTONE), new ItemStack[] {SlimefunItems.GLOWSTONE_HELMET, SlimefunItems.GLOWSTONE_CHESTPLATE, SlimefunItems.GLOWSTONE_LEGGINGS, SlimefunItems.GLOWSTONE_BOOTS}, "GLOWSTONE", + new PotionEffect[][] {new PotionEffect[] {new PotionEffect(PotionEffectType.NIGHT_VISION, 600, 0)}, new PotionEffect[] {new PotionEffect(PotionEffectType.NIGHT_VISION, 600, 0)}, new PotionEffect[] {new PotionEffect(PotionEffectType.NIGHT_VISION, 600, 0)}, new PotionEffect[] {new PotionEffect(PotionEffectType.NIGHT_VISION, 600, 0)}}, true, true); + + SlimefunManager.registerArmorSet(SlimefunItems.DAMASCUS_STEEL_INGOT, new ItemStack[] {SlimefunItems.DAMASCUS_STEEL_HELMET, SlimefunItems.DAMASCUS_STEEL_CHESTPLATE, SlimefunItems.DAMASCUS_STEEL_LEGGINGS, SlimefunItems.DAMASCUS_STEEL_BOOTS}, "DAMASCUS_STEEL", true, false); + + SlimefunManager.registerArmorSet(SlimefunItems.REINFORCED_ALLOY_INGOT, new ItemStack[] {SlimefunItems.REINFORCED_ALLOY_HELMET, SlimefunItems.REINFORCED_ALLOY_CHESTPLATE, SlimefunItems.REINFORCED_ALLOY_LEGGINGS, SlimefunItems.REINFORCED_ALLOY_BOOTS}, "REINFORCED_ALLOY", true, false); + + SlimefunManager.registerArmorSet(new ItemStack(Material.CACTUS), new ItemStack[] {SlimefunItems.CACTUS_HELMET, SlimefunItems.CACTUS_CHESTPLATE, SlimefunItems.CACTUS_LEGGINGS, SlimefunItems.CACTUS_BOOTS}, "CACTUS", true, false); + + new Alloy((SlimefunItemStack) SlimefunItems.REINFORCED_ALLOY_INGOT, + new ItemStack[] {SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.HARDENED_METAL_INGOT, SlimefunItems.CORINTHIAN_BRONZE_INGOT, SlimefunItems.SOLDER_INGOT, SlimefunItems.BILLON_INGOT, SlimefunItems.GOLD_24K, null, null, null}) + .register(true); + + new Alloy((SlimefunItemStack) SlimefunItems.HARDENED_METAL_INGOT, + new ItemStack[] {SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.DURALUMIN_INGOT, SlimefunItems.COMPRESSED_CARBON, SlimefunItems.ALUMINUM_BRONZE_INGOT, null, null, null, null, null}) + .register(true); + + new Alloy((SlimefunItemStack) SlimefunItems.DAMASCUS_STEEL_INGOT, + new ItemStack[] {SlimefunItems.STEEL_INGOT, SlimefunItems.IRON_DUST, SlimefunItems.CARBON, new ItemStack(Material.IRON_INGOT), null, null, null, null, null}) + .register(true); + + new Alloy((SlimefunItemStack) SlimefunItems.STEEL_INGOT, + new ItemStack[] {SlimefunItems.IRON_DUST, SlimefunItems.CARBON, new ItemStack(Material.IRON_INGOT), null, null, null, null, null, null}) + .register(true); + + new Alloy((SlimefunItemStack) SlimefunItems.BRONZE_INGOT, + new ItemStack[] {SlimefunItems.COPPER_DUST, SlimefunItems.TIN_DUST, SlimefunItems.COPPER_INGOT, null, null, null, null, null, null}) + .register(true); + + new Alloy((SlimefunItemStack) SlimefunItems.DURALUMIN_INGOT, + new ItemStack[] {SlimefunItems.ALUMINUM_DUST, SlimefunItems.COPPER_DUST, SlimefunItems.ALUMINUM_INGOT, null, null, null, null, null, null}) + .register(true); + + new Alloy((SlimefunItemStack) SlimefunItems.BILLON_INGOT, + new ItemStack[] {SlimefunItems.SILVER_DUST, SlimefunItems.COPPER_DUST, SlimefunItems.SILVER_INGOT, null, null, null, null, null, null}) + .register(true); + + new Alloy((SlimefunItemStack) SlimefunItems.BRASS_INGOT, + new ItemStack[] {SlimefunItems.COPPER_DUST, SlimefunItems.ZINC_DUST, SlimefunItems.COPPER_INGOT, null, null, null, null, null, null}) + .register(true); + + new Alloy((SlimefunItemStack) SlimefunItems.ALUMINUM_BRASS_INGOT, + new ItemStack[] {SlimefunItems.ALUMINUM_DUST, SlimefunItems.BRASS_INGOT, SlimefunItems.ALUMINUM_INGOT, null, null, null, null, null, null}) + .register(true); + + new Alloy((SlimefunItemStack) SlimefunItems.ALUMINUM_BRONZE_INGOT, + new ItemStack[] {SlimefunItems.ALUMINUM_DUST, SlimefunItems.BRONZE_INGOT, SlimefunItems.ALUMINUM_INGOT, null, null, null, null, null, null}) + .register(true); + + new Alloy((SlimefunItemStack) SlimefunItems.CORINTHIAN_BRONZE_INGOT, + new ItemStack[] {SlimefunItems.SILVER_DUST, SlimefunItems.GOLD_DUST, SlimefunItems.COPPER_DUST, SlimefunItems.BRONZE_INGOT, null, null, null, null, null}) + .register(true); + + new Alloy((SlimefunItemStack) SlimefunItems.SOLDER_INGOT, + new ItemStack[] {SlimefunItems.LEAD_DUST, SlimefunItems.TIN_DUST, SlimefunItems.LEAD_INGOT, null, null, null, null, null, null}) + .register(true); + + new ReplacingAlloy(SlimefunItems.SYNTHETIC_SAPPHIRE, "SYNTHETIC_SAPPHIRE", + new ItemStack[] {SlimefunItems.ALUMINUM_DUST, new ItemStack(Material.GLASS), new ItemStack(Material.GLASS_PANE), SlimefunItems.ALUMINUM_INGOT, new ItemStack(Material.LAPIS_LAZULI), null, null, null, null}) + .register(true); + + new ReplacingItem(Categories.RESOURCES, SlimefunItems.SYNTHETIC_DIAMOND, "SYNTHETIC_DIAMOND", RecipeType.PRESSURE_CHAMBER, + new ItemStack[] {SlimefunItems.CARBON_CHUNK, null, null, null, null, null, null, null, null}) + .register(true); + + new Alloy((SlimefunItemStack) SlimefunItems.RAW_CARBONADO, + new ItemStack[] {SlimefunItems.SYNTHETIC_DIAMOND, SlimefunItems.CARBON_CHUNK, new ItemStack(Material.GLASS_PANE), null, null, null, null, null, null}) + .register(true); + + new Alloy((SlimefunItemStack) SlimefunItems.NICKEL_INGOT, + new ItemStack[] {SlimefunItems.IRON_DUST, new ItemStack(Material.IRON_INGOT), SlimefunItems.COPPER_DUST, null, null, null, null, null, null}) + .register(true); + + new Alloy((SlimefunItemStack) SlimefunItems.COBALT_INGOT, + new ItemStack[] {SlimefunItems.IRON_DUST, SlimefunItems.COPPER_DUST, SlimefunItems.NICKEL_INGOT, null, null, null, null, null, null}) + .register(true); + + new SlimefunItem(Categories.RESOURCES, (SlimefunItemStack) SlimefunItems.CARBONADO, RecipeType.PRESSURE_CHAMBER, + new ItemStack[] {SlimefunItems.RAW_CARBONADO, null, null, null, null, null, null, null, null}) + .register(true); + + new Alloy((SlimefunItemStack) SlimefunItems.FERROSILICON, + new ItemStack[] {new ItemStack(Material.IRON_INGOT), SlimefunItems.IRON_DUST, SlimefunItems.SILICON, null, null, null, null, null, null}) + .register(true); + + new SlimefunItem(Categories.RESOURCES, (SlimefunItemStack) SlimefunItems.IRON_DUST, RecipeType.ORE_CRUSHER, + new ItemStack[] {new ItemStack(Material.IRON_ORE), null, null, null, null, null, null, null, null}, new CustomItem(SlimefunItems.IRON_DUST, (boolean) Slimefun.getItemValue("ORE_CRUSHER", "double-ores") ? 2: 1)) + .register(true); + + new SlimefunItem(Categories.RESOURCES, (SlimefunItemStack) SlimefunItems.GOLD_DUST, RecipeType.ORE_CRUSHER, + new ItemStack[] {new ItemStack(Material.GOLD_ORE), null, null, null, null, null, null, null, null}, new CustomItem(SlimefunItems.GOLD_DUST, (boolean) Slimefun.getItemValue("ORE_CRUSHER", "double-ores") ? 2: 1)) + .register(true); + + new SlimefunItem(Categories.RESOURCES, (SlimefunItemStack) SlimefunItems.COPPER_DUST, RecipeType.ORE_WASHER, + new ItemStack[] {SlimefunItems.SIFTED_ORE, null, null, null, null, null, null, null, null}) + .register(true); + + new SlimefunItem(Categories.RESOURCES, (SlimefunItemStack) SlimefunItems.TIN_DUST, RecipeType.ORE_WASHER, + new ItemStack[] {SlimefunItems.SIFTED_ORE, null, null, null, null, null, null, null, null}) + .register(true); + + new SlimefunItem(Categories.RESOURCES, (SlimefunItemStack) SlimefunItems.LEAD_DUST, RecipeType.ORE_WASHER, + new ItemStack[] {SlimefunItems.SIFTED_ORE, null, null, null, null, null, null, null, null}) + .register(true); + + new SlimefunItem(Categories.RESOURCES, (SlimefunItemStack) SlimefunItems.SILVER_DUST, RecipeType.ORE_WASHER, + new ItemStack[] {SlimefunItems.SIFTED_ORE, null, null, null, null, null, null, null, null}) + .register(true); + + new SlimefunItem(Categories.RESOURCES, (SlimefunItemStack) SlimefunItems.ALUMINUM_DUST, RecipeType.ORE_WASHER, + new ItemStack[] {SlimefunItems.SIFTED_ORE, null, null, null, null, null, null, null, null}) + .register(true); + + new SlimefunItem(Categories.RESOURCES, (SlimefunItemStack) SlimefunItems.ZINC_DUST, RecipeType.ORE_WASHER, + new ItemStack[] {SlimefunItems.SIFTED_ORE, null, null, null, null, null, null, null, null}) + .register(true); + + new SlimefunItem(Categories.RESOURCES, (SlimefunItemStack) SlimefunItems.MAGNESIUM_DUST, RecipeType.ORE_WASHER, + new ItemStack[] {SlimefunItems.SIFTED_ORE, null, null, null, null, null, null, null, null}) + .register(true); + + new SlimefunItem(Categories.RESOURCES, (SlimefunItemStack) SlimefunItems.COPPER_INGOT, RecipeType.SMELTERY, + new ItemStack[] {SlimefunItems.COPPER_DUST, null, null, null, null, null, null, null, null}) + .register(true); + + new SlimefunItem(Categories.RESOURCES, (SlimefunItemStack) SlimefunItems.TIN_INGOT, RecipeType.SMELTERY, + new ItemStack[] {SlimefunItems.TIN_DUST, null, null, null, null, null, null, null, null}) + .register(true); + + new SlimefunItem(Categories.RESOURCES, (SlimefunItemStack) SlimefunItems.SILVER_INGOT, RecipeType.SMELTERY, + new ItemStack[] {SlimefunItems.SILVER_DUST, null, null, null, null, null, null, null, null}) + .register(true); + + new SlimefunItem(Categories.RESOURCES, (SlimefunItemStack) SlimefunItems.LEAD_INGOT, RecipeType.SMELTERY, + new ItemStack[] {SlimefunItems.LEAD_DUST, null, null, null, null, null, null, null, null}) + .register(true); + + new SlimefunItem(Categories.RESOURCES, (SlimefunItemStack) SlimefunItems.ALUMINUM_INGOT, RecipeType.SMELTERY, + new ItemStack[] {SlimefunItems.ALUMINUM_DUST, null, null, null, null, null, null, null, null}) + .register(true); + + new SlimefunItem(Categories.RESOURCES, (SlimefunItemStack) SlimefunItems.ZINC_INGOT, RecipeType.SMELTERY, + new ItemStack[] {SlimefunItems.ZINC_DUST, null, null, null, null, null, null, null, null}) + .register(true); + + new SlimefunItem(Categories.RESOURCES, (SlimefunItemStack) SlimefunItems.MAGNESIUM_INGOT, RecipeType.SMELTERY, + new ItemStack[] {SlimefunItems.MAGNESIUM_DUST, null, null, null, null, null, null, null, null}) + .register(true); + + new SlimefunItem(Categories.RESOURCES, (SlimefunItemStack) SlimefunItems.SULFATE, RecipeType.ORE_CRUSHER, + new ItemStack[] {new ItemStack(Material.NETHERRACK, 16), null, null, null, null, null, null, null, null}) + .register(true); + + new SlimefunItem(Categories.RESOURCES, (SlimefunItemStack) SlimefunItems.CARBON, RecipeType.COMPRESSOR, + new ItemStack[] {new ItemStack(Material.COAL, 8), null, null, null, null, null, null, null, null}) + .register(true); + + new SlimefunItem(Categories.MISC, (SlimefunItemStack) SlimefunItems.WHEAT_FLOUR, RecipeType.GRIND_STONE, + new ItemStack[] {new ItemStack(Material.WHEAT), null, null, null, null, null, null, null, null}) + .register(true); + + new SlimefunItem(Categories.MISC, (SlimefunItemStack) SlimefunItems.STEEL_PLATE, RecipeType.COMPRESSOR, + new ItemStack[] {new CustomItem(SlimefunItems.STEEL_INGOT, 8), null, null, null, null, null, null, null, null}) + .register(true); + + new SlimefunItem(Categories.RESOURCES, (SlimefunItemStack) SlimefunItems.COMPRESSED_CARBON, RecipeType.COMPRESSOR, + new ItemStack[] {new CustomItem(SlimefunItems.CARBON, 4), null, null, null, null, null, null, null, null}) + .register(true); + + new SlimefunItem(Categories.RESOURCES, (SlimefunItemStack) SlimefunItems.CARBON_CHUNK, RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {SlimefunItems.COMPRESSED_CARBON, SlimefunItems.COMPRESSED_CARBON, SlimefunItems.COMPRESSED_CARBON, SlimefunItems.COMPRESSED_CARBON, new ItemStack(Material.FLINT), SlimefunItems.COMPRESSED_CARBON, SlimefunItems.COMPRESSED_CARBON, SlimefunItems.COMPRESSED_CARBON, SlimefunItems.COMPRESSED_CARBON}) + .register(true); + + new SlimefunItem(Categories.TECH_MISC, (SlimefunItemStack) SlimefunItems.STEEL_THRUSTER, RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {null, new ItemStack(Material.REDSTONE), null, SlimefunItems.ALUMINUM_BRONZE_INGOT, SlimefunItems.ALUMINUM_BRONZE_INGOT, SlimefunItems.ALUMINUM_BRONZE_INGOT, SlimefunItems.STEEL_PLATE, new ItemStack(Material.FIRE_CHARGE), SlimefunItems.STEEL_PLATE}) + .register(true); + + new SlimefunItem(Categories.TECH_MISC, (SlimefunItemStack) SlimefunItems.POWER_CRYSTAL, RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {new ItemStack(Material.REDSTONE), SlimefunItems.SYNTHETIC_SAPPHIRE, new ItemStack(Material.REDSTONE), SlimefunItems.SYNTHETIC_SAPPHIRE, SlimefunItems.SYNTHETIC_DIAMOND, SlimefunItems.SYNTHETIC_SAPPHIRE, new ItemStack(Material.REDSTONE), SlimefunItems.SYNTHETIC_SAPPHIRE, new ItemStack(Material.REDSTONE)}) + .register(true); + + new Jetpack((SlimefunItemStack) SlimefunItems.DURALUMIN_JETPACK, + new ItemStack[] {SlimefunItems.DURALUMIN_INGOT, null, SlimefunItems.DURALUMIN_INGOT, SlimefunItems.DURALUMIN_INGOT, SlimefunItems.POWER_CRYSTAL, SlimefunItems.DURALUMIN_INGOT, SlimefunItems.STEEL_THRUSTER, SlimefunItems.SMALL_CAPACITOR, SlimefunItems.STEEL_THRUSTER}, + 0.35) + .register(true); + + new Jetpack((SlimefunItemStack) SlimefunItems.SOLDER_JETPACK, + new ItemStack[] {SlimefunItems.SOLDER_INGOT, null, SlimefunItems.SOLDER_INGOT, SlimefunItems.SOLDER_INGOT, SlimefunItems.POWER_CRYSTAL, SlimefunItems.SOLDER_INGOT, SlimefunItems.STEEL_THRUSTER, SlimefunItems.SMALL_CAPACITOR, SlimefunItems.STEEL_THRUSTER}, + 0.4) + .register(true); + + new Jetpack((SlimefunItemStack) SlimefunItems.BILLON_JETPACK, + new ItemStack[] {SlimefunItems.BILLON_INGOT, null, SlimefunItems.BILLON_INGOT, SlimefunItems.BILLON_INGOT, SlimefunItems.POWER_CRYSTAL, SlimefunItems.BILLON_INGOT, SlimefunItems.STEEL_THRUSTER, SlimefunItems.SMALL_CAPACITOR, SlimefunItems.STEEL_THRUSTER}, + 0.45) + .register(true); + + new Jetpack((SlimefunItemStack) SlimefunItems.STEEL_JETPACK, + new ItemStack[] {SlimefunItems.STEEL_INGOT, null, SlimefunItems.STEEL_INGOT, SlimefunItems.STEEL_INGOT, SlimefunItems.POWER_CRYSTAL, SlimefunItems.STEEL_INGOT, SlimefunItems.STEEL_THRUSTER, SlimefunItems.SMALL_CAPACITOR, SlimefunItems.STEEL_THRUSTER}, + 0.5) + .register(true); + + new Jetpack((SlimefunItemStack) SlimefunItems.DAMASCUS_STEEL_JETPACK, + new ItemStack[] {SlimefunItems.DAMASCUS_STEEL_INGOT, null, SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.POWER_CRYSTAL, SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.STEEL_THRUSTER, SlimefunItems.SMALL_CAPACITOR, SlimefunItems.STEEL_THRUSTER}, + 0.55) + .register(true); + + new Jetpack((SlimefunItemStack) SlimefunItems.REINFORCED_ALLOY_JETPACK, + new ItemStack[] {SlimefunItems.REINFORCED_ALLOY_INGOT, null, SlimefunItems.REINFORCED_ALLOY_INGOT, SlimefunItems.REINFORCED_ALLOY_INGOT, SlimefunItems.POWER_CRYSTAL, SlimefunItems.REINFORCED_ALLOY_INGOT, SlimefunItems.STEEL_THRUSTER, SlimefunItems.MEDIUM_CAPACITOR, SlimefunItems.STEEL_THRUSTER}, + 0.6) + .register(true); + + new Jetpack((SlimefunItemStack) SlimefunItems.CARBONADO_JETPACK, + new ItemStack[] {SlimefunItems.CARBON_CHUNK, null, SlimefunItems.CARBON_CHUNK, SlimefunItems.CARBONADO, SlimefunItems.POWER_CRYSTAL, SlimefunItems.CARBONADO, SlimefunItems.STEEL_THRUSTER, SlimefunItems.LARGE_CAPACITOR, SlimefunItems.STEEL_THRUSTER}, + 0.7) + .register(true); + + new SlimefunItem(Categories.TECH, (SlimefunItemStack) SlimefunItems.PARACHUTE, RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {SlimefunItems.CLOTH, SlimefunItems.CLOTH, SlimefunItems.CLOTH, SlimefunItems.CHAIN, null, SlimefunItems.CHAIN, null, null, null}) + .register(true); + + new HologramProjector(Categories.TECH, (SlimefunItemStack) SlimefunItems.HOLOGRAM_PROJECTOR, RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {null, SlimefunItems.POWER_CRYSTAL, null, SlimefunItems.ALUMINUM_BRASS_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.ALUMINUM_BRASS_INGOT, null, SlimefunItems.ALUMINUM_BRASS_INGOT, null}, new CustomItem(SlimefunItems.HOLOGRAM_PROJECTOR, 3)) + .register(true); + + new SlimefunItem(Categories.MISC, (SlimefunItemStack) SlimefunItems.CHAIN, RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {null, null, SlimefunItems.STEEL_INGOT, null, SlimefunItems.STEEL_INGOT, null, SlimefunItems.STEEL_INGOT, null, null}, new CustomItem(SlimefunItems.CHAIN, 8)) + .register(true); + + new SlimefunItem(Categories.MISC, (SlimefunItemStack) SlimefunItems.HOOK, RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {null, SlimefunItems.STEEL_INGOT, null, SlimefunItems.STEEL_INGOT, null, SlimefunItems.STEEL_INGOT, null, null, null}) + .register(true); + + new GrapplingHook(Categories.TOOLS, (SlimefunItemStack) SlimefunItems.GRAPPLING_HOOK, RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {null, SlimefunItems.HOOK, SlimefunItems.HOOK, null, SlimefunItems.CHAIN, SlimefunItems.HOOK, SlimefunItems.CHAIN, null, null}, + new String[] {"despawn-seconds"}, new Object[] {60}) + .register(true); + + new MagicWorkbench().register(); + + new SlimefunItem(Categories.MAGIC, (SlimefunItemStack) SlimefunItems.STAFF_ELEMENTAL, RecipeType.MAGIC_WORKBENCH, + new ItemStack[] {null, SlimefunItems.MAGICAL_BOOK_COVER, SlimefunItems.MAGIC_LUMP_3, null, new ItemStack(Material.STICK), SlimefunItems.MAGICAL_BOOK_COVER, SlimefunItems.MAGIC_LUMP_3, null, null}) + .register(true); + + new WindStaff(Categories.MAGIC, (SlimefunItemStack) SlimefunItems.STAFF_WIND, RecipeType.MAGIC_WORKBENCH, + new ItemStack[] {null, new ItemStack(Material.FEATHER), SlimefunItems.ENDER_LUMP_3, null, SlimefunItems.STAFF_ELEMENTAL, new ItemStack(Material.FEATHER), SlimefunItems.STAFF_ELEMENTAL, null, null}) + .register(true); + + new SlimefunItem(Categories.MAGIC, (SlimefunItemStack) SlimefunItems.STAFF_WATER, RecipeType.MAGIC_WORKBENCH, + new ItemStack[] {null, new ItemStack(Material.LILY_PAD), SlimefunItems.MAGIC_LUMP_2, null, SlimefunItems.STAFF_ELEMENTAL, new ItemStack(Material.LILY_PAD), SlimefunItems.STAFF_ELEMENTAL, null, null}) + .register(true, new ItemInteractionHandler() { + + @Override + public boolean onRightClick(ItemUseEvent e, Player p, ItemStack item) { + if (SlimefunManager.isItemSimiliar(item, SlimefunItems.STAFF_WATER, true)) { + p.setFireTicks(0); + SlimefunPlugin.getLocal().sendMessage(p, "messages.fire-extinguish", true); + return true; + } + else return false; + } + }); + + new MultiTool((SlimefunItemStack) SlimefunItems.DURALUMIN_MULTI_TOOL, RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {SlimefunItems.DURALUMIN_INGOT, null, SlimefunItems.DURALUMIN_INGOT, SlimefunItems.DURALUMIN_INGOT, SlimefunItems.SMALL_CAPACITOR, SlimefunItems.DURALUMIN_INGOT, null, SlimefunItems.DURALUMIN_INGOT, null}, + new String[] {"mode.0.enabled", "mode.0.name", "mode.0.item", "mode.1.enabled", "mode.1.name", "mode.1.item", "mode.2.enabled", "mode.2.name", "mode.2.item", "mode.3.enabled", "mode.3.name", "mode.3.item"}, new Object[] {true, "Portable Crafter", "PORTABLE_CRAFTER", true, "Magic Eye of Ender", "MAGIC_EYE_OF_ENDER", true, "Wind Staff", "STAFF_ELEMENTAL_WIND", true, "Grappling Hook", "GRAPPLING_HOOK"}) + .register(true); + + new MultiTool((SlimefunItemStack) SlimefunItems.SOLDER_MULTI_TOOL, RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {SlimefunItems.SOLDER_INGOT, null, SlimefunItems.SOLDER_INGOT, SlimefunItems.SOLDER_INGOT, SlimefunItems.SMALL_CAPACITOR, SlimefunItems.SOLDER_INGOT, null, SlimefunItems.SOLDER_INGOT, null}, + new String[] {"mode.0.enabled", "mode.0.name", "mode.0.item", "mode.1.enabled", "mode.1.name", "mode.1.item", "mode.2.enabled", "mode.2.name", "mode.2.item", "mode.3.enabled", "mode.3.name", "mode.3.item"}, new Object[] {true, "Portable Crafter", "PORTABLE_CRAFTER", true, "Magic Eye of Ender", "MAGIC_EYE_OF_ENDER", true, "Wind Staff", "STAFF_ELEMENTAL_WIND", true, "Grappling Hook", "GRAPPLING_HOOK"}) + .register(true); + + new MultiTool((SlimefunItemStack) SlimefunItems.BILLON_MULTI_TOOL, RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {SlimefunItems.BILLON_INGOT, null, SlimefunItems.BILLON_INGOT, SlimefunItems.BILLON_INGOT, SlimefunItems.SMALL_CAPACITOR, SlimefunItems.BILLON_INGOT, null, SlimefunItems.BILLON_INGOT, null}, + new String[] {"mode.0.enabled", "mode.0.name", "mode.0.item", "mode.1.enabled", "mode.1.name", "mode.1.item", "mode.2.enabled", "mode.2.name", "mode.2.item", "mode.3.enabled", "mode.3.name", "mode.3.item"}, new Object[] {true, "Portable Crafter", "PORTABLE_CRAFTER", true, "Magic Eye of Ender", "MAGIC_EYE_OF_ENDER", true, "Wind Staff", "STAFF_ELEMENTAL_WIND", true, "Grappling Hook", "GRAPPLING_HOOK"}) + .register(true); + + new MultiTool((SlimefunItemStack) SlimefunItems.STEEL_MULTI_TOOL, RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {SlimefunItems.STEEL_INGOT, null, SlimefunItems.STEEL_INGOT, SlimefunItems.STEEL_INGOT, SlimefunItems.SMALL_CAPACITOR, SlimefunItems.STEEL_INGOT, null, SlimefunItems.STEEL_INGOT, null}, + new String[] {"mode.0.enabled", "mode.0.name", "mode.0.item", "mode.1.enabled", "mode.1.name", "mode.1.item", "mode.2.enabled", "mode.2.name", "mode.2.item", "mode.3.enabled", "mode.3.name", "mode.3.item"}, new Object[] {true, "Portable Crafter", "PORTABLE_CRAFTER", true, "Magic Eye of Ender", "MAGIC_EYE_OF_ENDER", true, "Wind Staff", "STAFF_ELEMENTAL_WIND", true, "Grappling Hook", "GRAPPLING_HOOK"}) + .register(true); + + new MultiTool((SlimefunItemStack) SlimefunItems.DAMASCUS_STEEL_MULTI_TOOL, RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {SlimefunItems.DAMASCUS_STEEL_INGOT, null, SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.SMALL_CAPACITOR, SlimefunItems.DAMASCUS_STEEL_INGOT, null, SlimefunItems.DAMASCUS_STEEL_INGOT, null}, + new String[] {"mode.0.enabled", "mode.0.name", "mode.0.item", "mode.1.enabled", "mode.1.name", "mode.1.item", "mode.2.enabled", "mode.2.name", "mode.2.item", "mode.3.enabled", "mode.3.name", "mode.3.item"}, new Object[] {true, "Portable Crafter", "PORTABLE_CRAFTER", true, "Magic Eye of Ender", "MAGIC_EYE_OF_ENDER", true, "Wind Staff", "STAFF_ELEMENTAL_WIND", true, "Grappling Hook", "GRAPPLING_HOOK"}) + .register(true); + + new MultiTool((SlimefunItemStack) SlimefunItems.REINFORCED_ALLOY_MULTI_TOOL, RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {SlimefunItems.REINFORCED_ALLOY_INGOT, null, SlimefunItems.REINFORCED_ALLOY_INGOT, SlimefunItems.REINFORCED_ALLOY_INGOT, SlimefunItems.MEDIUM_CAPACITOR, SlimefunItems.REINFORCED_ALLOY_INGOT, null, SlimefunItems.REINFORCED_ALLOY_INGOT, null}, + new String[] {"mode.0.enabled", "mode.0.name", "mode.0.item", "mode.1.enabled", "mode.1.name", "mode.1.item", "mode.2.enabled", "mode.2.name", "mode.2.item", "mode.3.enabled", "mode.3.name", "mode.3.item"}, new Object[] {true, "Portable Crafter", "PORTABLE_CRAFTER", true, "Magic Eye of Ender", "MAGIC_EYE_OF_ENDER", true, "Wind Staff", "STAFF_ELEMENTAL_WIND", true, "Grappling Hook", "GRAPPLING_HOOK"}) + .register(true); + + new MultiTool((SlimefunItemStack) SlimefunItems.CARBONADO_MULTI_TOOL, RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {SlimefunItems.CARBONADO, null, SlimefunItems.CARBONADO, SlimefunItems.CARBONADO, SlimefunItems.LARGE_CAPACITOR, SlimefunItems.CARBONADO, null, SlimefunItems.CARBONADO, null}, + new String[] {"mode.0.enabled", "mode.0.name", "mode.0.item", "mode.1.enabled", "mode.1.name", "mode.1.item", "mode.2.enabled", "mode.2.name", "mode.2.item", "mode.3.enabled", "mode.3.name", "mode.3.item", "mode.4.enabled", "mode.4.name", "mode.4.item"}, new Object[] {true, "Portable Crafter", "PORTABLE_CRAFTER", true, "Magic Eye of Ender", "MAGIC_EYE_OF_ENDER", true, "Wind Staff", "STAFF_ELEMENTAL_WIND", true, "Grappling Hook", "GRAPPLING_HOOK", true, "Gold Pan", "GOLD_PAN"}) + .register(true); + + new OreWasher().register(); + + new SlimefunItem(Categories.RESOURCES, (SlimefunItemStack) SlimefunItems.GOLD_24K, RecipeType.SMELTERY, + new ItemStack[] {SlimefunItems.GOLD_DUST, SlimefunItems.GOLD_22K, null, null, null, null, null, null, null}) + .register(true); + + new SlimefunItem(Categories.RESOURCES, (SlimefunItemStack) SlimefunItems.GOLD_22K, RecipeType.SMELTERY, + new ItemStack[] {SlimefunItems.GOLD_DUST, SlimefunItems.GOLD_20K, null, null, null, null, null, null, null}) + .register(true); + + new SlimefunItem(Categories.RESOURCES, (SlimefunItemStack) SlimefunItems.GOLD_20K, RecipeType.SMELTERY, + new ItemStack[] {SlimefunItems.GOLD_DUST, SlimefunItems.GOLD_18K, null, null, null, null, null, null, null}) + .register(true); + + new SlimefunItem(Categories.RESOURCES, (SlimefunItemStack) SlimefunItems.GOLD_18K, RecipeType.SMELTERY, + new ItemStack[] {SlimefunItems.GOLD_DUST, SlimefunItems.GOLD_16K, null, null, null, null, null, null, null}) + .register(true); + + new SlimefunItem(Categories.RESOURCES, (SlimefunItemStack) SlimefunItems.GOLD_16K, RecipeType.SMELTERY, + new ItemStack[] {SlimefunItems.GOLD_DUST, SlimefunItems.GOLD_14K, null, null, null, null, null, null, null}) + .register(true); + + new SlimefunItem(Categories.RESOURCES, (SlimefunItemStack) SlimefunItems.GOLD_14K, RecipeType.SMELTERY, + new ItemStack[] {SlimefunItems.GOLD_DUST, SlimefunItems.GOLD_12K, null, null, null, null, null, null, null}) + .register(true); + + new SlimefunItem(Categories.RESOURCES, (SlimefunItemStack) SlimefunItems.GOLD_12K, RecipeType.SMELTERY, + new ItemStack[] {SlimefunItems.GOLD_DUST, SlimefunItems.GOLD_10K, null, null, null, null, null, null, null}) + .register(true); + + new SlimefunItem(Categories.RESOURCES, (SlimefunItemStack) SlimefunItems.GOLD_10K, RecipeType.SMELTERY, + new ItemStack[] {SlimefunItems.GOLD_DUST, SlimefunItems.GOLD_8K, null, null, null, null, null, null, null}) + .register(true); + + new SlimefunItem(Categories.RESOURCES, (SlimefunItemStack) SlimefunItems.GOLD_8K, RecipeType.SMELTERY, + new ItemStack[] {SlimefunItems.GOLD_DUST, SlimefunItems.GOLD_6K, null, null, null, null, null, null, null}) + .register(true); + + new SlimefunItem(Categories.RESOURCES, (SlimefunItemStack) SlimefunItems.GOLD_6K, RecipeType.SMELTERY, + new ItemStack[] {SlimefunItems.GOLD_DUST, SlimefunItems.GOLD_4K, null, null, null, null, null, null, null}) + .register(true); + + new SlimefunItem(Categories.RESOURCES, (SlimefunItemStack) SlimefunItems.GOLD_4K, RecipeType.SMELTERY, + new ItemStack[] {SlimefunItems.GOLD_DUST, null, null, null, null, null, null, null, null}) + .register(true); + + new SlimefunItem(Categories.MISC, (SlimefunItemStack) SlimefunItems.STONE_CHUNK, RecipeType.ORE_WASHER, + new ItemStack[] {SlimefunItems.SIFTED_ORE, null, null, null, null, null, null, null, null}) + .register(true); + + new SlimefunItem(Categories.RESOURCES, (SlimefunItemStack) SlimefunItems.SILICON, RecipeType.SMELTERY, + new ItemStack[] {new ItemStack(Material.QUARTZ_BLOCK), null, null, null, null, null, null, null, null}) + .register(true); + + new SlimefunItem(Categories.TECH_MISC, (SlimefunItemStack) SlimefunItems.SOLAR_PANEL, RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {new ItemStack(Material.GLASS), new ItemStack(Material.GLASS), new ItemStack(Material.GLASS), SlimefunItems.SILICON, SlimefunItems.SILICON, SlimefunItems.SILICON, SlimefunItems.FERROSILICON, SlimefunItems.FERROSILICON, SlimefunItems.FERROSILICON}) + .register(true); + + new SolarHelmet(Categories.TECH, (SlimefunItemStack) SlimefunItems.SOLAR_HELMET, RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {SlimefunItems.REINFORCED_ALLOY_INGOT, SlimefunItems.SOLAR_PANEL, SlimefunItems.REINFORCED_ALLOY_INGOT, SlimefunItems.REINFORCED_ALLOY_INGOT, null, SlimefunItems.REINFORCED_ALLOY_INGOT, SlimefunItems.MEDIUM_CAPACITOR, null, SlimefunItems.MEDIUM_CAPACITOR}, + new String[] {"charge-amount"}, new Double[] {0.1}) + .register(true); + + new SlimefunItem(Categories.LUMPS_AND_MAGIC, (SlimefunItemStack) SlimefunItems.LAVA_CRYSTAL, RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {SlimefunItems.MAGIC_LUMP_1, new ItemStack(Material.BLAZE_POWDER), SlimefunItems.MAGIC_LUMP_1, new ItemStack(Material.BLAZE_POWDER), SlimefunItems.RUNE_FIRE, new ItemStack(Material.BLAZE_POWDER), SlimefunItems.MAGIC_LUMP_1, new ItemStack(Material.BLAZE_POWDER), SlimefunItems.MAGIC_LUMP_1}) + .register(true); + + new SlimefunItem(Categories.MAGIC, (SlimefunItemStack) SlimefunItems.STAFF_FIRE, RecipeType.MAGIC_WORKBENCH, + new ItemStack[] {null, null, SlimefunItems.LAVA_CRYSTAL, null, SlimefunItems.STAFF_ELEMENTAL, null, SlimefunItems.STAFF_ELEMENTAL, null, null}) + .register(true); + + new StormStaff(Categories.MAGIC, (SlimefunItemStack) SlimefunItems.STAFF_STORM, RecipeType.ANCIENT_ALTAR, + new ItemStack[] {SlimefunItems.RUNE_LIGHTNING, SlimefunItems.ENDER_LUMP_3, SlimefunItems.RUNE_LIGHTNING, SlimefunItems.STAFF_WATER, SlimefunItems.MAGIC_SUGAR, SlimefunItems.STAFF_WIND, SlimefunItems.RUNE_LIGHTNING, SlimefunItems.ENDER_LUMP_3, SlimefunItems.RUNE_LIGHTNING}) + .register(true); + + new SmeltersPickaxe(Categories.TOOLS, (SlimefunItemStack) SlimefunItems.AUTO_SMELT_PICKAXE, RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {SlimefunItems.LAVA_CRYSTAL, SlimefunItems.LAVA_CRYSTAL, SlimefunItems.LAVA_CRYSTAL, null, SlimefunItems.FERROSILICON, null, null, SlimefunItems.FERROSILICON, null}) + .register(true); + + new SlimefunItem(Categories.LUMPS_AND_MAGIC, (SlimefunItemStack) SlimefunItems.TALISMAN, RecipeType.MAGIC_WORKBENCH, + new ItemStack[] {SlimefunItems.MAGIC_LUMP_2, SlimefunItems.GOLD_8K, SlimefunItems.MAGIC_LUMP_2, null, new ItemStack(Material.EMERALD), null, SlimefunItems.MAGIC_LUMP_2, SlimefunItems.GOLD_8K, SlimefunItems.MAGIC_LUMP_2}, + new String[] {"recipe-requires-nether-stars"}, new Boolean[] {false}) + .register(true); + + new Talisman((SlimefunItemStack) SlimefunItems.TALISMAN_ANVIL, + new ItemStack[] {SlimefunItems.MAGIC_LUMP_3, null, SlimefunItems.MAGIC_LUMP_3, new ItemStack(Material.ANVIL), SlimefunItems.TALISMAN, new ItemStack(Material.ANVIL), SlimefunItems.MAGIC_LUMP_3, null, SlimefunItems.MAGIC_LUMP_3}, + true, false, "anvil") + .register(true); + + new Talisman((SlimefunItemStack) SlimefunItems.TALISMAN_MINER, + new ItemStack[] {SlimefunItems.MAGIC_LUMP_3, null, SlimefunItems.MAGIC_LUMP_3, SlimefunItems.SYNTHETIC_SAPPHIRE, SlimefunItems.TALISMAN, SlimefunItems.SIFTED_ORE, SlimefunItems.MAGIC_LUMP_3, null, SlimefunItems.MAGIC_LUMP_3}, + false, false, "miner", 20) + .register(true); + + new HunterTalisman((SlimefunItemStack) SlimefunItems.TALISMAN_HUNTER, + new ItemStack[] {SlimefunItems.MAGIC_LUMP_3, null, SlimefunItems.MAGIC_LUMP_3, SlimefunItems.SYNTHETIC_SAPPHIRE, SlimefunItems.TALISMAN, SlimefunItems.MONSTER_JERKY, SlimefunItems.MAGIC_LUMP_3, null, SlimefunItems.MAGIC_LUMP_3}, + false, false, "hunter", 20) + .register(true); + + new Talisman((SlimefunItemStack) SlimefunItems.TALISMAN_LAVA, + new ItemStack[] {SlimefunItems.MAGIC_LUMP_3, null, SlimefunItems.MAGIC_LUMP_3, SlimefunItems.LAVA_CRYSTAL, SlimefunItems.TALISMAN, new ItemStack(Material.LAVA_BUCKET), SlimefunItems.MAGIC_LUMP_3, null, SlimefunItems.MAGIC_LUMP_3}, + true, true, "lava", new PotionEffect(PotionEffectType.FIRE_RESISTANCE, 3600, 4)) + .register(true); + + new Talisman((SlimefunItemStack) SlimefunItems.TALISMAN_WATER, + new ItemStack[] {SlimefunItems.MAGIC_LUMP_3, null, SlimefunItems.MAGIC_LUMP_3, new ItemStack(Material.WATER_BUCKET), SlimefunItems.TALISMAN, new ItemStack(Material.FISHING_ROD), SlimefunItems.MAGIC_LUMP_3, null, SlimefunItems.MAGIC_LUMP_3}, + true, true, "water", new PotionEffect(PotionEffectType.WATER_BREATHING, 3600, 4)) + .register(true); + + new Talisman((SlimefunItemStack) SlimefunItems.TALISMAN_ANGEL, + new ItemStack[] {SlimefunItems.MAGIC_LUMP_3, null, SlimefunItems.MAGIC_LUMP_3, new ItemStack(Material.FEATHER), SlimefunItems.TALISMAN, new ItemStack(Material.FEATHER), SlimefunItems.MAGIC_LUMP_3, null, SlimefunItems.MAGIC_LUMP_3}, + false, true, "angel", 75) + .register(true); + + new Talisman((SlimefunItemStack) SlimefunItems.TALISMAN_FIRE, + new ItemStack[] {SlimefunItems.MAGIC_LUMP_3, null, SlimefunItems.MAGIC_LUMP_3, SlimefunItems.LAVA_CRYSTAL, SlimefunItems.TALISMAN, SlimefunItems.LAVA_CRYSTAL, SlimefunItems.MAGIC_LUMP_3, null, SlimefunItems.MAGIC_LUMP_3}, + true, true, "fire", new PotionEffect(PotionEffectType.FIRE_RESISTANCE, 3600, 4)) + .register(true); + + new Talisman((SlimefunItemStack) SlimefunItems.TALISMAN_MAGICIAN, + new ItemStack[] {SlimefunItems.ENDER_LUMP_3, null, SlimefunItems.ENDER_LUMP_3, new ItemStack(Material.ENCHANTING_TABLE), SlimefunItems.TALISMAN, new ItemStack(Material.ENCHANTING_TABLE), SlimefunItems.ENDER_LUMP_3, null, SlimefunItems.ENDER_LUMP_3}, + false, false, "magician", 80) + .register(true); + + new Talisman((SlimefunItemStack) SlimefunItems.TALISMAN_TRAVELLER, + new ItemStack[] {SlimefunItems.MAGIC_LUMP_3, null, SlimefunItems.MAGIC_LUMP_3, SlimefunItems.STAFF_WIND, SlimefunItems.TALISMAN_ANGEL, SlimefunItems.STAFF_WIND, SlimefunItems.MAGIC_LUMP_3, null, SlimefunItems.MAGIC_LUMP_3}, + false, false, "traveller", 60, new PotionEffect(PotionEffectType.SPEED, 3600, 2)) + .register(true); + + new Talisman((SlimefunItemStack) SlimefunItems.TALISMAN_WARRIOR, + new ItemStack[] {SlimefunItems.MAGIC_LUMP_3, null, SlimefunItems.MAGIC_LUMP_3, SlimefunItems.REINFORCED_ALLOY_INGOT, SlimefunItems.TALISMAN, SlimefunItems.REINFORCED_ALLOY_INGOT, SlimefunItems.MAGIC_LUMP_3, null, SlimefunItems.MAGIC_LUMP_3}, + true, true, "warrior", new PotionEffect(PotionEffectType.INCREASE_DAMAGE, 3600, 2)) + .register(true); + + new Talisman((SlimefunItemStack) SlimefunItems.TALISMAN_KNIGHT, + new ItemStack[] {SlimefunItems.MAGIC_LUMP_3, null, SlimefunItems.MAGIC_LUMP_3, SlimefunItems.GILDED_IRON, SlimefunItems.TALISMAN_WARRIOR, SlimefunItems.GILDED_IRON, SlimefunItems.MAGIC_LUMP_3, null, SlimefunItems.MAGIC_LUMP_3}, + "knight", 30, new PotionEffect(PotionEffectType.REGENERATION, 100, 3)) + .register(true); + + new Alloy((SlimefunItemStack) SlimefunItems.GILDED_IRON, + new ItemStack[] {SlimefunItems.GOLD_24K, SlimefunItems.IRON_DUST, null, null, null, null, null, null, null}) + .register(true); + + new ReplacingAlloy(SlimefunItems.SYNTHETIC_EMERALD, "SYNTHETIC_EMERALD", + new ItemStack[] {SlimefunItems.SYNTHETIC_SAPPHIRE, SlimefunItems.ALUMINUM_DUST, SlimefunItems.ALUMINUM_INGOT, new ItemStack(Material.GLASS_PANE), null, null, null, null, null}) + .register(true); + + SlimefunManager.registerArmorSet(SlimefunItems.CHAIN, new ItemStack[] {new ItemStack(Material.CHAINMAIL_HELMET), new ItemStack(Material.CHAINMAIL_CHESTPLATE), new ItemStack(Material.CHAINMAIL_LEGGINGS), new ItemStack(Material.CHAINMAIL_BOOTS)}, "CHAIN", true, true); + + new Talisman((SlimefunItemStack) SlimefunItems.TALISMAN_WHIRLWIND, + new ItemStack[] {SlimefunItems.MAGIC_LUMP_3, null, SlimefunItems.MAGIC_LUMP_3, SlimefunItems.STAFF_WIND, SlimefunItems.TALISMAN_TRAVELLER, SlimefunItems.STAFF_WIND, SlimefunItems.MAGIC_LUMP_3, null, SlimefunItems.MAGIC_LUMP_3} + , false, true, "whirlwind", 60) + .register(true); + + new Talisman((SlimefunItemStack) SlimefunItems.TALISMAN_WIZARD, + new ItemStack[] {SlimefunItems.ENDER_LUMP_3, null, SlimefunItems.ENDER_LUMP_3, SlimefunItems.MAGIC_EYE_OF_ENDER, SlimefunItems.TALISMAN_MAGICIAN, SlimefunItems.MAGIC_EYE_OF_ENDER, SlimefunItems.ENDER_LUMP_3, null, SlimefunItems.ENDER_LUMP_3}, + false, false, "wizard", 60) + .register(true); + + new LumberAxe(Categories.TOOLS, (SlimefunItemStack) SlimefunItems.LUMBER_AXE, RecipeType.MAGIC_WORKBENCH, + new ItemStack[] {SlimefunItems.SYNTHETIC_DIAMOND, SlimefunItems.SYNTHETIC_DIAMOND, null, SlimefunItems.SYNTHETIC_EMERALD, SlimefunItems.GILDED_IRON, null, null, SlimefunItems.GILDED_IRON, null}) + .register(true); + + new SlimefunItem(Categories.MISC, (SlimefunItemStack) SlimefunItems.SALT, RecipeType.ORE_WASHER, + new ItemStack[] {null, null, null, null, new ItemStack(Material.SAND, 4), null, null, null, null}) + .register(true); + + new SlimefunItem(Categories.MISC, (SlimefunItemStack) SlimefunItems.HEAVY_CREAM, RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {new ItemStack(Material.MILK_BUCKET), null, null, null, null, null, null, null, null}, new CustomItem(SlimefunItems.HEAVY_CREAM, 2)) + .register(true); + + new SlimefunItem(Categories.MISC, (SlimefunItemStack) SlimefunItems.CHEESE, RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {new ItemStack(Material.MILK_BUCKET), SlimefunItems.SALT, null, null, null, null, null, null, null}) + .register(true); + + new SlimefunItem(Categories.MISC, (SlimefunItemStack) SlimefunItems.BUTTER, RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {SlimefunItems.HEAVY_CREAM, SlimefunItems.SALT, null, null, null, null, null, null, null}) + .register(true); + + SlimefunManager.registerArmorSet(SlimefunItems.GILDED_IRON, new ItemStack[] {SlimefunItems.GILDED_IRON_HELMET, SlimefunItems.GILDED_IRON_CHESTPLATE, SlimefunItems.GILDED_IRON_LEGGINGS, SlimefunItems.GILDED_IRON_BOOTS}, "GILDED_IRON", true, false); + + new SlimefunArmorPiece(Categories.ARMOR, (SlimefunItemStack) SlimefunItems.SCUBA_HELMET, RecipeType.ARMOR_FORGE, + new ItemStack[] {new ItemStack(Material.ORANGE_WOOL), new ItemStack(Material.ORANGE_WOOL), new ItemStack(Material.ORANGE_WOOL), new ItemStack(Material.BLACK_WOOL), new ItemStack(Material.GLASS_PANE), new ItemStack(Material.BLACK_WOOL), null, null, null}, + new PotionEffect[] {new PotionEffect(PotionEffectType.WATER_BREATHING, 300, 1)}) + .register(true); + + new SlimefunArmorPiece(Categories.ARMOR, (SlimefunItemStack) SlimefunItems.HAZMATSUIT_CHESTPLATE, RecipeType.ARMOR_FORGE, + new ItemStack[] {new ItemStack(Material.ORANGE_WOOL), null, new ItemStack(Material.ORANGE_WOOL), new ItemStack(Material.ORANGE_WOOL), new ItemStack(Material.ORANGE_WOOL), new ItemStack(Material.ORANGE_WOOL), new ItemStack(Material.BLACK_WOOL), new ItemStack(Material.BLACK_WOOL), new ItemStack(Material.BLACK_WOOL)}, + new PotionEffect[] {new PotionEffect(PotionEffectType.FIRE_RESISTANCE, 300, 1)}) + .register(true); + + new SlimefunItem(Categories.ARMOR, (SlimefunItemStack) SlimefunItems.HAZMATSUIT_LEGGINGS, RecipeType.ARMOR_FORGE, + new ItemStack [] {new ItemStack(Material.BLACK_WOOL), new ItemStack(Material.BLACK_WOOL), new ItemStack(Material.BLACK_WOOL), new ItemStack(Material.ORANGE_WOOL), null, new ItemStack(Material.ORANGE_WOOL), new ItemStack(Material.ORANGE_WOOL), null, new ItemStack(Material.ORANGE_WOOL)}) + .register(true); + + new SlimefunItem(Categories.ARMOR, (SlimefunItemStack) SlimefunItems.RUBBER_BOOTS, RecipeType.ARMOR_FORGE, + new ItemStack [] {null, null, null, new ItemStack(Material.BLACK_WOOL), null, new ItemStack(Material.BLACK_WOOL), new ItemStack(Material.BLACK_WOOL), null, new ItemStack(Material.BLACK_WOOL)}) + .register(true); + + new SlimefunItem(Categories.MISC, (SlimefunItemStack) SlimefunItems.CRUSHED_ORE, RecipeType.ORE_CRUSHER, + new ItemStack[] {SlimefunItems.SIFTED_ORE, null, null, null, null, null, null, null, null}) + .register(true); + + new SlimefunItem(Categories.MISC, (SlimefunItemStack) SlimefunItems.PULVERIZED_ORE, RecipeType.ORE_CRUSHER, + new ItemStack[] {SlimefunItems.CRUSHED_ORE, null, null, null, null, null, null, null, null}) + .register(true); + + new SlimefunItem(Categories.MISC, (SlimefunItemStack) SlimefunItems.PURE_ORE_CLUSTER, RecipeType.ORE_WASHER, + new ItemStack[] {SlimefunItems.PULVERIZED_ORE, null, null, null, null, null, null, null, null}) + .register(true); + + new SlimefunItem(Categories.MISC, (SlimefunItemStack) SlimefunItems.TINY_URANIUM, RecipeType.ORE_CRUSHER, + new ItemStack[] {SlimefunItems.PURE_ORE_CLUSTER, null, null, null, null, null, null, null, null}) + .register(true); + + new SlimefunItem(Categories.MISC, (SlimefunItemStack) SlimefunItems.SMALL_URANIUM, RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {SlimefunItems.TINY_URANIUM, SlimefunItems.TINY_URANIUM, SlimefunItems.TINY_URANIUM, SlimefunItems.TINY_URANIUM, SlimefunItems.TINY_URANIUM, SlimefunItems.TINY_URANIUM, SlimefunItems.TINY_URANIUM, SlimefunItems.TINY_URANIUM, SlimefunItems.TINY_URANIUM}) + .register(true); + + new SlimefunItem(Categories.RESOURCES, (SlimefunItemStack) SlimefunItems.URANIUM, RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {SlimefunItems.SMALL_URANIUM, SlimefunItems.SMALL_URANIUM, null, SlimefunItems.SMALL_URANIUM, SlimefunItems.SMALL_URANIUM, null, null, null, null}) + .register(true); + + new Alloy((SlimefunItemStack) SlimefunItems.REDSTONE_ALLOY, + new ItemStack[] {new ItemStack(Material.REDSTONE), new ItemStack(Material.REDSTONE_BLOCK), SlimefunItems.FERROSILICON, SlimefunItems.HARDENED_METAL_INGOT, null, null, null, null, null}) + .register(true); + + SlimefunManager.registerArmorSet(SlimefunItems.GOLD_12K, new ItemStack[] {SlimefunItems.GOLD_HELMET, SlimefunItems.GOLD_CHESTPLATE, SlimefunItems.GOLD_LEGGINGS, SlimefunItems.GOLD_BOOTS}, "GOLD_12K", true, false); + + new SlimefunItem(Categories.MISC, (SlimefunItemStack) SlimefunItems.CLOTH, RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {new ItemStack(Material.WHITE_WOOL), null, null, null, null, null, null, null, null}, new CustomItem(SlimefunItems.CLOTH, 8)) + .register(true); + + new SlimefunItem(Categories.PORTABLE, (SlimefunItemStack) SlimefunItems.RAG, RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {SlimefunItems.CLOTH, SlimefunItems.CLOTH, SlimefunItems.CLOTH, new ItemStack(Material.STRING), null, new ItemStack(Material.STRING), SlimefunItems.CLOTH, SlimefunItems.CLOTH, SlimefunItems.CLOTH}) + .register(true, new ItemInteractionHandler() { + + @Override + public boolean onRightClick(ItemUseEvent e, Player p, ItemStack item) { + if (SlimefunManager.isItemSimiliar(item, SlimefunItems.RAG, true)) { + if (p.getGameMode() != GameMode.CREATIVE) ItemUtils.consumeItem(item, false); + p.getWorld().playEffect(p.getLocation(), Effect.STEP_SOUND, Material.WHITE_WOOL); + p.addPotionEffect(new PotionEffect(PotionEffectType.HEAL, 1, 0)); + p.setFireTicks(0); + return true; + } + else return false; + } + }); + + new SlimefunItem(Categories.PORTABLE, (SlimefunItemStack) SlimefunItems.BANDAGE, RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {SlimefunItems.RAG, new ItemStack(Material.STRING), SlimefunItems.RAG, null, null, null, null, null, null}, + new CustomItem(SlimefunItems.BANDAGE, 4), new String[] {"enable-bleeding"}, new Boolean[] {true}) + .register(true, new ItemInteractionHandler() { + + @Override + public boolean onRightClick(ItemUseEvent e, Player p, ItemStack item) { + if (SlimefunManager.isItemSimiliar(item, SlimefunItems.BANDAGE, true)) { + if (p.getGameMode() != GameMode.CREATIVE) ItemUtils.consumeItem(item, false); + p.getWorld().playEffect(p.getLocation(), Effect.STEP_SOUND, Material.WHITE_WOOL); + p.addPotionEffect(new PotionEffect(PotionEffectType.HEAL, 1, 1)); + p.setFireTicks(0); + return true; + } + else return false; + } + }); + + new SlimefunItem(Categories.PORTABLE, (SlimefunItemStack) SlimefunItems.SPLINT, RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {null, new ItemStack(Material.IRON_INGOT), null, new ItemStack(Material.STICK), new ItemStack(Material.STICK), new ItemStack(Material.STICK), null, new ItemStack(Material.IRON_INGOT), null}, + new CustomItem(SlimefunItems.SPLINT, 4), new String[] {"enable-broken-legs"}, new Boolean[] {true}) + .register(true, new ItemInteractionHandler() { + + @Override + public boolean onRightClick(ItemUseEvent e, Player p, ItemStack item) { + if (SlimefunManager.isItemSimiliar(item, SlimefunItems.SPLINT, true)) { + if (p.getGameMode() != GameMode.CREATIVE) ItemUtils.consumeItem(item, false); + p.getWorld().playSound(p.getLocation(), Sound.ENTITY_SKELETON_HURT, 1, 1); + p.addPotionEffect(new PotionEffect(PotionEffectType.HEAL, 1, 0)); + return true; + } + else return false; + } + }); + + new SlimefunItem(Categories.MISC, (SlimefunItemStack) SlimefunItems.CAN, RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {SlimefunItems.TIN_INGOT, SlimefunItems.TIN_INGOT, SlimefunItems.TIN_INGOT, SlimefunItems.TIN_INGOT, null, SlimefunItems.TIN_INGOT, SlimefunItems.TIN_INGOT, SlimefunItems.TIN_INGOT, SlimefunItems.TIN_INGOT}, new CustomItem(SlimefunItems.CAN, 4)) + .register(true); + + new SlimefunItem(Categories.PORTABLE, (SlimefunItemStack) SlimefunItems.VITAMINS, RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {SlimefunItems.CAN, new ItemStack(Material.APPLE), new ItemStack(Material.RED_MUSHROOM), new ItemStack(Material.SUGAR), null, null, null, null, null}) + .register(true, new ItemInteractionHandler() { + + @Override + public boolean onRightClick(ItemUseEvent e, Player p, ItemStack item) { + if (SlimefunManager.isItemSimiliar(item, SlimefunItems.VITAMINS, true)) { + if (p.getGameMode() != GameMode.CREATIVE) ItemUtils.consumeItem(item, false); + p.getWorld().playSound(p.getLocation(), Sound.ENTITY_GENERIC_EAT, 1, 1); + if (p.hasPotionEffect(PotionEffectType.POISON)) p.removePotionEffect(PotionEffectType.POISON); + if (p.hasPotionEffect(PotionEffectType.WITHER)) p.removePotionEffect(PotionEffectType.WITHER); + if (p.hasPotionEffect(PotionEffectType.SLOW)) p.removePotionEffect(PotionEffectType.SLOW); + if (p.hasPotionEffect(PotionEffectType.SLOW_DIGGING)) p.removePotionEffect(PotionEffectType.SLOW_DIGGING); + if (p.hasPotionEffect(PotionEffectType.WEAKNESS)) p.removePotionEffect(PotionEffectType.WEAKNESS); + if (p.hasPotionEffect(PotionEffectType.CONFUSION)) p.removePotionEffect(PotionEffectType.CONFUSION); + if (p.hasPotionEffect(PotionEffectType.BLINDNESS)) p.removePotionEffect(PotionEffectType.BLINDNESS); + p.setFireTicks(0); + p.addPotionEffect(new PotionEffect(PotionEffectType.HEAL, 1, 2)); + e.setCancelled(true); + return true; + } + else return false; + } + }); + + new SlimefunItem(Categories.PORTABLE, (SlimefunItemStack) SlimefunItems.MEDICINE, RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {SlimefunItems.VITAMINS, new ItemStack(Material.GLASS_BOTTLE), SlimefunItems.HEAVY_CREAM, null, null, null, null, null, null}) + .register(true, new ItemConsumptionHandler() { + + @Override + public boolean onConsume(PlayerItemConsumeEvent e, Player p, ItemStack item) { + if (SlimefunManager.isItemSimiliar(item, SlimefunItems.MEDICINE, true)) { + if (p.hasPotionEffect(PotionEffectType.POISON)) p.removePotionEffect(PotionEffectType.POISON); + if (p.hasPotionEffect(PotionEffectType.WITHER)) p.removePotionEffect(PotionEffectType.WITHER); + if (p.hasPotionEffect(PotionEffectType.SLOW)) p.removePotionEffect(PotionEffectType.SLOW); + if (p.hasPotionEffect(PotionEffectType.SLOW_DIGGING)) p.removePotionEffect(PotionEffectType.SLOW_DIGGING); + if (p.hasPotionEffect(PotionEffectType.WEAKNESS)) p.removePotionEffect(PotionEffectType.WEAKNESS); + if (p.hasPotionEffect(PotionEffectType.CONFUSION)) p.removePotionEffect(PotionEffectType.CONFUSION); + if (p.hasPotionEffect(PotionEffectType.BLINDNESS)) p.removePotionEffect(PotionEffectType.BLINDNESS); + + p.setFireTicks(0); + return true; + } + else return false; + } + }); + + new SlimefunArmorPiece(Categories.TECH, (SlimefunItemStack) SlimefunItems.NIGHT_VISION_GOGGLES, RecipeType.ARMOR_FORGE, + new ItemStack[] {new ItemStack(Material.COAL_BLOCK), new ItemStack(Material.COAL_BLOCK), new ItemStack(Material.COAL_BLOCK), new ItemStack(Material.LIME_STAINED_GLASS_PANE), new ItemStack(Material.COAL_BLOCK), new ItemStack(Material.LIME_STAINED_GLASS_PANE), new ItemStack(Material.COAL_BLOCK), null, new ItemStack(Material.COAL_BLOCK)}, + new PotionEffect[] {new PotionEffect(PotionEffectType.NIGHT_VISION, 600, 20)}) + .register(true); + + new PickaxeOfContainment(Categories.TOOLS, (SlimefunItemStack) SlimefunItems.PICKAXE_OF_CONTAINMENT, RecipeType.MAGIC_WORKBENCH, + new ItemStack[] {SlimefunItems.FERROSILICON, SlimefunItems.FERROSILICON, SlimefunItems.FERROSILICON, null, SlimefunItems.GILDED_IRON, null, null, SlimefunItems.GILDED_IRON, null}) + .register(true); + + new HerculesPickaxe(Categories.TOOLS, (SlimefunItemStack) SlimefunItems.HERCULES_PICKAXE, RecipeType.MAGIC_WORKBENCH, + new ItemStack[] {SlimefunItems.HARDENED_METAL_INGOT, SlimefunItems.HARDENED_METAL_INGOT, SlimefunItems.HARDENED_METAL_INGOT, null, SlimefunItems.FERROSILICON, null, null, SlimefunItems.FERROSILICON, null}) + .register(true); + + new TableSaw().register(); + + new SlimefunItem(Categories.MAGIC_ARMOR, (SlimefunItemStack) SlimefunItems.SLIME_HELMET_STEEL, RecipeType.ARMOR_FORGE, + new ItemStack[] {new ItemStack(Material.SLIME_BALL), SlimefunItems.STEEL_PLATE, new ItemStack(Material.SLIME_BALL), new ItemStack(Material.SLIME_BALL), null, new ItemStack(Material.SLIME_BALL), null, null, null}) + .register(true); + + new SlimefunItem(Categories.MAGIC_ARMOR, (SlimefunItemStack) SlimefunItems.SLIME_CHESTPLATE_STEEL, RecipeType.ARMOR_FORGE, + new ItemStack[] {new ItemStack(Material.SLIME_BALL), null, new ItemStack(Material.SLIME_BALL), new ItemStack(Material.SLIME_BALL), SlimefunItems.STEEL_PLATE, new ItemStack(Material.SLIME_BALL), new ItemStack(Material.SLIME_BALL), new ItemStack(Material.SLIME_BALL), new ItemStack(Material.SLIME_BALL)}) + .register(true); + + new SlimefunArmorPiece(Categories.MAGIC_ARMOR, (SlimefunItemStack) SlimefunItems.SLIME_LEGGINGS_STEEL, RecipeType.ARMOR_FORGE, + new ItemStack[] {new ItemStack(Material.SLIME_BALL), SlimefunItems.STEEL_PLATE, new ItemStack(Material.SLIME_BALL), new ItemStack(Material.SLIME_BALL), null, new ItemStack(Material.SLIME_BALL), new ItemStack(Material.SLIME_BALL), null, new ItemStack(Material.SLIME_BALL)}, + new PotionEffect[] {new PotionEffect(PotionEffectType.SPEED, 300, 2)}) + .register(true); + + new SlimefunArmorPiece(Categories.MAGIC_ARMOR, (SlimefunItemStack) SlimefunItems.SLIME_BOOTS_STEEL, RecipeType.ARMOR_FORGE, + new ItemStack[] {null, null, null, new ItemStack(Material.SLIME_BALL), null, new ItemStack(Material.SLIME_BALL), new ItemStack(Material.SLIME_BALL), SlimefunItems.STEEL_PLATE, new ItemStack(Material.SLIME_BALL)}, + new PotionEffect[] {new PotionEffect(PotionEffectType.JUMP, 300, 5)}) + .register(true); + + new SlimefunItem(Categories.WEAPONS, (SlimefunItemStack) SlimefunItems.BLADE_OF_VAMPIRES, RecipeType.MAGIC_WORKBENCH, + new ItemStack[] {null, new ItemStack(Material.WITHER_SKELETON_SKULL), null, null, new ItemStack(Material.WITHER_SKELETON_SKULL), null, null, new ItemStack(Material.BLAZE_ROD), null}) + .register(true); + + new SlimefunMachine(Categories.MACHINES_1, SlimefunItems.DIGITAL_MINER, "DIGITAL_MINER", + new ItemStack[] {SlimefunItems.SOLAR_PANEL, new ItemStack(Material.CHEST), SlimefunItems.SOLAR_PANEL, new ItemStack(Material.IRON_BLOCK), new ItemStack(Material.DISPENSER), new ItemStack(Material.IRON_BLOCK), new ItemStack(Material.IRON_BLOCK), new ItemStack(Material.HOPPER), new ItemStack(Material.IRON_BLOCK)}, + new ItemStack[0], BlockFace.SELF) + .register(true, new MultiBlockInteractionHandler() { + + @Override + public boolean onInteract(final Player p, MultiBlock mb, final Block b) { + if (mb.isMultiBlock(SlimefunItem.getByID("DIGITAL_MINER"))) { + p.sendMessage(ChatColor.DARK_RED + "THIS MACHINE WILL SOON BE REMOVED!"); + if (CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true) && Slimefun.hasUnlocked(p, SlimefunItems.DIGITAL_MINER, true)) { + Block chestBlock = b.getRelative(BlockFace.UP); + + if(!(BlockStorage.check(chestBlock.getRelative(BlockFace.WEST), "SOLAR_PANEL") && BlockStorage.check(chestBlock.getRelative(BlockFace.EAST), "SOLAR_PANEL")) && + !(BlockStorage.check(chestBlock.getRelative(BlockFace.NORTH), "SOLAR_PANEL") && BlockStorage.check(chestBlock.getRelative(BlockFace.SOUTH), "SOLAR_PANEL"))) { + return false; + } + + Chest chest = (Chest) chestBlock.getState(); + final Inventory inv = chest.getInventory(); + List ores = new ArrayList<>(); + + for (int x = b.getX() - 4; x <= b.getX() + 4; x++) { + for (int z = b.getZ() - 4; z <= b.getZ() + 4; z++) { + for (int y = b.getY(); y > 0; y--) { + if (b.getWorld().getBlockAt(x, y, z).getType().toString().endsWith("_ORE")) { + ores.add(b.getWorld().getBlockAt(x, y, z).getLocation()); + } + } + } + } + if (!ores.isEmpty()) { + final Material ore = ores.get(0).getBlock().getType(); + final ItemStack adding = new ItemStack(ore); + ores.get(0).getBlock().setType(Material.AIR); + ores.clear(); + if (InvUtils.fits(inv, adding)) { + for (int i = 0; i < 4; i++) { + int j = i; + Bukkit.getScheduler().runTaskLater(SlimefunPlugin.instance, () -> { + if (j < 3) { + b.getWorld().playEffect(b.getLocation(), Effect.STEP_SOUND, ore); + } else { + p.getWorld().playSound(p.getLocation(), Sound.ENTITY_ARROW_HIT_PLAYER, 1F, 1F); + inv.addItem(adding); + } + }, i*20L); + } + } + else SlimefunPlugin.getLocal().sendMessage(p, "machines.full-inventory", true); + } + else SlimefunPlugin.getLocal().sendMessage(p, "miner.no-ores", true); + } + return true; + } + else return false; + } + }); + + new SlimefunMachine(Categories.MACHINES_1, SlimefunItems.ADVANCED_DIGITAL_MINER, "ADVANCED_DIGITAL_MINER", + new ItemStack[] {SlimefunItems.SOLAR_PANEL, new ItemStack(Material.CHEST), SlimefunItems.SOLAR_PANEL, SlimefunItems.GOLD_24K_BLOCK, new ItemStack(Material.DISPENSER), SlimefunItems.GOLD_24K_BLOCK, SlimefunItems.GOLD_24K_BLOCK, new ItemStack(Material.HOPPER), SlimefunItems.GOLD_24K_BLOCK}, + new ItemStack[0], BlockFace.SELF) + .register(true, new MultiBlockInteractionHandler() { + + @Override + public boolean onInteract(final Player p, MultiBlock mb, final Block b) { + if (mb.isMultiBlock(SlimefunItem.getByID("ADVANCED_DIGITAL_MINER"))) { + p.sendMessage(ChatColor.DARK_RED + "THIS MACHINE WILL SOON BE REMOVED!"); + if (CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true) && Slimefun.hasUnlocked(p, SlimefunItems.ADVANCED_DIGITAL_MINER, true)) { + Block chestBlock = b.getRelative(BlockFace.UP); + + if(!(BlockStorage.check(chestBlock.getRelative(BlockFace.WEST), "SOLAR_PANEL") && BlockStorage.check(chestBlock.getRelative(BlockFace.EAST), "SOLAR_PANEL")) && + !(BlockStorage.check(chestBlock.getRelative(BlockFace.NORTH), "SOLAR_PANEL") && BlockStorage.check(chestBlock.getRelative(BlockFace.SOUTH), "SOLAR_PANEL"))) { + return false; + } + + Chest chest = (Chest) chestBlock.getState(); + final Inventory inv = chest.getInventory(); + List ores = new ArrayList<>(); + + for (int x = b.getX() - 6; x <= b.getX() + 6; x++) { + for (int z = b.getZ() - 6; z <= b.getZ() + 6; z++) { + for (int y = b.getY(); y > 0; y--) { + if (b.getWorld().getBlockAt(x, y, z).getType().toString().endsWith("_ORE")) { + ores.add(b.getWorld().getBlockAt(x, y, z).getLocation()); + } + } + } + } + if (!ores.isEmpty()) { + final Material ore = ores.get(0).getBlock().getType(); + ItemStack drop = new ItemStack(ore); + if (ore == Material.COAL_ORE) drop = new ItemStack(Material.COAL, 4); + else if (ore == Material.IRON_ORE) drop = new CustomItem(SlimefunItems.IRON_DUST, 2); + else if (ore == Material.GOLD_ORE) drop = new CustomItem(SlimefunItems.GOLD_DUST, 2); + else if (ore == Material.REDSTONE_ORE) drop = new ItemStack(Material.REDSTONE, 8); + else if (ore == Material.NETHER_QUARTZ_ORE) drop = new ItemStack(Material.QUARTZ, 4); + else if (ore == Material.LAPIS_ORE) drop = new ItemStack(Material.LAPIS_LAZULI, 12); + else { + for (ItemStack drops: ores.get(0).getBlock().getDrops()) { + if (!drops.getType().isBlock()) drop = new CustomItem(drops, 2); + } + } + final ItemStack adding = drop; + ores.get(0).getBlock().setType(Material.AIR); + ores.clear(); + if (InvUtils.fits(inv, adding)) { + for (int i = 0; i < 4; i++) { + int j = i; + Bukkit.getScheduler().runTaskLater(SlimefunPlugin.instance, () -> { + if (j < 3) { + b.getWorld().playEffect(b.getLocation(), Effect.STEP_SOUND, ore); + } + else { + p.getWorld().playSound(p.getLocation(), Sound.ENTITY_ARROW_HIT_PLAYER, 1F, 1F); + inv.addItem(adding); + } + }, i*20L); + } + } + else SlimefunPlugin.getLocal().sendMessage(p, "machines.full-inventory", true); + } + else SlimefunPlugin.getLocal().sendMessage(p, "miner.no-ores", true); + } + return true; + } + else return false; + } + }); + + new SlimefunItem(Categories.MISC, (SlimefunItemStack) SlimefunItems.GOLD_24K_BLOCK, RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {SlimefunItems.GOLD_24K, SlimefunItems.GOLD_24K, SlimefunItems.GOLD_24K, SlimefunItems.GOLD_24K, SlimefunItems.GOLD_24K, SlimefunItems.GOLD_24K, SlimefunItems.GOLD_24K, SlimefunItems.GOLD_24K, SlimefunItems.GOLD_24K}) + .register(true); + + new Composter(Categories.MACHINES_1, (SlimefunItemStack) SlimefunItems.COMPOSTER, RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {new ItemStack(Material.OAK_SLAB), null, new ItemStack(Material.OAK_SLAB), new ItemStack(Material.OAK_SLAB), null, new ItemStack(Material.OAK_SLAB), new ItemStack(Material.OAK_SLAB), new ItemStack(Material.CAULDRON), new ItemStack(Material.OAK_SLAB)}) + .register(true); + + new SlimefunItem(Categories.MAGIC_ARMOR, (SlimefunItemStack) SlimefunItems.FARMER_SHOES, RecipeType.ARMOR_FORGE, + new ItemStack[] {null, null, null, new ItemStack(Material.HAY_BLOCK), null, new ItemStack(Material.HAY_BLOCK), new ItemStack(Material.HAY_BLOCK), null, new ItemStack(Material.HAY_BLOCK)}) + .register(true); + + new ExplosivePickaxe(Categories.TOOLS, (SlimefunItemStack) SlimefunItems.EXPLOSIVE_PICKAXE, RecipeType.MAGIC_WORKBENCH, + new ItemStack[] {new ItemStack(Material.TNT), SlimefunItems.SYNTHETIC_DIAMOND, new ItemStack(Material.TNT), null, SlimefunItems.FERROSILICON, null, null, SlimefunItems.FERROSILICON, null}, + new String[] {"unbreakable-blocks", "damage-on-use"}, new Object[] {Stream.of(Material.BEDROCK, Material.END_PORTAL_FRAME, Material.END_PORTAL, Material.NETHER_PORTAL, Material.BARRIER, Material.STRUCTURE_BLOCK, Material.COMMAND_BLOCK, Material.CHAIN_COMMAND_BLOCK, Material.REPEATING_COMMAND_BLOCK).map(Material::toString).collect(Collectors.toList()), Boolean.FALSE }) + .register(true); + + new ExplosiveShovel(Categories.TOOLS, (SlimefunItemStack) SlimefunItems.EXPLOSIVE_SHOVEL, RecipeType.MAGIC_WORKBENCH, + new ItemStack[] {null, SlimefunItems.SYNTHETIC_DIAMOND, null, null, new ItemStack(Material.TNT), null, null, SlimefunItems.FERROSILICON, null}, + new String[] {"damage-on-use"}, new Object[] {Boolean.FALSE }) + .register(true); + + new AutomatedPanningMachine().register(); + + new SlimefunItem(Categories.MAGIC_ARMOR, (SlimefunItemStack) SlimefunItems.BOOTS_OF_THE_STOMPER, RecipeType.ARMOR_FORGE, + new ItemStack[] {null, null, null, new ItemStack(Material.YELLOW_WOOL), null, new ItemStack(Material.YELLOW_WOOL), new ItemStack(Material.PISTON), null, new ItemStack(Material.PISTON)}) + .register(true); + + new PickaxeOfTheSeeker(Categories.TOOLS, (SlimefunItemStack) SlimefunItems.PICKAXE_OF_THE_SEEKER, RecipeType.MAGIC_WORKBENCH, + new ItemStack[] {new ItemStack(Material.COMPASS), SlimefunItems.SYNTHETIC_DIAMOND, new ItemStack(Material.COMPASS), null, SlimefunItems.FERROSILICON, null, null, SlimefunItems.FERROSILICON, null}) + .register(true); + + new SlimefunBackpack(9, Categories.PORTABLE, (SlimefunItemStack) SlimefunItems.BACKPACK_SMALL, RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {new ItemStack(Material.LEATHER), null, new ItemStack(Material.LEATHER), SlimefunItems.GOLD_6K, new ItemStack(Material.CHEST), SlimefunItems.GOLD_6K, new ItemStack(Material.LEATHER), new ItemStack(Material.LEATHER), new ItemStack(Material.LEATHER)}) + .register(true); + + new SlimefunBackpack(18, Categories.PORTABLE, (SlimefunItemStack) SlimefunItems.BACKPACK_MEDIUM, RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {new ItemStack(Material.LEATHER), null, new ItemStack(Material.LEATHER), SlimefunItems.GOLD_10K, SlimefunItems.BACKPACK_SMALL, SlimefunItems.GOLD_10K, new ItemStack(Material.LEATHER), new ItemStack(Material.LEATHER), new ItemStack(Material.LEATHER)}) + .register(true); + + new SlimefunBackpack(27, Categories.PORTABLE, (SlimefunItemStack) SlimefunItems.BACKPACK_LARGE, RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {new ItemStack(Material.LEATHER), null, new ItemStack(Material.LEATHER), SlimefunItems.GOLD_14K, SlimefunItems.BACKPACK_MEDIUM, SlimefunItems.GOLD_14K, new ItemStack(Material.LEATHER), new ItemStack(Material.LEATHER), new ItemStack(Material.LEATHER)}) + .register(true); + + new SlimefunBackpack(36, Categories.PORTABLE, (SlimefunItemStack) SlimefunItems.WOVEN_BACKPACK, RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {SlimefunItems.CLOTH, null, SlimefunItems.CLOTH, SlimefunItems.GOLD_16K, SlimefunItems.BACKPACK_LARGE, SlimefunItems.GOLD_16K, SlimefunItems.CLOTH, SlimefunItems.CLOTH, SlimefunItems.CLOTH}) + .register(true); + + new Crucible(Categories.MACHINES_1, (SlimefunItemStack) SlimefunItems.CRUCIBLE, RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack [] {new ItemStack(Material.TERRACOTTA), null, new ItemStack(Material.TERRACOTTA), new ItemStack(Material.TERRACOTTA), null, new ItemStack(Material.TERRACOTTA), new ItemStack(Material.TERRACOTTA), new ItemStack(Material.FLINT_AND_STEEL), new ItemStack(Material.TERRACOTTA)}) + .register(true); + + new SlimefunBackpack(45, Categories.PORTABLE, (SlimefunItemStack) SlimefunItems.GILDED_BACKPACK, RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {SlimefunItems.GOLD_22K, null, SlimefunItems.GOLD_22K, new ItemStack(Material.LEATHER), SlimefunItems.WOVEN_BACKPACK, new ItemStack(Material.LEATHER), SlimefunItems.GOLD_22K, null, SlimefunItems.GOLD_22K}) + .register(true); + + new SlimefunBackpack(54, Categories.PORTABLE, (SlimefunItemStack) SlimefunItems.RADIANT_BACKPACK, RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {SlimefunItems.GOLD_24K, null, SlimefunItems.GOLD_24K, new ItemStack(Material.LEATHER), SlimefunItems.GILDED_BACKPACK, new ItemStack(Material.LEATHER), SlimefunItems.GOLD_24K, null, SlimefunItems.GOLD_24K}) + .register(true); + + new Alloy(Categories.TECH_MISC, (SlimefunItemStack) SlimefunItems.MAGNET, + new ItemStack[] {SlimefunItems.NICKEL_INGOT, SlimefunItems.ALUMINUM_DUST, SlimefunItems.IRON_DUST, SlimefunItems.COBALT_INGOT, null, null, null, null, null}) + .register(true); + + new SlimefunItem(Categories.MAGIC, (SlimefunItemStack) SlimefunItems.INFUSED_MAGNET, RecipeType.MAGIC_WORKBENCH, + new ItemStack[] {SlimefunItems.MAGIC_LUMP_3, null, SlimefunItems.MAGIC_LUMP_3, SlimefunItems.ENDER_LUMP_2, SlimefunItems.MAGNET, SlimefunItems.ENDER_LUMP_2, SlimefunItems.MAGIC_LUMP_3, null, SlimefunItems.MAGIC_LUMP_3}) + .register(true); + + new SlimefunItem(Categories.TOOLS, (SlimefunItemStack) SlimefunItems.COBALT_PICKAXE, RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {SlimefunItems.COBALT_INGOT, SlimefunItems.COBALT_INGOT, SlimefunItems.COBALT_INGOT, null, SlimefunItems.NICKEL_INGOT, null, null, SlimefunItems.NICKEL_INGOT, null}) + .register(true); + + new SlimefunItem(Categories.LUMPS_AND_MAGIC, (SlimefunItemStack) SlimefunItems.NECROTIC_SKULL, RecipeType.MAGIC_WORKBENCH, + new ItemStack[] {SlimefunItems.MAGIC_LUMP_3, null, SlimefunItems.MAGIC_LUMP_3, null, new ItemStack(Material.WITHER_SKELETON_SKULL), null, SlimefunItems.MAGIC_LUMP_3, null, SlimefunItems.MAGIC_LUMP_3}) + .register(true); + + new SlimefunItem(Categories.LUMPS_AND_MAGIC, (SlimefunItemStack) SlimefunItems.ESSENCE_OF_AFTERLIFE, RecipeType.ANCIENT_ALTAR, + new ItemStack[] {SlimefunItems.ENDER_LUMP_3, SlimefunItems.RUNE_AIR, SlimefunItems.ENDER_LUMP_3, SlimefunItems.RUNE_EARTH, SlimefunItems.NECROTIC_SKULL, SlimefunItems.RUNE_FIRE, SlimefunItems.ENDER_LUMP_3, SlimefunItems.RUNE_WATER, SlimefunItems.ENDER_LUMP_3}) + .register(true); + + new SoulboundBackpack(36, Categories.PORTABLE, (SlimefunItemStack) SlimefunItems.BOUND_BACKPACK, + new ItemStack[] {SlimefunItems.ENDER_LUMP_2, null, SlimefunItems.ENDER_LUMP_2, SlimefunItems.ESSENCE_OF_AFTERLIFE, SlimefunItems.RADIANT_BACKPACK, SlimefunItems.ESSENCE_OF_AFTERLIFE, SlimefunItems.ENDER_LUMP_2, null, SlimefunItems.ENDER_LUMP_2}) + .register(true); + + new JetBoots((SlimefunItemStack) SlimefunItems.DURALUMIN_JETBOOTS, + new ItemStack[] {null, null, null, SlimefunItems.DURALUMIN_INGOT, SlimefunItems.POWER_CRYSTAL, SlimefunItems.DURALUMIN_INGOT, SlimefunItems.STEEL_THRUSTER, SlimefunItems.SMALL_CAPACITOR, SlimefunItems.STEEL_THRUSTER}, + 0.35) + .register(true); + + new JetBoots((SlimefunItemStack) SlimefunItems.SOLDER_JETBOOTS, + new ItemStack[] {null, null, null, SlimefunItems.SOLDER_INGOT, SlimefunItems.POWER_CRYSTAL, SlimefunItems.SOLDER_INGOT, SlimefunItems.STEEL_THRUSTER, SlimefunItems.SMALL_CAPACITOR, SlimefunItems.STEEL_THRUSTER}, + 0.4) + .register(true); + + new JetBoots((SlimefunItemStack) SlimefunItems.BILLON_JETBOOTS, + new ItemStack[] {null, null, null, SlimefunItems.BILLON_INGOT, SlimefunItems.POWER_CRYSTAL, SlimefunItems.BILLON_INGOT, SlimefunItems.STEEL_THRUSTER, SlimefunItems.SMALL_CAPACITOR, SlimefunItems.STEEL_THRUSTER}, + 0.45) + .register(true); + + new JetBoots((SlimefunItemStack) SlimefunItems.STEEL_JETBOOTS, + new ItemStack[] {null, null, null, SlimefunItems.STEEL_INGOT, SlimefunItems.POWER_CRYSTAL, SlimefunItems.STEEL_INGOT, SlimefunItems.STEEL_THRUSTER, SlimefunItems.SMALL_CAPACITOR, SlimefunItems.STEEL_THRUSTER}, + 0.5) + .register(true); + + new JetBoots((SlimefunItemStack) SlimefunItems.DAMASCUS_STEEL_JETBOOTS, + new ItemStack[] {null, null, null, SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.POWER_CRYSTAL, SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.STEEL_THRUSTER, SlimefunItems.SMALL_CAPACITOR, SlimefunItems.STEEL_THRUSTER}, + 0.55) + .register(true); + + new JetBoots((SlimefunItemStack) SlimefunItems.REINFORCED_ALLOY_JETBOOTS, + new ItemStack[] {null, null, null, SlimefunItems.REINFORCED_ALLOY_INGOT, SlimefunItems.POWER_CRYSTAL, SlimefunItems.REINFORCED_ALLOY_INGOT, SlimefunItems.STEEL_THRUSTER, SlimefunItems.MEDIUM_CAPACITOR, SlimefunItems.STEEL_THRUSTER}, + 0.6) + .register(true); + + new JetBoots((SlimefunItemStack) SlimefunItems.CARBONADO_JETBOOTS, + new ItemStack[] {null, null, null, SlimefunItems.CARBONADO, SlimefunItems.POWER_CRYSTAL, SlimefunItems.CARBONADO, SlimefunItems.STEEL_THRUSTER, SlimefunItems.LARGE_CAPACITOR, SlimefunItems.STEEL_THRUSTER}, + 0.7) + .register(true); + + new JetBoots((SlimefunItemStack) SlimefunItems.ARMORED_JETBOOTS, + new ItemStack[] {null, null, null, SlimefunItems.STEEL_PLATE, SlimefunItems.POWER_CRYSTAL, SlimefunItems.STEEL_PLATE, SlimefunItems.STEEL_THRUSTER, SlimefunItems.MEDIUM_CAPACITOR, SlimefunItems.STEEL_THRUSTER}, + 0.45) + .register(true); + + new SeismicAxe(Categories.WEAPONS, (SlimefunItemStack) SlimefunItems.SEISMIC_AXE, RecipeType.MAGIC_WORKBENCH, + new ItemStack[] {SlimefunItems.HARDENED_METAL_INGOT, SlimefunItems.HARDENED_METAL_INGOT, null, SlimefunItems.HARDENED_METAL_INGOT, SlimefunItems.STAFF_ELEMENTAL, null, null, SlimefunItems.STAFF_ELEMENTAL, null}) + .register(true); + + new PickaxeOfVeinMining(Categories.TOOLS, (SlimefunItemStack) SlimefunItems.PICKAXE_OF_VEIN_MINING, RecipeType.MAGIC_WORKBENCH, + new ItemStack[] {new ItemStack(Material.EMERALD_ORE), SlimefunItems.SYNTHETIC_DIAMOND, new ItemStack(Material.EMERALD_ORE), null, SlimefunItems.GILDED_IRON, null, null, SlimefunItems.GILDED_IRON, null}) + .register(true); + + new SoulboundItem(Categories.WEAPONS, (SlimefunItemStack) SlimefunItems.SOULBOUND_SWORD, + new ItemStack[] {null, SlimefunItems.ESSENCE_OF_AFTERLIFE, null, null, new ItemStack(Material.DIAMOND_SWORD), null, null, SlimefunItems.ESSENCE_OF_AFTERLIFE, null}) + .register(true); + + new SoulboundItem(Categories.WEAPONS, (SlimefunItemStack) SlimefunItems.SOULBOUND_BOW, + new ItemStack[] {null, SlimefunItems.ESSENCE_OF_AFTERLIFE, null, null, new ItemStack(Material.BOW), null, null, SlimefunItems.ESSENCE_OF_AFTERLIFE, null}) + .register(true); + + new SoulboundItem(Categories.TOOLS, (SlimefunItemStack) SlimefunItems.SOULBOUND_PICKAXE, + new ItemStack[] {null, SlimefunItems.ESSENCE_OF_AFTERLIFE, null, null, new ItemStack(Material.DIAMOND_PICKAXE), null, null, SlimefunItems.ESSENCE_OF_AFTERLIFE, null}) + .register(true); + + new ExcludedSoulboundTool(Categories.TOOLS, (SlimefunItemStack) SlimefunItems.SOULBOUND_AXE, + new ItemStack[] {null, SlimefunItems.ESSENCE_OF_AFTERLIFE, null, null, new ItemStack(Material.DIAMOND_AXE), null, null, SlimefunItems.ESSENCE_OF_AFTERLIFE, null}) + .register(true); + + new ExcludedSoulboundTool(Categories.TOOLS, (SlimefunItemStack) SlimefunItems.SOULBOUND_SHOVEL, + new ItemStack[] {null, SlimefunItems.ESSENCE_OF_AFTERLIFE, null, null, new ItemStack(Material.DIAMOND_SHOVEL), null, null, SlimefunItems.ESSENCE_OF_AFTERLIFE, null}) + .register(true); + + new ExcludedSoulboundTool(Categories.TOOLS, (SlimefunItemStack) SlimefunItems.SOULBOUND_HOE, + new ItemStack[] {null, SlimefunItems.ESSENCE_OF_AFTERLIFE, null, null, new ItemStack(Material.DIAMOND_HOE), null, null, SlimefunItems.ESSENCE_OF_AFTERLIFE, null}) + .register(true); + + new SoulboundItem(Categories.MAGIC_ARMOR, (SlimefunItemStack) SlimefunItems.SOULBOUND_HELMET, + new ItemStack[] {null, SlimefunItems.ESSENCE_OF_AFTERLIFE, null, null, new ItemStack(Material.DIAMOND_HELMET), null, null, SlimefunItems.ESSENCE_OF_AFTERLIFE, null}) + .register(true); + + new SoulboundItem(Categories.MAGIC_ARMOR, (SlimefunItemStack) SlimefunItems.SOULBOUND_CHESTPLATE, + new ItemStack[] {null, SlimefunItems.ESSENCE_OF_AFTERLIFE, null, null, new ItemStack(Material.DIAMOND_CHESTPLATE), null, null, SlimefunItems.ESSENCE_OF_AFTERLIFE, null}) + .register(true); + + new SoulboundItem(Categories.MAGIC_ARMOR, (SlimefunItemStack) SlimefunItems.SOULBOUND_LEGGINGS, + new ItemStack[] {null, SlimefunItems.ESSENCE_OF_AFTERLIFE, null, null, new ItemStack(Material.DIAMOND_LEGGINGS), null, null, SlimefunItems.ESSENCE_OF_AFTERLIFE, null}) + .register(true); + + new SoulboundItem(Categories.MAGIC_ARMOR, (SlimefunItemStack) SlimefunItems.SOULBOUND_BOOTS, + new ItemStack[] {null, SlimefunItems.ESSENCE_OF_AFTERLIFE, null, null, new ItemStack(Material.DIAMOND_BOOTS), null, null, SlimefunItems.ESSENCE_OF_AFTERLIFE, null}) + .register(true); + + new Juicer().register(); + + new Juice(Categories.FOOD, (SlimefunItemStack) SlimefunItems.APPLE_JUICE, RecipeType.JUICER, + new ItemStack[] {new ItemStack(Material.APPLE), null, null, null, null, null, null, null, null}) + .register(true); + + new Juice(Categories.FOOD, (SlimefunItemStack) SlimefunItems.CARROT_JUICE, RecipeType.JUICER, + new ItemStack[] {new ItemStack(Material.CARROT), null, null, null, null, null, null, null, null}) + .register(true); + + new Juice(Categories.FOOD, (SlimefunItemStack) SlimefunItems.MELON_JUICE, RecipeType.JUICER, + new ItemStack[] {new ItemStack(Material.MELON), null, null, null, null, null, null, null, null}) + .register(true); + + new Juice(Categories.FOOD, (SlimefunItemStack) SlimefunItems.PUMPKIN_JUICE, RecipeType.JUICER, + new ItemStack[] {new ItemStack(Material.PUMPKIN), null, null, null, null, null, null, null, null}) + .register(true); + + new Juice(Categories.FOOD, (SlimefunItemStack) SlimefunItems.SWEET_BERRY_JUICE, RecipeType.JUICER, + new ItemStack[] {new ItemStack(Material.SWEET_BERRIES), null, null, null, null, null, null, null, null}) + .register(true); + + new Juice(Categories.FOOD, (SlimefunItemStack) SlimefunItems.GOLDEN_APPLE_JUICE, RecipeType.JUICER, + new ItemStack[] {new ItemStack(Material.GOLDEN_APPLE), null, null, null, null, null, null, null, null}) + .register(true); + + new SlimefunItem(Categories.LUMPS_AND_MAGIC, (SlimefunItemStack) SlimefunItems.BROKEN_SPAWNER, new RecipeType(SlimefunItems.PICKAXE_OF_CONTAINMENT), + new ItemStack[] {null, null, null, null, new ItemStack(Material.SPAWNER), null, null, null, null}) + .register(true); + + new SlimefunItem(Categories.MAGIC, (SlimefunItemStack) SlimefunItems.REPAIRED_SPAWNER, RecipeType.ANCIENT_ALTAR, + new ItemStack[] {SlimefunItems.RUNE_ENDER, new CustomItem(Material.EXPERIENCE_BOTTLE, "&aFlask of Knowledge"), SlimefunItems.ESSENCE_OF_AFTERLIFE, new CustomItem(Material.EXPERIENCE_BOTTLE, "&aFlask of Knowledge"), SlimefunItems.BROKEN_SPAWNER, new CustomItem(Material.EXPERIENCE_BOTTLE, "&aFlask of Knowledge"), SlimefunItems.ESSENCE_OF_AFTERLIFE, new CustomItem(Material.EXPERIENCE_BOTTLE, "&aFlask of Knowledge"), SlimefunItems.RUNE_ENDER}) + .register(true, (BlockPlaceHandler) (e, item) -> { + if (SlimefunManager.isItemSimiliar(item, SlimefunItems.REPAIRED_SPAWNER, false)) { + EntityType type = null; + + for (String line: item.getItemMeta().getLore()) { + if (ChatColor.stripColor(line).startsWith("Type: ") && !line.contains("")) { + type = EntityType.valueOf(ChatColor.stripColor(line).replace("Type: ", "").replace(' ', '_').toUpperCase()); + } + } + + if (type != null) { + CreatureSpawner spawner = (CreatureSpawner) e.getBlock().getState(); + spawner.setSpawnedType(type); + spawner.update(true, false); + } + + return true; + } + else { + return false; + } + }); + + new EnhancedFurnace(1, 1, 1, (SlimefunItemStack) SlimefunItems.ENHANCED_FURNACE, + new ItemStack[] {null, SlimefunItems.BASIC_CIRCUIT_BOARD, null, SlimefunItems.HEATING_COIL, new ItemStack(Material.FURNACE), SlimefunItems.HEATING_COIL, null, SlimefunItems.ELECTRIC_MOTOR, null}) + .register(true); + + new EnhancedFurnace(2, 1, 1, (SlimefunItemStack) SlimefunItems.ENHANCED_FURNACE_2, + new ItemStack[] {null, SlimefunItems.BASIC_CIRCUIT_BOARD, null, SlimefunItems.HEATING_COIL, SlimefunItems.ENHANCED_FURNACE, SlimefunItems.HEATING_COIL, null, SlimefunItems.ELECTRIC_MOTOR, null}) + .register(true); + + new EnhancedFurnace(2, 2, 1, (SlimefunItemStack) SlimefunItems.ENHANCED_FURNACE_3, + new ItemStack[] {null, SlimefunItems.BASIC_CIRCUIT_BOARD, null, SlimefunItems.HEATING_COIL, SlimefunItems.ENHANCED_FURNACE_2, SlimefunItems.HEATING_COIL, null, SlimefunItems.ELECTRIC_MOTOR, null}) + .register(true); + + new EnhancedFurnace(3, 2, 1, (SlimefunItemStack) SlimefunItems.ENHANCED_FURNACE_4, + new ItemStack[] {null, SlimefunItems.BASIC_CIRCUIT_BOARD, null, SlimefunItems.HEATING_COIL, SlimefunItems.ENHANCED_FURNACE_3, SlimefunItems.HEATING_COIL, null, SlimefunItems.ELECTRIC_MOTOR, null}) + .register(true); + + new EnhancedFurnace(3, 2, 2, (SlimefunItemStack) SlimefunItems.ENHANCED_FURNACE_5, + new ItemStack[] {null, SlimefunItems.BASIC_CIRCUIT_BOARD, null, SlimefunItems.HEATING_COIL, SlimefunItems.ENHANCED_FURNACE_4, SlimefunItems.HEATING_COIL, null, SlimefunItems.ELECTRIC_MOTOR, null}) + .register(true); + + new EnhancedFurnace(3, 3, 2, (SlimefunItemStack) SlimefunItems.ENHANCED_FURNACE_6, + new ItemStack[] {null, SlimefunItems.BASIC_CIRCUIT_BOARD, null, SlimefunItems.HEATING_COIL, SlimefunItems.ENHANCED_FURNACE_5, SlimefunItems.HEATING_COIL, null, SlimefunItems.ELECTRIC_MOTOR, null}) + .register(true); + + new EnhancedFurnace(4, 3, 2, (SlimefunItemStack) SlimefunItems.ENHANCED_FURNACE_7, + new ItemStack[] {null, SlimefunItems.BASIC_CIRCUIT_BOARD, null, SlimefunItems.HEATING_COIL, SlimefunItems.ENHANCED_FURNACE_6, SlimefunItems.HEATING_COIL, null, SlimefunItems.ELECTRIC_MOTOR, null}) + .register(true); + + new EnhancedFurnace(4, 4, 2, (SlimefunItemStack) SlimefunItems.ENHANCED_FURNACE_8, + new ItemStack[] {null, SlimefunItems.BASIC_CIRCUIT_BOARD, null, SlimefunItems.HEATING_COIL, SlimefunItems.ENHANCED_FURNACE_7, SlimefunItems.HEATING_COIL, null, SlimefunItems.ELECTRIC_MOTOR, null}) + .register(true); + + new EnhancedFurnace(5, 4, 2, (SlimefunItemStack) SlimefunItems.ENHANCED_FURNACE_9, + new ItemStack[] {null, SlimefunItems.BASIC_CIRCUIT_BOARD, null, SlimefunItems.HEATING_COIL, SlimefunItems.ENHANCED_FURNACE_8, SlimefunItems.HEATING_COIL, null, SlimefunItems.ELECTRIC_MOTOR, null}) + .register(true); + + new EnhancedFurnace(5, 5, 2, (SlimefunItemStack) SlimefunItems.ENHANCED_FURNACE_10, + new ItemStack[] {null, SlimefunItems.BASIC_CIRCUIT_BOARD, null, SlimefunItems.HEATING_COIL, SlimefunItems.ENHANCED_FURNACE_9, SlimefunItems.HEATING_COIL, null, SlimefunItems.ELECTRIC_MOTOR, null}) + .register(true); + + new EnhancedFurnace(5, 5, 3, (SlimefunItemStack) SlimefunItems.ENHANCED_FURNACE_11, + new ItemStack[] {null, SlimefunItems.BASIC_CIRCUIT_BOARD, null, SlimefunItems.HEATING_COIL, SlimefunItems.ENHANCED_FURNACE_10, SlimefunItems.HEATING_COIL, null, SlimefunItems.ELECTRIC_MOTOR, null}) + .register(true); + + new EnhancedFurnace(10, 10, 3, (SlimefunItemStack) SlimefunItems.REINFORCED_FURNACE, + new ItemStack[] {SlimefunItems.REINFORCED_ALLOY_INGOT, SlimefunItems.BASIC_CIRCUIT_BOARD, SlimefunItems.REINFORCED_ALLOY_INGOT, SlimefunItems.HEATING_COIL, SlimefunItems.ENHANCED_FURNACE_11, SlimefunItems.HEATING_COIL, SlimefunItems.REINFORCED_ALLOY_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.REINFORCED_ALLOY_INGOT}) + .register(true); + + new EnhancedFurnace(20, 10, 3, (SlimefunItemStack) SlimefunItems.CARBONADO_EDGED_FURNACE, + new ItemStack[] {SlimefunItems.CARBONADO, SlimefunItems.BASIC_CIRCUIT_BOARD, SlimefunItems.CARBONADO, SlimefunItems.HEATING_COIL, SlimefunItems.REINFORCED_FURNACE, SlimefunItems.HEATING_COIL, SlimefunItems.CARBONADO, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.CARBONADO}) + .register(true); + + new SlimefunItem(Categories.TECH_MISC, (SlimefunItemStack) SlimefunItems.ELECTRO_MAGNET, RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {SlimefunItems.NICKEL_INGOT, SlimefunItems.MAGNET, SlimefunItems.COBALT_INGOT, null, SlimefunItems.BATTERY, null, null, null, null}) + .register(true); + + new SlimefunItem(Categories.TECH_MISC, (SlimefunItemStack) SlimefunItems.ELECTRIC_MOTOR, RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {SlimefunItems.COPPER_WIRE, SlimefunItems.COPPER_WIRE, SlimefunItems.COPPER_WIRE, null, SlimefunItems.ELECTRO_MAGNET, null, SlimefunItems.COPPER_WIRE, SlimefunItems.COPPER_WIRE, SlimefunItems.COPPER_WIRE}) + .register(true); + + new SlimefunItem(Categories.TECH_MISC, (SlimefunItemStack) SlimefunItems.HEATING_COIL, RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {SlimefunItems.COPPER_WIRE, SlimefunItems.COPPER_WIRE, SlimefunItems.COPPER_WIRE, SlimefunItems.COPPER_WIRE, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.COPPER_WIRE, SlimefunItems.COPPER_WIRE, SlimefunItems.COPPER_WIRE, SlimefunItems.COPPER_WIRE}) + .register(true); + + new SlimefunItem(Categories.TECH_MISC, (SlimefunItemStack) SlimefunItems.COPPER_WIRE, RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {null, null, null, SlimefunItems.COPPER_INGOT, SlimefunItems.COPPER_INGOT, SlimefunItems.COPPER_INGOT, null, null, null}, new CustomItem(SlimefunItems.COPPER_WIRE, 8)) + .register(true); + + new BlockPlacer(Categories.MACHINES_1, (SlimefunItemStack) SlimefunItems.BLOCK_PLACER, RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {SlimefunItems.GOLD_4K, new ItemStack(Material.PISTON), SlimefunItems.GOLD_4K, new ItemStack(Material.IRON_INGOT), SlimefunItems.ELECTRIC_MOTOR, new ItemStack(Material.IRON_INGOT), SlimefunItems.GOLD_4K, new ItemStack(Material.PISTON), SlimefunItems.GOLD_4K}, + new String[] {"unplaceable-blocks"}, new Object[] {Stream.of(Material.STRUCTURE_BLOCK, Material.COMMAND_BLOCK, Material.CHAIN_COMMAND_BLOCK, Material.REPEATING_COMMAND_BLOCK).map(Material::toString).collect(Collectors.toList())}) + .register(true); + + new TelepositionScroll(Categories.MAGIC, (SlimefunItemStack) SlimefunItems.SCROLL_OF_DIMENSIONAL_TELEPOSITION, RecipeType.MAGIC_WORKBENCH, + new ItemStack[] {null, SlimefunItems.ENDER_LUMP_3, SlimefunItems.MAGIC_EYE_OF_ENDER, SlimefunItems.ENDER_LUMP_3, SlimefunItems.MAGICAL_BOOK_COVER, SlimefunItems.ENDER_LUMP_3, SlimefunItems.MAGIC_EYE_OF_ENDER, SlimefunItems.ENDER_LUMP_3, null}) + .register(true); + + new SlimefunBow((SlimefunItemStack) SlimefunItems.EXPLOSIVE_BOW, + new ItemStack[] {null, new ItemStack(Material.STICK), new ItemStack(Material.GUNPOWDER), SlimefunItems.STAFF_FIRE, null, SlimefunItems.SULFATE, null, new ItemStack(Material.STICK), new ItemStack(Material.GUNPOWDER)}) + .register(true, new BowShootHandler() { + + @Override + public boolean onHit(EntityDamageByEntityEvent e, LivingEntity n) { + if (SlimefunManager.isItemSimiliar(SlimefunPlugin.getUtilities().arrows.get(e.getDamager().getUniqueId()), SlimefunItems.EXPLOSIVE_BOW, true)) { + Vector vector = n.getVelocity(); + vector.setY(0.6); + n.setVelocity(vector); + n.getWorld().createExplosion(n.getLocation(), 0F); + n.getWorld().playSound(n.getLocation(), Sound.ENTITY_GENERIC_EXPLODE, 1F, 1F); + return true; + } + else return false; + } + }); + + new SlimefunBow((SlimefunItemStack) (SlimefunItemStack) SlimefunItems.ICY_BOW, + new ItemStack[] {null, new ItemStack(Material.STICK), new ItemStack(Material.ICE), SlimefunItems.STAFF_WATER, null, new ItemStack(Material.PACKED_ICE), null, new ItemStack(Material.STICK), new ItemStack(Material.ICE)}) + .register(true, new BowShootHandler() { + + @Override + public boolean onHit(EntityDamageByEntityEvent e, LivingEntity n) { + if (SlimefunManager.isItemSimiliar(SlimefunPlugin.getUtilities().arrows.get(e.getDamager().getUniqueId()), SlimefunItems.ICY_BOW, true)) { + n.getWorld().playEffect(n.getLocation(), Effect.STEP_SOUND, Material.ICE); + n.getWorld().playEffect(n.getEyeLocation(), Effect.STEP_SOUND, Material.ICE); + n.addPotionEffect(new PotionEffect(PotionEffectType.SLOW, 20 * 2, 10)); + n.addPotionEffect(new PotionEffect(PotionEffectType.JUMP, 20 * 2, -10)); + return true; + } + else return false; + } + }); + + new KnowledgeTome(Categories.MAGIC, (SlimefunItemStack) SlimefunItems.TOME_OF_KNOWLEDGE_SHARING, RecipeType.MAGIC_WORKBENCH, + new ItemStack[] {null, new ItemStack(Material.FEATHER), null, new ItemStack(Material.INK_SAC), SlimefunItems.MAGICAL_BOOK_COVER, new ItemStack(Material.GLASS_BOTTLE), null, new ItemStack(Material.WRITABLE_BOOK), null}) + .register(true); + + new KnowledgeFlask(Categories.MAGIC, (SlimefunItemStack) SlimefunItems.FLASK_OF_KNOWLEDGE, RecipeType.MAGIC_WORKBENCH, + new ItemStack[] {null, null, null, SlimefunItems.MAGIC_LUMP_2, new ItemStack(Material.GLASS_PANE), SlimefunItems.MAGIC_LUMP_2, null, SlimefunItems.MAGIC_LUMP_2, null}, new CustomItem(SlimefunItems.FLASK_OF_KNOWLEDGE, 8)) + .register(true); + + new ExcludedBlock(Categories.BIRTHDAY, new CustomItem(new ItemStack(Material.CAKE), "&bBirthday Cake"), "BIRTHDAY_CAKE", RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {null, new ItemStack(Material.TORCH), null, new ItemStack(Material.SUGAR), new ItemStack(Material.CAKE), new ItemStack(Material.SUGAR), null, null, null}) + .register(true); + + new SlimefunItem(Categories.CHRISTMAS, SlimefunItems.CHRISTMAS_MILK, "CHRISTMAS_MILK", RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {new ItemStack(Material.MILK_BUCKET), new ItemStack(Material.GLASS_BOTTLE), null, null, null, null, null, null, null}, new CustomItem(SlimefunItems.CHRISTMAS_MILK, 4)) + .register(true); + + new SlimefunItem(Categories.CHRISTMAS, SlimefunItems.CHRISTMAS_CHOCOLATE_MILK, "CHRISTMAS_CHOCOLATE_MILK", RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {SlimefunItems.CHRISTMAS_MILK, new ItemStack(Material.COCOA_BEANS), null, null, null, null, null, null, null}, new CustomItem(SlimefunItems.CHRISTMAS_CHOCOLATE_MILK, 2)) + .register(true); + + new SlimefunItem(Categories.CHRISTMAS, SlimefunItems.CHRISTMAS_EGG_NOG, "CHRISTMAS_EGG_NOG", RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {SlimefunItems.CHRISTMAS_MILK, new ItemStack(Material.EGG), null, null, null, null, null, null, null}, new CustomItem(SlimefunItems.CHRISTMAS_EGG_NOG, 2)) + .register(true); + + new SlimefunItem(Categories.CHRISTMAS, SlimefunItems.CHRISTMAS_APPLE_CIDER, "CHRISTMAS_APPLE_CIDER", RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {SlimefunItems.APPLE_JUICE, new ItemStack(Material.SUGAR), null, null, null, null, null, null, null}, new CustomItem(SlimefunItems.CHRISTMAS_APPLE_CIDER, 2)) + .register(true); + + new SlimefunItem(Categories.CHRISTMAS, SlimefunItems.CHRISTMAS_COOKIE, "CHRISTMAS_COOKIE", RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {new ItemStack(Material.COOKIE), new ItemStack(Material.SUGAR), new ItemStack(Material.LIME_DYE), null, null, null, null, null, null}, new CustomItem(SlimefunItems.CHRISTMAS_COOKIE, 16)) + .register(true); + + new SlimefunItem(Categories.CHRISTMAS, SlimefunItems.CHRISTMAS_FRUIT_CAKE, "CHRISTMAS_FRUIT_CAKE", RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {new ItemStack(Material.EGG), new ItemStack(Material.APPLE), new ItemStack(Material.MELON), new ItemStack(Material.SUGAR), null, null, null, null, null}, new CustomItem(SlimefunItems.CHRISTMAS_FRUIT_CAKE, 4)) + .register(true); + + new SlimefunItem(Categories.CHRISTMAS, SlimefunItems.CHRISTMAS_APPLE_PIE, "CHRISTMAS_APPLE_PIE", RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {new ItemStack(Material.SUGAR), new ItemStack(Material.APPLE), new ItemStack(Material.EGG), null, null, null, null, null, null}, new CustomItem(SlimefunItems.CHRISTMAS_APPLE_PIE, 2)) + .register(true); + + new SlimefunItem(Categories.CHRISTMAS, SlimefunItems.CHRISTMAS_HOT_CHOCOLATE, "CHRISTMAS_HOT_CHOCOLATE", RecipeType.SMELTERY, + new ItemStack[] {SlimefunItems.CHRISTMAS_CHOCOLATE_MILK, null, null, null, null, null, null, null, null}, SlimefunItems.CHRISTMAS_HOT_CHOCOLATE) + .register(true); + + new SlimefunItem(Categories.CHRISTMAS, SlimefunItems.CHRISTMAS_CAKE, "CHRISTMAS_CAKE", RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {new ItemStack(Material.EGG), new ItemStack(Material.SUGAR), SlimefunItems.WHEAT_FLOUR, new ItemStack(Material.MILK_BUCKET), null, null, null, null, null}, new CustomItem(SlimefunItems.CHRISTMAS_CAKE, 4)) + .register(true); + + new SlimefunItem(Categories.CHRISTMAS, SlimefunItems.CHRISTMAS_CARAMEL, "CHRISTMAS_CARAMEL", RecipeType.SMELTERY, + new ItemStack[] {new ItemStack(Material.SUGAR), new ItemStack(Material.SUGAR), null, null, null, null, null, null, null}, new CustomItem(SlimefunItems.CHRISTMAS_CARAMEL, 4)) + .register(true); + + new SlimefunItem(Categories.CHRISTMAS, SlimefunItems.CHRISTMAS_CARAMEL_APPLE, "CHRISTMAS_CARAMEL_APPLE", RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {null, new ItemStack(Material.SUGAR), null, null, new ItemStack(Material.APPLE), null, null, new ItemStack(Material.STICK), null}, new CustomItem(SlimefunItems.CHRISTMAS_CARAMEL_APPLE, 2)) + .register(true); + + new SlimefunItem(Categories.CHRISTMAS, SlimefunItems.CHRISTMAS_CHOCOLATE_APPLE, "CHRISTMAS_CHOCOLATE_APPLE", RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {null, new ItemStack(Material.COCOA_BEANS), null, null, new ItemStack(Material.APPLE), null, null, new ItemStack(Material.STICK), null}, new CustomItem(SlimefunItems.CHRISTMAS_CARAMEL_APPLE, 2)) + .register(true); + + new SlimefunItem(Categories.CHRISTMAS, SlimefunItems.CHRISTMAS_PRESENT, "CHRISTMAS_PRESENT", RecipeType.MAGIC_WORKBENCH, + new ItemStack[] {null, new ItemStack(Material.NAME_TAG), null, new ItemStack(Material.RED_WOOL), new ItemStack(Material.GREEN_WOOL), new ItemStack(Material.RED_WOOL), new ItemStack(Material.RED_WOOL), new ItemStack(Material.GREEN_WOOL), new ItemStack(Material.RED_WOOL)}) + .register(true); + + new SlimefunItem(Categories.EASTER, SlimefunItems.EASTER_CARROT_PIE, "EASTER_CARROT_PIE", RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {new ItemStack(Material.SUGAR), new ItemStack(Material.CARROT), new ItemStack(Material.EGG), null, null, null, null, null, null}, new CustomItem(SlimefunItems.EASTER_CARROT_PIE, 2)) + .register(true); + + new SlimefunItem(Categories.EASTER, SlimefunItems.CHRISTMAS_APPLE_PIE, "EASTER_APPLE_PIE", RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {new ItemStack(Material.SUGAR), new ItemStack(Material.APPLE), new ItemStack(Material.EGG), null, null, null, null, null, null}, new CustomItem(SlimefunItems.CHRISTMAS_APPLE_PIE, 2)) + .register(true); + + new SlimefunItem(Categories.EASTER, (SlimefunItemStack) SlimefunItems.EASTER_EGG, RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {null, null, null, new ItemStack(Material.LIME_DYE), new ItemStack(Material.EGG), new ItemStack(Material.PURPLE_DYE), null, null, null}, new CustomItem(SlimefunItems.EASTER_EGG, 2)) + .register(true, new ItemInteractionHandler() { + + @Override + public boolean onRightClick(ItemUseEvent e, Player p, ItemStack item) { + if (SlimefunManager.isItemSimiliar(item, SlimefunItems.EASTER_EGG, true)) { + e.setCancelled(true); + if (p.getGameMode() != GameMode.CREATIVE) ItemUtils.consumeItem(item, false); + FireworkShow.launchRandom(e.getPlayer(), 2); + + List gifts = new ArrayList<>(); + + for (int i = 0; i < 2; i++) { + gifts.add(new CustomItem(SlimefunItems.EASTER_CARROT_PIE, 4)); + gifts.add(new CustomItem(SlimefunItems.CARROT_JUICE, 1)); + gifts.add(new ItemStack(Material.EMERALD)); + gifts.add(new ItemStack(Material.CAKE)); + gifts.add(new ItemStack(Material.RABBIT_FOOT)); + gifts.add(new ItemStack(Material.GOLDEN_CARROT, 4)); + } + + p.getWorld().dropItemNaturally(p.getLocation(), gifts.get(random.nextInt(gifts.size()))); + return true; + } + else return false; + } + }); + + new SlimefunItem(Categories.MISC, (SlimefunItemStack) SlimefunItems.REINFORCED_PLATE, RecipeType.COMPRESSOR, + new ItemStack[] {new CustomItem(SlimefunItems.REINFORCED_ALLOY_INGOT, 8), null, null, null, null, null, null, null, null}) + .register(true); + + new SlimefunItem(Categories.TECH_MISC, (SlimefunItemStack) SlimefunItems.HARDENED_GLASS, RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {new ItemStack(Material.GLASS), new ItemStack(Material.GLASS), new ItemStack(Material.GLASS), new ItemStack(Material.GLASS), SlimefunItems.REINFORCED_PLATE, new ItemStack(Material.GLASS), new ItemStack(Material.GLASS), new ItemStack(Material.GLASS), new ItemStack(Material.GLASS)}, + new CustomItem(SlimefunItems.HARDENED_GLASS, 16)) + .register(true); + + new SlimefunItem(Categories.TECH_MISC, (SlimefunItemStack) SlimefunItems.SOLAR_ARRAY, RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {SlimefunItems.HARDENED_GLASS, SlimefunItems.HARDENED_GLASS, SlimefunItems.HARDENED_GLASS, SlimefunItems.SOLAR_PANEL, SlimefunItems.SOLAR_PANEL, SlimefunItems.SOLAR_PANEL, SlimefunItems.HARDENED_GLASS, SlimefunItems.HARDENED_GLASS, SlimefunItems.HARDENED_GLASS}) + .register(true); + + new SlimefunItem(Categories.TECH_MISC, (SlimefunItemStack) SlimefunItems.COOLING_UNIT, RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {new ItemStack(Material.ICE), new ItemStack(Material.ICE), new ItemStack(Material.ICE), SlimefunItems.ALUMINUM_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.ALUMINUM_INGOT, new ItemStack(Material.ICE), new ItemStack(Material.ICE), new ItemStack(Material.ICE)}) + .register(true); + + new SlimefunBackpack(27, Categories.PORTABLE, (SlimefunItemStack) SlimefunItems.COOLER, RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {SlimefunItems.CLOTH, SlimefunItems.CLOTH, SlimefunItems.CLOTH, SlimefunItems.ALUMINUM_INGOT, SlimefunItems.COOLING_UNIT, SlimefunItems.ALUMINUM_INGOT, SlimefunItems.ALUMINUM_INGOT, SlimefunItems.ALUMINUM_INGOT, SlimefunItems.ALUMINUM_INGOT}) + .register(true); + + new SlimefunItem(Categories.TECH_MISC, (SlimefunItemStack) SlimefunItems.WITHER_PROOF_OBSIDIAN, RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {SlimefunItems.LEAD_INGOT, new ItemStack(Material.OBSIDIAN), SlimefunItems.LEAD_INGOT, new ItemStack(Material.OBSIDIAN), SlimefunItems.HARDENED_GLASS, new ItemStack(Material.OBSIDIAN), SlimefunItems.LEAD_INGOT, new ItemStack(Material.OBSIDIAN), SlimefunItems.LEAD_INGOT}, + new CustomItem(SlimefunItems.WITHER_PROOF_OBSIDIAN, 4)) + .register(true); + + new AncientPedestal(Categories.LUMPS_AND_MAGIC, (SlimefunItemStack) SlimefunItems.ANCIENT_PEDESTAL, RecipeType.MAGIC_WORKBENCH, + new ItemStack[] {new ItemStack(Material.OBSIDIAN), SlimefunItems.GOLD_8K, new ItemStack(Material.OBSIDIAN), null, new ItemStack(Material.STONE), null, new ItemStack(Material.OBSIDIAN), SlimefunItems.GOLD_8K, new ItemStack(Material.OBSIDIAN)}, new CustomItem(SlimefunItems.ANCIENT_PEDESTAL, 4)) + .register(true); + + new SlimefunItem(Categories.MAGIC, (SlimefunItemStack) SlimefunItems.ANCIENT_ALTAR, RecipeType.MAGIC_WORKBENCH, + new ItemStack[] {null, new ItemStack(Material.ENCHANTING_TABLE), null, SlimefunItems.MAGIC_LUMP_3, SlimefunItems.GOLD_8K, SlimefunItems.MAGIC_LUMP_3, new ItemStack(Material.OBSIDIAN), SlimefunItems.GOLD_8K, new ItemStack(Material.OBSIDIAN)}) + .register(true); + + // Slimefun 4 + + new EnergyRegulator(Categories.ELECTRICITY, (SlimefunItemStack) SlimefunItems.ENERGY_REGULATOR, RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {SlimefunItems.SILVER_INGOT, SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.SILVER_INGOT, SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.SILVER_INGOT, SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.SILVER_INGOT}) + .register(true); + + new SlimefunItem(Categories.MISC, (SlimefunItemStack) SlimefunItems.DUCT_TAPE, RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {SlimefunItems.ALUMINUM_DUST, SlimefunItems.ALUMINUM_DUST, SlimefunItems.ALUMINUM_DUST, new ItemStack(Material.SLIME_BALL), new ItemStack(Material.WHITE_WOOL), new ItemStack(Material.SLIME_BALL), new ItemStack(Material.PAPER), new ItemStack(Material.PAPER), new ItemStack(Material.PAPER)}, new CustomItem(SlimefunItems.DUCT_TAPE, 2)) + .register(true); + + new SlimefunItem(Categories.ELECTRICITY, (SlimefunItemStack) SlimefunItems.SMALL_CAPACITOR, RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {SlimefunItems.DURALUMIN_INGOT, SlimefunItems.REDSTONE_ALLOY, SlimefunItems.DURALUMIN_INGOT, new ItemStack(Material.REDSTONE), SlimefunItems.SULFATE, new ItemStack(Material.REDSTONE), SlimefunItems.DURALUMIN_INGOT, SlimefunItems.REDSTONE_ALLOY, SlimefunItems.DURALUMIN_INGOT}) + .registerDistibutingCapacitor(true, 128); + + new SlimefunItem(Categories.ELECTRICITY, (SlimefunItemStack) SlimefunItems.MEDIUM_CAPACITOR, RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {SlimefunItems.BILLON_INGOT, SlimefunItems.REDSTONE_ALLOY, SlimefunItems.BILLON_INGOT, new ItemStack(Material.REDSTONE), SlimefunItems.SMALL_CAPACITOR, new ItemStack(Material.REDSTONE), SlimefunItems.BILLON_INGOT, SlimefunItems.REDSTONE_ALLOY, SlimefunItems.BILLON_INGOT}) + .registerDistibutingCapacitor(true, 512); + + new SlimefunItem(Categories.ELECTRICITY, (SlimefunItemStack) SlimefunItems.BIG_CAPACITOR, RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {SlimefunItems.STEEL_INGOT, SlimefunItems.REDSTONE_ALLOY, SlimefunItems.STEEL_INGOT, new ItemStack(Material.REDSTONE), SlimefunItems.MEDIUM_CAPACITOR, new ItemStack(Material.REDSTONE), SlimefunItems.STEEL_INGOT, SlimefunItems.REDSTONE_ALLOY, SlimefunItems.STEEL_INGOT}) + .registerDistibutingCapacitor(true, 1024); + + new SlimefunItem(Categories.ELECTRICITY, (SlimefunItemStack) SlimefunItems.LARGE_CAPACITOR, RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {SlimefunItems.REINFORCED_ALLOY_INGOT, SlimefunItems.REDSTONE_ALLOY, SlimefunItems.REINFORCED_ALLOY_INGOT, new ItemStack(Material.REDSTONE), SlimefunItems.BIG_CAPACITOR, new ItemStack(Material.REDSTONE), SlimefunItems.REINFORCED_ALLOY_INGOT, SlimefunItems.REDSTONE_ALLOY, SlimefunItems.REINFORCED_ALLOY_INGOT}) + .registerDistibutingCapacitor(true, 8192); + + new SlimefunItem(Categories.ELECTRICITY, (SlimefunItemStack) SlimefunItems.CARBONADO_EDGED_CAPACITOR, RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {SlimefunItems.CARBONADO, SlimefunItems.REDSTONE_ALLOY, SlimefunItems.CARBONADO, new ItemStack(Material.REDSTONE), SlimefunItems.LARGE_CAPACITOR, new ItemStack(Material.REDSTONE), SlimefunItems.CARBONADO, SlimefunItems.REDSTONE_ALLOY, SlimefunItems.CARBONADO}) + .registerDistibutingCapacitor(true, 65536); + + new SlimefunItem(Categories.ELECTRICITY, (SlimefunItemStack) SlimefunItems.SOLAR_GENERATOR, RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {SlimefunItems.SOLAR_PANEL, SlimefunItems.SOLAR_PANEL, SlimefunItems.SOLAR_PANEL, SlimefunItems.ALUMINUM_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.ALUMINUM_INGOT, null, SlimefunItems.ALUMINUM_INGOT, null}) + .register(true, new EnergyTicker() { + + @Override + public double generateEnergy(Location l, SlimefunItem item, Config data) { + if (!l.getWorld().isChunkLoaded(l.getBlockX() >> 4, l.getBlockZ() >> 4) || l.getBlock().getLightFromSky() != 15) return 0D; + if (l.getWorld().getTime() < 12300 || l.getWorld().getTime() > 23850) return 2D; + return 0D; + } + + @Override + public boolean explode(Location l) { + return false; + } + }); + + new SlimefunItem(Categories.ELECTRICITY, (SlimefunItemStack) SlimefunItems.SOLAR_GENERATOR_2, RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {SlimefunItems.SOLAR_GENERATOR, SlimefunItems.ALUMINUM_INGOT, SlimefunItems.SOLAR_GENERATOR, SlimefunItems.ALUMINUM_INGOT, new ItemStack(Material.REDSTONE), SlimefunItems.ALUMINUM_INGOT, SlimefunItems.SOLAR_GENERATOR, SlimefunItems.ALUMINUM_INGOT, SlimefunItems.SOLAR_GENERATOR}) + .register(true, new EnergyTicker() { + + @Override + public double generateEnergy(Location l, SlimefunItem item, Config data) { + if (!l.getWorld().isChunkLoaded(l.getBlockX() >> 4, l.getBlockZ() >> 4) || l.getBlock().getLightFromSky() != 15) return 0D; + if (l.getWorld().getTime() < 12300 || l.getWorld().getTime() > 23850) return 8; + return 0D; + } + + @Override + public boolean explode(Location l) { + return false; + } + }); + + new SlimefunItem(Categories.ELECTRICITY, (SlimefunItemStack) SlimefunItems.SOLAR_GENERATOR_3, RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {SlimefunItems.SOLAR_GENERATOR_2, SlimefunItems.ALUMINUM_INGOT, SlimefunItems.SOLAR_GENERATOR_2, SlimefunItems.ALUMINUM_INGOT, SlimefunItems.CARBONADO, SlimefunItems.ALUMINUM_INGOT, SlimefunItems.SOLAR_GENERATOR_2, SlimefunItems.ALUMINUM_INGOT, SlimefunItems.SOLAR_GENERATOR_2}) + .register(true, new EnergyTicker() { + + @Override + public double generateEnergy(Location l, SlimefunItem item, Config data) { + if (!l.getWorld().isChunkLoaded(l.getBlockX() >> 4, l.getBlockZ() >> 4) || l.getBlock().getLightFromSky() != 15) return 0D; + if (l.getWorld().getTime() < 12300 || l.getWorld().getTime() > 23850) return 32; + return 0D; + } + + @Override + public boolean explode(Location l) { + return false; + } + }); + + new SlimefunItem(Categories.ELECTRICITY, (SlimefunItemStack) SlimefunItems.SOLAR_GENERATOR_4, RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {SlimefunItems.SOLAR_GENERATOR_3, SlimefunItems.BLISTERING_INGOT_3, SlimefunItems.SOLAR_GENERATOR_3, SlimefunItems.BLISTERING_INGOT_3, SlimefunItems.ELECTRO_MAGNET, SlimefunItems.BLISTERING_INGOT_3, SlimefunItems.SOLAR_GENERATOR_3, SlimefunItems.BLISTERING_INGOT_3, SlimefunItems.SOLAR_GENERATOR_3}) + .register(true, new EnergyTicker() { + + @Override + public double generateEnergy(Location l, SlimefunItem item, Config data) { + if (!l.getWorld().isChunkLoaded(l.getBlockX() >> 4, l.getBlockZ() >> 4) || l.getBlock().getLightFromSky() != 15) return 0D; + if (l.getWorld().getTime() < 12300 || l.getWorld().getTime() > 23850) return 128; + return 64D; + } + + @Override + public boolean explode(Location l) { + return false; + } + }); + + new ChargingBench(Categories.ELECTRICITY, SlimefunItems.CHARGING_BENCH, "CHARGING_BENCH", RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {null, SlimefunItems.ELECTRO_MAGNET, null, SlimefunItems.BATTERY, new ItemStack(Material.CRAFTING_TABLE), SlimefunItems.BATTERY, null, SlimefunItems.SMALL_CAPACITOR, null}) + .registerChargeableBlock(true, 128); + + new ElectricFurnace(Categories.ELECTRICITY, SlimefunItems.ELECTRIC_FURNACE, "ELECTRIC_FURNACE", RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {null, new ItemStack(Material.FURNACE), null, SlimefunItems.GILDED_IRON, SlimefunItems.HEATING_COIL, SlimefunItems.GILDED_IRON, SlimefunItems.GILDED_IRON, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.GILDED_IRON}) { + + @Override + public int getEnergyConsumption() { + return 2; + } + + @Override + public int getSpeed() { + return 1; + } + + }.registerChargeableBlock(true, 64); + + new ElectricFurnace(Categories.ELECTRICITY, SlimefunItems.ELECTRIC_FURNACE_2, "ELECTRIC_FURNACE_2", RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {null, SlimefunItems.ELECTRIC_MOTOR, null, SlimefunItems.GILDED_IRON, SlimefunItems.ELECTRIC_FURNACE, SlimefunItems.GILDED_IRON, SlimefunItems.GILDED_IRON, SlimefunItems.HEATING_COIL, SlimefunItems.GILDED_IRON}) { + + @Override + public int getEnergyConsumption() { + return 3; + } + + @Override + public int getSpeed() { + return 2; + } + + }.registerChargeableBlock(true, 128); + + new ElectricFurnace(Categories.ELECTRICITY, SlimefunItems.ELECTRIC_FURNACE_3, "ELECTRIC_FURNACE_3", RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {null, SlimefunItems.ELECTRIC_MOTOR, null, SlimefunItems.STEEL_INGOT, SlimefunItems.ELECTRIC_FURNACE_2, SlimefunItems.STEEL_INGOT, SlimefunItems.GILDED_IRON, SlimefunItems.HEATING_COIL, SlimefunItems.GILDED_IRON}) { + + @Override + public int getEnergyConsumption() { + return 5; + } + + @Override + public int getSpeed() { + return 4; + } + + }.registerChargeableBlock(true, 128); + + new ElectricGoldPan(Categories.ELECTRICITY, SlimefunItems.ELECTRIC_GOLD_PAN, "ELECTRIC_GOLD_PAN", RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {null, SlimefunItems.GOLD_PAN, null, new ItemStack(Material.FLINT), SlimefunItems.ELECTRIC_MOTOR, new ItemStack(Material.FLINT), SlimefunItems.ALUMINUM_INGOT, SlimefunItems.ALUMINUM_INGOT, SlimefunItems.ALUMINUM_INGOT}) { + + @Override + public int getEnergyConsumption() { + return 1; + } + + @Override + public int getSpeed() { + return 1; + } + + }.registerChargeableBlock(true, 128); + + new ElectricGoldPan(Categories.ELECTRICITY, SlimefunItems.ELECTRIC_GOLD_PAN_2, "ELECTRIC_GOLD_PAN_2", RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {null, SlimefunItems.GOLD_PAN, null, new ItemStack(Material.IRON_INGOT), SlimefunItems.ELECTRIC_GOLD_PAN, new ItemStack(Material.IRON_INGOT), SlimefunItems.DURALUMIN_INGOT, SlimefunItems.DURALUMIN_INGOT, SlimefunItems.DURALUMIN_INGOT}) { + + @Override + public int getEnergyConsumption() { + return 2; + } + + @Override + public int getSpeed() { + return 3; + } + + }.registerChargeableBlock(true, 128); + + new ElectricGoldPan(Categories.ELECTRICITY, SlimefunItems.ELECTRIC_GOLD_PAN_3, "ELECTRIC_GOLD_PAN_3", RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {null, SlimefunItems.GOLD_PAN, null, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.ELECTRIC_GOLD_PAN_2, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.COBALT_INGOT, SlimefunItems.BLISTERING_INGOT_3, SlimefunItems.COBALT_INGOT}) { + + @Override + public int getEnergyConsumption() { + return 7; + } + + @Override + public int getSpeed() { + return 10; + } + + }.registerChargeableBlock(true, 512); + + new ElectricDustWasher(Categories.ELECTRICITY, SlimefunItems.ELECTRIC_DUST_WASHER, "ELECTRIC_DUST_WASHER", RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {null, new ItemStack(Material.WATER_BUCKET), null, SlimefunItems.ELECTRO_MAGNET, SlimefunItems.ELECTRIC_GOLD_PAN, SlimefunItems.ELECTRO_MAGNET, SlimefunItems.COPPER_INGOT, SlimefunItems.COPPER_INGOT, SlimefunItems.COPPER_INGOT}) { + + @Override + public int getEnergyConsumption() { + return 3; + } + + @Override + public int getSpeed() { + return 1; + } + + }.registerChargeableBlock(true, 128); + + new ElectricDustWasher(Categories.ELECTRICITY, SlimefunItems.ELECTRIC_DUST_WASHER_2, "ELECTRIC_DUST_WASHER_2", RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {null, new ItemStack(Material.WATER_BUCKET), null, SlimefunItems.ELECTRO_MAGNET, SlimefunItems.ELECTRIC_DUST_WASHER, SlimefunItems.ELECTRO_MAGNET, SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.DAMASCUS_STEEL_INGOT}) { + + @Override + public int getEnergyConsumption() { + return 5; + } + + @Override + public int getSpeed() { + return 2; + } + + }.registerChargeableBlock(true, 128); + + new ElectricDustWasher(Categories.ELECTRICITY, SlimefunItems.ELECTRIC_DUST_WASHER_3, "ELECTRIC_DUST_WASHER_3", RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {null, new ItemStack(Material.WATER_BUCKET), null, SlimefunItems.ELECTRO_MAGNET, SlimefunItems.ELECTRIC_DUST_WASHER_2, SlimefunItems.ELECTRO_MAGNET, SlimefunItems.CORINTHIAN_BRONZE_INGOT, SlimefunItems.BLISTERING_INGOT_3, SlimefunItems.CORINTHIAN_BRONZE_INGOT}) { + + @Override + public int getEnergyConsumption() { + return 15; + } + + @Override + public int getSpeed() { + return 10; + } + + }.registerChargeableBlock(true, 512); + + new ElectricIngotFactory(Categories.ELECTRICITY, SlimefunItems.ELECTRIC_INGOT_FACTORY, "ELECTRIC_INGOT_FACTORY", RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {null, new ItemStack(Material.FLINT_AND_STEEL), null, SlimefunItems.HEATING_COIL, SlimefunItems.ELECTRIC_DUST_WASHER, SlimefunItems.HEATING_COIL, SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.DAMASCUS_STEEL_INGOT}) { + + @Override + public int getEnergyConsumption() { + return 4; + } + + @Override + public int getSpeed() { + return 1; + } + + }.registerChargeableBlock(true, 256); + + new ElectricIngotFactory(Categories.ELECTRICITY, SlimefunItems.ELECTRIC_INGOT_FACTORY_2, "ELECTRIC_INGOT_FACTORY_2", RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {SlimefunItems.GILDED_IRON, new ItemStack(Material.FLINT_AND_STEEL), SlimefunItems.GILDED_IRON, SlimefunItems.HEATING_COIL, SlimefunItems.ELECTRIC_INGOT_FACTORY, SlimefunItems.HEATING_COIL, SlimefunItems.BRASS_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.BRASS_INGOT}) { + + @Override + public int getEnergyConsumption() { + return 7; + } + + @Override + public int getSpeed() { + return 2; + } + + }.registerChargeableBlock(true, 256); + + new ElectricIngotFactory(Categories.ELECTRICITY, SlimefunItems.ELECTRIC_INGOT_FACTORY_3, "ELECTRIC_INGOT_FACTORY_3", RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {SlimefunItems.GILDED_IRON, new ItemStack(Material.FLINT_AND_STEEL), SlimefunItems.GILDED_IRON, SlimefunItems.HEATING_COIL, SlimefunItems.ELECTRIC_INGOT_FACTORY_2, SlimefunItems.HEATING_COIL, SlimefunItems.BRASS_INGOT, SlimefunItems.BLISTERING_INGOT_3, SlimefunItems.BRASS_INGOT}) { + + @Override + public int getEnergyConsumption() { + return 20; + } + + @Override + public int getSpeed() { + return 8; + } + + }.registerChargeableBlock(true, 512); + + new ElectrifiedCrucible(Categories.ELECTRICITY, SlimefunItems.ELECTRIFIED_CRUCIBLE, "ELECTRIFIED_CRUCIBLE", RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {SlimefunItems.LEAD_INGOT, SlimefunItems.CRUCIBLE, SlimefunItems.LEAD_INGOT, SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.HEATING_COIL, SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.LEAD_INGOT, SlimefunItems.LARGE_CAPACITOR, SlimefunItems.LEAD_INGOT}) { + + @Override + public int getEnergyConsumption() { + return 24; + } + + @Override + public int getSpeed() { + return 1; + } + + }.registerChargeableBlock(true, 1024); + + new ElectrifiedCrucible(Categories.ELECTRICITY, SlimefunItems.ELECTRIFIED_CRUCIBLE_2, "ELECTRIFIED_CRUCIBLE_2", RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {SlimefunItems.CORINTHIAN_BRONZE_INGOT, SlimefunItems.ELECTRIFIED_CRUCIBLE, SlimefunItems.CORINTHIAN_BRONZE_INGOT, SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.LEAD_INGOT, SlimefunItems.HEATING_COIL, SlimefunItems.LEAD_INGOT}) { + + @Override + public int getEnergyConsumption() { + return 40; + } + + @Override + public int getSpeed() { + return 2; + } + + }.registerChargeableBlock(true, 1024); + + new ElectrifiedCrucible(Categories.ELECTRICITY, SlimefunItems.ELECTRIFIED_CRUCIBLE_3, "ELECTRIFIED_CRUCIBLE_3", RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {SlimefunItems.CORINTHIAN_BRONZE_INGOT, SlimefunItems.ELECTRIFIED_CRUCIBLE_2, SlimefunItems.CORINTHIAN_BRONZE_INGOT, SlimefunItems.STEEL_PLATE, SlimefunItems.POWER_CRYSTAL, SlimefunItems.STEEL_PLATE, SlimefunItems.LEAD_INGOT, SlimefunItems.LEAD_INGOT, SlimefunItems.LEAD_INGOT}) { + + @Override + public int getEnergyConsumption() { + return 60; + } + + @Override + public int getSpeed() { + return 4; + } + + }.registerChargeableBlock(true, 1024); + + new ElectricOreGrinder(Categories.ELECTRICITY, SlimefunItems.ELECTRIC_ORE_GRINDER, "ELECTRIC_ORE_GRINDER", RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {null, new ItemStack(Material.DIAMOND_PICKAXE), null, SlimefunItems.GILDED_IRON, SlimefunItems.HEATING_COIL, SlimefunItems.GILDED_IRON, SlimefunItems.GILDED_IRON, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.GILDED_IRON}) { + + @Override + public int getEnergyConsumption() { + return 6; + } + + @Override + public int getSpeed() { + return 1; + } + + }.registerChargeableBlock(true, 128); + + new ElectricOreGrinder(Categories.ELECTRICITY, SlimefunItems.ELECTRIC_ORE_GRINDER_2, "ELECTRIC_ORE_GRINDER_2", RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {null, new ItemStack(Material.DIAMOND_PICKAXE), null, SlimefunItems.HEATING_COIL, SlimefunItems.ELECTRIC_ORE_GRINDER, SlimefunItems.HEATING_COIL, SlimefunItems.GILDED_IRON, SlimefunItems.BLISTERING_INGOT_3, SlimefunItems.GILDED_IRON}) { + + @Override + public int getEnergyConsumption() { + return 15; + } + + @Override + public int getSpeed() { + return 4; + } + + }.registerChargeableBlock(true, 512); + + new HeatedPressureChamber(Categories.ELECTRICITY, SlimefunItems.HEATED_PRESSURE_CHAMBER, "HEATED_PRESSURE_CHAMBER", RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {SlimefunItems.LEAD_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.LEAD_INGOT, SlimefunItems.LEAD_INGOT, new ItemStack(Material.GLASS), SlimefunItems.LEAD_INGOT, SlimefunItems.LEAD_INGOT, SlimefunItems.HEATING_COIL, SlimefunItems.LEAD_INGOT}) { + + @Override + public int getEnergyConsumption() { + return 5; + } + + @Override + public int getSpeed() { + return 1; + } + + }.registerChargeableBlock(true, 128); + + new HeatedPressureChamber(Categories.ELECTRICITY, SlimefunItems.HEATED_PRESSURE_CHAMBER_2, "HEATED_PRESSURE_CHAMBER_2", RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {SlimefunItems.LEAD_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.LEAD_INGOT, SlimefunItems.LEAD_INGOT, SlimefunItems.HEATED_PRESSURE_CHAMBER, SlimefunItems.LEAD_INGOT, SlimefunItems.REINFORCED_ALLOY_INGOT, SlimefunItems.HEATING_COIL, SlimefunItems.REINFORCED_ALLOY_INGOT}) { + + @Override + public int getEnergyConsumption() { + return 22; + } + + @Override + public int getSpeed() { + return 5; + } + + }.registerChargeableBlock(true, 256); + + new ElectricIngotPulverizer(Categories.ELECTRICITY, SlimefunItems.ELECTRIC_INGOT_PULVERIZER, "ELECTRIC_INGOT_PULVERIZER", RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {null, SlimefunItems.ELECTRIC_ORE_GRINDER, null, SlimefunItems.LEAD_INGOT, SlimefunItems.MEDIUM_CAPACITOR, SlimefunItems.LEAD_INGOT, SlimefunItems.LEAD_INGOT, SlimefunItems.HEATING_COIL, SlimefunItems.LEAD_INGOT}) + .registerChargeableBlock(true, 512); + + new CoalGenerator(Categories.ELECTRICITY, SlimefunItems.COAL_GENERATOR, "COAL_GENERATOR", RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {SlimefunItems.HEATING_COIL, new ItemStack(Material.FURNACE), SlimefunItems.HEATING_COIL, SlimefunItems.NICKEL_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.NICKEL_INGOT, null, SlimefunItems.NICKEL_INGOT, null}) { + + @Override + public int getEnergyProduction() { + return 8; + } + + }.registerUnrechargeableBlock(true, 64); + + new CoalGenerator(Categories.ELECTRICITY, SlimefunItems.COAL_GENERATOR_2, "COAL_GENERATOR_2", RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {new ItemStack(Material.MAGMA_BLOCK), SlimefunItems.HEATING_COIL, new ItemStack(Material.MAGMA_BLOCK), SlimefunItems.HARDENED_METAL_INGOT, SlimefunItems.COAL_GENERATOR, SlimefunItems.HARDENED_METAL_INGOT, null, SlimefunItems.ELECTRIC_MOTOR, null}) { + + @Override + public int getEnergyProduction() { + return 15; + } + + }.registerUnrechargeableBlock(true, 256); + + new BioGenerator(Categories.ELECTRICITY, SlimefunItems.BIO_REACTOR, "BIO_REACTOR", RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {SlimefunItems.HEATING_COIL, SlimefunItems.COMPOSTER, SlimefunItems.HEATING_COIL, SlimefunItems.ALUMINUM_BRASS_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.ALUMINUM_BRASS_INGOT, null, SlimefunItems.ALUMINUM_BRASS_INGOT, null}) { + + @Override + public int getEnergyProduction() { + return 4; + } + + }.registerUnrechargeableBlock(true, 128); + + new AutoDrier(Categories.ELECTRICITY, SlimefunItems.AUTO_DRIER, "AUTO_DRIER", RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {null, null, null, SlimefunItems.HEATING_COIL, new ItemStack(Material.SMOKER), SlimefunItems.HEATING_COIL, null, new ItemStack(Material.CAMPFIRE), null}) + .registerChargeableBlock(true, 128); + + new AutoEnchanter(Categories.ELECTRICITY, SlimefunItems.AUTO_ENCHANTER, "AUTO_ENCHANTER", RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {null, new ItemStack(Material.ENCHANTING_TABLE), null, SlimefunItems.CARBONADO, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.CARBONADO, SlimefunItems.WITHER_PROOF_OBSIDIAN, SlimefunItems.WITHER_PROOF_OBSIDIAN, SlimefunItems.WITHER_PROOF_OBSIDIAN}) + .registerChargeableBlock(true, 128); + + new AutoDisenchanter(Categories.ELECTRICITY, SlimefunItems.AUTO_DISENCHANTER, "AUTO_DISENCHANTER", RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {new ItemStack(Material.REDSTONE), new ItemStack(Material.ANVIL), new ItemStack(Material.REDSTONE), SlimefunItems.CARBONADO, SlimefunItems.AUTO_ENCHANTER, SlimefunItems.CARBONADO, SlimefunItems.WITHER_PROOF_OBSIDIAN, SlimefunItems.WITHER_PROOF_OBSIDIAN, SlimefunItems.WITHER_PROOF_OBSIDIAN}) + .registerChargeableBlock(true, 128); + + new AutoAnvil(Categories.ELECTRICITY, SlimefunItems.AUTO_ANVIL, "AUTO_ANVIL", RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {null, new ItemStack(Material.ANVIL), null, SlimefunItems.REINFORCED_ALLOY_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.REINFORCED_ALLOY_INGOT, new ItemStack(Material.IRON_BLOCK), new ItemStack(Material.IRON_BLOCK), new ItemStack(Material.IRON_BLOCK)}) { + + @Override + public int getRepairFactor() { + return 10; + } + + @Override + public int getEnergyConsumption() { + return 12; + } + + }.registerChargeableBlock(true, 128); + + new AutoAnvil(Categories.ELECTRICITY, SlimefunItems.AUTO_ANVIL_2, "AUTO_ANVIL_2", RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {null, SlimefunItems.AUTO_ANVIL, null, SlimefunItems.STEEL_PLATE, SlimefunItems.HEATING_COIL, SlimefunItems.STEEL_PLATE, new ItemStack(Material.IRON_BLOCK), new ItemStack(Material.IRON_BLOCK), new ItemStack(Material.IRON_BLOCK)}) { + + @Override + public int getRepairFactor() { + return 4; + } + + @Override + public int getEnergyConsumption() { + return 16; + } + + }.registerChargeableBlock(true, 256); + + new SlimefunItem(Categories.ELECTRICITY, SlimefunItems.MULTIMETER, "MULTIMETER", RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {SlimefunItems.COPPER_INGOT, null, SlimefunItems.COPPER_INGOT, null, SlimefunItems.REDSTONE_ALLOY, null, null, SlimefunItems.GOLD_6K, null}) + .register(true, new ItemInteractionHandler() { + + @Override + public boolean onRightClick(ItemUseEvent e, Player p, ItemStack item) { + if (SlimefunManager.isItemSimiliar(e.getItem(), SlimefunItems.MULTIMETER, true)) { + if (e.getClickedBlock() != null && ChargableBlock.isChargable(e.getClickedBlock())) { + e.setCancelled(true); + p.sendMessage(""); + p.sendMessage(ChatColor.translateAlternateColorCodes('&', "&bStored Energy: &3" + DoubleHandler.getFancyDouble(ChargableBlock.getCharge(e.getClickedBlock())) + " J")); + p.sendMessage(ChatColor.translateAlternateColorCodes('&', "&bCapacity: &3" + DoubleHandler.getFancyDouble(ChargableBlock.getMaxCharge(e.getClickedBlock())) + " J")); + p.sendMessage(""); + } + return true; + } + return false; + } + }); + + new SlimefunItem(Categories.MISC, SlimefunItems.PLASTIC_SHEET, "PLASTIC_SHEET", RecipeType.HEATED_PRESSURE_CHAMBER, + new ItemStack[] {null, null, null, null, SlimefunItems.BUCKET_OF_OIL, null, null, null, null}) + .register(true); + + new SlimefunItem(Categories.MISC, SlimefunItems.ANDROID_MEMORY_CORE, "ANDROID_MEMORY_CORE", RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {SlimefunItems.BRASS_INGOT, new ItemStack(Material.ORANGE_STAINED_GLASS), SlimefunItems.BRASS_INGOT, SlimefunItems.POWER_CRYSTAL, SlimefunItems.TIN_DUST, SlimefunItems.POWER_CRYSTAL, SlimefunItems.BRASS_INGOT, new ItemStack(Material.ORANGE_STAINED_GLASS), SlimefunItems.BRASS_INGOT}) + .register(true); + + new GPSTransmitter(Categories.GPS, SlimefunItems.GPS_TRANSMITTER, "GPS_TRANSMITTER", RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {null, null, SlimefunItems.ELECTRO_MAGNET, SlimefunItems.STEEL_INGOT, SlimefunItems.ADVANCED_CIRCUIT_BOARD, SlimefunItems.STEEL_INGOT, SlimefunItems.STEEL_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.STEEL_INGOT}) { + + @Override + public double getMultiplier(int y) { + return y; + } + + @Override + public int getEnergyConsumption() { + return 1; + } + + } + .registerChargeableBlock(true, 16); + + new GPSTransmitter(Categories.GPS, SlimefunItems.GPS_TRANSMITTER_2, "GPS_TRANSMITTER_2", RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {SlimefunItems.GPS_TRANSMITTER, SlimefunItems.BRONZE_INGOT, SlimefunItems.GPS_TRANSMITTER, SlimefunItems.BRONZE_INGOT, SlimefunItems.CARBON, SlimefunItems.BRONZE_INGOT, SlimefunItems.GPS_TRANSMITTER, SlimefunItems.BRONZE_INGOT, SlimefunItems.GPS_TRANSMITTER}) { + + @Override + public double getMultiplier(int y) { + return y * 4.0 + 100; + } + + @Override + public int getEnergyConsumption() { + return 3; + } + + }.registerChargeableBlock(true, 64); + + new GPSTransmitter(Categories.GPS, SlimefunItems.GPS_TRANSMITTER_3, "GPS_TRANSMITTER_3", RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {SlimefunItems.GPS_TRANSMITTER_2, SlimefunItems.CORINTHIAN_BRONZE_INGOT, SlimefunItems.GPS_TRANSMITTER_2, SlimefunItems.CORINTHIAN_BRONZE_INGOT, SlimefunItems.CARBONADO, SlimefunItems.CORINTHIAN_BRONZE_INGOT, SlimefunItems.GPS_TRANSMITTER_2, SlimefunItems.CORINTHIAN_BRONZE_INGOT, SlimefunItems.GPS_TRANSMITTER_2}) { + + @Override + public double getMultiplier(int y) { + return y * 16.0 + 500; + } + + @Override + public int getEnergyConsumption() { + return 11; + } + + }.registerChargeableBlock(true, 256); + + new GPSTransmitter(Categories.GPS, SlimefunItems.GPS_TRANSMITTER_4, "GPS_TRANSMITTER_4", RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {SlimefunItems.GPS_TRANSMITTER_3, SlimefunItems.BLISTERING_INGOT_3, SlimefunItems.GPS_TRANSMITTER_3, SlimefunItems.NICKEL_INGOT, SlimefunItems.CARBONADO, SlimefunItems.NICKEL_INGOT, SlimefunItems.GPS_TRANSMITTER_3, SlimefunItems.BLISTERING_INGOT_3, SlimefunItems.GPS_TRANSMITTER_3}) { + + @Override + public double getMultiplier(int y) { + return y * 64.0 + 600; + } + + @Override + public int getEnergyConsumption() { + return 46; + } + + }.registerChargeableBlock(true, 1024); + + new SlimefunItem(Categories.GPS, SlimefunItems.GPS_CONTROL_PANEL, "GPS_CONTROL_PANEL", RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {null, null, SlimefunItems.ELECTRO_MAGNET, SlimefunItems.COBALT_INGOT, SlimefunItems.ADVANCED_CIRCUIT_BOARD, SlimefunItems.COBALT_INGOT, SlimefunItems.ALUMINUM_BRASS_INGOT, SlimefunItems.ALUMINUM_BRASS_INGOT, SlimefunItems.ALUMINUM_BRASS_INGOT}) + .register(true, new ItemInteractionHandler() { + + @Override + public boolean onRightClick(ItemUseEvent e, Player p, ItemStack stack) { + if (e.getClickedBlock() == null) return false; + String item = BlockStorage.checkID(e.getClickedBlock()); + if (item == null || !item.equals("GPS_CONTROL_PANEL")) return false; + e.setCancelled(true); + + Slimefun.getGPSNetwork().openTransmitterControlPanel(p); + return true; + } + }); + + new SlimefunItem(Categories.GPS, SlimefunItems.GPS_MARKER_TOOL, "GPS_MARKER_TOOL", RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {null, SlimefunItems.ELECTRO_MAGNET, null, new ItemStack(Material.LAPIS_LAZULI), SlimefunItems.BASIC_CIRCUIT_BOARD, new ItemStack(Material.LAPIS_LAZULI), new ItemStack(Material.REDSTONE), SlimefunItems.REDSTONE_ALLOY, new ItemStack(Material.REDSTONE)}) + .register(true); + + new SlimefunItem(Categories.GPS, SlimefunItems.GPS_EMERGENCY_TRANSMITTER, "GPS_EMERGENCY_TRANSMITTER", RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {null, SlimefunItems.ELECTRO_MAGNET, null, null, SlimefunItems.GPS_TRANSMITTER, null, null, SlimefunItems.ESSENCE_OF_AFTERLIFE, null}) + .register(true); + + new ProgrammableAndroid(Categories.ELECTRICITY, SlimefunItems.PROGRAMMABLE_ANDROID, "PROGRAMMABLE_ANDROID", RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {SlimefunItems.PLASTIC_SHEET, SlimefunItems.ANDROID_MEMORY_CORE, SlimefunItems.PLASTIC_SHEET, SlimefunItems.COAL_GENERATOR, SlimefunItems.ELECTRIC_MOTOR, new ItemStack(Material.CHEST), SlimefunItems.PLASTIC_SHEET, SlimefunItems.PLASTIC_SHEET, SlimefunItems.PLASTIC_SHEET}) { + + @Override + public AndroidType getAndroidType() { + return AndroidType.NONE; + } + + @Override + public float getFuelEfficiency() { + return 1; + } + + @Override + public int getTier() { + return 1; + } + + } + .register(true); + + new ProgrammableAndroid(Categories.ELECTRICITY, SlimefunItems.PROGRAMMABLE_ANDROID_MINER, "PROGRAMMABLE_ANDROID_MINER", RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {null, null, null, new ItemStack(Material.DIAMOND_PICKAXE), SlimefunItems.PROGRAMMABLE_ANDROID, new ItemStack(Material.DIAMOND_PICKAXE), null, SlimefunItems.ELECTRIC_MOTOR, null}) { + + @Override + public AndroidType getAndroidType() { + return AndroidType.MINER; + } + + @Override + public float getFuelEfficiency() { + return 1; + } + + @Override + public int getTier() { + return 1; + } + + } + .register(true); + + new ProgrammableAndroid(Categories.ELECTRICITY, SlimefunItems.PROGRAMMABLE_ANDROID_FARMER, "PROGRAMMABLE_ANDROID_FARMER", RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {null, null, null, new ItemStack(Material.DIAMOND_HOE), SlimefunItems.PROGRAMMABLE_ANDROID, new ItemStack(Material.DIAMOND_HOE), null, SlimefunItems.ELECTRIC_MOTOR, null}) { + + @Override + public AndroidType getAndroidType() { + return AndroidType.FARMER; + } + + @Override + public float getFuelEfficiency() { + return 1; + } + + @Override + public int getTier() { + return 1; + } + + } + .register(true); + + new ProgrammableAndroid(Categories.ELECTRICITY, SlimefunItems.PROGRAMMABLE_ANDROID_WOODCUTTER, "PROGRAMMABLE_ANDROID_WOODCUTTER", RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {null, null, null, new ItemStack(Material.DIAMOND_AXE), SlimefunItems.PROGRAMMABLE_ANDROID, new ItemStack(Material.DIAMOND_AXE), null, SlimefunItems.ELECTRIC_MOTOR, null}) { + + @Override + public AndroidType getAndroidType() { + return AndroidType.WOODCUTTER; + } + + @Override + public float getFuelEfficiency() { + return 1; + } + + @Override + public int getTier() { + return 1; + } + + } + .register(true); + + new ProgrammableAndroid(Categories.ELECTRICITY, SlimefunItems.PROGRAMMABLE_ANDROID_FISHERMAN, "PROGRAMMABLE_ANDROID_FISHERMAN", RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {null, null, null, new ItemStack(Material.FISHING_ROD), SlimefunItems.PROGRAMMABLE_ANDROID, new ItemStack(Material.FISHING_ROD), null, SlimefunItems.ELECTRIC_MOTOR, null}) { + + @Override + public AndroidType getAndroidType() { + return AndroidType.FISHERMAN; + } + + @Override + public float getFuelEfficiency() { + return 1; + } + + @Override + public int getTier() { + return 1; + } + + } + .register(true); + + new ProgrammableAndroid(Categories.ELECTRICITY, SlimefunItems.PROGRAMMABLE_ANDROID_BUTCHER, "PROGRAMMABLE_ANDROID_BUTCHER", RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {null, SlimefunItems.GPS_TRANSMITTER, null, new ItemStack(Material.DIAMOND_SWORD), SlimefunItems.PROGRAMMABLE_ANDROID, new ItemStack(Material.DIAMOND_SWORD), null, SlimefunItems.ELECTRIC_MOTOR, null}) { + + @Override + public AndroidType getAndroidType() { + return AndroidType.FIGHTER; + } + + @Override + public float getFuelEfficiency() { + return 1; + } + + @Override + public int getTier() { + return 1; + } + + } + .register(true); + + new SlimefunItem(Categories.ELECTRICITY, SlimefunItems.ANDROID_INTERFACE_ITEMS, "ANDROID_INTERFACE_ITEMS", RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {SlimefunItems.PLASTIC_SHEET, SlimefunItems.PLASTIC_SHEET, SlimefunItems.PLASTIC_SHEET, SlimefunItems.PLASTIC_SHEET, SlimefunItems.BASIC_CIRCUIT_BOARD, new ItemStack(Material.BLUE_STAINED_GLASS), SlimefunItems.PLASTIC_SHEET, SlimefunItems.PLASTIC_SHEET, SlimefunItems.PLASTIC_SHEET}) + .register(true); + + new SlimefunItem(Categories.ELECTRICITY, SlimefunItems.ANDROID_INTERFACE_FUEL, "ANDROID_INTERFACE_FUEL", RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {SlimefunItems.PLASTIC_SHEET, SlimefunItems.PLASTIC_SHEET, SlimefunItems.PLASTIC_SHEET, new ItemStack(Material.RED_STAINED_GLASS), SlimefunItems.BASIC_CIRCUIT_BOARD, SlimefunItems.PLASTIC_SHEET, SlimefunItems.PLASTIC_SHEET, SlimefunItems.PLASTIC_SHEET, SlimefunItems.PLASTIC_SHEET}) + .register(true); + + + new ProgrammableAndroid(Categories.ELECTRICITY, SlimefunItems.PROGRAMMABLE_ANDROID_2, "PROGRAMMABLE_ANDROID_2", RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {SlimefunItems.PLASTIC_SHEET, SlimefunItems.ANDROID_MEMORY_CORE, SlimefunItems.PLASTIC_SHEET, SlimefunItems.COMBUSTION_REACTOR, SlimefunItems.PROGRAMMABLE_ANDROID, new ItemStack(Material.CHEST), SlimefunItems.PLASTIC_SHEET, SlimefunItems.POWER_CRYSTAL, SlimefunItems.PLASTIC_SHEET}) { + + @Override + public AndroidType getAndroidType() { + return AndroidType.NONE; + } + + @Override + public float getFuelEfficiency() { + return 1.5F; + } + + @Override + public int getTier() { + return 2; + } + + } + .register(true); + + new ProgrammableAndroid(Categories.ELECTRICITY, SlimefunItems.PROGRAMMABLE_ANDROID_2_FISHERMAN, "PROGRAMMABLE_ANDROID_2_FISHERMAN", RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {null, null, null, new ItemStack(Material.FISHING_ROD), SlimefunItems.PROGRAMMABLE_ANDROID_2, new ItemStack(Material.FISHING_ROD), null, SlimefunItems.ELECTRIC_MOTOR, null}) { + + @Override + public AndroidType getAndroidType() { + return AndroidType.FISHERMAN; + } + + @Override + public float getFuelEfficiency() { + return 1.5F; + } + + @Override + public int getTier() { + return 2; + } + + } + .register(true); + + new ProgrammableAndroid(Categories.ELECTRICITY, SlimefunItems.PROGRAMMABLE_ANDROID_2_BUTCHER, "PROGRAMMABLE_ANDROID_2_BUTCHER", RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {null, SlimefunItems.GPS_TRANSMITTER, null, new ItemStack(Material.DIAMOND_SWORD), SlimefunItems.PROGRAMMABLE_ANDROID_2, new ItemStack(Material.DIAMOND_SWORD), null, SlimefunItems.ELECTRIC_MOTOR, null}) { + + @Override + public AndroidType getAndroidType() { + return AndroidType.FIGHTER; + } + + @Override + public float getFuelEfficiency() { + return 1.5F; + } + + @Override + public int getTier() { + return 2; + } + + } + .register(true); + + new ProgrammableAndroid(Categories.ELECTRICITY, SlimefunItems.PROGRAMMABLE_ANDROID_2_FARMER, "PROGRAMMABLE_ANDROID_2_FARMER", RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {null, SlimefunItems.GPS_TRANSMITTER, null, new ItemStack(Material.DIAMOND_HOE), SlimefunItems.PROGRAMMABLE_ANDROID_2, new ItemStack(Material.DIAMOND_HOE), null, SlimefunItems.ELECTRIC_MOTOR, null}) { + + @Override + public AndroidType getAndroidType() { + return AndroidType.ADVANCED_FARMER; + } + + @Override + public float getFuelEfficiency() { + return 1.5F; + } + + @Override + public int getTier() { + return 2; + } + + } + .register(true); + + + new ProgrammableAndroid(Categories.ELECTRICITY, SlimefunItems.PROGRAMMABLE_ANDROID_3, "PROGRAMMABLE_ANDROID_3", RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {SlimefunItems.PLASTIC_SHEET, SlimefunItems.ANDROID_MEMORY_CORE, SlimefunItems.PLASTIC_SHEET, SlimefunItems.NUCLEAR_REACTOR, SlimefunItems.PROGRAMMABLE_ANDROID_2, new ItemStack(Material.CHEST), SlimefunItems.BLISTERING_INGOT_3, SlimefunItems.POWER_CRYSTAL, SlimefunItems.BLISTERING_INGOT_3}) { + + @Override + public AndroidType getAndroidType() { + return AndroidType.NONE; + } + + @Override + public float getFuelEfficiency() { + return 1F; + } + + @Override + public int getTier() { + return 3; + } + + } + .register(true); + + new ProgrammableAndroid(Categories.ELECTRICITY, SlimefunItems.PROGRAMMABLE_ANDROID_3_FISHERMAN, "PROGRAMMABLE_ANDROID_3_FISHERMAN", RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {null, null, null, new ItemStack(Material.FISHING_ROD), SlimefunItems.PROGRAMMABLE_ANDROID_3, new ItemStack(Material.FISHING_ROD), null, SlimefunItems.ELECTRIC_MOTOR, null}) { + + @Override + public AndroidType getAndroidType() { + return AndroidType.FISHERMAN; + } + + @Override + public float getFuelEfficiency() { + return 1F; + } + + @Override + public int getTier() { + return 3; + } + + } + .register(true); + + new ProgrammableAndroid(Categories.ELECTRICITY, SlimefunItems.PROGRAMMABLE_ANDROID_3_BUTCHER, "PROGRAMMABLE_ANDROID_3_BUTCHER", RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {null, SlimefunItems.GPS_TRANSMITTER_3, null, new ItemStack(Material.DIAMOND_SWORD), SlimefunItems.PROGRAMMABLE_ANDROID_3, new ItemStack(Material.DIAMOND_SWORD), null, SlimefunItems.ELECTRIC_MOTOR, null}) { + + @Override + public AndroidType getAndroidType() { + return AndroidType.FIGHTER; + } + + @Override + public float getFuelEfficiency() { + return 1F; + } + + @Override + public int getTier() { + return 3; + } + + } + .register(true); + + new SlimefunItem(Categories.LUMPS_AND_MAGIC, SlimefunItems.BLANK_RUNE, "BLANK_RUNE", RecipeType.ANCIENT_ALTAR, + new ItemStack[] {new ItemStack(Material.STONE), SlimefunItems.MAGIC_LUMP_1, new ItemStack(Material.STONE), SlimefunItems.MAGIC_LUMP_1, new ItemStack(Material.OBSIDIAN), SlimefunItems.MAGIC_LUMP_1,new ItemStack(Material.STONE), SlimefunItems.MAGIC_LUMP_1, new ItemStack(Material.STONE)}) + .register(true); + + new SlimefunItem(Categories.LUMPS_AND_MAGIC, SlimefunItems.RUNE_AIR, "ANCIENT_RUNE_AIR", RecipeType.ANCIENT_ALTAR, + new ItemStack[] {new ItemStack(Material.FEATHER), SlimefunItems.MAGIC_LUMP_1, new ItemStack(Material.FEATHER), new ItemStack(Material.GHAST_TEAR), SlimefunItems.BLANK_RUNE, new ItemStack(Material.GHAST_TEAR) ,new ItemStack(Material.FEATHER), SlimefunItems.MAGIC_LUMP_1, new ItemStack(Material.FEATHER)}, new CustomItem(SlimefunItems.RUNE_AIR, 4)) + .register(true); + + new SlimefunItem(Categories.LUMPS_AND_MAGIC, SlimefunItems.RUNE_EARTH, "ANCIENT_RUNE_EARTH", RecipeType.ANCIENT_ALTAR, + new ItemStack[] {new ItemStack(Material.DIRT), SlimefunItems.MAGIC_LUMP_1, new ItemStack(Material.STONE), new ItemStack(Material.OBSIDIAN), SlimefunItems.BLANK_RUNE, new ItemStack(Material.OBSIDIAN) ,new ItemStack(Material.STONE), SlimefunItems.MAGIC_LUMP_1, new ItemStack(Material.DIRT)}, new CustomItem(SlimefunItems.RUNE_EARTH, 4)) + .register(true); + + new SlimefunItem(Categories.LUMPS_AND_MAGIC, SlimefunItems.RUNE_FIRE, "ANCIENT_RUNE_FIRE", RecipeType.ANCIENT_ALTAR, + new ItemStack[] {new ItemStack(Material.FIRE_CHARGE), SlimefunItems.MAGIC_LUMP_2, new ItemStack(Material.FIRE_CHARGE), new ItemStack(Material.BLAZE_POWDER), SlimefunItems.RUNE_EARTH, new ItemStack(Material.FLINT_AND_STEEL) ,new ItemStack(Material.FIRE_CHARGE), SlimefunItems.MAGIC_LUMP_2, new ItemStack(Material.FIRE_CHARGE)}, new CustomItem(SlimefunItems.RUNE_FIRE, 4)) + .register(true); + + new SlimefunItem(Categories.LUMPS_AND_MAGIC, SlimefunItems.RUNE_WATER, "ANCIENT_RUNE_WATER", RecipeType.ANCIENT_ALTAR, + new ItemStack[] {new ItemStack(Material.SALMON), SlimefunItems.MAGIC_LUMP_2, new ItemStack(Material.WATER_BUCKET), new ItemStack(Material.SAND), SlimefunItems.BLANK_RUNE, new ItemStack(Material.SAND) ,new ItemStack(Material.WATER_BUCKET), SlimefunItems.MAGIC_LUMP_2, new ItemStack(Material.COD)}, new CustomItem(SlimefunItems.RUNE_WATER, 4)) + .register(true); + + new SlimefunItem(Categories.LUMPS_AND_MAGIC, SlimefunItems.RUNE_ENDER, "ANCIENT_RUNE_ENDER", RecipeType.ANCIENT_ALTAR, + new ItemStack[] {new ItemStack(Material.ENDER_PEARL), SlimefunItems.ENDER_LUMP_3, new ItemStack(Material.ENDER_PEARL), new ItemStack(Material.ENDER_EYE), SlimefunItems.BLANK_RUNE, new ItemStack(Material.ENDER_EYE), new ItemStack(Material.ENDER_PEARL), SlimefunItems.ENDER_LUMP_3, new ItemStack(Material.ENDER_PEARL)}, new CustomItem(SlimefunItems.RUNE_ENDER, 6)) + .register(true); + + new SlimefunItem(Categories.LUMPS_AND_MAGIC, SlimefunItems.RUNE_LIGHTNING, "ANCIENT_RUNE_LIGHTNING", RecipeType.ANCIENT_ALTAR, + new ItemStack[] {new ItemStack(Material.IRON_INGOT), SlimefunItems.MAGIC_LUMP_3, new ItemStack(Material.IRON_INGOT), SlimefunItems.RUNE_AIR, new ItemStack(Material.PHANTOM_MEMBRANE), SlimefunItems.RUNE_WATER, new ItemStack(Material.IRON_INGOT), SlimefunItems.MAGIC_LUMP_3, new ItemStack(Material.IRON_INGOT)}, new CustomItem(SlimefunItems.RUNE_LIGHTNING, 4)) + .register(true); + + new SlimefunItem(Categories.LUMPS_AND_MAGIC, SlimefunItems.RUNE_RAINBOW, "ANCIENT_RUNE_RAINBOW", RecipeType.ANCIENT_ALTAR, + new ItemStack[] {new ItemStack(Material.RED_DYE), SlimefunItems.MAGIC_LUMP_3, new ItemStack(Material.CYAN_DYE), new ItemStack(Material.WHITE_WOOL), SlimefunItems.RUNE_ENDER, new ItemStack(Material.WHITE_WOOL), new ItemStack(Material.YELLOW_DYE), SlimefunItems.ENDER_LUMP_3, new ItemStack(Material.MAGENTA_DYE)}) + .register(true); + + new SoulboundRune(Categories.LUMPS_AND_MAGIC, SlimefunItems.RUNE_SOULBOUND, "ANCIENT_RUNE_SOULBOUND", RecipeType.ANCIENT_ALTAR, + new ItemStack[] {SlimefunItems.MAGIC_LUMP_3, SlimefunItems.ESSENCE_OF_AFTERLIFE, SlimefunItems.MAGIC_LUMP_3, SlimefunItems.ENDER_LUMP_3, SlimefunItems.RUNE_ENDER, SlimefunItems.ENDER_LUMP_3, SlimefunItems.MAGIC_LUMP_3, SlimefunItems.ESSENCE_OF_AFTERLIFE, SlimefunItems.MAGIC_LUMP_3}) + .register(true); + + new InfernalBonemeal(Categories.MAGIC, SlimefunItems.INFERNAL_BONEMEAL, "INFERNAL_BONEMEAL", RecipeType.ANCIENT_ALTAR, + new ItemStack[] {new ItemStack(Material.NETHER_WART), SlimefunItems.RUNE_EARTH, new ItemStack(Material.NETHER_WART), SlimefunItems.MAGIC_LUMP_2, new ItemStack(Material.BONE_MEAL), SlimefunItems.MAGIC_LUMP_2, new ItemStack(Material.NETHER_WART), new ItemStack(Material.BLAZE_POWDER), new ItemStack(Material.NETHER_WART)}, new CustomItem(SlimefunItems.INFERNAL_BONEMEAL, 8)) + .register(true); + + new SlimefunItem(Categories.MAGIC, SlimefunItems.ELYTRA_SCALE, "ELYTRA_SCALE", RecipeType.ANCIENT_ALTAR, + new ItemStack[] {SlimefunItems.ENDER_LUMP_3, SlimefunItems.RUNE_AIR, SlimefunItems.ENDER_LUMP_3, new ItemStack(Material.PHANTOM_MEMBRANE), new ItemStack(Material.FEATHER), new ItemStack(Material.PHANTOM_MEMBRANE), SlimefunItems.ENDER_LUMP_3, SlimefunItems.RUNE_AIR, SlimefunItems.ENDER_LUMP_3}) + .register(true); + + new VanillaItem(Categories.MAGIC, SlimefunItems.ELYTRA, "ELYTRA", RecipeType.ANCIENT_ALTAR, + new ItemStack[] {SlimefunItems.ELYTRA_SCALE, SlimefunItems.RUNE_AIR, SlimefunItems.ELYTRA_SCALE, SlimefunItems.RUNE_AIR, new ItemStack(Material.LEATHER_CHESTPLATE), SlimefunItems.RUNE_AIR, SlimefunItems.ELYTRA_SCALE, SlimefunItems.RUNE_AIR, SlimefunItems.ELYTRA_SCALE}) + .register(true); + + new SlimefunItem(Categories.MAGIC, SlimefunItems.INFUSED_ELYTRA, "INFUSED_ELYTRA", RecipeType.ANCIENT_ALTAR, + new ItemStack[] {SlimefunItems.FLASK_OF_KNOWLEDGE, SlimefunItems.ELYTRA_SCALE, SlimefunItems.FLASK_OF_KNOWLEDGE, SlimefunItems.FLASK_OF_KNOWLEDGE, SlimefunItems.ELYTRA, SlimefunItems.FLASK_OF_KNOWLEDGE, SlimefunItems.FLASK_OF_KNOWLEDGE, SlimefunItems.ELYTRA_SCALE, SlimefunItems.FLASK_OF_KNOWLEDGE}) + .register(true); + + new SoulboundItem(Categories.MAGIC, SlimefunItems.SOULBOUND_ELYTRA, "SOULBOUND_ELYTRA", RecipeType.ANCIENT_ALTAR, + new ItemStack[] {SlimefunItems.FLASK_OF_KNOWLEDGE, SlimefunItems.ESSENCE_OF_AFTERLIFE, SlimefunItems.FLASK_OF_KNOWLEDGE, SlimefunItems.ELYTRA_SCALE, SlimefunItems.ELYTRA, SlimefunItems.ELYTRA_SCALE, SlimefunItems.FLASK_OF_KNOWLEDGE, SlimefunItems.ESSENCE_OF_AFTERLIFE, SlimefunItems.FLASK_OF_KNOWLEDGE}) + .register(true); + + new VanillaItem(Categories.MAGIC, SlimefunItems.TOTEM_OF_UNDYING, "TOTEM_OF_UNDYING", RecipeType.ANCIENT_ALTAR, + new ItemStack[] {SlimefunItems.ESSENCE_OF_AFTERLIFE, new ItemStack(Material.EMERALD_BLOCK), SlimefunItems.ESSENCE_OF_AFTERLIFE, SlimefunItems.MAGIC_LUMP_3, SlimefunItems.TALISMAN, SlimefunItems.MAGIC_LUMP_3, SlimefunItems.ESSENCE_OF_AFTERLIFE, new ItemStack(Material.EMERALD_BLOCK), SlimefunItems.ESSENCE_OF_AFTERLIFE}) + .register(true); + + RainbowTicker rainbow = new RainbowTicker(); + + new SlimefunItem(Categories.MAGIC, SlimefunItems.RAINBOW_WOOL, "RAINBOW_WOOL", RecipeType.ANCIENT_ALTAR, + new ItemStack[] {new ItemStack(Material.WHITE_WOOL), new ItemStack(Material.WHITE_WOOL), new ItemStack(Material.WHITE_WOOL), new ItemStack(Material.WHITE_WOOL), SlimefunItems.RUNE_RAINBOW, new ItemStack(Material.WHITE_WOOL), new ItemStack(Material.WHITE_WOOL), new ItemStack(Material.WHITE_WOOL), new ItemStack(Material.WHITE_WOOL)}, new CustomItem(SlimefunItems.RAINBOW_WOOL, 8)) + .register(true, rainbow); + + new SlimefunItem(Categories.MAGIC, SlimefunItems.RAINBOW_GLASS, "RAINBOW_GLASS", RecipeType.ANCIENT_ALTAR, + new ItemStack[] {new ItemStack(Material.WHITE_STAINED_GLASS), new ItemStack(Material.WHITE_STAINED_GLASS), new ItemStack(Material.WHITE_STAINED_GLASS), new ItemStack(Material.WHITE_STAINED_GLASS), SlimefunItems.RUNE_RAINBOW, new ItemStack(Material.WHITE_STAINED_GLASS), new ItemStack(Material.WHITE_STAINED_GLASS), new ItemStack(Material.WHITE_STAINED_GLASS), new ItemStack(Material.WHITE_STAINED_GLASS)}, new CustomItem(SlimefunItems.RAINBOW_GLASS, 8)) + .register(true, rainbow); + + new SlimefunItem(Categories.MAGIC, SlimefunItems.RAINBOW_GLASS_PANE, "RAINBOW_GLASS_PANE", RecipeType.ANCIENT_ALTAR, + new ItemStack[] {new ItemStack(Material.WHITE_STAINED_GLASS_PANE), new ItemStack(Material.WHITE_STAINED_GLASS_PANE), new ItemStack(Material.WHITE_STAINED_GLASS_PANE), new ItemStack(Material.WHITE_STAINED_GLASS_PANE), SlimefunItems.RUNE_RAINBOW, new ItemStack(Material.WHITE_STAINED_GLASS_PANE), new ItemStack(Material.WHITE_STAINED_GLASS_PANE), new ItemStack(Material.WHITE_STAINED_GLASS_PANE), new ItemStack(Material.WHITE_STAINED_GLASS_PANE)}, new CustomItem(SlimefunItems.RAINBOW_GLASS_PANE, 8)) + .register(true, rainbow); + + new SlimefunItem(Categories.MAGIC, SlimefunItems.RAINBOW_CLAY, "RAINBOW_CLAY", RecipeType.ANCIENT_ALTAR, + new ItemStack[] {new ItemStack(Material.WHITE_TERRACOTTA), new ItemStack(Material.WHITE_TERRACOTTA), new ItemStack(Material.WHITE_TERRACOTTA), new ItemStack(Material.WHITE_TERRACOTTA), SlimefunItems.RUNE_RAINBOW, new ItemStack(Material.WHITE_TERRACOTTA), new ItemStack(Material.WHITE_TERRACOTTA), new ItemStack(Material.WHITE_TERRACOTTA), new ItemStack(Material.WHITE_TERRACOTTA)}, new CustomItem(SlimefunItems.RAINBOW_CLAY, 8)) + .register(true, rainbow); + + RainbowTicker xmas = new RainbowTicker(13, 14); + + new SlimefunItem(Categories.CHRISTMAS, SlimefunItems.RAINBOW_WOOL_XMAS, "RAINBOW_WOOL_XMAS", RecipeType.ANCIENT_ALTAR, + new ItemStack[] {new ItemStack(Material.RED_DYE), SlimefunItems.CHRISTMAS_COOKIE, new ItemStack(Material.GREEN_DYE), new ItemStack(Material.WHITE_WOOL), SlimefunItems.RUNE_RAINBOW, new ItemStack(Material.WHITE_WOOL), new ItemStack(Material.GREEN_DYE), SlimefunItems.CHRISTMAS_COOKIE, new ItemStack(Material.RED_DYE)}, new CustomItem(SlimefunItems.RAINBOW_WOOL_XMAS, 2)) + .register(true, xmas); + + new SlimefunItem(Categories.CHRISTMAS, SlimefunItems.RAINBOW_GLASS_XMAS, "RAINBOW_GLASS_XMAS", RecipeType.ANCIENT_ALTAR, + new ItemStack[] {new ItemStack(Material.RED_DYE), SlimefunItems.CHRISTMAS_COOKIE, new ItemStack(Material.GREEN_DYE), new ItemStack(Material.WHITE_STAINED_GLASS), SlimefunItems.RUNE_RAINBOW, new ItemStack(Material.WHITE_STAINED_GLASS), new ItemStack(Material.GREEN_DYE), SlimefunItems.CHRISTMAS_COOKIE, new ItemStack(Material.RED_DYE)}, new CustomItem(SlimefunItems.RAINBOW_GLASS_XMAS, 2)) + .register(true, xmas); + + new SlimefunItem(Categories.CHRISTMAS, SlimefunItems.RAINBOW_GLASS_PANE_XMAS, "RAINBOW_GLASS_PANE_XMAS", RecipeType.ANCIENT_ALTAR, + new ItemStack[] {new ItemStack(Material.RED_DYE), SlimefunItems.CHRISTMAS_COOKIE, new ItemStack(Material.GREEN_DYE), new ItemStack(Material.WHITE_STAINED_GLASS_PANE), SlimefunItems.RUNE_RAINBOW, new ItemStack(Material.WHITE_STAINED_GLASS_PANE), new ItemStack(Material.GREEN_DYE), SlimefunItems.CHRISTMAS_COOKIE, new ItemStack(Material.RED_DYE)}, new CustomItem(SlimefunItems.RAINBOW_GLASS_PANE_XMAS, 2)) + .register(true, xmas); + + new SlimefunItem(Categories.CHRISTMAS, SlimefunItems.RAINBOW_CLAY_XMAS, "RAINBOW_CLAY_XMAS", RecipeType.ANCIENT_ALTAR, + new ItemStack[] {new ItemStack(Material.RED_DYE), SlimefunItems.CHRISTMAS_COOKIE, new ItemStack(Material.GREEN_DYE), new ItemStack(Material.WHITE_TERRACOTTA), SlimefunItems.RUNE_RAINBOW, new ItemStack(Material.WHITE_TERRACOTTA), new ItemStack(Material.GREEN_DYE), SlimefunItems.CHRISTMAS_COOKIE, new ItemStack(Material.RED_DYE)}, new CustomItem(SlimefunItems.RAINBOW_CLAY_XMAS, 2)) + .register(true, xmas); + + RainbowTicker valentine = new RainbowTicker(2, 6, 10); + + new SlimefunItem(Categories.VALENTINES_DAY, SlimefunItems.RAINBOW_WOOL_VALENTINE, "RAINBOW_WOOL_VALENTINE", RecipeType.ANCIENT_ALTAR, + new ItemStack[] {new ItemStack(Material.RED_DYE), new ItemStack(Material.POPPY), new ItemStack(Material.PINK_DYE), new ItemStack(Material.WHITE_WOOL), SlimefunItems.RUNE_RAINBOW, new ItemStack(Material.WHITE_WOOL), new ItemStack(Material.PINK_DYE), new ItemStack(Material.POPPY), new ItemStack(Material.RED_DYE)}, new CustomItem(SlimefunItems.RAINBOW_WOOL_VALENTINE, 2)) + .register(true, valentine); + + new SlimefunItem(Categories.VALENTINES_DAY, SlimefunItems.RAINBOW_GLASS_VALENTINE, "RAINBOW_GLASS_VALENTINE", RecipeType.ANCIENT_ALTAR, + new ItemStack[] {new ItemStack(Material.RED_DYE), new ItemStack(Material.POPPY), new ItemStack(Material.PINK_DYE), new ItemStack(Material.WHITE_STAINED_GLASS), SlimefunItems.RUNE_RAINBOW, new ItemStack(Material.WHITE_STAINED_GLASS), new ItemStack(Material.PINK_DYE), new ItemStack(Material.POPPY), new ItemStack(Material.RED_DYE)}, new CustomItem(SlimefunItems.RAINBOW_GLASS_VALENTINE, 2)) + .register(true, valentine); + + new SlimefunItem(Categories.VALENTINES_DAY, SlimefunItems.RAINBOW_GLASS_PANE_VALENTINE, "RAINBOW_GLASS_PANE_VALENTINE", RecipeType.ANCIENT_ALTAR, + new ItemStack[] {new ItemStack(Material.RED_DYE), new ItemStack(Material.POPPY), new ItemStack(Material.PINK_DYE), new ItemStack(Material.WHITE_STAINED_GLASS_PANE), SlimefunItems.RUNE_RAINBOW, new ItemStack(Material.WHITE_STAINED_GLASS_PANE), new ItemStack(Material.PINK_DYE), new ItemStack(Material.POPPY), new ItemStack(Material.RED_DYE)}, new CustomItem(SlimefunItems.RAINBOW_GLASS_PANE_VALENTINE, 2)) + .register(true, valentine); + + new SlimefunItem(Categories.VALENTINES_DAY, SlimefunItems.RAINBOW_CLAY_VALENTINE, "RAINBOW_CLAY_VALENTINE", RecipeType.ANCIENT_ALTAR, + new ItemStack[] {new ItemStack(Material.RED_DYE), new ItemStack(Material.POPPY), new ItemStack(Material.PINK_DYE), new ItemStack(Material.WHITE_TERRACOTTA), SlimefunItems.RUNE_RAINBOW, new ItemStack(Material.WHITE_TERRACOTTA), new ItemStack(Material.PINK_DYE), new ItemStack(Material.POPPY), new ItemStack(Material.RED_DYE)}, new CustomItem(SlimefunItems.RAINBOW_CLAY_VALENTINE, 2)) + .register(true, valentine); + + new SlimefunItem(Categories.TECH_MISC, SlimefunItems.WITHER_PROOF_GLASS, "WITHER_PROOF_GLASS", RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {SlimefunItems.LEAD_INGOT, SlimefunItems.WITHER_PROOF_OBSIDIAN, SlimefunItems.LEAD_INGOT, SlimefunItems.WITHER_PROOF_OBSIDIAN, SlimefunItems.HARDENED_GLASS, SlimefunItems.WITHER_PROOF_OBSIDIAN, SlimefunItems.LEAD_INGOT, SlimefunItems.WITHER_PROOF_OBSIDIAN, SlimefunItems.LEAD_INGOT}, + new CustomItem(SlimefunItems.WITHER_PROOF_GLASS, 4)) + .register(true); + + new GEOScannerBlock(Categories.GPS, SlimefunItems.GPS_GEO_SCANNER, "GPS_GEO_SCANNER", RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {null, null, SlimefunItems.ELECTRO_MAGNET, null, SlimefunItems.STEEL_INGOT, SlimefunItems.STEEL_INGOT, SlimefunItems.ELECTRO_MAGNET, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.ELECTRO_MAGNET}) + .register(true); + + new PortableGEOScanner(Categories.GPS, SlimefunItems.PORTABLE_GEO_SCANNER, "PORTABLE_GEO_SCANNER", RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {SlimefunItems.ELECTRO_MAGNET, new ItemStack(Material.COMPASS), SlimefunItems.ELECTRO_MAGNET, SlimefunItems.STEEL_INGOT, SlimefunItems.GPS_MARKER_TOOL, SlimefunItems.STEEL_INGOT, SlimefunItems.SOLDER_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.SOLDER_INGOT}) + .register(true); + + new OilPump(Categories.GPS, SlimefunItems.OIL_PUMP, "OIL_PUMP", RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {SlimefunItems.STEEL_INGOT, SlimefunItems.MEDIUM_CAPACITOR, SlimefunItems.STEEL_INGOT, SlimefunItems.STEEL_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.STEEL_INGOT, null, new ItemStack(Material.BUCKET), null}) { + + @Override + public int getEnergyConsumption() { + return 14; + } + + @Override + public int getSpeed() { + return 1; + } + + }.registerChargeableBlock(true, 200); + + new GEOMiner(Categories.GPS, SlimefunItems.GEO_MINER, "GEO_MINER", RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {new ItemStack(Material.DIAMOND_PICKAXE), SlimefunItems.MEDIUM_CAPACITOR, new ItemStack(Material.DIAMOND_PICKAXE), SlimefunItems.REINFORCED_ALLOY_INGOT, SlimefunItems.OIL_PUMP, SlimefunItems.REINFORCED_ALLOY_INGOT, null, SlimefunItems.ELECTRIC_MOTOR, null}) { + + @Override + public int getSpeed() { + return 1; + } + + @Override + public int getEnergyConsumption() { + return 24; + } + + }.registerChargeableBlock(true, 512); + + new NetherDrill(Categories.GPS, SlimefunItems.NETHER_DRILL, "NETHER_DRILL", RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {null, null, null, null, new CustomItem(Material.BARRIER, "&4DEPRECATED", "", "&cThis Item will soon be removed.", "&cUse the GEO Miner instead."), null, null, null, null}){ + + @Override + public int getSpeed() { + return 1; + } + + @Override + public int getEnergyConsumption() { + return 51; + } + + }.registerChargeableBlock(true, 1024); + + new SlimefunItem(Categories.RESOURCES, SlimefunItems.BUCKET_OF_OIL, "BUCKET_OF_OIL", new RecipeType(SlimefunItems.OIL_PUMP), + new ItemStack[] {null, null, null, null, new ItemStack(Material.BUCKET), null, null, null, null}) + .register(true); + + new SlimefunItem(Categories.RESOURCES, SlimefunItems.BUCKET_OF_FUEL, "BUCKET_OF_FUEL", new RecipeType(SlimefunItems.REFINERY), + new ItemStack[] {null, null, null, null, SlimefunItems.BUCKET_OF_OIL, null, null, null, null}) + .register(true); + + new SlimefunItem(Categories.RESOURCES, SlimefunItems.NETHER_ICE, "NETHER_ICE", new RecipeType(SlimefunItems.GEO_MINER), + new ItemStack[] {null, null, null, null, null, null, null, null}) + .register(true); + + new Refinery(Categories.ELECTRICITY, SlimefunItems.REFINERY, "REFINERY", RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {SlimefunItems.HARDENED_GLASS, SlimefunItems.REDSTONE_ALLOY, SlimefunItems.HARDENED_GLASS, SlimefunItems.HARDENED_GLASS, SlimefunItems.REDSTONE_ALLOY, SlimefunItems.HARDENED_GLASS, new ItemStack(Material.PISTON), SlimefunItems.ELECTRIC_MOTOR, new ItemStack(Material.PISTON)}) { + + @Override + public int getEnergyConsumption() { + return 16; + } + + @Override + public int getSpeed() { + return 1; + } + + }.registerChargeableBlock(true, 256); + + new LavaGenerator(Categories.ELECTRICITY, SlimefunItems.LAVA_GENERATOR, "LAVA_GENERATOR", RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {null, SlimefunItems.GOLD_16K, null, SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.HEATING_COIL, SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.HEATING_COIL}) { + + @Override + public int getEnergyProduction() { + return 10; + } + + }.registerUnrechargeableBlock(true, 512); + + new LavaGenerator(Categories.ELECTRICITY, SlimefunItems.LAVA_GENERATOR_2, "LAVA_GENERATOR_2", RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {SlimefunItems.CORINTHIAN_BRONZE_INGOT, SlimefunItems.CORINTHIAN_BRONZE_INGOT, SlimefunItems.CORINTHIAN_BRONZE_INGOT, SlimefunItems.COMPRESSED_CARBON, SlimefunItems.LAVA_GENERATOR, SlimefunItems.COMPRESSED_CARBON, SlimefunItems.HEATING_COIL, SlimefunItems.COMPRESSED_CARBON, SlimefunItems.HEATING_COIL}) { + + @Override + public int getEnergyProduction() { + return 20; + } + + }.registerUnrechargeableBlock(true, 1024); + + new CombustionGenerator(Categories.ELECTRICITY, SlimefunItems.COMBUSTION_REACTOR, "COMBUSTION_REACTOR", RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {null, SlimefunItems.STEEL_INGOT, null, SlimefunItems.STEEL_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.STEEL_INGOT, SlimefunItems.HEATING_COIL, SlimefunItems.STEEL_INGOT, SlimefunItems.HEATING_COIL}) { + + @Override + public int getEnergyProduction() { + return 12; + } + + }.registerUnrechargeableBlock(true, 256); + + new SlimefunItem(Categories.GPS, SlimefunItems.GPS_TELEPORTER_PYLON, "GPS_TELEPORTER_PYLON", RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {SlimefunItems.ZINC_INGOT, new ItemStack(Material.GLASS), SlimefunItems.ZINC_INGOT, new ItemStack(Material.GLASS), SlimefunItems.HEATING_COIL, new ItemStack(Material.GLASS), SlimefunItems.ZINC_INGOT, new ItemStack(Material.GLASS), SlimefunItems.ZINC_INGOT}, new CustomItem(SlimefunItems.GPS_TELEPORTER_PYLON, 8)) + .register(true, new RainbowTicker(9, 10)); + + new Teleporter(Categories.GPS, SlimefunItems.GPS_TELEPORTATION_MATRIX, "GPS_TELEPORTATION_MATRIX", RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {SlimefunItems.GPS_TELEPORTER_PYLON, SlimefunItems.REINFORCED_ALLOY_INGOT, SlimefunItems.GPS_TELEPORTER_PYLON, SlimefunItems.ELECTRO_MAGNET, SlimefunItems.GPS_CONTROL_PANEL, SlimefunItems.ELECTRO_MAGNET, SlimefunItems.GPS_TELEPORTER_PYLON, SlimefunItems.REINFORCED_ALLOY_INGOT, SlimefunItems.GPS_TELEPORTER_PYLON}) { + + @Override + public void onInteract(final Player p, final Block b) { + GPSNetwork.openTeleporterGUI(p, UUID.fromString(BlockStorage.getLocationInfo(b.getLocation(), "owner")), b, Slimefun.getGPSNetwork().getNetworkComplexity(UUID.fromString(BlockStorage.getLocationInfo(b.getLocation(), "owner")))); + } + + } + .register(true); + + new SlimefunItem(Categories.GPS, SlimefunItems.GPS_ACTIVATION_DEVICE_SHARED, "GPS_ACTIVATION_DEVICE_SHARED", RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {null, new ItemStack(Material.STONE_PRESSURE_PLATE), null, new ItemStack(Material.REDSTONE), SlimefunItems.GPS_TRANSMITTER, new ItemStack(Material.REDSTONE), SlimefunItems.BILLON_INGOT, SlimefunItems.BILLON_INGOT, SlimefunItems.BILLON_INGOT}) + .register(true); + + new SlimefunItem(Categories.GPS, SlimefunItems.GPS_ACTIVATION_DEVICE_PERSONAL, "GPS_ACTIVATION_DEVICE_PERSONAL", RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {null, SlimefunItems.LEAD_INGOT, null, SlimefunItems.COBALT_INGOT, SlimefunItems.GPS_ACTIVATION_DEVICE_SHARED, SlimefunItems.COBALT_INGOT, null, SlimefunItems.LEAD_INGOT, null}) + .register(true); + + SlimefunItem.registerBlockHandler("GPS_ACTIVATION_DEVICE_PERSONAL", new SlimefunBlockHandler() { + + @Override + public void onPlace(Player p, Block b, SlimefunItem item) { + BlockStorage.addBlockInfo(b, "owner", p.getUniqueId().toString()); + } + + @Override + public boolean onBreak(Player p, Block b, SlimefunItem item, UnregisterReason reason) { + return true; + } + }); + + new InfusedHopper(Categories.MAGIC, SlimefunItems.INFUSED_HOPPER, "INFUSED_HOPPER", RecipeType.ANCIENT_ALTAR, + new ItemStack[] {new ItemStack(Material.OBSIDIAN), SlimefunItems.RUNE_EARTH, new ItemStack(Material.HOPPER), SlimefunItems.RUNE_ENDER, SlimefunItems.INFUSED_MAGNET, SlimefunItems.RUNE_ENDER, new ItemStack(Material.HOPPER), SlimefunItems.RUNE_EARTH, new ItemStack(Material.OBSIDIAN)}) + .register(true); + + new SlimefunItem(Categories.RESOURCES, SlimefunItems.BLISTERING_INGOT, "BLISTERING_INGOT", RecipeType.HEATED_PRESSURE_CHAMBER, + new ItemStack[] {SlimefunItems.GOLD_24K, SlimefunItems.URANIUM, null, null, null, null, null, null, null}) + .register(true); + + new SlimefunItem(Categories.RESOURCES, SlimefunItems.BLISTERING_INGOT_2, "BLISTERING_INGOT_2", RecipeType.HEATED_PRESSURE_CHAMBER, + new ItemStack[] {SlimefunItems.BLISTERING_INGOT, SlimefunItems.CARBONADO, null, null, null, null, null, null, null}) + .register(true); + + new SlimefunItem(Categories.RESOURCES, SlimefunItems.BLISTERING_INGOT_3, "BLISTERING_INGOT_3", RecipeType.HEATED_PRESSURE_CHAMBER, + new ItemStack[] {SlimefunItems.BLISTERING_INGOT_2,new ItemStack(Material.NETHER_STAR), null, null, null, null, null, null, null}) + .register(true); + + new SlimefunItem(Categories.RESOURCES, SlimefunItems.ENRICHED_NETHER_ICE, "ENRICHED_NETHER_ICE", RecipeType.HEATED_PRESSURE_CHAMBER, + new ItemStack[]{SlimefunItems.NETHER_ICE, SlimefunItems.PLUTONIUM, null, null, null, null, null, null, null}) + .register(true); + + new ElevatorPlate(Categories.GPS, SlimefunItems.ELEVATOR, "ELEVATOR_PLATE", RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {null, new ItemStack(Material.STONE_PRESSURE_PLATE), null, new ItemStack(Material.PISTON), SlimefunItems.ELECTRIC_MOTOR, new ItemStack(Material.PISTON), SlimefunItems.ALUMINUM_BRONZE_INGOT, SlimefunItems.ALUMINUM_BRONZE_INGOT, SlimefunItems.ALUMINUM_BRONZE_INGOT}, + new CustomItem(SlimefunItems.ELEVATOR, 2)) + .register(true); + + new FoodFabricator(Categories.ELECTRICITY, SlimefunItems.FOOD_FABRICATOR, "FOOD_FABRICATOR", RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {SlimefunItems.BILLON_INGOT, SlimefunItems.SILVER_INGOT, SlimefunItems.BILLON_INGOT, SlimefunItems.CAN, SlimefunItems.SMALL_CAPACITOR, SlimefunItems.CAN, null, SlimefunItems.ELECTRIC_MOTOR, null}) { + + @Override + public int getEnergyConsumption() { + return 7; + } + + @Override + public int getSpeed() { + return 1; + } + + }.registerChargeableBlock(true, 256); + + new FoodFabricator(Categories.ELECTRICITY, SlimefunItems.FOOD_FABRICATOR_2, "FOOD_FABRICATOR_2", RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {SlimefunItems.HARDENED_METAL_INGOT, SlimefunItems.REINFORCED_ALLOY_INGOT, SlimefunItems.HARDENED_METAL_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.FOOD_FABRICATOR, SlimefunItems.ELECTRIC_MOTOR, null, SlimefunItems.ELECTRO_MAGNET, null}) { + + @Override + public int getEnergyConsumption() { + return 24; + } + + @Override + public int getSpeed() { + return 6; + } + + }.registerChargeableBlock(true, 512); + + new SlimefunItem(Categories.MISC, SlimefunItems.WHEAT_ORGANIC_FOOD, "WHEAT_ORGANIC_FOOD", new RecipeType(SlimefunItems.FOOD_FABRICATOR), + new ItemStack[] {SlimefunItems.CAN, new ItemStack(Material.WHEAT), null, null, null, null, null, null, null}) + .register(true); + + new SlimefunItem(Categories.MISC, SlimefunItems.CARROT_ORGANIC_FOOD, "CARROT_ORGANIC_FOOD", new RecipeType(SlimefunItems.FOOD_FABRICATOR), + new ItemStack[] {SlimefunItems.CAN, new ItemStack(Material.CARROT), null, null, null, null, null, null, null}) + .register(true); + + new SlimefunItem(Categories.MISC, SlimefunItems.POTATO_ORGANIC_FOOD, "POTATO_ORGANIC_FOOD", new RecipeType(SlimefunItems.FOOD_FABRICATOR), + new ItemStack[] {SlimefunItems.CAN, new ItemStack(Material.POTATO), null, null, null, null, null, null, null}) + .register(true); + + new SlimefunItem(Categories.MISC, SlimefunItems.SEEDS_ORGANIC_FOOD, "SEEDS_ORGANIC_FOOD", new RecipeType(SlimefunItems.FOOD_FABRICATOR), + new ItemStack[] {SlimefunItems.CAN, new ItemStack(Material.WHEAT_SEEDS), null, null, null, null, null, null, null}) + .register(true); + + new SlimefunItem(Categories.MISC, SlimefunItems.BEETROOT_ORGANIC_FOOD, "BEETROOT_ORGANIC_FOOD", new RecipeType(SlimefunItems.FOOD_FABRICATOR), + new ItemStack[] {SlimefunItems.CAN, new ItemStack(Material.BEETROOT), null, null, null, null, null, null, null}) + .register(true); + + new SlimefunItem(Categories.MISC, SlimefunItems.MELON_ORGANIC_FOOD, "MELON_ORGANIC_FOOD", new RecipeType(SlimefunItems.FOOD_FABRICATOR), + new ItemStack[] {SlimefunItems.CAN, new ItemStack(Material.MELON), null, null, null, null, null, null, null}) + .register(true); + + new SlimefunItem(Categories.MISC, SlimefunItems.APPLE_ORGANIC_FOOD, "APPLE_ORGANIC_FOOD", new RecipeType(SlimefunItems.FOOD_FABRICATOR), + new ItemStack[] {SlimefunItems.CAN, new ItemStack(Material.APPLE), null, null, null, null, null, null, null}) + .register(true); + + new AutoBreeder(Categories.ELECTRICITY, SlimefunItems.AUTO_BREEDER, "AUTO_BREEDER", RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {SlimefunItems.GOLD_18K, SlimefunItems.CAN, SlimefunItems.GOLD_18K, SlimefunItems.ELECTRIC_MOTOR, new ItemStack(Material.HAY_BLOCK), SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.LEAD_INGOT, SlimefunItems.FOOD_FABRICATOR, SlimefunItems.LEAD_INGOT}) + .registerChargeableBlock(true, 1024); + + new AnimalGrowthAccelerator(Categories.ELECTRICITY, SlimefunItems.ANIMAL_GROWTH_ACCELERATOR, "ANIMAL_GROWTH_ACCELERATOR", RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {null, SlimefunItems.BLISTERING_INGOT_3, null, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.WHEAT_ORGANIC_FOOD, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.REINFORCED_ALLOY_INGOT, SlimefunItems.AUTO_BREEDER, SlimefunItems.REINFORCED_ALLOY_INGOT}) + .registerChargeableBlock(true, 1024); + + new XPCollector(Categories.ELECTRICITY, SlimefunItems.XP_COLLECTOR, "XP_COLLECTOR", RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {null, SlimefunItems.BLISTERING_INGOT_3, null, SlimefunItems.WITHER_PROOF_OBSIDIAN, SlimefunItems.AUTO_ENCHANTER, SlimefunItems.WITHER_PROOF_OBSIDIAN, SlimefunItems.ALUMINUM_BRONZE_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.ALUMINUM_BRONZE_INGOT}) + .registerChargeableBlock(true, 1024); + + new FoodComposter(Categories.ELECTRICITY, SlimefunItems.FOOD_COMPOSTER, "FOOD_COMPOSTER", RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.FOOD_FABRICATOR, SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.CAN, SlimefunItems.MEDIUM_CAPACITOR, SlimefunItems.CAN, null, SlimefunItems.ELECTRIC_MOTOR, null}) { + + @Override + public int getEnergyConsumption() { + return 8; + } + + @Override + public int getSpeed() { + return 1; + } + + }.registerChargeableBlock(true, 256); + + new FoodComposter(Categories.ELECTRICITY, SlimefunItems.FOOD_COMPOSTER_2, "FOOD_COMPOSTER_2", RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {SlimefunItems.HARDENED_METAL_INGOT, SlimefunItems.REINFORCED_ALLOY_INGOT, SlimefunItems.HARDENED_METAL_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.FOOD_COMPOSTER, SlimefunItems.ELECTRIC_MOTOR, null, SlimefunItems.ELECTRO_MAGNET, null}) { + + @Override + public int getEnergyConsumption() { + return 26; + } + + @Override + public int getSpeed() { + return 10; + } + + }.registerChargeableBlock(true, 256); + + new SlimefunItem(Categories.MISC, SlimefunItems.WHEAT_FERTILIZER, "WHEAT_FERTILIZER", new RecipeType(SlimefunItems.FOOD_COMPOSTER), + new ItemStack[] {SlimefunItems.WHEAT_ORGANIC_FOOD, null, null, null, null, null, null, null, null}) + .register(true); + + new SlimefunItem(Categories.MISC, SlimefunItems.CARROT_FERTILIZER, "CARROT_FERTILIZER", new RecipeType(SlimefunItems.FOOD_COMPOSTER), + new ItemStack[] {SlimefunItems.CARROT_ORGANIC_FOOD, null, null, null, null, null, null, null, null}) + .register(true); + + new SlimefunItem(Categories.MISC, SlimefunItems.POTATO_FERTILIZER, "POTATO_FERTILIZER", new RecipeType(SlimefunItems.FOOD_COMPOSTER), + new ItemStack[] {SlimefunItems.POTATO_ORGANIC_FOOD, null, null, null, null, null, null, null, null}) + .register(true); + + new SlimefunItem(Categories.MISC, SlimefunItems.SEEDS_FERTILIZER, "SEEDS_FERTILIZER", new RecipeType(SlimefunItems.FOOD_COMPOSTER), + new ItemStack[] {SlimefunItems.SEEDS_ORGANIC_FOOD, null, null, null, null, null, null, null, null}) + .register(true); + + new SlimefunItem(Categories.MISC, SlimefunItems.BEETROOT_FERTILIZER, "BEETROOT_FERTILIZER", new RecipeType(SlimefunItems.FOOD_COMPOSTER), + new ItemStack[] {SlimefunItems.BEETROOT_ORGANIC_FOOD, null, null, null, null, null, null, null, null}) + .register(true); + + new SlimefunItem(Categories.MISC, SlimefunItems.MELON_FERTILIZER, "MELON_FERTILIZER", new RecipeType(SlimefunItems.FOOD_COMPOSTER), + new ItemStack[] {SlimefunItems.MELON_ORGANIC_FOOD, null, null, null, null, null, null, null, null}) + .register(true); + + new SlimefunItem(Categories.MISC, SlimefunItems.APPLE_FERTILIZER, "APPLE_FERTILIZER", new RecipeType(SlimefunItems.FOOD_COMPOSTER), + new ItemStack[] {SlimefunItems.APPLE_ORGANIC_FOOD, null, null, null, null, null, null, null, null}) + .register(true); + + new CropGrowthAccelerator(Categories.ELECTRICITY, SlimefunItems.CROP_GROWTH_ACCELERATOR, "CROP_GROWTH_ACCELERATOR", RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {null, SlimefunItems.BLISTERING_INGOT_3, null, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.PROGRAMMABLE_ANDROID_FARMER, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.ELECTRO_MAGNET, SlimefunItems.ANIMAL_GROWTH_ACCELERATOR, SlimefunItems.ELECTRO_MAGNET}) { + + @Override + public int getEnergyConsumption() { + return 25; + } + + @Override + public int getRadius() { + return 3; + } + + @Override + public int getSpeed() { + return 3; + } + + }.registerChargeableBlock(true, 1024); + + new CropGrowthAccelerator(Categories.ELECTRICITY, SlimefunItems.CROP_GROWTH_ACCELERATOR_2, "CROP_GROWTH_ACCELERATOR_2", RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {null, SlimefunItems.BLISTERING_INGOT_3, null, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.CROP_GROWTH_ACCELERATOR, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.ELECTRO_MAGNET, SlimefunItems.ADVANCED_CIRCUIT_BOARD, SlimefunItems.ELECTRO_MAGNET}) { + + @Override + public int getEnergyConsumption() { + return 30; + } + + @Override + public int getRadius() { + return 4; + } + + @Override + public int getSpeed() { + return 4; + } + + }.registerChargeableBlock(true, 1024); + + new Freezer(Categories.ELECTRICITY, SlimefunItems.FREEZER, "FREEZER", RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {null, SlimefunItems.SILVER_INGOT, null, SlimefunItems.ELECTRIC_MOTOR, new ItemStack(Material.PACKED_ICE), SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.COOLING_UNIT, SlimefunItems.MEDIUM_CAPACITOR, SlimefunItems.COOLING_UNIT}) { + + @Override + public int getEnergyConsumption() { + return 9; + } + + @Override + public int getSpeed() { + return 1; + } + + }.registerChargeableBlock(true, 256); + + new Freezer(Categories.ELECTRICITY, SlimefunItems.FREEZER_2, "FREEZER_2", RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {null, SlimefunItems.SILVER_INGOT, null, SlimefunItems.ELECTRO_MAGNET, SlimefunItems.FREEZER, SlimefunItems.ELECTRO_MAGNET, SlimefunItems.COOLING_UNIT, SlimefunItems.ALUMINUM_BRASS_INGOT, SlimefunItems.COOLING_UNIT}) { + + @Override + public int getEnergyConsumption() { + return 15; + } + + @Override + public int getSpeed() { + return 2; + } + + }.registerChargeableBlock(true, 256); + + new SlimefunItem(Categories.TECH_MISC, SlimefunItems.REACTOR_COOLANT_CELL, "REACTOR_COOLANT_CELL", new RecipeType(SlimefunItems.FREEZER), + new ItemStack[] {new ItemStack(Material.BLUE_ICE), null, null, null, null, null, null, null, null}) + .register(true); + + new SlimefunItem(Categories.TECH_MISC, SlimefunItems.NETHER_ICE_COOLANT_CELL, "NETHER_ICE_COOLANT_CELL", new RecipeType(SlimefunItems.HEATED_PRESSURE_CHAMBER), + new ItemStack[]{SlimefunItems.ENRICHED_NETHER_ICE, null, null, null, null, null, null, null, null}) + .register(true); + + new SlimefunItem(Categories.RESOURCES, SlimefunItems.NEPTUNIUM, "NEPTUNIUM", new RecipeType(SlimefunItems.NUCLEAR_REACTOR), + new ItemStack[] {SlimefunItems.URANIUM, null, null, null, null, null, null, null, null}) + .register(true); + + SlimefunItem.setRadioactive(SlimefunItems.NEPTUNIUM); + + new SlimefunItem(Categories.RESOURCES, SlimefunItems.PLUTONIUM, "PLUTONIUM", new RecipeType(SlimefunItems.NUCLEAR_REACTOR), + new ItemStack[] {SlimefunItems.NEPTUNIUM, null, null, null, null, null, null, null, null}) + .register(true); + + SlimefunItem.setRadioactive(SlimefunItems.PLUTONIUM); + + new SlimefunItem(Categories.RESOURCES, SlimefunItems.BOOSTED_URANIUM, "BOOSTED_URANIUM", RecipeType.HEATED_PRESSURE_CHAMBER, + new ItemStack[] {SlimefunItems.PLUTONIUM, SlimefunItems.URANIUM, null, null, null, null, null, null, null}) + .register(true); + + SlimefunItem.setRadioactive(SlimefunItems.BOOSTED_URANIUM); + + new AReactor(Categories.ELECTRICITY, SlimefunItems.NUCLEAR_REACTOR, "NUCLEAR_REACTOR", RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {SlimefunItems.BLISTERING_INGOT_3, SlimefunItems.CARBONADO_EDGED_CAPACITOR, SlimefunItems.BLISTERING_INGOT_3, SlimefunItems.REINFORCED_PLATE, SlimefunItems.COOLING_UNIT, SlimefunItems.REINFORCED_PLATE, SlimefunItems.LEAD_INGOT, SlimefunItems.REINFORCED_PLATE, SlimefunItems.LEAD_INGOT}){ + + @Override + public String getInventoryTitle() { + return "&2Nuclear Reactor"; + } + + @Override + public void registerDefaultRecipes() { + registerFuel(new MachineFuel(1200, SlimefunItems.URANIUM, SlimefunItems.NEPTUNIUM)); + registerFuel(new MachineFuel(600, SlimefunItems.NEPTUNIUM, SlimefunItems.PLUTONIUM)); + registerFuel(new MachineFuel(1500, SlimefunItems.BOOSTED_URANIUM, null)); + } + + @Override + public int getEnergyProduction() { + return 250; + } + + @Override + public ItemStack getProgressBar() { + try { + return CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYTNhZDhlZTg0OWVkZjA0ZWQ5YTI2Y2EzMzQxZjYwMzNiZDc2ZGNjNDIzMWVkMWVhNjNiNzU2NTc1MWIyN2FjIn19fQ=="); + } catch (Exception e) { + Slimefun.getLogger().log(Level.SEVERE, "An Error occured while creating the Progressbar of a Reactor for Slimefun " + Slimefun.getVersion()); + return new ItemStack(Material.BLAZE_POWDER); + } + } + + @Override + public ItemStack getCoolant() { + return SlimefunItems.REACTOR_COOLANT_CELL; + } + + @Override + public void extraTick(Location l) { + // This machine does not need to perform anything while ticking + // The Nether Star Reactor uses this method to generate the Wither Effect + } + } + .registerChargeableBlock(true, 16384); + + new AReactor(Categories.ELECTRICITY, SlimefunItems.NETHERSTAR_REACTOR, "NETHERSTAR_REACTOR", RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[]{SlimefunItems.BOOSTED_URANIUM, SlimefunItems.CARBONADO_EDGED_CAPACITOR, SlimefunItems.BOOSTED_URANIUM, SlimefunItems.REINFORCED_PLATE, new ItemStack(Material.NETHER_STAR), SlimefunItems.REINFORCED_PLATE, SlimefunItems.CORINTHIAN_BRONZE_INGOT, SlimefunItems.REINFORCED_PLATE, SlimefunItems.CORINTHIAN_BRONZE_INGOT}){ + + @Override + public String getInventoryTitle() { + return "&fNether Star Reactor"; + } + + @Override + public void registerDefaultRecipes() { + registerFuel(new MachineFuel(1800, new ItemStack(Material.NETHER_STAR))); + } + + @Override + public int getEnergyProduction() { + return 512; + } + + @Override + public void extraTick(final Location l) { + Bukkit.getScheduler().runTaskLater(SlimefunPlugin.instance, () -> { + for (Entity entity : ReactorHologram.getArmorStand(l, true).getNearbyEntities(5, 5, 5)) { + if (entity instanceof LivingEntity) { + ((LivingEntity) entity).addPotionEffect(new PotionEffect(PotionEffectType.WITHER, 60, 1)); + } + } + }, 0L); + } + + @Override + public ItemStack getCoolant() { + return SlimefunItems.NETHER_ICE_COOLANT_CELL; + } + + @Override + public ItemStack getProgressBar() { + return new ItemStack(Material.NETHER_STAR); + } + + }.registerChargeableBlock(true, 32768); + + new SlimefunItem(Categories.CARGO, SlimefunItems.CARGO_MOTOR, "CARGO_MOTOR", RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {SlimefunItems.HARDENED_GLASS, SlimefunItems.ELECTRO_MAGNET, SlimefunItems.HARDENED_GLASS, SlimefunItems.SILVER_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.SILVER_INGOT, SlimefunItems.HARDENED_GLASS, SlimefunItems.ELECTRO_MAGNET, SlimefunItems.HARDENED_GLASS}, new CustomItem(SlimefunItems.CARGO_MOTOR, 4)) + .register(true); + + new CargoManagerBlock(Categories.CARGO, SlimefunItems.CARGO_MANAGER, "CARGO_MANAGER", RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {null, SlimefunItems.HOLOGRAM_PROJECTOR, null, SlimefunItems.REINFORCED_PLATE, SlimefunItems.CARGO_MOTOR, SlimefunItems.REINFORCED_PLATE, SlimefunItems.ALUMINUM_BRONZE_INGOT, SlimefunItems.ANDROID_MEMORY_CORE, SlimefunItems.ALUMINUM_BRONZE_INGOT}) + .register(true); + + new SlimefunItem(Categories.CARGO, SlimefunItems.CARGO_NODE, "CARGO_NODE", RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {SlimefunItems.BRONZE_INGOT, SlimefunItems.SILVER_INGOT, SlimefunItems.BRONZE_INGOT, SlimefunItems.SILVER_INGOT, SlimefunItems.CARGO_MOTOR, SlimefunItems.SILVER_INGOT, SlimefunItems.BRONZE_INGOT, SlimefunItems.SILVER_INGOT, SlimefunItems.BRONZE_INGOT}, new CustomItem(SlimefunItems.CARGO_NODE, 4)) + .register(true, new ItemInteractionHandler() { + + @Override + public boolean onRightClick(final ItemUseEvent e, Player p, ItemStack stack) { + if (e.getClickedBlock() == null) return false; + String id = BlockStorage.checkID(e.getClickedBlock()); + if (id == null || !id.equals("CARGO_NODE")) return false; + + if (CargoNet.getNetworkFromLocation(e.getClickedBlock().getLocation()) != null) { + p.sendMessage(ChatColor.translateAlternateColorCodes('&', "&7Connected: " + "&2\u2714")); + } + else { + p.sendMessage(ChatColor.translateAlternateColorCodes('&', "&7Connected: " + "&4\u2718")); + } + return true; + } + }); + + new CargoInputNode(Categories.CARGO, SlimefunItems.CARGO_INPUT, "CARGO_NODE_INPUT", RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {null, new ItemStack(Material.HOPPER), null, SlimefunItems.BILLON_INGOT, SlimefunItems.CARGO_NODE, SlimefunItems.BILLON_INGOT, null, new ItemStack(Material.HOPPER), null}, new CustomItem(SlimefunItems.CARGO_INPUT, 2)) + .register(true); + + new CargoOutputNode(Categories.CARGO, SlimefunItems.CARGO_OUTPUT, "CARGO_NODE_OUTPUT", RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {null, new ItemStack(Material.HOPPER), null, SlimefunItems.BRASS_INGOT, SlimefunItems.CARGO_NODE, SlimefunItems.BRASS_INGOT, null, new ItemStack(Material.HOPPER), null}, new CustomItem(SlimefunItems.CARGO_OUTPUT, 2)) + .register(true); + + new AdvancedCargoOutputNode(Categories.CARGO, SlimefunItems.CARGO_OUTPUT_ADVANCED, "CARGO_NODE_OUTPUT_ADVANCED", RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {null, SlimefunItems.CARGO_MOTOR, null, SlimefunItems.COBALT_INGOT, SlimefunItems.CARGO_OUTPUT, SlimefunItems.COBALT_INGOT, null, SlimefunItems.CARGO_MOTOR, null}, new CustomItem(SlimefunItems.CARGO_OUTPUT_ADVANCED)) + .register(true); + + new AutomatedCraftingChamber(Categories.ELECTRICITY, SlimefunItems.AUTOMATED_CRAFTING_CHAMBER, "AUTOMATED_CRAFTING_CHAMBER", RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {null, new ItemStack(Material.CRAFTING_TABLE), null, SlimefunItems.CARGO_MOTOR, SlimefunItems.BLISTERING_INGOT_3, SlimefunItems.CARGO_MOTOR, null, SlimefunItems.ELECTRIC_MOTOR, null}) { + + @Override + public int getEnergyConsumption() { + return 10; + } + + }.registerChargeableBlock(true, 256); + + new ReactorAccessPort(Categories.ELECTRICITY, SlimefunItems.REACTOR_ACCESS_PORT, "REACTOR_ACCESS_PORT", RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {null, SlimefunItems.BLISTERING_INGOT_3, null, SlimefunItems.LEAD_INGOT, SlimefunItems.CARGO_MOTOR, SlimefunItems.LEAD_INGOT, null, SlimefunItems.ELECTRIC_MOTOR, null}) + .register(true); + + new FluidPump(Categories.ELECTRICITY, SlimefunItems.FLUID_PUMP, "FLUID_PUMP", RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {null, SlimefunItems.MEDIUM_CAPACITOR, null, new ItemStack(Material.BUCKET), SlimefunItems.CARGO_MOTOR, new ItemStack(Material.BUCKET), null, SlimefunItems.OIL_PUMP, null}) + .registerChargeableBlock(true, 512); + + + new TrashCan(Categories.CARGO, SlimefunItems.TRASH_CAN, "TRASH_CAN_BLOCK", RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {null, SlimefunItems.PORTABLE_DUSTBIN, null, SlimefunItems.LEAD_INGOT, SlimefunItems.CARGO_MOTOR, SlimefunItems.LEAD_INGOT, SlimefunItems.ALUMINUM_INGOT, SlimefunItems.LEAD_INGOT, SlimefunItems.ALUMINUM_INGOT}) + .register(true); + + new CarbonPress(Categories.ELECTRICITY, SlimefunItems.CARBON_PRESS, "CARBON_PRESS", RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {SlimefunItems.CARBON, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.CARBON, SlimefunItems.CARBON, SlimefunItems.HEATED_PRESSURE_CHAMBER, SlimefunItems.CARBON, SlimefunItems.HEATING_COIL, SlimefunItems.CARBONADO, SlimefunItems.HEATING_COIL}) { + + @Override + public int getEnergyConsumption() { + return 10; + } + + @Override + public int getSpeed() { + return 1; + } + + }.registerChargeableBlock(true, 256); + + new CarbonPress(Categories.ELECTRICITY, SlimefunItems.CARBON_PRESS_2, "CARBON_PRESS_2", RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {SlimefunItems.CARBONADO, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.CARBONADO, SlimefunItems.CARBON, SlimefunItems.CARBON_PRESS, SlimefunItems.CARBON, SlimefunItems.HEATING_COIL, SlimefunItems.ELECTRO_MAGNET, SlimefunItems.HEATING_COIL}) { + + @Override + public int getEnergyConsumption() { + return 25; + } + + @Override + public int getSpeed() { + return 3; + } + + }.registerChargeableBlock(true, 512); + + new CarbonPress(Categories.ELECTRICITY, SlimefunItems.CARBON_PRESS_3, "CARBON_PRESS_3", RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {SlimefunItems.CARBONADO, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.CARBONADO, SlimefunItems.REINFORCED_ALLOY_INGOT, SlimefunItems.CARBON_PRESS_2, SlimefunItems.REINFORCED_ALLOY_INGOT, SlimefunItems.HEATING_COIL, SlimefunItems.ELECTRO_MAGNET, SlimefunItems.HEATING_COIL}) { + + @Override + public int getEnergyConsumption() { + return 90; + } + + @Override + public int getSpeed() { + return 15; + } + + }.registerChargeableBlock(true, 512); + + new ElectricSmeltery(Categories.ELECTRICITY, SlimefunItems.ELECTRIC_SMELTERY, "ELECTRIC_SMELTERY", RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {new ItemStack(Material.NETHER_BRICKS), SlimefunItems.ELECTRIC_MOTOR, new ItemStack(Material.NETHER_BRICKS), SlimefunItems.HEATING_COIL, SlimefunItems.ELECTRIC_INGOT_FACTORY, SlimefunItems.HEATING_COIL, SlimefunItems.GILDED_IRON, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.GILDED_IRON}) { + + @Override + public int getEnergyConsumption() { + return 10; + } + + @Override + public int getSpeed() { + return 1; + } + + }.registerChargeableBlock(true, 512); + + new ElectricSmeltery(Categories.ELECTRICITY, SlimefunItems.ELECTRIC_SMELTERY_2, "ELECTRIC_SMELTERY_2", RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.POWER_CRYSTAL, SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.HEATING_COIL, SlimefunItems.ELECTRIC_SMELTERY, SlimefunItems.HEATING_COIL, SlimefunItems.GILDED_IRON, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.GILDED_IRON}) { + + @Override + public int getEnergyConsumption() { + return 20; + } + + @Override + public int getSpeed() { + return 3; + } + + }.registerChargeableBlock(true, 1024); + + new WitherAssembler(Categories.ELECTRICITY, SlimefunItems.WITHER_ASSEMBLER, "WITHER_ASSEMBLER", RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {SlimefunItems.BLISTERING_INGOT_3, new ItemStack(Material.NETHER_STAR), SlimefunItems.BLISTERING_INGOT_3, SlimefunItems.WITHER_PROOF_OBSIDIAN, SlimefunItems.ANDROID_MEMORY_CORE, SlimefunItems.WITHER_PROOF_OBSIDIAN, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.REINFORCED_ALLOY_INGOT, SlimefunItems.CARBONADO_EDGED_CAPACITOR}) + .registerChargeableBlock(true, 4096); + + } + + public static void registerPostHandler(PostSlimefunLoadingHandler handler) { + SlimefunPlugin.getUtilities().postHandlers.add(handler); + } + +} diff --git a/src/me/mrCookieSlime/Slimefun/SlimefunGuide.java b/src/main/java/me/mrCookieSlime/Slimefun/SlimefunGuide.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/SlimefunGuide.java rename to src/main/java/me/mrCookieSlime/Slimefun/SlimefunGuide.java diff --git a/src/me/mrCookieSlime/Slimefun/SlimefunPlugin.java b/src/main/java/me/mrCookieSlime/Slimefun/SlimefunPlugin.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/SlimefunPlugin.java rename to src/main/java/me/mrCookieSlime/Slimefun/SlimefunPlugin.java diff --git a/src/me/mrCookieSlime/Slimefun/ancient_altar/AltarRecipe.java b/src/main/java/me/mrCookieSlime/Slimefun/ancient_altar/AltarRecipe.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/ancient_altar/AltarRecipe.java rename to src/main/java/me/mrCookieSlime/Slimefun/ancient_altar/AltarRecipe.java diff --git a/src/me/mrCookieSlime/Slimefun/ancient_altar/AncientAltarListener.java b/src/main/java/me/mrCookieSlime/Slimefun/ancient_altar/AncientAltarListener.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/ancient_altar/AncientAltarListener.java rename to src/main/java/me/mrCookieSlime/Slimefun/ancient_altar/AncientAltarListener.java diff --git a/src/me/mrCookieSlime/Slimefun/ancient_altar/Pedestals.java b/src/main/java/me/mrCookieSlime/Slimefun/ancient_altar/Pedestals.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/ancient_altar/Pedestals.java rename to src/main/java/me/mrCookieSlime/Slimefun/ancient_altar/Pedestals.java diff --git a/src/me/mrCookieSlime/Slimefun/ancient_altar/RitualAnimation.java b/src/main/java/me/mrCookieSlime/Slimefun/ancient_altar/RitualAnimation.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/ancient_altar/RitualAnimation.java rename to src/main/java/me/mrCookieSlime/Slimefun/ancient_altar/RitualAnimation.java diff --git a/src/me/mrCookieSlime/Slimefun/androids/AndroidObject.java b/src/main/java/me/mrCookieSlime/Slimefun/androids/AndroidObject.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/androids/AndroidObject.java rename to src/main/java/me/mrCookieSlime/Slimefun/androids/AndroidObject.java diff --git a/src/me/mrCookieSlime/Slimefun/androids/AndroidType.java b/src/main/java/me/mrCookieSlime/Slimefun/androids/AndroidType.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/androids/AndroidType.java rename to src/main/java/me/mrCookieSlime/Slimefun/androids/AndroidType.java diff --git a/src/me/mrCookieSlime/Slimefun/androids/ProgrammableAndroid.java b/src/main/java/me/mrCookieSlime/Slimefun/androids/ProgrammableAndroid.java similarity index 97% rename from src/me/mrCookieSlime/Slimefun/androids/ProgrammableAndroid.java rename to src/main/java/me/mrCookieSlime/Slimefun/androids/ProgrammableAndroid.java index 1e52fa2bc..1af022d03 100644 --- a/src/me/mrCookieSlime/Slimefun/androids/ProgrammableAndroid.java +++ b/src/main/java/me/mrCookieSlime/Slimefun/androids/ProgrammableAndroid.java @@ -1,1067 +1,1067 @@ -package me.mrCookieSlime.Slimefun.androids; - -import java.io.File; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collection; -import java.util.Collections; -import java.util.HashSet; -import java.util.List; -import java.util.Optional; -import java.util.Random; -import java.util.Set; -import java.util.UUID; -import java.util.function.Predicate; -import java.util.logging.Level; - -import org.bukkit.Bukkit; -import org.bukkit.ChatColor; -import org.bukkit.Effect; -import org.bukkit.Material; -import org.bukkit.OfflinePlayer; -import org.bukkit.Sound; -import org.bukkit.Tag; -import org.bukkit.block.Block; -import org.bukkit.block.BlockFace; -import org.bukkit.block.Dispenser; -import org.bukkit.block.Skull; -import org.bukkit.block.data.Ageable; -import org.bukkit.block.data.Rotatable; -import org.bukkit.entity.Animals; -import org.bukkit.entity.ArmorStand; -import org.bukkit.entity.Entity; -import org.bukkit.entity.LivingEntity; -import org.bukkit.entity.Monster; -import org.bukkit.entity.Player; -import org.bukkit.event.inventory.InventoryClickEvent; -import org.bukkit.inventory.ItemStack; -import org.bukkit.metadata.FixedMetadataValue; - -import io.github.thebusybiscuit.cscorelib2.blocks.Vein; -import io.github.thebusybiscuit.cscorelib2.chat.ChatInput; -import io.github.thebusybiscuit.cscorelib2.materials.MaterialCollections; -import io.github.thebusybiscuit.cscorelib2.materials.MaterialConverter; -import io.github.thebusybiscuit.cscorelib2.protection.ProtectableAction; -import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config; -import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.ChestMenu; -import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.ChestMenu.AdvancedMenuClickHandler; -import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.ClickAction; -import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.InvUtils; -import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem; -import me.mrCookieSlime.CSCoreLibPlugin.general.World.CustomSkull; -import me.mrCookieSlime.ExoticGarden.ExoticGarden; -import me.mrCookieSlime.Slimefun.SlimefunPlugin; -import me.mrCookieSlime.Slimefun.Lists.RecipeType; -import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; -import me.mrCookieSlime.Slimefun.Objects.Category; -import me.mrCookieSlime.Slimefun.Objects.SlimefunBlockHandler; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineFuel; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.InventoryBlock; -import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker; -import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; -import me.mrCookieSlime.Slimefun.androids.comparators.ScriptReputationSorter; -import me.mrCookieSlime.Slimefun.api.BlockStorage; -import me.mrCookieSlime.Slimefun.api.Slimefun; -import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu; -import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset; -import me.mrCookieSlime.Slimefun.api.item_transport.ItemTransportFlow; - -public abstract class ProgrammableAndroid extends SlimefunItem implements InventoryBlock { - - private static final int[] border = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 18, 24, 25, 26, 27, 33, 35, 36, 42, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53}; - private static final int[] border_out = {10, 11, 12, 13, 14, 19, 23, 28, 32, 37, 38, 39, 40, 41}; - - private static final ItemStack[] fish = new ItemStack[] {new ItemStack(Material.COD), new ItemStack(Material.SALMON), new ItemStack(Material.PUFFERFISH), new ItemStack(Material.TROPICAL_FISH), new ItemStack(Material.STRING), new ItemStack(Material.BONE), new ItemStack(Material.STICK)}; - - private static final List directions = Arrays.asList(BlockFace.NORTH, BlockFace.EAST, BlockFace.SOUTH, BlockFace.WEST); - private static final List blockblacklist = new ArrayList<>(); - - - static { - blockblacklist.add(Material.BEDROCK); - blockblacklist.add(Material.BARRIER); - blockblacklist.add(Material.END_PORTAL_FRAME); - blockblacklist.add(Material.END_PORTAL); - blockblacklist.add(Material.NETHER_PORTAL); - blockblacklist.add(Material.COMMAND_BLOCK); - blockblacklist.add(Material.CHAIN_COMMAND_BLOCK); - blockblacklist.add(Material.REPEATING_COMMAND_BLOCK); - blockblacklist.add(Material.STRUCTURE_BLOCK); - } - - private final Set recipes = new HashSet<>(); - private final Random random = new Random(); - - @Override - public int[] getInputSlots() { - return new int[0]; - } - - @Override - public int[] getOutputSlots() { - return new int[] {20, 21, 22, 29, 30, 31}; - } - - public abstract AndroidType getAndroidType(); - public abstract float getFuelEfficiency(); - public abstract int getTier(); - - public ProgrammableAndroid(Category category, ItemStack item, String name, RecipeType recipeType, ItemStack[] recipe) { - super(category, item, name, recipeType, recipe); - - if (getTier() == 1) { - registerFuel(new MachineFuel(800, new ItemStack(Material.COAL_BLOCK))); - registerFuel(new MachineFuel(45, new ItemStack(Material.BLAZE_ROD))); - - // Coals - for (Material mat: Tag.ITEMS_COALS.getValues()) { - registerFuel(new MachineFuel(8, new ItemStack(mat))); - } - - // Logs - for (Material mat: Tag.LOGS.getValues()) { - registerFuel(new MachineFuel(2, new ItemStack(mat))); - } - - // Wooden Planks - for (Material mat: Tag.PLANKS.getValues()) { - registerFuel(new MachineFuel(1, new ItemStack(mat))); - } - } - else if (getTier() == 2){ - registerFuel(new MachineFuel(100, new ItemStack(Material.LAVA_BUCKET))); - registerFuel(new MachineFuel(200, SlimefunItems.BUCKET_OF_OIL)); - registerFuel(new MachineFuel(500, SlimefunItems.BUCKET_OF_FUEL)); - } - else { - registerFuel(new MachineFuel(2500, SlimefunItems.URANIUM)); - registerFuel(new MachineFuel(1200, SlimefunItems.NEPTUNIUM)); - registerFuel(new MachineFuel(3000, SlimefunItems.BOOSTED_URANIUM)); - } - - new BlockMenuPreset(name, "Programmable Android") { - - @Override - public void init() { - try { - constructMenu(this); - } catch (Exception x) { - Slimefun.getLogger().log(Level.SEVERE, "An Error occured while constructing an Android Inventory for Slimefun " + Slimefun.getVersion(), x); - } - } - - @Override - public boolean canOpen(Block b, Player p) { - boolean open = BlockStorage.getLocationInfo(b.getLocation(), "owner").equals(p.getUniqueId().toString()) || p.hasPermission("slimefun.android.bypass"); - if (!open) { - SlimefunPlugin.getLocal().sendMessage(p, "inventory.no-access", true); - } - return open; - } - - @Override - public void newInstance(BlockMenu menu, final Block b) { - try { - menu.replaceExistingItem(15, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZTAxYzdiNTcyNjE3ODk3NGIzYjNhMDFiNDJhNTkwZTU0MzY2MDI2ZmQ0MzgwOGYyYTc4NzY0ODg0M2E3ZjVhIn19fQ=="), "&aStart/Continue")); - menu.addMenuClickHandler(15, (p, slot, item, action) -> { - SlimefunPlugin.getLocal().sendMessage(p, "robot.started", true); - BlockStorage.addBlockInfo(b, "paused", "false"); - p.closeInventory(); - return false; - }); - - menu.replaceExistingItem(17, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMTYxMzlmZDFjNTY1NGU1NmU5ZTRlMmM4YmU3ZWIyYmQ1YjQ5OWQ2MzM2MTY2NjNmZWVlOTliNzQzNTJhZDY0In19fQ=="), "&4Pause")); - menu.addMenuClickHandler(17, (p, slot, item, action) -> { - BlockStorage.addBlockInfo(b, "paused", "true"); - SlimefunPlugin.getLocal().sendMessage(p, "robot.stopped", true); - return false; - }); - - menu.replaceExistingItem(16, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZDc4ZjJiN2U1ZTc1NjM5ZWE3ZmI3OTZjMzVkMzY0YzRkZjI4YjQyNDNlNjZiNzYyNzdhYWRjZDYyNjEzMzcifX19"), "&bMemory Core", "", "&8\u21E8 &7Click to open the Script Editor")); - menu.addMenuClickHandler(16, (p, slot, item, action) -> { - BlockStorage.addBlockInfo(b, "paused", "true"); - SlimefunPlugin.getLocal().sendMessage(p, "robot.stopped", true); - openScriptEditor(p, b); - return false; - }); - } catch (Exception x) { - Slimefun.getLogger().log(Level.SEVERE, "An Error occured while creating a new Instance of an Android Inventory for Slimefun " + Slimefun.getVersion(), x); - } - } - - @Override - public int[] getSlotsAccessedByItemTransport(ItemTransportFlow flow) { - return new int[0]; - } - }; - - registerBlockHandler(name, new SlimefunBlockHandler() { - - @Override - public void onPlace(Player p, Block b, SlimefunItem item) { - BlockStorage.addBlockInfo(b, "owner", p.getUniqueId().toString()); - BlockStorage.addBlockInfo(b, "script", "START-TURN_LEFT-REPEAT"); - BlockStorage.addBlockInfo(b, "index", "0"); - BlockStorage.addBlockInfo(b, "fuel", "0"); - BlockStorage.addBlockInfo(b, "rotation", p.getFacing().getOppositeFace().toString()); - BlockStorage.addBlockInfo(b, "paused", "true"); - b.setType(Material.PLAYER_HEAD); - Rotatable blockData = (Rotatable) b.getBlockData(); - blockData.setRotation(p.getFacing()); - b.setBlockData(blockData); - } - - @Override - public boolean onBreak(Player p, Block b, SlimefunItem item, UnregisterReason reason) { - boolean allow = reason == UnregisterReason.PLAYER_BREAK && (BlockStorage.getLocationInfo(b.getLocation(), "owner").equals(p.getUniqueId().toString()) || p.hasPermission("slimefun.android.bypass")); - - if (allow) { - BlockMenu inv = BlockStorage.getInventory(b); - if (inv != null) { - if (inv.getItemInSlot(43) != null) { - b.getWorld().dropItemNaturally(b.getLocation(), inv.getItemInSlot(43)); - inv.replaceExistingItem(43, null); - } - for (int slot: getOutputSlots()) { - if (inv.getItemInSlot(slot) != null) { - b.getWorld().dropItemNaturally(b.getLocation(), inv.getItemInSlot(slot)); - inv.replaceExistingItem(slot, null); - } - } - } - } - - return allow; - } - }); - } - - protected void tick(Block b) { - if (!(b.getState() instanceof Skull)) { - // The Android was destroyed or moved. - return; - } - - if (BlockStorage.getLocationInfo(b.getLocation(), "paused").equals("false")) { - BlockMenu menu = BlockStorage.getInventory(b); - float fuel = Float.parseFloat(BlockStorage.getLocationInfo(b.getLocation(), "fuel")); - - if (fuel < 0.001) { - ItemStack item = menu.getItemInSlot(43); - - if (item != null) { - for (MachineFuel recipe: recipes) { - if (SlimefunManager.isItemSimiliar(item, recipe.getInput(), true)) { - menu.replaceExistingItem(43, InvUtils.decreaseItem(item, 1)); - - if (getTier() == 2) { - menu.pushItem(new ItemStack(Material.BUCKET), getOutputSlots()); - } - - BlockStorage.addBlockInfo(b, "fuel", String.valueOf((int) (recipe.getTicks() * this.getFuelEfficiency()))); - break; - } - } - } - } - else { - String[] script = BlockStorage.getLocationInfo(b.getLocation(), "script").split("-"); - int index = Integer.parseInt(BlockStorage.getLocationInfo(b.getLocation(), "index")) + 1; - if (index >= script.length) index = 0; - - boolean refresh = true; - BlockStorage.addBlockInfo(b, "fuel", String.valueOf(fuel - 1)); - ScriptPart part = ScriptPart.valueOf(script[index]); - - if (getAndroidType().isType(part.getRequiredType())) { - BlockFace face = BlockFace.valueOf(BlockStorage.getLocationInfo(b.getLocation(), "rotation")); - double damage = getTier() < 2 ? 20D : 4D * getTier(); - - switch (part) { - case GO_DOWN: - move(b, face, b.getRelative(BlockFace.DOWN)); - break; - case GO_FORWARD: - move(b, face, b.getRelative(face)); - break; - case GO_UP: - move(b, face, b.getRelative(BlockFace.UP)); - break; - case REPEAT: - BlockStorage.addBlockInfo(b, "index", String.valueOf(0)); - break; - case TURN_LEFT: - int indexLeft = directions.indexOf(BlockFace.valueOf(BlockStorage.getLocationInfo(b.getLocation(), "rotation"))) - 1; - if (indexLeft < 0) indexLeft = directions.size() - 1; - Rotatable rotatableLeft = (Rotatable) b.getBlockData(); - rotatableLeft.setRotation(directions.get(indexLeft)); - b.setBlockData(rotatableLeft); - BlockStorage.addBlockInfo(b, "rotation", directions.get(indexLeft).toString()); - break; - case TURN_RIGHT: - int indexRight = directions.indexOf(BlockFace.valueOf(BlockStorage.getLocationInfo(b.getLocation(), "rotation"))) + 1; - if (indexRight == directions.size()) indexRight = 0; - Rotatable rotatableRight = (Rotatable) b.getBlockData(); - rotatableRight.setRotation(directions.get(indexRight)); - b.setBlockData(rotatableRight); - BlockStorage.addBlockInfo(b, "rotation", directions.get(indexRight).toString()); - break; - case DIG_FORWARD: - mine(b, b.getRelative(face)); - break; - case DIG_UP: - mine(b, b.getRelative(BlockFace.UP)); - break; - case DIG_DOWN: - mine(b, b.getRelative(BlockFace.DOWN)); - break; - case CATCH_FISH: - Block water = b.getRelative(BlockFace.DOWN); - if (water.getType() == Material.WATER) { - water.getWorld().playSound(water.getLocation(), Sound.ENTITY_PLAYER_SPLASH, 1F, 1F); - if (random.nextInt(100) < 10 * getTier()) { - ItemStack drop = fish[random.nextInt(fish.length)]; - if (menu.fits(drop, getOutputSlots())) { - menu.pushItem(drop, getOutputSlots()); - } - } - - } - break; - case MOVE_AND_DIG_FORWARD: - movedig(b, face, b.getRelative(face)); - break; - case MOVE_AND_DIG_UP: - movedig(b, face, b.getRelative(BlockFace.UP)); - break; - case MOVE_AND_DIG_DOWN: - movedig(b, face, b.getRelative(BlockFace.DOWN)); - break; - case INTERFACE_ITEMS: - if (BlockStorage.check(b.getRelative(face), "ANDROID_INTERFACE_ITEMS") && b.getRelative(face).getState() instanceof Dispenser) { - Dispenser d = (Dispenser) b.getRelative(face).getState(); - for (int slot: getOutputSlots()) { - ItemStack stack = menu.getItemInSlot(slot); - - if (stack != null) { - Optional optional = d.getInventory().addItem(stack).values().stream().findFirst(); - - if (optional.isPresent()) { - menu.replaceExistingItem(slot, optional.get()); - } - else { - menu.replaceExistingItem(slot, null); - } - } - } - } - break; - case INTERFACE_FUEL: - if (BlockStorage.check(b.getRelative(face), "ANDROID_INTERFACE_FUEL") && b.getRelative(face).getState() instanceof Dispenser) { - Dispenser d = (Dispenser) b.getRelative(face).getState(); - for (int slot = 0; slot < 9; slot++) { - ItemStack item = d.getInventory().getItem(slot); - - if (item != null) { - if (menu.getItemInSlot(43) == null) { - menu.replaceExistingItem(43, item); - d.getInventory().setItem(slot, null); - break; - } - else if (SlimefunManager.isItemSimiliar(item, menu.getItemInSlot(43), true)) { - int rest = item.getType().getMaxStackSize() - menu.getItemInSlot(43).getAmount(); - - if (rest > 0) { - int amt = item.getAmount() > rest ? rest: item.getAmount(); - menu.replaceExistingItem(43, new CustomItem(item, menu.getItemInSlot(43).getAmount() + amt)); - d.getInventory().setItem(slot, InvUtils.decreaseItem(item, amt)); - } - break; - } - } - } - } - break; - case FARM_FORWARD: - farm(b, menu, b.getRelative(face)); - break; - case FARM_DOWN: - farm(b, menu, b.getRelative(BlockFace.DOWN)); - break; - case FARM_EXOTIC_FORWARD: - exoticFarm(b, menu, b.getRelative(face)); - break; - case FARM_EXOTIC_DOWN: - exoticFarm(b, menu, b.getRelative(BlockFace.DOWN)); - break; - case CHOP_TREE: - if (MaterialCollections.getAllLogs().contains(b.getRelative(face).getType())) { - List list = Vein.find(b.getRelative(face), 180, block -> MaterialCollections.getAllLogs().contains(block.getType())); - list.add(0, b.getRelative(face)); - if (!list.isEmpty()) { - refresh = false; - Block log = list.get(list.size() - 1); - log.getWorld().playEffect(log.getLocation(), Effect.STEP_SOUND, log.getType()); - - if (SlimefunPlugin.getProtectionManager().hasPermission(Bukkit.getOfflinePlayer(UUID.fromString(BlockStorage.getLocationInfo(b.getLocation(), "owner"))), log.getLocation(), ProtectableAction.BREAK_BLOCK)) { - ItemStack drop = new ItemStack(log.getType()); - - if (menu.fits(drop, getOutputSlots())) { - menu.pushItem(drop, getOutputSlots()); - log.getWorld().playEffect(log.getLocation(), Effect.STEP_SOUND, log.getType()); - - if (log.getY() == b.getRelative(face).getY()) { - Optional sapling = MaterialConverter.getSaplingFromLog(log.getType()); - if (sapling.isPresent()) { - log.setType(sapling.get()); - } - } - else log.setType(Material.AIR); - } - - } - } - } - break; - case ATTACK_MOBS_ANIMALS: - killEntities(b, damage, e -> true); - break; - case ATTACK_MOBS: - killEntities(b, damage, e -> e instanceof Monster); - break; - case ATTACK_ANIMALS: - killEntities(b, damage, e -> e instanceof Animals); - break; - case ATTACK_ANIMALS_ADULT: - killEntities(b, damage, e -> e instanceof Animals && e instanceof org.bukkit.entity.Ageable && ((org.bukkit.entity.Ageable) e).isAdult()); - break; - default: - break; - } - } - if (refresh) BlockStorage.addBlockInfo(b, "index", String.valueOf(index)); - } - } - } - - private void killEntities(Block b, double damage, Predicate predicate) { - double radius = 4.0 + getTier(); - for (Entity n: b.getWorld().getNearbyEntities(b.getLocation(), radius, radius, radius, n -> n instanceof LivingEntity && !(n instanceof ArmorStand) && !(n instanceof Player) && n.isValid() && predicate.test(n))) { - boolean attack = false; - - switch (BlockFace.valueOf(BlockStorage.getLocationInfo(b.getLocation(), "rotation"))) { - case NORTH: - attack = n.getLocation().getZ() < b.getZ(); - break; - case EAST: - attack = n.getLocation().getX() > b.getX(); - break; - case SOUTH: - attack = n.getLocation().getZ() > b.getZ(); - break; - case WEST: - attack = n.getLocation().getX() < b.getX(); - break; - default: - break; - } - - if (attack) { - if (n.hasMetadata("android_killer")) n.removeMetadata("android_killer", SlimefunPlugin.instance); - n.setMetadata("android_killer", new FixedMetadataValue(SlimefunPlugin.instance, new AndroidObject(this, b))); - - ((LivingEntity) n).damage(damage); - break; - } - } - } - - private void move(Block b, BlockFace face, Block block) { - if (block.getY() > 0 && block.getY() < block.getWorld().getMaxHeight() && (block.getType() == Material.AIR || block.getType() == Material.CAVE_AIR)) { - block.setType(Material.PLAYER_HEAD); - Rotatable blockData = (Rotatable) block.getBlockData(); - blockData.setRotation(face.getOppositeFace()); - block.setBlockData(blockData); - - try { - CustomSkull.setSkull(block, CustomSkull.getTexture(getItem())); - } catch (Exception x) { - Slimefun.getLogger().log(Level.SEVERE, "An Error occured while moving an Android for Slimefun " + Slimefun.getVersion(), x); - } - - b.setType(Material.AIR); - BlockStorage.moveBlockInfo(b.getLocation(), block.getLocation()); - } - } - - private void mine(Block b, Block block) { - Collection drops = block.getDrops(); - if (!blockblacklist.contains(block.getType()) && !drops.isEmpty() && SlimefunPlugin.getProtectionManager().hasPermission(Bukkit.getOfflinePlayer(UUID.fromString(BlockStorage.getLocationInfo(b.getLocation(), "owner"))), block.getLocation(), ProtectableAction.BREAK_BLOCK)) { - String item = BlockStorage.checkID(block); - - if (item == null) { - ItemStack[] items = drops.toArray(new ItemStack[drops.size()]); - if (fits(b, items)) { - pushItems(b, items); - block.getWorld().playEffect(block.getLocation(), Effect.STEP_SOUND, block.getType()); - block.setType(Material.AIR); - } - } - /* - else if (fits(b, item.getItem())) { - if (SlimefunItem.blockhandler.containsKey(item.getID())) { - if (SlimefunItem.blockhandler.get(item.getID()).onBreak(null, block, item, UnregisterReason.ANDROID_DIG)) { - pushItems(b, BlockStorage.retrieve(block)); - if (SlimefunItem.blockhandler.containsKey(item.getID())) SlimefunItem.blockhandler.get(item.getID()).onBreak(null, block, item, UnregisterReason.ANDROID_DIG); - block.getWorld().playEffect(block.getLocation(), Effect.STEP_SOUND, block.getType()); - block.setType(Material.AIR); - } - } - }*/ - } - } - - - private void movedig(Block b, BlockFace face, Block block) { - Collection drops = block.getDrops(); - if (!blockblacklist.contains(block.getType()) && !drops.isEmpty() && SlimefunPlugin.getProtectionManager().hasPermission(Bukkit.getOfflinePlayer(UUID.fromString(BlockStorage.getLocationInfo(b.getLocation(), "owner"))), block.getLocation(), ProtectableAction.BREAK_BLOCK)) { - SlimefunItem item = BlockStorage.check(block); - if (item == null) { - ItemStack[] items = drops.toArray(new ItemStack[drops.size()]); - if (fits(b, items)) { - pushItems(b, items); - block.getWorld().playEffect(block.getLocation(), Effect.STEP_SOUND, block.getType()); - - block.setType(Material.AIR); - move(b, face, block); - - b.setType(Material.AIR); - BlockStorage.moveBlockInfo(b.getLocation(), block.getLocation()); - } - - } - /* - else { - if (fits(b, item.getItem()) && SlimefunPlugin.getUtilities().blockHandlers.containsKey(item.getID()) && SlimefunPlugin.getUtilities().blockHandlers.get(item.getID()).onBreak(null, block, item, UnregisterReason.ANDROID_DIG)) { - pushItems(b, BlockStorage.retrieve(block)); - block.getWorld().playEffect(block.getLocation(), Effect.STEP_SOUND, block.getType()); - - block.setType(Material.AIR); - move(b, face, block); - - b.setType(Material.AIR); - BlockStorage.moveBlockInfo(b.getLocation(), block.getLocation()); - } - }*/ - } - else { - move(b, face, block); - } - } - - private boolean isFullGrown(Block block){ - if (!(block.getBlockData() instanceof Ageable)) return false; - Ageable ageable = ((Ageable) block.getBlockData()); - return ageable.getAge() >= ageable.getMaximumAge(); - } - - private void farm(Block b, BlockMenu menu, Block block) { - if (isFullGrown(block)) { - ItemStack drop = null; - switch (block.getType()) { - case WHEAT: - drop = new ItemStack(Material.WHEAT, random.nextInt(2) + 1); - break; - case POTATOES: - drop = new ItemStack(Material.POTATO, random.nextInt(3) + 1); - break; - case CARROTS: - drop = new ItemStack(Material.CARROT, random.nextInt(3) + 1); - break; - case BEETROOTS: - drop = new ItemStack(Material.BEETROOT, random.nextInt(3) + 1); - break; - case COCOA: - drop = new ItemStack(Material.COCOA_BEANS, random.nextInt(3) + 1); - break; - case NETHER_WART: - drop = new ItemStack(Material.NETHER_WART, random.nextInt(3) + 1); - break; - case SWEET_BERRY_BUSH: - drop = new ItemStack(Material.SWEET_BERRIES, random.nextInt(3) + 1); - break; - default: - break; - } - - if (drop != null && menu.fits(drop, getOutputSlots())) { - menu.pushItem(drop, getOutputSlots()); - Ageable ageable = (Ageable) block.getBlockData(); - ageable.setAge(0); - block.setBlockData(ageable); - block.getWorld().playEffect(block.getLocation(), Effect.STEP_SOUND, block.getType()); - } - } - } - - private void exoticFarm(Block b, BlockMenu menu, Block block) { - farm(b, menu, block); - if (SlimefunPlugin.getHooks().isExoticGardenInstalled()) { - ItemStack drop = ExoticGarden.harvestPlant(block); - if (drop != null && menu.fits(drop, getOutputSlots())) { - menu.pushItem(drop, getOutputSlots()); - block.getWorld().playEffect(block.getLocation(), Effect.STEP_SOUND, block.getType()); - } - } - } - - private void constructMenu(BlockMenuPreset preset) throws Exception { - for (int i : border) { - preset.addItem(i, new CustomItem(new ItemStack(Material.GRAY_STAINED_GLASS_PANE), " "), (p, slot, item, action) -> false); - } - for (int i : border_out) { - preset.addItem(i, new CustomItem(new ItemStack(Material.ORANGE_STAINED_GLASS_PANE), " "), (p, slot, item, action) -> false); - } - - for (int i : getOutputSlots()) { - preset.addMenuClickHandler(i, new AdvancedMenuClickHandler() { - - @Override - public boolean onClick(Player p, int slot, ItemStack cursor, ClickAction action) { - return false; - } - - @Override - public boolean onClick(InventoryClickEvent e, Player p, int slot, ItemStack cursor, ClickAction action) { - return cursor == null || cursor.getType() == null || cursor.getType() == Material.AIR; - } - }); - } - - if (getTier() == 1) { - preset.addItem(34, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTM0M2NlNThkYTU0Yzc5OTI0YTJjOTMzMWNmYzQxN2ZlOGNjYmJlYTliZTQ1YTdhYzg1ODYwYTZjNzMwIn19fQ=="), "&8\u21E9 &cFuel Input &8\u21E9", "", "&rThis Android runs on solid Fuel", "&re.g. Coal, Wood, etc..."), (p, slot, item, action) -> false); - } - else if (getTier() == 2){ - preset.addItem(34, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTM0M2NlNThkYTU0Yzc5OTI0YTJjOTMzMWNmYzQxN2ZlOGNjYmJlYTliZTQ1YTdhYzg1ODYwYTZjNzMwIn19fQ=="), "&8\u21E9 &cFuel Input &8\u21E9", "", "&rThis Android runs on liquid Fuel", "&re.g. Lava, Oil, Fuel, etc..."), (p, slot, item, action) -> false); - } - else { - preset.addItem(34, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTM0M2NlNThkYTU0Yzc5OTI0YTJjOTMzMWNmYzQxN2ZlOGNjYmJlYTliZTQ1YTdhYzg1ODYwYTZjNzMwIn19fQ=="), "&8\u21E9 &cFuel Input &8\u21E9", "", "&rThis Android runs on radioactive Fuel", "&re.g. Uranium, Neptunium or Boosted Uranium"), (p, slot, item, action) -> false); - } - } - - public void openScriptEditor(Player p, final Block b) { - ChestMenu menu = new ChestMenu("&eScript Editor"); - - try { - menu.addItem(1, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZDliZjZkYjRhZWRhOWQ4ODIyYjlmNzM2NTM4ZThjMThiOWE0ODQ0Zjg0ZWI0NTUwNGFkZmJmZWU4N2ViIn19fQ=="), "&2> Edit Script", "", "&aEdits your current Script")); - menu.addMenuClickHandler(1, (pl, slot, item, action) -> { - openScript(pl, b, BlockStorage.getLocationInfo(b.getLocation(), "script")); - return false; - }); - - menu.addItem(3, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMTcxZDg5NzljMTg3OGEwNTk4N2E3ZmFmMjFiNTZkMWI3NDRmOWQwNjhjNzRjZmZjZGUxZWExZWRhZDU4NTIifX19"), "&4> Create new Script", "", "&cDeletes your current Script", "&cand creates a blank one")); - menu.addMenuClickHandler(3, (pl, slot, item, action) -> { - openScript(pl, b, "START-TURN_LEFT-REPEAT"); - return false; - }); - - menu.addItem(5, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYzAxNTg2ZTM5ZjZmZmE2M2I0ZmIzMDFiNjVjYTdkYThhOTJmNzM1M2FhYWI4OWQzODg2NTc5MTI1ZGZiYWY5In19fQ=="), "&6> Download a Script", "", "&eDownload a Script from the Server", "&eYou can edit or simply use it")); - menu.addMenuClickHandler(5, (pl, slot, item, action) -> { - openScriptDownloader(pl, b, 1); - return false; - }); - - menu.addItem(8, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYTE4NWM5N2RiYjgzNTNkZTY1MjY5OGQyNGI2NDMyN2I3OTNhM2YzMmE5OGJlNjdiNzE5ZmJlZGFiMzVlIn19fQ=="), "&6> Back", "", "&7Return to the Android's interface")); - menu.addMenuClickHandler(8, (pl, slot, item, action) -> { - BlockStorage.getInventory(b).open(p); - return false; - }); - } - catch (Exception x) { - Slimefun.getLogger().log(Level.SEVERE, "An Error occured while creating the Script Editor for Slimefun " + Slimefun.getVersion(), x); - } - - menu.open(p); - } - - public void openScript(final Player p, final Block b, final String script) { - ChestMenu menu = new ChestMenu("&eScript Editor"); - final String[] commands = script.split("-"); - - menu.addItem(0, new CustomItem(ScriptPart.START.toItemStack(), ScriptPart.START.toItemStack().getItemMeta().getDisplayName(), "", "&7\u21E8 &eLeft Click &7to return to the Android's interface")); - menu.addMenuClickHandler(0, (pl, slot, item, action) -> { - BlockStorage.getInventory(b).open(pl); - return false; - }); - - for (int i = 1; i < commands.length; i++) { - final int index = i; - - if (i == commands.length - 1) { - int additional = commands.length == 54 ? 0: 1; - - if (additional == 1) { - try { - menu.addItem(i, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMTcxZDg5NzljMTg3OGEwNTk4N2E3ZmFmMjFiNTZkMWI3NDRmOWQwNjhjNzRjZmZjZGUxZWExZWRhZDU4NTIifX19"), "&7> Add new Command")); - menu.addMenuClickHandler(i, (pl, slot, item, action) -> { - openScriptComponentEditor(pl, b, script, index); - return false; - }); - } - catch (Exception x) { - Slimefun.getLogger().log(Level.SEVERE, "An Error occured while creating the Script Editor for Slimefun " + Slimefun.getVersion(), x); - } - } - - menu.addItem(i + additional, new CustomItem(ScriptPart.REPEAT.toItemStack(), ScriptPart.REPEAT.toItemStack().getItemMeta().getDisplayName(), "", "&7\u21E8 &eLeft Click &7to return to the Android's interface")); - menu.addMenuClickHandler(i + additional, (pl, slot, item, action) -> { - BlockStorage.getInventory(b).open(pl); - return false; - }); - } - else { - ItemStack stack = ScriptPart.valueOf(commands[i]).toItemStack(); - menu.addItem(i, new CustomItem(stack, stack.getItemMeta().getDisplayName(), "", "&7\u21E8 &eLeft Click &7to edit", "&7\u21E8 &eRight Click &7to delete", "&7\u21E8 &eShift + Right Click &7to duplicate")); - menu.addMenuClickHandler(i, (pl, slot, item, action) -> { - if (action.isRightClicked() && action.isShiftClicked()) { - if (commands.length == 54) return false; - - int j = 0; - StringBuilder builder = new StringBuilder("START-"); - for (String command : commands) { - if (j > 0) { - if (j == index) { - builder.append(commands[j] + "-"); - builder.append(commands[j] + "-"); - } - else if (j < commands.length - 1) builder.append(command + "-"); - } - j++; - } - builder.append("REPEAT"); - BlockStorage.addBlockInfo(b, "script", builder.toString()); - - openScript(pl, b, builder.toString()); - } - else if (action.isRightClicked()) { - int j = 0; - StringBuilder builder = new StringBuilder("START-"); - for (String command : commands) { - if (j != index && j > 0 && j < commands.length - 1) builder.append(command + "-"); - j++; - } - builder.append("REPEAT"); - BlockStorage.addBlockInfo(b, "script", builder.toString()); - - openScript(pl, b, builder.toString()); - } - else { - openScriptComponentEditor(pl, b, script, index); - } - return false; - }); - } - } - - menu.open(p); - } - - private void openScriptDownloader(final Player p, final Block b, final int page) { - final ChestMenu menu = new ChestMenu("Android Scripts"); - - menu.addMenuOpeningHandler(pl -> pl.playSound(pl.getLocation(), Sound.BLOCK_NOTE_BLOCK_HAT, 0.7F, 0.7F)); - - List scripts = getUploadedScripts(); - - int index = 0; - final int pages = (scripts.size() / 45) + 1; - - for (int i = 45; i < 54; i++) { - menu.addItem(i, new CustomItem(new ItemStack(Material.GRAY_STAINED_GLASS_PANE), " ")); - menu.addMenuClickHandler(i, (pl, slot, item, action) -> false); - } - - menu.addItem(46, new CustomItem(new ItemStack(Material.LIME_STAINED_GLASS_PANE), "&r\u21E6 Previous Page", "", "&7(" + page + " / " + pages + ")")); - menu.addMenuClickHandler(46, (pl, slot, item, action) -> { - int next = page - 1; - if (next < 1) next = pages; - if (next != page) { - openScriptDownloader(pl, b, next); - } - return false; - }); - - try { - menu.addItem(48, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMTA1YTJjYWI4YjY4ZWE1N2UzYWY5OTJhMzZlNDdjOGZmOWFhODdjYzg3NzYyODE5NjZmOGMzY2YzMWEzOCJ9fX0="), "&eUpload a Script", "", "&6Click &7to upload your Android's Script", "&7to the Database")); - menu.addMenuClickHandler(48, (pl, slot, item, action) -> { - final String code = BlockStorage.getLocationInfo(b.getLocation(), "script"); - int num = 1; - - for (Config script: getUploadedScripts()) { - if (script.getString("author").equals(pl.getUniqueId().toString())) num++; - if (script.getString("code").equals(code)) { - SlimefunPlugin.getLocal().sendMessage(pl, "android.scripts.already-uploaded", true); - return false; - } - } - - final int id = num; - - pl.closeInventory(); - SlimefunPlugin.getLocal().sendMessages(pl, "android.scripts.enter-name"); - - ChatInput.waitForPlayer(SlimefunPlugin.instance, pl, message -> { - Config script = new Config("plugins/Slimefun/scripts/" + getAndroidType().toString() + '/' + p.getName() + ' ' + id + ".sfs"); - - script.setValue("author", pl.getUniqueId().toString()); - script.setValue("author_name", pl.getName()); - script.setValue("name", ChatColor.stripColor(ChatColor.translateAlternateColorCodes('&', message))); - script.setValue("code", code); - script.setValue("downloads", 0); - script.setValue("android", getAndroidType().toString()); - script.setValue("rating.positive", new ArrayList()); - script.setValue("rating.negative", new ArrayList()); - script.save(); - - SlimefunPlugin.getLocal().sendMessages(pl, "android.scripts.uploaded"); - openScriptDownloader(pl, b, page); - }); - return false; - }); - - menu.addItem(50, new CustomItem(new ItemStack(Material.LIME_STAINED_GLASS_PANE), "&rNext Page \u21E8", "", "&7(" + page + " / " + pages + ")")); - menu.addMenuClickHandler(50, (pl, slot, item, action) -> { - int next = page + 1; - if (next > pages) next = 1; - if (next != page) { - openScriptDownloader(pl, b, next); - } - return false; - }); - - menu.addItem(53, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYTE4NWM5N2RiYjgzNTNkZTY1MjY5OGQyNGI2NDMyN2I3OTNhM2YzMmE5OGJlNjdiNzE5ZmJlZGFiMzVlIn19fQ=="), "&6> Back", "", "&7Return to the Android's interface")); - menu.addMenuClickHandler(53, (pl, slot, item, action) -> { - openScriptEditor(pl, b); - return false; - }); - } - catch (Exception x) { - Slimefun.getLogger().log(Level.SEVERE, "An Error occured while creating the Script Download Menu for Slimefun " + Slimefun.getVersion(), x); - } - - int categoryIndex = 45 * (page - 1); - - for (int i = 0; i < 45; i++) { - int target = categoryIndex + i; - if (target >= scripts.size()) break; - else { - final Config script = scripts.get(target); - - OfflinePlayer op = Bukkit.getOfflinePlayer(script.getUUID("author")); - String author = (op != null && op.getName() != null) ? op.getName(): script.getString("author_name"); - - if (script.getString("author").equals(p.getUniqueId().toString())) { - menu.addItem(index, new CustomItem(this.getItem(), "&b" + script.getString("name"), "&7by &r" + author, "", "&7Downloads: &r" + script.getInt("downloads"), "&7Rating: " + getScriptRatingPercentage(script), "&a" + getScriptRating(script, true) + " \u263A &7- &4\u2639 " + getScriptRating(script, false), "", "&eLeft Click &rto download this Script", "&4(This will override your current Script)")); - } - else { - menu.addItem(index, new CustomItem(this.getItem(), "&b" + script.getString("name"), "&7by &r" + author, "", "&7Downloads: &r" + script.getInt("downloads"), "&7Rating: " + getScriptRatingPercentage(script), "&a" + getScriptRating(script, true) + " \u263A &7- &4\u2639 " + getScriptRating(script, false), "", "&eLeft Click &rto download this Script", "&4(This will override your current Script)", "&eShift + Left Click &rto leave a positive Rating", "&eShift + Right Click &rto leave a negative Rating")); - } - - menu.addMenuClickHandler(index, (pl, slot, item, action) -> { - Config script2 = new Config(script.getFile()); - - if (action.isShiftClicked()) { - if (script2.getString("author").equals(pl.getUniqueId().toString())) { - SlimefunPlugin.getLocal().sendMessage(pl, "android.scripts.rating.own", true); - } - else if (action.isRightClicked()) { - if (!script2.getStringList("rating.negative").contains(pl.getUniqueId().toString()) && !script2.getStringList("rating.positive").contains(pl.getUniqueId().toString())) { - List list = script2.getStringList("rating.negative"); - list.add(p.getUniqueId().toString()); - - script2.setValue("rating.negative", list); - script2.save(); - - openScriptDownloader(pl, b, page); - } - else { - SlimefunPlugin.getLocal().sendMessage(pl, "android.scripts.rating.already", true); - } - } - else { - if (!script2.getStringList("rating.negative").contains(pl.getUniqueId().toString()) && !script2.getStringList("rating.positive").contains(pl.getUniqueId().toString())) { - List list = script2.getStringList("rating.positive"); - list.add(pl.getUniqueId().toString()); - - script2.setValue("rating.positive", list); - script2.save(); - - openScriptDownloader(pl, b, page); - } - else { - SlimefunPlugin.getLocal().sendMessage(pl, "android.scripts.rating.already", true); - } - } - } - else if (!action.isRightClicked()) { - script2.setValue("downloads", script2.getInt("downloads") + 1); - script2.save(); - - BlockStorage.addBlockInfo(b, "script", script2.getString("code")); - openScriptEditor(pl, b); - } - return false; - }); - - index++; - } - } - - menu.open(p); - } - - public float getScriptRating(Config script) { - int positive = getScriptRating(script, true) + 1; - int negative = getScriptRating(script, false); - return Math.round((positive / (double) (positive + negative)) * 100.0F) / 100.0F; - } - - private int getScriptRating(Config script, boolean positive) { - if (positive) return script.getStringList("rating.positive").size(); - else return script.getStringList("rating.negative").size(); - } - - private String getScriptRatingPercentage(Config script) { - String progress = String.valueOf(getScriptRating(script)); - if (Float.parseFloat(progress) < 16.0F) progress = "&4" + progress + "&r% "; - else if (Float.parseFloat(progress) < 32.0F) progress = "&c" + progress + "&r% "; - else if (Float.parseFloat(progress) < 48.0F) progress = "&6" + progress + "&r% "; - else if (Float.parseFloat(progress) < 64.0F) progress = "&e" + progress + "&r% "; - else if (Float.parseFloat(progress) < 80.0F) progress = "&2" + progress + "&r% "; - else progress = "&a" + progress + "&r% "; - - return progress; - } - - protected void openScriptComponentEditor(Player p, final Block b, final String script, final int index) { - ChestMenu menu = new ChestMenu("&eScript Editor"); - - final String[] commands = script.split("-"); - - for (int i = 0; i < 9; i++) { - menu.addItem(i, new CustomItem(new ItemStack(Material.GRAY_STAINED_GLASS_PANE), " "), (pl, slot, item, action) -> false); - } - - try { - menu.addItem(9, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMTYxMzlmZDFjNTY1NGU1NmU5ZTRlMmM4YmU3ZWIyYmQ1YjQ5OWQ2MzM2MTY2NjNmZWVlOTliNzQzNTJhZDY0In19fQ=="), "&rDo nothing"), (pl, slot, item, action) -> { - int i = 0; - StringBuilder builder = new StringBuilder("START-"); - - for (String command : commands) { - if (i != index && i > 0 && i < commands.length - 1) builder.append(command + "-"); - i++; - } - - builder.append("REPEAT"); - BlockStorage.addBlockInfo(b, "script", builder.toString()); - - openScript(p, b, builder.toString()); - return false; - }); - } - catch (Exception x) { - Slimefun.getLogger().log(Level.SEVERE, "An Error occured while creating the Script Editor for Slimefun " + Slimefun.getVersion(), x); - } - - int i = 10; - for (final ScriptPart part : getAccessibleScriptParts()) { - menu.addItem(i, part.toItemStack()); - menu.addMenuClickHandler(i, (pl, slot, item, action) -> { - int j = 0; - StringBuilder builder = new StringBuilder("START-"); - - for (String command : commands) { - if (j > 0) { - if (j == index) builder.append(part.toString() + "-"); - else if (j < commands.length - 1) builder.append(command + "-"); - } - j++; - } - - builder.append("REPEAT"); - BlockStorage.addBlockInfo(b, "script", builder.toString()); - - openScript(pl, b, builder.toString()); - return false; - }); - i++; - } - - menu.open(p); - } - - public void addItems(Block b, ItemStack... items) { - this.pushItems(b, items); - } - - @Override - public void register(boolean slimefun) { - addItemHandler(new BlockTicker() { - - @Override - public void tick(Block b, SlimefunItem sf, Config data) { - if (b != null) ProgrammableAndroid.this.tick(b); - } - - @Override - public boolean isSynchronized() { - return true; - } - }); - - super.register(slimefun); - } - - public void registerFuel(MachineFuel fuel) { - this.recipes.add(fuel); - } - - public List getUploadedScripts() { - List scripts = new ArrayList<>(); - - File directory = new File("plugins/Slimefun/scripts/" + this.getAndroidType().toString()); - if (!directory.exists()) directory.mkdirs(); - - for (File script : directory.listFiles()) { - if (script.getName().endsWith("sfs")) scripts.add(new Config(script)); - } - - if (this.getAndroidType() != AndroidType.NONE) { - File directory2 = new File("plugins/Slimefun/scripts/NONE"); - if (!directory2.exists()) directory2.mkdirs(); - - for (File script : directory2.listFiles()) { - if (script.getName().endsWith("sfs")) scripts.add(new Config(script)); - } - } - - Collections.sort(scripts, new ScriptReputationSorter(this)); - - return scripts; - } - - public List getAccessibleScriptParts() { - List list = new ArrayList<>(); - - for (final ScriptPart part : ScriptPart.values()) { - if (part != ScriptPart.START && part != ScriptPart.REPEAT && getAndroidType().isType(part.getRequiredType())) { - list.add(part); - } - } - - return list; - } - -} +package me.mrCookieSlime.Slimefun.androids; + +import java.io.File; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; +import java.util.HashSet; +import java.util.List; +import java.util.Optional; +import java.util.Random; +import java.util.Set; +import java.util.UUID; +import java.util.function.Predicate; +import java.util.logging.Level; + +import org.bukkit.Bukkit; +import org.bukkit.ChatColor; +import org.bukkit.Effect; +import org.bukkit.Material; +import org.bukkit.OfflinePlayer; +import org.bukkit.Sound; +import org.bukkit.Tag; +import org.bukkit.block.Block; +import org.bukkit.block.BlockFace; +import org.bukkit.block.Dispenser; +import org.bukkit.block.Skull; +import org.bukkit.block.data.Ageable; +import org.bukkit.block.data.Rotatable; +import org.bukkit.entity.Animals; +import org.bukkit.entity.ArmorStand; +import org.bukkit.entity.Entity; +import org.bukkit.entity.LivingEntity; +import org.bukkit.entity.Monster; +import org.bukkit.entity.Player; +import org.bukkit.event.inventory.InventoryClickEvent; +import org.bukkit.inventory.ItemStack; +import org.bukkit.metadata.FixedMetadataValue; + +import io.github.thebusybiscuit.cscorelib2.blocks.Vein; +import io.github.thebusybiscuit.cscorelib2.chat.ChatInput; +import io.github.thebusybiscuit.cscorelib2.materials.MaterialCollections; +import io.github.thebusybiscuit.cscorelib2.materials.MaterialConverter; +import io.github.thebusybiscuit.cscorelib2.protection.ProtectableAction; +import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config; +import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.ChestMenu; +import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.ChestMenu.AdvancedMenuClickHandler; +import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.ClickAction; +import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.InvUtils; +import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem; +import me.mrCookieSlime.CSCoreLibPlugin.general.World.CustomSkull; +import me.mrCookieSlime.ExoticGarden.ExoticGarden; +import me.mrCookieSlime.Slimefun.SlimefunPlugin; +import me.mrCookieSlime.Slimefun.Lists.RecipeType; +import me.mrCookieSlime.Slimefun.Lists.SlimefunItems; +import me.mrCookieSlime.Slimefun.Objects.Category; +import me.mrCookieSlime.Slimefun.Objects.SlimefunBlockHandler; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineFuel; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.InventoryBlock; +import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker; +import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; +import me.mrCookieSlime.Slimefun.androids.comparators.ScriptReputationSorter; +import me.mrCookieSlime.Slimefun.api.BlockStorage; +import me.mrCookieSlime.Slimefun.api.Slimefun; +import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu; +import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset; +import me.mrCookieSlime.Slimefun.api.item_transport.ItemTransportFlow; + +public abstract class ProgrammableAndroid extends SlimefunItem implements InventoryBlock { + + private static final int[] border = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 18, 24, 25, 26, 27, 33, 35, 36, 42, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53}; + private static final int[] border_out = {10, 11, 12, 13, 14, 19, 23, 28, 32, 37, 38, 39, 40, 41}; + + private static final ItemStack[] fish = new ItemStack[] {new ItemStack(Material.COD), new ItemStack(Material.SALMON), new ItemStack(Material.PUFFERFISH), new ItemStack(Material.TROPICAL_FISH), new ItemStack(Material.STRING), new ItemStack(Material.BONE), new ItemStack(Material.STICK)}; + + private static final List directions = Arrays.asList(BlockFace.NORTH, BlockFace.EAST, BlockFace.SOUTH, BlockFace.WEST); + private static final List blockblacklist = new ArrayList<>(); + + + static { + blockblacklist.add(Material.BEDROCK); + blockblacklist.add(Material.BARRIER); + blockblacklist.add(Material.END_PORTAL_FRAME); + blockblacklist.add(Material.END_PORTAL); + blockblacklist.add(Material.NETHER_PORTAL); + blockblacklist.add(Material.COMMAND_BLOCK); + blockblacklist.add(Material.CHAIN_COMMAND_BLOCK); + blockblacklist.add(Material.REPEATING_COMMAND_BLOCK); + blockblacklist.add(Material.STRUCTURE_BLOCK); + } + + private final Set recipes = new HashSet<>(); + private final Random random = new Random(); + + @Override + public int[] getInputSlots() { + return new int[0]; + } + + @Override + public int[] getOutputSlots() { + return new int[] {20, 21, 22, 29, 30, 31}; + } + + public abstract AndroidType getAndroidType(); + public abstract float getFuelEfficiency(); + public abstract int getTier(); + + public ProgrammableAndroid(Category category, ItemStack item, String name, RecipeType recipeType, ItemStack[] recipe) { + super(category, item, name, recipeType, recipe); + + if (getTier() == 1) { + registerFuel(new MachineFuel(800, new ItemStack(Material.COAL_BLOCK))); + registerFuel(new MachineFuel(45, new ItemStack(Material.BLAZE_ROD))); + + // Coals + for (Material mat: Tag.ITEMS_COALS.getValues()) { + registerFuel(new MachineFuel(8, new ItemStack(mat))); + } + + // Logs + for (Material mat: Tag.LOGS.getValues()) { + registerFuel(new MachineFuel(2, new ItemStack(mat))); + } + + // Wooden Planks + for (Material mat: Tag.PLANKS.getValues()) { + registerFuel(new MachineFuel(1, new ItemStack(mat))); + } + } + else if (getTier() == 2){ + registerFuel(new MachineFuel(100, new ItemStack(Material.LAVA_BUCKET))); + registerFuel(new MachineFuel(200, SlimefunItems.BUCKET_OF_OIL)); + registerFuel(new MachineFuel(500, SlimefunItems.BUCKET_OF_FUEL)); + } + else { + registerFuel(new MachineFuel(2500, SlimefunItems.URANIUM)); + registerFuel(new MachineFuel(1200, SlimefunItems.NEPTUNIUM)); + registerFuel(new MachineFuel(3000, SlimefunItems.BOOSTED_URANIUM)); + } + + new BlockMenuPreset(name, "Programmable Android") { + + @Override + public void init() { + try { + constructMenu(this); + } catch (Exception x) { + Slimefun.getLogger().log(Level.SEVERE, "An Error occured while constructing an Android Inventory for Slimefun " + Slimefun.getVersion(), x); + } + } + + @Override + public boolean canOpen(Block b, Player p) { + boolean open = BlockStorage.getLocationInfo(b.getLocation(), "owner").equals(p.getUniqueId().toString()) || p.hasPermission("slimefun.android.bypass"); + if (!open) { + SlimefunPlugin.getLocal().sendMessage(p, "inventory.no-access", true); + } + return open; + } + + @Override + public void newInstance(BlockMenu menu, final Block b) { + try { + menu.replaceExistingItem(15, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZTAxYzdiNTcyNjE3ODk3NGIzYjNhMDFiNDJhNTkwZTU0MzY2MDI2ZmQ0MzgwOGYyYTc4NzY0ODg0M2E3ZjVhIn19fQ=="), "&aStart/Continue")); + menu.addMenuClickHandler(15, (p, slot, item, action) -> { + SlimefunPlugin.getLocal().sendMessage(p, "robot.started", true); + BlockStorage.addBlockInfo(b, "paused", "false"); + p.closeInventory(); + return false; + }); + + menu.replaceExistingItem(17, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMTYxMzlmZDFjNTY1NGU1NmU5ZTRlMmM4YmU3ZWIyYmQ1YjQ5OWQ2MzM2MTY2NjNmZWVlOTliNzQzNTJhZDY0In19fQ=="), "&4Pause")); + menu.addMenuClickHandler(17, (p, slot, item, action) -> { + BlockStorage.addBlockInfo(b, "paused", "true"); + SlimefunPlugin.getLocal().sendMessage(p, "robot.stopped", true); + return false; + }); + + menu.replaceExistingItem(16, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZDc4ZjJiN2U1ZTc1NjM5ZWE3ZmI3OTZjMzVkMzY0YzRkZjI4YjQyNDNlNjZiNzYyNzdhYWRjZDYyNjEzMzcifX19"), "&bMemory Core", "", "&8\u21E8 &7Click to open the Script Editor")); + menu.addMenuClickHandler(16, (p, slot, item, action) -> { + BlockStorage.addBlockInfo(b, "paused", "true"); + SlimefunPlugin.getLocal().sendMessage(p, "robot.stopped", true); + openScriptEditor(p, b); + return false; + }); + } catch (Exception x) { + Slimefun.getLogger().log(Level.SEVERE, "An Error occured while creating a new Instance of an Android Inventory for Slimefun " + Slimefun.getVersion(), x); + } + } + + @Override + public int[] getSlotsAccessedByItemTransport(ItemTransportFlow flow) { + return new int[0]; + } + }; + + registerBlockHandler(name, new SlimefunBlockHandler() { + + @Override + public void onPlace(Player p, Block b, SlimefunItem item) { + BlockStorage.addBlockInfo(b, "owner", p.getUniqueId().toString()); + BlockStorage.addBlockInfo(b, "script", "START-TURN_LEFT-REPEAT"); + BlockStorage.addBlockInfo(b, "index", "0"); + BlockStorage.addBlockInfo(b, "fuel", "0"); + BlockStorage.addBlockInfo(b, "rotation", p.getFacing().getOppositeFace().toString()); + BlockStorage.addBlockInfo(b, "paused", "true"); + b.setType(Material.PLAYER_HEAD); + Rotatable blockData = (Rotatable) b.getBlockData(); + blockData.setRotation(p.getFacing()); + b.setBlockData(blockData); + } + + @Override + public boolean onBreak(Player p, Block b, SlimefunItem item, UnregisterReason reason) { + boolean allow = reason == UnregisterReason.PLAYER_BREAK && (BlockStorage.getLocationInfo(b.getLocation(), "owner").equals(p.getUniqueId().toString()) || p.hasPermission("slimefun.android.bypass")); + + if (allow) { + BlockMenu inv = BlockStorage.getInventory(b); + if (inv != null) { + if (inv.getItemInSlot(43) != null) { + b.getWorld().dropItemNaturally(b.getLocation(), inv.getItemInSlot(43)); + inv.replaceExistingItem(43, null); + } + for (int slot: getOutputSlots()) { + if (inv.getItemInSlot(slot) != null) { + b.getWorld().dropItemNaturally(b.getLocation(), inv.getItemInSlot(slot)); + inv.replaceExistingItem(slot, null); + } + } + } + } + + return allow; + } + }); + } + + protected void tick(Block b) { + if (!(b.getState() instanceof Skull)) { + // The Android was destroyed or moved. + return; + } + + if (BlockStorage.getLocationInfo(b.getLocation(), "paused").equals("false")) { + BlockMenu menu = BlockStorage.getInventory(b); + float fuel = Float.parseFloat(BlockStorage.getLocationInfo(b.getLocation(), "fuel")); + + if (fuel < 0.001) { + ItemStack item = menu.getItemInSlot(43); + + if (item != null) { + for (MachineFuel recipe: recipes) { + if (SlimefunManager.isItemSimiliar(item, recipe.getInput(), true)) { + menu.replaceExistingItem(43, InvUtils.decreaseItem(item, 1)); + + if (getTier() == 2) { + menu.pushItem(new ItemStack(Material.BUCKET), getOutputSlots()); + } + + BlockStorage.addBlockInfo(b, "fuel", String.valueOf((int) (recipe.getTicks() * this.getFuelEfficiency()))); + break; + } + } + } + } + else { + String[] script = BlockStorage.getLocationInfo(b.getLocation(), "script").split("-"); + int index = Integer.parseInt(BlockStorage.getLocationInfo(b.getLocation(), "index")) + 1; + if (index >= script.length) index = 0; + + boolean refresh = true; + BlockStorage.addBlockInfo(b, "fuel", String.valueOf(fuel - 1)); + ScriptPart part = ScriptPart.valueOf(script[index]); + + if (getAndroidType().isType(part.getRequiredType())) { + BlockFace face = BlockFace.valueOf(BlockStorage.getLocationInfo(b.getLocation(), "rotation")); + double damage = getTier() < 2 ? 20D : 4D * getTier(); + + switch (part) { + case GO_DOWN: + move(b, face, b.getRelative(BlockFace.DOWN)); + break; + case GO_FORWARD: + move(b, face, b.getRelative(face)); + break; + case GO_UP: + move(b, face, b.getRelative(BlockFace.UP)); + break; + case REPEAT: + BlockStorage.addBlockInfo(b, "index", String.valueOf(0)); + break; + case TURN_LEFT: + int indexLeft = directions.indexOf(BlockFace.valueOf(BlockStorage.getLocationInfo(b.getLocation(), "rotation"))) - 1; + if (indexLeft < 0) indexLeft = directions.size() - 1; + Rotatable rotatableLeft = (Rotatable) b.getBlockData(); + rotatableLeft.setRotation(directions.get(indexLeft)); + b.setBlockData(rotatableLeft); + BlockStorage.addBlockInfo(b, "rotation", directions.get(indexLeft).toString()); + break; + case TURN_RIGHT: + int indexRight = directions.indexOf(BlockFace.valueOf(BlockStorage.getLocationInfo(b.getLocation(), "rotation"))) + 1; + if (indexRight == directions.size()) indexRight = 0; + Rotatable rotatableRight = (Rotatable) b.getBlockData(); + rotatableRight.setRotation(directions.get(indexRight)); + b.setBlockData(rotatableRight); + BlockStorage.addBlockInfo(b, "rotation", directions.get(indexRight).toString()); + break; + case DIG_FORWARD: + mine(b, b.getRelative(face)); + break; + case DIG_UP: + mine(b, b.getRelative(BlockFace.UP)); + break; + case DIG_DOWN: + mine(b, b.getRelative(BlockFace.DOWN)); + break; + case CATCH_FISH: + Block water = b.getRelative(BlockFace.DOWN); + if (water.getType() == Material.WATER) { + water.getWorld().playSound(water.getLocation(), Sound.ENTITY_PLAYER_SPLASH, 1F, 1F); + if (random.nextInt(100) < 10 * getTier()) { + ItemStack drop = fish[random.nextInt(fish.length)]; + if (menu.fits(drop, getOutputSlots())) { + menu.pushItem(drop, getOutputSlots()); + } + } + + } + break; + case MOVE_AND_DIG_FORWARD: + movedig(b, face, b.getRelative(face)); + break; + case MOVE_AND_DIG_UP: + movedig(b, face, b.getRelative(BlockFace.UP)); + break; + case MOVE_AND_DIG_DOWN: + movedig(b, face, b.getRelative(BlockFace.DOWN)); + break; + case INTERFACE_ITEMS: + if (BlockStorage.check(b.getRelative(face), "ANDROID_INTERFACE_ITEMS") && b.getRelative(face).getState() instanceof Dispenser) { + Dispenser d = (Dispenser) b.getRelative(face).getState(); + for (int slot: getOutputSlots()) { + ItemStack stack = menu.getItemInSlot(slot); + + if (stack != null) { + Optional optional = d.getInventory().addItem(stack).values().stream().findFirst(); + + if (optional.isPresent()) { + menu.replaceExistingItem(slot, optional.get()); + } + else { + menu.replaceExistingItem(slot, null); + } + } + } + } + break; + case INTERFACE_FUEL: + if (BlockStorage.check(b.getRelative(face), "ANDROID_INTERFACE_FUEL") && b.getRelative(face).getState() instanceof Dispenser) { + Dispenser d = (Dispenser) b.getRelative(face).getState(); + for (int slot = 0; slot < 9; slot++) { + ItemStack item = d.getInventory().getItem(slot); + + if (item != null) { + if (menu.getItemInSlot(43) == null) { + menu.replaceExistingItem(43, item); + d.getInventory().setItem(slot, null); + break; + } + else if (SlimefunManager.isItemSimiliar(item, menu.getItemInSlot(43), true)) { + int rest = item.getType().getMaxStackSize() - menu.getItemInSlot(43).getAmount(); + + if (rest > 0) { + int amt = item.getAmount() > rest ? rest: item.getAmount(); + menu.replaceExistingItem(43, new CustomItem(item, menu.getItemInSlot(43).getAmount() + amt)); + d.getInventory().setItem(slot, InvUtils.decreaseItem(item, amt)); + } + break; + } + } + } + } + break; + case FARM_FORWARD: + farm(b, menu, b.getRelative(face)); + break; + case FARM_DOWN: + farm(b, menu, b.getRelative(BlockFace.DOWN)); + break; + case FARM_EXOTIC_FORWARD: + exoticFarm(b, menu, b.getRelative(face)); + break; + case FARM_EXOTIC_DOWN: + exoticFarm(b, menu, b.getRelative(BlockFace.DOWN)); + break; + case CHOP_TREE: + if (MaterialCollections.getAllLogs().contains(b.getRelative(face).getType())) { + List list = Vein.find(b.getRelative(face), 180, block -> MaterialCollections.getAllLogs().contains(block.getType())); + list.add(0, b.getRelative(face)); + if (!list.isEmpty()) { + refresh = false; + Block log = list.get(list.size() - 1); + log.getWorld().playEffect(log.getLocation(), Effect.STEP_SOUND, log.getType()); + + if (SlimefunPlugin.getProtectionManager().hasPermission(Bukkit.getOfflinePlayer(UUID.fromString(BlockStorage.getLocationInfo(b.getLocation(), "owner"))), log.getLocation(), ProtectableAction.BREAK_BLOCK)) { + ItemStack drop = new ItemStack(log.getType()); + + if (menu.fits(drop, getOutputSlots())) { + menu.pushItem(drop, getOutputSlots()); + log.getWorld().playEffect(log.getLocation(), Effect.STEP_SOUND, log.getType()); + + if (log.getY() == b.getRelative(face).getY()) { + Optional sapling = MaterialConverter.getSaplingFromLog(log.getType()); + if (sapling.isPresent()) { + log.setType(sapling.get()); + } + } + else log.setType(Material.AIR); + } + + } + } + } + break; + case ATTACK_MOBS_ANIMALS: + killEntities(b, damage, e -> true); + break; + case ATTACK_MOBS: + killEntities(b, damage, e -> e instanceof Monster); + break; + case ATTACK_ANIMALS: + killEntities(b, damage, e -> e instanceof Animals); + break; + case ATTACK_ANIMALS_ADULT: + killEntities(b, damage, e -> e instanceof Animals && e instanceof org.bukkit.entity.Ageable && ((org.bukkit.entity.Ageable) e).isAdult()); + break; + default: + break; + } + } + if (refresh) BlockStorage.addBlockInfo(b, "index", String.valueOf(index)); + } + } + } + + private void killEntities(Block b, double damage, Predicate predicate) { + double radius = 4.0 + getTier(); + for (Entity n: b.getWorld().getNearbyEntities(b.getLocation(), radius, radius, radius, n -> n instanceof LivingEntity && !(n instanceof ArmorStand) && !(n instanceof Player) && n.isValid() && predicate.test(n))) { + boolean attack = false; + + switch (BlockFace.valueOf(BlockStorage.getLocationInfo(b.getLocation(), "rotation"))) { + case NORTH: + attack = n.getLocation().getZ() < b.getZ(); + break; + case EAST: + attack = n.getLocation().getX() > b.getX(); + break; + case SOUTH: + attack = n.getLocation().getZ() > b.getZ(); + break; + case WEST: + attack = n.getLocation().getX() < b.getX(); + break; + default: + break; + } + + if (attack) { + if (n.hasMetadata("android_killer")) n.removeMetadata("android_killer", SlimefunPlugin.instance); + n.setMetadata("android_killer", new FixedMetadataValue(SlimefunPlugin.instance, new AndroidObject(this, b))); + + ((LivingEntity) n).damage(damage); + break; + } + } + } + + private void move(Block b, BlockFace face, Block block) { + if (block.getY() > 0 && block.getY() < block.getWorld().getMaxHeight() && (block.getType() == Material.AIR || block.getType() == Material.CAVE_AIR)) { + block.setType(Material.PLAYER_HEAD); + Rotatable blockData = (Rotatable) block.getBlockData(); + blockData.setRotation(face.getOppositeFace()); + block.setBlockData(blockData); + + try { + CustomSkull.setSkull(block, CustomSkull.getTexture(getItem())); + } catch (Exception x) { + Slimefun.getLogger().log(Level.SEVERE, "An Error occured while moving an Android for Slimefun " + Slimefun.getVersion(), x); + } + + b.setType(Material.AIR); + BlockStorage.moveBlockInfo(b.getLocation(), block.getLocation()); + } + } + + private void mine(Block b, Block block) { + Collection drops = block.getDrops(); + if (!blockblacklist.contains(block.getType()) && !drops.isEmpty() && SlimefunPlugin.getProtectionManager().hasPermission(Bukkit.getOfflinePlayer(UUID.fromString(BlockStorage.getLocationInfo(b.getLocation(), "owner"))), block.getLocation(), ProtectableAction.BREAK_BLOCK)) { + String item = BlockStorage.checkID(block); + + if (item == null) { + ItemStack[] items = drops.toArray(new ItemStack[drops.size()]); + if (fits(b, items)) { + pushItems(b, items); + block.getWorld().playEffect(block.getLocation(), Effect.STEP_SOUND, block.getType()); + block.setType(Material.AIR); + } + } + /* + else if (fits(b, item.getItem())) { + if (SlimefunItem.blockhandler.containsKey(item.getID())) { + if (SlimefunItem.blockhandler.get(item.getID()).onBreak(null, block, item, UnregisterReason.ANDROID_DIG)) { + pushItems(b, BlockStorage.retrieve(block)); + if (SlimefunItem.blockhandler.containsKey(item.getID())) SlimefunItem.blockhandler.get(item.getID()).onBreak(null, block, item, UnregisterReason.ANDROID_DIG); + block.getWorld().playEffect(block.getLocation(), Effect.STEP_SOUND, block.getType()); + block.setType(Material.AIR); + } + } + }*/ + } + } + + + private void movedig(Block b, BlockFace face, Block block) { + Collection drops = block.getDrops(); + if (!blockblacklist.contains(block.getType()) && !drops.isEmpty() && SlimefunPlugin.getProtectionManager().hasPermission(Bukkit.getOfflinePlayer(UUID.fromString(BlockStorage.getLocationInfo(b.getLocation(), "owner"))), block.getLocation(), ProtectableAction.BREAK_BLOCK)) { + SlimefunItem item = BlockStorage.check(block); + if (item == null) { + ItemStack[] items = drops.toArray(new ItemStack[drops.size()]); + if (fits(b, items)) { + pushItems(b, items); + block.getWorld().playEffect(block.getLocation(), Effect.STEP_SOUND, block.getType()); + + block.setType(Material.AIR); + move(b, face, block); + + b.setType(Material.AIR); + BlockStorage.moveBlockInfo(b.getLocation(), block.getLocation()); + } + + } + /* + else { + if (fits(b, item.getItem()) && SlimefunPlugin.getUtilities().blockHandlers.containsKey(item.getID()) && SlimefunPlugin.getUtilities().blockHandlers.get(item.getID()).onBreak(null, block, item, UnregisterReason.ANDROID_DIG)) { + pushItems(b, BlockStorage.retrieve(block)); + block.getWorld().playEffect(block.getLocation(), Effect.STEP_SOUND, block.getType()); + + block.setType(Material.AIR); + move(b, face, block); + + b.setType(Material.AIR); + BlockStorage.moveBlockInfo(b.getLocation(), block.getLocation()); + } + }*/ + } + else { + move(b, face, block); + } + } + + private boolean isFullGrown(Block block){ + if (!(block.getBlockData() instanceof Ageable)) return false; + Ageable ageable = ((Ageable) block.getBlockData()); + return ageable.getAge() >= ageable.getMaximumAge(); + } + + private void farm(Block b, BlockMenu menu, Block block) { + if (isFullGrown(block)) { + ItemStack drop = null; + switch (block.getType()) { + case WHEAT: + drop = new ItemStack(Material.WHEAT, random.nextInt(2) + 1); + break; + case POTATOES: + drop = new ItemStack(Material.POTATO, random.nextInt(3) + 1); + break; + case CARROTS: + drop = new ItemStack(Material.CARROT, random.nextInt(3) + 1); + break; + case BEETROOTS: + drop = new ItemStack(Material.BEETROOT, random.nextInt(3) + 1); + break; + case COCOA: + drop = new ItemStack(Material.COCOA_BEANS, random.nextInt(3) + 1); + break; + case NETHER_WART: + drop = new ItemStack(Material.NETHER_WART, random.nextInt(3) + 1); + break; + case SWEET_BERRY_BUSH: + drop = new ItemStack(Material.SWEET_BERRIES, random.nextInt(3) + 1); + break; + default: + break; + } + + if (drop != null && menu.fits(drop, getOutputSlots())) { + menu.pushItem(drop, getOutputSlots()); + Ageable ageable = (Ageable) block.getBlockData(); + ageable.setAge(0); + block.setBlockData(ageable); + block.getWorld().playEffect(block.getLocation(), Effect.STEP_SOUND, block.getType()); + } + } + } + + private void exoticFarm(Block b, BlockMenu menu, Block block) { + farm(b, menu, block); + if (SlimefunPlugin.getHooks().isExoticGardenInstalled()) { + ItemStack drop = ExoticGarden.harvestPlant(block); + if (drop != null && menu.fits(drop, getOutputSlots())) { + menu.pushItem(drop, getOutputSlots()); + block.getWorld().playEffect(block.getLocation(), Effect.STEP_SOUND, block.getType()); + } + } + } + + private void constructMenu(BlockMenuPreset preset) throws Exception { + for (int i : border) { + preset.addItem(i, new CustomItem(new ItemStack(Material.GRAY_STAINED_GLASS_PANE), " "), (p, slot, item, action) -> false); + } + for (int i : border_out) { + preset.addItem(i, new CustomItem(new ItemStack(Material.ORANGE_STAINED_GLASS_PANE), " "), (p, slot, item, action) -> false); + } + + for (int i : getOutputSlots()) { + preset.addMenuClickHandler(i, new AdvancedMenuClickHandler() { + + @Override + public boolean onClick(Player p, int slot, ItemStack cursor, ClickAction action) { + return false; + } + + @Override + public boolean onClick(InventoryClickEvent e, Player p, int slot, ItemStack cursor, ClickAction action) { + return cursor == null || cursor.getType() == null || cursor.getType() == Material.AIR; + } + }); + } + + if (getTier() == 1) { + preset.addItem(34, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTM0M2NlNThkYTU0Yzc5OTI0YTJjOTMzMWNmYzQxN2ZlOGNjYmJlYTliZTQ1YTdhYzg1ODYwYTZjNzMwIn19fQ=="), "&8\u21E9 &cFuel Input &8\u21E9", "", "&rThis Android runs on solid Fuel", "&re.g. Coal, Wood, etc..."), (p, slot, item, action) -> false); + } + else if (getTier() == 2){ + preset.addItem(34, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTM0M2NlNThkYTU0Yzc5OTI0YTJjOTMzMWNmYzQxN2ZlOGNjYmJlYTliZTQ1YTdhYzg1ODYwYTZjNzMwIn19fQ=="), "&8\u21E9 &cFuel Input &8\u21E9", "", "&rThis Android runs on liquid Fuel", "&re.g. Lava, Oil, Fuel, etc..."), (p, slot, item, action) -> false); + } + else { + preset.addItem(34, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTM0M2NlNThkYTU0Yzc5OTI0YTJjOTMzMWNmYzQxN2ZlOGNjYmJlYTliZTQ1YTdhYzg1ODYwYTZjNzMwIn19fQ=="), "&8\u21E9 &cFuel Input &8\u21E9", "", "&rThis Android runs on radioactive Fuel", "&re.g. Uranium, Neptunium or Boosted Uranium"), (p, slot, item, action) -> false); + } + } + + public void openScriptEditor(Player p, final Block b) { + ChestMenu menu = new ChestMenu("&eScript Editor"); + + try { + menu.addItem(1, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZDliZjZkYjRhZWRhOWQ4ODIyYjlmNzM2NTM4ZThjMThiOWE0ODQ0Zjg0ZWI0NTUwNGFkZmJmZWU4N2ViIn19fQ=="), "&2> Edit Script", "", "&aEdits your current Script")); + menu.addMenuClickHandler(1, (pl, slot, item, action) -> { + openScript(pl, b, BlockStorage.getLocationInfo(b.getLocation(), "script")); + return false; + }); + + menu.addItem(3, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMTcxZDg5NzljMTg3OGEwNTk4N2E3ZmFmMjFiNTZkMWI3NDRmOWQwNjhjNzRjZmZjZGUxZWExZWRhZDU4NTIifX19"), "&4> Create new Script", "", "&cDeletes your current Script", "&cand creates a blank one")); + menu.addMenuClickHandler(3, (pl, slot, item, action) -> { + openScript(pl, b, "START-TURN_LEFT-REPEAT"); + return false; + }); + + menu.addItem(5, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYzAxNTg2ZTM5ZjZmZmE2M2I0ZmIzMDFiNjVjYTdkYThhOTJmNzM1M2FhYWI4OWQzODg2NTc5MTI1ZGZiYWY5In19fQ=="), "&6> Download a Script", "", "&eDownload a Script from the Server", "&eYou can edit or simply use it")); + menu.addMenuClickHandler(5, (pl, slot, item, action) -> { + openScriptDownloader(pl, b, 1); + return false; + }); + + menu.addItem(8, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYTE4NWM5N2RiYjgzNTNkZTY1MjY5OGQyNGI2NDMyN2I3OTNhM2YzMmE5OGJlNjdiNzE5ZmJlZGFiMzVlIn19fQ=="), "&6> Back", "", "&7Return to the Android's interface")); + menu.addMenuClickHandler(8, (pl, slot, item, action) -> { + BlockStorage.getInventory(b).open(p); + return false; + }); + } + catch (Exception x) { + Slimefun.getLogger().log(Level.SEVERE, "An Error occured while creating the Script Editor for Slimefun " + Slimefun.getVersion(), x); + } + + menu.open(p); + } + + public void openScript(final Player p, final Block b, final String script) { + ChestMenu menu = new ChestMenu("&eScript Editor"); + final String[] commands = script.split("-"); + + menu.addItem(0, new CustomItem(ScriptPart.START.toItemStack(), ScriptPart.START.toItemStack().getItemMeta().getDisplayName(), "", "&7\u21E8 &eLeft Click &7to return to the Android's interface")); + menu.addMenuClickHandler(0, (pl, slot, item, action) -> { + BlockStorage.getInventory(b).open(pl); + return false; + }); + + for (int i = 1; i < commands.length; i++) { + final int index = i; + + if (i == commands.length - 1) { + int additional = commands.length == 54 ? 0: 1; + + if (additional == 1) { + try { + menu.addItem(i, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMTcxZDg5NzljMTg3OGEwNTk4N2E3ZmFmMjFiNTZkMWI3NDRmOWQwNjhjNzRjZmZjZGUxZWExZWRhZDU4NTIifX19"), "&7> Add new Command")); + menu.addMenuClickHandler(i, (pl, slot, item, action) -> { + openScriptComponentEditor(pl, b, script, index); + return false; + }); + } + catch (Exception x) { + Slimefun.getLogger().log(Level.SEVERE, "An Error occured while creating the Script Editor for Slimefun " + Slimefun.getVersion(), x); + } + } + + menu.addItem(i + additional, new CustomItem(ScriptPart.REPEAT.toItemStack(), ScriptPart.REPEAT.toItemStack().getItemMeta().getDisplayName(), "", "&7\u21E8 &eLeft Click &7to return to the Android's interface")); + menu.addMenuClickHandler(i + additional, (pl, slot, item, action) -> { + BlockStorage.getInventory(b).open(pl); + return false; + }); + } + else { + ItemStack stack = ScriptPart.valueOf(commands[i]).toItemStack(); + menu.addItem(i, new CustomItem(stack, stack.getItemMeta().getDisplayName(), "", "&7\u21E8 &eLeft Click &7to edit", "&7\u21E8 &eRight Click &7to delete", "&7\u21E8 &eShift + Right Click &7to duplicate")); + menu.addMenuClickHandler(i, (pl, slot, item, action) -> { + if (action.isRightClicked() && action.isShiftClicked()) { + if (commands.length == 54) return false; + + int j = 0; + StringBuilder builder = new StringBuilder("START-"); + for (String command : commands) { + if (j > 0) { + if (j == index) { + builder.append(commands[j] + "-"); + builder.append(commands[j] + "-"); + } + else if (j < commands.length - 1) builder.append(command + "-"); + } + j++; + } + builder.append("REPEAT"); + BlockStorage.addBlockInfo(b, "script", builder.toString()); + + openScript(pl, b, builder.toString()); + } + else if (action.isRightClicked()) { + int j = 0; + StringBuilder builder = new StringBuilder("START-"); + for (String command : commands) { + if (j != index && j > 0 && j < commands.length - 1) builder.append(command + "-"); + j++; + } + builder.append("REPEAT"); + BlockStorage.addBlockInfo(b, "script", builder.toString()); + + openScript(pl, b, builder.toString()); + } + else { + openScriptComponentEditor(pl, b, script, index); + } + return false; + }); + } + } + + menu.open(p); + } + + private void openScriptDownloader(final Player p, final Block b, final int page) { + final ChestMenu menu = new ChestMenu("Android Scripts"); + + menu.addMenuOpeningHandler(pl -> pl.playSound(pl.getLocation(), Sound.BLOCK_NOTE_BLOCK_HAT, 0.7F, 0.7F)); + + List scripts = getUploadedScripts(); + + int index = 0; + final int pages = (scripts.size() / 45) + 1; + + for (int i = 45; i < 54; i++) { + menu.addItem(i, new CustomItem(new ItemStack(Material.GRAY_STAINED_GLASS_PANE), " ")); + menu.addMenuClickHandler(i, (pl, slot, item, action) -> false); + } + + menu.addItem(46, new CustomItem(new ItemStack(Material.LIME_STAINED_GLASS_PANE), "&r\u21E6 Previous Page", "", "&7(" + page + " / " + pages + ")")); + menu.addMenuClickHandler(46, (pl, slot, item, action) -> { + int next = page - 1; + if (next < 1) next = pages; + if (next != page) { + openScriptDownloader(pl, b, next); + } + return false; + }); + + try { + menu.addItem(48, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMTA1YTJjYWI4YjY4ZWE1N2UzYWY5OTJhMzZlNDdjOGZmOWFhODdjYzg3NzYyODE5NjZmOGMzY2YzMWEzOCJ9fX0="), "&eUpload a Script", "", "&6Click &7to upload your Android's Script", "&7to the Database")); + menu.addMenuClickHandler(48, (pl, slot, item, action) -> { + final String code = BlockStorage.getLocationInfo(b.getLocation(), "script"); + int num = 1; + + for (Config script: getUploadedScripts()) { + if (script.getString("author").equals(pl.getUniqueId().toString())) num++; + if (script.getString("code").equals(code)) { + SlimefunPlugin.getLocal().sendMessage(pl, "android.scripts.already-uploaded", true); + return false; + } + } + + final int id = num; + + pl.closeInventory(); + SlimefunPlugin.getLocal().sendMessages(pl, "android.scripts.enter-name"); + + ChatInput.waitForPlayer(SlimefunPlugin.instance, pl, message -> { + Config script = new Config("plugins/Slimefun/scripts/" + getAndroidType().toString() + '/' + p.getName() + ' ' + id + ".sfs"); + + script.setValue("author", pl.getUniqueId().toString()); + script.setValue("author_name", pl.getName()); + script.setValue("name", ChatColor.stripColor(ChatColor.translateAlternateColorCodes('&', message))); + script.setValue("code", code); + script.setValue("downloads", 0); + script.setValue("android", getAndroidType().toString()); + script.setValue("rating.positive", new ArrayList()); + script.setValue("rating.negative", new ArrayList()); + script.save(); + + SlimefunPlugin.getLocal().sendMessages(pl, "android.scripts.uploaded"); + openScriptDownloader(pl, b, page); + }); + return false; + }); + + menu.addItem(50, new CustomItem(new ItemStack(Material.LIME_STAINED_GLASS_PANE), "&rNext Page \u21E8", "", "&7(" + page + " / " + pages + ")")); + menu.addMenuClickHandler(50, (pl, slot, item, action) -> { + int next = page + 1; + if (next > pages) next = 1; + if (next != page) { + openScriptDownloader(pl, b, next); + } + return false; + }); + + menu.addItem(53, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYTE4NWM5N2RiYjgzNTNkZTY1MjY5OGQyNGI2NDMyN2I3OTNhM2YzMmE5OGJlNjdiNzE5ZmJlZGFiMzVlIn19fQ=="), "&6> Back", "", "&7Return to the Android's interface")); + menu.addMenuClickHandler(53, (pl, slot, item, action) -> { + openScriptEditor(pl, b); + return false; + }); + } + catch (Exception x) { + Slimefun.getLogger().log(Level.SEVERE, "An Error occured while creating the Script Download Menu for Slimefun " + Slimefun.getVersion(), x); + } + + int categoryIndex = 45 * (page - 1); + + for (int i = 0; i < 45; i++) { + int target = categoryIndex + i; + if (target >= scripts.size()) break; + else { + final Config script = scripts.get(target); + + OfflinePlayer op = Bukkit.getOfflinePlayer(script.getUUID("author")); + String author = (op != null && op.getName() != null) ? op.getName(): script.getString("author_name"); + + if (script.getString("author").equals(p.getUniqueId().toString())) { + menu.addItem(index, new CustomItem(this.getItem(), "&b" + script.getString("name"), "&7by &r" + author, "", "&7Downloads: &r" + script.getInt("downloads"), "&7Rating: " + getScriptRatingPercentage(script), "&a" + getScriptRating(script, true) + " \u263A &7- &4\u2639 " + getScriptRating(script, false), "", "&eLeft Click &rto download this Script", "&4(This will override your current Script)")); + } + else { + menu.addItem(index, new CustomItem(this.getItem(), "&b" + script.getString("name"), "&7by &r" + author, "", "&7Downloads: &r" + script.getInt("downloads"), "&7Rating: " + getScriptRatingPercentage(script), "&a" + getScriptRating(script, true) + " \u263A &7- &4\u2639 " + getScriptRating(script, false), "", "&eLeft Click &rto download this Script", "&4(This will override your current Script)", "&eShift + Left Click &rto leave a positive Rating", "&eShift + Right Click &rto leave a negative Rating")); + } + + menu.addMenuClickHandler(index, (pl, slot, item, action) -> { + Config script2 = new Config(script.getFile()); + + if (action.isShiftClicked()) { + if (script2.getString("author").equals(pl.getUniqueId().toString())) { + SlimefunPlugin.getLocal().sendMessage(pl, "android.scripts.rating.own", true); + } + else if (action.isRightClicked()) { + if (!script2.getStringList("rating.negative").contains(pl.getUniqueId().toString()) && !script2.getStringList("rating.positive").contains(pl.getUniqueId().toString())) { + List list = script2.getStringList("rating.negative"); + list.add(p.getUniqueId().toString()); + + script2.setValue("rating.negative", list); + script2.save(); + + openScriptDownloader(pl, b, page); + } + else { + SlimefunPlugin.getLocal().sendMessage(pl, "android.scripts.rating.already", true); + } + } + else { + if (!script2.getStringList("rating.negative").contains(pl.getUniqueId().toString()) && !script2.getStringList("rating.positive").contains(pl.getUniqueId().toString())) { + List list = script2.getStringList("rating.positive"); + list.add(pl.getUniqueId().toString()); + + script2.setValue("rating.positive", list); + script2.save(); + + openScriptDownloader(pl, b, page); + } + else { + SlimefunPlugin.getLocal().sendMessage(pl, "android.scripts.rating.already", true); + } + } + } + else if (!action.isRightClicked()) { + script2.setValue("downloads", script2.getInt("downloads") + 1); + script2.save(); + + BlockStorage.addBlockInfo(b, "script", script2.getString("code")); + openScriptEditor(pl, b); + } + return false; + }); + + index++; + } + } + + menu.open(p); + } + + public float getScriptRating(Config script) { + int positive = getScriptRating(script, true) + 1; + int negative = getScriptRating(script, false); + return Math.round((positive / (double) (positive + negative)) * 100.0F) / 100.0F; + } + + private int getScriptRating(Config script, boolean positive) { + if (positive) return script.getStringList("rating.positive").size(); + else return script.getStringList("rating.negative").size(); + } + + private String getScriptRatingPercentage(Config script) { + String progress = String.valueOf(getScriptRating(script)); + if (Float.parseFloat(progress) < 16.0F) progress = "&4" + progress + "&r% "; + else if (Float.parseFloat(progress) < 32.0F) progress = "&c" + progress + "&r% "; + else if (Float.parseFloat(progress) < 48.0F) progress = "&6" + progress + "&r% "; + else if (Float.parseFloat(progress) < 64.0F) progress = "&e" + progress + "&r% "; + else if (Float.parseFloat(progress) < 80.0F) progress = "&2" + progress + "&r% "; + else progress = "&a" + progress + "&r% "; + + return progress; + } + + protected void openScriptComponentEditor(Player p, final Block b, final String script, final int index) { + ChestMenu menu = new ChestMenu("&eScript Editor"); + + final String[] commands = script.split("-"); + + for (int i = 0; i < 9; i++) { + menu.addItem(i, new CustomItem(new ItemStack(Material.GRAY_STAINED_GLASS_PANE), " "), (pl, slot, item, action) -> false); + } + + try { + menu.addItem(9, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMTYxMzlmZDFjNTY1NGU1NmU5ZTRlMmM4YmU3ZWIyYmQ1YjQ5OWQ2MzM2MTY2NjNmZWVlOTliNzQzNTJhZDY0In19fQ=="), "&rDo nothing"), (pl, slot, item, action) -> { + int i = 0; + StringBuilder builder = new StringBuilder("START-"); + + for (String command : commands) { + if (i != index && i > 0 && i < commands.length - 1) builder.append(command + "-"); + i++; + } + + builder.append("REPEAT"); + BlockStorage.addBlockInfo(b, "script", builder.toString()); + + openScript(p, b, builder.toString()); + return false; + }); + } + catch (Exception x) { + Slimefun.getLogger().log(Level.SEVERE, "An Error occured while creating the Script Editor for Slimefun " + Slimefun.getVersion(), x); + } + + int i = 10; + for (final ScriptPart part : getAccessibleScriptParts()) { + menu.addItem(i, part.toItemStack()); + menu.addMenuClickHandler(i, (pl, slot, item, action) -> { + int j = 0; + StringBuilder builder = new StringBuilder("START-"); + + for (String command : commands) { + if (j > 0) { + if (j == index) builder.append(part.toString() + "-"); + else if (j < commands.length - 1) builder.append(command + "-"); + } + j++; + } + + builder.append("REPEAT"); + BlockStorage.addBlockInfo(b, "script", builder.toString()); + + openScript(pl, b, builder.toString()); + return false; + }); + i++; + } + + menu.open(p); + } + + public void addItems(Block b, ItemStack... items) { + this.pushItems(b, items); + } + + @Override + public void register(boolean slimefun) { + addItemHandler(new BlockTicker() { + + @Override + public void tick(Block b, SlimefunItem sf, Config data) { + if (b != null) ProgrammableAndroid.this.tick(b); + } + + @Override + public boolean isSynchronized() { + return true; + } + }); + + super.register(slimefun); + } + + public void registerFuel(MachineFuel fuel) { + this.recipes.add(fuel); + } + + public List getUploadedScripts() { + List scripts = new ArrayList<>(); + + File directory = new File("plugins/Slimefun/scripts/" + this.getAndroidType().toString()); + if (!directory.exists()) directory.mkdirs(); + + for (File script : directory.listFiles()) { + if (script.getName().endsWith("sfs")) scripts.add(new Config(script)); + } + + if (this.getAndroidType() != AndroidType.NONE) { + File directory2 = new File("plugins/Slimefun/scripts/NONE"); + if (!directory2.exists()) directory2.mkdirs(); + + for (File script : directory2.listFiles()) { + if (script.getName().endsWith("sfs")) scripts.add(new Config(script)); + } + } + + Collections.sort(scripts, new ScriptReputationSorter(this)); + + return scripts; + } + + public List getAccessibleScriptParts() { + List list = new ArrayList<>(); + + for (final ScriptPart part : ScriptPart.values()) { + if (part != ScriptPart.START && part != ScriptPart.REPEAT && getAndroidType().isType(part.getRequiredType())) { + list.add(part); + } + } + + return list; + } + +} diff --git a/src/me/mrCookieSlime/Slimefun/androids/ScriptPart.java b/src/main/java/me/mrCookieSlime/Slimefun/androids/ScriptPart.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/androids/ScriptPart.java rename to src/main/java/me/mrCookieSlime/Slimefun/androids/ScriptPart.java diff --git a/src/me/mrCookieSlime/Slimefun/androids/comparators/ScriptDownloadSorter.java b/src/main/java/me/mrCookieSlime/Slimefun/androids/comparators/ScriptDownloadSorter.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/androids/comparators/ScriptDownloadSorter.java rename to src/main/java/me/mrCookieSlime/Slimefun/androids/comparators/ScriptDownloadSorter.java diff --git a/src/me/mrCookieSlime/Slimefun/androids/comparators/ScriptReputationSorter.java b/src/main/java/me/mrCookieSlime/Slimefun/androids/comparators/ScriptReputationSorter.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/androids/comparators/ScriptReputationSorter.java rename to src/main/java/me/mrCookieSlime/Slimefun/androids/comparators/ScriptReputationSorter.java diff --git a/src/me/mrCookieSlime/Slimefun/api/BlockInfoConfig.java b/src/main/java/me/mrCookieSlime/Slimefun/api/BlockInfoConfig.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/api/BlockInfoConfig.java rename to src/main/java/me/mrCookieSlime/Slimefun/api/BlockInfoConfig.java diff --git a/src/me/mrCookieSlime/Slimefun/api/BlockStorage.java b/src/main/java/me/mrCookieSlime/Slimefun/api/BlockStorage.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/api/BlockStorage.java rename to src/main/java/me/mrCookieSlime/Slimefun/api/BlockStorage.java diff --git a/src/me/mrCookieSlime/Slimefun/api/ErrorReport.java b/src/main/java/me/mrCookieSlime/Slimefun/api/ErrorReport.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/api/ErrorReport.java rename to src/main/java/me/mrCookieSlime/Slimefun/api/ErrorReport.java diff --git a/src/me/mrCookieSlime/Slimefun/api/GuideHandler.java b/src/main/java/me/mrCookieSlime/Slimefun/api/GuideHandler.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/api/GuideHandler.java rename to src/main/java/me/mrCookieSlime/Slimefun/api/GuideHandler.java diff --git a/src/me/mrCookieSlime/Slimefun/api/HashedArmorpiece.java b/src/main/java/me/mrCookieSlime/Slimefun/api/HashedArmorpiece.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/api/HashedArmorpiece.java rename to src/main/java/me/mrCookieSlime/Slimefun/api/HashedArmorpiece.java diff --git a/src/me/mrCookieSlime/Slimefun/api/PlayerProfile.java b/src/main/java/me/mrCookieSlime/Slimefun/api/PlayerProfile.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/api/PlayerProfile.java rename to src/main/java/me/mrCookieSlime/Slimefun/api/PlayerProfile.java diff --git a/src/me/mrCookieSlime/Slimefun/api/Slimefun.java b/src/main/java/me/mrCookieSlime/Slimefun/api/Slimefun.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/api/Slimefun.java rename to src/main/java/me/mrCookieSlime/Slimefun/api/Slimefun.java diff --git a/src/me/mrCookieSlime/Slimefun/api/SlimefunBackup.java b/src/main/java/me/mrCookieSlime/Slimefun/api/SlimefunBackup.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/api/SlimefunBackup.java rename to src/main/java/me/mrCookieSlime/Slimefun/api/SlimefunBackup.java diff --git a/src/me/mrCookieSlime/Slimefun/api/SlimefunGuideLayout.java b/src/main/java/me/mrCookieSlime/Slimefun/api/SlimefunGuideLayout.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/api/SlimefunGuideLayout.java rename to src/main/java/me/mrCookieSlime/Slimefun/api/SlimefunGuideLayout.java diff --git a/src/me/mrCookieSlime/Slimefun/api/SlimefunItemStack.java b/src/main/java/me/mrCookieSlime/Slimefun/api/SlimefunItemStack.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/api/SlimefunItemStack.java rename to src/main/java/me/mrCookieSlime/Slimefun/api/SlimefunItemStack.java diff --git a/src/me/mrCookieSlime/Slimefun/api/SlimefunRecipes.java b/src/main/java/me/mrCookieSlime/Slimefun/api/SlimefunRecipes.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/api/SlimefunRecipes.java rename to src/main/java/me/mrCookieSlime/Slimefun/api/SlimefunRecipes.java diff --git a/src/me/mrCookieSlime/Slimefun/api/Soul.java b/src/main/java/me/mrCookieSlime/Slimefun/api/Soul.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/api/Soul.java rename to src/main/java/me/mrCookieSlime/Slimefun/api/Soul.java diff --git a/src/me/mrCookieSlime/Slimefun/api/TickerTask.java b/src/main/java/me/mrCookieSlime/Slimefun/api/TickerTask.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/api/TickerTask.java rename to src/main/java/me/mrCookieSlime/Slimefun/api/TickerTask.java diff --git a/src/me/mrCookieSlime/Slimefun/api/energy/ChargableBlock.java b/src/main/java/me/mrCookieSlime/Slimefun/api/energy/ChargableBlock.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/api/energy/ChargableBlock.java rename to src/main/java/me/mrCookieSlime/Slimefun/api/energy/ChargableBlock.java diff --git a/src/me/mrCookieSlime/Slimefun/api/energy/EnergyFlowListener.java b/src/main/java/me/mrCookieSlime/Slimefun/api/energy/EnergyFlowListener.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/api/energy/EnergyFlowListener.java rename to src/main/java/me/mrCookieSlime/Slimefun/api/energy/EnergyFlowListener.java diff --git a/src/me/mrCookieSlime/Slimefun/api/energy/EnergyNet.java b/src/main/java/me/mrCookieSlime/Slimefun/api/energy/EnergyNet.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/api/energy/EnergyNet.java rename to src/main/java/me/mrCookieSlime/Slimefun/api/energy/EnergyNet.java diff --git a/src/me/mrCookieSlime/Slimefun/api/energy/EnergyNetComponent.java b/src/main/java/me/mrCookieSlime/Slimefun/api/energy/EnergyNetComponent.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/api/energy/EnergyNetComponent.java rename to src/main/java/me/mrCookieSlime/Slimefun/api/energy/EnergyNetComponent.java diff --git a/src/me/mrCookieSlime/Slimefun/api/energy/EnergyTicker.java b/src/main/java/me/mrCookieSlime/Slimefun/api/energy/EnergyTicker.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/api/energy/EnergyTicker.java rename to src/main/java/me/mrCookieSlime/Slimefun/api/energy/EnergyTicker.java diff --git a/src/me/mrCookieSlime/Slimefun/api/energy/ItemEnergy.java b/src/main/java/me/mrCookieSlime/Slimefun/api/energy/ItemEnergy.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/api/energy/ItemEnergy.java rename to src/main/java/me/mrCookieSlime/Slimefun/api/energy/ItemEnergy.java diff --git a/src/me/mrCookieSlime/Slimefun/api/inventory/BackpackInventory.java b/src/main/java/me/mrCookieSlime/Slimefun/api/inventory/BackpackInventory.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/api/inventory/BackpackInventory.java rename to src/main/java/me/mrCookieSlime/Slimefun/api/inventory/BackpackInventory.java diff --git a/src/me/mrCookieSlime/Slimefun/api/inventory/BlockMenu.java b/src/main/java/me/mrCookieSlime/Slimefun/api/inventory/BlockMenu.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/api/inventory/BlockMenu.java rename to src/main/java/me/mrCookieSlime/Slimefun/api/inventory/BlockMenu.java diff --git a/src/me/mrCookieSlime/Slimefun/api/inventory/BlockMenuPreset.java b/src/main/java/me/mrCookieSlime/Slimefun/api/inventory/BlockMenuPreset.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/api/inventory/BlockMenuPreset.java rename to src/main/java/me/mrCookieSlime/Slimefun/api/inventory/BlockMenuPreset.java diff --git a/src/me/mrCookieSlime/Slimefun/api/inventory/DirtyChestMenu.java b/src/main/java/me/mrCookieSlime/Slimefun/api/inventory/DirtyChestMenu.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/api/inventory/DirtyChestMenu.java rename to src/main/java/me/mrCookieSlime/Slimefun/api/inventory/DirtyChestMenu.java diff --git a/src/me/mrCookieSlime/Slimefun/api/inventory/ItemManipulationEvent.java b/src/main/java/me/mrCookieSlime/Slimefun/api/inventory/ItemManipulationEvent.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/api/inventory/ItemManipulationEvent.java rename to src/main/java/me/mrCookieSlime/Slimefun/api/inventory/ItemManipulationEvent.java diff --git a/src/me/mrCookieSlime/Slimefun/api/inventory/UniversalBlockMenu.java b/src/main/java/me/mrCookieSlime/Slimefun/api/inventory/UniversalBlockMenu.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/api/inventory/UniversalBlockMenu.java rename to src/main/java/me/mrCookieSlime/Slimefun/api/inventory/UniversalBlockMenu.java diff --git a/src/me/mrCookieSlime/Slimefun/api/item_transport/CargoManager.java b/src/main/java/me/mrCookieSlime/Slimefun/api/item_transport/CargoManager.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/api/item_transport/CargoManager.java rename to src/main/java/me/mrCookieSlime/Slimefun/api/item_transport/CargoManager.java diff --git a/src/me/mrCookieSlime/Slimefun/api/item_transport/CargoNet.java b/src/main/java/me/mrCookieSlime/Slimefun/api/item_transport/CargoNet.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/api/item_transport/CargoNet.java rename to src/main/java/me/mrCookieSlime/Slimefun/api/item_transport/CargoNet.java diff --git a/src/me/mrCookieSlime/Slimefun/api/item_transport/CargoTransportEvent.java b/src/main/java/me/mrCookieSlime/Slimefun/api/item_transport/CargoTransportEvent.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/api/item_transport/CargoTransportEvent.java rename to src/main/java/me/mrCookieSlime/Slimefun/api/item_transport/CargoTransportEvent.java diff --git a/src/me/mrCookieSlime/Slimefun/api/item_transport/ChannelIndex.java b/src/main/java/me/mrCookieSlime/Slimefun/api/item_transport/ChannelIndex.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/api/item_transport/ChannelIndex.java rename to src/main/java/me/mrCookieSlime/Slimefun/api/item_transport/ChannelIndex.java diff --git a/src/me/mrCookieSlime/Slimefun/api/item_transport/ChestManipulator.java b/src/main/java/me/mrCookieSlime/Slimefun/api/item_transport/ChestManipulator.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/api/item_transport/ChestManipulator.java rename to src/main/java/me/mrCookieSlime/Slimefun/api/item_transport/ChestManipulator.java diff --git a/src/me/mrCookieSlime/Slimefun/api/item_transport/ChestTerminalSorter.java b/src/main/java/me/mrCookieSlime/Slimefun/api/item_transport/ChestTerminalSorter.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/api/item_transport/ChestTerminalSorter.java rename to src/main/java/me/mrCookieSlime/Slimefun/api/item_transport/ChestTerminalSorter.java diff --git a/src/me/mrCookieSlime/Slimefun/api/item_transport/ItemRequest.java b/src/main/java/me/mrCookieSlime/Slimefun/api/item_transport/ItemRequest.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/api/item_transport/ItemRequest.java rename to src/main/java/me/mrCookieSlime/Slimefun/api/item_transport/ItemRequest.java diff --git a/src/me/mrCookieSlime/Slimefun/api/item_transport/ItemSlot.java b/src/main/java/me/mrCookieSlime/Slimefun/api/item_transport/ItemSlot.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/api/item_transport/ItemSlot.java rename to src/main/java/me/mrCookieSlime/Slimefun/api/item_transport/ItemSlot.java diff --git a/src/me/mrCookieSlime/Slimefun/api/item_transport/ItemTransportFlow.java b/src/main/java/me/mrCookieSlime/Slimefun/api/item_transport/ItemTransportFlow.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/api/item_transport/ItemTransportFlow.java rename to src/main/java/me/mrCookieSlime/Slimefun/api/item_transport/ItemTransportFlow.java diff --git a/src/me/mrCookieSlime/Slimefun/api/item_transport/RecipeSorter.java b/src/main/java/me/mrCookieSlime/Slimefun/api/item_transport/RecipeSorter.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/api/item_transport/RecipeSorter.java rename to src/main/java/me/mrCookieSlime/Slimefun/api/item_transport/RecipeSorter.java diff --git a/src/me/mrCookieSlime/Slimefun/api/item_transport/StoredItem.java b/src/main/java/me/mrCookieSlime/Slimefun/api/item_transport/StoredItem.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/api/item_transport/StoredItem.java rename to src/main/java/me/mrCookieSlime/Slimefun/api/item_transport/StoredItem.java diff --git a/src/me/mrCookieSlime/Slimefun/api/network/Network.java b/src/main/java/me/mrCookieSlime/Slimefun/api/network/Network.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/api/network/Network.java rename to src/main/java/me/mrCookieSlime/Slimefun/api/network/Network.java diff --git a/src/me/mrCookieSlime/Slimefun/api/network/NetworkComponent.java b/src/main/java/me/mrCookieSlime/Slimefun/api/network/NetworkComponent.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/api/network/NetworkComponent.java rename to src/main/java/me/mrCookieSlime/Slimefun/api/network/NetworkComponent.java diff --git a/src/me/mrCookieSlime/Slimefun/autosave/BlockAutoSaver.java b/src/main/java/me/mrCookieSlime/Slimefun/autosave/BlockAutoSaver.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/autosave/BlockAutoSaver.java rename to src/main/java/me/mrCookieSlime/Slimefun/autosave/BlockAutoSaver.java diff --git a/src/me/mrCookieSlime/Slimefun/autosave/PlayerAutoSaver.java b/src/main/java/me/mrCookieSlime/Slimefun/autosave/PlayerAutoSaver.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/autosave/PlayerAutoSaver.java rename to src/main/java/me/mrCookieSlime/Slimefun/autosave/PlayerAutoSaver.java diff --git a/src/me/mrCookieSlime/Slimefun/commands/SlimefunCommand.java b/src/main/java/me/mrCookieSlime/Slimefun/commands/SlimefunCommand.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/commands/SlimefunCommand.java rename to src/main/java/me/mrCookieSlime/Slimefun/commands/SlimefunCommand.java diff --git a/src/me/mrCookieSlime/Slimefun/commands/SlimefunTabCompleter.java b/src/main/java/me/mrCookieSlime/Slimefun/commands/SlimefunTabCompleter.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/commands/SlimefunTabCompleter.java rename to src/main/java/me/mrCookieSlime/Slimefun/commands/SlimefunTabCompleter.java diff --git a/src/me/mrCookieSlime/Slimefun/commands/SubCommand.java b/src/main/java/me/mrCookieSlime/Slimefun/commands/SubCommand.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/commands/SubCommand.java rename to src/main/java/me/mrCookieSlime/Slimefun/commands/SubCommand.java diff --git a/src/me/mrCookieSlime/Slimefun/commands/subcommands/CheatCommand.java b/src/main/java/me/mrCookieSlime/Slimefun/commands/subcommands/CheatCommand.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/commands/subcommands/CheatCommand.java rename to src/main/java/me/mrCookieSlime/Slimefun/commands/subcommands/CheatCommand.java diff --git a/src/me/mrCookieSlime/Slimefun/commands/subcommands/GiveCommand.java b/src/main/java/me/mrCookieSlime/Slimefun/commands/subcommands/GiveCommand.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/commands/subcommands/GiveCommand.java rename to src/main/java/me/mrCookieSlime/Slimefun/commands/subcommands/GiveCommand.java diff --git a/src/me/mrCookieSlime/Slimefun/commands/subcommands/GuideCommand.java b/src/main/java/me/mrCookieSlime/Slimefun/commands/subcommands/GuideCommand.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/commands/subcommands/GuideCommand.java rename to src/main/java/me/mrCookieSlime/Slimefun/commands/subcommands/GuideCommand.java diff --git a/src/me/mrCookieSlime/Slimefun/commands/subcommands/HelpCommand.java b/src/main/java/me/mrCookieSlime/Slimefun/commands/subcommands/HelpCommand.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/commands/subcommands/HelpCommand.java rename to src/main/java/me/mrCookieSlime/Slimefun/commands/subcommands/HelpCommand.java diff --git a/src/me/mrCookieSlime/Slimefun/commands/subcommands/OpenGuideCommand.java b/src/main/java/me/mrCookieSlime/Slimefun/commands/subcommands/OpenGuideCommand.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/commands/subcommands/OpenGuideCommand.java rename to src/main/java/me/mrCookieSlime/Slimefun/commands/subcommands/OpenGuideCommand.java diff --git a/src/me/mrCookieSlime/Slimefun/commands/subcommands/ResearchCommand.java b/src/main/java/me/mrCookieSlime/Slimefun/commands/subcommands/ResearchCommand.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/commands/subcommands/ResearchCommand.java rename to src/main/java/me/mrCookieSlime/Slimefun/commands/subcommands/ResearchCommand.java diff --git a/src/me/mrCookieSlime/Slimefun/commands/subcommands/SearchCommand.java b/src/main/java/me/mrCookieSlime/Slimefun/commands/subcommands/SearchCommand.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/commands/subcommands/SearchCommand.java rename to src/main/java/me/mrCookieSlime/Slimefun/commands/subcommands/SearchCommand.java diff --git a/src/me/mrCookieSlime/Slimefun/commands/subcommands/StatsCommand.java b/src/main/java/me/mrCookieSlime/Slimefun/commands/subcommands/StatsCommand.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/commands/subcommands/StatsCommand.java rename to src/main/java/me/mrCookieSlime/Slimefun/commands/subcommands/StatsCommand.java diff --git a/src/me/mrCookieSlime/Slimefun/commands/subcommands/TeleporterCommand.java b/src/main/java/me/mrCookieSlime/Slimefun/commands/subcommands/TeleporterCommand.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/commands/subcommands/TeleporterCommand.java rename to src/main/java/me/mrCookieSlime/Slimefun/commands/subcommands/TeleporterCommand.java diff --git a/src/me/mrCookieSlime/Slimefun/commands/subcommands/TimingsCommand.java b/src/main/java/me/mrCookieSlime/Slimefun/commands/subcommands/TimingsCommand.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/commands/subcommands/TimingsCommand.java rename to src/main/java/me/mrCookieSlime/Slimefun/commands/subcommands/TimingsCommand.java diff --git a/src/me/mrCookieSlime/Slimefun/commands/subcommands/VersionsCommand.java b/src/main/java/me/mrCookieSlime/Slimefun/commands/subcommands/VersionsCommand.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/commands/subcommands/VersionsCommand.java rename to src/main/java/me/mrCookieSlime/Slimefun/commands/subcommands/VersionsCommand.java diff --git a/src/me/mrCookieSlime/Slimefun/holograms/EnergyHologram.java b/src/main/java/me/mrCookieSlime/Slimefun/holograms/EnergyHologram.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/holograms/EnergyHologram.java rename to src/main/java/me/mrCookieSlime/Slimefun/holograms/EnergyHologram.java diff --git a/src/me/mrCookieSlime/Slimefun/holograms/HologramProjectorHologram.java b/src/main/java/me/mrCookieSlime/Slimefun/holograms/HologramProjectorHologram.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/holograms/HologramProjectorHologram.java rename to src/main/java/me/mrCookieSlime/Slimefun/holograms/HologramProjectorHologram.java diff --git a/src/me/mrCookieSlime/Slimefun/holograms/ReactorHologram.java b/src/main/java/me/mrCookieSlime/Slimefun/holograms/ReactorHologram.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/holograms/ReactorHologram.java rename to src/main/java/me/mrCookieSlime/Slimefun/holograms/ReactorHologram.java diff --git a/src/me/mrCookieSlime/Slimefun/holograms/SimpleHologram.java b/src/main/java/me/mrCookieSlime/Slimefun/holograms/SimpleHologram.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/holograms/SimpleHologram.java rename to src/main/java/me/mrCookieSlime/Slimefun/holograms/SimpleHologram.java diff --git a/src/me/mrCookieSlime/Slimefun/hooks/ClearLagHook.java b/src/main/java/me/mrCookieSlime/Slimefun/hooks/ClearLagHook.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/hooks/ClearLagHook.java rename to src/main/java/me/mrCookieSlime/Slimefun/hooks/ClearLagHook.java diff --git a/src/me/mrCookieSlime/Slimefun/hooks/PlaceholderAPIHook.java b/src/main/java/me/mrCookieSlime/Slimefun/hooks/PlaceholderAPIHook.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/hooks/PlaceholderAPIHook.java rename to src/main/java/me/mrCookieSlime/Slimefun/hooks/PlaceholderAPIHook.java diff --git a/src/me/mrCookieSlime/Slimefun/hooks/SlimefunHooks.java b/src/main/java/me/mrCookieSlime/Slimefun/hooks/SlimefunHooks.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/hooks/SlimefunHooks.java rename to src/main/java/me/mrCookieSlime/Slimefun/hooks/SlimefunHooks.java diff --git a/src/me/mrCookieSlime/Slimefun/hooks/WorldEditHook.java b/src/main/java/me/mrCookieSlime/Slimefun/hooks/WorldEditHook.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/hooks/WorldEditHook.java rename to src/main/java/me/mrCookieSlime/Slimefun/hooks/WorldEditHook.java diff --git a/src/me/mrCookieSlime/Slimefun/hooks/github/Contributor.java b/src/main/java/me/mrCookieSlime/Slimefun/hooks/github/Contributor.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/hooks/github/Contributor.java rename to src/main/java/me/mrCookieSlime/Slimefun/hooks/github/Contributor.java diff --git a/src/me/mrCookieSlime/Slimefun/hooks/github/GitHubConnector.java b/src/main/java/me/mrCookieSlime/Slimefun/hooks/github/GitHubConnector.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/hooks/github/GitHubConnector.java rename to src/main/java/me/mrCookieSlime/Slimefun/hooks/github/GitHubConnector.java diff --git a/src/me/mrCookieSlime/Slimefun/hooks/github/GitHubSetup.java b/src/main/java/me/mrCookieSlime/Slimefun/hooks/github/GitHubSetup.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/hooks/github/GitHubSetup.java rename to src/main/java/me/mrCookieSlime/Slimefun/hooks/github/GitHubSetup.java diff --git a/src/me/mrCookieSlime/Slimefun/hooks/github/IntegerFormat.java b/src/main/java/me/mrCookieSlime/Slimefun/hooks/github/IntegerFormat.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/hooks/github/IntegerFormat.java rename to src/main/java/me/mrCookieSlime/Slimefun/hooks/github/IntegerFormat.java diff --git a/src/me/mrCookieSlime/Slimefun/listeners/AndroidKillingListener.java b/src/main/java/me/mrCookieSlime/Slimefun/listeners/AndroidKillingListener.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/listeners/AndroidKillingListener.java rename to src/main/java/me/mrCookieSlime/Slimefun/listeners/AndroidKillingListener.java diff --git a/src/me/mrCookieSlime/Slimefun/listeners/ArmorListener.java b/src/main/java/me/mrCookieSlime/Slimefun/listeners/ArmorListener.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/listeners/ArmorListener.java rename to src/main/java/me/mrCookieSlime/Slimefun/listeners/ArmorListener.java diff --git a/src/me/mrCookieSlime/Slimefun/listeners/AutonomousToolsListener.java b/src/main/java/me/mrCookieSlime/Slimefun/listeners/AutonomousToolsListener.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/listeners/AutonomousToolsListener.java rename to src/main/java/me/mrCookieSlime/Slimefun/listeners/AutonomousToolsListener.java diff --git a/src/me/mrCookieSlime/Slimefun/listeners/BackpackListener.java b/src/main/java/me/mrCookieSlime/Slimefun/listeners/BackpackListener.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/listeners/BackpackListener.java rename to src/main/java/me/mrCookieSlime/Slimefun/listeners/BackpackListener.java diff --git a/src/me/mrCookieSlime/Slimefun/listeners/BlockListener.java b/src/main/java/me/mrCookieSlime/Slimefun/listeners/BlockListener.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/listeners/BlockListener.java rename to src/main/java/me/mrCookieSlime/Slimefun/listeners/BlockListener.java diff --git a/src/me/mrCookieSlime/Slimefun/listeners/BowListener.java b/src/main/java/me/mrCookieSlime/Slimefun/listeners/BowListener.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/listeners/BowListener.java rename to src/main/java/me/mrCookieSlime/Slimefun/listeners/BowListener.java diff --git a/src/me/mrCookieSlime/Slimefun/listeners/CoolerListener.java b/src/main/java/me/mrCookieSlime/Slimefun/listeners/CoolerListener.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/listeners/CoolerListener.java rename to src/main/java/me/mrCookieSlime/Slimefun/listeners/CoolerListener.java diff --git a/src/me/mrCookieSlime/Slimefun/listeners/DamageListener.java b/src/main/java/me/mrCookieSlime/Slimefun/listeners/DamageListener.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/listeners/DamageListener.java rename to src/main/java/me/mrCookieSlime/Slimefun/listeners/DamageListener.java diff --git a/src/me/mrCookieSlime/Slimefun/listeners/FurnaceListener.java b/src/main/java/me/mrCookieSlime/Slimefun/listeners/FurnaceListener.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/listeners/FurnaceListener.java rename to src/main/java/me/mrCookieSlime/Slimefun/listeners/FurnaceListener.java diff --git a/src/me/mrCookieSlime/Slimefun/listeners/GearListener.java b/src/main/java/me/mrCookieSlime/Slimefun/listeners/GearListener.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/listeners/GearListener.java rename to src/main/java/me/mrCookieSlime/Slimefun/listeners/GearListener.java diff --git a/src/me/mrCookieSlime/Slimefun/listeners/GuideOnJoinListener.java b/src/main/java/me/mrCookieSlime/Slimefun/listeners/GuideOnJoinListener.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/listeners/GuideOnJoinListener.java rename to src/main/java/me/mrCookieSlime/Slimefun/listeners/GuideOnJoinListener.java diff --git a/src/me/mrCookieSlime/Slimefun/listeners/ItemListener.java b/src/main/java/me/mrCookieSlime/Slimefun/listeners/ItemListener.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/listeners/ItemListener.java rename to src/main/java/me/mrCookieSlime/Slimefun/listeners/ItemListener.java diff --git a/src/me/mrCookieSlime/Slimefun/listeners/ItemPickupListener.java b/src/main/java/me/mrCookieSlime/Slimefun/listeners/ItemPickupListener.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/listeners/ItemPickupListener.java rename to src/main/java/me/mrCookieSlime/Slimefun/listeners/ItemPickupListener.java diff --git a/src/me/mrCookieSlime/Slimefun/listeners/NetworkListener.java b/src/main/java/me/mrCookieSlime/Slimefun/listeners/NetworkListener.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/listeners/NetworkListener.java rename to src/main/java/me/mrCookieSlime/Slimefun/listeners/NetworkListener.java diff --git a/src/me/mrCookieSlime/Slimefun/listeners/PlayerQuitListener.java b/src/main/java/me/mrCookieSlime/Slimefun/listeners/PlayerQuitListener.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/listeners/PlayerQuitListener.java rename to src/main/java/me/mrCookieSlime/Slimefun/listeners/PlayerQuitListener.java diff --git a/src/me/mrCookieSlime/Slimefun/listeners/TalismanListener.java b/src/main/java/me/mrCookieSlime/Slimefun/listeners/TalismanListener.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/listeners/TalismanListener.java rename to src/main/java/me/mrCookieSlime/Slimefun/listeners/TalismanListener.java diff --git a/src/me/mrCookieSlime/Slimefun/listeners/TeleporterListener.java b/src/main/java/me/mrCookieSlime/Slimefun/listeners/TeleporterListener.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/listeners/TeleporterListener.java rename to src/main/java/me/mrCookieSlime/Slimefun/listeners/TeleporterListener.java diff --git a/src/me/mrCookieSlime/Slimefun/listeners/ToolListener.java b/src/main/java/me/mrCookieSlime/Slimefun/listeners/ToolListener.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/listeners/ToolListener.java rename to src/main/java/me/mrCookieSlime/Slimefun/listeners/ToolListener.java diff --git a/src/me/mrCookieSlime/Slimefun/listeners/WorldListener.java b/src/main/java/me/mrCookieSlime/Slimefun/listeners/WorldListener.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/listeners/WorldListener.java rename to src/main/java/me/mrCookieSlime/Slimefun/listeners/WorldListener.java diff --git a/src/me/mrCookieSlime/Slimefun/utils/CategorySorter.java b/src/main/java/me/mrCookieSlime/Slimefun/utils/CategorySorter.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/utils/CategorySorter.java rename to src/main/java/me/mrCookieSlime/Slimefun/utils/CategorySorter.java diff --git a/src/me/mrCookieSlime/Slimefun/utils/Christmas.java b/src/main/java/me/mrCookieSlime/Slimefun/utils/Christmas.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/utils/Christmas.java rename to src/main/java/me/mrCookieSlime/Slimefun/utils/Christmas.java diff --git a/src/me/mrCookieSlime/Slimefun/utils/MachineHelper.java b/src/main/java/me/mrCookieSlime/Slimefun/utils/MachineHelper.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/utils/MachineHelper.java rename to src/main/java/me/mrCookieSlime/Slimefun/utils/MachineHelper.java diff --git a/src/me/mrCookieSlime/Slimefun/utils/MachineTier.java b/src/main/java/me/mrCookieSlime/Slimefun/utils/MachineTier.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/utils/MachineTier.java rename to src/main/java/me/mrCookieSlime/Slimefun/utils/MachineTier.java diff --git a/src/me/mrCookieSlime/Slimefun/utils/MachineType.java b/src/main/java/me/mrCookieSlime/Slimefun/utils/MachineType.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/utils/MachineType.java rename to src/main/java/me/mrCookieSlime/Slimefun/utils/MachineType.java diff --git a/src/me/mrCookieSlime/Slimefun/utils/Settings.java b/src/main/java/me/mrCookieSlime/Slimefun/utils/Settings.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/utils/Settings.java rename to src/main/java/me/mrCookieSlime/Slimefun/utils/Settings.java diff --git a/src/me/mrCookieSlime/Slimefun/utils/Utilities.java b/src/main/java/me/mrCookieSlime/Slimefun/utils/Utilities.java similarity index 100% rename from src/me/mrCookieSlime/Slimefun/utils/Utilities.java rename to src/main/java/me/mrCookieSlime/Slimefun/utils/Utilities.java diff --git a/src/config.yml b/src/main/resources/config.yml similarity index 100% rename from src/config.yml rename to src/main/resources/config.yml diff --git a/src/plugin.yml b/src/main/resources/plugin.yml similarity index 100% rename from src/plugin.yml rename to src/main/resources/plugin.yml